定期健康診断
今年から数えで30ということで検便、腹部超音波、胃バリウムが増えた。まだ30じゃないつもりだったので心構えができてなかくてめんくらった。
これらのうち胃バリウムはやらなかった。胃腸炎で調子がよくないのがあるが、問診の話だと胃内視鏡の隔年実施になるかもよとのこと。バリウムよりも内視鏡のほうが良いので、さっさとそうなってほしい。
関連エントリー
- 上部内視鏡 そういえば健康診断。去年は理由をつけて上部の検査を飛ばしたんだけど、今年は断わる理由がなかったので諦めた。例によってデフォルトでバリウムなの...
- 健康診断2024 基本的に毎回 (嫌々だけど) バリウムじゃなくて胃カメラ・上部内視鏡を選択していて、かつ2021年からは鎮静剤も使うようにお願いしている。健...
- 健康診断2021 前年はバリウムだったけど(予約変更するのが面倒だったから)、今回は内視鏡にした。 上部内視鏡は経鼻・経口を鎮静剤なしでやったが、どっちにしろ...
- ジクロロイソシアヌル酸ナトリウム 「次亜塩素酸水をつくる」みたいな触れ込みでジクロロイソシアヌル酸ナトリウムが売っているが、やたら高いことが多い。「スパクリーン 60GS」と...
- 塩素臭のしない塩素系消毒剤 というのがあるらしいことを知った。ペルオキソ一硫酸水素カリウム+塩化ナトリウムで構成される薬剤らしい。一般向けには杏林製薬がルビスタという製...
codesign した Electron アプリがフリーズするのを修正
リファレンスマニュアル閲覧用の Chemr だけど、ベースの Electron を1.2.1にバージョンアップした。
しかし codesign するとあいかわらずフリーズするので改めて調べてみたら Console.app に以下のようなログがでていた。
sandboxd[131]: ([19968]) Chemr Helper(19968) deny mach-lookup org.chromium.Chromium.rohitfork.19966 sandboxd[131]: ([19973]) Chemr Helper(19973) deny mach-lookup org.chromium.Chromium.rohitfork.19966 sandboxd[131]: ([19974]) Chemr Helper(19974) deny mach-lookup org.chromium.Chromium.rohitfork.19966
ググってみると Electron broken on OS X in Apple Sandboxed apps (App Store) · Issue #3871 · electron/electron · GitHub あたりの問題のようだ。
Sign Your App のentitlements あたりに変更が必要になった模様。
長いので結論だけ書くと以下のようにすればなおった。electron-packager を使っている前提で
Team ID を取得する
Apple Developer Center にいくと、Membership Details に Team ID という項目がある。
あるいはコードサイン用に Key Chain に自分用の証明書を入れていると思うが、その証明書名の括弧の中の文字列がチームIDとなっている。
追加の Info.plist を作る
<plist version="1.0">
<dict>
<key>ElectronTeamID</key>
<string>$TEAM_ID$</string>
</dict>
</plist> こんな感じで Info.plist を作っておく、不完全なファイルに見えるが、残りは electron-packager が埋めるのでこれで良い。
こうした上で electron-packager に --extend-info=dev/Info.plist をつけて実行する。
entitlements ファイルの更新
parent.plist を以下のようにする。com.apple.security.network.client は今回の件とは関係なく、Chemr に必要なのでつけているだけで、必須ではない。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.application-groups</key>
<string>$TEAM_ID$.net.lowreal.Chemr</string>
</dict>
</plist> child.plist は以下のようにする
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.inherit</key>
<true/>
</dict>
</plist>
codesign
electron-packager にも codesign のオプションはあるが、使ってない。electron-osx-sign を直接呼びだしている。
./node_modules/.bin/electron-osx-sign --no-pre-auto-entitlements --version=1.2.0 "$APP_PATH" --entitlements=dev/parent.plist --entitlements-inherit=dev/child.plist --identity="$APP_KEY"
こんな感じで、上記 entitlements ファイルを指定して codesign させる。
なお electron-osx-sign の 0.4.0-beta4 以上だとこの entitlements の処理を自動でやってくれるみたいだが、なんとなく自動的にやるのが信用ならないのでこれはつかってない。
備考
使ったツールのバージョン
- "electron-osx-sign": "^0.4.0-beta4"
- "electron-prebuilt": "1.2.1"
- "electron-packager": "^7.0.3"
- electron-packager に渡す --version の値: 1.2.1 (新しいものじゃないと ElectronTeamID に対応してないので注意)
証明書なしでサンドボックスアプリとして実行したい
デバッグのため、とりあえず証明書なしでサンドボックスを有効にしたい場合、ad-hoc signing でも動かすことができた。これは identity に - を指定することでできる。
すなわち
./node_modules/.bin/electron-osx-sign --no-pre-auto-entitlements --platform=mas --version=1.2.0 "$APP_PATH" --entitlements=dev/parent.plist --entitlements-inherit=dev/child.plist --identity="-"
のようにする。おそらく Team ID は一致さえしていればなんでもいい(と思うが試してはいない)
備考 electron-osx-sign を verbose にする
環境変数 DEBUG を設定すると詳細なログがでるようになる。DEBUG='electron-osx-sign' これは debug という npm パッケージを使っているため。
関連エントリー
- Chemr を Mac App Store に出したぞ https://itunes.apple.com/us/app/chemr/id1051159776?l=ja&ls=1&mt=12 Ele...
- macOS の EOS Utility 「カメラとUSB接続できませんでした」 どうあがいても接続できなくて困った。 どうやらなんか Google Chrome が USB デバイスをかたっぱしからオープンする挙動をして...
- Swift で Mac の ScriptingBridge を無理矢理つかう ちょいちょい「環境設定」→「セキュリティとプライバシー」→「アクセシビリティ」を開かせたいケースがあるが、openURL とかで Secur...
- Raspberry Pi で Chromium を起動してリモート操作 Chromium (Chrome の OSS版) を Raspberry Pi で Kiosk モード (全画面単一アプリケーションモード)...
- Starlet でプロセス名をわかりやすくしたい ps とかで表示されるプロセス名をわかりやすくしたいという話です。 Starman だと $0 に適当な値を入れてくれて、master なの...
✖
リファラを眺めていると Qiita:Team らしきものが稀にあるけど、https 強制にしてないのかな。もちろんアクセスしても404なので実害はほぼないと思うけど、URL にユーザIDが入っているので場合によっては誰が言及しているかはわかることがある。
と思ったけどリファラがそもそも https だった。Referrer Policy で意図的に送ってるのかな。なんの意図かは謎だけど
関連エントリー
- Applebot アクセスログを見ていたら Applebot なるものからのアクセスがあった。 https://support.apple.com/ja-jp...
- Mac で VoiceOver が起動しているかどうかを判定する方法 / または Google Chrome を強制的にアクセシビリティ有効にする方法 自分のアプリケーション (AXApplication ) の AXEnhancedUserInterface (bool) を調べて、1 が...
- カメラごとの最大絞り値や手ぶれを許容できるシャッタースピード カメラごとのセンサーサイズとピクセル数を入力して、手ぶれを抑えこめるシャッタースピードの限界や、回折ボケが発生しはじめるF値などを求めるペラ...
- mDNS と IPv6 とアクセス制限 デフォルトでプライベートIPアドレスを許可するようなLAN内向けのアプリケーションがあったりする。つまり192.168.0.13 とかでアク...
- ユーザーが増えても嬉しくない ユーザーが増えると嬉しいものだ!というのはわかるし、そうなんだろうけど、自分に正直に考えてみると、自分はそのことがそれほど嬉しくないようだ。...
video/audio 要素の timeupdate イベントを高頻度にする
video/audio 要素には再生時間が変わったときに timeupdate イベントが発生します。これは Chrome においては最頻でも 250ms ごとにしか呼ばれません (500ms のときもある)。
もっと頻度をあげてイベントをとりたいと思うことがあったので以下のようにしました。
video.addEventListener('loadedmetadata', function (e) {
var time = video.currentTime;
requestAnimationFrame(function me () {
if (time !== video.currentTime) {
time = video.currentTime;
video.dispatchEvent(new CustomEvent("timeupdate"));
}
requestAnimationFrame(me);
});
});
video.addEventListener('timeupdate', function (e) {
console.log(video.currentTime);
}); requestAnimationFrame で定期的に currentTime を監視して timeupdate を自力で発火させるアプローチです。
元の timeupdate イベントも一応受けとっています。というのも requestAnimationFrame はタブがバックグラウンドにいった場合などに呼ばれる頻度がとても落ちることがあるので、本来のイベントも受けて保険としています。そして「やっぱ高頻度じゃなくてもいいや」となっても該当部分をコメントアウトするだけですみます。
関連エントリー
- UVC (USB Video Class) のプロトコルと勘所 手元にある UVC デバイスの構成を dot で書きだして graphviz してみたのがこれ。イメージしやすいかな? https://ww...
- AngularJS の ngResource を既存APIの仕様にあわせる AngularJS には ngResource という拡張があって、サーバに対する API 経由の CRUD 的操作を JavaScript...
- Spring MVC で @Async と @RequestScope を共存させるには? @Async と @RequestScope を同時につかうとどうなるか @RequestScope、これは @Scope(value = ...
- LAN 内の mDNS に応答するホストを列挙したい PTR _services._dns-sd._udp.local. A/AAAA [ソースアドレス].in-addr.arpa. をやりたい...
- node.js で git の blob sha1 を求める github の API とかに出てくる "sha" は git 的な sha1 で、ファイルの内容のみからとった sha1 ではない。なん...
✖
Ubuntu 16.04 LTS にしようと思ったが、前バージョンのLTS (14.04) から上げるには 16.04.1 (本リリースから3ヶ月後にリリース) を待たないといけないらしい。
リリーススケジュールによると7月21日にリリース予定。まだちょっと早かった。
do-release-upgrade に引数を指定すれば入れれることは入れれるみたいですが、地雷を踏みたくないためにLTSを使ってるのでそういうことはしません。
関連エントリー
- prometheus + grafana のセットアップ (Ubuntu 16.04.4 LTS) メトリクスの可視化をもうちょっとやりたくて prometheus と grafana をセットアップした。監視は mackerel でやって...
- Ubuntu 18.04 LTS に Tensorflow GPU nvidia driver のインストールまわりで Ubuntu が起動しなくなったり操作不能になったりする。OS 再インストールを何度かし...
- Canon のドキュメントスキャナーの OS X El Capitan 対応 以下、試さないで書きましたが、試してみたら全くダメでした。OS 10.11 対応とはなんだったのか? マジでムカついてます…… Captur...
- Ubuntu 16.4 LTS クリーンインストールして引越 カスタムOSインストールガイド - Ubuntu 16.04 – さくらのサポート情報 を見ながらインストールまでやる。 旧サーバと同じホス...
- 最近の Raspberry Pi はデフォルトで ssh が無効 Raspbian 2016-11-25 のリリースから ssh がデフォルトで無効になっていて port 22: Connection re...
さくらのVPSを Mondo Rescue でバックアップして Virtual Box に再現
現在は Ubuntu 12.04 を使っております。12.04 にするときは 10.04 のサポートが終わってからやるというひどさでしたが、さすがにダメだろうということで最近早めのアップデートを考えてます。
ただ、ディストリビューションアップデートが不安なので Virtual Box で予行練習をすることにしました。
VPS 環境を Mondo Rescue でバックアップ
Mondo Rescue のインストール
各ディストリビューションごとにパッケージが提供されているので、これを使ってみます。トップページに最近のリリースファイルがいっぱい列挙されていますが、これは無視して Downloads ページに行き、ftp サーバを直接見ます。
該当するディトリビューション・バージョンのftpディレクトリを開いて、必要ファイルをダウンロードします。Ubuntu の場合、sources.list が提供されているようなので、これを使います。
wget ftp://ftp.mondorescue.org/ubuntu/12.04/mondorescue.sources.list sudo mv mondorescue.sources.list /etc/apt/sources.list.d/ sudo apt-get update sudo apt-get install mindi mindi-busybox mondo
これでインストールできました。なお mindi とはブータブルディスク作成用の Linux mini-distribution とのこと。mondo はミュータントタートルズ由来みたいなことが書いてありますがよくわからず。
バックアップの実行
バックアップしたのち、ローカルに転送して捨てるので、/tmp/backup へバックアップファイルを保存することとします
mkdir /tmp/backup sudo mondoarchive -O -i -N -d /tmp/backup -s 30g -O バックアップを作成 -i ISOイメージとする -N 全てのネットワークファイルシステムを無視する -d バックアップの保存先を /tmp/backup に -s 30g バックアップファイルの分割単位を30GBに(実質分割しない)
/tmp 以下はデフォルトで非バックアップ対象なので、-E オプションはつけていません。なお -d の指定ディレクトリは前もって作っておく必要があります。
手元の環境だと約1時間かかりました。(バックアップ対象約8GB メモリ1GB HDD 出力 mondorescue-1.iso 3.3G)
このファイルを scp で手元に転送しておきます。
Virtual Box に環境を復元してみる
先にいくつかハマったポイントを列挙しておきます
- パーティション番号の最大が4までなので5を使っているとエラる
- F12 を押すと終了するので注意
- mkinitrd コマンドが存在しなくて再生成できなかった。が起動した。
- Ubuntu は mkinitramfs らしい
- mkinitramfs というか update-initramfs -u が一番簡単っぽい
- インストール直後にネットワークインターフェイスの設定をやること
- /etc/network/interfaces を編集
- /etc/hosts に hostname に関するエントリを追加しておくこと (後述)
手順
Virtual Box 上で「新規仮想マシン」
- 「Linux」「Ubuntu (64bit)」 で「仮想ハードディスクを作成する」で「作成」
- 仮想ハードディスクはバックアップしたファイルが納まるなら任意
- ファイルコピーなのでパーティションサイズをあわせる必要はない
仮想マシン設定
「仮想マシン設定ウィンドウ」→「ストレージ」で、「コントローラ: IDE」にある光学ドライブに mondorescue-1.iso を指定
「ネットワーク」で「ブリッジアダプター」にしておく。ホストコンピュータと同じLANに参加するようになる。
起動
nuke か interactive で起動します。違う環境への復元なので nuke でも結局 interactive になります。
さくらのVPSでは /dev/vda1 (ext4) と/dev/vda5 (swap) ですが、Virtual Box だと /dev/sda なので、mountlist を適当に編集します。/dev/sda1 と /dev/sda2 に変えました。
このあとパーティションのフォーマット・ディスクコピーなどがあります。
コピーが終わったあと
- 「Initialize boot loader?」→ YES
- 「You will now be able to re-generate your initrd.」→ YES
- chroot / された状態でシェルが開くなので cd /boot にいって initramfs
- 今回はやらなかった
- 「Did you change the mountlist or cloned the system?」→ YES
- 「Boot device」を /dev/sda に
- 「You will now edit fstab, mtab, device.map and menu.lst/grub.cfg in order to fix grub install」と言われて nano が起動するので vda を検索 (C-w) して置換していく
- fstab が UUID ベースで書かれていたのを /dev/sda1 と /dev/sda2 に
これでインストールが終わり、シェルが開くので、
- /etc/network/interfaces を編集
- /etc/hosts に hostname に関するエントリがあることを確認。ないなら増やしとく
ディスクまわりの変更は Virtual Box だから必要なので、さくらのVPS間の復元では必要ないはず…
Ubuntu のネットワークまわり
/etc/init/failsafe.conf を編集しといたほうがいい
Waiting for network configuration… Waiting up to 60more seconds for network configuration…
で2分も待たされて大変うざい。
sudo するとハングする
sudo すると Password 入力がはじまる前にハングする。が、実際はハングしてないので3分ぐらい待てば起動する。
hostname があってないとハングするらしい。どうしよもないのでリカバリモードにでやるか、/etc/hosts に 127.0.0.1 hostname を追加する。
関連エントリー
- さくらのVPSにMondo Rescueのリストアができなかった (未解決) 前々から準備していて、いよいよ新しく契約を追加してリストアするぞ! と思ったらできませんでしたので顛末を記す。敗戦は惨め。 Ubuntu 1...
- さくらのVPSが起動しなくなって grub 再インストール さくらのVPS ディスク拡張手順(標準OS Ubuntu18.04) を実行しようと思ってごにょごにょしていたら MBR を壊してしまった。...
- 一度セットアップした Raspberry Pi を使いまわす Raspbian を書きこんで適当にセットアップする NOOBS は使わないこと。 SDカードのコピー dd で普通にもってくる。 $ di...
- Ubuntu 18.04 LTS に Tensorflow GPU nvidia driver のインストールまわりで Ubuntu が起動しなくなったり操作不能になったりする。OS 再インストールを何度かし...
- Raspberry Pi がきたのでセットアップして I2C デバイスを読むところまで Raspberry Pi だ! ππだ!! Raspberry Pi は約5000円ぐらいで買うことができるカードサイズの Linux パソ...
ガールズ&パンツァー 劇場版を見た
見始めたのが最近だったので、もはやブルーレイも出てるというのに…という感じだけど、立川シネマシティで爆音上映というのを見てきた。
特に爆音のを見たかったわけじゃないけど、そもそも他の映画館の上演はのきなみ終わってたのでここしかなかった。が、結果的には爆音とても良かった。低音だけ爆音になってるみたいで、そんなに違和感なく見れた。
内容的には最高だった……
で結局ブルーレイ版を買ってしまった。
関連エントリー
- ガールズ&パンツァーをプライムビデオで見た めっちゃ面白かった。 艦コレみたいなノリのアニメなのだと思って見ていなかったけど、とりあえず1話見てみるかと思った結果そういったものノリのも...
- Notepad-8FX の運用方法メモ そんなに複雑なことをしたいわけではないつもりだが、結果的に若干複雑なので記録しておく。 Notepad-8FX のわかりにくいところ このミ...
- DELL U2713H 使用感とディスプレイアーム 届いてから、一通り使いはじめることができたので、感想を記録しておく。やはりケーブルの処理が難しい。ケーブル自体になにか工夫がいりそう。 DE...
- ピアノ 子どもが音楽教室行きはじめるので (まだリズム感とかしかやらないみたいだが)、ピアノを買って自分も練習してみるぞという機運。まだ買ってもいな...
- 熱海 1泊で熱海にいった。 来宮神社 今まで見た神社のなかで一番演出が近代的な感じだった。全体的にやたらセンスよくデザインされているというかなんと...
度入りの眼鏡を作ってみたぞ
生活にとても支障があるとは言えないが、ここ2年ぐらいで急激に遠くが見えにくくなってきたので、どうしても気になっていた。
「いきなり見えなくなってきた」と思うパターン、大学1年生のときに一度あり、眼科いってみたら「全然問題ない」と塩対応されたり、去年も健康診断で0.2ぐらいの判定になって眼科にいったが「矯正するほどではない」となったりで結局矯正してなかったが、今年の健康診断だと両目0.5ぐらいで、やっぱ気になるので一度矯正してみることにした。
店舗で度数測った結果、両眼 -0.25 と、実際問題としてはほとんど度は入ってない。加えて左目だけ乱視矯正がさらに入ってる。これでもかけてみると全然違くて、1080p→4K ぐらいの感覚はある……
かなり弱い矯正なので疲れるなら今後かけないかもしれない。
関連エントリー
- 健康診断2024 基本的に毎回 (嫌々だけど) バリウムじゃなくて胃カメラ・上部内視鏡を選択していて、かつ2021年からは鎮静剤も使うようにお願いしている。健...
- 健康診断2021 前年はバリウムだったけど(予約変更するのが面倒だったから)、今回は内視鏡にした。 上部内視鏡は経鼻・経口を鎮静剤なしでやったが、どっちにしろ...
- 期外収縮不整脈で24時間心電図 健康診断で単発がひっかかってしまった。循環器内科で受けたので「(期外収縮は) よくあるし、たぶん大丈夫だろうけど、100人に1人ぐらいは問題...
- 子供の入院 発熱があって自宅で寝ている間に2回短い痙攣のような症状(おさまってすぐ泣いたため、お医者さんの話ではこれは悪寒戦慄ではないかとのこと) 朝方...
- 3Dプリンタ Voron 2.4 を組み立てた CoreXY な駆動方式の3Dプリンタには元々興味があって、とはいえ現状の Original Prusa i3 2.5 でそれほど問題もなか...
夢見が悪すぎる
ガルパン良かったので良い夢見れそうだなと思って寝たが、結局悪夢であった。同僚に罵倒されまくる夢だった。
✖
体調不良とかで結構有給使っている気がしていたが、まだ一昨年の有給を消費していた。しかしジリジリと減ってる気がする……
QuietComfort の Bluetooth 化
Bose QuietComfort 35 wireless headphones ワイヤレスノイズキャンセリングヘッドホン ブラック cho45
QuietComfort 35 (Bluetooth 対応の QC) が発表されたりしていますが、自分のところの QuietComfort 15 はまだまだ現役で使えそうです。イヤーパッドを変えたりして4年半ほど使っています。
ただ、一度断線して修理した関係で、ケーブルが絶妙な長さになっており、ヘッドフォンとスマフォを接続した状態で、スマフォをズボンのポケットに入れられないという事態になっていました。この状態で1〜2年ぐらい使ってましたが、ちょっと考えて Bluetooth 化しました。
QC15 の Bluetooth 化
Blueooth 化といっても、レシーバを買って、ヘッドフォンのバンド部分にうまいことくくりつけるだけです。レシーバは上記のものを買いました。
バンドへの固定は結束バンドでやっています。ケーブルの余りを適当に処理して接続すれば完成です。
感想
結果的にこれはとても良かったです。QCを使うのはほぼ通勤時だけですが、ケーブルがあったときは、電車などで他人にひっかからないように結構気を使っていました。この気苦労が消滅するだけで大変快適です。
ただし、電池が二重管理になるのが嫌なところです。QC15 は単4電池1本ですがエネループを使っています、Bluetooth レシーバは内蔵リチウムイオン電池を micro USB 端子経由で充電するタイプです。
関連エントリー
- SONY のノイズキャンセリングヘッドフォン WH-1000XM2 を買った これまでは、2012年1月に買ったBOSE QuietComfort 15を使っていた。途中からコードが煩わしくなりBluetooth化した...
- 自作アンテナアナライザーのBluetooth化とアプリケーション 簡単かつ安く高精度なアンテナアナライザーを自作したい | tech - 氾濫原 簡単かつ安く高精度なアンテナアナライザーを自作したい (2)...
- Anker Eufy Smart Scale P2 Pro を買った Anker Eufy (ユーフィ) Smart Scale P2 Pro(体重体組成計)【アプリ対応 / Fitbit連携 / 体脂肪率 /...
- 中華 NanoVNA の Bluetooth シリアル化を試す NanoVNA は USB-CDC による通信をサポートしていますが、ここが無線化すると(特にアンテナ調整の場合は)便利なので、コンセプトを...
- Generator は iterator であり、iterable でもある 表題の通りですが、Generator にはいずれの protocol も実装されています。気になるのは iterable の挙動ですが、どう...
ガルパンの Blu-ray は DTS Headphone:X で聞くとよい
最高すぎて見まくってるわけですが「やっぱ劇場と違って迫力がないな〜」という感じでした。しかし、ちょっと試したらヘッドフォンで 5.1ch を再現する DTS Headphone:X が思いのほか良かったです。
音響設定
フツーの家庭だとスピーカーで迫力を求めるのは無理なのでヘッドフォンが最大クオリティになると思います。
このソフトだとデフォルトだと 5.1ch で再生されますが、これをヘッドフォンで聞くと、かなりあっさりしてしまいます。これはとりあえず音声設定で 2ch ステレオを選択してみると音量バランスはマシにはなります。
ただ、これでもものたりなさがかなりあります。
5.1ch DTS Headphone:X
ガルパン Blu-ray は 5.1ch の DTS Headphone:X に対応していて、そっちにしたほうが圧倒的に良いことに気付きました。一瞬設定がどこにあるのか謎ですが ch 切替えではなく「音声特典」のメニューのほうにあります。
PS4 は 5.1ch の DTS Headphone:X には対応しているようで、特に何もせずとも HDMI 経由のテレビのヘッドフォン端子から出せました。
そんな効果ないだろと思って試してみましたが、期待よりかなり良くてびっくりしたのでオススメです。
関連エントリー
- Zepher のデバイスツリーまわりの実装の覚書 使ったことなかったけど読んでいておもしろかったので要点だけメモ デバイスツリーファイルの仕様 https://www.devicetree....
- Notepad-8FX の運用方法メモ そんなに複雑なことをしたいわけではないつもりだが、結果的に若干複雑なので記録しておく。 Notepad-8FX のわかりにくいところ このミ...
- 長波JJY・短波JJY (標準電波) をWebAudioで聞く 長波JJY (40kHz/60kHz) https://play-morse.lowreal.net/jjy.html 現行 JJY 15分...
- QuietComfort の Bluetooth 化 Bose QuietComfort 35 wireless headphones ワイヤレスノイズキャンセリングヘッドホン ブラック cho...
- 電子ピアノ練習用のミキサー 要件 PCで再生させた曲と電子ピアノの音をミックスしたい 出力を3人で同時にヘッドフォンで聞きたい この際、ヘッドフォンの種類が違う場合でも...
Google Photo が自動的に場所を推定して表示するようになった
こんな感じで、Google Photo 上で場所が推定されて表示されるようになっていることに気付きました。
メニューマークをクリックすると明示的に削除もできます。また「撮影場所(推定)」についてのヘルプにリンクがあって以下のように書かれています。
「撮影場所(推定)」とはどのようなものですか?
Google フォトでは、ご利用の Google アカウントに保存されている Google ロケーション履歴などの情報をもとに、撮影場所を推定することがあります。
「ロケーション履歴など」と書いてありますが、ロケーション履歴以外はなんでしょうね。被写体認識も入ってるんですかね。自分は常時ロケーション履歴を有効にしているので、ロケーション履歴がない場合の推定状況については調べられませんでした。
「これどこで撮ったかな〜」と思いつつロケーション履歴を辿るほどでもないなということは多々あったので結構嬉しい気がします。
関連エントリー
- 複数デバイス時のロケーション履歴 同一アカウントでログインしているタブレットを家に置いたまま家を出たりすると、ロケーション履歴が乱れてしまう。ロケーション履歴は複数台ログイン...
- Google+ の画像自動バックアップで、一部画像がアップロードされないとき Google+ の画像自動バックアップは、デフォルトだとカメラで撮影されたものしかアップロードされない。(いつのまにかこういう仕様になってた...
- ✖ Google Keep が使用に耐えないぐらい重かったり、挙動不審だったりする。 ブラウザ版で WebGL 停止の警告がでたりする ブラウザ...
- Mac で VoiceOver が起動しているかどうかを判定する方法 / または Google Chrome を強制的にアクセシビリティ有効にする方法 自分のアプリケーション (AXApplication ) の AXEnhancedUserInterface (bool) を調べて、1 が...
- Manifest for a web application https://w3c.github.io/manifest/ https://developers.google.com/web/upda...
Gist に置いた JavaScript のベンチマークをとる
デモ
使いかた
gist に以下の命名規則でファイルを作ります
- *.js にベンチマーク対象コード
- *.js の拡張子をhtml に書いたものに実行するページのHTML
- または common.html に共通の HTML
そして gist の URL をコピーして、このページで実行させます。
挙動
空関数呼び出しも含め、50msごとにそれぞれのコードをできるだけ実行します。これを1フェーズとして、100回実行します。なので、終わるまで対象テストケース×5秒かかります。
コードは対応するHTMLをロードした iframe 内で実行されます。これは文字列から iframe.contentWindow.Function のインスタンスを作ることで実現しています。
Rate limit 対策
Gist から API 経由でデータをとってきていますが、Github の API は Rate limit がキツいです。
一応、localStorage にキャッシュを持っており、gist 側を更新しない限りは 304 を返してもらうようにしています。304 の場合はAPIアクセスしてもカウントされません。
これでも、gist を更新してベンチマークを繰替えすと意味がないので、Personal Access Token による上限拡大も雑に実装してあります。
経緯
jsperf.com が動いていなくて不便ですね。不便すぎるので5年前ぐらいに自分で書いたコードをひっぱりだしてきて、書きなおしたという感じです。
jsperf と比べ、結果を集約したりする機能はありませんが、クライアントサイドのみで動くので気楽なツールです。
関連エントリー
- ブログシステムの HTML 生成を効率化 そろそろやることなくなったので minify などをやることにしました。 ただ、ブログシステムの出力の最後ほうでページごとに全体を mini...
- Chrome App をテストする Chrome App という、Chrome Extension の延長上にあるスタンドアロンアプリを作れる仕組みがある。これは、しばしば出て...
- サーバーサイド MathJax で数式表示を高速化する このサイトでは数式を本文中に TeX 形式で書いて MathJax で処理させています。↓ こういうやつです。ベクターなので昨今の高解像度事...
- JavaScript の必要ないソーシャルボタン JSなしのソーシャルボタンというのを作ってみました。このサイトの各エントリ下部に実装されているものです。 動機 各サービス、JS を読みこん...
- Rust + wasm の環境が wasm_bindgen でめっちゃ簡単になっていた https://developer.mozilla.org/ja/docs/WebAssembly/Rust_to_wasm に書いてある通...
スマフォのXHRはなぜ異常に時間がかかるのか?
通称のページロードにそれほど時間がかからなくても、XHRでは異常な時間がかかることが良くある。
考えられる原因があまり思いつかない。アップロード帯域を絞られすぎている? XHRではペイロードが大きくなるケースが多くてそう感じる?
textarea.value は代入すると値が変わる
以下のような挙動をする。
var textarea = document.createElement('textarea');
textarea.value = "\r\n";
encodeURIComponent(textarea.value);
//=> "%0A" この挙動、現在のブラウザではバグではなくて、仕様である。どういうことかというと、HTML Standard で明言されている
For historical reasons, the element's value is normalised in three different ways for three different purposes. The raw value is the value as it was originally set. It is not normalized. The API value is the value used in the value IDL attribute. It is normalised so that line breaks use U+000A LINE FEED (LF) characters. Finally, there is the value, as used in form submission and other processing models in this specification. It is normalised so that line breaks use U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pairs, and in addition, if necessary given the element's wrap attribute, additional line breaks are inserted to wrap the text at the given width.
value プロパティ代入動作 (Getter) は raw value の代入として働き、取得動作 (Setter) は API value の取得して働くという非対称的な挙動を示す。そして raw value を取得する方法はない。
関連エントリー
- ES2015 の iterable/iterator/generator による無限 FizzBuzz (オブジェクト指向編) ES2015 の iterable/iterator/generator による無限 FizzBuzz | tech - 氾濫原 に続いて、...
- ES2015 の iterable/iterator/generator による無限 FizzBuzz ES2015 の iterable protocol / iterator protocol だとそこそこ自然に無限リストを作れるわけなので...
- Spring MVC で @Async と @RequestScope を共存させるには? @Async と @RequestScope を同時につかうとどうなるか @RequestScope、これは @Scope(value = ...
- Sierra にしたらリモートの日本語が化けるようになった 以下のような環境で日本語が化けるようになった。 macOS Sierra リモートで screen を使っている ssh host -t s...
- MCD-ST Liberty SW License Agreement V2 はフリーなライセンスか? STM32CubeMX でジェネレートされるコードは MCD-ST Liberty SW License Agreement V2 というラ...
✖
他人が承認される様子を見せ付けられるのは大変つらいので、そういうもの一切を遠ざけたい。
たとえ見てしまっても「無視する」のがベストだが、今のところそれはかなり難しく感じる。何かを思っても、それに伴なう行動をしないということはなんとかできることが多いが、そもそも自動的に嫌な気分になることは止めることができない。
他人が承認されているのを見ると、つまりそれは他人が客観的に評価されているという場面になるわけだけど、自動的に「では自分は客観的にどう評価できるか」と考えてしまい、そして自分は自分自身の客観的評価は著しく低い (というか端的にいえばバカにされている〜バカだと思われている、と思っている) ので、自動的に嫌な気分が発生する。
良い気分というのは、自分から探さないと絶対に沸いてこない。悪い気分というのは常にあって、さらにこれは自動的に強化される。
関連エントリー
- ✖ 相変らずバカにされているという感じを毎日感じている。何かしら製作しているときはそれを遠ざけることができるが、部品待ちでちょっとやることがない...
- ✖ ほんとにイライラすることばかりが起きる。なんでこんなめにあうのか。本当の意味がわからない。 いくら自分から面白いことを探そうとしても、ひたす...
- ✖ ほんと保育園関連のアレコレが嫌すぎて嫌すぎてどうしようもない…… なんとかしてくれ……… こんな無限に時間がないのにクソどうでもいい(子供の...
- ✖ 例えば、他人を誰とは言わず非難するようなポストがあると、だいたいどんな内容でも自分が言われているように思えて嫌な気分になる。特に正論だとどう...
- ✖ 何をするにせよ出てきて、自分をバカにしてくる鬱陶しいドヤ顔というのがあって、それを消滅させたい。 何をするにせよ頭にイメージとして自動的に浮...
SQLite の WITHOUT ROWID の効果測定
SQLite で「PRIMARY KEY」を《真のプライマリキー》とするには | tech - 氾濫原 の続きです。
以下のような簡単なベンチマークスクリプトを使って差を測ってみました。
Linux の VPS と OS X とでやってみましたが、だいたいこの例では5%ぐらいの差がつくようでした。
#!/usr/bin/env perl
use v5.14;
use utf8;
use DBI;
use DBD::SQLite;
use Benchmark qw(:all) ;
use String::Random qw(random_regex random_string);
sub dbh {
my ($db) = @_;
my $dbh = DBI->connect('dbi:SQLite:dbname=', "", "", {
sqlite_allow_multiple_statements => 1,
RaiseError => 1,
sqlite_see_if_its_a_number => 1,
sqlite_unicode => 1,
});
}
say "DBI::VERSION: $DBI::VERSION";
say "DBD::SQLite::VERSION: $DBD::SQLite::VERSION";
say "SQLite version: ". dbh()->{sqlite_version};
my $dbh_rowid = dbh();
$dbh_rowid->do(q{
CREATE TABLE tfidf (
`id` INTEGER PRIMARY KEY,
`term` TEXT NOT NULL,
`entry_id` INTEGER NOT NULL,
`term_count` INTEGER NOT NULL DEFAULT 0,
`tfidf` FLOAT NOT NULL DEFAULT 0,
`tfidf_n` FLOAT NOT NULL DEFAULT 0
);
CREATE UNIQUE INDEX index_tf_term ON tfidf (`term`, `entry_id`);
CREATE INDEX index_tf_entry_id_tfidf_n ON tfidf (`entry_id`, `tfidf_n`);
});
my $dbh_without_rowid = dbh();
$dbh_without_rowid->do(q{
CREATE TABLE tfidf (
`term` TEXT NOT NULL,
`entry_id` INTEGER NOT NULL,
`term_count` INTEGER NOT NULL DEFAULT 0,
`tfidf` FLOAT NOT NULL DEFAULT 0,
`tfidf_n` FLOAT NOT NULL DEFAULT 0,
PRIMARY KEY (`term`, `entry_id`)
) WITHOUT ROWID;
CREATE INDEX index_tf_entry_id_tfidf_n ON tfidf (`entry_id`, `tfidf_n`);
});
say "insert";
{
my $i = 0;
cmpthese(-1, {
'with rowid' => sub {
$dbh_rowid->prepare_cached(q{
INSERT INTO tfidf (`term`, `entry_id`, `term_count`) VALUES (?, ?, ?);
})->execute(random_regex('[a-z]{2,10}'), $i++, 1);
},
'without rowid' => sub {
$dbh_without_rowid->prepare_cached(q{
INSERT INTO tfidf (`term`, `entry_id`, `term_count`) VALUES (?, ?, ?);
})->execute(random_regex('[a-z]{2,10}'), $i++, 1);
},
});
};
say "select";
{
my $i = 0;
cmpthese(-1, {
'with rowid' => sub {
$dbh_rowid->selectall_arrayref(q{
SELECT * FROM tfidf WHERE `term` = ? AND `entry_id` = ?
}, { Slice => {} }, random_regex('[a-z]{2,10}'), $i++);
},
'without rowid' => sub {
$dbh_without_rowid->selectall_arrayref(q{
SELECT * FROM tfidf WHERE `term` = ? AND `entry_id` = ?
}, { Slice => {} }, random_regex('[a-z]{2,10}'), $i++);
},
});
}
関連エントリー
- TF-IDFとコサイン類似度による類似エントリー機能の実装 TF-IDFによる類似エントリー機能の実装をしてみました。ほぼSQLiteですませるような構成です。 やっていることの概要 エントリーのHT...
- 関連画像を表示 libpuzzle の Perl binding である Image::Libpuzzle を使って関連画像を実装してみた。pHash や ...
- SQLite で LOG や SQRT を使うには SQLite にはかなり基本的な算術演算関数しかない。追加で何かしらやるためには拡張 (Run-Time Loadable Extensio...
- Lightroom のカタログを SQLite で読んで統計を出したりする .lrcat っていったい何なのか カタログファイルの実体である lrcat は SQLite の DB ファイルそのもの。sqlite3 ...
- ブログのキャッシュバックエンドの変更 今までは Cache::FileCache によるファイルシステムキャッシュにしていたけど、いくつか問題があって SQLite にかえた フ...
三者三葉
録画してなくて見てなかったけど、プライムビデオで見れた。6話ぐらいまで見たけど地味におもしろい。
最近の日常系のやつはちょっと雰囲気が変わってきてて、悪役ではないが良いとはいえない癖があると同時に高徳というキャラが多い。
ちょっと調べたら『未確認で進行形』と作者が同じだ……
未確認で進行形 Blu-ray BOX cho45
関連エントリー
- 未確認で進行形を最高と確認できるアマゾンプライムビデオ アマゾンプライムビデオがはじまったのはもちろん知ってはいましたが「PC で見れてもなぁ」と思ってました。PC で動画を見る習慣がないので結局...
- 勇者ヨシヒコの本放送に追いついた 勇者ヨシヒコと魔王の城【テレビ東京オンデマンド】 cho45 福田雄一 ★ 5.0 / 5.0 cho45 勇者ヨシヒコと悪霊の鍵【テレビ東...
- ガールズ&パンツァーをプライムビデオで見た めっちゃ面白かった。 艦コレみたいなノリのアニメなのだと思って見ていなかったけど、とりあえず1話見てみるかと思った結果そういったものノリのも...
- デジタル一眼レフ (EOS) をウェブカメラ的にとして使う スクリーンキャストとカメラの同時録画 の動画を撮ったときは Mac 内蔵のカメラを使ったので、自由にカメラを動かせず難儀した。ウェブカメラが...
- マイノリティ・リポート プライムビデオにあった字幕版のマイノリティ・リポートを見てしまった。超監視社会で、未来予知によって犯罪を犯す前に逮捕されるみたいな設定は好き...
アニメ
全部感想を書いていくのも大変なので、放映からn日以内に見ている、みたいな感じで書いたらどうか
今期のアニメだと
リアルタイム
なし
放映当日〜翌日
(ほぼ常に未試聴マークがないぐらい)
- Re:ゼロから始める異世界生活
- ネトゲの嫁は女の子じゃないと思った?
- 甲鉄城のカバネリ
一週間以内
(未試聴マークが溜まらない程度)
- ふらいんぐうぃっち
- 田中くんはいつもけだるげ
- くまみこ
- 坂本ですが?
それ以上
(気が向いたときに見る)
- 学戦都市アスタリスク 2nd SEASON
- あんハピ♪
- クロムクロ
- マクロスΔ
- ジョジョの奇妙な冒険 ダイヤモンドは砕けない
- ばくおん!!
関連エントリー
✖
文書校正ツールみたいなのを入れたいが、普段はてな記法で書いているので、対応させるのが面倒くさい。それと、コードとか、引用とかを無視したいとか思うわけだけど、かなり面倒くさい。そして、そういうのを対応しない限り、校正ツールのエラーが消えなくてかなり鬱陶しいので使う気が起きない。
✖
電車通勤がつらい。何がつらいかといえば、とにかく臭い。他の人が平然としているのは鼻が腐っているからなのか。息ができなくて苦しい状態が多くて、寿命を縮めている実感がある。健康で文化的な生活とはなんなのか
さくらのVPS、大阪・東京・石狩でどれを選ぶべきか
さくらのVPSはリージョンが3地点から選べるようになっている。これはDR (ディザスタリカバリ=災害復旧) 的な観点からのもので、1台だけ借りるなら、基本的にはどれでもいい。
ただし、施設のナウさでいくと
- 石狩
- 東京
- 大阪
となるようなので、リージョンごとに新機能の導入時期が変わったりする。ホストサーバのCPUの世代が違ったりもするみたいだけど、ガチャ要素なのでここではその話はしない。
VPSを契約しようとするとデフォルトで石狩が選択される通り、さくらインターネット的には石狩オシのように見える。
ただ、国内の通信で考えると石狩はちょっと遠いので、気になるのは遅延になる。
物理的に超えられない壁
情報伝送は光速度を超えることができない。
典型的な光ファイバーである石英ガラスの場合、屈折率は1.5程度。物質中の光速度 は、真空中の光速度 と屈折率 )から、 で求められる。
例えば、新宿・石狩間の直線距離約840kmで考えると、片道(840 km) / (c / 1.5) = 4.2029076 ミリ秒は物理的に超えられない遅延となる。RTT で考えれば 8.4ms を超えることは決してできないことになる。実際はケーブルが直線でひかれているわけではないので、これにさらに増える。
光ケーブルではなく電線の場合、導体中の速度は周囲の空間をすすむ電磁波のスピードと同じ (導体内ではなく) なので一概に言えないが真空中の光速度の6〜9割程度の速度になる。なお同軸ケーブルの場合波形短縮率という形で速度が示される。
いずれにせよ、情報伝送速度は真空中の光速度よりも「結構遅い」し、割と ms 単位はかかるという認識がいる。
実際のRTT
ちなみに、東京・石狩間のRTTはさくらインターネットの公式では平均「18msec」と書いてあるので光速度とかから計算しなくてもよろしい。
で、結局どこがいい
個人のVPSだと石狩のメリットは一切ない (個人の見解) ので、僕は新しい契約から東京リージョンにすることにしました。(今は大阪)
関連エントリー
- VPSのSSD化の効果 さくらのVPSの1GB HDDプランから、2GB SSD プランに移行してしばらく経過した。Google のサーチコンソールで見た感じだと全...
- さくらのVPSが起動しなくなって grub 再インストール さくらのVPS ディスク拡張手順(標準OS Ubuntu18.04) を実行しようと思ってごにょごにょしていたら MBR を壊してしまった。...
- さくらのVPSにMondo Rescueのリストアができなかった (未解決) 前々から準備していて、いよいよ新しく契約を追加してリストアするぞ! と思ったらできませんでしたので顛末を記す。敗戦は惨め。 Ubuntu 1...
- さくらのVPSを踏み台にして IPv6 アドレスがついているホストへ ssh さくらのVPSはIPv4/IPv6デュアルスタックで、双方ともにグローバルアドレスがついているため、IPv4 しかない環境から IPv6 ア...
- Mackerel つかいはじめた サーバ移行のタイミングでつかいはじめた。監視をちゃんとするようにしようという感じ。loadavg5 と filesystem でひとまず監視...
「通知の表示」の許可を求めてくるサイトが増えてうざい件
出初めたぐらいに「これ、どうでもいい個人サイトとかもやりだしたらうざいだろうな」と思っていたけど、最近まさにそういう状態になっている。当然サービスワーカーもインストールされてる。ほとんどの場合サイトにアクセスしたときに勝手に出る。
たまたまうっかり見たサイトが「通知の表示」を求めてくるのは「お前おれのこと好きなんだろ」みたいな態度で心底気持ちが悪く、通知については明示的に許可がなければできないけど、サービスワーカーは自動的にインストールされるので、(別にそういう機能はないが) ストーカーっぽくてマジで気持ちが悪い。
特に前段階なしに通知の許可を求めるみたいなの、いったいどういうつもりなのか…… お前は「はじめまして〜」とか言った直後に「僕に興味があるんですよね? つまり好きってことですよね? 付き合いましょうよ〜」とか言う人間なのか。せめて「フィードを登録」みたいなノリで「通知をうけとる」ボタンにでもして、そこでようやく許可を得るのがマトモなコミュニケーション能力ではないのか。
ブラウザでデフォルトブロックに設定変えときゃいいだろ、みたいな話ではなくて、そういう気持ち悪いことしている自覚あるんですか、という話です。
関連エントリー
- Facebook が通知に Service Worker つかってたので拒否しといた なんかアクセスしたタイミングで画面が暗くなって許可を求められたので拒否をした
- 電力計交換でBルートサービスが繋がらなくなった (解決済み) 結論 Bルートサービスの「パスワード変更」を申請したらなおった。 追記:最大一週間停止するがほうっておけば設定してくれるらしいので手続は不要...
- 個人サイトは終わってしまったのか 各種ブログサービスとか Twitter とかその他 SNS とか、そういうのは、ないよりはいいけど、なんか違う。どう違うか、どう違うだろう。...
- ネットにネガティブなことを書くのは何の意味もないから黙ってろ みたいなことを言う人がいるわけですがね、そういうことをせざるを得ない状態になったことがない、他人の気持ちがわからないならせめてお前がまず黙っ...
- Windows Update で再起動求められるけど、再起動してもインストールされない こうなってて、バージョン 1151 をインストールするから再起動しろとなっているけど、再起動しても何も起きず普通に起動してインストールされて...
デスクの天板裏での配線整理
100均グッズを使ってデスクの天板裏でケーブルの整理 | tech - 氾濫原 について質問をいただきましたので、現状を以下の通り説明いたします。デスク裏に100均のワイヤーラティスをなんとかしてくくりつけてテーブルタップをくくりつける話です。
上記エントリでは両面テープで止めるタイプのフックを使って固定していましたが、重さに耐えきれず落ちてしまいました。したがって冒頭の写真は古いのですが、ちょっと写真をとる機会がないので現状がわかりにくいです。
現状はC型クランプ4つを使って固定しています。このことは前にも書いたことがあるのですが、写真がなくてわかりにくかったので以下のように図を書きました。
「ハリ」は元々デスクについている補強用の鉄骨で、そこにワイヤーラティスをクランプを使って固定しています。このようにしてからは一度も落下したことはありません。
余談:SVGの画像をオンラインで描く
http://editor.method.ac/ を使って書いてみました。Inkscape のウェブ版があれば最高なんですが、とりあえず簡単な図は十分書けるし、慣れた操作感で使いやすいです。Shift で比を固定したりスナップさせたりもできます。
関連エントリー
- 100均グッズを使ってデスクの天板裏でケーブルの整理 両面テープ式のフック(100均)でワイヤーラティス(100均)を固定して、それにいろいろくくりつけるようにした。 最初、突っ張り棒でワイヤー...
- 自宅をかっこいい作業環境にしたい 自宅で使っているデスク Garage CL-147H というやつ (約24kg)。fantoni GT-147H というやつ (約34kg)...
- 10MHz バンドパスフィルタ トロイダル・コア活用百科の応用の章にある10MHz帯用2ポールバンドパスフィルタのうち、挿入損失1dBのもので T50-6 を使ったものを作...
- QuietComfort の Bluetooth 化 Bose QuietComfort 35 wireless headphones ワイヤレスノイズキャンセリングヘッドホン ブラック cho...
- 中華 NanoVNA の Bluetooth シリアル化を試す NanoVNA は USB-CDC による通信をサポートしていますが、ここが無線化すると(特にアンテナ調整の場合は)便利なので、コンセプトを...
子供と一緒に公園にいってやるべきたった一つのこと
関連エントリー
- 3Dプリンタで砂場に前方後円墳 買うまえからやりたかったことの一つとして、砂場で使える前方後円墳の型をつくるというのがあるのでやった。 子供と一緒に公園にいってやるべきたっ...
- Insta360 ONE X2 を買った Arashi Vision Insta360 ONE X2 ポケットサイズ360度撮影アクションカメラ CINOSXX/A CM609 ch...
- 最近の子供の様子 殆ど子供の様子を書いてないが、育っている。最近の様子を書いておく 日常生活での意思疎通がかなり可能になった 例えば 「パパ、トイレ行ってもい...
- ディアウォールで棚をつくった 若井産業 WAKAI ツーバイフォー材専用壁面突っ張りシステム ディアウォール ダークブラウン cho45 若井産業(Wakaisangyo...
- 回路図・基板検討に EAGLE を使ってみる 回路図・基板作成用 CAD のEAGLEを使ってみた。割とデファクトスタンダードっぽく使われているっぽい。試したのはフリー版 (個人レベルで...
花かんむり
関連エントリー
- さくらのVPSのウェブサーバでIPv6の接続をうける 最初からアドレスついてたので意外とやることない。 ifconfig すると既に v6 のアドレスがついている。Scope:Global にな...
- 13年勤めたLINEヤフー株式会社を退職しました (前章) 2012年に株式会社ライブドアに入社できませんでした そもそも入社のエントリを書いてなかったので簡単に書いておく (2025年現在...
- クリスマスリースをつくった アマゾンのダンボール2枚重ね 100均の5種入りマカロニ 100均のベル付きクリスマスかざり 100均のブロンズメタルスプレー (200円)...
- OsmAnd で自転車ルートをターンバイターン・ルートナビゲーション 概要 OsmAnd はターンバイターンで事前に決めたルートをナビゲーションできる現状でほぼ唯一のアプリケーション OSS なため挙動が謎なら...
- MicroVert アンテナ 以前7MHz 帯用の MicroVertを作り、1年ほど付けたままにしていたが外してしまった。帯域は広いのだが、モービルホイップよりも聞こえ...
✖
PCモニタに画面が出ないと思ったら
スリープ復帰時にどうやってもモニタが付かず、モニタの電源を入れなおしたり、ケーブルを繋ぎなおしたりということをしてみた。しかし、どうしてもダメで、ハードリセットをかけた。
DELLのモニタは、バグっておかしくなることはちょいちょいあることだが、電源を入れなおしたりしてもダメだったのは初めてなので、出力側に以上がある?という検討をなんとなくつけた。が、まぁリセットすれば直るだろうという意図だった。
そうするとどうも、何度リセットしてもBIOSの起動画面すら出なくなった。モニタは一瞬起動して、即スタンバイになるような挙動をしていた。主電源を落としてしばらく待ったりしてもダメだった。別のモニタに繋いでもダメなので、モニタの異常ではないという切り分けをした。
そのため、マザーボードまわりの不具合を想定しはじめた。あんまりやりたくはなかったが CMOS クリアを行なった。が、これでもダメで、完全に手詰り感がでてきた。
マザーボード上に2ケタの7セグLEDで起動状況がわかるようになっているのだが、BIOS セットアップ用のキーを押しっぱにすると 99 (スーパーIOの初期化中)、そうではない場合 51 (メモリエラー) となっていた。ここらでマザーボードの故障を疑いはじめ、げんなりしてきた。
故障修理の手続きをやるまえに、まだできることはないかと考えた結果、さらにもう一台別のモニタで検証しようということになった。中華産の低解像度だがHDMI接続のモニタと、短いHDMIケーブルを接続してみたところ、起動シーケンスが表示された。つまりここでようやく、マザー側は問題ないことがわかった。
さすがにここまで検証していた2台のモニタがどちらも壊れているとは考えにくいので、ようやくケーブルを疑い、今まで使っていたケーブルを中華モニタに接続したところ、表示は出るが、コネクタを揺らすと接触不良っぽい挙動をすることがわかった。この中華液晶は自動スタンバイのような気のきいた機能がないため、挙動がわかりやすい。
その後、HDMIケーブルをちょっと動かしてみたりしてひとまずなおった。ただし別途HDMIケーブルを注文して、今のやつは捨てる予定。
トラブルシューティングに時間のかかった原因
最初モニタを疑った段階で、ケーブルの脱着があったため、このタイミングで微妙に接触が悪い状態になったようだ。コネクタは奥まで入っていたので、このとき接触不良まで考えられていなかった。
2台のモニタどちらでもダメだったのが、判断を難しくさせた。このときケーブルは同じものを使っており、コネクタもちゃんと挿せていることまでは確認していたが、そのうえでの接触不良まで疑えていなかった。抜き差しは何度もしてみているので、余計疑っていなかった。
マザーボードのステータスLEDは、正常時の挙動を把握しておらず、99 と 51 が出ることは正常であることを認識できていなかった。99 はBIOSセットアップ画面中にも出るようで、51 はなぜか正常起動でもそういう表示になる。
十分に長いHDMI ケーブルがなぜか手元にそれ1本しかなく、ケーブルを取り替えて検証するのがめんどうだったため、無意識に原因として考慮するのを後回ししてしまった。
対策
- 接続ケーブルは常に複数本持つこと
- 「ステータスLED」みたいなものは正常時の挙動を前もって把握すること
関連エントリー
- SDカードリーダーの速度が出ないときの挙動チェックリスト UHS-II 対応で USB 3.2 Gen1 接続し、最大 200MB/s ぐらいの読み込み速度が出るはずなのに、速度が出ないときの原因 ...
- 4本しか結線されてないLANケーブルでハマった 自作キーボードのコネクタとして 8P8C を使っていて、市販のLANケーブルを流用しているのだけれど、特定のLANケーブルで動作せず悩んだ。...
- Raspberry Pi の実測消費電力 (電流量) Raspberry Pi の実測電流値が気になったので安定化電源に繋いで適当に計ってみた。 アナログで読んだのでだいたい。USB Wi-Fi...
- おうちサイネージ (食卓カレンダー) 家族の予定は基本的に共有カレンダーで管理しているが「みんなが見れる用」として食卓近くに卓上アナログカレンダーが置いてあり、何年もの間、二重管...
- 10GBASE-T LANケーブル CAT6 CAT6A CAT7 CAT8 結論からいうと CAT6 か CAT6A を使う。33m までなら CAT6 でも良いことになっているので家庭なら CAT6 でも十分という...
✖
オフィスにいるとだんだん体調が悪くなる。15時ぐらいからだんだんひどくなってくる。熱があるかはわからないが(たぶんない)、全身倦怠感がひどい。
✖
おれもマインドフルネスするぞ!
Google の新しい2段階認証「Google からのメッセージ」
認証アプリなどと違って数字を覚えることなしに、ロック解除とダイアログの「はい」を押すだけでよくなるっぽい。
ロックがかかっている端末でも、前もってロックを解除した状態でログインしようとすると、改めてロックコードの確認を求められる。なので、一見「はい」を押すだけでかと思いきや、必ずロック解除を挟む。
確認コードの数字は時間制限があるので、微妙にストレスがかかって嫌な感じでしたが、これはよさそうです。
関連エントリー
- Google Photos が発狂してから Google Photos が発狂して、Google Picker 経由でつけたリンクに認証がかかるようになったり、利用制限がかかるようにな...
- ✖ cho45 ★ 5.0 / 5.0 cho45 Huawei MediaPad T2 7.0 Pro を買ってみた。しばらくうちにはタブレッ...
- Google をパスワードマネージャに 最近は Google 以外のサイトのパスワードを一切覚えないという運用を試しています。つまり head /dev/random| shasu...
- DNS HTTPS レコードを確認する dig lowreal.net type65 で存在は確認できるがパースしてくれない。dns.google 使うのが簡単っぽい。JSON で...
- Pixel 5a (5G) Pixel 3 XL から機種変。Pixel 3 XL は型落ちで1年前ぐらいに買ったので値段的にもスペック的にもそれほど大きく変わらず、大...
✖
OS X のスリープの傾向と対策
man pmset して理解した内容を記録しておく。これが正確かは実際の挙動をちゃんと確認してないのでアレだけど、man 読んでないだろみたいなのよりはマシなはず…
Mac のスリープの種類
- ディスプレイスリープ
- スリープ
- セーフスリープ
- ディープスリープ
「ディスプレイスリープ」は画面の表示だけ消えている状態。ディスプレイのバックライトが消えて他のスリープと似た状態となるのでスリープの一種としたが、CPUはスリープしない。
「スリープ」はメモリへ電力供給したままCPUをスリープさせている状態。
「セーフスリープ」は「スリープ」と似ているが、来たるディープスリープに向けてメモリ内容を書き出した状態。この状態だと急に主電源消失してもディープスリープからの復帰と同じになるので、作業が失われないという意味でセーフ。復帰はメモリからなので早いが、書き出しがあるのでそこが遅い。
「ディープスリープ」はメモリ内容をファイルシステムに書き出して、コンピュータの全ての電源を切る。次回電源オン時は、ブートプロセスでこのファイルの所在を確認してロードする。コンピュータ全体として消費電力がゼロになる。
メモリ内容を書き出すかどうか、そのタイミングはいつかあたりがポイントになる。メモリ内容を書き出したり、読み戻したりするスリープは、メモリが増えるほど時間がかかることになる。(SSD の場合これによって寿命が縮まることを気にする人もいる)
pmset -g で見れる値との関係
pmset でパワーマネジメントまわりの変数を見ることができる。MacBook Pro で実行すると以下のようになった。
$ pmset -g System-wide power settings: SleepDisabled 0 DestroyFVKeyOnStandby 0 Active Profiles: Battery Power 1 AC Power -1* Currently in use: standbydelay 10800 standby 1 womp 1 halfdim 1 hibernatefile /var/vm/sleepimage powernap 1 gpuswitch 2 networkoversleep 0 disksleep 10 sleep 0 (sleep prevented by iTunes, coreaudiod) autopoweroffdelay 14400 hibernatemode 3 autopoweroff 1 ttyskeepawake 1 displaysleep 10 acwake 0 lidwake 1
「ディスプレイスリープ」はdisplaysleepの値(単位は分)経過後に起こる。
各スリープは sleep の値(単位は分)経過後に起こる。このとき
- hibernatemode = 0 なら「スリープ」
- hibernatemode = 3 なら即座に「セーフスリープ」
- hibernatemode = 25 なら即座に「ディープスリープ」
となる。
ただし「スリープ」や「セーフスリープ」に入っていても、standby = 1 の場合、standbydelay の値(単位は秒)経過後にメモリメージが書き出され「ディープスリープ」に移行する。また autopoweroff = 1 な場合も autopoweroffdelay の値(単位は秒)経過後にメモリイメージが書き出され「ディープスリープ」に移行する。standby との違いがわかりにくいが、standby はバッテリー駆動時の話で、autopoweroff は AC 接続時の話になっている。ErP Lot6 (待機電力基準) 準拠のため、autopoweroff があとから機能として追加されたという感じになっている。
ハイバネーションイメージを作りたくない場合
スリープ入りが遅くてうざい場合
ラップトップだと必ずセーフスリープする関係で、閉じたり開いたりを繰替えした場合になかなか起きてこなくてイラ立つことがある。この場合は常時セーフスリープに入るのがうざいケースなので、hibernatemode だけ 0 にすれば良さそう。
sudo pmset -a hibernatemode 0
standbydelay / autopoweroffdelay 経過後のスリープはこの意図だと特段無効にする意味はないと思う。
とにかく絶対書き出したくない場合
ハイバネーションイメージからの復帰がそもそも遅いから嫌という場合とか、SSD が痛むのが気になる場合はとにかく無効にするしかない。消費電力が増えるのと、万が一バッテリー切れになった場合は作業内容が失われるのがデメリット。
To disable hibernation images completely, ensure hibernatemode standby and autopoweroff are all set to 0.
と書いてあるので、その通りにする。
以下のようにすると、全ての状況(バッテリだろうがAC駆動だろうがUPS起動だろうが) イメージ書きだしが無効になる。
sudo pmset -a hibernatemode 0 standby 0 autopoweroff 0
ref.
- https://support.apple.com/ja-jp/HT202124 standby の説明
- https://support.apple.com/ja-jp/HT201635 autopoweroff の説明
関連エントリー
- ThinkPad X13 Gen 3 AMD の購入とスリープ後不正終了する問題 ThinkPad X13 Gen 3 AMD を買った。2022-10-06 に購入して、何度か出荷予定が伸び、2022-12-02 に届い...
- ESP8266 (ESP-WROOM-02) の Deep Sleep でデータを引き継ぐ ESP8266 の deep sleep モードは CPU などの電源を全て落として、RTC (時刻を持ってるわけではないっぽいけど内蔵RT...
- KX3 でシリアルポートから SWR を読み出す KX3 と PC だけで SWR グラフにできたら便利なのになー と思っていたけど、少し前に調べたところ SWR を直接読む方法がなく、諦め...
- MCD-ST Liberty SW License Agreement V2 はフリーなライセンスか? STM32CubeMX でジェネレートされるコードは MCD-ST Liberty SW License Agreement V2 というラ...
- AVR progmem に long を置く方法 PROGMEM をつけると (const も必須)、その変数の示す先がプログラムメモリー領域になる。そのままだと使えないのでワーキングメモリ...
Windows Update で再起動求められるけど、再起動してもインストールされない
こうなってて、バージョン 1151 をインストールするから再起動しろとなっているけど、再起動しても何も起きず普通に起動してインストールされてない。
Windows クソいなと思うこと多々あるけど、組込みの自動アップデートがうまく動かないとか、やっぱクソだと思う。
もしかすると、この表示でもまだダウンロードが終わっていないとか? なんにせよさっぱり情報がなくて「詳細」をクリックしても「再起動が必要」としか書かれていないので、どうしようもない。これは「失敗」しているわけではなくて、そもそもインストールが行われている形跡がない。なんで Windows はいちいちこんな目にあわせられるのか…… つらすぎる。ログがどこに出てるのかもわからんし (ログとかあるの?)
ヘルプもクソ
それでさ、ググると更新プログラムのインストールに関する問題のトラブルシューティング というのがでてくる。で「その情報は新しい場所に移動しました」って書いてあるからクリックするじゃん? そうすると Access denied とか言われんの。なんなのか
時間を置いたら見れた。けど結局解決できそうな内容ではなかった。意味がない…
Windows Update はいつマトモになるのか
前のPCのWindows Update もちょいちょいおかしくて、失敗してインストールされなかったりしていたけど、Windows7からのアップグレードだったからおかしいのかと思っていた。
今回、クリーンインストール直後でもこのありさまなので、Windows Update って基本的にダメなんだなということを認識した。
しばらく放置してから「今すぐ再起動」をしたらインストールが走った。やっぱダウンロード中だったんだろうか。そうならそうと表示がおかしいんだけど、よくわからない……
関連エントリー
- Windows11 msedgewebview2.exe/Widgets.exe をアンインストール Widgets.exe 関係で msedgewebview2.exe がやたら VRAM (GPUメモリ) を消費している。全く使わない機能...
- Windows PowerShell から Windows Runtime API を呼びたかった [Windows.Devices.HumanInterfaceDevice.HidDevice,Windows.Devices.HumaIn...
- ディスクを増設したらWindowsが起動不能に 増設した直後は起動し (未フォーマットの状態)、Windows が起動後「ディスクの管理」でドライブを初期化し、シンプルボリュームを追加した...
- Lightroom 環境の変更 (macOS → Windows10) 元写真ファイルはNASへ。カタログは NAS などに置けないので iSCSI とかも考えたが、一旦ローカルへ置く、みたいな方針。 写真ファイ...
- メインPCのWindows 移行 こまごま Windows Tips みたいのを書いてるけどメインPCを macOS から Windows に移す決心をしていろいろやってる。...
✖
体調不良
もうダメだ。
それはともかく、ここ数週間のやる気のなさがひどい、まるっきり趣味のコードも書いていないし、仕事の進捗もおそろしいぐらいにない。たびたびこういうことがあってどうしようもない。どうすればいいんだ。
GC関係の用語はかっこいいのが多い
- ストップザワールド!
- コンカレントマークアンドスイープ!
- ジェネレーショナルガベージコレクト!
- レイジースウィープ!
- コンパクション!
ASUS ZenFone 2 の Android M (6.0) アップグレードは遅延
2016 Q2 には (すなわち6月中には) アップグレードするという話だったのですが、どうやら遅延しているようです。以下はフィリピン版の ZenTalk のスレです。
There has been some changes in the upgrade timeline [ source], they have changed the initial timeline to "from 2nd quarter of 2016" (April onwards). We apologize for any delays that may occur on the update rollout for the following ASUS ZenFone models:
- PadFone S (PF500KL)
- ZenFone 2 Laser 6-inch (ZE601KL)
- ZenFone Selfie (ZD551KL)
- ZenFone 2 5.5-inch (ZE550ML, ZE551ML)
- ZenFone 2 Deluxe (ZE551ML)
- ZenFone 2 Deluxe Special Edition (ZE551ML)
- ZenFone Zoom (ZX551ML)
The Android M (6.0) upgrade has arrived for these ZenFone models:
- ZenFone 2 Laser 5-inch (ZE500KL)
- ZenFone 2 Laser 5.5-inch/5.5 S (ZE550KL)
- ZenFone Max (ZC550KL)
どこが最新の情報なのかよくわかりませんが、このトピックは6/27に更新されていて Sticky にも設定されているので、たぶんこれは最新の情報なのでしょう。一部モデルについてはリリース済みですが、他のモデルは遅延するみたいです。ここで "they have changed..." と言ってますが、これを投稿しているのはフィリピンの担当者のようなので、たぶん they というのはアップグレード担当部門のことを言っていると思われます (違う?)
Global 版 ZenTalk だと特別新規のアナウンスはなくて、27/06/2016 . no Android M. というスレで約束は守られるのかとちょっと燃えてます。というのも、元々アップグレードプランのスレの文言は以下のようなものでした。
The following ASUS ZenFone models will receive the Android M (6.0) upgrade in Q2 of 2016
これが
The following ASUS ZenFone models will receive the Android M (6.0) upgrade starting from Q2 of 2016:
と変わっており (フォーラムのタイムスタンプを見ると 2016/6/28 04:59)、Q2 以降という内容に変わっています。フィリピン版のスレの冒頭はこの文言変更についての言及のようです。
遅延自体はともかく、アナウンスするのに元スレッド書き変えというのはいただけないと思います。普通に考えると新規にスレ立ててアナウンスすべきでしょう。フィリピン版は担当者の裁量?で一応まともなアナウンスが出てるので、Global 版もそのようにしてほしい感じがします。
ここ半月ぐらい毎日アップグレードの確認をしてきましたが、どうも無駄だったみたいなので残念です。いつになるんでしょうね。
関連エントリー
- Zenfone2 の Android Mashmallow アップデート OTA では落ちてこないが手動で更新ファイルを落とせばアップデートできるようになっていた。 システムを更新しています的なプログラスバーが全く...
- ZenFone2 にようやく Android M (Mashmallow) アップデートが降ってきた ASUS ZenFone 2 の Android M (6.0) アップグレードは遅延 | tech - 氾濫原 遅延していた OS アップ...
- Android 版 Lightroom Mobile の DNG 撮影 最近の Android 端末だと RAW 撮影に対応していることがある。あまり対応アプリケーションがないのだが Lightroom Mobi...
- Android O から広色域ディスプレイがサポートされる デベロッパープレビューのそのようなことが書いてあった。 Wide-gamut color for apps: Android develop...
- Spring MVC で @Async と @RequestScope を共存させるには? @Async と @RequestScope を同時につかうとどうなるか @RequestScope、これは @Scope(value = ...
電源 VRM フェーズ数ってなんなのか
PC関係だとよく VRM (Voltage Regulator Module) フェーズ数という用語にでくわす。マザーボードやグラフィックボードのレビューを見ると「電源は6+1フェーズ」とかと書いてある。特に説明もないので意味不明である。
結論
先に結論を書くと、フェーズ数は多ければ多いほど良いというものではない。それに電源回路の良し悪しはフェーズ数で決まるわけではない。そういうものなので、こういう表記を見ても無視して良い。
マルチフェーズ同期整流
フェーズ数を理解するためには、マルチフェーズ同期整流について理解しないといけない。そもそもここでいう「電源回路」は定電圧 DC/DCコンバータのことで、外部供給の12VをCPUにあうように低電圧(そして大電流)に変換することを言っている。
同期整流はローサイド(負荷に対してマイナス側)もハイサイド(同じくプラス側)もFETでスイッチすることによって高効率に整流を行うことをいう。このとき、スイッチングによって出力にリプルが発生する。そこで、ハイサイドFET・ローサイドFETのスイッチのセットを複数に増やして、それぞれのスイッチを少しずつ位相(フェーズ)をずらして整流させることで、よりリプルが少なく安定した定電圧電源とすることができる。
つまり「VRM フェーズ数」の「フェーズ」とは「位相」のことになる。1フェーズにつき少なくともFET 2つと、スイッチングコントローラ回路が1つと必要になる。(ただしフェーズが増えてなくてもFETのペアの数をフェーズとしてカウントする間違った宗派もあるっぽい)
基本的にはフェーズ数が多いほうが高級とされている。部品点数が増えるので価格が高くなる。フェーズ数が多いことの利点としては
- 電源供給が安定する
- FET 1つあたりの電流を減らせる
- 発熱が分散するので放熱しやすい
- 部品の高さを抑えられる
欠点は
- 部品点数が多いので
- 価格が高くなる
- 故障率が上がる
- スイッチング損が増え、効率が下がる (特に低電流時)
回路まわりは、これが図ありでわかりやすい。
6+1 とか 8+2 って表記は何なの?
マルチフェーズ同期整流についてわかっても、この表記は意味不明。
結論からいうと前の数字がCPU(GPU)コア用の電源のフェーズ数 (大電力) で、後と数字はCPU(GPU)のコア以外用のフェーズ数のようだが、この表記を誰が決めて使ってるのかさっぱりわからない。(ソースを探したけどわからなかった)
フェーズ数以外のVRMの要素
- FETの数や性能
- 具体的にはオン抵抗、並列にすれば減らせるが部品は増える
- 同期整流コントローラの性能
- 負荷追従性など
- PWM 周波数
- 高いほどコイルが小さくでき負荷追従性が上がるが、FETでのスイッチング損失が増えて効率が下がる。ノイズにも関係ある。
- コイルの性能 (Q値)
- コイルの直流抵抗値が低いほど低損失だが部品が大きくなる
- コアの材質でも損失が出る
- コンデンサの性能
- ESR (等価直流抵抗) が低いほど負荷追従性が高く、リプルが減る
ちょっと考えただけでもいろいろ要素がありすぎるので、フェーズ数だけで何かを判断することはできない。
所感
最近のマザーボードは重要な機能はチップセットに殆ど統合されたしまったので、表面にほとんど部品が載ってない。そうすると見た目的にインパクトがあるのが電源回路だけになる。
マルチフェーズにするとFETとコイルが並んでかっこいいので、マルチフェーズがもてはやされるみたいなところがありそう。インターフェイス (M2 とか PCI-E とか) が進化しても、マザーボードの見た目的にはインパクトがないんで、電源を盛るみたいなことだと思う。
関連エントリー
- 超小型 DC/DC ステップアップコンバータ SX1308 2A $0.99 VIN 2〜24V VOUT 2〜28V 2A 効率最大95% スイッチング周波数1.2MHz という表示のもの。 スイッチング周波数が高く...
- ✖ 電源回路がほんと難しい。スイッチング電源を設計通りに動作できたことがないので大変に苦手意識がついている。 ちょっと LED ドライバ用に昇圧...
- LTC3780 同期整流ステップアップ/ダウン DC/DCコンバータ LTC3780を使った同期整流式DC/DCコンバータモジュールが気になったので買ってみた。ヒートシンクの下に FET が4つ隠れている。 ス...
- 今 (物理的に) 半導体が熱い!!! (電子負荷) 電子負荷 電源のテストを行いたいときは、適当な抵抗を繋いだりするわけだが、特定の抵抗値を狙ってつくるのはめんどうくさく、また許容損失が大きい...
- ステレオ・バランスド経路 (4ch) 切り替えスイッチ ステレオ・バランスド経路を排他的に2分岐するスイッチが欲しかったが見つからず、仕方ないので作った。 GND もスイッチしたかったが6回路の物...
✖
エンジニアの年収がナントカみたいな記事が胸糞悪いので、出てくるエンジニアが担当している全てのサーバが同時に落ちればいいのに。
結局、ああいう劣等感を煽るようなものに付随するなにもかもというのは気にするに値しないはずだけど、劣等感は自動的に反応するので、ここでは攻撃的になるという形で消費しておく
関連エントリー
- ✖ そういえば31歳になっていた。 妻が誕生日プレゼントだ!つってウィッシュリストに入れておいた家庭用トランポリンを買ってて、組立てたけどだいぶ...
- ✖ 最近のインターネットの意識高めの記事 (意識高い系ではなく) がほんと受け付けない。客観的にはいい記事なんだろうけど、主観的にはほんとに無理...
- 本を書く(LLMを使って) 最近、技術書をまとめていくつか出してみた。すべてLLM(Claude/Gemini/ChatGPT全部)を活用してながら書いてみてる。 LL...
- ✖ Google Keep が使用に耐えないぐらい重かったり、挙動不審だったりする。 ブラウザ版で WebGL 停止の警告がでたりする ブラウザ...
- ✖ ここ1ヶ月ぐらいでG検定とDS検定という民間検定試験を受けてみてた。Di-Liteとかいう枠組み?のやつ。他の人にすすめられるような試験なの...









![ガールズ&パンツァー 劇場版 (特装限定版) [Blu-ray] - 渕上舞](https://m.media-amazon.com/images/I/51st-4sFrUL._SL500_.jpg)
















