eclipse3.5+PDT2.1 環境で、新規PHPプロジェクトが作れない。

「ファイル→新規→PHPプロジェクト」から作成すると、次のエラーになった。

要素の作成に失敗しました。
Reason:
プロジェクト sample001 のビルド・パスには重複エントリー
'usr/local/eclipse/ecl3.5pdt2.1/plugins/org.eclipse.php.core_2.1.0.v20090617-2341/Resources/language/php5/'
が含まれています

で、「ライブラリー」から「PHP言語ライブラリー」を削除することで回避できました。

情報は以下から。thx

TakeWeblog: Eclipse3.5(Galileo) PDTで、新規PHPプロジェクト作成ができない場合

debian上にPHPのeclipse環境(PDT)を構築してみます。

lennyのmainコンポーネントで提供されているパッケージを使った場合、javagcjeclipseは3.2 しかインストールできないようです。
そこで、sun-java6+eclipse3.5+PDT2.1+pleiades1.3.0 をインストールしてみます。


sun-java6 インストール

/etc/apt/sources.list に non-free コンポーネントが含まれることを確認

deb http://ftp.jp.debian.org/debian/ lenny main non-free
deb-src http://ftp.jp.debian.org/debian/ lenny main non-free

deb http://security.debian.org/ lenny/updates main non-free
deb-src http://security.debian.org/ lenny/updates main non-free

パッケージをインストール

$ sudo aptitude update
$ sudo aptitude install sun-java6-jre

sun-java6 をデフォルトのjavaとする。

$ sudo update-java-alternatives -s java-6-sun

sun-java6が有効になったか確認

$ java -version
java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)

eclipse3.5+PDT2.1+pleiades1.3.0 インストール

PDT公式サイトより、eclipse3.5+PDT2.1 の オールインワンパッケージ eclipse-php-galileo-linux-gtk.tar.gz をダウンロードします。
PHP Development Tools (PDT) - Downloads

 PDT 2.1 All In Ones / Eclipse PHP Package
 
 These downloads include PDT 2.1, Eclipse 3.5, Mylyn and all other required plugins.
 :
   *All-In-One Linux x86/GTK 2 32-bit 139M

次に、pleiades公式サイトより、pleiades_1.3.0.zip をダウンロードします。(日本語化不要なら、pleiadesのインストールは不要です)
Pleiades - Eclipse プラグイン日本語化プラグイン

 Pleiades 本体ダウンロード
  既にインストール済みの Eclipse に適用したい場合や、Windows 以外で使用する場合は
  下記の Pleiades 本体のみをダウンロードしてください。Pleiades のソースを Eclipse
  プロジェクトとしてチェックアウトする場合は こちら を参照してください。
  
   *安定版  1.3.0

/usr/local/eclipse 以下にを置く。

eclipse+pdtを解凍

/usr/local/eclipse$ sudo tar zxvf eclipse-php-galileo-linux-gtk.tar.gz 

pleiadesを重ねて解凍

/usr/local/eclipse$ sudo sh -c "cd eclipse; unzip ../pleiades_1.3.0.zip"

オーナーを変更

/usr/local/eclipse$ sudo chown -R root:staff eclipse

フォルダ名を変更

/usr/local/eclipse$ sudo mv eclipse ecl3.5pdt2.1

eclipse.ini の最後に以下を追加

/usr/local/eclipse$ sudo vi ecl3.5pdt2.1/eclipse.ini 
--pleiades
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

起動スクリプト eclipse-pdt を作る。

/usr/local/eclipse$ sudo sh -c "cat > /usr/local/bin/eclipse-pdt"
#!/bin/bash
#
# eclipse 起動
#

HOME_ECLIPSE=/usr/local/eclipse/ecl3.5pdt2.1

cd $HOME_ECLIPSE
./eclipse "$@"

実行権を付与

/usr/local/eclipse$ sudo chmod a+x /usr/local/bin/eclipse-pdt 

起動する。

$ eclipse-pdt &

壊れたlzhファイルを復旧する。

途中までしか解凍できない1Gを超えるlzhファイルの復旧を試みた記録。
ファイル数が多く大変だったのでツールを作り、全てではないが復旧できた。

=============================
lzhrecover v0.1  20090526
=============================


