ふろ

ふろおとこといわれたりいわれなかったり

個人的にうっとおしいサイトを検索対象から外してググれるBotを作った話

闇の魔術ことSEOにより、低品質なブログがググると上の方に出てくる用になって暫く経ちますね。
いい加減イヤになったので「個人的にうっとおしいサイトを検索対象から外してググれるBot」を作りました。
(先行研究として、Chrome 拡張機能で自動的に特定のキーワード、ドメインを弾くものがありました。情弱なので使いこなせなかったです。)

仕組みは単純で Google検索の検索除外クエリを使用しています。
「ほげほげ -"hogehoge"」と検索する場合、"hogehoge"を含むページは除外されます。
「ふがふが -"site:http://fugafuga.com"」と検索する場合、"http://fugafuga.com"ドメインのページは除外されます。

Botでは検索ワードに除外クエリを付け足した、検索結果のURLを再生成しています。
生成した検索URLはハイパーリンクを埋め込んでいます。

開発言語はJava Script
Microsoft BotFramework を使っています。
フロントもAzure Web Appsに置いてあります。
詳しいことは割愛で…

ここから試せるのでご自由にどうぞ(飽きたら潰します)
no-ikagadesyokabot.azurewebsites.net

現状は「いかがでしたか」、「いかがだったでしょうか」、某プログラミングスクールのドメインを除外対象にしています。
ぷよぐらまーやっているので、初心者向けの情報として、低品質なサイトが検索上位に来るので非常によろしくないなぁというお気持ちです。

いかがだったでしょうか?
Google 検索の検索除外について解説しました。
皆様も良い検索ライフを…
ほしいものリストはこちらです。よろしくおねがいします。

amzn.asia MONA:PVLKJZtb1uj3AzXLcAJUXjqX85Z6fmfUm9

20190212 追記
C# C++ といった記号を質問文に入力すると、aタグの使用かなにかでエラーになることが判明
c#erすまねぇと思っているけど直すのめんどくさいというお気持ち

20190225 追記の追記 文字列エンコードすることを覚えたので c#も検索できるようになったよ ほめて

換気扇洗浄の記録

キッチンの換気扇を掃除した

表面のカバーだけでなく,ばらして内部のファンの油汚れを落とすところまでやった
くっそしんどかった

今回の作業手順のメモと来年こそは無理のない感じにしたいというお気持ちでいっぱいになった

使った道具

セスキソーダ
ゴミ袋
スポンジ
使い古しの歯ブラシ
割り箸
手袋

特に言うことはないが,セスキソーダは粉を買ってスプレーにしている
アルカリで手がやばいことになるので,手袋は必須です.

手順

  1. バラす カバーを外し,内部のフレーム?のネジを外し,ファンを固定している部品をはずすとファンがスルッと抜ける

  2. カバーの前処理
    基本はつけ置きで対応したいが相手は1年分の汚れである.
    軽く落とせるものは落としてしまいたい.
    セスキソーダを溶かしたスプレーをカバーに吹きかけスポンジで軽くゴシゴシ
    ここで重要なのは頑固汚れはスルーすることである.

  3. カバーをセスキソーダづけする
    ゴミ袋にセスキソーダとカバーを入れてからお湯をだばぁ
    このまま一晩放置する

  4. ネジ類を洗う
    小物にかける時間はあまりないのでサクサク進めよう
    セスキソーダ水に10分ぐらい漬け込んでブラシとスポンジでゴシゴシ

  5. 内部ファンの前処理
    1時間ぐらい漬け込んでブラシで擦るもギトギトのデロデロで歯が立たないため諦め,漬け込むことに ゴミ袋にポーンして,こちらも一晩放置

  6. 内部ファンを洗う
    漬け込んだ袋からいきなり取り出す前にバシャバシャかき回して浮いた汚れを物理的に場剥がすムーブ
    かなり汚れが浮いたのでびっくりした
    歯ブラシでこするも毛先が届かないので,割り箸パイセンを実践投入
    1時間ぐらい格闘して,若干汚れ残ってるけどまあいいかレベルにまで持っていけた 羽1枚1枚を相手にするとどこまでやっても終わらないから賽の河原かよってなった

  7. カバーを洗う
    前処理してあるし一晩漬け込んでいたこともありこちらは5分で終了
    ファンとの格闘のあとだったこともありスライム倒す感覚でプチっと

  8. ファンが入っている内部を洗い・・・たかった 手を入れるだけでしんどい.よく見えない.軽くこすっただけじゃ落ちない
    無理
    だれか掃除の方法教えて

これは「AIが生成し、インスタでそこそこいいねされ、一度ダウンロードしてから紙に印刷した写真」の写真である @裏メイカー祭

というよくわからないものを裏メイカー祭で展示していました.
来場していただいたみなさまありがとうございました

こんな感じでお店を広げていました.
びっくりするぐらい見栄えが悪いので今後の反省点ですね


画像投稿しているアカウントはこちらです.よかったら見てください.
相変わらず解像度の低い画像をTLにお届けしています.
www.instagram.com

