MacBookAir(2018)のUSB-Cポートが利かなくなった
なんか書いてた気がしたけど書かれていなかったので紹介。
5月上旬になんかのアップデートを取った後、バックアップを取ろうとUSBのHDD(A-C変換)をつなげたところ、突然電源が切れるようになりました。HDDだけでなく、RGBの出力でも同じことが起きました。
ネットを見たりサポートに問い合わせるなどして本体のROM周りをリセットしたのですが、今度はUSB-Cに繋いでも外部出力ができなくなる問題が発生しました。
5/21
社外品のケーブルを使ってるから動かないのでは?とサポートに疑われていたのですが、修理窓口に持っていったところApple純正のケーブルでも外部出力が出来ないことが判明しました。現在このMacBookは入院しています。
変わりのMacBookも無いため、Windowsマシンに環境構築して使えるようにしています。少し前まではあまり良くない感じでしたが、最近はWSL2だったりWindows Terminalだったりと、大分良くなってきましたね。あとは夜フクロウが使えればいいのですが・・(OpenTweenがToken公開してるせいでSPAMに使われて使用停止になっている)
解決: Pythonのreadlinesで^Mを含む文字列を読み込むと、勝手に改行される
これがPython3特有なのかPython全体でそうなのかは知らないですが、うちの環境だと^Mを文中に含むファイルをreadlines()で読み込んだところ、改行が行われました。
環境
Windows10上のWSL2, Ubuntu 20.04
Python 3.8.2
ソース
データ
文字列で貼り付けると^Mが消えるので画像で貼ります。
結果
0 /⌒ヽ
1 / ´_ゝ`)すいません、ちょっと通りますよ・・・
2 | /
3 | /| |
4 // | |
5 U U
何が困るって、csvでデータを管理していて複数行に分けたくないのがあるので^Mを除去したいのですが、そもそも読み込んでる途中で改行として認識されるのでうまく読み込めないという・・
sedでも使って変換しろって話でしょうか。
2020/05/17 追記
上の記事を書いたところ、nishioさんからコメント頂きました。readlinesではなく、open関数の仕様だったのですね・・
ファイル開くときのnewlineオプションのドキュメント読んでください。デフォルトではその挙動です。
— nishio hirokazu (@nishio) May 16, 2020
On input, if newline is None, universal newlines mode is
— nishio hirokazu (@nishio) May 16, 2020
enabled. ... If it has any of
the other legal values, input lines are only terminated by the given
string, and the line ending is returned to the caller untranslated.
https://docs.python.org/3/library/functions.html#open
open(filename)をopen(filename, newline='\r\n')にしたところ、^Mで読み込み途中で改行されることはなくなりました。
m75q-1 tinyのACアダプタを65Wから90Wに変えた
m75q-1です。FHDになったせいか大分スコア落ちて ファイナルファンタジーXIV: 漆黒のヴィランズ ベンチマーク https://t.co/b3OEGRk51B #FF14 SCORE: 1561 1920x1080 高品質(デスクトップPC) DX11 AMD Ryzen 5 PRO 3400GE w/ Radeon Vega Graphics AMD Radeon(TM) Vega 11 Graphics(VRAM 2032 MB)
— しょうゆ/Yuki Y (@showyou) April 14, 2020
続いて95W ACアダプタ。って違いすぎじゃ ファイナルファンタジーXIV: 漆黒のヴィランズ ベンチマーク https://t.co/b3OEGRk51B #FF14 SCORE: 2534 1920x1080 高品質(デスクトップPC) DX11 AMD Ryzen 5 PRO 3400GE w/ Radeon Vega Graphics AMD Radeon(TM) Vega 11 Graphics(VRAM 2032 MB)
— しょうゆ/Yuki Y (@showyou) April 14, 2020
他のblogでも言われている通り、m75q-1 tiny(Ryzen3400ge)のGPU性能はACアダプタ変えるだけでグンと伸びますね・・
当然ですがCPUの性能は変わりませんでした。
Versa H17 と m75q-1 tiny
Versa H17は以前Geforce GTX 1060を別のケースに入れようとした時に、入らなかったので購入しました。確か送料込みで2700円くらいと激安。その割にはストレージの固定場所などしっかりしていて、前面端子と横幅広いのを除けばいい出来だと思います。これにRyzenとGeforce GTX 1060入れてます。
ただこれだと引っ越し等で持ち運ぶのが大変なのと、ちょうど価格も割安でガジェット好きの間で有名になっていたので、m75q-1 tinyを購入しました。
詳細はこちら(https://www.ragemax.com/2020/01/m75q-1-tiny.html)の記事をご覧になればわかるかと思いますが、
- nucを一回り大きくした程度のサイズ
- Ryzen5 3500GE
- 8GB DDR4 SO-DIMM
- 128GB M.2 SSD
- ギガビット有線LAN
- Windows 10 Home
- HDMI
- Intel 無線LAN
- 縦置きスタンド
以上の構成で、大体37000円程度でした(注:価格com限定モデルにしないとCPUが残念になります)。
下の写真は左がH17で右がm75q-1 tinyです。H17が大きいというのもあるんですが、ひと目でm75q-1 tinyの小ささがわかると思います。
1月末に予約して、当初は春節やコロナウィルスの影響もあって、発送が3月中旬となってました。それが2月末になって、急に翌日届くということになりました。
んでWindows環境でポチポチ操作してますが、色々速いですね。CPUもRyzenの4コア8スレッドで、GPUもintelのCPU内蔵に比べ相当速いらしいので、重いゲームをしなければこれで十分な気もします。
さて、他にもRyzen7 3700XとGeforce 1080 Ti積んだ高火力マシンがあるんだけど、H17マシンどうしよう・・
10年間溜まったPython2 Twitter botの技術的負債を返済した話
(この記事は以前Qiitaに書いたものの転載になります) この記事はPython2アドベントカレンダー(https://qiita.com/advent-calendar/2019/python2 )の12/23分の記事です。(え?Python2ってPythonアドベントカレンダーって意味で、Python2のカレンダーじゃないんですか?)
TL;DR
Python2で動いてたシステムをPython3で動くようにしましたている最中です
はじめに
10年ほど前に、Twitterで自動的に応答する人工無脳を作成しました。この人工無脳はマルコフ連鎖によるテキストの自動生成と、特定の文字列に対する返信する機能をもっていました。
しゅうまい君ほど注目は浴びていないですが、一時期は(自分の知らない間に)NHKに取り上げられたりはしました。その時身につけたデータ収集に関する知識や自然言語処理の初歩知識等は、その後のキャリアに生かされております。 その後、東日本大震災の影響もあり自宅でマシンを常時稼働しておく余力も無くなったため、テキストの自動生成機能は止めて応答機能だけ残しております。 そうこうして10年近く回してきたのですが、Python2が2020年1月でメンテされなくなるのと、Python3の機能がそろって来たのとあり、Python3を中心としたシステムに置き換えることにしました。
構成
Before
After
ソース: https://github.com/showyou/docker-chatbot-lite/tree/add_db 使用に当たっては設定が必要なのと、一部まだ不完全なので、そこを後ほど修正します。
移行にあたって
Python2->3への移行は、割と簡単でした。ただし条件がありまして、Mecabを現在動かしてないのでその部分の移行は行っておりません。 うちのシステムの場合、Python2から3へ移行した時に変更した箇所は、次の部分くらいです。 - Print関数に()をつける - Unicode関数を削る
SQLAlchemyをバージョンアップさせた際にも、少し手直しが発生しました。 - BigIntegerが桁数を引数に取らなくなっているっぽいので、引数削除
他にも - tweepyのauth.access_token.keyがauth.access_token, 同access_token.secretがaccess_token_secretへ変わってるので変更
KVM(QEMU)からdockerへ
これは別にコード化してモダンにしようと思ったわけではありません。Ubuntuをアップデートした時にQEMUの仮想マシンのネットワーク機能がおかしくなり、否が応でも変えざるを得ないからでした。
Serverlessについて
今動かしてる部分のコードであれば、データを貯めるDBさえなんとかなれば自分のサーバは破棄してAmazonとかのFunctionサービスあたり使ってもいいかもしれません。ただしバッチで既存のデータを学習させるのに使えるのかどうかは怪しいところです。
JenkinsからDigdagへ
digdagのWebUIに認証機能がないので、セキュリティ的にはかなり心配です。
Python2を使うか3を使うか
時期の問題はあります。少なくとも今から新規で開発するのにPython2はありえないです。しかしPython3出たての頃は、色々機能が足りない部分があったりしたので、早期に「Python3に移行しろ」って言ってた人は筋違いだと感じます。
最後に
ありがとう、さようならPython2
・・と思ったらサポートが2020/1から2020/4まで延長してるんだけど!どういうことだよ! http://pyfound.blogspot.com/2019/12/python-2-sunset.html
参考
https://qiita.com/kojisuganuma/items/15a6c50c05d80fbd60b1 https://qiita.com/kanga/items/7f2849ad5a2a625a662c
12/24追記
場合、botのコンテナとmysqlのコンテナでネットワークが違って繋げないように見えるのですが、いかがなのでしょうか・・
DockerでGeforceを使ってSpleeterを回す
(この記事は以前Qiitaに投稿したものの転載になります。)
Spleeter(https://github.com/deezer/spleeter) という、python+Tensorflowを使った、音声分離アプリケーションがあります。これを使うと楽曲のファイルからヴォーカルだけを抜き出したりできます。
使い方も上のサイトやこちらに書いてあったりするのですが、nvidia-dockerが古いだとか、GPU使ってないだとかで決め手に欠けています。ですので今まとも?な方法のメモ書きを残します。(本当は漏れのない手順書を書きたいとこでしたが、実施から時間が経って記憶から抜けている部分もあります・・)
自分で構築するのが面倒な人は、参考の1, 2を使うとよいでしょう。ただし録音に使ったデータがクラウド上に保存されるのかどうかは保証できません。
動作確認環境
- AMD Ryzen 3700X
- ASRock B450M Steel Regend
- メモリ: 32GB
- (ブランド不明)Geforce GTX 1080Ti
- Ubuntu 18.04 server
- nvidia公式driver
導入手順
- nvidia driverを入れる
ホストマシン(Dockerを呼び出すマシン)にnvidiaの公式ドライバを入れます。おそらくCUDAドライバあたりも必要です。
- Docker ceを入れる
最新のnvidia-dockerがDocker ce 19.03を要求するので、入れます。Ubuntu標準dockerではダメです。 https://docs.docker.com/install/linux/docker-ce/ubuntu/
- nvidia-dockerを入れる
最近のはnvidia-docker2がdeprecatedされており、最新のnvidia-dockerではspleeterに書かれているコマンドでは実行出来ないので注意してください。
https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)
- spleeterを入れて使う
https://github.com/deezer/spleeter/wiki/2.-Getting-started#using-docker-image
nvidia-dockerではなく、docker run --gpus all等を使う必要があります(allは手持ちのGPUによって変えてください)。
例: docker run --gpus all -v $(pwd)/output:/output deezer/spleeter:gpu separate -i audio_example.mp3 -o /output
参考
spleeter使って分離してくれるサービス https://moises.ai/
Spleeterを簡単に使えるGoogle colaboratoryのノートを作成しました. https://qiita.com/Ryo0o0oOO/items/65acd38f4034800388c0