2020年12月31日木曜日

CentOS 8-StreamにTagSpacesをインストールする

TagSpacesを使用して、タグを活用した文書管理を行うことができます。

〇TagSpacesの画面

インストール方法

以下のコマンドを実行します。
sudo mkdir -p /opt/tagspaces

cd /opt/tagspaces

sudo wget https://www.tagspaces.org/downloads/tagspaces-linux64.AppImage

sudo chmod +x tagspaces-linux64.AppImage

cat << EOF | sudo tee /usr/share/applications/tagspaces.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/tagspaces/tagspaces-linux64.AppImage
Name=TagSpaces
EOF

関連情報

・TagSpacesに関する他の記事は、こちらを参照してください。

pythonとpydubで音楽ファイルをフェードインする

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイルをフェードインする手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
fade_inメソッドで音楽ファイルをフェードインします。durationでフェードインの時間を設定します。ファイル名は適宜変更してください。
fadein.py
from pydub import AudioSegment

# 曲の読み込み
af = AudioSegment.from_mp3("yoursong.mp3")

# フェードイン(20秒)
af2 = af.fade_in(20*1000)

# 曲を保存する
af2.export("fadein.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python fadein.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

Ubuntu 20.04でunified inventory modをインストールする

unified inventory modでインベントリを拡張して、クラフティングガイドや24アイテムを格納できるバッグを4つ利用する事ができるようになります。

〇unified inventoryの画面

インストール方法

以下のコマンドを実行します。
sudo apt-get -y install minetest-mod-unified-inventory
インストール後、ワールドの設定画面で「unified_inventory」を有効化します。

関連情報

・Unified Inventoryのgithubリポジトリ
https://github.com/minetest-mods/unified_inventory

2020年12月30日水曜日

CentOS 8-StreamにProjectLibreをインストールする

ProjectLibreを使用してMicrosoft Projectのようにプロジェクト管理を行う事ができます。

〇ProjectLibreの画面

インストール方法

以下のコマンドを実行します。
sudo dnf remove -y java-1.8.0-openjdk-headless

sudo dnf install -y java-11-openjdk

sudo mkdir -p /opt/projectlibre

cd /opt/projectlibre

sudo wget https://sourceforge.net/projects/projectlibre/files/ProjectLibre/1.9.2/projectlibre.jar

cat << EOF | sudo tee /usr/share/applications/projectlibre.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Environment=QT_IM_MODULE=fcitx
Exec=/bin/java -jar /opt/projectlibre/projectlibre.jar
Name=ProjectLibre
Categories=Development;
EOF

関連情報

・ProjectLibreに関する他の記事は、こちらを参照してください。

pythonとeyeD3でMP3ファイルのアルバム画像を取得する

eyeD3でmp3のメタデータなどにアクセスする事ができます。

eyeD3でアルバム画像を取得する手順

1. eyeD3をインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとeyeD3でMP3ファイルの曲名・アーティスト名・アルバム名を取得する

2. サンプルプログラムの作成と実行
以下のスクリプトを保存します。ファイル名は適宜変更してください。
extract_image.py
import eyed3

af = eyed3.load("yoursong.mp3")

# イメージの抽出
idx=0
for image in af.tag.images:
    if image.mime_type == 'image/jpeg':
        with open("image{}.jpeg".format(idx), "wb") as fo:
            fo.write(image.image_data)
    idx+=1

以下のコマンドでスクリプトを実行します。
python extract_image.py

関連情報

PythonでMP3ファイルの情報にアクセスできるeyeD3モジュールのまとめ

・eyeD3のgithubリポジトリ
https://github.com/nicfit/eyeD3

Ubuntu Desktop 20.04にDrawpile(flathub版)をインストールする

Drawpileで、ネットワーク上の複数人数で協力して絵を描く事ができます。リモート会議のホワイトボード代わりにもなります。
社内ネットワークではクライアント同士で接続することができ、pub.drawpile.netなどのパブリックサーバや専用サーバを介してインターネット越しの接続をすることも可能です。

〇Drawpileの画面

インストール方法

以下のコマンドを実行します。
sudo apt-get -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install flathub net.drawpile.drawpile

Drawpileの実行

以下のコマンドを実行します。
flatpak run net.drawpile.drawpile

関連情報

・Drawpileに関する他の情報はこちらを参照してください

・Drawpileのウェブサイト
https://drawpile.net/

CentOS8.2にNode-REDをインストールする

Node-Redを使用してフロー図によるプログラム開発を行うことができます。

〇Node-REDの画面
ブラウザからhttp://<ホスト名またはIPアドレス>:1880/ にアクセスします。

インストール方法

以下のコマンドを実行します。
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/rpm/update-nodejs-and-nodered)

Would you like to add Node-RED port 1880 to the firewall public zone ? [y/N] ?
※yを入力します

This script will do an install of node.js, Node-RED and the service packages to auto-run Node-RED

Are you really sure you want to do this ? [y/N] ?
※yを入力します

sudo systemctl enable nodered

sudo systemctl start nodered

関連情報

・Node-REDに関する情報はこちらを参照してください。

2020年12月29日火曜日

CentOS 8-StreamにQGISをインストールする

