エンジニアですよ!

頑張れ俺くん、巨匠と呼ばれるその日まで

Rust でマルチスレッドプログラミングのメモ

Rust でのマルチスレッドの勉強のためにぷよぷよっぽいゲームを書いているので、学んだことを書いておく。 Rust ではデータ競合は起こせない Rust はデータ競合 ( data races ) がないことを保証している。( data races であって race conditions ではない…

Rustでぷよぷよ風ゲーム

最近遊んでいたおもちゃが形になってきた。 こんなん。ターミナルでプレイするぷよぷよ風ゲームのようなもの。(得点とかないし、まだゲームオーバーすらない) (だいぶカクカクしているのは agif の変換の仕方の問題が大きい) Rust でマルチスレッドでプ…

Rust メモ Windows向けにクロスコンパイル

Windowsでも使いたいコードがあり、Linux上でWindows向けにクロスコンパイルをしてみたメモ。 rustupを使うと簡単にクロスコンパイルができる。 windows向けのtargetを探す $ rustup target list | grep win i586-pc-windows-msvc i686-apple-darwin i686-pc…

Rust メモ String に対して match

Rust の match は非常に強力。 様々なパターンマッチや、 destructuring が使えて非常に便利 詳しくは https://doc.rust-lang.org/book/match.html Patterns たまに String な変数に対して match を使いたいことがある。 が、こんなふうにやろうとしてももち…

Rust メモ Option | 値を取得して None で置き換える

Option を持つ構造体を扱っているときなどに、Option の値を取得してその後 None で置き換えたいことがある。 そんなときは take メソッド が使える。 Rust Playground fn main() { let mut x = Some(10); // Some(v) に対して呼び出すと Some(v) が返ってく…

Rust メモ リテラル

Reference ここにまとまっている https://doc.rust-lang.org/reference.html#literals 文字列関連 文字列関連は6つ 文字リテラル 文字列リテラル Raw文字列リテラル ( rの後に0個以上の任意個の # と " で囲う ) バイトリテラル バイト文字列リテラル Rawバ…

Rust メモ 文字列

文字列 &str と String がある。 通常の文字列リテラルは String ではなく &str. ( staticな生存期間を持つので &'static str. ) Raw String Literal https://doc.rust-lang.org/reference.html#raw-string-literals いわゆるヒアドキュメント的なもの。 複…

TCPのTail Loss Probeと再送周りについて少し

仕様は RFC にはないっぽくて(?) 2013年にgoogleの方々が出してるinternet draft で定義されている模様。 Tail Loss Probe は、一連の送信パケットの最後のパケットがロスした場合に、送信側が再送タイムアウトを待たずにロスを検知して回復することを目的と…

アイドルとかにハマる人の気持ちが少しわかった気がする

わからないしわかった気がするというのもおこがましいが少しわかったような気がする。 去年もろくなブログ書いてないが、今年も書く気はなく、しかし今年は俺ももっとぴょんぴょんしていきたい(知らない

Laravel でログのフォーマット変えたり Monolog の Processor 追加したり

もう Laravel から Rails に移行する決意をしたもののめんどくさくて実際は放置、そうしてる間にもログをみることはあって不便だったりして仕方なくいじる。 やりたいのは ユーザがログインしてたらエラーログに user id を extra に追加する extra を表示す…

Vue.js の observe あたり雑に追う

(まとまりのなさがひどすぎてアレで放置してたらもう1.0.7になってますはい) もう 1.0.4 になっとるやないけ 1.0.4 見ますはい。 データバインディングをどう実現しているのかが気になるのでその辺。 データバインディングといえば Observer ということで…

わたしとVue 今すぐダウンロード

小粒なうぇっぶあぷりを作ってて、 Vue.js を使いたいなと思ってる(使ってる) 小さいしドキュメントも充実しているので、ちょっとガイド読めば使えるのであんまり把握せずに使ってるけど、それはよくないよねということでコード読むところから始めようと思…

macでターミナルの起動がめちゃくちゃ遅くなってた

mac

最近家のmacのターミナルの起動が超遅くてストレスを感じてた きっとzshrcにいろいろ書きまくっているからだろうとそろそろ治すか・・と思ってたら、どうもターミナルの起動時とかタブを新しく開いた時によく見てみると遅いのは login だった。 login が遅い…

ハロー "Hello, World" がおもしろい

まだ3章までしか読んでないけど、『ハロー "Hello, World"』がおもしろい 最近はLinux Kernelのコード読んだりしてみたいな〜と思って読んだりしてたんだけど、やっぱ膨大なのでとっつきにくい。 そこでこんな本を見かけたものだから、"OSと標準ライブラリの…

システムコールの定義

第3回 ソース内のシステム・コールを確認するitpro.nikkeibp.co.jp を読んでgrepしたり、http://lxr.free-electrons.com/ident?i= で検索してもなかなかシステムコールを定義してる箇所が見つからないなーと思ってたら、 SYSCALL_DEFINEx っていうマクロを使…

rust で数値からenumに変換する

rustのenumを定数を列挙するためだけに使いたいということもありますね?(ないですか?) そういう時、数値からenumに変換したいということがありますね?(ないですか?) rustのenumはこんなふうに定義します。 rustのenumはだいぶ高機能なのでいろんなこ…

mixlib-cliのオプションで複数の値を渡す

chef/mixlib-cligithub.com mixlib-cli、便利ですよね。 この option で同じオプションで複数の値を渡したい時はどうすればいいか 例えば --hosts で複数のホストの情報を渡したいとか。 ぱっと調べた感じ&動作を見た感じでは、 cmd --hosts host1 --hosts …

テーブルのカラムにないデータをEloquentのレスポンスに入れる

なんて言ったらいいかよくわからないけどタイトルみたいなことがしたいときどうするか テーブルのデータそのものじゃなくてテーブルのデータから計算できるデータがあったとして、それをクライアントに計算させるんじゃなくてレスポンスに入れて返したいとか…

Laravel4 で rename column しようとするとエラー

php artisan migrate PHP Fatal error: Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found in .../vendor/laravel/framework/src/Illuminate/Database/MySqlConnection.php on line 59 みたいなエラーが出てなんぞ、と思っていたところ Schema Builde…

tmux で Not privileged to set domain environment

いつからかtmuxを起動すると Not privileged to set domain environment. Not privileged to set domain environment. とエラーが出るようになった。 なんだこれは。 調べるとどうも .zshrc で launchctl setenv とかいじってるのが問題らしい。 何してたか…

rustのffiでkqueue呼び出してみた

前回うまくできなかったけどやってみたらうまくいったという、それだけ。 前回試した時はopenの戻り値の型が c_int だから kevent struct の ident の型も無理矢理 c_int にしてたから、 Invalid Argumentのエラーが出てたんだけど、last_os_error()とか見て…

rustでentrクローンしてみようとした

rustがそろそろ1.0出るってことでしばらく前からいじり始めた。 entrをgoでcloneしたgotrを見てちょっといいお題かも?とか思って書いてみようと思った。 totem3/rustr · GitHub 結果 今んとこできたこと イベント検知して渡されたコマンドを実行できるよう…

appcコンテナを作ってみる

前回 Docker のイメージから ACI を作り、 Rocket で動かすということをやってみた。 今回は仕様を見ながらイメージを作ってみる。 appc の仕様はここにまとまっている。(リンクはこれを書いてる時点で見てたバージョン。v0.4.1) https://github.com/appc/…

Rocket試してみる

CoreOSでRocketを動かしてみよう $ git clone https://github.com/coreos/coreos-vagrant/ [~/sandbox] Cloning into 'coreos-vagrant'... remote: Counting objects: 351, done. remote: Compressing objects: 100% (5/5), done. remote: Total 351 (delta …

Haskellのdataとnewtype

stackoverflowに回答があった。 types - Difference between `data` and `newtype` in Haskell - Stack Overflow 使いドコロがわからなくて使ってなかったしこれ読んでも使いどころは特にわかってはいないんだけど、とりあえず違いについてはわかった気がす…

herokuがgit push heroku masterしても一向に動いてくれなかった件

githubのフィードをtwitterに投げ続けるだけのbotをherokuで作った Procfileは↓というだけの簡単なもので、構成もGemfileとProcfileとbot.rbだけのシンプルなもの cat Procfile worker: bundle exec ruby bot.rb herokuにログイン https://dashboard.heroku.…

influxdbでテーブル(?)とかそのカラム(?)を調べる

メモ テーブルは list series カラムはぱっと見つかったのだとこれ influxdb does not list all column names · Issue #514 · influxdb/influxdb · GitHub select * from /.*/ limit 1 とか

vagrantで立ち上げたvmがどこにあったかわからなくなっちゃう

Macというのはダメな奴なので、ubuntuとかが欲しくなる。 というわけでとりあえず作業用にVMを立ち上げたりよくするんだけど、適当にVagrantfileを作って起動するものだから、しばらくするとどこで立ち上げたやつだかわからなくなる。 Vagrantfileどこだっけ…

cabal install conduitに失敗してた

環境とか色々忘れたけどmacでcabalでconduit入れようとしたら失敗した。 The Glasgow Haskell Compiler (GHC) on OS X 10.9... これ参考にやっていけた 以上 ついでにすごいHaskell学ぼう!

Coq入門 - 4.1

coq

https://coq.inria.fr/を見ていたら、Documentationのところにこんなものがあった。 https://cel.archives-ouvertes.fr/file/index/docid/459139/filename/coq-hurry.pdf ここにSearchのことが少し書いてあって、SearchRewriteで望むものが出てこない理由が…

Coq入門 - 4

coq

進捗あまりない。 update · 702639b · totem3/coq-prac · GitHub 全然わからんのでもうImportしたのを使って証明せずに進めているw できるところはそこまでにでてきた定理を使って証明して、まぁなんとなく感覚はわかってきたようなきていないような。 こう…

Coq入門 - 3

coq

Coq入門 - 2.1 - エンジニアですよ! に追記したが、Lemma le_n_0_eqが証明できた あと補完が効くようになったらなぜか.を押すだけでC-c C-n相当の部分まで進むようになった。 False_indやFalseの証明の仕方が少しわかった。 しかし、その後も証明ははかどら…

emacsのauto-completeでCoqの補完が効いてなかった

題名の通り。 効いてなかった。 よくわからんのでスルーしていたが、ストレスフルなので治すことにした。 Auto Complete Modeユーザーマニュアル auto-completeの情報は↑に素晴らしくまとまっていて、簡単に対応はわかった。 ダウンロードしたauto-complete…

Coq入門 - 2.1

coq

進捗ありません。 疑問メモ 矛盾を示すのが難しい forall n:nat, S n <= 0 と forall n:nat, S n > 0 があれば矛盾を示すのは簡単に見える けど、どうやるのかわからない forall n: nat, S n <= 0 はPropということでいいんだよな・・ CheckしてみるとPropと…

Coq入門 - 2

coq

totem3/coq-prac こういうのをやることにした。 ただCoqの標準ライブラリからLemmaとTheoremを取り出してきただけ。 こんな初歩的なものなら簡単に証明できるだろ\(^o^)/ と思っていたら、いきなりできない・・・w Lemma le_n_0_eq n : n <= 0 -> 0 = n. …

Coq入門 - 1

coq

Agda入門にまんまと失敗して、Coqを入門してみることにした。 プログラミング Coq このチュートリアルをやっている。 色々調べてみると結構他にも入門はあって、先に調べるべきだったと思ったりした。 で、このチュートリアルは、とりあえず手を動かしてみる…

『関数プログラミング 珠玉のアルゴリズムデザイン』買ってきた

Amazonが届けてくれないっていうから買ってきた 人気なのか、そもそもちょっとしか入荷してないのか・・・ でもこれおもしろい! アルゴリズムっていうと手続き型のものが多くて関数型のってそんなにない(気がするだけ)から、うれしい。 値段の割りに薄く…

coq環境作って使う emacs + ProofGeneral

そもそもはProofGeneralが使いたいがためにEmacsを使い始めたが、とりあえずAgdaをやめてCoqをいじるようになった今、vimscripts/coq_IDEというやつでもいいかもしれないと思い始めているが・・・ Macでの導入は簡単。 homebrewを使う.もう何でもこれに頼っ…

emacs不満集

ProofGeneralが使いたいがために使い始めたが、やはりvimに慣れているのでなかなかemacsの操作は難しいところがある。 うまくいかないところを書いて解消できたら更新していく。 text objectがないのは辛い → thingoptでそれっぽい操作を http://dev.ariel-n…

既に時代遅れだったemacsのパッケージ管理

Getting Started Emacs - エンジニアですよ! でpackage.elを使ってパッケージ管理を始めた。 しかし!! 時代は既に先に進んでいた。 Cask, Palletなるものが現れていた OMG https://github.com/cask/cask あのnaoya-itoも既に乗り換えているではないか htt…

Getting Started Emacs

agdaに挑戦して即死した話 - エンジニアですよ! で書いたように、emacsが必要になった そこで、emacsを入門することにした。 vimに慣れすぎて頭がvimベースになっているが、emacsはemacs. 別のエディタなので別の考え方をしないといけなそう。 やってみてと…

agdaに挑戦して即死した話

agdaに挑戦し、即死した話 agdaは公式のチュートリアル(http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.Othertutorials)に日本語の記事があったので、それをやることにした http://ocvs.cfv.jp/tr-data/PS2008-014.pdf こいつだ。 その前にまずagda…

HAX is not installed on this machine と言われてエミュレータが起動しないやつ

Android Studioでエミュレータを起動しようと思った時に、 emulator: ERROR: x86 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable. CPU acceleration status: HAX is not installed on thi…

laravelのmodelのhook

最近rubyを書くようになってrakeが便利すぎてPHPで書いてることを後悔している今日このごろだけど、相変わらずlaravel. laravelでArdentを使うと便利、が・・ - エンジニアですよ! で、Ardentのフックを使おうと思ったんだけどArdentがダメっぽいというのを…

Laravelで複数カラムのvalidation

LaravelのValidationは便利。 http://laravel.com/docs/4.2/validation#basic-usage にある例を引用すると $validator = Validator::make( array( 'name' => 'Dayle', 'password' => 'lamepassword', 'email' => 'email@example.com' ), array( 'name' => 'r…

laravelでArdentを使うと便利、が・・

laravel - Model で Validation したい? それならば Ardent だ! - Qiita こういう記事を読んだり、削除する前のvalidationをcontrollerに書きまくるのが嫌だったのでhookを削除前のvalidationもsaveの時と同じように簡単にやりたいなぁなどと思っていて、Ar…

コンパイラつくろー - 2

コンパイラつくろー - エンジニアですよ!で書いたように、コンパイラを作っている。 まぁまだ難しいのでコンパイラというか単に数式をパースして計算するというのを作っている。。 アセンブリコードを出力しようとして色々試していたら、パーサー部分がまだ…

ELFがどう実行されるか調べる - 2

難しいのでこれとかを読みまくる以上のことはできない(;´Д`) プログラムはどう動くのか? 〜 ELFの黒魔術をかいまみる kernelかー。触れたことがない領域。

ELFがどう実行されるか調べる

コンパイラつくろー - エンジニアですよ!で書いたようにコンパイラを作っている。 フロントエンドもさることながらバックエンドの難しさは自分の理解できる範囲を余裕で超えている。 気になることを調べながら地道に進めていく。 ELFヘッダーについて調べつ…

コンパイラつくろー

最近は前に比べてちょっとレイヤーが低めな仕事をするようになり、わからないことが増えた。 中でもc言語やメモリのこと、cpuのことなどなどは全くもってわからない。 ミドルウェアはcで書かれていることが多かったり、ハード的な制約に影響されることが出て…