2012年6月23日土曜日

Pythonによるソーシャルデータ分析入門


■あらすじ


Facebookやtwitter.
いまや無くてはならないツールとなった.
いろんな人のつぶやきを見ていて,やってみたいことが出来た.
それは,つぶやきを利用して,いろんな会社の勤務時間帯を調べることだ.


twitter上にはリスト機能があったり,Facebookではプロフィールに勤務先があったりする.
例えば,twitter上にある「トヨタ2012」みたいなリストとFacebookにいるToyota勤務の人のつぶやきを収集して,そのアップデート時刻をヒストグラム表示してみれば大まかな勤務時間帯が可視化出来る気がしてならない.

勤務時間帯だけでなく生活リズムとかもわかるかも.
デスノートで,キラを特定するのにエルが使ってた方法だ.

いろいろと面白げなので,まずは,「入門ソーシャルデータ」という本を購入.
自身初のオライリー本ということもあって読破できるかは微妙だけど...



■Python環境設定とtwitterパッケージのサンプルプログラム


とりあえず今日やったこと.
Mac OS X 10.7 でpython開発環境のセットアップ.

1. python 2.7のインストール


2. MacPortsのインストール
 ここから MacPorts-2.1.1-10.7-Lion.pkg をダウンロードして実行.


3. easy_installのインストール
ここで書いてあるように以下のコマンドを実行.

   $ curl -O http://peak.telecommunity.com/dist/ez_setup.py
   $ python ez_setup.py



つぎにパッケージのインストール.
ここでは,networkx,numpy,twitter.
 $ easy_install networkx
 $ easy_install numpy
 $ easy_install twitter


twitterのトレンド取得について試してみる.
API側の仕様変更があり,書籍通りのコードでは実行できない.
このサイトの通りに実行すると取得できる.



■ついでにGAEへデプロイ
せっかくプログラム作るのだからウェブ上に上げたい!
てなわけでレンタルサーバーとしてGAEを利用してpythonアプリケーションのデプロイ設定.
ここを参照!

2012年6月19日火曜日

シェルスクリプト入門

会社の環境で仕事を進めるにあたり、シェルスクリプトの必要性に気づき少し勉強してみる。


■シェルスクリプトとは?
複数のコマンドをまとめて行う簡易プログラムのこと。

■サンプルプログラム
#!/bin/sh
echo "Hello World"

・"#!"以降に書かれたプログラムでスクリプトを実行する
・シェルの実行にあたり実行権限が必要になる場合があるので chmod u+x bashfile
・環境変数に「.」を記述していない場合はファイルの前に./を入れる必要がある


■シェル変数
変数名="値"  # =前後にスペースをいれてはいけない

$# : 与えられた引数の個数
$* : 全引数リスト
$number : シェルに与えられた引数名
$? : 最後に実行したコマンドの終了ステータス

■算術演算子
exprコマンドを使う。

(例) `expr 10 + 30`  # 40と表示される

■コメント
コメント部分の行頭に#をつける

■条件分岐
"["と"]"の前後に半角スペースを入れる(最後に";"をつけた場合は最後の半角スペースは必要無し)


if [ 条件 ];
then
else
fi

■参考文献

2012年6月17日日曜日

Javascript

公式サイト: https://developer.mozilla.org/ja/JavaScript
コンソール出力:  console.log(i);
コンソール表示(Chrome): ctrl+shift+j

■関数定義
 function func1(a,b){
  return (a+b);
}

■配列
var array = [1,2,3];
console.log(array[2]); // 3が表示される

■連想配列

var array2 = { 'year1000':1,'year2000':2,'year3000':3  };

■Javascriptのオブジェクト
 オブジェクト = プロパティ(属性)とメソッド(処理)

 var v =  new String("sample"); //new オブジェクトの種類();
 console.log(v.length); //文字列の長さを表示

一定時間後に何かする
setTimeout(処理の内容 , 処理までの時間をミリセカンドで)

一定周期ごとに何かする
setInterval(処理の内容 , 処理までの時間をミリセカンドで)


// 学習ソースファイル1 ☆★☆★☆★☆★☆★☆★☆★


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>JavaScriptの勉強</title>
</head>
<body>
    <h1>JavaScriptの勉強</h1>
    <script>
        // ループ(while)

function sum(a,b){
return (a+b);
}
       

var array = [1,2,3];
var array2 = {'year2000':100,'year2001':200,'year2002':300,};

var obj1 = new String("this is a pen.");
console.log(obj1.substr(2,2));

console.log(obj1.replace("pen","pencil"));

var obj2 = new Array(12,33,44,55);
console.log(obj2.join("|"));
console.log(obj2.reverse());
       
var obj3 = new Date(); // 月:0~11
console.log(obj3.getMonth());


console.log(Math.PI); // プロパティ
var x = 5.332;
console.log(Math.floor(x)); // メソッド
console.log(Math.random(x)); // メソッド

// Browser Object Model(BOM)
// JavaScriptではブラウザのウィンドウ自体もオブジェクトとして扱うことができます
console.log(window.innerHeight);
//window.location.href = "http://google.com";

// Document Object Model (DOM)
// ブラウザ内の文書を操作するためのDOM
console.log(document.width);
document.body.bgColor = 'red';


    </script>
</body>
</html>




