2013年12月27日金曜日

Linux mintでVNCを用いてリモート操作する

Linux mint MATE 32bit 環境でWindowsのVNCっぽくローカルコンソールのGUI
画面と同じ画面をリモートから操作する為の環境を構築する手順を書きます。

まず使用するVNCサーバソフトウェアは「x11vnc」になりますので
このソフトウェアを下記のコマンドでインストールします。
$ sudo apt-get -y install x11vnc
次に、VNC接続するためのパスワードを設定します。
パスワードはバイナリファイルに保存しておきます。
下記コマンドを実行でパスワードを設定します。
$ sudo x11vnc -storepasswd /etc/x11vnc.passwd
パスワードを聞かれるので、打ち込みます。

これでパスワードの設定が出来ました。
次に、OS起動時に自動的にx11vncが立ち上がるように設定します。

$ sudo vi /etc/mdm/Init/Default
このファイルを開くと、スクリプトが表示されると思いますが、
Shift+Gキーを押してスクリプトの一番下に移動します。
exit 0
と書かれてある上の行に、下記をコピペします。
/usr/bin/x11vnc -xkb -auth /var/lib/mdm/:0.Xauth -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.passwd -shared -forever -bg -rfbport 5900 -cursor arrow -o /var/log/x11vnc.log
これで、自動起動の設定が出来たはずです。
1度OSを再起動しましょう。

再起動が終わったら、手元のVNCクライアントから
ポート番号5900番に接続してみて下さい。
パスワード認証されると思います。先ほど設定したパスワードを入力すると
無事接続できると思います。



2013年11月26日火曜日

Linux mint MATEのパッケージダウンロードを高速化する

Linux mint はデフォルトで海外のサーバ参照していてダウンロードが遅いので
下記を変更して日本のサーバを参照するようにして高速化することが出来ます。
apt-get等で遅いと感じる場合はやってみると何倍にも速くなると思います。


/etc/apt/sources.list
内の、
deb http://packages.linuxmint.com/ maya main upstream import
↓
deb http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages/ maya main upstream import


http://archive.ubuntu.com/ubuntu/
↓
http://jp.archive.ubuntu.com/ubuntu/
と書き換えます。
ついでに、Medibuntuプロジェクトが終了したので、下記をコメントアウトします。
# deb http://packages.medibuntu.org/ precise free non-free
以上で、高速な通信によりパッケージのインストールやアップデート、日本語化等が
かなり高速化されます。

2013年11月4日月曜日

Numer0n 作ってみた

久しぶりに夜な夜なPythonでNumeronを作ってみた。
色々ひどいコードになってしまった。
とりあえず突貫で動けばいいやレベルで作った感じ。

https://github.com/falconws/Numer0n/blob/master/numeron.py

Python 2.7.4 でコンソールから実行して動作確認しています。

絶対なんか色々変なコードな気がする。
突っ込みを入れて欲しいです。
# 実はEmacsの操作の練習も兼ねてたりする。

2013年10月18日金曜日

Proxmox VEを検証してみた

Proxmox VE
http://pve.proxmox.com/wiki/Main_Page

を検証してみました。
理由は、今VMware ESXiを自宅の仮想化インフラとして使っているのですが
無償版ユーザを切り捨てる感じに動いているようなので、このままESXiを使い続けることは
難しくなるのではないかと移行先を探してのことです。
また、以前より自宅にはLinuxマシンしかないので ESXiの管理コンソールがWindows版しか
無い点に不満を持っていたのも理由です。
(※wineを使ってもvSphere Clientは動作しません)

Proxmox VEとは、Debianベースで構築されたKVMアプライアンスサーバです。
公式サイトから1つの .iso ファイルをダウンロードしてきて、CDに焼いてサーバに
インストールするだけで、Webサーバが立ち上がって他のマシンからhttpでWeb接続して
ESXiのように仮想マシンを作成したり設定したり操作したり出来るというもの。

インストール自体はとても簡単で10分〜15分程度で終わります。
終わったら他のマシンから
https://<サーバのIP>:8006/
へ接続するだけで、すぐに管理画面を利用できます。
※アカウントは ユーザIDが root パスワードはインストール時に設定したもの。

色々検証してみたものの、乗り換えには使えないと判断して断念しました。

以下Proxmox VEがダメなところ
1. 日本語の情報、英語の情報ともに少ない。
  特に日本語の情報なんて皆無と言っていい程に少ない。日本じゃ使われてないのかな?