最近は,PGGAN試したり,クローラーの品質向上を試みたり,伸びる画像の傾向を追いかけたりといろいろやっています
しばらくしたらいきなり品質がUPするかもしれないのでお楽しみに

裏メイカー祭は明日(8/5)も開催されます.
MFTのついでにぜひ足を伸ばしてみてください. www.shumi-tech.online

それにしても来場者のインスタアカウントの保有率の低さたるや...

超学会コレクションで発表する @ニコニコ超会議2018

昨年同様ニコニコ超会議の一角でポスター発表をしてきました.
今回は研究してみたマッドネスにも登壇しました.

今回のテーマは「Deep Learningでインスタクラマーを目指す」という頭の悪いことをやっています.
何を言っているかわからないだって...?
自分でもどうしてこうなった感が強いのは理解しているつもりだ

とはいえ,テーマのキャッチーさもあり多くの人に見てたので個人的には満足です

https://lh3.googleusercontent.com/R66i858lF7w4ERgJ4pNGKRPczCoLGCK9-X-0vY6JVjwrb1-NMOo7HiRxivqQy7QltMnQU9G8Qjz1U0hl2KKDU4Kzi0gP-F-0U5K7RCxuvXIWVg7UQypGIEym-GrrQ8ZFzg7C4jNzfRZteraMlVtTRSrtEXruQOle0rP7Noppd-NWeZK9t41Ri6IaRv048zNalxxELgdDLJMmnxUhSIGFwnH1qsIOgsFtTM8fipLnMV8korwPjquld25nC9Vjif8QM7nAg4jDAk1_q1x52T568OS0zDFsQC2EdiQ9UJJi3-N3NKqBcjW9BCRGXKSLWZMaqmoirKA4kGIjlY6cn_26WuqQBsQPpH1Npeh-R_bzFJILjitBUce3i7vLabRuWA8OXxZ3xbnf-28806k_h6AqtEa1Cz7i-zWvcM6H1J7kbXkdjx_V7LPqlx9HCWuhokZgqu0c3yEg8dZmTs57a6sIUtvoYmRroHd3bXUtPBWUWV904n7a449GtLok4c-mi0Kft6YzKhmevHr_Lz30alEPwvhhFRuHNI0BF2ll8Tug-WV6vhp1l9-rOEiyXSAZjJK8IzMQv90h-1S3f8j1P0iLiJ_g-yZM00bwq6kVW08=w519-h922-no

やったことはポスターに書いてあるとおり

DCGANで画像を生成し,生成した画像をインスタにUPするということをやっています.

画像をUPしているアカウントはこちら www.instagram.com

気が向いた方はフォローお願いします.

このプロジェクトはまだまだ試せることはいろいろありそうなので,もうしばらくやっていこうかなぁと思います.
(去年やってたやつは途中で飽きたという罠)

Windows10 に Chainer をインストール

どうも、わたしです

先日GPUマシンを組んだので、DeepLearning環境を構築しました。
マイニングしようとしたりしていたので、順番がぐちゃぐちゃだったりしますが一通りできたのでメモとして残しておきます。

今回は、構築時のハマりどころのメモとしてこの記事を残しています。

日時

2018年 2月10日

PCの構成

OS:Windows 10 Pro
GPU :GTX1080 Ti
cuda:9.1.85

参考記事

Chainer 4.0.0b1 on Windows10 with CUDA 9.0

qiita.com 非常に助かりました。ありがとうございます。

Anaconda

python3.6 版を選択
PATHが通ってなかったので通す
(通した記憶があるけどVisual Stdio2017入れたりした関係かその形跡が消えていた)

C++ コンパイラ

landinghub.visualstudio.com こちらをインストールし、pathを通す

path

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

CUDA Toolkit

たしかこれを入れた
CUDA Toolkit 9.1 Download | NVIDIA Developer こちらもpath を通す

path

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt

cuDNN

NVIDIA cuDNN | NVIDIA Developer
ダウンロード後、以下フォルダに追加

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1
開発者アカウントが必要なので作りましょう

cupy

cupyのインストールでハマりました。

pip install --no-cache-dir cupy==4.0.0b1 
Collecting cupy==4.0.0b1
  Downloading cupy-4.0.0b1.tar.gz (1.9MB)
    100% |████████████████████████████████| 1.9MB 12.6MB/s
Exception:
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
    return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\commands\install.py", line 324, in run
    requirement_set.prepare_files(finder)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 634, in _prepare_file
    abstract_dist.prep_for_dist()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 129, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_install.py", line 439, in run_egg_info
    command_desc='python setup.py egg_info')
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
    line = console_to_str(proc.stdout.readline())
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
    return s.decode('utf_8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\commands\install.py", line 385, in run
    requirement_set.cleanup_files()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\build.py", line 38, in __exit__
    self.cleanup()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\build.py", line 42, in cleanup
    rmtree(self.name)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 49, in wrapped_f
    return Retrying(*dargs, **dkw).call(f, *args, **kw)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 212, in call
    raise attempt.get()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 247, in get
    six.reraise(self.value[0], self.value[1], self.value[2])
  File "C:\ProgramData\Anaconda3\lib\site-packages\six.py", line 693, in reraise
    raise value
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 200, in call
    attempt = Attempt(fn(*args, **kwargs), attempt_number, False)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 102, in rmtree
    onerror=rmtree_errorhandler)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 494, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 384, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 393, in _rmtree_unsafe
    onerror(os.rmdir, path, sys.exc_info())
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 114, in rmtree_errorhandler
    func(path)
