Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

May 22 2019

Firefox 67 がリリースされた

Firefox 67 がリリースされた。

修正点や変更点は色々あるが個人的には「暗号通貨マイニング」と「フィンガープリント採取」をブロックできるようになったことだろう。

Firefox 67 Firefox 67

今まではマイニング防止に NoCoin を使っていたが,これからは標準機能でいけるかな。 「フィンガープリント採取」をブロックできるようになったことは僥倖だろう。

Ubuntu の場合は APT でアップデートできる。 即時対応で助かったよ。

Firefox 67

本当のチャイナ・リスク

「チャイナ・リスク」というフレーズが出回ったのはゼロ年代,ブッシュ共和党政権の時である。 その後,オバマ民主党政権に代わって「チャイナ・リスク」というフレーズは聞こえなくなり,むしろ中国を重要なビジネス・パートナーと見做すようになっていく。 それがトランプ共和党政権でまた反転する。 この辺の見事な色分けは流石米国としか言いようがない。 官僚主導で硬直しきった日本の政治状況と比べれば羨ましいことである。

Google の思惑は分からない。 「(大統領の)行政命令を遵守するため」というのはいかにも後付けくさい。 ただ Huawei (華為) はこの決定にあまり困らないんじゃないのかなぁ。 そして「あまり困らない」ことこそが本当のリスクと言える。 何故なら Huawei 製端末においてはコントロールの主体が Google から Huawei に移ることを意味するから。 まぁ Google と Huawei のどっちがマシかというリスク・トレードオフの問題でもあるのだが。

スマートフォンにおけるEUの反トラスト措置の核心はAndroidデバイスとグーグルのポピュラーなアプリをアンバンドルすることだ。これによりスマートフォンメーカーはグーグルのブランドを維持したまま完全にグーグルの支配下にあるのではないデバイスを販売できる。例えば、Playストアをプレロードするものの、デフォールトの検索エンジンやブラウザにグーグル以外のプロダクトを設定するなどだ。
しかしグーグルが(現行モデルでは継続されるとしても)ファーウェイに新しいAndroid OSやGoogle Playストアを提供しないとなれば、こうした構想は崩れてしまう。
via Googleのファーウェイ制裁参加で欧州にショック拡大中、脱米模索も

OS ないしはハードウェア・ベンダが「アプリケーション・ストア」を通じてソフトウェア供給を支配下に置く,いわゆる「アプリケーション経済」は故 Steve Jobs の考えたビジネスモデルと聞いたことがあるが,結局のところそれはアプリケーション流通を利用した CRM (Customer Relationship Management) 覇権競争にほかならない。

「アプリケーション・ストア」は APT (Advanced Package Tool) のようなパッケージ管理ツールとは根本的に異なる。 たとえば APT は簡単にサードパーティのリポジトリを組み込むことができ,その信用モデルは OpenPGP の「信用の輪(web of trust)」で構成されている1。 どちらかというとこれは VRM (Vendor Relationship Management) に近い。

今回の件をきっかけに「アプリケーション経済」がもっと VRM 寄りになっていくと面白いのだが,流石にそれは夢を見すぎか(笑) 折角の AI 技術も「バーチャル外商」としてしか使われないのなら宝の持ち腐れだよなぁ。

モノやサービスで溢れかえる時代に生きている私達の自由は意外に貧弱なものである。 それを握っているのは「私達」ではないのだから。

参考図書

photo
インテンション・エコノミー~顧客が支配する経済
Doc Searls
栗原潔 (翻訳)
翔泳社 2013-03-14 (Release 2013-06-20)
eBooks Kindle版
ASIN: B00DIM6BE6
評価     

時代はソーシャル CRM から VRM へ。俺達がインターネットだ!

reviewed by Spiegel on 2015-04-26 (powered by amazon-item v0.2.0)

photo
これまでのビジネスのやり方は終わりだ―あなたの会社を絶滅恐竜にしない95の法則
リック レバイン, ドク サールズ, クリストファー ロック, デビッド ワインバーガー
Rick Levine (原著), Doc Searls (原著), Christopher Locke (原著), David Weinberger (原著), 倉骨 彰 (翻訳)
日本経済新聞社 2001-03
Book 単行本
ASIN: 4532149029, EAN: 9784532149024
評価     

クルートレイン宣言。タイトルがアレ過ぎる(笑) ちなみに今は New Clues が登場している。

reviewed by Spiegel on 2015-01-14 (powered by amazon-item 0.2.1)


  1. 「信用の輪」については拙文「OpenPGP 鍵管理に関する考察」で少し紹介しているので参考にどうぞ。 [return]

May 21 2019

ホーランエンヤ中日祭。神事としては今日がメイン。ちなみに「出雲郷」と書いて「あだかい」と読む。

May 20 2019

時計じかけのプログラミング

実家に帰郷 (かえ) って以前と変わったことは色々あるが,そのうちのひとつが「テレビを観ている人」を観察するようになったことだ。 いや,うちの親父殿と甥っ子がどえらテレビっ子になってるのよ。 独り暮らしだと「テレビを観ている人」を観ることはないからねぇ。

テレビ番組というのは視聴者の感情をコントロールすることで成立している。 視聴者は番組が笑ってほしいところで笑い,怒ってほしいところで怒り,驚いてほしいところで驚き,泣いてほしいところで泣く。 そりゃあもう見事にそのとおりに行動するのよ,「テレビを観ている人」は。

昭和時代の「知識人」はテレビの台頭を指して「一億総白痴化」と揶揄したが,もしかしたら「白痴化」はテレビのみならず(Web を含む)あらゆるメディアに及んでいるのかもしれない。

