「ウィキリークスの秘密-ジュリアン・アサンジ完全密着-」 というドキュメンタリー映画を観た

「ウィキリークスの秘密-ジュリアン・アサンジ完全密着-」 というドキュメンタリー映画を観て、感化されたので、さっと感じたことをこのパブリックノートに書きます。

数日前、うみみらい図書館で「クリーンコード」という、コーディングに関する本を読みました。そこに、Wikipediaの周りのプログラマの話も載っていて、(いま、創始者のジミー・ウェルズについてググったけど、ちょっと記憶ちがいかな)こういうWebサービスを開始する人も、かなりプログラムうまかったりする。

ジュリアン・アサンジも書けるプログラマ、、みたい。なんかハッキングてか(、クラッキングだね)にも少年時代関わってたんかな?その「クリーンコード」では、プログラミング手法とかで業績上げたようなプログラマのことが、本人の肖像イラスト画つきで描かれていて、面白かった。(デザインパターンとか、エクストリーム・プログラミングとか、オブジェクト指向とかのイノベーター)ジェフ・ベゾスも書けるプログラマだしね。

たぶんアサンジも、このWebサービス始めようと思うまでに、いろいろなプログラムを勉強して、もちろんその周りの理学(数学、物理学、化学)も学んだだろうし、社会のことも考えていたと思う。てかこの人ジャーナリストでもあるし。
デスクトップユーティリティープログラムのアルゴリズムや、OSの仕組みとかも勉強したろうと思う。

で、ある時、「ドッカーン」ってことだろうね。社会に必要なプログラムが頭に降りてきて、しかもコーディングができる。あとサーバーの設立・管理ができて、そこに人がアクセスしたくなるサーバ・アプリケーションを作った。

201109_3_c1

映画を観て、感じたことは、ヨーロッパ的な価値観と、地続きの異文化としての中東、そして移民していった兄弟としてのアメリカ。そのアメリカが、イラクと戦争を起こし(ずっと前から石油を巡って侵攻していたけど)、そこでハイテク最新兵器を使って、圧倒的な力で暴力事件を起こしている。

今日、インスタでpolicepostsというアカウントで、警察がカップルを捕まえるところをみていた。映画の中では、六人の民間人が、多分特に理由がなく、銃撃をうけて、それを助けようとした人まで撃たれていた。子供も二人いて、重症を負い、いまも後遺症が続いている。

歴史の本とテレビ(NHKもたまにはいいことをする)で学んだことによれば、私有財産が生まれる前は、人類はもっと平和に過ごしていた。総力戦的なことはあまりしなかった。現代は戦争があまりに巨大化している。どこかで人間の動物性が壊れて、凶暴化しているのでは。。

ある日、大事ななにかが壊れることがある。今日アマゾンから届いたパッケージの中に、アフリカの子どもたちに募金を募るパンフレットが入っていた。そういえば、インスタでも、ボランティアのポストにコメントしたな。

アメリカは好きだけど、軍事行動の闇は地球の精神を侵している。それが強く心に残った。少数の悲劇の当事者のことを考えずにあってはならないと思う。

ウィキリークス
https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%AA%E3%83%BC%E3%82%AF%E3%82%B9

Advertisements

SwingWorkerとProcessBuilderで、順次更新される(フリーズしない)JTextAreaのコーディング:その一

タイトルの通り、「SwingWorkerとProcessBuilderで、順次更新される(フリーズしない)JTextAreaのコーディング」を調べていた。もう二週間くらい前からのゴール。
まずSwingWorkerにたどり着くまでに時間がかかった。

この辺 「JTextAreaで表示が遅れる」(1) Java Solution - @IT会議室

とか見ていて、まずスレッド、まぁ並行プログラミング(Concurrent Programming)とか言われている領域かと思うけど、その辺の知識が必要になった。注1

・イニシャルスレッド
・イベントディスパッチスレッド
・ワーカースレッド

の話題が出てくる。あと

・Runnableインターフェース 注2
・javax.swing.SwingUtilities – invokeLater(Runnable doRun)

