投稿

6月, 2024の投稿を表示しています

FreeBSDにgsutil(google-cloud-sdk)をインストール

CentOSからFreeBSDに変更して、Google Cloud Storageにアクセスするためにgsutilをインストールしようとしているときの覚書。 環境: FreeBSD 14.1 pkg経由で「google-cloud-sdk」をインストールすればgsutilが含まれている。 # pkg search google-cloud # pkg install google-cloud-sdk (bashrc) source /usr/local/google-cloud-sdk/completion.bash.inc (zshrc)  source /usr/local/google-cloud-sdk/completion.zsh.inc google-cloud-sdk-471.0.0がインストールされた。 bashrcに追記しろと表示されるが、bashrcは作ってないのでbash_profileに追記する。 # less .bash_profile source /usr/local/google-cloud-sdk/completion.bash.inc 読み込んでgsutilを実行してみる。 # source .bash_profile # gsutil --version エラー Traceback (most recent call last):   File "/usr/local/bin/../google-cloud-sdk/bin/bootstrapping/gsutil.py", line 15, in <module>     import bootstrapping   File "/usr/local/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 45, in <module>     from googlecloudsdk.core import config   File "/usr/local/google-cloud-sdk/lib/googlecloudsdk/core/config.py", line 25, in <module>     impor

さくらメールボックスのメーリングリストでsummaryがデコードされていない

さくらメールボックスのメーリングリストに投稿したメールが「届いていないよ?」と言われたので調査しているときの覚書。 環境: fml 4.0 STABLE (20040215/4.0.4_BETA)(←メールヘッダーに記載)。 状況整理 メーリングリストのメンバー外のメールアドレスから送信 添付ファイルあり 送信失敗の返信は(たぶん)なし 管理者メールにも送信失敗などのシステムからメールは届いていない 結局他のメンバーには届いているので、おそらく個別の問題だと思う。 以下はいろいろやっているときの覚書。 メーリングリストfmlの使い方 さくらのメーリングリストはfmlというソフトを使っている。 "fml" mailing list server/manager package ml@hoge.jpというメーリングリストを作ったらml-ctl@hoge.jpというコマンド用メールアドレスも自動で追加される。 コマンド用メールアドレスの使い方はhelpというコマンドを本文に書いておくれば、日本語で使い方の例がメールで送られてくる。 宛先: ml-ctl@hoge.jp 本文: help メールの一覧を取得するときはsummaryコマンドを送る。 送信日時と件名の一覧が送られてくる。 宛先: ml-ctl@hoge.jp 本文: summary しかしBASE64でエンコードされている生のデータで送られてきた。 日本語が文字化けしているような状態。 例えば次のような感じ。 24/04/08 08:48:52 [1:suganuma@webrec] =?UTF-8?B?44CQ5Yy744Kz44Oz5Z+8546J55yM5pSv6YOo44CR44Oh44O844Oq44Oz44Kw44Oq44K5?=  =?UTF-8?B?44OI6Kit5a6a5a6M5LqG5aCx5ZGK?= 日本語に変換する場合はBASE64でデコードする。 メールの件名なので「=?UTF-8?B?」部分以外をBASE64でデコードする。 「=?UTF-8?B?」付きでもデコードしてくれるサイトがあった。 参考:  メール件名 デコード | 黒川 仁のポートフォリオ BASE64とは? 64種類の英数字だけでエンコードする方式。 電子メールのMIMEに規定されている。 Ba

病院の施設基準を自動更新するには?

病院ホームページに掲載している施設基準を自動更新する仕組みにできないかと調べているときの覚書。 施設基準の届け出先は病院の所在地を管轄する地方厚生局(厚生労働省の地方支分部局)に提出する。 データは各地方厚生局のホームページからエクセル形式でダウンロード可能。 参考:  厚生労働省の地方厚生(支)局一覧 関東信越厚生局はzip形式でアーカイブされている。 参考:  保険医療機関・保険薬局の施設基準の届出受理状況及び保険外併用療養費医療機関一覧 フォーマットは各地方厚生局により違う。 データベースに取り込むためには各フォーマットに合わせてプログラミングする必要がある。 地方厚生局は全部で8つ。 データベースのカラムとエクセルの列番号を紐づける設定ファイルを用意する形にすれば、そこまで大変ではない気がする。 まずは毎月手動でエクセルファイルをダウンロードして取り込みプログラムを実行する。 そのうちダウンロードも自動化するようにしたい。 また医療DXで政府が医療情報をデータベース化して、外部からも参照できる仕組みを構想しているみたい。 参考:  医療DX推進本部|内閣官房ホームページ 【関連記事】 RESASのAPIを調査 ハローワークAPIで求人情報検索 人口メッシュ統計を作成するには

FreeBSDの環境にPython 3.11をインストール

