'sqr'atch-note

ちりはつもれど ちりぬるを

Tweet Bot 作成記録その1

個人的なメモとして残す。あまりまとまっていない。

バージョン

ソースコード

タイムラインを取得して表示するだけ

require 'rubygems'
require 'twitter'
require 'pp'

client = Twitter::REST::Client.new do |config|
      config.consumer_key        = ""
      config.consumer_secret     = ""
      config.access_token        = ""
      config.access_token_secret = ""
end

puts "Configuration Success!"


#client.update("ついーと")

# Get timeline
myTL = client.home_timeline

myTL.collect do |tweet|
    puts "#{tweet.user.screen_name} : #{tweet.text}"
end

ストリーミングを利用する

tweetstream gem を利用する。公式Github File: README — Documentation for twitter (5.10.0)

require 'rubygems'
require 'tweetstream'
require 'pp'

TweetStream.configure do |config|
      config.consumer_key        = ""
      config.consumer_secret     = ""
      config.oauth_token         = ""
      config.oauth_token_secret  = ""
      config.auth_method = :oauth
end

puts "Configuration Success!"

begin
streamclient = TweetStream::Client.new
streamclient.userstream do |status|
    username = "#{status.user.screen_name}"
    contents = "#{status.text}"
    str = username + ";" + contents
    puts str
end

ストリーミングを利用する場合、スクリプトはえんえん動き続けるので、何らかの終了処理を入れる必要がある。公式ドキュメントには、ツイート数を10件取得したら終わらせるというサンプルがある。

強制的に終わらせるならCtrl+C。

タイムラインを取得する

The Twitter Ruby Gemを利用する。下記の一行で可能。

myTL = client.home_timeline

その他は公式ドキュメント File: README — Documentation for twitter (5.10.0) を参考にする。

オブジェクト

APIでどういうものが得られるのかは下記の公式サイトの記述を参考にする。

Tweets | Twitter Developers

例えば、クライアント名を取得したい場合は

myTL.collect do |tweet|                                                 
    puts "#{tweet.source}"
end

のようにドットに続けて書けば良い。

latex で プレゼンテーションやってみる(その2)

latexで文書クラスBeamerを利用する際の話。自由な位置でテキストボックスとか入れたいなら、power point 使うほうが何倍も便利だけど、それをlatexでもやりたいという場合の話。

f:id:sqr2:20140616201625p:plain

座標を指定してテキストボックスなどを表示させる

パッケージtextposを利用する。以下プリアンブルに含めるコード。

コード

\usepackage[absolute,showboxes, overlay]{textpos} % パッケージ読み込み
\setlength{\TPHorizModule}{10mm} % 水平方向の基準単位
\setlength{\TPVertModule}{\TPHorizModule} % 垂直方向の基準単位
\textblockorigin{0mm}{6mm} % 原点

説明

\usepackage[absolute,showboxes, overlay]{textpos}は、textposをオプションabsolute, showbox, overlayを使用して読み込む。それぞれのオプションは

  • absolute : 絶対座標でテキストボックスを描く(relative指定もある)
  • showbox : テキストボックスに枠をつける(これは要らないか)
  • overlay : 最前面にテキストボックスを描く。これを指定しないと、本文の後ろに隠れて見えなくなる。

という意味。

背景に格子を描く

そのままでは、テキストボックスを描く位置が分からないので、目安として格子を描く。textpos の機能に格子を描くコマンド\TPGridがあるようだけど、機能しなかった。そのため、beamer の機能を利用する。プリアンブルに以下のコードを含める。

\setbeamertemplate{background}[grid][step=1cm]

1センチ幅の格子を描くことが出来る。beamer のスライドサイズは、デフォルトで幅128ミリ高さ96ミリ。さらに、この格子は、左下を原点として格子を描く。したがって、上と右はすこし中途半端な格子が描かれる。

テキストボックスを描く

\begin{textblock}{5}[0,0](0,0)
とやかくネルソンさんが意味道義そう紹介にすれまし途そうした模範私か脱却にに対してお邁進なですないます
\end{textblock}

オプションは、\begin{textblock}{テキストボックスの幅(cm単位)}[0, 0](x座標, y座標)となる。xy座標は、プリアンブルに書いた\textblockoriginを基準として描かれる。[0, 0]はテキストボックスのどこを基準にして描く設定。

