PHP 設定

PHP 設定

設定ファイル php.iniを編集

vim /etc/php.ini 

でファイルを開いて

date.timezone ="Asia/Tokyo"

でtimezone 設定

場所は 946 行め

設定の反映のため

/etc/init.d/httpd restart

で apache を再起動

PHPの動作確認のため

vim /var/www/html/info.php

でファイルを作成

内容は

<?php
phpinfo();
?>

で保存し

サーバーのIPアドレス/info.php
へブラウザへアクセスすると
PHP の設定がかかれた画面が表示される

phpinfo

仮想 マシンに wordpress 構築

仮想 マシンに wordpress 構築

VMWarePlayer へ CentOS のマシンをつくったので
次に必要なパッケージをインストール

必要になるのは
apache
php
mysql
となるので、これらのインストールと設定

その前にネットワーク設定をしないとつながらない

vim  vi /etc/sysconfig/network-scripts/ifcfg-eth0

でファイルを開く

ONBOOT=no
となっていると
ネットワーク自動起動が有効化されないので
yes に変更

あと
BOOTPROTO=dhcp
だと自動取得だけど変動するので
これがいやなら
dhcp を static にする
static にするのならIPアドレスなどの設定が必要

とりあえず実験なので簡単に行うため
dhcp を選択

これで
[shelll]
/etc/rc.d/init.d/network restart
[/shell]
を実行すると

ifconfig 

でIPアドレスなどをみることができる

今回なら

eth0      Link encap:Ethernet  HWaddr 00:0C:29:13:9E:BA  
          inet addr:172.16.72.128  Bcast:172.16.72.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe13:9eba/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:63 errors:0 dropped:0 overruns:0 frame:0
          TX packets:118 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9945 (9.7 KiB)  TX bytes:11587 (11.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:396 (396.0 b)  TX bytes:396 (396.0 b)

となっている

あとはIPがわかれば
Ubuntu から端末でリモート操作できるので
ssh でログインする

ssh root@サーバーのIP

これでリモート操作できるので

yum install httpd mysql-server php php-mysql wget

で必要なものをインストール

インストール完了後
設定を行う

このままだと webサーバにアクセスできないので
iptables を編集し
ファイアウォールに穴をあける

vim /etc/sysconfig/iptables

でファイルを開き

A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

を追記
場所は 22 版ポートの設定をしている
10行めの下

設定を変更したら再起動して有効化

/etc/init.d/iptables restart

次に apache 起動と自動起動の有効化

/etc/init.d/httpd start
chkconfig httpd on

これでブラウザから
サーバーのIPアドレスへアクセスすれば
apache の画面が表示される

apache

wordpress の投稿を電子書籍へ

wordpress の投稿を電子書籍へ

Kindleセルフパブリッシング入門 電子書籍でベストセラー作家になろう
をみて電子書籍をつくってみようと思ったけど
そういえば、wordpress のプラグインでもできたと
思ったので検索

ちなみに書籍に載っていた方法は
Sigil を使ったやり方


http://www.nishi2002.com/2958.html


wordpress の記事を電子書籍にすることが可能なようなので挑戦

とはいってもレンタルサーバー借りて実践するのも
敷居が高そうなので
ここは仮想マシンで wordress を構築し
実際にプラグインをいれるという方向で実践

時間がかかりそうなので
まずは すでにダウンロードしてある CentOS イメージから
VMWare Player で仮想マシンを作成する

ちなみにホストマシンは
Ubuntu 12.04 LTS 64bit

仮想マシンの構成は
CentOS 6.4 64bit にして

ネットワークは NAT にして
メモリだけ 2048MB に増やす

インストールに関しては
http://centos.server-manual.com/centos6_install.html
を参考に実行

とりあえず最小構成にして
ベースと開発ツールのみインストール

インターネットの速度が遅いため
とりあえずインストールだけして続きは次回

Fritzing でLチカ

Fritzing でLチカ

さっそくLチカしようとしたけど

ソフトウェアセンターでインストールしたものだと
バージョンが古く
Raspberry Pi が使えない

このため
http://fritzing.org/download/api/1.0/update/315
から最新版の
Version 0.9.0b をダウンロード

展開したフォルダの中で

./Fritzing 

とすれば最新版が起動する

frtzing

この中でブレッドボードを選ぶと
ブレッドボードが表示される

fritzing2

右側のパーツから
Raspberry Pi
LED
抵抗
を選ぶ

Raspberry Pi は
Microcontroller のところにあるので
それを選ぶ

抵抗は
Basic のところに
220Ω register
とあるので
これを選ぶ

LEDは
Output のところに
Red(633nm) LED があるので
これをつかう

設置については
各種アイコンをドラッグ&ドロップすればOK

fritzing3

ドラッグ&ドロップすると
回路図のほうにも反映されている

fritzing4

とりあえず配置できたので
配線は次回

Ubuntu で無料CAD

Ubuntu で無料CAD

fritzing
が無料で使えるCADソフトということで
これをインストール

とはいっても Ubuntu の場合
ソフトウェアマネージャーを起動して
検索に
fritzing
と入力すればでてくるので、あとはインストール

Fritzing はブレッドボード入力機能があるらしく
ラズパイマガジン(日経BP Next ICT選書)
で紹介されていたので
インストールしてみました

起動すると、ブレッドボード画面がでてくる

breadboard

詳しい使い方は次回以降にします

adb shell の使い方

adb shell の使い方

まずは動作確認

しかしいきなりエラー

An internal error occurred during: "Launching New_configuration". Path for project must have only one segment.

とエラーがでたので
検索し
http://stackoverflow.com/questions/9357111/whats-the-meaning-of-this-in-eclipse-path-for-project-must-have-only-one-segm
を参考に
Project > Properties > Run/Debugg settings

Launching New_configuration を選択し
delete
これで起動はしたけど
エラーで止まる

次にエラーログをみたら
near “integer” :syntax error
となっていたので調べたら
sql 文が違っていた

これを修正したけど
arning: Activity not started, its current task has been brought to the front
となる

これを調べたら
http://androidfaq.e1blue.net/android/status/27
によれば
ソースに変更なしで再実行するとでるらしい

とりあえず sqlite で確認したかったので
実機の Nexus 7 をUSB接続し

adb devices

で確認

ここで何も表示されていないのなら
いろいろ設定する必要がある

とりあえず、できているという前提で続ける

adb shell

を実行すると
Nexus7 の中に入れる

このままだとDBファイルの閲覧ができないので
ユーザを切り替える

やり方は

run-as アプリのパッケージ名

ということで

run-as net.developapp.mydbapp

を実行

そしてDBファイルの存在を調べるため

ls net.developapp.mydbapp /data/net.developapp.mydbapp/databases/    

を実行

これで myapp.db というsql ファイルの存在を確認

残念ながら sqlite3 が Nexus7 にはないので
一度
/sdcard へコピーし
これをPCに転送してから中身を確認する

そのままコピーしようとしても

sh: can't create /sdcard/myapp.db: Permission denied

となってしまい、権限のためコピーできない

このため、一般ユーザに戻し
次に

cd  /data/data/net.developapp.mydbapp/databases/databases

で移動し

run-as net.developapp.mydbapp cat databases/myapp.db > /sdcard/myapp.db

というようにすれば
コピーできる

あとは
adb シェルからログアウトして

 adb pull /sdcard/myapp.db 

でファイルをコピー

これで
Ubuntu で

sqlite3 myapp.db 

とすれば中身をみることができる

Nexux7 での
SQLiteの取得と内容確認

http://ymlib.com/YMWorld/Android/P0/W0/P007/YMWAndroid007.html
を参考にさせていただきました

Androidカメラの顔検出機能

Androidカメラの顔検出機能

顔検出機能を使うには、Cameraへ
setFaceDetectionListener
をセットして
startFaceDetection()
を使う

カメラが顔認識できる数は、
デバイスにより異なるため
まずは、何人まで認識可能か調べる

int maxFaces = param.getMaxNumDetectedFaces();

これで、可能な数を変数へ格納

次に、顔認識を検出するリスナーをセット
setFaceDetectionListenerをセットすることで
顔認識が検出できるようになる

mCamera.setFaceDetectionListener(
new FaceDetectionListener(){

@Override
public void onFaceDetection(Face[] faces, Camera camera){

//顔を検出したら顔認識マーカー表示ビューへ値を渡す
mFaceMarkerView.faces = faces;

mFaceMarkerView.invalidate();
}
});

顔認識がセットできたら、顔認識の開始
顔認識の開始には
startFaceDetection()を呼び出す

mCamera.startFaceDetection();

次に、顔認識座標を画面へ反映する

今回は、カスタマイズビューを作成し
顔認識座標を描画する

if(faces !=null){

for(int i=0; i<faces.length; i++){

//変更したいのなら前のカメラの状態を保存
int saveState = canvas.save();

//カメラデバイスから取得される値は
1000
~-1000のため
Matrixを使い座標を変換できるようにする
Matrix matrix = new Matrix();
matrix.postScale(getWidth() / 2000f, getHeight() / 2000f);
matrix.postTranslate(getWidth() / 2f, getHeight() / 2f);
canvas.concat(matrix);

//検出した顔を中心に短形と認識精度を表示
float x= (faces[i]rect.right + faces[i].rect.left)/2;

float y =(faces[i].rect.top + faces[i].rect.bottom)/2;

String score = String.valueOf(faces[i], score);

//精度描画
canvas.drawText(score, x, y, point);

//顔認識座標を四角で描画
canvas.drawRect(faces[i].rect, point);

//Canvasを元の状態へ戻す
canvas.restoreToCount(saveState);

}
}

なお、顔認識情報は
顔認識した人数分だけ
faces配列へ格納される

Facesクラスへ格納される情報は、以下のように区分される

int id
顔認識ID

Rect rect
顔と認識した範囲

int score
顔の認識率

Point leftEye
左目の中心座標

Point rightEye
右目の中心座標

Point mouth
口の中心座標

A/D変換器とセンサー

A/D変換器とセンサー

アナログな電圧の変化をデジタルデータに変換するには
A/D変換器
を使う

これを使えばアナログセンサーの値を読み取り
シリアル通信でデータを受け取れる

今回使用するパーツは
MCP3208-CI/P

この部品は SPI 対応していて
最大 8個 のデバイスをつなげることができる

センサーには
LM35DZ

を利用する

また、抵抗の値を変えられるように
半固定抵抗をつかう

今回は
半固定ボリューム (10kΩ) (10個入)

を使用

とりあえず部品はこれでOKなので
次は配線していく

配線はラズパイマガジンを参考に行った
ラズパイマガジン(日経BP Next ICT選書)

配線があっているか調べるため
温度の測定

http://nlinux.jp/2014/raspi/

から書籍に載っている パスワードを入力すれば
ファイルがダウンロードできるので
第4部 ホントに初めての回路図講座
のところの
4bu-part1.zip
をダウンロードして解凍

これを SFTP で raspberry Pi へ転送する
使うのは
abc.c

まず、今回は Wiring Pi を使うので

gpio -v 

でバージョン確認

gpio version: 2.20
Copyright (c) 2012-2014 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Model B, Revision: 2, Memory: 512MB, Maker: Sony 

次に
Raspberry Pi のSPIを有効にするため

gpio load spi

次に、ダウンロードした
4bu-part1.zip
を解凍すると中にある
adc.c を FileZilla などのFTPソフトで
Raspberry Pi で転送する

これで

gcc -o adc adc.c -lwiringPi

でコンパイル

構文は

gcc -o 任意の名前 ソースファイルの名前.c -lwiringPi

C言語なので、拡張子は .c になる

あとは

./adc 

と実行すれば温度が表示されるようになる

このときに温度センサーに触れると
表示される温度が上がっていくのがわかる

回路図メモ

回路図メモ

各種抵抗とか
各種コンデンサー
各種コネクタは
使う目的や用途により異なる

これは、Webサイトをつくるときに
HTMLタグ
API
ライブラリ
を使い分けるようなもの

回路図の場合
部品
配線
にわけると見やすい

また、回路図の書き方は
基本的にCADに影響される

あと
各種IC
単機の部品は、1つずつ記号があるけど
複雑な機能をもってたり、
沢山のピンがあったりすると
部品を記号で表すのが難しいし、見にくい

なので、四角い箱を書いて
使うピンが書かれた記号にする

回路図は、英語では
Schematic
という

あと、BOMリストと呼ばれる部品表も重要で
これがちゃんとできてないと
スペックがあわないとか
部品が揃わないことがある

これは、回路図ではボタンとはいっても
用途により違うから
料理するときに、
鍋とはいっても中華鍋とか
土鍋とか種類があるように
スイッチとはいっても
タクトスイッチみたいに、押しっぱなしでOn/OFFもあるし
家の電気のスイッチみたいに、
押したらずっとONとかいうのもある

このため、用途により変わるから
部品表は重要になる

I2C と SPI の違い

I2C と SPI の違い

I2C と SPI は、ほとんどおなじ

制御するデバイス
大抵は Raspberry Pi になるけど
こっちをマスターといって

制御される側の部品のことを
スレーブという

この呼び方の違いは
利用する部品がどちらに対応しているかにより異なる

仕組みは
どっちもクロック信号に載せてデータをやりとりする

このデータ交換は
I2c なら1本の信号線を使い

SPIなら2本の信号線を使う

これは I2C が双方向で
SPI が片方向となっているため

ちなみに
I2C のデータ線はSDA という

SPIの場合
マスターからスレーブ方向を MOSI
スレーブからマスターが MISO
という

そして、マスターとスレーブとの間で
MOSI 同士
MISO 同士
をつなげる

SPIの場合、かなりわかりにくく
自分からでていくのが
SDO とか Dout
といって

自分に入ってくるのを
SDI とか Din
と書いているときもある

こう書いてある場合
Out と In で接続する

例えば
マスターの SDO を
スレーブの SDI に接続する

I2C でも SPI でも
複数のスレーブとつなげることができるため
どれと通信するか識別する必要がある

I2C を使っている場合なら
スレーブ側にアドレスを持つので
マスターからアドレスを指定して制御する

SPIなら、専用の信号線があるので
各スレーブが持つ CS や SS を
マスターがロー、つまりGNDにして
デバイスを選択することになる

なお、マスターはスレーブの数だけ信号線が必要になる

Raspberry Pi に搭載されているのは
2本で CE とかかれている