0

githubのmasterを1週間巻き戻した

1週間ぐらい作業した内容をgithubのmasterにpushした後、よく考えたらこれ全部別プロジェクトにしたほうがいい・・
という事に気づき、1週間前の状態に戻した。


せっかくの1週間分の作業を失ってしまうのも何なので、あとで別プロジェクトにコピペするために黒歴史ブランチとしてとっておく事にした。
git push origin :masterでgithubのmasterを削除してpushしなおせばいいかと思ったけど、なぜかmasterだけは削除できなかった。


masterを黒歴史branchにする

git checkout master
git checkout -b black_history
git push origin black_history
git branch -D master
黒歴史をgithubにもpushした。ローカルのmasterは削除。


1週間前の状態をmasterにする

git logでどこまで戻るか探してから
git checkout 3c39b88a29797649b35c3e3e8b5923a86773c8d4
git checkout -b master


masterを書き換える

git push -f origin HEAD:master
これで今のブランチのHEADをリモート(github)のmasterにできるらしい


wifi_locationを巻き戻せた。

0

gem launch-agentで定期的にスクリプト実行

これ便利だ
https://github.com/youpy/ruby-launch-agent
https://rubygems.org/gems/launch-agent

Macで常時起動、あるいは定期的に実行させたいスクリプトを配布するのによい。


youpyさんが作ったlaunch-agentというgemを使うと、LaunchAgentsに起動設定を登録できる。
LaunchAgentはMacを起動した時にアプリを自動起動してくれる人で、$HOME/Library/LaunchAgentsや/Library/LaunchAgentsに起動設定ファイルがある。


githubのREADMEにはLaunchAgent::Daemonを使って常時起動させるアプリを登録する方法が書いてある。
今回は定期的に起動したかったので、ソース読んでみたらLaunchAgent::Periodicというのがあった。

使い方

require 'rubygems'
require 'launch_agent'

agent = LaunchAgent::Periodic.new(60, 'ruby', '/Users/sho/test.rb', '引数1', '引数2')
agent.load
agent.unload
60秒ごとに指定したスクリプトが起動する。


こういう設定ファイルが $HOME/Library/LaunchAgents に生成されていた。
(これは今作ってる別のアプリの設定ファイル、300秒ごとに実行される)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.shokai.ruby___usr_bin_wifi_location_logger___write_log___logpath__var_log_wifi_location</string>
<key>ProgramArguments</key>
<array>
<string>ruby</string>
<string>/usr/bin/wifi_location_logger</string>
<string>-write_log</string>
<string>-logpath=/var/log/wifi_location</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>



何も指定しないとcom.buycheapviagraonlinenowって名前でサービスが登録されるので、
$VERBOSE=nil
module LaunchAgent
class Base
DOMAIN = 'org.shokai'
end
end
$VERBOSE=true
warningを一時的に止めつつLaunchAgent::Base.DOMAINを上書きしたらよい感じになった。

0

Twが窓の杜の載ってた

最近は窓の杜に登録しなくても掲載されるんだな

窓の杜 – 【REVIEW】コマンドプロンプトでこっそりTwitterをするためのRubyスクリプト「Tw」


すごい。Windows用のインストール方法とか解説してくれている。

「こっそりtwitterするためのスクリプト」ではないんだけど、WindowsのコマンドプロンプトではANSIカラーが表示されないから白黒になっていて、こっそり感があるらしい。


twitterで見るとwindowsでは問題があるらしい

俺はWindowsを普段使っていないので全く動作確認していないのだが、pull requestを募集しています。
あと、設定ファイルは$HOME/.tw.ymlに保存されるんだけどwindowsの場合はどこに置かれるのか気になる・・

Tw: Twitter client on Ruby.

※こっそりtwitterしたいのではなくて、コード書いている時にwebブラウザでtwitter見ると集中力が削がれるのと、手元のプログラムから気軽に書き込めるbasic認証のころのtwitterを取り戻したかった、というのがTwの開発動機です

0

自動日記をtwitterに流すようにした

これ → 自動で日記書くようにした

twitterに書くようにした。



リポジトリ https://github.com/shokai/autodiary
使い方

git clone git://github.com/shokai/autodiary.git
cd autodiary
gem install bundler
bundle install
ruby autodiary --tweet shokai


twのセットアップをしていない場合は
tw --user:add
でユーザを追加しておくとよい。



先月ぐらいにtumblrのAPIが新しくなった。basic認証がread onlyになって動かなくなってしまった。
tumblrのoauthはcallback URLを指定してtoken受け取る方式しかできないしcallback先の指定も無視してくるので面倒になった。

0

twがインストールできない人向けドキュメントを書いた

https://github.com/shokai/tw/wiki/Install-Error


args_parserのサンプルアプリを作りたかったのと、rubyで作ったアプリをどうやって配布していったらいいのか試すために作り始めたんだけど、わりと好評なのでインストールにつまづいた人向け情報も書いてみた。


XCodeとかが必要になったら大変だろうから、native extensionを使ってるgemを使わないようにしよう。Ruby1.8.7で動くようにしよう。
そう思って実装してみたら、意外と1.8.6の人がいたり、ver 1.7あたりのrubygemsがgemspecに変な日付を入れて破壊したりとかあった。

gemでツールを配布しても、普段からrubyとgemを使っている人にしか届かない事がわかった。
youtube-dlの様にhomebrewやmacportsでも配布するとか、ダウンロードしてもインストールできるようにするとか何か工夫が必要らしい。