プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

2014-01-01から1年間の記事一覧

rbenvの基本的な使い方まとめ

環境が汚くなっていたのでgemsetつくり直して刷新。忘れているのでBlogにメモメモ。 rbenv gemset <tab> active create delete file list version 嬉しいtab補完つき。ここまで思い出せば大体わかる! 大体わかるけど主にこの辺がわかってればOK。createはrbenv c</tab>…

コードの外的振る舞いから内部実装を行うをやってみた

独学者としてはRubyの上達法というエントリはとても参考になります。今回は以下の記事で紹介されていた、コードの外的振る舞いから実装に落とし込む作業をしてみた。 Rubyをより良く書けるようになるための課題演習のつくりかた 作業時間は延べ2時間くらい?…

irbでrequireがめんどうなときに

irbでrequireが必要な際はloadコマンドが使える。 load './machine.rb' 変更があったら再度loadすること。

IPアドレスレンジなんかを直感的に扱う

IPアドレスのレンジを例えば[0-254]とか表記する場合、さくっと表記したいけど、数字のレンジで扱わないといけないのでイチイチ手間がかかる。 そういうわけなので数字レンジを[hoge-hogehoge]で扱えるようなものを書いた。 require 'test/unit' module Comp…

正規表現内で引数展開できるし便利だねって話

あれ?できたのか。ということでメモがてら記録。 exp = "#{ip[0]}\.#{ip[1]}\.#{ip[2]}\.#{ip[3]}" result = [] logs.each do |content| result << content if /#{exp}"/ =~ content end 変数expに中身を書けば#{exp}で展開して使える。

アイドルのファンとタレントファンの違い

ファンって何? 独断と偏見なんですけど、「お金を落としているか」が一つの基準なんじゃないかと思っています。 自分なんかも水樹奈々のCD・BDは発売日に購入しますし、関連作品もチェックする。このときの多少の出費は意識しません。世の中のアイドルオタ…

顧客の数により営業職のスキルが異なる話

