ラベル Mac の投稿を表示しています。 すべての投稿を表示
ラベル Mac の投稿を表示しています。 すべての投稿を表示

2013年6月1日土曜日

[Mac] Parallels Desktopをちゃんと消す

最近自宅でコードを書く機会もめっきり無くなって, 寝る前に動画見たり目覚まし鳴らしたりと枕のお伴になってるMacさん。

しかし何もしていないのに最近えらいファンが煩い。
何かと思ったら prl_disp_service っていうサービスがCPUを100%まで食べてました。
Parallelsのサービスなんですね。

Parallelsは以前使っていましたが, 今はVirtualBoxを使用しています。
アプリケーションはAppCleanerで消した気になっていましたが, サービスやら色々残してたんですね。反省です。

日本の販売元にきちんと削除方法が書いてありました。
http://www.runexy.co.jp/support/faq/faq_parallels_desktop7/detail/faq_0009755


問題も落ち着いたので何となく3Dプログラミングをしてみようと, JOGLを始めてみます。
あと, Parallels8は何かよさげ

2012年12月21日金曜日

[Android, Mac] ファイル名の濁点とか

Mac から Android 端末へファイルを転送する際に、Android File Transfer を利用しています。
その際にファイル名に濁点・半濁点が含まれている時に二文字に分けられちゃうのはなぜでしょう...っていうメモ

 Nexus7 へ Android File Transfer を使って。
