brown water

ゲームやアニメの感想とかプログラムとか

なれる!SE

新人SEが奮闘する物語。 作者の方が元SEということで、SEの仕事に関してはかなり詳しい描写がされていて、それだけでも興味深い。 SEというのはいろんな仕事をするブラックな業界なんだと思った。 難しい用語が出てきたりするけど、簡単な説明があるので分かりやすい。ネットワーク系の仕事が多い感じ。

内容の方は、次々に登場する女子たちとのハプニングがあったり、協力したり、ラブコメ的な展開があったりという・・・どっちかというとハーレム系ラノベ的だと思います。 トラブルに巻き込まれ(無理難題な仕事を押し付けられ)、仲間と解決策を見出し、最後は悪い奴を倒す?というお約束的展開で良い。

主人公がIT系の知識がないまま、こんな会社に入社しているのはどうかと思うが、室見さんがチーター的な力を持ってるのでいつも何とかなってます。 巻が進むごとにマネージャーやったり、大口取引をしたりと成長している姿も見ることが出来ます。

Ixy氏の描くイラストが可愛いです。 作者はSEは絶対やめとけと言ってますが、この本を読んだら業界に入りたくなるかも?

気になる本 1808

なれる!SE

SEを題材にしたラノベ

新人SEが奮闘する物語。
作者の方が元SEということで、SEの仕事に関してはかなり詳しい描写がされていて、それだけでも興味深い。
SEというのはいろんな仕事をするブラックな業界なんだと思った。
難しい用語が出てきたりするけど、簡単な説明があるので分かりやすい。ネットワーク系の仕事が多い感じ。

内容の方は、次々に登場する女子たちとのハプニングがあったり、協力したり、ラブコメ的な展開があったりという、どっちかというとハーレム系ラノベ的だと思います。
主人公がIT系の知識がないまま、こんな会社に入社しているのはどうかと思うが・・・。
巻が進むごとにマネージャーやったり、大口取引をしたりと成長している姿も見ることが出来ます。
最後の方のオチはなかなか面白かった。

会計天国

先の展開が気になる会計ストーリー

会計について解説する本ということで堅苦しい内容なのかと思いきや。
冒頭でいきなり事故死した主人公が天使に連れられて人助けをしにいくという漫画チックな展開で始まるため、入りやすい導入部。
普通の読み物として楽しめ、先の展開が気になってきます。

会計のノウハウを披露して登場する相手を導くというのがメインとなり、会計についての解説が図を交えて分かりやすく説明されていきます。
でも私はよく理解出来ませんでした・・・。
最後は主人公の娘に対する思いによりどんでん返しな展開になって終わるのもまた良いです。

投資ミサイル

笑いと感動の投資ストーリー

事業計画作成等について解説する本のようだが、これも「会計天国」と同じく堅苦しくはない。
新規事業を任されることになった女性課長の物語で、いきなりロボットの上司が登場するということで軽い感じで読み進められる。
ロボットは投資等についても分かりやすく解説してくれて、多少は勉強になります。私も株をやってみようかなと思ってしまった。
ツッコミどころ満載のロボットの行動、事業も自身も成長していく主人公の考え方の変化、ダメな彼氏とのやりとり等、先の展開が気になるストーリー。
最後は悲しい展開になりつつも良い終わり方だと思います。

気になるマンガ 1803

最近読んで気になったマンガの感想を簡単に書き留めておきます。
Kindleで1巻が無料だったから読み始めたとか、Kindle Unlimitedで読んだとかです。
全部の巻を読んだわけではありません。

かくしごと

サッパリとした絵とテンポが良いギャグ

漫画家をしているということを娘にバレないように日々を過ごすパパのお話。
個性的なキャラたちと、小気味良いセリフの応酬でテンポ良く進むし、ギャグもクスッときて面白い。
漫画家の実体験をネタにしてるようで自虐的に笑わせてくれます。
親バカで極端な行動をする主人公ですが、読んでる自分も姫ちゃんが可愛く思えます。
カラーページで別枠で展開されている数年後のストーリーも続きが気になります。