QGISで地理情報の編集を行うことができます。

〇QGISの画面

インストール方法

シェルから以下のコマンドを実行します。
sudo dnf -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install --from  https://flathub.org/repo/appstream/org.qgis.qgis.flatpakref

関連情報

・QGISに関する他の記事は、こちらを参照してください。

CentOS 8-StreamにPrettierをインストールする

PrettierでJavascriptやHTMLなどのコードを整形する事ができます。

インストール手順

以下のコマンドを実行します。
# install node.js
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -

sudo dnf -y install nodejs

# install yarn
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo

sudo yum -y install yarn

# install prettier
sudo yarn global add prettier

テスト実行

$ echo '<!DOCTYPE html><html lang="ja"><head><meta charset="UTF-8"><title>sample</title></head><body>sample</body></html>' | prettier --stdin-filepath test.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>sample</title> </head> <body> sample </body> </html>

関連情報

・プロジェクトgithubリポジトリ
https://github.com/prettier/prettier

pythonとpydubで音楽ファイルを反転する

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイルを反転する手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
reverseメソッドで音楽ファイルの内容を反転します。ファイル名は適宜変更してください。
reverse.py
from pydub import AudioSegment

# 曲の読み込み
af = AudioSegment.from_mp3("yoursong.mp3")

# 反転
af2 = af.reverse()

