サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
AIトピックス 2023
diary.masasuzu.net
fluentd 0.12.15 の話です。 結論から言うとFluentdのfilter_grepが、keyの後にスペース1個しか許容してくれません。 なので、下記のようにそろえるために、スペースを余分に入れると、意図しない正規表現になってしまいます。 <filter fluent.info> type grep exclude1 message (?:^out_forest plants new output|adding rewrite_tag_filter rule) </filter> 正しくはこう。 <filter fluent.info> type grep exclude1 message (?:^out_forest plants new output|adding rewrite_tag_filter rule) </filter> ソース的にはこのあたりで、スペース一個で
lsofを使うと良い lsof -p $PID | wc -l もしくはprocディレクトリを数える。 ls /proc/$PID/fd/ | wc -l なんか、微妙に数が違うのはなんでだろう。lsofはheaderがあるからとはいえ少し多すぎる気が。 もうちょい調べる。 蛇足 ポートを使用している。プロセスを調べる。 lsof -i:80
git remote set-url --add ${remote} して上げれば良い。 # git clone git@github.com:masasuzu/p5-Acme-LoveLive.git cd p5-Acme-LoveLive git remote set-url --add origin git@bitbucket.org:masasuzu/p5-acme-lovelive.git # git push この例だとgithubとbitbucket両方にpushするようになっているが、githubと社内のgitサーバ両方同期したいときにどうすれば良いのかなーと調べて出てきた一つの答えがこれ。 定期的にcronで同期させるとタイムラグがあるのに対して、こっちだとリアルタイムに同期出来るのが利点かな。ただ、cloneした後にこの設定忘れると、社内のミラーレポジトリが古いままにな
某所でこんなコードがあって、Argument "1.20_01" isn't numeric in numeric le (<=) とか言われてイラッとしたわけですが。 if ($Time::Piece::VERSION <= 1.16) { .... } この場合、Perlモジュールのバージョンが数値がとは限らないので比較するにはversion.pm使ってあげると良いです。 versionオブジェクトは<=>とcmpをオーバーロードしてるので、比較演算子が使えます。 use version; if (version->parse($Time::Piece::VERSION) <= version->parse(1.16)) { .... } 参考 version - バージョンオブジェクトのための Perl エクステンション - perldoc.jp version - metacpan
某所でH2データベースを使ってるんですが、webコンソールからSQL叩くのはだるいので、どうにかならないのかなとドキュメントを眺めてたら、やり方があったので、メモ。 当方Javaの開発環境がないので、コードを書かずに済んで助かった。 http://www.h2database.com/html/tutorial.html#upgrade_backup_restore 準備 普通はサーバにあるはずなので持ってこなくてもいい。 wget http://repo1.maven.org/maven2/com/h2database/h2/1.4.185/h2-1.4.185.jar -O /tmp/h2.jar ダンプ java -cp /tmp/h2.jar org.h2.tools.Script -url jdbc:h2:./data -user USER -password PASS -scr
当たり前の話ではありますが、何を勘違いしてたか、今までsudo -Hすれば、$PATHをはじめとした環境変数がスイッチ後のユーザの物が使われると思っていました。 sudo -H してるのに$PATHが実行ユーザのもの引き継いだままで何故だーとはまっていました。 実際は-Hオプションは$HOMEを書き換えてくれるだけのオプションです。 % man sudo ... 前略 -H The -H (HOME) option requests that the security policy set the HOME environment variable to the home directory of the target user (root by default) as specified by the password database. Depending on the policy,
mysqlデータディレクトリを丸っとコピーしてレプリカのコピーを作ってmysqlを再起動したら、エラーログに吐かれた内容。 InnoDB: Error: log file ./ib_logfile0 is of different size 0 1073741824 bytes InnoDB: than specified in the .cnf file 0 134217728 bytes! 140612 12:35:27 [ERROR] Plugin 'InnoDB' init function returned error. 140612 12:35:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.元々のサーバに書かれていたmy.cnfと現在のmy.cnfが異なっているため、innodbが無効になっ
少し思うところがあったのでメモ。 ほぼ自己流なので、もっと良いのがあれば教えて欲しいところ。 そもそもマニュアルオペレーション(手作業)するな ごもっとも。でもやらないといけない深淵な事情があるんです。 事前条件と事後条件を明確にしておく どういう状態からどういう状態に変わるべきか事前に明確にしておくべきです。 それなしに普通は作業しません。 切り戻し手順を考えておく 途中でミスる可能性があるポイントを明確にしておくこと。 それぞれのタイミングでの切り戻し手順をしっかり考えておくこと 作業手順を事前に書く オペレーション中にアドホックに手順考えないですよね? 複数手順あるならスクリプト化する できる限りステップを減らします。可能ならスクリプトを一発叩くだけにします。 set -eu は付けた方がいい eオプションはコマンドのステータスコードが0以外(異常終了)したときに、その時点で終了して
私がベターだと思うキャッシュ戦略はキャッシュを使わない。 キャッシュは現状速度面で問題になっている。負荷面で問題になっている。または将来的に問題になる蓋然性が高い場面以外では使わない方が良い。不必要なところでキャッシュ機構を入れてしまえば、無駄に実装の複雑度をあげるので、余計な不具合を孕みやすい。 なので、本当に必要な場面でない限りは実装をシンプルに保っていた方が良い。ただし、既存の固いキャッシュフレームワークがあるのであれば、その限りではない場合もある。 1万レコード程度のテーブルであれば、フルテーブルスキャンしててもinnodb_buffer_poolに乗るのでそんなに遅くないし、そもそもssd積んでしまえば、キャッシュ導入で支払うコストより安い場合がある。 まあ、アプリの性質による。フルテーブルスキャンしているのはいけてないので、解消した方が良いと思うけど、indexはったりクエリ書
このページを最初にブックマークしてみませんか?
『diary.masasuzu.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く