Posts
【教師なし学習】k-means(k平均法)により似たデータをクラスタリング(グループ化)する
【Pillow】画像をまとめてクロッピング(トリミング)する【マルチスレッド高速化】
自炊した画像データには、余白がある。そこでPillowを使って必要な部分だけトリミングしていく。 ただし、「画像を読み込んで、クロッピング(トリミング)をして保存をする」という処理を、大量に繰り返すのでマルチスレッドで高速化させる。 速度差を意識するため、処理時間も計測する。 まずはforループで直列実行 まずは直列実行してみる。 from PIL import Image import os input_dir = "images" output_dir = "cropped_images" # 出力先が存在しない場合はつくる。 os.makedirs(output_dir, exist_ok=True) # 切り抜き範囲 ...Pythonのthreading.Thread と concurrent.futures.Threadpoolexecutor の違い【マルチスレッド処理】
Pythonのマルチスレッドには2つの方法がある。 threading.Thread と concurrent.futures.Threadpoolexecutor の2つである。 本記事ではその比較をまとめる 比較項目 threading.Thread Threadpoolexecutor スレッドの管理 自分でスレッドの実行と終了の管理が必要 自動的に管理される 戻り値の扱い 基本取得できない(共有変数などを使う) 取得できる エラーハンドリング 各スレッドでtry-exceptをしなければならない Future.exception() で取得可能 スレッドの起動 個別に起動できる タスクをプールに投げるので、個別にはスレッドの起 ...Ubuntuの夜間モードが通用しない場合の対処法
GUIから夜間モードの操作をする。 gnome-control-center display これで夜間モードの設定画面が開く。 コマンドから夜間モードを有効にする。 gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true これでONになり、 gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled false これでOFFになる。ショートカットキーにも割り当てておけば便利かもしれない。 どうしても夜間モードが効かない場合は? ログアウトして再度ログインする。これでデスクトップが起動し直され、夜間モードが正常に機能する。 ...OracleDBのSQLまとめ
dockerにインストールしたOracle−XEを使用している。 UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える HR スキーマを搭載した。 雇用日時をもとに絞り込みをする 【非推奨】文字列を与えると、暗黙的にDATE型に変換する 例えば、2015年1月1日以降に雇用した従業員を出力するには、 SELECT * FROM employees WHERE hire_date >= '2015-01-01' ; そして、新人を上に表示させるため、降順に並び替える。 SELECT * FROM employees WHERE hire_date >= '2015-01-01' ...UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える
至急、Oracle DB SQL Silverの試験を受ける必要が出てきた。 そこで、すでにあるUbuntuのdockerで、OracleDBの環境を整えていく。 前提 dockerのバージョンは以下の通り、 Docker version 26.1.3, build 26.1.3-0ubuntu1~22.04.1 Oracle公式が提供しているdockerのイメージは下記。 https://hub.docker.com/r/gvenzl/oracle-xe Oracle社のエンジニア、G. Venzl 氏から提供されている。 dockerのイメージをPullする 現時点での最新版は、21.3.0 なので、以下の ...【データベース】基本的なSQL文の一覧【SELECT, INSERT INTO, DELETE, UPDATE, UNION, JOIN】
【導入】dockerでDatabaseを用意する。 Oracle DBを用意する UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える ただし、この記事ではPostgreSQLでの使用を想定しているため、SQLが若干違う点に注意。 テーブルをつくるCREATE TABLE文 CREATE TABLE テーブル名 ( カラム名1 データ型 [制約], カラム名2 データ型 [制約], ... ); この書き方に倣って、 CREATE TABLE categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT ...【C#】LINQのメソッドのまとめ
Seleniumの基本操作のまとめ
Seleniumは同じような処理が続くため、基本操作をまとめた。 ただ、forループとtry 文が続く冗長構成のため、後に修正する予定。 ソースコード from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait, Select from selenium.webdriver.support import expected_conditions from selenium.webdriver.common.by import By from selenium.common.exceptions import TimeoutException driver = webdriver.Firefox() wait = WebDriverWait(driver, 10) retry = 10 # 要素が見えているか def xpath_visible(xpath: str): return wait.until(excepted_conditions.visibility_of_element_located((By.XPATH, xpath))) def xpath_click(xpath: str): for _ in range(retry): try: elem = xpath_visible(xpath) elem.click() except: continue else: return raise TimeoutException(f"クリックできませんでした: {xpath}") def xpath_send_keys(xpath: str, keys: str): for _ in range(retry): try: elem = xpath_visible(xpath) elem.send_keys(keys) except: continue else: return raise Timeout ...