CentOSでTimeMachineサーバを作る

Macを何台か買ったのを機に、その辺に余っていたハード使ってTimeMachineサーバを立てたメモ

環境

CentOS6.3(Minimalでインストール)

必要なパッケージを入れる


yum -y update
yum -y install wget cracklib-devel openssl-devel quota-devel libtool automake autoconf db4-devel pam-devel tcp_wrappers-devel libgcrypt-devel avahi-dnsconfd avahi-devel libacl-devel openldap-devel make lynx

nss-mdnsのインストール

avahiで使うので導入する


cd /usr/local/src
wget http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-0.10.tar.gz
tar xzvf nss-mdns-0.10.tar.gz
cd nss-mdns-0.10
./configure
make
make install

vi /etc/nsswitch.conf
hostsの行を下記の用に書き換え
hosts:      files mdns4_minimal [NOTFOUND=return] dns mdns4

netatalkのインストール


cd /usr/local/src
wget http://prdownloads.sourceforge.net/netatalk/netatalk-3.0.2.tar.gz
tar xzvf netatalk-3.0.2.tar.gz
cd netatalk-3.0.2
./configure --with-init-style=redhat-sysv
make
make install

バックアップを取りたいmacごとのアカウントの作成


useradd user1
passwd user1
su user1
mkdir ~/TM
exit

useradd user2
passwd user2
su user2
mkdir ~/TM
exit

以下、必要な台数分繰り返し

netatalkの設定


vi /usr/local/etc/afp.conf

[Global]
; Global server settings
vol preset = default_for_all_vol

[default_for_all_vol]
file perm = 0600
directory perm = 0700

[user1TimeMachine]
path = /home/user1/TM
valid users = user1
time machine = yes
vol size limit = 100000

[user2TimeMachine]
path = /home/user2/TM
valid users = user2
time machine = yes
vol size limit = 100000

以下、必要な台数分繰り返し

iptablesの設定


vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 548 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 548 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 5353 -j ACCEPT
service iptables restart

netatalkの自動起動


chkconfig netatalk on
service messagebus start
service avahi-daemon start
service netatalk start

これでmac側のTimeMachineのディスク選択に表示されるはず
mac側で見えるようになるまで時間がかかることもあるかも
vol size limitはHDDの容量と相談

EC2 + nginx + php-fpm

yumで何でもかんでも入れられて楽ちん

sudo yum install nginx
sudo yum install mysql-server
sudo yum install php php-fpm php-mbstring php-mysql

nginxの設定

sudo vi /etc/nginx/nginx.conf

        charset utf-8;
        root /var/www/html;
        index index.php;

        location ~ \.php$ {
            root /var/www/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

※元々のコメントアウトを使うと「file not found」の洗礼を受ける

php-fpmの設定

sudo vi /etc/php-fpm.d/www.conf

    user = nginx
    group = nginx

起動

sudo /etc/init.d/nginx start
sudo /etc/init.d/php-fpm start
カテゴリー: AWS

Unity NGUIでjavascriptを混在させる

http://www.tasharen.com/forum/index.php?topic=1763.0

nguijs

(画像はリンク先より)

1.NGUIフォルダの外側にpluginというフォルダを作る

2.pluginフォルダの内側にNGUIというフォルダを作る

3.2で作ったフォルダに画像内の赤で示したフォルダを移動させる

これだけで動くようになる

 

なぜこれで動くようになるのか?だけど、unityのコンパイルの順番に由来する。

pluginフォルダ内は他よりも先に読み込まれるので、javascriptで記述したファイルから

C#で記述したNGUIを使えるようになるという原理

Unity NGUI2.3.4で画面アスペクト比を固定する

ウダサンコウボウ:Unity]NGUIで画面サイズに合わせる(NGUI2.2.2対応版)
リンク先は2.2.2対応とのことでしたが、そのままで2.3.4で動きました

NGUI2.3.4では、縦方向基準での調整しか実装されてないのでiPhone5のような縦長の端末だと縦方向に合わせようとする→左右がカットされるという問題が起きてしまいます。
下記のスレッドを読む限り「NGUIに新たなオプションつけたら混乱を招くかもね。補助スクリプト使おうぜ」というニュアンスのようなので、今後のバージョンでも追加されないはず

http://www.tasharen.com/forum/index.php?topic=1933.15

スレッドにも同じコードが投稿されてましたけど


using UnityEngine;
using System.Collections;
 
[ExecuteInEditMode]
public class NGUIUtilScalableUIRoot : MonoBehaviour
{
 public int manualWidth = 640;
 public int manualHeight = 960;
  
 UIRoot uiRoot_;
  
 void Awake()
 {
  uiRoot_ = GetComponent();
 }
  
 void Update ()
 {
  if(!uiRoot_ || manualWidth <= 0 || manualHeight <= 0){ return; }
   
  int h = manualHeight;
  float r = (float)(Screen.height * manualWidth) / (Screen.width * manualHeight); // (Screen.height / manualHeight) / (Screen.width / manualWidth)
  if(r  > 1){ h = (int)(h * r); } // to pretend target height is more high, because screen width is too smaller to show all UI
   
  if(uiRoot_.automatic){ uiRoot_.automatic = false; }
  if(uiRoot_.manualHeight != h){ uiRoot_.manualHeight = h; }
 }
}

このコードをUI Root(2D)あたりに張り付ければOK

リンク先では、カメラの外側も見えてしまうから黒いパネルで隠そうぜ!って感じですが、
背景となる適当な画像を画面サイズの外側の分もデザインして、はみ出る状態で設置することで解決してみた