Tag : プログラミング

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

投稿日: 2018年8月12日

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

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

はじめてのプログラミング言語はPythonであるべきではない

投稿日: 2018年5月30日

Pythonは非常に便利な言語ではある。 文法も難しくなく、初心者でも比較的簡単に扱えるだろう。 しかし、Pythonは他の言語と比べてクセがあり、はじめてのプログラミング言語をPythonにした場合、この独特なクセによって他のプログラミング言語に馴染みづらくなってしまうと思う。 また、Pythonがプログラミングの全てだと思いこんでしまうのは良くない。 Pythonをオブジェクト指向な言語だと捉えられて、「これがオブジェクト指向なのか~」などと認識させてしまうのは良くないし、スコープなどの基本的なことも意識(学習)することなく「自分はプログラミングができる」と思い込ませてしまう可能性もある。…(続く)

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ページのダウンロードリンクからインストーラーをダウンロードしてインストールす…(続く)

パイハラ (パイソンハラスメント)

投稿日: 2017年9月26日

Pythonには様々なライブラリが揃っており、そのライブラリが簡単に使えるため、情報系(特に情報科学/工学系)でここ数年でよく使われるようになった。 確かにツールの1つとしてPythonは非常に強力である。しかし、プログラミング言語としてのPythonは優れているとは思えない。 不完全なオブジェクト指向、クセのある文法や仕様は万人受けするものではない。 Pythonで出来ることは基本的に他の言語でもできる。(ただしPython程簡単にできるとは限らないが) しかしこのPythonの使用を強いられる場合があり、それをパイソンハラスメント(Python Harassment)、略してパイハラと呼ぶ…(続く)

プログラミングにおける字下げスタイル(ブロックの改行)に関して

投稿日: 2017年8月28日

プログラミングにおいての争いは常に絶えない。 言語, エディター, OS, ブラウザの宗教問題やインデントのタブ問題など様々な争いの一つに字下げスタイル(ブロックの括弧の位置)問題がある。 字下げスタイル(ブロックの括弧の位置)問題とは C, C++, C#, Javaなどの主要な言語でfor文, while文などの処理対象を示す括弧やキーワードで囲まれた領域(ブロック)を字下げ(改行)してから始めるか、しないで始めるかなどのスタイルの好みの問題である。 字下げをしない書き方をK&Rのスタイル, 字下げをする書き方をBSD/オールマン・スタイルと呼ぶ。(厳密にはもう少し細かく分かれる…(続く)