Runner in the High

技術のことをかくこころみ

プログラミング

フレームワーク・ライブラリを選ぶということ

「とりあえず、ググったら大抵解決しそうなんでReduxを使おうと思います」 2016年の夏、僕はあるフリマアプリで有名なECスタートアップでインターン生として、商品を販売するユーザー向けのアプリケーションのプロトタイピングをしていた。ほとんどすべての…

モデルの中でセッションを使う

ときたまセッションに関連するロジックをモデルの中に作りたいときがある。ところが、原則的にRailsではセッションをモデルの中で操作することができない。 この問題を解決する最も簡単な方法は、モデルに生やしたメソッドへセッションのインスタンスを渡す…

コントローラを名前空間で分離して責務の分割をする

Deviseなどを使って、ひとつ以上のスコープを持つアプリケーションを開発している際に、RESTfulなコントローラとビューが1対1対応をしていると、コントローラがどうしても複数のスコープが絡みついた見通しの悪いコードになりがちである。 たとえば、ECカー…

Chrome Extensionのbackground pageでconstを使うのに気をつけよ

Chrome Extensionではbackgroundを使っている方々各位にお伝えしたいのがなんといつのまにやらconstで定義した変数がextension.getBackgroundPageメソッドから取れなくなっているということ background.js ...const NOTIFY_ID = "default";const ITEMS_ID = …

loadstop イベントより細かい request.onCompleted を使う

