2013年7月16日火曜日

iTunesのファイルを外部ディスクに追い出す

現在自宅のメインマシンはMacBookAir(以下MBA)のみみたいな状況になっています。で、携帯はiPhone、タブレットはiPadという事で当然のことながらiTunesの管理はこのMBAを使う必要があります。

で、困ったことにこのMBAは世代が古いので外部ストレージへのアクセスは無線経由もしくはUSB2.0からでないと出来ません。内蔵SSDは128GBのモデルなのでちょっとしたデータを保存しておく分には問題ないですが写真やiTunesの様なメディアファイルはディスクを激しく消耗します。

(今頃ですが)そして最近気付いたのは・・・実はiTunesって外部ディスクにライブラリ(メディアデータ)を保存する設定を指定てもiPhoneとかのバックアップファイルは内蔵ディスク固定というゴミ仕様。iTunes立ち上げる時以外は不要のこのデータが何故内蔵ディスク固定なのか理解に苦しみますが、こういう抜けた所が多いのもAppleのソフトの特徴なので致し方ないところですか・・・。

で、まぁ要はリンク張っちまえば外部ディスクに逃がせるだろって話でサクサクっとどかしてしまいます。移動してリンク貼るだけ。簡単。


$ mv /Users/<ユーザー名>/Library/Application\ Support/MobileSync /Volumes/<外部HDD名>/iTunes/MobileSync/
$ ln -s /Volumes/<外部HDD名>/iTunes/MobileSync/ /Users/<ユーザー名>/Library/Application\ Support/MobileSync


今回は外部ディスクのiTunesのフォルダにまとめちゃいましたが保存先はお好みで。また、ディスクを換えてパスが変わる場合はリンクを貼り直すためにリンクを消してから二行目のリンク貼る処理をすれば良いです。


$ rm /Users/<ユーザー名>/Library/Application\ Support/MobileSync
$ ln -s /Volumes/<外部HDD名>/iTunes/MobileSync/ /Users/<ユーザー名>/Library/Application\ Support/MobileSync


なんか40GBも空いたよ! 1/3もディスク専有していたとかマジで罪な仕様ですな。MBAのコンセプト考えるとこういうアプリが存在自体ちょっと信じられませんな。まぁ、マーフィーの法則通り気付いたらまた残量0に近づくんですけどね・・・。

以上忘備録でした。

2013年7月12日金曜日

Solarisでのユーザー追加

で、Solarisネタを続ける。

いっぱいあるillumosの中から

  • OmniOS ・・・ サーバー用の最小限の構成。こういうの好き。
  • XStreamOS ・・・ クラウド、Webの開発用

この2つをチョイス。が、VMware PlayerだとOmniOSはインストールが先に進んでくれないのでXStreamOSを入れてみます。同じインストーラっぽいけどこっちはちゃんと先に進んですんなりインストールが完了しましたとさ。

で、Solarisの事は全く分からない人なので

ユーザー追加するのどうやるんだろ!?

適当にコマンドを叩いてみる

# useradd -m hoge

エラーになるやん・・・

# useradd hoge
# mkdir /home/hoge

エラーになりますん・・・

どうしてー!?


http://d.hatena.ne.jp/yohei-a/20081231/1230693019


どうもこういう話みたいです。

ユーザー追加のコマンドあるし、ユーザーディレクトリを作成するオプションもあるのに不思議だねぇ・・・。

一応ちょっとここの書きこみ通りだとダメだったんで補足


# useradd hoge
# mkdir -p /export/home/users/hoge
# chown hoge:other /export/home/users/hoge
# vi /etc/auto_home
+auto_home
hoge      localhost:/export/home/users/hoge  <-- 追記


なんかファイルが変わっているみたいね

とりあえず今日はこれで満足なのであった・・・。

OpenSolarisの末裔達

ちょっと脱線してSolarisに手を出してみたよという話。

まず、一般人にはJavaで有名なSUN Microsystemsという会社があってSolarisというOSがありました。最近ストレージ系で標準になりつつあるzfsというファイルシステムはここ由来ですね。

とりあえずストレージサーバを自前で組むならSolarisを入れるのが鉄板と聞いています。で、そのSolarisの最新は11でExpress版というフリーっぽい物もある様です(ちゃんとライセンス調べてないけど一応ダウンロード出来てVMwareでも動くのは確認した)

まぁ、今回の話は全然それには関係無くて・・・w

