ぽにょ、ぽにょぽーにょ -2ページ目

ぽにょ、ぽにょぽーにょ

2012年からWebエンジニア。
プログラムとか、趣味とか、人生とかの備忘録。

なんかアメブロってださくて使いづらいからそのうち引っ越しまふ。

h1. Githubの使い方

https://help.github.com/articles/create-a-repo


h2.自分のリポジトリにあげる方法

1.自分のリポジトリを作る

2.リポジトリにあげるディレクトリを作る
 mkdir test

3.そのファイルの中で git initを実行する

4.リポジトリにあげたいファイルをgit addする

あげたくないものは.gitがあるところで
.gitignoreをつくって下記みたいにいれる。

<pre>
.svn
.swp

images
application/.*
application/logs
application/cache
application/errors
application/hooks
application/language
application/logs
application/config
application/core
application/index.html

</pre>


addとかignoreしたものは
git statusで見れる
addを取り消す場合は git rm --cached ******
(ディレクトリの場合は-rをつける)

リモート上のファイルを消す場合は
git rm ファイル名


5.コミットする
 git commit -m 'comment'

6.pushする。 

<pre>
  git remote add origin https://github.com/username/Hello-World.git
</pre>

7.gitのマスターブランチにpushする。
git push origin master
※git rm したときはローカルからも消えます。



エラーが出た時
# git push origin master
To https://github.com/hooor/wiki.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/xxxxx/xxxxx.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

[解決方法]

# git pull https://github.com/xxxxxxxxxxxx/xxxxxxx.git master
 * branch            master     -> FETCH_HEAD
Merge made by the 'recursive' strategy.
 README.md | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 README.md

# git push origin master

Counting objects: 29, done.
Compressing objects: 100% (26/26), done.
Writing objects: 100% (28/28), 81.60 KiB | 0 bytes/s, done.
Total 28 (delta 3), reused 0 (delta 0)
To https://github.com/xxxxxx/xxxxxi.git
   c259bf8..a51f594  master -> master

今度の業務でcake2.5系を使うので、インストールしたところ、ぷちはまった。

core/database.phpの設定をしても、
Fatal error: Class 'PDO' not found in・・・
と表示される。。

これはここのURLが参考になった。
これをやったあと、
service httpd restartでできた。

http://ameblo.jp/ozsapphire/entry-11286836535.html
apacheを使用して、ページが見つからず404が表示されるときは、
apacheのバージョンとポートがでちゃうので、
下記のように404のときのページを表示させるようにした。

/etc/http/conf/httpd.conf

 ErrorDocument 404 http://xxxxx.com/index.html

まーやっつけでトップページってことです。

そして、他のエラーコードでもやる必要があるようで、
もれがあった時にバージョンが表示されたら嫌なので、
下記設定しました。

/etc/http/conf/httpd.conf

(修正前)ServerSignature On
(修正後)ServerSignature Off

基本的に簡単。
下記のURL通りでできる。

http://wpdocs.sourceforge.jp/WordPress_%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB#Detailed_Instructions



出たエラーと対処方法。

[エラー]
http://example.com/blog/wp-admin/install.php
にいったときに下記がでた。

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.


[原因]
phpinfo();でmysqlがなかった。

1) yum install -y mysql mysql-server
2) yum install -y php php-mysql
3) service httpd restart

⇒phpinfo();でmysqlがでてた。
⇒再度実行すると解決

管理画面が日本語じゃないときはこれ
http://weble.org/2009/07/26/wordpress-japanese


今回はapacheのmod_rewriteをつかった。

1.http://memorva.jp/memo/linux/mod_rewrite.php

httpd.confに
LoadModule rewrite_module modules/mod_rewrite.so

があることを確認

2.
<VirtualHost *:80>
  RewriteEngine On
  RewriteCond $1 !^(index\.php|images|robots\.txt)
  RewriteRule ^/hogehoge/(.*)$ /hogehoge/index.php/$1 [L]
</VirtualHost>

みたいに追加。
今回はhttp://www.xxxxx.com/hogehoge 配下にindex.phpとかがある。

最初は
 RewriteRule ^/hogehoge/(.*)$ /hogehoge/index.php/$1 [L]
ではなく、
 RewriteRule ^/hogehoge/(.*)$ /hogehoge/index.php/$1 [L,R]
ってやったら、リダイレクト後のURLにindex.phpが表示されてて消えなかった。注意。

3. application/config/config.phpで下記を直す

$config['index_page'] = 'index.php';
(修正後)$config['index_page'] = '';

これでできた。


色々やった。

bitnamiを使うと速攻でできたが、お金がかかるようなので断念。
AWSのmarket placeからも簡単にインストールできたが、別のインスタンスができあがってしまうため、余計なお金が今後かかるからやめた。

で、結局手動インストール。

参考はこれ
http://il-all.blogspot.jp/2012/02/amazon-ec2redmine.html

passengerまわり
http://blog.redmine.jp/articles/2_4/installation_centos/

苦戦したが、できた。