公式のuser guide には、下記のように書いてある。

The coordinates ⟨ho⟩ and ⟨vo⟩ are fractions of the width and height of the text box, respectively, and state that the box is to be placed so that the reference point (⟨ho⟩,⟨vo⟩) within the box is to be placed at the point (⟨hpos⟩,⟨vpos⟩) on the page. The default specification is [0,0], the top left of the box: [0,1] would be the bottom left, and [0.5,0.5] the middle.

latex で プレゼンテーションやってみる

最近、プレゼンテーションもlatex で作ってしまおうかなって考えてて、beamerクラスについて調べている。

テンプレート

プリインストールされているテーマやカラーは、いまいちなので、いろいろ探した。下記のサイトにいろいろテンプレートが画像付きで載ってるから、参考にした。

LaTeX Beamer Themes

どういうのを探しているのかというと

  • シンプル
  • ヘッダーには、スライドのタイトルのみ
  • フッタには、日付とページ番号

という感じで探した。その中のFrederiksbergがかっこよさそうなので、利用してみようかなと。

Frederiksbergテンプレート

デフォルトでは、大学のロゴ等が入ってしまうので、userguideを読んでみると、プリアンブルに

\usetheme[not@ku={My University}]{Frederiksberg}
  \institute{My Short Institute}{My Long Institute}
  \logo{\color{red}\large Logo!}

と書けば、シンプルな感じになる様子。

これで試してみて良さそうなら、使う。

今更ながらGithubに登録した

ちょっとしたスクリプトを書く機会があって、それを見せる手段としてgithubは、コードのダメなところとか指摘してもらったり、こういう風に書けばいいとforkしてもらって、こちらにpull request してもらうということが可能?なんか出来るのかなと思って始めた。

手始めにドットファイルをpushした

.vimrc や、.zshrcを置くリポジトリを作った。最近、シェルはzshの方が便利だということを知ったので、乗り換えた。同時に開いているシェル間で履歴の共有ができるらしいので、便利っぽい。

ローカルにフォルダdotfilesを作る。

基本は、GitHub Bootcamp に沿ってやった。

% mkdir -p dotfiles
% mv .vimrc ./dotfiles/.vimrc
% cd dotfiles 
% touch .gitignore
% vim .gitignore
% git init
Initialized empty Git repository in /Users/hoge/dotfiles/.git/
% git add ./
% git commit -m "first commit"
[master (root-commit) b81ea9d] first commit
 2 files changed, 114 insertions(+)
 create mode 100644 .gitignore
 create mode 100755 .vimrc
% git remote add origin https://github.com/username/dotfiles

とここで、エラーが発生した。どうやら、READMEファイルをWEBから編集したから競合が起きたらしい。ググって、解決策をみつけた。一時的にブランチを作ってpullした後、それをmaster にマージすればいいらしい(あとで気づいたけどリポジトリをローカルにpullすればよかったのでは)。

% git branch temp1
% git checkout temp1
Switched to branch 'temp1'
% git pull origin +master:temp1
% git diff temp1 master
% git checkout master
Switched to branch 'master'
% git merge temp1
Merge made by the 'recursive' strategy.
 README.md | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 README.md

% git push origin master  # ここでマスターにpush完了

最後に$HOMEに.vimrcのシンボリックリンクを貼っておく。

% ln -s ./dotfiles/.vimrc .vimrc

以上と同じようなことを.zshrcについても行った。

ファイルを削除する場合。

リポジトリにあるファイルを削除したい場合は、ローカルにpull して単純に削除しただけじゃダメなようだ。

% rm README        # これはだめ
% git rm README    # これで削除する
rm 'README'
% git commit -a -m "delete README"
[master 2d84ae2] delete README
 2 files changed, 4 insertions(+), 3 deletions(-)
 delete mode 100644 README
% git push origin master 

全体の流れメモ

  1. ファイルの変更や削除する
    -- 新しくファイルを作ったら git add filename としておく
  2. git commit -a -m "comment" でコミットする
  3. git push origin master として反映させる

という感じっぽい。

RStudio + knitr で文芸的プログラミング