そのSolarisという市販OSにはOpenSolarisというオープンソース版がありました。これはSUNが提供していたものなわけですが・・・そのSUNがOracleに買われた事によりOpenSolarisは終焉を迎えます。元々OpenSolaris自体もアクティブな感じではなかったのですが止めを刺してくれました。ホントろくなことしないな、この会社は。

で、ここで血脈が絶たれていたと思っていたのですが、実はまだ生き残っている事が判明。とりあえずこんな感じみたいです。



いっぱいありすぎだよママン・・・。

とりあえずZFSを使用しようとするとLinuxのfuseとかは除くとSolaris、FreeBSD(とその派生)位しか選択肢が無いという印象だったんですがこちらも選択肢としてはアリかも??問題はillumosカーネルがどれだけ安定しているかなんですけどね。

VMware上のlinuxでカーネルの再構築 その3 もう少し煮つめてみよう編

Hyper-V用のカーネルを作る話をもう少し続けてみます。

どうもパッケージ名に関してはこんな感じで良さそう



$ time sudo make-kpkg --revision=0.2 --append-to-version=-hyperv kernel_image


これで「linux-image-3.10.0-hyperv_0.2_amd64.deb」という名前の物がはかれます。参考にしたページは古いのかこのオプションがどちらかしか入っておらず、--revisionの方は数字からスタートじゃないとおこられるし、--append-to-versionだけつけるとなんかバージョン番号の所にも同じ文字が入ってしまって長い名前が生成されてしまうという状況で前回のPOSTにはこの辺のオプションを含めていませんでした。やっぱり情報の鮮度って重要ですな・・・。


<閑話休題>


その2で作ったカーネルが何故期待した動きにならないのかという点。

まず、CONFIG_MEMORY_HOTPLUGがオンになっていないのではないかという指摘。確認確認・・・。入ってないじゃんorz これが無いとMemory Hot-addがちゃんと動かないのかな?

とりあえず下記の場所で設定出来る模様。


Processor type and features  --->
  [*] Allow for memory hot-add
  [*]   Allow for memory hot-remove


その他忘れ物達


Device Drivers  --->
  SCSI device support  --->
    [*] SCSI low-level drivers  --->
      <M> Microsoft Hyper-V virtual storage driver


大事な物忘れていましたなorz


あとdpkg -iで入れた時に/bootにinitrd.img-3.10.0-hypervが存在しない場合は以下の2ステップが必要でした。


$ sudo depmod 3.10.0-hyperv
$ sudo mkinitramfs -o /boot/initrd.img-3.10.0-hyperv 3.10.0-hyperv
$ sudo update-grub

まぁ、ここまでしてみたけどhot-addに関しては動いていない感じ。さらにいくつかデーモン動かして様子を見てみるとなんかネットワークが死亡する現象が。ダメだなぁこれは。

一応素のDebian7.1のカーネルだと動的メモリ拡張は動かないけど安定度という意味では普通に動いている様に見えるのでこちらの設定+Hyper-V関連というのも作ってみました。


結果・・・


-rw-r--r--  1 root root  4994468 Jul  8 14:31 linux-image-3.10.0-hyperv_0.3_amd64.deb
-rw-r--r--  1 root root 31629920 Jul 12 14:37 linux-image-3.10.0-hyperv_0.4_amd64.deb

すげーでかくなったw

でも結局安定せず同じように死んでしまいますorz

さてどうしたものかなぁ。

あ、ちなみにmemory hot-addに関してはHyper-V 2012 R2からじゃないと動かないんだ疑惑も出ていますがVMware上にHyper-Vサーバを構築という無茶をしてみた感じ動きは変わらずという感じ。さてはて・・・。

2013年7月1日月曜日

VMware上のlinuxでカーネルの再構築 その2 ビルドしちゃうよ編

作業ディスクの準備が出来たので早速カーネルを構築します。

3.8からHyper-V用のballoonドライバが入っているのですが、ちょっと試しにつっこんでみたところ、これにはちょっと問題がありました。

というのも確かに管理画面から見ると拡張RAMに対応してそうに見えるのですが、いくら最大値を設定していても起動時のメモリより多い方向には自動動的割り当てが走りません。これが出来るのは3.10からとの事。

で、丁度昨日(2013/6/30)に3.10の正式版がリリースされている様なのでせっかくなのでこいつを入れてみます。

まずはビルド用の前準備(開発環境とカーネルの設定、パッケージ作成に必要なものをそろえる)


$ sudo aptitude install build-essential
$ sudo aptitude install ncurses-dev
$ sudo aptitude install kernel-package


