サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
walkingmask.hatenablog.com
Pythonだとデコレータとかで簡単に実装できるが、PHPだとなかなか出てこなかったので。 前処理を挟みたいメソッドをprivateにして__callを使えばいいみたいですね。 stackoverflow.com テラテイルにも同様の回答があるのですが、コードが全く一緒で(むしろコードと出力結果が違う)日付的にstackoverflowの方が先だし、出展とか書かなくて大丈夫なのかな?質問者のコードのクラス名がFooなあたり。。。 teratail.com 一応自分でも色々いじったので、コード掲載。 class ClassWithPreprocessingMethod { // privateにして外部から呼び出せなくしておくのがミソ private function preprocesing($args = []){ echo "前処理"; if(count($args) < 1){ ec
現在,ポートフォリオとしてWebサイトを作ってて,なんとなくIPアドレスのロガーが欲しいと思ったので作ったのをlog. 以下,phpのソースコード. <?php # embed code # <script src="logger.php"></script> $d = date('Y-m-d H:i:s'); $ip = $_SERVER['REMOTE_ADDR']; $str = $d." ".$ip."\n"; # log file requires permission 606 $fp = fopen("log.txt", "a"); fwrite($fp, $str); fclose($fp); ?> パパッと解説.上2行のコメントはhtmlに埋め込むコード.中3行が日付とIPアドレスの取得で,それを記録したい形に連結してる.終わり3行はファイル書き込み.パーミッション606の
自宅のサーバや Raspberry Pi を操作するために 20 インチもあるディスプレイを引っ張り出してきたり、ましてや机の上に置きっ放しにして場所を取らせるなんて真っ平御免だったので、小型のディスプレイを探して見つけ、買ったのがこちら。 DBPOWER バックモニター 7インチ HDMI出力可能 VGAポート搭載 1080P対応 PC/DVD/バックカメラなどに接続可能 車載用ミラーモニター リモコン付き 日本語説明書付き 出版社/メーカー: DBPOWER®メディア: この商品を含むブログを見る カーナビのモニターが主な用途の様子ですが、家庭用電源アダプタと HDMI ケーブルが利用できるので、HDMI を接続できる機器であればなんでも行けそうだと思い購入しました。 接続は電源と HDMI ケーブルを繋ぐだけで、Ubuntu 16.04 LTS PC の操作が難なくできました。 文字
convert wma audio files to mp3 using VLC command. VideoLAN - VLC: Official site - Free multimedia solutions for all OS! 例として/Users/$USER/wma/のwmaファイルを/Users/$USER/mp3/へmp3に変換して保存する場合.1ファイルにつき少し時間がかかる. wma2mp3.sh #!/usr/bin/env bash set -eu # vlc="/Applications/VLC.app/Contents/MacOS/VLC" cd /Users/$USER/wma/ for i in *; do if [ "$i" = "wma2mp3.sh" ]; then continue fi fn="${i%.*}" $vlc -I dummy --s
思いの外詰まった&パッとドキュメントが見当たらなかったのでメモ。 まず動画ファイルを作ります。 import cv2 fourcc = cv2.VideoWriter_fourcc(*'MP4V') writer = cv2.VideoWriter('./out.mp4', fourcc, 60, (80, 80)) for frame in frames: frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) recorder.write(frame) recorder.release() こうやって作成された mp4 拡張子のファイルは、まず Chrome で再生できません。 Python OpenCV video format play in browser - Stack Overflow じゃあ *'H264 ' に変更すれば良いかというと
CLI ツールを作るときに、設定ファイルを使いたい場合があると思います。 Python には argparse という素晴らしい CLI 用の引数パーサがありますが、設定ファイルの読み込みには対応していません。 configparser という設定ファイル読み込み用モジュールもありますが、argparse と連携させるのを想定されてません。 そこで、argparse に設定ファイルを読ませる方法を探しました。 Which is the best way to allow configuration options be overridden at the command line in Python? - Stack Overflow GitHub - bw2/ConfigArgParse: A drop-in replacement for argparse that allows op
ググっても意外と出てこなかったので、シンプルな実装をログ。より効率的なアルゴリズム、高パフォーマンスな方法が他にあることは明らかなので、見つけ次第追記していければと思う。 実験用リポジトリは以下。 github.com 画像の類似度 動画はただの画像の連続なので、基本的な仕組みは画像の場合と同じ。以下の記事が非常にわかりやすくて面白い。 qiita.com Perceptual Hashを使っている。 動画の類似度 では、何が違い、何が問題となるのか? 動画間の比較は、言い換えると「時系列関係を持った画像集合間の比較」なので、主な違いとしては、単体の比較か?集合の比較か?だと思う。 また、大きく問題になってくるのは、特に「動画間のフレーム数が異なる」点だと考えられる。例として FPS が違う 前後に異なるフレームがある トリミング 広告の挿入など コマ落ち 等によって、時系列情報に違いが出
手順 VPS の起動、freenom でのドメイン取得は済ませてある前提で VPS の IP アドレスをメモ ConoHa コントロールパネル のメニューから "DNS" を選択 "+ドメイン" ボタンを押して "ドメイン名" に freenom で取得したドメインを入力して保存 表示されたテーブルの "タイプ" が "NS" (NameServer) の "値" (おそらく 3 つ) をメモ テーブルの右上にある "編集" をクリックして "追加" ボタンを押して "A(通常), @, 3600, VPSのIP" を追加して保存 freenom で "Services" "My Domains" 対象ドメインの "Manage Domain" "Management Tools" "Namesevers" を辿って "Use custom nameservers (enter below
来る研究活動に備えて、先生方が口を酸っぱくしてい言っていた「バックアップは最低3箇所に」を実現すべく、Macのlaunchdを使って自動で3つのクラウドストレージに30分おきにバックアップを取るスクリプトと設定を作りました。 クラウドの準備 まずは、バックアップ先となるクラウドストレーじを準備します。必要となるのは、ローカルに同期用のディレクトリが作成されるクラウドストレージサービス。そこで、今回は Dropbox Google Drive iCloud Drive を使用しました。それぞれサインインして必要であればアプリをインストールして起動し、ローカルに同期ディレクトリがある状態にします。 ローカルでの準備 今回は、「作業中の大事なファイル」で「30分おきにバックアップを取る」ということで、ホームディレクトリ以下にWorkspaceというディレクトリを作り、そこにあるファイルのみをバッ
簡単な例で、実践してみたいと思います。 まずは、ローカルで 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 みたいなファイルを作って、Colaboratoryで from google.colab import files uploaded = files.upload() for fn in uploaded.keys(): with open(fn, 'wb') as f: f.write(uploaded[fn]) from module import load_data data = load_data('./temp.
どうも、GAS芸人のwalkingmaskです。 walkingmask.hatenablog.com walkingmask.hatenablog.com walkingmask.hatenablog.com GASいじる度に毎回思うのが「公開するときバージョン上げるのだるいな」です。 そこで今回新しいSlackボットを試作するにあたり、「Googleドライブ上に配置したJavaScriptをGASから実行する」ことによってGASバージョンアップをしなくてもコマンドや定期ジョブの追加ができるアーキテクチャを作って見たのでログっておこうと思います。 GASからGoogleドライブ上に保存してあるJavaScriptを実行する できるの?と思いますが、簡単にできます。eval使うだけです。 function doJS (JSFileName, args) { var scriptRoot =
散々既出ですが、自分用メモ。 拡張機能は不要で、実行環境はmacOS、sqlite3を使います。 以下、手順。 cp ~/Library/Application\ Support/Google/Chrome/Default/History ~/Desktop/ sqlite3 ~/Desktop/History 以下を実行 .mode csv .output chrome-history.csv SELECT datetime(last_visit_time/1000000-11644473600, "unixepoch", "+9 hours") as last_visited, url, title FROM urls ORDER BY last_visit_time DESC; これだけです。ポイントは Chrome を開いている状態だとファイルがロックされていて直接開けないのでコピ
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) //=> 0 video.currentTime = 1.0 console.log(video.currentTime) //=> 0 という謎の現象に遭遇🤔 WindowsのVirtualBox上のローカルサーバから配信している動画で、http://localhost/path/to/video.webm なんだけど
講義でやったのでlog. 実行結果 どういうことかというと,まずzshを起動してcdしまくる. Users/name% Users/name% cd Downloads Users/name/Downloads% cd cat_collection Users/name/Downloads/cat_collection% そして,ターミナルを終了したり,loginコマンドで再ログインなどすると Users/name/Downloads/cat_collection% でzshが起動するようになる. .zshrc ~/.zshrcの最後の方に以下のような記述をする. autoload -Uz add-zsh-hook add-zsh-hook chpwd chpwd_func function chpwd_func() { sed -i -e "s:^cd .* #catcat:cd $PW
平成コラ作成ツール作りました😇 平成最後の夏にクソコラ量産しましょう👍https://t.co/fgerWA3H2x pic.twitter.com/DTGgiPwySP— 升 (@walkingmask) 2018年10月8日 ツイートした後に気づいたけど夏終わってorz なりゆき "Trump draws" という面白画像のジャンルを友人に教えてもらい、平成バージョンを作りたいと話していたのが4月ぐらいのこと。 そこから少し時間を見つけて、画像等を準備して一旦放置して。 この三連休、主に土曜の午前中でほとんど実装しました。 時間配分はだいたいこんな感じ。 考案: 10分 画像等の下準備: 1時間 メイン機能の開発: 6時間 見た目: 5時間 デバッグ: 3時間 デザインセンスがないのと、css がよくわからないので、見た目作るのに苦労しました。 けど、作りたかったものを作れるのはこ
作ったもの。 github.com はじめに clmtrackr.js という、ブラウザ上で表情認識できてしまう、驚異的な技術があります。 github.com (デモはこちら) Webカメラの映像に対してリアルタイムで表情認識を行えます。 ただ、中身を見ると、流行りのディープラーニングは使ってないようです。(SVMとかなり少ないパラメータで表情認識してる感じ。間違ってたらすみません) そこで、ディープラーニングを使った表情認識モデルをWebブラウザ上で実行できないか興味を持ちました。 前々から、TensorFlow.js は知っていて、使ってみたいと思っていたので、こちらと組み合わせることも前提としました。 そうなると、モデルは軽量な方が良いと考えました。 調べると、MicroExpNet というモデルが「蒸留」という手法を使って、精度良いまま表情認識モデルを軽量化できたとのことでした。
macOS High Sierra 10.13.4にアップデート後、起動すると"The macOS Installation couldn't be completed"というメッセージが出てそれ以上進まないという状況に陥った。 セーフモードでは起動できるが、その後通常の再起動をしても改善せず。 apple.stackexchange.com に従って解消した。 Command ⌘ + R でリカバリーモードで起動 OSを再インストール (ディスクの中身を消すと言った操作は必要ない) 感謝。
すんなり入って欲しかったけど、ちょっと詰まったので記録。 以下の記事にしたがってnvidia-driverをインストール。 linuxconfig.org ubuntu-driversはapt install ubuntu-drivers-commonで入る。 ここで、nvidia-smiを実行すると、 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. のように怒られたので、以下の記事を参考にNouveau kernel driver をdisableにする。 qiita.com 再起動するとnvidia-smiが成功した。 おまけ 昔、ubuntu-dr
本日、Visual Studio Live Share Public Previewが公開されたので、@ryokka_ieくんと一緒に早速試してみました! code.visualstudio.com まずは、VSCodeを開いて「VS Live Share」をインストールします。 左側のメニューバーの一番下のアイコン"Extensions"から、"VS Live Share"を検索して、"Install"します "Installing"と出てからしばらく待つと"reload"というボタンが現れるので、クリックしてVSCodeを再起動します。 再起動すると、しばらくインストールが続くので待ちます。 それが終わると、ウィンドウの下の方のステータスバーに"Sign in"という文字が現れるので、これをクリックします。 (興奮して写真撮るのを忘れてしまっていました。。。) そうすると、ブラウザが開
またGASネタです。GASの記事ばかり書いてて、GAS芸人になりつつあります。 下記の記事を見て、個人的に研究のTodoをProjectsで管理していて、それをSlackに流している話を書こうと思いました。 soudai.hatenablog.com GASなのでGitHubにコードをあげていないのですが、雰囲気だけ記録したいと思います。 とりあえず見た目ですが、まずProjectsがあって、 変更があったりすると、Slack botがこんな感じでreportしてくれます。 この子(bot)がやってるのは、 Projectsで「カード追加」「カード移動」があった時にその内容をSlackに流す GASのトリガーを使って毎朝Projectsの内容を(長かった場合は省略して)流す です。 ProjectsのColumnやCardsをGitHub APIで取ってきてGAS経由でSlackに流してい
こちらの記事の続きです。 walkingmask.hatenablog.com 結構はてブされていて、コメントで「スケジュールを円滑にする相手がいなくなってしまったため開発を中断...」の部分ばかり言及されていて大変恥ずかしい... しかし、スケジュールを円滑にする相手がいなくなっていなかったので開発再開して数ヶ月運用していました。うぇい。 とはいえ、Go言語は全然触らなくなってしまっていて、Google Apps Scriptを使って実装しました。逃げた。 ソースはGistに1ファイルであげています。 今回、ちょこっとアップデートしたので、良い機会だしあの記事のシメとして記録。 見た目こんな感じです。 こんな感じで日付、天気と温度から始まって、以降にお互いの直近7日間の予定と、24時間以内に追加された予定を知らせてくれます。 foods:と投げると、登録した料理ジャンルからランダムに1つ
問題 以下のようなファイルに定義された変数を環境変数として export して cron を実行したい (Python の os.environ.get() で使いたい)。 ENV1=1 ENV2=2 ENV3=3 cron に環境変数を渡す方法としては、以下のようなものがある。 source env;job bash -l job 前者は env の中身が export ENV1=1 のような場合に使える。後者は bashrc などに定義された環境変数を使える。 しかし、ファイルを書き換えるのも (systemd の EnvironmentFile で使っている)、bashrc などに書き込むのも嫌。困った。 解決方法 export $(cat env_file | xargs); を使う。 */1 * * * * export $(cat ~/env| xargs);/usr/bin/
沖縄のヒートシンカーこと@codehex君に誘われて、ついにYAPC初参加してきました!! 三年前くらいからYAPCすごいよ行こうよと誘われていたのですが、Perlよくわかんないので毎回ふわりとかわしていました。 しかし、今年は地元沖縄での開催ということで、@mayutsuna君と一緒に国道58号線という川を泳いで、学生枠で突撃させていただきました。 体調的に厳しくて、残念ながら前夜祭・懇親会は参加できなかったのですが、簡単に感想書きたいと思います。(イベントはブログに書くまでがイベントです) 控えめに言って素晴らしかった! まず、弁当が最高でした(笑)ムッチャ美味しかった。これだけで参加した甲斐があります(笑)懇親会のご飯も食べたかった... 後はステッカー!大好き!ありがとうございます!頑張って貼るスペース探します。 個人的に面白かったと感じたのが新屋 良磨@sinya8282さんの正
今日は「gradio を使って昨日作った OpenAI TTS お試しツール を実装」していきたいと思います。 gradio とは? 人間的に簡単にまとめると、gradio は機械学習等のデモに必要最低限な UI を揃えた Web アプリ開発支援ライブラリです。自由度は低いが、ipywidget 並に簡単に UI を作ることができます。HuggingFace のデモとかによく使われているアレですね。 gradio を動かす 早速やっていきたいと思います。 Jupyter 上で動作確認できるらしいのですが、実行してみると となってしまいます。Docker コンテナ上で実行しているのでポートが空いてないせいかな?と思うのですが、原因を調べるのも後からポートを追加するのも面倒なので、7860 ポートをホストにバインドした Python コンテナを新しく立ち上げて、そちらで実行します。 docke
ちょっと躓いたのでlog. dnf install java-1.?.0-openjdk dnf install java-1.?.0-openjdk-devel今回の場合は1.8が欲しかったので dnf install java-1.8.0-openjdk dnf install java-1.8.0-openjdk-devel develをインストールしないとjavacが使えなくて躓いた. 参考にさせていただいたwebページ ・Fedora 23をインストールした後の環境設定まとめ
colabがすごすぎて、テンション上がった勢いで作ったいました。 作った資料はこちら。 ほとんどこの記事と同じ内容だけど、データの可視化や自分の書いた文字をpredictさせるとかこだわった。 時間計ったら、本当に5分弱でできそうだったので、どっかのLTとかでやってみたい。 おまけ 人工知能にMNISTを教え込むgifを、なぜか作ったので、いつか使う為に置いておく。
Python 3.5.2 で getattr を使って、モジュールから文字列でクラスを指定し、インスタンスを生成する。 ファイル構成は以下の通り temp ├── main.py └── agents ├── __init__.py ├── agent1.py └── agent2.py 各ファイルの中身 # main.py import agents def run(agent_name): agent_class = getattr(agents, agent_name) agent = agent_class() agent.hello() if __name__ == '__main__': run('Agent1') run('Agent2') # __init__.py from .agent1 import Agent1 from .agent2 import Agent2
1. メリークリスマス♪ クリスマスが今年もやってきました! みなさん恋人とイルミネーションを見て楽しんだりしてるでしょうか? 私はひたすらコタツに入ってぬくぬくする予定です。 ところで、みなさんは恋人とクリスマスにイルミネーションを見に行くといった予定を円滑に管理できていますか? 「え?行くって言ったよね?忘れたの?」 なんて言われておへそを曲げさせたりしていませんか? そんな恋人とのスケジュール管理にお困りの方にオススメなのが 「Google Calendar」 です! 共有設定をしておけば、お互いのスケジュールを一つのカレンダーで管理することができます。 support.google.com PC からの利用はもちろん、iPhone からも Android からもアプリとして利用できますし、ブラウザさえあればどこからでも利用できます。 しかし... 「え?予定追加したよね?見てないの
今まで、わからない英単語があると、三本指でタップしてました。 (Macユーザなので、トラックパッドで「3 本指のドラッグ」を有効にして、単語を調べてました) これで満足してはいたのですが、たまに難しい単語だと、日本語訳が出てこないことがあって、ホンノリ不自由を感じていたのです。 そんな時、英語や数学が苦手な方がAI論文輪読するときのノウハウ集という記事を読んで、Google翻訳のChrome拡張を入れてみました。 使い始めは、使い方がよくわからなくてイマイチだと思っていたのですが、拡張の設定で "My primary language" を日本語に設定して、"Immediately display popup" を選択し、単語をダブルタップで選択すると… うおおおおお!!!!!音声までついてる!!!!!!!!!!! ってすごく感動しました。 設定方法 インストールは以下から。 chrome
次のページ
このページを最初にブックマークしてみませんか?
『walkingmask’s development log』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く