2018年12月14日金曜日

Astrolux S42 (w/ Nichia 219C)のfirst impression

Astrolux S42 (以下、S42)というLED flashlightを購入したのでfirst impressionなど。


図1 S42全形

図2 ヘッド部分にあるスイッチ (breathingしている)



S42は2種類のconfigurationがあるが、個人的にneutral white 〜 warm whiteが好きなのでNichia (日亜化学) 219Cを搭載したmodelを選択した (もう片方はCree XP-G3)。

図3 ヘッド部分の拡大

4つのLEDに個別のTIR (total internal reflector)を装着してあり (図3)、照射パターンは非常にフラット。手元などの至近距離を照らすような室内での使用に向いている。


図4 FENIX LD10 (上)、S42 (中)、18650 (下)

本体チューブの長さを変更して18350 (CR123Aと同サイズ)か18650を使用できるが、今回は18650タイプのチューブが装着されているものを選んだ。それでもAA×1のFENIX LD10とさほど大きさが変わらないコンパクトさには驚く (図4)。

今回購入した際にはSAMSUNGのINR 18650が付属していた。負極側に絶縁用のテープが張ってあるのに気付かず不良品かと思ったのは良い思い出。


操作体系


S42は操作体系が複雑である (とは言ってもNovatacのflashlightのようにprogrammableではないだけましだが)。

Modesが多いので2つのmode groupsに分割してあり、初期状態 (電池を入れた直後)ではGroup 1である。普段遣いならば4 modesに限定されたGroup 2で事足りるだろう。しかし、本機の売りであるはずのMAX 1600 lmが出せないのが玉に瑕。

図5 操作体系のDAG

なお、図5の太線は短い間隔で二度押し、点線は長押し、普通の線は一度押しである。


軽く使ってみての評価


pros


* 非常にコンパクト (1AAタイプと比較しても対して違いを感じない)
* 20 sec限定ではあるが1600 lm (w/ Nichia 219C)出せる ※high drain対応のIMRもしくはINRが必要
* 普段遣いに向いたシンプルな操作体系 (mode group)が用意されている

cons


主にコンパクトさを目指した結果として:

* 操作体系が複雑。しかもそれをスイッチ1つで行う必要がある
* Turbo (1600 lm)が20 secしか持たない。仮にこの制限がなくても、小さいので放熱が追い付かず常用できなかっただろう
* IPX8の競合製品が溢れる中、当機はIP65である。防塵性能が具体的に表記されている (そして最大である)点は良いが、防水は5 (いかなる方向からの水の直接噴流を受けても有害な影響を受けない)に留まる


こんな人におすすめ


* コンパクトかつ強力なライトが欲しい
* 手元など近距離を照らす用途が主、あるいは屋内での使用
* 広い範囲をフラットに照らしたい、いわゆるfloodな配光が好み
* 水に沈める使い方はしないがある程度の防水性能は欲しい
* 18650に手を出したいが専用充電器を持っていない (要USB出力のある電源+USBケーブル)

2018年12月13日木曜日

[NieR:Automata] 個人的にお気に入りのYoRHa部隊員達

NieR:Automataの全世界累計販売数350万本突破と、"NieR:Automata Game of the YoRHa edition"発表を記念して。

******

作中に登場する個性的なYoRHa部隊員達の中でも、特に気になった機体を紹介したい。なお、以下で用いる名称は一部を除いて勿論仮称である (「ヨルハ部隊員」となっていて、本編中では固有の識別符号が確認できないので)。

ちなみに、以下の画像で2Bさんが黒髪なのはDLCで手に入るヘアカラーを使っているため。黒髪だと月の涙の花飾りがとても映えるのでお気に入り。


……SOULCALIBUR VIコラボの通称”2P”を本編に追加するDLC希望。


オアシスちゃん


砂漠地帯のオアシスにいる子 (図1)。

図1 オアシスちゃん (仮称)

やってきた鳥の群れについて穏やかな口調で語る所がとても可愛い  (図2)。

図2 鳥の群れについて語るオアシスちゃん

彼女は物語が進み[検閲済み]が[検閲済み]した後もここに居るYoRHaの一人である。


箱入り娘ちゃん (戦闘タイプ)


バンカーの指令室にいる子 (図3)。


図3 箱入り娘ちゃん (仮称)とオペレータさん (心配性)

本人は人類の勝利に貢献する気満々なのだが、専属のオペレータさんが過保護で心配性なため、いつまで経っても出撃させてもらえずにいるちょっと不憫な戦闘タイプ。

図4

