タグ

ブックマーク / itchyny.hatenablog.com (8)

  • 30のプログラミング言語でFast inverse square rootを実装してみました! - プログラムモグモグ

    あなたの好きな言語は何ですか。そして、あなたの好きなアルゴリズムは何ですか。 好きな言語があると、その言語でどんな問題でも解決しようとなりがちになります。その言語を極めるのは素晴らしいことですが、その言語や似たような言語でしかコードが書けなくなったり、他の言語に対して見向きもしなくなってしまう可能性があります。 勇気を出して新しい言語にチャレンジしてみませんか?色々な言語に挑戦してみませんか? 何から始めればいいか分からない。次にどの言語を学べばいいか分からない。いま特に何も困っていない。何でも得意な言語で書けてしまう。そういう人が多いのではないでしょうか。 新しい言語にチャレンジするきっかけを作る一つの方法は、ある特定のアルゴリズムを一つ決めて、あらゆる言語で実装してみることです。解く問題が大きすぎると力尽きてしまうので、せいぜい20〜30行程度で書ける簡単なものが良いでしょう。大事なこ

    30のプログラミング言語でFast inverse square rootを実装してみました! - プログラムモグモグ
    kamipo
    kamipo 2016/07/26
  • 汎用的なコードの依存関係の抽出ツール rexdep を作りました! ― 正規表現で依存関係を大雑把に抽出しよう! - プログラムモグモグ

    あらすじ ソフトウェアの中の依存関係について 正規表現で抽出できることとその限界 コードの依存関係を抽出するツール rexdep を作りました ソフトウェアの構造を概観するには あなたは、大きなソフトウェアを目にした時、何をしますか? ファイルが何十、何百もある時、どこから読みますか? ソフトウェアが巨大になると、そのコードの構造を把握するのは難しくなります。 特にプロジェクトに入りたての人にとって巨大なコードベースを一目で理解することは難しく、細かなタスクをこなしていく中で徐々に「どこに何が書いてあるか」を理解していくしかありません。 ソフトウェアによってはモデルとコントローラ、データベースとビューと言った具合にコードが分かれており、これくらいの分類はディレクトリ名を見れば理解できるかもしれません。 しかしそのようなざっくりとしたコードの分類が分かったところで、ソフトウェアの構造を理解し

    汎用的なコードの依存関係の抽出ツール rexdep を作りました! ― 正規表現で依存関係を大雑把に抽出しよう! - プログラムモグモグ
    kamipo
    kamipo 2015/11/20
  • シンプルでかつ最高のJavaScriptプロファイラ sjsp を作りました! ― Webアプリケーションが複雑化する中でプロファイラに求められるものとは何か - プログラムモグモグ

    あらすじ Web技術が複雑になる中で、JavaScriptのプロファイリングをとる方法とは。 プロファイリングを取るためのコードを手で書いてみましょう。 とてもシンプルで、かつ最高のJavaScriptプロファイラ sjsp を作りました。 当にあった怖い話 上司 「とにかくJavaScriptのコードを速くしてくれ」 私 「分かりました、速くします」 (次の日) 私 「いいプロファイラがないなら作ればいいじゃない」 同じチームの人 「えっ?」 私 「最高のJavaScriptプロファイラ作ったよ」 同じチームの人 「「えっえっ???」」 私 「早速使ってみたらこことここが遅いって分かったよ」 同じチームの人 「「「この子は一体…」」」 JavaScriptのプロファイリングの難しさ 近年、Webブラウザーの処理速度は著しく向上し、その可用性の高さから、アプリケーションのプラットフォーム

    シンプルでかつ最高のJavaScriptプロファイラ sjsp を作りました! ― Webアプリケーションが複雑化する中でプロファイラに求められるものとは何か - プログラムモグモグ
    kamipo
    kamipo 2015/07/01
  • zshのalias -s (suffix alias)が神な件 - プログラムモグモグ

    まず, 他のシェルをお使いの人にはごめんなさい. aliasコマンドの-sが使えるのは zsh 4.2.x- で, 他のシェルでは実装されていないと思います. あと, もう既に alias -s 知ってるよーって人は読まなくていいです. alias -s って何? 打ったコマンドの後ろ(suffix)を見て, 適当に宜しくやってくれるやつです. 次の例を見て下さい. ~$ echo "print ('hello, world')" > hello.py ~$ python hello.py hello, world ~$ alias -s py=python py=python ~$ ./hello.py hello, world ~$ Pythonのコードは python hello.py で実行出来ますが, お尻が py なら python を使います, とaliasしておけば, ./

    zshのalias -s (suffix alias)が神な件 - プログラムモグモグ
    kamipo
    kamipo 2013/02/28
    これはすごい
  • vim-powerlineがすごい - プログラムモグモグ

    みなさんVim使ってますよね ここのとこ, もう半年ほど何もカスタマイズせずに同じ環境で使い続けたんですが, たまにはなにか変えてみようかなと思いました そこで見なおしたのはステータスラインです ずっと長いこと次のようなステータスラインを用いていました set statusline=%{expand('%:p:t')}\ %<[%{expand('%:p:h')}]%=\ %m%r%y%w[%{&fenc!=''?&fenc:&enc}][%{&ff}][%3l,%3c,%3p] あまりこれといった工夫もありませんが, 長いこと快適に使っていたのでそんなに酷いものではないでしょう... ですが今日, Powerlineを入れてみました 使い始めてそのかっこよさに惚れました... 今までなんとなく避けていたのが勿体ないですね... github(https://github.com/Loka

    vim-powerlineがすごい - プログラムモグモグ
    kamipo
    kamipo 2013/02/13
  • 可愛いzshの作り方 - プログラムモグモグ

    うちのzshがあまりに可愛いので、ちょっと紹介します。 突然ですが、終了ステータスというものがあります。 int main () { return 0; // ← これだ!!! } シェルの特殊変数では、$?がこれにあたります。 あと、zshにはConditional Substitutionというものもあります。構文は次のような感じです。 %(x.true-text.false-text)プログラミングでよく見る三項演算子ですね。 道具は揃った! さあPROMPTだ!まずはシェルで確認してみよう! PROMPT="%(?.OK.NG) " よしよし。 Conditional Substitutionの"."は, なんでもいいみたい。 PROMPT="%(?#x.y#a.b) " ほむほむ という訳で、zshを可愛くしちゃおう! PROMPT="%(?!(._.)/!(;_;%)?) "

    可愛いzshの作り方 - プログラムモグモグ
    kamipo
    kamipo 2013/01/01
  • createObjectURLがすごい件 - プログラムモグモグ

    最近またLocal Player (Chrome Player)を実装しなおしています. 一応説明しておくと, Local Playerは, 完全にローカルで動作する音楽プレイヤーです. シンプルさを求め(実装がめんどくさいだけ), 操作しやすく(これは大事), 良い感じのプレイヤーです. 半年前に, ソースコードがスパゲッティになって, 開発を中断していましたが, 最近また書きなおし始めたのです. 音楽プレイヤーをブラウザー上で実装するのには, 音楽ファイルをJavaScriptで読み込まなければなりません. そこでHTML5ですよ!!! <audio src="url/to/musicfile.mp3" type="audio/mp3" /> みたいな感じで, 音楽を再生できます. 詳細は他のページに譲ります. さて, 音楽ファイルを再生するには, ローカルファイルからurlをaudi

    createObjectURLがすごい件 - プログラムモグモグ
  • JavaScriptで/.*/()とは何か. - プログラムモグモグ

    最初に, 皆さんにブラウザーのコンソールで/.*/()を試していただきたい. そして, 他のタブとか色々試して欲しい. どんな文字が返ってきましたか? 多分一意じゃないはず. バラバラ. ワケが分からないよ. そこで, このエントリーを思い出した. (前にも見たことあった...) typeof演算子から学ぶJavaScriptのデータ型の概念と関係する考察のまとめ(id:sandai) 「というわけでデフォルトでexecメソッドが呼び出されるようになっています。」 そうなのか...execなのか. ECMA-262のどこに書いてるのかは分からないけど(←あ...) まあいいや. /.*/.exec()ってなることは分かった. ....function is not a functionの解説はこのエントリーに任せるとして... .execに引数がない場合どうなるのか? 挙動から見てみて明ら

    JavaScriptで/.*/()とは何か. - プログラムモグモグ
  • 1