2. Linux版Google ChromeやFirefox等から仮想マシンのコンソールを開こうとしたら開けない(エラー)。
  公式フォーラムで聴いてみたところLinuxにバンドルされてるOpenJDK使うんじゃなくてOracleのJava使ってテスト
  してみたら?とのこと・・。
  OpenJDKで動かないとか割と面倒。
http://forum.proxmox.com/threads/16397-Can-t-connect-VM-via-Linux-Web-Browser?p=84455#post84455

3. ESXiのようにOSインストール用のisoファイルが大量に置いてあるNFSサーバをマウントする時に不具合がある。
  NFSサーバマウント先の
  【NFS root】/template/iso/
  ディレクトリ直下しかISOファイルを参照しない仕様になっている模様。
  これでは不便すぎて使えたものじゃない。致命的な仕様上の欠陥はこれ。

4. 全体的になんか不安定
  コンソールに接続できなかったり微妙に不安定な感じ。

5. WindowsゲストにVirtIO Driverをインストールするのがちょっと煩雑
  手順が若干面倒。VMware Toolsみたいにお手軽にさらっと入らないものか。

6. spiceプロトコルで接続するにしても不便
  RDPみたいにお手軽には出来ない。色々面倒なことが多い。


全体的に面倒だったり不安定だったりで乗り換える気にはなれませんでした。
VMware ESXiはWindowsが無いと管理画面が使えない点が最悪ですが、地味に色々便利で扱いやすいです。
何か代替え探さないと仮想化環境難民になってしまう・・・・・・。
XenServer? いやーオープンソースで仮想化やるなら基盤はKVMでしょ?とか思う今日この頃でした。

2013年9月18日水曜日

シェルスクリプトで拡張子を簡単に取り除く構文

今まで知らなかったのでメモ。
こんな簡単に拡張子を取り除けるのか・・・・。
今まではわざわざbasenameとか使っていたのに。
for i in *.ts
do
    echo ${i%.ts}.mp4
done
とかやると、拡張子 .ts のファイルから .tsを取り除いて【${i%.ts}の部分】
その後.mp4を付与することが出来る。
これが何の役に立つかって、例で示したコードだと .tsファイルを.mp4へ
エンコードするときとかに役立つ。
今まで結構拡張子を変更したいとき煩雑なコードを書いてた気がするので、これは
かなり楽でスッキリしたコードになるなぁと。

2013年8月27日火曜日

WZR-G108 Buffaloのちょっと古い無線ルータ不安定

WZR-G108 を実家で長い間使用しているのですが、ちょくちょくルータが応答しなくなり不安定です。

ルータが応答しなくなったら、電源を抜いて強制的に再起動するしか復帰方法がない。
ルータのファームウェアも最新版(Ver 2.41)を用いています。

今日いい加減に嫌気がさして、設定を軽くメモして工場出荷時設定(初期化)に戻しました。
戻した後、メモした内容を元に設定を元に戻していき、不要なNATログ出力を無効にしたりして
ルータの負荷を軽くする感じにチューニングしてみました。
とりあえずこれで初期化したことによる効果を様子見で確認します。

本当は無線暗号方式は AESを使いたいのですが、AESで使っていると2日に1回ぐらいの割合で無線(Wi-Fi)が死に、強制再起動を余儀なくされるので断念して、脆弱なのは承知の上でWEPを使っています。

WEPだと当然非常に不安なので、MACアドレス制限を有効にしてセキュリティを高めてますが、これでも侵入しようと思えば、きっとパケットキャプチャされて通信しているMACアドレスを知られ、
そのMACアドレスに偽装(MAC Address Spoofing)してWEP暗号を破られれば
侵入されちゃうんでしょうね?うーん・・・・。

この問題を考えていて、任天堂DSがWEP暗号しかサポートしてない問題を思い出しました。
この例によらず、昔売られていたハードウェアは開発が止まりファームウェアも更新されなくなるので、こうなってくるとやはり新しいハードウェアに買い替えしかないのでしょうか?

実家に、「Avel Link Player2」というネットワークメディアプレイヤーもあるのですが
これも昔のままファームウェア更新が止まっているので、最新のH.264形式の動画を再生できなかったりして、コーデックを自分で追加することも出来ず困っています。
最新のハードウェア買い替え以外に何か対策がないものか・・・。
最新のハードウェアに買い換えてもいいけど、また年月が過ぎたら古くなって使い物にならなくなるのが目に見えてるので
物理的に壊れてしまうまで使いたい性格の自分としては、なんだかなぁと。
継続的に将来も有効に活用できるハードウェアの買い方をしたいものです。

2013年8月7日水曜日

