自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

  • 【データベース】基本的なSQL文の一覧【SELECT, INSERT INTO, DELETE, UPDATE, UNION, JOIN】

    テーブルをつくるCREATE TABLE文 CREATE TABLE テーブル名 ( カラム名1 データ型 [制約], カラム名2 データ型 [制約], ... ); この書き方に倣って、 CREATE TABLE categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE topics ( id INTEGER PRIMARY KEY AUTOINCREMENT, category_id INTEGER NOT NULL, title TEXT NOT NULL, content TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (category_id) REFERENCES categories(id) ); CREATE TABLE replies ( id INTEGER PRIMARY KEY AUTOINCREMENT, topic_id INTEGER NOT NULL, content TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (topic_id) REFERENCES topics(id) ); こんな感じで、カテゴリ→トピック→リプライのつながりでテーブルをつくる。 レコードの挿入のINSERT INTO 続いて、INS ...
  • 【C#】LINQのメソッドのまとめ

    LINQ の概要と前提情報 LINQ はコレクションに対して宣言的にクエリを書くためのしくみである。 コレクションとはイテラブルな要素のことであり、配列や辞書、リストが当てはまる。 C#の配列は固定長であり、リストは可変長。リストの方には別途メソッドが豊富に用意されている。配列は固定長なので、Pythonのタプルに近いだろう。 辞書はキーを指定して値を取り出す。 基本のWhereとToList class Student { public string Name; public int Age; public int Grade; } var students ...
  • 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 ...
  • ffmpeg で すべてのmp4ファイルをまとめて加工するシェルスクリプト

    冒頭に広告や前置きなどがある動画を、まとめて加工したい場合。 高速で切り取りしたい場合 #! /bin/bash for file in *.mp4; do ffmpeg -i "$file" -ss 100 -c copy "${file}_output.mp4" done たまに、冒頭数秒が空白になってしまうようだ。 品質も維持したい場合 #! /bin/bash for file in *.mp4; do ffmpeg -i "$file" -ss 100 -c:v libx264 -c:a aac -strict experimental "${file}_output.mp4" done こちらはエンコードまでするため、冒頭の空白が除去できる。 解説 -i input.mp4 : 編集対象のファイルを指定する -ss 100 : 動画の開始時間を100秒とする -c copy : エンコードなしでコピーする(品質よりも高速化 ...
  • Ubuntuにnode.jsを手動でインストールする【tar.xz ファイルの解凍と】

    https://nodejs.org/ja Nodeの公式サイトにアクセスする。 最新版のファイルをDLして、 https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-x64.tar.xz ファイルを解凍する。 tar -xJf node-v22.14.0-linux-x64.tar.xz オプションの x は解凍。 J は xz圧縮形式の解凍 f はファイル指定。 cd node-v22.14.0-linux-x64 回答したファイルをすべて /usr/local/ に配置する。 sudo cp -r * /usr/local/ ...
  • Next.jsとTypeScriptで簡易掲示板をつくる

    Next.js を使えば、フロントからサーバーサイドまで一貫してJavaScript(TypeScript)でウェブアプリをつくる。 npx create-next-app startup-bbs このようにプロジェクトを作った。 cd startup-bbs npm run dev これでサーバーが起動すればプロジェクト作成はOK。 プロジェクトのディレクトリ構成 startup-bbs の中は以下のようになっている。 $ ls -al 合計 264 drwxrwxr-x 7 akagi akagi 4096 4月 4 10:40 . drwxrwxr-x 3 akagi akagi 4096 4月 4 10:39 .. drwxrwxr-x 8 akagi akagi 4096 4月 4 10:39 .git -rw-rw-r-- 1 akagi akagi 480 4月 4 10:39 .gitignore drwxrwxr-x 7 akagi akagi 4096 4月 4 10:40 .next -rw-rw-r-- 1 akagi akagi 1450 ...
  • UbuntuからWindows開発環境への移行作業

    慣れ親しんだUbuntuからWindowsへメインマシンを移行し、開発環境を構築する必要が出てきたので、ここにその手順をまとめておく。 VirtualBoxのインストール とりあえず、VirtualBoxさえあれば元のUbuntu環境をある程度の再現はできるので事前にインストールしておく。 https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html Windows の場合、Visual C++を事前にインストールしておく必要がある https://1nux.com/archives/318 このページのX64 をDLしてインストールした ...
  • duコマンドでディレクトリのサイズ・容量を調べる【ファイルサーバーのストレージディスク整理に】

    ファイルサーバーなどを運用していると、ディスク容量が足りなくなることがよくある。 df -h --total でもストレージの残量を調べることはできるが、パーティション単位であり、どのファイルがどれぐらいの容量なのかがわからない。 こういうときはduコマンドを使って調べる。 du -sh ./* これでカレントディレクトリ内のすべてのファイルの容量を調べることができる。(hオプションで見やすく、sオプションで1階層のみ調べる) ...
  • Ubuntu 24.04 LTS での python仮想環境構築

    Ubuntu 24.04LTS では rootにPythonライブラリをインストールすることはできないようになっている。 $ sudo pip3 install --user virtualenv error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed. If you wish to install a non-Debian packaged Python application, it may be easiest to use pipx install xyz, which will manage a virtual environment for you. Make sure you have pipx installed. See /usr/share/doc/python3.12/README.venv for more information. note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages. hint: See PEP 668 for the detailed specification. これはDebi ...
  • sedコマンドで指定した範囲の行だけ標準出力をする。xselと組み合わせて部分的にクリップボードにコピー

    sed -n "開始行,終了行p" ファイル名 とすることで、指定したファイルの開始行から終了行までのテキストをそのまま標準出力できる。 そのため、xselと組み合わせ、指定したファイルの指定した範囲の行を、ワンライナーでクリップボードにコピーできる。 sed -n "100,120p" ./bbs/views.py | clipcopy ...