とかね。

で、少し勉強しているうちに、SwingWorkerクラスに突き当たった。
スタックオーバーフローさまさま。

システムの(まぁbashか)lsコマンドを再帰的に行って、SwingのJTextAreaに順次表示するプログラムが載っている。
https://stackoverflow.com/questions/20600721/display-indeterminate-jprogressbar-while-batch-file-runs/20603012#20603012

この板でリンクを教えてもらった。
https://stackoverflow.com/questions/45538227/how-do-i-get-the-jtextarea-to-update-with-each-ping

SwingWorkerはジェネリクスを使うし、ActionListenerや、SwingWorkerの継承メソッドの定義やら、GUIを伴って、複数のクラスを使っていて、いろんな要素の絡みがややこしい。

 

注1 並行プログラミングと並列プログラミングを混同していた。並行はConcurrent、並列はParalell

  • 並列(Parallel) : 複数のプロセスで各々のスレッドを同時に処理すること
  • 並行(Concurrent) : 一つのプロセスで複数のスレッドを切り替えながら動作することで、疑似的に複数のスレッドを同時に処理すること
参考サイト
Qiita Javaの並行処理を理解する(入門編)
https://qiita.com/bremen/items/b87bff49565fc9abc91b

注2 Runnableインターフェースのインプリメンテーションをしたクラスを作って、run()メソッドをオーバーライドする。そしてそのインスタンスを生成する、ことあたりがミソのよう。

参考 HeadFirstJava 一版 15章ネットワークとスレッド

 

iMacのUbuntu上でVirtualboxを使ってMacOSの仮想環境を作る

virtualbox

 

基本的なところは、とりあえず省いて、躓(つまず)いた点を中心に記述していく。

僕の場合は、USBスティック(ペンドライブ)のMacOS El-Capitanを使いインストールしようと思ったのだが、USBの設定で少し戸惑った。結局、焼いてあるイメージと、dmgの扱い、isoへの変換やらでまた躓いた。

ユーザをvboxusersグループに登録し、キーを追加した。

sudo gpasswd -a "username" vboxusers

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | \
sudo apt-key add - #(こっちのはうまくいかなかった。Oracleのサイトにdebian系の設定のしかたが書いてある、僕はオフィシャルの方法は試していない)
Oracle Official
https://www.virtualbox.org/wiki/Linux_Downloads

そして、OracleからでているExtensionPackのインストールが必要になった。これがないとUSB2.0や3.0が使えない。その際、インストールされていた、Virtualboxのバージョンが古くて、ExtentionPackのインストールが失敗した。最新版のダウンロードのためのapt用のリポジトリの登録やらなんやらをして、アップデートしたにはしたが、どこかでエラーが出て、結局Oracleから.debファイルをダウソして、再インストールした。(ExtentionPackは5.2版しか受け付けなかった。あと32bit版をインストールしていたのではないかという説がある。)
これで、ExtensionPackのインストールはうまくいった。

そして、MacからSierraOSをダウンロードして、パッケージを開き、dmgファイルをコピーして、バーチャルマシンに読み込ませて、スタートさせたけど、途中でフリーズ、てか処理進まなくなった。。isoイメージへの変換と、iMacのデバイスをターミナルからしなきゃいけない記述を見つけた。

とりあえずここまでで、一旦トライは終えた。

この記事も、きっと更新致す。

 

もう一度トライ

2018-10-12-Fri

ここのサイト
https://webnetforce.net/make-macos-bootable-iso/
を参考にdmgからisoファイルに変換した。

hdiutilとかちょっと何となくしか意味わからなかったけど、手順に従って進めると

/tmpディレクトリにHighSierra.iso.cdrというファイルができていた。

Ubuntuを立ち上げて
それを”mv”コマンドで HighSierra.isoに名前を変えた。

ここのサイト
https://webnetforce.net/macos-high-sierra-on-virtualbox/

に従って、仮想マシンの設定と、コマンドラインからのVBの設定をした。

そして、isoをマウントして起動した。
でも途中でフリーズしてしまった。

