技術メモ

後で同じ状況が起こった時に思い出せるように技術的なちょっとしたことをメモする。ベストな解ではない。

[HTML]複数のドロップダウンリストで重複を許さず(ユニーク)に選択してもらう

投稿日: 2018年8月12日

HTMLのセレクトボックス(selectタグで作れるやつ; ドロップダウンリスト, スピナーなどとも呼ばれる)で同じ候補から順位をつけて選択してほしいときとかにセレクトボックスの中身を共有し、一つ選んだら別のセレクトボックスではその項目を選べないようにしたい。 背景 例えば、HTML+PHPで旅行の日程と行き先の希望を取るアンケートを作成する事を考える。 行き先は北海道・東北・中部・近畿・四国・九州から第一から第三希望、出発日を8/11~8/15から第一希望と第二希望選んでもらうとする。 その場合、一番愚直に書いたHTMLは以下のようになるだろう。 [crayon-5c4112309de766…(続く)

RubyでのGTK3+開発のTips

投稿日: 2018年7月30日

RubyでちょっとしたGUIのプログラムを書くとき、GTK3+を使うのは非常に便利である。 調べて大変だったTipsをメモがてらここに記録を残しておく。 ボタンにAltキーのショートカットをつける Altを押すと下線が引かれたキーでボタンが押せるあれです。 Altアクセスキーとも呼ばれるらしい。

ボタンのlabelにアンダーバー(_)とアルファベットを続けて書いてset_use_underline(true)をするとそのアルファベットがショートカットキーになる。 上のコードでは’O’キーを割り当てているが…(続く)

Nokogiriを使ってWebページから情報を取得する

投稿日: 2018年7月22日

RubyのNokogiri(gem)を使って特定のWebページから特定の情報を抜き出す。 今回は乃木坂46公式サイトから本日のテレビとラジオとWEBの出演情報を取得する例を書く。 具体的にはトップページの下の図の赤い枠で囲ったスケジュールのWEB, RADIO, TVと書かれた情報を抜き出して表示する(青い枠で囲った部分にも同じようにメティア出演情報が載っており、どちらでもよいが今回は赤い枠の方を抜き出す)。 準備 まずはgem install nokogiriでNokogiriをインストール。 次に抜き出す情報のCSSのクラス名を調べる。 ブラウザのWeb開発ツールを用いるのが簡単である。 …(続く)

[Ruby] open-uriでのプロキシやユーザーエージェント(UA)の設定方法

投稿日: 2018年7月18日

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…(続く)

認証局がLet’s Encryptの証明書を更新しようとしたらエラーが出た

投稿日: 2018年3月2日

Let’s Encryptは無料でTLSの証明書を発行してくれる認証局である。 非常にありがたいのだが、発行される証明書の有効期限は90日しかない。 そこで、有効期限が近づいたら更新(sudo certbot renewコマンド)を行うのだが、そこで下のようなエラーが出た。 $ sudo certbot renew Saving debug log to *****************/letsencrypt.log ———————————&#82…(続く)

sedでクオーテーションマークの挙動と正規表現でハマった

投稿日: 2018年2月19日

LaTeXソースコードの全ての”式n“(nは整数)を”式(n)”と置換したく(具体的には式1→式(1)のような感じ)、sedコマンドを使うことにした。 ただ数字を括弧で挟むだけなのですぐに出来ると思ったが、少しハマったのでメモを残す。 実行環境はWSL(ubuntu)で行った。sedコマンドは環境によって挙動が変わる可能性があるので注意してほしい。(いきなり実行せずにファイルのバックアップを取ってから実行したほうが良い。) やりたいこと 文章中の”式1→式(1)”のように”式n→式(n)”と、数字を…(続く)

WindowsにLaTeX+TeXstudioを導入する方法 (TeX Liveを利用)

投稿日: 2018年1月1日

LaTeXはデザインに気を使わずに綺麗に文書を作成するのに最適な環境である。 しかし、その導入は敷居が少し高いので、ここにWindowsにLaTeX環境を整える方法を記す。 以前の記事(WindowsにLaTeX+エディタ(TeXstudio+TeXworks)を導入する方法)ではTeXインストーラ3を用いたインストール方法を紹介したが、今回はそれよりも導入が簡単なTeX Liveを用いた導入方法を記す。 なお、画面はWindows 7での例を示しているが、Windows 8, 8.1, 10でも同様に導入が可能である。 TeX Liveの導入 ※インストールがうまくいかない時はセキュリティー…(続く)

GTK+で強制的に画面(ウィジェット/ウィンドウ)を更新する

投稿日: 2017年11月30日

GTK+を用いて簡単なGUIアプリケーションを開発する時、毎回忘れてしまうのでメモ。 重い処理をさせながらプログレスバーやラベルなどのウィジェットを更新したい時、スレッドを立ててUIスレッドがビジーにならないようにすることが多いが、どうしてもメインスレッドで更新したい時がある。 そんな時、Tcl/TkではTk::updateを用いるがGTK+ではgtk_main_iteration()を用いる。RubyではGtk::main_iteration, Pythonではgtk.main_iteratiom()である。 これを更新したいタイミングで呼び出すことで、強制的にウィンドウ(ウィジット)を更新…(続く)

Alea GPUライブラリを使ってC#で簡単GPU並列プログラミング

投稿日: 2017年11月20日

C#でCUDAを使ったGPUの並列処理の日本語の情報が少なかったので、C#で使えるGPUライブラリであるAlea GPUライブラリの導入方法をここに残す。 ここでは、Visual Studio (Visual C#)がインストールされていて、cudaに対応したGPUが搭載されており、cudaドライバなどがインストールされている状態のWindowsを前提としている。 これらの環境が整っていない場合はまずは整える必要がある。 この記事ではWindows 10, Visual Studio 2017 Communityを使用した場合を紹介するが他のバージョンでもそう変わらないはずである。 プロジェク…(続く)

PyCallを用いてTensorFlowをRubyで使う

投稿日: 2017年11月10日

PyCallはmrknさんが開発しているPythonのライブラリをRubyで使うgemである。 バージョンが1.0になって大幅に使いやすくなった。 今回は、このPyCallを用いてPython用のライブラリのTensorFlowをRubyで動かしてみる。 今回の環境はWindows10, Ruby2.4, Python3.6を用いた。 PyCallのインストール PyCallを使用するにはPythonをインストールする必要がある。(すでにインストール済みの場合は必要ない) インストール方法はなんでも良いが、公式のWebページのダウンロードリンクからインストーラーをダウンロードしてインストールす…(続く)