ホーム » コンピュータ (ページ 2)

コンピュータ」カテゴリーアーカイブ

サーバ⚙

アーカイブ

カテゴリー

iphoneの検知難しい

大学でアパート住まいの子供が、帰っているのか確認するために、LINE beacon を置いて検知を試したけど、bluetooth を切って既読スルーなヤツなので、ほとんど検知することができない。

そこで、アパートでは無線LANルータを使ってるし Raspberry-Pi で、arpalert を使えば簡単に検知できるだろうと、実験中。でも iPhone はセキュリティ対策なのか、 arp の返答は必要最小限なので同じサブネットとはいえ、そのままでは通信の必要の無い raspberry-pi には、ARP 情報が送られてこない。また ping には返答しないようで、単純に ping で確認も困難。ということで単純な arpalert では検知が難しいなぁ。

定時処理で、”arping -c 1 -I wlan0 IPHONEのIPアドレス” を実行させて、強制的に ARP を送ってもらうか…

cec-clientのデバイス番号とアドレス番号

自宅では、テレビやケーブルテレビチューナーやレコーダを赤外線リモコンで制御できるようにしているが、電源はトグル動作でON→OFFかOFF→ONという制御ができない。そこで、HDMI端子経由のチャンネル制御を行っている。

この際に、デバイス番号とcecのアドレス番号を使うが、デバイス番号が時々変化している。

しかたがないので、cecのscan処理でデバイス番号とアドレス番号の対応情報を保存するようにしてみた。

#!/usr/bin/perl

my $cec = "/usr/bin/cec-client -d 1 -s" ;

open( my $fd , "/bin/echo 'scan' | $cec |" )
    || die( "Can't open $cec\n" ) ;
open( my $ft , "> /home/xxxxxxxx/lib/cec-table.sh" )
    || die( "Can't open cec-table.sh\n" ) ;

my $device  = "" ;
my $dev_str = "" ;
my $address = "" ;
my $osd_str = "" ;

print $ft "#!/bin/bash\n" ;

while( my $line = <$fd> ) {
    if ( $line =~ /^device\s+#(\d+):\s+(.*?)$/ ) {
        $device  = $1 ;
        $dev_str = $2 ;
    } elsif ( $line =~ /^address:\s+(\d+)\.0\.0\.0$/ ) {
        $address = $1 ;
    } elsif ( $line =~ /^osd\s+string:\s+(.*?)$/ ) {
        $osd_str = $1 ;

        print $ft "DEV[$address]=$device\n" ;
        print $ft "OSD[$address]=\"$osd_str\"\n" ;
    }
}
close( $fd ) ;
close( $ft ) ;

stretchで起動しづらい

自宅で色々と動いている Raspberry-Pi 。OS更新はまめにやっているけど、外気温測定に使っているのが Jessie のままだったのに気づく。stretch に上げたけど、どうも起動に失敗する。更新に失敗したかと思ったけど、キーボードをつなぐために USB WiFi を抜いて起動すると、普通に動いている。

今までも、多少 boot が不安定なのはあったけど、stretch になって起動シーケンスが最適化されたのか、WiFi 有効化のタイミングが早まり、ブート時の電力不足が発生していると思われる。

ひとまず、改造面倒だし USB WiFi を抜いて、boot がそれなりに進んでから USB を指して対応。

WZR-1166DHP2-Ver 2.18

久々に、WiFiルータ WZR-1166DHP2 のファームウェア Ver 2.18 が公開されていた。同じく、WCR-1166DS も新しいファームウ Ver 1.33 ェアが公開されている。早々にインストール。

長らく更新が無かったなか、複数の製品でファーム更新ってきたから、Buffalo固有の大きなバグを心配したけど、「SSLバージョン3.0の脆弱性対策に伴い、SSLバージョン3.0を無効にしました」だそうだ。

ER-X EdgeOS v2.0.1