そういうのを見ていると,人工知能の「シンギュラリティ」はひょっとしたら起こるのかもしれない,と思うようになった。 それは「人工知能が人類を凌駕する」という意味ではなく「人工知能が人類を白痴化する」という意味で(「マトリックス」だなw)。 案外,人工知能によって真っ先に職を奪われるのはメディアの「中の人」なのかもねぇ。 人間の感情をコントロールする術が(確率・統計的に)分かっているのなら,それを最もうまく使いこなすのは機械だろうから。

閑話休題 (それはさておき) 。

20世紀末の話なのでもう時効だと思うけど,通信機械のシミュレータのプロジェクトに参加してたことがあって,そのプロジェクトが面白かったのはプロトコルスタックを GUI の CASE (Computer Aided Software Engineering) ツールで組むことができるというものだった。

20世紀末はいわゆる「オブジェクト指向」が産業分野でも台頭し始めた時期であり,その「オブジェクト指向」の究極の夢が図形化したオブジェウトを線でつなぐだけでプログラムができるという CASE ツールだったわけ。

でも,これらがメインストリームになることは殆どなかった。 私の知ってる範囲だと Yahoo! Pipes くらいなもんじゃないのかな(Yahoo! Pipes が登場し廃れるのはゼロ年代だけど)。 あるいは Astah* のように UML 図からプログラム・コードを生成するツールとか。

でも,たとえば UML 図にしたって実際に図を描いてみるとかったるくてやってられないのですよ。 で,結局はテキストで PlantUML で「書いた」ほうが早いという話になり, PlantUML のコードからプログラム・コードを生成すればいいじゃない,という話になってくる。

「図を描く」ってのは案外に不自由なものである。 何故なら「図を描く」ことによってそれまでの思考が図に固定されてしまうから。 その先はない,やり直さない限り。 だからかったるいのだ。 図像化と符号化には天地ほどのひらきがある。

テキストデータのプログラムコードが紙テープやパンチカードと決定的に違うのは記述コストが圧倒的に低くてしかも human-readable である点だろう。 考えながら書き,書きながら考えることができる。 これを超える「発明」はそれこそ数十年単位で出てこないんじゃないだろうか。

たとえば「プログラムコード」を(人間が指示したとおりに)人工知能が書くことができるようになったとしよう。 その場合,コードがテキストや図である必然性は微塵もなく machine-readable でありさえすればいい。 塩基配列でコードを構成したって構わないだろう。 むしろ人工知能が書いたコードを人間が読めるように「リバース・エンジニアリング」するのに苦労するんじゃないのかな。

グレッグ・イーガンの『万物理論』では「万物理論」を人工知能が書いている。 人間は理論の骨子とデータを入力するだけで,あとは人工知能が論文を書き上げるのをバカンスでもしながら待つだけである。 まさに理想の研究者生活。 未来のプログラマもかく在りたいものである(笑) まぁ,その時代まで私は生きていないだろうけど。

参考図書

photo
時計じかけのオレンジ (字幕版)
スタンリー・キューブリック (プロデュース)
(Release 2013-11-26)
Movie Prime Video
ASIN: B00FIX664S
評価     

この映画を観たのって大学生の頃なんだけど,女性の先輩と2人で観に行ったんだよなぁ。後で考えたらものすごいシチュエーションだったんだけど,その時は映画が面白すぎて状況を全く把握してなかった(笑)

reviewed by Spiegel on 2019-05-20 (powered by amazon-item 0.2.1)

photo
Gene Mapper -full build-
藤井 太洋
早川書房 2013-04-25 (Release 2013-04-24)
eBooks Kindle版
ASIN: B00CHIFA1M
評価     

SF が特に好きというわけではないのだが(子供の頃は好んで読んでたけど),たまにこうして良質の SF を読むのは楽しいね。日本でEブックによる「自己出版」の魁となったのが作品。

reviewed by Spiegel on 2019-05-20 (powered by amazon-item 0.2.1)

photo
万物理論 (創元SF文庫)
グレッグ・イーガン
山岸 真 (翻訳)
東京創元社 2004-10-28
Book 文庫
ASIN: 4488711022, EAN: 9784488711023
評価     

グレッグ・イーガンの名作。これも singularity を巡る物語だな。

reviewed by Spiegel on 2017-09-18 (powered by amazon-item v0.2.0)

May 18 2019

2019-05-18 のブックマーク

リリース情報

バベルのインターネット

セキュリティ&プライバシー関連

天文関連

知財関連

Linux または Ubuntu に関する話題

その他

May 17 2019

For-Range 構文の話

今回は小ネタでお送りします。

つか,以下の記事

の後半部分が何を問題にしているのか分からずしばらく悩んでしまった。 頭が悪くてゴメンペコン。

まず前提として Go 言語において「参照」のことは忘れよう。 見た目は参照ぽく振る舞う場合もあるが Go 言語に「参照」は存在しない。 Go 言語のインスタンスを表すものは「値」と「アドレッシング」であり,その「アドレッシング」の表現として(C 言語ではお馴染みの)ポインタを使うわけだ。 したがって,コーディングを行う際はインスタンスの値とアドレッシングに注意しながら進めるとハマりにくい。

では,最初に紹介した記事を参考に実際にコードを書いてみようか。

まず,以下のような型 A を考える。

type A struct {
	N string
}

func (a *A) GenFunc() func() {
	return func() {
        fmt.Printf("%s : %p\n", a.N, a)
	}
}

