RubyでつくるRuby を読んだ

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門作者:遠藤 侑介発売日: 2017/03/31メディア: 単行本(ソフトカバー) nand2tetris が終わってヘビーな本を読むのはちょっと時間をおきたかったので、電子積ん読していた「RubyでつくるRuby」を読…

The Elements of Computing Systems を読んだ

約1ヶ月かけて The Elements of Computing Systems (通称 nand2teris) を読む & 演習のすべてを完遂しました。 約130時間費やしましたが、実に有意義な時間を過ごすことができました。今まで読んだ本の中でトップ10には入る良書と断言できます。 The Element…

X Protocol 準拠の MySQL Client を自作してみる

最近自作 MySQL Client にハマっています。どういう原理で MySQL につながっているのか知りたいなと思って始めましたが、MySQL Client についてはもちろんのこと、ネットワークの勉強にもなって結構楽しいです。 現在の MySQL では MySQL Client/Server Prot…

ThinkCentre M75q-1 Tiny で Arch Linux と Windows 10 をデュアルブート

goropikari.hatenablog.com 作業する前に Windows のリカバリーUSBを作っておく USB リカバリードライブを作成して、Windows 10のリカバリーに利用する - NZ Arch Linux の Live USB がブートでできるように secure boot を disable にする。 推奨するBIOSの…

ThinkCentre M75q-1 Tiny を購入: SSD・メモリを増設