クリスマスver. になってますね(*´ω`*)

Xperia へ Android File Transfer と AirDroidを使って。
AirDroid でも同じ。

AirDroid でも同様の症状が出るんですね。
日本語でファイル名を扱うことが滅多に無いので気づきませんでした。

UTF8-MAC のせいですかね。

2012年12月20日木曜日

[Android] VNC on SSH

何かと便利な VNC について。
布団から出たくない時に手元の macbook から少し離れた Windowsマシン を操作する時とか大活躍です。

VNC そのものは通信に暗号化を行わないので、インターネット越しに使用するのはちょっと怖いです。(商用版等で暗号化されるものもありますが。)
なので、SSH または VPS でトンネリングして VNC を使用する事にします。
VPS は、今使っている docomo の SPモードでは利用できないので SSH を用いる事にします。

今回は SSH サーバと VNC サーバはそれぞれ別マシンで動作させるものとし、VNC クライアントは docomo のSPモード越しの Android 端末を用いるものとします。
サーバは同一マシンでも設定等は殆ど一緒になります。
今回は、単に Windows マシンにSSH サーバをインストールするのが面倒だったので別にしました。

こんな構成

VNC, SSH サーバのインストール等は割愛して、Android の方だけ。
Android での SSH クライアントには、ConnectBox を利用します。


上の例では DynamicDNS とポート変換を利用し、SSHサーバが立ててある Macマシンの my.host.com にSSH接続を行なっています。
そして、ポート転送の設定で localhost の5900番ポートへの通信を、Windowsマシン の5900番ポートへ転送します。
ソースポートは自分の都合の良い物を指定し、転送先のポート番号はVNCサーバが使用するものを指定して下さい。

Android の VNC Viewer は アンドロイド-のvnc - viewer を利用しました。


パスワードはVNCサーバで設定したものを指定し、アドレスは localhost(127.0.0.1), ポートは前の ConnectBox で設定したソースポートの物を指定します。


無事、SPモード越しにVNC接続を行うことができました。
最初のフレームの受信に時間がかかる様な気もしますが、十分利用可能な感じです。

2012年11月12日月曜日

[Mac] QLColorCode の日本語表示

MacのQuick Lookはプラグインによって様々な機能が提供されます。
その中のQLColorCodeというプラグインでは、ソースコードを表示する際に色分けしてくれたりする訳です。

しかし、エンコードがShift-JIS等のとき日本語で書かれたコメントが文字化けします。
それの日本語の文字化けを今更やっと、導入から数年経って解決したメモ

調べればなんぼでも出てました。

  1. Xcodeが提供している、SourceCode.qlgeneratorを無効化
    以下にあるSourceCode.qlgeneratorを読み込まれないようリネームし無効化した。
    /Developer/Applications/Xcode.app/Contents/Library/QuickLook/SourceCode.qlgenerator
    そもそも、数年間見てたソースコードのクイックルックは、上記のプラグインによるものでした。
    導入時期が同じなので、気づかなかった。
  2. nkfの導入
    macportでnkfのインストール
    $ sudo port install nkf 
  3. QLColorCode.qlgeneratorの編集
    QLColorCodeのバージョンは2.0.2です。
    バージョンによって、編集行は変わるようです。

    以下のファイルを編集する。
    /Library/QuickLook/QLColorCode.qlgenerator/Contents/Resources/colorize.sh

    Line37から
    cmdOpts=(-I --font $font --quiet --add-data-dir $rsrcDir/override \
             --data-dir $rsrcDir/highlight/share/highlight \
             --add-config-dir $rsrcDir/override/config --style $hlTheme \
    #         --font-size $fontSizePoints --encoding $textEncoding ${=extraHLFlags})
    --font-size $fontSizePoints --encoding utf-8 ${=extraHLFlags})

    Line45行目の
    #reader=(cat $target)
    reader=(/opt/local/bin/nkf -w -Lu $target)
  4. 最後に一応...
    $ qlmanage -r
    で、Quick Lookの再設定
  5. おまけ 行番号
    $ defaults write org.n8gray.QLColorCode extraHLFlags '-l'

できました。
色が地味...次はgo言語とかに対応する方法を

参考
趣日雑記 - QuickLookでソースをカラーリング:QLColorCodeの改良.

2012年10月30日火曜日

[Java][AVR]MacのJavaでAVRとシリアル通信したい

AVRで作ってるI/Oボードで取得したセンサーのデータを扱うのは、現状JavaでやりたいのでMac上のJavaでシリアル通信出来るようにする。

Javaでシリアル通信を行うライブラリにRxTxという物があるのでこれを使います。GNUライセンスです。

まず、古い方の公式サイトからrxtx-2.1-7-bins-r2.zip (Final)をダウンロードしてきます。
さらっと少し上にダウンロードサイトが移動した旨が書いてありましたが気づきませんでした。
新しい方のサイトも見てみましたが、書いている時点で安定版のバージョンは同じ様です。

ダウンロードしたzipファイルを解凍して出来たディレクトリの中のINSTALLの内容の

Mac OS X (x86 and ppc) (there is an Installer with the source)
RXTXcomm.jar goes in /Library/Java/Extensions
librxtxSerial.jnilib goes in /Library/Java/Extensions
Run fixperm.sh thats in the directory. Fix perms is in the Mac_OS_X
subdirectory.

に従って、
解凍したディレクトリの中にあるRXTXcomm.jarと、Mac_OS_Xディレクトリの中にあるlibrxtxSerial.jnilibを、
/Library/Java/Extensionsにコピーします。
最後のfixperm.shを実行するよう言ってますが、無いので飛ばします。

とりあえず前準備は終わったので、Eclipseでサンプルプロジェクトを作ってみます。
適当なプロジェクトを作成し、プロジェクトのプロパティの Javaのビルドパス-ライブラリー外部Jarの追加で先程コピーしたRXTXcomm.jarを指定してあげます。

ポートを開き、受信した文字を出力するだけのプログラムを書いてみます。
AVRのプログラムは、ただHello World!!を出力し続けるだけです。
import java.io.IOException;
import java.io.InputStream;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.UnsupportedCommOperationException;


public class Sample {
 
 public static final void main(String[] args){
  try{
   
   CommPortIdentifier portID = CommPortIdentifier.getPortIdentifier("/dev/tty.usbserial-A400FMPJ");
   SerialPort port = (SerialPort)portID.open("Sample", 5000); //waiting5000ms
      
   port.setSerialPortParams(19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
   port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
   
   InputStream is = port.getInputStream();
   
   int c;
   while((c = is.read()) != -1){
      Calendar cal = Calendar.getInstance();
      System.out.print(cal.get(Calendar.SECOND) + "." + cal.get(Calendar.MILLISECOND));
      System.out.println("->" + (char)c);
   }
   is.close();
   port.close();
  }catch(NoSuchPortException e){
   System.err.println("Can Not Find Device");
   e.printStackTrace();
  }catch(PortInUseException e){
   System.err.println("Can Not Open Device");
   e.printStackTrace();
  }catch(UnsupportedCommOperationException e){
   System.err.println("Invalid Parameter");
   e.printStackTrace();
  }catch(IOException e){
   e.printStackTrace();
  }catch(Exception e){
   e.printStackTrace();
  }
 }
}


簡単に説明を行うと
15行目
CommPortIdentifier portID = CommPortIdentifier.getPortIdentifier("/dev/tty.usbserial-A400FMPJ");
getPortIdentifierの引数には下の画像にあるように、開きたいデバイスのパスを与えます。



16行目
SerialPort port = (SerialPort)portID.open("Sample", 5000);
第一引数にはポートを開くアプリケーション名, 第二引数にはポートが他のアプリケーションに使用されていた場合にポートが解放されるのを待つ待ち時間(ms)です。

18行目
port.setSerialPortParams(19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
第一引数から、ボーレート, データビット数, ストップビット数, パリティの種類です。

19行目
port.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
フロー制御の設定を行います。

あとは、通常のJavaの通常の入出力プログラムです。 それぞれの例外は、エラーメッセージの通りだと思います。

実行してみると、
java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/librxtxSerial.jnilib:  no suitable image found.  Did find:  /Library/Java/Extensions/librxtxSerial.jnilib: no matching architecture in universal wrapper thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/librxtxSerial.jnilib:  no suitable image found.  Did find:  /Library/Java/Extensions/librxtxSerial.jnilib: no matching architecture in universal wrapper
ってエラーを吐きました。
調べてみると、先程ダウンロードしたlibrxtxSerial.jnilibは32bit用でJavaは64bitで実行される事によるエラーのようです。
なので、実行の構成からVM引数-d32を与えて32bitで実行してあげると解決します。
また、根本的な解決として64bit対応のライブラリに置き換える方法もあります。
arduinoのgoogle codeに、64bit用のライブラリがありましたのでダウンロードし置き換えてあげて下さい。

先程のエラーは解決できましたが、
gnu.io.PortInUseException: Unknown Application
 というエラーが出ました。
調べるとRxTxの排他制御の為のディレクトリが必要という情報がありましたので、ターミナルで
sudo mkdir /var/lock
sudo chmod 777 /var/lock
でディレクトリを作成してあげて、再度実行すると


無事、データの受信を確認しました。


Java Communications APIの使い方

2012年2月7日火曜日

[Mac]Controlキーのショートカット

control + p : previous
control + n : next
control + b : back
control + f : forward

control + h : Just like BackSpace

control + k : Erase from cursor to end of the line
control + y : ctrl+kで消した文字列を元に戻す

macのcaps lockキーをcontrolキーに置き換える(・ω・)