2014年7月1日火曜日

MarvericksでDashcodeを使う

すでに見捨てられた感のあるDashcodeですが使える方法を二つ。

ネタはこちらから。

方法は二つあり。

  1. Dashcode.appの中身にショートカットを作る
  2. Dashcode.appの中身を書き換える

方法1)※個人的にはおすすめではない。
 ・Dashcode.appをFinderで右クリック、パッケージの内容を表示
 ・Contents>MacOSの中にある"Dashcode"ファイルを見つける
 ・該当ファイルを選択して右クリック、エイリアスを作る。
 ・そのエイリアスを自分の好きなところへおく
 ・あとはそのエイリアスを起動すればDashcodeが立ち上がる。
 
 ※問題点
 ・余分なウィンドウ(ターミナル)が開いてしまう。
 ・そのウィンドウを閉じるとDashcodeも終了してしまうので
  Dashcodeを閉じてから余分なウィンドウを閉じなければならない
 総じて”運用が面倒くさい”

方法2)※おすすめ
 ・Dashcode.appをFinderで右クリック、パッケージの内容を表示
 ・Contentsフォルダの中にある info.plist をTextEditで開く
 ・下記箇所を見つけ、書き換える
 ・書き換える箇所
  ↓これを
<key>CFBundleIdentifier</key>
<string>com.apple.Dashcode</string>
↓これに(太字の部分)書き換える
<key>CFBundleIdentifier</key>
 <string>com.apple.DashcodeLegacy</string>
・あとは閉じてDashcode.appを起動すればよい。
 
 ※問題点
  ・ちょっと面倒くさい(けど運用は楽)



ただし、いずれの方法でも下記問題点あり。
Dashcode上でwidgetを実行すると実行したwidgetの画面がなぜか残ってしまう。
運用で回避する下記
・Dashcodeをフルスクリーンモードにして残った画面がDashcodeの画面を隠さないようにする
・画面は実行するたびに残ってしまうのでDashcodeの開発が終わったら(もしくはうっとうしくなったら)ログインし直し(ログアウト→ログイン)残った画面を消す。


 

2014年1月17日金曜日

FusionPCBで基板を作った

基板を外注したいと思い続けて??年、ついに基板発注をFusionPCBで行いました。
思ったより簡単で拍子抜け。

作ったのはGR-SAKURA用 CANシールドです。
場所が余った?のでRTCバックアップ用CR2032も搭載できるようにしてあります。
テストはまだし
ていませんがLINドライバ(電気的にはISO9141)も載せられるようにしています。

組み立て前・組立後
 
GR-SAKURAでのCANでは手こずって、CANが2chあるにもかかわらずチャンネルCAN0での通信にはまりました。

E1エミュレータを使ってELFでデバッグしている時には特に問題なく送受信できるのですがGR-SAKURAのファームを使ってbin書込すると動かない、っていうよくわからない事象が発生。

全メモリ/レジスタの状態比較なども行ったのですがどうやらIRQ2周りの動作の際がこの現象に結びついているのではないかというところで止まっています。

しょうがないのでCAN周りを動かすときはMOTファイルを作って書き込むことで回避しています。
FDTからUSB書き込みもできるのでそう不便ではない、のですがモノによってやり方をかえなければならない、というのは避けたいです。

心身ともに余裕があるときに解析作業を続けたいと思います。

FusionPCBでの料金は送料除き $24.90でした。
ほかにちょこちょこ頼んだこともあり送料は $27.18かかってしまいましたが次は基板単体で安いShipping方法を選んでみたいと思います。

あと、発注してからデータのexaminationまではステータス表示が出るのですが実際に作っていますよ、という状態はお知らせされないらしく唐突に Traceable と出てきました。
荷物が到着するまでは基板分は荷物に入っていなくて後着するんだろうか、とどきどきしていましたがちゃんと”入って”いました。

やはりさくっと作れてしかも見た目もそれっぽくテンションが上がるので気持ちいいな。

2013年10月20日日曜日

MicroBlaze SDKで書き込みに失敗する

ようやく重い腰をあげて?MicroBlazeを勉強しはじめた。

きっかけは、FPGA ボードで学ぶ組込みシステム開発入門 〔Xilinx編〕を買ってから。

MicroBlazeはいつかしらトライしてみたかったのだけれど、どうもどこをどう
調べれば最初の一歩が踏み出せるのかよくわからなかった。

しかし、上記の本は平易だけれども必要な情報がしっかり書かれていてとても助かった。

でこの本にしたがって勉強。

順調に進んでいたのだけれど、SDKからボードに書き込むところで問題発生。

下記のメッセージが出て書き込めない。

Program FPGA failed
  Failed to download the bit file
    DONE bit didn't go HIGH after programming FPGA

使っているのはDIGILENTの、XUP USB-JTAG Programming Cable。
これはXilinx Platform Cable USB の互換品。

で解決法。

SDKのメニュー XIlinx Tools->Configure JTAG Settingsより
JTAGケーブルのTypeを "Xilinx USB Cable"を指定する。
(Auto Detectだとうまくいかない)

最初は指定スピードは遅めのほうがよいかもしれない。

うまくいかない時は、一度USB Cableを抜いてみること。
(一度エラーが発生すると、その後タイプを変えてもうまくいかなくなることがあった)


2013年10月9日水曜日

PowerShell ソースコードの管理をGitでしようとしてはまった。

GitのフロントエンドにAtlasianのSourceTreeを使っているのだけれど、PowerShellで作ったスクリプトを取り込んだ時、差分が表示されないという事案が発生。

いろいろ調べた結果、どうやらバイナリで認識されてしまっている模様。

