動かざることバグの如し

近づきたいよ 君の理想に

PaintChainerをCPUだけで動かしてみる

自動で線画に着色してくれるすごいサービス、PaintsChainer

GPU環境じゃないと動かないと見せかけてCPUでも動くっぽいのでローカル環境で動かしてみた。

環境

  • Ubuntu Server16.04
  • Macでも動くけどOpenCVの環境揃えるの面倒だった
  • OpenCV3
  • このブログの過去記事でインスコ
  • Python 3.5.3
  • 3.5.0だとChainerがインストールできないので注意

Pythonのインストール

Ubuntuのデフォルトで入ってるPythonのバージョンが2.7だが、あまり環境を汚したくないのでpyenvで環境を用意する。

以下を参考にインストール

github.com

rbenvとコマンドは同じだが、 pyenv install 3.5.3 pyenv global 3.5.3 でおk

Chainerのインストール

以下参照

thr3a.hatenablog.com

ライブラリのインストール

pip install chainer opencv-python pillow

PaintChainerの実行

git clone https://github.com/pfnet/PaintsChainer.git
cd PaintsChainer
python server.py -g -1 -p 3000

これでhttp://localhost:3000を開けばサイトが表示される

オプション

optional arguments:
  -h, --help            show this help message and exit
  --gpu GPU, -g GPU     GPU ID (negative value indicates CPU)
  --mode MODE, -m MODE  set process mode
  --port PORT, -p PORT  using port
  --debug
  --host HOST, -ho HOST
  • CPUで動かす場合は-g -1を指定
  • vagrantとかローカルホスト以外で動かす場合は-ho 0.0.0.0をつける

マストドン(mastodon)のAPIを叩いて投稿

Mastodonとは

github.com

オープンソースで出来てたTwitterSNS。中身はなんとRailsとポスグレで動いてる。

サーバー構築さえすれば誰でもサービスを始めることができるのが特徴

投稿するには?

最終的に投稿(トッートっていうらしい)をAPI経由で行うには以下の手順を踏む必要がある。

  • OAuth2 クライアントを登録
  • アクセストークンを取得
  • アクセストークンを Authorization ヘッダに指定して投稿APIを実行

