技術メモ

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

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

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

投稿日: 2017年8月28日

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

ソースコードのインデントはスペースを使うべき

投稿日: 2017年7月30日

エディター(vim/emacs)紛争, C/C++における無限ループ(for(;;)/while(1))紛争など、プログラマー同士の紛争は日々絶えない。 その紛争の1つがソースコードのインデントをタブ文字(\t)で行う(ハードタブと呼ばれる)かスペースで行う(ソフトタブと呼ばれる)かである。 この問題は比較的深刻で、特に複数人で開発を行う時にこれらの2つのタイプが混ざってしまうと、ソースコードが非常に見づらく、バグの原因になってしまう。 また、Pythonなどのインデントをブロックの単位とするような言語だと、エラーにより動作しなくなってしまうことも十分考えられる。 そのため、タブ文字かスペース…(続く)

AndroidのImageViewで画面の幅に合わせて画像を等倍拡大する

投稿日: 2017年4月16日

AndroidのImageViewで画像を画面の横いっぱいに合わせて等倍して配置するのに少し苦労したのでメモ。 普通にScaleTypeでやると思ったように上手くいかない。 FIT_CENTERとかCENTER_CROPとかにしてもViewのサイズに合わせて等倍されるが、画面のサイズに合わせて等倍はされない。 画面横に合わせて等倍するようにするため、Javaのコードで以下の手順で実装した。 ディスプレイの横幅を取得 画像の横幅を取得 ディスプレイの横幅÷画像の横幅で拡大倍率を計算 その拡大倍率をImageViewに適用 ImageViewのidをimg_view, 使う画像のリソースを@mip…(続く)

GNOME3でアプリケーションメニューにランチャーを追加する (alacarteを使用しない方法)

投稿日: 2017年3月10日

FedoraやCentOSなどのウィンドウマネージャーであるGNOME3(GNOME Shell)は昔は評判が悪かったが、徐々に改善されて、現在ではかなり安定してきて使いやすさも向上してきている。 しかし時々やり方がわからず、不便に思うことはある。 今回はアプリケーションメニューにランチャー(ショートカット)を追加する方法を記述する。 なお、この記事ではFedora25を例にしている。 ここで言う「アプリケーションメニューにランチャーを追加する」は「アクティビティ」を押した画面で「アプリを表示する」を押した画面に表示することを指す。 この画面である↓ 最も一般的なのはalacarteを使う方法…(続く)

PowerPointで無料でエヴァ風のフォントを再現する

投稿日: 2017年1月15日

PowerPointに標準で入っているフォントだけで無料でエヴァ風のスライドを作る方法を紹介します。 ここではPowerPoint2016を例に説明しますが、他のバージョンでも同じだと思います。 ここで紹介する方法を使うと、このようなスライドを作れます。 ここで作ったスライドを画像として保存すれば、PowerPoint内だけではなく、動画などにも使用できます。 エヴァで使われているフォント 実際のエヴァンゲリオンのアニメ内や、映画内では「マティスEB」というフォントが使われています。 このフォントはエヴァ公式フォントとして発売されています。 Amazon: フォントワークス エヴァンゲリオン公…(続く)