VivaldiでLastPassのVaultが開けないやつ

Vivaldiに乗り換えようと思ってLastPassの拡張入れたけど、Vaultがずっとくるくるしてた。

デベロッパーツール開いたらこんなんでてた。

f:id:Inaab:20170819204853p:plain

~/.config/vivaldi/Default/Extensions/hdokiejnpimakedhajhdlcegeplioahd/<version>/

SVGファイルを検索するとCircle_Success.svgが見つかるので、ファイル名だけ変えちゃったっぽい?

とりあえず、images/vault_4.0/以下のファイル名を変えるか、Tour/introTourDialog.html

<img src="images/vault_4.0/Circle_success.svg" class="family-onboarding-final-header-image">

を削除するなり、コメントアウトするなりすれば動く。

半年くらい人にプログラミングを教えて感じたこと

とあるプログラミングスクールで、アルバイトを初めて半年ほど。

基本的に、ぼくが教壇に立って教えていく、とかではなく、各自教材を見ながら学習を進めていき、なにかわからないことがあったらその質問に対応する形のスクールです。参加している人たちの多くは、プログラミング経験は全く無く、まれにPC操作もおぼつかないような人もいます。

その人たちに教える中で、教材や一般のプログラミング入門書籍には書いてない/なさそうなことだけど、重要だと思ったことを書きました。

コーディングスタイルについても教えるべき

ここで言うコーディングスタイルは、主に

  • インデント
  • 演算子前後のスペース
  • 変数/メソッド/クラス名

の3つです。特にメンタリングをしていて気になる部分なので、この3つをピックアップします。

前2つはJavaにおいては、インデントはスペース4つ、演算子前後にはスペースを入れる、というのが一般的かと思います。

プログラミングをやったことがある人は、インデントの大切さを知っているし、そもそも改行時にIDEが調節してくれるインデントを崩すこともないでしょう。 はじめのうちはプログラムの書き方がわからず、いろいろ処理を書いて試しているうちにインデントが崩れることも多々あります。 演算子の前後にスペースがなく詰まっている場合も同様です。(x+ yのようになっていたり)

今日日、自動フォーマット機能を備えていないIDEなんてないでしょうし、早めにその機能について教え、基本のスタイルは覚えさせるべきです。 可読性が向上し、自分のミスに気づきやすくなります。 また、kakeruとかwaruとかローマ字で命名している場合を見つけたら、それも早めに指摘しましょう。

これらが改善されていない場合、学習が進み、後半の複雑な課題をこなす段階で、メンターがコードレビューをするのに時間がかかったり、スクールを卒業して就職してから本人が苦労することになるので、早いうちに指導したほうがお互いのためです。

エラーの読み方を教える

初学者の多くはエラーがでても、その文を読みません。英語ででればなおさらです。

少なくとも、

  • 何行目の
  • どの部分で
  • なんて名前のエラーがでているか

の判別方法と調べ方は教えましょう。

IDEを利用していると、多くのエラーはその行に出るので、何行目、どの部分、についてはあまり教える必要がないかもしれません。 NullPointerExceptionIndexOutOfBoundsExceptionのようなメジャーなエラーは、その名前で調べれば比較的にすぐに解決するので、エラー名で検索することを教えましょう。何十分も同じエラーで詰まっているようだったら、解決に導いてあげましょう。

ちなみに、「初学者の多くがエラー文を読まない」ことには日本人であることとはあまり関係がないと思います。

stackoverflowで、「こんなエラー出たけどなにこれ?」とエラーに答えが書いてある質問を、流暢な英語できいている人がたくさんいるんです。 誰だって初めはエラーを読まない。(逆に言えば、こういう質問があるから、エラー名で検索すればわかることに繋がってる)

まとめ

自分がプログラミングはじめたばかりの頃のコードなんて残ってないし、人から言われずともなんとなくこの辺りはできるようになったけど、早めに教えてもらえるといいよね、と思いましたまる。

XF86WLANキーを押したあとにインターネットに接続できなくなる問題とその対処

