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

ネット速読の達人ワザを斜め読みした

amazon 楽天ブックス 約2年前の本だからもはや内容が古いといっても過言ではないけど…… 感想 ここで、今一度述べておきたいことがあります。ネットは大量の情報であふれかえっていますが、この中から出会うものは出会うし、出会わないものは出会わないという…

PL/SQLで動的SQLにバインド変数を使う

SQLインジェクション対策として。 str := '''%CLERK'''; execute immediate 'select job_id from jobs where job_id like ' || str bulk collect into job_ids; dbms_output.put_line(job_ids.count); # => 3 str := '''%CLERK'' or 1 = 1'; execute immedia…

サクラエディタとeclipseでよく使っているキーボードショートカットと、それら(+α)のSublimeTextでのキーバインドをメモ

ブログすごい久しぶりーふ。。これでSublimeTextでRailsを使う下ごしらえはできたかな。。 キーボードショートカットが大好きです。 サクラエディタとeclipseでそれぞれ個人的によく使っているショートカットキーをリストアップして、SublimeText2ではどうや…

Excel2007でカラーパレットを変えたいんです

Excel 2007 で Excel 2003 のカラーを使用する方法: あるSEのつぶやき こちらさんに全て書いてある。。これで標準の辛気くさいカラーパレットとおさらば! と思ったけどそうもいかない。これはあくまで「テーマの色」を作成・変更するにすぎないみたい。カ…

Associationは書けないんだけどINNER JOINしたテーブルのカラムを参照したいんです

たぶんPrimaryKeyじゃないカラムで紐付けあっているテーブルだとbelongs_toとかでAssociationを定義できない?気がしています。試していないんですけど。 そんなときに結合したテーブルのカラムを触りたい場合のやり方を2通り。 ターゲットになるテーブルのA…

Windowsでrubyのpすると日本語が化けるんです

あとto_sqlをpするとダブルクオートがいちいちエスケープされてすごくうざいんです。。 結論 pやめてputsする。 rubyの引数に-E Windows-31J:UTF-8を追加する pはそのオブジェクトがなんなのかちゃんと分かるように出力するとか、そういう役割があるみたいで…

ActiveModel::Dirtyのattribute_changed?とかが便利なんです

saveしているはずなのにsaveできないんです! - なんでや。。 上記でも少し触れたActiveModel::Dirtyのchange的なメソッドたちが便利。 ActiverRecord::BaseがActiveRecord::AttributeMethods::Dirtyを、それがActiveModel::Dirtyをincludeしている関係。 Ac…

Arelの集計関数とActiveRecord::FinderMethods#firstの相性が微妙な気がする

何かfirstに対する根本的な誤解をしている気がしなくもなく。。 activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) emp = Employee.arel_table q = Employee.select([emp[:manager_id].count.as('cnt')]).order(emp[:manager_id].asc) o =…

QNAP TurboNAS TS-220のHDDスタンバイが頻繁に解除されるんです

結論:おれにはわからない。むり。あきらめる。HDDスタンバイ設定は解除した。 スタンバイ中のTS-220のHDDが、全くPC触っていないにもかかわらずなぜかスタンバイ解除されるんです。この数日ずっと格闘したけどわからんらんらんらん。 HDDがちゅぃぃぃいいん…

ActiveRecordモデルのカスタムバリデーションメソッドを共有したいんです

委譲でなく。エラーはerrorsに書き込みたいから……と考えるとバリデーションの委譲はたぶん面倒臭い。 だからMixinしてやる。こういうやり口ってRailsのベストプラクティスでまとめられていたりしそう。 ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activere…

ActiveRecordで集計関数の結果を複数selectしたいんです

select sum(min_salary), sum(max_salary) from jobs; これをActiveRecordで書きたい。 ベタに書くと rec = Job.select(<<-SELECT).all[0] SUM(MIN_SALARY) AS MIN_SALARY ,SUM(MAX_SALARY) AS MAX_SALARY SELECT # => SELECT SUM(MIN_SALARY) AS MIN_SALARY…

PL/SQLブロックでhello worldとカーソル操作の初歩

set serveroutput on; declare d date; rec jobs%rowtype; cursor c1 (param varchar2) is select * from jobs where job_id like '%' || param ; begin dbms_output.put_line('hello world'); -- 暗黙カーソルはSELECTとかDMLを実行するたびにオープンし、…

伝票のヘッダと明細を一度にロックしたいけどヘッダ単位でforループしたいんです

いま直面している問題においては、別に一度にロックできる必要なんてなくねって感じではあるんだけど。 ヘッダと明細を普通に内部結合して、ヘッダのカラムだけselectしてdistinctすればよくね?と思ったけど、distinctとfor updateは共存できないんです。 s…

for update句でオープンしたカーソルのforループ内でcommitしたらどうなるのっと

