FC2ブログ

本を読む

読書やコンピュータなどに関するメモ

「元号って何だ?」

 平成までの247個の元号(南北朝でのダブりなどを含む)とその改元について、おもしろエピソードを紹介している本だ。「「日本の伝統」の正体」「「日本の伝統」という幻想」の藤井青銅氏による。

 たとえば改元の理由の類型として最初に「亀改元」(著者命名)を紹介している。珍しい亀が出現したことを理由に改元するというものだが、奈良時代に集中していていたり、その現象はちょっと無理があるのではないだろうかとツッコんでいる。

 そのほかの類型も「メルヘン改元」「おいしい水改元」「お宝改元」「イチャモン改元」という具合にネタにしている。

 真面目なところでは、ちょっと歴史をかじると出てくる「辛酉改元」や「甲子改元」があり、これを実行するかどうかにもその時の社会や政治体制などの状況によって違うという。それも含めて、公家と武家の権力のかけひきが改元に影響する。

 散発的に情報を集めた豆知識本という感じではなく、おもしろネタを紹介するというスタンスっぽくて、面白く読んだ。

「日経Linux」2019年1月号

日経Linux 2019年 1 月号
日経Linux 2019年 1 月号
posted with amazlet at 19.02.04

日経BP社 (2018-12-07)

 次号がもうすぐ出るけど、通読メモとして。

 特集1が、周辺機器と組み合わせる「USBメモリー、Webカメラ、マイク&スピーカー、グラボ Linuxマシンをトコトン遊び尽くす」。パート1が「OSやアプリも収録して持ち歩ける」。UbuntuをunetbootinでUSBメモリーに入れる方法や、ChromiumOSのCloudReadyをUSBメモリーに入れてセットアップする方法、アプリケーションをAppImageから実行する方法、USBメモリーをログイン認証に使う方法を解説する。

 パート2が「家の様子をWebやメールで確認」で、Webカメラ+Cheeseで家の様子を見たり、Motionで動体検知して不審者を検知したり。パート3が「顔認証のセンサーとして使う」で、Webカメラ+Enable Viacamで顔の動きをマウスがわりにしたり、howdyで顔認証によりログインやsudoの認証をしたりする。

 パート4が「音声指示で動画も長せるAIスピーカー」。構築編が、UbuntuにAVS Device SDKを入れてAlexaに接続する。応用編が、UbuntuからAlexa→IFTTT→BeebottleとつないでUbuntuスクリプトを実行する。

 パート5「4K動画をラクラク再生」は、2011年モデルのPCに9000円台のグラフイクカードを追加して4K動画対応、ただしYouTubeの4Kはコーデックの問題で対応できず。パート6「深層学習の認識速度が5倍に」は、GeForceにCUDAとcuDNNを入れてTensorFlowを動かすのだけど、やっぱりこのあたりはOSも含めた各ソフトウェアのバージョン合わせが大変だなあ。

 特集2が「Ubuntu 18.10丸わかりガイド」。Part 1が「写真で見る新デスクトップ」で、デフォルトの新テーマ「Yaru」がらみの違いを画像で紹介している。Part 2が「インストール方法と初期設定」で、付属ディスクから起動してインストールする様子を図解で解説している。

 Part 3が「安全・確実に移行するためのQ&A」で、安全に振るなら18.04 LTSでということになるようだ。

 Part 4が「18.10で新しくなった点を徹底解説」。指紋認証、Ubuntuソフトウェアでのsnapパッケージの扱いの違い、スマホ連携のGSConnect、Network ManagerのOpenVPNプラグイン、LibreOffice 6.1、カーネル4.18、GNOME 3.30など。

 Part 5が「全7種のデスクトップ&機能を解説」で、Lubuntu(18.10でLXQtに、日本語化方法も)、Ubuntu MATE、Ubuntu Budgie(日本語化方法も)、Xubuntu、Ubuntu Studio、Kubuntu、Ubuntu Kylinを紹介。

 特集3が、GoogleのRaspberry Pi工作キットを使った「Google自作カメラ&スピーカーを使い倒す」。Part 1が、Google AIY Vision Kitを使い、ディープラーニングによる画像認識でじゃんけんをする。Part 2が、Google AIY Voice Kit V2を使い、ボイスコマンドによってPWMとサーボモーターを制御して歌って踊らせる。

 特集4が「ラズパイで楽しむLinuxライフ Nextclodのファイル共有を使いこなそう」で、Raspberry Pi 3 Model B+にNextcloudをインストールして初期設定し、Web UIやWebDAVでアクセスする。

 新連載「ハード&ソフトをちょい足し! 新しいラズパイの遊び方」第1回も、Raspbery Pi+Nextcloudの話。こちらは、専用Linuxディストリビューション「NextCloudPi」をインストールし、LVM2で使われていたディスクをマウントして使う。

 もう1つの新連載がLinuC/LPIC向けの「基礎からわかるLinuxコマンド」。第1回が、pwd、uname、exit、echo、man、help、unset、set。

 「ラズパイで学ぶ画像認識超入門」連載が、OpenCVのテンプレートマッチング、特徴点による画像認識、機械学習による画像認識を説明。さらに、IBMのWatson Visual RecognitionとMicrosoftのAzure Computer Vison APIという2つのWeb APIも紹介している。jl

 まつもとゆきひろ氏の「プログラマのこだわり」連載が、国際カンファレンスについて。初期の経験を語ったあと、各種の国際Rubyカンファレンスを紹介、さらに海外カンファレンス参加ガイドまで。

 「Linux 100%活用ガイド」連載が、GNOME Shell Extension(拡張機能)のインストール方法と、おすすめ拡張機能のAuto Move Windows、Workspaces to Dock、Caffeine、Removable Drive Menu、Clipboard Indicator、Transparent Window Moving、Text Translator、Bluetooth quick connectの紹介。

 「Linuxで旧型PCを復活! 改二」連載が、Nexus 5にUbuntu Touchをインストールし、コンバージェンス機能まで使う。カーネル新機能連載が、可変長配列の問題と、その削除が4.16から始まって4.20で完了した話。

 巻頭レポートが、「みんなのラズバイコンテスト」結果レポートと、Fedora 29リリースをモジュラリティーの解説中心に。巻頭ニュースにはRed HatのRHEL責任者のStefanie Chiras氏のインタビューもあり。世界のLinuxディストロ連載が、アプリケーションコンテナー「Easy Container」を備えた軽量ディストロ「EasyOS」。フリーソフト連載が、Markdownでプレゼンを作成するMarpと、音声ファイル変換GUIツールのSoundCOnverter。

 みんな大好き「#!シス管系女子Season6」が、grep結果の色付けの続編で、“--color=always”でlessに渡す話。漫才だ……

 別冊付録も、ラズパイマガジンから抜粋した「はじめてのラズパイ&電子工作入門ブック」。第1章は、Raspberry Pi 3 Model B+を中心とした各モデルの紹介や、買い方、周辺機器に始まり、GPIO Header、microSDへのOSインストール、操作の基本。第2章が初心者のためのサーバー構築で、サービスの操作、IPアドレスの設定、sshd設定、ntpの設定、unattended-upgradesによる自動アップデート、Sambaによるファイルサーバー構築、Apache httpdによるWebサーバー構築、PostgreSQLによるDBサーバー構築、dnsmasq+hostapdによる無線LANルーター構築、systemdによるサービスとログの管理。第3章がラズパイZero徹底活用で、Sambaによるファイルサーバーや、ffmpeg+nginxによる動画配信サーバー、Bluetoothの接続設定、Bluetoothスピーカー化、Node-REDとIBM Cloudによる翻訳APIの利用。第4章がラズパイ工作入門で、LEDやモーターの基礎から、GPIOでの制御、I2Cでの制御。

