netflix in train 3
1
最近見てるのはこれ
Hip-Hop Evolution | Netflix Official Site
HipHopの歴史が雑にわかって便利フィルム
間違ってシーズン2から見はじめてしまったので、今シーズン1を見ている。
2
よくあることだが「HipHopとは〜」みたいに語り出すオタクに人々はなってしまう。
まぁでもこのHipHopっていう部分にJazzとかReggaeとかPopの名がつく音楽ジャンル以外を入れても成り立ってしまうことから音楽とオタクの相性というのは切り離せないものではあるかもしれない。
そして、この作品は明らかにHipHopオタクの顔立ちをした職業ラッパーが「HipHopとは〜」をガッツリ歴史からやってくれる最高のアイテムである。
3
HipHopって難しい。中学生か高校生の頃に辞書、多分電子辞書でHipHopとは何かを調べたことがある。
当時の辞書はないからネットの辞書で調べるとこんな感じ
1970年代前半ごろから、ニューヨークの路上で始まった、音楽・ダンス・ファッションを中心とする黒人文化。建造物の壁や地下鉄の落書き(グラフィティアート)、アクロバットのようなブレークダンス、音楽面ではラップやスクラッチなど、貧しい若者たちがお金を使わずに楽しめる娯楽を生み出した。
確かにだいたいこんな感じだった。
当時「なんだよ、全然違う、よくわからん」確かにそんな気持ちになった。
だってネットの発達してない当時にHipHopと認知できる範囲って「Yo」「ターンテーブル」「DJ」「MC」「ラップ」「音楽は鳴り続ける....」
そら、HipHop自体の極々Surfaceしかふれることができないから変な認知になる。僕に限った話ではなく世間一般として。
オレンジレンジとか麻波25をHipHopとかいってしまうのもしょうがない(これは自分の話じゃないよ、一応)
遠いアメリカのカルチャーの話だからね、今でこそアメリカといっても東海岸と西海岸で違うけどさぁ、みたいなオタク発言できるけど。
これは中学時代の自分をウマヅラハギみたいな顔した音楽の先生の授業中から連れ出して一晩かけて見せて教育させる作品である。
4
「一般人がHipHopと認知しているメジャーなJ-POP」っていう単語、ちょっとdisが入っている言い方だけどまぁよくある「これはHipHopじゃない」騒動
すでにアメリカでも1970年代にやっていてちょっと面白いなって思った。
TypeScriptのunknown型
1
3.0から入ったunknown
型がある
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html
というかunknown
型が入ったこともあってmajor versionが上がったという認識をしている
2
コードベース中にJSON.parse
をanyで受けているところをunknownにしてみるか〜と思って試したがうまくいかなかった
function main(x: unknown): string { if (typeof x !== 'object') { throw new Error('x'); } if (x === null) { throw new Error('x'); } // この時点でxが{}まで絞れる // (1) typeof x.y typeof x["y"] // (2) // if ('y' in x) { // x.y // } }
結局 1, 2で詰んでしまう。
まだtypeのnarrowがうまく効かなくて、issueはある状態。
自分の期待しうるunknown
にはまだ遠くてJSON.parse
の返り値に使うのは、真面目に書こうとする限り厳しいなぁという気持ち。
puppeteer.connectを試す
1
puppeteerの
https://github.com/GoogleChrome/puppeteer/blob/master/lib/Launcher.js
をながめていたら案外雑にchromiumを立ち上げていたのでpuppeteerではなく自分でchromiumのprocessを立ち上げて動くか試してみる。
この場合launchではなくconnectを使う
2
chromiumのversionは
Chromium 70.0.3538.77
以下でchromiumを立ち上げてみる
chromium --headless --hide-scrollbars --mute-audio --no-sandbox --disable-setuid-sandbox --remote-debugging-port=0 --disable-gpu --user-data-dir=/workdir/tmp about:blank
--remote-debugging-port=0
をつけないと起動即終了してしまう。--no-sandbox
はdockerのalpine上で動かしているため必要。
起動すると以下が吐かれるので、
DevTools listening on ws://127.0.0.1:33993/devtools/browser/dcc10d58-4c80-4e6c-9ad6-235039b0807d
このwsエンドポイントにpuppeteerからアクセスする。
puppeteer.connect({ browserWSEndpoint: `ws://127.0.0.1:33993/devtools/browser/dcc10d58-4c80-4e6c-9ad6-235039b0807d`, }) .then(async browser => { const page = await browser.newPage(); await page.goto('https://www.google.com'); await page.screenshot({path: '/workdir/dist/screenshot.png'}); })
動いた
3
まだ試せてないけどdockerの外とかつなぐ際に、localhostからしかまだ繋げなさそうな気がするのでbindするipを指定するオプションを調べる必要がありそう。
netflixで見た奴話すシリーズ2
1
ミート・イーター料理の達人、を見ました。
これ表示の方法によってはシーズン1だったりシーズン7だったりして若干謎い。最初は古いシーズンを探してしまった。
もしかしたら、netflixにはないけどtvとかでやってたシーズンがあるのかしら
2
シンプルな感想ですけど、「肉を獲って食うって最高ですよね」
だいたいはスティーブンとその仲間が狩りに出かけて仕留めた獲物を食べるという構成。
ハンティングかと言われればそうなんだけど、やっぱ狩猟とスポーツハンティングは明確に違うと思わせてくる姿勢がスティーブンにある。
でもその違いってなんだっけ?
食べる食べないの違いがまず浮かぶけどそれだけではないと思う。
じゃあ生活の糧になっているかどうか?
そりゃ今の時代は狩猟をしなくても生活ができる、というより生活だけにこだわれば狩りという選択肢は現実的ではない。
そもそも生活の糧かどうかで決めること自体が愚かだ。サラリーマン生活が現実的と感じてしまうのは一種の病だろう。
とはいえ食わざるを得ないので、食うための行為として会社員をするのも一つだしこの人見たく映像を作るのも一つで生活としての労働はある。
じゃあ狩猟はレジャー?それも違う気がする。
一生のうちから義務を引き算した空間にレジャーとして突っ込まれたものではない。
一生自体に営みとして混ざって分離できない体験ができるのが狩猟なんじゃないだろうか
3
そう思わせてくれる作品でした。
僕ぐらいの世代は小学生の時Lv100のカモネギを持っていた
1
タイトルあんま関係ないですが、鴨の皮がスープ用に売ってましたので出汁を取りたくなって買いました。
ちょっと前に昆布締めに買った昆布が余っていたのでまず昆布を
30分ほっておいて加熱
ぽい感じです。誤算があるとすれば昆布が案外デカかったことです。
2
加熱します。めちゃくちゃ脂が出ます。
ネギを(写り込んだニンニクはゲストです。今回は使われませんでした)
デカすぎて火が通らねぇ
電チンしました。(先にすればよかった)
3
出汁に
- たまり
- 日本酒(が少ししかなかったので紹興酒が8割)
- 砂糖
入れて煮込んだ図、菜箸についた脂のせいで見た目が脂汗をかいたオタク
それっぽいですね。
4
サトウキビから作られた砂糖だったので甘みが薄かったので調整
ネギを溶けたアイスぐらデロデロにしたので加熱中にこれを書いています。
この後、うどんにぶっかける可能性が高いです。
bucklescript自体をnixでbuild
1
ここ最近の自由研究としてbucklescript
、厳密にはbs-platform
自体をnixでbuildしようとてしました。
大変な部分もあって難航したが、一旦なんとかなったっぽいので公開します。
2
bs-platform
は結構たくさんのツールチェーンの集合体なので、まず付属のOCamlをビルドしていきます。
ちょっとバージョンが古いのですがそこはまぁ取り組んでいた期間を想像してください。
あと、ビルド方法はいろんなところにいろんな手法が記述されていますが、CONTRIBUTING.mdを見るのが現状正しいです。
nixなのでopamは使いません。
{ stdenv, fetchFromGitHub, }: let src = fetchFromGitHub { owner = "BuckleScript"; repo = "bucklescript"; rev = "484740cd56981130573efc81757c41f5662f4f0e"; sha256 = "1mcz283jjwbwq52r51nzz5wjwc7y6g4fhgv0zbgs1wwp496mpjpy"; }; in stdenv.mkDerivation { version = "4.02.3"; name = "ocaml-4.02.3+buckle-master"; inherit src; configurePhase = '' cd vendor/ocaml ./configure -prefix $out ''; buildPhase = '' make world.opt ''; installPhase = '' make install ''; meta = with stdenv.lib; { homepage = http://caml.inria.fr/ocaml; branch = "4.02"; description = "Most popular variant of the Caml language"; platforms = with platforms; linux ++ darwin; }; }
結構昔はgit submoduleになっていたのですが、現在はvendor/ocaml
にcommitされています。
nixなので./configure -prefix $out
をするのを忘れなければそんなに問題ないです
3
ここからが面倒でbsc.exe
などをビルドしていく上でopam install camlp4 cppo
する必要がありますがopam抜きで済まします。
(ここに)https://github.com/NixOS/nixpkgs/blob/13882234569e75df7ecc39e97bdac98709b57530/pkgs/top-level/ocaml-packages.nix便利なツールがあるのでこれを使うといい感じになります。
しかしcamlp4
がOCamlのversionを見てDLしてくるようなnixが書かれているのが若干不安ですが一旦なんとかなりました。(要検証)
最終的に以下のようになります。
{ stdenv, fetchFromGitHub, callPackage, ninja, nodejs }: let src = fetchFromGitHub { owner = "BuckleScript"; repo = "bucklescript"; rev = "484740cd56981130573efc81757c41f5662f4f0e"; sha256 = "1mcz283jjwbwq52r51nzz5wjwc7y6g4fhgv0zbgs1wwp496mpjpy"; }; ocaml = callPackage ./ocaml.nix {}; mkOcamlPackages = (callPackage <nixpkgs/pkgs/top-level/ocaml-packages.nix> {}).mkOcamlPackages; ocamlPackages = mkOcamlPackages ocaml (self: super: { }); in stdenv.mkDerivation rec { name = "bucklescript-${version}"; version = "4.0.6"; inherit src; buildInputs = [ ocaml ocamlPackages.cppo ocamlPackages.camlp4 ]; phase = [ "buildPhase" "installPhase" ]; buildPhase = '' mkdir -p $out cp -R lib jscomp Makefile bsconfig.json package.json $out cd $out make make install ln -s ${ninja}/bin/ninja $out/lib/ninja.exe ''; installPhase = '' mkdir -p $out/bin ln -s $out/lib/bsb $out/bin/bsb ln -s $out/lib/bsc $out/bin/bsc ln -s $out/lib/bsrefmt $out/bin/bsrefmt ''; }
Makefile中に中間ファイルを容赦無くsrc中にぶっこんでくるので、一旦全て$outにcpするなど辛い構成になっています。
document中ではnpm -g install .
するように書いてありますが、npmのinstall hookなどでアクロバットにninjaなどがdlしたりビルドしたりするためのものなので不要です。
突然pythonが要求されて何故?ってなります。
今回はnixpkgsからninjaを持ってきてlinkしていますが、若干versionがずれてしまうのできにする場合がninjaのversionを固定するようなnixが必要になります。
4
最終的なnixファイルを見るとそんなに辛そうに見えませんがビルド周りがイケてない場合、このファイルを各仮定でかなりのソースを読むことになります。 終わり。