ごらくらいふ

プログラミングしたりゲームしたり

権限のクリーンなURL, タイトルコピー系chrome拡張を作った。

はい。 や、職場で「ガバガバ権限まじでやめて」って言われたので「じゃーもう自作しますわ」ってなってやりました。 久しぶりに作って頭の体操になった感じする。 chrome.google.com 「このサイトを共有したい」そう思ったときにタイトルとリンクが一度にコ…

URLConnectionの通信をURLSessionに書き換えた

NSURLConnectionがiOS 9.0でDeprecatedになってから時間も経ち、もうiOS 12が出る時勢にNSURLSessionへの書き換え事案が発生した。 感想 NSURLConnectionDataDelegateとNSURLSessionDataDelegateの互換性はわりと確保されていて助かった。 なぜかcompletionH…

Rust Vec<T>を特定の長さで分割する

背景 gifとかzipとかパースしたいなあ+Rust触りたいなあ! ということで、まずはバイナリダンプから始めようとした。 以下のようなフォーマットで標準出力に吐き出したい。 50 4b 03 04 00 00 00 00 00 00 00 00 00 00 00 00 | PK.............. 一行出力す…

DeployGateのコマンドラインツールから Commands::Deploy Error: NoMethodError と怒られる件

環境 ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15] deploygate-cli v0.6.4 Xcode 9.4.1 現象 dg deployを実行すると、適切にBundle Identifierを指定しているにも関わらず、Bundle Identifierの入力を求められたのち、 下記のエラーが発生…

UITextFieldの内容をUserDefaultsに自動保存する。(+ 保存用のキーをInterfaceBuilderで設定する)

UITextFieldの入力値をUserDefaultsに保存する方法、VCべた書きIBInspectable+DelegateObject+IB接続customClass+IBInspectable <- 今ここ— yajamon (@Yajamon) 2018年6月18日 寄り道を経てカスタムクラスの最適解に降り立った気がする。 This UITextField i…

リファクタリング「リトル・レディ」 #1 画像ボタンをホバーで差し替える処理

約3年も前の話、「リトル・レディ」という作品をChromeで動くようにしたい! という思いのもと、勝手に復活開発日誌を始めた。 yajamon.hatenablog.com yajamon.hatenablog.com この開発は一気に進み、2年弱放置の後に完結宣言が行われた。 この記事は? …

Chromeの開発者ツールで選択した要素のHTMLElementを教えてくれるやつ、Ctrl+Shift+C がショートカットキーだった。

Chrome 67 で確認。 MacだとCmd+Shift+Cね。 URLとタイトルをひとまとめにクリップボードへ突っ込んでくれるChrome拡張がお亡くなりになったみたいで、 自作するしかないかー、そういえば空いてるショートカットキーはあるかななどと触ってたら動いて驚いた。

ぱぱっとかき捨てたいけどsyntax highlightとかエディタのサポートほしい…

/tmpに書けばよかったんや vim /tmp/draft.md

Zaif Apiを叩くツール zacli v0.1.0 をリリースした。

Rust製のZaif API Wrapperを作っているので、これをコマンドラインツールとして使用するCrateを作成した。 yajamon.hatenablog.com インストール方法 RustとCargoの準備が整っているなら、以下のコマンドでインストールできる。 cargo install zacli 使い方 …

手紙を書くつもりでとんだ夢物語を書いた

ご無沙汰しております。 お元気にお過ごしでしょうか。 この、春にかけての季節は活力を落としがちで、心身の健康を心配しております。 かくいう私もめっきりアニメを嗜むこともできず、衰えを感じる日々でして、身体の方から健康にしていこうと運動を試みて…

Rustでホームディレクトリのファイルを読み込みたい(ドキュメントに書いてあってうれしかった話)