ソースは3.10の物をkernel.orgから落としてきて・・・


$ cd /usr/src
<ソースをコピーしておいて>
$ sudo tar Jxvf linux-3.10.tar.xz


展開します。必要なのか分からないけどlinuxという名前でリンクを作成。


$ sudo ln -s linux-3.10 linux


さぁ作業開始です


$ cd linux
$ sudo make mrproper
$ sudo make defconfig
$ sudo make menuconfig


ここでカーネルの構成を設定するのですが以下のポイントで設定しています


  • 初期状態だと不要だと思うけど全部設定を消す
  • 初期設定を揃える?為にdefconfigを設定してから開始
  • Hyper-Vに関連する部分は全て有効に


最終的な目標はHyper-V用の不要なドライバーを完全カットして、かつチューニングされたカーネルなわけですが、知識が足りていな過ぎて何をどう削ったらいいのかさっぱりわからない状況。

ヘルプを見るとなんとなくalldefconfig(デフォルト設定)をベースに設定すべきな気がするけど、試しにやってみたらドライバだけではなくカーネル系も殆ど何も無い状況になってしまって流石に設定ダルイ気がしたので・・・とりあえずdefconfigベースにしました。

で、問題はHyper-V関連の設定。このmenuconfigは依存関係のある物はコアの物を有効にすると初めて項目が現れる様なので手順通りにやらないと設定できません。とりあえずHyper-V関連は以下の手順で良いと思いますがチューニングという意味では色々足りなかったり多かったりするはず。今後煮つめていきます。



Processor type and features  --->
  [*] Linux guest support  --->
    [*] Enable paravirtualization code


にチェックするとHyper-Vの項目の設定が出来る様になるので(厳密にはparavirtualization codeはいらないかも)


Device Drivers  --->
  Microsoft Hyper-V guest support  --->
    <*> Microsoft Hyper-V client drivers
    <*>   Microsoft Hyper-V Utilities driver
    <*>   Microsoft Hyper-V Balloon driver


なんとなくHyper-V系の設定を一式ビルトインで設定

ここまで設定すると


Device Drivers  --->
  HID support  --->
    Special HID drivers  --->
      <M> Microsoft Hyper-V mouse driver


Device Drivers  --->
  Graphics support  --->
    -*- Support for frame buffer devices  --->
      <M> Microsoft Hyper-V Synthetic Video support


Device Drivers  --->
  [*] Network device support  --->
    <*> Microsoft Hyper-V virtual network driver



この辺を選べるようになるので設定する。基本サーバとして使う場合はネットワークは必須、HIDとVideoは多分いらないでしょう。

defconfigにここだけ設定したらとりあえずカーネルを作ってみます。

単純にビルド、自分のマシンに入れる場合はmake installで良いのですが、今回はここで作成したものをHyper-V上のdebianに入れるのが最終目標なのでmake-kpkgを使います。


$ time sudo make-kpkg kernel_image


これで「linux-image-3.10.0_3.10.0-10.00.Custom_amd64.deb」みたいなカーネルのインストール用パッケージが一つ下の階層(/usr/src)に作成されます。頭のtimeはビルド時間を測る為の物。本当は--revisionとか名前は何かつけるべきなんだろうけど今回は省略(というか長い名前ついてしまってビビったのでちょっと研究してから・・・)

これを入れて早速チェックしたんですが


$ scp linux-image-3.10.0_3.10.0-10.00.Custom_amd64.deb <username>@<host>:/home/<username>


とかやって入れたいマシンにコピーして、そのマシンにつないでから


$ sudo dpkg -i linux-image-3.10.0_3.10.0-10.00.Custom_amd64.deb


とかやって入れてやるとブートローダの設定までしてくれちゃうので再起動します。

が・・・


CentOS6.4やKernel3.8+balloonの時と同じで起動メモリ以上は自動的に増えねぇ・・・orz


さーってどうすっかな・・・


VMware上のlinuxでカーネルの再構築 その1 準備編(作業ディスクの追加)

とりあえずカーネルの再構築に際して作業用ディスクを追加します。

というのも

  • カーネルの再構築には結構なディスクが必要(多分6~7GB?)
  • 再構築した後はその領域はいらない

という2つの理由から新規にワークディスクをマウントしてそこで作業します。

ちう事で、構築ネタついでにディスクを増やす方法を。

手順は以下の通り

  1. VMware playerから新規ディスクを作成、追加する
  2. Linux上からパーティションを作成する
  3. Linux上からフォーマットをする
  4. Linux上からマウントをする