A.GenFunc() 関数は型 A の内容を標準出力に出力する関数を返す。 Method receiver が A ではなく *A とポインタ型になっているのがポイントである(洒落ちゃったてへぺろ)。

これを使って以下のコードを書いてみる。

package main

import "fmt"

type A struct {
	N string
}

func (a *A) GenFunc() func() {
	return func() {
        fmt.Printf("%s : %p\n", a.N, a)
	}
}

func main() {
	as := []A{
		{"foo"},
		{"bar"},
	}
	for i := 0; i < len(as); i++ {
    	fmt.Printf("instance: %s : %p\n", as[i].N, &as[i])
		as[i].GenFunc()()
	}
}

GenFunc() 関数を呼び出す際に method receiver の型が A から *A に このコードを実行すると

instance: foo : 0x40a0e0
foo : 0x40a0e0
instance: bar : 0x40a0e8
bar : 0x40a0e8

などと出力される。 GenFunc() 関数を呼び出す際に method receiver の型が暗黙的に変換されている点に注意してほしい。 ここまでは OK かな。

では for-range 構文を使うとどうなるか。 メイン関数だけ書き出してみる。

func main() {
	as := []A{
		{"foo"},
		{"bar"},
	}
	for i := 0; i < len(as); i++ {
    	fmt.Printf("instance: %s : %p\n", as[i].N, &as[i])
		as[i].GenFunc()()
	}
    fmt.Println()
    for _, a := range as {
		fmt.Printf("instance: %s : %p\n", a.N, &a)
		a.GenFunc()()
	}
}

これを実行するとこうなる。

instance: foo : 0x40a0e0
foo : 0x40a0e0
instance: bar : 0x40a0e8
bar : 0x40a0e8

instance: foo : 0x40c160
foo : 0x40c160
instance: bar : 0x40c160
bar : 0x40c160

ポインタ値からインスタンス a はインスタンス as[i] そのものではないことが分かる。 しかも a は for-range のループの中で使い回されていていることも分かる。

つまり上の for-range 構文は

for i, a := 0, as[0]; i < len(as); i, a = i+1, as[i+1] {
	fmt.Printf("instance: %s : %p\n", a.N, &a)
	a.GenFunc()()
}

と実質的に同じなのだ1

ここまで来れば

func main() {
	as := []A{
		{"foo"},
		{"bar"},
	}
	fs := []func(){}
	for _, a := range as {
		fs = append(fs, a.GenFunc())
	}
	for _, f := range fs {
		f()
	}
}

の実行結果がどうなるか容易に想像がつくだろう。

bar : 0x40c128
bar : 0x40c128

つまり fs に格納される関数は全て前半の for-range の中のインスタンス a に帰属するメソッドであり,そのインスタンス a の値は for-range の中で上書きされているのである。

じゃあどうすればいいかというと,一番簡単なのは for-range の中でインスタンス a のコピーを作ればよい。 具体的には以下のコードみたいな感じ。

func main() {
	as := []A{
		{"foo"},
		{"bar"},
	}
	fs := []func(){}
	for _ , a := range as {
        aa := a
        fs = append(fs, aa.GenFunc())
	}
	for _ , f := range fs {
		f()
	}
}

これで実行結果は

foo : 0x40c128
bar : 0x40c140

となる。 あるいは最初から素直に

func main() {
	as := []A{
		{"foo"},
		{"bar"},
	}
	fs := []func(){}
    for i := 0; i < len(as); i++ {
		fs = append(fs, as[i].GenFunc())
	}
	for _ , f := range fs {
		f()
	}
}

とすれば要らんコピーも発生せず,実行結果も

foo : 0x40a0e0
bar : 0x40a0e8

となる。

最初に紹介した記事にも書かれている通り,混ぜるから危険なのであって混ぜなければ大丈夫(笑)

参考図書

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan, Brian W. Kernighan
柴田 芳樹 (翻訳)
丸善出版 2016-06-20
Book 単行本(ソフトカバー)
ASIN: 4621300253, EAN: 9784621300251
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2018-10-20 (powered by amazon-item v0.2.0)

photo
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン, D.M. リッチー
石田 晴久 (翻訳)
共立出版 1989-06-15
Book 単行本
ASIN: 4320026926, EAN: 9784320026926
評価     

通称 “K&R”。その筋の人々には「バイブル」と呼ばれる名著(当時は)。

reviewed by Spiegel on 2018-12-07 (powered by amazon-item v0.2.0)


  1. 厳密には違う。つか,このコードを実際に書いて動かしてみれば分かるが “index out of range” の panic を吐いて落ちる。理由は各自で考えてみよう(笑) [return]

May 16 2019

Ubuntu に LibreOffice をインストールする3つの方法

いやぁ,まいった。 私はただ LibreOffice の文書ファイルに電子署名を付与したかっただけなのに,大事になってしまった。 忘れないうちにメモしておく。

UbuntuLibreOffice を導入する方法としては,主に以下の3つがある。

  1. APT を使ってインストールする
  2. Snap を使ってインストールする
  3. 公式サイトから deb パッケージ・ファイルを取ってきてインストールする。

これらはそれぞれ管理が独立しているため(あまりオススできないが)混在させることが可能である。

結論から言うと LibreOffice の全ての機能を支障なく使いたいなら公式サイトのパッケージを使いなはれ,である。

APT を使ってインストールする

というか Ubuntu をインストールすると最初から入っている LibreOffice がこれである。 Ubuntu のアップデート・ポリシーに則って運用されるため保守的なバージョン管理になっている。 それでも安定的な運用を求めるのであれば,こちらを選択するのは悪くない。

