ブックマーク / keens.github.io (6)

  • エンジニアの働き方とかについてのエモい記事 | κeenのHappy Hacκing Blog

    κeenです。 非エンジニアのマネージャがエンジニアチームと上手くやる方法の記事に影響を受けてエンジニアとしての意見を書いてみようかなと。 非エンジニア向けのつもりです。 ここでいうエンジニアはソフトウェアエンジニアのことです。 Disclaimer ある程度客観的になるように気をつけてますがあくまで私個人の意見です。エンジニアを代表するようなものではありません。 κeenはまだエンジニア3年目くらいの若造なのて「それは違うんじゃねーの」と思ったところがあったら多分あなたが正しいです。 仕事内容 エンジニア仕事は外から見たら何してるかよくわからないらしいですね。 ふつう仕事の成果物はエンジニアの間でしか共有してないのでまあ、そうなるでしょう。 なので「何をしているか」を説明するのはやめて「仕事しているときにどんな気持ちか」を話しましょう。 エンジニア仕事は頭脳労働です。 それも問題解決

    エンジニアの働き方とかについてのエモい記事 | κeenのHappy Hacκing Blog
  • 雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog

    κeenです。雰囲気でシェルを使ってる人が多いとのことだったので少しばかり込み入った知識を。 あと一応POSIX準拠かどうかも気にしながらやっていきます。 基礎知識編 シェルの種類 まず、POSIXにシェルが定義されています。 これに最低限の機能で準拠しているものをPOSIXシェルと呼ぶことにします。いわゆる/bin/shです。具体的な実装はbsh、ash、dashあたりでしょうか。 最低限の機能以上に色々拡張されているシェルを拡張POSIXシェルと呼ぶことにします。具体的な実装はbash、zsh、kshなどでしょうか。 ここでは触れませんがPOSIX準拠でないシェルも存在してcshやtcshなどのシェルがあります。あと確か最近話題のfishも違ったような。 さて、1つ問題になるのは普段使いのコマンドラインはおおむね拡張POSIXシェルでしょうが、サーバで使うシェルやデプロイスクリプトで呼

    雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog
  • Rustで高速な標準出力 | κeenのHappy Hacκing Blog

    κeenです。Rustで何も考えずに標準出力に吐いてると遅いよねーって話です。 今回、標準出力に「yes」と1000万回出力するアプリケーションを書いてみたいと思います。 println! まあ、最初に思いつくのはこれでしょうか。

    Rustで高速な標準出力 | κeenのHappy Hacκing Blog
  • 非同期とノンブロッキングとあと何か | κeenのHappy Hacκing Blog

    κeenです。最近同期/非同期、ブロッキング/ノンブロッキング、直接形式/継続渡し形式あたりが混乱してきたので個人的に整理します。 あくまで私個人の理解を纏めただけなので誤謬などに注意して下さい。 追記: @tanaka_akrさんから指摘されたのですが、用語の説明が間違っていそうだったので書き直しました。 diffはこちら 非同期とノンブロッキングはよく混同されます。また、非同期処理の記述形式として直接形式や継続渡し形式などがあります。 私自身違う言葉だなとは思いつつも混同したり違いを忘れたりしています。 非同期もノンブロッキングもナイーブなIOに比べると速い方式だな程度の理解でいてそんなに困らないと思ってますし混同や誤用に目くじらを立てるつもりもありません。 しかしながら3者を区別しないと意味を成さない文脈で3者を混同している技術を何度か見掛けたので(自分の中で)整理しようと思ったのが

    非同期とノンブロッキングとあと何か | κeenのHappy Hacκing Blog
  • Rust風にデザインパターン23種 | κeenのHappy Hacκing Blog

    κeenです。 GoFのデザインパターンは有名ですが、言語機能によっては単純化できたりあるいは不要だったりするのでRust風に書き換えたらどうなるか試してみます。 発端はこのツイート。 デザインパターン、古いJavaの機能の足りなさのワークアラウンド的なテクニックも含まれてるからあまり宜しくないんだよね。enumやクロージャで十分なのもいくつかある。 Rustで写経、デザインパターン23種 - Qiitahttps://t.co/MhpS3Z2OlF — κeen (@blackenedgold) 2017年5月5日 一応誤解のないように説明しておくと、該当のQiitaの記事に不満がある訳ではなくてGoFのデザインパターンついての言及です。 リンク先のコードで十分な時にはここでは流すのでリンク先も同時に参照下さい。 また、比較しやすいようにサンプルコードはリンク先のものに則って書きます。

    Rust風にデザインパターン23種 | κeenのHappy Hacκing Blog
  • メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog

    κeenです。 今回の話は別にRustに限ったものではないのですが、よくRustを始めたばかりの人がスタックとヒープが分からないと言っているのをみかけるので少しメモリの話をしますね。 厳密な話というよりは雰囲気を掴んで欲しいという感じです。 メモリは配列 プログラム(プロセス)のメモリには実行するプログラム(機械語)やグローバル変数/定数、関数の引数やローカル変数、その他プログラムで使うデータ領域などを置きます。 プロセスに割り当てられるメモリというのは、1つの巨大なのっぺらな配列みたいなものです。サイズも決まってます。64bit OSなら2^64 byteです。 0 2^64 +--------------- ----+ | | | | | ~~ | | +--------------- ----+ これは仮想的なメモリなので実際の物理メモリに2^64 byteの配列がドンと確保される訳

    メモリとスタックとヒープとプログラミング言語 | κeenのHappy Hacκing Blog
  • 1