今週の週刊ダイヤモンドより 客が10の何乗かで、営業に求められるスキルがかわる 規模とスキルは以下のような感じ 1000〜1万社=産業機械を売るレベル(営業のスキル:問題解決型の提案) 10万社規模=汎用的な事務機器(営業のスキル:相手の琴線に触れるコ…

Blogを書くのをサボっていたら検索流入が相対的に上昇した

当然といえば当然か サボっている間は、検索流入が相対的に増えているように見えました。疑問なのは、更新を頻繁にしていた頃と毎日のヒット数にあまり差がない点です。 割合として増えるのは感覚的に理解できるのですが、ヒット数は絶望的なまでに減ると思…

「やってはいけない筋トレ」から得られた重要ポイント6つまとめ

なぜに筋トレ本 年末からの正月太り是正を大きな目標に、最近ジム通いを始めました。 通っているジムは、筋トレマシンと一定のフリーウェイト用スペース、十機程度のトレッドミルという、最小限の設備を提供する施設です。価格は割安ですが、トレーナーがい…

オブジェクトにメソッドを取り込む

特定のオブジェクトにだけ振る舞いを与える モジュールに定義されたメソッドはextendメソッドを用いて、オブジェクトの特異メソッドとして取り込むことができる。 module Greetable def greet_to(name) puts name end end o = Object.new o.extend Greetable…

クラス定義のネスト

クラスをネストすることの意味 クラス定義のネストはいつ使うべきなのか。 リファレンスマニュアルを読むと以下のように書かれていました。 クラスのネストは、意味的に関連するクラスを外側のクラス/モジュールでひ とまとまりにしたり、包含関係を表すた…

Rubyにおける例外処理まとめ

苦手なのでRubyの例外処理まとめます raiseでエラーを表示させます raise 'error' #=>RuntimeError: error beginで例外を捕捉します。beginは例外が発生しそうな箇所に使用します begin 1/0 rescue = e puts e.message #=>divided by 0 puts e.class #=>Zero…

RSSリーダーの超基本機能まで実装完了

とりあえず RSSリーダー作成した。 テストもFATなコントローラも目をつぶった習作です。暇な時間使って1週間くらい?大体こんな感じ。 実装済み URLの登録機能 登録サイトの一覧 登録サイトの削除 登録サイトの最新記事一覧ページ 未実装 自動更新 未読既読…

RSS::NotWellFormedErrorの解消

RSSのパース時に発生しました 結論からいうと、RSS::NotWellFormedErrorはURLをパースする際に適切なURIでないと発生するエラーです。 例えば、以下のように単なるURLをパースしようとするとエラーが出ます。 url = "http://somethingpg.hatenablog.com/" rs…

sinatraでRSSリーダー書いてます

小さな成果を意識して 昨日はこんな口幅ったいことを言っていたので、いままでローカルでやってたことをGithubでちゃんとIssue使ってコード書き出しました。 ブログを続けるにあたり考えたこと:小さくても成果を意識すべきではないか github/rssreader 習作…

ブログを続けるにあたり考えたこと:小さくても成果を意識すべきではないか

数日ぶりです。こんばんは。 数日ぶりの更新となります。 更新に間が空いたのは単に休暇だったからですが、その間少し思うところもあったのでブログに残しておきます。 小さくても成果を意識すべきでは ブログを続けて2ヶ月になりますが、勉強中のプログラミ…

Macのタッチパッドと一部キーが正常に動作しなかったのでPRAMリセットをした話

Macのタッチパッドと一部キーが異常な動作 タッチパッドはマルチタッチの操作をほぼ受け付けず(2本指スクロールが超低速)、command + tabでアプリケーションの切り替えをすると、tabを押していないのにカーソルがガァーーーっと右端まで選択されてしまう。…

Rubyでの変数のスコープ確認

Rubyでの変数とスコープをざっとまとめました。 # トップレベルの変数をメソッド foo = 'foo in toplevel' def display_foo puts foo #=> NameError トップレベルのローカル変数は参照できない end puts foo #=> foo in toplevelと表示される # display_foo …

Rubyにおけるメソッドの定義時の注意と動作

最初が大文字のメソッドを作る場合は注意が必要 def Hello puts “hogs” end Hello #=> エラーが帰ってきます レシーバを記述するか、引数なしの場合は括弧をつけないとメソッドが呼び出せません。 Hello() #=>hoge あまり最初の文字を大文字で指定するメリッ…

Rubyはファイルが自動でクローズされるって言われてる理由を振り返ってブロックを有難がろう

自動でクローズされるってよく言われるけど、結局はFileオブジェクトの使い方に依る。 ブロックで開けば自動でクローズされる。 File.open ‘README.md’ do |file| puts file.read end ブロックで開いてない場合、ファイルは自分で閉じる必要があります。 fil…

JALマイレージバンクのパスワード問題だけじゃない!JALのシステムでのイマイチな実体験

たまには時事ネタに乗ってみます 「JALマイレージバンク」に不正ログイン、マイル盗む 数字のみパスワードの強化策は「検討していない」 パスワードは数字六桁強制で、現在は「対策する」と明言していますが、一時は、他の文字列使用を使用しての安全性向上…

sinatraの登竜門といえばRSSリーダー作成なのでRSSについてまとめてみたよ

猫も杓子もRSSリーダー RSSリーダーって「まずはこれ!」みたいな感じなので実際に作ってみます。 まずはRSSの要素を読み込んでみましょう。 RSSライブラリで読み込むよ require 'rss' rss = RSS::Parser.parse('http://somethingpg.hatenablog.com/rss') 超…

sinatraでアプリ書くために基本処理まとめ

sinatraでコード書くために基本的な処理書いた Railsチュートリアルをボツボツ読んでましたが、Ruby自体への理解のなさに嫌気がさし舵を切り直して言語限定の学習に移行、パーフェクトRubyなんかを読み進めてますが肝心のアプリが手付かずなのでいろいろ考え…

__END__と定数DATAに関して

END以下の行は定数DATAへ DATA.each_line do |line| puts line end __END__ いろはにほへと ちりぬるを #=>いろはにほへと #=>ちりぬるを END以下のデータはDATAという定数にFileオブジェクトとして保存されます。 ENDを宣言しない限り、定数DATAは生成され…

Rubyのselfがめっちゃよくわかるサンプルコード

selfのことがめっちゃよくわかるサンプルコード class Ruler attr_accessor :length def set_default_length # length = 30 だとメソッドは呼び出されずローカル変数lengthへの代入扱い self.length = 30 end end ruler = Ruler.new ruler.set_default_lengt…

特異メソッドとその用途Singletonパターン

特異メソッドはこんな感じ message = “Hello” def message.build_greeting(target) “#{self} , #{target}” end message.build_greeting(“world”) #=> Hello,world たとえばmessage2 = “Hello"なんかにしても、 message2.build_greeting(“world”)は呼び出せま…

attr_accessorの使い方

def Duraion def initialize(since,till) @since = since @until = till end attr_accessor :since, :until end attr_accessorはgetter,setterの定義です。 duration = Duration.new(“hoge”,”hogehoge”) とすると、duration.sinceで”hoge”が呼べる。 duratio…

クロージャーとしてのブロックの扱い

ブロックがクロージャーとしての役割を持ちます def create_counter count = 1 return Proc.new do count += 1 p count end end counter = create_counter counter.call #=> 2 counter.call #=> 3 こんな感じになる。 create_counterメソッド自体は終了して…

Rubyにおいて多値を返す場合のお作法

(タイトルのようなことを)気付かず使ってたのでメモ 通常、返り値は最後の値が返されます。 def sum x,y x + y end 上記のようなメソッドであれば、x + yの結果が戻ります。 では、x,yの2値を返すだけのメソッドが欲しい場合があったとした場合、どう書け…

ローカル変数が優先される処理と、selfによる明示的なメソッド呼び出し

レシーバ省略とローカル変数 ちゃんと理解したことを記録するためにもメモ。 こんなコードがあるとします。 class Laputa def hover vibrate end def vibrate p "vibrate" end end l = Laputa.new l.hover #=> "vibrate" l.hoverは当たり前のように"vibrate"…