Harukaのnote

Linuxやプログラミング,写真,旅行等の記録帳

Python でフォルダ内の画像ファイルを全て取得

自分の好きな方法.標準ライブラリのpathlibを使う.

fmtsリスト内の拡張子を増やすことで他の画像フォーマットも一気に取得できる.

from pathlib import Path

# IMAGE_DIRは任意のディレクトリ
fmts = ['.png', '.PNG', '.jpg', '.jpeg', '.JPG']
files = [str(f) for f in Path('IMAGE_DIR').glob('**/*.*') if f.suffix in fmts]
# Posixで欲しい場合は str(f) を単に f にする

OpenSUSE Leap 15.4のXRDPでcinnamonやxfce4を使う方法

/etc/xrdp/startwm.shを編集する.

sudo vim /etc/xrdp/startwm.sh

以下のようにif文を書き換え,SESSION="cinnamon"に任意のデスクトップ環境を指定する.

{
  #To customize system-wise session, edit this file.
  #To customize user specific session, copy this file to $HOME and edit it.
  #Please refer to DefaultWindowManager and UserWindowManager in /etc/xrdp/sesman.ini for more details.

  #The default session is gnome (GNOME Session)
  #sle means SLE-Classic Session

  SESSION="cinnamon"

  case $SESSION in
    cinnamon)
      if [ -r /usr/bin/cinnamon-session ]; then
        export XDG_SESSION_TYPE=x11
        /usr/bin/cinnamon-session
      elif [ -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;; 
    xfce)
      if [ -r /usr/bin/startxfce4 ]; then
        export XDG_SESSION_TYPE=x11
        /usr/bin/startxfce4
      elif [ -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;; 
    sle)
      if [ -r /usr/bin/gnome-session ]; then
        export XDG_SESSION_TYPE=x11
        export GNOME_SHELL_SESSION_MODE=sle-classic
        /usr/bin/gnome-session --session gnome-classic
      elif [ -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
    gnome)
      if [ -r /usr/bin/gnome-session ]; then
        export XDG_SESSION_TYPE=x11
        /usr/bin/gnome-session
      elif [ -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
    plasma)
      if [ -r /usr/bin/startplasma-x11 ]; then
        export XDG_SESSION_TYPE=x11
        /usr/bin/startplasma-x11
      elif [ -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
    icewm)
      if [ -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
  esac
}

以下はファイルの全文.

続きを読む

Anaconda で PyTorch を使う Dockerfile

画像処理系の深層学習用.

Dockerfile

#----使用するcudaのバージョンとubuntuのバージョンを指定------
FROM nvidia/cuda:11.2.0-devel-ubuntu18.04
#-----------------------------------------------------

WORKDIR /root

# インタラクティブをオフ(イメージビルドが止まらないように)
ENV DEBIAN_FRONTEND=noninteractive

# Ubuntu のアップデート
RUN apt-get update

# Ubuntu のタイムゾーンの設定(一部ソフトのインストールに必要)
RUN apt-get install -y tzdata
ENV TZ=Asia/Tokyo

# 必要なソフトウェアの追加(Python3 を使う場合)
RUN apt-get install -y git vim gcc build-essential libssl-dev zlib1g-dev \ 
                        libbz2-dev libreadline-dev libsqlite3-dev \ 
                        wget curl llvm libncurses5-dev libncursesw5-dev \ 
                        xz-utils libffi-dev liblzma-dev libjpeg-dev \
                        python3 python3-pip


# OpenCV に必要なソフトの追加
RUN apt-get install -y libgl1-mesa-dev libglib2.0-0 libsm6 libxrender1 libxext6


#########################################
# anaconda 環境の設定
#########################################
ARG conda_ver="2022.10"
RUN set -x && \
    wget https://repo.anaconda.com/archive/Anaconda3-${conda_ver}-Linux-x86_64.sh && \
    bash Anaconda3-${conda_ver}-Linux-x86_64.sh -b && \
    rm Anaconda3-${conda_ver}-Linux-x86_64.sh
ENV PATH $PATH:/root/anaconda3/bin
RUN conda init bash
RUN conda update conda

# Python 3.9を使いたい場合
RUN conda create -n myenv python=3.9
RUN echo "conda activate myenv" >> ~/.bashrc
ENV CONDA_DEFAULT_ENV myenv && \
    PATH /root/conda/envs/myenv/bin:$PATH
SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"]

RUN pip install --upgrade pip && \
    pip install torch \
                torchvision

# $ python3 →純正のPython3
# $ python →AnacondaのPythonなので注意

TP-LinkルーターとNuro光ONU(F660A)でOpenVPN

実家に帰省している間も,NASにアクセスしたいので方法を調べました. PPTPではセキュリティに心配があると聞いたので,今回は比較的セキュリティが高いOpenVPNを試しました. HG8045Qを使った記事は多いですがF660Aの例は見つからなかったので,残しておきます.

DMZの設定

既に私の部屋は以下の記事の設定と同じようなDMZ設定でTP-Linkのルーターにルーティングさせるようになっています.Nuro光を使っている方は同様にしている人も多いと思いますが,まだの人は下の記事を参考にセットアップをする必要があります. takewind.net

F660A:ポートフォワーディング

ONUの管理画面(自分の場合192.168.1.1)にアクセスし,アプリケーションアプリケーションリストアプリケーションを追加するには、ここをクリックしてください。を開きます. openvpn等のフォワーディング設定の名前をつけ,画像と同様のUDPのポート番号1194マッピングします.TCPは任意です.

ポートフォワーディング

アプリケーションポートフォワーディング(アプリケーションリスト)を開き,先ほど設定したopenvpnをTP-Linkルータ(omci1_dhcp)に追加します.IPアドレスDMZの設定でしたTP-Linkルータのアドレス(この場合192.168.1.200)です.

ポートフォワーディングを設定

TP-Link:OpenVPN

次に,TP-Linkルータの管理画面(自分の場合192.168.0.1)にアクセスし,詳細設定VPNサーバーOpenVPNを開きます. そして,以下の画像と同様に設定します.

OpenVPNの設定画面

証明書を発行し,以下の記事のようにプロファイルのIPアドレスを編集することで使用できると思います. www.pizaman.com