用意するもの

  • アカウント1つ
  • curlが叩ける環境(自分はMac

OAuth2 クライアントを登録

まずはマストドン側にクライアントの登録を行う。 Twitterと違ってClient Nameは重複してもOKっぽい。

curl -X POST -sS https://HOST/api/v1/apps \
  -F "client_name=CLIENT_NAME" \
  -F "redirect_uris=urn:ietf:wg:oauth:2.0:oob" \
  -F "scopes=read write follow"
  • HOST : マストドン側のホスト名 mstdn.jpとかpawoo.netとか
  • CLIENT_NAME : 好きなクライアント名 日本語もOKっぽい
  • scopes クライアントに与える権限のこと read write follow の三種類があり、半角スペース区切りで記述する

正常に登録らせれると以下のようなJSONが返却される

{
  "id": 4172,
  "redirect_uri": "urn:ietf:wg:oauth:2.0:oob",
  "client_id": "****************************************************",
  "client_secret": ""****************************************************","
}

client_idとclient_secretを使って次のAPIを叩くので控えておく

アクセストークンを取得

さっき登録したクライアントと投稿に使いたいアカウントの紐付けを行う

 curl -X POST -sS https://HOST/oauth/token \
  -d "scope=write read follow&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=USERNAME&password=PASSWORD"
  • HOST : さっきと一緒
  • CLIENT_ID : 最初のAPIで貰ったクライアントID
  • CLIENT_SECRET : 最初のAPIで貰ったクライアントシークレット
  • USERNAME : 投稿に使うアカウントのユーザー名 注意しなきゃいけないのは@hogeとかじゃなくログインに使うメールアドレス
  • PASSWORD : パスワード
  • scope : さっきと一緒

正常に叩ければ以下のように返却される

{
  "access_token": "******************************",
  "token_type": "bearer",
  "scope": "write read follow",
  "created_at": 1492271386
}

今度はaccess_tokenを控えておく

アクセストークンを Authorization ヘッダに指定して投稿APIを実行

ようやく投稿APIが叩ける

curl -F "status=hello world" -sS https://pawoo.net/api/v1/statuses --header "Authorization: Bearer ACCESS_TOKEN"

疲れた、、

Windows10でWindows Defenderのリアルタイム監視を完全無効化

もちろんセキュリティソフトを止めてノーガード戦法がいいはずないんだけど、たいていPCが重いなって時は「Antimalware Service Executable」とやらが勝手に暴走してCPUのリソースを喰いまくってる。

どうしてもってときに無効化したい人向け。

レジストリで無効化

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection で新規にキー名 DisableRealtimeMonitoring を作成

DOWARD型で値を「1」にすればおk

対象のレジストリファイルは以下からダウンロードダウンロードできる

https://www.tenforums.com/attachments/tutorials/23499d1436206328-windows-defender-real-time-protection-turn-off-windows-10-a-disable_windows_defender_real-time_protection.reg

コマンドから無効化

PowerShellを使う PowerShellのターミナルを開いて以下を実行すればおk

Set-MpPreference -DisableRealtimeMonitoring 1

三井住友VISAカードは別の意味でどえらいカードらしい

どえらいカードとは

昔のコピペにこういうのがある。

そんな事よりさ、昨日の夜に、会社の上司にキャバクラに連れて行って貰ったんだよ。 
俺と上司は数人の可愛い女の子に囲まれて楽しく飲んでたんだよね。 
しばらくしたら上司がサイフを取り出して 
「いいもの見せてあげるよ」 
とニヤニヤしながらサイフの中からアメックスのプラチナを出したんだよね。 
女の子達は 
「キャー!スゴイ!これってアメックスのプラチナだよね?」 
なんて騒ぎまくり。 
上司はニヤニヤしながら俺に 
「おまえは何かカード持ってるのか?ま、せいぜいビデオレンタル屋のカードくらいだろ」 
とニヤニヤしながら見下す。女の子達も大爆笑。 
俺は渋々サイフを取り出し、中から三井住友VISAカードを出した。 
時が一瞬止まった・・・ 
次の瞬間女の子達が俺を囲むように群がり 
「うそ・・まさか三井住友VISAカードを見れるなんて・・アメックスのプラチナの比じゃないわ・・・」 
と震えながら見つめる。店内の他の客、女の子も俺の周りに群がる。みんな口々に 
「初めて見た・・」「凄いステータスカードだ」と騒ぎまくり。上司は輪から外れて唇を噛み締め涙を流している。 
そのままアメックスプラチナをそっとサイフに戻し、一人コッソリと店を後にした。 
この後、俺は店の女の子全員をお持ち帰り。朝までズッコンバッコン。 
三井住友VISAカードをまんこに突っ込んだりもしてやった。 
突っ込まれた女の子は 
「ああ~ん!これがホンモノのVISAカードの快感だわ!おまんこの中で輝いてるわぁ~」と失神。 
ホントどえらいカードだよ。 

最近また見たら10個以上の派生コピペができてた なんてどえらいカードなんだ

が、しかし現実はひどいらしい

関係ないけど、Google日本語入力のサジェストに「どえらいカード」ってあるのね。やっぱり三井住友VISAカードはホントどえらいカードだよ。

RubyでGIF画像を生成する

ググっても日本語でいい記事がなかったのでメモ

環境

まず画像を2枚以上用意する 形式はimagemagickが読めれば多分なんでも大丈夫だと思う

usagi.png

f:id:thr3a:20170401115234p:plain

usagi2.png

f:id:thr3a:20170401115237p:plain

この画像と同一ディレクトリに以下のコードを書いて実行

require 'RMagick'
animation = Magick::ImageList.new('usagi.png','usagi2.png')
animation.delay = 100
animation.write("animated.gif")

こんな感じで一発でつくれる delayは短いほど切り替えが早くなる

f:id:thr3a:20170401115426g:plain