Rubyで大きいファイルを読み込む時に進捗を表示
ruby-progressbar というgemを使うとプログレスバーを表示できる。
ruby-progressbarのインストール
$ gem install ruby-progressbar
進捗を表示しつつファイルを読むプログラム
require "ruby-progressbar" # ファイル名 filename = "sugoku_dekai_file.txt" # ファイルサイズを取得しプログレスバーを作成 progressbar = ProgressBar.create(total: FileTest.size(filename)) # ファイルを開いて行ごとに処理 open(filename) do |f| f.each_line do |line| # lineに対してなにか処理 foo(line) # プログレスバーを更新 progressbar.progress = f.pos end end # 最後にプログレスバーを100%にする progressbar.finish
ぼっちWikiに最適なGollum
GollumはデータベースにGitを使い、Markdownで書けるWiki。
Gollumの特徴は以下の通り。
- シンタックスハイライトや数式に対応している
- 様々な記法で書ける
gem
コマンドで簡単にインストールできる- データベースとしてGitを使うのでMySQLなどが不要
- Ruby+Sinatraで実装されている
- Rubyでマクロを書いて拡張できる
Gollumのインストール
ICUという文字コード変換ライブラリに依存しているのでまずはそれをインストール。
# OS Xの場合 $ brew install icu4c # Debian/Ubuntuの場合 $ sudo apt-get install libicu-dev
続いて、Gollum本体をインストール。
$ gem install github-markdown gollum
Gollumの起動
$ git init # 初回だけ $ gollum --mathjax --config auth.rb --allow-uploads
認証の設定
ぼっちWikiなので、他人に内容を見られてしまっては困る。
Gollumは普通のSinatraアプリと同じように、認証をつけることができる。
たとえばこんな感じのauth.rb
を作成するとBasic認証を追加できる。
module Precious class App < Sinatra::Base use Rack::Auth::Basic, "Restricted Area" do |username, password| [username, password] == ["foo", "bar"] end end end
※Basic認証&ファイルにパスワード直書きなので、盗聴やパスワード漏洩の可能性がある。あくまでも気休め。
他人の全ツイートをJSONで一括保存するコマンドを作った
Twitterには、自分の全ツイートアーカイブをダウンロードできる機能があるが、他人のツイートはダウンロードできない。
そこで、他人のツイートをダウンロードするalltweets
というコマンドを作った(もちろん自分のツイートもダウンロードできる)。
許可されていれば、非公開アカウントのツイートもダウンロードできる。
インストール
gemコマンドでインストールできる。Macの場合はsudo
が必要。
$ gem install alltweets
使い方
結果は標準出力に表示されるのでいい感じにリダイレクトする。
$ alltweets tatzyr > tatzyr.json # tatzyrのツイートをJSON形式でダウンロード
RubyGemsとGitHubに公開したgemの名前を変更する
前提
oldname gem側の作業
以下のコードをoldname gemのどこかに書いて、deprecatedになることを伝える。
warn "[DEPRECATION] This gem has been renamed to `newname` and will no longer be supported. Please switch to `newname` as soon as possible."
さらに以下のコードをoldname.gemspec
に追加すると、oldname gemのアップデート時にこのメッセージが出る。
spec.post_install_message = <<-MESSAGE ! The 'oldname' gem has been deprecated and has been replaced by 'newname'. ! See: https://rubygems.org/gems/newname ! And: https://github.com/YourID/newname MESSAGE
最後にバージョンを1つ上げる。
lib/oldname/version.rb
module OldName VERSION = "0.1.1" # テキトーに0.0.1上げる end
newname gem側の作業
newname.gemspec
のdescription
かsummary
に以下の文を追加しておくと親切。
Formerly known as 'oldname'.
Twitterのふぁぼを寿司にするChrome拡張作った
Twitterのふぁぼがハートアイコンの「いいね」に変わった。
Twitterにハートが登場しました | Twitter Blogs
そういう事情なのでふぁぼを🍣にするChrome拡張を作ったらやたら「いいね」された。
ふぁぼを🍣にするChrome拡張作った。
Twitter-💓🍣 - Chrome ウェブストア
https://t.co/INNz0Yb7au pic.twitter.com/uvDPXTz0YL
— Tatzyr (@tatzyr) 2015, 11月 4
iPhoneのカレンダーをGoogle Calendarに移行する方法
iPhoneやiPadのカレンダーをGoogleカレンダーに移行する方法。同期ではなく移行。
iPhoneからAndroidにカレンダーを引っ越したいときや、Googleカレンダーと連携するアプリをiPhoneで使いたいならこの方法で移行するのがおすすめ。
手順
iCloudカレンダー にサインイン
サイドバーのアイコン > パブリックカレンダー をクリックし、カレンダーを共有する
共有したカレンダーの URL をコピーし、ブラウザのアドレスフィールドに貼り付ける(まだreturnキーは押さない)
webcal
をhttp
に変更してからreturnキーを押す。すると、ICS ファイルがダウンロードされるパブリックカレンダーのチェックを外し、カレンダーの一般共有を停止する
Google Calendarにログイン
マイカレンダー > ▼ > 新しいカレンダー をクリックし同名のカレンダーを作成する
右上の設定アイコン > 設定 >「 カレンダー」タブ > カレンダーをインポートをクリックする
「ファイルを選択」ボタンでダウンロードしたICSファイルを選択する
「カレンダー」セレクトボックスで、先ほど作成した同名のカレンダーを選択する
インポートをクリック
これでiCloudカレンダーのGoogle Calendar移行は完了。
るびまRubyist Hotlinks - インタビュイーの好きなメソッド・嫌いなメソッド一覧
Rubyist Magazine(るびま)には、著名なRubyistにインタビューを行うRubyist Hotlinksという企画がある。 Rubyist Hotlinksでは毎回「好きなメソッド、嫌いなメソッドはなんですか?」という質問がされるのでまとめた。