ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

djangoをdockerコンテナで利用(10) - データベースにログ出力

ログって業務ではよく見るけど、個人的にはあまり見ない。 何かエラーが出た時とか、操作履歴を調べたいときとか。 テキストファイルに吐き出すとgrepできるから便利ってのもあるけど、自分はデータベースに書き出してる。 勝手に圧縮してくれるし、古いログを消したいなら書き込み日付で削除のsql発行すれば一発で終わるし。 できるだけ楽をしたいなぁって思う。 あと、テーブルを使う理由は新しい順に表示させてほしいから。 テキスト表示だと、新しい書き込みは下に追加されていく。 sortかcatの逆のtacでできるけど・・・。 linuxのlogrotate設定は、bashのスクリプト使って日次バックアップの結果ログとかで使ってはいるけど、ローテート設定面倒なのであまり好かない。 世代とかサイズとか指定してく必要がある。 アプリケーションとしては、dockerコンテナで、しかもsslをnginxを通じてdjangoのコンテナを使うとログ出力がどうなるのかやってみた。 mariadbのテーブル定義 ログは、いつ、誰が、何をした、みたいなことが残ればいい。 必要なら発行したsqlとかも入れればいいけど、そこまで必要なのは業務利用の場合かなぁ。 7年ほどphpで使ってきた仕組みをdjangoで書き換えて踏襲するので、データベースのログ保管の定義は変えない。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE TABLE `GVIS_log` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `logPeriod` datetime DEFAULT NULL COMMENT 'ログ年月日時分秒', `logShubetsu` char(10) DEFAULT NULL COMMENT 'ログ種別', `clientIP` char(15) DEFAULT '' COMMENT 'クライアントIP', `userID` char(32) DEFAULT '' COMMENT 'ユーザID', `Sousa` varchar(100) DEFAULT '' COMMENT '操作', `Message` varchar(10000) DEFAULT NULL COMMENT 'ログメッセージ', `browser` varchar(100) DEFAULT '' COMMENT '操作', `ins_date` datetime DEFAULT NULL COMMENT 'データ作成日', `ins_user` varchar(100) DEFAULT NULL COMMENT 'データ作成ユーザ', PRIMARY KEY (`id`), KEY `GVIS_log_idx` (`logPeriod`,`userID`,`Sousa`,`Message`(255),`browser`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=66928 DEFAULT CHARSET=utf8 django用って言うと、djangoのためにid列を追加したっけ。 テーブル定義にはオートナンバのidがつかないとdjangoは処理出来ないっていうし。 ...

vmwareで動くmacの音が割れる

長らくitune使って音楽を聞く習慣がついている。 最初の頃は音質がイマイチって思ってたけど、もう慣れた。 物理マシンのmac bookではそうはならないけど、windows上のvmwareの中で動くmacで「ミュージック」を起動して動かすと音が割れるようになった。 回避する方法を探してみたけど、すぐには見つからず。 メディア共有で逃げる 仮想マシンの問題なんやろなぁ。 vmware使うのやめてoracle VM Virtualboxに変えよっかなぁ。 一時回避ってことで、もう少し簡単に逃げる方法をやってみる。 いったんmac側の「システム環境設定」にある「共有」でメディアを共有する。 昔はこれituneの設定画面の中にあったよなぁ。montereyではOSの設定になってる。 windows側にitune入れる windows側で共有されたライブラリを勝手に見つけてくれるので選ぶ。 これで音が割れずに聞けるし、プレイリストもちゃんと使える。 itune使えるのはええけど、画面がダークモードにならんのはなんとかならんのか。 その後 kasperskyの3年版を今まで3回更新してきた。 virus busterとかmcfeeに比べたら性能高いと感じる。 来年の春には更新必要なんやけど、ウクライナ侵攻があってやっぱり更新するのはちょっとできないかなぁ。 妄想のmacもwindowsホストと一緒に守ってくれてる。 このソフトはひっそりと重たいことしてることがあるみたいで、mac起動後に「簡易スキャン」を実行した後だったら音が割れなくなった。 それともmontereyの月次更新で何か改善されたのかもしれない。 macos12.5では音が割れなくなった。

右クリックでvscode

linuxでもwindowsでも、vscodeインストールするとファイルやフォルダを右クリックしたときのコンテキストメニューに「vs codeで開く」みたいなのがつく。 これ便利なんだけど、macにない。 Montereyでもできないか探してみた。 automatorで定義を作るらしい やっておられる方々が方法を書いておられた。 作者さんありがとう。 Finder のコンテキストメニューに「Visual Studio Code で開く」を追加する #Mac - Qiita qiita.com 同じやり方でautomatorに入れたスクリプトを「VS Codeで開く.workflow」って名前で保存した。 1 2 3 4 for f in "$@" do open -a 'Visual Studio Code' "$f" done 右クリックしてみる フォルダを選んで右クリックしてみると、コンテキストメニューの中の「クイックアクション」の中にできてた。 右クリックの1階層下になるけど、これでも動くしええか。 保存されるのはどこなのか どっかに保存されたのが見えるのかなって探してみたら、拡張機能ってところに保存されていた。 作った「VS Codeで開く」を無効にできるし、右クリックで削除を選ぶとゴミ箱に入る。

djangoをdockerコンテナで利用(9) - jpeg/png画像とpdfのblob列への保管

数値、文字、それらをchoices使いながら入力させたところから、次はアップロードボタンを設置してjpeg/png/pdfをテーブルのblob列に入れる。 これができたら、資料とかパンフレットとかを保管できる。 画像はjpegとpngぐらいしか自分では使わないから、jpeg保管で統一。 png画像はjpegに変換して保管。 画像は単に保管するだけでなく、検索結果画面の一覧表示のために80 x 45の縮小画像も作って保管してる。 blob列には、保管効率はあんまりやけど普通の文字列で扱える base64 エンコードを使ってる。 こうすると重たくなることもあるけど、html内にインライン展開して表示できる。 保全策として10MBのアップロード制限している。 実測20Mbps程度のwifi環境でamazonのfireタブレットでも閲覧・登録できる。 格納した文字列に勝手にコードがついてくれて苦労した・・・。 実際の画面の動きと、djangoに書いた内容をメモ。 画面の動き 実際はログインしてから使う資産管理の画面の一部。 ログイン機能 やデータベース(mariadb利用)の 読み書き 、入力画面の 詳細 は別のシリーズでやったので詳細は割愛。 モジュールも大きくなったので 分割 もしてるけど、追加・改善続けたらやっぱりデカくなってくなぁ。 パッケージの状態は、本当の最初の頃はdjango本体以外はこれぐらいしかなかった。 1 2 3 4 5 6 7 8 Django==3.2.7 uwsgi==2.0.19.1 django-markdownx==3.0.1 Markdown==3.3.3 Pillow==7.0.0 PyMySQL==1.0.2 matplotlib==3.4.3 numpy==1.21.2 現在pipでインストールしているモジュールは以下のとおりで、去年の年末まではdjango3、12月頃からdjangoは4に バージョンアップ した。 ...

 ⭐️

2021 — 10th

コロナで去年は作らなかったけど、今年はやってみた。チョコペン久しぶりで音符が歪んだけど、まぁしゃあないか。