忍者ブログ
ちょっとは人のためになる事をしないとインターネットコミュニティーの皆様に申し訳がないかと思いながら、自分の備忘録ていどでしかなく、実際の所たいした情報も提供できないでいるブログ
[1] [2] [3] [4] [5]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

VMware Workstation

メインメモリファイル 〜 のロックに失敗しました。
ファイル 〜 から仮想マシンの状態を復元しようとしてエラーが発生しました。



と表示され、サスペンドしたVMの復帰に、毎回、かならず失敗する。






このエラーは VMware の扱うロックファイル(ディレクトリ)が消されずに残っているときに出る。問題が起きる VM のディレクトリを見ると、下記のように拡張子 .lck のディレクトリがあるはず。このディレクトリを削除してしまえば良い。






他のPCなどから、サスペンド状態のVMをコピーして持ってくると起きるようだ。
動作中の VM に .lck ディレクトリがあるのは正常。無理に削除してはいけない。

PR
0) 設定どうするのよ

左側のバーの虫眼鏡に+アイコン、「アプリケーションの検索」で Control Center を検索すると Control Center が起動する。
バーに紫のコントロールセンターアイコンが表示されるので、「ランチャーに常に表示」がおすすめ。

1) 再起動できない

Dell Precision 490 では再起動をしようとすると、UBUNTU ・・・ 画面で停止する。これは11.04になってからのことではなく10.04のころから reboot が効かなかった。以下の対処で治った。

/etc/default/grub の GRUB_CMDLINE_LINUX を変更。
GRUB_CMDLINE_LINUX="reboot=pci"
その後、update-grub を実効

2) ubuntu デスクトップを classic に

新しいのも悪くないので新しいのを使ってる。が、古いのがお気に入りの場合、ログイン画面、ユーザー名を選択したときの画面最下部に出る "ubuntu" を "ubuntu classic" にすれば、10.04 と同じ感じのデスクトップに。

3) 日本語入力、ibus daemon を自動起動

「コントロールセンター」 で「キーボードインプットメソッド」を起動。
「インプットメソッド」タブで「日本語」「Anthy」を選択して追加。

「コントロールセンター」 で「自動起動するアプリケーション」を起動。
コマンド /usr/bin/ibus-daemon -d
を追加登録する。名前と説明はてきとーに。

ネームスペースが含まれている XML を libxml2 XPath関数で検索する方法
C, C++, Objective-C, libxml2
 
問題点
 
XML にネームスペースが含まれている場合に xmlXpathEval で検索できなくなる
 
解決方法
xmlXpathEval を呼び出す前に、xmlXpathRegisterNs を利用し、ネームスペースを登録する。
xmlXpathRegisterNs は xpathinternals.h に宣言されている。
 
解説
 
たとえば、Excel の xml 形式ワークシートは以下のような構造になっている。
 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Sheet1">
  <Table ss:ExpandedColumnCount="84" ss:ExpandedRowCount="1" x:FullColumns="1"
 
    <Row ss:Height="102">
        <Cell><Data ss:Type="String">製品番号</Data></Cell>
 
ここでは、ほぼ全ての要素に ss: の urn:schemas-microsoft-com:office:spreadsheet というネームスペースが用いられている。
このようなXMLに対して、1行分のデータを取り出そうとして、下記のような関数呼び出しをしても、なにもマッチしてくれない。要素がグローバルなネームスペースにないからだ。
xmlXPathEval(BAD_CAST "/Workbook/Worksheet[position()=1]/Table[position()=1]/Row[position()=1]/Cell/Data[position()=1]", ctx);
 
このような場合、xmlXpathEval の前に、xmlXPathRegisterNS を用いてネームスペースを登録する。
xmlXPathRegisterNs(ctx, BAD_CAST "x", BAD_CAST "urn:schemas-microsoft-com:office:spreadsheet");
 
その後、以下のような式を用いることで検索ができるようになる。
 
xmlXPathEval(BAD_CAST "/x:Workbook/x:Worksheet[position()=1]/x:Table[position()=1]/x:Row[position()=1]/x:Cell/x:Data[position()=1]", ctx);
 
