べすとえふぉーと

プログラミング等のノート 

mdadmでRAID5

何はともあれmknod

sudo mknod /dev/md0 b 9 0

ディスクの情報を見てmdadm

cat /proc/diskstats
sudo mdadm -C /dev/md0 -ayes -l raid5 -n 3 /dev/sda5 /dev/sda6 /dev/sda7
cat /proc/mdstat

ext4でフォーマット

sudo mkfs.ext4 /dev/md0

マウント、chownして書き込めるように(ラズパイなのでpi)

mkdir mountdir
sudo mount /dev/md0 mountdir
sudo chown -R pi mountdir

アルゴリズム構築 トップダウン方式

オライリーの[初めてのコンピュータサイエンス]より、メモとして

1行に1命令を書き出す

#リストLに含まれるもっとも小さな2つの値の添字をタプルで返す
def find_two_smallest(L):
    #Lの最小値の添字を探す
    #リストからその要素を削除
    #リストの新しい最小値の添字を探す
    #2個の添字を返す

コードを書く

def find_two_smallest(L):
    #Lの最小値の添字を探す
    smallest_index = min(L)
    min1 = L.index(smallest_index)
    #リストからその要素を削除
    L.remove(smallest_index)
    #リストの新しい最小値の添字を探す
    next_smallest_index = min(L)
    min2 = L.index(next_smallest_index)
    #2個の添字を返す
    return(min1,min2)

不足要件があれば追加する

def find_two_smallest(L):

    #Lの最小値の添字を探す
    smallest_index = min(L)
    min1 = L.index(smallest_index)
    #リストからその要素を削除
    L.remove(smallest_index)
    #リストの新しい最小値の添字を探す
    next_smallest_index = min(L)
    min2 = L.index(next_smallest_index)
    #最初に削除したものを戻す(追加)
    L.insert(min1,smallest_index)
    #戻した最初のIndexが2番目より前であれば+1して正しいIndexをセット(追加)
    if min1 <= min2:
        min2 += 1
    #2個の添字を返す
    return(min1,min2)

全体はこんな感じ

# -*- coding: utf-8 -*-

#リストLに含まれるもっとも小さな2つの値の添字をタプルで返す
def find_two_smallest(L):

    #Lの最小値の添字を探す
    smallest_index = min(L)
    min1 = L.index(smallest_index)
    #リストからその要素を削除
    L.remove(smallest_index)
    #リストの新しい最小値の添字を探す
    next_smallest_index = min(L)
    min2 = L.index(next_smallest_index)
    #最初に削除したものを戻す(追加)
    L.insert(min1,smallest_index)
    #戻した最初のIndexが2番目より前であれば+1して正しいIndexをセット(追加)
    if min1 <= min2:
        min2 += 1
    #2個の添字を返す
    return(min1,min2)

arr = [1,6,2,3]
print (find_two_smallest(arr))

公開鍵認証の設定

Ubuntuサーバー側

sudo apt-get install openssh-server

ローカル(Mac)で鍵を作成して転送  名称入力時にvps2を入力

ssh-keygen 
scp -P $PORT vps2.pub $USER@$IP:/

Ubuntuサーバー側で鍵設定

chmod 700 .ssh/
cat vps2.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_key
vi /etc/ssh/sshd_config 

以下のように変更

PasswordAuthentication no
RSAAuthentication yes 
PubkeyAuthentication yes 


Ubuntu側で再起動

service ssh restart

ローカル(Mac)からログイン

openssl rsa -in vps2 -outform pem > vps2.pem
chmod 600 vps2.pem 
ssh -p $PORT -i vps2.pem $USER@$IP

Ubuntu 14.04でvnc環境構築

インストール

# sudo apt-get install xorg gnome-core gnome-system-tools gnome-app-install
# sudo apt-get install tightvncserver

パスワードの設定

# vncpasswd

xstartupの設定 vi ~/.vnc/xstartup

#!/bin/sh
unset DBUS_SESSION_BUS_ADDRESS
export GTK_IM_MODULE=ibus
export XMODIFIERS="@im=ibus"
export QT_IM_MODULE=ibus
/usr/bin/ibus-daemon -dxr
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
exec gnome-session &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus -n &
gnome-terminal &

起動と確認

# vncserver :1
# netstat -an | grep 5901

クライアント側から接続

vnc://x.x.x.x:5901

終了する場合

# vncserver -kill :1

日本語設定

# sudo apt-get install language-pack-ja-base language-pack-ja ibus-mozc
# sudo update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
# sudo dpkg-reconfigure locales
# sudo apt-get install unifont
# reboot

bashrcには以下を設定

export LC_MESSAGES=ja_JP.UTF-8
export LC_IDENTIFICATION=ja_JP.UTF-8
export LC_COLLATE=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
export LC_MEASUREMENT=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
export LC_TIME=ja_JP.UTF-8
export LC_NAME=ja_JP.UTF-8