twitter アプリの設定

twitter アプリの設定

#04 アプリの設定をしよう
http://dotinstall.com/lessons/tw_connect_php_v2/21904
を参考に、アプリ設定ファイルを作成

すでにDBの作成は終了しているという前提

最初にDB関連は定数を設定しておく

mkdir /var/www/html/tw_connect_php
でディレクトリを作成

cd /var/www/html/tw_connect_php
で移動して
vim comfig.php
でファイルを開いて

AWS で twitter でログインするWebサービス

AWS で twitter でログインするWebサービス

以前、ローカル開発環境で行おうとしたけど
うまく起動しないため、
AWSで環境を構築してリトライ

https://dev.twitter.com/
へアクセスして

http://dotinstall.com/lessons/tw_connect_php_v2/21902
の動画を参考に再度 twitter アプリの登録

ほとんど前回と同じだけど
一応新規にアプリを作成

ただし、アプリの名前に twitter と入れないこと

website
には、自分のドメイン、もしくはIPでOK
これはローカルのときとおなじ

次に
Callback URL
ここには
http://ドメイン/tw_connect_php/callback.php
というように
なるべくおなじになるように設定

まずは読みのみなので
Read only のままにしておく

次に、AWS側の設定
必要なものとして
codebird.php が必要なので
すでにダウンロード済みのものを scp 公開鍵認証で転送する

scp -i ~/.ssh/公開鍵 codebird.php ユーザ名@IPアドレス:/home/ユーザ名/

codebird.php の入手は
https://github.com/mynetx/codebird-php
から可能

転送完了したら、
必要なDBを作成する
ssh 公開鍵認証でログインし

すでに、以前 MySQL はインストール済みなので
mysql -u root -p
で mysql root パスワードを入力し
DB作成開始

DB作成は
http://dotinstall.com/lessons/tw_connect_php_v2/21903
を参考に行う
とはいっても、違いはパスワードくらいのみ

create database dotinstall_tw_connect_php;
でDB作成して

grant all on dotinstall_tw_connect_php.* to dbuser@localhost identified by ‘ パスワード’
;
でユーザ作成

use dotinstall_tw_connect_php;
で使用するDBを指定

create table users (
id int not null auto_increment primary key,
tw_user_id varchar(30) unique,
tw_screen_name varchar(15),
tw_access_token varchar(255),
tw_access_token_secret varchar(255),
created datetime,
modified datetime
);
でテーブル作成

作成内容は
id int not null auto_increment primary key,
が連番の主キー

tw_user_id varchar(30) unique,
がユーザIDの格納

tw_screen_name varchar(15),
がユーザ名の格納

tw_access_token varchar(255),
がAPIアクセスためのアクセストークン格納

tw_access_token_secret varchar(255),
がAPIアクセスのためのアクセストークンシークレット

シェルスクリプトでのユーザ関数

シェルスクリプトでのユーザ関数
#18 関数を使ってみよう
http://dotinstall.com/lessons/basic_shellscript/10618
を参考に
シェルスクリプトでのユーザ関数について学習
シェルスクリプトでのユーザ関数の作成は
function 関数名(){
行いたい処理
}
そして呼び出すときには
関数名
だけでOK
もし
function hello(){
#行いたい処理
}
なら
関数呼び出しは
hello
となる
実際にやってみると
vim myfunc.sh
内容は
#!/bin/bash
function hello(){
echo “hello shell script”
}
hello
として保存
chmod +x myfunc.sh
,/myfunc.sh
とすると
hello shell script
と表示される
ちなみに、
function は省略可能
シェルスクリプトでの関数の引数は
コマンドと同じように $1 $2 というように引数の数に$をつけて指定する
そして、引数を指定するときには
ユーザ関数の横にスペースで区切って
引数を記述する
例えば
!/bin/bash
function hello(){
echo “friends name $1 $2”
}
hello Mike Tom
これを実行すると
friends name Mike Tom
となる
そして、他のプログラム言語とちがうのが
変数の有効範囲
PHP Java Script C++ などでは
基本的に関数のスコープのそとにかいたものが
グローバル変数
スコープの中に書いたものがローカル変数となる
しかし、シェルスクリプトの場合
ローカル変数であると宣言する
local を変数の前につけないと
グローバル変数扱いになるので注意
まず、local なしの場合
#!/bin/bash
function hello(){
echo “hello shell script”
echo “friends name $1 $2”
i=5
echo $i
}
hello Mike Tom
echo $i
これだと、実行すると
hello shell script
friends name Mike Tom
5
5
となり、$i に関数の外からアクセスできているので
表示されている
次は、local 宣言した場合
#!/bin/bash
function hello(){
echo “hello shell script”
echo “friends name $1 $2”
local i=5
echo $i
}
hello Mike Tom
echo $i
これで実行すると
hello shell script
friends name Mike Tom
5
となり、関数の外からアクセスできなくなっているのが
わかる
ちょっとした違いに見えるけど
間違えると予期せぬ動きに悩まされるので注意