ここでは x: を使っているが、どのようなプレフィックスでも構わない。
あえて ssではなく x: を用いて、XMLソースのプレフィックスと、XPathの式でのプレフィックスの違いを確認している。
XML中の xmlns:x= … と xmlXpathEvelの x: は無関係だ。
本来は ss: にするのがわかりりやすいのは言うまでもない。
 This generally means that another instance of this process was already running or is hung in the debugger

が出た。Xcode、iPhone Simulator を再起動したが改善しない。
Terminal で ps -axg | grep ほげ.app としてみたら、開発中の .app (iPad Simulator)が残ってた。

kill -9 しても消えない。リブートするしかないようだ。
 
abort 
NSKVODeallocateBreak
__exceptionPreprocess
__raiseError
_objc_error

追記 2010/11/26
-[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]


UIViewController の viewWillAppear などが呼び出されない状態に陥った。一部のビューだけ呼ばれない、単純なサンプルでも呼ばれないなど状況がつかめなかったが、ようやく解決したのでメモを残しておく。問題は複数箇所に及んでいた。

UINavigationControllerDelegate を使ってはいけない。これを使うと呼び出されない場合がある。デバッグのため、とおもって delegate で NSLog を出させていたのが裏目に出た。

UIViewController を拡張して viewWillAppear 等をフックしてはいけない。
@interface UIViewController(debugAddition)
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
@end
小手先のテクニックに溺れてこんな事しちゃ駄目、ってことだな。これもデバッグコードが問題の究明の妨げになっていたのだ。

Xcodeのビルドを疑ってみる。単純なサンプルで呼び出されないときはこれだった。「単純なサンプルでも呼び出されない、SDKのバグでは?」と誤認してだいぶ時間をロスした。Xcodeで正しくコンパイル、リンクされていなかった。Cleanしてビルドしなおしたら解決した。


Snow Leopard で Xcode 3.2 / Instruments 2.0 / iPhone SDK 3.1 の組み合わせでメモリーリークをつぶそうとしていたらスタックフレームのシンボルが表示されなくなった。シンボル名がない状態でメモリーリークをつぶすのはほぼ不可能。

検索してみると、symbolicatecrash が snow leopardで動かないというっていうのが原因という書き込みが随所にみられた。改造版の symbolicatecrash なども出回っている。こいつは根が深いな〜と困っていたのだが、うちの場合はたいしたことじゃなかった。iPhone SDK 3.1 で開発する場合、Simulator 3.1 / Device 3.1 などターゲットを 3.1 すればスタックがちゃんと表示されるようになる。3.0をターゲットにしてるので3.1にしてメモリーリークをつぶしている。

2.1.1アプリを作る場合はこうはいかないね。
問題点
iPhone Device ではビルド設定で -liconv を追加しても libiconv がリンクできない。

原因

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS{バージョン}.sdk/usr/lib/libiconv.dylib のシンボリックリンクが間違っている


-rw-r--r-- 1 root wheel 1012656 11 10 10:08 libiconv.2.dylib
lrwxr-xr-x 1 root wheel 20 3 19 12:12 libiconv.dylib -> libiconv.2.4.0.dylib

libiconv.2.4.0.dylib は存在しないのでリンク時エラーになる

解決方法

-liconv.2 を指定すればリンクできるようになる


alloc init したら別の型のオブジェクトに変わってしまう現象に遭遇。

-(id)initWithNibName:(NSString*)name bundle:(NSBundle*)bundle

とすべきところ

-(void)initWithNibName:(NSString*)name bundle:(NSBundle*)bundle

と書いていた。initWithNibNameのなかにオブジェクトを代入するコードが書いてあって、そのときにアキュームレーターに格納されたであろう、そのオブジェクトのポインタが initWithNibName で返されていた。

C++なら純粋仮想関数の戻り値の型が違う的なエラーとなってコンパイル時に解るのだろうが、obj-cでは警告すら出ず隠れてしまう。盲点だった。

