ArrayList
これは色々な要素を格納できる
ArrayListに
<>で囲んでクラスを指定することで
Stringクラスだけが入るように限定できる
このジェネリクスを使うことで
想定外のデータが入ることを避けることができる
また、<>でクラス指定していないと
値を取り出すときに
キャストという型変換が必要になるので
面倒になる
—
から送られてきた高速メモ帳
ArrayList
cron を使った差分バックアップ
cron を使った差分バックアップ
cron と rsync を使って定期的に差分バックアップをとっていく
今回はテストなので
sudo mkdir /backup/
sudo mkdir /backup/snowpool
でバックアップディレクトリを作成して
/etc/cron.d/
の下に
vim /etc/cron.d/backup
でバックアップファイルを作成
10 2 * * * root /usr/bin/rsync -a /home/snowpool/ /backup/snowpool/
とすることで、
午前2時10分に自動的バックアップが取れるようになります
sudo chmod +x /etc/cron.d/backup
で実行権限もつけておきました
外付けHDDへバックアップ
外付けHDDへバックアップ
バックアップの考え方
コマンドでのバックアップ方法
継続的バックアップの設定
バックアップ対象となるのは
再作成が困難なデータ
/home以下のユーザーデータ
保存している写真や動画
OS やアプリの設定データなど
設定ファイルは再度設定でもどうにかなるけど面倒なためバックアップしたほうが無難
バックアップの一般的な条件は
容量が十分あり、容量あたりの単価が安いこと
バックアップに必要な時間が短くてすむもの
となる
たいていの場合、HDDになるけど
別のHDD
もしくは、外付けHDDになる
同じHDDへ保存してしまうと
メディア障害時にデータの復元ができないので
別のメディアへバックアップするのがベター
バックアップを取得する頻度、時間として
一般的なのは
ユーザーがシステムを利用しない夜間に
1日1回程度取得する
本来ならニーズにより、適切な方法でバックアップするけど
特にニーズがないなら
最新データのバックアップを毎回取得するようにする
コマンドからバックアップするので
今回は、rsync を使う
rsyncは、Linuxでよく使われるバックアップツール
rsyncは
前回のバックアップからの差分のみ複製したり
リモートホストへ複製することができる
外付けHDDは、以前Linux 用に
Linux での外付けHDD
http://heberekemaruhunihun.blog77.fc2.com/blog-entry-433.html
で用意してあるのでこれを使うことに
本来、日経Linux の記事を参考に行う予定だったけど
外付けHDDが /dev/sdb ではなく
/media/outhdd
となっているので
ubuntu:rsyncとcronを使って自動バックアップさせてみる。
http://tukaikta.blog135.fc2.com/blog-entry-33.html
を参考に
rsync で外付けHDDにバックアップ
全部ではファイルが多いし、バックアップの実験だけでよいので
今回は、ダウンロードしたファイルのみバックアップ
実験環境は Ubuntu 11.10 32bit
実行する時にsudo つけないとパーミッションエラーになるので注意
mkdir /media/outhdd/snowpool
sudo rsync -av /home/snowpool/ダウンロード/ /media/outhdd/snowpool
でバックアップ
これで、
/media/outhdd/snowpool
の中に
ダウンロードというディレクトリができて
中身がバックアップされている
そして、今度は新たに
touch rsynctest というファイルを
/home/snowpool/ダウンロード
で作成して
sudo rsync -av /home/snowpool/ダウンロード/ /media/outhdd/snowpool
を実行すると
あたらしく作った rsynctest というファイルだけが
バックアップされている
この rsync をつかうことで簡単に差分バックアップができる
画像掲示板のアップロード処理
画像掲示板のアップロード処理
#06 アップロード処理の流れを確認する
http://dotinstall.com/lessons/upload_image_php/4506
を元に、アップロード処理をする upload.php をつくり
実装していく
この動画では、実際のコードをかくよりも流れの解説
まず、require_once(‘confg.php’);
で設定ファイルの読み込み
そこから先の流れとしては
エラーチェック
保存するファイル名を作成
元画像を保存し、画像が大きいなら、縮小画像をつくり保存
そして、index.php へ飛ばすという流れ
アップロードされたファイルのあつかい方については
#07 $_FILESの中身を確認する
http://dotinstall.com/lessons/upload_image_php/4507
を参照
いままでのように、通常のフォームから
画像や入力内容を扱うなら
$_POST[‘image’]
というようにしていたけど
ファイルの場合では異なり
$_FILES[‘ 変数名’];
となる
この変数名は、form で送信したときの name の名前になる
例えば、
<input type=”file” name=”image”>
なら、
$_FILES[‘image’]
となる
アップロードされたファイルには
色々な情報が格納されていて
確認したいのなら、
var_dump() で中身を見てみるとわかりやすい
ソースにすると
var_dump($_FILES[‘image’]);
exit;
として
index.php でファイルをアップロードしてみると
渡されたデータがみれる
そのままだと見にくいので
ブラウザでソースを表示するとわかりやすくなる
やりかたは、ブラウザで
右クリック > ページのソースを表示
name には元画像の名前
type には何のファイルか
tmp_name は
システムが一時的に保存したファイルの名前
これは後で保存先フォルダへ入れることになる
error は
エラーチェックに必要な情報が入ってくる
ちなみに、0だったら正常ということ
size は、ファイルのサイズ
エラーコードに関しては
http://jp.php.net/manual/ja/features.file-upload.errors.php
を参考にする
Linuxコマンドの定期自動実行
Linuxコマンドの定期自動実行
Linuxの管理ツールの多くは
自動実行機能の
cron
を使っている
cronを、使うときのポイントは
設定ファイルとディレクトリの構成
定期実行するコマンドのcronへの登録
cron によるコマンドや
スクリプトの定期自動実行の設定は
/etc
の下にある
cron,hourly
は毎時
cron.daily
は毎日
cron.weekly
は毎週
cron.montly
は毎月
というように指定したディレクトリごとにより自動実行される
管理ツールがインストール時に
スケジュール実行するスクリプトを配置するのも
これらのディレクトリになる
毎時実行するスクリプトは
/etc/crontab
の設定で起動される
/etc/cron.d は
/etc/crontab
と同じ書式の設定ファイルを配置するディレクトリ
コマンドやスクリプトの実行条件の詳細設定をするには
/etc/cron.d/
の下に設定ファイルを作成することになる
cronの書式は
分 時 日 月 曜日 実行ユーザ名 コマンド
という書式になる
分 時 日 月 曜日
については
分 0-59
時 0-23
日 1-31
月 1-12
曜日 0-7で7が日曜日
となる
数値ではなく * にするとすべてという意味になる
例えば
分のところを * にすれば、毎分という設定になる
あと、気をつけるべきなのがコマンドの設定
cron の環境変数はユーザシェルとは違うので
コマンドはフルパスで書くようにする
もし、NTPサーバーに10分おきに同期するなら
10 * * * * root /usr/sbin/ntpdate NTPサーバー
となる
画像投稿フォームの作成
画像投稿フォームの作成
#05 画像投稿フォームを作ろう
http://dotinstall.com/lessons/upload_image_php/4505
を元に index.php を作って
画像アップロードするためのフォームを作成する
vim index.php でファイルを作成し編集していく
require_once(‘config.php’);
で設定ファイルを読み込み
HTMLソース部分でフォームを作成していく
フォームについては
画像をアップロードするには決まりがあり
<form action=”” method=”POST” enctype=”multipart/form-data”>
というように
enctype=”multipart/form-data”
をつけるのを忘れずに
また、隠し要素として
input type=”hidden” にして
<input type=”hidden” name=”MAX_FILE_SIZE” value=”<?php echo MAX_FILE_SIZE;
?>”>
として、最大投稿サイズを決めておく
このMAX_FILE_SIZE は
config.php で設定した値
これができたら、後は
画像選択ボタンと
アップロードのための送信ボタンを作成
画像選択ボタンが
<input type=”file” name=”image”>
送信ボタンが
<input type=”submit” name=”アップロード”>
となる
ここまでできたら、一度保存して
index.php を開いてみる
画面が作成できているのを確認できたら、
現在 action=”” で index.php が対象になっているのを
action=”upload.php” へ変更して
このファイルで処理するようにする
~
画像掲示板の設定ファイルの作成
画像掲示板の設定ファイルの作成
#04 設定ファイルを作ろう (2)
http://dotinstall.com/lessons/upload_image_php/4504
を元に、config.php を追記して
設定ファイルを作成
追加する定数として
サムネイル画像の幅になる
THUMBNAIL_WIDTH
そして、アップロードできるファイルサイズの指定を
MAX_FILE_SIZE
で指定する
300kBにするなら
1kB = 1024 byte なので
1024 * 3 = 307200 となる
エラーレポートは
error_reporting(E_ALL & -E_NOTICE);
とする
あと、画像縮小には GDライブラリが必要になる
これがない場合には、エラーで警告するようにする
これは if で条件式を
if(!function_exists(‘imagecreatetruecolor’)){
echo “GDがインストールされていません”;
exit;
}
というようにする
これで、config.php を開いて何も表示されないなら
GDがインストールされている
makeコマンドで自動コンパイル
makeコマンドで自動コンパイル
普通、ソースコードは複数ファイルに
なっているので
自動的に全ソースファイルをコンパイルし
最終的な実行ファイルを生成する
makeコマンドを利用する
コンパイルから最終的な実行ファイル生成までの工程を
ビルド
という
makeコマンドは
Makefile
に記述された内容に従ってビルドする
このMakefileは、
configureスクリプトで生成する
このconfigureでは
カーネル
CPUの種類
リンクするライブラリーの有無など
をチェックし
最適なビルドができるように設定した
Makefileを作る
最終的なインストールは
make install
で実行する
この make install を実行すると
生成された実行ファイル
設定ファイルなどの関連ファイルを
Makefileで指定したディレクトリへコピーし
アクセス権限なども設定してくれる
ビルドは、一般ユーザーでもできるけど
インストールするにはroot権限が必要
また
makeコマンドは
ソースファイルとバイナリーの
タイムスタンブを比較して
ソースファイルが新しいときだけコンパイルする事もできる
これにより
ソースにパッチをあてて
更新したファイルのみコンパイルして
最低限の処理だけでビルドし直すという
便利な使い方ができる
ソースコードからのコンパイル、ビルド
ソースコードからのコンパイル、ビルド
Linuxで使われるコンパイラはGCC
コンパイルしたバイナリーが動作するには
外部ライブラリとリンクする必要がある
Linuxで動くソフトウェアのほとんどが
実行時にリンクする動的リンク
動的リンクで参照される共有ライブラリーは
/lib/以下にある
.so拡張子のファイルになる
動的リンクの場合は
ソースコードをコンパイルするときに
共有ライブラリー情報が必要になる
この情報を提供するのがヘッダーファイルになる
これがないと
コンパイルエラーとなり
バイナリーオブジェクトが生成できない
ヘッダーファイルは
-devel
という名前のついたパッケージを導入すれば用意できる
主なライブラリーはパッケージを使って準備し
最終的に使いたいソフトウェアのソースコードだけコンパイルするのが
簡単で一般的な手法になる
—
から送られてきた高速メモ帳
仮想マシン用ドライバのインストール
仮想マシン用ドライバのインストール
仮想マシンは、通常の物理マシンとは異なり
ソフトウェア的に実行しているので
動作速度に制約がある
この制約を取り払い高速化したり
使い勝手を高めるためのドライバが
VMware Tools
Guest Additions
これらは、使用中のカーネルのバージョンに大きく依存する
また、モジュールを
カーネルのバージョンごとに用意する必要がある
/lib/modules/
の下に
インストールされているカーネルのバージョンごとにディレクトリが作成され
その中に配置されている
確認するには
rpm -q kernel
ls /lib/modules/
の結果から
インストールされているカーネルと
モジュールの確認ができる
モジュールとカーネルは
依存関係にあるため
カーネルをバージョンアップしたら
モジュールま再度導入する
VirtualBox の場合
Guest Additionsをインストールするけど
これは
インストール時に使っているカーネルに合わせ
モジュールをビルドしなおすため
開発ツール一式をインストールしておく
yum groupinstall”Development tools”
これで一度で開発ツールがインストールできる
インストーラーは
カーネルのバージョンに対応したファイルを要求する
ヘッダーファイルは
kernel-develパッケージに含まれるけど
yum install でやろうとしても
最新版のみ対応なため
カーネルバージョンを指定してインストールしないとダメ
カーネルバージョンを調べるには
uname -r
で調べることができる
この結果をコピペでもいいけど
バッククォート、“で囲めば
実行結果の内容をコマンドラインで使えるので
yum install kernel-devel-`uname -r`
とすれば、簡単にインストールできるし
コピペしなくてもよくなる
ここまでできたら
あとは、Guest Additionsをインストールするだけ