これは何?
-----------

  解凍できないlhaファイルから、出来る限りのファイルを救出する
  作業を補助するツールです。

  といっても、解凍できない理由はいろいろあるでしょうから、
  とても限定的なツールです。あまり期待はできません。

  +Lhaca もしくは Lhaplus で作られた、途中までしか解凍できない
  lzhファイルをある程度復元することができます。
  (詳細は以下「後日談」参照)


作った背景
----------

  とある1G以上ある巨大lhaファイルを解凍していたところ、
  半分ぐらいのところでエラー発生してしまい、
  さまざまな解凍ツールを試してみるもやはりエラーになった。
  「解凍できないファイルを少しでも救出できないか?」
  ネット上でツール探すも見つからず。幸いバイナリエディタで対応
  する方法を見つけるが、あまりに巨大なlhaファイルである為、
  思うようにゆかず、作ったツールです。
  自分のケースに使うだけの捨てツールっぽいものなので、
  わりと手抜きです。他のケースで役に立つかは謎です。


lhaのファイルのファイル構造
----------------------------

  ものすごく簡略化すると
  +----------------------------+ ----
  |ファイル1(ヘッダ+データ)   |   1レコード
  +----------------------------+ ----
  |ファイル2(ヘッダ+データ)   |
  +----------------------------+
  |                            |
  :                            :
  |                            |
  +----------------------------+
  |ファイルn(ヘッダ+データ)   |
  +----------------------------+
  |0x00(エンドマーク) |
  +-------------------+
  となっています。
  このファイル構造で重要なのは、レコード間で相関関係がまったくないので、
  単純に、壊れているレコードを特定し、これを削除してしまえば、正常な
  lhaファイルになる(可能性がある)ということです。


壊れているレコードをどのように特定すればよいのか?
---------------------------------------------------

  lzhrecover(本ツール)では、次の2つのアプローチが行えます。

  A) UNLHA32.DLLで読み込み
     最も有名なlhaの圧縮/解凍ライブラリです。
     本ツールでは、このライブラリを使ってlzhファイル中の
     ファイルを読みます。
     エラー検出は厳密ですが一度エラーになると、それ以降の
     レコードは解析できません。(オプションで破損ヘッダ読み
     飛ばしは可能ですが)

  B) 独自解析
     本ツール独自で本当に最低限の解析を行うツールで、
     UNLHA32.DLLと比べるとお粗末もいいところです。
     ただし、エラー発生しても次レコードを予測して
     無理やり最後まで解析を継続します。
     予測といっても、ヘッダ中の圧縮方式 "-lhX-" をさがし
     ているだけです。


動作に必要なもの
-----------------

  .NET Framework 2.0

  [UNLHA32.DLLで読み込み] を使う場合、以下も必要です。

  CaldBase.dll, CaldBase.ini (CaldBase.dll Ver.0.10 に含まれます)
    WrapperDLL - CaldBase.NET Website
    http://caldbase.sourceforge.jp/old_wiki/index.php?WrapperDLL

  UNLHA32.DLL (ulh3265d.exe に含まれます)
    Common Archivers Library: UNLHA32.DLL
    http://www.csdinc.co.jp/archiver/lib/unlha32.html


使い方
-------

  1.[lzh選択]で、壊れたlzhファイルを選択(drag&dropでも可)
  2.[UNLHA32.DLLで読み込み]で、エラー発生するか確認
    一覧に表示されたレコードは、正常と思われる。
    (この操作は、本ツールの必須操作ではありませんが、
    非力な独自解析を補助する情報が得られます)
  3.[独自解析]で、エラー発生するか確認
    エラー発生しても最後まで処理継続させる。
    このときあきらかにエラーのレコードについては、
    チェックOFFになる。
  4.必要であれば、エラーと思われるレコードをチェックOFFする。
  5.[lzh出力]で、新たなlzhを出力する。
  6.出力したlzhを使って、1から繰り返す。
    エラーが無くなれば、おそらく解凍できるはず。
    解凍できないようなら、正常に解凍できたファイルの次の
    ファイルがエラーレコードなので、これを除外して新たなlzhを作る。
    これの繰り返し。