「軍師 黒田官兵衛伝」4

 歴史大河4コママンガ「信長の忍び」のスピンオフが、2年半ぶりの新刊リリースとなった。2020年の大河ドラマに備えてかな。

 この巻では、山崎の戦いから清洲会議ときて、賤ヶ岳の戦いに入る。内容的には、黒田官兵衛というより羽柴秀吉がほぼ主人公だなあ、作者さんも巻末に書いてるように。「信長の忍び」本編での秀吉と光秀の仲を回想したりして、哀しみも感じさせる。

 ちなみに、光秀が最期に「生まれ変わったら…次は…僧として生きたい」「天のように…海のように…」とつぶやいて、その後で首級が傷んでいて判別がつきにくかったと報告されているという遊びもある。さすがにそういう展開ではないと思うけど。

ThinkPad+Ubuntuで、サスペンドから戻るとウィンドウがリサイズされる

 去年からThinkPad T470sを使い始め、最初からUbuntu 18.04を入れています。満足しているのですが、1つ問題があって、サスペンド状態からリジュームすると画面の各ウィンドウがリサイズされて画面左上に集まってしまうという症状をくらっていました。

 見た感じとしては、リジュームした直後に画面のHiDPIスケーリングが一度200%ぐらいになって、また元の設定になるような感じです。

 Ubuntuのlaunchpad(イシュートラッカー)にもBug #1726548 “Windows resized after resume”というスレッドが立っていて、同様の症状が次々寄せられているようでした。

 このスレッドで今月、Ask Ubuntuの18.04 - Preventing Window resizing after resume - Ask Ubuntuという質問と回答が紹介されていました。ここで書かれていたのは、GNOMEの自動スケーリング調整をオフにするという方法です。

 設定はgsettingsで確認できます。

$ gsettings get org.gnome.desktop.interface scaling-factor

 結果が「uint32 0」になっていると、GNOMEの自動スケーリングがオンになっています。

 オフにする場合もgsettingsから。

$ gsettings set org.gnome.desktop.interface scaling-factor 1

 私の場合は自動スケーリングを使っていないので、これで問題を回避できました。

「新仮面ライダーSPIRITS」20巻

こいつは「ヘルダイバー」