Chrome API の WebView にはページのロードが終了した時に発生する loadstop というイベントが存在する。これを用いたサンプルが公式のドキュメントにあるのだが、ここにひとつ注意したい点がある。 onload = function() { var webview = document.getElemen…

Webview 内のデータを取得するメモ

webview を用いて表示させたページのソースやらなにやらのようなデータを取得する手段がドキュメントのどこにも書かれていないので困ったが、いろいろ調べたら見つかった。 var view = document.getElementById("web-view-test");view.executeScript({ code:…

Chrome Dev EditorではGitで512kb以上のコミットをプッシュできない

Error whilst pushing changes #3456 - Chrome Dev EditorGit push fails for huge changes. #2553 - Chrome Dev Editor詳しくは上の2つのチケットを参照のこと。Chrome Dev Editor(CDE)ではjs-gitというGitをJavaScriptで実装したものを利用してコミット…

chrome.browsingDataの呼び出し回数制限

どうやらchrome.browsingDataには規定時間内の呼び出し回数制限があるらしい。確かにコンマ何秒位の差で何度も呼び出されちゃオーバーヘッドも大きそうだしね。みたところ、1秒未満の間に何度も呼びだそうとすると、エラーになるらしい。もしかすると他にも…

Chrome.storage.syncを使ってみる

Chrome.storageを使うと、異なるマシン上のChromeブラウザ間で同じ拡張機能が保存しているstorageを同期してくれる。このサンプルの機能は、テキストボックスに入力された文字列をChrome.storage.sync.setでストア。起動時にChrome.storage.sync.getで読み込…

履歴への記録を防ぐChrome拡張機能「History Blocker」を作った

History Blocker 気づいたらエロサイトを見始めてた、という状況になってからシークレットウィンドウに切り替えてももう遅い。履歴にはばっちり残っちゃってる。こんなトラブルを防いでくれるのが History Blocker(IzumiSy/HistoryBlocker)拡張機能をONにし…

CUIでWeblioを使う

LTN with VX Connect LifetouchNOTE用の手頃な日英辞書がなくて困っていたので作った。HTML::TreeBuilderでweblioの単語検索結果ページをスクレイピングしているだけ。単語の大まかな意味だけでもわかれば充分なので、割りといいハックだと思う。 #!/usr/bin…

QtMultimediaを使ってメディアファイルに埋め込まれたアルバムアートを取得

coverImage = player->metaData(QMediaMetaData::ThumbnailImage).value(); こうすると、変数player(QMediaPlayer型)にセットされているメディアファイルの埋め込みサムネイルがQImage型で変数coverImageに代入される。QMediaMetaData Namespace のページを…

ターミナルからGoogle検索をかける

ターミナルから直接Web検索をかけるられるようにperlでスクリプト組んだらすごい便利だった。 #!/usr/bin/perluse strict;use warnings;use utf8;use Encode;our $args = decode_utf8($ARGV[0]);foreach my $i (1 .. $#ARGV) { $args = $args . "+" . decode…

みくったーの最新版をチェックするPerlスクリプトを作った

LWP::UserAgentとHTML::TreeBuilderとかいう便利なライブラリを見つけた。勢いにまかせてみくったーの最新版があるかどうかをチェックするスクリプトをPerlで組んでみた。やってることはダウンロードページのhtmlを無理やりスクレイピングしてるだけです。 #…

RadioTrayのプラグインを作る

RadioTrayというネットラジオを聴くためのアプリケーションに、プラグインの機能があるのでちょろっとなにか作ってみる 必要なファイル - 処理本体を記述するPythonスクリプト- プラグインそのものの情報を記述するpluginファイル インストール /usr/share/r…

Android Studio がクソ重い

ちょっとだけ軽くするためのTips的なエントリ【環境】Xubuntu 12.04 LTS 32-bitIntel® Core™ i5 CPU M 560 @ 2.67GHz × 4RAM 2G1. Power Save Mode を使うバックグラウンドでのコード分析とかそういうのを無効にしてちょっと軽くするオプション。なにが無効…

Qtでメニューにファビコンを表示したいときのメモ

ファビコン! タイトル通り。メニューにかっこよくファビコンを表示したい!という人のためのメモ。「そんな人間がどれだけいんの?」というツッコミはなしで。。。 QIcon MainWindow::getFavicon(QString url){ QEventLoop wait; QPixmap icon; QImage img;…

QUrlQueryとQUrlのメモ

Qt4.xでビルドが通っていたソースコードがQt5.1でなぜかビルドエラーを吐くようになった。調べてみると、Qt5からQUrlのメンバ関数だったaddQueryItemが廃止され変わりにQUrlQueryというクラスが導入されたとのこと。ということでそれについてのメモ QUrl tar…

libnotifyをQtで使う

今日はUbuntuユーザーにはお馴染みのNotify(?)をQtで表示してみようかと思います。(この記事で作ったプロジェクトは IzumiSy/libnotify-on-Qtです) Ubuntuユーザー馴染みのNotifyメッセージ 知っている方も多いと思いますが、QtにはQSystemTrayIconとい…

TaglibをQtでビルドして使う on Windows

【準備】Taglib 1.8CMake(cmake-gui)【STEP1】まずは cmake-gui を起動。あらかじめ Taglib はどっかに展開しておいておく。ソースコードの場所(Where is the source code)とバイナリの出力先(Where to build the binaries)の両方に、taglibのフォル…

undefined reference to _Unwind_Resume の解決

今日のエラーはこれ。なんかQtのバージョンが違うと現れるらしいくそだるいエラー。他のUbuntuマシンで作ったプロジェクトを自分のWindowsでビルドしようとしたところで遭遇。4.8.0 で 4.7.3 のプロジェクトをビルドするとこうなる。どうもQtのバージョンが…

QTreeViewのチェックボックスについてのメモ

QTreeViewのアイテムにチェックボックスを付ける処理でかなり悩んだのでメモQTreeViewのチェックボックス見た感じは、なんというか、簡単にできそうなものだがどこでチェックボックスを表示させるようにするかが今回のお悩みポイントである。まず最初にあっ…

QTreeViewについてのメモ

QTreeViewを使おうとしたときに、階層にアイテムを追加する処理の実装にかなりてこずったのでメモ QTreeViewの子アイテム達 そして上のコードはこちら void MainWindow::MakeMenuTree(void){ QList mt_childs; QStandardItem *mt_items, *item0, *item1; mt_…