解凍するツールはLHMeltがお勧め
--------------------------------

  LHMelt のダウンロード
  http://www2.nsknet.or.jp/~micco/mysoft/lhmelt.htm
  -----------------------------------------------------------------------
  初心者の方や書庫関係に明るくない方は, 解らない設定は弄らないほうがいいです。
  少なくとも『オプション設定』ダイアログから呼び出せる各 DLL の設定ダイアログ
  の項目は弄ってはダメです。 LHMelt どころか, 他のアプリまで正常に動作しなく
  なります。
  -----------------------------------------------------------------------
  とあるので注意は必要ですが、UNLHA32.DLL の作者さん作成のツールなので
  信頼できると思います。
  機能的にも、書庫テストできる・破損ヘッダ読み飛ばしできる・ログが一覧で見られる
  と充実しているので、今回のように壊れたlzhファイルを見るのには最適でした。

  他のツールもいくつか試してみたのですが、特殊事情(巨大なlzhファイルで、かつ
  ヘッダ周りがあやしいレコードが含まれている)があっても素直に動いてくれたのは
  LHMeltだけでした。

  1.[編集→書庫のテスト]で書庫テスト
  2.[編集→展開]で解凍

  「ヘッダ CRC が存在しません」が発生したとき。
    警告であって解凍はできるので無視しても構いません。

  「格納ファイルのハフマンコードが壊れています」が発生したとき。
    [モード→破損ヘッダを読み飛ばす]をチェックONしていれば
    そのファイルをスキップして処理(解凍/書庫テスト)を継続してくれます。

後日談
-------

  復元できなかったファイル名を見ていて気が付いたのですが、
  エラーになっているlzhファイルは、+Lhaca もしくは Lhaplus で作られた
  可能性がありました。(以下以外にもCRCエラーが大量に出ましたし)

    『+Lhaca 1.24』について
    http://www2.nsknet.or.jp/~micco/notes/soft/Lhaca124.htm
    -----------------------------------------------------------------------
    +Lhaca が作成する書庫については以下の制限が存在します:
    * 作成される書庫は h1 形式ヘッダーです。
    * 基本は上記のとおりなのですが, 基本ヘッダーのファイル名項目 (のみ) で
      表現可能な 255 バイトまで作成を行ってしまうため,自身を含めて取り扱い
      不可能な書庫が作成されてしまいます。 ヘッダー読み込み時のリカバリーは
      行われませんので,当該箇所以降の全てのメンバーは無視されます。 
    -----------------------------------------------------------------------

    『Lhaplus 1.56』について
    http://www2.nsknet.or.jp/~micco/notes/soft/Lhaplus156.htm
    にも同様の指摘があります。

  これが原因で読めないlzhファイルについては、本ツールで
  独自解析→lzh出力 とすれば一部「格納ファイルのハフマン
  コードが壊れています」が発生しますが、それ以外は復元できます。


備考
-----

・本ツール自身は圧縮/解凍機能を持ちません。
・元のlzhファイルはReadオンリーで開いているので、このツールがバグを
  もっていたとしても、オリジナルのlzhファイルには影響ないはずです。
・唯一Writeしているのは、[lzh出力]ボタンの処理だけです。
・処理速度とかまったくチューニングしてません。
・内部32bitで処理しているので、lzhファイル4Gまでなら扱えるはず。
・ヘッダレベルは1,2のみ対応しています。

参考にしたもの
---------------

  LHAの書庫構造
  http://www2m.biglobe.ne.jp/~dolphin/lha/lha-header.htm

  開けなくなったLZHの解凍 : データ復旧のオントラック
  http://knowledge.ontrack-japan.com/ontrack_now/20040515_mamechisiki.html

  Common Archivers Library: UNLHA32.DLL
  の ulh3265d.exe の API.TXT
  http://www.csdinc.co.jp/archiver/lib/unlha32.html


動作・サポートについて
-----------------
  動作保障・サポート保障はありません。
  いかなる責任も負いません。

gounx2 at gmail.com

ダウンロードは以下。
lzhrecover.exe - goungoun技術系雑記帳

WindowsでPHP環境を超簡単に構築

1年ぶりにPHP環境を構築してみることに。何とXAMPPも入っていたので以前にもまして簡単にインストールできました。使用させてもらったのは↓で配布されているもの。