LibreOffice 6.0 以降では文書ファイルにデジタル署名と暗号化を施すことができるのだが, APT 版は OpenPGP の鍵をうまく認識でいないようだ。 Ubuntu では「パスワードと鍵(Seahorse)」というツールで鍵やパスワードを統合的に管理しているのだが,これとの連携がうまく行っていないように見える。

ちなみに APT 版を削除するには

$ suso apt remove libreoffice*

でいけるようだ。 パッケージをワイルドカードで指定するのがポイントである。

Snap を使ってインストールする

Snap は最近流行りのパッケージ管理ツールでディストリビューションから独立している点と,きめ細かいバージョン管理が可能である(パッケージによっては nightly ビルド等にも対応している)点が評価されている。 APT のようにローカルにデータベースを保持していないのでシンプルに運用できる。 Ubuntu には Snap が既定で導入されている。

Snap 版をインストールするには

$ suso snap install libreoffice

とすればよい。 削除するには

$ suso snap remove libreoffice

で OK。 ワイルドカード指定は不要である。

こちらも OpenPGP 鍵を認識できず,電子署名ができなかった。 APT 版も Snap 版も Canonical が運用・管理しているらしいのだが,セキュリティ方面には関心が薄いのだろう。 残念な話である。

公式サイトから deb パッケージ・ファイルを取ってきてインストールする

LibreOffice の公式サイトでは deb パッケージ形式でインストールファイルを公開していて,これをダウンロードしてインストールできる。

まず公式サイトから deb ファイルが同梱された *.tar.gz ファイルをダウンロードする。 たとえばこんなファイル名になっている。

  • LibreOffice_6.2.3_Linux_x86-64_deb.tar.gz

このファイルを適当な場所で展開すると LibreOffice_6.2.3_Linux_x86-64_deb/ ディレクトリが作成される。 LibreOffice_6.2.3_Linux_x86-64_deb/DEBS/ ディレクトリに降りると複数の deb ファイルがあることが分かるだろう。 基本的にはこれを全てインストールする。 全てのファイルに対していちいち gdebi コマンドを使うのはかったるいので

