2018/11/28(水)ハンダの吸煙器が欲しい

はてブ数

キットとかの大量のはんだ付けするときに、はんだ付けの蒸発したヤニでいつも喉を痛めていたのですが、こんなあおりを受けました。

というわけでハンダ吸煙器が欲しくなったメモ。

まっとうなハンダ吸煙器

専用の機械も売られていますが、8000円ぐらいしますし結構デカイです。

#asin: is not allow

電池とかで動くほうが便利かなと、卓上扇風機も見てみました。

#asin: is not allow

2000円代前半ですし結構ありかなと思ったのですが、よくよく見ると15cm×18cmぐらいあります。はんだ付けするときってただでさえ机狭くなるので、ちょっと邪魔です。

8cmファンがあるじゃないか

世の中USB(5V)で動くPC用ファンがありますので、それを使うことにしました。

似た商品はいくつかありますが後者を購入。どれも1000円ぐらいです。網を外して、スポンジを差し込みました。

inhaler_01.jpg
inhaler_02.jpg

実際にテストするとそれなりに吸い込みます。

inhaler_03.jpg

スポンジの厚さは2mmぐらいが良いようです。5mmぐらいあるとぜんぜん吸い込まず、刃物で薄く削りましたが、適当なスポンジを買ってくるほうが良いでしょう。

あと、ディアルファン対応のコネクタが邪魔だったので、切り取ってしまいました。

inhaler_04.jpg
inhaler_05.jpg

実際のはんだ付けでどれぐらい効果があるか少し楽しみです。

2018/09/29(土)Strawberry PerlでImage::Magick(PerlMagick)ごとEXE化

はてブ数

Image::Magickモジュールを含むWindows用EXEが生成できる pp 環境の構築。

Strawberry Perl

Strawberry Perlのサイトから、ダウンロードしました。執筆時点で最新は「5.28.0.1」ですが、Image::Magickが入らないので、5.26.2.1を選択。

形式はどれでも構わないと思いますが、個人的にPortableを選びました。

Image::MagickとPAR::Packerの導入

Image::Magickはppmから入れるので簡単でした。

c:\> ppm
ppm> install Image::Magick
Install package 'Image-Magick?' (y/N): y

ppm> quit

続いてPAR::Packerです。PARは普通にインストールするとよくエラーが出るので、force installしました。

c:\> cpan
cpan> force install PAR::Packer

コンパイル&テストが長いのでそこそこ待たされます。

PAR::Packer Ver1.047の修正

Image::Magickをパッケージに含めるためには、Image::MagickのDLLを一緒に含める必要があります。

pp は -l オプションや -a オプションを使うと、DLLや他のファイルを一緒にパッケージ化することができます。できますが、それではImage::Magickのロードに失敗します。Image::MagickのDLLは通常と違う場所に置かれているのでDLLがロードできませんし、DLL以外の必要ファイルを参照するための情報も不足します。

これを修正するために、perl/vendor/lib/PAR.pm にパッチを充ててください。

sub import {
    my $class = shift;

    PAR::SetupProgname::set_progname();
    PAR::SetupTemp::set_par_temp_env();

    # patch for sitelib by nabe@abk ---------
    if ($ENV{PAR_TEMP} && $^O eq 'MSWin32') {
        my %conf;
        foreach(keys(%Config)) {
            $conf{$_} = $Config{$_};
        }
        *Config::Config = \%conf;   # replace read-only object

        my $base = "$ENV{PAR_TEMP}\\inc";
        $Config::Config{sitelib}    = "$base\\site\\lib";
        $Config::Config{sitelibexp} = "$base\\site\\lib";
    }
    # patch end -----------------------------

Image::Magickは環境変数を参照しながら、.dllや.xmlファイルをその都度ロードするようになっているのですが、それらのファイルは指定しないとパッケージ化されませんし、パッケージ化しても $Config{sitelib} が適切に設定されていないため、Magick.pm で正しく環境変数を設定できません。

これを解決するためのパッチになります。

Image::MagickのライブラリごとEXE化

pp コマンドの -a オプションで、Image::Magickのライブラリ類(*.dll, *.xml)を一緒にパッケージ化します。

Strawberry Perlインストールディレクトの「perl\site\lib\Image」以下にあるすべてのファイルをパッケージに収録します。面倒なのでファイルに記述してそれをコマンドラインで与えることにします。

以下は例になります。パスは適当に読み替えてください。

pp -a "C:/strawberry-perl-5.26.2.1/perl/site/lib/Image;site/lib/Image"
   -o test.exe test.pl

オプションが長くなり入力が面倒なので、pp-option というファイルを用意してその中にオプションを書きました。

pp @pp-option

注意

スクリプト内で、スレッド生成やforkをしている場合は、必ず「use Image::Magick」してください。生成されたスレッドやプロセスから「require Image::Magick」しても必要な環境変数が設定されず、Image::Magickが動作しません。

まとめ

Image::Magickモジュールごと、PerlスクリプトをEXE化できるようになりました。

ActivePerlでも同じ方法で解決できると思います。

2018/08/28(火)Huawei nova lite/OreoにカスタムROM導入と暗号化解除

Android 8.0に更新した nova lite にカスタムROMを導入してみました。他のHuawei端末でも参考にしてください。

Trebleについて

Android 8.xのカスタムROMを入れるためには、Android 8.0 Oreo以降のファームウェアが前提となっています。すでにシステム更新でOreoのアップデートが始まっていますが、必ず Oreo/Android 8.xに更新してから以下をお試しください(強制更新の方法はこちら)。

というのも、Android OreoからProject Trebleというものが導入され、ファームウェアの使い方が変わりました。各メーカーとカスタム部分と、Androidのシステム部分を分離してしまおうという試みです。これにより、ROM(ファーム)のパーティション構成等が変更になっています。

この変更により、カーネルとシステム領域が別れたので、カスタムROMの導入は以前(7.x)より簡単になります。基本的にはシステムイメージを焼くだけで済み、カーネルはストックROMのものをそのまま使用できます。

続きを読む

2018/07/27(金)Huawei nova liteをAndroid 8.0(Oreo)に強制アップデート

nova lite用のOreoが公開されました。EMUIを起動している(非root/無改造)状態から、システム更新が降ってくるのを待ってもよいのですが、他の方法を試してみました。

P10やP10 Lite等の他機種でも同じようにできるはずです。また、この方法だと、応用でダウングレードもできます。

関連記事:nova lite/OreoにカスタムROMを導入

続きを読む

2018/06/30(土)Certbotによるワイルドカード証明書と自動更新の設定

どこよりも簡単なワイルドカード証明書設定メモ。


2018年からLet's Encryptがワイルドカード証明書に対応しました。

しかし、これを利用するためにはdns-01という、DNSのTXTレコードを使った認証が必要で、有効期限3ヶ月を乗り越え他の証明書と同じように自動更新させるためにはこのDNS認証手順を自動化する必要があります

そもそもdns-01対応の自動設定が大変ですし、お名前.comやValue Domain等のレジストラサービスを使用していると色々と厄介です。

構成

  • Debian Stretch
  • Apache
  • BIND
  • 設定対象DNS : example.jp

DNSは外部サービスを使用しているものとします。外部サービスでも、CloudfireやAWS、Google Cloud DNSといった有名サービスを使っている場合、DNSサーバは不要です。検索すれば、それらの設定方法が出てきます。

続きを読む

OK キャンセル 確認 その他