2015-07-01から1ヶ月間の記事一覧
XPathでは、特定の条件に合致した親を持つ要素を抽出する事ができます。 たとえば、aタグを持つspanみたいな感じです。 実際のところ List of time zones by country - Wikipedia, the free encyclopediaから、 国名とタイトルの関係だけ取りたいとします。…
Xpathで同名要素のN番目を抽出する場合…… たとえば、3番目のtdを引っ張る場合 doc.xpath("//table//tr//td[3]") といった感じで、配列風に数値をわたします。 0開始じゃないので注意です。
Postgresには、検証用に世界の国名が記載されたSQLファイルが用意されています。 同様のものは、実はMySQLにもあったりします。 また、有志がJSONやXML、YAMLにコンバートできるものを配布しってたりもします。 導入法 pgFoundry: Sample Databases: Project…
仕事柄、海外との取引が多いので先方の時間が知りたくなるケースが多々有ります。 今回は、Ruby製の優秀なパーサーNokogiriと世界の時間を調べるWEBサイトTimeAndDateを併用してアレコレしてみようと思います。とりあえず実験として $ curl http://www.timea…
Array#flattenやHash#flattenでは平坦化の深さを指定する事ができます。 数値が大きくなるほど、より深いレベルまで平坦化されます。 無指定ならば最大階層までやってくれます。 a = [1,2,[3,[4,5,[6,7,[8,9]]]]] a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9]…
伝わるデザインの基本 よい資料を作るためのレイアウトのルール作者: 高橋佑磨,片山なつ出版社/メーカー: 技術評論社発売日: 2014/07/03メディア: 大型本この商品を含むブログ (8件) を見る我々エンジニャーにとって、デザインという奴は中々馴染みがない分…
地元調布でゆるふわRuby勉強会Chofu.rbを開催しました。ゆるふわRuby勉強会Chofu.rb(おためし版) (2015/07/25 17:00〜)connpass.com当日は私も含め7名の参加。 会場にしていた建物のプロジェクターが壊れてた等々、gdgd進行でしたが ヘルプに入っていただ…
社内ブログにlivescript基礎文法最速最速マスターという記事を書きました。LiveScript基礎文法最速マスター - MTMシステムズ Tech Blogblog.mtmsystems.jp基礎文法最速マスターのネタが流行ってから5年も経ったんですねぇ(遠い目
Dateクラスにも、downtoメソッドがあるので カレンダーを出すだのといった用途で活用可能です。 Date.today.downto(Date.today.prev_month) {|i| puts "#{i.month}/#{i.day}"} #7/23 # ... #6/23 参考もと class Date (Ruby 2.2.0)
標準ライブラリDateにて提供されるDate#メソッドです。 Date.today << 2 #<Date: 2015-05-22 ((2457165j,0s,0n),+0s,2299161j)> ぱっと見、対象が月なのか日なのかわかりませんね。同じ挙動をするメソッドにDate#prev_monthがあります。 どうしても必要なときは、こっちを使うと良いでしょう。 Date.today.prev_</date:>…
月の末尾を調べたい場合……ActiveSupportを使うのも手ですが、 実は標準添付のDateライブラリで普通に用を為します。 ためしに、2月の末日を調べてみると…… Date.new(2015,2,-1) #=> #<Date: 2015-02-28 ((2457082j,0s,0n),+0s,2299161j)> Date.new(2014,2,-1) #=> #<Date: 2014-02-28 ((2456717j,0s,0n),+0s,2299161j)> Date.new(2013,2,-1) #=> #</date:></date:>
ちょっと面白かったのでメモ。Ruby文化圏で正負を返すメソッドでは「?」で終わります。 一方、Lisp文化圏ではpで終わるようですつまり、「ゼロか否か」を判定する処理は Rubyでは 0.zero? #=> true Common LispやEmacs Lispでは (zerop 0) t となるわけです…
OpenStructは標準添付ライブラリです。 基本はStructですがパラメータの追加や削除が可能です。 また、Structと同様にメソッドを追加する事もできます。 require 'ostruct' ab = OpenStruct.new ab.foo = 25 p ab.foo # => 25 ab.bar = 2 p ab.bar # => 2 p …
第30回Creators MeetUp (2015/07/18 15:00〜)cmu.connpass.com 第30回Creators MeetUpに参加してきました。 今回の場所は月島は株式会社メンバーズ様のオフィスです。 会場の雰囲気はこんな感じ。 ……普段、大学のサークル部屋みたいなトコで仕事をしてる身に…
標準ライブラリ"English"を使うと、 Perl由来の魔術めいた組み込み変数の可読性をあげる事ができます。 例えば、次の二つは同じ意味です。 $LAST_MATCH_INFO $~ ライブラリを読む必要はありますが、 速度に決定的違いを出す訳でもないので積極的に使ってきま…
Structクラスの値をEnumratorでぶん回したい時はStruct#each_pairを使うとよいです。 挙動はHashと同じなので気にせず使えます。 Point = Struct.new(:x,:y) a = Point.new(20,22) a.each_pair {|k, v| puts "#{k.inspect} => #{v}"} #>> :x => 20 #>> :y =>…
一応、標準出力にもzipやgz系の圧縮ファイルを表示する事はできるのですが…… $ cat sample.txt )r?Usample.txt ??,V??J???t.????T????T??[Qb^?BUZfq??*?????Te???%?9?$??qq2?a?t……まぁ、あたり前のように解読不能です。 これを解答するためunzipに渡しても………
文章の整形なんかで何かと便利なsed。 よくありがちなパターンは、予め登録されてたりするので便利に使わせてもらいましょう。 $ cat sample.txt This is my dog, whose name is Frank. This is my fish, whose name is George. This is my goat, whose name…
皆様よくご存知の通り、OS Xのdateコマンドは独特です $ date 2015年 7月14日 火曜日 23時49分50秒 JST一部オプションも使えないときました。 $ date -d "yesterday" usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt…
三項演算子など使わずともOR演算子使えば済むケースがあります。あらかじめ変数の実体を持たせておく必要がありますが、 以下のような感じで使えます。 mark = nil (mark || "") #>> "" これを使うと、 フラグが立っていた場合は所定の文字を、そうでない場…
たとえば、次のようなコードがあったとします。 result = data.inject([]) {|a,c| ((c.x) > 10) ? a << c.y : a } ブロックの中がグチャグチャしてますね。 こういう時は、素直に result2 = data.select {|e| e.x > 10}.map(&:y) その上、この形式ならlazyを…
Structクラスを継承してはいけない(戒め - Bye Bye Mooreshuzo-kino.hateblo.jp でシレッと書きましたが、Structにはメソッドを与える事ができます。これを使うと、 「そのクラス内でしか使わないけど、色々値の扱いが入り組んで面倒なデータ構造」を調子よ…
Arrayに引数を取ると配列として返してくれる...けどto_aと挙動が違わない - Bye Bye Mooreshuzo-kino.hateblo.jp の続きです。まず、ArrayはKernelのメソッドでした。 Array.newのエイリアスとか、そういった類のものではありません。 公式では 引数を配列(A…
Fixnum#~は数値の否定を返すメソッドです。実際に使うと、こんな感じ ~3 #=> -4 ~-4 #=> 3 これは、 0b111 #=> 7 3 - 0b111 #=> -4 てな感じで読み替える事もできます。 参考もと instance method Fixnum#~ rubinius/time.rb at master · rubinius/rubinius ·…
何かと便利なFeliCaのオートチャージ機能。都心なら移動も含めて財布レスで1日過ごす事も可能です。紀伊国屋とかだと本も買えますし、昼飯も駅ビルでピッとするだけで楽チン。が、そんな調子でなんでもFeliCaで払いまくると上限5万円の枠に引っかかってオー…
総務・人事ワールド2015に行ってきました 全体の印象 オフィス支援という事もあってか、 普段行っている技術系展示会とは相当印象が異なりました。 というかですね、興味ないって言ってるのに数ブロック先まで付いてきて、 挙句舌打ちするアレ気なブース…
まさか、このネタの続きを書く事になるとは思いませんでした…… Ruby標準添付ライブラリのSetは、集合を扱う際に便利な奴です。これ、実は重複データを取り扱う際に結構有用だったりするそうです。 実際のところ 配列で重複があるデータを取り扱う場合、私で…
以前、こんな記事を書きました。<調査中>Integerにinstance_evalによるメソッド追加は不可能?? - Bye Bye Mooreshuzo-kino.hateblo.jpすると、 けんぼー (id:kemboorg)さんから、 instance_evalはオブジェクトの破壊的変更に当たるからではないでしょうか…
Rubinusのコードを見てたら発見したのでメモ。 通常、メソッドは比較に使うメソッドです。 これを異なるクラス間でつかった場合……nilを返します。 1 <=> "a" # >> nil 1 <=> (1..9) # >> nil この特性を生かして class Range include Enumerable #略 def cov…
Ruby標準モジュール"Forwardable"をつかうと、 移譲というテクニックが使えるようになります。 これを生かすと元あるコアクラスをオレオレ式に拡張して扱う事ができるわけです。 実際のところ Stringを土台とする String#upcase、String#nextは流用 String#d…