~まず1から~

新規のディスク作成は簡単。

  1. 仮想マシンの設定画面から「追加」を押す
  2. 「ハードディスク」を選択
  3. 「仮想ディスクの新規作成」を選択
  4. SCSIを選択
  5. 容量を10GBにして「仮想ディスクを単一ファイルとして格納」を選択
  6. 場所を指定して作成終了。

~次は2番のパーティションの作成~

1の新規作成後に再起動してディスクを認識している事を確認。


$ sudo fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008ecd3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    15988735     7993344   83  Linux
/dev/sda2        15990782    16775167      392193    5  Extended
/dev/sda5        15990784    16775167      392192   82  Linux swap / Solaris

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table


SCSIなのでsd[x]になっています。/dev/sdbが今回追加したものなのでこちらにパーティションを作成します。


$ sudo fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x5e5eaeb7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1 80  Old Minix
Hex code (type L to list codes): 83

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


これでパーティションの作成は終わり。一応確認します。


$ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdb1


sdb1が出来ていますな。


~続いて3のフォーマットする~


$ sudo mkfs.ext4 /dev/sdb1


以上w


~最後に4のマウント~

今回は/usr/srcで作業しようと思っているのでこちらに。


$ sudo mount /dev/sdb1 /usr/src


こちらも以上!

とりあえずこれで環境が出来ましたとさ。続く!





2013年6月20日木曜日

Greylisting

現在使用中のメールサーバのGreylistingには有名どころのpostgreyとかsqlgreyではなく(前の鯖はsqlgreyだったな)、なんとなく多機能そうなPolicydを採用しているんだけど、どうもきちんと動作していない気がしてログを確認してみたらperlのモジュールが色々足らずにワーニング出てた。

/usr/local/lib/perl5/site_perl/5.12.4/cbp/modules/CheckHelo.pm 31
use Net::DNS::Resolver;

/usr/local/lib/perl5/site_perl/5.12.4/cbp/modules/CheckSPF.pm line 30
use Mail::SPF;

/usr/local/lib/perl5/site_perl/5.12.4/cbp/protocols/Bizanga.pm line 28
use URI::Escape;

多分Greylisting自体は動いていたと思うんだけど、どうも一度効果が疑わしいって事でDBのデータを直接手で消してから変になってしまっている気がしてならない。

まぁ、何はともあれモジュールのインストールをCPANでしましょう。

# perl -MCPAN -e shell
cpan[1]> install Mail::SPF

これ1つで上記3つ全部入ったっぽい?
インストール済みのモジュールは

# find `perl -e 'print "@INC"'` -name '*.pm' -print

これで確認出来るんだとさ。見てみたら全部入っていてデーモンの再起動かけたらワーニングもログに出なくなったので多分これでやっとちゃんと動いたんだと思う。

まぁ、それはそうと実際の効果がイマイチ実感できない(結構SPAMがすり抜けてきてる)ので各機能の効果の統計をとりたいところ。

元々GreylistingはSPAM用にチューニングされた本来必須の再送しないでモリモリ投げ続けるシステムにだけ効果がある仕組みなわけで、BOTネットワーク使うから効率とかどうでもいいやーなんて力技になったら対処出来ないからねぇ。そこの見極めをしたいところ。

で、管理用のWebアプリは本当に最小限の機能しか無いみたいだしログから頑張って解析するしか無いのかなー。折角自前でやっているんだし、もう少し設定を煮つめて効果確認をしよう。

というか、どうせなら自前で分析まで行えるPolicyサーバとか作ってみるのも一興ですかねぇ。

2013年6月6日木曜日

Linodeさん素敵

VPSという名前が流行りだす前からこの手の仮想化のサービスには興味があり色々借りちゃ解約を繰り返していたけどずっと使い続けているところがあります。

Linode!!

Parallels(最近影薄いよね)とかを使っていない所はコンパネとかが無かったりしょぼかったりする中、凄い出来のいいコンパネを準備していて、かつサーバもド安定の鉄板な会社です。

で、年単位で落としていなかった鯖をなんとなく惜しい気もしながら久々にシャットダウン。リプレースの為に中身を総入れ替えをしようとしていて気付く。

あれ?ディスク増えてる??

しかもよーくよーく見ると・・・「アップグレード出来るよ!」とか書いてあります。

半信半疑で押したら・・・メモリが倍になりました(^v^)

太っ腹だぜ!

