Category tech.

なかなか見た目も可愛いのでエンクロージャーから作りなおすというほどでもない。吸音材(ホワイトキューオン)をいれるのと、回路定数だけ見なおすことにした。

アンプICは 8002A CK2T24 1N と刻印されている。http://www.shenzhensum.com/products/datasheet/8002%282.0W%29.pdf これとかかな

基板上の入力カップリングコンデンサは LCR メータで測ると 0.1μF。入力抵抗は 682 =6.8kΩ。 fc = 1/(2πRi*Ci) で、そんなわけで、入力は234Hzのハイパスフィルタを構成してしまっている。

フィードバック抵抗は 223 = 22kΩ。Av =2*(Rf/Ri) で、約6.5倍の電圧ゲイン。

入力定数のおかげで低音がかなりカットされている。これはこれで別に悪くはないけど、試しにもうちょっと低音まで出せるようにしてみた。やったことは 4.7μF を並列に繋げるだけ。チップコンなら単に積層してあげるだけなので難しくはない。そもそもこういうカップリングにセラミックコンデンサを使うのはよくない (DCバイアスでかなり容量が変化する) みたいだけど、あんまこだわらない。

  1. トップ
  2. tech
  3. ダイソー300円スピーカーのちょい改造

sdkmanager をダウンロードする

Android Studio のダウンロードページから「コマンドラインツールのみ」を選んでダウンロードしてくる。Android Studio が必要なら別に全部入りでもいい。

このコマンドラインツールには共通で使う最低限のものしか入ってない。

プラットフォームごとにツールをダウンロードする

REPO_OS_OVERRIDE を指定しつつダウンロードすると、動かしているプラットフォーム以外のバイナリも取得することができる。例えば Mac OS で Linux のバイナリが欲しいときなどに使える。

REPO_OS_OVERRIDE=linux ./sdkmanager --sdk_root=/tmp/linux --verbose  "build-tools;28.0.3"
  1. トップ
  2. tech
  3. Android SDK の各プラットフォームのビルドツールの一部を使いたいとき

現在の非表示ユーザの総数:

javascript:(async()=>{alert((await(await fetch("http://b.hatena.ne.jp/my/ignore.json")).json()).ignore_users.length) })()

http://b.hatena.ne.jp/api/my/ignore_users のほうが簡単(あたらしい)っぽい。上のAPIと数が違う。プライベートユーザを含まないとか?

↑ は405 で動かなくなっていたよくわからない。下のは動く

javascript:(async()=>{alert((await(await fetch("http://b.hatena.ne.jp/api/my/ignore_users?limit=10000")).json()).users.length)})()

選択範囲に含まれるブクマユーザを一括ブロック

(スターなどを選択する。いっぱいついてる短縮されたスターは手動で展開してから選択する)

javascript:(async(t,u,f,i)=>{if(!confirm("sure?\n"+t.join(", ")))return;u=await(await fetch("http://b.hatena.ne.jp/api/my/profile",{credentials:"same-origin"})).json();for(i of t){f=new FormData();f.append("username",i);f.append("rks",u.rks);await(await fetch(`http://b.hatena.ne.jp/${u.name}/api.ignore.json`,{method:"POST",body:f,credentials:"same-origin"})).json()}})(Array.from(window.getSelection().getRangeAt(0).cloneContents().querySelectorAll("a")).map(i=>(i.href.match('^https?://b.hatena.ne.jp/([^/]+)/$'),RegExp.$1)).filter(x=>x).filter((v,i,s)=>s.indexOf(v)===i));

スニペット

選択範囲内のブクマユーザー名取得

Array.from(window.getSelection().getRangeAt(0).cloneContents().querySelectorAll("a")).map(i=>(i.href.match('^https?://b.hatena.ne.jp/([^/]+)/$'), RegExp.$1)).filter(x=>x).filter((v,i,s)=>s.indexOf(v)===i)

ユーザー情報

const profile = await (await fetch("http://b.hatena.ne.jp/api/my/profile")).json();
  1. トップ
  2. tech
  3. はてブ用ブックマークレット