プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

RWO 2nd editionの9章を雑に学習した

最近OCamlの学習も止まっていたので、ゴールデンウィーク最終日に少しでもいいから手をつけてみようと学習再開してみた。

Real World OCaml

9章はFunctorを学ぶ章。最後の項目の"Extending Modules"はまだ手をつけられていないが、それ以外はutopを使い実際のコードを打ち込んでみて手を動かしてみた。

何となくしか理解ができていないので自分で活用するところまではいかなそうだと思ったので、時間を空けて復習したい。

面白そうな本を見つけたので買って読み始めた

誰が音楽をタダにした? 巨大産業をぶっ潰した男たち (早川書房)

誰が音楽をタダにした? 巨大産業をぶっ潰した男たち (早川書房)

たまたま寄った本屋で見つけてパラパラと目次を立ち読みしたら面白そうだったので購入して今読んでいる。

漫画村の騒動やそれに付随したブロッキングの話題が最近あるので、マンガ、アニメの海賊版の先行事例とも言える音楽業界の事例はどうだったのだろうと思って読んでいる。

読み終わったら書評を書きたいところ。

部屋の片付けで疲れた

部屋の片付けのあとで疲れて雑文を書きたくなったので、今週のお題「ゴールデンウィーク2018」とやらを書いてみる。

ゴールデンウィークに突入してダラダラと遊んだり用事を済ませたりしていたが、諸事情により部屋の片付けを進めないといけなくなったので、今日から手をつけ始めた。

今回の片付けは単にモノの配置位置を整理するだけじゃなくて、モノを減らす作業を今まで以上にしないといけないのだが、減らす作業をここ一ヶ月以内にこなさないといけないという条件がついてしまっているのに対し、今まで手が付いていなかったモノはだいたい「捨てるか捨てていいか瞬時に判断が付かないモノ」というタイプのモノが多いので、どうしようかと思っていた。

そんな時、「クラウド収納」というタイプのサービスがあることを何となく思いだしたので、少し調べて、たまたま関連サービスのアプリを使っていたサマリーポケットというサービスを利用することにした。

pocket.sumally.com

2日前にボックスを頼み、今日届いたので早速モノを詰めこみ始めている。

サマリーポケットを利用し始めて使い終わったらブログ記事にして使用感をまとめようかとも思っている。

早いところ片付けを終わらせたい。

OCaml力無い人間なりにSATySFiをいじってみてどういう構造をしているか調べてみた (1)

ゴールデンウィークに突入したので、以前から興味のあったSATySFiの使い方を少し踏み込んで調べてみて、それの個人的備忘録としてまとめ。

個人的備忘録なので網羅性とか正確性を一切考慮しないつもり。SATySFiが何かも説明しない。

github.com

この記事を書いている時点のcommit(66fdd27)を基準にして記事を書いている。タイトルは (1) としているが (2) 以降を書くかどうかは不明。やる気と時間次第。(特にやる気)

筆者のOCaml力

今調べてる範囲だとOCaml力ほとんど要求されてないはずなんですが、表題にOCamlと入れてしまったので一応箇条書きにでも記載。

要するに非常に簡単なコードなら読めるし書けるけど、ちょっとでも複雑になると読めなくなる程度のレベルです。辛い。

予め見ておくといいドキュメント

  • 作者のgfngfn氏が発表した資料をまず最初にザッと読んでおけば、SATySFiの全体的なアーキテクチャや何を目的としているのかについては押さえられるので読んだ方がよい
    • ML Day #1で使用された発表資料を読むのがいいかと。
    • 未踏の成果発表の動画もニコ生であったんですが、今からだと見ることができなそう。

SATySFiを導入・使用する際に割と遭遇するつまづきポイント

主に「インストール時」と「使用時」でつまづくポイントが分かれると思っている。

インストール時

linuxやmacOSの場合ならSATySFi特有のつまづきは現時点だと特にないと思います。つまづくならOCaml自体の環境構築、特にopamの環境構築で詰まることがあるかもしれません。詰まった場合はググって色々自力で解決!*1

Windowsの場合は直でOCaml環境を構築するのは苦行らしいのでVMやWSLを使ってやるのが良いと聞いています。或いは有志が作ったSATySFi for Windowsを使うなどするとか。

使用時

SATySFi使用時で一番つまづくポイントは「フォント(設定)が足りなくてビルド出来なくなる」ということだと思っている。特に導入し始めの場合。

なんでフォント周りでつまづくかというと、用意されているドキュメントにそもそも様々なフォントを要求するようになっていることが多いため。或いは標準ライブラリ(というのだろうか?)内で使用されるフォントの種類が変わることがあるため。例えばこのcommit以降のバージョンを使う際は、stdjaをrequireしているドキュメントは Junicode.ttfJunicode-it.ttf~/.satysfi/dist/fonts 以下に置く必要が出てきて、一回ハマってしまった。

ライブラリルートに関する構造や使い方に関して日本語で書かれたメモが書かれたファイルがリポジトリ内にあるので、それを見るとよい。

あとよくあるつまづきとしては、必要な素材がなくてビルド出来ずにエラーになるもの。 satysfi-logo.jpg がなくてビルド出来ないとかある。

PRは面倒でしてなかったりする。

他、調べたこと

割と色々調べたけど、文章に上手くまとめられないので、やる気があったら(2)と称して続きを書く。内容として考えているのは以下の通り。

  • コマンドはどのようにして定義されているのか
  • コマンドを自作したくなったときにどのあたりに手をつければいいのか