literate programming

chunk 設定

設定の流れとしては、全体設定(グローバル設定)をして、その他は個々のchunk 内で行うというスタイル。

グローバル設定

<<r global_option, include=FALSE, echo=FALSE>>=
opts_chunk$set(fig.width=7, fig.height=7, fig.align='center', fig.pos='htb', echo=FALSE, out.width='10cm',comment=NA, message=FALSE, result='markup')
@

latex のエンジンの変更

デフォルトでは、RStudio はpdflatex, xlatexしか選択ができないが、環境変数に使いたいエンジンを指定すればどのエンジンも使用することができる。

latex のエンジンはlualatex を利用しているので、RStudioでもlualatex でコンパイルできるようにする。Rのコンソールで下記のコマンドを入力。もしくは、.Rprofile に記述しておいて、起動時に読み込ませるようにする。

Sys.setenv(RSTUDIO_PDFLATEX="lualatex")

プリアンブルの一部

HHKB pro2 を買った

念願のHappy Hacking Keyboard Professional 2 を手に入れた。

f:id:sqr2:20140531135946j:plain

ディップスイッチの変更

Macを使っているのでHHKBMacintoshモードにする。簡単で、SW2をONにすればOK。

クォートキー(`)が入力できない問題

f:id:sqr2:20140531135528p:plain

クォートキーが入力できないという現象が起きた。クォートキーで入力されるのが、なぜがセクションサイン。アプリケーションウィンドウの切り替えに⌘+`を使っているので、このキーが入力できないのは痛い。どうにか解決方法を探した。

解決方法:KeyRemap4MacBook

解決方法としては、KeyRemap4MacBook を利用して、private.xlmにキーマッピングを書いてしまう。以下、private.xlmに記述した内容。

<item>
        <name>Fix quote key</name>
        <appendix>changes § to '</appendix>
        <identifier>private.norfix</identifier>
        <autogen>--KeyToKey--
                KeyCode::DANISH_DOLLAR,
                KeyCode::BACKQUOTE
        </autogen>
</item>

上を記述して保存した後、Reload XMLを押下して完了。

今日やったこと:vimの補完でスニペットを利用できるようにした

vim使い始めたきっかけはコーディングを3倍速くする! Vim入門 | CSS-EBLOGというエントリの動画を見たこと。何年か前にもvimを使おうとしたことはあったんだけど、その時は挫折した。最近また、Rのコードを書くことが増えてきて、Rのコードを書くときはR付属のエディタ、TeXの編集はTeXshopって別のエディタを使ってて、非常に面倒だなっていう思いがふつふつと湧いていたという理由もある。

というわけで

エディタをvimに統一してしまうことにした。emacsを使ってる人のほうが周りには多いけど、emacsはあまり触った感じがすきじゃなかった。

本題

vimのバージョンは7.4.258。

おしながき

  1. スニペットって何
  2. gitのインストール
  3. NeoBundleをインストール
  4. neosnippet-snippetsのインストール

基本的には Vimを変態にしてみた - Kuchitama Tech Noteのサイトのインストール方法に従ってインストールした。

スニペットって何

関数などの補完をより賢くやってくれる機能(今日使い始めたばかりなのであまり分かっていない)。

VimでPHPの補完にスニペットを使ったら捗った件 - Qiita

上記のサイトにどんな感じなのかという動画gifがあるので参考に。

git コマンドを使うのでインストールする

Homebrew を入れているので下記のコマンドでインストールできちゃう。

$ brew install git

NeoBundle のインストール

Vim - NeoBundleのインストール - Qiita

上のサイト通りにインストール。

メインディッシュのインストール

.vimrcに下記の3行を加える。

NeoBundle 'Shougo/neosnippet-snippets'
NeoBundle 'Shougo/neocomplcache.git'
NeoBundle 'Shougo/neosnippet.git'

そして、vimを立ち上げて

:NeoBundleInstall

と入力すれば、インストールが完了する。驚くほど簡単だった。

スニペット集のインストール

C言語Java言語などなどいったメジャーな言語のスニペットをまとめて入れてしまう。

git clone https://github.com/honza/vim-snippets  ~/.vim/bundle/snipmate-snippets

参考にしたサイト