テキストエディタAtomで『tunneling socket could not be established, statusCode=407』エラー
Atomを使用したくてインストールしたのですが、Proxy環境でパッケージをインストール使用とすると下記エラーメッセージが出力され、パッケージをインストールすることができません。
Searching for “japanese” failed.Hide output… tunneling socket could not be established, statusCode=407
日本語化のパッケージをインストールしようとしたのですが、上記エラーでインストールができませでした。。。
なにやら調べて見るとProxy環境ではProxyの設定が必要となるようなので、下記手順を実施しました。
type nul > .apmrc
といった感じでファイルを作成します。
- 1で作成したファイルに下記を書き込む。
http-proxy = http://(ユーザ名):(Password)@(Proxyサーバアドレス):(Port番号) https-proxy = http://(ユーザ名):(Password)@(Proxyサーバアドレス):(Port番号) strict-ssl = true
これでProxy環境の設定が整ったので、再度パッケージをインストールしようとしましたが、上記エラーメッセージが出力されてしまいインストールすることができませんでした。
ちゃんとProxy環境が設定されているか確認するため、Atomのapmコマンドを使用して設定状況を確認したところ、@マーク(アットマーク)がパスワードに入っている場合、文字がエンコードされてしまい、正しく認識されていませんでした。
設定確認コマンド
apm config list
ちなみにコマンドのありかは、C:\Users(ユーザ名):\AppData\Local\atom\binになります。
コマンド実行結果
; userconfig C:\Users\(ユーザ名)\.atom\.apmrc http-proxy = "http://(ユーザ名):*@*******@(Proxyサーバアドレス):(Port番号)" https-proxy = "http://(ユーザ名):*%40*******@(Proxyサーバアドレス):(Port番号)" strict-ssl = false
そこでパスワードを@マークが入っていないものに変更し再度パッケージをインストールをしようとしたところ、やっぱり同じエラーでパッケージをインストールすることができませんでした。
この事象はどうやらAtomのバグのようで、Proxy設定を正しくしていてもGUIでパッケージをインストールしようとすると、発生することがあるようなので、もうapmコマンドで対象のパッケージのインストールを試してみました。
日本語化パッケージのインストールコマンド例
C:\Users\(ユーザ名)\AppData\Local\atom\bin>apm install japanese-menu Installing japanese-menu to C:\Users\(ユーザ名)\.atom\packages done
コマンドでなんとかパッケージをインストールすることができました。
Atomを使用していて同じエラーの方がいらっしゃたら、コマンドでのパッケージインストールを試してみてください。
関連記事です。
【レビュー】マウスが欲しかったので『Magic Mouse 2』を買いました
普段MacBook Proを使用しているのですが、これまでマウスなしで利用していました。
いろいろPCを操作してく上で、やっぱりマウスないと不便なので、良いマウスないかなーと思って調べてみると、やっぱり『Magic Mouse 2』の評価が高かったので、購入しました。
箱を開けるとこんな感じです。
輝いてますねぇ。
MacBook ProにUSBで繋ぐと自動的にペアリングするということなので、早速接続して各種設定を行ってみました。
設定は、「システム環境設定」−「マウス」で設定できます。
設定画面はこんな感じです。
とりあえず、『Magic Mouse 2』の機能をフルで使用したいので、すべてにチェック入れます。
あと、軌跡の速さがデフォルトだとまあまあ遅いので、MAXにします。
「その他のジェスチャ」もすべてにチェック入れます。
早速使ってみたところ、超便利!
画面の縦スクロールも指1本で縦になでるだけで、スムーズにできるし、2本指でダブルタップするとアプリケーションの切り替えも簡単にできるし、かなり便利です!
個人的には、軌跡の速さがもっと速い方が良かったですが、それでもそんなにストレスなく使えます。
電源についても電池式ではなくて、充電式なところもかなり良いです。
電池がなくなったら、『Magic Mouse 2』の裏側にライトニングケーブルを刺せば充電できるので、かなり便利です。
2時間充電で約1ヶ月使用できるとのことなので、かなり良いです。 これで電池を買う手間が省けます。
『Magic Mouse 2』のジェスチャに慣れるにはしばらく時間がかかりそうですが、使い込んで早く慣れたいと思います。
8,800円と結構高いですが、今の所結構満足しています。
気になるのはバッテリーがどれくらいで劣化するのかが、気になるところなので、今後追記していきたいと思います。
rTorrentの脆弱性を狙った攻撃をキャッチ
最近DASAN Network Solutionsのホームルーターの脆弱性やWebLogicの脆弱性を狙った攻撃ばかりで、つまんないなーと思いながらハニーポットのログを見ていたら、見慣れないログを見かけたので、ご紹介します。
そのログはこんな感じのログです。
POST /RPC2 HTTP/1.1 Content-Length: 107 Content-Type: text/xml Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0 <?xml version='1.0'?> <methodCall> <methodName>download_list</methodName> <params> </params> </methodCall>
これは、rTorrentというBitTorrentクライアントのソフトウェアを狙った攻撃になります。
そもそもBitTorrentとは
BitTorrent(ビットトレント)は、ブラム・コーエンによって開発された、Peer to Peerを用いたファイル転送用プロトコル及びその通信を行うソフトウェアである。 BitTorrent - Wikipedia
ということで、P2Pを利用したファイル転送ソフトで、僕は初めて知りました。 どんな用途で使用されているのかは今度調べたいと思います。
rTorrentの中でもHTTPを使用して、XMLによるRPCプロトコルを許可している場合に上記コードにより攻撃を受けてしまうそうです。
XML-RPC通信を許可しているrTorrentの場合、攻撃者は上記のリクエストを投げると、下記のようなダウンロードリストのハッシュを200で受け取ります。
(画像印象:rTorrent Client Exploited In The Wild To Deploy Monero Crypto-Miner)
その後、別のPOSTリクエストでマイン二ング用のツールを配置するようなリクエストを投げてくるそうです。
(画像印象:rTorrent Client Exploited In The Wild To Deploy Monero Crypto-Miner)
こんな簡単にマイニング用のツールを配置できちゃうなんて怖い。。。
ある攻撃者はこの攻撃で3,900ドル(約43万円)も稼いでいるとのことで、すげぇ。。。
参考サイト f5.com
Linuxのタスクスケジューラーの切り替えを覗いてみた(SystemTap)
Linuxカーネスソースを読む環境は準備できたのですが、どこから手をつけたら良いか分からないので、カーネルの動きを確認できるSystemTapという機能を使用して、遊んでみようと思いました。
まずはLinuxカーネルのタスクスケジューラ機能がどのようにタスクを切り替えているのかsched_switch.stpというスクリプトを使用して覗いてみようと思います。
sched_switch.stpスクリプトはこちらのサイトからダウンロードします。
PCにダウンロードして、サーバにアップロードするのはめんどうなので、wgetコマンドで適当なディレクトリに配置します。
# wget http://sourceware.org/systemtap/examples/profiling/sched_switch.stp
そして下記コマンドを実行します。
# stap ./sched_switch.stp
すると下記のログが出力されます。
各カラムの説明をすると、
1列目:プロセス名 2列目:CPU識別子 3列目:実行時間 4列目:プロセスID 5列目:優先度
といった情報を確認することができます。
僕のサーバはCPUを1コアしか積んでいないので、CPU識別子が全て0となっていますが、複数コアがある場合はこちらの数が増えます。
ログを見ると、物凄い短い時間でプロセスを切り替えていることが分かります。
もしタスクの切り替えが上手くいっておらず、性能がでないという状況になった場合は、上記のsched_switch.stpスクリプトを使用してどのプロセスがボトルネックになっているか分かるかと思います。
他にもSystemTapのサイトではおもしろそうなスクリプトがたくさんあるので、遊び倒したいと思います。
Linuxカーネル・ソースを読むための準備した
前回の続きです。
今回はカーネル・ソースを実際に読めるようなところまでの手順をご紹介したいと思います。
SRPMファイルのダウンロード
普通状態であれば、OSにはソースコードは付いてこないので、SRPMファイルというファイルをダウンロードして、インストールする必要があります。
まずは適切なバージョンのSRPMファイルをwget等でダウンロードします。
[root@localhost tmp]# wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/source/SRPMS/k/kernel-3.11.10-301.fc20.src.rpm --2018-05-16 12:55:14-- http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Fedora/source/SRPMS/k/kernel-3.11.10-301.fc20.src.rpm Resolving archives.fedoraproject.org (archives.fedoraproject.org)... 209.132.181.25, 209.132.181.23, 209.132.181.24 Connecting to archives.fedoraproject.org (archives.fedoraproject.org)|209.132.181.25|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 75668415 (72M) [application/x-rpm] Saving to: ‘kernel-3.11.10-301.fc20.src.rpm’ 100%[======================================>] 75,668,415 1.39MB/s in 60s 2018-05-16 12:56:16 (1.19 MB/s) - ‘kernel-3.11.10-301.fc20.src.rpm’ saved [75668415/75668415]
SRPMインストール
続いてrpmコマンドを使用して、インストールします。
[root@localhost tmp]# rpm -ivh kernel-3.11.10-301.fc20.src.rpm warning: kernel-3.11.10-301.fc20.src.rpm: Header V3 RSA/SHA256 Signature, key ID 246110c1: NOKEY Updating / installing... 1:kernel-3.11.10-301.fc20 ################################# [100%]
カーネル・ソースの展開
インストールが終わったら、~/rpmbuild/SPECS/にkernel.specが作成されます。
そのままではカーネルのソースコードは、まだ展開されていない状態になります。
ので、rpmbuildコマンドを使用して展開する必要があります。
[root@localhost tmp]# cd ~/rpmbuild/SPECS/ [root@localhost SPECS]# ls kernel.spec [root@localhost SPECS]# rpmbuild -bp kernel.spec -bash: rpmbuild: command not found
んっ!?
コマンドが見つからない!?
どうやらrpmbuildコマンドが導入されていないようでしたので、インストールします。
[root@localhost SPECS]# [root@localhost SPECS]# yum install rpm-build Dependency Updated: elfutils-libelf.x86_64 0:0.161-6.fc20 rpm-build-libs.x86_64 0:4.11.3-3.fc20 rpm-libs.x86_64 0:4.11.3-3.fc20 rpm-python.x86_64 0:4.11.3-3.fc20 Complete!
これで実行できるので、コマンドを実行します。
[root@localhost SPECS]# rpmbuild -bp kernel.spec warning: line 517: Invalid version (double separator '-'): elfutils-0.153-1: BuildRequires: rpm-build >= 4.9.0-1, elfutils >= elfutils-0.153-1 error: Failed build dependencies: m4 is needed by kernel-3.11.10-301.fc20.x86_64 gcc >= 3.4.2 is needed by kernel-3.11.10-301.fc20.x86_64 hmaccalc is needed by kernel-3.11.10-301.fc20.x86_64 bc is needed by kernel-3.11.10-301.fc20.x86_64 xmlto is needed by kernel-3.11.10-301.fc20.x86_64 asciidoc is needed by kernel-3.11.10-301.fc20.x86_64 elfutils-devel is needed by kernel-3.11.10-301.fc20.x86_64 zlib-devel is needed by kernel-3.11.10-301.fc20.x86_64 binutils-devel is needed by kernel-3.11.10-301.fc20.x86_64 newt-devel is needed by kernel-3.11.10-301.fc20.x86_64 python-devel is needed by kernel-3.11.10-301.fc20.x86_64 perl(ExtUtils::Embed) is needed by kernel-3.11.10-301.fc20.x86_64 bison is needed by kernel-3.11.10-301.fc20.x86_64 audit-libs-devel is needed by kernel-3.11.10-301.fc20.x86_64 pciutils-devel is needed by kernel-3.11.10-301.fc20.x86_64 pesign >= 0.10-4 is needed by kernel-3.11.10-301.fc20.x86_64
んっ!?
どうやら必要なパッケージがあるようなので、それぞれ表示されているパッケージをyumコマンドでインストールしていきます。
インストール完了後の確認
rpmbuild コマンドでのインストールが完了すると、~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.fc20.x86_64/配下にソースコードが作成されていることがわかります。
[root@localhost SPECS]# cd ~/rpmbuild/BUILD/kernel-3.11.fc20/linux-3.11.10-301.fc20.x86_64/ [root@localhost linux-3.11.10-301.fc20.x86_64]# ls arch config-powerpc64 fs REPORTING-BUGS block config-powerpc64p7 include samples config-arm64 config-powerpc-generic init scripts config-arm-generic configs ipc security config-armv7 config-s390x Kbuild sound config-armv7-generic config-x86-32-generic Kconfig temp-arm64 config-armv7-lpae config-x86_64-generic kernel temp-armv7 config-debug config-x86-generic lib temp-armv7-lpae config-generic COPYING MAINTAINERS temp-x86-32 config-i686-PAE CREDITS Makefile temp-x86-64 config-local crypto merge.pl tools config-nodebug Documentation mm usr config-powerpc32-generic drivers net virt config-powerpc32-smp firmware README
Makefileの冒頭部分を確認するとちゃんと想定したバージョンのカーネルのソースコードであることがわかります。
[root@localhost linux-3.11.10-301.fc20.x86_64]# head Makefile VERSION = 3 PATCHLEVEL = 11 SUBLEVEL = 10 EXTRAVERSION = NAME = Linux for Workgroups # *DOCUMENTATION* # To see a list of typical targets execute "make help" # More info can be located in ./README # Comments in this file are targeted only to the developer, do not
このままでもソースコードの閲覧はできるのですが、このままだと閲覧しにくいので、タグ・ジャンプ機能を使用できるようにするため、下記コマンドを実行して、タグファイルを作成します。
find `pwd` -type f -name "*.[ch]" -o -name "*.[sS]" | sed -e 's/^/"/' -e 's/$/"/' | xargs /usr/bin/ctags -a
こうすることで、関数の呼び出し元を閲覧しやすくなります。
例えば、
vim -t printk
とすると、一気に/kernel/printk/printk.cまでジャンプすることができます。
これでカーネルのソースコードを読む準備ができたので、せっせと読んでいきたいのですが、量が多すぎて、どこから手をつけようかと迷っています。笑
Vagrantでカーネル・ソースを読むための環境を整える
Linuxのカーネル・ソースを読みたくて、その環境をどこかで構築したいと思っていたのですが、AWSだと料金がかかるので、Vagrantを使ってサクッと環境構築してみました。
Vagrantは以前から利用しているのですが、しばらく使用しないでいるとコマンドを忘れてしまうので、備忘になります。
1. Boxを取得
まずは下記コマンドでBoxという仮想マシンのテンプレートファイルを取得します。
vagrant box add <box_name> <box_url>
今回はFedoraを使用したかったので、下記コマンドをたたきました。
vagrant box add fedora64 http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_fedora-20_chef-provisionerless.box
Boxはこちらのサイトを参考に選びました。 A list of base boxes for Vagrant - Vagrantbox.es
2. 仮想マシン用のディレクトリ作成
mkdir <directory_name> cd <directory_name>
3. 仮想マシン初期化
下記コマンドを使用して仮想マシンを初期化します。
vagrant init <box_name>
今回はBox名にfedora64という名前をつけたので、下記コマンドを実行します。
vagrant init fedora64
4. 仮想マシンを起動&接続
初期化ができたら、起動してみます。
起動は下記コマンドでサクッとできます。
vagrant up
5. 仮想マシンへの接続
起動が完了したら、仮想マシンへの接続は下記コマンドを実行します。
vagrant ssh
これで一応仮想マシンが立ち上がり、ログインまでできました。
今後はこの環境を使用してカーネル・ソースを読んでいきたいと思います。
その他のコマンド
仮想マシンの状態確認
vagrant status
仮想マシンの停止
vagrant halt
仮想マシンの再起動
vagrant reload
仮想マシンの削除
vagrant destroy
【読書メモ】『はじめてのパターン認識』で挫折したところ
機会学習の勉強会やブログなどで、よく紹介されている『はじめてのパターン認識』を読んでみたのですが、僕には3000年くらい早かったらしく挫折したので、どんなところでつまずいたのか備忘のため、残しておきたいと思います。
- 作者: 平井有三
- 出版社/メーカー: 森北出版
- 発売日: 2012/07/31
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 7回
- この商品を含むブログ (5件) を見る
数学の記号が難しい
僕は文系ということもあって、数学2B程度の知識しか持っていないのですが、この本では行列がたくさん出てきて、行列をあまり扱ったことがない僕にとっては、かなり難易度が高かったです。
また、見慣れない記号がたくさん出てきて、数式の意味が分からないところが多かったです。
自分の数学力のなさに凹みました。。。
このあたりは機会学習を学ぶにあたり必須の知識だと思いますので、少しずつなれていきたいと思います。
用語が難解
『はじめてのパターン認識』は筑波大学名誉教授の平井有三さんが著者ということもあって、数学をきちんと学んだ大学生向けの内容となっているのかなと感じました。
数学2Bまでしか学んでいない僕にとっては、聞きなれない用語がたくさんあって、つまずくことが多かったです。
備忘のため僕が現時点で理解できなかった用語をまとめました。 (知っている人からするとそんなことも知らないのかよと怒られるかもしれません。。。)
第2章までは、なんとなく理解できたので、第3章以降で理解できなかった用語を挙げていきます。
第3章
- ベイズの識別規則
- 尤度
第4章
- 正規直行基底
- 回転行列
- 無相関化
- 白色化
第5章
- ボロノイ領域
- ボロノイ境界
- ベイズ誤り率
- 漸近仮定
第6章
- 正規方程式
- フィッシャーの基準
- 一般化固有値問題
- 判別分析法
- ロジスティック回帰
第7章
- 誤差逆伝播法
- 固定増分誤り訂正法
- パーセプロトロンの収束定理
第8章
- サポートベクトルマシン
- スラック変数
- ソフトマージン識別器
第9章
第10章
第11章
細かいところは分からなかったけど、概ね理解はできた。
上記の分からない用語を今後理解していけるよう勉強していきたいと思います!
とりあえず、初心者によさげな『人口知能プログラミングのための数学がわかる本』を読みたいと思います。
- 作者: 石川聡彦
- 出版社/メーカー: KADOKAWA
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログを見る