今回もArch Linuxの話。とにかく今まで全部自動でやってたことを1から設定していて、何かあったときに対処法を思い出せないと困るので、細かくメモを残していく。

環境

以上でネット接続をしている。

現象

ThinkpadのFn+F8キー(xevで調べるとXF86WLAN)を押してWifiを無効化したのち、再度押して有効にしてもインターネットに繋がらない。

原因

bugs.archlinux.org

対処

dhcpcdを殺して、netctl-auto@<interface>.serviceをrestartする。

詳細

対象のキーを押した際、内部的にはrfkillコマンドのソフトブロックが有効になる。もう一度押せば無効になる。実際に試すと、以下のphy0のSoft blockedがyes/noで切り替わる。

[inab@x1]% rfkill list
0: tpacpi_bluetooth_sw: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
3: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no

ipコマンドで確認すると、IPアドレスは取得できているようだけど、pingChromiumでネットワーク接続がないと言われてしまう。

バグレポートページのコメントによると、dhcpcdが原因らしい。IPv4しか利用しない環境でも同様の現象が発生している。-4スイッチを削除すればいいって言ってるけど、そこら辺のいじり方がわからないのと、そもそも間違って押すことも少ないので、とりあえずは先述の対処でいいと思ってる。

Arch LinuxでAndroid開発環境構築

昨日に引き続き、Arch Linuxの環境構築の話。あとでまたOS自体のインストールをし直したりするとまた詰まりそうなのでメモ。

書いていて気づいたけど、普通にWikiに全部書いてあった。

基本的にArch Wikiに書いてあるとおりにやれば問題ない。

Android - ArchWiki

前提

SDKの管理はAndroid Studioに任せる。そのため、2.1 Android SDK コアコンポーネントの項から2.3 Androidシステムイメージまではすっ飛ばす。 ただし、エミュレータを使う場合は、2.1のノートに書かれているようにmultilibリポジトリは有効にしておく。

Android Studio

  1. yaourt -S android-studio
  2. 2.1や2.3を飛ばしているので、起動時にSDKパス指定ダイアログが表示されるが、この段階ではないので閉じる
  3. Tools -> Android -> SDKManager
  4. たしかインストールウィンドウが表示されたので、そのままインストー

最近は標準のエミュレータの性能もよくなってきているため、AVDマネージャから使おうとしたら起動できなかった。これに関しては後述。

ADBの実機設定

Wikiの通り。今回はudevルールを使った。

  1. pacman -S android-tools
  2. pacman -S android-udev
  3. USBデバッグをONにしたデバイスを接続してlsusbでベンダー、プロダクトIDをメモ
  4. Wikiのテンプレートを使って設定
  5. # udevadm control --reload-rules
  6. 接続し直して、このPCからのデバッグを許可するかでたらOK

adbuserのようなユーザ設定をするように書いてあるが、特にやらなくても動いた。

エミュレータの起動

BIOSから事前にIntel VT-xあたりを有効にしておく。

AVDマネージャから起動しようとすると、ウィンドウ下部に"Starting AVD…“のようなプログレスバーがでるが、そのまま起動しなかった。エラーメッセージも出なかったため、ターミナル上で実行して確認する。

export ANDROID_SDK_HOME=/home/inab/Android/Sdk  # SDKインストール時に変更しなければここにあるはず
cd $ANDROID_SDK_HOME/tools
./emulator -list-avds  # AVD名の確認
./emulator @Nexus_5X_API_21 --verbose  # 先程確認した名前を@以降に指定、ここではNexus_5X_API_22

glxinfo: command not found

これはWikiに書いてあるように、mesa-demosパッケージをインストール。

libGLに関するエラー

Wikiの"libGL error: failed to load driver: swrast"の項を参照。

自分はWikiのこの項に気づかずに相当時間を食った。

ncursesに関するエラー

AURのlib32-ncurses5-compat-libsが必要。yaourtコマンドで直接指定しても見つからなかった。ncursesのcompatライブラリ含めて全部一括で入るので、AURのaosp-develパッケージを入れると楽。

