読者です 読者をやめる 読者になる 読者になる

pslaboの日記

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

iPad3のSIMロックに関する考察とSIM下駄による解除の試みはSoftbank版iPad3にiPhone用のSIM下駄を履かせてみるにいろいろ書いてます。

ポストした内容のカテゴリー分けがちゃんと出来てないので、過去記事を探したい方はお手数ですが検索で探してみてください。


AWSやGCEの無料枠でmastodonを立てるための情報収集

とりあえずのメモ。とは言っても、すでに誰かがやっていることの後追いでしか無いわけだが。

ポイントは、無料枠のインスタンスではビルド時のメモリが足らんので、スワップを確保せねばならんことだろうか。

リファレンスの情報は、たとえばこんなあたり。

qiita.com

translucens.hatenablog.jp

ただしDockerで立てるのは内部構造がわかりづらい。そういう意味では、こちらの記事の方が参考になるかも。 https://lithium03.info/mastodon/index.html

自分がやってみた場合の手順は別途ログをまとめる予定。とりあえずはDockerで平文のサーバが稼働するところまでは来ている。あとはSSL/TLSの処理をLBに載せるのか、それとも自力で扱うか。自力で扱うにしても、Dockferの中のWebサーバでやるのか、それともDockerの外側にreverse proxyを立てるのか、など、方法はいろいろ。

Ubuntu 16.04LTS に入れておきたいパッケージのメモ

完全に自分用のメモ。思いついたら追記する。

汎用的に使いそうなパッケージ

sudo apt install jq nkf dos2unix clang gcc vim fish

説明は省略。

Delphi for LInux の必須パッケージ

RAD Studio/Delphi 10.2 Tokyo Enterprise 以上では Linux 向けのコンパイラが含まれるけど、それを利用する場合の必須パッケージを記しておく。

なお、Embarcadero の evangelist な方々の手順には joe が入っているけど、これは要らんと思う。サーバ屋が joe とか使わないでしょ。せいぜい、vimemacs 。また、同様の理由で p7zip-full も要らないはず。そもそも p7zip が必要な状況が良くわからん。アーカイブ作ったり展開したりするなら必要だけど、Delphi for Linux のビルドでそんな作業は無いはず。

sudo apt install wget curl build-essential zlib1g-dev libcurl4-gnutls-dev

iPad3を下取りに出してiPadを書いました

iPad3を下取りに出して、iPadを書いました。iPad Air系列のほう。iPad Proではありません。

一旦は妻に使ってもらったのち、これで問題がなければこれをそのまま使ってもらう予定。懸念される問題は、妻が今使っているのは iPad mini なので、大きさや重さの面で不都合がないかどうか、という話。問題がありそうなら、iPad mini4 を別途調達するかなあ。問題がなさそうなら、自分用には iPad Pro 9.7 + Apple Pencil を多分買うかも。

iPad3は2012年発売だったから約5年使ったけど、ここ2年くらいはiPad3は最新OSを入れると処理が遅かった。買い換えたiPadはストレスなく使えて快適です。Geekbench で処理性能を比較するとスコアが10倍違うので、当然といえば当然なのですけどね。

さて、思い返してみると、ソフトバンクiPadSIMロック回避手法でiPhone用のSIM下駄+IMSI番号に4402080を指定する方法は、私が2013年に見つけたものをyahoo でブログ書いている方の記事のコメントに書いたのち、自分のブログの記事として再整理したあたりから世に知られだしました。そのときに書いた記事がこれ。

pslabo.hatenablog.com

今なら、4402080 で検索すると結構たくさんのページが出てきますけど、Google検索で2013年1月〜9月の期間指定で検索してみると、出てくるページは yahoo の方のブログか、この記事だけなのですよねー。以下のリンクは2013年1月〜9月の期間指定で4402080を検索するリンク。

4402080 - Google 検索

そして、今回、いよいよ実機を手放してしまったので、iPadSIMロック解除手法に関するネタを取り上げることはもう無いかも。

WindowsでIPv6を無効化したり有効化したり

単なるメモ。

IPv6 を無効化したらDelphi/C++BuilderLinux版PAServerがWindows10 1703 Creators Update の Bash on Windows で動かないかな、と思ったので試してみたけど変化なし。

https://support.microsoft.com/ja-jp/help/929852/how-to-disable-ipv6-or-its-components-in-windows

日付から曜日を求めるワンライナーを awkで

ウェブサイトにイベントの告知記事を書くときに、過去の記事を書き換えて流用しようとすると、日付は書き換えたけど曜日を書き換え忘れていたり、あるいは間違えて書いてしまったり、ということがあります。そういう間違いをチェックするのに日付とカレンダーを付き合わせても良いのだけれど、どうせなら何かのロジックで処理したい。

さて、曜日の計算を汎用的に行うにはツェラーの公式を使うのが基本ですけど、それだと処理が冗長になります。そんなことをせずとも、指定した日付に対応する曜日を取得する処理をカレンダー関連のコマンドや関数で取得する方がシンプルです。

