Studio17/1747をSSDに換装しようとしてコールド負け。
http://urakaze.com/post-379.html
ここなどを参考にSSDに換装しようとして、結果、敗北。。
SSDが安くなってて256GBで2万円ちょっと。
ここいらでタイミングだろうと思い立ち、換装を試みましたがリカバリが上手くいきませんでした。
結論から言うと、大容量512GBのSSDにするべき。
以下、敗北の記録。
1. リカバリできない
Dellはリカバリ用のOSを添付してくれなくなりました。
購入直後にリカバリ用ディスク作成を推奨され、そこからリカバリするのですが、OSのインストーラではなく、ディスクイメージのダンプのようなものっぽいです。
元のHDDが512GBだったのですが、SSD付けてリカバリしようとすると「ドライブの容量が小さいのでリカバリできません」のようなエラーが表示され、工場出荷時の状態に戻せません。
リカバリディスクは10GBも無いくせに、元のHDDと同容量程度はないとリカバリできないっぽいです。
2. Windowsのシステム修復ができない
Dellのリカバリが効かないのでWindows7のシステムイメージ作成とシステム修復からSSDへのインストールを試みました。
システム修復ディスクでブートするも、「erro 0X4001100200001012」というエラーが表示され、システム修復のメニューが表示されません。
http://answers.microsoft.com/ja-jp/windows/forum/windows_7-performance/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E4%BF%AE/2f804e74-e6ed-4059-a0fd-8328823e7e11
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1452430939
このあたりに言及もありますが、DellかWindowsかどちらかのバグのようです。
3. システム修復ディスクのISOを焼いて再挑戦
上記の問題を回避するために、 システム修復ディスクのISOを焼け、という情報があったので試してみました。
Windows-7-64-bit-Repair-Disc.iso
こんな名前のシステム修復ディスクイメージが出回っています。
なんか怪しいサイトにあるので、ウイルス怖え~、とか思いながらも挑戦してみましたが、これもダメでした。
リカバリのメニューは表示され、外付けUSBに落としておいたWindowsのバックアップイメージも認識して選択できるのですが、いざ、リカバリを実行しようとすると原因不明のエラーになります。
エラーのdetailを見る限り「USBが認識できてないかもしれないよ」といったインフォメーションが表示されてるのですが、そもそもバックアップイメージ選択できてます。
ただ、USBストレージを表していると思われるドライブ文字が「\\?\」と文字化けしてるのが気になります。よく分かりませんが、マルチバイト環境とかドライバとか色々あるんでしょう、きっと。。
4. 諦めた
後のやりようとしては、別のバックアップソフトからシステムイメージ丸ごとコピーする、とかでしょうけど、SATAでSSD繋げる箱が無かったり、Studio17の2ndベイの形状が特殊で繋げなかったりして、もう面倒なので諦めました。
これ以上時間使うより、Windows単体で新しく買った方がよい。
Windows新たに買う費用考えたら512GBのSSD買えた、というコールド負け。
2011年12月25日日曜日
2011年10月19日水曜日
Poeditで登録されていない拡張子ファイルでカタログ作成
Poedit : http://www.poedit.net/
使い方
http://wp.mmrt-jp.net/plugin-japanization-project/poedit/
http://ideasilo.wordpress.com/2006/08/14/edit-language-files-with-poedit/
http://www.koikikukan.com/archives/2007/03/29-032523.php
Poedit Version 1.4.6
登録されていない拡張子のファイルでカタログ生成したい場合。
例えば、PHPファイルだけど、「.php」拡張子ではなくて、「.phtml」や「.ctp」や「.php5」だったりした場合、デフォルトではカタログ生成ができない。(無視される)
それらもPHPファイルですよ、と教えてあげて、パースしてもらう設定。
1. ファイル > 設定 > パーサ
2. [ソースコードのパーサ] > PHP > 編集
3. パーサ設定
・対象拡張子
- *.php
+ *.php;*.phtml;*.ctp;*.php5
・パーサのコマンド
- xgettext --force-po -o %o %C %K %F
+ xgettext --force-po -o %o %C %K %F --language=PHP
これで出来るハズ(PHPなら)。
使い方
http://wp.mmrt-jp.net/plugin-japanization-project/poedit/
http://ideasilo.wordpress.com/2006/08/14/edit-language-files-with-poedit/
http://www.koikikukan.com/archives/2007/03/29-032523.php
Poedit Version 1.4.6
登録されていない拡張子のファイルでカタログ生成したい場合。
例えば、PHPファイルだけど、「.php」拡張子ではなくて、「.phtml」や「.ctp」や「.php5」だったりした場合、デフォルトではカタログ生成ができない。(無視される)
それらもPHPファイルですよ、と教えてあげて、パースしてもらう設定。
1. ファイル > 設定 > パーサ
2. [ソースコードのパーサ] > PHP > 編集
3. パーサ設定
・対象拡張子
- *.php
+ *.php;*.phtml;*.ctp;*.php5
・パーサのコマンド
- xgettext --force-po -o %o %C %K %F
+ xgettext --force-po -o %o %C %K %F --language=PHP
これで出来るハズ(PHPなら)。
2011年8月24日水曜日
Zend Framework default module prefix
default moduleは標準的には
デフォルトモジュールにもプレフィックスを付けたい場合、
プレフィックス付いていた方が管理しやすいし、動的なデフォルトモジュール切り替えとかもやりやすい。
http://framework.zend.com/manual/ja/zend.controller.dispatcher.html
#Zend_Application_Resource_Frontcontroller
http://framework.zend.com/manual/ja/zend.application.available-resources.html
#概要
メモメモ。
class IndexController extends Zend_Controller_Actionのようなクラス名でモジュール名プレフィックスが付かない。
application - modules - foo - controllers - views - ... - bar - controllers - views - ...のような構成を取っていて、fooモジュールをデフォルトモジュールとしたい場合、
#application/configs/application.ini resources.frontController.defaultModule = "foo"のような設定を行うが、そのままだと、
class Foo_IndexController extends Zend_Controller_Actionのクラス名でディスパッチできない。
デフォルトモジュールにもプレフィックスを付けたい場合、
#application/configs/application.ini resources.frontController.defaultModule = "foo" resources.frontController.prefixDefaultModule = TRUEとするとOK。
プレフィックス付いていた方が管理しやすいし、動的なデフォルトモジュール切り替えとかもやりやすい。
http://framework.zend.com/manual/ja/zend.controller.dispatcher.html
#Zend_Application_Resource_Frontcontroller
http://framework.zend.com/manual/ja/zend.application.available-resources.html
#概要
メモメモ。
2011年7月6日水曜日
お名前.comVPSのマルチドメイン環境でメール受信が出来なくなる
yum updateかけようとすると、clamv周りでエラーが出て更新できなくなったので、関係パッケージ全て削除しました。
・・・すると、マルチドメイン環境でメール受信が出来なくなる。
clamd再インストールしようとしても登録されてるリポジトリが古いのか何なのか、とにかくパッケージ入りません。
マルチドメイン環境にすると、自動的にamavisdというウイルスチェックソフトにメールのスプールの中身が転送される設定になるようですが、メールチェックはクライアントですればいいので、設定を外す。
こちらを参考にclamdへのスプール転送を外す。
http://d.hatena.ne.jp/pasela/20100420/postfix
が、メール受信できず。
postsuper -r ALL
すれば、メール配信されてくるのですが、
/etc/postfix/main.cf
の
content_filter
設定をコメントアウトしても、
/var/log/maillog
には
connect to 127.0.0.1[127.0.0.1]:10024: Connection refused
みたいなClamAVが見つかりません的なエラーが出続ける。
どうやら、
/etc/postfix/main.cf
以外にもamavisd関係の設定が残っているらしい。
ということで
grep 'content_filter' ./*
結果、
/etc/postfix/master.cf
/etc/postfix/postfix-pkg-main.cf
という2つのファイルにも
-o content_filter=smtp-amavis:[127.0.0.1]:10024
のような設定がされているので、コメントアウトしてpostfix再起動。
無事にメール受信できるようになりました。
===============
2011-07-11追記
上記だけだとメールの転送が効かなくなります。
/etc/postfix/main.cf
の
receive_override_options = no_address_mappings
設定をコメントアウトすれば、メール転送も上手くいきます。
が、どうしてそれで上手くいくのかはよく分かりません。
何か弊害が出るようであればお知らせ下さい。
仔細はコメント欄参照。
===============
・・・すると、マルチドメイン環境でメール受信が出来なくなる。
clamd再インストールしようとしても登録されてるリポジトリが古いのか何なのか、とにかくパッケージ入りません。
$ yum install clamd Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.kddilabs.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp base | 2.1 kB 00:00 epel | 3.7 kB 00:00 epel/primary_db | 3.7 MB 00:00 extras | 2.1 kB 00:00 lg-ce5x-main-arch | 1.9 kB 00:00 lg-ce5x-main-noarch | 1.9 kB 00:00 updates | 1.9 kB 00:00 updates/primary_db | 664 kB 00:00 128 packages excluded due to repository priority protections Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package clamd.x86_64 0:0.97-13.el5 set to be updated --> Processing Dependency: clamav = 0.97-13.el5 for package: clamd --> Processing Dependency: libclamav.so.6(CLAMAV_PRIVATE)(64bit) for package: clamd --> Processing Dependency: libclamav.so.6(CLAMAV_PUBLIC)(64bit) for package: clamd --> Processing Dependency: libclamav.so.6()(64bit) for package: clamd --> Running transaction check ---> Package clamav-lib.x86_64 0:0.97-1.r1.lg.ce5 set to be updated --> Processing Dependency: data(clamav) for package: clamav-lib ---> Package clamd.x86_64 0:0.97-13.el5 set to be updated --> Processing Dependency: clamav = 0.97-13.el5 for package: clamd --> Running transaction check ---> Package clamav-data.x86_64 0:0.97-1.r1.lg.ce5 set to be updated --> Processing Dependency: clamav-filesystem = 0.97-1.r1.lg.ce5 for package: clamav-data ---> Package clamd.x86_64 0:0.97-13.el5 set to be updated --> Processing Dependency: clamav = 0.97-13.el5 for package: clamd --> Running transaction check ---> Package clamav-filesystem.x86_64 0:0.97-1.r1.lg.ce5 set to be updated ---> Package clamd.x86_64 0:0.97-13.el5 set to be updated --> Processing Dependency: clamav = 0.97-13.el5 for package: clamd --> Finished Dependency Resolution clamd-0.97-13.el5.x86_64 from epel has depsolving problems --> Missing Dependency: clamav = 0.97-13.el5 is needed by package clamd-0.97-13.el5.x86_64 (epel) Error: Missing Dependency: clamav = 0.97-13.el5 is needed by package clamd-0.97-13.el5.x86_64 (epel) You could try using --skip-broken to work around the problem You could try running: package-cleanup --problems package-cleanup --dupes rpm -Va --nofiles --nodigest
マルチドメイン環境にすると、自動的にamavisdというウイルスチェックソフトにメールのスプールの中身が転送される設定になるようですが、メールチェックはクライアントですればいいので、設定を外す。
こちらを参考にclamdへのスプール転送を外す。
http://d.hatena.ne.jp/pasela/20100420/postfix
が、メール受信できず。
postsuper -r ALL
すれば、メール配信されてくるのですが、
/etc/postfix/main.cf
の
content_filter
設定をコメントアウトしても、
/var/log/maillog
には
connect to 127.0.0.1[127.0.0.1]:10024: Connection refused
みたいなClamAVが見つかりません的なエラーが出続ける。
どうやら、
/etc/postfix/main.cf
以外にもamavisd関係の設定が残っているらしい。
ということで
grep 'content_filter' ./*
結果、
/etc/postfix/master.cf
/etc/postfix/postfix-pkg-main.cf
という2つのファイルにも
-o content_filter=smtp-amavis:[127.0.0.1]:10024
のような設定がされているので、コメントアウトしてpostfix再起動。
無事にメール受信できるようになりました。
===============
2011-07-11追記
上記だけだとメールの転送が効かなくなります。
/etc/postfix/main.cf
の
receive_override_options = no_address_mappings
設定をコメントアウトすれば、メール転送も上手くいきます。
が、どうしてそれで上手くいくのかはよく分かりません。
何か弊害が出るようであればお知らせ下さい。
仔細はコメント欄参照。
===============
2011年6月30日木曜日
Redmine - undefined method `name' for "abstract":String
gem update --systemすると、Redmineが動かなくなる。
「undefined method `name' for "abstract":String」エラー。
Ruby : 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2011.03
Rails : Redmine vendor - 2.2.2?
Redmine: 1.2.0
gemのバージョンを差し戻すと動作するようになったのでメモ。
http://www.redmine.org/issues/8325
一ヶ月程前からチケット上がってるけど、今日(2011-06-30)時点ではクローズされてない。
「yum -yで色々インストールすればいけますよー」みたいな報告がされてResolvedされたチケットが、「どう解決したってんだよ、バカ!結局原因は何なんだよ!」的なツッコミと共にNewに差し戻されたのは余談。
最新のgem1.8.5に更新してしまうとRedmineが動かなくらしいです。
1.6.2なら動作する、という報告もありますが、1.7.2でも動きました。
参考までにgem list。
原因はよく分かりませんが、Redmineが動かないのは仕事に支障が出るので、取り合えずgemを巻き戻して対応することに。
「undefined method `name' for "abstract":String」エラー。
Ruby : 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2011.03
Rails : Redmine vendor - 2.2.2?
Redmine: 1.2.0
gemのバージョンを差し戻すと動作するようになったのでメモ。
http://www.redmine.org/issues/8325
一ヶ月程前からチケット上がってるけど、今日(2011-06-30)時点ではクローズされてない。
「yum -yで色々インストールすればいけますよー」みたいな報告がされてResolvedされたチケットが、「どう解決したってんだよ、バカ!結局原因は何なんだよ!」的なツッコミと共にNewに差し戻されたのは余談。
最新のgem1.8.5に更新してしまうとRedmineが動かなくらしいです。
1.6.2なら動作する、という報告もありますが、1.7.2でも動きました。
$ gem update --system 1.7.2 $ gem -v 1.7.2
参考までにgem list。
$ gem list *** LOCAL GEMS *** abstract (1.0.0) actionmailer (3.0.9, 3.0.7) actionpack (3.0.9, 3.0.7) activemodel (3.0.9, 3.0.7) activerecord (3.0.9, 3.0.7) activeresource (3.0.9, 3.0.7) activesupport (3.0.9, 3.0.7) arel (2.0.10, 2.0.9) builder (3.0.0, 2.1.2) bundler (1.0.15, 1.0.13) daemon_controller (0.2.6) erubis (2.7.0, 2.6.6) fastthread (1.0.7) i18n (0.6.0, 0.5.0, 0.4.2) mail (2.3.0, 2.2.19) mime-types (1.16) mysql (2.8.1) passenger (3.0.7) polyglot (0.3.1) rack (1.3.0, 1.2.2, 1.1.2, 1.0.1) rack-mount (0.8.1, 0.6.14) rack-test (0.6.0, 0.5.7) rails (3.0.9, 3.0.7) railties (3.0.9, 3.0.7) rake (0.9.2, 0.8.7) rdoc (3.6.1) rubygems-update (1.8.5, 1.8.4, 1.8.1, 1.8.0, 1.7.2, 1.6.2, 1.4.2) thor (0.14.6) treetop (1.4.9) tzinfo (0.3.28, 0.3.27)
原因はよく分かりませんが、Redmineが動かないのは仕事に支障が出るので、取り合えずgemを巻き戻して対応することに。
2011年4月16日土曜日
EclipseからJavadocを生成する時のエラー
ま、エンコーディングの話しだけなのですが、備忘録として。
Project > Generate Javadoc...
からJavadoc生成。
で、エラー。
Google先生に聞いてみる。
BufferOverflowException when generating Javadoc?
Eclipse 上で UTF-8 のソースから javadoc を生成する方法
EclipseからJavadocを生成する際にVM実行オプションを指定
以上。
Project > Generate Javadoc...
からJavadoc生成。
で、エラー。
java.nio.BufferOverflowException at java.nio.Buffer.nextPutIndex(Buffer.java:495) at java.nio.HeapCharBuffer.put(HeapCharBuffer.java:145) at com.sun.tools.javac.util.DefaultFileManager.decode(DefaultFileManager.java:830) at com.sun.tools.javac.util.DefaultFileManager.access$300(DefaultFileManager.java:76) at com.sun.tools.javac.util.DefaultFileManager$RegularFileObject.getCharContent(DefaultFileManager.java:1353) at com.sun.tools.javac.util.DefaultFileManager$RegularFileObject.getCharContent(DefaultFileManager.java:1252) at com.sun.tools.javac.main.JavaCompiler.readSource(JavaCompiler.java:483) at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:550) at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:541) at com.sun.tools.javadoc.JavadocTool.parsePackageClasses(JavadocTool.java:203) at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:145) at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330) at com.sun.tools.javadoc.Start.begin(Start.java:128) at com.sun.tools.javadoc.Main.execute(Main.java:41) at com.sun.tools.javadoc.Main.main(Main.java:31)
Google先生に聞いてみる。
BufferOverflowException when generating Javadoc?
Eclipse 上で UTF-8 のソースから javadoc を生成する方法
EclipseからJavadocを生成する際にVM実行オプションを指定
-encoding "utf-8" -charset "utf-8"
以上。
2011年1月19日水曜日
JAXB xs:intに文字列を入れてみる
JAXBでJava - XMLを相互変換したい。
・JAXB
Java Architecture for XML Binding(Wikipedia)
ということで実装していたのですが、xs:intなXMLのエレメントに文字列や空を渡した場合の挙動が不安定であることが判明。
サーバによって同じ文字列でもパース出来るときと出来ないときがある。
文字列からintへの変換の挙動が環境に依存する。
例えば、こんなXSDを用意。
こいつをxjcコマンドでコンパイルしてObjectFactoryや以下のようなXMLエンティティを表現するObjectを生成。
これにXMLを噛ましてパースさせる。
これはまぁ、普通にパースできて、Hoge#fugaに123が入ってくる。
問題は、以下のようなXML
これらをunmarshalするとJAXBExceptionが出る場合と0に変換されてパースされる状況がある。
ローカル(Windows7)で実行するとJAXBException、リモートのWindows Server上で実行すると0に変換。
全く同じソースをデプロイして、さらにはアプリ付きのサーバ(Jetty)ごとリモートに移しても挙動が一致しない。
差異はjavaのバージョンか、Windowsのバージョンぐらいしか思いつかない。。
・java -version
ローカル:1.6.0_21
リモート:1.6.0_23
・OS
ローカル:Windows7
リモート:Win2003Server R2 64bit、Win2008 Server 64bit、32bit
いずれにしてもこれぐらいの差異で環境によって異なる結果を返されると困る。。
Google先生に聞いてみたり、色々ダンプしてみたりと結構調べたのですが、原因が分からず、xs:intな項目を使わない方針に変更。
こんな感じでxs:intからxs:integerに変更
こうしておくと、文字列などパースできないXMLエレメントは環境に依存せずにnullにパースされてるっぽい。今のところ、、。
・JAXB
Java Architecture for XML Binding(Wikipedia)
ということで実装していたのですが、xs:intなXMLのエレメントに文字列や空を渡した場合の挙動が不安定であることが判明。
サーバによって同じ文字列でもパース出来るときと出来ないときがある。
文字列からintへの変換の挙動が環境に依存する。
例えば、こんなXSDを用意。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="hoge"> <xs:complexType> <xs:sequence> <xs:element name="fuga" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
こいつをxjcコマンドでコンパイルしてObjectFactoryや以下のようなXMLエンティティを表現するObjectを生成。
@XmlRootElement(name = "hoge") public class Hoge { @XmlElement(name = "fuga", required = true) protected int fuga;
これにXMLを噛ましてパースさせる。
<?xml version="1.0" encoding="utf-8" ?> <hoge> <fuga>123</fuga> </hoge> Hoge hoge = (Hoge)unmarshaller.unmarshal(reader);
これはまぁ、普通にパースできて、Hoge#fugaに123が入ってくる。
問題は、以下のようなXML
<?xml version="1.0" encoding="utf-8" ?> <hoge> <fuga></fuga> </hoge> <?xml version="1.0" encoding="utf-8" ?> <hoge> <fuga>abc</fuga> </hoge>
これらをunmarshalするとJAXBExceptionが出る場合と0に変換されてパースされる状況がある。
ローカル(Windows7)で実行するとJAXBException、リモートのWindows Server上で実行すると0に変換。
全く同じソースをデプロイして、さらにはアプリ付きのサーバ(Jetty)ごとリモートに移しても挙動が一致しない。
差異はjavaのバージョンか、Windowsのバージョンぐらいしか思いつかない。。
・java -version
ローカル:1.6.0_21
リモート:1.6.0_23
・OS
ローカル:Windows7
リモート:Win2003Server R2 64bit、Win2008 Server 64bit、32bit
いずれにしてもこれぐらいの差異で環境によって異なる結果を返されると困る。。
Google先生に聞いてみたり、色々ダンプしてみたりと結構調べたのですが、原因が分からず、xs:intな項目を使わない方針に変更。
こんな感じでxs:intからxs:integerに変更
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="hoge"> <xs:complexType> <xs:sequence> <xs:element name="fuga" type="xs:integer"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
@XmlRootElement(name = "hoge") public class Hoge { @XmlElement(name = "fuga", required = true) protected BigInteger fuga;
こうしておくと、文字列などパースできないXMLエレメントは環境に依存せずにnullにパースされてるっぽい。今のところ、、。
登録:
投稿 (Atom)