2010年3月10日(水) 14:35 JST
SQL Serverってたまにしか使わないので、よく忘れる・・・・
SQL Server にハングル文字を登録しようとして思いっきり躓きました。知っていればどうといったこともないことなんでしょうが。最近のMicrosoft製品は、(Microsoftに限らず世の中ほとんどそうかもしれませんが) Unicode対応されています。なので問題なくハングル文字とて登録できるものと思ってました。
ハングル文字を登録するINSERT文をファイルに書き込んでSQL ServerのManagement Studioで動かしてみる。と、なぜかハングル文字が「?」に化けます。しょうがないので、Visual Studioの Web Developerで C#のコードを書いて 先ほどのINSERT文のファイルを読み込み実行、、、、うまくいかない!
さっぱりわからなくて数日悩んでしまいました。(他の事に時間とられてたのもあるけど)
原因は SQLでハングル文字を表記するのに単純にシングルクオテーションで囲っただけだったからです。Unicode対応させるにはシングルクオテーションの前に「N」をつけなければなりません。「VALUES ( N'ハングル' ) 」みたいに。なんだよこれ、って正直思いました。普通に「VALUES ( 'ハングル' )」でいいやんけ!と思うんだけど、わざわざNをつけなきゃいけないという意味がわからんです。デフォルトUnicodeちゃうのん??
あと、ファイルのコードも、UTF8Nではダメで、UTF-16LE-BOMならC#で通りました。Management Studioのほうでは、UTF8Nでも通りましたけどね。UTF-16LE-BOMでしか通らないんだから、ますますNが必要な意味がわからんです。
慣れてる人ならこんなの常識なんでしょうけれどねぇ。
CakePHPのSecurityコンポーネントって扱いづらいですよね。でもやっぱりセキュリティには気をつけておきたいし・・・・ デフォルトでは使用して、局所的に適用を外す・・・ということができたらいいな、と思ってました。でもやり方がわかんなかったんですね。
日本語化したドキュメントには、$disabledFieldsに無視するフィールドを入れると評価対象にならないという記述があります。これ使うと、Javascriptで値を変えたりする項目があった時には便利ですが、それでも data['_Token']は発行されています。
他のアクションではSecurityコンポーネントを使っていても、あるアクションだけはSecurityコンポーネントを外したい、そういった使い方は日本語化したドキュメント読んでてもわかんなかったのですが、ソースみて気がつきました。
$this->Security->enabled = false;
これです! これでSecurityコンポーネントを止めることができます。単純だったんですね。
じつはWebシステムではなかったりするのですが・・・・
とあるWebシステムで使っている複数のDBからいろいろ集計するために毎日定時にバッチ処理を走らせようとするもの。これを「ちいたん」使ってやってみることに。
ビューは使わず、action()内にやりたいことを記述してけば、コマンドラインのスクリプトと同等に動きます。
ところが、あるDBのテーブルから値を取得して別のDBのテーブルへ値を書き込むことはできたのですが、日本語の文字列が文字化けしています。
1.6→2.0へのアップグレードは eclipse上でできる、みたいな記事を読んでやってみてから、ハマってしまいました。たしかにeclipse上でアップグレードできた(みたいにみえた)のですが、次に使おうとeclipseを起動すると、ADTがメニュー上から消えてなくなってました。
しょうがないので、もういちどインストールしようとすると、「もう入っているよ!」という意味のメッセージがでてインストールさせてくれません。ちょうどubuntuも 9.10が出たところなので、ubuntu 9.10へアップグレードした後に再挑戦しました。
dynabook SS 1610ですが、WinXP/ubuntuのデュアルブートにしています。
HDDが40GBしかないので、ubuntu用にちょっとしかパーティション割り当てをしてなかったせいか、ubuntuでハイバネーションしようとすると、swap領域が足りないと言われてしまいました。
GPartedで起動してパーティションを増やした後、mkswapして、vol_idでuuidを調べ、/etc/fstabと/etc/initramfs-tools/conf.d/resumeのuuidを修正し、swaponと、dpkg-reconfigure initramfs-toolsをしました。これで無事ハイバネーションできるようになりました。
普段はデスクトップ機を使っているのだが、やはり出先でノートを使いたくなることもあるもの。所有しているノートPCもずいぶんと古くなってしまいました。なにせPentium3の600MHz/メモリ192MBですから。
ヤフオクでdynabook SS 1610が 1万円で出ていたものですから、思わず落札してしまいました。しかし掲示では無線LANつきモデルだったのに届いたのを確認してみれば、無線LANなしモデルでした。出品者に連絡とると、1500円OFFにしてくれました。けっこうお買い得!!
とはいえ、PCカードやらUSBやらで無線LANをつなげると、出っ張りが不格好です。やはり無線は内蔵がいいな、というところで、無線LAN内蔵手術を施しました。
ふつう、ノートに無線LANモジュールを入れるといえば、裏蓋をあけて、miniPCIスロットに差し込むという流れになるのでしょうが、このdynabookはminiPCIスロットが完全に内部に隠れています。筐体あけて、マザボを取り外さないといけません。さらにそれだけではデバイスの認識はするけれど、使えないという情報がネットに。無線LANをON/OFFするスイッチをつけなきゃいけないようです。
http://otd12.jbbs.livedoor.jp/1000036858/bbs_plain?base=240&range=1
↑上記ページを参考に、無線LANのON/OFFスイッチを増設しました。
このページの写真はかなりアップで写しています。あけてびっくり、この狭い範囲で本当に半田付けができるのか、かなりビビリました。なにせもう十年ぐらい半田付けなんてやってませんし。でもがんばって完成しましたよ。ちゃんとスイッチでON/OFFできるようになりました。よかった、よかった。
いつのまにやら BINDを起動すると、エラーログに「the working directory is not writable」という文字が出るようになっていました。
みてみると namedの設定ファイルとかが置かれているディレクトリの所有者が namedでなく、rootに変わってました。それを直して named停止、named起動。
でもやっぱり同じエラーが出てきます。
あれ?? さっきなおしたはずの所有者がまた rootに戻っている。
よくよく試してみると、/etc/rc.d/namedを使って起動すると、勝手に所有者を変えてしまうようです。所有者を変えて、namedを手打ちで起動させるとエラー出ずに動きます。
そっか、これじゃぁ何度ディレクトリ所有者をchownとかしても無駄でしたね。
/etc/mtree/BIND.chroot.distの「/set type=dir uname=root gname=wheel mode=0755」をuname=bindへ修正すると、エラーが出なくなりましたし、ディレクトリ所有者もbindになりました。
今更ながらですが、S11HT (EMONSTER)を中古で入手しました。
分厚いのと画面表示がQVGAであることをのぞけばWindowsMobile機としてよく
できた端末だと思います。ただ、同じWMのAxim X51vを放り出して買うほどで
もないのに買ったのは、そう、Android化できるからにほかなりません。
DoCoMoに毎月上納金を納めるほどの財力はありませんので、Androidで遊ぶに
はコイツがちょうどいいところです。
■しばらく使ってみた印象
◇電池のもちが悪い。
WindowsMobile機として使っているときよりも電池残量がどんどん減ります。
なにもしないでほっとくだけでもどんどん減ってくので、使用率に応じて
パワーセーブする機構がまだできていないのでしょうか。それとも設定で
きるけど気がついてないだけ?? Android状態のまま放っておくと、電池
残量がなくなってしまうので、使うたびにAndroid終了させてます。
ちょっと実用じゃないですね。
◇WiFiとW-CDMAがなぜか共存できない。
ようやくWiFi対応がなされましたが、なぜかWiFi対応カーネルで起動すると
W-CDMAが繋がらなくなってしまいました。WiFi未対応に戻すと使えます。
基本的にWiFiでつなぐことが多いでしょうからなんとか我慢できますが、
いちいちリブートしてファイル書き換えてAndroid起動させるのは面倒です
ね。
気がつくとGeeklogで画像をアップロードしようとすると、imagecreatefromjpeg()でunrecoverable errorが出るようになっていました。
よくよく考えてみれば、ちょっと前に jpegのライブラリを 6から 7へアップグレードしてたのでした。php5-gdをコンパイルし直すと、無事動くようになりました。
他にもjpegライブラリ使っていたソフトってどれがあったっけなぁ??コンパイルし直さないといけないなぁ。
いつのまにやら次のようなエラーメールが届くようになりました。
「BAD_HEADER: Missing required header field: "Date"」
メールヘッダにDateフィールドがないために、amavisd-newが
ブロックしているものです。
Dateフィールドがないなんていうお行儀の悪いメールは、
ほとんどスパムなのでrejectしちゃってもいいかとも思った
のですが、LAN-HDDが発するメールが Dateフィールドをつけない
ということが発覚。
他にもあるかもしれないので、やはりrejectしてしまうわけにも
いかないとばかし、対策をとることに。
調べてみると、Postfix 2.6以降では、デフォルトでは Dateなどの
フィールドをヘッダに付け加えないようになっちゃったんですね。
こないだ postfixをportupgradeしたからなぁ。それかぁ。
というので、Postfixの main.cfに always_add_missing_headers=yes
を加えました。デフォルトではこれが no なんですね。yesにすると、
From, Date, Message-ID, To のフィールドがなかったときにこれを
付加するという以前と同等の処理になります。
Geeklogへようこそ!
Geeklogのサポートは、Geeklog Japaneseへ。ドキュメントは Geeklog Wikiドキュメントをどうぞ。