Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Pythonプログラマーというか、元々Python(ときどきR、C言語)で数値シミュレーションをしていた学生が、就職してRubyでWeb開発を行うにあたって勉強したことを書き連ねていくだけの記事です。 もし自分と同じような立場の人(これから後輩としてもどんどん増えていくかも!)がいたら、「ここを押さえておけばRubyは問題なく書けるよ」と教えられるように書いておきます。というのも、レビューを行っていた先輩とのプログラミングのスキルとの開きがあり、先輩も私も「どこが分かってないのか説明できない」状態になってしまってお互いに困ってしまった経験があるからです。 RubyとPythonはよく似ているのですが、思想や見た目で違う部分が多く、片方を勉強するともう片方の理解も深まります。 たまに2ちゃんねるのオカルト板である「見たことある世界によく似た異世界に迷い込んだ」みたいな感覚で、なかなか面白い経
2016年5月28日に秋葉原で開催されたTokyo Ruby Kaigi11 に参加してきました。この回が僕にとっての初Ruby Kaigiで一般人としてカンファレンスに参加したのもこれが初です。以前はScalaMaturi2016に学生スタッフとして参加したのですが、カンファレンスの内容も全て英語でレベルが高く正直「なにを言っているのか、ぼくぁ...さっぱりわからんよ!!」状態だったのが今回のTokyo Ruby kaigi11は少し予習してきたのと、最近Rubyの勉強を初めてオブジェクト指向スクリプト言語の意味が理解出来たので会議の内容もおおよそ理解できるっ!....訳でもなく、やはりそこで語られる話はレベルもクオリティーも高かったです。発表内容の半分も理解できたなかったのが素直な気持ちです。 只、ただですよ!。 じゃその半分もスライド内容が理解できなかった僕が何をもって今回のToky
が必要です。 Twitter APIの返答がJSONなのでライブラリを入れています。 Twitter APIのconsumer key/secret、access token/secret 例を挙げておきます(もちろんニセモノ)。 consumer_key = '9Gu1FiE1IfKi32bR8Fw' consumer_secret = 'QUnRDVcl5FNCZ9C1j80OAjUJlguMNVyqbdrOrnjtQ' access_token = '2194235326-sm2SUkVRHMJ1CdwYG1f04klQMlxc4i05tkSbnZa' access_token_secret = 'oairK8FMvLZ8dqEVrCgh2brhyL0SCd5wpdkIoNxz62Jdi' require 'json' require 'oauth' consumer_key = <
概要 Gemのコードリーディングで、広く使われている高品質なコードからテクニックや定石を学んでいきます。 はじめに いきなりRailsとかRspecを読みにいくのもツラそうなので、ここでは初心者向けとウワサのsettingslogicを読んでいくことにします。Gemを読む際の難易度の目安としては、 初めてのGemの読み方を参考にさせて頂きました. 私自身は、いくつかのOSSで、放置されているissue(テストやドキュメンテーション)をお片付けしたことはありますが、普段、そんなにOSSにガッツリcommitしている訳でもありません。そんな私にとって、 メソッドの命名規則 メモ化、method chainの実現方法 コメントの書き方 など、Rubyのお作法を学ぶ題材として、またOSSのコードリーディングのきっかけとして、非常に良い題材だったと思います。 version 2.0.9を使用します。
2. 本資料について 本資料は、社内勉強会の補助資料です 外部向けに書かれていない記述などがあります 資料だけですべて伝わるような配慮はされていません 本資料の取り扱いについて 再配布等のご相談は baba@bpsinc.jp までお願いします。 4. なぜGemを読むのか 自分で安全を確認できる Gemは無保証 詳しい挙動を把握できる 一風変わったことを実現できるか調べたい ドキュメントは完璧ではない トラブル解決できる ブラックボックスに振り回されることがなくなる 勉強になる 知的好奇心 OSSは高品質なコードが多い 5. なぜGemを読むのか レベル0 Gemを使えない レベル1 解説サイトをコピペしながら基本的な機能を使える レベル2 READMEやリファレンスを読んでほとんどの機能を使え る
技術部の国分 (@k0kubun) です。 先日byebugの高速化を行っていた最中、変更を加えたbyebugを使っていると一定の確率でrubyがSEGVするバグを発見しました。 私はC言語のコードのデバッグの経験はなかったのですが、デバッガの使い方を調べながらSEGVの原因調査を行いパッチを送ったところ無事取り込まれ、最新の高速なbyebugが安全に使えるようになりました。 その際、ruby自体をデバッグするために必要な情報が分散していて大変だったので、まだrubyのデバッグをしたことがないけれどやってみたいという人を対象に、gdbというデバッガを使ったrubyのデバッグの方法を紹介します。 デバッグ用にrubyをビルドする デバッグ時に変数名やソースコードなどの情報を見るためには、最適化オプションをオフにしてデバッグ用にrubyをビルドしておく必要があります。 rubyのデバッグ用ビル
逆に言うと、Rubyの文字列型の内部実装がropeになれば、freezeしてもしなくても変わらない速度が出るようになって、結局freezeする必要なんてなかったんやーで丸く収まるんじゃないの?と思いました #雑な感想 — Kazuho Oku (@kazuho) October 6, 2015とツイートしたところ、処理系の中の人から @kazuho 文字列を弄る話じゃなくて、文字列の identity の話なので、ちょっと関係ないかなぁ、と — _ko1 (@_ko1) October 6, 2015みたいなツッコミをもらって、うっすみません…ってなってRuby VMのコードを読むことになったわけです。 で、まあ、いくつか気になる点があったので手をつけてしまいました。 1. オブジェクト生成のホットパスの最適化 ホットスポットだとされていたところのコードを読んでると、オブジェクト生成の際に
正規表現(regular expression)は文字列のパターンを記述するための言語です。 また、この言語で記述されたパターンも正規表現と呼びます。 正規表現を用いると、文字列が指定したパターンを含んでいるかどうかを判定し、 また含んでいるならばそれが文字列中のどの場所であるかを知ることができます。 /pat/ %r{pat} などの正規表現リテラルや Regexp.new などで正規表現 オブジェクトを得ることができます。 メタ文字列とリテラル、メタ文字とエスケープ 正規表現の文法には、正規表現内で特別な働きをする文字列と、それ以外の その文字列そのものにマッチするような文字列があります。 前者をメタ文字列(meta string)、後者をリテラル(文字列)(literal string)と呼びます。 /京都|大阪|神戸/ という正規表現においては、「京都」「大阪」「神戸」がリテラルで
Rubyで日本の休日を表示してくれるものを探していたら「holiday_jp」を見つけました。 http://docs.komagata.org/tags/holiday_jp/ 使い方はこんな感じです(githubのUSAGE参照) holidays = HolidayJp.between(Date.new(2010, 9, 14), Date.new(2010, 9, 21)) holidays.first.name # 敬老の日 holidaysには「HolidayJp.between」で指定した日付の範囲にある祝日のリストが返ってきます。 すごく便利です。 holiday_jpの中身をみる 内部の動作としては「holidays.rb」に下記のように祝日の名前と日付のデータが用意されています。(なんと2050年まで!) ["2013-07-15","海の日"], ["2013-09-
継承を使えば既にあるクラスの機能を引き継いで新しいクラスを作る事ができます。 継承の仕方は簡単です。 class クラス名 < 継承したいクラス名 end 「<」を作成するクラス名の後に書き、つづけて継承するクラス名を書くだけです。 今回はHTMLのカレンダーを出力するメソッドを持ったクラスを作ってみます。 まず前回作ったカレンダークラスを「library.rb」という名前で保存します。 2行目の「require “library”」で保存したファイルを読み込みます。 #クラス定義 require "library" class HtmlCalendar < Calendar def disp_html calendar = "<table border>\n" calendar << "<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</
コンピュータスキルがコンピュータそのもののように、急速に進化する様は奇妙な感じがしないか?現在、ハードコアなコンピュータ・プログラミングをしている我々のような人間の中には、初期の頃の心を奪われるようなWebでHTMLやCGIからスタートした人もいるだろう。私もそうした人間の1人だ。「Webデザイン」という擬似コーディングの素晴らしい世界にちょっと手を出してみたことがある読者なら、デザイナーが最近、2種類のグループに分類される、と、絶対に気づいているだろう。最初のグループは、DreamweaverのようなWYSIWYGのエディタを使い、Webページのデザインと発行を行っている。2番目のグループはEmacsやVimといったテキストエディタを使ってHTMLを手ずからコードし、FTPクライアントを用いて完成したページをWebサーバーにアップロードして世界に公開し、できれば世界に高く評価されたい、と
まつもとさん自身によるStreemについての解説は、今後日経Linuxで順次掲載されるようです。まつもとさんがStreemについて解説する内容は、おそらく、プログラミング言語設計に関する高レベルなものとなるのではないでしょうか。 本記事はそれとは無関係に、2015年1月に公開されているStreemについての低レベルな解説、つまり現時点のStreemのソースファイル(の一部)の読み解き方を示します。具体的には、GitHubのStreemリポジトリにある「lex.l」と「parse.y」という2つのソースファイルについて解説します。 Streemのソースファイルは、https://github.com/matz/streemからダウンロードできます。画面右下にある[Download ZIP]ボタンをクリックしてください。 lex.lとparse.y ダウンロードしたStreemソースファイルの
Perlで日付・時間を操作 - DateTime モジュールの使い方 http://iandeth.dyndns.org/mt/ian/archives/000619.html のようなことをRubyでやる方法を調べてみました。 基本 現在日時のインスタンスを作る Time.new #=> Mon Jun 05 20:03:59 JST 2006 Time.now #=> Mon Jun 05 19:47:04 JST 2006Rubyの場合はデフォルトでローカルのタイムゾーンのインスタンスを作ります。newとnowの違いはinitializeを呼ぶか呼ばないかだそうです。 initializeを再定義とかしない限りあまり関係なさそう? 任意の日時のインスタンスを作る Time.mktime 2006, 6, 2, 16, 30, 50 #=> Fri Jun 02 16:30:50 JS
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く