月別: 2013年3月
autocompleteで送信パラメタをカスタマイズしてみた
jQueryAutoCompleteではデフォルトの送信パラメタはtermのみでちょっと使い勝手が悪かったりします。
そこでカスタマイズしてみます
source:function(request,response)をオーバーライド
Insert title here
test.js
$(function() { var url="./searchEngine.jsp"; var val1=$("#val1").val(); var val2=$("#val2").val(); $( "#searchTags" ).autocomplete({ source : function( request, response ) { request["val1"]=val1; request["val2"]=val2; $.ajax({ url: url, data: request, dataType: "jsonp", jsonpCallback:'callback', success: function( data ) { response( data ); }, error: function() { response( [] ); } }); }, }); });
searchEngine.jsp
<%@ page language="java" contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%> Map map = request.getParameterMap(); Iterator it = map.keySet().iterator(); while (it.hasNext()) { String name = (String)it.next(); String[] val = (String[])map.get(name); for (int i = 0;i
MacOS10.8のVirtualBox上でUSB接続のDVDを認識させる
- iMac MacOS10.8
- DVD Drive Buffalo BRXL-PC6VU2
- ゲストWindowsVista Ultimate 32bit
この組み合わせでVirtualBox上のVistaにつなげるにはちょっと苦労しました。
VirtualBoxの設定からポート、USB を選択し+ボタンでBUFFALO Optical ODDを追加します。この際にUSB2.0コントローラを有効にしますが、こちらはVirtualBoxの追加パッケージを入れておく必要がありました。
このまま起動すると、Vista上では不明なデバイスとして認識されてしまい、DVDは使えません。
ネットを調べたところ皆さん苦労しているようで、起動前にUSBをMacから物理的にはなしておき、VirtualBox起動後につけるとかあったのですが、うまくいきません。
半ばあきらめていたのですが、OKWebにあったこれ
「CPUを一個にするとうまくいく!」
半信半疑でVirtualBoxのCPU数を2個から1個へ。
これがうまくいきました。Explorer上でちゃんとDVDドライブとして認識されています
YAML.dumpで日本語が文字化けする
YAML.dumpでUTF8文字列をダンプする際にはバイナリと認識されてしまい、ファイルに保存した際にちょっと困ったことになります。
Psychなどを使う方法があるとのことですが、1.8だと気軽には使えません。
一つすばらしいやり方が紹介されていたのでちょっと改造してみます
http://projectzero-swb.blogspot.jp/2010/06/rubyyaml2.html
- CentOS5.4
- ruby1.8.7
#!/usr/bin/env ruby # -*- encoding: utf-8 -*- require "yaml" require "yaml/encoding" # String.is_binary_data?で必ずfalseを返すように書き換える class String def is_binary_data? return false end end class Name attr_reader:no,:name def initialize(no,name) @no=no @name=name end def to_s return @no.to_s+":"+@name.to_s end end data = {"はつね"=>Name.new(1,"みく"), "はちゅね"=>Name.new(2,"みく"), "かがみね"=>Name.new(3,"りん・ れん"), "めぐりね"=>Name.new(4,"るか")} # 通常どおり表示 #puts "Escape:" yaml = YAML.dump(data) # アンエスケープして表示 #puts "Unescape:" yaml = YAML.unescape(yaml) f=open("test3.yaml","w") f.write(yaml) f.close f=YAML.load_file("test3.yaml") f.each{|k,v| puts k+","+v.to_s }
実行結果
はちゅね,2:みく めぐりね,4:るか かがみね,3:りん・れん はつね,1:みく
test3.yaml
--- "はちゅね": !ruby/object:Name name: "みく" "no": 2 "めぐりね": !ruby/object:Name name: "るか" "no": 4 "かがみね": !ruby/object:Name name: "りん・れん" "no": 3 "はつね": !ruby/object:Name name: "みく" "no": 1
rubyのマルチスレッド
rubyはマルチスレッドのプログラムを書いても、CPUは一個しか使ってくれないらしい。
GIL というもののせいらしい。。
http://ja.wikipedia.org/wiki/グローバルインタプリタロック
そこでマルチプロセスのプログラムを作ってみる
#!/bin/env ruby class Test def exec t1=fork{calc} t2=fork{calc} Process.waitpid t1 Process.waitpid t2 end def calc tim=rand(10) p Process.pid.to_s+",start,"+tim.to_s sleep tim p Process.pid.to_s+",end,"+tim.to_s exit end end if __FILE__ == $0 then Test.new.exec end