EtherscanのTransaction Detailsに表示されるTimestampにJSTを併記するスクリプト

Etherscanでトランザクション詳細に表示されてるUTC表記のTimestampに日本時間を併記するスクリプト。

↓こんな感じに日本時間がすぐ分かる。

しかしこの画面で日本時間を知りたい人にはUTC表記を残しておく意味があるのかは疑問で、自分も必要ないんですがまあ両方あっても邪魔じゃないしこれでいいかなってことで。
そもそもこんな変更をするスクリプトが欲しい人が自分以外にいるかもかなーり疑問ではありますが。

// ==UserScript==
// @name         Etherscan Timestamp UTC + JST
// @namespace    https://etherscan.io/
// @version      1.2
// @description  EtherscanのTimestampをUTCとJSTで併記表示
// @match        https://etherscan.io/tx/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function formatDate(date) {
        const y = date.getUTCFullYear();
        const m = String(date.getUTCMonth() + 1).padStart(2, '0');
        const d = String(date.getUTCDate()).padStart(2, '0');
        const hh = String(date.getUTCHours()).padStart(2, '0');
        const mm = String(date.getUTCMinutes()).padStart(2, '0');
        const ss = String(date.getUTCSeconds()).padStart(2, '0');
        return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
    }

    function convert() {
        const el = document.querySelector('#showUtcLocalDate');
        if (!el) return;

        const ts = parseInt(el.getAttribute('data-timestamp'), 10);
        if (isNaN(ts)) return;

        // UTC日時
        const utcDate = new Date(ts * 1000);
        const utcText = formatDate(utcDate) + ' UTC';

        // JST日時
        const jstDate = new Date((ts + 9 * 60 * 60) * 1000);
        const jstText = formatDate(jstDate) + ' JST';

        // 表示更新
        el.textContent = `${utcText}${jstText}`;
    }

    window.addEventListener('load', convert);
})();

    

Whisker Wanderlust: The Mosaic of Souls 迷途猫的灵魂碎片

巨大な一枚絵の中から指定されたオブジェクトを探してクリックする探し物ゲーム。
元々中国産のゲームらしく、紹介文に「名作アニメ&ゲームへのオマージュが光る」とかあるけど、そのまんま有名マンガのキャラが書かれてたりと若干権利的にどうなんだ?という面も感じられるが。

ゲーム自体はぎっちり書き込まれた柔らかい絵に、音楽もいい感じ。
一応子猫が主人公でストーリーはあるものの、話は見ないでもアート面だけでもゲームとしては成立している。

著作権的に危ない面はあるものの、インタラクティブ絵本みたいな作品としてとらえればあなたのゲームライブラリに加える価値はあると思う作品。

特に猫好きな方には。


前回のスクリプトだと3つ以上の認証は切り捨てられてるって弱点がある

証券会社とかでID、ログインPASS、取引PASSみたいに登録してた場合、取引PASSは切り捨てられたので自分で登録し直さないといけない。

頻繁に使うわけじゃないので、スクリプトを修正するより、いざ使うときにそこだけ登録しなおせばいいかなってことで。


tuisumi.com

ID ManagerのエクスポートデータをBitwardenにインポートするための整形スクリプト

ID Managerがいつまで使えるかっていうのもあって移行先としてとりあえずBitwardenを試してみることに。

ID Managerからエクスポートしたcsvをそのまま突っ込めないですが、手作業でチマチマ整形なんてやってられっか。
ということで整形するスクリプトの出番です。

import csv

input_file = 'idm_export.csv'
output_file = 'bitwarden_import.csv'

bitwarden_headers = [
    'folder', 'favorite', 'type', 'name', 'notes', 'fields',
    'login_uri', 'login_username', 'login_password', 'login_totp'
]

with open(input_file, 'r', encoding='shift_jis') as infile, \
     open(output_file, 'w', newline='', encoding='utf-8') as outfile:

    reader = csv.DictReader(infile)
    writer = csv.DictWriter(outfile, fieldnames=bitwarden_headers)
    writer.writeheader()

    current_folder = ''

    for row in reader:
        item_type = row.get('Folder or Item', '').strip().lower()

        if item_type == 'f':
            current_folder = row.get('Title', '').strip()

        elif item_type == 'i':
            name = row.get('Title', '').strip()
            username = (row.get('Account ID') or row.get('e-mail') or '').strip()
            password = (row.get('Password') or '').strip()
            url = (row.get('URL') or '').strip()
            notes = (row.get('Comment') or '').strip()

            bw_row = {
                'folder': current_folder,
                'favorite': '0',
                'type': 'login',
                'name': name,
                'notes': notes,
                'fields': '',
                'login_uri': url,
                'login_username': username,
                'login_password': password,
                'login_totp': ''
            }

            writer.writerow(bw_row)

print(f'変換完了: {output_file}')

という感じで変換したら上手く取り込めたようです。

裸族のゲートハウス 4Bay CRGH35U10G

Cドライブ用のSSD交換でケース開けたついでに中からHDD2台取り出し。

センチュリーの裸族シリーズから最大4台をまとめて搭載できるケースを買って移植しました。

個別の電源スイッチやRAID等の機能はないシンプルに台数積めるだけというケース。

その分他の同シリーズ多機能ケースよりお安く買えます。
自分はRAIDとか使う気もないし、単にHDDをまとめて置いて管理したいだけだったのでこれで十分。

机の下に設置したので稼働音はごくたまにHDDにアクセスした時にガリガリ言ったりしますが、基本は静か。

PC本体をモニタの横に置いてるので、そこからの音のほうがよっぽどうるさくこの使い方なら無音といってもいいと思います。