図5 出撃への思いを語る箱入り娘ちゃん

察するに、彼女が出撃すると一人で戦争を終わらせてしまうほどの力を秘めた最終兵器なので、ホワイト司令官が密かに裏から手を回して出撃できないようにしているんだろう。きっと。


ノービスちゃん


続いてバンカーの指令室にいる子 (図6)。

図6 ノービスちゃん (仮称)
 製造から日が浅いためか任務の前に緊張している初々しさが素敵 (図8)。

図7

図8 任務への意気込みは十分だ

なぜか[検閲済み]の調整が間違っていて、担当オペレータさんの[検閲済み]が[検閲済み]として認識されていたといううっかりさん (本人というよりは調整の担当者が)。


8B (たぶん)と担当オペレータさん (たぶん)


バンカーの8Bの部屋にいる二人。

地球に降りていろいろと見て回りたいというオペレータさんと、できることなら連れて行きたいという8Bの関係が実に良い。


図9 語り合う8B (?)とオペレータさん

地上で会うことになる8Bとは見た目が違っている。

2018年12月12日水曜日

Kali LinuxをVirtualBoxにinstallしてみた

Hardware requirementsは確認しよう


最初、HDDの領域として最大8 GiBを割り当てたのだがinstallが途中で止まってしまった。

host machineのdmesgにもdirect I/Oがどうのでdiskの内容がcorruptしたかも、みたいな赤文字のerror messageが出た。何事かと思ったら、原因は8 GiBでは足りないことにあった。

Kali Linuxのofficial websiteにあるinstallation prerequisitesによれば:

  • A minimum of 20 GB disk space for the Kali Linux install.
  • RAM for i386 and amd64 architectures, minimum: 1GB, recommended: 2GB or more.
  • CD-DVD Drive / USB boot support

