2016-04-25

Google Japan Blog: Google Chrome 50 がリリースされました

Google Chrome のバージョンのリリースが 50 に。このバージョンのマイルストーンはなんだったのだろう?とりあえず備忘録として残します。

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-23

UnixBench - UNIX系OS向けベンチマーク

UnixBench は Linux など Unix 系 OS 向けのベンチマークツールです。参考サイト [1] に詳しい使用方法が紹介されてましたので、それを参考に Fedora でベンチマークをしてみました。ベンチマークのターゲットにした環境は下記のとおりです。

  • PC: Stream 11-r016TU
    • インテル® Celeron® プロセッサー N2840 (2.16GHz-2.58GHz, L2キャッシュ 1MB)
  • OS: Fedora 24 x86_64(アルファ版)

参考サイト [2] から UnixBench の zip ファイルをダウンロードして、次のように解凍して実行しました。コンパイル後に '3dinfo: command not found' のメッセージが出ますが解決方法がわからないので、結局、Graphics のベンチマークなしに実施しました。その他のエラーについては、参考サイト [3] を参考にしています。

$ unzip byte-unixbench-master.zip
Archive:  byte-unixbench-master.zip
e80d3f373999e75dda3c9c9474fb54ecd4a0ea1e
   creating: byte-unixbench-master/
  inflating: byte-unixbench-master/LICENSE.txt  
  inflating: byte-unixbench-master/README.md  
   creating: byte-unixbench-master/UnixBench/
...
...
  inflating: byte-unixbench-master/UnixBench/testdir/large.txt  
  inflating: byte-unixbench-master/UnixBench/testdir/sort.src  
$ cd byte-unixbench-master/UnixBench
$ ls
Makefile  README  Run  USAGE  WRITING_TESTS  pgms  src  testdir
$ ./Run
gcc -o ./pgms/arithoh -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall -Darithoh ./src/arith.c
gcc -o ./pgms/register -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall -Ddatum='register int' ./src/arith.c
...
...
gcc -o ./pgms/fstime -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall ./src/fstime.c
gcc -o ./pgms/whetstone-double -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall -DDP -DUNIX -DUNIXBENCH ./src/whets.c -lm
make all
make[1]: Entering directory '/home/bitwalk/ダウンロード/byte-unixbench-master/UnixBench'
Checking distribution of files
./pgms  exists
./src  exists
./testdir  exists
make[1]: Leaving directory '/home/bitwalk/ダウンロード/byte-unixbench-master/UnixBench'
sh: 3dinfo: command not found

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

Wide character in print at ./Run line 1511.
Wide character in printf at ./Run line 1542.

1 x Dhrystone 2 using register variables

1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

...
...