// 学習ソースファイル2 ☆★☆★☆★☆★☆★☆★☆★
<!DOCTYPE html>
<html lang="ja">
<head>
   
    <title>JavaScriptの勉強</title>
</head>
<body>
    <h1>JavaScriptの勉強</h1>
    <p>僕の名前は<span id="myName">@taguchi</span>です!</p>
    <p>価格: <input type="text" id="price">円</p>
    <p><input type="button" value="クリック!" id="myButton"></p>


    <script>
        // DOM
        var e = document.getElementById('myName');
        e.innerHTML = 'たぐち';
       
        var n = document.getElementById('price');
        n.value = 500;


// イベント処理
        var e = document.getElementById('myButton');
        e.onclick = function () {
            alert("クリックされました!");
        }
       

        // タイマー処理
        // setTimeout: 一定時間後になにかする
        setTimeout(function () {
            console.log("2秒たちました!");
        }, 2000);
       
        // setInterval: 一定周期ごとに何かする
        var i = 0;
        setInterval(function () {
            console.log(i);
            i++;
        }, 1000);
    </script>


</body>
</html>




2012年6月16日土曜日

ドットインストール(3)



■ファイルの作成削除コピー移動
作成: vi filename
削除: rm filename
コピー:cp file file2(fileをコピーしたfile2の作成)
移動: mv test.txt path(pathの位置にファイルを移動,名前変更にも使える)


■ファイルの中身をみる
cat : 中身を見る
less / more : コマンド実行結果を少しづつ見る
head / tail : 最初/最後の10行を表示

■ワイルドカード
* : 任意の文字いくつでも
? : 任意の一文字

■ディレクトリやファイルの検索 find
find [] -name "" -type [d|f]

例) find . -name "test_*" : カレントディレクトリ内の"test_"ではじまるファイルとディレクトリを探す
ファイルだけ見たい時は "-type f",ディレクトリだけ見たい時は "-type d"をオプションで付ける.



■ファイルの中身を検索
grep -[] [] []

grep 111 * : 今いるディレクトリ内のファイルで文字列111を含むファイルを表示
オプションで -c をつけると出てきた回数も表示する
ディレクトリ内も再帰的に検索してほしい時は -rをつける.


■コマンドラインの便利な使いかた
Tabキー : 補完(2回押すと候補を表示)
矢印キー : 過去のコマンドを表示
history : 過去に行ったコマンドを表示

!222 : 222に実行したコマンドを実行
!! :直前のコマンドを実行
!gr : grepではじまる一番最後のコマンドを実行
!gr:p : grepではじまる一番最後のコマンドを表示


■便利な小技
man : マニュアルを調べる(スペースで下へ)
tree : ディレクトリの構造
date : 時間を表示
cal : カレンダー表示
wc filename : ファイルの行数等を表示(-lで行数)


2012年6月12日火曜日

ドットインストール(2)


Unixコマンドの基礎のメモ

■Unixコマンドを覚えると...

- レンタルサーバーのうちSSH接続
- CentOSにMacターミナルから一般ユーザーでログインする

■ログイン,ログアウト
ログイン:ssh username servername
ログアウト:exit

■パスワード変更 passwd

■ディレクトリの移動
現在地:pwd
ディレクトリの移動:cd hoge
ホームディレクトリに戻るときはcdのみ
.は自分自身
..は一つ上のディレクトリ

■ディレクトリの中身を見る
ls : ディレクトリの中身を表示
オプション: 
-l : より詳しい情報
-a : 隠しファイルを見る
ディレクトリかどうか,
所有者,グループ,その他の人
r: read, w:write, x:実行
ファイルの所有者 属しているグループ
サイズ
最終更新日
名前

■パーミッションの変更
4r 2w 1x
rwx = 4+2+1

chmod _ _ _ ディレクトリorファイル

(ex) chmod 755 dir
755⇔ rwx r-x r-x

■ディレクトリの作成削除
mkdir dir : dirを作成
rmdir dir:dirを削除
■■■■■■■■■■■■

2012年6月10日日曜日

ドットインストール(1)

プログラムの基礎を手軽に学ぶためにドットインストールというサイトで勉強を始めた。

ここでは、初心者向けに3分以内の短い動画でプログラムの基礎を説明しているようです。

ウェブ系のプログラム言語だけでなく環境構築等のことも充実しており、かなり勉強になりそう!

てなわけで、まずはMacOS上の仮想端末でCentOSを使えるように設定。
インストールに時間がかかるので同時並行でエディタに慣れる目的でVimの学習をする。



■CentOSをVirtualBox上で動作させる
CentOS、VirtualBox、Hosterのダウンロードとインストール。
細かい設定等は動画を参照。
CentOSにhttpdパッケージをインストールしてWebサーバーが構築される。
Apache,PHP,MySQLのインストール。
セキュリティの設定(selinux,iptablesの無効化)。
Cyberduckの設定
html,phpファイルをブラウザ上で動作確認


■Vimの学習
insert,select,コピペ、カーソルの移動についてのコマンドを覚えた(つもり)。




-- 覚書
VirtualBox上でCentOSを立ち上げる
HosterでIPアドレス解決
コマンドライン上でsshでログイン
Cyberduckでファイル作成
ブラウザ上で確認 (http://***.dev/hoge.html )