EdgeRouter-X の新しいファームウェアが、2019/3/29 にリリースされたみたいということで、早速インストール。特にどんな機能が増えたのか、よくわからないけれど無事更新完了。

ただ、更新が終わって改めて、何が新しくなったのかとファームウェアのページを見たら、v2.0.1の情報が消えている。どーゆーことぉ?

アマチュア無線: aprx を動かしてみた

知り合いより譲り受けた、TH-D72を活用したいということで、APRS の iGate 局を動かしてみた。

我が家は、ロケーション的に福井市にあるリピータにも、ハンディ機では接続できず、無線機の位置情報などをインターネットに伝えることができる APRS や、インターネットを経由した通話ができる D-STAR などを、あまり活用することが難しい。

aprx を動かす

そこで、TH-D72 を APRS の iGate 局として動かすために、aprx をインストール。

以下のように設定したけど、まずい所がないか要チェックだな。ひとまず、データ流しまくりでaprsインターネット側には、迷惑をかけていないはず。ハンディ機なので、どのあたりまで電波が飛んでいるのか、チェックしてみよう。

$ sudo aptitude install aprx
$ sudo vi /etc/aprx.conf
$ sudo systemctl enable aprx.service
$ sudo systemctl start aprx.service
# /etc/aprx.conf
mycall JR9PVZ-10
myloc  lat 3553.48N lon 13613.33E
<aprsis>
   passcode 22202
   server   rotate.aprs2.net
</aprsis>
<logging>
   pidfile /var/run/aprx.pid
   rflog   /var/log/aprx/aprx-rf.log
   aprxlog /var/log/aprx/aprx.log
   dprslog /var/log/aprx/dprs.log
</logging>
<interface>
   serial-device /dev/ttyUSB1 9600 8n1 KISS
   initstring  "HBAUD 9600\x0dKISS ON\x0dRESTART\x0d"
   alias       RELAY,WIDE,TRACE
   callsign    $mycall # callsign defaults to $mycall
   tx-ok       true # transmitter enable defaults to false
   telem-to-is false # set to 'false' to disable
</interface>
<beacon>
   beaconmode both
   cycle-size 60m
   beacon     symbol "I#" $myloc comment "Tx-iGate + Digipeater"
</beacon>
<digipeater>
   transmitter $mycall
   <source>
      source   $mycall
   </source>
</digipeater>

TH-D72の設定

[TNC]-[TNC] KISSモード
[メニュー]-310 データバンド A-BAND
[メニュー]-311 パケットスピード 9600 bps
無線周波数 144.640 MHz

MinGW gcc + Visual Studio Code でC言語

Visual Studio 2017は激重、BCC+Visual Studio Codeは、個人利用なら無償だけど、職場のシステムに入れるにはライセンスが微妙ということから、C言語環境には、MinGW (Minimalist GNU for Windows) の gcc を使ってみる。

MinGW gcc のインストール

MinGWのサイトから、インストーラー mingw-get-setup.exe をダウンロードする。

“Install” を選ぶと、インストーラが開始。保存先のディレクトリ名の入力になるけど、デフォルトの “C:\MinGW”をそのままで、”Continue”を選ぶ。

必要最小限のファイルのダウンロードが終わると、以下の画面となるので、さらに”Continue”。

Installation Manager が表示されたら、インストールする開発環境を選ぶ。C言語の基本的な勉強用であれば、以下の2つをチェックする。項目を選んで右ボタンを押して、プルダウンメニューから、Mark for Installation を選ぶ。

  • mingw32-base-bin
  • mingw32-gcc-g++-bin

あとは、左上の “Installation”から、”Apply Changes”を選ぶとインストールが始まるので、終わるまで待つ。

MinGWのPathを通す

プログラムを起動する場合、どのフォルダにあるのかを、環境変数 Path に登録しておく必要がある。

⚙ 設定を起動し、システム→バージョン情報を選ぶと、画面右側のスクロールダウンした先の関連設定の下のシステム情報をクリック。

