Friday, 10 February 2012

[CentOS][yum]yumに関してまとめ

せっかく調べたのでまとめておこうと思います
間違っているところはご指摘ください

・yumって何だ
CentOSやFedoraなんかのRedHat系で使える代表的なパッケージ管理システム
Linuxのシステムにアプリケーションを導入する際、
-ソースコードからビルドする方法
-バイナリパッケージを利用する方法
の2種類があるんだけど、下のを更に進めて、よく使われるアプリケーションをまとめて管理してしまおうというのがパッケージ管理システムですな
これを使うことで、アプリごとにアップデートに対応したり、アプリ間の依存関係を気にする必要がなくなるわけです
もちろんデメリットもあるのですが、手軽さから現在はこのパッケージ管理システムを使うことが主流に

・基本の使い方
シェルで「yum」のコマンドにいろいろオプションをつけて使います
$yum update yum リポジトリをアップデート
$yum install lynx lynxをインストール

RedHat系ディストリビューションではデフォルトで使えるというのが現状僕の認識です。僕はさくらVPSのデフォルトOS(CentOS5.5)で使えました

・外部リポジトリの導入
基本のリポジトリで主要なアプリケーション(Apache,php,MySQL etc)は一通り揃うのですが、外部リポジトリを導入してさらに多くのソフトを使用することも可能です
ただし、外部リポジトリの導入で標準パッケージではない問題が起こる可能性もあるので、特に有料のLinux利用してる場合は気をつけた方が良いとのこと

以下はepelの導入例です

「wget」でrpmを取得(下記はCentOS5、x86_64、2012/2/10現在)
$ wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

リポジトリを登録(要su権限)
# rpm -Uvh epel-release-5-4.noarch.rpm

リポジトリを無効化
標準外のリポジトリが標準リポジトリに影響を及ぼさないよう、無効化します
# vi /etc/yum.repos.d/epel.repo

failovermethod=priority
enabled=0
↑ 1を0に変更

次回以降パッケージインストール時には「--enablerepo=epel」を加えます
# yum --enablerepo=epel install ***


Thursday, 9 February 2012

[Mac][Terminal]ターミナルのホスト名変更

○○-no-MacBook-Air はちょっとださいし邪魔だし個人情報を含むので変更したかった

SystemPreference→Sharing→Computer Name を変更でいけますね

すっきり!

Wednesday, 1 February 2012

[php][security]セキュリティ対策のサイトメモ

セキュリティ対策関連のサイトを調べたので
今後随時参照しそうなサイトをメモ

PHPでのセキュリティ施策についてのメモ
基本的なことがきれいめにまとまっている

IPA セキュア・プログラミング講座
詳細に解説されている。上で概要を理解した上でもっと詳しく知りたくなったらここ

PHPでセキュリティ対策をする
「サーバーテロの技法」という本の記載内容をclassにして提供している

Pukiwiki セキュリティ診断ツール
有償無償のセキュリティ診断ツールまとめ

Wednesday, 25 January 2012

[PHP][MySQL]レコードの作成時間と更新時間の型とか

どうしようか悩んだので。
今回は、型の選択と、結論TIMESTAMP選びましたの場合の注意点をメモ


1,型の選択


型の選択肢は
・TIMESTAMP型
・DATETIME型
・INT型(UNIXTIMESTAMP)


型の選択で考えた要素は、
・プログラムの時のめんどくささ
 TIMESTAMPはON UPDATE CURRENT TIMESTAMPで自動更新してくれる!他は一緒!


・クエリの実行速度
 MySQLでDATETIME型のデータを高速に検索する方法 | 深追い Fukaoi.org 
 INTだと早いという話
 MySQL5.5.3-m3のDATETIME型のバグ。あとMySQLのDATETIME型は本当に遅いのか検証してみた
  INDEXすればどれも変わらないよという話


 上記を参考に、特に気にしないことにした。将来まじめに作るときはベンチマークとかしないと。


・データ解析時のめんどくささ
 UNIXTIMEはマジで視認性が悪い。条件でしぼるとき本当にストレス。
 毎回FROM_UNIXTIMEって付けてました。


・その他安定感
 TIMESTAMP型とDATETIME型
 TIMESTAMPには2037年問題があるらしい。


というわけで、気張らず使うときはTIMESTAMP、真面目に作るときはちゃんベンチとかしたうえでDATETIME使うと思う。多分。




2、TIMESTAMPの注意点


TIMESTAMP型には、初期値と自動更新属性を付与できるのですが、下記点に注意です。


・(ON UPDATE or DEFAULTの)CURENT_TIMESTAMPは1テーブル1個しか使えない
・テーブル内先頭のTIMESTAMP型カラムには、デフォルトで「DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」属性が付与される


例えばテーブル内にカラムの作成時間と更新時間を入れたいときは
   CREATE TABLE IF NOT EXISTS bbs_topics(
   ・
   created timestamp DEFAULT 0,
   updated timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,
   ・

こんな感じにして、CREATE時にはプログラムの方で時間を挿入してやる必要があるみたいです(NULLを送ればCURRENT_TIMEが入る)。これはめんどくさい…


上のでcreatedの「DEFAULT 0」を抜くと、自動付与されたCURRENT_TIMESTAMP属性と、updatedのCURRENT_TIMESTAMP属性がかぶって、エラーになります
createdにDEFAULT CURRENT_TIMESTAMPを入れても当然エラーだけどしょうがないのかな

[PHP][SQL]SQLのデバッグ

INSERT文がうまくいかなくて詰まったので、SQLのデバッグとか結果確認についてメモ

1,SQL本文を表示する
print_r($sql);

2,mysqlエラーを表示する
$result = mysql_query($sql) or die(mysql_error());

3,(INSERT時)挿入されたレコードのAUTO INCREMENTされたidを取得して表示する
echo mysql_insert_id($link);


ちなみに問題の原因はユーザー名を間違えて
DB接続から失敗してましたとさ、ちゃんちゃん。

Monday, 23 January 2012

terminalでmysqlにログイン

前方法がわからなかったmysqlへのログイン方法見っけたのでメモ

mysqlにログイン 
$ /usr/local/mysql/bin/mysql -u root -p 

XAMPPをぶん投げて、自分で1から環境構築はやめた

しようとしましたが、ちょっとエラーが起きて、
試行錯誤の過程でぶん投げたきっかけも解消されたのであきらめました。
環境はMac OS X10.6.8 SnowLeopardです

一応調べたことの備忘録

▼前提とやったことの全体像
1,前提
2,apacheの動作確認とphpの動作設定
3,ドキュメントルートの変更
4,MySQLとPHPmyadmin


1,前提
今回作成する環境は、Apache、php、MySQL+phpmyadmin
SnowLeopardにはApacheとphpがデフォルトでインストール済み

2,apacheの動作確認とphpの動作設定
Sustem Preference>Sharing から Web Sharingをonにする。これでApacheが起動。
→ブラウザからhttp//:localhostにアクセスで「It works!」と表示される

さらにphpを使用するために
sudo vim /private/etc/apache2/httpd.conf  vimでhttpd.conf を開く
#LoadModule php_5module     libexec/apache2/libphp5.so のコメントを外す(#を外す)
sudo /usr/sbin/apachectl restart Apacheを再起動

これでphpが使えるようになるはず


3,ドキュメントルートの変更
sudo vim /private/etc/apache2/httpd.conf  vimでhttpd.conf を開く
DocumentRoot "/library/~~~~~~" を変更

4,
こっからやらず…

参考URL