12 Jul 2015, 13:09

Emacsのミニバッファから twitterにメッセージを投稿する小技

Emacsのミニバッファから twitterにメッセージを投稿する小技.

はじめに

最近は、非公開のtwitter個人アカウントに独り言をすることが多い.

Emacsから twittering-modeを利用してつぶやいている.

しかし、たまには?表の公開アカウントでつぶやきたくなるときもある.

そんなとき、Emacsからでなければいけいなということにストレスを 感じたのでミニバッファからツイートする方法を考えた.

ちなみに、Linux環境のための記事です.

コマンドラインからツイートする

ruby の twitter ライブラリを利用してスクリプトを書けば、 コマンドラインからツイートできる.

以下のようなスクリプトを用意.

#!/usr/bin/ruby
require 'twitter'
client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "YOUR_CONSUMER_KEY"
  config.consumer_secret     = "YOUR_CONSUMER_SECRET"
  config.access_token        = "YOUR_ACCESS_TOKEN"
  config.access_token_secret = "YOUR_ACCESS_SECRET"
end
client.update ARGV[0]

これを実行可能にして、パスの通ったところにおくとツイートできる.

$ chmod +x twitter
$ twitter "テスト投稿"

Emacsのミニバッファから投稿

本題。以下の関数を定義した。

(defun twit-from-minibuffer (x)
  "Tweet message from minibuffer"
  (interactive "sEnter twitter message: ")
  (let ((tweet-message (concat "twitter " x)))
    (shell-command tweet-message)))