PermissionError: [WinError 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。: 'C:\\Users\\root\\AppData\\Local\\Temp\\pip-build-cumhw_mz\\cupy'

コマンドプロンプト文字コードをこちらの記事の手順に合わせて修正 qiita.com

再度実行するもインストールに失敗

コマンドプロンプトを使用せずにインストールする方法を考え、Jupyter notebook 上でインストールを試みました。

jupyter notebook 起動

jupyter notebook

Jupyter notebook 上でpip コマンドをたたく場合は先頭に!をつければ良いので

!pip install --no-cache-dir cupy=4.0.0b1
無事インストールに成功しました。 f:id:rgbten084:20180210183947p:plain

chainer

pip intall chainer

chainerは問題なくインストールできていました。

まとめ

文字コードが原因ならコマンドプロンプトを使わなければいいじゃない‼
パワープレーでなんとかなりました。

git 周りの整備がまだなので、一通り落ち着いたら正しく動くかを検証します。
追記等あれば記載します。

Unity 1 Week Game Jam 「フロー」に参加-流しそうめん食べたい

1Week Game Jamにさんかしました。

今回の作品

f:id:rgbten084:20170830121234p:plain 流しそうめん食べたい | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

流しそうめんの竹を配置して少年に食べさせるパズルゲームをつくりました。 どんなものかは遊んでもらった方が早いので、ぜひよろしくお願いします。 PCから遊べます。

製作に当たって考えた目標

  1. 前作が、人が見た時に説明なしでは理解できないような代物だったため、誰が見ても目的がわかりやすいゲームを作ること
  2. BGMや外部から見つけてきた素材を使うこと
  3. 出来る限り効率よく作ること

の3点を最低限の目標としていた

1日目~3日目 規格構想&調査

お題がフローだったので、フロー => 流れる => 流しそうめん とぱっと思い浮かんだからそこから広げていくことにした。

アイディアをまとめていったら
流しそうめんになって魔の手(箸)を避けるソーメンラン
・ そうめんをひたすら食べ続けるそうめんクリッカー
・ そうめん食べたいキッズにそうめんを届ける流しそうめんパズル
の3つが浮かんだ

そうめんクリッカーはハイコンテクスト過ぎて頭おかしいのでボツ
ソーメンランはソーメンの3Dモデル用意できる気がしなかったためボツ
となったため、そうめんパズルを作ることにした

企画まとめて2Dゲーム作るのがはじめてだったので、どこから手をつけるか調査したり(ビール飲んだり)していたら、水曜日が終わっていた。
あと気合を入れるためにunity2017にアップデートもした。

4,5日目 開発スタート

パズルの各ステージを素材作りながら、いちいち作るのは手戻りおきそうだから、事前に部品を作っておいて全部揃ったら一気にステージを作るという方針で進めることに。
画面を作ったり、イラストは後から乗せるとして、cubeで単体テストをやったりしてた

6日目 素材制作 & ロジック製作

おっしゃーイラレ使ってバリバリ素材作ってやんよと意気込んていたけど、BGM探したり、イラストを探してたりしたら、時間ないということに気づいた。
しょうがないからiPad Proと Apple Pencle使って手書きでゴリゴリと素材を作っていった。
すごく久々にお絵かきすると楽しい。
とはいえ、然るべきタイミングで然るべき道具を使える状態になっていなかったのはよろしくない。

7日目 ステージ製作 & 仕上げ

AEUロボコン見てたら、素材制作が一向に終わらず、全部揃ったのが日曜日の19:00ぐらい。
全然無理無理カタツムリ、絶対間に合わない。
サクッと終わらせてビール飲みに行こうと思っていたけど雲行きが怪しい。
そこから1ステージあたり30分ぐらい、素材を若干微調整とかしながらステージを作っていった。
各ステージごとにどういうギミックを仕込むかとかも考えていなかったせいでかなり行き当たりばったりのステージ構成になってしまった。
パズルアプリ作ってる人たちすごいなと改めて関心した。

なんだかんだ完成したところでローカルでビルドしたらビルドエラー
「もぅマヂ無理。 クラウドビルドしよ」となり、クラウドビルドに放り投げてその日は寝た

8日目(ロスタイム)

朝イチでビルド成功したことは確認し、昼休みに公開
なんとか無事完了となりました。

反省的

・ BGMつけたよ
・ 素材も自分で作ったよ。Colider自分で編集するの楽しい
・ 経験不足が表に出たことは間違いないのだが、段取りが悪かった。
GitHubにIssue書き出ししなかったから行き当たりばったりになってしまった
イラレ覚えよう
・ サブプロジェクト走ったほうがQOLが上がるフレンズだということがよくわかった。たーのしー

とまあこんな感じで8月の1 Week Game Jamのレポートです 来月以降も参加できるかな? わかんないや?