さくらなんかは同じ値段でどんどんサービスが良くなるけど、こういうアップグレードパスは用意してくれなくて自分で別サービスを契約して手動で移動させないといけないんですよねぇ。

ああ、快適すぎる。他の会社も見習って欲しいゾ!

っと珍しく大絶賛で終わります。

2013年6月4日火曜日

CentOSにハマル

今回CentOSを使用した環境を構築していてハマったのでメモ

1.nginxが無い

なんかいつの間にかメジャーになってしまったので今時無いとか・・・と思うケド、まぁちょっと前まではマイナーソフトだったしパッケージ化も遅れていたししょうがない?でも選択肢として初期状態でyumしても出てこないのは残念。まぁnginxの本家に対策方法が書かれていますが。

http://d.hatena.ne.jp/yoshi-ken/20120205

この辺を参考にすれば入れる事が出来ます。


2.gitが古い

まぁ、これはコチラの事情でしかないんだけどrhodecodeを入れようとしてハマったので。なんかコミットできないと思ったらエラー吐いてて内容がオプションがどうのこうの。要は1.7.4以上じゃないとサポートしてないオプションを使っているので1.7.1が最新のCentOSではイマイチでしたという話。

http://toybox.hatenablog.jp/entry/2012/11/13/194710

とりあえずこの辺を参考に新しい物にしておきました。

んまー、これってrhodecode側の事情でgitは最新じゃないとどうのという事はないし(多分)、rhodecodeはrhodecodeで古いバージョンの場合のサポートは入れるべきだと思うしどちらかというとCentOSに非は無いんですけどね。



今回は人様のページのリンクを張ってオシマイ。

まぁ、個人的には枯れている環境を維持するのは悪い事では無いけど、最新の物と枯れている物の選択肢があるとやりやすいよなとか思います。管理大変なのは分かっているしそこら辺も含めてのディストリビューションの選択なんですケド個人的はやっぱりこの辺を踏まえるとDebian系の方が使いやすいかな。あっちは一応トレンドは押さえてる感じがするし。ここら辺はセンスだったり大人の事情だったりするんでしょうけどね。

2013年5月23日木曜日

githubクローン環境を試す

ちょっと開発体制を見直そうぜって事で流行りものを一通り試そうという事に。

まずはソース管理関連。githubみんな使ってるぜみたいな感じだけど何出来るのかサッパリわからんので触ってみたかったのですよ。

で本家は仕事に使うにはコストがかかるのと(実際は自前だと社員が動く分の管理コストかかるんだけどな)その他諸々の問題(単に組み込み関連の世界って古い考え方が残っているので人様のサーバに成果物を置くのはNG的な風潮がある。個人的にはクソクラエなんだけど世間体もあるので。)でクローンを試してみる事に。

どうでも良いけどgitにはcloneというコマンドがあるのでググると違う物いっぱい出てくるゼ。

ちょっと調べたら


まずこの辺りデスか。なんとなくその中のrhodecode、そしてその後にgitlabをまず試してみました。

結論からいくとどちらも何も入れていない素のサーバ(今回はdebian7を使用)に入れるという前提であれば何も考えずにインストールマニュアル通りにやったら動きました。

gitlabは最終段の機能チェックみたいなところで「sidekiq」とやらが動いていないとか起動スクリプトが古いとか怒られるんだけど確認するとどちらも問題無さそうなのでスルーでok。それ以外のハマりポイントは説明読みながらコピペ、もしくは適宜設定していれば問題無し。

パッと見の印象としてはgitlabの方がissue管理とかwikiとかコラボ用の機能があるので高機能っぽい。でもrhodecodeの方がインストール楽だしアカウント管理はLDAPとかに対応している分そういうので共通化したい場合は楽かも。という感じ。動作速度はあまり体感差は無いかな。

個人的にはrubyってパッケージを使っていたとしても依存関係の問題で環境構築でハマる事が経験上多くてアレルギーがあるので極力避けていたんですが、今回のgitlabはすんなり入ったものの(最近流行の仮想化環境での構築が功を奏してるんだと思います。まぁ、それでもruby自体はパッケージで入れるとおまけが多すぎるのでソースからビルドしたり色々周辺を整える必要があったので面倒なのには変わらないですが。あとこの仕組みが流行ってるのもみんな環境構築にハマってるからでしょうなぁ。)やっぱり手数が多くて構築、メンテナンスを考えるとpythonで動いているrhodecodeの方が分がある気がします。