(global-set-key (kbd "C-c C-x t") 'twit-from-minibuffer)

これで、ショートカットからツイートできるようになった.

最後に

Emacsからツイートできないとストレスを感じることが異常かもしれない.

以上、Happy Hacking!!

09 Jul 2015, 13:44

Enterprise IT 系、インフラ系の情報収集サイトをまとめ

Enterprise IT 系、インフラ系の情報収集サイトをまとめました.

自分が登録しているRSSサイトです. エンタープライズ系に特化しているので、 万人向けではないですが、同業他社には役に立つ情報元だと思います.

おすすめ

Publickey

個人サイトだけれども、このサイトが最も興味深い情報源です.

IT Pro クラウド

日経コンピュータによる情報サイト。ここも有力.

Think IT

オープンソースの情報が多め.

とりあえず購読

以下は、どれも似たようなサイトだけど、とりあえず登録しよう

IT media エンタープライズ: クラウドコンピューティング

@IT Server & Storageフォーラム

ASCII.Jp − TECH

マイナビニュース エンタープライズ 次世代インフラ

まとめ

エンジニアなら、最新技術の動向を日々追いつづけていかないと、 すぐに時代に取り残されてしまいます.

技術動向に置いてけぼりにならないために、RSSを毎日購読して情報をチェック!

06 Jul 2015, 13:23

夢の寝室環境システムを自作しました!!

以前、このブログとは別のブログを持っていたのだが、久しぶりに見たら消滅していた。。

どうしても救済したい内容があったので、このブログに記事を転載しておく.

以下、転載. 約3年前のお話なので、今はまったく存在しません…

転載内容: 夢の寝室環境システム

今日は自分の作った現段階での寝室環境システムを紹介します。

就寝編

以下のような流れで眠りにつきます。

  • 光目覚ましをSleepモードで消す
  • アロマディフューザーでラベンダーの香りをスリープモードでかける
  • 究極の眠れるCDを流す
  • 間接照明で青く部屋をライトアップ
  • 30分後に、電気を消す
  • 1時間後に音楽停止して、パソコンをスリープモードにする

光目覚ましをSleepモードで消す

まずは、光目覚ましを使って次第に部屋を暗くしていきます。

アロマディフューザーでラベンダーの香りをスリープモードでかける

心地良い睡眠のためにはアロマは欠かせません。 睡眠タイマー機能付きのアロマディフューザーを使います。 無印のアロマディフューザーがコストパフォーマンスがよいと思います。

ラベンダーが好きなので、ラベンダーの匂いを使います。

究極の眠れるCDを流す

睡眠用の癒しの音楽を聞きながら寝ます。 睡眠用の音楽はいろいろと試しましたが、これが一番好きです。

間接照明で青く部屋をライトアップ

光目覚ましとは別に、間接照明を利用して青く部屋を照らします。 いろんな色に光るLED間接照明を利用します。

間接照明と合わせると、太陽が沈んでいくような雰囲気となり気に入っています。

30分後に電気を消す

ここまでは単体の快眠グッズを利用しているだけで、 システムっぽくないですが、ここからシステムっぽくなります。

リモコン操作できる間接照明を利用して, 指定時刻になったら間接照明を完全に落とします。

リモコンを自由に制御できる機械『iRemocon』を利用します。

間接照明に対して、パソコンで時間を計測していて30分たったところで、 パソコンからiRemoconに間接照明を消すように信号を送り、iRemoconから消します。

1時間後に音楽停止して、パソコンをスリープモードにする

最後に、パソコンをスリープモードにします。 利用するのは、フリーソフトの『WakeMeUp!!』です。

起床編

起床編は、就寝編の逆の手順で目覚めていきます。以下のような流れです。

  • 起床15分前に、エアコンとアロマ起動
  • 光目覚ましで少しずつ明るくなる
  • 起床時間になると、電気がつき、音楽が流れる。

起床15分前に、エアコンとアロマ起動

iRemoconを利用することで、エアコンとアロマを事前に起動しておきます。

アロマディフューザーはリモコン制御できるちょっと高めのやつを使っています。 起床用と就寝用でアロマディフューザーを分けて使ってます。

光目覚ましで少しずつ明るくなる

寝る前に仕掛けた光目覚ましによって、部屋が次第に明るくなっていきます。 起床時間になると、電気がつき、音楽が流れる

パソコンのWakeMeUp!!によって、起床時間になると起床用のプログラムが実行されます。

これによって、部屋の天井灯がつき、Youtubeから音楽が流れます。 音楽は次第にボリュームを上げていって、最後にはボリュームマックスでうるさくなります。

まとめ

自動化したからといって、全く寝坊がなくなったわけではないです。(汗)

心地良い睡眠を得るには、心理的な部分もおおく働いているとおもいます。

睡眠グッズはお金さえ払えば頑張らなくても効果があるという点がいいですね。

メンタル面との合わせ技で頑張っていこうと思います。

以上、Happy Hacking!!

04 Jul 2015, 14:38

Pythonの テクニカル分析ライブラリ ta-libでバックテストしてみる

FXのテクニカル指標を提供してくれるような、 便利なPythonのライブラリはないかなと探していたら、ありました.

TA-LIBとは、経済データに対するテクニカル分析をするための関数がまとまっ たライブラリ. さっそく試す.

インストール

http://mrjbq7.github.io/ta-lib/install.html

tarをダウンロードして、ビルドする方法もあるけど、 easy_install で入れることができる.

easy_install ta-lib

およそ、100以上の関数が用意されている. 各関数の使い方は github参照.

つかってみる

単純移動平均の関数 SMAを利用して、 為替データでバックテストもどきをしてみる.

  • 5日移動平均が25日移動平均を上回ったら(ゴールデンクロス) 買い
  • 5日移動平均が25日移動平均を下回ったら(デッドクロス) 売り

データは、 MT4のヒストリカルデータより、1分足データをエクスポートした.

import numpy as np
import talib as ta

data = np.loadtxt('150703.csv', delimiter=",", usecols=(2, 3, 4, 5))

tanki = ta.SMA(data[:, 3], timeperiod=5)
tyuki = ta.SMA(data[:, 3], timeperiod=25)

total = 100000
units = 1000

for i in range(len(data)-1):
    if ((tanki[i] < tyuki[i]) and (tanki[i+1] > tyuki[i+1])):
        print("Golden Closs!!")
        total = total - 1000*data[i,3]

    elif ((tanki[i] > tyuki[i]) and (tanki[i+1] < tyuki[i+1])):
        print("Dead Closs!!")
        total = total + 1000*data[i,3]

print(total)

所感

Pythonだと、パラメータ(ここでは、移動平均の5と25)の調整がモンテカルロ法で できそう. パラメータの最適化がしやすいという点は metatraderに比べてメリットだ.

しかし、まだまだ、バックテストのしにくさは Metatraderに比べると大きい. 使えるレベルにするには、そうとうの努力が必要そうだ.

03 Jul 2015, 12:39

OANDA APIをつかって Pythonで 為替レートを取得してみた

少し前に mt4をいじってみたが、その先が取っ掛かりがつかめずにいた.

FXは自分は初心者なのだが、FX単体だと、飽きてしまった. 損してでもいいので、統計学とあわせて勉強できないかと道を探していた.

また、mt4のためのMQL言語は、C言語に近い言語で、拡張性がない. できればpythonを利用したいなーと思っていた.

Rest APIのことを調べていたら、Rest APIで 為替情報を取得できるという おもしろいAPIを OANDA 証券が提供しているのを見つけたので、試してみた.

やってみる

今回は、無料で即日利用できるデモ口座を開設して試す.

口座を開設

右上のデモ口座開設をクリックして、手順にしたがって口座開設.

デモ口座にログインして、APIアクセスの管理を選択し、 Personal Access Tokenを発行.

為替レートを取得

APIのドキュメントは以下にある. なんと日本語! 微妙な訳なので自動翻訳?!

Pythonで動かしてみよう. 為替レートを取得するサンプルは以下にある.

access_token, acount_idを自分のもので置き換えて実行.

[tsu-nera]% python2 streaming.py
{"tick":{"instrument":"EUR_USD","time":"2015-07-03T11:55:53.198067Z","bid":1.10999,"ask":1.11004}}
{"tick":{"instrument":"USD_CAD","time":"2015-07-03T11:55:52.634607Z","bid":1.25685,"ask":1.25712}}
{"tick":{"instrument":"USD_CAD","time":"2015-07-03T11:55:54.816590Z","bid":1.2569,"ask":1.25717}}
{"tick":{"instrument":"USD_CAD","time":"2015-07-03T11:55:58.650057Z","bid":1.25691,"ask":1.25716}}
{"tick":{"instrument":"USD_CAD","time":"2015-07-03T11:55:58.807926Z","bid":1.25688,"ask":1.25714}}
{"tick":{"instrument":"USD_CAD","time":"2015-07-03T11:55:59.070828Z","bid":1.25686,"ask":1.25711}}
{"tick":{"instrument":"EUR_USD","time":"2015-07-03T11:55:59.338964Z","bid":1.10997,"ask":1.11002}}
{"tick":{"instrument":"USD_CAD","time":"2015-07-03T11:56:00.915263Z","bid":1.25685,"ask":1.25711}}

これはすごい…

API Wrapperもある

API Wrapperを利用すれば、rest の知識なしに 操作ができる.

Mastering Python for Financeという本に、 oandapyを利用したトレード方法が書いてある.

oandapyを利用した、為替レート取得.

import oandapy
import time

oanda = oandapy.API(environment="practice", access_token=ACCESS_TOKEN)

while(True):
    time.sleep(1)
    response = oanda.get_prices(instruments="EUR_USD")
    prices = response.get("prices")
    print(prices[0])

おわりに

まずは初めの一歩. 次はバックテストをやってみたいところだ.以下が参考になりそう.

また、このサイトの管理人さんは、OANDAを利用して実際にトレードしているようだ.

Metatrader は 古くからある売買方法だが、 OANDA APIを利用した方法を利用している人はほとんどいないので、 ブルーオーシャンかもしれない. しかし、情報がとても少ないというリスクがある.

この海に飛び込んだらPythonがつかえるというモチベーションの炎が消えて しまわないか心配だ.

Special Thanks

28 Jun 2015, 06:12

WAN高速化プロジェクトの成果がWeb記事になった

2014年8月から2015年4月まで関わっていたプロジェクトの成果が今週Web記事になった.

2chの反応もおもしろいので、メモしとく.

3 :番組の途中ですがアフィサイトへの転載は禁止です:2015/06/22(月) 18:04:31.48 ID:v7aI4dlr0
    tar.gz で済むことを2台対向の専用ハードでやって
    そいつらが故障したら通信不可になるならまだましで
    中途半端に壊れてデータが化けても正常終了で終了

4 :番組の途中ですがアフィサイトへの転載は禁止です:2015/06/22(月) 18:27:14.44 ID:UyW+a1dH0
    研究費枯渇とネタ切れで大昔に研究員が作って放置してたのを蔵出ししたっぽい

5 :番組の途中ですがアフィサイトへの転載は禁止です:2015/06/22(月) 18:31:13.08 ID:ICXrVL6k0
    ファイルシステムをレプリケーションしてsmbも小細工してる感じか

6 :番組の途中ですがアフィサイトへの転載は禁止です:2015/06/22(月) 18:33:21.64 ID:TpQJm+a00
    糞Windows&細かいファイルのまま、という環境を止める方が効果あるだろ

7 :組の途中ですがアフィサイトへの転載は禁止です:2015/06/22(月) 18:38:27.87 ID:btTBgrkx0
    すごいしょうもない技術だってことは一目でわかった 

自分の仕事が世の中にでるのは、エンジニアの喜びですね(批判も)

28 Jun 2015, 05:49

サーバ監視のお仕事にかわりました

仕事がまた変わった.

新しい仕事についてはや2ヶ月、以下のような記事を書いたりしてはりきってた.

なにもやっていないうちに別の仕事になってしまった…

なにもやらないという辛さ

開発がスタートしていないうちに、チームに配属されたので、 正直やることがなにもなかった. コーヒーばかり飲んでいた気がした.

忙しい辛さは知っていた。 しかし、ヒマ過ぎる辛さというのをはじめて知った. 忙しい辛さと暇な辛さは、暇な辛さの方が実は辛い.

いや、一応やることはあったんだ. 開発に入る前の調査フェーズなので. しかし、調査というものは辛かった. 答えがないから.

漠然と、調べ物をしていてもまったく分からなかったので、 毎日途方にくれていた.自分は、研究者にはなれないなと思った.

派遣ギリ!

そんな日々を過ごしつつ、開発が始まるはずだったのだが、 不幸にも、予定していた仕事がなくなってしまった.

2ヶ月間開発が始まるのを待ち望んでいたのだが、これで自分はお役ご免.

サーバ監視のお仕事

新しい仕事が待っていた. 次の仕事は、サーバ監視のお仕事. 以下の製品のエンハンス.

Zabbixというサーバ監視のOSSを改造する仕事で、言語はPythonだ. 機能がたくさんあるので、激務になりそうな匂いがプンプンするのだが..

席の引越しをするときに、お世話になった上司にこんなことをいわれた.

二ヶ月間開発できなかったストレスを存分に発散してくだいさい

はい、そうします!

22 Jun 2015, 12:22

Linux でログインパスワードなしでログインする小ワザ

Linux 小ネタだけど驚いた技をメモ.

背景

今日は仕事で USB に焼いた Linux マシンを新規に立ち上げていたのだが、 ユーザログインできないという、なにもできない状態になってしまった.

そんなとき、Linux に詳しいひとが教えてくれた技.

ログインパスワードなしでログインする

USB メモリを別のパソコンにさして、 /etc/passwd にある以下の行を修正すると、 そのユーザのパスワードをなしにすることができる.

$ cat /etc/passwd

# 修正前
root:x:0:0:root:/root:/bin/bash

# 修正後 x を消す
root::0:0:root:/root:/bin/bash

これで、あーら不思議、ログインパスワードなしでログインできた.

19 Jun 2015, 12:29

Wrap-Unwrap Pattern についての覚書

Functional Python Programming という本を読んでいたら、 Wrap-Unwrap Pattern というものを知ったので、ちょっとメモ.

公式

unwrap(process(wrap(iterable)))
  • wrap() ラッパー
  • unwrap() アンラッパー ラッパーで処理したものをもとに戻す.
  • process() 処理したい手続き
  • iterable 処理したいデータ

ラッパーは、iterable なデータをタプルに加工する. タプルを利用するのは、タプルが immutable なデータ構造だから.

例: 最大値を求める

以下、python による例です.

以下のデータ構造で身長が最大の人を調べる.

  • 太郎: 170
  • 次郎: 160
  • 三郎: 180
students = [("Taro", 170), ("Jiro", 160), ("Saburo", 180)]

max 関数は、そのままでは利用できない.

>>> max(students)
('Taro', 170)

ラッパーでタプルを作成する. wrap 関数は、generator expression ともいう.

def wrap(students):
    return ((student[1], student) for student in students)

def unwrap(data):
    length, student = data
    return student

パターンを適用.

unwrap(max(wrap(students)))

>>> unwrap(max(wrap(students)))
('Saburo', 180)

その他

wrap 関数をいちいち定義するのは面倒なので、lambda が利用される.

>>> max(map(lambda s: (s[1], s), students))[1]
('Saburo', 180)

map を利用する場合の方が、generator expression よりも、高速らしい.

unwrap の操作でタプルの一番目、二番目を取り出すのは常套手段. なので、Haskell には、fst,snd という関数が用意されている.

  • fst: タプルの 1 番目の要素を取り出し
  • snd: タプルの 2 番目の要素を取り出し

14 Jun 2015, 08:34

MOOC をはじめてから 2 年たち、そろそろ飽きてきた

最近、MOOC の講座を試してみるが、継続しないで途中であきらめることが多い.

MOOC の講座を受けつづけてもうすぐ 2 年が経とうとしている.20 以上、講座を受けた.

そろそろ、飽きてきたときなので、心のもやもやを文章にしておこうと思う.

応用できない知識が多い

これが、途中でやめようかなと思う理由の中の大きなもの.

これって、なんの役に立つのだろう?と思ってしまうと止めてしまう.

勉強しても、それを現実の仕事に応用できないものも多い. 多分転職しないと無理そうなものも多く勉強した.

それらは、勉強しているときは楽しいのだけれども、 それが終わると瞬く間に忘れてしまう.

浅い知識はに忘れてしまう

MOOC の講座は多分野に渡っている.

今まで、興味があるものはとりあえずすべて Greedy に手を出してきた. その結果、中途半端な知識が多く積み重なった気がする. どの領域にも、深く突っ込んで血肉になった知識がないことに気づいた.

大学で勉強したことは、月日が経てば忘れてしまうように MOOC を利用した勉強も、講座を受講してから時間が経つと忘れてしまう. これは仕方がないことなのだろうか?

今振り返って見ると、努力の割にはあまり残っているものがないような気が してガッカリする.

苦手意識を取り除くことができた

よい面もある. 苦手意識を取り除くことができた.

ハードの知識を身につけた

自分は組込みソフトのエンジニアなのだが、 ハードウェアの知識が乏しかった. しかし、以下の講座を受講することで ハードウェアの仕組みを大まかに理解できた.

ハードを知らないということを引け目に思っていたので、この思いを払拭できた.

たくさんの言語に触れた

また、手続き型の言語ならば大抵の言語は出来る気がした. MOOC を始めるまで、じぶんは C 言語しかつかいこなせなかった. MOOC を通じて、あまりに多くの言語に触れることができた.

Java, C++, Ruby, Python, Oz, R, Scala, Haskell

言語を知らないという劣等感も払拭することができた.

学生時代のだらしない自分を許そうと思った

当初は、MOOC を通じてコンピュータサイエンスを再びやり直そうと考えた. 自分は、大学でほとんど勉強をしなかった. 院も出ていない. そのことをとても後悔していた. なので、大学での勉強をやり直したいという思いで MOOC に取り組んでいた.

結果的に、コンピュータサイエンスをやり直せたか?といわれると、 やり直せてない気がする…

しかし、この 2 年間はよく学習したので、 学生時代に怠けていた自分も許せるような気がしてきた.

これからは知識を深める努力を

ひとつの本を読み終わったら、それに関係する別の本を読み、 その繰り返しで知識が深まっていくのだと思う. 対象を絞り込まずに MOOC を漠然と受けていても、知識は深まらない.

MOOC を通じて、関数型言語が今後重要になると感じた. これからは、関数型言語に注力して、知識を深めて生きたいと思う.