タグ

ブックマーク / route477.net (35)

  • Route 477(2015-12-13)

    ■ [ruby][event] RubyKaigiで型推論の話をしました RubyKaigi2015でスピーカーとして登壇しました。 内容は「型推論入門」です。 https://speakerdeck.com/yhara/lets-make-a-functional-language https://github.com/yhara/rk2015orescript 「これってRubyに適用できないの」という質問をいただきましたが、RubyはHMとだいぶいろいろ違うので(オブジェクト・代入等)、難しいんじゃないかなという気がします。 いっぽうCrystalは型推論ができてるっぽいので、そっちのほうがRubyの参考にはなるかも?

    Route 477(2015-12-13)
    mas-higa
    mas-higa 2015/12/14
    てっきり Ruby3 のために調べた成果をチラ見せしてくれたのかと...
  • Route 477(2015-09-16)

    ■ [book] 超絶技巧プログラミングのレビュアーをしました 書籍『あなたの知らない超絶技巧プログラミングの世界』に、レビュアーとして参加していました。著者はRubyコミッタの遠藤(@mametter)さんで、来週9月25日に発売予定です。 4774176435 内容について一言で説明するのは難しいですが、このスライドとかこの発表とかを見れば理屈でなく心で理解できると思います。あえて言葉で説明すると、ソースコードが模様になってるとか、記号だけでプログラミングするとか、プログラムを実行すると別のプログラムが出力されるとか、そういう頭おかしい感じのプログラミングに関する専門書籍です。 内容について 書を開くと冒頭から3分の1、実に100ページに渡って著者のこれまでの作品が列挙されます。自分では書ける気がしないという人も、ここを眺めてるだけでも楽しめると思います。 以降の章では、それらの作

    Route 477(2015-09-16)
  • Route 477(2014-09-23)

    ■ [docker][memo] Dockerでmicro PaaSつくるやつ(メモ) 会社で動かしたら面白いかなと思ったけど、ちょっとオーバースペックそう。 Dokku https://github.com/progrium/dokku 「Docker使ったら100行くらいのbashでHerokuっぽいものができたよ」って書いてある。Proof-of-conceptみたいな感じか。 dokku + VirtualBoxで自分のHerokuを作る どうやっていろいろな言語をサポートしてるんだろう?と思ったけど、Dockerイメージの作成部分は別のものを使ってみるみたい。 Deis, Flynn Dokkuより大規模でちゃんとしてるっぽい。DeisとFlynnは別プロジェクトだけど機能的にだいぶ被ってるっぽい。 DockerによるマルチホストのPaaS flynnの概要とそのアーキテクチャー

    Route 477(2014-09-23)
  • Route 477(2014-09-21)

    ■ [ruby][event] 近況報告@RubyHiroba2014 (パターンマッチ、Hash#map、Opal/Yeahの話) 日行われたRubyHiroba 2014 (RubyKaigiの後夜祭的イベント) にて、「近況報告」というタイトルでRubyの話をしてきました。 スライド(speakerdeck) 以下はテキスト版です(内容は少し差異があります)。 近況について いちおうBoomがメインの感心事のつもりなのですが、あまり進んでいません。 理由の一つはケータイを持って社寺仏閣を回るゲームうつつを抜かしていたことですが、最近はプレイしてないのでもう大丈夫だと思います。 Rubyとパターンマッチについて Boomの実装にはpattern-matchというgemを使っています。その名の通り、Rubyでパターンマッチをやるためのライブラリです。 Rubyにはパターンマッチがない

    Route 477(2014-09-21)
  • Route 477(2014-06-06)

    ■ [prog] コメントの話 去年くらいから仕事のコードでは、privateも含めて全部のメソッドに「何をするメソッドか」という簡単な説明を書くように心がけています。 こういうやつですね。 # このレコードの種類を文字列で返す # 種類が未定義の場合はnilを返す def type_name FOO_NAMES[self.foo_type] end 理由をメモ的にまとめておきます。 1. コメントがあると読む人が助かる バグ修正や機能追加とかで、コードを読む機会というのはけっこうある。そういうときにメソッド単位でコメントがあるとすごく助かる。*1 1行書いておくだけで情報共有のコストが下がるなら、充分良い投資ではないかと思います。 あるいはメソッドを短くして適切なメソッド名を付ければ、コメントは要らないのではと考えたこともあるけど、当に意図がソースから自明になることって少ないんですよね

    Route 477(2014-06-06)
    mas-higa
    mas-higa 2014/07/24
    コメント書くよりもテスト書いてる
  • Route 477(2014-02-14)

    ■ [ruby] Sinatraでファイラ作ると捗る ローカルのデータファイルを一覧したい時、いちいちGUI作るのも面倒なので、ブラウザでポチポチして表示できると便利だなーと思うことがある。 実際そういうコードを3回くらい書いてるので、テンプレとしてgithubに置いてみた。 https://github.com/yhara/sinatra_filer_template cloneしてbundle installしてrackupで起動すると、こんな感じでファイル一覧をブラウザからたどれるようになる。この状態ではまだ、ファイル名が見える以外の機能はないんですが… これにですね、ちょっと手を入れて、*.jpgをimgタグに展開するようにすれば簡易画像ビューアになるし、afplayとかと連携すれば簡易音楽プレーヤになるし、仕事で先方から受け取ったxmlファイルをいい感じに整形して表示するとかも簡

    Route 477(2014-02-14)
  • Route 477(2014-02-19)

    ■ [ruby] Rakefileを分割するときに気をつけること Railsプロジェクトの場合lib/tasks/*.rakeにタスク定義を書きますが、non-RailsプロジェクトでRakeを使った場合、開発が進むにつれてRakefileが肥大化するケースがあります。 この場合、lib/tasks/*.rakeを読むようにする修正は特に難しくなくて、以下のようにDir.[]で検索してそれぞれloadしてやれば済みます。*1 PROJ_ROOT = __dir__ # Ruby 1.xの場合はFile.dirname(__FILE__) Dir["#{PROJ_ROOT}/lib/tasks/**/*.rake"].each do |path| load path end あとは好きな粒度(例えばnamespaceごととか)でlib/tasks/foo.rakeを設置し、タスク定義をそっ

    Route 477(2014-02-19)
  • Route 477(2013-11-27)

    ■ [esobook] 『Rubyで作る奇妙なプログラミング言語』が復刊します 4839927847 絶版になっていた『Rubyで作る奇妙なプログラミング言語』ですが、このたびPDF版+オンデマンド印刷版という形で復刊になります。 発売日は1/7で、いまのうちに予約すると割引があるので、PDFなら買うのにな、と思っていた方はこの機会にぜひどうぞ。 【先行予約】Rubyで作る奇妙なプログラミング言語 ~ヘンな言語のつくりかた~ | マイナビブックス 一応、第二版という形にはなりますが、内容は基的に前のものと同じです。違うのは正誤表にある誤植が直っているのと、「はじめに」のRubyのインストール方法のところを直したくらいです。 サポートサイト 復刊に当たって、ダウンしてたサポートサイトも新たに復旧しています。(スタイルシートをちゃんと書いてないのですごくプレーンな感じですが…) http:/

    Route 477(2013-11-27)
    mas-higa
    mas-higa 2013/11/28
    epub なら買うのにな (紙の本は持ってます)
  • Route 477(2013-11-01)

    ■ [event] 2013年のアドベントカレンダーまとめを始めました 11月になったので、Advent Calendarのまとめ作業を始めました。 去年のやつはちょっと長くなりすぎたので、今年は言語別・技術系・その他の3つに分けてみました。 Advent Calendar 2013まとめ[プログラミング言語別] - NAVER まとめ Advent Calendar 2013まとめ[技術系] - NAVER まとめ Advent Calendar 2013まとめ[非技術系] - NAVER まとめ 主にQiitaとAdventarをチェックしています。漏れがあったら@yharaまでお知らせください。 ■ [github] Githubの緑のバーを伸ばすには、登録したメールアドレスを使うことが必要 Githubのユーザトップ (https://github.com/yhara ) の緑のや

    Route 477(2013-11-01)
    mas-higa
    mas-higa 2013/11/07
    これは便利
  • Route 477 - Quick servey on 'Ruby on Browser'

    ■ [git] git grepの検索結果から長すぎる行を省くコマンドを作った git grepはgitリポジトリ内のソースコードを高速に検索してくれる便利なやつですが、「git grep Date」とかしたときに、 jquery.min.jsなど圧縮された(=1行が異常に長い)ファイルが検索結果に含まれてしまい、非常にウザい感じになります。 で、ふと解決策を思いついたのですが、git grepの出力をパースして長い行をたたんでやればいいんじゃないでしょうか。 以下のコードをgit-grep-nolongのようなファイルに保存し、パスの通った場所に置いてchmod +xしておきます。 #!/usr/bin/env ruby require 'open3' stdin, stdout, stderr = *Open3.popen3('git', 'grep', *ARGV) LIMIT =

    Route 477 - Quick servey on 'Ruby on Browser'
    mas-higa
    mas-higa 2013/07/17
    Quick servey on 'Ruby on Browser'
  • Rubyのpデバッグは「p x: x」のようにすると良い

    ■ [ruby] Rubyのpデバッグは「p x: x」のようにすると良い Rubyプログラムのデバッグ中はpメソッドで変数の値を表示したりしますが、普通に「p x」とか書くと、画面に 3 とだけ表示されたりして、何が3なのか分からなくなってデバッグが進まない…みたいなことありますよね。 そこで、Ruby 1.9から導入されたハッシュの記法を使って p x: x みたいに書くと、これは p({:x => x}) と同じ意味なので、デバッグ出力が {:x => 3} みたいになって、ああ変数xに3が入ってるんだなと分かりやすくなります(かつタイプ数もそれほど増えない)。*1 変数が複数のときは p x: x, y: y みたいにします。

    Rubyのpデバッグは「p x: x」のようにすると良い
    mas-higa
    mas-higa 2013/02/15
    あんまり p 使うことないけど。
  • Route 477 - ズッ友のソーシャルグラフ

    ■ [ruby] ズッ友のソーシャルグラフ メロスゎ走った…… セリヌンティウスがまってる…… でも……もぅつかれちゃった…でも…… あきらめるのょくなぃって…… メロスゎ……ぉもって……がんばった……でも……ネイル…われて……イタイょ……ゴメン……まにあわなかった……でも……メロスとセリヌンゎ……ズッ友だょ……!! [拡散性ズッ友メロス - Togetterより引用] 最近Twitterでこのようなコピペが流行しているので、Twitterを「ズッ友」で検索して「AとBはズッ友だょ」のA及びBを抜き出し、graphvizでグラフにしてみた。 その結果が…これだ! UTCで5月9日に該当する24時間のツイート、実に81105個。「ズッ友」だけでこれなんだから日人はTwitterやりすぎである。 ソースと拡大画像: https://gist.github.com/2651392 分かったこと

    Route 477 - ズッ友のソーシャルグラフ
  • Route 477(2012-02-03)

    ■ [ruby] rvmからrbenvに乗り換えた RubyのインストールはWindowsならASRやRubyInstaller、Macならport/brew install、Linuxならaptitude install等が定番であるが、 Ruby1.9.2と1.9.3を両方インストールしておきたいなどの特殊な用途向けに、rvmやrbenvというツールがある。 機能の違い rvmはいろいろ機能が多い。gemsetといって、使うRubyGemsのセットを動的に変更できるとか。このためにrvmを使う人もいたが、現在はBundlerがあるから有難みが薄い。 rbenvはシンプル志向。rbenv体にはRubyのビルド機能すらなくて、別途ruby-buildというツールを利用している。 端的な例を挙げると、rvmはプロジェクトごとのRubyバージョンを管理するのに.rvmrcというファイルを使う

    Route 477(2012-02-03)
    mas-higa
    mas-higa 2012/02/07
    "railsコマンドはrails gemに入ってるのではないという罠" これはひどい
  • Rubyの次世代リファレンスマニュアルを構想する会をやりました

    ■ [ruby][event] Rubyの次世代リファレンスマニュアルを構想する会をやりました 参加者のみなさまありがとうございました。 http://partake.in/events/eb5eeeff-8d60-406d-a4e5-ac3c479a4b88 以下は議論のメモです。(まだぜんぜん整理できてなくて混沌としていますが…) とりあえず1/31が「中間報告」なので、それまでに何か動いて見せられるようなものを作りたいと思います。ソースはgithubに置きます。 ゴール 1. 日英以外への翻訳をやりやすくしたい * 何から始めれば良いかわかること * 一時的に翻訳して終わりではなく、最新版に追従していくのを助ける手段があること * 成果物が便利な形で利用できること(web, cli等) 2. 日英版を「統一」したい * 現状は、リファレンスサイトに何か機能を追加する場合に (例えば、

    Rubyの次世代リファレンスマニュアルを構想する会をやりました
  • Route 477(2011-04-21)

    ■ [english] コミットログを英語で書くためのテンプレ githubに上げるコードは、可能なら英語でコミットログを書いたほうが良いです。なんか面白そうなプロジェクト見つけたとして、コミットログがロシア語とかアラビア語だったら困るよねという話です。 英語とか難しいと思うかも知れないですが、だいたい何か追加したか直したか変更したかのどれかなのでわりとパターン化できます。読めない言語で書かれている場合の可読性=0なので、英単語を適当に並べるだけで可読性が無限大パーセント改善されます。やった! 僕がよく使うのはこんな感じです(英語的に正しいかは知りません)。 new: xx new: added (some) xx fix: xx did not work fix: xx was wrong fix: xx should (not) yy changed xx to yy removed

    Route 477(2011-04-21)
  • Route 477 - Ruby Twitter Gem簡易リファレンス

    GitHubindexHello source: index.md View on github | Report issue Generated by middleman 3.1.6. Powered by Ruby 2.2.2.

  • Route 477(2010-06-05)

    ■ [ruby] Rubyの新リファレンスマニュアルをコマンドラインから簡単に引くためのツールを書いた Rubyリファレンスマニュアル刷新計画(通称るりま)のリファレンスを、コマンドラインから簡単に引けるようにするgemを作りました。 多くの人はWeb版か、chm版を使ってると思いますが、同じものがコマンドラインから見れるようになります。 インストール方法とかはgithubに書いてますが、 $ sudo gem install myrurema $ rurema --init $ rurema Array#length Array#length --- length -> Integer --- size -> Integer 配列の長さを返します。配列が空のときは 0 を返します。 p [1, nil, 3, nil].size #=> 4 という感じです。初回のみ、データベースを構築す

    Route 477(2010-06-05)
    mas-higa
    mas-higa 2010/06/05
    ふつうは refe なんじゃ?
  • Route 477(2010-05-24)

    ■ [lisp][scheme] 社内勉強会でLisp概論的な話をした (以下、わりと適当な資料) Lispといえば? 最初の動的言語 最初のGC付き処理系 人工知能研究の言語として活躍 括弧 マクロ 1957年 FORTRAN 1958年 ALGOL58, LISP 1960年 COBOL 1964年 BASIC LISP戦国時代 方言の乱立 LISP二大政党時代 Common Lisp (1984-) 方言の統一 標準規格が存在 (ANSI CL) http://www.lispworks.com/documentation/HyperSpec/Front/Contents.htm SBCL, Clisp, Allegro CL(商用), ... LISP-2 tとnil マルチパラダイム、コンパイラ、リーダマクロ、パッケージ、CLOS Scheme (1975-) ミニマリズム 処理

    Route 477(2010-05-24)
    mas-higa
    mas-higa 2010/05/26
    ついに Lisp の萌え本が出た!?
  • Route 477(2010-02-19)

    ■ [scala] foursquareが半年かけてScala+Liftに移行した話 foursquareがLiftに切り替えたという話を聞いてびっくりしましたが、どうやら当だった模様。 スライド:foursquare.com & scala/lift 以下、内容抜粋 もとはPHP+Apache+MySQLだったが、エンジニアが書いたものじゃなく、これからの拡張のためには書き直すべきだった 静的型・コンパイル言語が好き。Wicketを試したけど、Object型使いすぎなのと関数がfirst-classでないのがちょっと Javaの頃からなるべく関数的に書くようにしてたんで、Scalaは自然 コールバック書くだけでAjaxになるのはいいね! まあせっかくスタートアップなんだし、変わった・面白いものを使ってみたかったってのはある リライトについて (書き換え中は?)PHPとセッションの共有と

    Route 477(2010-02-19)
    mas-higa
    mas-higa 2010/02/23
    「LiftとMySQLは相性が悪い。」それが理由か。
  • Route 477 - Ruby基礎文法最速マスター&Ruby書籍紹介

    Perl基礎文法最速マスターをだいたいそのまま、Rubyに置き換えてみました。 他の言語をある程度知っている人はこれを読めばRubyの基礎をマスターしてRubyを書くことができるようになる…かも知れません。無保証です。 参考: オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (1.9.2) オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (1.8.7) ■ 1. 基礎 インタラクティブRuby (irb) irbを使うと、Rubyのプログラムを簡単に練習することができます。 /Users/yhara $ irb irb(main):001:0> puts "hello" hello => nil irb(main):002:0> 1 + 1 => 2 以下の説明は、irbを起動して、自分で試しながら読むと習得が早いと思います。 表示 (print,

    Route 477 - Ruby基礎文法最速マスター&Ruby書籍紹介