# 曲を保存する
af2.export("reverse.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python reverse.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

DockerでLeoCADとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

LeoCADで、LEGOブロックをコンピュータ内で組み立てることができます。DockerでLeoCADがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇LeoCADの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfceleocad .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
  && mkdir -p /opt/leocad \
  && cd /opt/leocad \
  && wget 'https://github.com/leozide/leocad/releases/download/v19.07.1/LeoCAD-Linux-19.07.1-x86_64.AppImage' \
  && chmod +x /opt/leocad/LeoCAD-Linux-19.07.1-x86_64.AppImage \
  && echo '[Desktop Entry]' >> /usr/share/applications/leocad.desktop \
  && echo 'Type=Application' >> /usr/share/applications/leocad.desktop \
  && echo 'Version=1.0' >> /usr/share/applications/leocad.desktop \
  && echo 'Name=LeoCAD' >> /usr/share/applications/leocad.desktop \
  && echo 'GenericName=Virtual LEGO CAD Software' >> /usr/share/applications/leocad.desktop \
  && echo 'Exec=/opt/leocad/LeoCAD-Linux-19.07.1-x86_64.AppImage' >> /usr/share/applications/leocad.desktop \
  && echo 'Categories=Development;' >> /usr/share/applications/leocad.desktop \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfceleocad

関連情報

・LeoCADに関する他の記事は、こちらを参照してください。

・LEGOに関する他の記事は、こちらを参照してください。

Minetestでチャットコンソールの色・透明度を設定する

Minetestではminetest.confに以下のパラメータを指定することで、色・透明度を設定する事ができます。
・console_color : チャットコンソールの色
例:console_color = (255,255,255)

・console_alpha : チャットコンソールのアルファ値
例:console_alpha = 50

〇minetestでconsole_color/console_alphaを変更した画面

設定手順

1. 実行しているMinetestがあれば、いったん終了します。

2. Linuxでは~/.minetest/minetest.confをエディタで開きconsole_color/console_alphaを設定します。

3. Minetestを再び起動します。

関連情報

・Minetestに関する情報はこちらを参照してください。

CentOS 8-StreamにJupyter Labをインストールする(pipenv版)

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。

〇Jupyter Labの画面

インストール手順

1.pipenvのインストール
sudo dnf -y install python3

sudo pip3 install --upgrade pip

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

source ~/.bashrc

2. Jupyterのインストール
mkdir -p ~/jupyter

cd ~/jupyter

pipenv --python 3

pipenv install

pipenv install jupyterlab

pipenv install matplotlib

pipenv install pandas

mkdir -p ~/.jupyter

cat << EOF > ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.allow_remote_access = True
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8080
c.NotebookApp.token = 'jupyter'
EOF

3. selinux設定
cat << EOF > ./my-jupyterlab.te
module my-jupyterlab 1.0;

require {
        type init_t;
        type unconfined_exec_t;
        type user_home_t;
        type ephemeral_port_t;
        class tcp_socket { name_connect };
        class dir { create write read setattr rename };
        class file { append execute execute_no_trans ioctl map open read setattr create write relabelfrom rename };
        class lnk_file { getattr read };

}

#============= init_t ==============
allow init_t unconfined_exec_t:file { create execute open read };
allow init_t ephemeral_port_t:tcp_socket { name_connect };
allow init_t user_home_t:dir { create write read setattr rename };
allow init_t user_home_t:file { append execute execute_no_trans ioctl open read setattr map create write relabelfrom rename };
allow init_t user_home_t:lnk_file { getattr read };
EOF

checkmodule -M -m -o my-jupyterlab.mod my-jupyterlab.te

semodule_package -o my-jupyterlab.pp -m my-jupyterlab.mod

sudo semodule -i my-jupyterlab.pp

4. Jupyter Labをサービスとして登録
※ユーザやパスなどは適宜変更してください。
cat << EOF | sudo tee /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter
[Service]
Type=simple
ExecStart=/home/centos/jupyter/.venv/bin/jupyter-notebook
User=centos
Group=centos
WorkingDirectory=/home/centos/jupyter
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable jupyter

sudo systemctl start jupyter

5. ポート開放
firewallの8080番ポートを開けます
sudo firewall-cmd --add-port=8080/tcp --permanent

sudo firewall-cmd --reload

6. ブラウザで以下のアドレスにアクセスします。
http://<サーバ名またはIPアドレス>:8080/lab?token=jupyter

関連情報

・Jupyterに関する他の情報はこちらを参照してください。

・バージョン確認(2020/12/29時点)
jupyter --version
jupyter core : 4.7.0
jupyter-notebook : 6.1.6
qtconsole : not installed
ipython : 7.16.1
ipykernel : 5.4.2
jupyter client : 6.1.7
jupyter lab : 3.0.0
nbconvert : 6.0.7
ipywidgets : not installed
nbformat : 5.0.8
traitlets : 4.3.3

2020年12月28日月曜日

CentOS 8-StreamにVisual Studio Codeをインストールする

Visual Studio Codeはオープンソースのエディタです。様々なプラグインで機能を拡張する事ができます。

〇Visual Studio Codeの画面

インストール方法

シェルから以下のコマンドを実行します。
wget -O vsc.rpm https://go.microsoft.com/fwlink/?LinkID=760867

sudo dnf -y install vsc.rpm

関連情報

・Visual Sudio Codeに関する他の記事は、こちらを参照してください。

pythonとpydubで音楽ファイルに静音のパートを追加する

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイルに静音のパートを追加する手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
silentメソッドでdurationで指定したmsだけ、静音パートが作られます。ファイル名は適宜変更してください。
silent.py
from pydub import AudioSegment

# 曲の読み込み
af = AudioSegment.from_mp3("yoursong.mp3")

# 静音を5秒間
af2 = AudioSegment.silent(duration=5*1000) + af

# 曲を保存する
af2.export("silent.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python  silent.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

DockerでKiCADとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

KiCADで回路図やプリント基盤をデザインする事ができます。DockerでKiCADがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇KiCADの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfcekicad .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
  && add-apt-repository --yes ppa:kicad/kicad-5.1-releases \
  && apt-get update \
  && apt-get -y install --install-recommends kicad kicad-demos \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfcekicad

関連情報

・KiCADに関する他の記事は、こちらを参照してください。

CentOS8.2にGrphviz Visual Editorをインストールする

Graphviz Visual EditorはGraphvizのnode製フロントエンドです。webブラウザからグラフをインタラクティブに描画することができます。

〇Graphviz Visual Editorの画面

インストール方法

以下のコマンドを実行します
1. node.jsのインストール
curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -

sudo dnf -y install nodejs

2. graphviz-visual-editorのインストール
sudo dnf -y groupinstall "Development Tools"

git clone https://github.com/magjac/graphviz-visual-editor

cd graphviz-visual-editor

npm install

make

npm run build

cd ..

sudo mv graphviz-visual-editor /opt

sudo npm install -g serve

cat << EOF | sudo tee /etc/systemd/system/graphizvisualeditor.service
[Unit]
Description=Graphiz Visual Editor
[Service]
Type=simple
ExecStart=/usr/bin/serve -s build -l tcp://0.0.0.0:3000
WorkingDirectory=/opt/graphviz-visual-editor
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable graphizvisualeditor.service

sudo systemctl start graphizvisualeditor.service

3. ポート開放
firewallの3000番ポートを開けます
sudo firewall-cmd --add-port=3000/tcp --permanent
sudo firewall-cmd --reload

2020年12月27日日曜日

CentOS8-StreamにFreeplaneをインストールする

Freeplaneでマインドマップを作成する事ができます。

〇Freeplaneの画面

インストール手順

以下のコマンドを実行します。
sudo dnf remove -y java-1.8.0-openjdk-headless

sudo dnf install -y java-11-openjdk

cd /opt

sudo wget 'https://sourceforge.net/projects/freeplane/files/freeplane%20stable/freeplane_bin-1.8.10.zip'

sudo unzip freeplane_bin-1.8.10.zip

sudo mv /opt/freeplane-1.8.10 /opt/freeplane

cat << EOF | sudo tee /usr/share/applications/freeplane.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/freeplane/freeplane.sh
Name=Freeplane
Icon=/opt/freeplane/freeplane.png
EOF

関連情報

・Freeplaneに関する他の記事は、こちらを参照してください。

Raspberry Pi(Raspbian Buster)/Debian 10(Buster)に音楽ファイルにタグ付けをすることのできるMusicBrainz Picardをインストールする

MusicBrainz Picardで様々なオーディオファイルにタグ付けする事ができます。

〇MusicBrainz Picardの画面(Raspberry Pi)

〇MusicBrainz Picardの画面(Debian)

インストール方法

以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install picard

関連情報

・MusicBrainz Picardのwebサイト
https://picard.musicbrainz.org/

DockerでLibrePCBとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

LibrePCBでプリント基盤をデザインする事ができます。DockerでLibrePCBがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇LibrePCBの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfcelibrepcb .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
      unzip \
  && mkdir -p /opt/librepcb \
  && cd /opt/librepcb \
  && wget https://download.librepcb.org/releases/0.1.5/librepcb-0.1.5-linux-x86_64.AppImage \
  && chmod +x librepcb-0.1.5-linux-x86_64.AppImage \
  && echo '[Desktop Entry]' >> /usr/share/applications/librepcb.desktop \
  && echo 'Version=1.0' >> /usr/share/applications/librepcb.desktop \
  && echo 'Type=Application' >> /usr/share/applications/librepcb.desktop \
  && echo 'Terminal=false' >> /usr/share/applications/librepcb.desktop \
  && echo 'Exec=/opt/librepcb/librepcb-0.1.5-linux-x86_64.AppImage' >> /usr/share/applications/librepcb.desktop \
  && echo 'Name=LibrePCB' >> /usr/share/applications/librepcb.desktop \
  && echo 'Categories=Development;' >> /usr/share/applications/librepcb.desktop \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfcelibrepcb

関連情報

・LibrePCBに関する他の記事は、こちらを参照してください。

Ubuntu20.04でPycraft mod for MinetestとPythonを使用してCPU負荷を棒グラフで表示する

Pycraft mod for MinetestとPythonを使用してCPU負荷を棒グラフで表示するには、以下の手順を実行します。負荷に応じてグラフの色と高さが変わっていきます。

〇Pycraft mod for MinetestとPythonで棒グラフ表示したCPU負荷

作成方法

1. Pycraft mod for Minetestのインストール
Pycraft mod for Minetestをインストールしていない場合は、以下の記事を参考にしてインストールしてください。
Ubuntu20.04でPycraft mod for MinetestとPythonを使用して指定されたブロックの床を作成する

2. プログラミング
以下のコードで、CPU負荷を棒グラフで表示します。Thonnyの場合は、以下のコードを保存後、緑色の再生ボタンをクリックして実行してください。終了するときはCtrl+Cを押してください。
import mcpi.minecraft as minecraft
import mcpi.block as block
import psutil
import time

meter = [
    block.WOOL_WHITE,
    block.WOOL_LIGHT_BLUE,
    block.WOOL_BLUE,
    block.WOOL_GREEN,
    block.WOOL_LIME,
    block.WOOL_YELLOW,
    block.WOOL_ORANGE, 
    block.WOOL_RED,
    block.WOOL_BROWN,
    block.WOOL_BLACK
]

# ローカルサーバに接続
mc = minecraft.Minecraft.create("127.0.0.1")
# プレイヤーの位置を取得
pos = mc.player.getPos()

pos.z += 5

try:
    while True:
        cpu = psutil.cpu_percent(interval=1)
        cpu_meter = int(cpu/10)
        for dm in range(len(meter)):
            if dm <= cpu_meter:
                mc.setBlock( pos.x, pos.y+dm, pos.z, meter[dm])
            else: 
                mc.setBlock( pos.x, pos.y+dm, pos.z, block.AIR)
        time.sleep(1)
except KeyboardInterrupt:
    # クリーンアップ
    for dm in range(len(meter)):
        mc.setBlock( pos.x, pos.y+dm, pos.z, block.AIR)

関連情報

・Minetestに関する情報はこちらを参照してください。

2020年12月26日土曜日

CentOS 8-StreamにTalend Open Studio for Data Integrationをインストールする

TalendはオープンソースのJava製のETLアプリケーションです。

〇Talend Open Studio for Data Integrationの画面

インストール方法

以下のコマンドを実行します。
sudo dnf install -y java-11-openjdk

cd /opt

sudo wget 'https://sourceforge.net/projects/talend-studio/files/Talend%20Open%20Studio/7.3.1/TOS_DI-20200219_1130-V7.3.1.zip'

sudo unzip TOS_DI-20200219_1130-V7.3.1.zip

sudo mv TOS_DI-20200219_1130-V7.3.1 /opt/tosdi

cat << EOF | sudo tee /usr/share/applications/tosdi.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/tosdi/TOS_DI-linux-gtk-x86_64
Name=Talend Open Studio for Data Integration
Categories=Utility;Development;
EOF

関連情報

・Talendに関する他の記事は、こちらを参照してください。

pythonとpydubで音楽ファイルの内容を繰り返す

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイルの内容を繰り返す手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
「*」演算子で指定した数だけ、内容を繰り返します。ファイル名は適宜変更してください。
repeat.py
from pydub import AudioSegment

# 曲の読み込み
af = AudioSegment.from_mp3("yoursong.mp3")

# 曲を2回繰り返す
af2 = af * 2

# 曲を保存する
af2.export("repeat.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python  repeat.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

DockerでStellariumとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

Stellariumはパソコン上で星座を表示できるプラネタリウムソフトです。DockerでStellariumがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇Stellariumの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfcestellarium .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
  && add-apt-repository ppa:stellarium/stellarium-releases \
  && apt-get update \
  && apt-get -y install stellarium \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfcestellarium

関連情報

・Stellariumに関する他の記事は、こちらを参照してください。

CentOS8.2にKiCADをインストールする

KiCADで回路図やプリント基盤をデザインする事ができます。

〇KiCADの画面

インストール方法

以下のコマンドを実行します。
sudo dnf -y install flatpak

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

sudo flatpak -y install --from https://flathub.org/repo/appstream/org.kicad_pcb.KiCad.flatpakref

関連情報

・KiCADに関する他の情報はこちらを参照してください。

・KiCADのwebサイト
https://kicad-pcb.org/

2020年12月25日金曜日

CentOS 8-StreamにEclipse 2020-12をインストールする

EclipseはオープンソースのIDEです。

〇Eclipse 2020-12の画面

インストール方法

以下のコマンドを実行します。
sudo dnf install -y java-11-openjdk

cd /opt

sudo wget https://ftp.jaist.ac.jp/pub/eclipse/technology/epp/downloads/release/2020-12/R/eclipse-java-2020-12-R-linux-gtk-x86_64.tar.gz

sudo tar xvfz eclipse-java-2020-12-R-linux-gtk-x86_64.tar.gz

cat << EOF | sudo tee /usr/share/applications/eclipse.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/eclipse/eclipse
Name=eclipse
Categories=Development;
Icon=/opt/eclipse/icon.xpm
EOF

関連情報

・eclipseに関する他の記事は、こちらを参照してください。

pythonとpydubで音楽ファイル内のチャネル数の取得・モノラルへの変換を行う

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイル内のチャネル数の取得・モノラルへの変換を行う手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
channelsでチャネル数の取得、split_to_monoメソッドを使用してモノラル変換を行います。ファイル名は適宜変更してください。
channels.py
from pydub import AudioSegment

af = AudioSegment.from_mp3("yoursong.mp3")
# チャネル数を取得
print("channels: {}".format(af.channels))

# モノラルに変換
if af.channels > 1:
    af_monos = af.split_to_mono()
    print("channel0: {}".format(af_monos[0].channels))
    print("channel1: {}".format(af_monos[1].channels))
    af_monos[0].export("yoursong_mono0.mp3", format="mp3")
    af_monos[1].export("yoursong_mono1.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python channels.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

pythonとeyeD3でMP3ファイルのジャンルとコピーライトを取得する

eyeD3でmp3のメタデータなどにアクセスする事ができます。

eyeD3でのジャンルとコピーライトを取得する手順

1. eyeD3をインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとeyeD3でMP3ファイルの曲名・アーティスト名・アルバム名を取得する

2. サンプルプログラムの作成と実行
以下のスクリプトを保存します。ファイル名は適宜変更してください。
show_genre.py
import eyed3

af = eyed3.load("yoursong.mp3")
# ジャンル
print("Genre: {}".format(af.tag.genre))
# コピーライト
print("Copyright: {}".format(af.tag.copyright))

以下のコマンドでスクリプトを実行します。
python show_genre.py

関連情報

PythonでMP3ファイルの情報にアクセスできるeyeD3モジュールのまとめ

・eyeD3のgithubリポジトリ
https://github.com/nicfit/eyeD3

DockerでPyCharmとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

PyCharmはPython言語のIDEです。DockerでPyCharmがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇PyCharmの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfcepycharm .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
      python3-distutils \
  && wget https://download.jetbrains.com/python/pycharm-community-2020.3.tar.gz \
  && tar xvfz pycharm-community-2020.3.tar.gz \
  && mv pycharm-community-2020.3 /opt/pycharm-community \
  && echo '[Desktop Entry]' >> /usr/share/applications/pycharm.desktop \
  && echo 'Version=1.0' >> /usr/share/applications/pycharm.desktop \
  && echo 'Type=Application' >> /usr/share/applications/pycharm.desktop \
  && echo 'Terminal=false' >> /usr/share/applications/pycharm.desktop \
  && echo 'Exec=/opt/pycharm-community/bin/pycharm.sh' >> /usr/share/applications/pycharm.desktop \
  && echo 'Name=PyCharm' >> /usr/share/applications/pycharm.desktop \
  && echo 'Icon=/opt/pycharm-community/bin/pycharm.png' >> /usr/share/applications/pycharm.desktop \
  && echo 'Categories=Development;' >> /usr/share/applications/pycharm.desktop \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfcepycharm

関連情報

・PyCharmに関する他の記事は、こちらを参照してください。

Ubuntu20.04でPycraft mod for MinetestとPythonを使用してL型の家を作る

Pycraft mod for MinetestとPythonを使用してL型の家を作るには、以下の手順を実行します。

〇Pycraft mod for MinetestとPythonで作成したL型の家

作成方法

1. Pycraft mod for Minetestのインストール
Pycraft mod for Minetestをインストールしていない場合は、以下の記事を参考にしてインストールしてください。
Ubuntu20.04でPycraft mod for MinetestとPythonを使用して指定されたブロックの床を作成する

2. プログラミング
以下のコードで、L型の家を作ります。Thonnyの場合は、以下のコードを保存後、緑色の再生ボタンをクリックして実行してください。
import mcpi.minecraft as minecraft
import mcpi.block as block

def l_shaped_house(px, py, pz):

    # 家の幅
    house_xs = 10
    # 家の高さ
    house_ys = 5
    # 家の奥行き
    house_zs = 5

    # 追加の部屋の幅
    room_xs = 5
    # 追加の部屋の奥行き
    room_zs = 5

    # 床
    for dx in range(house_xs+2):
        for dz in range(house_zs+2):
          mc.setBlock( px+dx, py, pz+dz+room_zs, block.BRICK_BLOCK)

    # 追加の部屋の床
    for dx in range(room_xs+2):
        for dz in range(room_zs+2):
          mc.setBlock( px+dx+(house_xs-room_xs), py, pz+dz, block.BRICK_BLOCK)

    # 壁
    for dx in range(house_xs+2):
        for dz in range(house_zs+2):
            for dy in range(house_ys):
                if dx == 0 or dz == 0 or dx == house_xs+1 or dz == house_zs+1:
                    mc.setBlock( px+dx, py+dy+1, pz+dz+room_zs, block.BRICK_BLOCK )
                else:
                    mc.setBlock( px+dx, py+dy+1, pz+dz+room_zs, block.AIR )

    # 追加の部屋の壁
    for dx in range(room_xs+2):
        for dz in range(room_zs+1):
            for dy in range(house_ys):
                if dx == 0 or dz == 0 or dx == room_xs+1 :
                    mc.setBlock( px+dx+(house_xs-room_xs), py+dy+1, pz+dz, block.BRICK_BLOCK )
                else:
                    mc.setBlock( px+dx+(house_xs-room_xs), py+dy+1, pz+dz, block.AIR )

    # ドアの穴
    for dx in range(2):
        for dy in range(house_ys-1):
            mc.setBlock( px+dx+2, py+dy+1, pz+room_zs, block.AIR )

    # 部屋への穴
    for dx in range(3):
        for dy in range(house_ys-1):
            mc.setBlock( px+dx+2+(house_xs-room_xs), py+dy+1, pz+room_zs, block.AIR )

    # 窓
    mc.setBlock( px+6, py+2, pz+house_zs+1+room_zs, block.GLASS )
    mc.setBlock( px+7, py+2, pz+house_zs+1+room_zs, block.GLASS )
    mc.setBlock( px+8, py+2, pz+house_zs+1+room_zs, block.GLASS )
    mc.setBlock( px+6, py+3, pz+house_zs+1+room_zs, block.GLASS )
    mc.setBlock( px+7, py+3, pz+house_zs+1+room_zs, block.GLASS )
    mc.setBlock( px+8, py+3, pz+house_zs+1+room_zs, block.GLASS )


    # 追加の部屋の窓
    mc.setBlock( px+(house_xs-room_xs)+2, py+2, pz, block.GLASS )
    mc.setBlock( px+(house_xs-room_xs)+3, py+2, pz, block.GLASS )
    mc.setBlock( px+(house_xs-room_xs)+2, py+3, pz, block.GLASS )
    mc.setBlock( px+(house_xs-room_xs)+3, py+3, pz, block.GLASS )


    # 屋根
    for dy in range(3):
        for dx in range(house_xs+2-dy*2):
            for dz in range(house_zs+2-dy*2):
                mc.setBlock( px+dx+dy, py+dy+house_ys, pz+dz+dy+room_zs, block.REDSTONE_BLOCK)

    # 追加の部屋の屋根
    for dy in range(3):
        for dx in range(room_xs+2-dy*2):
            for dz in range(room_zs+house_zs+2-dy*2):
                mc.setBlock( px+dx+dy+(house_xs-room_xs), py+dy+house_ys, pz+dz+dy, block.REDSTONE_BLOCK)

    # 明かり
    mc.setBlock( px+10, py+1, pz+house_zs+room_zs, block.SEA_LANTERN)

    # 本棚
    mc.setBlock( px+10, py+1, pz+house_zs-2+room_zs, block.BOOKSHELF)
    mc.setBlock( px+10, py+2, pz+house_zs-2+room_zs, block.BOOKSHELF)

# ローカルサーバに接続
mc = minecraft.Minecraft.create("127.0.0.1")
# プレイヤーの位置を取得
pos = mc.player.getPos()
print(pos)
l_shaped_house(pos.x, pos.y, pos.z+5)

関連情報

・Minetestに関する情報はこちらを参照してください。

2020年12月24日木曜日

CentOS 8-StreamにPyCharm2020.3.1をインストールする

PyCharmはPython言語のIDEです。

〇PyCharmの画面

インストール方法

以下のコマンドを実行します。
wget https://download.jetbrains.com/python/pycharm-community-2020.3.1.tar.gz

tar xvfz pycharm-community-2020.3.1.tar.gz

sudo mv pycharm-community-2020.3.1 /opt/pycharm-community

cat << EOF | sudo tee /usr/share/applications/pycharm.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/pycharm-community/bin/pycharm.sh
Name=PyCharm
Icon=/opt/pycharm-community/bin/pycharm.png
Categories=Development;
EOF

関連情報

・PyCharmに関する他の記事は、こちらを参照してください。

pythonとpydubで音楽ファイルを重ね合わせる

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイルを重ね合わせる手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
overlayメソッドを使用して2つの曲を重ね合わせます。ファイル名は適宜変更してください。
overlay.py
from pydub import AudioSegment

# 曲1の読み込み
af1 = AudioSegment.from_mp3("yoursong1.mp3")

# 曲2の読み込み
af2 = AudioSegment.from_mp3("yoursong2.mp3")

# 2つの曲を重ね合わせる。positionで開始時間を指定します
af = af1.overlay(af2, position=4*1000)
af.export("overlay.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python overlay.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

DockerでGeoGebraとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

GeoGebraは幾何・代数・統計・解析に基づいた動的な数学アプリケーションです。DockerでGeoGebraがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇GeoGebraの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfcegeogebra .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
      libcanberra-gtk-module \
      libgconf-2-4 \
  && wget http://www.geogebra.net/linux/pool/main/g/geogebra-classic/geogebra-classic_6.0.620.0-202012010900_amd64.deb \
  && dpkg -i geogebra-classic_6.0.620.0-202012010900_amd64.deb \
  && chmod 4755 /usr/share/geogebra-classic/chrome-sandbox \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfcegeogebra

関連情報

・GeoGebraに関する他の記事は、こちらを参照してください。

CentOS8.2にKazamをインストールする

Kazamでデスクトップ画面を録画する事ができます。

〇Kazamの画面

インストール方法

以下のコマンドを実行します。
sudo dnf -y install python3

sudo dnf -y install python3-distutils-extra

sudo pip3 install --upgrade pip

sudo pip3 install kazam

関連情報

・Kazamのプロジェクトwebサイト
https://launchpad.net/kazam

2020年12月23日水曜日

CentOS 8-StreamにMyPaintをインストールする

MyPaintはオープンソースのシンプルなペイントツールです。

〇MyPaintの画面

インストール手順

以下のコマンドを実行します。
sudo mkdir -p /opt/mypaint

cd /opt/mypaint

sudo wget 'https://github.com/mypaint/mypaint/releases/download/v2.0.1/MyPaint-v2.0.1.AppImage'

sudo chmod +x /opt/mypaint/MyPaint-v2.0.1.AppImage

cat << EOF | sudo tee /usr/share/applications/mypaint.desktop
[Desktop Entry]
Type=Application
Version=1.0
Name=MyPaint
GenericName=MyPaint
Exec=/opt/mypaint/MyPaint-v2.0.1.AppImage
Categories=Graphics;
EOF

関連情報

・MyPaintに関する他の情報はこちらを参照してください。

・ブラシの追加方法は「MyPaintにブラシを追加する」を参照してください。

Ubuntu 20.04にGazeboをインストールする

Gazeboはオープンソースのロボットシミュレーターです。

〇Gazeboの画面

インストール手順

以下のコマンドを実行します。
wget -O gazebo.sh http://get.gazebosim.org/

sh gazebo.sh

関連情報

・Gazeboのwebサイト
http://gazebosim.org/

pythonとpydubで音楽ファイルを連結する

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイルを連結する手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
+演算子で曲を連結できます。ファイル名は適宜変更してください。
concat.py
from pydub import AudioSegment

# 曲1の読み込み
af1 = AudioSegment.from_mp3("yoursong1.mp3")

# 曲2の読み込み
af2 = AudioSegment.from_mp3("yoursong2.mp3")

# 2つの曲を連結する
af = af1 + af2
af.export("concat.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python  concat.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

Dockerでdraw.io DesktopとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

draw.io Desktopはオープンソースのチャート描画アプリケーションです。Dockerでdraw.io Desktopがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇draw.io Desktopの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfcedrawio .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
  && wget https://github.com/jgraph/drawio-desktop/releases/download/v13.9.9/draw.io-amd64-13.9.9.deb \
  && dpkg -i draw.io-amd64-13.9.9.deb \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfcedrawio

関連情報

・draw.io Desktopに関する他の記事は、こちらを参照してください。

CentOS8.2にKStarsをインストールする

KStarsはオープンソースの天文学ソフトウェアです。

〇KStarsの画面

インストール方法

以下のコマンドを実行します。
1. snapのインストール(※既に導入済みの場合はスキップしてください)
sudo dnf -y install epel-release

sudo dnf -y install snapd

sudo systemctl enable --now snapd.socket

sudo ln -s /var/lib/snapd/snap /snap

2. KStarsのインストール
sudo snap install kstars
※もし「error: too early for operation, device not yet seeded or device model not acknowledged」というメッセージが表示された場合は、しばらく待ってから再実行してください。

実行方法

以下のコマンドで実行します。
snap run kstarts

関連情報

・KStarsに関する他の記事はこちらを参照してください。

2020年12月22日火曜日

Debian 10(Buster)/Ubuntu 20.04にロボットシミュレーターのWebotsをインストールする

Webotsはオープンソースのロボットシミュレーターです。

〇Webotsの画面(Debian 10)

〇Webotsの画面(Ubuntu 20.04)

インストール方法

以下のコマンドを実行します。
wget https://github.com/cyberbotics/webots/releases/download/R2021a/webots_2021a_amd64.deb

sudo apt-get -y install ./webots_2021a_amd64.deb

関連情報

・Webotsのgithubリポジトリ
https://github.com/cyberbotics/webots

pythonとpydubで音楽ファイルの始まり・終わり・中間を切り出す

pydubで音楽ファイルに対して様々な編集をすることができます。

pydubで音楽ファイルの始まり・終わり・中間を切り出す手順

1. pydubをインストールしたPython環境を準備します。環境の準備については、以下を参照してください。
pythonとpydubで音楽ファイルのボリュームを変更する(pipenv版)
pythonとpydubで音楽ファイルのボリュームを変更する(poetry版)

2. サンプルプログラムの作成と実行
以下のスクリプトを保存します。ファイル名は適宜変更してください。
cut.py
from pydub import AudioSegment

af = AudioSegment.from_mp3("yoursong.mp3")
# 最初の5秒を切り出す
first_5_sec = af[:5*1000]
first_5_sec.export("first_5_sec.mp3", format="mp3")

# 最後の7秒を切り出す
last_7_sec = af[-7*1000:]
last_7_sec.export("last_7_sec.mp3", format="mp3")

# 17秒目から25秒目
from_17_sec_to_25_sec = af[17*1000:25*1000]
from_17_sec_to_25_sec.export("from_17_sec_to_25_sec.mp3", format="mp3")

以下のコマンドでスクリプトを実行します。
python cut.py

関連情報

・pydubのgithubリポジトリ
https://github.com/jiaaro/pydub

・pydubに関する他の記事は以下のまとめページを参照してください。
pydubまとめ

DockerでFreeCADとXfce、TigerVNCがインストールされたコンテナ(Ubuntu20.04)を作成する

FreeCADはオープンソースのCAD描画アプリケーションです。DockerでFreeCADがインストール済みのXfceデスクトップ環境を構築し、VNCクライアントで接続することができます。

〇FreeCADの画面
TigerVNCがインストールされているので、VNCクライアントで接続することができます。VNCパスワードはubuntuです。

イメージのビルド

以下のコマンドを実行してイメージをビルドします。
docker build --no-cache -t ub2004vncxfcefreecad .

Dockerfile
from ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xfce4-terminal \
      tigervnc-standalone-server \
      expect \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
  && mkdir -p /opt/freecad \
  && cd /opt/freecad \
  && wget https://github.com/FreeCAD/FreeCAD/releases/download/0.18.4/FreeCAD_0.18-16146-rev1-Linux-Conda_Py3Qt5_glibc2.12-x86_64.AppImage \
  && chmod +x FreeCAD_0.18-16146-rev1-Linux-Conda_Py3Qt5_glibc2.12-x86_64.AppImage \
  && echo '[Desktop Entry]' >> /usr/share/applications/freecad.desktop \
  && echo 'Version=1.0' >> /usr/share/applications/freecad.desktop \
  && echo 'Type=Application' >> /usr/share/applications/freecad.desktop \
  && echo 'Terminal=false' >> /usr/share/applications/freecad.desktop \
  && echo 'Exec=/opt/freecad/FreeCAD_0.18-16146-rev1-Linux-Conda_Py3Qt5_glibc2.12-x86_64.AppImage' >> /usr/share/applications/freecad.desktop \
  && echo 'Name=FreeCAD' >> /usr/share/applications/freecad.desktop \
  && echo 'Categories=Development;' >> /usr/share/applications/freecad.desktop \
  && apt-get -y remove --purge light-locker \
  && apt-get -y install gnome-screensaver \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'spawn "tigervncpasswd"' >> /tmp/initpass \
  && echo 'expect "Password:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Verify:"' >> /tmp/initpass \
  && echo 'send "ubuntu\\r"' >> /tmp/initpass \
  && echo 'expect "Would you like to enter a view-only password (y/n)?"' >> /tmp/initpass \
  && echo 'send "n\\r"' >> /tmp/initpass \
  && echo 'expect eof' >> /tmp/initpass \
  && echo 'exit' >> /tmp/initpass \
  && sudo -u ubuntu -H /bin/bash -c '/usr/bin/expect /tmp/initpass' \
  && mkdir -p /home/ubuntu/.vnc \
  && chown ubuntu:ubuntu /home/ubuntu/.vnc \
  && echo '#!/bin/sh' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LANG=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export LC_ALL=ja_JP.UTF-8' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export XMODIFIERS=@im=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'export GTK_IM_MODULE=fcitx' >> /home/ubuntu/.vnc/xstartup \
  && echo 'fcitx -r -d &' >> /home/ubuntu/.vnc/xstartup \
  && echo 'exec startxfce4' >> /home/ubuntu/.vnc/xstartup \
  && chmod +x /home/ubuntu/.vnc/xstartup \
  && mkdir -p /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data

expose 5901
volume ["/home/ubuntu/data"]
cmd /usr/bin/vncserver :1 -localhost no -geometry 1152x864 -alwaysshared -fg

コンテナの実行

コンテナを実行するには、以下のコマンドを実行します。
docker run -it -v `pwd`:/home/ubuntu/data -p 5901:5901 -u ubuntu --privileged ub2004vncxfcefreecad

関連情報

・FreeCADに関する他の記事は、こちらを参照してください。