Mac mini(2018)のRAMメモリ増設

メモリ8GBの吊しモデルではさすがにつらくなってきたので、32GBに増設しました。

留意点を以下に記しておきます。

1.トルクスドライバー
T6の穴付きで先の丈夫なものがなかなか見つかりませんでした。穴径の精度を出すのが難しいためか、あのVESSELも扱っていないようです。色々調べてアネックスというブランドのドライバーを購入しました。

2.コネクタやビスの固着
異常に発熱するintelCPU搭載だからか、電源コネクタやロジックボードのビスがかなり固くて苦労しました。ビス穴をなめないようにドライバーを強く押して無理せず回す動作を何度も繰り返しなんとか緩めました。

3.NVRAMリセット
無事メモリを交換したものの電源をONにしてもLEDが点灯するだけで画面が出ず、結構焦りました。NVRAMをリセットしてようやく起動しました。リセットするには、電源ONと同時にopt + ⌘ + P + R を20秒程度押し続け、起動音が1回鳴ったら離します。起動音は計1回あるいは2回鳴ります。

4.リセットに伴う再設定
起動音を無効にし、XtraFinderを再設定する。

特に3番目は誤って故障と判断しかねないので要注意です。公式ではユーザーによるメモリ増設を認めていないため、Appleサポートに相談するわけにもいかず、業者に修理依頼した方もいらっしゃるのではないでしょうか。

そこそこの難易度ですから、こういった作業が苦手な方はAppleに増設依頼する方がいいのかもしれません。

再設定参考記事

【macOS】17 Macの起動音を復活させるコマンド

https://mowareblog.net/2021/05/656/macos-29-xtrafinder%e3%81%aecatalina%e3%81%a7%e3%81%ae%e4%bd%bf%e7%94%a8/

PC 正常性チェック(Windows11への移行) DeskMini他

Windows11への移行が可能かどうか表題のツールで確認しました。

ASRockのベアボーンPC DeskMini A300はBIOSの設定を以下のように変更してOKになりました。Athlon 3000Gという非力なCPUですが問題ないようです。またCPU搭載グラフィックスRadeon Vega 3 GraphicsはDirectX 12に対応しており要件を満たしています。

BIOS変更内容
Advanced – CPU Configuration – AMD fTPM switch – AMD CPU fTPM

自作デスクトップPCの方は6年前に買ったビデオカードGeForce750TiがDirectX 11.2対応のためNGでした。Ryzen5 2600を載せたマザーボードSteel Legend B450なのでfTPMに設定は可能です。 Windows11にバージョンアップしたくなったら新しい安グラボを買います。

2021/6/27追記 他のチェックツールによるとGeForce750TiはDirectX 12に対応しており、パーティション方式(MBR)等でNGとなることが判明しました。

[無線] 03 PythonでADIFファイル作成 後編

[macOS Catalina 10.15.7]

前回の続きです。

eQSLサイトに移動局コールサインを登録しているかどうかを確認し、登録していなければ末尾なしのコールサインへeQSLカードを送付するようADIFファイルを書き換える、といった内容です。

VBAでも同様の作業ができるかどうか検証したいところですが、Mac版Excelではスクレイピングができないので気が向けばWindows版Excelで試してみます。

<前編からの続き>

driver = webdriver.Chrome()
window_num = 1
for i,call in enumerate(call_l):
    print(call)
    print(f'コールサイン文字数 {len(call)}')
    if len(call) == 8:
     # eQSlサイトのURLを取得
        driver.get("https://www.eqsl.cc/QSLcard/Home4G.cfm")

        WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH, "/html/body/div[2]/form[2]/font/input[2]")))

     # 検索窓にコールサインを入力する
        driver.find_element_by_xpath("/html/body/div[2]/form[2]/font/input[1]") \
.send_keys(call)

        tm.sleep(1)

        # 検索ボタンをクリックする
        driver.find_element_by_xpath("/html/body/div[2]/form[2]/font/input[2]") \
.click()
        # 新しいウィンドウへ遷移する
        handle_array = driver.window_handles
        driver.switch_to.window(handle_array[window_num])

        WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='CFForm_1']/input[2]")))

     # 検索結果の文字列を取得する
        text = driver.find_element_by_xpath("/html/body/center/h2/font").text
        print(text)

        # 検索結果にnotおよびyetが含まれていたらコールサインの末尾2文字を削除しADIFデータを書き換える
        # 検索結果例:"JA3AAA/3 is not registered yet"
        if 'not' in text and 'yet' in text:
            new_str1 = data_l[i].replace('<CALL:8>','<CALL:6>')
            new_str2 = new_str1[:14] + new_str1[16:]
            print(new_str2)
            
            # ADIFデータを置き換える
            data_l[i] = new_str2

        window_num +=1

# ブラウザを閉じる
driver.quit()

# AGIFデータを改行コードで連結する
data_l2 = '\n'.join(data_l)

# ヘッダとAGIFデータを結合する
header = '<PROGRAMID:6>HAMLOG\n<ADIF_Ver:5>3.1.0\n<EOH>\n'
final = header + data_l2

# 結合したデータをadiファイル(プレーンテキスト)に変換する
filename2 = f"/adif/{datetime_now_str}_adif.adi"
with open(filename2, "w", encoding="shift_jis") as f2:
    f2.write(final)

# 前編で作成したCSVファイルを削除する
os.remove(filename)

作成されたADIFファイルの一例です。