Androidビルドをするつもりがない人や、ミニマルに保ちたい人は個別でインストール。

Wikiの"Androidのビルド"の項にも書いてあるが、PGP署名のエラーがでるので、署名をインポート(gpg --recv-keys 702353E0F7E48EDB

まとめ

Wiki読め

urxvt + fcitxのインライン日本語入力

Thinkpad X1 Carbonの2017年モデルを最近買った。

今までX230iではDebianを使っていたけど、パッケージが古くて困ることがたびたびあったのと、かねてから試してみたいと思っていたArch Linuxをインストールした。そしてibusからfcitxに移行したものの、urxvt上でインライン入力できない。ターミナル自体で日本語を入力することはほぼないけど、Emacsでは入力することもたまにあるからどうにかしたかった。

Arch Wikiによると、.Xdefaultsに以下を設定すればいいらしい。

urxvt.perl-ext: xim-onthespot
urxvt.inputMethod: fcitx
urxvt.preeditType: OnTheSpot

これだけで動かなくてさらに調べていたところ、Ubuntu Japanese Team Wikiにfctix側の設定方法が書かれていた。

UbuntuTips/JapaneseEnvironment/Fcitx - Ubuntu Japanese Wiki

2つ合わせて設定することで入力できるようになった。

Fctix側の設定をしただけではできなくて、urxvtの設定もちゃんとしなきゃだめっぽかった。

なにはともあれできるようになってめでたしめでたし。

キンプラを観てきた

先日(3,4週間くらい前)、キンプラを観てきた。

こんなたわけたこと言ってて正直すまんかった。


初めての応援上映で面食らった

熱心なキンプリヤクザ布教者に誘われて映画を観に行ってきた。 前作のキンプリを一度学内某所の上映会で見ただけだったので、実際に全員が光る棒を持っている空間に自ら身を投じることに不安しかなかった。 いや、なんか堂本光一が応援上映観に行った!みたいな番組があって、Twitterに流れてきた動画をちょろっと作業の合間に横目で見た程度だったので、まったく理解してなかったわけで。 あんな熱狂的な空間だとは思わなかったわけで。

本当に、ほんとうに、すまんかった。

もはやキンプラ自体の感想というより、応援上映の感想みたいになってしまうけど、それくらい自分には縁のない空間だった。例えばアイドルのコンサート、声優のライブのようなオタクイベントに行ったことがあれば、光る棒を持つこともあったのだろうけど、自分がいくライブなんてもっぱらナッシングスとかそこら辺だったので、持ったこともない。そしてコンテンツターゲットが女性寄りなこともあって、完全にアウェー。

映画を見終わって、「こんな空間もあるんか……」くらいしか出てこなかった。

だって、なんか、スポンサーとか製作の名前出た瞬間に「ありがとーーーー!!!!!!」とか、画面暗転した瞬間に色変えるためにカチカチカチカチなってるとか、こういうコンテンツに触れないとわかんないでしょ。 そんなことに面食らってたら「まあ平日だから今日はおとなしいほうだったよね」みたいに言われるんですよ。

たぶんあの空間に溶け込むにはもう何回か行ったり、前作を見直すなどの修行が必要な気がする。


映画自体は普通に面白かった

応援上映で面食らったのはともかくとして、映画自体は普通に面白かった。前作上映会で観た時は、プリズムショーでの各種ジャンプ(無限ハグとか)がもう面白くて、ひたすら笑ってたけど、それに慣れてしまえばあとは作品本編のストーリーを楽しむ段階になる。

トーリーに関して、あまり言ってしまうとネタバレになるので多くは言えないけど、練習や修行を積んで技術的にも精神的にも成長していく姿が見えてとても良い(こなみ) 映画で時間が結構限られてるから、ストーリー部分で削られてしまった部分もとい軽く触れるだけになった部分も多かったんだろうな、と思うところもあったので、ぜひ続編だしてガンガン伏線など回収していってほしい。プリティーリズムを見ていないから、もともとそういう作品なのかはよく知らないけども。

曲はやっぱり良くて、個人的にはEZ DO DANCEが好き。 アレクの歌唱力が凄すぎる。 前作時点でうまいとは思ってたけど、映画館できくと更にうめ〜〜〜なんじゃこりゃ〜〜〜ってなる。 他の曲も良いんだけど、やっぱりこの曲、しかもアレクもとい武内駿輔さんの歌唱力に全部持って行かれた。

で、キャラが誰が好きかというと、これもアレクかな〜、と。 前作観た時点ではみんな同じ感じだったけど、今回の映画で「こいつ何やってんねんガッハッハ」って思った。 ああいう豪快な感じ嫌いじゃないよ。 曲につられてるのもあるのは否定しない。


まとめ

なんだかんだ書いたけど、これを読んで「お前ふざけたこといってんじゃねえぞ」という方が出てくるかも知れないし、「フフフこれでまたひとり……」みたいに思う人もいるだろうし、どう思われても構わない。

言いたいことは、続編でたら教えてくれ、ということだけ。

観たことないけど迷ってる人は、観ても損はないので観たら良いと思う。 そして、光る棒持って、振って、声援上げることに抵抗がなければ、応援上映を観に行くと良いと思う。 まだ、作品を細かく観れてないし、応援上映が初めてで内心オロオロしていた部分もあったので、どちらも観に行く「べき」とは言えない。 ただ、完成度は高いし、面白いので、観たら良いと思うよ!

あとプリティーリズムを観るとさらに面白くなりそうな要素が映画内に散らばっていたので、暇をみつけて観たいと思う。 「とりあえずオバレ結成まで観ればいいよ!」って言われたから、そこまで見るか〜〜〜〜〜。いや、さすがにグループ結成なんてすぐやろな〜〜()。

Cygwin + Anaconda + conda env

Windows (not cygwin)にインストールしたAnaconda (4.1.1)をCygwinzshでやろうとすると、初めいい感じにconda envが使えなかったのでメモ。もしかしたらAnacondaのバージョン上げたり、Cygwin上にAnacondaインストールすると動くかもしれない。

コマンドプロンプトとかPowerShell使えよ

コマンドプロンプトは動作キモいし、PowerShellはlsが常に-lオプションと同じ結果がでるのが嫌。

めんどいことをしたくないとき

cmderをインストールして、activate 環境名するとそのまま使える。mintty上では挙動が怪しいインタプリタも普通に使える。

なんとかできた方法

Cygwinbash.exeでsource activate 環境名とすると、何も出力がないし、環境も切り替わらない。zsh.exeでやると以下のエラーがでる。

Traceback (most recent call last):
  File "D:\Anaconda\Scripts\conda-script.py", line 5, in <module>
    sys.exit(main())
  File "D:\Anaconda\lib\site-packages\conda\cli\main.py", line 48, in main
    activate.main()
  File "D:\Anaconda\lib\site-packages\conda\cli\activate.py", line 105, in main
    shelldict = shells[shell]
KeyError: 'zsh.exe'

とりあえず、D:\Anaconda\Lib\site-packages\conda\cli\activate.pyにあるactivate.pyのエラー箇所をみると、conda.utilsパッケージのshellsにzsh.exeがないからエラーがでてるらしい。

そもそもの話、D:\Anaconda\Scripts\activateのファイルで、conda ..activateが実行されてるだけなので、そこをゴニョゴニョしてもいいかも知れない。 私はutils.pyのif sys.platform == "win32":以下のshellsに直接、

"zsh.exe": dict(
    unix_shell_base,
    exe="zsh.exe",
    binpath="/Scripts",
    path_form=cygwin_path_to_win,
    path_to=win_path_to_cygwin
),

を追加した。zsh.exeのプロンプトに環境名がでないけど、一応Pythonの実行ファイルは切り替わった。

感想

普通にcmder + bashで良いと思う。

追記(公開2分後)

pip切り替わってなかった。