for update付きカーソルのforループ内でcommitしてみた。 for rec in ( select h.employee_id as employee_id, h.job_id as job_id, h.start_date as start_date from jobs j, job_history h where j.job_id = h.job_id and j.job_id = 'ST_CLERK' for updat…

OracleDBのselect for updateってどのへんのレコードまでロックしよる?

結合したテーブルの該当行までロックしよる? select j.*, h.* from jobs j, job_history h where j.job_id = h.job_id and j.job_id = 'ST_CLERK' for update; JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY EMPLOYEE_ID START_DA END_DATE JOB_ID DEPARTMENT_ID…

自インスタンスのインスタンスメソッドを呼び出す時の、selfの使い方がよくわからないんです

class Sample attr_accessor :abc def xyz;@xyz;end def xyz=(v);@xyz=v;end def asdf=(v); p "in asdf with #{v}";end def set abc = 'def' xyz = 'uvw' asdf = 'axvaf' end def print p abc p xyz end def set2 self.abc = 'def2' self.xyz = 'uvw2' self.…

トランザクションのメモ

TX本勉強会終了 - 急がば回れ、選ぶなら近道 DBトランザクションメモ(Hishidama's database transaction Memo) ACID (コンピュータ科学) - Wikipedia) そういえばなミック氏のDB本がKoboにあった。Google Play Booksにもあったけど。 達人に学ぶDB設計 徹底…

ActiveRecordでINNER JOINしつつEagerLoadingしたいんです

対象の表に対してふつうに.joins()して.includes()すればいいようです。 ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) railsでinnner joinするクエリを元に一覧表示画面を表示する場合、…

同一項目に同一バリデータによるバリデーションを複数種書きたいんです

max_salaryによってjob_titleのバリデーションを変えたいなあと思った場合、validatesの記述自体を分けて↓こう書けばよい。 class Job < ActiveRecord::Base self.primary_key = :job_id validates :job_title, length: {maximum: 5, if: ->{max_salary <= 1…

attr_accessorにデフォルト値を持たせたいんです

ぐぐると真っ先にattr_accessor_with_defaultが出てくるから使ってみたらundefinedって言われた。。 今はこう書くのが正しい。 class Employee < ActiveRecord::Base attr_accessor :a after_initialize do self.last_name = 'tanaka' self.a = 'ito' end en…

ActiveRecordでサブクエリのIN句を書きたいんです

ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) IN句自体はバインド変数を配列にすれば勝手にいいようにしてくれるようです。 サブクエリはArelを徹底活用するのがいいようです。“ふつうに…

saveしているはずなのにsaveできないんです!

ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) Oracle 11g XEのHRスキーマで SQL> select employee_id, first_name from employees where employee_id = 100; EMPLOYEE_ID FIRST_NAME ---…

ActiveRecordのloggerがカラーコードを付加してきて見づらいんです!

ruby 1.9.2p290 (2011-07-09) [i386-mingw32] activerecord (3.1.0) activerecord-oracle_enhanced-adapter (1.4.2) loggerをしこんでActiveRecordのログを見てみる。 require 'logger' ActiveRecord::Base.logger = Logger.new(STDOUT) するってーと D, [20…

トリガーやストアドプロシージャのソースが見たい。SQL*Plusで。

SQL> conn hr/hr@xe 接続されました。 SQL> select name from user_source group by name; NAME ------------------------------------------------------------ SECURE_EMPLOYEES UPDATE_JOB_HISTORY SECURE_DML ADD_JOB_HISTORY これでソースがしまってあ…

Oracle 11g XEのHRスキーマのテーブルをActiveRecordで書いてみる

Oracle 11g XEのHRスキーマのテーブルをActiveRecordで書いてみる ER図はこちら: 表と表クラスタ class Region < ActiveRecord::Base primary_key = :region_id has_many :countries end class Country < ActiveRecord::Base primary_key = :country_id bel…

sqlplusの画面表示設定の仕方って毎度忘れるからメモ

set linesize 1000 set tab off これでvarchar2型の列の余白が許せなかったらcolumn name format aXXみたいな。

普通のRubyスクリプトからOracle 11g XEにActiveRecordで繋ぎに行く

必要なgemをインストール PS:Desktop> gem install activerecord-oracle_enhanced-adapter Fetching: activerecord-oracle_enhanced-adapter-1.4.2.gem (100%) Successfully installed activerecord-oracle_enhanced-adapter-1.4.2 1 gem installed Installi…

oracle 11g xeにいつものように用意してあるHRスキーマを初期化

PS:yoshi-13> sqlplus hr/hr@xe SQL*Plus: Release 11.2.0.2.0 Production on 土 6月 15 02:14:48 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-28000: the account is locked そうなんですね。。 SQL> alter user hr account u…

powershellのプロファイルを変更してプロンプトを変える

プロファイルを作成してprompt関数を上書きする 参考 PowerShellでプロファイルを編集するには - nn2003rの日記 PowerShellのプロンプト文字列をカスタマイズする - @IT やってみる New-Item -type file -force $profile sakura $profile でプロファイルに…

validatesでうまくlambdaを扱えなかったメモ

Ruby version 1.9.3 (i386-mingw32) Rails version 3.2.12 Database adapter oracle_enhanced モデルで validates :user, presence: {if: lambda{via == "abc.com"}}, customer_master: {address_presence: lambda{via == "abc.com"}} と書いて、このcustome…