なんでだろう。

このサイトも参考にした
https://www.howtogeek.com/289594/how-to-install-macos-sierra-in-virtualbox-on-windows-10/

Ubuntuで外付けHDDがスリープしない件

hdparmコマンドの使用が一般的なようだが、僕の環境ではエラーで動かなかった。

SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

どうやら、SCSIやらATAやら、コントローラ、容量が大きすぎ(8TB)などの話になって、別のコマンドを勧められた。

hd-idleコマンド。インストール少しターミナルから実行するコマンド多かった。

ラズパイのセッティングに関するサイトに載っていた。
https://www.htpcguides.com/spin-down-and-manage-hard-drive-power-on-raspberry-pi/
頼みのコマンド hd-idle
http://hd-idle.sourceforge.net/

hd-idleコマンドが

/home/hd-idle

に作られていた。場所変えようかな。普通は/usr/localあたりなんか

追って更新する予定。

Javaコードの管理 その二: Git, Github, Maven, Eclipseの使用

rpart_plot

 

はい、「Javaコードの管理 その一: Git, Github, Maven, Eclipseの使用」に続き、その二でございます。
前回の内容というのは、GitとGithubの理解と、Eclipse上での実行でした。

やはり、公開することで、”仄暗い部屋で一人、ディスプレイのきらめきの中、メガネを光らせている人物”ではないことがわかっていただけるし、それこそ、クモの巣状に繋がりが広がっていくので、とても意味のあることだと思います。「Gitコマンドはターミナル上では小さな命令だが、アクセス性にとっては大きな一歩なのです」w。

そして、ここでMavenの登場が起こるのです。Eclipseの標準的なビルド、ディレクトリ構成を使っているだけでは、Javaアーキテクトとして、構造が把握できていない段階に留まっているのです。(まぁ数週間前の私もそうでしたが)ビルドツールに通じて初めて、ソフトウェア製品の作業工程が理解できるのです。

Mavenは、POM(Project Object Model)ファイルに予め指示を記述しておくことで、煩雑な作業を自動化し、製品のパッケージング、アップデートが簡単にできます。私の場合は、実行可能Jarを自動で更新して生成させたい、というのが今の課題です。

そのためには、Mavenのアセンブリプラグインを使う必要があります。その設定がまた簡単ではなく、POM中で使うオブジェクト(ファイル)の依存関係を理解せねばなりません。

 

オフィシャルガイド
https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

日本語
https://kengotoda.gitbooks.io/what-is-maven/preface/

イメージピクチャ
https://www.marketechlabo.com/r-decision-tree/

自由日記 平成30年9月27日(木曜日)身辺雑感

JAL-Tokyo-BW最近感じたこととしては、自分のすべきことに集中できているかというと、いまひとつというのが本音だということ。これはある意味、毎日のように感じている症状でもある。もちろん、集中できる時期と、そうではない時期というのは、かなりはっきりしていて(自分の経験上)常に目標に向かってモチベーションと実行を続けるというのは、無理な目標であるというのはわかっているつもりなのだけれど。楽しいもある、でも進むことの抵抗が半端ない。

それにしても、集中できていない。音楽制作や、DJも、けっこうな力を注いで日課にしたいと思っていても、なぜかスルリと逃げて行ってしまうことが多い。いうまでもなく、プログラミングにしても、思うように進めずにいるなと感じることが多い。

2018年という年、平成で言うと30年、もうすぐ元号が変わる。日本の世論はどう変わってきているのだろう。最近は、大きな社会問題というのはあまり語られていない気がする。むしろ時が立てば、みな忘れてしまうようなことが、ニュースなどで語られている気がする。例えば、年金問題や、日本の医療の問題、少子化、環境問題、育児の問題、エイズ・麻薬の問題、などなど、前はもっと長期的な絶望を感じるような話題が目についた。

情報の爆発で、人類が生み出す媒体というのは、ねずみ算式に増えた。だれかのツイートを、また誰かがツイートするように。教科書の知識を、誰かがブログで再配布するように。

