Bootcamp Windows のWiFiがおかしくなった

MacBook Pro の Windows10 の WiFi通信が突然おかしくなった。結論としてはWiFiドライバーを古いものに戻すことで解消。非常にはまったのでメモ。

症状

ある日から自宅機器のうち Bootcamp WindowsWiFi通信にだけ以下の異常が発生。たぶんWindows Upadateしたのがきっかけだと思う。

  • Google, Youtube, Wikipedia 以外につながらない
  • というか正確にはサイトが開けないくらい超低速になる
  • LAN内のWiFi Web管理画面でも同じ
  • 試した限り全てのブラウザで再現
  • curl でも再現、レスが全然返ってこない

主な環境

  • NURO光ONUのF660のWiFiで発生
  • WiFiをTP-LinkのDeco M4にしても発生
  • Windows10は1909
  • macOSはCatalina

 ただし以下条件なら異常発生せず

  • macOS を起動した場合
  • AirmacExtremeのWiFiに接続した場合
  • Pixel3aにテザリングした場合
  • 有線LANの場合

解決策

WiFiドライバーを1つ前のものに戻したら解消した。手順は以下のとおり。

  1. バイス マネージャーを開き
  2. ネットワークアダプター > Broadcom 802.11ac Network Adaptor > プロパティ
  3. ドライバー > ドライバー更新 > コンピューターを参照してドライバーソフトウェアを検索 > コンピューター上の利用可能なドライバーの一覧から選択
  4. Broadcom 802.11ac Network Adaptor 7.35.118.73 を選択 > 次へ 

f:id:gelegele:20191207170644p:plain

巻き戻したあとにドライバーの更新をしてしまえばまた問題が再現してしまう。その場合は上記をやり直せばよい。ドライバー修正に期待。

heroku向けrubyアプリと環境変数

twitter apiなどを使うアプリではその認証情報が必要になるけど、これを直接コードに書いたままgithubでさらしてしまう等はよろしくないので環境変数を使いたい。そこでheroku向けのrubyアプリでの環境変数の使い方について調べたのでメモ、、、と思ったら@shimosukさんの記事を発見、ここにほとんど書かれてました。

Railsアプリで認証のための情報はバージョン管理に含めないために - 千鳥足プログラマーの歩む道@shimosuk

ということでここに書かれてないことだけメモ。

sinatraアプリのProcfile

sinatraアプリの場合はProcfileはこんな感じになります。

web: bundle exec ruby app.rb -p $PORT

さらにshotgunで起動する場合はこんな感じ。

web: shotgun app.rb -p $PORT

Procfileを指定

foremanのfオプションを使えば任意のProcfileを指定することができる。例えばProcfile.devというファイルを指定して起動するのはこう。

$ foreman start -f Procfile.dev

これなら通常起動とshotgun起動それぞれのProcfileを用意しておき任意で切り換えることが可能。

.envを利用してherokuの環境変数を一発更新

heroku上の環境変数の設定方法のひとつにheroku-configというプラグインを使う方法があって、これなら.envファイルを利用して一発設定ができて便利。まずはプラグインのインストールを。

$ heroku plugins:install git://github.com/ddollar/heroku-config.git

下記コマンドを叩くだけで.envファイル内で定義された内容がherokuの環境変数に反映されます。

$ heroku config:push

個々設定は手間だと思っていたのでこれは便利。詳しくはここに。
Configuration and Config Vars | Heroku Dev Center

POIでExcelのセルに色を付ける方法

JavaでPOIを使ってエクセル出力する際にセルに色を付けようとして少しはまったのでメモ。

ポイントは2つ。setFillPatternが必要だったことと、setFillBackgroudColorかと思いきやsetFillForegroundColorが正解だったこと。じゃあsetFillBackgroudColorは何なのかについてはわからず。

ジョブ制御コマンドたち

Linuxのジョブ制御コマンドたちをメモ。

コマンド 概要
& コマンドのお尻に付けて実行するとバックグラウンド実行になる
jobs ジョブ一覧表示
fg [%n] ジョブをフォアグラウンドへ。ジョブ番号省略時はカレントジョブが対象となる。
ctrl+z フォアグラウンドジョブをサスペンドする
bg [%n] サスペンド状態のジョブをバックグラウンドで再開。番号省略時はカレントね。
kill %n バックグラウンドジョブの終了
ctrl+c フォアグラウンドジョブの終了

Cygwinに.bashrcを読み込ませる

Cygwin環境変数を設定したかったのでそのやり方をメモ。

環境

Windows XP SP3
Cygwin 1.7.16
Cygwinのversionは uname -r で確認できます

.bashrcと.bash_profileを自分で作成

WindowsのスタートメニューからCygwinを起動した場合、WindowsユーザーのホームディレクトリがそのままCygwin上のHOMEになります。でもそこには.bashrcも.bash_profileも見当たらず。だから自分で作りました。ファイルの中身はこんな感じ。

.bashrc

export http_proxy=http://proxy.hoge.com
export no_proxy=localhost,.hoge.com

.bash_profile

source .bashrc

Cygwinを再起動したら2つの環境変数がenvに追加されてました。

Gitでローカル修正の入ったファイルをコミットさせない横着な方法

Gitでコミットさせないといえば.gitignoreですが、リポジトリに存在するファイルに対しては無力です。リポジトリ既存のファイルに手を入れたけどその修正は常にコミットしたくない、という状況での手間を省く方法を思いついたのでメモ。

何が不便だったか

例えばローカル作業がしやすいようにソースコードをおれおれカスタマイズすることがあります。当然そのファイルはコミットしてはならないので git add . などを気兼ねなく使うことができなくなります。そんな手間を解消する技はないかと調べてると、エイリアスでパイプが使えることを知りその応用でひとつの解決策を思いつきました。

git add .の代わりにadd + resetのエイリアスを使う

修正ファイルを一括ステージングする際に git add . に代わって下記エイリアスを叩くことでうまくいきました。ここではエイリアス名をaa、コミットしたくないファイルをhoge.txtとしています。
.git/config

[alias]
aa = !git add .|git reset HEAD hoge.txt

このエイリアスを叩くと、一度全ての修正ファイルをaddしてからhoge.txtだけステージから降ろすという処理になるので、何度叩いてもhoge.txtがコミット候補に上がることはありません。

ところがMacで問題が

しかし残念なことにこのエイリアスWindowsでは動いたんですがMacだと下記エラーになってしまいました。

fatal: Unable to create '/hoge/hoge/myproject/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

しかしindex.lockは見つからないのでおそらくパイプの同期がうまくいってないとかそんな気がします。試しにパイプの真ん中に余計な処理を入れてみたら...うまくいってしまいました。

[alias]
aa = !git add .|echo ...|git reset HEAD hoge.txt

かっこわるすぎ。でも今日はもうこのへんで。


それにしてもgitって便利ですね。最初は難解だったけど一度その敷居を乗り越えると戻れない楽しさです。

ログファイルをtailするWEBサイトを作ってみた。

デバッグ中にログファイルを確認するのにいちいちエディタ開くのがいやになったので、ログをモニターするWEBサイトを作ってみた。
Tail Monitor

要件

  • 指定したファイルをtailコマンド的に表示すること
  • 自動更新されること

実装

最初はアプリを考えてたけど、この要件ならブラウザでことたりるんじゃないのと気付き、HTML一枚で作ってbootstrapかませただけ。運用はherokuです。ソースはgithubにて。