投稿

7月, 2017の投稿を表示しています

CentOS7 で Django + Apache を動かす

さくらのVPS入門

How To Install Python 3 and Set Up a Local Programming Environment on CentOS 7

Python3 をインストール

How To Serve Django Applications with Apache and mod_wsgi on CentOS 7
Python3.5.1 => RuntimeError: The 'apxs' command appears not to be installed or is not executable

python3 を使うために以下の手順も追加。
$ sudo yum install httpd-devel -y # mod_wsgi のインストールに必要
$ pip3 install mod_wsgi # python3 系の mod_wsgi モジュールが入る。

mod_wsgi は仮想環境に入るのに注意。
LoadModule で httpd.conf で指定する際にバージョンが異なると動作しません。
バージョンが異なる場合、ImportError: no module named site が出る。

Centos7 でポートを開放する方法:コマンドとファイル書き込み
bash-completionで ssh コマンドなどの補完を強化してみる


さくら VPS で Web サーバーを構築する

Ubuntu 16.* + Apache + Django でサイト作るのに参考にした情報をまとめておこう。

さくらのVPSで立ち上げたApacheに接続したい Apache インストールして http://ip_address でアクセスできなくて「あれ?」ってなったときのトラブルシュート。 /etc/iptables/iptables.rules を編集すれば良いらしい。 セキュリティ的にどうかという懸念はあるのでとりあえずの設定ということで。
お名前.com で取ったドメインを使う さくら VPS のサーバーにお名前.com で取得したドメインくっつけるって話。 .work のドメインがやすかった(1円!)だったので実験用に購入して試した。 動作確認済。
How To Install the Django Web Framework on Ubuntu 16.04 開発用サーバーで動作確認済。
How To Install Python 3 and Set Up a Local Programming Environment on CentOS 7
Python3 のインストール

API キーを yaml で一括管理してみた

pythonでyamlの扱い を参考に、API キー等の秘密情報を yaml で管理してみた。
各ウェブサービスごとに管理しても良いけどとりあえず辞書型で、、

twitter:
  consumer_key : hogehoge
  access_token : hogehoge
aws:
  access_key_id : fugafuga
  secret_access_key : fugafuga