いまはもう三十を迎えて、もうすぐ四年が経つ。社会の中で生きるということ、どこかの業界で生きるということ、生物とモノに囲まれて生きるということ、地球で、136億年(138億年か?)たった宇宙で生きるということ。

話がオーバーになりがちだけど、調和と、帰属、この二つの概念について考えていた。

アジアの未来は明るい。もちろん西洋も。時代はなんとなく解決していくと思う。
問題は絶えないし、それでも人類は今日も元気に動いている。
この時代を乗り切る(時代ってオーバー?)

参考・宇宙の年齢
https://ja.wikipedia.org/wiki/%E5%AE%87%E5%AE%99%E3%81%AE%E5%B9%B4%E9%BD%A2

Javaコードの管理 その一: Git, Github, Maven, Eclipseの使用 Code management of Java code ep1: Using Git, Github, Maven, Eclipse

最近集中的に、コード管理について考えていた。Jaydleという、野心的なアプリの公開を考えていて、やはりコード管理の問題が浮上したので。Jaydleというのは音楽のダウンロードアプリです。

Recently I focused on thinking about code management. I’m thinking about open to the public “Jaydle” which is my original ambitious application. “Jaydle” is music download application. It’s written in Java so maybe all-platform.

いろいろ勉強した内容というのは、最終的にはEclipseから、MavenとGitおよびGithubを自在に使うというのが目標なのだと思う。

I studied various things, that’s goal is maybe to use Maven, Git, and Github from Eclipse freely.

まずGithubから入ったのだが、その理解のためにはGitを先にしなくちゃならない気がして、コマンドラインからGitコマンドを練習した。このあたりのアプリケーションは、独自の用語を使うのがまず最初の壁だ。

First I tried Github, but to understand Github, felt I should start from Git, so I practiced Git commands on my terminal. These and similar else applications use original terms, so this is first wall to climb.

 

・リポジトリ - ファイルやディレクトリの状態を記録する
・ローカル - ほぼ自分の手元のマシン上に配置するリポジトリ
・リモート - サーバに配置して共有するためのリポジトリ
・コミット - ファイルやディレクトリの追加・変更を、リポジトリに記録する
・ワークツリー - 実際に作業をしているディレクトリ
・インデックス - リポジトリにコミットする準備をするための場所
・プッシュ - リモートへローカルの内容を書き込む
・プル - リモートリポジトリからローカルリポジトリを更新する
・クローン - リモートリポジトリを複製する

などの用語の知識が必要になった。

Repository, Local, Remote, Commit, Worktree, Index, Push, Pull, Clone

terms like above were necessary.
次にコマンド

Next Commands…

・git init  - 新しいリポジトリを作成する
・git status
・git add
・git commit - ファイルやディレクトリの追加・変更を、リポジトリに記録する
・git log
・git push - リモートリポジトリで自分の手元のローカルリポジトリの変更履歴を共有する
・git remote add
・git clone

などを使った。だいたいこれらで、コマンドラインからローカル(手元のコンピュータ)にリポジトリを作って、それをリモート(サーバ上の保管場所、Githubで作ったローカルと同名のリポジトリ)にプッシュ(アップロードすること)した。

Used commands like above. By these commands, I made local repository (it’s on your computer) from terminal and pushed (upload)  to remote (repository on the server, same name to local repository and made on Github).

そして、同じ操作をEclipse上で行う練習をして、次はMavenへと進んだ。

Then, I practiced to manipulate same things on Eclipse and proceeded to Maven…

 

参考・引用サイト

サルでもわかるGit入門
https://backlog.com/ja/git-tutorial/intro/intro1_1.html

“EclipseのRun Configrationのバグ取り” “How to debug Run Configration Error on Eclipse”

VaioからシステムバックでクローンしたUbuntuをimacで使っていて、移植から、エクリプスのJava実行でエラーが出ていた。いわゆる

main class not found error
(Could not find or load main class)

だった。

 

 