バッチ処理が遅いなと思ったので、python3.11をインストールしてみたときの覚書。 環境: FreeBSD 14.1-RELEASE, Python 3.9.18 1. 現在のPythonの環境を確認。 Pythonのバージョン。 # python3.9 --version Python 3.9.18 Python 3.9向けにインストールされたパッケージ確認。 Python 3.9ではpipをインストールせずpkg経由で管理する方針だった。 # pkg info | grep py39 py39-aioquic-0.9.25           py39-anyio-4.3.0              py39-async_generator-1.10     py39-attrs-23.2.0             py39-certifi-2024.2.2         py39-cffi-1.16.0              py39-charset-normalizer-3.3.2 py39-clang-11.0               py39-cryptography-42.0.5_1,1  py39-dnspython-2.6.1,1        py39-exceptiongroup-1.2.0     py39-h11-0.14.0               py39-h2-4.1.0                 py39-hpack-4.0.0              py39-httpcore-1.0.5           py39-httpx-0.27.0_1           py39-hyperframe-6.0.0         py39-idna-3.7                 py39-importlib-metadata-7.1.0 py39-markdown-3.5.2           py39-openssl-23.2.0,1         py39-outcome-1.3.0_1          py39-packaging-23.2           py39-psutil-5.9.8             py39-psycopg-3.1.18           p

FreeBSDのディスク容量とパーティション確認。ConohaのOS選択で同一名称がある理由。

Conoha VPSを使っているときに「あれ?100Gあるはずなのにもう容量がいっぱいになったぞ?」と思ったときの覚書。 環境: Conoha VPS 8GBプラン, FreeBSD 14.1 ディスク容量確認。 # df -h Filesystem      Size    Used   Avail Capacity  Mounted on /dev/vtbd0p2     27G     22G    2.5G    90%    / devfs           1.0K      0B    1.0K     0%    /dev 27Gしかマウントされていない。 ファイルシステム確認。 # mount /dev/vtbd0p2 on / (ufs, local, soft-updates, journaled soft-updates) devfs on /dev (devfs) パーティション確認。 # gpart show =>      40  62914480  vtbd0  GPT  (100G) [CORRUPT]         40      1024      1  freebsd-boot  (512K)       1064  58719232      2  freebsd-ufs  (28G)   58720296   3145728      3  freebsd-swap  (1.5G)   61866024   1048496         - free -  (512M) CORRUPT(破損)と表示されている…。 FreeBSDを14.0から14.1にアップグレードしたからかもしれないと思い、サーバーを再構築してみた。 今度はファイルシステムをZFSにしてみた。 # gpart show =>      40  62914480  vtbd0  GPT  (100G) [CORRUPT]         40      1024      1  freebsd-boot  (512K)       1064       984         - free -  (492K)       2048   4194304      2  freebsd-swap  (2.0G)    4196352  587

FreeBSD14にPostgreSQL+pgAdmin4をインストール

開発環境のローカル仮想マシンにPostgreSQLをインストールしたときの覚書。 環境: FreeBSD 14.1, Python 3.9.18, PostgreSQL 15.6 1. PostgreSQL Serverをインストール pkgからインストールする。 最初はpostgresql16-serverをインストールしたけど、py39-psycopgをインストールしたときにpostgresql15へ置き換えようとするので、postgresql15-serverをインストールし直した。 # pkg search postgresql # pkg search -f postgresql15-server # pkg install postgresql15-server 画面に表示された通りに実行。 # sysrc postgresql_enable=yes # service postgresql initdb # service postgresql start データの置き場所などを起動スクリプトで確認。 # less /usr/local/etc/rc.d/postgresql postgresユーザーになって確認する。 # su - postgres # pwd /var/db/postgres ユーザー一覧とデータベース一覧表示。 $ psql postgres=# \du postgres=# \l 2. PostgreSQLの文字セット(エンコーディング)を設定 日本語を扱う場合は、ja_JPをを設定してあげないと正しく並び替えできない。 前の記事を参考にする。 参考:  PostgresSQLの言語設定(locale)をja_JPにする OSで提供している言語地域(ロケール)を確認。 # locale -a 「ja_JP.UTF-8」があるのを確認。 PostgreSQLの設定変更。 # su - postgres $ less data15/postgresql.conf lc_messages = 'C.UTF-8'                 # locale for system error message                                         # strings lc_mo

PHP8からMariaDBへUnix Socketで接続する設定

FreeBSDのMariaDBへphpからUnix socketで接続できるようにしたときの覚書。 環境: FreeBSD 14.0, MariaDB 15.1, PHP 8.3.6 (FreeBSDの)PHPで接続先を「localhost」に設定すると、Unix socketを参照しようとする。 「127.0.0.1」すればTCP経由で接続するけど、せっかくなのでTCPを無効にして、Unix socketだけで待ち受けするようにしてみた。 TCPを無効にするには公式サイトを参考に。 参考:  Configuring MariaDB for Remote Client Access - MariaDB Knowledge Base まずは待ち受け中のポート確認。 # netstat -an -p tcp MariaDBの設定ファイル編集。 「port」をコメントアウトする。 # cd /usr/local/etc/mysql/ # less my.cnf [client-server] #port   = 3306 socket  = /var/run/mysql/mysql.sock 「bind-address」をコメントアウトして、「skip-networking」「skip-bind-address」を追記する。 # less conf.d/server.cnf [mysqld] user                            = mysql # port                          = 3306 # inherited from /usr/local/etc/mysql/my.cnf # socket                        = /var/run/mysql/mysql.sock # inherited from /usr/local/etc/mysql/my.cnf #bind-address                   = 127.0.0.1 basedir                         = /usr/local datadir                         = /var/db/mysql net_retry_count