そこで awk で日付文字列をパースしつつ、mktimeで内部形式(unix秒)に変換したのち、strftime で曜日だけ取得するように書いてみました。

awk -F "[年月日/]" '{ print strftime("%a", mktime( $1 " " $2 " " $3 " 0 0 0" )) }'

そうするとこんなふうに利用できます。

$ echo 2017/05/18 | awk -F "[年月日/]" '{ print strftime("%a", mktime( $1 " " $2 " " $3 " 0 0 0" )) }'
Thu
$ echo '2017年5月18日' | awk -F "[年月日/]" '{ print strftime("%a", mktime( $1 " " $2 " " $3 " 0 0 0" )) }'
Thu
$ awk -F "[年月日/]" '{ print strftime("%a", mktime( $1 " " $2 " " $3 " 0 0 0" )) }'
2017年 5月 18日
Thu
2017/5/18
Thu

日本語で表示してほしいなら LANG=ja_JP.UTF8 しておけばOKですね。

$ export LANG=ja_JP.UTF8
$ echo 2017/05/18 | awk -F "[年月日/]" '{ print strftime("%a", mktime( $1 " " $2 " " $3 " 0 0 0" )) }'
木

Windows10でスタートメニューが出ない場合の解決方法として良く紹介される手順の意味を確認する

自分自身はWindows10でスタートメニューが出ない不具合に遭遇したことは無いけれど、世の中的には割とあるらしい。

さて、そういう場合の対処方法として良く紹介される手順にはこういうものがある。これを管理者権限で実行するらしい。

dism /online /cleanup-image /restorehealth
sfc /scannow
powershell
Get-AppXPackage -AllUsers |Where-Object {$_.InstallLocation -like “*SystemApps*”} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}

これを単にコピペしてもよいのだけど、エンジニア的には内容を理解しておくほうが良さげ。

そこでこれらのコマンドの意味を確認しつつ、もっと切りつけ可能な部分はないかと考えてみる。

個々の処理の意味

dism.exe

dismはWindowsのイメージを操作するツール。

パラメータ 意味
/online 現在実行中のOSイメージに対して操作を行う
/cleanup-image イメージに対してクリーンアップおよび回復を試みる
/restorehealth コンポーネントストアの破損の有無をスキャンし、必要に応じて修復を試みる

sfc.exe

ファイルシステムの整合性をスキャンして、間違ったバージョンを正しい Windows バージョンに置換する

パラメータ 意味
/scannow 整合性をスキャンすると同時に、問題のあるファイルの修復も行う

Get-AppXPackage -AllUsers

すべてのユーザ向けのインストール済みストアアプリの情報を取得する

powershell

cmd.exe から PowerShell を起動する。

Where-Object {$_.InstallLocation -like “SystemApps”}

インストール先のフルパスに SystemApps を含むアプリだけを抽出する。

Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}

抽出されたストアアプリについて、DisableDevelopmentMode でアプリを再登録する(サイドローディングする)

処理の最適化?

最適化、というほどでもないけれど、今回の作業はそもそも「PowerShellを管理者権限で実行」し、PowerShell上から下記3点を実行すればよさげ。特に Windows10 Creators Update ではコマンドプロンプトから PowerShell への置換が進みつつあるので、わざわざコマンドプロンプトから powershell を実行する意味がない。

dism /online /cleanup-image /restorehealth
sfc /scannow
Get-AppXPackage -AllUsers |Where-Object {$_.InstallLocation -like “*SystemApps*”} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}

sedで日本語表記の日付から年月日の漢字を消して/に置き換える

2017年 4月 19日や2017年4月19日のような日付形式をsedで置換しようとしたら意外にハマったのでメモ。

ポイントは以下の通り。 - ( や ) はエスケープ必要 - blankspace もエスケープ必要? - + や ? もエスケープ必要 - { や } もエスケープ必要

やりたいパターンマッチはこういう内容。

https://regexper.com/#(%5B0-9%5D%2B)%E5%B9%B4%20%3F(%5B0-9%5D%2B)%E6%9C%88%20%3F(%5B0-9%5D%2B)%E6%97%A5

だけど sed ではエスケープせねばならない部分が多いので、結果的にこういう処理になる。

$ echo '2017年  4月 19日' | sed 's/\([0-9]\+\)年\ \?\([0-9]\+\)月\ \?\([0-9]\+\)日/\1\/\2\/\3/g'
2017/4/19

上記の内容を踏まえたうえで日本語の日付時刻から漢字を抜く処理をこんなふうに書いてみた。

#!/bin/sed -f

s/\([0-9]\+\)年\ \?\([0-9]\+\)月\ \?\([0-9]\+\)日/\1\/\2\/\3/g
s/\([0-9]\+\)時\ \?\([0-9]\+\)分\ \?\([0-9]\+\)秒/\1:\2:\3/g
s/曜日//g
s/日/Sun/g
s/月/Mon/g
s/火/Tue/g
s/水/Wed/g
s/木/Thu/g
s/金/Fri/g
s/土/Sat/g