Python

Python 指定されたディレクトリ内のすべてのPNGファイルをJPEG形式に変換するPythonスクリプト

1 Mins read
指定されたディレクトリ内のすべてのPNGファイルをJPEG形式に変換するPythonスクリプト
# 指定されたディレクトリ内のすべてのPNGファイルをJPEG形式に変換するPythonスクリプト
# python3系
# pip install Pillow
#
# 下のファイルは削除しない
# python png-jpeg.py
#
# 下のファイルは削除
# python png-jpeg.py rm=1


from PIL import Image
import os
import sys


def convert_png_to_jpeg(directory, remove_png=False):
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith('.png'):
png_path = os.path.join(root, file)
jpeg_path = os.path.splitext(png_path)[0] + '.jpg'


try:
image = Image.open(png_path)
rgb_im = image.convert('RGB')
rgb_im.save(jpeg_path, quality=100)
print(f"{png_path}を{jpeg_path}に変換しました")


if remove_png:
os.remove(png_path)
print(f"{png_path}を削除しました")
except Exception as e:
print(f"{png_path}の変換に失敗しました: {e}")


# カレントディレクトリを取得して指定
current_directory = os.getcwd()


# コマンドライン引数を確認
remove_png = False
if len(sys.argv) > 1 and sys.argv[1] == 'rm=1':
remove_png = True


convert_png_to_jpeg(current_directory, remove_png)

 

Read more
macOS

【Mac】Montereyで port 5000 使用不可

1 Mins read

開発でポート5000使ってるんだけどエラーがはて?

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5000 -> 0.0.0.0:0: listen tcp 0.0.0.0:5000: bind: address already in use

lsof -i:5000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 85856 user10 26u IPv4 0x4ff853972c8bedd 0t0 TCP *:commplex-main (LISTEN)
ControlCe 85856 user10 27u IPv6 0x4ff85430b21e97d 0t0 TCP *:commplex-main (LISTEN)

なんじゃこやつは?

どうやらMontereyからAirPlay機能というのが追加されて乗っ取られたらしい

System Preference > Sharing > AirPlay Receiver > チェックをOff
これで使えるようになるけど。。。先々を考えると他の人も同じ問題に遭遇するだろうから開発側を変えるしかないかな

Read more
macOSパソコンのこと日記

【Mac】ターミナルなど Operation not permitted を回避し開発者仕様にする

1 Mins read

macOS Monterey
Version12.4

■1.「SIP」をdisableに変更
(システム整合性保護(System Integrity Protection: SIP)の無効化)

Macを一度シャットダウン
起動時に「command + R」押下、マークが表示されたら離す
リカバリーモードが起動
上のメニューバーから「ターミナル起動」

# コマンド:「csrutil status」が「enabled」なら
csrutil status

# コマンド:「csrutil disable」を叩く(再起動しないと反映されない!)
csrutil disable

# コマンド:「reboot」にてMac再起動
reboot

■2.ターミナルをファイルフル権限に設定
通常起動後に
「システム環境設定」

「セキュリティーとプライバシー」

「プライバシー」タブの右側「フルアクセス」

「ターミナル」のチェックボックスOn

■3.「.DS_store」を削除&作成不能とする

# .DS_Storeファイル全部削除
sudo find / -name ".DS_Store" -delete
# Finder再起動
Killall Finder

# .DS_Storeファイルを完全に作らない
defaults write com.apple.desktopservices DSDontWriteNetworkStores True
# Finder再起動
Killall Finder

■4.必要ないならiCloud同期しない設定がおすすめ

Read more
日記

【Mac】 VPN使用時に接続先を限定する

1 Mins read

VPN接続時に特定のIP(VPN接続先ネットワーク)以外へのアクセスはVPN経由ではなくローカル環境ネットワークから直接インターネットへルーティングさせることによりネットワークトラフィックを快適にする

※リモート業務の場合、情シスの考えによっては全ての接続を社内経由にしたい時などあるので仕事で使用する際には情シスの許可をとってください

※VPN接続先を経由することにより接続を解放している外部サーバー設定も多いので要注意

※VPN先へDomain使用してアクセスしている場合はDNS設定に要注意(VPN側のDNS設定によってはhostsファイル編集する時もありそう)

macOS Monterey
Version12.3
VPN接続方法 L2TP/IPsec(PPPはトンネリング)

■環境設定のネットワークを開きVPN接続の詳細
「すべてのトラフィックをVPN接続経由で送信」のチェックを外す
設定画像

■ルーティング追加スクリプト作成
接続確立時は /etc/ppp/ip-up というスクリプトが呼ばれます
このファイルに以下を追加し「VPN接続時のIP経路を追加する」
例として「VPNにルーティングしたい経路」を「172.31.1.0/24」としている。

#VPN接続してppp0存在確認
$ ifconfig

#VPN接続切ってから
#viにてファイル編集
$ sudo vi /etc/ppp/ip-up
#!/bin/sh

if [ "$1" = "ppp0" ]; then
    /sbin/route add -net 172.31.1.0/24 -interface ppp0
fi

#viにてファイル保存
#ファイルは実行権限を付与
$ sudo chmod +x /etc/ppp/ip-up

#ルーティングテーブルの確認
$ netstat -rn

備考
複数の経路をルーティングする際には複数記載できる
/sbin/route add -net 172.31.1.0/22 -interface ppp0
/sbin/route add -net 172.31.4.0/22 -interface ppp0
/sbin/route add -net 172.31.8.0/22 -interface ppp0

Read more