コスパが良いと評判の ThinkCentre M75q-1 Tiny を買ってみた。 価格コム限定モデルで HDD 1TB、メモリ8GB、WiFi・Bluetooth なし、キーボード・マウスなし、縦置きスタンド、Display Port 追加で税込み34320円(送料無料)。 4コア8スレッドの CPU (AMD Ryzen…

Arch Linux の Docker Image を作る

Dockerhub に ArchLinux のイメージがあるので自分で作る必要はないものの base image を作ったことがなかったので勉強がてら作ってみた。 hub.docker.com 環境 OS: Arch Linux $ mkdir archlinux-docker $ cd archlinux-docker $ wget http://ftp.jaist.ac.…

Julia - Terminal で 1文字ずつ入力を受ける (raw mode)

環境 Julia v1.4.2 OS: ArchLinux read や readline を使うと EOF を入力 (Ctrl-D) したときや Enter を押したときにキーボードから入力したものを取得することができるが、何かしらのキーをタイプする度に入力を取得する方法を紹介する。 # ex.jl using REP…

AmazonLinux 2 で parquet-tools をビルド

ビルドに必要なものを用意する yum install -y wget git tar gcc gcc-c++ boost-devel make maven wget -nv http://archive.apache.org/dist/thrift/0.12.0/thrift-0.12.0.tar.gz && \ tar xzf thrift-0.12.0.tar.gz && \ cd thrift-0.12.0 && \ chmod +x ./…

4bit CPU TD4 を作った

GW をフルに使って自作界隈では有名な「CPUの創りかた」の TD4 を作ってみました。 CPUの創りかた作者:渡波 郁発売日: 2003/10/01メディア: 単行本(ソフトカバー) 実は2年前にすでにパーツ類は購入済みだったのですが、当時はアセンブリや機械語の経験がな…

自宅ではじめるDocker入門 を読んだ

自宅ではじめるDocker入門―人気のコンテナ型「仮想化ソフト」を使ってみる! (I・O BOOKS)作者:尚, 浅居発売日: 2019/02/01メディア: 単行本 日々、Docker を使っているものの今まで体系的に学んだことがないと気付いたので1冊買って勉強してみた。 約5時間で…

Compiler | Stanford Online を受講した

11月の頭から受講を始めて、5ヶ月弱かけてようやく受講しきりました。 何度か心が折れかけましたがどうにか完遂できました! lagunita.stanford.edu この講義は COOL (classroom object oriented language)という、講義のために作られた言語のコンパイラを理…

「なぜプログラムは動くのか」を読んだ

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識作者:矢沢久雄出版社/メーカー: 日経ソフトウエア発売日: 2007/04メディア: 単行本(ソフトカバー) ふと立ち寄ったブックオフで安く売っていたので買ってみました。200円とやけに安いと…

Hands-On Serverless Applications with Go を読んだ

AWS Lambda を Go で使う方法を学びたくなり、Hands-On Serverless Applications with Go を読んでみました。 Hands-On Serverless Applications with Go: Build real-world, production-ready applications with AWS Lambda (English Edition)作者:Mohamed …

Julia - キーボードからパスワードを入力する

環境 ArchLinux Julia 1.3.0 CLI でのパスワード入力 readline() や Base.prompt で入力を受ける場合、入力した内容が丸見えでセキュリティもへったくれもない状態なため、パスワードを入力したい場合などには適しません。 goropikari.hatenablog.com 入力し…

Julia - permutedims は何をやっているのか

環境 Julia 1.3.0 がベクトル(1次元配列) or 行列のとき $$ \mathrm{permutedims}(A)[i,j] = A[j,i] $$ ようするに転置を取るのに等しい。 ベクトルの場合は要素へのアクセスの仕方は変わらないが、 ベクトルは になり、その逆も然り。 $$ \mathrm{permutedi…

Julia - #undef か否かを調べる

環境 Julia 1.3.0 配列の要素が undef か否かを調べる時は isassigned を使う Arrays · The Julia Language julia> v = Vector{Any}(undef, 5) 5-element Array{Any,1}: #undef #undef #undef #undef #undef julia> v[1:3] .= 'a':'c' 3-element view(::Arra…

Julia - ドット . を使って method を呼ぶ

約1年前に全く Julia っぽくない邪道な遊びをしていたなということをふと思い出した。 微妙なメモだけは残っていたので供養しておく。 好奇心に負けて倫理的に許されないことをしてしまった気分になった。#julialang pic.twitter.com/ahmRgVFz7t— goropikari…

Julia - retry 機構

環境 Julia 1.3.0 retry ある処理がエラーになってしまったとき、時間を置いて再度実行したらエラーが出ないことはよく有ることです。例えばサーバーにうまく接続できないとか。 そんなときに使うのが retry 機構です。retry 機構を使うことでエラー時の再実…

Julia - ソースコードを読んでみる

gdb を使って Julia のソースコードを追ってみる 環境 ArchLinux Julia 1.3.0 GNU gdb (GDB) 8.3.1 gcc version 9.2.0 (GCC) gdb でソースコードリーディング gdb で追う場合ソースコードからビルドする必要がある。 $ wget https://github.com/JuliaLang/ju…

Julia - Channel コードサンプル

環境 Julia 1.2.0 Golang で Channel を使ってようやく Julia の Channel の動きを理解できた気がする。 capa = 10 c = Channel(capa) function f(c) for i in 1:10 put!(c, i) end end function g(c) for i in c sleep(0.5) println("From g: ", i) end pri…

Intro to Relational Databases | Udacity を受講した

Udacity で開講されている Intro to Relational Databases を受講してみた。 www.udacity.com 日々、雰囲気で SQL を書いていて基礎知識がないなぁと感じていたので受講してみた。終了するまでに4時間21分費やした。 講義内容としては SQL の基本的な構文(se…

Configuring Linux Web Servers | Udacity を受講した

Udacity で開講されている Configuring Linux Web Servers を受講してみた。 www.udacity.com TIMELINE: Approx. 1 Weeks という講義だけあって重い講義ではないので1日でサクッと終わらせた。 講義では Vagrant を使ってそこに Ubuntu Server を建てるとい…

Introduction to Cybersecurity with Chronicle | Udacity を受講した

ネットワークの勉強の一環で Udacity の Introduction to Cybersecurity を取ってみた。 www.udacity.com 講義動画自体は長くても1分程度で動画を見ると言うよりも各ページに書かれた説明を読んでいくという形だった。 Introduction ということもありセキュ…

AWS Developer: Building on AWS | edX を Terraform を使ってやり直してみた

AWS が edX で開講している AWS Developer: Building on AWS を Terraform でやり直してみた。 www.edx.org この講義では最終的に下図のようなシステムを構築する。 以前にもこの講義を受講したことがあり、その時は講義どおりマネジメントコンソールからポ…

「ふつうのLinuxプログラミング」を読んだ

日頃 Linux を使っているものの、Linux について全然理解していないなぁと思っていたので「ふつうの Liunx プログラミング」を読んでみた。 読み終わるまでに22時間12分かかった。 ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミ…

Terraform で 「Amazon Web Services 基礎からのネットワーク&サーバー構築」をやり直す

Terraform の練習がてら「Amazon Web Services 基礎からのネットワーク&サーバー構築」の内容を全て Terraform でやり直してみました。 Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版作者:玉川憲,片山暁雄,今井雄太,大澤文孝出版社/メー…

自作キーボード - Manta40 を作った

少しずつ作っていた自作キーボード "Manta40" がようやく完成しました。 私は軽いキータッチが好きなのでスイッチは Gateron Clear (35 g)。 はんだごてを使うのは久リぶりだったので手こずりましたがなんとか動くものが作れました。 私は Dvorak user なの…

Julia - プロンプトを変える

この記事は Qiita に 2018/08/15 に投稿したものです。2020/3/26 移行しました。 Julia v1.0 への移行作業のために v0.7 と v1.0 を行ったり来たりしているのですが、色々と動作確認しているうちにどっちのバージョンを使っているのか失念することが度々あっ…

Julia - Lisp を作る

環境 Julia 1.1.1 初めての Lisp 作り 最近、Software Design (2017/05, 08, 09)で連載されていた五味さんの「人工知能時代の Lisp のススメ」を読んだので、Julia で Lisp を作ってみました。 とりあえず、五味さんの SDLisp を機械的に Julia に翻訳しただ…

Julia - PostgreSQL に接続する

環境 ArchLinux PostgreSQL 11.5 Julia 1.1.1 LibPQ.jl 0.11.0 Tables.jl 0.2.10 Docker で PostgreSQL を立ち上げる $ docker run -d --name postgres -e POSTGRES_PASSWORD=test -p 5432:5432 postgres:11.5 Julia から PostgreSQL に接続する julia> usin…