うならぼ

どうも。

はてなブログを(トップ以外)1カラムレイアウトに

CSS

邪魔だなーって思うことが時々あったので。とりあえずトップ以外に適用。 #main と #box2 の float を解除して、.hatena-module を float、ただし検索ボックスだけはプロフィールの下に…top決め打ちで移動。個別記事だけってのはhtmlタグに data-page="index…

Mastodon関連で作ったもの

6/13現在、まだ飽きてはいない。分散云々や独立性云々はそこまで関心ないけど、なかなか楽しいLTLがそこにあったので。 UserScript /aboutでローカルTLをチラ見するやつ (簡単な使い方) 似たようなもの、特に複数インスタンスのTLを同時に見れるやつとかあ…

Hatena::Let、もしくはES5世代のminifyツール(JavaScript::Squish)でTemplate Literalsを使う

ES2015のTemplate Literals、便利ですねー。プレースホルダの展開といい、改行を含められることといい、"‘をエスケープせずに済むことといい、UserScriptやブックマークレットではとても便利です。 そんな便利な Template Literals ですが、Hatena::Let でそ…

30行でimg要素をダミー画像に置き換える

ダミー画像ごときで外部サービスに依存するのもあれだし、書いた。jQuery使ってるけど使ってないようなもの(?)。メインはcanvasなのでIE9+で動くんじゃないかな。 <img src="" width="160" height="60" alt="バナー"> と書くとこうなる。 いつもながら似たようなことを考える人はいるわけで、細かく設定したい…

ISO-2022-JPとSJISとEUCJP(とUTF-8)をざっくり判別するアルゴリズム

C#

charsetの指定が適当なページがMobileSafariで文字化けするんで、XHR+FileReaderでエンコーディングを指定して読み込むブックマークレットを書いたんですが、自分で指定するのも面倒なので自動判定したいなと。当然既存のライブラリとかもあるんですが、どう…

Node.jsがC:hoge.txt形式の相対パスをサポートしてたけど扱いが難しいって話