ただ、もともとgithubとは何ぞや?何が便利?という疑問にはまだ回答を得られていません。少しさわってみただけでは正直現状はソースの中身や履歴がWebから簡単に見えるぜウヒョヒョーってな位の理解でしかないので何が便利なのか皆目見当もつかず。WindowsでGUIのクライアント使っているのと比べたアドバンテージって何?って感じです。

いや、多分git等分散型になった事によって履歴を追う事、マージをする事が複雑になったのでそれをアシストする為に中央にこういうサービスを置いて情報を集約していかないとやっていけないという話なんだろうなと思うんですけどね。でもなんかシックリ来ない。運用のイメージをもっと固める必要がありそうです。


というわけで、もうすこしいじってみる、本家やgitoriousみたいなサービス提供しているものをアカウント作ってさわってみるのも必要かなと思っているのでどれを使うか、どう使うかの結論はもう少し後回しデス。

またissue/bug trackingとかwiki/forumみたいなものと絡められるの?とかプロジェクトを回すための環境という意味ではそういう部分までセットで考えるべきかなと思っているのでそちらの方も見ていきたいトコロ。

そういえばログインを共通化するOpenIDとかって仕組みがあったと思うんだけど複数のサービスをシームレスにつなげられる仕組みって無いのかなぁ。LDAPとかでIDだけが共通になっていてもイチイチログインし直しとか、画面またぐの面倒とか色々想像出来てしまうんだけど・・・多くを望みすぎ?

2013年4月15日月曜日

IntelのNIC

ちょっとテスト用に簡単なサーバを構築という事で某ショップブランドの店でサーバー機ではなく普通のi7なデスクトップを一台購入。なんとなく2nd NICにIntelのPro/1000 GTを追加(つかオンボードが蟹だからメインになるんですが)

このGTが失敗でした・・・orz

今回の目的は「新しい技術を体感しよう」なので疑問ももたずにHyper-V Server 2012をインストール。最初の設定作業がホボCUIオンリーな世界に戸惑いつつ最初の仮想マシンとしてWindows Server 2012を入れました。

で、よく見たらIntelのNIC認識していないわけですよ。蟹は認識しているのに。

個人的な妄想では「Intelは最強。安定しているし、何も用意しなくても勝手に認識される。」と思っていましたが幻想だった様です。

何でかと言うと・・・

このボードWindows8対応してねぇぇぇぇ

Windows Server 2008 R2やWindows7までのドライバはあるんですよ・・・。でもWindows8はオフィシャルサイトにもダメと書いてありましたとさ。トホホ。PRO/1000系ってもう過去のモデルなんですねぇ。ネットで調べると大抵このボードが鉄板ってあるからそういうもんだと思っていました。(後に書く様に今回の環境じゃなければ問題無いんですけどね)

というわけでIntel Gigabit CT Desktop Adapterをとりあえず追加オーダーしましたよ・・・と。まぁ、実はショップブランドで構成決める時にこのボードあったんですが上の様な妄想があったので調べもせず、よくわからんけどCTよりGTの方が強そう(アホ)とかって適当に選んだのでした・・・反省orz

他にも重要なのは仮想マシン側のOSなんでベースをHyper-V Server 2008にするとか(ぶっちゃけショボイPCでは2012である必要性はほぼ無いので)、ベースをVMware ESXiにするとかってのも選択肢なんですがね。

まぁ・・・自腹じゃないし最新の環境を作るという事で・・・テヘッ

2013年3月11日月曜日

ターミナルのフォント

今までsshのターミナルにはTeraTermを使い続けてきましたが最近ふとしたところからputtyを使う様になりました。別にTTSSHに何か不満があったわけでもないんですけど、本当になんとなくです。(ふと昔一緒に仕事していた会社のIT管理をしていた人が熱狂的なputtyユーザーだったのを思い出しただけ)

っとこれは実は今回のエントリーの本題では無くて・・・本題はフォントの話デス。

そのputtyのフォント設定をなんとなくTerminalにしていたんですが、これが最近の安ノートPCの液晶(WXGA1366x768)であれば特に問題無かったのですが職場の24インチ1920x1200のモニタだと10ptでは小さすぎる、次のサイズの14ptではデカすぎるとイマイチ勝手が良くない。

というわけで代替えフォントを探す事にしました。少しググるとこんな記事が。

http://d.hatena.ne.jp/shibason/20100902/1283424768

ここに紹介されているInconsolataをためしに入れてみるとナカナカ良い感じに見える。ただし記事にも書かれている様に日本語のフォントは入っていないので日本語を含んだ表示をすると残念なことになります。(昔昔680x0系のMacにNetBSD + X-Windowを入れてなんとか日本語化したなんて時代を思い出す感じですな)



