Imagemagickで画像のDPIを変更する
画像のDPI(dot per inch)がばらばらの場合、 TeXで画像を取り込んだときのサイズがばらばらになるため統一する。 以下はIN.pngをDPI 72にしてOUT.pngに出力するコマンド。 convert -density 72 -units PixelsPerInch IN.png OUT.png もともとのDPIを調べるコマンド。 identify -format '%x,%y\n' IN.png
画像のDPI(dot per inch)がばらばらの場合、 TeXで画像を取り込んだときのサイズがばらばらになるため統一する。 以下はIN.pngをDPI 72にしてOUT.pngに出力するコマンド。 convert -density 72 -units PixelsPerInch IN.png OUT.png もともとのDPIを調べるコマンド。 identify -format '%x,%y\n' IN.png
Bug Report - [SOLVED] Window Capture Black Screen | OBS Forums Ubuntu + NVIDIA GPU環境では、OBS StudioでWindow Captureしようとすると 一部のアプリケーションで黒画面の表示になり動作しない。 おそらくOpenGLで描画しているものが対象。 いくつか対処法の候補がある。 Alt+F2からrを入力して実行 アプリケーションをフルスクリーン表示からウインドウ表示に切り替える アプリケーションをウインドウ表示からフルスクリーン表示に切り替える Window Capture (Xcomposite)の設定欄をスクロールして、Use alpha-less texture format (Mesa workaround)にチェックを入れる OSを再起動(GPUドライバに更新が入ったときなど)
https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#module-loopback 以下のコマンドで仮想出力デバイスDummyOutput0と、そのループバックLoopback from Monitor of DummyOutput0が追加される。 pacmd load-module module-null-sink sink_name=DummyOutput0 sink_properties=device.description=DummyOutput0 pacmd load-module module-loopback source=DummyOutput0.monitor source_dont_move=true pavucontrolまたはPulseAudio Volume ControlのPlaybackから 目的のアプリケーションの出力先をDummyOutput0にする。 また、Loopback from Monitor of DummyOutput0の出力先を 希望のスピーカーにすることで音声出力を分離しつつ同時に視聴できる。 source_dont_move=trueは、デフォルトの入力デバイス変更時にLoopbackの入力デバイスも変更されてしまうのを防ぐオプション。 pavucontrolからも変更できなくなる。 仮想出力デバイスとループバックを削除するには、以下のコマンドを実行する。 pacmd unload-module module-loopback pacmd unload-module module-null-sink ログイン時に自動作成する ログイン時自動作成 /etc/pulse/default.pa # Custom load-module module-null-sink sink_name=DummyOutputApp sink_properties=device.description="DummyOutputApp" load-module module-loopback source=DummyOutputApp.monitor source_dont_move=true load-module module-null-sink sink_name=DummyOutputVoiceChat sink_properties=device.description="DummyOutputVoiceChat" load-module module-loopback source=DummyOutputVoiceChat.monitor source_dont_move=true load-module module-null-sink sink_name=DummyOutputGeneral0 sink_properties=device.description="DummyOutputGeneral0" load-module module-loopback source=DummyOutputGeneral0.monitor source_dont_move=true load-module module-null-sink sink_name=DummyOutputGeneral1 sink_properties=device.description="DummyOutputGeneral1" load-module module-loopback source=DummyOutputGeneral1.monitor source_dont_move=true ログイン時自動作成 PulseAudioの再起動 pulseaudio --kill pulseaudio --start デバイス接続時の入出力デバイス自動切り替えを無効化する https://askubuntu.com/questions/1061414/how-to-disable-pulseaudio-automatic-device-switch 新しい出力デバイスが検出されたとき、デフォルト出力デバイスが切り替わるのを防ぐ。 ...
Downloads – Oracle VM VirtualBox Downloads | Vagrant by HashiCorp Vagrant box ubuntu/bionic64 - Vagrant Cloud Install Docker Engine on Ubuntu | Docker Documentation Install Docker Compose | Docker Documentation kvm (qemu)を使うこともできるらしいが、対応したboxを用意する必要があるのでVirtualBoxを使う。 KVM用仮想マシンをVagrantで手軽に作る | さくらのナレッジ Commands # 起動 vagrant up # 削除 vagrant destroy # ssh vagrant ssh # 停止(シャットダウン) vagrant halt Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" config.vm.hostname = "ubuntu-docker" # config.vm.network "forwarded_port", guest: 80, host: 8080 # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" config.vm.provider "virtualbox" do |vb| vb.name = "ubuntu-docker" vb.memory = "1024" # vb.gui = true end config.vm.provision "shell", inline: <<-SHELL apt-get update apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository -y \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" apt-get update apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose adduser vagrant docker SHELL end
機材 Arduino UNO(中華) ロータリエンコーダ付きステッピングモータ PKP214U06A-R2EL PKP214U06A-R2EL-L|PKPシリーズ/PKシリーズ|ステッピングモーター|オリエンタルモーター株式会社 モータ部説明書(PDF、HM-7433J.pdf) ロータリエンコーダ部説明書(PDF、HM-7439JE.pdf) 特性図(画像)(DC24V駆動時) モータ部 2相 ユニポーラ5本リード線 基本ステップ角度1.8° AC 50/60Hz 0.5kV 絶縁耐圧(1分間) ロータリエンコーダ部 分解能 200 パルス/回転(pulse/revolution) A相、B相、Z相:3チャンネル出力 DC5V駆動 モータドライバ SLA7078MPRT SLA7078MPRT |サンケン電気 2相ステッピングモータードライバー ユニポーラ駆動用 SLA7078MPRT: 半導体 秋月電子通商-電子部品・ネット通販 データシート(PDF、sla7073mprt_ds_jp.pdf) μステップ対応品 実使用電圧 10-44V モータドライバ基板 SEC20120330A エレ・メカ・ホビーショップSEC 資料置き場 新型 2相ステップドライバ資料(PDF、step-2p-v1.pdf) ステッピングモータの制御 ステッピングモータ 配線 ステッピングモータ本体からは、左から黒・緑・橙・青・赤の5本のケーブルが出ている。 これは説明書を見ると 黒・緑がA相(\(\rm A\)・\(\rm \overline{A}\))、 青・赤がB相(\(\rm B\)・\(\rm \overline{B}\))、 橙が電源になっている。 モータドライバ基板の対応する端子にこれらを接続する。 モータ電源として24V DC電源(ATS065-P240)を使用した。 ステッピングモータ ドライバ設定 μステップ機能(角度をより細かく制御できる)を使い、 励磁方式をW1-2相励磁(4分割)にするため、ドライバのM3端子をHIGHにする。 今回使ったドライバ基板ではDIPスイッチの4番をONにする。 第3回 ドライブICの制御方式「励磁方式」 | 特集 | NPM 日本パルスモーター株式会社 ドライバ基板上の半固定抵抗(Refに接続)を使って、 カレントダウン(過熱防止のための電流カット機能)時の電流と 通常時の電流をできるだけ絞る(反時計回りで絞れる)。 実際に回すときは、求められるトルクと発熱のトレードオフで調節すると思われる。 ...
まずはPCに接続されている音声入力デバイスのIDを確認する。 pactl list short sources # pactl list sources 3 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING 4 alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING 5 alsa_output.usb-GeneralPlus_USB_Audio_Device-00.iec958-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING 6 alsa_input.usb-GeneralPlus_USB_Audio_Device-00.analog-mono module-alsa-card.c s16le 1ch 44100Hz RUNNING ここでは、以下のようになっている。 ID 種類 3 本体のヘッドホン端子 4 HDMI 5 USBサウンドカードのヘッドホン端子 6 USBサウンドカードのマイク端子 以下のコマンドで、ID=6のUSBサウンドカードのマイク端子に入力されている音声をスピーカにループバックするモジュールがロードされる。 pacmd load-module module-loopback source=6 名前を使って指定することもできる。 pacmd load-module module-loopback source=alsa_input.usb-GeneralPlus_USB_Audio_Device-00.analog-mono 必要に応じて、pavucontrolを開いて出力先デバイスを設定する。 以下のコマンドで、ループバックモジュールをアンロードする。 pacmd unload-module module-loopback
sudo apt install tk-dev python-tk python3-tk pyenv install 3.8.6 pyenv global 3.8.6 python3 -m tkinter
User (Desktop): Settings > Network > Network Proxy Settings > Network > Network Proxy > Manualに設定する。 自動的に環境変数HTTP_PROXY, HTTPS_PROXYにスキームが追加された状態で設定される。 HTTP Proxy: proxy port HTTPS Proxy: proxy port Ignore Hosts: localhost, 127.0.0.0/8, ::1(プライベートネットワーク・組織内ネットワークのIPアドレス範囲またはドメインも追加する) curlやwget、pipなど主要コマンドは 注意点として、別ユーザとしてコマンドを実行すると環境変数が引き継がれない。 例えばsudo curlしたときにプロキシに接続しにいかない。 /etc/sudoers sudoでコマンドを実行したとき、実行時シェルに設定されている環境変数を引き継ぐようにする。 sudoersは書き込み禁止になっているためvisudoで編集する。 # run as root visudo -f /etc/sudoers Defaults env_keep+="HTTP_PROXY" Defaults env_keep+="HTTPS_PROXY" Defaults env_keep+="NO_PROXY" Defaults env_keep+="EDITOR" /etc/environment システム全体の環境変数として設定される。影響範囲が大きいので注意。 デスクトップユーザではSettings側の設定(Disabledなら設定されない)が優先されるようだった。 HTTP_PROXY=http://proxy:port HTTPS_PROXY=http://proxy:port NO_PROXY=localhost, 127.0.0.0/8, ::1 apt: /etc/apt/apt.conf Acquire::http::proxy "http://proxy:port"; Acquire::https::proxy "http://proxy:port"; Snap: systemctl edit snapd.service /etc/systemd/system/snapd.service.d/override.confにsystemdの設定ファイルを作成する。 ...
ses = requests.Session() Headers ses.headers.update({ }) Copy cookies from Selenium ses.cookies.clear() for cookie in driver.get_cookies(): rc = requests.cookies.create_cookie(domain=cookie['domain'], name=cookie['name'], value=cookie['value']) ses.cookies.set_cookie(rc) Download a file file_url: str dest_path: str with tempfile.NamedTemporaryFile() as fp: with ses.get(file_url, stream=True) as r: r.raise_for_status() for chunk in r.iter_content(chunk_size=8192): fp.write(chunk) fp.flush() shutil.copy(fp.name, dest_path)
2022-08-06 追記 Seleniumのバージョンが上がって一部非推奨化したりしたので、そちらに対応した版を作成しました。 リポジトリ: https://github.com/aoirint/compose-selenium-python-template 2020-09-28 docker-compose.yml version: '3.8' services: app: build: ./app/ entrypoint: [ "wait-for-it", "selenium:4444", "--", "python3", "/code/main.py" ] volumes: - ./work:/work environment: SELENIUM_URL: http://selenium:4444/wd/hub depends_on: - selenium selenium: image: selenium/standalone-chrome volumes: - /dev/shm:/dev/shm app/Dockerfile FROM python:3 WORKDIR /work RUN apt update && apt install -y \ wait-for-it ADD requirements.txt /tmp/ RUN pip3 install -r /tmp/requirements.txt ADD code/ /code app/requirements.txt requests >= 2.24.0 selenium app/code/main.py from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.desired_capabilities import DesiredCapabilities selenium_url = os.environ['SELENIUM_URL'] website_url: str = None driver = webdriver.Remote( command_executor=selenium_url, desired_capabilities=DesiredCapabilities.CHROME, ) driver.get(website_url)