ImageMagick+Rubyでファイル名の情報を写真に入れる
良い写真が撮れたら、後で見れるように保存するだろう。 それを数年後に見たときにどこで撮ったか思い出せるだろうか。 写真を撮影したGPS座標や日付などから辿ることもできるが、アルバムのように写真内に日付や場所などメモを入れたいことはある。 今回は写真のファイル名を写真内に埋め込むサンプルを紹介する。 ここでは下記の画像のように右下にファイル名の情報を表示する(ファイル名: 江の島サムエル・コッキング苑_神奈川・藤沢_2020.jpg)。写真をクリックして拡大して見るとわかりやすい。 使うのは一般的に使われているImageMagick。 ファイル名の取得なりフォントサイズの計算なりはRubyで行う…(続く)
Rubyでコンソールをクリアしてカーソルを一番左端に持っていく
Rubyでコンソール上で画面をクリア(clear)して上から情報を出力したいとき、 Windowsならcls, Linuxならclearをsystem関数で呼んでsystem “cls”やsystem “clear”とするのがシンプルではあるが、環境(platform)に依存してしまう。 print “\033[2J\033[0;0H”を使えばplatformに関係なく、画面をクリアしてカーソルを一番左上に持っていける。 print “\033[2J”だけでも画面をクリアすることはできるが、カーソルの位置が動かないので、カーソルを移動するエスケープシーケンス”\033[Y;XH&#…(続く)
Web上から画像を収集(スクレイピング)するスクリプトを書いた
機械学習などで画像を収集したいことがある。 学習用の画像は、買ったり、自分で撮影したり、公開されているデータセットを使ったり、インターネットから拾ってきたり、と様々な方法で入手可能である。 今回はインターネットから画像を拾ってくるスクリプトを書いたのでそれの記録を残す。 なお、ここで示すのスクリプトや規約は記事投稿時点での内容となっている。そこからWebサイトの仕様や規約が変わっていなければそのまま使えるはずである。(仕様は結構変わるのでその都度変更が必要になる。) 概要 画像検索サービスにはGoogle, Bing, Twitterなど様々なものがあるが、規約的にだめだったり、検索ページがJ…(続く)
RubyでのGTK3+開発のTips
RubyでちょっとしたGUIのプログラムを書くとき、GTK3+を使うのは非常に便利である。 調べて大変だったTipsをメモがてらここに記録を残しておく。 ボタンにAltキーのショートカットをつける Altを押すと下線が引かれたキーでボタンが押せるあれです。 Altアクセスキーとも呼ばれるらしい。
1 2 3 4 5 6 |
require "gtk3" include Gtk # 中略 button=Button::new(label:"開く (_Open)") button.set_use_underline(true) # 後略 |
ボタンのlabelにアンダーバー(_)とアルファベットを続けて書いてset_use_underline(true)をするとそのアルファベットがショートカットキーになる。 上のコードでは’O’キーを割り当てているが…(続く)
Nokogiriを使ってWebページから情報を取得する
RubyのNokogiri(gem)を使って特定のWebページから特定の情報を抜き出す。 今回は乃木坂46公式サイトから本日のテレビとラジオとWEBの出演情報を取得する例を書く。 具体的にはトップページの下の図の赤い枠で囲ったスケジュールのWEB, RADIO, TVと書かれた情報を抜き出して表示する(青い枠で囲った部分にも同じようにメティア出演情報が載っており、どちらでもよいが今回は赤い枠の方を抜き出す)。 準備 まずはgem install nokogiriでNokogiriをインストール。 次に抜き出す情報のCSSのクラス名を調べる。 ブラウザのWeb開発ツールを用いるのが簡単である。 …(続く)
[Ruby] open-uriでのプロキシやユーザーエージェント(UA)の設定方法
Rubyのgem「open-uri」でプロキシ(proxy)やユーザーエージェント(user-agent: UA)の設定をしてhttpにアクセスしたいときの使い方のメモ。 プロキシを設定する URI::readやopenを使う場合は、proxyキーワード引数にプロキシサーバーのURIを渡す。 プロキシサーバーURIは「http://[user_name]:[password]@[address]:[port]」の形式で記述する。 例えば、プロキシサーバーのaddressがhttp://proxy.hoge, ユーザー名がfuga, パスワードがbarでポートが8080の場合は「http://f…(続く)
GTK+で強制的に画面(ウィジェット/ウィンドウ)を更新する
GTK+を用いて簡単なGUIアプリケーションを開発する時、毎回忘れてしまうのでメモ。 重い処理をさせながらプログレスバーやラベルなどのウィジェットを更新したい時、スレッドを立ててUIスレッドがビジーにならないようにすることが多いが、どうしてもメインスレッドで更新したい時がある。 そんな時、Tcl/TkではTk::updateを用いるがGTK+ではgtk_main_iteration()を用いる。RubyではGtk::main_iteration, Pythonではgtk.main_iteratiom()である。 これを更新したいタイミングで呼び出すことで、強制的にウィンドウ(ウィジット)を更新…(続く)
PyCallを用いてTensorFlowをRubyで使う
PyCallはmrknさんが開発しているPythonのライブラリをRubyで使うgemである。 バージョンが1.0になって大幅に使いやすくなった。 今回は、このPyCallを用いてPython用のライブラリのTensorFlowをRubyで動かしてみる。 今回の環境はWindows10, Ruby2.4, Python3.6を用いた。 PyCallのインストール PyCallを使用するにはPythonをインストールする必要がある。(すでにインストール済みの場合は必要ない) インストール方法はなんでも良いが、公式のWebページのダウンロードリンクからインストーラーをダウンロードしてインストールす…(続く)