ハンツートラッシュ

エロいスポーツもの

水球というマイナースポーツを題材としたものだが、とにかくエロい描写が多い。
主人公もエロい目的で入部するというストレートな内容。
最初の方は水球の説明や試合が出てきたりして一応はスポーツものしてたのだが。
主人公をとりまく恋愛(?)展開のエピソードやラッキースケベ的なアクシデントばかりで、単なるエロマンガになったような。
でも先の展開は少し気になります。

霊能者と事故物件視てきました

物件リポートもので興味深い

格安の事故物件のリポートを4コママンガ形式で描いている。
霊能者が説明する、その建物に居る霊の過去や現況が少し怖かった。
立地や部屋割り等が変わったものが多いのが興味深く、他にもそこにまつわるエピソードがあったりして、変わった物件を知ることができます。

さくらのVPSに挑戦2(プログラム実行編)

前回VPSの環境を整えたので、今回は実行するプログラムを作っていきます。

作るプログラム

PHPで定期的にTwitterのトレンドを取得して、データベースに保存するプログラムです。
TwitterAPIを使うためにアカウント、アクセスキー等を取得する必要がありますが、方法は割愛します。

データベースの作成

今回はtwget_dbというデータベースを作り、twtrendというテーブルを作ってその中にデータを入れていきます。

mysql -u root -p

でログイン

create database twget_db;
grant all on twget_db.* to twuser@localhost identified by 'paSS%888';

↑twuserは適当なユーザー名、byの次の文字列はパスワード設定です。
これで、twuserがtwget_dbにアクセス出来るようになりました。
次にテーブルの作成

use twget_db
create table twtrend (
    name text,
    day datetime
);

トレンドで取得した単語と日時を格納するテーブルです。
一旦exitで抜けて、

mysql -u twuser -p twget_db

でログインします。
先ほど作ったtwuserでログイン出来ました。
後で確認するためにこれは開いたままにしておきます。

PHPの作成

TwistOAuthという、TwitterAPIから取得するために便利なライブラリを用意します。
github.com ダウンロードした中にある、「TwistOAuth.phar」というファイルを使います。

設定用の値は後で使い回すため、config.phpにまとめておきます。
CONSUMER_KEY等はTwitterで取得した値を入れます。
DB_〜は今回設定したデータベース名、ユーザー名、パスワードです。

//config.php
<?php
define('CONSUMER_KEY', 'xxxxx');
define('CONSUMER_SECRET', 'xxxxx');
define('ACCESS_TOKEN', 'xxxxx');
define('ACCESS_TOKEN_SECRET', 'xxxxx');

define('DB_DATABASE', 'twget_db');
define('DB_USERNAME', 'twuser');
define('DB_PASSWORD', 'paSS%888');
define('PDO_DSN', 'mysql:dbhost=localhost;dbname='.DB_DATABASE);
//twtrend.php
<?php
require_once('config.php');
require_once('TwistOAuth.phar');

$connection = new TwistOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

try {
    $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $params = ['id' => '1110809', 'exclude' => 'hashtags'];
    $tweets = (array) $connection->get('trends/place', $params);
    
    #日時を変換
    $day = date('Y/m/d H:i:s', strtotime($tweets[0]->created_at));
    
    foreach($tweets[0]->trends as $tweet) {
        $stmt = $db->prepare("insert into twtrend (name,day) values (?,?)");
        $stmt->execute([$tweet->name, $day]);
    }
    
} catch (PDOException $e) {
    echo $e->getMessage();
    exit;
}

APIにある「trends/place」を使って取得しています。
id 1110809は日本、exclude hashtagsはハッシュタグを除くという設定です。

syncer.jp ここのページを見ると他にも応用が出来ると思います。

ラブライブ!コラボキャンペーン

PHPからMySQLに接続するPDOに関しては、ドットインストール等を参照して下さい。
今回作成したconfig.php、twtrend.phpと、ライブラリのTwistOAuth.pharを転送ツールでアップロードします。
FileZillaというソフトを使いました。
アップロード先は/var/www/html/の中です。
アップロードしたら、ブラウザからIPアドレスを入力し、
xxx.xxx.xxx.xx/twtrend.php
でアクセスすると起動します。