.private/web_api.yaml にファイルを置いて、 .private/* を .gitignore に追加しておく。

アフィリエイトリンクを短縮して Twitter API でつぶやく

Amazon の商品価格を取得してみた では、最安値の取得までできた。
今回は、在庫切れした商品が入荷されたタイミングを取得してツイートしてみます。
やることはカンタンで、取得した現在の価格が定価になっているかをチェックして、
定価近辺に戻ってたらツイートするだけ。

Twitter API の利用

コード貼っておく。
get_sentense() では適当なツイート文字列を返す想定で書いてます。

def tweet():
    tweet = get_sentense()
    print("tweet: {0}".format(tweet))
    twitter = OAuth1Session(TWITTER_CONSUMER_KEY,
                            TWITTER_CONSUMER_SECRET,
                            TWITTER_ACCESS_TOKEN,
                            TWITTER_ACCESS_TOKEN_SECRET)
    url = "https://api.twitter.com/1.1/statuses/update.json"
    params = {"status" : tweet}
    response = twitter.post(url, params = params)
    assert response.status_code == 200, "Tweet Failed. status_code = {0}".format(response.status_code)
URL 短縮 API の利用

ツイート文にアフィリエイトリンクを仕込みたいとき、短縮 URL 変換する必要がある。
bitly API がカンタンにつかえて便利なのでこれで短縮して tweet 文章を生成する。
参考にしたのは以下のページです。
bitly APIの使い方
リクエストに token いれて post するだけです。

まとめ

在庫復活したらツイートする機能の実装を行いました。
まとめると実装したのは以下の感じ。

* Amazon Product Adve…

Amazon の商品価格を取得してみた

Amazon の価格情報を取得する方法としては以下の 2つがありそう。

 * 商品ページにアクセスしてスクレイピング
 * Web API を利用する

こちらのページでは前者の方法で情報取得しています。
PythonとrequestsとBeautifulSoupでAmazonの中古品情報一覧を取得 #Python #WebScraping #せどり
ただ、ページまるごと取ってくるオーバーヘッド、ページ構成が変わった時のデグレとかメンテナンス観点だと面倒なことが多々ありそう。

ここでは無難に Web API 使いましょう。

事前準備

Amazon は、Amazon Product Advertising API を公開しています。

以下のページの案内に沿ってアカウント作成します。
https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html

作成後、AWS のコンソールにアクセスしてセキュリティキーを作成します。
https://console.aws.amazon.com
セキュリティ認証情報>アクセスキー を見に行くと作成画面が出てきます。

スクリプト実装

どの言語でも API は叩けますが、ここでは python で試してみます。
Product Advertising API を利用するための簡易ラッパーライブラリとして、
bottlenose モジュールを使います。
https://github.com/lionheart/bottlenose

また、取得したレスポンスをパースするため、BeautifulSoup もインストールします。

$ pip install bottlenose BeautifulSoup4

実装
# インスタンスを生成
amazon = bottlenose.Amazon(AWS_ACCESS_KEY_ID,
                           AWS_SECRET_ACCESS_KEY,
                           AWS_ASSOCIATE_TAG,
                           Region='JP')
# 価格情報を取得
response = amazon.ItemLookup(ItemI…

さくらインターネットのレンタルサーバー ~ EC-CUBE/メールフォーム 導入 ~

さくらインターネットのレンタルサーバーでは、
クイックインストールとよばれる機能があります。
ソフトウェアをサーバーに GUI ベースでカンタンに設置できるというもの。
サーバープログラム側は PHP + MySQL で動作するものが大半。
ここではどのくらい「クイック」なのかを EC-CUBE とPOSTMAIL をインストールすることで試してみます。

EC-CUBEのインストール

【クイックインストール】EC-CUBE を見て手順通り作業する。
作業内容は大きく、「データベースを作成」と「EC-CUBEのインストール」
どちらもプログラムを書くこと無く GUI ポチポチでいけるお手軽さ。

お試し期間だと共有SSL が利用できないので注意。
SSL 設定せずに EC-CUBE のセットアップもできるけど、
セキュリティ上問題があるので非推奨。
ちなみに無理やりSSL 無しで作成すると、
新規会員登録を行ったあとメール確認で以下のような矛盾した状況になる。

本会員登録を完了するには下記URLにアクセスしてください。※入力されたお客様の情報はSSL暗号化通信により保護されます。
http://example.sakura.ne.jp/eccube/html/entry/activate/hash_hogehoge
POSTMAIL のインストール

これは解説記事探すまでもなく、サーバーコントロールパネルでポチポチすれば簡単にできました。
動作確認も作業シーケンスをたどる中で自然に何したら良いかわかったのでここは割愛。

まとめ

EC-CUBE, POSTMAIL ともに設置はカンタン。
クイックの名にふさわしく、全部合わせて10分もかからなかった。
チュートリアル記事もさくらインターネットは豊富に揃っていて、はじめてのレンタルサーバーにはとてもおすすめです。

さくらインターネットのレンタルサーバー ~ bot 作成 ~

さくらのレンタルサーバーのセットアップログをまとめておきます。

デフォルトのシェルを bash に変更

さくらインターネットのデフォルトのシェルをbash に変更してみた
$ chsh -s /usr/local/bin/bash でOK

SSH 設定

さくらのレンタルサーバーにSSHでログインする
上記手順に沿って、クライアントマシンで生成した公開鍵を scp で送ります。
設定が完了すると ssh でサーバーのパスワード入力の必要なく、
以下のコマンドでログインできるようになります。
$ ssh hoge@hoge.sakura.ne.jp
Python3 のセットアップ

2017年7月現在、デフォルトだと Python 2.7 がインストールされてますが、
3系に更新するため、以下の作業を行います。

Python3 のインストール
   $ wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
   $ tar -xjf Python-3.6.2.tar.xz
   $ cd Python-3.6.2
   $ ./configure --prefix=$HOME/local/python/
   $ make
   $ make installbash で path を通す

$ emacs ~/.bashrc
以下の通り .bashrc にパスの設定を書いておきます。

export PATH=$HOME/local/python/bin:$PATH
export PYTHON=$HOME/local/python
export PYTHONPATH=$HOME/local/python/lib/python3.6/site-packages
export LD_LIBRARY_PATH=$HOME/local/python/lib
export EDITOR=emacs
pip でモジュールインストール

$ $ pip3 install requests_oauthlib BeautifulSoup4 requests PyYaml bottlenose ipython


つぶやくスクリプト by Python

PythonでTwitterAPIを叩いてみる の通りにスクリプトを実装する。
認証のため…

さくらインターネットのレンタルサーバー ~ お名前.com で独自ドメインサイト構築 ~

概要

会社のレンタルサーバーの契約満了ということで、サーバーの見直しをかけることになりました。
契約しているのは大塚商会アルファメールで、サーバー環境が大分古くて値段も安くない感じだったので乗り換えを検討しています。
ここでは、サーバーの選定から、独自ドメインの設定までをまとめておきます。

サーバーのカテゴリ

VPS, レンタルサーバー, クラウド とありますが、

 * メールサーバーの管理がカンタン
 * Web サーバー機能が使える
 * 価格が安い

という理由でレンタルサーバーを選びました。
VPS 使うか結構迷いましたが、メールサーバーの構築とか面倒くさそうだったのでレンタルサーバーにしちゃいました。甘えです。


レンタルサーバー業者

 * 実績があること
 * 利用者が多く Web 上にトラブルシュート情報がたくさんあること
 * 大手企業

といった基準で、さくらインターネットを選定しました。
GMO とも迷いましたが、さくらインターネットは

 * トラブルシュート情報が Web 上にたくさんあるのと、
 * 会社が技術情報を積極的に発信している

ところに好感を持ったのが決定ポイントでした。

どうやらさくらインターネットのレンタルサーバーは、
2017 年 7 月現在、2週間の無料使用期間があるようです。
レンタルサーバー|さくらインターネット - 無料お試し実施中

メールサーバーの送受信確認

メールのクライアントソフトの設定については、
Mozilla Thunderbird 38を利用する
を参考にしました。
Web ページのデプロイは Cyberduck 使って設定情報突っ込めばカンタンに接続 & アップロードできました。

独自ドメイン設定

お名前.com で取得したドメインをさくらインターネットのサーバーに割り当ててみます。
お名前.com管理ドメインのメールをさくらのサーバで使う に記載された内容に沿っていけば設定できます。

ドメイン設定(他社で取得・管理のドメインを利用する場合)
【ライト・スタンダード・プレミアム・メールボックス】メールアドレスの作成・変更・削除

Jenkins 設定メモ

MacOS での Jenkins 設定方法のメモ:
https://ics.media/entry/14273/2
http://myenigma.hatenablog.com/entry/2016/12/27/114006#Jenkinsのインストール


普段定期的に実行するルーチンタスクを自動化する目的で導入します。
インストールは上記リンクに記載された手順で進めて、
以下のコマンドで起動します。

$ brew services start jenkins

サービスが起動し、ブラウザから http://localhost:8080/でアクセスできるようになっている。
デフォルトではローカルのネットワーク上でしかアクセスできないが、起動時のオプションを与えることで変更可能。

https://wiki.jenkins.io/display/JENKINS/Starting+and+Accessing+Jenkins

起動時のパラメータは、
 /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
(~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist)
で設定できる。

デフォルトだとサーバー起動してる PC からしかアクセス出来ないので、
上記 *.plist を以下の通り書き換えると同一 LAN に接続したデバイスから Jenkins にアクセスできるようになる。

      <string>--httpListenAddress=0.0.0.0</string>

参考:
https://superuser.com/questions/650420/jenkins-not-accessible-through-lan



確率ロボティクスとは何かをまとめてみました。

確率ロボティクスのメタな部分の理解を深めるため、 probabilistic robotics を読みました。
文中で重要と思われる部分を抜粋してまとめてみました。


確率ロボティクスとは

確率ロボティクスは知覚と制御に関するロボティクスの一分野。
情報の記述や行動決定のために確率・統計を駆使するのが特徴。

この本のすべてのアルゴリズムはベイズ則 と、それを時系列データの利用のために拡張したベイズフィルタに基づいています。
数学的な背景が同じであることは,本書の確率的アルゴリズムの重要な共通点となります。

http://www.probabilistic-robotics.org/


確率ロボティクス 第 I 部 基礎

確率ロボティクスで鍵となるアイデアは,確率論の演算を用いて不確実さを確率分布として表現すること。
言い換えると、ある推定に対して結果を「最も妥当な」一つの推測値で表すのではなく、
推測値の空間全体での確率分布として、推定情報を表します。
そうすることで曖昧さや信頼度を数学的にまっとうな方法で表すことができます。

確率的なアプローチは、不確実さを考慮するため、センサの限界やモデルの限界に対してよりロバストになります。
また、確率ロボティクスによって,複雑な実世界の環境をずっと良く計測できるようになります。


従来のモデルベース手法と比較すると、確率的アルゴリズムでは正確なロボットのモデルがあまり要求されず、
プログラマーは、正確なモデルを構築するという徒労から解放されます。
また、一瞬一瞬のセンサ入力だけを制御に用いる多くのリアクティブな手法よりも、センサが正確であることの必要性が小さいです。

しかしながらこれらの長所の代償として、計算が複雑になったり近似の必要が出てきたりします。
したがって、確率的アルゴリズムは確率的でないライバル手法よりも計算効率がよくありません。


ロボティクスの歴史

最初の重要な概念は 1970 年代半ばにモデルベースドアプローチとして知られているものである。

その後、ビヘイビアベースドロボティクスは強い信念の下、内部モデルを用いる考え方を排除した。
その代わり、複雑なロボットの動きを創り出すのは、状況に埋め込まれたエー…

メモ:人工知能は人間を超えるか(松尾 豊)

イメージ
【SoftBank World 2016】 人工知能は人間を超えるか 松尾 豊 氏 参考になったポイントをまとめておく。


ライブラリ

* tensorflow * Keras
教科書
* 深層学習 岡谷 * Deep learning MIT press
国際会議
* ICML * NIPS * ICLR
Deep Learning の主な手法
* CNN
画像認識でデファクト 教師あり学習 畳み込み & プーリングを繰り返す アルファ碁は CNN + 強化学習 + 探索
* RNN
時系列データ処理、映像、言語のデータなど。 教師あり学習 LSTM が主流 マイクロソフトの Tay 
* オートエンコーダ系
分類だけでなく、「生成」が出来る。 教師なし学習 変分オートエンコーダ(VAE), 生成敵対的ネットワーク(GAN) が主流 ピカソ風の絵を書いたり。 今後発展する。