C:hoge.txt は絶対パスでしょうか。答えはNOです。 これはCドライブのカレントディレクトリに対する相対パスを表します。絶対パスならドライブ文字、コロンに続いてバックスラッシュを付けなければなりません。 Naming Files, Paths, and Namespaces (Window…

スマホのブックマークレット登録にdataURIを使う

ブックマークレットをブックマークするときに、PCのブラウザだったらjavascript:なリンクもそのままブックマークできることが多いですが、スマホはそうではないです。 ないので、textareaで表示してコピペさせるとか <textarea>javascript:alert('JBP Yeah!')</textarea> 適当なUR…

HTML+CSSで宛名印刷

CSS

あけましておめでとうございます。 近頃のCSSは writing-mode: vertical-rl で縦書きができます。皆さんご存知の通り mm での位置指定は余裕ですし、 page-break-after で改ページもできます。宛名印刷できますね。 というわけで今年の年賀状の宛名面のメイ…

F#のIEventに求められる「標準のデリゲート型」の定義、もしくはdelegate制約の話

F#

F#からイベントを扱う際、標準のデリゲート型に該当する場合はIEventとして扱うことができます。標準のデリゲート型とはなんなのか、どう判定しているのかを調べてみました。

F#からFiddlerCoreを触る

F#

リセマラ用にキャッシュプロキシでも作ってみようかと思ったんだ。 結局そこまで高速化はできなくて、そもそもリセマラ面倒になったよね。 SAZの読み書きを実装してみる FiddlerではセッションをSAZという形式で保存することができます。FiddlerCoreでもこれ…

Exifのサムネイルの縦横比を修正して、デジカメできちんと表示されるように

SDカードに過去の写真が結構入っている*1のですが、RAWで撮ってるので結構場所をとります。原本をPCに転送したらJPEGに置き換えたい。 と思って適当にJPEGに変換して入れてみると、個別に表示することはできても一覧でサムネイルが表示されない。 いろいろ探…

緊急地震速報の高度利用者向けと一般向けと

昨日の緊急地震速報の誤報騒ぎの話です。まああまりにでかすぎて、冗談でなければ色々諦めそうな感じでしたが。 あれはなんだったのか 気象庁のPDFによると、 平成 28 年 8 月 1 日 17 時 09 分頃に、千葉県富津市付近を中心に最大震度7を予測した緊急地震…

Xamarin Studio Communityを試した

iPhone持ちのC#っ子としてはVS2015でXamarin.iOS試さねばという話の予定でしたが、 pic.twitter.com/FREm4oEhmz— = (@unarist) 2016年7月19日 SSDを容量大きいものに買い替えるまでVS2015はお預けになりました。予習としてMac上のXamarinStudioでやります。 …

Mono.Cecilだけでアセンブリをマージ

C#

VisualStudio起動するのが面倒でLINQPadばかり使っています。小物ツールもLINQPadで書いてQueriesの中に放り込んでますし、MyExtensionsも1000行を超えています。分割したい。 こうなってくるとLINQPadからexeやdllを書き出したくなるわけです。実際のところ…

async/awaitで一時停止可能なメソッドを作ってみる

C#

サンプルは「呼び出すたびに開始と再開を繰り返すコルーチン的なもの」です。ボタンのイベントハンドラに割り当てると楽しいかもしれません。 前にも EnumerableEx.Create を作るためにawaitableなクラスを作りましたが、その時と比べると随分シンプルです。…

BluetoothヘッドホンがA2DPで対応しているコーデックを調べる

手持ちのBluetoothヘッドホンがA2DPプロファイルで使えるコーデックのうち、どのコーデックに対応しているのかをWiresharkで調べたお話。

WPFでウィンドウの位置・サイズをOneWayバインドできない話

WindowのLeft/Top/Width/HeightにOneWayバインドしても反映されない話の原因と回避策を考えるの巻

GPTがBIOSから認識されなくなった?けどなんか直った

EFIブートのWindowsでパーティションいじったらBIOSにGPTディスクとして認識されなくなった、けどよくわからないままに復活した話。謎い。

現在のページをSJISで読み込みなおすブックマークレット

UTF8で読み込まれて化けたサイトをSJISで読み込みなおすブックマークレット。主にiOS用。

クエリ式にないLINQのメソッドをクエリ式の中で呼び出すハック

C#

クエリ式にないFirstやSumといったメソッドをクエリ式の中で書けるように、改造Selectメソッドを作るお話。

EnumerableEx.Createでusingを使いたい話

C#

Interactive ExtensionsのEnumerableEx.Createでusingを使うと、後始末がされない件をなんとかする話。なんとかなった。

ツイートをまとめてテキスト化するUserScript、もしくはjQuery風にDOMAPIを拡張した話

TwitterWebで見ているツイートをまとめてテキストにするUserScriptを書いた話と、そのためにjQuery風のprototype拡張を書いた話。

PsExecの動作にRPC用のポートは必要ない

リモートコンピュータ上で任意のコマンドを実行できるPsExecに、RPC用の135/tcpはいるのかって話。いらない。

ズンドコキヨシに移動するバッチファイル

バッチファイルでズン\ズン\ズン\ズン\ドコ\キ・ヨ・シ!に移動する話

iTunesのDownloadsディレクトリを別ドライブに移動する話

iTunesのDownloadsディレクトリを別ドライブに移動する話、もしくはAppのダウンロード処理をProcessMonitorで探った話。

C#でMustacheを使う

C#

様々な言語で実装されているテンプレートエンジンMustacheのC#実装であるNustacheを試してみました、というお話。

UserScript楽しいって話(作例つき)

GreaseMonkeyって昔流行ったあれでしょ?みたいな印象を持ってたんですが、あれおもしろいですね。便利ですね。 すっかりChrome使いなのでTampermonkeyで動作確認しています。 便利な道具 ヒアドキュメント UserScript界隈では <> という形式が使われていた…

mb_encode_mimeheader()のマニュアルを直してもらいました

PHP

PHPのお話。mb_encode_mimeheader(mb_convert_encoding($str, 'iso-2022-jp')) などの迷信を再び生み出さないように、マニュアルの記述についてバグ報告して直してもらいました。

StackOverflow DevDaysのお手伝いしてた

devdays.peatix.com 例のごとくお手伝いさんやってました。Ust配信の面倒見てたのは私なので、映像が乱れてたらまあ私のせいです。はい。 打ち上げで出た諸々とか。 準備 セッション情報をGoogleフォームで集めたけど、名前書いてもらうの忘れた 「準備を全…

Digest認証のパラメータを眺めた

「鯖からのnonceを含めたハッシュを投げて認証するやつでしょ?」 と思ったら意外と沢山パラメータがあったので、一通り読み解いてみた。 鯖→蔵:WWW-Authenticate ヘッダ // RFC2617 §3.5 より引用 HTTP/1.1 401 Unauthorized WWW-Authenticate: Digest rea…

JSで1..Nの総和を計算する、もしくは要素数Nの配列を作る

ask.fm Haskellで書いて短いのはともかく、JSのコードがなんとも。 探してみると Array.prototype.reduce() があった。ちゃんと要素のインデックスも渡してくれるので、これを順に足しこめばいける。 あとは要素数Nの配列をどうするか。Array(100) とすればu…

WebBrowser上のJSに配列、オブジェクト、関数を渡す

WebBrowserを通してC#とJSでやり取りする - うにゃうにゃ研究所unarist.hatenablog.com 昨日解決できなかった、配列やオブジェクトをJSに渡すという話をスタックオーバーフローにでも投げようと改めて調べていたら、解決しちゃったお話。 配列を作る 昨日の…

WebBrowserを通してC#とJSでやり取りする

C#

C#からはHtmlDocument.InvokeScriptでグローバル関数を呼び出せる。evalも呼べる。 でもってWebBrowser.ObjectForScriptingにComVisible(true)なオブジェクトを設定しておくと、publicなメンバーがJSからアクセス可能になる。 How to: Implement Two-Way Com…

Chromecastを買った

今更だろうかと思いつつも、ずっと気になっていたので買ってしまった。 Google Chromecast ( Wi-Fi経由 テレビ接続 ストリーミング / HDMI / 802.11b/g/n / 1080p ) GA3A00035A16出版社/メーカー: Googleメディア: Personal Computersこの商品を含むブログ (…

WM_QUERYENDSESSIONでどこまでやるべきか

シャットダウン中の保存確認でいいえを選択したら閉じてほしい話 - うにゃうにゃ研究所unarist.hatenablog.com その後色々読んでました。 ところで、WM_QUERYENDSESSIONというのは本来、Windowsを終了してもよいか、各アプリケーションにお伺いを立てるため…

シャットダウン中の保存確認でいいえを選択したら閉じてほしい話

保存せずにシャットダウン始めると「以下のアプリケーションがシャットダウンを妨げています」みたいな画面が出るじゃないですか。まあそれ保存しなくていいんだけど、強制終了するのもあれだし、とか思いながらシャットダウンをキャンセルするじゃないです…

input[type=date]で指定できる日付の上限

TL;DR お使いのinput[type=date]は27万年後まで使えます:)

CodeIgniterユーザーガイドのビルド環境を作る

CodeIgniter3.0がリリースされたものの、日本語版ユーザーガイドがまだ翻訳しきれていないようなので、読むついでに訳そうかなと。 NEKOGET/ci_user_guide_srcgithub.com 適当に環境構築 Pythonは以前3.4を入れたんですが、Sphinx入れてないので用意します。…

Named Function Expression が作るスコープ

ES6のclassがeslintのno-shadowルールに引っかかるという話を調べる過程で、eslintのスコープ解析に使われているescapeの動きを見ていたら面白いことに気づいた。ブラウザで動くデモが便利。 var hoge = function piyo(){}; これだけのコードでスコープが3つ…

shallow cloneが却って遅いケース

Git

皆さんLinuxカーネル(torvalds/linux)をcloneしてますか?私はしてません。 そういう時に便利といわれる git clone --depth=1 もとい shallow clone。確かにばかでかいリポジトリには便利です。 $ time git clone https://kernel.googlesource.com/pub/scm…

Rustはじめました

なにしようかなーと色々眺めてたら、@mattnさんがMessageBoxでこんにちはしてたので、これをやってみることに。Windowsっ子なので。 Big Sky :: 新言語rustでhello world use std; import std::io; #[abi = "stdcall"] native mod user32 { fn MessageBoxA(h…