タグ TIM Labs
人気順 5 users 10 users 100 users 500 users 1000 usersプログラミングに数学はどのくらい必要か - TIM Labs
プログラミングするのに数学の知識はあるに越したことはない。 でも、どのくらいあったら良いかの判断は難しい。 プログラミング言語の知識や、用意されているツール・ライブラリ等を使って、まあ少し勉強すれば出来ることをやるだけだったら、高等学校の数学すら不要と思う。 しかし、それでは、理屈は理解しないままプログラムをしているプログラマ程度で終ってしまう。 特に、AIに関するプログラムを書こうと思ってディー... 続きを読む
JavaScript でオセロを実装する(原始モンテカルロAI編) - TIM Labs
問題 以前、オセロの対戦AIの作成しましたが、そこでは実装を簡略化する為に盤面の価値を 盤面の価値 = 自分の石の数 - 相手の石の数 という単純な方法で決めていました。 でも、これには問題があります。 同じ石でも配置場所によって価値は異なるはずです(例: 角は最強)。それが考慮されていません。 ゲーム終盤になってくると石の数が重要になってきます。でも序盤から石の数を重視するのは方向性としておかし... 続きを読む
JavaScript でオセロを実装する(ネット対戦編) - TIM Labs
問題 以前、 JavaScript でオセロを実装 していたのですが、 この実装には一つ大きな問題がありました。 AI相手にゲームをするのは、それはそれで楽しいものの、 やはりこの手のゲームは人間同士で対戦したくなるものです。 一応、あの実装は人間同士で対戦できると言えばできるのですが、 同じPCの前に座って交代しながら操作する形になので、色々と不便です。 インターネット全盛のこの時代、やはりネッ... 続きを読む
GHOST 脆弱性は如何様に使うのか - TIM Labs
先日 GHOST と呼ばれる glibc の脆弱性が発表された。なんでも、「リモートから任意のコードを実行できる可能性がある」らしいではないか。しかも様々なプログラムで利用されているライブラリ部分の問題とあって、影響範囲がとても広い。なかなか厄介なことである。 はて、しかし一体全体どうやってリモートから任意のコードを実行しようというのだろう? 話を聞くに、たかが数バイトの情報を範囲外のメモリに書き... 続きを読む
Railsプロジェクトの初期開発フェーズでのDBスキーマ管理を見直す - TIM Labs
DBのスキーマ、皆様どのように管理されているでしょうか。 Railsを利用されている方の多くは、ActiveRecordのマイグレーションを利用して管理をされているかと思います。 私もいままでいくつかのRailsプロジェクトに関わってきましたが、 ほぼ全てのプロジェクトでActiveRecordのDBマイグレーションを利用してきました。 (一部のプロジェクトはActiveRecordを使っていない... 続きを読む
職場で学んだ快適なVim操作のためのtips - TIM Labs
テキスト編集にVimを利用しているのですが、とても奥が深い道具なので一人で使う分には気づかない機能が沢山あります。 日頃職場の先輩方から教わりとても効率的に出来るようになったVimのtipsを、いくつかこの記事にまとめます。 知ってる人は既に使いこなしているものばかりだと思いますが、Vimのそんな便利だけど気付きにくい機能を共有できればと思います。 カーソルの位置を移動する直前に戻す うっかりgg... 続きを読む
Railsなプロジェクトで利用している便利なGem一覧 - TIM Labs
RubyにはGemと呼ばれるサードパーティのライブラリが豊富に存在します。 Gemは大変便利なもので、こういう機能ほしいなと思った際に The Ruby Toolbox や RubyGems.org や Google で検索すると大抵誰かがその機能を持ったGemを作っていたりします。 gemを利用するのも、RubyGems.orgに登録されているものならば gem install xxx # xx... 続きを読む
JavaScript でオセロを実装する(遅延評価編) - TIM Labs
これまでのあらすじ 新人の力量を測るための課題としてオセロの作成を指示したが、 指示した当人が作れないようでは話にならないので実際に作り始めた。 一先ず盤面が4x4で黒も白も人間が指す一人二役の寂しいオセロは実装できたのだが、 快適に遊ぶには大きな問題が潜んでいたのであった。 実は4x4で既に重い問題 実際に前回作成したオセロを実行すると、 ゲームが遊べるようになるまでに割りと待たされます。 それ... 続きを読む
美しいプログラムを書く(業務用Webアプリケーション保守編) - TIM Labs
あらすじ あなたはとある業務用 Web アプリケーションの開発・保守を任されています。 このアプリケーションは ASP.NET を用いて作成されており、 クライアントサイドは一部 jQuery を利用してナウなヤングにバカウケの UI を実装しています。 さて、今回は 商品情報の変更履歴を一覧表示する。 一覧から2つのバージョンを選んで差分を表示できるようにする。 という機能を実装することになりま... 続きを読む
Rubyのデバッグに役立つ便利なPryの拡張まとめ | ましましブログ
Rubyistのみなさん,Pryはご存知でしょうか. Pryとは,最近話題のirb上位互換の高機能インタプリタです. 簡単な解説は以前に自分でも書きましたが, こちらの記事がよくまとまっていると思います. Rubyistよ、irbを捨ててPryを使おう - TIM Labs 実際に使ってるところをscreencastで見てみると,より凄さが分かると思います. Pry Screencast on V... 続きを読む
僕が一番 Vim の正規表現をうまく使えるんだ(\zs \ze 編) - TIM Labs
問題 Vim の正規表現 はとても豊富で、 ベーシックなもの から アドバンスドなもの までかなりの道具が揃っています。 これを駆使すればありとあらゆる......は言い過ぎですが、 世の中のテキスト処理の九分九厘を快適に行うことができます。 ただ、あまりにも数が多いので、一体どこから覚えていけばいいのか困りますし、 :help に記載されているものの中には今後の人生で活用する機会があるかどうか分... 続きを読む
Rubyistよ、irbを捨ててPryを使おう - TIM Labs
結構前からgithubのリポジトリを追いかけている人達には認知されていましたが、RailsCastsでも紹介されたことから、Ruby界で一気に広がりを見せているPryを紹介します。 ちなみに発音はpra'i(ぷらい)です。英単語で「覗く」などを意味します。 今回はそんな便利なPryについて少し紹介したいと思います。 Pryはirbの代わりになるREPL Pryを一言で説明すると、irbと同様にRE... 続きを読む
gitでアレを元に戻す108の方法 - TIM Labs
以前 gitで一度行った変更をなかったことにする方法4つ を紹介しましたが、 日常的に git を使用していると他にも様々な 「なかったことにしたい」「元に戻したい」 という状況に遭遇します。 そのひとつひとつについて対処方法を紹介していきます。 問題1: ライブラリの新機能を試すためにあれこれ適当なコードを書いてみた。でももう要らない。 解答1: git reset --hard HEAD~{n... 続きを読む
Sphinx + blockdiag で始めるドキュメント生活 @ yokohama.pm 2011/05 - TIM Labs
ちょっと足を伸ばして yokohama.pm で Sphinx と blockdiag の話をしてきました。 続きを読む
モナド: お前はもう知っている - TIM Labs
はじめに過去に私がHaskellを学び始めた時、真っ先に疑問に思ったことはモナドの存在だった。当時は全くと言っていいほど理解できなかったが、最近Haskellを学び直してようやく理解することができた(と思う)。という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。ここではモナドの本質が何なのか概要を示す。正確な説明は数多あるモナドについてのチュートリアルを参照されたい。Hellow ... 続きを読む
Git使いがMercurial使いに転職するとき設定しておくべきMercurial拡張 - TIM Labs
Mercurialは、Merucurial拡張という拡張モジュールを使って、Merucrialの挙動をいろいろ拡張できるようになっています。デフォルトのままだと使いにくいので、Mercurialを使う上で便利にしてくれる拡張を設定しておきましょう。デフォルトでバンドルされているMercurial拡張は、Using Mercurial Extensionsにまとめられています。今回はGit使いがMe... 続きを読む
gitで一度行った変更をなかったことにする方法4つ - TIM Labs
gitでは様々な方法でコミットログを書き換えることができます。その一例として一度行った変更をなかったことにする方法を4つ紹介します。問題1: ライブラリの新機能を試すためにあれこれ適当なコードを書いてみた。でももう要らない。$ $EDITOR$ git commit -am 'foo'$ $EDITOR$ git commit -am 'bar'$ $EDITOR$ git commit -am ... 続きを読む