今回は取得して書き込むだけのため、画面には何も表示されません。 先ほど開いておいたmysqlの画面で、

select * from twtrend;

を実行して内容が表示されれば成功です。
f:id:chaz4:20180212194401j:plain 短時間で何度もPHPを実行すると同じ内容がどんどん追加されていってしまいます。

delete from twtrend;

でテーブルの中身を空にすることが出来ます。

crontabで定期実行

トレンドを一定時間ごとに取得したいので、crontabを使います。
サーバーにログインした状態で、

crontab -e

でファイルを開き、記述していく。

*/10 * * * * /usr/bin/php /var/www/html/twtrend.php

左端が「分」で、今回は10分ごとに実行します。
phpファイルの実行には /usr/bin/php の記述が必要なようで、その後に実行したいファイル名を書いていきます。
保存して抜けた後、

service crond restart

で有効にしておきます。
これで10分ごとに先ほどのプログラムが実行されて、データベースに書き込まれるはずです。

表示用ファイルの作成

ブラウザから見るためのファイルを作っていきます。
単に全件取得してulタグの中に入れていくだけです。
そのままだと見づらいので、cssも設定してみました。

//puttrend.php
<?php
require_once('config.php');

$twdata = '';

try {
    $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $stmt = $db->query("select * from twtrend");
    $twdata = $stmt->fetchAll(PDO::FETCH_ASSOC);

} catch (PDOException $e) {
    echo $e->getMessage();
    exit;
}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="utf-8">
   <title>tw trend</title>
   <link rel="stylesheet" href="tw.css">
</head>
<body>
    <ul>
        <?php
            if($twdata) {
                foreach ($twdata as $tweet) {
                    echo "<li><span class='name'>".$tweet['name']."</span><span class='day'>(".$tweet['day'].")</span></li>";
                }
            }
        ?>
    </ul>
</body>
</html>

f:id:chaz4:20180212194822j:plain

無事にブラウザからも表示することが出来ました!
今回は単にそのまま表示するだけでしたが、SQL文を変えると単語を集計して多い順に並べて表示する等も簡単に出来ます。


Amazon.co.jpアソシエイト

さくらのVPSに挑戦1(環境構築編)

さくらのVPSを使って、2週間の無料お試し期間の間に設定等をしてみました。

ドットインストールにレッスンがあるので、それを見ながら進めていたのですが、途中ハマった箇所等があったのでメモしておきます。

環境等

ローカルの環境はUbuntu16を使います。

登録後、メールでパスワード等が送られてくるので、ブラウザでそこに記載されているコントロールパネルのURLにアクセスし、ログインします。

OSのインストール

f:id:chaz4:20180212192050j:plain 標準OSの中の「CentOS6」を選択します。
管理ユーザー名が「root」であることを覚えておき、あとは好きなパスワードを設定します。
インストールを開始し、稼働中になれば完了です。

作業をしていってどうにもならなくった時に、OSの再インストールをしてやり直すというのを何度かしました(汗)

OSもいくつか試しましたが、インストール自体は30秒くらいで終わるので思ったよりも気軽に出来ます。

インストール後、アップデートをかけるわけですが、CentOS7とUbuntu16はアップデートの時間が結構長いのに対し、CentOS6はアップデートがないためすぐ使えます。(2018/2/12現在)

今回はセットアップの練習用だし、すぐにやり直し出来るCentOS6が良いと思いました。

あと、プライベートではUbuntuをメインに使ってるからサーバーもそうしたいと思ったのですが、サーバー関係の情報はCentOSの方が多いようです。

サーバーにログイン

何度かやり直しているせいか、秘密鍵があるとログイン出来ないようです。
秘密鍵を複数管理したり、設定し直すやり方は知らないので、簡単にするために先に削除しておきます。
/home/ユーザー名/.ssh/ の中にあるので、ディレクトリの中を空にしておく。
準備が整ったらローカルで端末を起ち上げ、

