at backyard

Color my life with the chaos of trouble.

備忘録

Rustで簡単なスクレイピングコードを書いてみる

UnicodeがEmoji(絵文字)として定義している文字の一覧を取得したかったので、今回もRustを使って取得してみることにした。 取得対象のサイトは下記。 ja.wikipedia.org ここに一度だけHTTP アクセスをして、一覧 上の Unicode と書かれている箇所のテキス…

RustでRSS feedを取得する

RustでRSS feedを取得するサンプルを書いていく。 サンプルとしてはてなブックマークのテクノロジーページのrss feedを取得する。 b.hatena.ne.jp RSSの取得にはその名もスバリ rss というクレートを利用していく。 docs.rs またrssを取得するためにhttp req…

Rustを書くときの開発環境について(VSCode)

最近、再びRustを書いている。 使えるようにはなりたいのだが難しい...という心境をここ数年抱いており、やはり今回もそういうふうに感じつつも、今回こそはある程度使えるようになりたいという気持ちで頑張っている。 最近オライリーから2022年1月に出た『…

Rustでランダムな数値を生成する関数を作成する

Rustでランダムな数値を生成する関数のサンプル。 ランダムな数値を取得する場合には rand を使うと良いらしい。 標準ライブラリだけでも実現できないかと少し探してみたが、Rust初心者の自分としては下手に色々とやるよりは、まずは安定したやり方を取るこ…

Rustで2次元配列を作る、文字列の一文字一文字をループで回す、複数の型を返す関数を作る

今日leet変換のため簡単なコードを勉強がてらRustで書いた。 github.com このコードを書く中で調べたことを備忘録がてら、こちらにも残しておく。 なお、私はRust初心者であり、ここにメモしたコードが必ずしも行儀の良いコードであるとは限らない、というこ…

gitでまだコミットしていない状態で、間違えて add してしまったときの対象方法