$ sudo apt install ./*.deb

で一気にインストールしてしまおう。 てか,この手が使えたのか。

これで導入した LibreOffice では英語とフランス語くらいしか対応していないため日本語パックとヘルプも導入する。 同じく公式サイトから以下の *.tar.gz ファイルをダウンロードする。

  • LibreOffice_6.2.3_Linux_x86-64_deb_langpack_ja.tar.gz
  • LibreOffice_6.2.3_Linux_x86-64_deb_helppack_ja.tar.gz

これらのファイルを適当な場所で展開して中に入っている deb ファイルを片っ端からインストールしていく。

削除する場合は

$ sudo apt remove libreoffice6.2* libobasis6.2*

のようにバージョンとワイルドカードを指定すること。

分かってますよ。 めがっさ面倒くさいです。 しかしこの公式版ならちゃんと OpenPGP 鍵を認識して電子署名も暗号化もできる。

日本でもメールにパスワード書くような悪習は早くなくしていきたいものである。

ブックマーク

参考図書

photo
暗号技術入門 第3版 秘密の国のアリス
結城 浩
SBクリエイティブ 2015-08-25 (Release 2015-09-17)
eBooks Kindle版
ASIN: B015643CPE
評価     

SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。

reviewed by Spiegel on 2015-09-20 (powered by amazon-item v0.2.0)

May 15 2019

Intel チップの Microarchitectural Data Sampling 脆弱性について

昨日あたりから Ubuntu security notices による Linux kernel 周りの脆弱性報告で騒がしいと思ったら Intel チップをターゲットとした新たなサイドチャネル攻撃が公開されたようだ。

割り振られている CVE 番号は以下の通り。

  • CVE-2018-12126:Microarchitectural Store Buffer Data Sampling (MSBDS)
  • CVE-2018-12127:Microarchitectural Fill Buffer Data Sampling (MFBDS)
  • CVE-2018-12130:Microarchitectural Load Port Data Sampling (MLPDS)
  • CVE-2019-11091:Microarchitectural Data Sampling Uncacheable Memory (MDSUM)

特に CVE-2018-12130 の方は “ZombieLoad Attack” として PoC (Proof of Concept) コードも公開されているようだ。

Ubuntu 19.04 の kernel (Linux kernel v5.0 系) も対象になっている。

もちろん Linux/Ubuntu だけでなく Windows や macOS などの主要 OS も影響を受ける。

一般的にサイドチャネル攻撃は前提条件が複雑で深刻度もそれほど高くならない。 今回も CVSSv3 で 3.8 から 6.5 程度のようだ(7 以上からが慌てるレベル)。 とはいえ PoC コードも公開されているし放置するわけにもいかないので,計画的にアップデートを行うことをお勧めする。

なお,ソフトウェア側の対応はあくまでも「緩和(mitigation)」なので,本格的な対応はハードウェア側で行う必要がある。 まぁ,可能ならパソコンは1,2年ほど買い控えたほうがいいかもねぇ。

そうそう。 Windows は MDS よりヤバい脆弱性があるみたいで

既にサポートが終了している WinXP まで適用されるとか,本当にご愁傷さまです(他人事)。

ブックマーク

ATOM v1.37 がリリースされた

ATOM エディタ v.1.37.0 がリリースされている。

ところで Ubuntu 環境では ATOM を自動更新してくれないようで, “About Atom” の画面に以下のメッセージが表示されている。

以前紹介したように deb ファイルをダウンロードして gdebi コマンドで上書きインストールしてもいいのだが,今回は以下のページで紹介されている方法を試してみよう。

まず,以前に gdebi コマンドでインストールしていたものは念の為に削除しておこう。

$ sudo apt remove atom

それから ATOM 用のリポジトリを登録する。

最初に ATOM 用のリポジトリのための公開鍵をインポートする。

$ wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -

次に /etc/apt/sources.list.d/ ディレクトリに ATOM 用のリポジトリを定義した atom.list ファイルを作成する。

$ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'

これでリポジトリの登録が完了する。 APT のデータベースをアップデートしておこう。

$ sudo apt update

ATOM の最新版がインストールできるか確認しておこう。

$ apt show atom
Package: atom
Version: 1.37.0
Priority: optional
Section: devel
Maintainer: GitHub <atom@github.com>
...

よしよし。 これで ATOM の最新版がインストールできる。

$ sudo apt install atom

ちなみにベータ版は

$ sudo apt install atom-beta

でインストールできるらしい。 いや,入れないよ。

May 14 2019

カレンダーに祝日を入れたいなら国立天文台へ行けばいいじゃない

前回のネタは個人的に色々と不本意だったので,今回は軽い小ネタで。 よく考えたらこの記事が今年初めての天文ネタだよ orz

という記事を見かけたのだが,日本の祝日は毎年国立天文台で発表してるんだから国立天文台のデータを使えばいいじゃない,と思ったり。

日本の暦は国立天文台暦計算室で見ることができる。 こんな感じのページ。

今月のこよみ powered by Google Calendar - 国立天文台暦計算室 今月のこよみ powered by Google Calendar - 国立天文台暦計算室

しかも Google カレンダーへインポート可能で,上のページの「+Google Calendar」の部分をクリックすれば自身の Google カレンダーにインポートできる。

祝日だけでなく二十四節気や朔望月,あるいは日食・月食といった情報が取得できる。 必要に応じてオン・オフを切り替えればいいだろう。

なお,上記データで見れるのは「祝日および休日」で「祭日」のデータはない。 つか,祭日は国家が規定するものではないので,あるわけないのだが。 祭日が知りたければ高島暦とかを購入することをオススメする(笑)

ちなみに国立天文台では毎年2月1日に翌年の「暦要項」が官報で発表される。

日本の暦はこれが国家公式データである。

参考図書

photo
平成31年神宮館高島暦
神宮館編集部
神宮館 2018-07-10 (Release 2018-10-22)
eBooks Kindle版
ASIN: B07JKP4CG8

Kindle 版があるのか。思ったよりデジタル化が進んでるんだな(笑) 昔は親が毎年買っていたのだが近年は実家で見かけないな。

reviewed by Spiegel on 2019-05-14 (powered by amazon-item 0.2.1)

photo
天体の位置計算
長沢 工
地人書館 1985-09-01
Book 単行本
ASIN: 4805202254, EAN: 9784805202258
評価     

B1950.0 分点から J2000.0 分点への過渡期に書かれた本なので情報が古いものもあるが,基本的な内容は位置天文学の教科書として充分通用する。

reviewed by Spiegel on 2018-10-20 (powered by amazon-item v0.2.0)

May 12 2019

2019-05-12 のブックマーク

リリース情報

バベルのインターネット

セキュリティ&プライバシー関連

知財関連

Linux または Ubuntu に関する話題

その他

May 11 2019

これがオリンピック効果というやつか

今年は時事ネタは控えめにしようと思っているのだが,なんか微妙に反応があるみたいだし,鮮度が落ちないうちにブログに書いておくか。

私が気がついたのは福井健策さんによる以下の tweet だった。

なんちうか「利用規約」が8章51条もある時点で(human-readable でないという意味で)時代遅れにも程があると思うが,件の「東京2020チケット購入・利用規約」の文言はこれ。

3.チケット保有者は、会場内において、写真、動画を撮影し、音声を録音することができます。また、チケット保有者は、IOCが、これらのコンテンツに係る知的財産権(著作権法第27条および第28条の権利を含みます。)について、チケット保有者もしくはその代理人に対する金銭の支払や、これらの者から別途許諾を要することなく、単独で権利を保有することに同意し、さらにチケット保有者は、これらのコンテンツについて保有する一切の権利(著作権法第27条および第28条の権利を含みます。)をIOCに移転するとともに、その著作者人格権を行使しないことに同意します。
via 東京2020チケット購入・利用規約

ちなみに「著作権法第27条および第28条の権利」というのは「二次的著作物の作成に関する権利」および「二次的著作物の利用に関する原著作者の権利」を指す。 その上で4項

4. IOCは、前項を前提としたうえで、チケット保有者が会場内で撮影・録音したコンテンツを個人的、私的、非営利的かつ非宣伝目的のために利用することができる制限的かつ取消可能な権利を、チケット保有者に対して許諾します。ただし、チケット保有者は、会場内で撮影または録音された動画および音声については、IOCの事前の許可なく、テレビ、ラジオ、インターネット(ソーシャルメディアやライブストリーミングなどを含みます。)その他の電子的なメディア(既に存在するものに限らず将来新たな技術により開発されるものを含みます。)において配信、配布(その他第三者への提供行為を含みます。)することはできません。
via 東京2020チケット購入・利用規約

を規定している。

つまり「会場」内で作成されたあらゆるコンテンツの権利は IOC (International Olympic Committee) に帰属し,その利用権を(事後に取り消し可能とした上で)本来の著作者に「許諾する」としたわけだ。 しかも財産権の譲渡(移転)と人格権の不行使は無償かつ排他的に行われることを(チケットと引き換えに)強要しているわけだ。 チケットを高額で売りつけた上に権利まで奪うとか何処のジャイアンだよ。

とはいえ,昔はこういう「ライセンス」は普通にあった。 特にブログ勃興期のゼロ年代前半ではこの手のジャイアニズムが横行し,大きな批判を浴びていた。

「著作権」がコンテンツホルダー同士を調停するための手段であった20世紀までならこういう規約も有効だったかもしれないが(今でもコンテンツホルダー同士では有効らしいw),今はネット上のあらゆるコミュニケーションが「創作」「創造」とセットになっていて,それを権利を奪う形で禁止するというのはまさに「表現の自由の侵害」であろう。

とはいえ,向こうさんも商売(興行)でやっていて,特に「放映権」は重要な商売道具なのだから,それをコントロールできないのは困るというのはよく分かる。 実際に音楽ライブでも撮影や録音およびそれらを公開する行為を禁じているところは多い。 それの延長線上と考えればオリンピックの様子を勝手に撮影・録音し公開することを禁じること自体はそれほど無茶な「要求」とは思えない。

要するに,それを著作者の権利を奪う形で「実装」しているというのが問題なわけだ。 「要求」がまともでも「実装」がクソというのはよくある話である。

ところがここでピントはずれなヤツが出てくるのだ。

会場内で撮影した動画は思い出の記録としてSNSにも投稿しておきたい……と思ってしまいそうですが、この規約は実際どういった運用になるのでしょうか。
via 五輪会場で撮影した動画はSNS投稿できない? 東京五輪のチケット規約が話題、組織委員会に見解を聞く - ねとらぼ

ツッコむのそこかよ orz

オリンピック礼賛も大概にせーよ! ホンマ,冬眠ならぬ夏眠してる間にオリンピック終わってるとかならないかな。 やりたいやつだけが誰も知らないところでひっそりとやればいい。 それならこんな馬鹿げた規約も不要だろう。

もう馬鹿すぎて怒る気にもならない。 これがオリンピック効果というやつか。

参考図書

photo
著作権法 第2版
中山 信弘
有斐閣 2014-10-27
Book 単行本
ASIN: 4641144699, EAN: 9784641144699
評価     

興味本位で買うには少々お高いので図書館で借りて読んだ。大学とかで専門の教科書にもなっているそうな。独学で読むにはヘヴィな内容だが一度は目を通しておきたい一冊。

reviewed by Spiegel on 2019-05-11 (powered by amazon-item 0.2.1)

大久保ゆうさんも翻訳に参加されている「ヒトラーと哲学者」を県立図書館で発見。お値段高め躊躇してたんだ
県立図書館の子供向け書架で発見「数学を嫌いにならないで」。「数学ガールの秘密ノート」シリーズもここに並ぶと面白いのにねぇ
松江城のお堀の遊覧船

May 10 2019

Advanced Package Tool に関する覚え書き

先日 Firefox がやらしたじゃないですか。

証明書の期限切れでアドオンが全部排除されるというバグとしてはありがちなやつなんだけど, Mozilla が改修版(v66.0.4)を出してから UbuntuAPT でアップデートできるようになるまで概ね2日ほどかかってるのよ。

今回の件で自機でのアプリケーションあるいはパッケージ管理について,ちょっと考えてしまった。 そこでまずは APT について調べ直すところから始めることにした。

dpkg と Advanced Package Tool

皆さんご存知の通り UbuntuDebian から fork したディストリビューションでアプリケーション管理も Debian のものを踏襲している。

アプリケーションのビルド済みバイナリや関連ファイルにバージョン情報や依存情報等のメタデータを付加したものを(ar/tar/gzip/bzip2 などで)ひとまとめにしたものを「パッケージ」と呼ぶ。 Debian/Ubuntu では .deb の拡張子が付いたファイルがそのパッケージファイルで,パッケージファイルを利用するためのツールが dpkg である。

ただし dpkg にはプリミティブな機能しかないため一般のユーザが dpkg をそのまま使うことはまずない。 一般ユーザ用のフロントエンド(のひとつ)が APT (Advanced Package Tool) ということになる。

APT はバックエンドにパッケージ管理用のデータベースを持っていて1,このデータベースをもとにパッケージ間の依存関係を維持しながら可能な限り自動で導入や削除を行おうとする。

したがってデータベースにないパッケージは APT では導入できない。 この場合は以下の3つの手段をとることができる。

  1. サードパーティのリポジトリを登録して APT から導入できるようにする
  2. deb ファイルを使って直接インストールする
  3. ビルド済みバイナリを直接展開して導入する。またはソースファイルから直接ビルドを行う

Ubuntu パッケージのリリースサイクル

Ubuntu は概ね半年ごとにアップグレードされ,リリース時の年月がそのままバージョン番号になっている。 たとえば先日2019年4月にリリースされたバージョンには 19.04 が振られている。

Ubuntu に収録されるパッケージは OS リリース時にバージョンが固定され重大な不具合や脆弱性が発覚しない限り更新されることはないようだ。 先日の Firefox の件はむしろ例外的に早い対応だったということになる。

しかし,昨今は活況なソフトウェアほどリリースサイクルが短い傾向があり半年というタイムスケールでは追いつかないことも多い。 自身でリスクを引き受けてでも APT による管理を離れて自前で最新バージョンを維持したいという要求もあると思う。

つまり APT で管理可能なパッケージについても

  1. APT で導入する
  2. deb ファイルを使って直接インストールする
  3. ビルド済みバイナリを直接展開して導入する。またはソースファイルから直接ビルドを行う

という3つの手段をとり得るわけだ。

そこで以降からは管理方法毎によく使うパッケージを分類してみる。 なお,この分類は私の独断と偏見に依る部分が大きいので,他の人にはあまり参考にならないであろう点は先に誤っておく。 ゴメンペコン。

公式リポジトリから APT を使って管理するパッケージ

セキュリティ関連ツールなのでしょうがない

以下のパッケージはセキュリティ関連ツールで,これらに依存するパッケーも多く,特に保守的な運用になっているようだ。 したがって安定的な運用を優先し APT による管理とする。

製品名 パッケージ名 備考 GnuPG gnupg 既定でインストール済 OpenSSH openssh-client クライアント側。既定でインストール済 OpenSSL openssl 既定でインストール済

以下も参考にどうぞ

APT に任せて安心なパッケージ

以下は何も考えずに APT に任せても大丈夫だろう。

製品名 パッケージ名 備考 Thunderbird thunderbird 既定でインストール済 LibreOffice libreoffice 既定でインストール済 ifconfig net-tools 2 何故か既定で入ってなかった curl curl 何故か既定で入ってなかった OpenJDK openjdk-12-jre JRE のみの場合。バージョンごとにパッケージ名が異なるので注意(左は Java 12 の場合) KDiff3 kdiff3 Graphviz graphviz vim vim 既定で入ってるのは vim-tinyvim を入れると置き換わる BOINC boinc-client, boinc-manager クライアント側 KeePass keepass2 あらかじめ Mono がインストールされていること

その他

依存関係とか導入手順とかが複雑で自前で管理するのが面倒くさい,て感じのパッケージ。

製品名 パッケージ名 備考 GCCbuild-essential 何故か 18.10 には既定で入ってなかった CIFS Client cifs-utils 導入方法は拙文を参照のこと ClamAV clamav, clamav-daemon 導入方法は拙文を参照のこと

サードパーティ・リポジトリから APT を使って管理するパッケージ

Git

公式リポジトリでも導入可能だが最新版が欲しかったので PPA のリポジトリを使うことにした。 詳しくは

を参照のこと。

Mono

インストールにはサードパーティ・リポジトリの登録と署名検証用の公開鍵の取得が必要。 詳しくは

を参照のこと。

deb ファイルを使って直接インストールする

deb ファイルを使って直接インストールするには gdebi を使うのがオススメである。 導入は APT からできる。

$ sudo apt install gdebi-core

これで

$ sudo gdebi foo.deb

とすれば依存パッケージも含めてインストールしてくれる。 内部で APT のデータベースを使ってるのかな。

自前で導入する場合は最新バージョンに常に注意すること。

ATOM エディタ

リリースページ から最新版の atom-amd64.deb ファイルをダウンロードしてインストールする。

$ sudo gdebi ./atom-amd64.deb

詳しくは

を参照のこと。

Hugo

いや,シングルバイナリで依存関係も殆どないので deb ファイルからインストールする必然性は微塵もないのだが,どうも APT からインストールできるパッケージが全く追従できてないみたいなので。

リリースページから最新版の deb ファイルを取ってきてインストールすればよい。

$ sudo gdebi ./hugo_0.55.5_Linux-64bit.deb

もうひとつの LibreOffice

LibreOffice については安定版が APT で取得可能で既定で入っているのだが,ダウンロードページから deb ファイルを取ってきてインストールする方法もある。 この場合 APT 管理のバージョンと混在になってしまうので注意が必要である。

実はどうするか悩み中。

ビルド済みバイナリを直接展開して導入する

自前で導入する場合は最新バージョンに常に注意すること。

Go コンパイラ

Go コンパイラ自体は APT でも導入可能だが,お互いのリリースタイミングが悪いのか2世代もバージョンが古い。 これでは使いものにならないので(Go コンパイラの公式サポートは1世代前まで),ダウンロードページから go1.xx.x.linux-amd64.tar.gz ファイルを取ってきて任意の場所に展開して使う。

$ cd /usr/local/src
$ sudo curl https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz -O
$ cd ..
$ unlink go # 以前の Go が入っている場合
$ sudo tar xvf src/go1.12.5.linux-amd64.tar.gz
$ sudo mv go go1.12.5
$ sudo ln -s go1.12.5 go
$ ./go/bin/go version
go version go1.12.5 linux/amd64

bin/ ディレクトリにはパスを通しておけば大丈夫。

FileZilla

これも APT で導入可能なのだが,だいぶバージョンが古いので,ダウンロードページから取ってきたファイルを展開して使うことにする。

$ cd /usr/local/
$ sudo tar xvf src/FileZilla_3.42.1_x86_64-linux-gnu.tar.bz2
$ sudo chown -R root:root FileZilla3

chown でオーナーを変えるのを忘れないように。

Git Extensions

Mono がインストールされていることが前提。 詳しくは

を参照のこと。

TeX Live

TeX Live に関しては(大量のパッケージがあるため)最新の環境が必要ないのであれば APT を使うほうがオススメである。

$ apt show texlive
Package: texlive
Version: 2018.20190227-1
Priority: optional
Section: universe/tex
Source: texlive-base
Origin: Ubuntu
...

が,やっぱり最新の環境がほしいので手動でインストールすることにした。

手動でインストールする場合はインストーラ install-tl を使う。 TeX Live 内の各パッケージの更新には tlmgr を使う。

$ sudo tlmgr update --self --all

詳しくは

を参照のこと。

ソースファイルから直接ビルドを行う

自前で導入する場合は最新バージョンに常に注意すること。

pgpdump のビルド

実は APT で導入できるっぽいのだが,自作の gpgpdump の動作確認用にリファレンス実装として最新版が必要なのよ。 GCC 等のツールチェーンがあれば簡単にビルドできる。

リポジトリからソースコードを取ってきて

$ ./configure 
$ make

でビルドできる。 なお圧縮パケットの解凍に bz2 が必要な場合は APT でパッケージ libbz2-dev をあらかじめインストールしておくこと。

git-credential-libsecret のビルド

git-credential 用に git-credential-libsecret をビルドする。

libsecret 自体のインストールは APT で行う。

$ sudo apt install libsecret-1-dev libgnome-keyring-dev

これで展開されるソースコードを適当な場所にコピーしてビルドする。

$ cp -r /usr/share/doc/git/contrib/credential/libsecret ~/work
$ cd ~/work/libsecret
$ make
gcc -g -O2 -Wall  -pthread -I/usr/include/libsecret-1 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -o git-credential-libsecret.o -c git-credential-libsecret.c
gcc -o git-credential-libsecret  git-credential-libsecret.o -lsecret-1 -lgio-2.0 -lgobject-2.0 -lglib-2.0

ビルドした git-credential-libsecret をパスの通ったディレクトリに入れれば完了。

ブックマーク


  1. /etc/apt/ ディレクトリ以下のファイル群がそれ。このうち sources.listUbuntu 公式のパッケージ・リポジトリを定義したファイルである。またサードパーティのリポジトリは /etc/apt/sources.list.d/ ディレクトリに *.list ファイルで設定可能である。 [return]
  2. パッケージ net-tools をインストールすると ifconfig のほかに arp, netstat, rarp, nameif, route といったツールがインストールされる。 [return]

May 09 2019

今日も大過なく過ごせました。沈む太陽に合掌。

May 08 2019

.NET 統合に関するブックマーク

いよいよ Microsoft による .NET 統合の動きが本格化しそうである。 めでたい!

個人的には Mono 上で動くアプリケーションがどうなるか気になるところであるが

Mono is the original cross-platform implementation of .NET. It started out as an open-source alternative to .NET Framework and transitioned to targeting mobile devices as iOS and Android devices became popular. Mono is the runtime used as part of Xamarin.
[...]
Taken together, the .NET Core and Mono runtimes have a lot of similarities (they are both .NET runtimes after all) but also valuable unique capabilities. It makes sense to make it possible to pick the runtime experience you want. We’re in the process of making CoreCLR and Mono drop-in replacements for one another. We will make it as simple as a build switch to choose between the different runtime options.
via Introducing .NET 5

.NET 5 のリリース自体は来年(2020年)なのでノンビリと成り行きを見守ることにしよう。 Go 言語か Kotlin が .NET をサポートすれば完璧なのだが(笑)

以降では .NET 5 関連のブックマークを挙げていく。 随時更新する予定なのであしからず。

May 07 2019

Go 1.12.5 がリリースされた

Go 1.12.5 がリリースされた。 セキュリティ・アップデートはなし。

go1.12.5 (released 2019/05/06) includes fixes to the compiler, the linker, the go command, the runtime, and the os package. See the Go 1.12.5 milestone on our issue tracker for details.
via Release History - The Go Programming Language

ちなみに Ubuntu の APT (Advanced Package Tool) で Go コンパイラをインストールすると2世代も古いのが入る(モジュール・モードが使えないしサポートからも外れていると思う)。

$ apt show golang
Package: golang
Version: 2:1.10~4ubuntu1
Priority: optional
Section: devel
Source: golang-defaults
Origin: Ubuntu
...

ちうわけでダウンロードページから go1.12.5.linux-amd64.tar.gz とかを取ってきて任意の場所に手動で展開するほうが吉である。 たとえば,こんな感じ。

$ cd /usr/local/src
$ sudo curl https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz -O
$ cd ..
$ unlink go # 以前の Go が入っている場合
$ sudo tar xvf src/go1.12.5.linux-amd64.tar.gz
$ sudo mv go go1.12.5
$ sudo ln -s go1.12.5 go
$ ./go/bin/go version
go version go1.12.5 linux/amd64

これで /usr/local/go/bin にパスを通してやればよい。 たとえば /etc/profile.d ディレクトリに golang-bin-path.sh とかいった名前でファイルを作って(名前は適当)

# shellcheck shell=sh

# Expand $PATH to include the directory where golang applications go.
golang_bin_path="/usr/local/go/bin"
if [ -n "${PATH##*${golang_bin_path}}" -a -n "${PATH##*${golang_bin_path}:*}" ]; then
    export PATH=$PATH:${golang_bin_path}
fi

とでも書いておけば次回ログイン時にはパスが通っている。

$ go version
go version go1.12.5 linux/amd64

環境変数については GO111MODULE 以外は設定する必要はない。 ちなみに GOPATH は既定で

$ go env | grep GOPATH
GOPATH="/home/username/go"

となっている。

参考図書

photo
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan, Brian W. Kernighan
柴田 芳樹 (翻訳)
丸善出版 2016-06-20
Book 単行本(ソフトカバー)
ASIN: 4621300253, EAN: 9784621300251
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2018-10-20 (powered by amazon-item v0.2.0)

Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!

Schweinderl