Don't Repeat Yourself

Don't Repeat Yourself (DRY) is a principle of software development aimed at reducing repetition of all kinds. -- wikipedia

2018-01-01から1年間の記事一覧

IO モナドを使った Web アプリケーションの構築

Scala の記事を書くのは地味に初めてかもしれません.今回は,Scala の cats-effect というライブラリの中にある IO モナドを使って Web アプリケーションを構築してみたいと思ってやってみたので,その話を簡単にメモしておきます. cats とは? Scala 界隈…

Procedural Macros に入門していたずらしてみた

この記事は Rust Advent Calendar 2018 25日目の記事です. Rust 2018 edition より,Procedural Macros (以下もずっと英語表記します) という機能が新たに追加されました. Procedural Macros においては, TokenStream というストリームが概念の中心にあり…

『A PHILOSOPHY OF SOFTWARE DESIGN』 の1章〜3章を読んだ

こういう本好きなのと,話題になっていたので買ってみて真面目に読んでみています. 話題になってて気になってポチった本が届いた。ソフトウェアデザインをしていてよく思う迷いどころに対する解決策が載ってそう pic.twitter.com/CCUdzvB6wh— yuki (@helloy…

AWS Lambda の新機能 Custom Runtime を Rust でトライ

この記事は CyberAgent Developers Advent Calendar 2018 3日目の記事です. アドテクスタジオ所属の yuki です.社内の方向けに軽く自己紹介をしておくと,2017/11 中途入社です.アドテクスタジオの某プロダクトでテックリードをしています. Rust が好き…

Shinjuku.rs で actix-web の話をしました (ちょっとした解説付き)

11/21 に Shinjuku.rs で登壇しました.今回は actix-web に関する話をしました.もちろん LT ではすべてを話しきることができませんでしたので,今回も裏話を記事にして書き留めておこうかと思います (自身の頭の整理にもなるためです). forcia.connpass.c…

ライプニッツのモナド (1)

関数型プログラミング言語を触っていると,「モナド」という言葉が登場します.関数型プログラミングの文脈でのモナドは,圏論という数学の一分野が元ネタです.しかし,モナドにはさらに元ネタがいます.高校の倫理をやった方は,聞き覚えがあるかもしれま…

Rust LT#2 で話をしました & その話の詳細な解説

Rust LT#2 で話をしました.「インタプリタを作ってまなぶ Rust らしい書き方」という話です.内容は実は,Ruby のコードを Rust のコードに置き換えてみようという内容でした.Ruby 製のインタプリタを Rust に置き換えるセッションです. speakerdeck.com …

関数を呼び出すまではアセンブリに直されない? (C++ と Rust を見比べた)

もしかすると一般的な話なのかもしれませんが,おもしろかったのでメモ書き程度に残しておきます *1.ソースコードはすべてアセンブリに直されているものだとばかり思っていましたが,そうではないんですね. 使ったツールは,Compiler Explorer というサイ…

Rust LT #1 で話をしました

先日開催された Rust LT #1 で話をしました.話は HTTP サーバーを自作してみるというものです.Rust に最近入門された方や,今回の LT ではじめて Rust に触れる方向けに,なにかお話できたらなと思い LT をしました. Rust で簡易 HTTP サーバーを作ってみ…

簡易シェル LSH を Rust で実装してみた

シェルをフルスクラッチしてみようと思い,まずは手始めに簡易的なシェルとして紹介されていた LSH を実装してみました. 実装したソースコードはこちらにあります. github.com LSH に実装されている機能 LSH には次のコマンドが実装されています. cd help…

Junction Tokyo 2018 で優勝しました――技術的な話

3/23-2/25 で,Junction Tokyo というハッカソンに参加してきました.そして,Logistics 部門において見事,優勝をすることができました.3日間本当にお疲れ様でした.スタッフの皆さんもどうもありがとうございました. Junction Tokyo は,毎年5月頃に開催…

clap, serde, rss を使って自分の好きなサイトのフィードを Rust で取得する

自分の好きなサイトのフィードを取得してリストアップしてくれるツールを簡単に作ってみました.ライブラリに関する知識を整理しておきたいので,記事として残しておきます. Rust で CLI ツール 先日,Rust が CLI ツールにも今後注力すると発表しました.…

java.nio を使って簡単な HTTP サーバーを作ってみる: ノンブロッキングなHTTP サーバー

先日,LINE の Meetup in Tokyo #28 に参加してきました.そのときに,Netty を作っている Apple の方が話をしていたのですが,彼の話す ByteBuffer や Channel ,Selector などの単語がよくわからず,帰ってから気になって調べてみました.そこで,java.nio…

Rust の lang_item について

lang_item とは具体的には rustc の下記の箇所で設定されている言語固有のアイテムのことを指しています。また、#[lang = "<lang_item_name>"] アトリビュートを使用することで、その lang_item の実装を書き換えてしまうことができます。 lang_item の一覧: rust/lang_items</lang_item_name>…

Rust の no_std について

詳しいところはドキュメントを読みましょう事案なのですが、今作っているプログラムで次のような文言がはじめて出てきて、どういうことか整理しておきたいのでメモ程度に残しておきます。 出てきたアトリビュートは下記です: #![no_std] 以下、あいまいな理…

『言語実装パターン』を読んだ

ANTLR 作者による本で、中身は後半から ANTLR を使った実装でした。ただ、ANTLR を使用する・しないに限らず、解説を読むだけでもインタプリタ制作に詳しくなることができる一冊かなと思います。要するに、何か特定のツールや言語に限らない広く使える知識を…

『Emacs実践入門』を読んだ

『Emacs実践入門』をひととおり読んでみました。仕事で Emacs を使うことがだんだん増えてきており、いつかちゃんと勉強したいなと思っていたので、年末年始でいろいろ設定してみました。 [改訂新版]Emacs実践入門―思考を直感的にコード化し、開発を加速する…