こんな感じ。かといってここに書かれているFontLinkを使用する方法はレジストリをいじるのでなんとなくやりたくない。(別に問題になる根拠はないんだけど)

じゃー、もともとソースが公開されているフォントだし自分でマージして1フォントとして用意されている方が楽だし後で別の環境で使う場合も気兼ねなく使えるじゃないという事でFontForge関連をパラパラ見ていたらやはり同じことを考えた人がいて作っている人がいました。

http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/rictydiminished.html

で、試しに入れてみたんですが



なんか同じデータのはずなのに素のInconsolataとは印象が違いますネ・・・。eとかの上部が欠けていたりしてなんとなく気持ち悪い。あと、なんとなく元の方が線が太かった気がするんですがboldを指定すると太すぎるしバランスが・・・。不思議なもんですな。

これだけではネタとしてアレなので無印Rictyさんを自前環境で作ってみる事にします。FontForgeのWindows版はなんか色々面倒臭そうな雰囲気だったので、丁度別用途の為に作ってあったUbuntu環境で生成してみます。基本ドキュメントに書いてある通りなのでここを見る必要はないハズです。

$ sudo aptitude install fontforge

でサクッとFontForgeをインストール。

お次はフォントデータ及び変換スクリプトを入手しましょう。

$ wget http://www.levien.com/type/myfonts/Inconsolata.otf
$ wget 'http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fmix-mplus-ipa%2F57240%2Fmigu-1m-20121030.zip'
$ wget https://github.com/yascentur/Ricty/archive/3.2.1.zip

リンクは今現在のリンクなんで変わってたら適当に読み替えてね。sourceforgeの方はURLを''でくくるのを忘れるとぷんぷんする事になりますよ。

圧縮されているものは展開してインストール。とりあえずUbuntuは全ユーザで使える様にフォントを入れるには/usr/local/share/fonts/にコピーすれば良いらしい。

$ mv redir.php\?m\=jaist\&f\=%2Fmix-mplus-ipa%2F57240%2Fmigu-1m-20121030.zip migu-1m-20121030.zip
$ unzip migu-1m-20121030.zip
$ sudo cp migu-1m-20121030/migu-1m*.ttf /usr/local/share/fonts/

$ sudo cp Inconsolata.otf /usr/local/share/fonts/

$ unzip 3.2.1.zip


そして変換開始。

$ cd Ricty-3.2.1/
$ sh ricty_generator.sh auto

しばしほっておくと「Ricty-Regular.ttf」と「Ricty-Bold.ttf 」等が出来上がっているのですがWindowsに入れてみると字間が凄い事になっています。 大分前に発覚している不具合らしいんですが未だに直ってないっぽいですね。というわけで

$wget https://raw.github.com/yascentur/Ricty/3.2.1/misc/os2version_reviser.sh

こちらのスクリプトを使用して変換してやりましょう。具体的にはOS/2バージョンとやらを4から1にするらしいのですが意味はサッパリわかりませんw FontForge上で手動でやってもOKの様です。

$ sh os2version_reviser.sh Ricty-*.ttf RictyDiscord-*.ttf


これで出来た物をWindows側にもってきたら終了です。

よくよく作者さんのページを読み直してみるとWindows環境では文字が小さい時に綺麗に表示されない(文字が欠ける)という事は書かれていましたね。というわけでついでにサイズを13pt(リストには13無いけど手入力で)にして色を上のサイトに書いてあるのを真似して調整してみました。



良い感じですな!しばらくはこれでいってみましょう。

しかしなんだ。もしかしてこれより小さい文字で使う場合はMigu 1Mを素のまま使った方が幸せだったりする!?ショボイ液晶のノートとかだとこのサイズデカすぎるしなぁ。




追伸

ついでと言ってはなんですがこのRictyのスクリプトを使用してTakaoゴシックとの混合版も作ってみました。

$ ./ricty_generator.sh -n takao ../Inconsolata.otf ../takao-fonts-ttf-003.02.01/TakaoGothic.ttf ../takao-fonts-ttf-003.02.01/TakaoGothicS.ttf
$ sh os2version_reviser.sh Rictytakao-*.ttf RictytakaoDiscord-*.ttf

前に書いたautoの時は勝手にインストール済みのフォントから拾ってきたみたいですが、こちらの書き方はソースになる実フォントファイルのパス指定になる様です。適当に読み替えて下さい。一番最後の指定ってbold用のフォント指定らしいのですが最終的にインストールしないので適当です。

