Snippets

protocalendar用のウィジェット

日付を簡単に入力したかったのでprotocalendar.js用のウィジェットを作ってみた。こんだけ。今のところprotocalendarのオプションは何も設定できない。 # widgets.py from django import newforms as forms class CalendarWidget(forms.TextInput): def rend…

injectをwhileの代わりに使う

Railsのacts_as_treeで、あるノードの親を全て取得するのに def parents ret = [] current = self while current.parent ret << current.parent cur = current.parent end ret end とかやってたんですけど、どうもどんくさくて嫌なので無理やり回避。 class …

サブディレクトリ内のコントローラに同一ディレクトリ内のapplication.rhtmlを適用

admin/top_controller.rbにはviews/layouts/admin/application.rhtmlを自動的に適用して欲しかったので、とりあえず次のようにしてみた。app/controller/application.rb class ApplicationController < ActionController::Base class <

配列からランダムに指定数分アイテムを抜き出す

def pick_some(num, ary) (1..num).inject([]){|s, e| s << ary.delete_at(rand(ary.size))}.compact end 順序は崩れます。 inject使いたいのでtimes doじゃなくてむりやりRangeにした。

画像をクリッピング

たとえば100x100の画像に10x10のマージンを用意するにはこんな感じ。 draw.define_clip_path 'clip' do draw.path "M 10 10 L 10 90 L 90 90 L 10 90 z" end draw.push draw.clip_path 'clip' # draw使っていろいろ描画 draw.pop パス指定のフォーマットはSV…

配列をランダムに並び替え

ふと思いついてやってみたけど、どうなんだろこれ。 function randomSort(ary) { var condition = function(){ return [-1, 0, 1][Math.floor(Math.random() * 3)]}; return ary.sort(condition).reverse().sort(condition); } ちょっと見たところいい感じに…

ランダムな色

var color = "#" + Math.floor(Math.random() * 0xffffff).toString(16);

最新日付抽出

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj06.htm --例えば、同じ品番の内で、最新の受注日のレコードだけを得るには、 --次のように all を使用する。(最新日付抽出) select * from sak.受注m a where a.受注日 >= all (select 受注日 from s…

ダイアログを動的に作成する

DojoのサンプルでHTML側にテンプレートを用意してダイアログを開く方法は説明されてるんだけど、テンプレートも含めてJavaScriptから動的にダイアログを作成する方法がよく分からなかったので調べてみた。ダイアログ作成時のオプションに toggle:"fade" が入…

コマンドテンプレート

optparseが面倒くさいので今後はここからコピペする。 元は瀧内さんのコードだけど、どれからパクったか忘れた。 require 'optparse' COMMAND_LINE = "#{$0} #{ARGV.join(' ')}" OPT = {} opts = OptionParser.new opts.on('-a <abc>'){|v| OPT[:abc] = v} opts.o</abc>…

現在位置で可能な最大のズームレベルを取得する

// map:GMap2 map.getCurrentMapType().getMaximumResolution(map.getCenter()) [追記] これでは駄目みたいでした。 Google Groupes getMaximumResolution was never related to what map tiles were available on the server, it only ever returned the ma…

クラスメソッドの別名

んー、なんかもっといいのないのかなー class Hoge def self.fizz; puts :fizz end class <

ゆきひろ認証プラグイン(acts_as_yukihiro_ninshoable)

Ruby会議2007、もとい、Reject会議2007で発表されたベーパーウェアのアイデアに感銘を受け、いきおいまかせに実装してしまいました。反省はしていない。 このRailsプラグインをインストールすると素人がまつもとゆきひろさんの名前をよく「ひろゆき」と間違…

ユーザーエージェントでアクセスを制限

application.rb に追加。 def refuse_ua(condition=nil, &block) ret = if block block.call request.user_agent else case condition when String refuse_ua /#{condition}/ when Regexp !condition.match(request.user_agent) when Array condition.inject…

Fishing

社内ブログに釣り記事書いたら、釣られた人がTwitterで凹んでた。 それみてこっちもちょっと凹んだ。すんません。まぁ、それはそれとして、教科書に載せたいほど典型的な 「...は死んだ」メソッドのテンプレになったと思うので こちらに記録。(またやる気満…

ファイルアップロードのテスト

ActionController::TestUploadedFileと言うのが使えるみたい。 同僚に教えてもらいました。 def test_upload post :upload, { :file => ActionController::TestUploadedFile.new( "#{RAILS_ROOT}/public/images/test.png", 'image/png'), }, @session assert…

ファイルアップロード

今まで何度となくファイルアップロードを書いては忘れ、その都度調べてて、いい加減疲れてきたのでここにメモる。今後はここをコピペする方向で。基本的にこちらのコピーなので、要respond_to_parentプラグイン。説明もそちらを参照。ここには単にコードだけ…

再帰

ファーストクラスオブジェクトとして宣言した関数は再帰的に呼び出せるんだろうか、と疑問に思ったので試してみた。 <html> <head> <script> var myLoop = function(array, func) { if (array.length != 0) { func(array.shift()); myLoop(array, func); } } </script> </head> <body> <button onclick="myLoop([0,1,2], alert);">test</button> </body> </html> 成功。 ア…

引数で省略可能なオプションを渡す方法

scriptaculousのdragdrop.jsから。 引数がなければデフォルト 引数があればデフォルトを上書き add: function(element) { element = $(element); var options = Object.extend({ greedy: true, hoverclass: null, tree: false }, arguments[1] || {});