Eclipse 3.4.2 Ganymede SR2 ベース / Pleiades All in One 3.4.2.20090316

解凍&バッチファイル1つ実行するだけで、以下が使えるようになります。

  • Eclipse3.4.2
    • PDT2.0.0
  • XAMPP1.7.0
    • PHP5.2.8

こんなに簡単でいいのかしら。

PHP、Eclipse PDT (PHP Development Tool) - goungoun技術系雑記帳

Sony スゴ録 RDR-HX8、電源投入→「WELCOME」表示のまま固まる

保障期間切れてるのでメーカー修理は選択支として無し。
自己解決までの過程をメモしておく。
(本当はファームウェアのバージョンアップしてもらうのが正攻法らしいが)


予兆・・・
数日前から、番組表(G-GUIDE)が1,2日分空白になる現象発生


タイトル名が入らないので、電源入れ直したら直るだろうと考えた・・・
電源ボタン押してOFF→電源コード抜く→ちょっと待って電源コード接続
としたら、「WELCOME」表示のまま固まったorz


保証期限切れだったので、中開けて掃除してみたが直らない。
HDDのモーター音も、振動もない。動作していないようだ。
HDD抜いてPCにつないでみた。つなげた。SMARTチェックまぁまぁな値。
HDDは壊れてなさそう?


ネットで情報探ってみた。


SONY DVDレコーダー スゴ録 RDR-HX 6 8 10 ハードディスク修理
http://www1.plala.or.jp/evolution/hx10.html

価格.com - 『か、固まった!』 SONY スゴ録 RDR-HX10 のクチコミ掲示
http://bbs.kakaku.com/bbs/20277010051/SortID=3536515/

レコーダーネタ2日目、スゴ録をサクッとふわっと直しつつXD72D経過は良好・ハヤテ第36話なのですよ。 - パソコン改造記の憂鬱 セカンドシーズン - 楽天ブログ(Blog)
http://plaza.rakuten.co.jp/nxuser/diary/200712230000/


工場出荷時の状態に戻すことで自己解決した。
手順は次の通り。

1.
「録画一時停止」「システムメニュー」「ツール」ボタン押しながら電源コードさす。
「WELCOME」表示される。そのままボタン押し続け10秒ぐらいでサービスモード画面が表示される。

2.
「<

>」の「3) TEST MODE」選択(リモコンの3を押す)

3.
「<>」の「4) NAND Factory Setup」選択(リモコンの3を押す)
さらに 決定ボタン を押す。

4.
電源切って再投入

録画予約とか、番組表とか、全部リセットされてるが、HDDに録画してたのは残ってた。
また発生したらメンドクサイな。
そろそろ購入時期かな。

リードオンリー インターフェース って言うのか?

データを扱うクラスを作ってたんだけど、コード量や複雑度が増してくると「ここは参照系の処理だから、オブジェクトの変化を伴うようなメソッドをCallすることはあり得ない」というのを何とか機械的に保証したくなってくる。

C++ に constメンバ関数 ってのがあって、それでコンパイルエラーを発生させてたんだけど、C# には そんな機能はありません。

googleで「constメンバ c#」とか検索してみたものの「C#には無い機能」という情報はヒットするのだが「ではどうすればいいの?」というのが無い。

困ってたのだが「あー、こういうときにインターフェース使えばよさげ?」と気が付いた。

もう実装しちゃったので結果オーライなんだけど。

「こういうこと先人は悩んでいないのか?」と思うわけで「キーワード何で検索するのが正解なのか?」が、ずっと気になってた。

で、今現在何とかIPA3-2. カプセル化のすすめ にたどり着けたんだけど。

「リードオンリー インターフェース」で検索してもそれほどたくさんヒットしない。
それほどメジャーな概念ではないのかな?
もっと一般的な名称があるのかな?
う〜ん・・・

そのデータちゃんとファイルに書けてますか?

Ext3のコミット間隔を当てにしたアプリケーションは、Ext4でデータロスの恐れあり - スラッシュドット・ジャパン

OSクラッシュしたときにドットファイルが空になるという話。
今までもあった現象だが、コミット間隔がext4で長くなったことにより表面化。

「closeしたらHDDに書き込まれる」とか思って無いかい?
完全に保証するには、fsyncとか、renameとか考えること多いよと。