RubyプログラムからTLを見る
RubyプログラムからTwitterに呟く
Rubyで簡単なTwitterアプリを作成し、呟くところまでやりました。
手順は以下の通り
① Gem で 'twitter' をインストール
② アプリをTwitterに登録
③ Consumer key や access token を取得
④ Ruby プログラムを作成して実行
◯ Gem で 'twitter' をインストール
まず、Gem で 'twitter' をインストールするために以下のコマンドを実行。
すると、UTF-8が何たらというエラーメッセージが。
ググってみると、Gem や Ruby に関する問題のようなので、まず rbenv を調べてみることにした。
ところが、rbenv のバージョンを調べようとしても、コマンドが not found で弾かれる。 どうやら、bash から zsh に乗り換えた際に、必要な操作を忘れていた様子。
.zshrc に下記の2文を記述してから、一番のコマンドを実行する。
その後、もう一度 gem install すると、うまくいった。
◯ アプリを Twitter に登録
まず、http://dev.twitter.com/apps/new を開く。
そこで、アプリ名(via の部分に表示される)や概要を入力して、Create app を押す。
登録の詳細は、下記のサイトを参照した。
http://route477.net/w/RubyTwitterJa.html
◯ Consumer key や access token を取得
アプリ登録後、Keys and Access Token タブの Consumer key や Consumer secret を控える。
そして、Permissions タブから権限を Read, Write and Access direct messagesに変更して、種々の操作ができるように設定。
さらに、自分のTwitterアカウントに、作成するアプリがアクセスできるように、Access Token を作成する。Keys and Access Token タブに移動して作成後、Access Token や Access Token Secret を同じように控える。
◯ Ruby プログラムを作成
いよいよ、Twitter アプリの作成に移る。
サンプルコードをググって、下記のように記述。
ところが、とてつもない量のエラーを吐かれてしまった。
もう一度ググってみると、上記のコードはバージョンアップ以前の古い書き方であった。これに関しては、以下のページを参照した。
Ruby - Twitter Gem 不具合! - mk-mode BLOG
最新の書き方に直して以下のように記述、実行するとうまくツイートできた。
◯ 補足
作成したRubyプログラムを実行するたびに、以下の様な警告が出るので、対策をして出ないようにした(環境はWindows8)。
まず、デスクトップ→設定→コントロールパネル→システムとセキュリティ→システム→システムの詳細設定 と移動。
次に、詳細設定タブの環境変数ボタンを押す。
ここで、環境変数 CYGWIN を追加、または編集し、tty nodosfilewarning と記述。
設定を保存して再度Rubyプログラムを実行すると、警告が出なくなった。
この作業は、以下のページを参考にして行った。
SLP KBIT Advent Calendar 2014 -7日目-
はじめに
この記事は SLP KBIT Advent Calendar 2014 の7日目の記事です。
当ブログに書き忘れてた内容があったので、書くついでに記事にしました。
というわけで、「Clang」について語っていきます。
Clangとは
読み方は「クラン」。
一言で言うと、コンパイラフロントエンド。
コンパイルの下準備 … 字句解析・構文解析・意味解析を行う。
要は、ソースコードを解析して、ミスが無いかどうかチェックしてくれるもの。
Clang だけでコンパイルを行う訳ではなく、LLVM というものとセットで使う。
LLVM については、主旨から逸れるので省略。
導入方法も、環境によって違うので省略。
ちなみに自分は Cygwin に導入する際、apt-cyg で Clang を、wget で LLVM を
入れました。
GCCとの違い
↑の文を見て、「別に GCC でいいじゃん」と思う人もいるだろう。
しかし、GCC と Clang の間には、明確な差がある。
これは見た方が早いので、ちょっとした実験を行って、結果を見ていただこう。
実験
下記のコードを GCC と Clang に扱わせる。
色々とおかしいところがあるので、それを検出させる。
まずは GCC。
配列のサイズ不足についてはOK。
ただ、printfの型の違いについてはスルー。
そして、11行目を指して「セミコロンが無いよ」と言っているが、
実際にセミコロンを付けるべき場所は 10行目であり、分かりづらい。
次に、Clang。
おかしいところは全て検出されている。
さらに、波線で場所を分かりやすく示すだけでなく、どのように修正
すべきかまで示している。
セミコロンの付け忘れに関しても、キチンと10行目を指した上で、
エラーを吐いている。
両者を見比べてみると、Clangの方が分かりやすい。
結論
Clang、マジ便利。
Vimにneosnippetを導入
ローカルのVimにneosnippetを導入しました。
手順は以下の通り。
① .vimrcに下記の内容を記述
② :NeoBundleInstall
これで、導入は完了。
試しに test.c で main + C-k を入力すると、以下のように入力された。
これは個人的な書き方と違っているので、snippetファイルをいじることに。
~/.vim/bundle/neosnippet-snippets/neosnippetsのc.snipを開き、下記のように修正しました。
あと、main(void)の文が無かったので、それも追加。
設定は以上で終わり。
あとは早く慣れて、スムーズにコーディングできるようにしたいです。
Z shellでpryが実行できない
Z shellに乗り換えて初めてpryコマンドを打つと、command not foundと言われ弾かれました。
解決策をググってみたところ、「pry _(バージョン名)_」の形でコマンドを打つといいらしい。
そこで、.zshrcに「alias='pry _0.10.1_'」を書き込んで、もう一度pryコマンド実行。
結果、pryが元通り使えるようになりました。
Rubyで素数判定 - ウィルソンの定理
以前Pythonで書いたコードは、計算にすごく時間がかかっていました。
8桁の素数判定が20分かかってもできないほど。
そこで、今回は計算方法を変えてRubyで実装しました。
以下が、そのコードです。
前回のコードでは、階乗を最後まで行ってから剰余計算を行っていましたが、
今回は乗算1回ごとに剰余計算を行うようにしました。
その結果、演算速度が著しく上昇しました。
このコードなら、8桁の素数も10秒ほどで判定できます。
# Input
print "number : "
num = gets.to_i
sum = 1
(1..num-1).each do |n|
sum *= n
sum %= num
end
sum += 1
# Output Result
if sum % num == 0
print "\nPrime number.\n"
else
print "\nComposite number.\n"
end
Z shellに乗り換え
今まで、Cygwinではbashを使ってたんですが、Z shellに乗り換えることにしました。
理由…補完機能がイマイチだから。
まず、apt-cygでzshをインストール。
$ apt-cyg install zsh
次に、.zshrcを記述。内容は、以下の通り。
export LANG=ja_JP.UTF-8
HISTFILE=$HOME/.zsh-history
HISTSIZE=100
SAVEHIST=100
# cdなしでディレクトリ名を直接指定して移動 & ls実行
setopt auto_cd
functionson chpwd() { ls -xACF --color=auto }
# beepを消す
setopt nolistbeep
# 大文字、小文字を区別せず補完
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
# 使わないキーの無効化
bindkey -r '^s' # Ctrl-s
# 予測変換
#autoload predict-on
#predict-on
#autoload -U compinit
#compinit
# alias -----------------------------------------------------------
alias gcc='gcc -o' #(出力ファイル名)(ソースファイル名)でコンパイル
alias rm='rm -i' # コマンド実行時に一度確認する
alias cp='cp -i' # 〃
alias mv='mv -i' # 〃
alias ll='ls -l' # ファイルの詳細も同時に表示
alias la='ls -A' # ドットファイルも表示
alias ls='ls -xCF --color=auto'
alias sl='ls -xCF --color=auto'
alias grep='grep --color' # 検索結果を色付きで表現
alias df='df -h' # 容量を適当な単位で表示
alias du='du -h' # 〃
alias open='cygstart' # ファイルやディレクトリを開く
alias ipconfig='ipconfig | nkf -w' # 文字化け防止
alias ifconfig='ifconfig | nkf -w' # 〃
alias getmac='getmac | nkf -w' # 〃
# prompt -----------------------------------------------------------
# 色有効
autoload -U colors
colors
## 色を使う
setopt prompt_subst
# 補完でカラー使用
autoload colors
zstyle ':completion:*' list-colors "${LS_COLORS}"
# 色を定義
local GREEN=$'%{\e[1;32m%}'
local RED=$'%{\e[1;31m%}'
local BLUE=$'%{\e[1;34m%}'
local DEFAULT=$'%{\e[1;m%}'
# 通常のプロンプト
PROMPT="
%F{green}[%n@%m]%#%f %F{cyan}[%~]%f
%F{yellow}<<%f "
# 右側のプロンプト。ここでカレントディレクトリを出す。
# RPROMPT="%F{cyan}[%~]%f"
# setopt transient_rprompt
最後に、zshをログインシェルにする。
$ vim /etc/passwd
bin/bash → bin/zsh に変更
導入時、こちらのページを参考にしました。
zshは至高の利便性?!Cygwinにzshをインストール&設定した導入方法まとめ | Futurismo