銀河の歴史がまた1ページ(日記)

Last Update (2024/04/01 21:29:40)
1997.09.06から数えて counter 番目のアクセスです。

ミラーサイト [www.ceres.dti.ne.jp] [yk.rim.or.jp]

[ホームページ] [日記] [日記ファイル一覧] [読んでいる日記] [FreeBSD] [FreeBSD LINK] [検索]

ページ内目次


■ 宇宙暦 2022.05.01

http://www.ceres.dti.ne.jp/~george/jdiaryC20501.html#20220501

2022.05.01(日) 18:24:05 Ryzen Master 再び

Ryzen Master 再び

tag: ryzen, host-vermeer, ryzen-master

久しぶりに試したら Ryzen Master が Windows 11 に対応していたらしく、インストールに成功。

クロックダウン方向の設定はあまり無いようだ。

2022.05.01(日) 20:12:46 パリピ孔明 OP曲 ちきちきばんばん

パリピ孔明 OP曲 ちきちきばんばん

tag: anime

原曲(ハンガリーの曲らしい)とアニメ版カバー曲と、比較動画があったのでリンク。

音節と母音をあわせて日本語版の歌詞作ったらしく、言語は違うけどハモってて笑うww

原曲の紹介(ついでにJolly日本デビュー)もしてたらしい。 avex ようやるわ。


■ 宇宙暦 2022.05.02

http://www.ceres.dti.ne.jp/~george/jdiaryC20501.html#20220502

2022.05.02(月) 19:27:05 Selenium を使って Web の画面をキャプチャしてみた

Selenium を使って Web の画面をキャプチャしてみた

tag: selenium

Twitter がそうなのだが、curl で HTTP GET しただけだと内容が取れない SPA 系の WEBサイトを取得するため selenium を使ってみた。

Selenium は、Chromiumなどのブラウザをpythonから制御するためのdriverやライブラリのセット。 Webサイトへの自動アクセスができたり色々できる。

debian11の場合は以下でselenium環境が整う。

sudo apt install -y chromium-driver chromium python3 python3-pip
sudo pip3 install selenium

Dockerにselenium環境を焼きこんで使う場合は、SeleniumHQさんが作った https://github.com/SeleniumHQ/docker-selenium が便利だった。

Webサイトにもよるが https://www.yahoo.co.jp/ のように X11 画面が無いと selenium からの chromium 起動に失敗するケースがある。

SeleniumHQさんが作ったdocker-seleniumでは、VNCの仮想Xサーバをdockerイメージの中で起動しているのでX11画面が必要なサイトでも selenium + chrome が動作する。 (力技だw)

docker-seleniumでは、ポート番号4444でremote selenium driver接続を受け付けているので、そこのURLを指定してdriverを初期化する感じになる。

画面を撮影したりドキュメントタイトルを取得したりするpython3スクリプトを以下に示す。

cat > access-url-and-screen-shot.py << "EOF"
#!/usr/bin/python3
#
# 指定されたURLにアクセスしてスクリーンショットを撮影する
#   Web サイトの document title も 取得する
#   スクリーンショットも採取する
#
# 結果はJSON型文字列として標準出力に出力する。
#   title : document title
#   screenshot : base64 encoded screenshot (PNG format)
#
# 環境変数 SELENIUM_URL または 起動オプション --seleniumurl に指定がある場合は、ネットワーク経由のselenium driverに接続する。
# 指定が無い場合は PATHに指定がある chromedriver コマンドを起動する。
#
# https://www.selenium.dev/documentation/webdriver/  Web Driver のドキュメント
# 
# https://qiita.com/DisneyAladdin/items/431e9fd0c1cf709347da 【Python】Seleniumでスクリーンショットを撮る - Qiita
#
# https://github.com/SeleniumHQ/docker-selenium SeleniumHQ/docker-selenium: Docker images for the Selenium Grid Server
#     SeleniumHQ さんが作った Dockerimage https://hub.docker.com/u/selenium
#     これを使えば selenium docker image を自作しなくて済む
#     helm chart 版もある模様 https://github.com/SeleniumHQ/docker-selenium/blob/trunk/chart/selenium-grid/README.md
#     内部にVNCのX Serverを起動しているので、画面はあるからスクリーンショットも撮影可能。
# 
# https://qiita.com/ryoheiszk/items/93b2d52eec370c09a22e DockerでPython-Seleniumスクレイピング環境を立てた - Qiita
#     上のSeleniumHQを使ったサンプルアプリ
#
# 2022.04.10
#
import os
import sys
import argparse
import json
import base64
import time
import subprocess
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