シェルスクリプトでファイルからデータ入力

シェルスクリプトでファイルからデータ入力
#17 ファイルから入力してみよう
http://dotinstall.com/lessons/basic_shellscript/10617
を参考に
ファイルからのデータ入力処理について学習
ユーザ入力でデータ入力するには
read を使う
ファイルから1行ずつ読み込んで実行するには
まず、
vim data.txt
でファイルを作成
内容は適当に
a
aaa
aaaaa
として保存
これを読み込んで表示するスクリプトを作成
vim filerun.sh
として
#!/bin/bash
i=1
while read line
do
echo “$i: $line”
i=`expr $i + 1`
done <$1 として保存し、実行する $1 は引数1という意味なので ./filerun.sh data.txt というように、読み込むファイルを指定する すると 1: a 2: aaa 3: aaaaa という結果になる 処理についてちょっと復習メモ echo "$i: $line" は、 $i=行数:$line=ファイルの内容 というようになる i=`expr $i + 1` これは行数の足し算 `` はバッククオートなので shift + @ なので シングルクオート shift +7 と間違えないように注意 expr は計算するコマンド while ループのなかで $i +1 なので ファイルが読み込み終わるまで足されていく while read line のところは 構文にすると while read 変数 do 行う処理 done < 読み込むファイル となる 変数なので while read thisfile とかみたいに line じゃなくてもOK あと、読み込むファイルは 今回は $1 としているけど done < data.txt としてしまえば、ファイルを直接読み込ませることもできる これについては while 文の使用方法
を参照するとわかりやすい

スクリプトでユーザ入力の受け付け

スクリプトでユーザ入力の受け付け
#16 ユーザーからの入力を受け付けよう
http://dotinstall.com/lessons/basic_shellscript/10616
を参考に、スクリプトでのユーザ入力の受け付けを学習
これにより、スクリプト実行中に
文字入力が可能になる
これには
read
を使う
動画を参考に実践
vim readtest.sh として
中身を
#!/bin/bash
while :
do
echo “文字を入力してください(終わりたいのなら end を入力)”
read key
echo “you pressed $key”
if [ $key = “end” ];then
break
fi
done
として保存
read の前に echo で文字を書いたのは
終わり方を示すのと
read だけだと何も表示されないので
わかりにくいから
while :
なので、無限ループ
終わるためには
if [ $key = “end” ];then
break
fi
の if 文にあるように $key = end となる
つまり end を入力したら終わり
ループ脱出には break を使う
case だと break は ;; だけど 
while の場合ならbreak でOK
chmod +x readterst.sh
./readtest.sh
で実行すると
文字を入力してください(終わりたいのなら end を入力)
start
you pressed start
文字を入力してください(終わりたいのなら end を入力)
next
you pressed next
文字を入力してください(終わりたいのなら end を入力)
end
you pressed end
となる
ユーザ入力により処理分岐というのに使える
とくに case 文とか
また、選択肢でえらばせるには
select を使う
select option in CODE DIE
do
echo “you pressed $option”
break;
done
を追加する
構文は
select 変数 in 選択肢1 選択肢2
do
処理内容
break;
done
となる
オプションをつけて実行すると
文字を入力してください(終わりたいのなら end を入力)
true
you pressed true
文字を入力してください(終わりたいのなら end を入力)
end
you pressed end
1) CODE
2) DIE
#? 3
you pressed
というようになる
オプションをつけた場合、
1) CODE
2) DIE
というように表示される
本来は、なんらかの処理をするけど
今回は
break
となっているので、どの数字、1、2以外でも
入力すると終了するようになる

シェルスクリプトとコマンド引数

シェルスクリプトとコマンド引数
#15 コマンド引数を使ってみよう
http://dotinstall.com/lessons/basic_shellscript/10615
を参考に、
コマンドラインからわたした引数について学習
複数のファイルになんらかの実行をするときに使う
$0
プログラム自身
以降 $9 までがプログラムの引数になり
10以降については
${10} というように {} で数値を囲む必要があるので注意
$@
引数全部
$#
引数の個数
これだけだとわかりにくいので
例を作ってみた
vim arg.sh でファイルを作成して
#!/bin/bash
echo $0
echo $1
echo $2
echo $@
echo $#
で保存して、
chmod +x arg.sh
で権限付与
実行する時に
./arg.sh exitst this world
というように、適当に単語をスペースで区切って書いて実行
このスペースで区切ったのが引数となる
./arg.sh
exitst
this
exitst this world
3
が実行結果
それぞれをスクリプトの引数に照らし合わせると
./arg.sh == $0 プログラム名
exitst == $1
this ==$2
exitst this world ==$@ 引数全部
3 == $# 引数の数
つまり
exitst this world
の部分が引数扱いになる

