タグ

ブックマーク / blog.sushi.money (58)

  • 雑談 - hitode909の日記

    使って満足感のある、安心して使える、国産の、高級感のあるソフトウェアを作りたい。そのためには、ソースコードを最高に読みやすくて何の欠点もない状態にしなければならない。 例えば、このサッカーボールはどのようにして作られているのですかって聞いたときに、ブラジルの子供たちを学校にも行かせず労働させて作っていますみたいな感じだと、そういう感じでは縫い目のなめらかさまでこだわれなくて、転がればいいくらいの雰囲気になると思う。 ところで、このソフトウェアは古いよくわからないコードをよくわからないまま適当に書き換えて作りましたって聞くと、心配になると思う。 コードの品質が悪いと新たな機能を追加したり、不具合を修正するのが難しくなる。 コード読んでも、どこを変えれば良いか分からなくて、前に似たようなことをした人の手順を聞いて、その通りに真似して書いて動けば完成みたいになる。 実際どこでどうなって動いている

    雑談 - hitode909の日記
  • OperaでjQueryの.height()で取得した値をJSON.stringifyすると値が10分の1になる - hitode909の日記

    OperaでjQueryで要素の高さを.height()で取得してJSONにシリアライズすると1の位がなくなって10分の1の数字になる.*1したら正しい値になる. 高さを取得したあと必ず*1するのいやな感じがするので誰か何か知ってたら教えてください.Operaは12.00だった.jQueryを使わずに再現させようとしたけどうまくいかなかった.よくわからない. http://jsfiddle.net/5u6hC/1/

    OperaでjQueryの.height()で取得した値をJSON.stringifyすると値が10分の1になる - hitode909の日記
  • tinyurlをアップローダーとして使う - hitode909の日記

    tinyurlにdataスキームURIを登録してアップローダーとして使える. % tinyurl_uploader IMG_1242.jpg http://tinyurl.com/6nbfqcj 写真をアップロードしてブラウザで開くと,最初ロードに失敗して,リロードすると表示される. imgタグのsrcには指定できなかった. テキストをアップロードすると,ブラウザを開くとダウンロードが始まったりする. http://tinyurl.com/6nbfqcj https://gist.github.com/1465545 去年作った,ノートパソコンが揺れたらツイートするやつも最初はtinyurlにアップロードしていて,途中からやめた. https://twitter.com/#!/hitode909/status/15399625849 ひさしぶりにやってみたらまだできたからコマンド化した.

    tinyurlをアップローダーとして使う - hitode909の日記
  • 機械と協調作業で文章を作る - hitode909の日記

    文章を書くのがしんどいので,機械と協調作業で文章を作れるようにした. 最初に一文くらい書くと,続きを書いてくれる. 機械が書いてる途中に,言い回しが気に入らないのが出てきたときは,割り込んで書いたり消したりできる. しばらく書かないとまた機械が書き始める. 生成の情報源は上のテキストエリアに貼る,n-gramのnはスライドバーで選べる. マルコフ連鎖が出すのを途中で止めて直したりできるのが面白いと思って作ってみた.おもしろい気がする. テキストジェネレーター

    機械と協調作業で文章を作る - hitode909の日記
  • Google IME SKK サーバー 作った - hitode909の日記

    Google CGI API for Japanese Input*1を使って変換するSKKサーバーを作った. Googleのサーバーが高性能なので,通常のSKK辞書ではできないような変換ができる.以下は例. 手元の辞書にないが世の中にはあるような言葉を変換できる. 意味不明な言葉でも適当に変換できる. 一文まとめて変換できる. インストール gemになってるので,gem installでインストールできる.依存ライブラリは特にないはず. % gem install google-ime-skk追記,Ruby1.8ではgem install jsonする必要があった,Ruby1.9では不要. 実行 google-ime-skkという実行ファイルができるので実行するとサーバーが起動する. % google-ime-skk 設定 AquaSKKでは,skkserv辞書として追加する.デフォルト

  • スクリーンキャプチャしてgistにアップロードするコマンド - hitode909の日記

    スクリーンキャプチャしてgistにアップロードするのを作った. gistにアップロードすれば,間違ってアップロードしてしまってもすぐ消せるし,あとから画像を差し替えとかもできて,融通が効く. インストール gemにしたので,gem install gyastでインストールできる. % gem install gyast セットアップ gyastは内部的にgistyを呼んでるので,gistyのセットアップをする必要がある. gistコマンドよりちょっと便利なgisty - SWDYH 使い方 gyastというコマンドができるので,実行する. % gyast実行するとスクリーンキャプチャ状態になるので,アップロードしたい場所をドラッグで選択すると,gistに画像がアップロードされて,画像がブラウザで開く. オプションとかヘルプとかは特にない. 1回キャプチャするたびにgistが1つできる. h

    スクリーンキャプチャしてgistにアップロードするコマンド - hitode909の日記
  • eachの進捗を教えてくれるgem - hitode909の日記

    eachの進捗を教えてくれるgemを作った.eachがどれくらい進んでるか,warnしたり,loggerに出したりしてくれる. 例えば,何件くらい処理するのか分からなかったり,eachの中で時間がかかったりするときとかに便利. require 'each-with-logging' require 'open-uri' require 'nokogiri' Nokogiri(open('http://b.hatena.ne.jp/')).search('#hotentry h3 .entry-link').each_with_logging{|link| p [link['href'], open(link['href']).read.length] } eachの代わりに,each_with_loggingにすると,今どこで,何をやってて,どのくらい進んでるかを教えてくれる. examp

    eachの進捗を教えてくれるgem - hitode909の日記
  • UserStreamを受信するgem - hitode909の日記

    UserStreamを受信するときに,毎回Net::HTTPがどうとか書いていて,めんどうだったので,UserStreamを受信するgemを作った. 1行ずつ受信したJSON(のテキスト)をくれるから,使いたいように使える. UserStreamReceiver.new.run{|chunk| p JSON.parse(chunk) } 内部的には,id:tilyさんのOAuth::CLI::Twitterを使ってAccessTokenを取得していて,最初に起動したときに,対話的にPINを入れるように言ってきたりする. 既存のtwitterクライアントから使いたい場合とかは,コンストラクタにAccessTokenを指定して使うこともできる. bin/以下に2つコマンドが入ってる. user-stream-receiver 受信したJSONを表示する. user-stream-receive

  • RubyのGeneratorが便利な例を考えた - hitode909の日記

    ライブラリのインターフェイスが変なときにGeneratorを使ってましにできることがある. MeCabのRubyバインディングのインターフェイスがださくて,使いにくかった. 分かち書きして,名詞だけ表示するようなとき,普通に書くとこうなる. c = MeCab::Tagger.new("-O wakati") node = c.parseToNode(text) while node do puts node.surface if node.feature =~ /^名詞/ node = node.next end whileとか,node = node.nextとかが,Rubyっぽくない. Generatorに入れて1個ずつ返すようにすると,Enumlatorを使えるようになって,だいぶましになる. c = MeCab::Tagger.new("-O wakati") node = c.

    RubyのGeneratorが便利な例を考えた - hitode909の日記
  • 近デジダウンローダー作った - hitode909の日記

    これまでブラウザでちまちま見ていて,めんどくさかったので,画像をダウンロードするのをRubyで書いた. hitode909/kindairb · GitHub ページURLみたいなやつをコピーしてきて, こうすると, ruby kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693こうなって, こういう感じになる. いちばんでかい画像をダウンロードしてくるので,ブラウザで読むよりましだと思う. スクリプト実行するのがめんどうで,ブラウザからを右クリックとかでダウンロードできるほうがよいと思うので,Firefox拡張とかにしたい. 関連 続き 近デジダウンローダーを更新 - hitode909のダイアリー

    近デジダウンローダー作った - hitode909の日記
  • 特異メソッドを定義したオブジェクトをMarshal.dumpしようとして困ってる - hitode909の日記

    特異メソッドを追加したHashのインスタンスをMarshalでdump,loadしようとしているが,うまくいかなくて,困ってる. Marshal.dumpでHashのインスタンスをdumpできる. def set_foo(obj) class << obj def foo "foo" end end obj end p Marshal.dump({ :a => 'aaaaa'}) #=> "\004\b{\006:\006a\"\naaaaa" 特異メソッドを定義してみる. def set_foo(obj) class << obj def foo "foo" end end obj end puts set_foo({ :a => 'aaaaa'}).foo # => foo できた. 特異メソッドを定義したオブジェクトはdumpできないので,これをdumpしようとすると,例外が起きる.

    特異メソッドを定義したオブジェクトをMarshal.dumpしようとして困ってる - hitode909の日記
  • Greasemonkeyいろいろ作った - hitode909の日記

    Greasemonkeyをいろいろ作った.合わせて使うと楽しい. 画像や文字の位置を入れ替える いろいろ入れ替える — Gist 勝手にリンクをクリックしてちがうページに行く 勝手にリンククリックしまくる — Gist 色を派手にする 色をランダムに変える — Gist 完成系 静止画なので分からないけど,ずっとちかちかしていて,5秒ごとにランダムなリンクを踏んでくれる.見ていて飽きない.

    Greasemonkeyいろいろ作った - hitode909の日記
  • imgタグをくるくる回すGreasemonkeyスクリプト - hitode909の日記

    imgタグをくるくる回すためのGreasemonkeyスクリプトを書きました.なかなかいい感じだと思います. 動画 http://www.screencast.com/t/NmIxYjI3ZTMt 画像くるくる回すやつ — Gist // ==UserScript== // @name kurukuruimg // @namespace http://www.hatena.ne.jp/hitode909 // @include * // ==/UserScript== var style = document.createElement('style'); document.body.appendChild(style); style.textContent = "img, canvas, video {\n" + "-moz-transform: rotate(0deg);\n" + "

    imgタグをくるくる回すGreasemonkeyスクリプト - hitode909の日記
  • WebMemcacheというWebサービスを作った - hitode909の日記

    MemcachedみたいにキャッシュしてくれるWebサービスがあれば便利そうだと思ったので,作ってみた. おもむろにHTTPアクセスすると,JSONをくれる. set, get, delete, statsのAPIがある.使い方は上のリンク先に書いた.リンク先のコードをクリックするとその場でXHRして試せる. キャッシュなので,Webページから使って便利みたいな感じじゃなくて,何かキャッシュを利用したいプログラムから使う. Rubyから値を複数setして同じ値をgetする例.このように,複数同時に操作できる. require 'net/http' require 'open-uri' http = Net::HTTP.new('webmemcache.appspot.com') response = http.post('/set', 'pi=3.14&e=2.7&namespace=te

    WebMemcacheというWebサービスを作った - hitode909の日記
  • Emacsのカーソルを激しく点滅させるEmacs Lisp - hitode909の日記

    Emacsを使っていて,カーソルがどこにあるか,よく見失って,困っていたので,カーソルを激しく点滅させるEmacs Lispを書いた. これで,カーソルがどこにいるか一目で分かるようになって,とても便利になった. GitHubに置いた. http://gist.github.com/339782 こうやって使う. (require 'cute-cursor) (cute-cursor t) こうすると無効にできる. (cute-cursor nil) これまでEmacs Lispは10行くらいしか書いたことがなかったのだけど,そろそろEmacs Lispを書かないと,という気持ちになってきたので,適当に書いてみた. まだよくわからないので,ちゃんと勉強して書けるようになりたいと思う. 追記 id:kitokitokiさんがよい実装を示してくださいました.ありがとうございます. 暮らしの e

  • Rubyで2ちゃんねるのスレを読む - hitode909の日記

    Ruby2ちゃんねるのスレを読みたかったので,調べてみると,2ちゃんねるBOTの作り方を詳細に解説してくれている人がいた. 2ちゃんねるBOTの作り方 準備編 - GIOの日記 2ちゃんねるBOTの作り方 設計編 - GIOの日記 2ちゃんねるBOTの作り方 実装編1 - GIOの日記 2ちゃんねるBOTの作り方 実装編2 - GIOの日記 記事内のソースコードのリンクは切れていたけど,GitHubで公開されてた. gioext/bot2ch · GitHub スレの内容をパースする処理とかがなかったので,forkして欲しい機能を勝手に実装した. hitode909/bot2ch · GitHub 試しにこれを使って,ラーメン板の,タイトルにこってりを含むスレの最新のレスを表示してみる. require 'bot2ch' menu = Bot2ch::Menu.new board = m

    Rubyで2ちゃんねるのスレを読む - hitode909の日記
  • screenのaliasを修正しました. - hitode909の日記

    以前.screenのセッションを便利に利用するaliasを書いたのですが,id:mollifierさんに,教えていただいて,リファクタリングしました. 以前のエントリ 指定された名前のscreenを立ち上げる関数を改良 - hitode909のダイアリー 仕様 s すると,pwdの最後のディレクトリの名前のscreenをアタッチしようとする(なければ作る) s nameすると,指定された名前のscreenをアタッチしようとする(なければ作る) 具体的には,~/checkoutでsすると,checkoutという名前のscreenができて,どこかで,s checkoutすると,さっき作ったscreenをアタッチします. 修正前 s () { if [ -n "$1" ]; then name="$1" else name=`ruby -e 'puts Dir.pwd.split("/").la

    screenのaliasを修正しました. - hitode909の日記
  • Twitterの簡単なbotを作ろう!!!! - hitode909の日記

    この記事はめちゃくちゃ古いです.別の方法で,oAuthに対応したbotを作ってください.google:twitter bot oAuth 今日はTwitterの簡単なbotを作ってみます。 作るもの 現在のUNIXタイムを配信する、unixtimebotを作ります。 既に完成したものが以下のURLで動いています(飽きたら配信が止まるかもしれません)。 http://twitter.com/unixtimebot あなたはこのbotをfollowすることによって、常にUNIXタイムを意識しながら暮らすことができます。 方針 Rubyを使います。 直接TwitterAPIを叩くのではなく、RubyGemsからライブラリを取ってきてそれを使ってアクセスします。 Twitterにアクセスできるgem Twitterにアクセスするためのgemは、ちょっと探しただけで、これだけありました。 Twit

    Twitterの簡単なbotを作ろう!!!! - hitode909の日記