シンタックスハイライト
2012/03/20 § コメントする
はてなから引っ越した。
日付がバグったが、00時を01時に置換してデータ移行はできた。
はてなを使い出した理由は「コードのシンタックスハイライト」だけだった。
だけど、これがデカイ。
ひどい失態をやらかしたはてなから引っ越したはいいけど、シンタックスハイライトどうしよう。
sqlite3
2012/02/17 § コメントする
sqliteの型はかなりいいかげん。
型は
NULL
INTEGER
REAL
TEXT
BLOB
しかない。がcreate tableで他の型を書いても通す。
stringとかvarcharとか。でも内部では適当に扱われる。
たまに文字入れたつもりがREAL扱いされたりするので注意。
他所様のサイトにpostするときは文字コードに注意
いや、すっかり忘れてた。
そりゃそうだね。
- 自動化されたテストのないアジャイルはダメだ
頻繁なリリースなのでみんな焦る。
テストがないから(やっても手作業)既存の振る舞いを変えるのが怖くて場当たり的な対応をする。
構造の変更もできない。(怖くて)
- 詰む
若手の子に言っとくこと
2012/01/30 § コメントする
今度若手の子と飲みに行ったら話すことのメモ。
- 多人数の開発では糞なルールでもないよりはあったほうがいい
- 他人の書いたコードを呼び出す不安はわかるが同じ処理を新しく作るのはやめよう
- ガード節使おう
- バージョン管理使ってるんだから古いコードは削除してOK
- Shallow CopyとDeep Copy、同値と同一の違いを分かっておこう
- 定数はコンパイル時に取り込まれるから注意しよう
- ユニットテストとリファクタリングはセットです
- わかりにくいコメントでメソッドの説明書くよりはテスト書いといた方が挙動がわかりやすい
- フレームワークは作った人の意図を汲んで使ってあげてください
- 入力は厳しくチェックしてダメならささっと例外上げてあげよう。わかりやすいエラーメッセージも添えて
- 業務アプリ作るならDBとはどうせ付き合うことになる。ORマッパーもいいけどSQL書こうよ
- トランザクション分離レベル、共有ロック、更新ロック、排他ロックは理解しとこう
- ついでに楽観的同時実行制御、悲観的同時実行制御を理解しよう
- さらについでにスレッドも覚えよう。レースコンディションとか共有のリソースいじるという意味ではDBとさして変わらない。プロセス内のメモリの話なだけだ。
- sqlの暗黙の型変換に気をつけよう
- フレームワークの変な挙動を逆手にとったハックはやめよう
- java以外もやろう。クロージャと高階関数くらいは覚えとこう
- 変数のスコープとエクステントをしっとこう
- 遅延評価を覚えとこう
rubyでエクセル
2012/01/23 § コメントする
時間もあったしjavaは飽きたからrubyでエクセルからエラーコードの情報を抜いてみた。
書き捨てのスクリプトだからわりと適当。
やっぱ高階関数いるよ。いるって。javaにも入れろよ。
高階関数には無名関数が必要だよ。
# -*- coding: utf-8 -*- require "win32ole" require "kconv" def writeExcel path excel = WIN32OLE.new('EXCEL.Application') excel.visible = false excel.displayAlerts = false wb = excel.workbooks.open path sheet = wb.worksheets.item(1) begin yield sheet ensure wb.save wb.close excel.quit end end writeExcel "C:/Temp/xxx/xxx.xls" do |os| whidx = 1 excel = WIN32OLE.new('EXCEL.Application') excel.visible = false excel.displayAlerts = false dir=Dir.glob "C:/xxx/xxx/**/*xls" dir.map do |e| wb=excel.workbooks.open e begin file_name = File.basename wb.name , ".xls" 1.upto wb.sheets.count do |idx| sheet = wb.sheets.item(idx) next unless sheet.name.toutf8 == "xxxx" 1.upto 100 do |hidx| cell=sheet.cells.item(hidx,1) no=cell.value next unless no next unless no.to_s=~/^[0-9.]+$/ puts no.to_s cell=sheet.cells.item(hidx,3) title=cell.value cell=sheet.cells.item(hidx,18) check=cell.value cell=sheet.cells.item(hidx,48) error_code=cell.value cell=sheet.cells.item(hidx,52) msg_code=cell.value break unless title puts "file:#{file_name},title:#{title},check:#{check},errorcode:#{error_code},msgcode:#{msg_code}" cell=os.cells.item(whidx,1) cell.value=file_name cell=os.cells.item(whidx,2) cell.value=title cell=os.cells.item(whidx,3) cell.value=check cell=os.cells.item(whidx,4) cell.value=error_code cell=os.cells.item(whidx,5) cell.value=msg_code whidx = whidx+1 end end ensure wb.close excel.quit end end end
RVM入れた(ホントは結構前に)
2011/12/26 § コメントする
おもい腰を上げてRVM導入
参考にしたサイト
Mac に rvm をインストールして 複数バージョンの Ruby を使う – hogehoge foobar Blog Style5
nashiwaterの日記
以下コマンド等
rvm list known
インストール可能なrubyのリスト
rvm install x.x.x
rubyのインストール
rvm list
入ってるrubyのリスト
rvm reset
設定リセット。systemに戻す
rvm use x.x.x
特定のバージョンを使うように設定。ログアウトすると設定消える。
rvm --default x.x.x
デフォルト設定。ログアウトしても消えない。
rvm get latest rvm reload rvm version
rvmのアップデート
rvm gemset name
仕様中のgemsetの名前表示
rvm gemset create xxx
gemsetの作成
rvm use x.x.x@xxx
使用するrubyとgemsetを指定
つでにgem
gem install xxx
でインストール
gem list --remote|grep xxx
入れれるの探す。