これ。 use std::env; use std::path::{Path, PathBuf}; use std::fs::File; use std::io::prelude::*; fn open_file() { let mut path = env::home_dir().unwrap(); path.push("config.toml"); let mut file = File::open(path).unwrap(); let mut contents…

Zaif-api-rust v0.5.0をリリースした。trait From、エラーハンドリングに便利だった。

ついさっき、Rustで書いたzaif-apiのwrapper、v0.5.0をリリースした。 github.com 今回の改修はエラーハンドリングが目的で、「まず動く」で作っていたところを取り回しできるようにした。 活躍したのが標準ライブラリに入っているFrom<T>トレイトで、あるstruc</t>…

DLLってなんなのん

DLLとは ダイナミックリンクライブラリと読む。 動的なリンクで利用されるライブラリ。 対義語: 静的リンクライブラリの認識 リンクというものは、以下の認識でいる。 プログラムは、複数のコンパイルされたマシン語のプログラム片(以下、プログラム片)か…

Rustの話: traitの定義部分では、フィールドに干渉できない

前提 rustc 1.22.1 本題 traitを書く時、こういう書き方はできない。 trait Horizontal { // x:i64 というフィールドの存在を前提とする // x をカウントアップして、新しい値を返す fn count_up (&mut self) -> i64 { self.x += 1; self.x } } struct Point…

Grepのオプション no-filename(-h) を使う時

grepコマンドのオプションに--no-filename(-h)というものがある。 これは、マッチした内容をファイル名、Pathのプレフィックスを除いて結果を出力してくれる。 単一ファイルの検索や、標準入力からの検索時には、デフォルトで有効となっている。 用途 複数の…

Zaif Apiに対する知見

Zaif Api v1.1.1 http://techbureau-api-document.readthedocs.io/ja/latest/index.html Zaif APIを弄ってて得た覚え書き。 trade_api/active_ordersや、trade_api/cancel_orderのcurrency_pairは任意項目となっているが、入力しないと挙動が安定しない。 ほ…

Rustでzaif apiのwrapperを書いている

Rustでzaif apiのwrappreを書いたている。 reqwestでもりもり実装していて、なんか楽しい。 まだ借用チェッカーと戦ってるボーイなので、もりもりコピーして構造体たち皆所有権のあるデータ持つ、みたいな書き方してる。 まぁ使う分には引数に与えたデータを…

列挙型で error[E0507]: cannot move out of borrowed content に対処した

ムーブセマンティクスを忘れていた話。 Builderパターンで以下のように書いたところコンパイラにerror[E0507]: cannot move out of borrowed contentと怒られた。 enum Method { Get, Post, } struct Client { method: Method, } struct ClientBuilder { met…

ロッテリアのバーガーはレア物を店内で戴け

のびーるピザバーガー。これは良いものだった。もう食べちゃって写真すらないんだけれど、これは何かに書き残しておきたいと思ったのでセットドリンクを吸い上げながら執筆している。 注文して待つこと数分。座席に届いた限定バーガーは、身の丈が高い。モス…

ライフゲームってやつをDOM+VanillaJSで書いてみた

ライフゲーム - Wikipedia ライフゲームというものをつい最近知ったので、息抜きにガガガっと書いてみた。(DOM+VanillaJS製) 「まず動く」に重点を置いて書いて1.0.0のタグを切ったので、よければforkしてリファクタリングの練習材料にでもしてほしい。 gi…

vimをビルドするスクリプト書いたらただそれだけでも捗りがあった

自分好みの./configureオプションをどこかに残しておきたかっただけなんだけど、そのままmakeしてしまえと思ったのです。 makeがだばだばと状況を吐き出す姿は頼もしい… dotfiles/build-latest-vim at master · yajamon/dotfiles · GitHub 一応 2017-12-01現…

gitのコミットハッシュを見て、処理を続行するか判断する

結論 git rev-parseでコミットハッシュを取得できる。 たとえば、リモートで変更があるかどうかによって、処理を分岐させることができる。 git remote # origin # upstream git fetch --all --prune if [ $(git rev-parse master) = $(git rev-parse upstrea…

dateコマンドで日付からミリ秒までフルに取りたい!

date +"%F %T.%N" # 2017-11-09 12:35:31.678900889 %Fは%Y-%m-%dと同じで、%Tは%H:%M:%Sと同じ。 なので、「日付はスラッシュ区切り、時間はコロンなし」というフォーマットにするなら以下のように書く。 date +"%Y/%m/%d %H%M%S.%N" # 2017/11/09 123531.6…

DDDエリック本を読んでいる:RepositoryとFactoryの関係

DDDについてEric本を読んでいたところ、オブジェクトの生成やシリアライズについての指針が参考にできそうだったので、メモ。 Factoryはオブジェクトのライフサイクルにおける始まりを処理し、リポジトリは中期から終わりを管理するのを助ける。 リポジトリ…

Git Bash on Windowsでパス区切り文字をバックスラッシュに変換する(そしてExplorer.exeでカレントディレクトリを開く)

Git Bash on WindowsからExplorer.exeを呼び出す場合、パスの書式をWindowsに寄せておく必要がある。 結論 # aliases alias convertFullPathToWindowsFormat='sed -e "s/^\\/\\([a-zA-Z]\\)\\//\\1:\\\\/" | sed -e "s/\\//\\\\/g"' explorer /e,$(pwd | con…

sedを使って$PATHの中身を一行ずつ表示する

区切り文字:を半角スペースにしてforで回すという回り道をしてしまったので備忘。 \nでいいじゃんっていう。 echo $PATH | sed -e "s/:/\n/g"

動いているプロダクトが正しい。

本当はこの硬いプロダクトをもっちり弄ってもちもちにしてやりたい。 でもそんなコードは他の人にとっては要らない。なぜなら金にならないから。 機能として売り込むこともできなければ、きっとコスト削減にもならないのだから。 issueがなければ書いてはい…

雑記:PSVRが欲しい。(せめて定価で。)

PSVR、ほしい。もう発売からどれだけ立つよ。(2016-10-13発売。もう1年!) 新モデルも発売間近。各地の予約はとうに枯れ果ててる。 ソフトメーカーにはもう少し耐えていてほしい。売上が上がらないことに、イベントトラッキングがインストール指標ばかりで…

Logicoolの新作トラックボールマウス「MX ERGO」買った。このシリーズ好き過ぎるから最高以外の感想が出ない。

これ www.logicool.co.jp Logicool ロジクール MXTB1s bluetooth ワイヤレス トラックボール MX ERGO Windows,Mac対応 筋緊張20%軽減 8ボタン 高速充電式 2年間無償保証出版社/メーカー: ロジクール発売日: 2017/09/22メディア: Personal Computersこの商品…

開発用CentOS仮想マシンを育成中。

ことの発端は使ってるCentOS7に最新のGitを入れたいなーというところから。 gitだけにとどまらず、CentOSを使う以上最新版のプロダクトを導入するにはmakeを使わざるを得ない。 そして、往々にしてuninstallのことは考えられていない。 やるかは脇に置いてお…