シェルスクリプトの for 文

シェルスクリプトの for 文
#14 for文でループ処理をしてみよう
http://dotinstall.com/lessons/basic_shellscript/10614
を参考に
シェルスクリプトでの for 文を学習
構文は
for 変数 in 配列
do
行う処理
done
となる
例えば、1から5まで表示するなら
for i in 1 2 3 4 5
do
echo $i
done
となる
とはいっても、通常はこのようにわざわざ全部
書くようなことはせず、配列にまとめるので
a=(1 2 3 4 5)
for i in ${a[@]}
do
echo $i
done
というようにする
a[@] というのは
a配列の中身全部という意味
変数で配列を指定するときには
${} で囲むことを忘れずに
今回なら${a[@]}となる
また、今回の様に1~5というのを全部書くのではなく
seq を使うことで
1~100というような指定ができる
for で指定するときには
バッククオートで囲んで範囲指定する
構文にすると
for 変数 in `seq 始まりの数 終わりの数`
となる
例えば25~30としたいのなら
for i in `seq 25 30`
というように指定する
バッククオートのかき方は
shift + @ で ` となる
shuft + 7 の’と間違えやすいので注意

シェルスクリプトでの while文

シェルスクリプトでの while文
#13 while文でループ処理をしてみよう
http://dotinstall.com/lessons/basic_shellscript/10613
を参考にシェルスクリプトでの while文について学習
構文は
while [ 条件式 ]
do
行う処理
done
となる
条件式のところの [ ] は
以前やった if の条件式と同じで
[ は test コマンドの代わりにしているので
前後に空白を開けること
i=0;
while [ $i -lt 10 ]
do
i=`expr $i + 1`
echo $i
done
とすると
1から10まで表示される
$i -lt 10

$i < 10 という意味 -ltはより小さいと言う意味で < と同じ あと、注意点として i=`expr $i + 1` の` はバッククオートなので shift + @ で打つ shift + 7 の ' ではないので注意 expr は数値計算するときに使うコマンド あと、シェルスクリプトで 無限ループを作成したいのなら while : とする : はNULLコマンドなので いつでも正常終了、つまり0になる while ループの条件がずっと 0になるので無限ループになる これを抜けるには 一時的に抜けたいのなら continue 完全にループを抜けるのなら break となる これらは while : の無限ループの中で 特定条件を if で指定し 条件を満たしたときに処理したり ループを抜けるように使われる

シェルスクリプトでの case 文

シェルスクリプトでの case 文
#12 case文で条件分岐をしてみよう
http://dotinstall.com/lessons/basic_shellscript/10612
を参考に
シェルスクリプトでの case 文を学習
java script とかPHPなどでは
switch(条件){
case 1:
case1 のときに行う処理;
break;
case 2:
case2 のときの行う処理;
break;
default:
その他の時の処理;
break;
}
となる
しかし
シェルスクリプトの場合
if のときと同じで
caseの範囲を
{} でスコープすることがない
シェルスクリプトでの case 文を
構文にすると
case 条件 in
条件1)
条件1だったときの処理
;;
条件2)
条件2のときの処理
;;
*)
どれも当てはまらない時の処理
defalult 処理と同じ意味
;;
esac
;;は break と同じ意味になる
条件2)

case 条件2 :
と同じ意味
*)

default :
と同じ意味
シェルスクリプトでは if の範囲の終わりが
fi というように if を反対に記述したように
case の範囲の終わりも
esac というように case を反対に記述する
Javascript とかPHPから始めて
シェルスクリプトをやりはじめると
最初に if とか case などでわかりにくいけど
パターンを置き換えて覚えると覚えやすい
== の代わりに -eq
!= の代わりに -ne
などなど

シェルスクリプトでの if else 文

シェルスクリプトでの if else 文
シェルスクリプトでは
if文は
if [ 条件 ]; then
行う処理
fi
というかき方をする
if else の場合だと
if [ 条件 ]; then
条件を満たすときの処理
else if [ 条件を満たさないときに行う次の条件 ]; then
この条件を満たした場合の処理
else
どちらでもなかった場合の処理
fi
というようになる
例えば、
x=10
if [ $x -ge 60 ]; then
#60 以上なら
echo “ok”
else if [ $x -ge 20 ] ; then
#20 以上なら
echo “warning”
else
#20よりも下なら
echo “danger ”
fi
というようになる
[ ] は test の代わりなので
前後にスペースを開けるようにすることを忘れずに
Java Script とかでよくある if else とほぼおなじだけど
かき方が微妙に違う
条件式で < とか > などではなく
-eq などを使う
比較している条件の意味は
-eq
等しいか調べる
== と同じ
-ne
等しくない
!= とおなじ
-gt
~より大きい
< とおなじ -ge ~以上 <= と同じ -lt ~より小さい >とおなじ
-le
~以下
>= と同じ