というか、最初の方に紹介したスライドとSATySFiのソースコードをつきあわせればだいたい分かる話なので、書いてもなあという気もしている。

*1:こういう記事でそこまでサポートすると疲れるので。

生まれて初めてバーテンダーのいるバーに行きました

最近またブログ更新をしていないので適当なネタで更新をすることで更新再開をもくろむメソッド発動させました。

表題の通りですが、生まれて初めてバーテンダーのいるバーに行ってみました。

1週間ちょっと前、5年ぶりくらいに連絡のあった大学時代の友達に飲みに誘われたので、錦糸町に行って飲み会をしたのですが、その時「大人な雰囲気のバーとか行ってみたいよね」という話が出たので「じゃあ、今行けばいいじゃん」と提案し、いわゆるバーテンダーがいるようなバーらしいバーに行ってみたのです。

生まれて初めてバーテンダーがいるお店に行って、実際にカクテルをシェイクする姿を見ることができて面白かったですね。

友達は「なんかドラマの『相棒』の一場面みたいだよね」と言っていましたが、確かにそう感じられてフフっと心の中で笑ってしまいました。

上のツイートの写真でも少し分かりますが、カウンター奥に色々な種類のお酒やグラスが置いてあって雰囲気も感じました。

また機会があればこういったお店に行きたいですね。

靴とジーンズを買ってきたが、着るものの買い物が面倒くさすぎてどうにかしてほしい

技術文章でもアニメ系の話しでもイベントに参加した話でもない適当な与太話を書き殴る。

靴2足とジーンズ1着が立て続けにダメになってしまってから1ヶ月以上放置していたのだけれど、流石にそのまま過ごすには色々キツくなってきたので、この3連休という余裕のある内に済ませておこうと思って今日買い物をしてきた。

書籍や各種アイテムの購入は普段AmazonなどのECサイトを利用して通販で済ませているのだが、普段着だったり靴だったり眼鏡だったり、身につけるものは実際の店舗に足を運んで買っている。

多少手間をかければ、身につけるものの買い物でもECサイトで済ませられるようになるのかもしれない。

だが、トレンドとして太り気味になってきていて以前とサイズが違うことも多いので、実際に試着しないと着心地が分からないファッション系のアイテムをECサイトで買うのにかなりの心理的抵抗があるというのがこの手のアイテムを買うときにECサイトを使わない(使えない)大きな要因となっている。

で、身につけるものなので、時間が経てば経つほどダメになっていくし、いずれ買い直さないといけないのだけれど、買い直すその時になると再度サイズを確認して現在手持ちのアイテムとの相性を考えつつ予算内でどれくらい買えるのか考慮して買い物をしなくてはいけないのが非常に疲れてしまう。

加えて、そういう系統の買い物をすると一日の大半を使ってしまうので、その日は他の用事を済ませなかったり、遊ぶことができなくなるのだが、週末の土日といった普段の休みの時にそういう買い物をしてしまうと、「用事を片付ける休み」「遊ぶ休み」「休む休み」の内のどれかを犠牲にしてしまうのでやろうという気が起こらない。

だからこういう3連休などの時じゃないととてもこういった買い物をできないのだが、3連休になる日まで待つと今回のようにダメになった靴をずっと使ってしまったりする。

どうやったら普段の生活の中でこういった消化試合としての買い物を上手く回せるのか知りたい。そんな最近ですね。

Alibaba Cloud (aliyun) のObject Storage Service (OSS) にあるbucket内のオブジェクトをcliで確認する

Alibaba Cloud (以下aliyun) を使っている人なんてそうそういないでしょうが、私は仕事で使っていて、タイトルに書いたことが必要になるケースがこの前あったのでメモ代わりに記録。

aliyunにはObject Storage Service (以下OSS) というサービスがあります。AWSで言えばS3に相当するサービスです。

jp.alibabacloud.com

aliyunもAWSと同じようにコンソールだけでなくcliで各種サービスのステータスチェックなどができるようになっていて、大半のサービスはaliyuncliというものを使って調べることができます。

pypi.python.org

ただ、これを使ってOSS内にあるbucket内のオブジェクトを確認しようとしたら、以下の「ossutilというものを使え」というメッセージが出てきて、実際に使ったらオブジェクトを確認できたのでメモします。

github.com

ちなみにこの記事を書いていて調べたときに気づきましたが、githubにgolang勢のaliyun-cliがaliyunのgithubアカウントにあるのも気がつきました。もしかしたらこちらで他のサービスを含めて統一的に扱えるのかもしれません。

github.com

ossutilの使い方

リポジトリのREADMEを読めば分かることしか書けないですが、一応メモ。

  1. ossutil config を使って設定ファイルに設定を書く
  2. ossutil ls など定義されたサブコマンドを使用

1.はコマンド実行時に聞かれたことに答えれば、指定したパスに設定ファイルが書かれます。設定ファイルの内容は以下のような感じです。

language=EN
endpoint=oss-cn-hangzhou.aliyuncs.com
accessKeyID=<key id>
accessKeySecret=<secret id>

endpointの値に関してはこちらの公式ドキュメントを見て該当するものを書けば大丈夫なはずです。

後は以下のようにコマンドを実行すればオブジェクトを確認できました。

ossutil ls oss://<bucket name>/<path>