cf. [Kali Linux Hard Disk Install – Kali Linux](https://docs.kali.org/installation/kali-linux-hard-disk-install)

とある。実際、install後にdfで見てみると10 GiB近く (9.6 GiBぐらい)使っていた。これはinstallation processだって止まる。

現在のversionのVirtualBoxはGUI (Virtual Media Manager)から簡単にdisk領域の拡張ができるので8 GiB → 32 GiBに拡張して解決した。

Swap partitionの削除に際しての注意


Partitionの分割を間違ってswapを有効にしてしまったので、fdiskで消してext4 (root partition)に割り当て直してresize2fsで拡張したまでは良かったが、その後bootにやたら時間が掛かるようになってしまった。

systemd-analyzeで見てみたりもしたのだが、いまいち原因が分からず。というのも、systemd-analyzeから詳細が見えるのはsystemdによるboot processであって、systemdが呼び出される前については分からないからだ (systemd-analyze plotで出力できるchartにおける"kernel"の部分)。

GRUB menuからrescue modeで立ち上げてみると、/etc/initramfs-tools/がどうのというmessageが出ており、ここで30 secほど待たされていた。調べてみると、/etc/initramfs-tools/conf.d/resumeというfileに指定されているswap partitionを待っているのが原因と分かった (cf. [#860533 - initramfs-tools: boot delayed by 30sec. due to /scripts/local-block loop - Debian Bug report logs](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860533))。

RESUME=none

と変更して解決した (cf. [Linux Manpages Online - man.cx manual pages](https://man.cx/initramfs.conf(5%29))。

Metasploit Frameworkに関する注意


Metasploit FrameworkはDBMS backendとしてPostgreSQLを利用している。

起動時にPostgreSQLへ接続するのだが、折しもPostgreSQL 10 → PostgreSQL 11へのupgradeを先に行ってclusterの移行をせずにそのまま削除したため、port 5432に接続できずerrorとなった。

/etc/postgres/11/main/postgresql.confにて:

port = 5433

となっていた箇所を

port = 5432

に変更して解決した。

PostgreSQL 10のclusterと11のclusterが同時に立ち上げられると、default port 5432が10のclusterで使用され、11のclusterは自動的に5433を使う。この名残りが今回のerrorの原因である。

2018年12月11日火曜日

VirtualBox 5.2のGUI (Qt5)でVirtual Media ManagerからMachine Toolsに戻れない時はtoolbarを出そう

*** 2019-01-24 追記 ***

最近、VirtualBox 6.0 (virtualbox-6.0.2)がDebian experimentalに入った。GUIの見た目が変化しており、この記事の内容は当て嵌らない点がある。

*** 追記ここまで ***


VirtualBoxの管理画面 (GUI)の設定をいじったことをすっかり忘れていて、Virtual Media Managerに遷移したあと (元の) Machine Toolsに戻れない状態になっていた。

調べてみると同じ現象で困っていた人がいて、適当な場所で右クリックしてToolbarを出せば直ると分かった (cf. [virtualbox.org • View topic - \[Resolved\] Manager GUI: How do I switch back from media manager to machines list ?](https://forums.virtualbox.org/viewtopic.php?f=1&t=90242))。

なお、VirtualBoxはDebian sidのrepositoryから導入しており、versionは5.2.22-dfsg-2。


キャプチャ画像で見る復旧までの手順


1. VirtualBoxを起動した時の画面 (Machine Tools)。Defaultの設定からはいじってあるのでToolbarが表示されていない



2. File → Virtual Media Manager を選択すると……



3. Virtual Media Managerに遷移した



4. が……Machine Toolsに戻れない



既に触れた通り、Machine Toolsに戻るにはToolbarを表示させる必要があるので復活させる。

5. Menubar (File Helpなどが並んでいる部分。赤く色を付けた領域)にカーソルを合わせて右クリック



6. Context menuが表示されるので、Show Toolbarを選択する



7. Toolbar (赤く色を付けた領域)が復活した



8. Toolbarの中にあるMachine Toolsボタン (赤く色を付けた部分)をクリック



9. Machine Toolsに戻れた


おつかれさまでした。


おまけ


Machine Toolsにて、Detailsの部分で右クリックすると表示する情報を変更できる。


2018年12月10日月曜日

mpvのkey割り当てを変更する

LinuxなどUnix-like OSでは特にお世話になるmultimedia playerであるmpv。

実はkey (に限らずmouseも含めたinput一般)に対する機能の割り当てを~/.config/mpv/input.confで設定できる。mpvのsource treeの中にあるetc/input.confをcpしてそれを編集するのが良いだろう。

最初はleft/rightのarrow keysにそれぞれseek -1/+1 secを割り当てようかと考えていたのだが、これはShiftを押しながらでできるとfileを眺めていて気付いた。

cf. [change seek / jump time span when using keys arrow-right / left · Issue #4396 · mpv-player/mpv · GitHub](https://github.com/mpv-player/mpv/issues/4396)

2018年12月9日日曜日

Linux boxでラジオ番組を自動録音する returns

以前、同じ目的の記事を書いた:

cf. [Linux boxでラジオ番組を自動録音する](https://typeinf-memo.blogspot.com/2016/01/linux-box.html)

今回、再び同じtitleで記事を書いたのは、録音に使っているLinux box (Debian sid)のinit systemを遂にsystemd化した (ずっとsysvinitで粘っていたが限界が訪れた)のが原因で録音に失敗したためである。

症状


* ffmpegを使って指定したpulseaudioのsourceから録音できない (cronからのみ)

logを取ってみるとこんな感じだった:

ffmpeg version N-92645-gc782e7aa9e Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 8 (Debian 8.2.0-10)
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libpulse --enable-gnutls --enable-ladspa --enable-libbluray --enable-libflite --enable-libmodplug --enable-libaom --enable-opencl --enable-vaapi --enable-vdpau --enable-pic --enable-shared --extra-cflags='-fPIC -Ofast'
  libavutil      56. 24.101 / 56. 24.101
  libavcodec     58. 41.102 / 58. 41.102
  libavformat    58. 23.102 / 58. 23.102
  libavdevice    58.  6.101 / 58.  6.101
  libavfilter     7. 46.101 /  7. 46.101
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
alsa_input.pci-0000_00_1f.3.analog-stereo: Input/output error

これは多分前回の記事と同じerrorで、XDG_RUNTIME_DIRを指定すれば解決するはず。

なお、以前に記事を書いた時とpulseaudioのsourceが少し違っているが、以前systemd→sysvinitに戻した際変化した (cf. [PulseAudio w/o systemd](https://typeinf-memo.blogspot.com/2016/10/pulseaudio-wo-systemd.html))。

その時の変更をまた戻すことになった訳である。

対策


* XDG_RUNTIME_DIRを指定してffmpegを実行する

ついでに、backgroundでinvokeしたffmpegのPIDを取得しておき録音時間sleepさせた後kill -TERMで殺す、という方法ではなく、ffmpegの-t optionでduration指定する方法に改めた。

XDG_RUNTIME_DIR=/usr/user/1000 "${FFMPEG}" -f pulse -ac 2 -ar 44100 -i "${SOURCE}" -acodec libvorbis -q 3 -t ${DURATION} "${FILEPATH}" >${LOGFILE} 2>&1 &
なお、${FFMPEG}のような大文字の定数はscript内で
FFMPEG=/usr/local/bin/ffmpeg
といった具合に定義してある。


今後の展望


headless運用をしていて普段loginしない (maintenanceのためにたまにsshでloginするくらいの) Linux boxで自動録音をするなら、PulseAudioをsystem-wideなdaemonとして立ち上げておく方法が考えられる。

loginしていない時にはPulseAudioのper-user daemonが立ち上がっていないのでsourceも存在せずerrorを吐くと思うので。

ちなみにPulseAudioのdeveloperはPulseAudioのsystem-wide modeを推奨していない:

cf. [SystemWide](https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/)


HiKey 620 (HiKey LeMaker)へのDebian stretch (stable) installで嵌った

*** 更新履歴 ***

* 2019-01-28 画像にミスがあったので差し替え (WiFi/BT chipの名称を修正)

*** 更新履歴ここまで ***


※この記事で紹介しているHiKey 620 (HiKey LeMaker)は古い (2015年頃の)SBCなので、これから購入するのなら後継機であるHiKey 960やHiKey 970或いはDragonBoard 410cなどが推奨される

図1 HiKey 620とmicroSD card
図2 表面のIC配置
図3 インタフェースの配置


結論: 公式websiteのdocumentに従おう

これからHiKey 620 (HiKey LeMaker)にDebianをinstallしたい人が参照すべきdocuments


cf. [Documentation for HiKey - 96Boards](https://www.96boards.org/documentation/consumer/hikey/hikey620/)

英語だが難しくないので、downloadするfilesや手順を確認しつつ従っていけばできるはず。

重要な点としては、

* 最初にrecovery.binをhisi-idt.pyで書き込むこと
* この時にPython 2.7を使うこと


簡単な経緯


* HiKey 620 (LeMaker version)、以下HiKeyにDebian stretchを導入しようと考えた
* 以前eMMCにinstallしていたDebian jessie (oldstable) → stretch (stable)にupgradeする最中に止まってunbootableになった
* eMMCにUEFIを導入するために色々試してみたがことごく失敗 (switch scienceやDebian Wikiの手順など)
* Linaroの公式websiteのdocumentをよく見ると、他で紹介されている手順とは異なっていることに気付く (hisi-idt.pyでrecovery.binを書き込むなど)
* Linaroの公式documentのやり方に従ったらDebian stretchの導入に成功

Debian Wikiやswitch scienceで紹介されている(古い)手順から変更されていることに気付くのが遅れて、随分遠回りをする羽目になった。もう一度改めて書くが、

上で紹介したLinaro公式websiteのdocumentに従うこと

を強く推奨する。


おまけ


microSD cardからのboot


Setting jumper の1-2をclose、3-4と5-6はopenにしておく。


root partitionの拡張


SD cardにDebianをinstallした場合、SD cardの一部の領域 (たぶん1.8GiBぐらい)しか利用されていない。Raspberry Pi seriesにinstallするRaspbianの場合はinstallerが拡張してくれるoptionがあるが、こちらはfdisk等を使って手動で行う必要がある。

* fdisk /dev/mmcblk1
* partition tableの表示 (p)
* partition 1がboot partition、partition 2がDebianのroot (ext4)
* ここで一旦partition 2を消す (d)
* 以前partition 2だった部分を含めたpartitionを改めて作製する (n) → 新生partition 2
* ext4のsignatureが残っているけどどうするかを聞かれたら「残す」を選択
* 一応書き込んでおく (w) ※著者の環境では失敗しfdiskから抜けた

動いているLinux kernelは変更前のpartition tableの情報を持ったままなので、更新するためにHiKeyをrebootする。無事に立ち上がったらsudo resize2fs /dev/mmcblk1p2を発行。ext4の場合、filesystemをonlineで拡張できる。

最後に確認すると、こんな感じになるはず:

linaro@linaro-developer:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            912M     0  912M   0% /dev
tmpfs           196M  5.4M  191M   3% /run
/dev/mmcblk1p2   29G  1.6G   26G   6% / ← root filesystem
tmpfs           979M     0  979M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           979M     0  979M   0% /sys/fs/cgroup
/dev/mmcblk1p1   64M  848K   64M   2% /boot/efi
tmpfs           196M     0  196M   0% /run/user/0
tmpfs           196M     0  196M   0% /run/user/1000

今回は32GB (=29.8GiB)のmicro SD card (Toshiba)を使ったので、root partitionが29Gである。