Windows8を脆弱にして管理者権限を簡単に振りかざす方法

知り合いに「Windows8でWSH等のスクリプトがエラーで動かないんだけど?」と
相談されました。エラーの原因はスクリプト実行ユーザの権限不足なのですが
そもそもAdministratorsに所属しているのにおかしいな?
Windows7だとコントロールパネルからUAC(User Access Control)を無効にするとか
すれば、XPみたいな感じに使えますが、Windows8ではさらにセキュリティが強化
されており、それだけではまだスクリプトの実行は色々エラーが出る模様。

解決策は、下記を実行して管理者権限を開放する方法。

レジストリエディタで下記を修正。
キー:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

名前:EnableLUA

データ:0

ただしWindows8のセキュリティ機構を無効化しちゃうので、あまりオススメはしません。
本来ならそのスクリプトを実行する時にだけ権限を昇格させるような方法を模索
※ Linuxで言うところの sudo みたいな・・??
すべきだと思いますが、とりあえず動かすだけならこれで従来のスクリプトが動いたりします。

スマートフォンをリモコンにしてパソコン内の動画を再生!!

スマートフォン(Android、 iPhone)をリモコンにして、パソコン内に入っている動画ファイルを
再生できる、まさにパソコンをホームシアターにしてしまう面白いソフトウェアを導入してみました。

その名は「xbmc」。
参考にしたのは下記サイト(Windows版について書かれてますが参考になりました。)
動画をテレビとパソコンで再生「XBMCを使ってみよう 」

Linux mintでこれを導入してみた所、大変快適な動画視聴環境が出来上がりました。
実家に構築したのですが、家族が持つAndroid or iPhoneをリモコンに出来るので、新たに
リモコンを買ったりBluetoothやIrDA(赤外線)インタフェースをパソコンに増設したりしなくて良いです。
IPレベルで通信出来るので、同じLANに参加(Wi-Fiネットワークなら普通そうなってる)すればいいだけ。


Android版xbmcのリモコンアプリ
https://market.android.com/details?id=org.xbmc.android.remote

iPhone版xbmcのリモコンアプリ
https://itunes.apple.com/us/app/unofficial-official-xbmc-remote/id520480364?ls=1&amp;mt=8

どちらも無料。

そして、Linux側でやることは
ここ を参考に導入、設定するわけですが
ぶっちゃけそんなにたいしたことはしなくて良くて
sudo apt-get install python-software-properties pkg-config
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:team-xbmc/ppa
sudo apt-get update
sudo apt-get install xbmc
とコマンドを実行するだけでインストールできて
$ xbmc
とコマンドを打つだけでシステムがもう立ち上がります。
立ち上がったら、ここ を参考に日本語化の設定をします。
その後 ここ を参考にWebサーバを有効化します。

後は手元のスマフォから接続して操作するだけという簡単仕様。
大画面テレビに接続すればホームシアターが出来上がります。
そうでなくても、普通のモニタで見るにしても、例えばベッドで横になりながら
色々動画見たい場合等、キーボードやマウスで操作するのが面倒だけどダラダラ
見たい時に、手元のスマフォでリモート操作できて大変便利ですw

以上、ちょっと駆け足気味に軽く紹介しました。

2013年8月1日木曜日

Linuxシステム全体をイメージファイルにバックアップする

実家にちょっと特殊に作り込んだLinuxサーバを構築したのですが
万が一システムが吹っ飛んだりしたらものすごく苦労したので目も当てられません。
なので、システム全体をバックアップして万が一に備えたいと思います。

バックアップの種類は色々あると思いますが、今回はOSそのものをイメージファイル
形式にバックアップできるソフトウェアという条件で探しました。

もともとpartcloneというツールを使ったことがあったのですが、このツールだと
マウント済みのシステムはバックアップが取れないので、ssh経由でバックアップする
とかが出来ず、USBメモリからLiveシステムを起動してバックアップしてと
物理的に手間がかかります。

今回使ってみたのが mondo rescue というツール。
以下手順。(検証はUbuntu 12.04 LTS版 32bitで行いました。)

すんなりapt-getで入らないので、下記コマンドを実行してインストールします。

$ cd /etc/apt/sources.list.d/
$ sudo wget ftp://ftp.mondorescue.org/ubuntu/12.04/mondorescue.sources.list
$ sudo apt-get update
$ sudo apt-get -y install mondo
マニュアルを読みたい場合は下記で。

$ man mondoarchive
日本語の情報ではこちらのサイトが非常によくまとまっておりました。

