pythonライブラリを最新に更新

pythonのライブラリ一覧(-oで更新が必要なものだけを表示

pip list -o

 

パッケージのアップデート

pip install -U <package-name>

 


phpMyAdmin管理画面へのURLパスを変更する

phpmyadminのconf場所

cd /etc/apache2/conf-enabled/phpmyadmin.conf

 

Alias /phpmyadmin /usr/share/phpmyadmin

Alias /hoge /usr/share/phpmyadmin

 

Require ip 127.0.0.1 10.0.0.0/24 ←追加

 

 

Apache再起動

sudo systemctl restart apache2

 

ssl無効でmysqlに接続

mysql.exe -u root -h hostname -p --ssl-mode=DISABLED

mysqlで巨大なダンプデータをインポートする際に発生

mysql -uroot -proot database < dump.sql
ERROR at line 88 : Unknown command '\''.

100GiB超のファイルで、当初エラーの原因がよくわからず

文字コードの問題だった

mysql -uroot -proot --default-character-set=utf8 database < dump.sql

スマホで撮った写真を共有する方法を考える

アプリなどはいれたくないのでGoogleドライブで共有

このままだと見るのがメンドイので以前使ったflaskでそれっぽいものを作ってみる

写真は同期させてPC上に配置

webサーバから見える位置にシンボリックリンクを張る

とりあえずこれでpython側から認識できた

流れとしては

1、画像ファイルの一覧を収集

os.chdir("./static/images")
glob.glob("./*.jpg")

2、撮影日でソート

sorted(glob.glob("./*.jpg"), key=lambda f: get_exif_of_image(f).get("DateTime"), reverse=True)

当初os.statで更新日を取ってきたが撮影日と一致しないので別途Exifを取得するメソッドget_exif_of_imageを用意

3、日付ごとにまとめて表示

if _date != tdate:
    _date = tdate
    list.append(Markup(r'<br>' + str(_date) + r'<br>'))
s = f.replace('.\\', '/static/images/')
list.append(Markup(r'<a href="' + s + r'" target="_blank">' + f.replace('.\\', '') + '</a>'))

本当はhtml部分をtemplates側で処理したかったんだけど面倒だったので強引にタグごと送り込んだ

あと画像を一覧表示したらサーバが耐えられなかったので画像は個別に開くようにした

できれば日付ごとくらいで一覧表示できるようにしたい

任意のフレームを画像にする

using (VideoCapture videoCapture = new VideoCapture(filepath))
{
    Mat img = new Mat();

    if (!videoCapture.IsOpened())
    {
        Console.WriteLine("file not opend!");
        return;
    }

    Bitmap bitmap;
    int frameCount = videoCapture.FrameCount-1;
    double fps = videoCapture.Fps;
    int posFrame = (int)(frameCount * fps);

    videoCapture.PosFrames = frameCount;
    videoCapture.Read(img);
    bitmap = BitmapConverter.ToBitmap(img);
    bitmap.Save(@"hogehoge.jpg");
}

frameCountを-1してるのは、最終フレームを指定するとvideoCapture.Read(img)ができず、ArgumentExceptionで落ちる FrameCountが0から始まるからだろうと勝手に想像してるが、今のところ思い通りの動作をしている