HTMLを取得して表示するプラグインを作ってみた

作ってみたかったので、vimのプラグインを作ってみた piruty/request.vim: Get and display parsed html in buffer autoloadとhelpテキストを書いてないので未完成… 参考にしたサイト Vim scriptでプラグインを作ろう 〜 Vimはいいぞ!ゴリラと学ぶVim講座(8) | さくらのナレッジ VimでAPIを叩く – 百蔵の部屋 Vim scripting cheatsheet Function Arguments / Learn Vimscript the Hard Way 何を作ったか? 引数で渡されたURLのサイトをGETし、取得したHTMLをパースして表示する ページ情報の取得には mattn/webapi-vim: vim interface to Web API を使用 レスポンスの中からBodyの情報を新しいバッファーに書き込み 書き込まれた内容を置換し、HTMLとしてパースする 次にどうするか? autoloadを整えて、プラグインとしてダウンロードできるようにする

June 18, 2022

シン・ウルトラマンを見てきた

シン・ウルトラマンを見てきた 感想 映像やアクションは良かった 怪獣は結構魅力がある 昭和ウルトラマンのノリが多いので、その点は注意 冗長な台詞回しやシーンが多く、ちょっとテンポ悪くない?と感じるところがあった 自分はちょっと合わなかった… 良くも悪くも「庵野秀明がやりたかったウルトラマン」という感じがした そういう感覚で見ると納得できる シン・ゴジラのような長大なストーリーや人間ドラマを期待すると違うかも 昭和ウルトラマンやその頃の特撮好きには刺さるんだろう

May 31, 2022

ModuleNotFoundError No module named '_lzma'

ScrapyでSpiderを動かそうとしたらエラーになった ModuleNotFoundError: No module named '_lzma' 参考 UserWarning: Could not import the lzma module. Your installed Python is incomplete - Stack Overflow 環境 MacOS M1 asdf poetry 対応方法 pythonを再度インストールし直す必要があった # `xz` は brewでインストール済み brew install xz # asdfでpythonをインストール asdf install python 3.9.12 asdf local python 3.9.12 # poetryをインストール pip install poetry asdf reshim # ライブラリをインストールし直して、Spiderを再実行 poetry install poetry run scrapy crawl xxx_spider

May 16, 2022

BeautifulSoupを使ってWikipediaの表をスクレイピングしてみた

きっかけ 今年のNFLのドラフト結果を集計したかったが、いい感じのAPIやデータベースが見つからなかった Wikipediaの記事が綺麗にまとまっていたので、これを使ってみることにした 2022 NFL Draft - Wikipedia 作ったもの piruty/NFLDraftDatabase Wkipediaの表を読み込んでpandasに食わせるところまでを実装 やってみた感想 久しぶりにスクレイピングを実装したが、表の読み取りが結構苦労した find_all(['th', 'td']) で複数要素を選択できることを知らず… 参考: 【Python】BeautifulSoupを使ってテーブルをスクレイピング - Qiita あとはwikipediaのソースを読みながら find / find_all で無理やり取得 BeautifulSoupの機能だけで実現できたので、このライブラリ優秀だな… 次にやりたいこと DataFrameに落とし込めたので、集計してみる 他の年のドラフト結果も取得してみる NFLのドラフト結果の考察を読む

May 14, 2022

YoutubeAPIで検索するCLIを作ってみた

作ったもの piruty/WakuwakuYoutubeAPI 参考にしたもの Youtube API YouTube Data APIの使い方 - Qiita Click Welcome to Click — Click Documentation (8.1.x) やったこと GCPでプロジェクトを作る APIキーを発行する YoutubeAPIの利用を許可する YoutubeAPIで検索する機能をPythonで実装 Clickを使った実装に修正 感想 検索するだけなら、APIキーを取得するだけでほぼ完了するのですごく簡単 生のURLを叩いてリクエストしているが、多分Youtubeの検索を実行するライブラリあるだろうなと思っている 未調査 次は、YoutubeAPIを実行した結果を元に一覧を表示する画面を作りたい

May 11, 2022

Flutterでカメラアプリを実装する