gitでまだコミットしていない状態で、間違えて add してしまったときの対象方法について書いていく。 これが最適解かは分からないが、まあこれで良いか...ぐらいの温度感でこの対象法にたどりついたことは先に記載しておく。 (もしもっと良さげな方法があれ…

M1 Mac環境でsharpがインストールエラーになるときの暫定的対処メモ

目次 目次 前置き M1 Macでもsharpをインストールする方法(暫定対応) 前置き M1 Macは基本的に便利なツールだが、時としてM1ならではの困るポイントというのもいくつか存在する。 私の場合、それらは大抵プログラミングの最中になるのだが、今回のケースもそ…

Oracle CloudのVMインスタンスにnginxでwebサーバを建ててプロキシする。SSL化もする。

備忘録。 内容はタイトルの通りで、 Oracle CloudのVMインスタンス上でnginxをインストールしてWebサーバをたてる。 nginxの後ろに控えているアプリにプロキシする ついでにLet's Encryptを用いてSSL化もする(httpsでアクセスできるようにする) という内容で…

zipコマンドで除外ファイル・ディレクトリを複数指定する方法

今後の自分用に残しておく備忘録。 zipコマンドで除外ファイルやディレクトリを指定する場合は -x を利用する。 例えば下記のような形。 zip -r ./foobar.zip . -x "./.git/*" ".DS_Store" "baz" この場合、.git ディレクトリや .DS_Store や baz 等のファイ…

Oracle Cloud InfrastructureでDockerをインストールしてWebアプリを動かす備忘録

Oracle Cloud InfrastructureのVMインスタンス上でDockerで構築したアプリを動かすまでのメモ。 なお、別に Oracle Container Cloud Service というのあるらしく、そちらでコンテナを用いたアプリ管理はできるようだが、今回はVMインスタンス上で試してみる…

Node.jsのlogger、pino(pino-http)を試してみる。

Node.js(Express)でサーバアプリケーションを書くことになった。 せっかくなので今まで利用したことのないloggerを利用してみたくなり、pinoを試してみることにした。 getpino.io expressでpinoを利用する場合は pino-http を利用するらしい。 github.com pi…

gRPCでReceived message larger than maxというエラーメッセージにぶつかった際の対処法

gRPCで処理を書いていて下記のようなエラーメッセージが表示された。 Received message larger than max (<やり取りしようとしたファイルのサイズ> vs. 4194304 これはエラーメッセージの通りで、gRPCではデフォルトでやり取りできるファイルサイズの上限が…

Node.jsでファイルを再帰的に探索してから最後に指定の処理を実行するサンプル

Node.jsでファイルを再帰的に探索する際、投げっぱなしの処理はすぐに書けたが、投げっぱなしではなくすべてのファイルの探索を終了したあとで特定の処理を行いたいとなったときにどうすれば良いのか調べてみたので、そちらの内容をメモする。 色々と考えて…

Node.js + Protocol Bufferで時刻を扱う場合に利用するgoogle.protobuf.Timestampについて

自分向けの割合がだいぶ高い備忘録。 gRPCを扱う際に時刻を利用する場合、protocol bufferでは時刻を表す型として google.protobuf.Timestamp が利用できる。 これが個人的にはちょっと癖のある感じで、今のところは使いづらい。 ひとまず概要についてはGitH…

tkinterのdestroyとquitの違いを調べた

tkinterを使っているとき、ふとdestroyとquitの違いはなんぞや?と考えた。 両者は似たような動きをするが、どのように異なるのだろうか?と疑問に思って試しにインターネットで調べてみたら、ズバリな回答がstack overflowにあった。 stackoverflow.com 上…

【結局解決していない】iPhone版のInstapaperで設定したカラースキームが反映されないときにチェックすること

後で読むサービスはずっとPocketを使ってきたが、最近他のサービスにも触れてみようということでInstapaperをインストールして試している。 www.instapaper.com まだInstapaperについて何か書けるほど使っているわけではないが、iPhone版のInstapaperアプリ…

Node.jsでgRPCに入門する

実は何度目かの入門。 普段から使わないとすぐ忘れてしまうのでHello worldなサンプルを動かすまでの過程をメモで残すことにした。 なるべくコードはシンプルになるように意識している。 目次 書いていたら長くなってしまったので目次つけます 目次 自身の環…

todoistのAPIを用いて日付を指定してタスクを追加するサンプル

todoistのAPIを用いることでプログラムを通じて操作をすることが可能。 ※開発者向けドキュメントはこちら developer.todoist.com 今回はこちらのAPIを用いて日付を指定してタスクを追加するサンプロをこちらに書き残しておく なおAPIを操作するにはトークン…

cx_Freezeを用いてWindows用のexeを作成する

cx_Freezeを用いてWindows用のexeを作成した際の備忘録を書き残しておく。 実行したPython環境 Windows用のAnaconda経由でコマンドプロンプトを立ち上げて作業をしている。 Windows用のexeを作成する方法 下記のコマンドで作成可能。 python setup.py build …

tkinterとasyncioとthreadingを用いた投げっぱなしGUIプログラミング

asyncioとthreadingを用いた投げっぱなし処理について asyncioとthreadingを用いた投げっぱなし処理について下記で書いた。 shinshin86.hateblo.jp 今回こちらで書いた処理をtkinterで作成したGUIアプリ上で試してみたコードを下記に貼る。 やはり実際にデス…

Pythonのasyncioで投げっぱなしの処理(fire and forget)の実装サンプル

普段JavaScriptでコードを書いていると、投げっぱなしの処理を書くというのはとても簡単だ。 (ちなみに投げっぱなしの処理は英語では fire and forget というらしい) 今回JavaScriptで書けるようなノンブロッキングな処理について、Pythonのasyncioを用いて…

cx_FreezeでmacOS用の実行ファイルを作成する際のあれこれ

個人的な備忘録。 cx_Freezeを用いたPythonでmacOS用のデスクトップアプリを作る際に調べたあれこれを備忘録的に書き残していく。 なお、Macでcx_Freezeを利用する方法については下記にまとめている。 shinshin86.hateblo.jp 目次 目次 Mac用の実行ファイル…

ローカルネットワーク間のファイル転送にGo製のCLIツール、ftが便利だった

macとwindows間でサクッとファイル転送したい 最近閉じたネットワーク内でwindowsとmac間でファイル転送することがたびたびある。 今まではDropboxを使っていたが、windowsマシンの方は常にDropboxにログインしているというマシンでもないので、ファイル転送…

tkinterでノートアプリを書いた

tkinterでシンプルなノートアプリ(メモ帳)を書いてみた tkinterで書いたノートアプリ 年末辺りから集中的にtkinterを使ってデスクトップアプリを作成していた。 tkinterについて触るのは初めてだったので色々と学びつつアプリ作成をしていたが、せっかく学ん…

vim-sonictemplateが楽しそうなので試してみた(JavaScriptにて)

GitHubをサーフィンしていたら見つけたvim-sonictemplateが楽しそうだったので、試してみることにした。 github.com vim-plugでインストール vim-plugを利用しているので、こちらを利用してインストールします。 .vimrc に下記を書いて、Vimを開き、PlugInst…

Magic MouseとM1 MacBook Airが接続できなったので対応したメモ

ある日、急にMagic MouseとM1 MacBook Airが接続できなくなってしまった。 Mac上部メニューのBluetoothから接続しようとしても一瞬接続中となるが、すぐに接続が終了してしまうような状況だ。 PCの再起動 やBluetoothのON/OFFをしても効果なく、Magic Mouse…

Pythonでゼロ埋め(ゼロパディング)を実現するためのメモ

自分用備忘録。 Python でゼロ埋めで数値出力をする場合、いくつかの方法があるが、Python3.6 以降であればフォーマット文字列(f文字列などとも呼ばれたりしているみたい)を使ってサクッと書くことができる。 (このフォーマット文字列を利用しない場合は for…

音声合成エンジンのVOICEVOXをMac上のDocker Desktopで試す

音声合成エンジンのVOICEVOXをMac上のDocker Desktopで試す 商用・非商用問わず無料で利用できる(※)という、音声合成エンジンのVOICEVOXをMac上で試すために、OSS版を手元で動かしてみることにした。 (※詳しくは各キャラクターの利用規約を参照とのこと。ま…

Seleniumで現在利用しているChromeのUser Agentを取得する方法

Seleniumで現在動かしているChromeのUser Agentを取得する方法について調べたので、備忘録がてら書き残しておく。 といっても仕組みは単純で、例えばChromeの場合、下記のようにConsoleを開いてnavigator.userAgentと打つことでUser Agentは取得することがで…

Seleniumとwebdriver-managerを使っていてDeprecationWarning: executable_path has been deprecated, please pass in a Service objectが出たとき

Selenium + webdriver-managerを使っていて、下記のようなwarningが出た。 DeprecationWarning: executable_path has been deprecated, please pass in a Service object コードとしては下記のように書いていたが、 from selenium import webdriver from web…