ssh root@xxx.xxx.xxx.xx

でログイン。xxxは記載されているIPアドレス
yesで答え、インストール時に設定したパスワードを入力するとログイン出来ます。

本来ならこの後、秘密鍵を作ったり作業用ユーザーを作ったりするのですが省略してrootのまま続行します。

ポート番号の変更

デフォルトでは22になっていて広く知られているため、適当な番号に変更します。1024~65535の間で設定可。
念の為にバックアップをとってから編集していきます。

sudo vim /etc/ssh/sshd_config

上の方に「#Port 22」と書いてある所があるので、#を外して有効にします。
この次の行に好きな番号を「追記」します。
ここの22を書き換えてもいいのですが、そうするとハマりました。
書き換えた番号のポートでログイン出来るようになるはずですが、ファイアウォールの方も同じ番号を開放しないとログイン出来ません。
なので、書き換えてしまうとログアウトした後に22も使えなくなり、ログイン出来なくなります・・・。
失敗したらOS再インストールすれば大丈夫です(笑)

とりあえずは新しい番号と22の両方を指定しておきます。

Port 22
Port 12345

保存して抜ける。

ファイアウォールの設定

こちらもバックアップをとってから編集していきます。

sudo vim /etc/sysconfig/iptables

dport 22というのが書かれている行をそのままコピーして、こちらも新しい番号を追記していきます。
先ほど設定したPort番号と、あとは80も同じように追記します。
80はhttp通信を行うポートで、これを開けておかないとブラウザから見ることが出来ません。これもハマった・・・。

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

保存して抜けたら、設定を有効にする。

service sshd restart
service iptables restart

一旦exitで抜けて、ポート番号を指定してログイン出来るか確認する。
-pの後に先ほど設定したポート番号を入れる

ssh -p 12345 root@xxx.xxx.xxx.xx

ログインに成功したら完了。
まだポート22からアクセス出来る状態なので、
sshd_configとiptablesの22を削除し、設定を有効にすればOKです。

全国送料無料!IT書、ビジネス書、資格書が豊富なSEshop

アパッチのインストール

yum install httpd

chkconfig httpd on
service httpd start

インストール後に設定ファイルを変更するのですが、省略。このままでも動くようです。
アパッチが起動したらブラウザからIPアドレスを入力し、初期画面が表示されたら成功です。
f:id:chaz4:20180212193020j:plain /var/www/html/ のディレクトリにあるファイルを読むので、ここにindex.html等を入れてページを表示させることができます。

PHP7のインストール

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum install --enablerepo=remi,remi-php70 php php-mysqlnd php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-fpm php-opcache php-apcu -y

インストール後、設定ファイルを書き換えます。
/etc/php.ini

error_log = php_erros.log を /var/log/php_errors.log
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.detect_order = auto
expose_php = on を off

行頭のコメント(;)を外して有効にする、または書き換える。
保存したらhttpd再起動

service httpd restart

MySQL5.7のインストール

yum localinstall http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm

yum install --enablerepo=mysql57-community mysql-community-server

chkconfig mysqld on
service mysqld start

無事にインストール&起動が出来たらパスワードの変更をしていきます。
/var/log/mysqld.logに初期パスワードが書かれているので開いてメモっておく。
見づらいのですが、6行目にありました。

A temporary password is generated for root@localhost:  ★★★

★の所がパスワードです。
なお、パスワードは大小の英文字、数字、特殊文字がそれぞれ1つ以上含み、8文字以上の長さが必要です。

mysql_secure_installation

で先ほどメモったパスワードでログインすると、新しいパスワードを聞かれるので入力、そして再度入力。
他はEnterを押して抜けます。 今回は Pass!555 にしてみました。

続いて /etc/my.cnf を編集していきます。

character-set-server=utf8
default-storage-engine=InnoDB
[mysql]
default-character-set=utf8

上記を追記して保存、

service mysqld restart

で再起動して設定を有効にします。

これで各種インストール&設定が終わったので次回はこれを使ってプログラムを書いていきたいと思います。


Amazon.co.jpアソシエイト