radikoのxml番組表とタグの意味

radikoの2週間番組表(1週間前から1週間後)は、例えば放送大学(放送局コード HOUSOU-DAIGAKU )ならば http://radiko.jp/v3/program/station/weekly/HOUSOU-DAIGAKU.xml となります。本日(4/15)だと4/8から4/21までの番組表が取得出来ます。 今日の番組…

gogakuondemand.rbをv1704に更新

NHK大好きな[twitter:@riocampos]です。 gogakuondemand.rb を久しぶりに更新しました。バージョン名は今回から年度と月名にしました。 今回の更新はNHK語学講座の変更に伴う対応です。 追加講座 ボキャブライダー(注意:v1704_1にて対応) 高校生からはじ…

RMagickメモ

なんとなく書くことにしました。 画像は8x8 bit の画像ファイル z.png(32倍に拡大してます)↓ を使います。 読み込み > require 'RMagick' > img_z = Magick::ImageList.new('z.png') > # または img_z = Magick::Image.read('z.png') ImageとImageListの違…

AWS初期設定

Heroku から引っ越すためのメモ書き。 まずこれ AWSアカウント作ったらこれだけはやっとけ!IAMユーザーとAuthyを使ったMFAで2段階認証 - Qiita IAM - AWSのアカウント管理でのつまづきポイント - Qiita 引き続いて AWS EC2を使って無料枠でWebサーバを立て…

Threadの同時実行数を指定するには

Queue を使えば簡単です。また SizedQueue でもできます。 シンプルに 標準添付ライブラリのQueueを使えばこれらの処理がサクッと実装できちゃいます。 require 'thread' locks = Queue.new 2.times { locks.push :lock } Array.new(10) do |i| Thread.new d…

ラジ録2で録った「らじる★らじる」flvファイルをまとめてmp3に変換する その2

ラジ録2で録った「らじる★らじる」flvファイルをまとめてmp3に変換する - 別館 子子子子子子(ねこのここねこ) というのを3年ほど前に書きましたが、そのまま放置していました。 ふと、サーバに入っているflvファイルをまとめて変換してしまおう、と思い立…

元ファイルの変更日/追加日を別ファイルにコピー

某ソフトでNHKラジオを録音しているのだけど、一時期だけ設定ミスをして番組後も5時間ほど録音してしまったことが。ということで15分(+30秒)に切る Ruby スクリプトを書いてみた。 そのときに、切り取った後のファイルの変更日/追加日を元のファイルと同じ…

簡体字から日本の漢字への対応表を作るには

中国語サイトが読みたくなった でも中国語を勉強する気はさほど無い。 そんなときに野口悠紀雄氏の記事を見かけた。機械式に置換して漢文の知識で読み切る、という感じだ。 ワープロの置換機能を利用して自分で訓読文を作る そこで、Aの文章を自分で訓読文…

Anemone gemでのクロールメモ

Web サイトをクロールしたいことが出てきたので、 Anemone で行うのが基本なのだろうと思い、少し調べていました。 するとRubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例作者: 佐々木拓郎,るびきち出版社/メーカー: SBクリエイティブ発売日…

Arrayを返すEnumerableモジュールのメソッドはeach_with_objectで書ける(while系を除く)

ということに気付いたのでメモ*1。 これを頭に入れておくと「ああ、これ select に似てるのに、返値にレシーバから以外の要素を入れたいから select じゃ書けない…>_each_with_object で書けば良いんだ」とササっと書ける(のではないかなと思った)。 ちな…

Pathnameクラスでファイル情報を得るには

Pathname#stat メソッドを使います。 File::Stat クラスを返します。 > file = Pathname.new('test.mp4') => #<Pathname:test.mp4> > file.stat => #</pathname:test.mp4>

横長画面のクロップ(補足:メタデータ全コピ)

