SQLAlchemy 1.4系と2.0系の両方において、データベース接続オブジェクトとトランザクションオブジェクト (sqlalchey.Transaction) を区別できるか調べてみた。結果、isinstance() を使ったプログラム実行時の型チェックで両者を区別することも、mypy および …
最近、身をもって学んだことの備忘録。SQLの薄いラッパーとしてSQLAlchemyを使いたいプロジェクト(後述)では以下の方針で進めるのが良いと思う。 ORMレイヤーで、クラス定義をする Coreレイヤーで、クエリー生成をする ただしテーブルオブジェクトではなく…
今日試して学んだこと。Pandasで同一データフレームを複数回to_parquetで出力すると、同一データが重複する形で出力される。なので、例えばCSVファイルをPandasでParquetデータセットとしてETLするような処理を走らせる場合には同一CSVファイルを複数回処理…
ソフトウェア開発の仕事では 、過去バージョンのメンテナンス(バグ修正)も行いながら最新版を開発していかなければならないことが多い。これを効率的に行えるような Git のブランチ運用方法を、マジメに調べたことが無かったなーと思ったので調べてみた。…
iOS向けの静的リンクライブラリをRustで書く方法について調べたところ、詳細に書かれたブログを見つけたので内容の走り書きのメモを残す。 https://blog.mozilla.org/data/2022/01/31/this-week-in-glean-building-and-deploying-a-rust-library-on-ios/ ま…
今日はガタの来ていたThinkPad X1 Carbon (4th, 2016)のOSをUbuntu 22.04 LTS (Desktop)に入れ替える遊びをしてみたので、その手順を記録しておく。 もくじ セットアップの要点 OSインストール (Ubuntu 22.04) USB無線LANドングルのセットアップ CapsLock を…
前提(動機) 簡易的なデータ分析用のデータストアとして使う、という想定で PostgreSQL を構築してみた。 インフラ屋ではない人間による勉強目的での遊びなので、 いつか詳しい人にレビューしてもらいたいところではある。 雑に要件を書くと次のような感じ:…
Python のグラフ描画パッケージ matplotlib のグラフが Jupyter Lab / Jupyter Notebook 上でボヤけて表示されるのが嫌だったので、それを改善する方法を調査した。 なお、ここで紹介する手法にはどれもデメリットがある。完璧を求めて変にストレスを感じる…
今日は setuptools-rust を使い、 Rust 言語で Python 拡張モジュールを勉強がてら書いてみたので記録しておく。 1.0 未到達なので、すぐに変わってしまうかもしれないけれど、 大きな流れは変わらないだろう…と期待している。 2021-11-28: setuptools-rust …
Jupyter Notebook や Jupyter Lab を使っていると、たまに古い Kernel の情報が残ってしまうことがある。 具体的な経験としては、もう使わないなと思って Julia 1.0 をアンインストールしたところ、 Julia 1.0 で IJulia をインストールしたときの情報が残っ…
前回(👇)の続き。さらに改善。 blog.sgry.jp
(1) GitLab で数式を含む Markdown ファイルのプレビューを行いたい。 ただし、(2) その Markdown ファイルは Web サイトやブログの原稿であるため、静的サイトジェネレータで処理できるようにしたい。 また、(3) ローカルで原稿を書いている最中もそれらの…
Anaconda / Miniconda や pip で普通に NumPy をインストールすると、その計算は複数 CPU コアを備えた計算機でも常にシングルスレッドで実行され…ると今日まで思い込んでいた。が、実は環境変数を設定すれば NumPy はマルチスレッドで計算してくれるらしい…
意外とハマってしまったので、今日は matplotlib で横軸(X 軸)を日時にする方法を備忘録。初歩的な内容。
GitLab.com のプライベートレポジトリでソース管理している iOS アプリのテストを、個人所有の mac に入れた GitLab Runner と連動させ、コミットのたびにテストが走る環境を作ってみた。CI、継続インテグレーションというやつだね。テスト網羅率 (coverage)…
職場で coc.nvim のセットアップが面倒という話が出ていたので、本日時点で使えるミニマルな設定について書いておく。 動作確認環境 coc.nvim 0.0.76-857c221c55 Neovim 0.4.3 Node.JS v12.16.1 coc-python 1.2.9 coc-tsserver 1.4.11 coc-json 1.2.5 最小限…
本日の学び。少なくとも create-react-app で作った叩き台アプリを改造して React.JS アプリを開発していく場合、最初から Webpack が使われるよう構成されている。ここで、画像ファイルなどを扱う場合には Webpack でそれらが処理されるような作法に従って…
業務上 React.JS の SPA (Single Page Application) を開発する必要に迫られて突貫工事的に勉強中。そんな中、ふと「SPA なら習作を GitHub に登録すれば GitHub Pages でホストして外出先(というか職場)からアクセスして確認したりできるな」と気が付いた…
ふと思い立ったので PC のディスプレイ解像度ごとの呼び方を表にしてみる。 呼称 解像度 縦横比 8K 7680×4320 16:9 (1.777...) 5K 5120×2880 16:9 (1.777...) DCI 4K 4096×2160 256:135 (1.8962962...) 4K 3840×2160 16:9 (1.777...) UWQHD 3440×1440 43:18 …
最近になってコード補完プラグインとして試し始めた vim-coc だけれど、これ、実は CtrlP や fzf.vim のようなファイル一覧のあいまい (fuzzy) 検索もできるらしいね。具体的には、vim-coc 用の拡張機能「coc-lists」を追加インストールすれば良い。検索処理…
前回の tmux に続いて今回は Neovim を、諸事情あって RedHat Enterprise Linux (CentOS) 7 系にログインユーザーだけが使える(他ユーザーに影響を与えない)よう ~/.local の下にインストールしたので、その手順を備忘録しておく。
諸事情あって RedHat Enterprise Linux (CentOS) 7 系に tmux の最新版 v3.0a を、ログインユーザーだけが使える(他ユーザーに影響を与えない)形でインストールした。具体的には、関連ファイルをすべて ~/.local の下に配置するようにコンパイル・インスト…
ここのところ Ubuntu ばかり使っており、RedHat / CentOS を久しぶりに使ったところネットワーク周りの設定確認や設定変更の方法をトント忘れてしまっていた。改めて調べたので、以下の章立てで書き残しておく: 現在のネットワーク設定を確認する IP アドレ…
いろいろあって、Docker を使って野良 GitLab (Community Edition) を稼働させる手順を調べたので備忘録。
どうにも忘れがちなので、bash の設定ファイルの実行(ロード)処理を改めて整理してみた。ちょっとやる気を出して、今回は図付き。また各種設定ファイルの使い分けについても最後に書いておく。 はじめに 設定ファイルの実行(ロード)順序 Interactive log…
zsh の walters 等のプロンプトテーマは「前回実行したコマンドの成否 (exit status / return code) に応じて表示を変える」ようになっている。これは非常に良いなと思ったため bash で同じコトができないか調べてみた。
まとまった時間が取れたので Rust 言語の勉強を始めることにした。何はともあれ、もはや自動単体テストを書きながら開発しないと落ち着かないので、Rust でのテストカバーレジの計測方法を調べてみた。今のところ、 kcov を使った行カバレッジ、つまり行単位…
Python では input() や len() など、様々な組み込み関数を用意している。そして、これらと同じ名前で変数や関数を後から定義すると、それらを「上書き」できる。つまり、例えば input という名前の変数にファイルから読み出したデータを格納するようなコー…
Flask で HTML ではないデータを返送する場合、通常は HTML 応答に Content-Type ヘッダーを設定することになる。そのためには Response オブジェクトの mimetype プロパティや content_type プロパティに値を設定すれば良いのだけれど、これまでどちらに値…
(2019-08-14: 全面的に書き換えました) Flask アプリで動的に生成したデータ(例:RDB のクエリー結果を CSV にして返す)をダウンロードさせるような機能を実現する場合、これまでデータを一度 view 関数で完成させた後に返送するしかないと思っていた。…