何故やりたかったか? カメラで撮った画像を色々操作するアプリを作りたい Flutterに興味があったのでやってみた 参考にしたもの 【Flutter】カメラ機能を実装する 大まかな実装はここを参考に [Flutter/Android]「エラー: シンボルを見つけられません・・・場所: クラス VERSION_CODES.○」の対処法 | プログラミング挫折撲滅プロジェクト・みんなのプログラミング by Telulu LLC(FlutterでiOS/Androidスマホアプリ開発) 一部エラーで動かなかったのでここを参考に対応 作ったもの https://github.com/piruty/flutter_camera_tutorials 写経して動かしただけ 感想 思ったよりも簡単にできた ライブラリのおかげ デバイスの機能を使うのでハイブリットアプリだと難しいと思っていた 次は、「撮影した画像を加工するアプリ」を作りたい 白黒加工・人の顔にフォーカスを当てる など

April 30, 2022

titan pocketの初期設定

初期設定前 Oppoでandroidバックアップを取る バックアップ機能が画面ロック有効だと動かず ロックを解除してバックアップは取れた ロック設定と指紋と顔の認証が紐付いていたので、全部消えてしまった… 初期設定 wifi設定してからバックアップから復元 アプリごとの設定は引き継がれなかったのでそれぞれ個別に設定 初期設定後 homeボタンの設定変更 デフォルト設定だとタイプ中にHOME画面に戻されることが多々起きたので設定 設定アプリ スマートアシスト → 更なる機能 → HOMEキー機能 「HOMEボタンをダブルクリックして画面をロックします」に変更 アシスタントアプリの無効化 HOMEボタンを押すたびにアシスタントが呼び出され、邪魔だと感じたので無効化 設定アプリ アプリと通知 → 詳細設定 → デフォルトのアプリ 「デジタル アシスタント アプリ」を「なし」に変更 Miniモード有効化 画面が小さくのアス比が1:1になってしまうので、一部アプリが正常に表示されない アス比を4:3ぐらいに調整してくれる機能 設定アプリ スマートアシスト → Miniモード 「オン」を有効化 スクロールアシスト有効 上下スワイプでスクロールできるようにしてくれる 設定アプリ スマートアシスト → スクロールアシスト 「スクロールアシスト」を有効化 キーボードショートカット有効化 画面サイズが小さいためHOME画面のページ数が多くなりがち よく使うアプリをすぐに起動できるように設定 設定アプリ スマートアシスト → キーボードショートカット 「キーボードショートカット」を有効化し、設定を追加 キーボードアプリ「AquaMozc for Titan」の購入 ネット検索して評判が良かったので購入 AquaMozc for Titan - Google Play のアプリ 【Titan Pocket】日本語入力が飛躍的に改善するAquaMozc for Titanを購入インストール【再追記】 - 伊藤浩一のモバイルライフ応援団 BiglobeモバイルのAPN設定 BiglobeモバイルのSIMを入れただけだと4Gで通信できなかった 「BIGLOBEモバイル」接続設定方法:BIGLOBE会員サポート

April 30, 2022

2022 Super Bowl LVIを視聴した。

どんな試合だったか? ロースコアの緊張感のある試合だった ジョーバロウは可能性を感じさせた 最後はラムズの自力が勝った 感想 活躍するべき人が活躍した試合 お互いトリックプレーもあり、見ごたえがあった 来年に向けて ブレイディはもういない… と思ったら、どうやら復帰するらしい ペイトリオッツのQBが気になる 古き良きパサータイプのQBに頑張ってもらいたい

February 19, 2022

Rustでエディタを書いている