PowerShell ISEで作ったファイルは UTF-16で保存されるらしく、これをGitはバイナリとして認識することにより発生するらしい。

まだGitのカスタマイズをよく理解できていないのでまだ解決できていないがフィルタを適切に設定すればなんとかなるような気もする。

こういうとき、Windowsは面倒。

2013年10月4日金曜日

【解決】PowerShellでInternetExplorerを操作するときにエラーが発生

メイン開発機で作っていたスクリプトをほとんど素のWindows7機にもっていって動作確認した時のこと。

InternetExplorerを操作する箇所で下記エラーが発生

"getElementById" のオーバーロードで、引数の数が "1" であるものが見つかりません。

該当コード部分は
$doc = $ie.document
$username_el = $doc.getElementByID("username")

まったくもって意味不明
オブジェクトがないということか?
とも思ったけど document自体はCOMコンポーネントのオブジェクトとして認識されている。

いろいろ、調査。
で、下記可能性が見つかった

1.InetrnetExplorerのセキュリティ設定が悪いんじゃないか。
   セキュリティの保護モードをオフにしろ、という記述(海外のサイト)
  →これはほぼ嘘だと思う。自分のメイン機では”オン”で動いている。
   サイトによってエラーが出たり出なかったり、という時は疑ってもよいのかもしれないが。

2.IEのバージョンによりアクセス方法が違う。
  IE9だとエラーが出るので、下記ページのようにしろ、とある。
  おいらのはIE10なんですけど、と思いながら試してみる。

  http://cezne.tumblr.com/post/23228713564/ie9-powershell

  これでも動くことは動く。
  これが大変くせもの。これで確かにいけるのだけれどページ遷移すると”忘れる”
  ので最初のアクセスしか有効でない。実質”使えない”
  かつ使うすべてのメソッドをこれでアクセスするなんて考えただけで寒気が…

 
 

ここでなんとなく思う。
オブジェクトはそこにいる。
決して情報を取れていないということではなくアクセス方法がわからないだけ。

頭の中になぜか”アセンブリ”という言葉は浮かぶ。

アセンブリの一覧はこのページのようにして取れる。

 [Appdomain]::CurrentDomain.GetAssemblies() | %{$_.GetName().Name}

これでメイン機と動いていないマシンで差をとった。

メイン機にあって、動いていないマシンにないエントリが見つかった

Microsoft.mshtml

うーん、それっぽい。

(あとの追調査でわかったことだが、navigateで有効なサイトにアクセスして documentプロパティに
アクセスしたときに初めて読み込まれるようだ。)

なんか来た。

あとはmshtmlを探せばよいっぽい。
が、探すファイルはMicrosoft.mshtml.dllであって、mshtml.dllではないようだ。
確かに動かないマシンにはないようだ。

メイン機には開発ツールをてんこ盛りにしているのでどれをインストールした時に入ったのかとかさっぱり。
ファイルを一つ持っていけばよかったのかもしれないがなんとなく”ちゃんと”インストールしてみることにする。
(依存関係とかがあってあとで悩むのもいやだし)

ネットの情報ではMicrosoft .NET Framework 2.0 SDK に入っているらしい。
あと、Global Assemblyっていうやつに読み込まないといけないらしいとの情報も。

でSDKを入れた。
インストール後、検索するとやつは、

C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll

に居た。

ここでPowerShellを立ち上げてテストしてみたけどだめ。

で、直接読み込んでみた。

[System.Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll")

なんかメッセージが出て読み込めた。

上記チェックをやった。 やったー動いた!
これをやればなんとかなる!

後日談

 動くようになったマシンを再起動したら上記で読み込まなくてもdocumentプロパティをアクセスした時点で自動的に読み込まれるようになった。(ログオフでもよかったのかもしれないが分からない)

GACというところ(c:\windows\assembly)に登録されるとマシン全体で使えるようだ。
ここには上記.net SDKのインストーラが登録してくれるみたい。
(ここはフォルダに見えているけどメタファーとしてそうなっているだけで実質は違うらしい)

もしGACにあるアセンブリを読み込むには
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.mshtml")
でよいらしい。

かなりネットをさまよったがなんとか一日で解決できた。
しかしみんなどうやって解決してるんだ?

2013年9月5日木曜日

MySQLの設定、my.cnfの在処について

どうも気になるので。

MySQLの設定ファイル、my.cnfだけれど自分のためだけの設定の場合は
自分のホームディレクトリに .my.cnf (頭のピリオド忘れないこと)という名前で老い低おけばよい。

/etc におくときはどうしても必要な場合のみにすること。

2013年5月17日金曜日

Windows7のXP Modeで統合機能のフォルダ共有機能が働かない

いろいろ調べてみるが、全てダメ。

Windows7を再インストールして、保存していたxpモード用のファイルを戻し
XPモードは立ち上がるのにフォルダ共有機能が働かない。

クリップボードとかそれ以外のものは統合機能が働いているっぽいのに。

下記ページで以下のような記述を見つけた

http://mikasaphp.net/win7vpc.html

引用はじまり--

仮想 PC から直接メインPC ドライブを参考にできるようになる等、メイン PC と共有できます。

  統合機能が有効にならない?又はインストール出来ない時 by Windows 7 SP1 32bit

一時統合機能を XP Mode 上でアンインストールし、
[ C:\WINDOWS\system32\drivers\wdf01000.sys ] の [ wdf01000.sys] ファイルを [ wdf01000.sys.old ] とリネームしてから
バーチャル PC のツールより統合機能をインストールしなおします。

 この情報はマイクロソフトフォーラムより取得したもでありマイクロソフトの文献ではありません。


--引用おわり

これは64bitでも有効だった。