Windows PC 起動時に CPU Fan Error が発生してOSが起動しない

Written by じび on 9月 30th, 2024

ゲーム用のWindows PCにて、CPU Fan Error が発生して起動しなくなりました。電源ONの後「CPU Fan Error!」と表示され、OSが起動しません。

F1キーを押してBIOS画面に入ると、CPU Fan が「N/A」になっています。N/Aは not available の略で、該当なしという意味です。

中を開けてみると CPUファンが回っていませんでした。指で回したり、ケーブルを抜き差ししてみましたが、エラーは治りませんでした。試しに別のファンを付けてみたところ、正常に起動し、ファンも回転します。どうやらファンが壊れたようなので、新しいファンを買って交換しました。

壊れたCPUファン

元々のCPUファンはCPUクーラーに付属のものです。サイズの虎徹 Mark II というCPUクーラーなのですが、今は 虎徹 MARK3 が出ているようです、同等品を探したところ、羽の形状が変更された サイズ Wonder Snail が見つかりました。最高回転速度によって、1200rpm、1800rpm、2400rpm の3種類があり、当然回転速度が速い方がよく冷えますが、その分音が大きくなるようです。あまりゲーム用PCにお金をかけるつもりはないので、高性能CPUを使うこともなく、それほど冷却性能は必要ないので、1800rpmを注文しました。

届いたCPUファンに交換するのに、CPUクーラーにファンを留めている金具を取り外す必要があるのですが、組み立て時に指でやって苦労した記憶があります。今回、ラジオペンチを使って金具を操作したところ、とても楽に交換することができました。

交換後、電源を入れるとファンは回転し、正常にOSが起動されました。

新しいCPUファン

 

CocoaPods の警告「Your project does not explicitly specify the CocoaPods master specs repo. 」

Written by じび on 4月 30th, 2023

ある日、既存のプロジェクトで pod install を行ったところ、以下の警告が表示されました。(CocoaPodsのバージョンは1.11.3)

$ pod install
Analyzing dependencies
Downloading dependencies
Generating Pods project
Integrating client project
Pod installation complete! There are 3 dependencies from the Podfile and 9 total pods installed.

[!] Your project does not explicitly specify the CocoaPods master specs repo. Since CDN is now used as the default, you may safely remove it from your repos directory via `pod repo remove master`. To suppress this warning please add `warn_for_unused_master_specs_repo => false` to your Podfile.
$

あなたのプロジェクトは、CocoaPodsのマスター仕様のレポを明示的に指定していません。CDNは現在デフォルトで使用されているので、pod repo remove masterでreposディレクトリから安全に削除することができます。この警告を抑制するには、Podfileに warn_for_unused_master_specs_repo => false を追加してください。

https://www.deepl.com

CocoaPodsのマスターリポジトリの置き場所がCDN(Content Delivery Network、コンテンツデリバリネットワーク )上に変わったのかな?そのため自分のリポジトリから今は使用されていないmasterをpod repo remove masterコマンドで消して欲しいということのようです。。

表示されたコマンドを実行してみたのですが、エラーになってしまいました。

$ pod repo remove master
[!] repo master does not exist

Usage:
(以下略)

エラー内容はmasterが存在しないとのことなので、リポジトリの一覧を確認してみます。すると master がなくて、代わりにcocoapodsというリポジトリがありました。

$ pod repo

cocoapods
- Type: git (remotes/origin/master)
- URL:  https://github.com/CocoaPods/Specs.git
- Path: /Users/xxx/.cocoapods/repos/cocoapods

trunk
- Type: CDN
- URL:  https://cdn.cocoapods.org/
- Path: /Users/xxx/.cocoapods/repos/trunk

2 repos
$

なので、cocoapodsを削除してみます。

$ pod repo remove cocoapods
Removing spec repo `cocoapods`
$

そして再び pod install を実行してみると、無事に警告は消えていました。

$ pod install
Analyzing dependencies
Downloading dependencies
Generating Pods project
Integrating client project
Pod installation complete! There are 3 dependencies from the Podfile and 9 total pods installed.
$

 

iOSアプリのソースコードで「嘘だろ・・・」と思ったもの

Written by じび on 12月 3rd, 2022

iOSアプリの仕事をやっていて、新規で作成するよりも既存のアプリの開発を引き継ぐことが多いのですが、ソースコードを見ていて思わず「嘘だろ・・・」と呟いてしまうようなものを紹介します。

この記事はEngineMaker界隈 Advent Calendar 2022 の3日目の記事です。