ドットインストール
http://dotinstall.com/lessons/basic_aws
の簡潔なまとめ



AWS

・概要
 - クラウドサービス
 
用語
EC2  elastic compute cloud 仮想サーバ
RDS  relational database service データベース専用のサービス
S3   simple storage service : 写真とか動画


EC2のインスタンス(実態)たちあげる

【備忘録】
http://docs.aws.amazon.com/ja_jp/gettingstarted/latest/computebasics-linux/getting-started-deploy-app-connect.html


・putty と putty-genのインストール
・putty-genにてpemファイルをppkに書き換える
・puttyにて
キーアライブの変更
秘密鍵の指定

=========================
■security - groupの変更
トップ画面のNETWORK & SECURITYのsecurity groups
でInboundのポートを開ける


ec2-user@DNS
と秘密鍵でログインできる


やったこと
sudo yum -y install httpd php mysql

///////////////////////////////////////////////
imageをつくるのは
サーバのシャットダウンがはしる、
スナップショットがとられる、
imageがとられる

imageっていうのは、そのサーバと同じものを作って、
複製したりできるようにするテンプレート。
これはサーバのシャットダウンが走る

///////////////////////////////////////////////////

■IPの取り方
Elastic IPs
Allocate New Address

///////////////////////////////////////////////////
バックアップ
ELASTIC BLOCK STORE
Snapshots




============================================================
============================================================

DB(RDS)の注意点

Security and Network のAvailability ZoneはEC2と同じものにする。
EC2から接続させるにはEndpointが必要

↑あとセキュリティグループのinboundにmysql(3306)の追加が必要

mysql -h エンドポイント -u ユーザー名 -p 

==============================
WEBサーバの増設は
1.既存のWEBサーバのimageをつくる
2.そのimageを元に次のwebサーバをつくる
でok


////////////////////
S3だけで静的なホームページを作れる
http://dotinstall.com/lessons/basic_aws/9516
でも、名前はしたいホスト名にする

まとめ:
仕事でプログラミングを覚えたら、趣味でも使えて金を稼げるからいいじゃん、って考えてると、
結構足元すくわれて後悔するかも、っていう話。
仕事は趣味の延長ではない、結構違いますよ、という話。

[趣味でのプログラミング]
・仕様を決めるのは自分 or 仲間
・タスクの割り振りも自分 or 仲間
・厳格な納期はない
・品質は自分らが納得できればいい
・ドキュメント類はあまり考えなくてもいい

[仕事でのプログラミング]
・仕様を決める人が他人
・タスクの割り振るのも他人
・納期がある
・品質がある
 (例えば、パフォーマンス、コーディング規約、可読性)
・ドキュメント類も必要(引き継ぎとか新メンバーのジョインとか)


■仕事での嫌なところは
タスクによっては全然知らないところを上記基準でやる必要があり、
(たとえばjavascriptとかshellとかストアドプロシージャとか)

そういうものって、
【時間がかかる】
【(まず動かすことを考えるから)品質よくない】

そうすると、レビュー等でパフォーマンスとか色々指摘されて、
直す⇒時間かかる、で納期がだんだん厳しくなってくる
⇒急ぐ⇒バグ出る⇒直す
的な動きになっていく

健全なチームであれば他のフォローで乗り越えられて、その人自身も成長する機会になると思うんだけど、

タスクの割り振りがサーバサイド(php)とかフロント(javascript)技術的なものでの割り振りではなく、
案件ベースの割り振りでかつ自分一人、かつ適切なマネジメントがされてない場合、
サーバ選定したり、サーバの設定変更したり、
サーバにフレームワークのせたり、バッチつくったり、テーブルつくったり、
フロント側もやったり、と全部やらなきゃいけないから 【 非常 】に大変

そうこうしてるうちにスーパーエンジニアから色々指摘されて、
そういう指摘って結構体重がのってるパンチがとんできてやばくて、
そういう人ってすごい忙しいからあまり聞けなくて、
だんだんいっぱいいっぱいになって死亡のにおいがしてくる。

ずっといっぱいいっぱいが続いてると、
バグも多くなって、労働時間も増えて、納期間に合わないプレッシャーや周りの圧が増えていったりで、
だんだん追いつめられて、萎縮したり変なミスも増えて、的な感じで、バッドサイクルがはじまります。

そして使えない奴認定されて、自分でも鬱っぽくなって、オツ的な結果になるわけですが、
それを個人としての能力が問題、で終わらせることは絶対によくないと思うわけです。

と話は逸脱したので戻しますが、
仕事と趣味は結構違いますよ、、、、、
僕は上記環境にいて今まさにと死にそうな状況ですが、
みなさんがいいチームといい仕事に巡り合えることを本気で祈ってます。。

メモ

echo "caller memory: " . number_format(memory_get_usage()) . "\n";

マニュアル
http://php.net/manual/ja/function.memory-get-usage.php

一番簡単なメモリの解放方法は、、
unset($array)とかで呼び出し済み+不必要な配列とかを消しちゃう。