読者です 読者をやめる 読者になる 読者になる

kubo39's blog

ただの雑記です。

転職を検討しています

なんというかもろもろで転職したい気持ちが強くなってきました。 今の仕事がスキルアップにつながらないなあとうのはもともと思っていましたが、まあもろもろです。 それはそれとして今の自分のスキルではいろいろ厳しいかなあとも思います。 やりたいことも…

起伏のない日々

労 相変わらずjavascriptとPerlの日々だ。 PIEとD言語 (Cont.) 昨日の続き。 どうもdmdでうまくいかないのはlibphobos2.aが-fPICつきで生成されていないためのようだ。 https://issues.dlang.org/show_bug.cgi?id=5278 https://wiki.ubuntu.com/SteveBeattie…

月曜日のはわわっ・・!

Sierra 会社のMBPをSierraにあげた。MacOSXはOSのアップデートのような操作もApple IDを要求、すなはち住所などの入力を要求してくる邪悪なOSであり早急に滅ぶべきだ。 PIEとD言語 Ubuntu16.10にあげて以降dmd/ldcともにこのようなエラーが $ LANG=C dmd hel…

なんとはない日のこと

今日は日曜日にめずらしく午前中に起きれた。 だいたいテレビをみていた。 ダーウィンが来た!はなんかサバンナのでかい鳥の話だった。毎回おもしろい(小学生並の感想) NHKスペシャルのマネーワールドの第三回をみた。拡大する格差の話だった。 SB69をみた…

日記: 10/22の日のこと

サッカー観戦 川崎フロンターレ戦にいった。 川崎のビッグフラッグでかい pic.twitter.com/MK3P7hjcwl— 黄前久美子さんと高坂麗奈さんの距離感 (@shitsyndrome) 2016年10月22日 試合は0-2で敗れた。 アンデルソン・ロペスがいまいちフィットしていない。相手…

Ubuntu 16.10にアプデートした