def browser_fetch(url, verbose, screenshot, fullscreenshot, cmdscreenshot, waitsec, seleniumurl):

    # デフォルトの待機秒数は 5
    if not waitsec:
        waitsec = 5

    # 出力用の辞書型を作成
    result_dict = {}

    if verbose:
        print("url="+url)

    # output file name
    # filename =  os.path.join(os.path.dirname(os.path.abspath(__file__)), "screenshot.png")
    filename =  "screenshot.png"

    # 引数で seleniumurl が指定された場合は、それを使う
    # 指定が無い場合は、環境変数 SELENIUM_URL を読み取ってみる
    if not seleniumurl:
        seleniumurl = os.getenv("SELENIUM_URL", None)

    # seleniumurl の指定が無い場合は、localにあるchoromiumコマンドを起動してみる
    if not seleniumurl:
        # 起動オプション設定 (普通にlocalにあるchromedriverコマンドを起動する場合)
        options = webdriver.ChromeOptions()
        options.add_argument("--headless") # ヘッドレスで起動するオプションを指定
        options.add_argument("--disable-gpu") # GPU使用しない
        options.add_argument('--disable-extensions')       # すべての拡張機能を無効にする。ユーザースクリプトも無効にする
        options.add_argument('--proxy-server="direct://"') # Proxy経由ではなく直接接続する
        options.add_argument('--proxy-bypass-list=*')      # すべてのホスト名
        # options.add_argument('--start-maximized')          # 起動時にウィンドウを最大化する
        # create driver (普通にlocalにあるchromiumを起動する場合)
        driver = webdriver.Chrome(options=options)
    else:
        # ネットワーク上にあるchrome driverに接続する場合
        options = webdriver.ChromeOptions()
        driver = webdriver.Remote(
            command_executor=seleniumurl,
            options=options
        )

    # 要素指定時の最大待機秒数を設定
    driver.implicitly_wait(5)

    # access web site
    driver.get(url)

    # timer 強制的にwait
    time.sleep(waitsec)

    # get title of the page
    title = driver.execute_script("return document.title;")
    result_dict["title"] = title
    if verbose:
        print("document title is "+title)

    # chromium コマンドを直接使ってスクリーンショットをとるww
    if cmdscreenshot:
        # chromium --headless --disable-gpu --screenshot URL
        subprocess.run(["/usr/bin/chromium", "--headless", "--disable-gpu", "--screenshot", url])

        # Read Screen Shot file
        f = open(filename, "rb")
        data = f.read()
        data64 = base64.b64encode(data)
        str64 = data64.decode('utf-8')
        result_dict["screenshot"] = str64
        f.close()

    # 画面サイズはdoumentのサイズに応じて変更しない
    if screenshot:
        # Get Screen Shot
        driver.save_screenshot(filename)

        # Read Screen Shot file
        f = open(filename, "rb")
        data = f.read()
        data64 = base64.b64encode(data)
        str64 = data64.decode('utf-8')
        result_dict["screenshot"] = str64
        f.close()
        if verbose:
            print("screen shot save to "+filename)

    # 画面サイズはdocumentのサイズに応じて変更。webpage全体を撮影する。
    if fullscreenshot:
        # get width and height of the page
        w = driver.execute_script("return document.body.scrollWidth;")
        h = driver.execute_script("return document.body.scrollHeight;")

        # set window size
        driver.set_window_size(w,h)

        # Get Screen Shot
        driver.save_screenshot(filename)

        # Read Screen Shot file
        f = open(filename, "rb")
        data = f.read()
        data64 = base64.b64encode(data)
        str64 = data64.decode('utf-8')
        result_dict["screenshot"] = str64
        f.close()
        if verbose:
            print("screen shot save to "+filename)

    # Close Web Browser
    driver.quit()

    # output result JSON
    print(json.dumps(result_dict, indent=2, ensure_ascii=False ))

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("url", help="access url")
    parser.add_argument("--screenshot", action="count", help="save screen shot, default window size")
    parser.add_argument("--fullscreenshot", action="count", help="save screen shot, whole web page")
    parser.add_argument("--cmdscreenshot", action="count", help="save screen shot, with chrome command")
    parser.add_argument("--verbose", action="count", help="save document title")
    parser.add_argument("--waitsec", type=int, help="wait page load in seconds")
    parser.add_argument("--seleniumurl", help="selenium service url , like http://selenium-chrome:4444/wd/hub ")
    args = parser.parse_args()
    browser_fetch( url=args.url , verbose=args.verbose, screenshot=args.screenshot, cmdscreenshot=args.cmdscreenshot, fullscreenshot=args.fullscreenshot, waitsec=args.waitsec, seleniumurl=args.seleniumurl)
