walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

単一タブ内でページ更新後も情報を引き継ぐ

(初心者の私が)jsを扱う上で割とぶち当たる問題がページ更新やブラウザバック。 頑張って処理している途中に突如降りかかる F5 アタックを想定せずにフロントを書くことはできないと思う。 Webサーバでセッション管理していたり、そもそも処理のほとんどが…

今日のはてブホッテントリを表示するブックマークレット

ググったら腐る程出て来そうだけど、ネタがなさ過ぎてブログを全く更新していないのでカサ増し。 javascript:(function(){let t=new Date();location.href='http://b.hatena.ne.jp/hotentry/all/'+t.getFullYear()+('0'+(t.getMonth()+1)).slice(-2)+('0'+t.…

video.currentTimeの挙動

video = document.getElementById('video') console.log(video.duration) //=> 9.88 console.log(video.currentTime) //=> 0.0 video.currentTime = 1.0 console.log(video.currentTime) //=> 1.0 video.currentTime = 8.0 console.log(video.currentTime) /…

MacOS (High Sierra) の pyenv で pygame を使おうとするとキー入力が効かない問題

巷じゃ結構問題になっているようで、Python のバージョンを変えるとか、brew で Python 入れるとか、pythonw を使うとか、conda install python.app とか色々あるようです。 python - Pygame keyboard input issue - Stack Overflow Python pygameのキー入力…

TensorFlow.js を使って MicroExpNet をブラウザ上で動かしてみた

作ったもの。 github.com はじめに clmtrackr.js という、ブラウザ上で表情認識できてしまう、驚異的な技術があります。 github.com (デモはこちら) Webカメラの映像に対してリアルタイムで表情認識を行えます。 ただ、中身を見ると、流行りのディープラーニ…

TensorFlow.js で RGB2GRAY を実装する

TensorFlow.js の記事自体が少ないので、どんどん生成していきたい気持ちです。 とても基本的な機能ですが、意外と公式ドキュメント見てもささっとは実装できなかったので記録。 // rgb は Tensor const [r, g, b] = tf.split(rgb, [1, 1, 1], 2); const gra…

Saver.save で保存したモデル (checkpoint, data, index, meta) をプロトコルバッファ (pb) に変換する

かなり泥臭い方法ですが、自分なりに解決した記録です。 前提として、モデルの定義部分の Python コードが必要です。 要約すると モデル定義のコードと meta などからグラフ作成 tf.get_default_graph().as_graph_def().node を print してそれっぽいのを探…

GitHub PagesでWebページを公開する

要約 リポジトリの作成 index.htmlを直下に配置 リポジトリの「Settings」→「Options」→「GitHub Pages」→「Source」を「master branch」に変更 こんだけで公開できちゃう!すごい! 経緯など https://t.co/lRozhSloqP超便利じゃん。なんで今まで使ってなか…

自分のためのdocstring書き方メモ

こちらの記事をdocstringの書き方の参考にしているのですが、一覧でバッと見たいので自分のためまとめました。 [Python]可読性を上げるための、docstringの書き方を学ぶ(NumPyスタイル) class Cls: """ This is description of this class. Attributes ---…

Python3でIterableなオブジェクトの先頭にアスタリスクをつけてリストに入れる

具体的には、 [map(str, [1, 2, 3])] # > [<map object at ...>] [*map(str, [1, 2, 3])] # > ['1', '2', '3'] という感じ。関数にリストを渡すとき、リストの先頭にアスタリスクを付けるとunpackされるのは有名らしい(今日知った)。 しかし、この場合はそれに該当しない気が</map>…

PHPのクラスで、メソッド呼び出しに前処理を挟む

Pythonだとデコレータとかで簡単に実装できるが、PHPだとなかなか出てこなかったので。 前処理を挟みたいメソッドをprivateにして__callを使えばいいみたいですね。 stackoverflow.com テラテイルにも同様の回答があるのですが、コードが全く一緒で(むしろコ…

PHPでShift-JISで定義された文字列を列挙する

ググっても意外と出てこなかったので。 2) { $sjis .= $char; } } echo $sjis."\n"; SJISの16進コードを10進に変換してforを回す 10進 -> 16進 -> バイナリ -> UTF-8と変換する strlenで長さ…

【速報】Visual Studio Live Share Public Previewを早速試してみた

本日、Visual Studio Live Share Public Previewが公開されたので、@ryokka_ieくんと一緒に早速試してみました! code.visualstudio.com まずは、VSCodeを開いて「VS Live Share」をインストールします。 左側のメニューバーの一番下のアイコン"Extensions"…

Ubuntu 18.04 LTS、GeForce GT 730でnvidia-driverを入れる

すんなり入って欲しかったけど、ちょっと詰まったので記録。 以下の記事にしたがってnvidia-driverをインストール。 linuxconfig.org ubuntu-driversはapt install ubuntu-drivers-commonで入る。 ここで、nvidia-smiを実行すると、 NVIDIA-SMI has failed b…

GASとLINE Messaging APIで「My『文字起こし君』」を作る!(AIじゃなくてOCRで!)

どうも、GAS芸人のますくです。 今日、彼女とLINEしているとこんなメッセージが飛んで来ました。 URLはこちら。 【天才】LINEに画像を送信すると文字起こしするプログラムを作った人が話題に|オタクニュース んー、面白いアイディアですね! ってことで、例…

Google Apps ScriptでGitHubのProjectsの内容をSlackに流す

またGASネタです。GASの記事ばかり書いてて、GAS芸人になりつつあります。 下記の記事を見て、個人的に研究のTodoをProjectsで管理していて、それをSlackに流している話を書こうと思いました。 soudai.hatenablog.com GASなのでGitHubにコードをあげていない…

macOS High Sierra 10.13.4のアップデートで"The macOS Installation couldn't be completed"と怒られて正常起動できない問題の対処

macOS High Sierra 10.13.4にアップデート後、起動すると"The macOS Installation couldn't be completed"というメッセージが出てそれ以上進まないという状況に陥った。 セーフモードでは起動できるが、その後通常の再起動をしても改善せず。 apple.stackexc…

Google Apps Scriptを使ってGoogle CalendarをLINEに流す

こちらの記事の続きです。 walkingmask.hatenablog.com 結構はてブされていて、コメントで「スケジュールを円滑にする相手がいなくなってしまったため開発を中断...」の部分ばかり言及されていて大変恥ずかしい... しかし、スケジュールを円滑にする相手がい…

YAPC::Okinawaに参加してきました!

沖縄のヒートシンカーこと@codehex君に誘われて、ついにYAPC初参加してきました!! 三年前くらいからYAPCすごいよ行こうよと誘われていたのですが、Perlよくわかんないので毎回ふわりとかわしていました。 しかし、今年は地元沖縄での開催ということで、@ma…

MiniWobで遊ぶ: 強化学習xWeb

こちらの記事の続きです。 walkingmask.hatenablog.com walkingmask.hatenablog.com ソースコード等はwalkingmask/wobで公開しています。 強化学習xWeb 強化学習といえば、Atariを攻略したDQNやAlphaGOが熱いですね。DQNは、ディープラーニングで画像から特…

Google Colaboratoryを使って5分でディープラーニングを体験できる資料を作った

colabがすごすぎて、テンション上がった勢いで作ったいました。 作った資料はこちら。 ほとんどこの記事と同じ内容だけど、データの可視化や自分の書いた文字をpredictさせるとかこだわった。 時間計ったら、本当に5分弱でできそうだったので、どっかのLTと…

Google Colaboratoryでローカルにあるデータセットやモジュールを使う

簡単な例で、実践してみたいと思います。 まずは、ローカルで cat <<EOF >~/Downloads/data.txt 1,cat 2,bird 3,dog EOF cat <<EOF >~/Downloads/module.py def load_data(fn): with open(fn, 'r') as f: return f.readlines() EOF みたいなファイルを作って、Colaborato</eof></eof>…

Google翻訳のChrome拡張が想像以上に便利だったので感動をシェアしたい

今まで、わからない英単語があると、三本指でタップしてました。 (Macユーザなので、トラックパッドで「3 本指のドラッグ」を有効にして、単語を調べてました) これで満足してはいたのですが、たまに難しい単語だと、日本語訳が出てこないことがあって、ホ…

Python, requests-oauthlib で Twitter の自分のタイムラインの人気ツイートを Retweet

泣き言 post と get を間違えて結構時間つぶした インストール mkdir retweepy && cd $_ pyenv virtualenv 3.5.4 retweepy pyenv local retweepy pip install requests_oauthlib サンプルコード import json from requests_oauthlib import OAuth1Session CO…

Ubuntu+Nginx で certbot ワンライナー

バージョンは以下の通り。 $ certbot --version certbot 0.19.0 以下、ワンライナー。 sudo certbot --nginx certonly -d example.com --email walkingmask@example.com --agree-tos -n --nginx を使うことで、Nginx を止めて standalone をすることも、well…

cron の実行時に外部ファイルから環境変数を export する

問題 以下のようなファイルに定義された変数を環境変数として export して cron を実行したい (Python の os.environ.get() で使いたい)。 ENV1=1 ENV2=2 ENV3=3 cron に環境変数を渡す方法としては、以下のようなものがある。 source env;job bash -l job …

freenom で取得した無料ドメインを ConoHa の VPS に登録する

手順 VPS の起動、freenom でのドメイン取得は済ませてある前提で VPS の IP アドレスをメモ ConoHa コントロールパネル のメニューから "DNS" を選択 "+ドメイン" ボタンを押して "ドメイン名" に freenom で取得したドメインを入力して保存 表示されたテー…

学習済みの A3C モデルを使ってみる

github.com 上記の素晴らしいリポジトリの学習済みモデルを使って、A3C が Breakout をプレイする様子を録画したいと思います。いくつかバージョンが違いますが、とりあえず動いたので良し。まずはインストール。 git clone https://github.com/muupan/async…

macOS の top コマンドを CPU でソートする

デフォルトは PID でソートされているので top -o cpu で起動。~/.zshrc あたりに alias top='top -o cpu' にしておくとナイス。実行中に o -> cpu をタイプでもできる。

Python で動的にモジュール内のクラスを指定する

Python 3.5.2 で getattr を使って、モジュールから文字列でクラスを指定し、インスタンスを生成する。 ファイル構成は以下の通り temp ├── main.py └── agents ├── __init__.py ├── agent1.py └── agent2.py 各ファイルの中身 # main.py import agents def …