Settings.bundle下に Japanese.lproj を作ろうとしたもの、Xcodeが認識してくれずにはまった。以下解決方法。

Terminal や Finder を使って Settings.bundle ディレクトリの en.lproj を Japanese.lproj にコピー。

Xcode のプロジェクトから Settings.bundle を削除。ゴミ箱に移動せず,参照のみ削除する。

Xcode のプロジェクト,Resources配下でファイルを「追加」「既存のファイル・・・」 上で削除した Settings.bundle を追加する。

このとき,ここが重要、「デスティネーショングループのフォルダに項目をコピーする(必要な場合)」にチェック。

これで Xcodeの Settings.bundle 下に Japanese.lproj が入ってくれる。

あとは strings ファイルを編集、ビルドすれば ok

NSDictonary objectForKey: でいくらやってもあるはずのキーが出てこない。
デバッガに description を出力し、それをコピペして objectForKey しても
nil が返る。

おかしーなとおもって plist のソースをみたらこんな感じ。
^P の所。コントロールキャラクタが入ってやがる。

<key>^PsomeKeyName</key>

ソースコードを直接開いたのはこれがはじめてだから、なぜ ^P がはいったかは不明。
dictionaryのキーが見つからない。同じキーが二つあるなど、妙なことが起きたらソースを見てみると良いだろう。
黒軸の重さで腱鞘炎っぽくなり、茶軸に買い替えてみた。
適度な軽さというところか。こちらのほうがしっくり来る。
黒軸では新品当時からチャタリングに悩まされていたが、新しく届いた茶軸では起きないようだ。

andlw 0x0f
addlw -.10
btfsc STATUS, C
addlw 'A' - '0' - .10
addlw '0' + .10
Vref=5V の場合、10bit A/D読みとり値を数値化するため(0.01V=1となる整数化)
ADRS * 500 / 1023
といった計算をすることになる。5.00Vのとき500が得られるので小数点をはさみつつ簡単に表示できる。

でも、ADRES x 500 が 16bit幅を超えるので、1023で割るために32bit割り算ルーチンを使わなければならなくなる。

乗算一発で出す方法

500/1023≒32032/65536

なので、ADRES x 32032 の上位16bit(/65536)を取り出せば,16bitx16bit=32bitの乗算ルーチンのみで、後処理が楽な値が得られる。誤差的にはADRES x 32031 のほうが有利だけど、x32031だと1023 => 500 が出ないのでレンジをフルに使いたい場合はx32032のほうがよさげ。

[16bit整数] x [整数部0bit 小数部16bit]の固定小数点演算ですね

I2C 制御のLCDモジュールをバッテリー放電器(製作中)のPICにつないでみた。放電器のPICリセットを繰り返しているようだ。プログラムミス、電圧降下、ウォッチドッグタイマ、LVP書き込み端子、MCLR端子等々を疑って調べてたけど、結局パスコン入れるのをサボったせいと判明。

ブレッドボードにのっかった製作実験中のPICもLCD I2CのPICもパスコンなし。とりあえず放電器側PICにパスコンいれたら安定しました。パスコンって小規模な回路なら気休め程度のものかとおもったら大間違いでした。きっちり入れましょう(反省)
E24系列82Kと20Kで分圧すると 25Vが4.902Vに
VREF+=+5V=A/D値255, VREF-=0V=A/D値0のとき 4.902V=250

まあ、実際の所、AD読取値はテスタで校正したいから、校正パラメータとかけ算割り算はいれなきゃならないとはおもう。


忍者ブログ [PR]
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
フリーエリア
最新CM
[02/07 @naoshi65536]
[02/07 忍]
[09/18 とおりすがり]
[06/26 ilmare]
[03/16 とおりすがり]
最新TB
プロフィール
HN:
naoshi
性別:
男性
職業:
ソフトウェア技術者
趣味:
料理
自己紹介:
@naoshi65536 で連絡がつくはずです。
バーコード
ブログ内検索
カウンター
アクセス解析
FX NEWS

-外国為替-