俺の道連れだ

 直球でZXのアクションが炸裂する巻。分身投影も決めたし。そして、崩壊する暗闇大使の魔方陣へ600km/hで突入。

 ほかのライダーの中で、われ先に飛び出すのが、昭和ライダーでもキャラの濃いアマゾンとストロンガーってのも、らしいね。

 しずか姉さんは、敵か味方かわからなくてミステリアスだなあ。

 巻末は、菅田俊さん対談PART II。身長があるので合う服がなくて自前の服とか、さらにバイクも自前とか、男前なエピソードが。

Bash 5.0の新機能:namerefの挙動の変更

Qiitaと同時投稿です

Bash 5.0では、namerefの名前解決で非互換の挙動があると言われています。

リリースアナウンスでは次のように書かれています。

There are a few incompatible changes between bash-4.4 and bash-5.0. The changes to how nameref variables are resolved means that some uses of namerefs will behave differently, though I have tried to minimize the compatibility issues.

「bash 5.0のNEWSファイル私訳」にも次のようにあります。

  1. 関数内でnamerefの名前解決のループは、グローバルスコープでの名前の変数 に解決されるようになりました。

そもそもnamerefを知らないと変更点もわからないので、順に説明します。

おさらい①:namerefって?

namarefはBash 4.3から導入された機能です。ksh由来のようで、AIXのマニュアルでは「名前参照」と、Solarisのマニュアルでは「nameref」と表記されているようです。

namerefは、ほかの変数を参照する変数を作る機能です。変数のエイリアス(別名)を付けるときなどに使います。

namerefはdeclare -nlocal -nなど、変数宣言のときに-nオプションを指定して作ります。namerefな変数に、ほかの変数名を文字列として代入すると、エイリアスのように動きます。

$ aaa=3                 # 変数aaaに3を代入
$ declare -n bbb        # namerefな変数bbbを宣言
$ bbb=aaa               # bbbに'aaa'を代入($aaaではない)
$ echo $bbb             # bbbの内容は?
3

おさらい②:namerefの使い道

namerefの使い道として自分が考えたのが、関数から関数に値を渡すときに、変数名を渡す方法です。

たとえば、関数から関数に配列を渡すときには、引数や標準入力ではそのままでは渡せません。そこでダイナミックスコープを使って渡す方法があります。

foo() {
  local ary=('a b' c d)         # 配列変数aryを宣言
  bar
}

bar() {
  echo ${ary[0]}                # fooで宣言された配列変数aryを参照
}

foo                             # 「a b」と表示される

ただbarから暗黙的に変数aryを参照するのがいまいちです。そこで、namerefを使って変数名を渡すことで、barではfooで宣言された変数名の知識が不要になります。

foo() {
  local ary=('a b' c d)
  bar ary               # “ary”という変数名を文字列で引数に
}

bar() {
  local -n var=$1       # nameref変数varに1つめの引数の文字列(変数名)を代入
  echo ${var[0]}
}

foo                      # 「a b」と表示される

namerefの挙動の違い

さて、Bash 5.0で挙動が変わったのはどのあたりでしょうか。

「関数内でのnamerefの名前解決のループ(A nameref name resolution loop in a function)」ということなので、namerefで循環参照を作ってみます。

aaa=7                           # グローバル変数aaa

foo() {
  local -n aaa                  # ローカルなnameref変数aaa
  aaa=aaa                       # aaaからaaa自身を参照
  echo $aaa
}

foo

これをBash 4.4で実行すると、循環参照の警告が表示されたあと、echo $aaaでは何も表示されません。

$ bash ./n.sh
./n.sh: line 6: warning: aaa: circular name reference

Bash 5.0で実行すると、循環参照の警告が表示されたあと、echo $aaaでグローバル変数aaaの値である「7」が表示されます。

$ ./bash ./n.sh
./n.sh: line 6: warning: aaa: circular name reference
7

結論

そもそも、Bashでnamerefをそれほど使うとは思わないし、その中でも特殊なケースなので、非互換による影響はほとんどないのではないでしょうか。

Bash 5.0の新機能:カーソルの画面行移動

Qiitaと同時投稿です

Bash 5.0のNEWSファイルをさくっと翻訳したエントリー「bash 5.0のNEWSファイル私訳」を先日書きました。

この中のReadline 8.0の新機能として、カーソルの画面行移動機能がありました。

b. キーに割り当てられるコマンドに新しく`next-screen-line' and
   `previous-screen-line'があります。カーソルを画面行のそれぞれ次と前
   の行の同じカラムに移動します。

さっそく試してみましょう。

Bash 5.0のコマンドラインから、Ctrl-↓にnext-screen-lineを割り当てます。

$ bind '"\e[1;5B": next-screen-line'

同様にCtrl-↑にprevious-screen-lineを割り当てます。

$ bind '"\e[1;5A": previous-screen-line'

コマンドラインで、1行が1画面行を超えるように文字を入力します。

$ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

ここでCtrl-↓とCtrl-↑を押すとカーソルが画面行を移動することがわかります。

 | HOME |  »

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad