windows10をSSDにインストール

windows10を買ってきた。

使っていたのがhomeバージョンだったので、proを。

proが必要だった。

リモートデスクトップで入りたいとか、hyper-vを使いたいとか。


240GBのssdドライブを買ってきて、ディスクを入れ替えてそこに入れた。


windowsのインストールのときにフォーマットができなかった。


なぜなのかよくわらず、もう一度前のディスクで起動し、フォーマットした。


インストール終了後、起動ディスクではないもう一つのハードディスクが見えない。


管理ツールのディスクの管理を見ると、なんという表示だったか忘れてしまったが、

形式が違う、みたいなのが表示されていたので、右クリックして、何を選んだか忘れたが、

見えるようにした。



raspberry pi のモニタ

4D SYSTEMの3.2インチLCDディスプレイを買った。

基本、SSHで入るんだけど、一番最初とか、なんかあったときにIPアドレスを見るくらいのことがしたい。


HDMIインタフェースがあるがパソコンで使っているモニタのケーブルを差し替えるのは結構めんどくさい。


説明書に書いてある通りのことをしたが、何も表示されない。

それどころか、起動しなくなってしまった。

raspberry pi の監視カメラ

下記を参考に、piでカメラを使ってみた。

http://make.bcde.jp/raspberry-pi/usb%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%A7%E7%9B%A3%E8%A6%96%E3%82%AB%E3%83%A1%E3%83%A9/


pi 2 はできたが、
古いpi の場合、スクリプトの内容を少し変えた。

pi@raspberrypi ~/mjpg-streamer $ cat start_server.sh
#!/bin/sh

PORT="8080" #ポート番号
ID="user" #ID
PW="password" #パスワード
SIZE="320x240" #画面サイズ
FRAMERATE="2" #フレームレート
export LD_LIBRARY_PATH=/usr/local/lib
./mjpg_streamer \
    -i "./input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y -n" \
    -o "./output_http.so -w ./www -p $PORT -c $ID:$PW"





とりあえず自分の姿を映してみたが、やっぱり監視カメラやライブカメラにしたい。


せめて、家の外を映したい。寝床にいながら、外の天気が確認できるくらいのことが。


そのためには当然、カメラを外に置く必要がある。

ネットワークは無線が使えるが問題は電源である。

短期間なら携帯用電源をつないでおけばいいか。


とりあえずモバイル充電器をつないでベランダに置いておいた。

今は真っ暗で何も見えないが夜が明けたら何か見えるはずだ。


raspberry pi 2 の初期設定

ftp.jaist.ac.jp から raspbian を落とす。

zipファイルが解凍できない。

7zipで解凍する。前にもやった覚えがある。


micro SDカードは32GBのもの。

こんなに必要ないとは思うがそんなに高いものでもないので。


DD for windowsとかいうのでimgを書き込もうとするがエラーになる。

フォーマットしないとダメかな、と、dd formatterというのでやる。

容量が60MBと表示されているのが気になる。


「書き込み禁止になっている」というエラーになったが、

そんなはずはない。

ディスクを抜き差ししたらいけた。

が、アホみたいに遅い。1%進むのに10秒以上かかっている。

待てない。

キャンセルしてwindowsでfat32でフォーマットする。数秒で終わる。


DDで書き込む。

書き込むファイルが書き込むディスクより小さいというキチガイみたいな警告がでる。

「危険を承知で保護を外す」をチェックして書き込む。


これもけっこう遅いが、数分程度で終わりそうなので待つ。


カードをぬいて、piにさす。
キーボードとマウスをpiにつなぎ、hdmiケーブルでディスプレイにつないで、piの電源をいれる。

LANケーブルをつないで、DHCPサーバから割り当てられるIPが何かわかるか、
割り当てられたIPを確認できるなら、最初からSSHではいればよい。


ipアドレスの固定と、sshのポート番号の変更だけやって、あとはsshでやる。



ipアドレスの固定は、2では /etc/dhcpcd.confに下記のように書く。

interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=8.8.8.8


さて、この状態でディスク容量がいくつかを確認してみる。

pi@raspberrypi:~ $ sudo fdisk -l | tail
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8f1eafaf

Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        8192  131071  122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072 7878655 7747584  3.7G 83 Linux


3.7Gとなっている。

アホかと。




sudo raspi-config → Internationalisation Options → Change Timezone
(ついで)

sudo raspi-config → Expand Filesystem

をやってリブート。

30G認識された。


こんなことは言わなくても勝手にやれと。



sudo apt-get update

sudo apt-geet upgrade ※結構時間がかかる。

sudo rpi-update



さくらのクラウドで起きた不可解な現象

※(後記)料金未払いとメールの受信ができないことは関係なかったと思う。
再起動後I/Fがupしなかったのはなぜか不明だが、ifupであがった。
その他、chkconfigとかselinuxを無効かするなどして、もとに戻った。

dovecotは設定ミスがあった。

systemctl status dovecot をやると、正常に起動しておらず、以下のログがあった。

doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-mail.conf line 61: Unknown setting: inbox


10-mail.confのnamespace inboxのところは、centos6の方は無効になっていたので、
こっちも無効にした。
しかしそのときinbox=yesが残っていた。

namespace inboxのコメントを外して正常に起動するようになった。

いまいち、namespaceの設定の意味がわからないが・・・・



------------------------------


わたしはさくらのVPSで1台、さくらのクラウドで1台サーバを借りている。

VPSのほうでpostfix + dovecotを使っているので、クラウドのほうも同じように設定しようと思った。


vpsはcentos6、クラウドは7であるが、やることはほとんど同じ。


だが、どうしてもクラウドの方でメールが受信できない。


送信はできる。

クライアントの設定は何度も見直した。

DNS設定も見直した。

最後は、二つのサーバの設定ファイルの差分を比較して全部同じにしてみた。

それでもダメだ。


これはなんかおかしい、と、クラウドのサーバをリブートした。


pingを打って再起動を待つ。

なかなか復活しない。

pingを許可していなかったっけ?

と、sshするが入れない。


コンソールに入って、ip a とやると、アドレスが消えている!

えええ!?全部消えちゃった?


・・・と、もしかしてと思って請求情報を見ると、クラウドの料金の支払いが滞納されていて支払い期限を1週間くらい過ぎていた。

多分、このためにサービス停止になっていたのではないだろうか。

料金を払って、様子を見ることにした。

PHP twitteroauth ブロックしているユーザーのアンブロック

ブロック解除もできた。

(前回 http://blog.monqy.net/2016/05/php-twitteroauth.html の続き)

--------------------------------------
#ブロックしているユーザーを取得

$req2 = $connection->OAuthRequest('https://api.twitter.com/1.1/blocks/list.json','GET',array('count'=>'100'));
$blocks = json_decode($req2,true);
if (isset($blocks) && empty($blocks->errors)) {

        echo '<hr>';
        foreach ($blocks as $val) {

                for($i = 0; $i<count($val)-1;$i++)
                {
                        echo
                                $val[$i]['name'] . '<br>'
                                . '<img src="' . $val[$i]['profile_image_url'] . '"><br>'
                                . $val[$i]['screen_name'] . '<br>'
                                . '<hr>';

#ブロックしているユーザーのscreen_nameをarrayに格納
                        $blocking_users[] = $val[$i]['screen_name'];
                }
        }
} else {
        echo 'you are blocking nobody.';
}



#スクリプトに引数「mode=unblock」が指定された場合はunblockする

if(isset($_GET['mode']))        {
        if ($_GET['mode'] == 'unblock') {
                foreach($blocking_users as $a)  {
                        $result = $connection->OAuthRequest('https://api.twitter.com/1.1/blocks/destroy.json','POST',array('screen_name'=>$a));
                        $j = json_decode($result,true);
                        if (isset($j)) {
                                echo $j['screen_name']." is unblocked.<br>";
                        }
                }
        }
}
----------------------------------------------

OAuthRequestの後にAPIのURLを指定すればなんでもできるようだ。


$result = $connection->OAuthRequest(<URL>,<メソッド>,<パラメータ>);







PHP + twitteroauth ブロックしているユーザーの一覧表示

ついにできた。

(全体は下記を参照)
http://blog.monqy.net/2016/05/phptwitter-api-oauth.html



<?php

session_start();

require_once 'common.php';
require_once 'vendor/abraham/twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

$access_token = $_SESSION['access_token'];

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_s
ecret']);

$user = $connection->get("account/verify_credentials");

echo 'hello, ';
echo $user->name;


$req2 = $connection->OAuthRequest('https://api.twitter.com/1.1/blocks/list.json','GET',array('count'=>'100'));
$blocks = json_decode($req2,true);
if (isset($blocks) && empty($blocks->errors)) {

        echo '<hr>';
        foreach ($blocks as $val) {

                for($i = 0; $i<count($val)-1;$i++)
                {
                        echo
                                $val[$i]['name'] . '<br>'
                                . '<img src="' . $val[$i]['profile_image_url'] . '"><br>'
                                . $val[$i]['screen_name'] . '<br>'
                                . '<hr>';
                }
        }
        echo '<hr>';
} else {
        echo 'you are blocking nobody.';
}

?>

PHPでtwitter api のoauthが簡単にできるようになった

thanks to abraham

https://twitteroauth.com/


oauthに再挑戦。

久しぶりだから情報も増えているだろうと期待して。


http://qiita.com/sofpyon/items/982fe3a9ccebd8702867

phpか...

まあいいや、やってみよう。


https://twitteroauth.com/


composer ?

いれる。

phpのバージョンが古いと言われる。


http://qiita.com/zaburo/items/fd67b294c610d54c3aee

レポジトリを変更する。

5.4.45にする。



・・・・


めんどくさいので結果だけ。

以下の情報をほぼそのまま参考にした。

http://qiita.com/sofpyon/items/982fe3a9ccebd8702867



composerで twitteroauthをインストールするときは、
実際にphpスクリプトを動かすディレクトリにする。


php 5.3だから出るエラーが出てしまった。
5.4.45にあげたのに。

composerを入れた後だったからだろうか?
よくわからないが phpの書き方を変えた。



/var/www/html/

で動かすとして、

そこに、下記ファイルを作る。

common.php
login.php
callback.php
mypage.php


中身


# cat common.php
<?php

define( 'CONSUMER_KEY', '------ your consumuer key -----' );
define( 'CONSUMER_SECRET', '------ your consumuer secret -----' );
define( 'OAUTH_CALLBACK', 'http://example.com/callback.php' ); ※URLは仮





# cat login.php
<?php

session_start();

require_once 'common.php';
require_once 'vendor/abraham/twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));

$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

$url = $connection->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token']));

header( 'location: '. $url );






# cat callback.php
<?php

session_start();

require_once 'common.php';
require_once 'vendor/abraham/twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

$request_token = array();
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];

if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
    die( 'Error!' );
}

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);

$_SESSION['access_token'] = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));

session_regenerate_id();

header( 'location: /bl/mypage.php' );






# cat mypage.php
<?php

session_start();

require_once 'common.php';
require_once 'vendor/abraham/twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

$access_token = $_SESSION['access_token'];

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

$user = $connection->get("account/verify_credentials");

echo 'hello, ';
echo $user->name;





http://example.com/login.php ※URLはサンプル

にブラウザでアクセスする。


アプリへのアクセスを許可するかとたずねられて許可すると、


あなたのnameが「ほげほげ君」だとしたら、


hello, ほげほげ君


と表示される。




oauth自体はすごく簡単にできるようになった。

ここまでできてしまえば、あとは自分が取得したい情報を表示、
操作したいAPIを使ってやりたいことをやればよい。


・・・が、そこがよくわからない・・・。



本当はpythonでやりたい。
pythonにも同様のライブラリがあるようなので、今度試してみたい。