( ՞ਊ ՞) :~ $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.10 DISTRIB_CODENAME=yakkety DISTRIB_DESCRIPTION="Ubuntu 16.10" ( ՞ਊ ՞) :~ $ cat /proc/version Linux version 4.8.0-26-generic (buildd@lgw01-58) (gcc version 6.2.0 201610…

日記: 10/11~12あたり

メモリ情報 D言語でプロセス・システムのメモリ使用量をとりたいときどうするんだ、みたいな話があって、自分だとmallinfo(3)とかで import std.stdio; extern(C) { struct mallinfo_ { int arena; /* Non-mmapped space allocated (bytes) */ int ordblks; …

日記: 10/3~10/7の週

牛かつ pic.twitter.com/V3G2P6KBFc— 黄前久美子さんと高坂麗奈さんの距離感 (@shitsyndrome) 2016年10月3日 パスタ pic.twitter.com/tPXRDedtyO— 黄前久美子さんと高坂麗奈さんの距離感 (@shitsyndrome) 2016年10月7日 パーコー坦々 pic.twitter.com/liWQgb…

日記: 9/30~10/2の出来事

仕事が終わった後、かつて会社の同期だった人と鮨明石に行った。ここはとても美味しい店なのだが、穴場になってるのかいつも空いているので予約なしでも行くことができる。大トロ一貫1000円とかなので、そこそこ値段はする。以下の写真は以前行った時のもの…

映画の評価(1994~2017)

随時更新します。 最高の映画・君の名は。を観てきたタイミングでこれまでみたきた映画を評価しなおす作業をはじめた。 点数とかつけてみたけどわりと雑なのであまり気にしないでください。 わりとばんばん100点をつけるタイプです。 1994 平成狸合戦ぽんぽ…

コミケ三日目(C90)

今回はちょい前に参加決めた。 8時すぎくらいについて、ブースで設営・売り子をしていた。 エッチな同人誌をいくつか手に入れた。 1600くらいに撤収してふつうに帰っていままで寝てた。 なんだこの文章は知性がない。

小ネタ: コンパイラの最適化を信じる

以下のコードは同じアセンブラを生成している。 bool mod(size_t i) { return i % 4 == 0; } bool bitOr(size_t i) { return (i & 3) == 0; } % dmd --version DMD64 D Compiler v2.071.0 Copyright (c) 1999-2015 by Digital Mars written by Walter Bright…

spawnProcessのめも

外部プロセス起動のうち、もっともgenericなspawnProcessを読んでメモ書き。読んだのはPosix側の処理だけです。 spawnProcess std.processのspawnProcess関数がそれ。実体はspawnProcessImpl関数。 fork(2)した後をみていく。まずは親側。 といっても大した…

Ubuntu14.04にARM(64bit)環境

arm

さきほどは32bit環境だったので、今度は64bit環境を入れます。ARM64bitはaarch64と呼ばれます。 $ sudo aptitude install gcc-aarch64-linux-gnu -y さっきの記事と同じですが $ aarch64-linux-gnu-gcc hello.c $ qemu-aarch64 -L /usr/aarch64-linux-gnu a.…

Ubuntu14.04にARM環境

arm

Ubuntu14.04とかもう化石という感じですが、いまさらARM環境を構築しました。 適当にqemuとか入れます。 $ arm-linux-gnueabihf-gcc-4.8 hello.c $ qemu-arm -L /usr/arm-linux-gnueabihf ./a.out GDBでデバッグするときは 一方のターミナルで $ qemu-arm -L…

dmdの-profileオプション

dmdにはWindowsもしくはx86系のアーキテクチャの場合は -profile オプションで実行したプログラムのプロファイルを取得することができます。 dmdのmanを見ると、 -profile Profile the runtime performance of the generated code こういう風に確認できます…

inotifywait(1) について

どうもinotifywaitが意図したとおりに ATTRIB イベントを検知してくれていない。 ( ՞ਊ ՞) :~/tmp $ touch foo ( ՞ਊ ՞) :~/tmp $ ln foo bar $ ls -li 合計 0 19793702 -rw-rw-r-- 2 kubo39 kubo39 0 4月 14 00:20 bar 19793702 -rw-rw-r-- 2 kubo39 kubo39 0…

Gotanda.pm #8

参加して発表もしてきました。(発表用のスライド、どこかにあげてもらったんだけどどこか忘れた。。資料はよしなに扱ってもらってよいです。 いろいろ発表聴いてたんですがずっとトイレ行きたすぎて全然集中できなかった。。あとLTってまじめな内容だと5分…

shibuya.d #1 を開催しました

shibuya.d の一回目を開催しました。 http://connpass.com/event/26486/ 発表内容 repeatedly さんによる std.experimental.ndslice の解説・デモ つい最近 Phobos に入った std.experimental.ndslice (n-dimentional slice) という行列演算を行うためのライ…

tinycr

これはCrystal Advent Calendar2015の17日目らしいです。ひ、日付? な、なんのことです…!? だいぶ昔に極小バイナリ作成をやっていたのですが、あれからいくばくか進捗がありまして現在146バイトとなっています。 https://github.com/kubo39/tinycr せっかく…

どっちやねん

kernelnewbies.org http://kernelnewbies.org/Linux_3.12#head-f0e125622a83f47d0b80e08e807e0252cefc9805 Summary of the changes and new features merged in the Linux kernel during the 3.12 development cycle his release has also added XFS support…

群馬旅行(草津温泉・富岡製糸場)

一泊二日で草津温泉・富岡製糸場に総勢12名で旅行に行った。 両日の移動手段はレンタカーであり、企画者が運転する車で移動した。 尚私は運転免許を保持していない。 草津温泉到着後、まず温泉饅頭を食べ歩きして露天風呂に向かった。 露天風呂はかるいかけ…

孫プロセスの終了通知を親が待つ

親プロセスが孫プロセスの終了を待ち受けたいときもあるわけです。 unshare(2)でCLONE_NEWUSER使いたいけど、マルチスレッドで動いてる場合とかにdouble-forkで制限突破するしかないのだけれど、孫の終了状態はチェックしたいとか。 prctl(2) の PR_SET_CHIL…

case文で範囲を指定する方法

いつも忘れてしまう。 string f(char c) { switch (c) { case 'a': .. case 'z': return "Lower letter!"; case 'A': .. case 'Z': return "Upper letter!"; default: return "Non-alphabetical character!"; } assert(false); } unittest { assert(f('f') =…

DMDでプログラムのカバレッジを測定する方法

-covオプションを使うとできる。 適当なプログラムを作る。 import std.stdio; enum Fruit { Apple, Orange, } int tested1(int val) { return (val % 2 == 1) ? val : (val == 0) ? 42 : -val; } void tested2(Fruit val) { final switch (val) { case Frui…

SECCON CTF 2015 write up

pingというチームで参戦しました。自分はbinaryの300しか解けず。。 Reverse-Engineering Android APK 1 apkの中身を見る必要がありそうな問題。 apktools入れたりしていじる。 http://ibotpeaches.github.io/Apktool/install/ ( ՞ਊ ՞) :~/dev/ctf/rps $ ./a…

緊縛とぼく

これは エロベントカレンダー の5日目の記事です。 さて、緊縛ネタということですが、私は緊縛が好きですが、とりたてて緊縛にかんして主張はないです。 手は縛っていてほしい派 縄の色にはこだわらない派 飲尿プレイ(飲ませる)が好き スカトロはダメ こんな…

Operator Overloadingによるインデックスアクセスの実現

D言語では任意のユーザ定義型に対して opIndex/opIndexAssign を定義することでインデックスアクセスを実現することができます。 特に注意すべき点などないのですが、インデックスアクセスにおいて $ は特殊な扱いになっているので opDollar のオーバーロー…

re-implement timeout(1), but written in D

timeout(1)便利だよ、という話をしたらどうやらOSXにはtimeoutがないっぽい?という話になったので(いやあるだろ、多分)勉強も兼ねて、Dでtimeoutを実装しなおすか、となった。 kubo39/expire · GitHub std.concurrencyでreceiveTimeout使おうと思ったけど…

k-NN in D, with parallelism

Comparing k-NN in Rust | Huon on the internet というblog postを見つけたので、Dに移植してみた。 std.parallelism ひさしぶりに使った気がする。 import std.algorithm; import std.array; import std.conv; import std.range; import std.stdio; import…

東京でみつけたうまかっためし処 第二弾

第一弾は これ SANKYU http://tabelog.com/tokyo/A1322/A132203/13090354/ 東武東上線大山駅より徒歩1分。焼き肉。 A5級のいい肉が比較的お手頃な値段で食べられる。日によって提供される部位が違ったりして、運がいいとシャトーブリアンとか食べれる。 どの…

ここ5年くらいでみた映画

ここにあるリストは覚えてるだけ書いてるけど、そんなに実数と差はないはず。 劇場でみてないのも入れてる。随時更新。 2011 塔の上のラプンツェル 星を追う子ども ハリー・ポッターと死の秘宝 PART2 コクリコ坂から ステキな金縛り けいおん! 2012 劇場版 …

Crystalでクロージャを呼ぶ

CrystalのProcは関数ポインタとクロージャに対する参照の組になっている。 クロージャへの参照はCallableなので、 def closure(x : ( -> Nil)) fp = pointerof(x) p "fp: #{fp}" # pointer to function clsr = fp + sizeof(Pointer(Int8)) # See Internal p …

laketowncr#1

当日12時半に起床。集合13時からなのでこの時点で遅刻確定。 さらにアクセスを下調べせずに雑に越谷駅に向かってしまったりして結局一時間半ほど遅れて参加。 当日はこんな感じのことをやって話しました。 speakerdeck.com Ary氏にも解説してもらったけど、…

例によってcrystalのソースコードからどのくらい小さいバイナリを作れるか試すということをやった. 暫定的にここまでやった試みとしては、以下のとおり. curl "http://crystal-lang.s3.amazonaws.com/pcl/libpcl-1.12-1-linux-x86_64.tar.gz" | tar xz -C /t…

コミケ3日目

当日寝坊して12時に起きた。 てきとーに電車の中でサークルチェックしてたら、欲しいものがあったので、現地にいる友人にお願いして買ってもらった。 着いた後はざっとみて、別の友人と合流して、てきとーにみて、14時すぎくらいに帰った。 新宿で昼飯食った…

CrystalとネットワークI/Oとウェブスタックのはなし

某所での議論を見て。 RubyだとUnicronだとかPumaだとかThinだとかウェブサーバ実装たくさんあるけど、Crystalでウェブサーバ実装が乱立するような可能性ってそんなにないんじゃないかなあ、というのが自分の意見です。 CrystalのI/Oの仕組みはネットワークI…

Crystalのスケジューラめも

Crystalは軽量スレッドを切り替えるためのランタイムスケジューラをもってる。少し調べてみた。 OSスレッドはカーネルのスケジューラによって切り替わるが、軽量スレッドはユーザが切り替えの責任をもつ。 spawn で生成した軽量スレッドは sleep を呼ぶこと…

nimのiterator実装

Nim

ちょっと気になって調べてみた。 結果としては、nimのiteratorはPythonのgeneratorのように状態を持ったVMのスタックフレームのコピー/リストアによって実現している。 Frameのpush/popのコードはこのあたり。 https://github.com/Araq/Nim/blob/ccb9ae2d52c…

emacsでnimを使う設定

めも。特別なことはしていない。 M-x package-install で nim-mode とac-nim を入れて、 inite.elに (eval-after-load 'nim-mode '(add-hook 'nim-mode-hook 'ac-nim-enable)) を追記しているだけです。

nimでsegv

Nim

2パターンで。 パターン1 コード1: import sequtils var x = cast[string](@[1, 2, 3, 4, 5]) 出力1: % $HOME/Nim/bin/nim -version Nim Compiler Version 0.11.2 (2015-05-20) [Linux: amd64] Copyright (c) 2006-2015 by Andreas Rumpf git hash: 45…

nimのcast[string]がバグってるぽい件

Nim

再現コード import unsigned, sequtils echo cast[string](newSeq[uint8](10).mapIt(string, $(it))) 出力結果がランダムに変わってるけど、この挙動はおかしいのではなかろうか。 ( ՞ਊ ՞) :~/dev/nim $ nim -version Nim Compiler Version 0.11.2 (2015-05-…

マルチスレッドなTCPサーバ

こんなのを作ってみました。 kubo39/threadedtcpservergithub.com D言語でマルチスレッドなサーバを作ろうと思うと、 cast() とか cast(shared) とか使わざるをえなかったりしてだいぶ辛いです。 workerスレッドの死活監視もなんとかしたいですね。。

コネクションプール

コネクションプールに関して。 コネクションプールを使うメリットは2つあると思っていて、 1) 接続コストの削減 例えばMySQLクライアントとMySQL鯖のばあいでいうと、接続を開始するたびにTCP 3-Way HandshakeやMySQLプロトコル自体のhandshake(認証とか)の…

Using DMD to make a 256 byte x86_64 Linux binary

こちらにまとめました. kubo39/tiny-d-demogithub.com これ解決したらgcc -static版も作りたいなあ. [Issue 12268] New: full static linking does not work, unresolved __tls_get_addr - D Programming Language Discussionforum.dlang.org 一応今のままで…

functionとdelegate

D言語にはfunctionとdelegateというよく似た使い方をするものがあります。 functionはただの関数ポインタ(Cとだいたい同じもの)ですが、delegateはclosureに対する参照も保持してるので必要となるメモリ量が2倍になります。 import std.stdio; void func_for…

Raw syscall for D.

DMD 2.067.0 で地味にインラインアセンブラで syscall 命令がサポートされたので、それを軽くラップするようなライブラリを書いてみました。 https://github.com/kubo39/syscall.d コード例: import syscall : syscall, WRITE; void main() { string buf = "…

フィボナッチ rust版

無意味にマクロで。 macro_rules! fib { ( $n:expr ) => {{ let (mut x, mut y) = (1, 0); for _ in 0..$n { let tmp = box x; x += y; y = *tmp; } y }}; } fn main() { println!("{}", fib!(10)); } ( ՞ਊ ՞) :~/dev $ rustc --version # ちと古い rustc 1.…

フィボナッチ

import std.stdio : writeln; import std.conv : to; class Fib(T) if (__traits(isIntegral, T)) { T opIndex(T n) const pure nothrow @trusted @nogc in { assert(n > 0); } body { T y; { T x = 1; foreach (_; 0..n) (((x = n = x) += y) ? y : y) = n;…

Dからxlibを触ってみる(ほんとにさわってみるだけ)

ちょっと興味がでたのでやってみる. 前準備. $ sudo apt-get apt-file $ apt-file update $ apt-file search XInput.h libxi-dev: /usr/include/X11/extensions/XInput.h $ apt-file search Xrandr.h ... libxrandr-dev: /usr/include/X11/extensions/Xrandr…