画像掲示板の設定ファイルの作成
#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がインストールされている
月別: 2013年7月
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をインストールするだけ
外部リポジトリの設定
外部リポジトリの設定
外部リポジトリの設定に必要な
.repoファイルは
リポジトリごとのrpmパッケージとして配布されている
設定用のrpmパッケージは
rpmコマンドで導入
やり方は、rpmパッケージをURLで指定する
RepoForgeの設定用rpmパッケージを
64bit CentOS 6 へ導入するなら
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
となる
EPELの設定用rpmパッケージの場合
PGP鍵という
復号のための公開キーがインストールされていないと
警告がでてしまうため、先に
rpm –import コマンドで
PGP鍵をインストールしておく
rpm –import http://ftp.riken.jp/linux/fedora/epel/RPM-GPG-KEY-EPEL-6
そして、EPELの設定用rpmパッケージのインストール
rpm -ivh http://ftp.riken.jp/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
となる
Remiの場合、Linuxサーバーの典型セットであるLAMPに特化しているため
その他パッケージはEPELリポジトリを使っているため
あらかじめEPELの設定をしておかないとダメ
これができたら、Remiの設定用rpmパッケージをインストール
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
で導入できる
導入後
RepoForge
EPEL
は標準で有効になっているので
デフォルトでは無効にしておき
必要に応じて
yum コマンドで有効にするようにする
有効、無効の設定は
.repoファイルの
enabledで設定する
epel.repo
rpmforge.repo
のenabledの設定を
1 から 0 に変更しておく
リポジトリの切り替えは
yumコマンドの
–enablerepo
–disablerepo
で行う
外部リポジトリを有効にして
phpを入れるとバージョンが違う
yum install –enablerepo=rpmforge,epel,remi php
これを実行すると
–enablerepo=rpmforge,epel,remi
により
remi
epel
rpmforge
の外部リポジトリが有効にした状態での
php がインストールされる
CentOS用外部リポジトリ
CentOS用外部リポジトリ
CentOSで使える外部リポジトリは3つ
RepoForge
以前から非公式なrpmパッケージを提供しているリポジトリ
EPEL
Fedora Projectで開発されたパッケージを
Red Hat Enterprise Linux
で使用できるようにしたリポジトリ
Remi
LAMP環境を構築するためのリポジトリ
となる
yum では
/etc/yum.repos.d/
へ
.repo拡張子の設定ファイルを配置することで自動的に読み込まれる
パッケージの依存関係の確認
パッケージの依存関係の確認
インストールしたパッケージの依存関係は2つあり
rpm -qR パッケージ名
で
指定したパッケージ名が依存しているファイルなどを表示
rpm -q –whatrequires パッケージ名
で
指定したパッケージ名に依存されているRPMパッケージを表示する
となる
例えば
yum install bind-chroot
で
DNSサーバーのBINDをインストールしたばあい
bind-chrootの依存関係を見るなら
rpm -qR bind-chroot
とする
この結果から
bindパッケージに依存していること
/bin/sh
grep
が必要なことがわかる
次に、
bind-chroot
bind
のパッケージが他から依存しているかを
–whatrequires オプションで確認
rpm -q –whatrequires bind-chroot
rpm -q –whatrequires bind
この結果から
bindが bind-chrootから依存されているのがわかる
依存するパッケージがある場合
削除するには
両方のパッケージを同時削除するか
依存されていない順に削除していく
bindは bind-chrootに必要なので
rpm -e bind
としても削除できないけど
rpm -e bind-chroot
rpm -e bind
と順番に削除することはできる
後、たまにあるけど
パッケージ更新したらバグがあるから
古いバージョンに戻したいときの対処
こんなときには
–oldpackage オプションをつけて
ダウングレードインストールする
書式にすると
rpm -Uvh –oldpackage パッケージ名
例えば
最新版のbind関連パッケージを
インストールメディアに入っていたrpmパッケージに
ダウングレードインストールするなら
rpm -qa | grep ^bind
で調べて
rpm -Uvh –oldpackage bind関連のパッケージ名
で
ダウングレードインストールして
再度
rpm -qa | grep ^bind
で調べると、バージョンがダウングレードされたのが確認できる
Androidの音声認識のオプション
Androidの音声認識のオプション
EXTRA_LANGUAGE_MODEL
言語モデル
LANGUAGE_MODEL_FREE_FORM
会話中の認識向け
LANGUAGE_MODEL_WEB_SEARCH
Web検索向け
EXTRA_LANGUAGE(locale)
言語の設定で、
localeが
Locale.USなら英語
Locale.JAPANなら日本語
Locale.FRANCEならフランス語
になる
EXTRA_PROMPT
プロンプト文字列
EXTRA_MAX_RESULTS
候補の数
Linux のパッケージシステムについて
Linux のパッケージシステムについて
パッケージファイル名は以下の形式で命名されている
パッケージ名-バージョン-リリース番号-アーキテクチャ.rpm
例えば
httpd-2.2.15-28.el6.centos.x86_64.rpm
なら
パッケージ名
httpd
バージョン
2.2.15
リリース番号
28
アーキテクチャ
el6.centos.x86_64
となる
パッケージのバージョン管理は
バージョンとリリース番号を組み合わせたファイル名で実施している
バージョン番号が同じ場合
リリース番号の大きいほうが新しいものとして
更新対象になる
バージョンアップして
パッケージのバージョンが更新されると
リリース番号が更新される
yum check-update
を実行すれば
現在インストールされているバージョンと
リポジトリの最新バージョンと比較することで
アップデート候補を表示することができる
また、コマンドを使うことで
インストールされているパッケージの一覧表示ができる
rpm なら
rpm -qa
というように
-qa オプションをつけることで表示できるけど
一覧表示だけでは履歴がわからない
こんなときには
–last オプションをつけることで
最後に導入されたパッケージから順番に表示できる
rpm -qa –last
とすればOK
ただし、あまりにも長いと見にくいので
最後のほうから調べたいのなら
head コマンド
を使い上位10件だけ表示するとか
grep で絞り込みをかけることで、
より効率的に探すことができる
head と組み合わせるなら
rpm -qa –last | head
これで、最後から10件表示となる
この使い道は、あるときからトラブル発生した場合
パッケージのバージョンアップが原因であるか調べるのに使える
これには、ログをみるスキルと併用すると効率的に
調べることができる
yum などで一気にインストールすると依存関係も楽だけど
管理者が意図しないパッケージも導入されることが多い
インストール済みパッケージの情報を調べることができるなら
意捨て無の状態を確認できる
パッケージ情報を調べるために使える rpm コマンドの
主なオプションとしては
rpm -qi パッケージ名
パッケージ情報を表示
rpm -ql パッケージ名
パッケージに含まれるファイルを表示
rpm -qc パッケージ名
パッケージに含まれる設定ファイルを表示
rpm -qd パッケージ名
パッケージに含まれるドキュメントファイルを表示
削除ファイルの復旧
削除ファイルの復旧
コマンドラインから削除したファイルは、
ゴミ箱に入らず、すぐ削除される
このファイルを復旧するには
PhotoRec を使う
復旧を行う環境は Ubuntu
sudo apt-get install testdisk
で導入することができる
ファイルを削除した直後は
ファイルのありかを示すデータは消えるけど
ファイル自体は削除されず残っているのが多い
今回の想定はSDカードのデータを消してしまった場合
この場合、まずすぐにSDカードをアンマウントして
PCから外す
そして
データ復旧先のディレクトリを作成する
ディレクトリサイズは、復旧元と同じ大きさの容量が必要
mkdir /tmp/Recovery
でディレクトリを作成
そして、再びSDカードを挿して
読み込み専用ディスクとして再マウントする
-o ro オプションをつけて mount コマンドを実行する
mount -o ro.remount /media/SD-DISK/
そして、photorec を起動して
メディアの復旧を行う