I’m using cloned Ubuntu by SystemBack( Linux OS backup software ) from Sony Vaio(note) to Apple iMac (late 2009, intel corei7-2600 3.40GHz Quad core, Memory 12GB(one of 4GB RAM is broken now, HDD 1TB)

And since cloning, Eclipse generated Running error when executing, that is to say

main class not found error
(Could not find or load main class)

 

 

一時しのぎの方法は、パッケージエクスプローラーから、ファイルを右クリックして、コンテキストメニューから

Run as Java application

を選択。

${WORKSPACE}/.metadata/.plugins/org.eclipse.debug.core/.launches

以下の起動設定ファイルを消去することで解決できた。

Oxygenを使っていて、Photonを試したら動いたので、心動いたが、Oxygen続けようかな。

 

 

Temporarily, choose “Run as Java application” by right clicking file at Package Explorer will solve this problem.

${WORKSPACE}/.metadata/.plugins/org.eclipse.debug.core/.launches

Deleting files below this path will clear “Launch configuration” and solved this problem certainly.

Just using alternative Photon version solved this problem from Oxygen version, and I once thought migrate to Photon, but I will continue Oxygen version.

Occasionally Project > Clean will solve this.

参考サイト
Reference sites

英語
English

三種類のmain class not found errorの解決法
http://www.java67.com/2016/09/3-ways-to-solve-eclipse-main-class-not-found-error-java.html

実行コンフィグファイルの消し方
https://stackoverflow.com/questions/9247089/how-can-i-clean-up-eclipse-run-configurations

日本語はここ
Japanese

http://moki-mokki.blogspot.com/2012/06/eclipserun-configuration.html

HDDからSDDへの移行 On NEC LaVie

La Vie というのはフランス語で、人生とか、生活、暮らしとかいう意味みたい。
女性名詞の冠詞Laに英語ではLifeに近い、Vie。

ddコマンドで楽勝かと思っていた匡孝だが。。。笑

まずXubuntuを遊びでインストールしてみた。GPTでパーティションテーブル作って、普通に起動できた。
アプリの立ち上がりとか、マジで速くなった。OSもね

で、もうS.M.A.R.Tで警告がでていた元のHDDのデータを、一旦WesternDigitalのWD40(4TB)に移してから、てかそのWD40は外付けケース買って、外付けHDD化してあって、それをSDD付けたLaVieに繋げて、ddコマンドでデータを流した。(一旦Xubuntuは消した。120GBのSDDで、ddコマンドするスペースあまりなくて。。。)

sudo dd if=/dev/sdb3 of=/dev/sda2 bs=64k conv=noerror,sync status=progress

みたいな感じで。

 

でもWindowsは起動しなかった。

ブートパーティションに何も書いてなかった。
BIOSとUEFIの違い、MBRとGPTの違い、ややこしいし、Windowsのブートローダわかりにき〜。笑MBRでまたパーティションテーブル作って、Winのデータコピーしなおしたりした。

でも、XubuntuはGPTで起動できたなぁ。

Grub消すんじゃなかった。
WinREって奴、ブート領域かと思って、またddコマンド(手間かかる〜)でコピーしたけどだめだった。

a disk read error occured
Press Ctrl + Alt + Del to restart

XubuntuのライブDVDはなぜか調子悪く、LubuntuのライブDVDで、いろいろ詮索。
Windows10のライブDVDも飛び交う。

なんかLubuntuのGParted、パッケージ足りなくて、WinREの領域、エラー出ていた。
chkdsk /f をウィンドウズで頼む、とエラーメッセージが出ていた。

はい、でも、それって何ドライブですか?笑 Cドライブじゃないでしょ?ちょっとわからなかった。

Grubインスコしようかな。

それとも、MBRにWindowsのブートストラップローダとかいうもの入れるか。

Palit 2.5 SATA 3 120GB UVS10AT-SSD120

手間取っとります。🙊

参考にしようと思っているサイト。

http://www14.plala.or.jp/campus-note/vine_linux/install/boot_sequence.html
ブートの話、わかりやし〜

https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898510(v=vs.85).aspx
microsoftさんの資料