http://www.asahi-net.or.jp/~aa4t-nngk/mondo.html
ただし、情報が古いのかわからないのですが、特定ディレクトリを除外するオプション
である「-E」オプションの使い方がちょっと最新のmondoだと違うっぽいです。
manを見て気付きましたが、上記サイトには

# mondoarchive -E "/some/path /another/path"
といった形でダブルクォートで全体を囲みつつディレクトリはスペースで区切ると書いてありますが
manによると
# mondoarchive -E "/some/path|/another/path"
のように、「|」(パイプ)で区切るのが正しいようです。
私の場合、下記コマンドでバックアップしてみました。
$ sudo mondoarchive -Oi -L -d /mnt/500g/backup/mondo/ -6 -S /var/mondo/scratch/ -T /var/mondo/tmp/ -E "/var/data|/mnt" -s 44800m
一応採用したオプションの意味を書きますと -Oi → ISOイメージ形式にバックアップする
-L → LZO形式に圧縮する(gzipやbz2より良いと個人的に思っている為)
-d → どのディレクトリにバックアップするか
-6 → 圧縮レベル(0で無圧縮、9で最高圧縮です。)
-S → scratch作業用ディレクトリ(適当な空ディレクトリ指定で良いようです)
-T → tmpディレクトリ(適当な空ディレクトリ指定で良いようです)
-E → バックアップから除外するディレクトリの指定(/var/data/ と /mnt/ を除外しました。)
-s → 出来上がるISOファイルの最大サイズ。このサイズを超えると分割されます。1ファイルにまとめたかったので適当に40GB程を指定して分割されないようにしています。
バックアップが終わったファイルは3.5GBになりました。
バックアップ対象は6.2GBなので半分よりちょっと大きいサイズになったという感じでしょうか。
-6指定を-9指定にすればもっと小さくなるでしょうが時間かかりそうなのでやめておきます。

まだリストアの検証はしていませんが、もしリストアする機会がありましたらまた記事書くかもです。
※業務で使うならちゃんとリストア検証もしておきましょう・・w

-- 追記 --
mindi パッケージが「認証されていません。検証なしにインストールしますか?」といった
警告が出てきてしまいますので、下記コマンドを実行しておきましょう。

$ wget ftp://ftp.mondorescue.org/ubuntu/12.04/mondorescue.pubkey -O - | sudo apt-key add -

2013年7月12日金曜日

Linux mint MATE関連シェルスクリプト

Linux mint MATE クリーンインストール時の自分用スクリプト。
日本語化
#!/bin/sh

wget -q http://linuxmint-jp.net/linuxmint-ja-archive-keyring.gpg -O- | sudo apt-key add -
sudo wget http://linuxmint-jp.net/sources.list.d/linuxmint-ja.list -O /etc/apt/sources.list.d/linuxmint-ja.list
sudo apt-get -y update
sudo apt-get -y dist-upgrade
sudo apt-get -y install mint-gnome-ja

xrdp日本語キーレイアウトFix
#!/bin/sh

cd /etc/xrdp
wget http://www.mail-archive.com/xrdp-devel@lists.sourceforge.net/msg00263/km-e0010411.ini
mv -v km-e0010411.ini km-0411.ini 
chmod -v 644 km-0411.ini 
ln -sv km-0411.ini km-e0010411.ini 
ln -sv km-0411.ini km-e0200411.ini 
ln -sv km-0411.ini km-e0210411.ini

2013年3月17日日曜日

Linux MINT Mate Compiz 有効化


ちょっとメモ程度に貼り付け。

How to install compiz on Linux Mint 14 Nadia Mate edition:

1- install the followig packages:

- compiz-gnome
- compizconfig-settings-manager
- fusion-icon
- compiz-plugins-extra
- libdecoration0-dev

2- In terminal run "compiz --replace" or run Compiz Fusion Icon and choose compiz as your window manager.

3- Go to Startup Applications click on add and in the name field write "compiz" and in the command field enter "compiz --replace"(without the punctuation) click on Add again then Close. This is to make compiz start automatically on next logins.

4- To stop that high CPU usage run in terminal “mateconf-editor”. When the editor opens go to /desktop/mate/session/required_components/windowmanager and replace "marco" with "compiz".

3- install "dconf-editor" by runnig in terminal:

sudo apt-get install dconf-tools

Then press ALT + F2 and run: "dconf-editor", navigate to org > gnome > desktop > vm > preferences and change the "theme" value from "Adwaita" to any other installed theme you want. Remember this because in the same place you can also change the window button layout, among others.

4- Start the Compiz Configuration Settings Manager and check "Move Window" and "Move Window" and any other functions you want to activate.