640×480(4:3)の動画中央に16:9の動画が入っていて上下が黒帯の場合 16:9の動画の縦横サイズは640×360になります。また上下の帯幅はそれぞれ60です。 ffmpeg -i video43.mp4 -vf crop=640:360:0:60 video169.mp4 参考:ffmpeg クロップ (トリミングみたいな…

あるアプリのCPU利用率を規制するツール

Mac

cpulimit: CPU usage limiter for Linux というツールがありました。 参考: cpulimit : プロセスごとにCPU使用率を制限する - 憩いの場【Linux/ソフト紹介】 使い方 README を読みましょう*1。 抜粋します。 Firefox の CPU 利用率を10%に規制 cpulimit -l …

DockerFAQ

動作しない $ docker build -t hoge . Cannot connect to the Docker daemon. Is the docker daemon running on this host? $ eval $(docker-machine env default) Error checking TLS connection: default is not running. Please start it in order to use…

OSSのSwiftを使ってみる

Linux 版 Swift を Mac 上で Docker を使って手っ取り早く試す - Qiita に従って作業。 $ docker pull swiftdocker/swift Using default tag: latest latest: Pulling from swiftdocker/swift 0bf056161913: Pull complete 1796d1c62d0c: Pull complete e244…

Dockerのイメージとコンテナの違い

引用。 『イメージのインスタンスがコンテナです。…イメージを起動すると、そのイメージのコンテナが動作します。同じイメージの複数のコンテナを動作させることも出来ます。…起動中のイメージはすなわちコンテナです。』(拙訳) An instance of an image i…

Docker tutorialsをやってみる

Linux 版 Swift を Mac 上で Docker を使って手っ取り早く試す - Qiita をやってみたいと思いました、その前に Docker の環境作りと練習を。 本当は Parallels Desktop でやりたかったのだけど、情報が少なめなのと、いま入れてるバージョンが10(古い)ので…

IO.popenメソッドで標準エラー出力を取得するには

結論:IO.popenで標準エラー出力を取得するオプション ぐだぐだ長いので、求めているものを先に示しておきます。 IO.popen(command, :err => [:child, :out]) IO.popen(command, :err => [:child, :out]) { |pipe| … } 前置き まず先日書いた記事の引用を(…

Herokuのappを二つ使って交互起動で常時運用(Rack版)

この記事は2016/5/31までの内容です。 Herokuのappを二つ使って交互起動で常時運用(Sinatra版) - 別館 子子子子子子(ねこのここねこ) では Sinatra で交互起動させましたが、大したこともしてないので Sinatra を動かすほどでもない気がしてきました。と…

Herokuのappを二つ使って交互起動で常時運用(Sinatra版)

この記事は2016/5/31までの内容です。 Twitter bot の運用に heroku を使っている [twitter:@riocampos] です。Web app はあまり使っていません。 Heroku free dynoがとうとう24x7じゃなくなったorz - Qiita でも記載しましたが、 Free dyno だと18時間起動/…

Heroku router log format

2015/12/12現在(ふつうはさほど変わらないだろうけどね。11/2更新と書いてある。 HTTP Routing | Heroku Dev Center Heroku router log format info logs 2012-10-11T03:47:20+00:00 heroku[router]: at=info method=GET path=/ host=myapp.herokuapp.com f…

Sinatra内でloopなど定期作業を行うには

単純に Thread.start でスレッドを分けるんですけどね。重要なのはいつものイディオムだと問題が生じる、ということ。 ひとまず結論を先に示します。 クラシックスタイル require 'sinatra' Thread.start do loop do puts Time.now sleep 3 end end get '/up…

urlが存在するか確認するメソッド

元は!url.nil? && !url.empty?だけだったメソッドに、応答コードが200かどうかの部分を追加。 require 'net/http' def url_exist?(url) code = ->(url) { uri = URI.parse(url) Net::HTTP.start(uri.host, uri.port) { |http| http.get(uri.path) }.code } !…

PhantomJSとSelenium/Watirを使っているherokuでgit push heroku masterするとConnection refusedエラーが出てウザイ

こんな感じのエラーが出てログを圧迫する Cycling のときや push のときに Connection refused - connect(2) for "127.0.0.1" port 8910 (Errno::ECONNREFUSED) というエラーが出ます(なおポート番号は違う場合もあります)。 Nov 29 22:29:40 app-test her…

Watirでクリック後の更新を待つ

Watir-Webdriverでリンクなどをクリックした後に、更新されるのを sleep して待っていたのですが、ちゃんと更新を確認出来るメソッドがありました(当然ですよね ブロック内が真/偽になるまで待機する、というメソッドです。 (なお PhantomJS で ReactJS の…

Flashビデオ/オーディオ配信サイトからrtmpdumpでダウンロードするために解析する

おことわり Wiresharkで通信ログを見たときに RTMP ストリームがあるもの限定です*1。 個人利用に限ります。 当方は責任を負いません。 お品書き 基本編(音声) 応用編(動画) 必要なもの Wireshark rtmpdump ffmpeg 基本編:「先読み!夕方ニュース」 手…

NHK「先読み!夕方ニュース」の番組アーカイブスのダウンロード

今日放送された「広がる民間企業の図書館運営 現状は」を聞き損ねた[twitter:@riocampos]ですw先読み!夕方ニュース − R1 NHKラジオ第1 via kwoutとはいえありがたいことに、最近の NHK ラジオ第一のニュース番組はアーカイブを残していてくれているの…

外部処理に同期するための上限回数あり繰り返しメソッド

タイトル通りですね。処理を外部処理にしておけば同期が可能になります。処理を実行し、その結果を判断する、というブロックをメソッドに渡します。まず pre_sleep 秒だけスリープして遅延し、ブロックが false を返すと return(return if execution.call …

Web上の画像を付けてツイート(1つ・複数)

Twitter gemバージョン6.2.0以降の記事は次のリンクに書きました。 Web上の画像を付けてツイート(1つ・複数)Twitter gemバージョン6.2.0以降の場合 - 別館 子子子子子子(ねこのここねこ) 以下の記事はTwitter gemバージョン6.1.0までの内容です。 画像…

サイトタイトルを元に京都新聞で検索するbookmarklet

今月から京都新聞のスマホ向け有料サイトを利用している。月額300円+税。京都新聞携帯サイト・スマートフォン版のご案内 via kwout京都新聞の無料ニュースサイトに比べると京都府および滋賀県下のニュースが多く見れるのがポイント。京都新聞の Twitter アカ…