以下のような、コントロールパネルのシステムの画面が表示されたら、画面左の”システムの詳細設定をクリック。

以下のようなシステムのプロパティが表示されたら、詳細設定のタブの”環境変数(N)…”をクリック。

環境変数の画面になったら、画面下側の”システム環境変数”の Path を選んで、”編集”をクリック。

“環境変数名の編集”の画面が出たら、右上の”新規”を選ぶと、変数名のPath一覧の最下部に、追加画面が表示されるので、MinGWをインストールした、場所の bin の場所を記載する。今回ならば、”C:\MinGW\bin” を加え、”OK”を押せば完成。

Visual Stuido Code のインストール

別資料でも記載したが、この後は、”Visual Studio Code”をインストール。Windows であれば、Code Runner は標準設定で MinGW の gcc を使うように設定されているので、普通にインストールすれば終わり。

Visual Studio Code のサイトに行って、OSが64bit版であれば、Windowsの “System Installer 64bit” 版をダウンロード。あとは、インストーラを起動して、標準構成でインストール。

インストールが終わったら、左中段下の”Marketplace”を押し、以下の3つのアドオンをインストールする。

  • Japanese Language Pack for Visual Studio Code 1.32.4
  • C/C++ 0.22.1
  • Code Runner 0.9.7

あとは、エディタ画面でC言語のプログラムを入力し、画面右上の▶ボタンを押せば、プログラムをコンパイル&実行ができる。

Visual Studio CodeでBorland C++を使う

先日、Visual Studio 2017 を入れたら、激重だったので、もっと軽い環境を試す。

embarcadero C++ compiler(旧borland C++)のインストール

軽量のコンパイラとして便利なのが、embarcadero C++ compiler。というより、年配の人であれば 旧borland C++ といった方が有名だろう。以前より無料で利用できるので、職場でも初心者プログラマーの簡単プログラミングであれば、BCC55を利用している。

最新のものを探すとBCC102として公開されているので、これをインストールする。

C++ Compiler のページから、”無料版のダウンロード”より、BCC102.zip を取得する。解凍して、コンパイラのフォルダを “C:\borland\BCC102” に移動する。コンパイラの実行プログラムが “C:\borland\BCC102\bin\bcc32x.exe” となること。

Visual Studio Code の設定

以下の図に示す、3つをインストールする。(Visual Studio Codeのインストールは他の資料参照)

  • Japanese Language Pack… 日本語環境
  • C/C++ 0.22.1 の編集機能
  • Code Runner 0.9.7 (今回のキモ)

Marketplace の検索画面で、Japanese とか C++ とか Code Runner とか入力すれば、候補に出てくるので右下の”インストール”ボタンを押せば、インストールされていく。

“ファイル→基本設定→設定” を開くと、以下のような画面になるので、検索画面で”code-runner”などと入力すれば、”Code Runner”の設定画面が出てくる。今回は、設定での入力が複数行になるので “settings.jsonで編集” をクリックすると、ユーザ情報の settings.json の編集画面になる。

ここで、settings.json に以下の内容を書き込んで保存する。(表示の都合で折り返しているけど、”cd…..exe”までは1行で)

{
    "code-runner.executorMap": {
        "html": "\"C:\\Program Files (x86)\\Google\\Chrome
                   \\Application\\chrome.exe\"",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir
                 && c:\\borland\\BCC102\\bin\\bcc32x
                    $fileName -o $fileNameWithoutExt.exe
                 && $dir$fileNameWithoutExt.exe",
        "cpp": "cd $dir
                 && c:\\borland\\BCC102\\bin\\bcc32x
                    $fileName -o $fileNameWithoutExt.exe
                 && $dir$fileNameWithoutExt.exe"
    }
}

編集と実行

あとは、適当な C/C++ のソースコードを開いて、編集画面の右上の▶ボタンが、実行に割り当てられているので、これを押すだけでコンパイル&実行ができる。別画面にコンパイル状態の表示と、実行結果が表示される。

