Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

utopを使う

プログラミングの基礎 ((Computer Science Library)) というタイトルからは想像つかないことに、この本を読んでOCamlを勉強している。 本当に最初に関数型言語でプログラムを勉強した人は、どんなプログラマーに育つのだろうか。 OCamlはocamlコマンドでREPL…

OCamlのインストール

良い本とあちこちで紹介されている、プログラミングにまったく触れたことがない人向けの入門書を買って読んでみる。 これはお茶の水女子大の理学部情報学科の教科書として書かれた本で、初々しい女子大生たちがこの世界に初めて関わる時に 最初に読むという…

GoでJSONをパースする

Go

議事録のテンプレート的なことは、JSONで指定することにした。こんな感じ { "会議名": "セッション0312", "開催日時": "2019年3月12日(火)14:00 – 17:00", "場所": "本社10F会議室", "出席者": { "ABC": ["安倍", "麻生", "石田", "山下", "河野"], "XYZ":…

Goでコマンドライン引数を処理する

Go

おんなじファイルしか開けなかったり、常にラスト5行しか表示できないのは寂しいので、 コマンドライン引数を処理できるようにする。flagというパッケージを使えばよいらしい。 // コマンドライン処理 nFlag := flag.Int("n", 5, "Line numbers for display"…

Goでナイーブなtailを作る

Go

私が日頃作るツールの大抵はフィルタなので、まずはcatコマンドが実装出来ることが必要。 とりあえず、ファイルをいったん全部読み込んで、最後の5行だけ書き出す、ナイーブな実装のtailコマンドを作ってみる。 パッケージのリストを眺めるとio/ioutil.ReadF…

Goのチュートリアルをやる(4)

Go

Goroutine GoのGoたる所以だと、風の噂に聞いた。 関数をgo付けて呼ぶと、Goroutineで動く 通信するにはチャネル(型名はchan)を渡す チャネルはmake(chan int, 255)のようにしてバッファに出来る。 チャネルはclose(ch)でクローズ出来る。しまっていることは…

Goのチュートリアルをやる(3)

Go

メソッド メソッドはレシーバーの型を指定した関数。その型を定義したパッケージでしか定義できない。 オブジェクト指向言語だとthisを使うようなところで、レシーバーの仮引数があるのが変わってるかもしれない。 type MyFloat float64 func (f MyFloat) Ab…

Goのチュートリアルをやる(2)

Go

More types スライス スライスが出てきた。スライスの概念はRustで初めて知ったけど、Goも大体同じ 長さと容量を別に持ってる スライスリテラルは[]int{5, 4, 3, 2, 1}の様に作る。 スライスに要素を追加するには、append()を使う。容量を増やさないといけな…

Goのチュートリアルをやる(1)

Go

仕事でMarkdownっぽいフォーマットで議事録を書くと、ダサいフォーマットのHTMLに変換するスクリプトをRubyで書いたら、gem installがsudoでしか出来ないと言われ、悲しんだ。 実行ファイルを作って配るのがやはり楽かもしれない。Rustでやろうかとも思った…

Rails チュートリアルをやってみる(11) 5.1 テンプレートまわり

5章に入る。 5.1 5.1.1でまずはHTMLにdivタグとclass設定で構造を入れる。この時点ではCSSを当ててないので、しょっぱい。演習はcurlコマンドを使ってみろとかなので省略。 5.1.2でBootstrapを適用する。まずはgemをインストール > vi Gemfile > git diff Ge…

Rails チュートリアルをやってみる(10) 4章 Rubyについて

「Rails風味のRuby」とのこと。味わってみよう。 4.1 リスト4.1で例として、app/views/layouts/application.html.erbの以下のコードを取り上げている。 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> Rubyを…

Rails チュートリアルをやってみる(9) 3章完了 minitest reporterとGuard

3.6 3.6.1 minitest reporters 見やすくなるらしい REDになってないとありがたみがないなあ 3.6.2 Guard 初期化する > bundle exec guard init 00:16:27 - INFO - Writing new Guardfile to /Users/tambara/study/rails_study/sample_app/Guardfile 00:16:27…

Rails チュートリアルをやってみる(8) 3.4〜3.5 ちょっと動的っぽいページ

3.4 理由はわからないけど、レイアウトファイルをリネームしておけと言われるので、する > mv app/views/layouts/application.html.erb layout_file > ls Gemfile README.md app config db lib package.json test vendor Gemfile.lock Rakefile bin config.r…

Rails チュートリアルをやってみる(7) 3.1〜3.3 静的なページとコントローラーのテスト

3章を始める。これから作るサンプルは、長くいじることになるらしい。 3.1 > bundle exec rails _5.1.6_ new sample_app --skip-bundle create create README.md create Rakefile create config.ru create .gitignore create Gemfile run git init from "." …

Rails チュートリアルをやってみる(6) 2.3.4〜2.4 DBを使うアプリをHerokuにデプロイ

2.3.4 から読む。 ApplicationRecordとか、ApplicationControllerって昔からあったっけ? なんか昔はActiveRecord::Baseを直接継承していたような気もするけど、気のせいのような気もする。ここの演習は、特にどうということもないので、パス。 2.3.5 でデプ…

Rails チュートリアルをやってみる(5) 2.3.1〜2.3.3 validationとrelation

2.3.1からやってみよう。 投稿(Micropost)の方も同じようにgenerateする。 > bundle exec rails generate scaffold Micropost content:text user_id:integer invoke active_record create db/migrate/20181121142643_create_microposts.rb create app/models…

Rails チュートリアルをやってみる(4) 2章を開始〜2.2まで

2章はscaffoldを使ってみるらしい。 さて、前回Railsのバージョンでかなりヒドい目に遭って、訳がわからなくなった。 恐らくは、rails newしたタイミングではbundle installが走ってはいけないのだと思う。 こんな記事もある rails new でバージョン指定した…

Rails チュートリアルをやってみる(3) 1.4〜1.5 Git、そしてHerokuへのデプロイ

1.4はGitの話。しかし、rails newしたときにgit initもされているように見える。お節介だなあ。 git add -Aして全部をコミットする。ん?bundle installのパスは要らないかもしれない。ミスった。まあ、いいや。 Bitbucketにコードを上げる説明が書いてある…

Rails チュートリアルをやってみる(2) 1.3 最初のアプリケーション

1.3節から、チュートリアルに合流する > bundle exec rails _5.1.6_ new hello_app create create README.md create Rakefile create .ruby-version create config.ru create .gitignore create Gemfile run git init from "." Initialized empty Git reposi…

Rails チュートリアルをやってみる(1) 〜1.2 前置きと環境のセットアップ

いまや、新人プログラマの最初の難関として知られるようになったRailsチュートリアルをやってみることにする。 Railsが無かった頃からのRubyユーザーで、なんだかんだと日常の道具としてRubyを使って20年だが、 Railsは仕事が暇な時期にちょびっと本を読んで…

CSS GRIDを勉強してみる(12) - アスキーアートっぽい指定

CSS

ガイドは新しいページに入った。 developer.mozilla.org グリッド線に沿って配置するのが王道なんだけども、そうではないやり方もある。 アスキーアートっぽいやり方が。 いや、ガイドにそう書いてあんだもんよ("we sometimes call this the ascii-art metho…

CSS GRIDを勉強してみる(11) - さまざまなshorthand

CSS

ここからは developer.mozilla.org を読む。エゲレス語の文書を読んでいて、かつ、私の英語能力がプアなので、英語そのままの用語が出てきたり、 英文をそのまま引用したり、内容を勘違いしていたりするかもしれない。知ったこっちゃないけど。 あと、少しペ…

CSS GRIDを勉強してみる(10) - display: contentsとの関係

CSS

今度はdisplay: contentsとの関係の話。また知らない子の登場である。 ちょっと調べてみたところ、display: contentsを指定すると起きることは あたかもその内容がタグで囲われていないように扱われるということのようだ。ほっほーう。 DOMツリー上、レベル…

CSS GRIDを勉強してみる(9) - 絶対位置指定との関係

CSS

グリッドコンテナやアイテムが絶対位置指定のブロックとどういう関係になるか、見てみる。 出発点は、こんなHTMLとCSS。box3に長い文章が含まれている。 div class="wrapper"> <div class="box1">One</div> <div class="box2">Two</div> <div class="box3"> このブロックに絶対位置を指定する。 グリッドコンテナがブロックを含</div>…

CSS GRIDを勉強してみる(8) - グリッドをフレックスボックスに近づける

CSS

残念だが、ここから翻訳がなくなっているのでエゲレス語を読むしかない。とほほ。 さて、フレックスボックスとfrとminmax()を使ったグリッドは、一列の幅いっぱいにアイテムが 広がるという意味では似ている。しかし、全体の幅を広げたり狭めたりしたときに …

CSS GRIDを勉強してみる(7) - アイテムの配置

CSS

フレックスボックスでアイテムの配置を制御して、こんな風に並べてみる。 指定しているCSSはこんな感じだ。 wrapper { display: flex; align-items: flex-end; min-height: 200px; } .wrapper > div{ padding: 1em; } .box1 { align-self: stretch; } .box2 …

CSS GRIDを勉強してみる(6) - グリッドとフレックスボックス

CSS

ここからは、 developer.mozilla.org の内容に入る。 グリッドとフレックスボックスの違いについてが最初のテーマ。 しかし、音に聞くBootstrapとはなんぞと遅まきながら調べてみたら、 最近はCSSのグリッドもいいらしいぜという経緯で勉強をはじめているた…

CSS GRIDを勉強してみる(5) - コンテンツの重なり

CSS

スタートはこの状態から。 グリッドアイテムは同じセルを占有することができる。つまり、重なってもいい。重ねてみる。 今、わざと各コンテンツの背景色の透過度opacityを0.5にしてあるので、重なっているのがよくわかる。 しかし、これだとどちらが上にある…

CSS GRIDを勉強してみる(4) グリッド線

CSS

Firefoxの開発者ツールのGrid Inspectorのオプションには"Display line numbers"という項目があって、 これにチェックを入れるとグリッド線の番号がわかる。縦横それぞれに1から始まる番号がついている。 コンテンツの配置位置をこのグリッド線を使って指定…

CSS GRIDを勉強してみる(3) 暗黙的なグリッド

CSS

暗黙的なグリッドと明示的なグリッドについて説明されている。 例えば、この状況。 2行3列のグリッドが出来ているけど、CSSで指定しているのはgrid-template-columnsだけ。 だから、列は「明示的」だけど行は「暗黙的」ということになる。 暗黙的なグリッド…