2 x Shell Scripts (8 concurrent)  1 2 3
Wide character in printf at ./Run line 1484.

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: stream11: GNU/Linux
   OS: GNU/Linux -- 4.5.2-300.fc24.x86_64 -- #1 SMP Wed Apr 20 16:46:11 UTC 2016
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Celeron(R) CPU N2840 @ 2.16GHz (4326.4 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 1: Intel(R) Celeron(R) CPU N2840 @ 2.16GHz (4326.4 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   08:18:08 up  1:07,  2 users,  load average: 0.19, 0.19, 0.62; runlevel 5

------------------------------------------------------------------------
Benchmark Run: 土  4月 23 2016 08:18:08 - 08:46:47
2 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       12904499.1 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2209.9 MWIPS (9.9 s, 7 samples)
Execl Throughput                                525.4 lps   (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        270798.8 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           74378.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        673829.4 KBps  (30.0 s, 2 samples)
Pipe Throughput                              881314.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  62505.2 lps   (10.0 s, 7 samples)
Process Creation                               4217.6 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2704.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    523.7 lpm   (60.1 s, 2 samples)
System Call Overhead                        1829738.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12904499.1   1105.8
Double-Precision Whetstone                       55.0       2209.9    401.8
Execl Throughput                                 43.0        525.4    122.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     270798.8    683.8
File Copy 256 bufsize 500 maxblocks            1655.0      74378.5    449.4
File Copy 4096 bufsize 8000 maxblocks          5800.0     673829.4   1161.8
Pipe Throughput                               12440.0     881314.7    708.5
Pipe-based Context Switching                   4000.0      62505.2    156.3
Process Creation                                126.0       4217.6    334.7
Shell Scripts (1 concurrent)                     42.4       2704.1    637.8
Shell Scripts (8 concurrent)                      6.0        523.7    872.9
System Call Overhead                          15000.0    1829738.5   1219.8
                                                                   ========
System Benchmarks Index Score                                         529.7

------------------------------------------------------------------------
Benchmark Run: 土  4月 23 2016 08:46:47 - 09:15:43
2 CPUs in system; running 2 parallel copies of tests

Dhrystone 2 using register variables       25357204.1 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4397.7 MWIPS (10.0 s, 7 samples)
Execl Throughput                               3286.2 lps   (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        385791.0 KBps  (30.1 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          116330.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        941896.0 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1754722.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 178692.5 lps   (10.0 s, 7 samples)
Process Creation                              11098.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3914.7 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    525.5 lpm   (60.1 s, 2 samples)
System Call Overhead                        2759217.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   25357204.1   2172.9
Double-Precision Whetstone                       55.0       4397.7    799.6
Execl Throughput                                 43.0       3286.2    764.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     385791.0    974.2
File Copy 256 bufsize 500 maxblocks            1655.0     116330.5    702.9
File Copy 4096 bufsize 8000 maxblocks          5800.0     941896.0   1624.0
Pipe Throughput                               12440.0    1754722.5   1410.5
Pipe-based Context Switching                   4000.0     178692.5    446.7
Process Creation                                126.0      11098.5    880.8
Shell Scripts (1 concurrent)                     42.4       3914.7    923.3
Shell Scripts (8 concurrent)                      6.0        525.5    875.8
System Call Overhead                          15000.0    2759217.9   1839.5
                                                                   ========
System Benchmarks Index Score                                        1016.6

$ 

UnixBench の結果の各項目については、参考サイト [1] に詳しく説明されています。

新しく登場した CPU のベンチマークを取ることについては理解できるのですが、昔、オーバークロックした自作 PC に対する(Windows の)ベンチマークの記事を目にする度に、そもそも PC を何に使いたいのかという疑問がふつふつと湧いてきてしまって、そういったスピード狂が書いたベンチマークの記事には少々嫌気を覚えていました。

しかし、現在の格安 PC に搭載されている非力な CPU に焦点をあてて、同一のソフトウェアを使ってベンチマークのデータを蓄積することは、それなりに意味があるかもしれないと考えるようになりました。格安 PC と言えど、そう何台も購入できるわけではありませんので、地道にやっていこうと思います。

参考サイト

  1. UnixBenchでベンチマーク - IDCF Tech-Blog
  2. kdlucas/byte-unixbench: Automatically exported from code.google.com/p/byte-unixbench
  3. UnixBenchの使い方とエラー対処方法 - Linux入門 - Webkaru

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-20

BSD の子孫

BSD は、Berkeley Software Distribution の略語で、1977 年から 1995 年までカリフォルニア大学バークレー校 (University of California, Berkeley, UCB) の Computer Systems Research Group (CSRG) が開発・配布したソフトウェア群および UNIX オペレーティングシステム (OS) のことです。

元となったコードベースと設計は AT&T (正確には 1980 年ぐらいまで AT&T 傘下にあったベル研究所)の UNIX と共通であるため、歴史的には BSD は UNIX の支流 "BSD UNIX" とみなされてきました。1980 年代、ワークステーションクラスのシステムベンダーがプロプライエタリな UNIX として BSD を広く採用していました。例えば、DEC のUltrix、サン・マイクロシステムズの SunOS などです。これは配布するライセンス条件が容易だったためと、当時の多くの技術系企業の創業者が BSD を熟知していたことに因ります。

それらプロプライエタリな BSD 派生 OS は、1990 年代には UNIX System V Release 4 と OSF/1 に取って代わられ、どちらも BSD のコードを取り入れており、他の現代の Unix システムの基盤になりました。一方、後期の BSD リリースは、いくつかのオープンソース開発プロジェクトの基盤になりました。

以上、Wikipedia から引用しました [1]。なお、補足および言葉遣いなどを一部変えてあります。

UNIX への憧れ

Windows 95 が登場する少し前、米国シリコンバレーにある会社に勤務していた私は、データ解析用のソフトウェアの関係でサン・マイクロシステムの SunOS を使う機会が多く、当時の PC にインストールされていた Windows 3.11 とは天と地ほどもある高い安定性と洗練されたデスクトップ (OpenWindows) に心を奪われたのでした。当地では Red Hat や Slackware Linux のメディアが廉価で入手できたので、Windows 用に買った自宅の PC に Linux をインストールすることに成功すると、嬉々としてプログラミングに励んでいたのでした。

Linux は、UNIX 的な世界をぐっと身近に、誰でもが使えるようにしてくれましたが、一方で、Linux は正統な UNIX ではない、というコンプレックスみたいな感情をずっと抱いていました。そのコンプレックスを抱いたまま Linux をずっと使い続けてきたのは、コンプレックスを上回る使いやすさがあったからだと考えています。

一方、当時日本に住んでいたら、当時日本で流行っていたため間違いなく試したであろう FreeBSD や、あるいは NetBSD こそが、BSD の血を引く正統な UNIX であると、ずいぶん長い間思い込んでいました。それは歴史的には正しいのですが、UNIX という商標を使う、という意味では正しくありません。現在 UNIX を名乗るためには Single UNIX Specification (SUS) に準拠しているか認証を受けて登録される必要があります。

現在、身近な OS で正式に UNIX と呼べるものは BSD を基盤とする Apple Macintosh の OS X ぐらいでしょう。Linux をはじめ FreeBSD や NetBSD などは、Unix ライクな OS あるいは Unix 系 OS と呼ばれます。これらのオープンソース系システムベンダーでは、OS の仕様変更が頻繁に行われるため、その度に認証を受ける必要が生じ、コストに見合わないため認証を受けないのだそうです。

オープンソースの BSD 系 OS

BSD 自体の開発は 4.4BSD Lite Release 2 で終了していますが、現在あるオープンソースの BSD 系 OS は、AT&T のライセンスに抵触する部分を除いた BSD である 4.3BSD Net/2 より 386BSD を経て派生しています。386BSD の直系の子孫としては FreeBSD、NetBSDがあり、今でも精力的に開発されていいます。OpenBSD や DragonFly BSD は開発方針の違いや開発グループの諍いによってそれぞれ NetBSD、FreeBSD から派生した OS です。これら 4 つの BSD 系 OS の特徴を Wikipedia などで調べて以下にまとめてみました。

OS FreeBSD NetBSD OpenBSD DragonFly BSD
ロゴ
最初のリリース 1993/11/1 1993/4/20 1996/10/1 2004/7/12
開発団体 The FreeBSD Project The NetBSD Foundation The OpenBSD Project -
創始者 Nate Williams
Rod Grimes
Jordan K. Hubbard
Chris Demetriou
Theo de Raadt
Adam Glass
Charles Hannum
Theo de Raadt Matthew Dillon
由来 4.3BSD Networking/2, 4.4BSD-Lite 4.3BSD Networking/2, 386BSD NetBSD 1.0 FreeBSD 4.8
ライセンス Simplified BSD, FreeBSD Documentation License 2-clause BSD license BSD, ISC, ATU, その他 Modified BSD
カーネルタイプ モノリシック+モジュール モノリシック モノリシック ハイブリッド
プラットフォーム IA-32, x86-64, SPARC64, IA-64, PowerPC, ARM, MIPS Alpha, ARM, PA-RISC, 68k, MIPS, PowerPC, SH3, SPARC, RISC-V, VAX and x86 Alpha, x86-64, i386, MIPS64, PowerPC, SPARC 32/64, Zaurus, その他 x86-64
パッケージ管理 pkg pkgsrc OpenBSD package tools, ports tree DPorts, pkgng
特徴 元々はインテルの x86 プロセッサーでのサポートの充実を念頭に置いて開発されており、x86環境でサポートしているハードウェアの数は多い。 多くのコンピュータ・アーキテクチャで BSD 系 Unix を動かすというのを念頭に置いて開発されているプロジェクトで、30種類以上のアーキテクチャで動作する。 NetBSD から分岐してセキュリティーに注意して開発が進められている。 FreeBSD とは異なった SMP 対応をするために FreeBSD 4.8R から分岐した。
その他 Linux と異なり、カーネルとユーザランドを含めて一つの OS であり、そして OS 側に GPL のものを含まないようにしている。 機種独立性が組み込みシステムでの開発に大きく寄与。
コンパイラ、アセンブラ、リンカその他の、クロスコンパイルに完全対応したツールチェーン一式を持つ。
BSD ライセンスの Portable C Compiler (PCC) を導入。
OpenBSD にはセキュリティ強化のための設計変更がいくつも加えられている。
他に比べてプロジェクトの規模が小さいにも関わらずスピンオフした OpenBSD コンポーネントのためのプロジェクトは、多彩でしかも成功している(例:OpenSSH)。
カーネルの設計:CPU 毎の局所性を保つようにするアルゴリズムでスレッドを分ける実装。
HAMMER という DragonFly BSD 向けに開発されたファイルシステムを使用。
採用例 PlayStation 4 (Orbis OS) QNX Microsoft, Services for UNIX
2ちゃんねる Dell Force10 Core Force
NASA's SAMS-II Project

BSD と Linux

Linux を長年使っていると、表面的には Linux と BSD 系 OS との間には大きな違いはないのかもと、知ったかぶりをして思おうとしてしまいますが、実はそうではないのです。エンドユーザとして Linux を表面的にしか使っていない自分がエラそうに言うのは気が引けますので、ご興味があれば、参考文献の [6] [7] に目を通してみてください。

参考サイト

  1. BSD - Wikipedia
  2. BSDの子孫 - Wikipedia
  3. 本の虫: LLVM/Clangがぜってーサポートしねーと宣言しているLinuxカーネルに多用されているGCC拡張 (2013/04/19)
  4. LinuxとBSD―Linusに聞く | OSDN Magazine (2005/06/13)
  5. BSDから見たLinux | OSDN Magazine (2005/06/15)
  6. 記者の眼 - “節操のなさ”ゆえに愛されるLinux:ITpro (2003/02/04)
  7. 「LinuxのひとつであるFreeBSD」は本当か - Qiita (2015/12/21)

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-17

Linux 搭載 HP Stream 11 と Wine の一日

3 万円を切る格安 PC、HP Stream 11 に Fedora をインストールして 3 週間近くが経ちました。細かい設定も済みましたので今日は外へ持ちだしてバッテリーの持ち具合や使い心地を評価しました (2016-04-16)。

桜(ソメイヨシノ)の時期が終わり、次なる季節の風景を求めて横浜方面へ出かけました。

カメラは Canon の PowerShot SX500IS です。すっかり古い型になってしまいましたが、自分の撮影技術を考えると、撮影対象が風景中心で、機能的にもそれほどの不満がないので、ずっと愛用しています。

PC は、出先でカメラの画像を取り出して整理をして、画像を Facebook へアップロードしたり、下書き中の本記事を更新することに使う予定です。インターネットへのアクセスには、手持ちの Y!mobile Pocket WiFi 305ZT を使いますが、公衆無線 LAN を利用できる場合はつなげてみます。

初期バッテリー状態

画面上は以下のようにフル充電状態なっています。

横浜公園から

JR 川崎駅から京浜東北線磯子行きに乗り、関内で下車。横浜公園でパチクリとチューリップの撮影開始です。もう 11 時を過ぎています。

横浜公園ではさまざまな種類のチューリップが咲き乱れています。ゆっくり周ってチューリップを観賞、撮影したあと、山下公園へ向かいました。天候は時々日が差す程度でそれほど良くありませんでしたが、程よい風もあり、少し汗ばむ程度の散策するにはぴったりの天候でした。今度はチューリップ以外の花にフォーカスし撮影を続けます。さらに港の見える丘公園まで足をのばしました。

携行した PC の出番はまだありません。

元町にて

午後 2 時を過ぎ、歩き疲れてどこかで遅いランチにしようと元町の通りに入ると、店頭でやっていたワインの試飲コーナーに吸い寄せられました。

ドイツの白ワインを試飲しながら店の人の話を聞いていると、そのうち、店で出すグラスワインの話に。なんとあのワインがグラスで飲めるというので、頭の中はそのワインで一杯に。ここでランチを摂ることに決定です(ワールドワインバーbyピーロート 横浜元町店)。

つれはランチメニューから、さっさとミートソースのパスタを頼みましたが、私はそのワインの誘惑に負けて(グラスで飲んでも)結構な値段になるにもかかわらず、グラス (120ml) でそのワイン(とチーズの盛り合わせ)を注文しました。

素晴らしいワインとの出会いに、横浜公園などで撮った写真の整理は後回しに。

30 分程かけて一杯のワインとの至福の時を過ごした後、ようやく本日の課題を思い出します。

おもむろに PC を取り出して今日撮った写真のデータのコピーを開始。朝のフル充電後初めての起動ですが、電池に残量は「残り 9:16 (100%)」で満タンの状態です。この日の撮影枚数は 233 枚。0.9GB あまりのデータをカメラの SD カードからコピーすること数分。

しかし、画像整理の作業はここまででした。

ソムリエ志望の自分の娘ほどの若い店員とワイン談義をしているうちに、グラスで飲んだそのワイン、一本買うことを決心。Google Chrome を起動して、Amazon.jp などで売られている価格をベースに価格交渉に使うことに。

ワインを値切ることは適わなかったものの、この店のワインの管理状態に納得して気分よく会計を済ませ、PC はシャットダウンせずにしまいました。近年買ったワインの価格としては最高額になるワインを抱え、高揚した気分で石川町駅から川崎駅へ戻りました。

デニーズにて

結局、元町ではカメラで撮った画像の整理ができなかったので、川崎駅近辺で所要を済ませた後、午後 6 時過ぎに近所のデニーズで作業を再開しました。しかし、テーブルが狭く、二人の料理でいっぱいになってしまいましたので、とりあえず食べてしまうことに。

デニーズ内では WiFi を利用でき、スマホは接続されていましたので、食後に PC の方もつなげてみましたがパスワードを忘れてしまっていてログインできませんでした。そこで不謹慎ですが、災害時の接続サービスにつなげてみると…、つなげました。

元町のワインのお店では PC の電源を切らずに持ってきましたが、バッテリーは「残り 6:41 (68%)」とまだまだ大丈夫です。

ネットワークが常時必要な作業ではないので、手持ちの WiFi ルーターに接続を切り替えてから作業開始。横浜公園で撮ったチューリップの写真から厳選した 11 枚を Facebook へアップしました。

数ある画像をひとつひとつチェックし、気に入った写真画像をアップロード用のディレクトリへコピーするという作業は単調なのですが、トラックパッドでは操作が面倒なので、堪らずマウスを取り出して使いました。トラックパッドだけでもさっさと選別作業ができるように、専用のソフトウェアを JavaFX などで作ってしまう方が良いかもしれないと思いました。

デザートも食べ終えていたので、帰途につきました。

帰宅して、引き続き残りの「山下公園」と「港の見える丘公園」の分の写真を整理して Faceboox へアップし終えたのは午後 9:30 過ぎ。バッテリーは「残り 4:04 (43%)」とまだまだ大丈夫です。こんな軟弱な使い方だと余裕で一日中使えるようです。

まとめ

今回は、バッテリーのスタミナを軽く評価してみただけに終わってしまいましたが、このぐらいの使い方だと日中の使用程度であればバッテリーは十分に持つということが判りました。

屋外のベンチで作業をした時の使いやすさなど、試してみたいことがまだありますので、ひきつづき PC を携行した外出を続けて、気がついたことがあれば本ブログで紹介していきたいと思います。

 

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-15

Windows、OS X、LinuxをカバーするMicrosoftのVisual Studio Codeエディタがついに1.0に | TechCrunch Japan

Visual Studio Code (VS Code) は、オープンソースのソースコードエディタです。マイクロソフトにより開発され、Windows, Linux, OS X 上で動作します。下記の記事には Microsoft が昨年の Build デベロッパー・カンファレンスで、VS Codeを発表したとありますが、たしかにそのような発表があったことを記事を読んで思い出しました。その VS Code のバージョンが 1.0 になって正式にリリースされました。

偶然 TechCrunch で記事を見つけたので早速ブログに載せようとしたら、すでに同日付の日本語翻訳記事も存在していることに気づき [1]、大変驚いたのですが、なんのことはなくて、Microsoft から日本語でも同じタイミングで発表されたようです [3]。Microsoft って、Google のようにブログでそういうことを発表してしまう会社だったんですね、そういうイメージを持っていませんでした。

  1. Windows、OS X、LinuxをカバーするMicrosoftのVisual Studio Codeエディタがついに1.0に | TechCrunch Japan (2016/4/15)
  2. オープンソースの開発ツール「Visual Studio Code」が正式版となるバージョン1.0に到達 - Publickey (2016/4/15)
  3. 【Visual Studio Code】1.0.0 正式リリースしました! | 好きな技術を好きと言える幸せ – AYA TOKURA BLOG (2016/4/15)
  4. Download Visual Studio Code - Mac OS X, Linux, Windows

仕事で使うアプリケーション・スイーツに Office という名前を付け、ワープロソフトにも Word という固有名詞を付けるなんて、なんて不遜な会社なんだと憤慨したのは遠い昔、今ではほとんど抵抗がなくなってしましました。人間は慣れることができるのです。

すると、信じたくはありませんが、Visual Studio Code もそのうち単に Code と抵抗なく呼ぶ日が来るかもしれません。しかも、今度はマルチプラットフォーム対応です。Satya Nadella 氏が率いる Microsoft は、確かに変わろうとしているのかもしれません。

早速、VS Code の Linux 版 (vscode-x86_64.rpm) をダウンロードしました [4]

以下のようにインストールしました。なお、使用している Linux は Fedora 23 (x86_64) でデスクトップ環境は GNOME 3.18 です。

$ su
パスワード:
# dnf install vscode-x86_64.rpm
Last metadata expiration check: 0:14:53 ago on Fri Apr 15 19:54:17 2016.
依存性が解決されました。
================================================================================
 Package     アーキテクチャ
                           バージョン                 リポジトリ           容量
================================================================================
インストール:
 code        x86_64        1.0.0-1460557031           @commandline         40 M

トランザクションの要約
================================================================================
インストール  1 パッケージ

合計容量: 40 M
インストール済み容量: 116 M
これでいいですか? [y/N]: y
パッケージをダウンロードしています:
トランザクションの確認を実行中...
トランザクションの確認に成功しました。
トランザクションのテストを実行中...
トランザクションのテストに成功しました。
トランザクションを実行中...
  インストール  : code-1.0.0-1460557031.x86_64                              1/1 
  検証中        : code-1.0.0-1460557031.x86_64                              1/1 

インストール:
  code.x86_64 1.0.0-1460557031                                                  

完了しました!
# 

アクティビティ画面にして、左のアイコンから「アプリケーションを表示する」アイコンをクリックすると、以下のように(V で始まるため、下の方に) Visual Studio Code のアイコンが表示されていますので、クリックして起動します。

するとすぐに VS Code が起動しました。

試しに Java のソースを読み込んでみました。配色は好みの問題ですが、私は黒地より白地を好みます。メニューの「ファイル」→「基本設定」→「配色テーマ」で、Light+ (default light) を選びました。それ以外、特に設定をしていませんが、デフォルトのフォントでなかなか見やすいです。

Microsoft ブランドのソフトウェアがそのまま Linux にインストールできて利用できてしまう、なんだか変な気分です。時代が変わったのでしょう、きっと。しばらく使ってみて、具合が良ければ、あらためて機能紹介したいと思います。

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-13

JavaFX: TreeView と CheckBoxTreeItem

JavaFX の TreeView にポップアップ・メニュー (ContextMenu) を表示するサンプルを以前紹介しましたが [1]、さらにチェックボックスをつける用途が出てきたので、まずは前述のサンプルをベースにテストをしました。まだ無駄が残っていますが、当初予定していた機能を実装できましたので紹介します。更に検討を加えた結果、補足・修正を加えるかもしれませんが、あらかじめご了承ください。

実行例

今回のサンプルは少々ソースが長くなるため、最初に実行例を示します。

にんじんのチェックボックスが 'false' から 'true' に変更されました。
なすのチェックボックスが 'false' から 'true' に変更されました。
とまとのチェックボックスが 'false' から 'true' に変更されました。
「とまと」が選択されました。

ソース

動作環境は次の通りです。

  • OS: Fedora 23 (x86_64)
  • Java: jdk1.8.0_77-1.8.0_77-fcs.x86_64 (Oracle)
  • IDE: NetBeans IDE 8.1
リスト:Sample_TreeView3.java 
package sample_treeview3;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.CheckBoxTreeItem;
import javafx.scene.control.cell.CheckBoxTreeCell;
import static javafx.application.Application.launch;

public class Sample_TreeView3 extends Application {

    Image CAROT = new Image(getClass().getResource("carot.png").toString());
    Image EGGPLANT = new Image(getClass().getResource("eggplant.png").toString());
    Image TOMATO = new Image(getClass().getResource("tomato.png").toString());
    Image APPLE = new Image(getClass().getResource("apple.png").toString());
    Image GRAPE = new Image(getClass().getResource("grape.png").toString());
    Image BANANA = new Image(getClass().getResource("banana.png").toString());

    TreeView<String> tree;

    @Override
    public void start(Stage primaryStage) {

        TreeItem<String> top = new TreeItem<>("root");

        TreeItem<String> nodeItemA = new TreeItem<>("野菜");
        addNode(top, nodeItemA);
        nodeItemA.setExpanded(true);
        TreeItem<String> nodeItemB = new TreeItem<>("果物");
        addNode(top, nodeItemB);
        nodeItemB.setExpanded(true);

        TreeLeaf<String> nodeItemA1 = new TreeLeaf<>("にんじん", new ImageView(CAROT));
        TreeLeafListener(nodeItemA1);
        addNode(nodeItemA, nodeItemA1);
        TreeLeaf<String> nodeItemA2 = new TreeLeaf<>("なす", new ImageView(EGGPLANT));
        TreeLeafListener(nodeItemA2);
        addNode(nodeItemA, nodeItemA2);
        TreeLeaf<String> nodeItemA3 = new TreeLeaf<>("とまと", new ImageView(TOMATO));
        TreeLeafListener(nodeItemA3);
        addNode(nodeItemA, nodeItemA3);

        TreeLeaf<String> nodeItemB1 = new TreeLeaf<>("りんご", new ImageView(APPLE));
        TreeLeafListener(nodeItemB1);
        addNode(nodeItemB, nodeItemB1);
        TreeLeaf<String> nodeItemB2 = new TreeLeaf<>("ぶどう", new ImageView(GRAPE));
        TreeLeafListener(nodeItemB2);
        addNode(nodeItemB, nodeItemB2);
        TreeLeaf<String> nodeItemB3 = new TreeLeaf<>("ばなな", new ImageView(BANANA));
        TreeLeafListener(nodeItemB3);
        addNode(nodeItemB, nodeItemB3);

        tree = new TreeView<>(top);
        tree.setShowRoot(false);
        tree.setCellFactory((TreeView<String> p) -> new TreeCellImpl());

        StackPane root = new StackPane();
        root.getChildren().add(tree);

        Scene scene = new Scene(root, 200, 300);

        primaryStage.setTitle(getClass().getSimpleName());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    void TreeLeafListener(TreeLeaf<String> item) {
        item.selectedProperty().addListener((ObservableValue<? extends Boolean> obs, Boolean oldVal, Boolean newVal) -> {
            System.out.println(item.getValue() + "のチェックボックスが '" + oldVal + "' から '" + newVal + "' に変更されました。");
        });
    }

    void addNode(TreeItem<String> parent, TreeItem<String> child) {
        parent.getChildren().add(child);
    }

    class TreeLeaf<T> extends CheckBoxTreeItem<T> {

        public TreeLeaf(final T value) {
            super(value);
        }

        public TreeLeaf(final T value, final Node graphic) {
            super(value, graphic);
        }

        public ContextMenu getMenu() {
            ContextMenu popup = new ContextMenu();
            MenuItem menuItem = new MenuItem("処理");
            menuItem.setOnAction((ActionEvent event) -> {
                TreeItem selItem = tree.getSelectionModel().getSelectedItem();
                System.out.println("「" + selItem.getValue() + "」が選択されました。");
            });
            popup.getItems().add(menuItem);

            return popup;
        }
    }

    public final class TreeCellImpl extends CheckBoxTreeCell<String> {

        @Override
        public void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);

            if (empty) {
                setText(null);
                setGraphic(null);
            } else if (getTreeItem().getClass().toString().endsWith("TreeLeaf")) {
                setContextMenu(((TreeLeaf) getTreeItem()).getMenu());
            } else {
                setText(getItem() == null ? "" : getItem());
                setGraphic(getTreeItem().getGraphic());
            }
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

参考サイト

  1. bitWalk's: JavaFX: TreeView と ContextMenu (2)

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-10

Fedora と Chromium

Chromium(クロミウム)はオープンソースのウェブブラウザのプロジェクト名で、Google Chrome はこのソースコードを引き抜いて開発されたものです [1]

以前の記事で紹介したように [2]、JavaScript を補完してウェブを高速化する WebAssembly が、開発者向けブラウザ Google Chrome Canary のバージョン 51.0.2677.0 以降で試験的に実装されることになりました。しかし、Google Chrome Canary では Linux 用のパッケージが公開されておらず、早期の開発バージョンを試すことが出来ません。もしかすると、Chromium なら、Google Chrome の安定バージョンよりは開発バージョンに近いものを試せる可能性があるかもしれないと考えました。仮にそうでなくとも、Chromium のビルドの方法を知っておいた方が、なにかと都合が良いとも考えました。

まず Red Hat 系 Linux で Chromium を扱うことについて触れているサイトを探したところ、[3] のサイトで RPM が公開されているサイトが紹介されていましたので、参考にさせて頂きました。

残念ながら現在使っている Google Chrome より新しいビルド番号ではありませんでしたので、それでは Chromium を自分でリビルドしてみようと Fedora 23 用の SRPM をダウンロードしました [4]

rpm-build および Chromium をビルドするのに必要な依存ライブラリをインストールしてから下記のようにリビルドしました。

[bitwalk@notepc SRPMS]$ rpmbuild --rebuild chromium-49.0.2623.112-1.fc23.src.rpm
...
...
...
パッケージに含まれないファイルの検査中: /usr/lib/rpm/check-files /home/bitwalk/rpmbuild/BUILDROOT/chromium-49.0.2623.112-1.fc23.x86_64
書き込み完了: /home/bitwalk/rpmbuild/RPMS/x86_64/chromium-49.0.2623.112-1.fc23.x86_64.rpm
書き込み完了: /home/bitwalk/rpmbuild/RPMS/x86_64/chromium-debuginfo-49.0.2623.112-1.fc23.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.1N4V28
+ umask 022
+ cd /home/bitwalk/rpmbuild/BUILD
+ cd chromium-49.0.2623.112
+ rm -rf /home/bitwalk/rpmbuild/BUILDROOT/chromium-49.0.2623.112-1.fc23.x86_64
+ exit 0
実行中(--clean): /bin/sh -e /var/tmp/rpm-tmp.wmXehB
+ umask 022
+ cd /home/bitwalk/rpmbuild/BUILD
+ rm -rf chromium-49.0.2623.112
+ exit 0

数時間でビルドできるだろうと甘く考えていました。非力な CPU (Celeron® N2830)を積んだ環境だったためか、なんとビルドに 10 時間以上を費やしてしまいました。

とりあえずインストールしてみると、無事インストールが完了しました。

[bitwalk@notepc SRPMS]$ su
パスワード:
[root@notepc SRPMS]# dnf install /home/bitwalk/rpmbuild/RPMS/x86_64/chromium-49.0.2623.112-1.fc23.x86_64.rpm
Last metadata expiration check: 2:27:16 ago on Sun Apr 10 11:54:43 2016.
依存性が解決されました。
================================================================================
 Package       アーキテクチャ
                           バージョン                   リポジトリ         容量
================================================================================
インストール:
 chromium      x86_64      49.0.2623.112-1.fc23         @commandline       60 M

トランザクションの要約
================================================================================
インストール  1 パッケージ

合計容量: 60 M
インストール済み容量: 187 M
これでいいですか? [y/N]: y
パッケージをダウンロードしています:
トランザクションの確認を実行中...
トランザクションの確認に成功しました。
トランザクションのテストを実行中...
トランザクションのテストに成功しました。
トランザクションを実行中...
  インストール    : chromium-49.0.2623.112-1.fc23.x86_64                    1/1 
  検証中          : chromium-49.0.2623.112-1.fc23.x86_64                    1/1 

インストール:
  chromium.x86_64 49.0.2623.112-1.fc23                                          

完了しました!
[root@notepc SRPMS]#

通常使っているブラウザである google-chrome-stable は /opt/google/chrome 以下、今回ビルドした Chromium は /opt/chromium 以下にインストールされています。また、実行ファイルはそれぞれ /usr/bin/google-chrome、/usr/bin/chromium-browser と名前が違いますので、同時にインストールしても問題はなさそうです。

自分で Chromium をビルドするには、環境が貧弱でコンパイルに時間がかかりすぎるのが玉にキズですが、参考資料 [5] をよく読んで、時間を見つけて最新のソースをビルドできるかトライしてみたいと思います。Fedora で WebAssembly を試すまでの道程は遠いです。

参考サイト

  1. Chromium - Wikipedia
  2. bitWalk's: Google Developers Japan: V8 で WebAssembly を試験運用開始
  3. RedHat系でChromiumとFlashのインストール - neetingnow!
  4. Index of /pub/yum/itecs/public/chromium/fedora23/SRPMS
  5. Get the Code: Checkout, Build, Run & Submit - The Chromium Projects

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-06

JavaFX: LineChart を使いこなそう (7) - ズーム(改2)

JavaFX のラインチャートをズームするサンプルを以前紹介しましたが、ズームの具合がよくありませんでした。確かにズームはできますが、マウスで指定した矩形の領域が正確に拡大されていません。どうやら座標計算が正確では無いようです。手軽にチャートのズームができる方法で気に入っていたので、じっくり調べて修正しました。いや、どうしてもズーム機能を使う目的があったため、なんとか実用に耐えうるレベルまで修正する必要があった、というのが現実です。

動作環境は次の通りです。

  • OS: Fedora 23 x86_64
  • jdk1.8.0_77-1.8.0_77-fcs.x86_64 (Oracle)
  • IDE: NetBeans IDE 8.1

まず最初に実行例を示します。

ソースは、もともと参考にした GitHub Gist のサイト [1] を fork して、修正を加えましたので、それを埋め込みました [2]。最初の LineChartZoomable.java が、LineChart クラスを継承して、ズーム機能を加えたクラス、その下の LineChartZoomableTest.java は、LineChartZoomable クラスを利用したサンプルです。なお、このクラスは、StackPane で最初の配置を行う必要があります。

参考サイト

  1. Example of a LineChart that can be zoomed via mouse.
  2. LineChartZoomable class that can be zoomed via mouse.

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-04

こんどの Fedora 24

Red Hat 社が支援するコミュニティー Fedora Project によって開発されている Fedora は、最新の技術を積極的に取り込むディストリビューションで、半年のサイクルで新しいリリースを重ねてききました。ただし Fedora 20 と 21 の間だけ一年の期間が空いています。次のリリースは 24 になります。半年ごとのリリースですから 24 ということは、最初の Fedora Core 1 から数えて 12 年(と半年)が過ぎたことになります。12 という数は、東洋では、十二支に代表されるように 10 と並んで一区切りになる数です。Fedora Project の人たちは意識していないでしょうが、区切りを象徴するような大きな変化があるかもしれないと、つい勝手に期待してしまいます。

Fedora 24 は、現在のところ 2016-06-07 にリリースされる予定ですが [1]、すでにアルファ版がリリースされています。現在予定されている変更を以下にまとめました [2]。個人的に興味がある変更項目は下地の色を変えてあります。日本語訳を、とも考えましたが、どうせ全ての単語に正しい訳語を持ってくることができずに中途半端になってしまうと思ったので、原文のママにしました。

Fedora 24 Accepted System Wide Changes Proposals
LiveUSBCreator as Primary Downloadable The new Fedora Live USB Creator that is being finished has an overhauled, more user friendly interface. Because USB sticks are the most common way to install Fedora, it should be the primary download option. It cover the whole installation media creation, it lets the user pick the right flavor of Fedora, downloads its image, and copies it to a USB drive.
The GNU C Library version 2.23 Switch glibc in Fedora 24 to glibc version 2.23.
Removal of librtkaio from glibc Remove librtkaio support from glibc in Fedora 24.
GNOME 3.20 Update GNOME to the latest upstream release, 3.20
Langpacks Installation With RPM Weak Dependencies Langpacks installations is re-designed using language metapackages langpacks-<langcode> and RPM weak dependencies (Supplements tag).
Mono 4.2 Update the Mono stack in Fedora to 4.2 aca Cyle 6
Suds Jurko Fork Change the python-suds package to use the fork maintained by Jurko Gospodnetić.
Golang 1.6 Rebase of Golang package to upcoming version 1.6 in Fedora 24, including rebuild of all dependent packages.
GCC6 Switch GCC in Fedora 24 to 6.x.y, rebuild all packages with it, or optionally rebuild just some packages with it and rebuild all packages only in Fedora 25.
Glibc locale subpackaging This change should make it possible to install or uninstall locales individually.
Layered Docker Image Build Service Fedora currently ships a Docker base image, but Docker supports a layering concept. There are some applications like Cockpit which we would like to ship as layered applications.
Pungi Refactor Changing how pungi works to make composes more distributed and transparent.
Ruby 2.3 Ruby 2.3 is the latest stable version of Ruby. Many new features and improvements are included for the increasingly diverse and expanding demands for Ruby. With this major update from Ruby 2.2 in Fedora 22 to Ruby 2.3 in Fedora 24, alongside JRuby, Fedora becomes the superior Ruby development platform.
Node.js 4.2 Fedora 24 will be updated to Node.js 4.2, the latest LTS release of the platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications.
Python 3.5 Update the Python 3 stack in Fedora from Python 3.4 to Python 3.5.
TeXLive 2015 Update Fedora TeXLive packaging to 2015.
NetworkManager 1.2 Update to NetworkManager to version 1.2.
Fedora 24 Boost 1.60 uplift This change brings Boost 1.60.0 to Fedora 24. This will mean F24 ships with the latest upstream Boost release.
Livemedia Creator livemedia-creator is a tool that is part of lorax, it has the ability to make livecd's, raw disk images, and to do pxe2live. We plan to use it to make pxe2live for Atomic, the LiveCD's and ARM disk images in fedora.
Systemd file triggers systemd daemon-reload is invoked once or twice per rpm transaction.
Systemd package split Two new subpackages will be split out from the main systemd package. systemd-container will contain stuff for launching and managing VMs and containers. system-udev will contain udevd and other hardware-related bits.
Fedora 24 Accepted Self Contained Changes Proposals
System Python Separate several subpackages form the python3 packages - a system-python(-libs) that can be required by various tools that consider themselves "system tools".
Drop php-pear dependency for pecl modules All PECL packaged modules (php-pecl-*) have a unneeded runtime dependency on php-pear, for module registration in package scriptlets.
Atomic Developer Mode Add a "Developer Mode" boot menu entry in the Atomic image to allow users to boot without setting up cloud-init.
Graphical System Upgrades Add support for performing system upgrades to a newer Fedora release through GNOME Software.
Shenandoah 1.0 This change aims at adding a very low pause time Garbage Collection(GC) algorithm named Shenandoah to OpenJDK.
Atomic Storage Clients Kubernetes provides a mechanism for providing storage to Pods via volumes. Volumes support several underlying storage protocols, but clients are needed to support each type. Native GlusterFS and Ceph clients will be added to the Atomic host base to support these Volume types.
Erlang 18 Update Erlang/OTP to version 18.2.x, and improve Erlang support in Fedora.
Ping IPv6 ping should be able to work with IPv6 and IPv4 addresses, eliminating the need for multiple tools.
QGnomePlatform QGnomePlatform is a Qt Platform Theme aimed to accomodate as much of GNOME settings as possible and utilize them in Qt applications without modifying them - making them fit into the environment as well as possible.
QtWebEngine QtWebEngine will be packaged for Fedora, initially at version 5.6. In addition, the QupZilla browser will be upgraded to the QtWebEngine-based QupZilla 2.
ibus-fbterm enhancement for ibus 1.5 Update of ibus-fbterm to work with IBus 1.5. ibus-fbterm enables major features of ibus 1.5
Astronomy Spin A Fedora Spin providing a complete toolchain for both amateur and professional astronomers.
Cloud MOTD After logging in the running Cloud instance, the user should get the pending updates (including security) details as MOTD (message of the day).
Micro Bit Enable the use of BBC Micro Bit on Fedora systems. Users will be able develop, and put in new code to their micro:bit devices using Fedora.
Sugar 0.108 Update Sugar to the new upstream 0.108 stable feature release.
Crypto policy support for Kerberos Fedora supports a system wide crypto policy and Kerberos (libkrb5) should respect that policy and adjust its crypto-related configuration based on it.
Darktable 2.0 Update Darktable to new 2.0 major release
Deprecation of ipcalculator Fedora provides two tools for IP address calculations. That is the ipcalculator and ipcalc. Ipcalculator was geared towards being used by administrators and ipcalc for use with scripts. This changed with Fedora 23 which provided an updated ipcalc tool which can be used both interactively and from scripts. That, and the fact that ipcalculator is not IPv6-ready suggests we should deprecate ipcalculator and keep a single tool for the job, ipcalc.
OpenShift Origin OpenShift Origin is an Open Source Platform as a Service Cloud offering from Red Hat. The goal of this Change is to bring OpenShift Origin Architecture v3 into the Fedora proper to allow users to easily deploy OpenShift on Fedora.
sen: terminal user interface for docker engine sen enables you to manage your containers and images interactively directly from command line. Interface is similar to htop, alot or tig.
Koji Generates Repositories of Signed RPMs Extend Koji with a new feature that allows users to generate yum repositories of signed RPMs.
Anaconda Using LVM DBus API A new DBus API for LVM is being created so let's make the installation process use it for setting up LVM storage.
Product Definition Center The Product Definition Center (PDC) is a webapp and API designed for storing and querying product metadata. We want to stand up an instance in Fedora Infrastructure and automatically populate it with data from our existing releng tools/processes. It will enable us to develop more sane tooling down the road for future releases.

参考サイト

  1. Releases/24/Schedule - FedoraProject
  2. Releases/24/ChangeSet - FedoraProject

 

ブログランキング・にほんブログ村へ
にほんブログ村

2016-04-03

HP Stream 11 と Fedora 24(アルファ版)

3 万円を切る格安ノート PC、HP Stream 11-r016TU に Fedora 23 をインストール[1]、さらに Fedora 24(アルファ版)へアップグレード[2]して数日が経ちました。特別な設定をしていませんが、今のところ、これといった不具合は見つかっていません。今までで確認できた機能をまとめておきます。

Bluetooth

Bluetooth 4.0 が利用できるということで、安い Bluetooth ワイヤレスマウスを買ってつなげてみました。PC を起動後、ログイン前にはマウスは接続されておらず、ログインしてからも自動接続されたりされなかったりで、USB のワイヤレスマウスの使い心地に較べると、やや不便さを感じます。

オーディオ

内蔵スピーカーおよびヘッドフォン出力/マイク入力コンボポートにヘッドフォンを繋いで確認しましたが、オーディオ出力は問題なさそうです。内蔵マイクは使っていませんが、入力レベルを見る限り、普通に反応しているようなので使用可能でしょう。

プリンタ

ネットワーク・プリンタは、ドライバファイルをインストールして接続できました。

ネットワーク

無線のネットワークは、部屋の中の無線ルータと Y!mobile の Pocket WiFi (305ZT) どちらも問題なく接続できました。

Google ドライブを含めたネットワークドライブにも接続できています。

Web カメラ

約 92 万画素と言えど、チャットなどで使うには十分な解像度でしょう。Cheese で使えることを確認しました。

バッテリー

充電が 100% の状態で、いつも、残りの予想使用可能時間が 9 時間台に留まっているのが気になりますが、当然、使い方によってバッテリーの消費が変わります。バッテリーのスタミナに満足できるかどうかは、もう少し使い込んで判断することにします。

参考サイト

  1. bitWalk's: HP Stream 11 に Fedora 23 をインストール
  2. bitWalk's: Fedora 24 アルファ版へアップグレード

 

ブログランキング・にほんブログ村へ
にほんブログ村