5- To remove compiz with all related packages (dependencies) run in terminal:



sudo apt-get purge compiz compiz-plugins-main-default libcompizconfig0



Warning: Removing compiz also removes the packages unity & ubuntu-desktop.

Warning: Removing libcompizconfig0 also removes ubuntu-tweak.

Thus you will lose the ability to log into the unity or unity-2d desktops if you have them installed on your Mint.

Note: if you uninstall compiz you have to prompt a terminal and run “mateconf-editor” and when the editor opens go to /desktop/mate/session/required_components/windowmanager and replace "compiz" with "marco".

Note: compiz has been forked for Mate a few months back. You can find it at http://forums.linuxmint.com/viewtopic.php?f=217&t=114613 with a complete tutorial as on how to install it !! Check it out It rocks!!

2013年3月16日土曜日

プログラミング生放送勉強会 第21回@福岡 #pronama 参加その後・・

プログラミング生放送勉強会 第21回@福岡 #pronama
参加してきました。

プロ生なるものを初めて知ったのですが、プロ生ちゃんマジ天使
面白そうだったので参加しました。

参加を決める決定打は、アセンブラに関するセッションがあること。
以下自分なりに軽くまとめます。

1. ディスプレイよりこっち側をプログラミング

組み込み基盤になんかマリオのコインの音出力させてた。
まぁこういう世界もあるんだなぁと、ハードウェアプログラミングとは
無縁の私にはよくわかりませんでした・・。すみません。

2. Androidのテストってどないすんねん!

自分が一番関わる可能性が高い、一番実務的に勉強になったのがこのセッション。
会場のメモそのまま貼り付け。
--
UIテストの自動化(バージョンアップ時、新機種登場時)
- Android SDK標準のテスティングフレームワークは使いづらい

ドメインロジックの分離
・Webアプリケーションとアプローチは同じ
(何でもActivityに書くのはダメ)
・Androidに依存しなければJUNITで普通にテストが書ける。
 JUNIT4とか使える

画面構成に依存したテストは書かない
NativeDriverを使用する

Activityを操作するDriverクラスを作って、Driverクラス経由でActivityを
操作してテストする

Androidでテストせず普通のJavaクラスとしてJUINTでテストする。
ビジネスロジックの品質はこちらで担保

UIテストでは、NativeDriverを使うのが良い。テストを書くにも保守するにもコストがかかる。
リスクと費用対効果の観点から集中が必要。

設計段階でテスタビリティを考慮すること。

DI(RoboGuiceなど)やモックライブラリ(Mockitoなど)を導入する

テストカバレッジ100%はプロジェクトが炎上するから割り切りが必要。
--

3. 温故知新、アセンブリ言語を触ってみる

このセッション、実はこれが一番目当てのセッションで参加した。
セッション参加してみての感想としては、参加して良かった!
わざわざ足を運んだかいがあった!という感じ。
専門学校時代にCASL2をかじった程度の自分には内容は難しく感じたものの、
本物のアセンブリのソースがチラチラ見れたり解説がわかりやすく
大変興味深かった。
とりあえず「お〜!なるほど!」と思ったのが
--
xor eax,eax でeaxは0になるんだよね(move eax,0 よりはやい) 
--
即値(リテラル)を使うより、上記のように0を算出したほうが高速に動作するらしいという事。
専門学校時代に「XORっていうのは、違ったら1で同じだったら0になるんだよ!」
と習ったのを思い出しました。
上記のソースで言うと eaxとeaxは同じものだから、必ず0になるんですね。


4. FPGA でおれおれコンピュータつくるよ

プレゼン中にプレゼン資料をWindowsのペイントで手書きしながらプレゼンするという
発表スタイルが周りの笑いを誘うw
内容は難しく正直ほとんど理解できなかったのが私の未熟なところ。
いやーしかし凄い、頭の中に全部入ってないとあんな即興的なプレゼンは
出来ないと思う。天才なんだろうなぁ・・・・・・。

以下LT(ライトニングトーク)があったんですが、一言書くとするなら
LISPer 怖ぇぇ・・・・・。

お疲れ様でした。


自分がなにかLTで発表するようなネタを持っているかな?と
考えを巡らせてみたりするんですが、特に凄いプログラミング能力を
持っているわけでもないし、話が得意というわけでもなく
自分が得意なことと言えばLinuxの事かなぁ〜?ぐらいで
なんかまだまだLTとか出来る気がしません。
セキュリティの勉強会で自己紹介すら満足に出来なかったレベルじゃ
まだまだ敷居が高そうですね・・・・。