Pages

March 21, 2011

x11vncをUbuntu10.04にインストールする

以前はVNCクライアント上でD&D出来た記憶があったけど10.04ではなんかうまくいかなかった。
仕様なのかなと思ったけど違うみたい。 いろいろなサイト(海外のフォーラム)でvnc4server以外でもどうやら起きている見たいで、x11vncだけはそうでもないってことでそれを入れた。

いろいろなサイトを参考にx11vncをxinetdで動かそうとしたんだけどうまくいかねぇ…
自ビルドしたり、gdmに登録してみたり、半日くらい潰した。無能すぎる

ってなわけで

$sudo apt-get install x11vnc
$sudo mkdir /etc/x11vnc
$sudo x11vnc -storepasswd /etc/x11vnc/passwd
$sudo chmod 644 /etc/x11vnc/passwd
$sudo vim /etc/xinetd.d/x11vnc
service x11vnc
{
   type = UNLISTED
   protocol = tcp
   disable = 0
   user = root
   server = /usr/bin/x11vnc
   server_args = -inetd -o /var/log/x11vnc.log -forever -auth /var/lib/gdm/:0.Xauth -display :0 -xkb -rfbauth /etc/x11vnc/passwd
   port = ポート適宜
}

$sudo vim /etc/services
x11vnc   ポート番号適宜/tcp   #X11VNC Server

これでいちよ動くようになった。
-xkbオプション追加でshiftキーが使えるようになる。
てかx11vncなんかきびきび動いてくれませんね(Color depthが指定できないからかな?) vnc4serverの方が個人的には好きかもw

で、さらに問題が。
X11VNCはX11自体にアクセスして処理を行っているため、クライアントで操作しているとサーバ側の画面もそれと同じように動くのである・・・ 困った。。
いろいろ調べていたらXvfbというX11仮想プログラムを使えば良いみたい。

$sudo apt-get install xvfb

このあとよく分からない

$Xvfb :20 -screen 0 800x600x16 &
とかして
x11vncの-displayオプションに:20を指定してやれば良いみたい?
なので、
端末で実際試してみたんだけど、ログインまではできるものの画面が白っぽいままセッション画面が出ない。
何が問題なのかも分からない。

March 18, 2011

Win7でScalaとScalaAndroid環境構築とか

ただの備忘ログ
構築とかわかりにくかったのでまとめただけ。転んだら泣いてください。

サイト
Scala
Index of /gnu/windows/emacs か NTemacs
Apache Ant
ProGuard
simple-build-tool
object版create_project

準備
1:
ScalaのサイトからIzPack Installerをダウンロードして指示通りインスコ。インストーラ版だとPATHも勝手に追加してくれるので楽。

2:
最新のemacsを持ってくる。
「scala/misc/scala-tool-support/emacs」のファイルを「.emacs.d/scala-mode」に置く
C:\Users\***\AppData\Roaming\.emacs.dにinit.elを作成
以下内容
;; Set default fonts and fonts for Japaense
(cond
  (window-system
    (set-default-font "Courier New-10")
    ;; Japanese(japanese-jisx0208)font
    (set-fontset-font
      (frame-parameter nil 'font)
      'japanese-jisx0208
      (font-spec :family "Meiryo" :size 12)
      ;;'("Meiryo" . "unicode-bmp")
    )
  )
)
;; Set scala-mode
(add-to-list 'load-path "~/.emacs.d/scala-mode")
(require 'scala-mode-auto)
起動はbin以下の「runemacs.exe」でおkみたい。
cuiでは「emacs -nw」みたい。
使い方とかよく分からないので追々。

3:
Apache AntからWindowsバイナリをダウンロード解凍後、適宜場所へ。 そのあと環境変数のPATHに「apache-ant/bin」がある場所を追加。
端末から「ant -version」でPATH通っているか確認。

4:
ProGuardをダウンロード解凍後適宜場所へ。そのあと環境変数に
PROGUARD_HOMEを新規追加。
PATHに「%PROGUARD_HOME%\bin」を追加
「proguard」を端末内で実行確認。

5:
端末内で「sbaz install scala-android」を実行しscala-androidをインスコ。
このままではscala自体がエラーで起動しないので。
こちらで2.8.1用にビルドした物を用意したので、自己責任でscala-android.7zをダウンロード解凍後
「scala/lib」以下に置けばおk
※いつダウンロードリンクが切れるか分かりません(笑

6:
simple-build-toolをダウンロード解凍後適宜場所へ。
「sbt-launch-*」を「sbt-launch.jar」へリネーム
@echo off
java -Xmx512M -jar "%~dp0/sbt-launch.jar" %*
そのあと環境変数のPATHにsimple-build-toolがある場所を追加。
ANDROID_SDK_HOMEという名前でandroid-sdkのある場所を追加。
端末内で「sbt」でPATHが通っているか確認。

7:
simple-build-toolと同じところにcreate_project.scalaを保存
create_project.scalaを修正
create_project.scala:13
-- val e = args.elements
++ /**val e = args.elements**/
++ val e = args.iterator
修正版:create_project.7z
※こっちもいつダウンロードリンクが切れるか分かりません(笑
あとScala触ったことないのでちゃんと動くかすら分かりません(汗


実際に使ってみる
1: プロジェクトの作成
任意のフォルダにsimple-build-toolディレクトリにある「create_project.scala」をコピーする。
PS> scalac create_project.scala
PS> scala -cp . CreateProject HelloProject scalatohoku.example.hello --platform android-8 --scala-version 2.8.1 --activity HelloActivity
PS> cd HelloProject
PS> sbt update package-debug

2: コンパイル(apk化) → ぶち当たった壁を参照
HelloProject下で
PS> sbt
sbt> compile
sbt> install-emulator
または
sbt> install-device
インストール出来ません


ぶち当たった壁
1:Issue 150: sbt.Process apply splits path to command having spaces
android-sdkのpathにスペースが入るとだめな見たい。なので別位置に置きましょう。
結構これに時間とられた(汗

2: sbt> install-emulator(install-device)しても動かない
device名が文字化けしているのか端末へのインストールがうまくいかない。
「target/scala_2.8.1」にapkできてるのでそれをインストールして対処。


参考
Android SDK for Scala | ブログ.武田ソフト.jp
Scala + Androidをsbt(Simple Build Tool) とEclipseを併用して開発
EmacsでつくるScala開発環境 前編(scala-mode)

March 08, 2011

Androidのライブラリの依存関係を調べる。

バイナリ開けるのめんどくさかったので書いた。
やってることが分かる人のみで。
スクリプトと同じフォルダにbin, lib作って適宜ファイル入れること。
また、arm-eabi-objdumpも入れておくこと。
# -*- coding: utf-8 -*-
#!/usr/bin/env python
from os import getcwd, listdir
from popen2 import popen3

cdir = getcwd()

lib_flist = listdir(cdir+'/lib/')
bin_flist = listdir(cdir+'/bin/')
for file in lib_flist:
    cmd = './arm-eabi-objdump -x ./lib/'+ file + ' |grep -e NEEDED'
    stdout, stdin, stderr = popen3(cmd)
    print file
    print stdout.read()
    print stderr.read()

for file in bin_flist:
    cmd = './arm-eabi-objdump -x ./bin/'+ file + ' |grep -e NEEDED'
    stdout, stdin, stderr = popen3(cmd)
    print file
    print stdout.read()
    print stderr.read()