2013年2月19日火曜日

高負荷状態のルータの内情 その1

普段あまり使う機会が無いといえば無いし、一般的な用途には下火な印象もあるBitTorrentみたいなP2Pだけど、ああいう物でネットワーク的に負荷?をかけるとルータのレスポンスが著しく落ちるのは何故なのか前から興味があった。

昔のルータは少し負荷をかけるとそのまま逝っちゃってリセットしないと復旧しなかったりしたけど最近のはFONみたいな安い奴でも落ちずに粘るし、そういう意味でもメカニズムに興味が。

丁度?FONルータのファームを書き換えられる環境が整ったので(基盤からシリアルの足生やしてUSBシリアル変換アダプタ買ってきて繋いだだけだけど)カスタムファームを入れてtelnetでつないで状況をウォッチしてみる事に。

結果としては・・・softirqが99%とかになっておりここが問題っぽい。そしてdnsmasqタスクが結構な高負荷になっている事象は観測出来た。ただしdnsmasqは常に高負荷なわけでは無さそう。ソフトウェア割り込みでフン詰まっているのは間違いないんだろけど割り込み要因が問題。

softirqに関してはカスタムファームのKernelであるLinuxの仕組みという事で良いと思うんだけど、実際キャパやその処理能力を超える割り込みが入った場合の挙動は勉強不足でよく分からない。何かツールとかでその瞬間に入っている割り込み種別とかプライオリティとか確認する方法あるのかな?Linuxでの開発ってした事無いのでこちらも勉強しないとね。

ルータのファームってLinuxとは限らないと思うけど他のOSでも同じ事が起きるのだろうか?基本的にP2Pって同時に張られるセッション数が凄い数になっているんじゃないかと仕様も調べずに勝手に想像しているけど、単にそれが原因なのか、それともデバイスドライバの実装上の問題なのかはまず確認が必要かも。

いずれにせよサーバに負荷が集中して~ってパターンと同様の事象が起きているという認識であっているのかなぁ。だとしたらこの辺を勉強しておく事は仕事にもつながりそうだしちょっと調べてみますか。デバッグ手法に関してはAndroidの下回りとか開発するときにも生かせそうだしね。(無理やり紐づけてみる)

というわけで、その2につづく(はず)

2013年1月24日木曜日

sqlite.netのBOOLEAN型

sqlite.netを使ってプログラムを書いていてハマったのでメモメモ。

まず、sqlite自身にあまり細かい型が無い事は知ってました。そしてsqlite自身、それからsqlite.net側の処理として型が拡張されておりBOOLが使えるとの事なので試しにBOOL型(BOOLEAN型でもいけた)のところにTRUEを入れるSQLを書いてみる・・・入りました。 まぁ、文字列として入っているから当然なんですけど。で、、、C#で読み出してみると「false」が返ってきます。ヤッター!

なんでだろーっとソースコードを見てみると・・・テキストとして

「yes」「y」「1」「on」

trueとして

「no」「n」「0」「off」

falseとして処理されております・・・。

あれ?trueとかfalseは!?普通の感覚だとBOOLEANとか言われたらtrue/falseとかじゃないの!?

まぁ、その文字の判定の前に渡されたオブジェクトがbool型(C#的な)だったらboolとして処理するみたいな形になっているのでそれで満足してそれ以外の型で処理する様になっている様なのですが・・・そもそもsqliteにはbool型無いし、C言語(sqliteはCで書かれている)的にもbool無いしこの処理って意味あるのか!?

その前の処理までは追っていないのでそこで何やらやっている可能性もあるけど・・・まぁちゃんと値返ってきてないし無いわな。

<閑話休題>

ちょっと調べてみるとBoolean型自体はSQL的にはSQL:1999で定義されていてtrue/falseで処理出来る様です。なのでSQL的には間違った物ではないのですがsqlite3のドキュメントを読むと・・・「SQL92に一応準拠」との事。

まー、じゃあしょうがないよな・・・?

しょうがないよな!?

いや、やっぱりyes/noとか処理してるんだしsqlite.netでtrue/falseの判定すべきだろう。

まぁ世間一般的にSQLの世界としては規格化されていてもブッチしている実装はいっぱいあるわけで、BOOLEANもあまりサポートされていない存在らしいので深く考えずに数値型に0/1入れて処理しておくのが幸せになれる方法なんでしょうけどね。