2022/1からRustでエディタを実装している。 なぜエディタをかいているか? プログラマとしての成長の鈍化を感じていた時に、過去に所属した企業で教えてもらった「プログラマをやっていくなら、OS・エディタ・コンパイラは一度作ってみると良い」とアドバイスを思い出した。 これまではあまり気にしていなかったが、実際に調べてみると自分の知らないことも多く、またチュートリアルやドキュメントも多くあり、意外と実装できることがわかって楽しくなった。 何を元に実装しているか? 自分は「Kilo」というエディタのチュートリアルを参考にしている。 Build Your Own Text Editor ターミナルで動くエディタをC言語で実装する方法が説明されている。 外部ライブラリを使ったりはせず、本当にC言語のみで実装する。 基本的な編集機能からファイルの読み込み、検索やシンタックスハイライトまで、1000行程度の実装でありながらエディタとして最低限の機能は実装する。 また、シンプルな実装なので他の言語にも移植しやすいらしく、GolangやRustで実装されているリポジトリも検索すると見つかる。 なぜRustで実装しているか? まず、「ただ写経しただけでは記憶に残りにくいから」と言うのが大きい。 全く同じものを何度も繰り返すのはしんどいので、なにか変化を起こしたくてC言語以外で実装する事を考えた。 その上でなぜRustかというと、「書きたかったから」と言うのが大きい。 モダンだし、流行ってるし。 また、OSやコンパイラなどの実装にRustは向いている(と聞いた)ので、自分の興味の方向性にもあっていると思った。 自分が実装しているリポジトリ: piruty/rust_editor: Kilo editor in rust

February 13, 2022

Obsidianを使い始めた

Markdownの文章をまとめるのに、Obsidianというアプリを使い始めた。 なぜ、Obsidianを使い始めたか? 自分はもともとNotionを使ってドキュメントを整理していた。 Notion自体は高機能で使いやすいのだが、分報に近いメモを取りながら2窓してNotionのドキュメントを参照することに難しさを感じていた。 また、個人的にNotionは「特定の項目に対する内容を一つのページに纏める」という使い方をしているので、断片的なメモを書きなぐるのには使いにくさを感じていた。 そこで、Notionに変わるシンプルなエディタを探していて、今回Obsidianを使ってみることにした Obsidianの何が良かったか Obsidianの良かったポイントは大きく以下の3つ プラグインが豊富 VIMのキーバインドで使える ライブプレビュー機能がある 自分は以前もObsidianを使っていた時期があるが、ここ数年は使っていなかった。 今回改めて使い始めたところ、コミュニティが開発しているプラグインが非常に充実していることに気がついた。 ObidianはシンプルなMarkdownエディタだが、プラグインを追加することでカンバンを追加したり絵文字を挿入できるようになる。 カレンダーを表示させてデイリーメモと連携するプラグインもある。 プラグインを活用すればNotionぐらいには使えるようになるのでは…と感じた。 Obsidianは公式のプラグインでVIMのキーバインドがサポートされている。 開発もVIMで行っているので、同じ感覚でドキュメント操作できるのは非常に嬉しい。 ドキュメントを編集する限りにおいては違和感も感じることなく使えている。 また、ObsidianはMarkdownのライブプレビューに対応している。 つまり、Markdownのタグを書くとエディタ上で変換して表示してくれる。 NotionのMarkdownエディタの強みとしてこのライブプレビューがあると思っていたので、これをObsidianでも体験できるのでUXは非常に良い。 スマホとの連携 ここからはおまけ。 自分はAndroidを使っていて、こちらでもObsidianアプリがある。 できればPCとスマホを連携させたいと思い検索したところ、いくつか方法が見つかった。 一番かんたんなのは公式の同期機能を契約することなのだが、今回はGoogleDriveによる同期を試している。 PC側については、GoogleDriveのアプリを入れてローカル環境で同期できるように設定を済ませておく。 その上でObsidianのVaultディレクトリを同期している場所に置くだけ。 スマホでやるときは、GoogleDriveとは別のアプリが必要になる。 というのも、GoogleDriveの公式アプリはローカルとの同期機能を提供していないためから。 今回はAutoSync for GoogleDriveを使っている。 このアプリの設定を済ませれば、スマホの任意の場所でGoogleDriveとの同期ができるようになるので、先程のVaultディレクトリが動悸されるように設定する。 スマホ版のObsidianアプリもドキュメントの保存先をローカルのディレクトリから選択・読み込みが可能なので、上で設定した場所を選ぶ。 環境構築はこれで完了。 問題点といて、AutoSyncの自動同期は「バッテリーが十分にある・Wifiにつながっている」というときにしか動いてくれないので、これに当てはまらない場合は手動で動悸する必要がある。 これがちょっとめんどくさいと感じているので、他にもっと簡単な同期方法があればそちらに移行しようと思っている。

February 11, 2022