Postieでimap-ssl接続に失敗

職場のサーバでWordPressを動かす中、簡単な画像付きメールでのポストをするために、plugin の Postie を使っている。

状況確認

当初は、imap-ssl で動かしていたのだが、接続に失敗するようになった。

Postie (v 1.9.32)
getemails: There was an error connecting to the server 

メールサーバが、自宅メールサーバなので、FireWall 関連の設定のミスが考えられたが、nagios-plugins を入れて実験すると、以下のような結果なので、接続はできている。

$ /usr/lib/nagios/plugins/check_imap -p 993 -H xxxx -S
IMAP OK - 0.146 second response time on xxxx port 993 [* OK
  [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE
  IDLE LITERAL+ AUTH=PLAIN] Dovecot (Debian) ready.]
  |time=0.145649s;;;0.000000;10.000000

問題点

原因を確認ということで、syslog を確認すると、以下のように SSL のハンドシェークでエラーが出ている。

Mar 24 00:50:39 xxxx dovecot: imap-login: Disconnected
  (no auth attempts in 0 secs): user=<>, rip=xx.xx.xx.xx,
  lip=192.168.xx.xx, TLS handshaking: SSL_accept() failed:
  error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert
  unknown ca: SSL alert number 48, session=<xxxxxx>

暫定の解決法

しかたがないので、dovecot の ssl の設定を変更、TLSv1.2 になっていた部分を TLSv1 に修正

(( /etc/dovecot/conf.d/10-ssl.conf ))
- ssl_min_protocol = TLSv1.2
+ ssl_min_protocol = TLSv1

”TLS 1.0にはBEASTやPOODLEといった脆弱性があり、一定の条件下であれば暗号解読が可能であると言われています。”で、2018年6月30日以降は、TLSv1.0 は通常用途では勧められないとのことなので、多少心配ではあるけど…。

通常使っているメールソフトは、TLSv1.0 を使わないだろうし、実質このPostieだけの利用だろうし。

インターネット検索の上達法


情報をGoogleなどで検索する時、うまく情報を見つける人と見つけられない人の違いをみると、検索ワードの書き方がキーポイントだと思う。

でも、ここで、Google の AND/OR 検索やら * を用いた曖昧語検索やら link: といった検索演算子といった Tips は言及するつもりはない。

検索上手になる方法

要は、今、自分が探したい情報の解説記事あるとしたら、そのページ作者ならそのページにどんなタイトルをつけるか、どんな文章を書くのか、そのタイトルや文章にはどんなことが書かれるか想像することこれを想像できるようになると、検索フォームに自分が探したい情報として必要最小限なにを書くべきか分かるようになるはず。

まずはページ・記事を書いてみる。

でも、それが想像できないじゃん…という人は、自分で解説ページを書いてみればいい。「BLOG を書くことって自己満足じゃね?」とか「2番煎じのネタじゃね?」とか思うかもしれない。でも、最初はそれでいい。自分でやったことの解説記事を書くことを繰り返していれば、読んでもらう記事にどんなタイトルをつけると良いか考えるいい経験になる。

インターネットに+1の貢献をしよう

ただ、自己満足+2番煎じの記事ばかりを書いていると、自分も成長しないし、インターネットの情報も成長しない。できれば、2番煎じでもいいから、あなた自身で調べた情報を少しでもいいから追加した記事、自分の参考にした情報へのリンクを埋め込んだ記事を書けば、インターネット上の知識も成長するし、あなた自身も成長する。

そして、本当にあなたが成長したなら、完全オリジナルの記事を書けばいい。

元ネタは…

といっても、この+1で貢献という考えには、元ネタがある。

ハガレンのネタは、アニメが好きな人なら解説は不要だろう。映画「ペイフォワード」は、心が疲れている時にぜひとも見てほしい作品。ぜひぜひ。

検索 🔎

  My Google     Yahoo

便利サイト