EOF

chmod +x access-url-and-screen-shot.py

■ 宇宙暦 2022.05.05

http://www.ceres.dti.ne.jp/~george/jdiaryC20501.html#20220505

2022.05.05(木) 22:27:24 乙女ゲー世界はモブに厳しい世界です

乙女ゲー世界はモブに厳しい世界です

tag: anime

アニメ版の出来はB級みたいな感じだが原作小説は良い感じ。

ちょっと凝った趣向を毎回提供してくれている。


■ 宇宙暦 2022.05.08

http://www.ceres.dti.ne.jp/~george/jdiaryC20501.html#20220508

2022.05.08(日) 13:28:17 kubernetes 1.24.0 出てた (dockershmは無くなった)

kubernetes 1.24.0 出てた (dockershmは無くなった)

tag: kubernetes

予告通り、kubernetes 1.24 では dockershim がなくなったようだ。

そんなわけで、コンテナランタイムとして docker社から寄贈された containerd を使うことにする。

普段、dockerのインストールを以下のように実施している場合、containerd.io は既にインストールされている。

    apt-get install -y docker-ce docker-ce-cli containerd.io

Kubernetesインストール時のkubeadm initに --cri-socket=/run/containerd/containerd.sock オプションを与えて Containerdソケットを明示的に指定すると containerd 対応完了。

docker系コマンドも普段通り使える。


■ 宇宙暦 2022.05.22

http://www.ceres.dti.ne.jp/~george/jdiaryC20501.html#20220522

2022.05.22(日) 16:19:28 ニュートンの業績

ニュートンの業績

数学、力学、光学分野に大きな業績を残したニュートン。

これらの業績の基本部分は、ケンブリッジ大学の先生だったニュートンが自宅待機を強制されていた1665-1667年の間に着想を得たらしい。

当時のイギリスでは感染症が大流行して大学が止まっていたとのこと。

そんなこともあるんだな...。


■ 宇宙暦 2022.05.28

http://www.ceres.dti.ne.jp/~george/jdiaryC20501.html#20220528

2022.05.28(土) 22:58:50 宇宙人のガンダム解説チャンネル

宇宙人のガンダム解説チャンネル

tag: anime

アニメ版、各種小説版などいろいろ網羅して調査している。

ニコニコの方はキャラクター解説が独立してて見やすい。

ガンダムの話題だとモビルスーツ解説の方が多くなるのは無理もないけどキャラクター解説の方も増やして欲しいなーこれなー。

シャアが酷い言われようでワロタ。 でも逆シャア見てるとそうなるよなぁ...。

ララァとアムロの解説も面白かった。

しかし、ガンダム知らない人がこの解説動画見るのかな? 全部見る時間は無いけど一応話のネタとして知っておきたいみたいな切り抜き動画的な需要はあるかも。


日記ファイルリスト最新100件


Copyright(c) 1996-2024 George(小濱 純). All rights reserved.
私の作成したページへのリンクはご自由にどうぞ。
このページに間違いや要望などがありましたら george@yk.rim.or.jp まで御連絡ください。
メール本文に 6020-5440-3372 とか私の 本名 を漢字で書いて頂くと、ウチのSPAMフィルタを通過できます。

[ホームページ] [日記] [日記ファイル一覧] [読んでいる日記] [FreeBSD] [FreeBSD LINK] [検索]

home: <george@yk.rim.or.jp> or <george@ceres.dti.ne.jp>
(I am using white list SPAM filter. To avoid it, please write 6020-5440-3372 in mail body. This key word is valid since 2009-06-14 until 2024-12-31.)