買ってよかったもの2018年版
文字アウトプットリハビリです。サクッといきたい
一応、背景として「自宅で仕事をしている」というのがあります。ゴーゴーゴー
デスクライト PHIVE CL-2
デスクが部屋の隅っこに置いてあるので、デスクライトのお世話になってます。
もともと使っていたデスクライトが「ジージー鳴ってうるさい」「フレキシブルケーブルがぼろぼろ」「角度に自由が効かない」と散々だったので買い替えました。
良いところは
- 調光が無段階調節(程よい光量に調節できる)
- 可動部が3箇所あるので光源位置・向きの調整にかなり自由が効く
- クランプ式なのでデスクスペースを取らない
あとあとあと、
光源が目に入らないってすごい快適で良いです
いやもうそれだけを伝えたかった 。
あ、導光板方式がうんぬんで光源見えてもそんなに目に痛くないのも良いところだと思います
2月初旬あたりに購入して、寝る時に読書の間接照明代わりにつけっぱなしにしてしまったりしてますが、ちゃんと故障せず動いてくれてます。(すごく高い買い物でもないので、もっと簡単に壊れちゃうかと思ってました)
Google Home
朝いつも時計を見て二度寝しちゃうんですが、寝床から見える位置に時計を置くのをやめてGoogle Homeを置いてみました。 そうすると時間を確かめるのに声を出す必要があって、ちょっと意識が覚醒しやすくなった気がしてます。1(アラームはダメでした。気づいたら止まっている……)
ソフトウェア(開発環境) JetBrains IDE Subscription
正式名称なんて言うのかちょっとよくわかってないのでそれっぽい題
PhpStormとRubyMineのお世話になってます。
「まあ全く触ったことないわけじゃないならなんとかなるよ〜」みたいなノリでPHPやRubyの仕事のアサインもらってしまったんですが、これなかったらたぶん仕事ができてなかったです。
Docker composeの設定読ませることができたりで「ほんと頭いいな……」みたいな、あたまわるい感想ですがとても助かってます。
その他(良かったけどそんなに語ることがない)
[PC] MacBook Pro 13inch (2018)
スリープがベンリ2[椅子] コンテッサ セコンダ
元がボロだったので座っていられる時間増えました。メッシュタイプにしたので湿気が籠もらなくて快適[ディスプレイ] Eizo FlexScan 2785
ディスプレイとPCの接続がUSB Type-C一本で済むのがすごく良くてMacBook Proの電源ずっとカバンに放り込んでおけてます
ArchLinux libalpm.so.10: cannot open shared object file を踏んだので解消する
libalpm.so.10: cannot open shared object file
パッケージを更新しようとしたらpackage-queryでエラー
$ yaourt -Syua --noconfirm :: Synchronizing package databases... core 129.4 KiB 2.11M/s 00:00 [######################] 100% extra 1610.1 KiB 4.37M/s 00:00 [######################] 100% community 4.4 MiB 3.61M/s 00:01 [######################] 100% multilib 172.0 KiB 2.95M/s 00:00 [######################] 100% archlinuxfr 11.5 KiB 3.75M/s 00:00 [######################] 100% Foreign packages: - 10 / 10 ==> Package upgrade only (new release): (中略) package-query: error while loading shared libraries: libalpm.so.10: cannot open shared object file: No such file or directory ==> ERROR: unable to update
うーんそこらへんのファイルをいじった記憶はない、ということで検索すると、package-queryをビルドし直せとのこと1
解消するために package-query
をビルドしなおします
pushd /tmp wget https://aur.archlinux.org/cgit/aur.git/snapshot/aur-98ce2515ad81e9d7efd444d4d61dfe00f5701100.tar.gz tar xvf aur-98ce2515ad81e9d7efd444d4d61dfe00f5701100.tar.gz cd aur-98ce2515ad81e9d7efd444d4d61dfe00f5701100 makepkg -i
package-query 落としてきて2、tar解凍してビルド
(中略) ==> Finished making: package-query 1.9-3 (Wed 30 May 2018 10:39:00 PM JST) ==> Installing package package-query with pacman -U... loading packages... resolving dependencies... looking for conflicting packages... Packages (1) package-query-1.9-3 Total Installed Size: 0.06 MiB Net Upgrade Size: -0.02 MiB :: Proceed with installation? [Y/n]
インストールすれば終わりですお疲れ様でした
余談
この記事自体しばらく使ってなかったラップトップPCでビルドし直すのに楽するために書いていて、コマンド履歴と起動しっぱなしのターミナルからコピってきたので参考リンクがシュッと出てこない……
調べてる最中に「俺はシンボリックリンクを作って直したぜ」「おいやめろ」みたいなやり取りが見れて楽しかったので思い出したい、思い出したい気持ちです
-
ページが思い出せないのでリンクがありません↩
-
snapshotを落としてくるときに AUR (en) - package-query とか通った気がするのでよくわからないダウンロードリンクではなく自分でこれだと思う自分だけのpackage-queryをダウンロードしてください↩
GithubアカウントのSSH接続鍵を使い分ける
設定
SSHのconfigで別のHostを用意し、別の鍵を指定する
$ cat ~/.ssh/config
Host github.com Hostname github.com User git IdentitiesOnly yes IdentityFile ~/.ssh/github Host hoge.github.com Hostname github.com User git IdentitiesOnly yes IdentityFile ~/.ssh/hoge/github
Hostname
はgithub.comのままで、Host
だけ別名に変えます
接続
あとはremoteのurlに hoge.github.com
を使用すればOK
例としてhttps://github.com/tjmmm/DotFilesをcloneする場合をあげます
Host【github.com】に使用した鍵を使ってclone
git clone git@github.com:tjmmm/DotFiles.git
Host 【hoge.github.com】に使用した鍵を使ってclone
git clone git@hoge.github.com:tjmmm/DotFiles.git
既にリポジトリがある場合は git remote set-url
を使って書き換える、origin以外のurlを追加する等でも良いと思います!
なぜこんなことを?
Q: こんなのわざわざする必要あるの?
A: 事情があれば別アカウントを使用しなければならないこともあります、ありますよね。プライベートリポジトリの権限もらったりするのにアカウントがわけられてしまうとかね。(少し悲しい)
Q: 接続先の設定にSSHのconfig使うのは当たり前じゃないですか?
A: よく別ドメインのために設定したりはしてましたけど、同じドメインでも使えるじゃんみたいなのを完全に見落としてました、ということですやめやめ!!!
以上です
お疲れ様でした!
Android NDK(Cmake)を使ったプロジェクトで native libraryのsoの場所を android_gradle_build.json を使って探す
小ネタです。プロジェクトのフォルダで以下のコマンド叩けばsoの場所がわかります。
Linuxです。楽したいのでjqも使ってます。
例:
$ find . -name "android_gradle_build.json" | grep debug | grep armeabi-v7a | xargs jq '.libraries | .[].output' "/home/kaki/Practice/Android/GlApplication/app/build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so"
途中に挟まってるgrepを消すと、各flaver、各abiのjsonファイルが見つかるはずです。
そもそも出来る場所くらい知ってるよという話はあってそれはそうなんですが、勝手に用意してくれる android_gradle_build.json
からコンパイルオプションだとかファイルだとかが取れるので何か便利に使いたいなーという気持ちがありました。
android_gradle_build.json
については
CMake | Android NDK | Android Developers
に記述がありました。そのほか「releaseビルドでもstripされてない(APKにするときにstripされる)」とか、一通り読むとへぇ〜な事が書いてありました。 上の例ではsoの場所を出してるだけですがそれなりに情報が入ったjsonになってます。
buildCommandとか書かれてるので、ここらへんに何かねじ込んで実験してみるのも面白そうですねどうなるんでしょう
GlApplication find . -name "android_gradle_build.json" | grep debug | grep armeabi-v7a | xargs jq '.libraries' { "native-lib-Debug-armeabi-v7a": { "abi": "armeabi-v7a", "artifactName": "native-lib", "buildCommand": "/home/kaki/sdk/android-sdk-linux/cmake/3.6.4111459/bin/cmake --build /home/kaki/Practice/Android/GlApplication/app/.externalNativeBuild/cmake/debug/armeabi-v7a --target native-lib", "buildType": "debug", "files": [ { "flags": " --target=armv7-none-linux-androideabi --gcc-toolchain=/home/kaki/sdk/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 --sysroot=/home/kaki/sdk/android-sdk-linux/ndk-bundle/sysroot -Dnative_lib_EXPORTS -isystem /home/kaki/sdk/android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /home/kaki/sdk/android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -isystem /home/kaki/sdk/android-sdk-linux/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -isystem /home/kaki/sdk/android-sdk-linux/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=23 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++14 -fexceptions -O0 -fno-limit-debug-info -fPIC -c ", "src": "/home/kaki/Practice/Android/GlApplication/app/src/main/cpp/native-lib.cpp", "workingDirectory": "/home/kaki/Practice/Android/GlApplication/app/.externalNativeBuild/cmake/debug/armeabi-v7a" } ], "output": "/home/kaki/Practice/Android/GlApplication/app/build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so", "toolchain": "2304076354519640188" } }
NDK使った開発も compilation_database みたいなものが入って、どんどんベンリになっていくのは嬉しいですね! そんなに開発してないですけど!!
以上です、お疲れ様でした。
Thinkpad T460s で ArchLinux の カーネルを 4.13.3-1 にしたら正常にシャットダウンできなくなったときの話
解決(回避方法)を見つけたし、現在 core に上がっている linux 4.13.5-1
では問題は発生しませんが最近書いてないなと思ったのでメモを残します。
発生していた問題&回避方法
ArchLinuxでKernel 4.13 から shutdown ができない(しても最終的に電源が切れるところまでは行かない)状態だったんですが、 "intel_iommu=off" をgrubのオプションに設定すればとりあえず解消することを確認しました
— tjmmm (@norikakip) 2017年10月8日
昨日Coreに降りてきた linux 4.13.5-1 にiommuを有効にしない config update が入っているようなので安心してUpdateしてください(?) https://t.co/ICdiUYeBfd https://t.co/qPIG3RAzuQ
— tjmmm (@norikakip) 2017年10月12日
備考
shutdown したときに cgroup: group2: unknown option ""
とか出たあと数行画面に進行状態を出した上で進まなくなっちゃう状態でした。
ただ、 この表示は別問題で 、shutdownが最後まで正常に終わらないのは別の要因だったのです。なんてまぎわらしいんだ!(ちゃんと調べましょう
この問題は所有しているThinkpad X230では発生しなかったこと、Dell XPSや最近のLenovo Thinkpadでの発生報告が多いこと、少し前にSumsung PM961でATSの問題を踏んだことから、「またnvme ssd絡みかなー」なんて勝手に思ってたんですが バグ報告とか見る限りYoga460とかT460とかでも起こっているようで、じゃあ何が原因なんだろうか…という感じによくわかっていません。
年内にちょっとここらへんのハードに近い保護機能を調べてちょっとまとめたいなと思いつつ終わり
参考
Arch Linux Android Studio cmake "OPENSSL_1.0.0 not found" を解決する
/usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found
Error:FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':project:externalNativeBuildCleanDebug'. > Build command failed. Error while executing process ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake with arguments {--build ${HOME}/Project/project/.externalNativeBuild/cmake/debug/armeabi --target clean} ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake: /usr/lib/libcrypto.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake) ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake) ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake: /usr/lib/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by ${HOME}/sdk/android-sdk-linux/cmake/3.6.3155560/bin/cmake) * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
適当にアップデートしてたら遭遇してしまいました。
とりあえずぐぐると一番上にStack Overflow、さすが。
この中ではopensslパッケージをダウングレードすれば良いと書かれてますが、個人的に嫌でした。
下の方までスクロールしていくと「studio.shを編集する」という回答があります。
これでも良かったんですが、Android Studioのアップデートでパッチを当てるたびにconflictが出るのもめんどくさそうなので、別の対処法を取りました。
対処法
opensslをビルドして専用のディレクトリにインストールする。起動時にLD_LIBRARY_PATHを指定する。
微妙といえば微妙ですが、Android StudioやArch Linuxのパッケージアップデートのたびに問題起こるよりマシな感があったので……。
- libresslをダウンロードする。
- インストールフォルダを指定してビルドする。
- インストールする。ちょっと小細工する。
- 起動時に
LD_LIBRARY_PREFIX
で専用ディレクトリを指定する。
∠( ゚д゚)/
1. libresslをダウンロードする。
wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.5.4.tar.gz
2. インストールフォルダを指定してビルドする。
cmake
を使っているので./configure
を使う場合は適宜読み替え。
tar xvf libressl-2.5.4.tar.gz mkdir libressl-2.5.4-build && cd libressl-2.5.4-build cmake -D CMAKE_INSTALL_PREFIX=${YOUR_INSTALL_DIRECTORY} ../libressl-2.5.4 make -j`nproc`
3. インストールする。ちょっと小細工する。
CMAKE_INSTALL_PREFIX
をつけてるのでmake install
すればインストールはできるんですが、
Android Studioで入るcmake
はlibXXX.so.1.0.0
を探すようです。
インストールしても上記のシンボリックリンクは作られないので適当に作ります。
make install cd ${YOUR_INSTALL_DIRECTORY}/lib ln -s libssl.so{,.1.0.0} ln -s libcrypto.so{,.1.0.0} # libtlsは使わないのでスルー
4. 起動時に LD_LIBRARY_PREFIX
で専用ディレクトリを指定する
自分の起動方法に合わせて読み替えて下さい。僕はDesktop Entryから起動するので、
vim ~/.local/share/applications/jetbrains-studio.desktop
ファイルの内容は以下ですが、${HOME}
や${YOUR_INSTALL_DIRECTORY}
のようなシェル変数の書き方をしてる部分は実際のパスに置き換えて下さい
[Desktop Entry] Version=1.0 Type=Application Name=Android Studio Icon=${HOME}/Tools/android-studio/bin/studio.png Exec=env LD_LIBRARY_PATH=${YOUR_INSTALL_DIRECTORY}/lib "${HOME}/Tools/android-studio/bin/studio.sh" %f Comment=Develop with pleasure! Categories=Development;IDE; Terminal=false StartupWMClass=jetbrains-studio
Execのところでenv LD_LIBRARY_PATH=${YOUR_INSTALL_DIRECTORY}
を指定してます。
これで解決しました。お疲れ様でした。
Rust: bindgenで生成したコードのdoctestがコケる
RustでCのラッパーライブラリを作ろうとしてたときに発生しました。
以下で対処
[lib] doctest = false
をCargo.toml
に書き加える。
そもそもコメント形式が違うのになんでdoctestに引っかかってるのかはわかってないけどモチベがないのでこれでよしとする。
20170410 00:18 追記:
普通にbindgenにコメント生成しないようにするメソッドがありました
for fname in &files { let _ = bindgen::builder() .header(format!("{}/{}.h", &header_dir, &fname)) .raw_line("pub use super::*;") .hide_type("max_align_t") .generate_comments(false) .clang_arg("-std=c11") .generate().unwrap() .write_to_file(Path::new(&out_dir).join(format!("{}.rs", &fname))); }
手元で作業してるものはこんな感じになりました。ドキュメントはちゃんと見ましょうということで、はい。