タグ

ブックマーク / d.hatena.ne.jp/shunsuk (40)

  • Rubyのリフレクション解説(eval族のはなし) - このブログは証明できない。

    Rubyのリフレクションについてステキな記事を見つけてしまいました。 no title 前提知識 Rubyでは何でもオブジェクトだと言われます。まずは、この辺について。 最初に思い浮かぶのはこれですね。 5.class #=> Fixnum "hello".class #=> String class自体はどうでしょうか? class Foo;end #=> nil Foo.class #=> Class ここから2つのことが解ります。Fooは定数であるということ。そしてClass型のオブジェクトを参照しているということ。 これはどうでしょう? Foo = Class.new (irb):8 warning: already initialized constant Foo => Foo 予想通りエラーになります。定数 Foo を再度初期化しようとしたからです。 Fooクラスを定義したい時

    yuiseki
    yuiseki 2012/07/23
  • shellに設定しておくと幸せになれるaliasをいくつか。 - このブログは証明できない。

    ご無沙汰しております。生きてます。 スクリプトを書いてパスを通しておくと、どこにいても呼び出せるので便利。なんだけど、短いやつなら.zshrcとか.bashrcとかのaliasとして書いておくと管理がラク。自分の.zshrcに書いてあるaliasをいくつか紹介。ちなみに、Mac + zsh環境。 コマンドを短くする系 こういうのは、よくやると思う。 alias r=rails alias g=git 下のように使える。 % r g scaffold happy title:string expire_in:integer % g status よく使うコマンドのタイプ量を減らしておけば、計画停電にも耐えられるかもしれない。 オプションを付けとく系 これもよくあると思う。 alias ls='ls -G' lsって打ったときに、ls -Gの効果が発揮されて、Greatな表示になる。常時付けと

    shellに設定しておくと幸せになれるaliasをいくつか。 - このブログは証明できない。
    yuiseki
    yuiseki 2012/07/23
  • RubyでPythonのdecoratorを実装する。 - このブログは証明できない。

    こちらのスライド。RubyRubyを拡張する。つまりメタプログラミングの話。 Extending Ruby with Ruby // Speaker Deck メタプログラミングを使って他の言語の機能を実装しようという内容になってる。 Python: Function decorators Scala: Partial application Haskell: Lazy evaluation 今回は、この中でPythonのdecoratorを実装するというのをピックアップ。 githubにソースコードがあがってて、スライド中では未解決になってた問題がすでに解決されている。 michaelfairley/method_decorators ここから載せるコードは、githubの方じゃなくてスライド中のコードに一部手を入れたものになってる。ひとつのメソッドに複数のdecoratorを指定でき

  • Rubyで簡単なAI(人工知能)を実装してみた(遺伝的アルゴリズム) - このブログは証明できない。

    「マッチ箱の脳(AI)―使える人工知能のお話」という素晴らしいがあります。「文系でも解る」をコンセプトに書かれていて、AI人工知能)をとても簡単に解りやすく解説しています。。すごいのは、マッチ箱とサイコロを使って、実際にAIのシュミレーションができるところです。ですから、プログラミングができなくても、AIが作れてしまうのです。幸い、私はプログラムを書けるので、勉強中のRubyで「遺伝的アルゴリズム」を実装してみました。 プログラムの目的は、3択問題が10問出題されて、それに全問正解するというものです。下の方の破線以降がUI部分になります。ここを修正するとイイカンジだと思います。 注意。 使っている英単語おかしくて、アレかもしれません。 Rubyのコーディングルールに則っていなくて、アレかもしれません。 あまりスマートでないコードもあって、アレかもしれません。 1箇所修正しました(200

    Rubyで簡単なAI(人工知能)を実装してみた(遺伝的アルゴリズム) - このブログは証明できない。
  • Rubyで簡単なAI(人工知能)を実装してみた(ニューラルネットワーク) - このブログは証明できない。

    Rubyで簡単なAI人工知能)を実装してみた(遺伝的アルゴリズム)」では、「遺伝的アルゴリズム」を実装しました。今回は「ニューラルネットワーク」です。参考書は前回に引き続き「「マッチ箱の脳(AI)―使える人工知能のお話」」です。 プログラムの目的は、3つのお菓子の組み合わせが、決められた金額以下かどうかを判断します。下の方の破線以降がUI部分になります。ここを修正するとイイカンジだと思います。あと、Patternsが決め打ちなので、この辺を改造するとよりイイカンジだと思います。 注意。 使っている英単語おかしくて、アレかもしれません。 Rubyのコーディングルールに則っていなくて、アレかもしれません。 あまりスマートでないコードもあって、アレかもしれません。 class Unit def initialize(count=3) @cells = [] (count + 1).times

    Rubyで簡単なAI(人工知能)を実装してみた(ニューラルネットワーク) - このブログは証明できない。
  • Titanium Mobileの暗黒ノウハウを公開します。 - このブログは証明できない。

    WEB+DB PRESS Vol.61の特集は、Titaniumでした。実際にアプリを作りながらのチュートリアルになっています。正統派な入門記事です。 でも。期待してた内容ではありませんでした。私は、Titaniumの暗黒面が知りたいのです。いつものWEB+DB PRESSなら、そんな記事が多いのですが、さすがにまだ開発者が少なそうなTitaniumではアッサリ目に仕上げるしかないのでしょう。そこで、このどうでもいいブログで、Titaniumのバッドノウハウ、いや、暗黒ノウハウをメモっておきます。 アプリを1開発しただけですので、そこまでTitaniumのことを解っているわけではありません。間違っているところなどがありましたら、指摘してもらえるとありがたいです。暗黒ノウハウをみんなで共有しましょう。あと、スシなどをおごってもらえると、もっとありがたいです。 前提。 Titaniumのバー

    Titanium Mobileの暗黒ノウハウを公開します。 - このブログは証明できない。
    yuiseki
    yuiseki 2012/02/11
  • あなた以外はみんなFacebookを使っています。 - このブログは証明できない。

    でもふつうの会話の中にFacebookという言葉が聞こえてくるようになった気がする。カフェとか定屋とかで。Facebookが日でも一般的な社会インフラになりうるのか。なんとなく、なりうる気がする。いまの状況って、携帯電話が普及し始めたころに似てる。 Facebookやばい。 Facebookは先日、大幅な機能追加を行った。TickerやWallでは友達の「いま」を把握しやすくなった。そしてTimelineでは、その人の過去に容易にアクセスできるようになった。APIも強化されて、Open Graphを使ったらすごいことになりそう。 Open Graph Beta - Facebook Developers 意識してないと個人情報だだ漏れな状況。Facebookが日語対応した当時、匿名性は受け入れられないなどと言われていた。ところが、Twitterによって状況が変わったように見える。

    あなた以外はみんなFacebookを使っています。 - このブログは証明できない。
    yuiseki
    yuiseki 2011/09/29
  • プログラミングは「名前」が9割。 - このブログは証明できない。

    プログラミングというのは、名前をつける行為なんだと思う。 プログラミングで一番大切なこと。 もしも、プログラマーじゃない人に、「プログラミングで一番大切なことは?」と聞かれたら、迷わず「名前」だと答える。もちろん、人それぞれだし、自分はスキルの高いプログラマーじゃないよ、と前置きして。 名前が9割と言ったときの、9割という部分は人によってだいぶ差があるんだと思う。もっと小さいかもしれない。けれど、名前が重要だという点に関しては、反対するプログラマーはいないんじゃないだろうか。 時代や環境で変わる名前。 いま僕がイメージしてる名前というのは、変数名だったり関数名だったりクラス名だったり、とにかくいろいろ。さらに、JavaScriptとか高階関数をバリバリ使うような場合など、名前をつけないという選択肢もある。 なんとなくJavaScriptと書いたんだけど、名前はプログラミング言語や開発環境や

    プログラミングは「名前」が9割。 - このブログは証明できない。
    yuiseki
    yuiseki 2011/09/27
  • 25冊のコンピュータ技術書がタダで読める! - このブログは証明できない。

    これはスゴイ。有名なのもありますが、こんなのも読めるのか、というカンジです。 25 Free Computer Science Books Computer Science Booksとなっていますが、コンピューターサイエンスには含まれないだろうというも多いようです。コンピューター技術書としておきました。プログラミング系が多いですね。 We’ll Have More Soon The Cathedral and the Bazaar brpreiss.com no title no title Getting Real: The smarter, faster, easier way to build a successful web application no title Git Magic - Preface GPU Gems - Foreword How to Design Pr

    25冊のコンピュータ技術書がタダで読める! - このブログは証明できない。
    yuiseki
    yuiseki 2011/08/18
  • Titanium Mobileの暗黒ノウハウを公開します。主にAndroid編。 - このブログは証明できない。

    すこし前の話になりますが、Titaniumを使ってiPhoneアプリAndroidアプリを同時リリースしました。iPhoneアプリの方は、以前公開した暗黒ノウハウでわりと楽に作れました。問題は、AndroidiPhoneとは違う暗黒ノウハウが必要となりました。 Titanium Mobileの暗黒ノウハウを公開します。 - このブログは証明できない。 今回は、ボリューム少なめです。もう少したまってから公開しようと思ったのですが、Objective-Cを使った開発に戻ったので、しばらくTitaniumは使わないだろうということで公開することにしました。そうそう、日語でTitaniumの書籍が出るみたいですね。 Android対応 TitaniumはiPhone対応が先行していて、Androidだと機能がなかったりバグがあったりするそうです。私はわりとどうでもいいアプリしか作ってないので

    Titanium Mobileの暗黒ノウハウを公開します。主にAndroid編。 - このブログは証明できない。
    yuiseki
    yuiseki 2011/05/25
  • Rubyのrescueを使ってコードをシンプルにするTips。 - このブログは証明できない。

    一緒にプロジェクトを進めてくれるデザイナーさんいないでしょうか。雇用関係とかなしで、フリーランスな感じで、お互いのスキルを補っていけたらいいなと思っています。 Rubyのrescueを使ったTipsということで。論よりコード。下のようなコードがあったとします。@current_userはnilである可能性があるとします。 if @current_user @current_user.name else "Unknown" end もう少しサラッと書くと。 @current_user ? @current_user.name : "Unknown" これは例外処理を使って描くこともできます。 begin @current_user.name rescue "Unknown" end で、ここがポイント。rescueは後置で描くことができるのです。 @current_user.name res

    yuiseki
    yuiseki 2011/01/18
  • Color Splash + TiltShift Generator + Instagramの写真加工が面白い。 - このブログは証明できない。

    これまで画像には興味がなく、このブログもテキストばかり。ところが、昨日の朝からiPhoneのカメラアプリや写真加工アプリを触っていると、なかなかおもしろい。写真に関しては、まったくのドシロウトで、かつ興味すらありませんでした。それでも、なんとなくおもしろい写真がつくれたので貼っておきます。 ちょっとおもしろげな写真になっていますね。撮影はiPhoneの標準カメラ、加工はiPhoneアプリを3つ連携させました。Color Splash + TiltShift Generator + Instagramという組み合わせです。 加工の流れをメモっておきます。まず、Color Splashというアプリ。指定した部分のみをカラーに、その他の部分をグレーにしてくれます。 http://itunes.apple.com/jp/app/color-splash/id304871603?mt=8 プレミアム

    Color Splash + TiltShift Generator + Instagramの写真加工が面白い。 - このブログは証明できない。
    yuiseki
    yuiseki 2010/11/06
  • iPhoneでカメラの映像をリアルタイム画像処理してみる。 - このブログは証明できない。

    iPhoneで画像を編集するのにハマっています。Photoshopを使える人ならサクっと編集できるのだと思いますが、ドシロウトでも使えるiPhoneアプリでちまちまやっています。 Color Splash + TiltShift Generator + Instagramの写真加工が面白い。 - このブログは証明できない。 で、画像処理プログラミングもやってみたくなったので、早速やってみました。「iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック」にカメラの入出力を触るサンプルがあったので、カメラからの映像をリアルタイムに編集する処理を書いてみました。 赤いものだけがカラーで表示されるカメラです。動画を撮ればよかったのですが、生で見るとおもしろいです。 上の画像を見ての通り、画質が荒いです。全ピクセルを処理すると、処理が追いつかないんです。そこで、画質を落としてピク

    iPhoneでカメラの映像をリアルタイム画像処理してみる。 - このブログは証明できない。
  • ループをたくさん回す処理を高速化する初歩の初歩。 - このブログは証明できない。

    テキスト処理を中心にやっていましたが、画像処理に興味が出てきて、さっそくアプリを作りました。もともと下の記事のあたりでユーザーとして画像処理に興味を持って、当然の流れながら、自分でもつくってみようと。 Color Splash + TiltShift Generator + Instagramの写真加工が面白い。 - このブログは証明できない。 で、何かを間違えて、普通の画像処理ではなく、カメラの映像をリアルタイムに加工しはじめました。そうすると、パフォーマンスがかなりシビアなんですね。 iPhoneでカメラの映像をリアルタイム画像処理してみる。 - このブログは証明できない。 全ピクセルを操作しなければなりませんから、ループをたくさん回す必要があります。なんとか高速化できないかと考えてみたところ、あっさり高速化に成功しました。私が気づくぐらいですから、初歩の初歩なんだと思います。 追記:

    yuiseki
    yuiseki 2010/11/06
  • 490円のServersMan@VPS (CentOS 5) をGitサーバーにする会。 - このブログは証明できない。

    490円という超格安でVPSが使えるServersMan@VPS。rootが取れるので、何でもやりたい放題です。私はHaskell環境をつくりました。みなさんは、何に使いますか? 490円のServersMan@VPS (CentOS 5) にHaskell環境をつくる会。 - このブログは証明できない。 このVPSにGit環境をつくることにしました。GitHubだと、プライベートなリポジトリをつくるのにお金がかかりますからね。ServersMan@VPSの490円のプランなら、10GBのディスク容量が使えます。ここをGitの中央サーバーに仕上げます。 yumのリポジトリを追加します。 # wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm # r

    490円のServersMan@VPS (CentOS 5) をGitサーバーにする会。 - このブログは証明できない。
    yuiseki
    yuiseki 2010/08/15
  • 半リアルタイムチャット駆動開発のすすめ。 - このブログは証明できない。

    みなさん。半リアルタイムチャット駆動開発してますか?個人的には、アジャイル開発のプラクティスのひとつになっています。サイバーレコードでは、この開発手法で開発に取り組んでいます。今日は、半リアルタイムチャット駆動開発のやり方を紹介します。似たようなことをやっている人もいるかと思いますが、その場合はスルーしてください。 株式会社サイバーレコード チャットシステム チャットシステムが必要ですが、Skypneのように当にリアルタイムだと、メンバーの時間が合わなければ使えません。そこで、リアルタイムにも使えるけれど、掲示板的にも使えるシステムを用意します。サイバーレコードでは、無料の「フレッシュミーティング」を利用しています。 無料のグループチャット・ファイル共有サービス - フレッシュミーティング 複数のミーティングルームを作ることが可能で、複数のプロジェクトを同時に進めることができます。メンバ

    yuiseki
    yuiseki 2010/06/09
  • コピペはプログラミングの基本。どんどんコピペしなさい。 - このブログは証明できない。

    コピペはプログラミングの基です。どんどんコピペしなさい。って、スラムダンクに書いてあった気がしますが、気のせいかもしれません。私はコピペ推進派です。コピペはプログラミングの基なので、がしがしコピペすればいいと思います。今日は、この辺の話をしていきますが、話題がそれて三井寿を語る場になったらスミマセン。 まず、プログラミング初心者。これはもう、わしゃわしゃコピペすべきです。ホントは写経の方がいいのですが、コピペでも構いません。構いませんとも。かまいたちの夜です。プログラミング初心者が参考書のプログラムを理解するには、読むだけでは足りません。まず、サンプルプログラムを動く状態にして、それを改造すべきなのです。大幅な改造は必要ありません。まずは、変数の中身を変えるとか、そこから始めます。 英語を学習するときに、1単語を覚えるよりも、ひとかたまりのフレーズで覚えた方がいい。って、スラムダンク

    yuiseki
    yuiseki 2010/05/26
  • JavaScriptのwithをRubyでも使いたい夢をあきらめないで。 - このブログは証明できない。

    JavaScriptには、withという構文があります。あまり使われていないようです。むしろ、使わないことが推奨されているようです。ですから、知らない人もいるかもしれません。withを知っているかどうかが、JavaScriptのwithを知っているかどうかの分かれ目ですね。私はwithを知っていますが、使ったことはありません。 それでは、JavaScriptのwithの使い方を見てみましょう。まずは、withを使わない場合。 console.log(Math.cos(1/2)); //=> 0.8775825618903728 console.log(Math.sqrt(2)); //=> 1.4142135623730951 普通ですね。次に、withを使う場合。 with(Math) { console.log(cos(1/2)); //=> 0.8775825618903728 co

    yuiseki
    yuiseki 2010/04/21
  • Rubyの構造体を超簡単に作る会。 - このブログは証明できない。

    データ構造を適宜したクラスを作りたい時があります。メソッドは必要ありません。C系統の言語で言えば、構造体でしょうか。Rubyでは、構造体を超簡単に作ることができます。 まずは、普通にクラスを書いてみましょう。 class Person def initialize(name, age) @name = name @age = age end attr_accessor :name, :age end eita = Person.new("瑛太", 27) juri = Person.new("上野樹里", 23) 非常に冗長な感じを醸し出していますね。そんなのRubyじゃない。。。 そこで、Structを使います。 person = Struct.new("Person", :name, :age) eita = person.new("瑛太", 27) juri = person.new

    yuiseki
    yuiseki 2010/04/16
  • Rubyの実用的かもしれないメタプログラミングのテクニック - このブログは証明できない。

    4歳の長女とオセロで遊ぶようになりました。挟んでひっくり返すのはできるのですが、ナナメに挟むというのが難しいようです。そこ、ナナメもひっくり返せるよ。と思うのですが、長女は気づきません。私もあえて口に出さず、常に圧勝しています。白黒はっきりしないグレーなオセロを楽しんでいます。 さて、Rubyの特徴のひとつに、メタプログラミングがやりやすいことが挙げられます。あ、オセロの話は一切関係ないので、忘れてください。 Rubyのリフレクション解説(eval族のはなし) - このブログは証明できない。 メタプログラミングをすると、肩こりや便秘の解消などいろいろな効果がありますね。今回は、そのうちのひとつを紹介したいと思います。思い浮かべてください。既存のライブラリのある処理だけ差し替えたい。下の例では、targetメソッドの中で使われているFixnum#to_sメソッドを差し替えたいのです。そう、差

    yuiseki
    yuiseki 2009/12/17