<PROGRAMID:6>HAMLOG
<ADIF_Ver:5>3.1.0
<EOH>
<CALL:6>JA3AAA<QSO_DATE:8:D>20210602<TIME_ON:4>0611<BAND:2>2m<MODE:2>FM \
<RST_SENT:3>59+<RST_RCVD:0><QSL_SENT:1>Y<QSL_SENT_VIA:1>E<QSLMSG:6>CU 73! \
<APP_EQSL_AG:1>Y<GRIDSQUARE:4>AA00<EOR>
<CALL:6>JZ3ZZZ<QSO_DATE:8:D>20210602<TIME_ON:4>0730<BAND:4>70cm<MODE:2>FM \
<RST_SENT:3>59+<RST_RCVD:0><QSL_SENT:1>Y<QSL_SENT_VIA:1>E<QSLMSG:6>CU 73! \
<APP_EQSL_AG:1>Y<GRIDSQUARE:4>AA00<EOR>

[無線] 02 PythonでADIFファイル作成 前編

[macOS Catalina 10.15.7]

Excelの自作HAMLOGからADIFファイルを作成するPythonコードを書きました。openpyxlモジュールは使わずpandasで処理しています。

このADIFファイルをeQSLのサイトにアップロードすると自動的にeQSLカードが交信相手へ送付されます。

交信時刻は世界標準時(-9時間)に変換しています。

移動局の場合はコールサインの末尾にスラッシュとエリア番号を付記しますが、このコールサインがサイトに登録されているかどうかを検索確認して、なければ末尾なしのコールサインでeQSLカードを作成するようにしました。この内容は後編で紹介します。

チェックをつけた交信ログを抽出して一旦CSVファイルに変換していますが、データフレームのままでも可能なはずです。機会があればコードを書きます。

変数timeとtimeモジュールがダブったので、後者をtmとしました。

import pandas as pd
import csv,os
import time as tm
from datetime import datetime, timezone
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 自作HAMLOGを読み込む
df = pd.read_excel('HAMLOG.xlsx', index_col=0)
print(df)

# ADIF列にチェックを入れている行を抽出(ADIF_BLがTRUE(=1))
df2 = df[df['ADIF_BL'] == 1]

# 抽出した行の0-7列目を取り出す
df3 = df2.iloc[:,0:7]
print(df3)

# 作成日時を付加したCSVファイル名を作成
datetime_now = datetime.now()
datetime_now_str = datetime_now.strftime('%y%m%d%H%M')
filename = f"/temp/{datetime_now_str}_adif_pre.csv"

# データフレームをCSVファイルに変換
with open(filename, mode="w", encoding="cp932", errors="ignore") as f:
    df3.to_csv(f ,index=None)

# CSVファイルを読み込む
with open (filename, mode="r", encoding="shift_jis") as f:
    reader = csv.reader(f)
    data_l =[]
    call_l = []
    for i,row in enumerate(reader):
        if i != 0:
       # コールサイン部の作成
            call = f'<CALL:{len(row[0])}>{row[0]}'
            callsign = row[0]
            print(callsign)
            call_l.append(callsign)

       # 日付と時刻の文字列を結合して日時にする
            dtime = f'{row[1]} {row[2]}'
            print(dtime)

       # 日時の文字列を時刻に変換する
            jst_time = datetime.strptime(dtime, '%Y-%m-%d %H:%M:%S')
            print(jst_time)

       # 時刻を世界標準時に変換し、さらに文字列に変換する
            utc_time = jst_time.astimezone(timezone.utc)
            utc_str = utc_time.strftime('%Y%m%d%H%M')

       # 世界標準時を日付と時刻に分割し、ADIF仕様に書き換える
            date = f'<QSO_DATE:8:D>{utc_str[:8]}'
            time = f'<TIME_ON:4>{utc_str[8:]}'
            print(date)
            print(time)
       
       # バンド部の作成
            band = f'<BAND:{len(row[5])}>{row[5]}'
            print(band)

       # モード部の作成
            mode = f'<MODE:{len(row[6])}>{row[6]}'
            print(mode)

            # RSTレポート部の作成
            his = f'<RST_SENT:{len(row[3])}>{row[3]}'
            print(his)

       # その他QSL関連等の部分を作成
            etc = '<RST_RCVD:0><QSL_SENT:1>Y<QSL_SENT_VIA:1>E<QSLMSG:6>CU 73! \
<APP_EQSL_AG:1>Y<GRIDSQUARE:4>PM74<EOR>'

       # 全てのADIF仕様を結合する
            all = call + date + time + band + mode + his + etc

       # データリストに追加する
            data_l.append(all)

print(data_l)
print(call_l)

<後編へ続く>

[無線] 01 Mac用HAMLOGの作成

WindowsにはTurbo HAMLOGという優れた交信記録ソフトがあります。

Macではそのような類のソフトが見当たらないため、とりあえずExcelで簡易版を作ってみました。

QSLカードのデジタル版であるeQSLカードを作る際に必要なADIFファイルを作成するため、ファイルが必要な行にチェックを入れるようにしました。

ネットの情報を参考に以下のVBAマクロを登録しました。

Sub チェックボックスリンク()

Dim cb As CheckBox
    For Each cb In ActiveSheet.CheckBoxes
        'チェックボックスの右側セルにブール値を表示する
        cb.LinkedCell = cb.TopLeftCell.Offset(0, 1).Address
    Next cb

End Sub