画面遷移をpushのみで行なっている

UINavigationControllerの画面遷移を全てpushで行なっていました。詳細画面に遷移する時だけではなく、元の画面に戻る場合もpushしていたのです。popしているところはありませんでした。

そのため画面を行ったり来たりすると次々に新しい画面のインスタンスが生成され、それらは消されでに画面スタックに積み重なっていき、やがてメモリ不足でアプリがクラッシュしてしまう、という状態でした。

一画面あたりのメモリ使用量が少なく(画面内の項目が少なかった)、また画面数も少なかったため、問題が発覚していませんでした。

【iOSアプリに詳しくない人に向けた解説】

特に詳細画面に遷移する場合など、UINavigationControllerクラスが使用されます。これは内部に表示された画面を保持するスタックを実装し、新しい画面に遷移する場合はpushで新しい画面をスタックに積み上げ、前の画面に戻る場合はpopで画面スタックから最後に表示された画面を取り外す、という方法を取ります。

このように今まで表示された画面のインスタンスが保持されていることにより、前の画面に戻る場合に画面インスタンの生成(とてもコストがかかる)をせずに素早く戻ることができます。

リスト表示画面をUIScreenViewで実装している

リスト画面が全てUIScrollViewで実装されていました。UITableViewは使用されていませんでした。

そのアプリにはいくつかのリスト画面があるのですが、ほとんど1ページ分くらいの項目しかなく、特に問題とされていませんでした。しかし、3ページ分くらいの項目があるリスト画面があり、そこのスクロールが異様に遅かったので調べてみたところ、全てUIScrollViewを使っていました。

【iOSアプリに詳しくない人に向けた解説】

リスト画面ではUITableViewを使用します。これは画面に見えている項目(以降セルと呼びます)の分だけインスタンスを生成し、スクロールさせた時に画面から見えなくなったセルのインスタンスを削除せずにストックしておき、新しく見えてきたセルとして再利用する仕組みになっています。

これにより、画面に見えている分のセルの分しかメモリを消費せず、また再利用することによってセルのインスタンスの生成(コストがかかる)を大幅に省くことができ、何万行もあるようなリストでもヌルヌルサクサク動かすことができます。

Webなんかだと何万行もある場合は100行ごとにページを分けたりしますが、iOSでは上記の仕組みによりその必要はないのです。

 

バイクの排気量ごとの違い一覧

Written by じび on 11月 27th, 2022

排気量必要な免許30km/h制限、二段階右折高速道路走行車検 ファミリーバイク特約
〜50cc原付×
51cc〜125cc普通二輪(小型限定)×
126cc〜250cc普通二輪
251cc〜400cc普通二輪
401cc〜大型二輪

最初のバイクなら51cc〜125ccがオススメ。制限が少なく、ファミリーバイク特約の対象になるので費用が安く済みます。

ファミリーバイク特約は他の車やバイクの任意保険にプラスするもので、同居の家族が乗る全ての125cc以下のバイクもその保険でカバーされます。

原付は、免許が簡単に安く取得できるのがメリットですが、二段階右折がかなり不便です。交差点によっては二段階右折が禁止されている所があるのですが、二段階右折するつもりで左車線に寄っている状態で標識に気づいても、そこから右車線に移るのはほとんど無理です。

 

画像から10桁の数値を抜き出す

Written by じび on 7月 17th, 2021

画像に書かれている10桁の数値を抜き出す必要があったのでやってみました。

macOS 11.4 上で行いました。

まずは、OSSのOCRエンジンとコマンドラインプロンプトである tesseract-ocr をインストールします。

インストール方法は、https://rooter.jp/ml/tesseract-with-mac/ を参考にしました。

続いて、OCRの結果から10桁の数値を抜き出すシェルスクリプトを作成し、 pickup というファイル名で保存します。

#!/bin/sh

if [ $# -lt 1 ]; then
    echo "Usage: pickup file [...]"
    exit 1
fi

for arg in "$@"; do
    tesseract ${arg} - 2>/dev/null | grep -E "\b[0-9]{10}\b" | sed -r "s/^.*([0-9]{10}).*$/${arg}: \1/g"
done

実行権限も付与しておきます。

$ chmode +x pickup

 ターミナルにて、対象となる画像ファイルを引数に指定して実行すると、画像を読み込んで、10桁の数値が見つかれば、それを表示します。

$ ./pickup IMG*
IMG_1385.png: 4386015112
IMG_1387.PNG: 4386015112
IMG_1388.PNG: 8267761977