Javaファイルをコンパイルするにjavac
コマンドをよく使うが、この中でデフォルトではcom.sun.xml.internal
パッケージを無視する。
上記ブログではclasspathに明示的にrt.jarを入れるとあるが、 Ant経由だとどうもだめみたいだ。。
ちゃんと有効にするフラグがあるので紹介。
javac -XDignore.symbol.file Test.java
黒魔術っぽくて敬遠していたawkをちょっと触ってみると、やっぱり黒魔術だった
# 基本1 標準出力を空白文字区切りで分割し、後のスクリプトっぽい部分で一つ目なら$1、二つ目なら$2と書く。 ls foo | awk '{print $1 $2}' # 基本2 改行の分だけ動作を繰り返す # ls -1 ... ファイルの一覧を改行区切りで標準出力 ls -1 foo | awk '{print $1}' # 基本3 スクリプトっぽい部分"{ ... }"は bashではない。 # 独自(C言語っぽい?)文法。 ls -1 foo | awk '{ print "----- " $1 " -----"; # コマンドの字句を作成し、変数に保存 command = sprintf("cat foo/%s", $1); # bash実行。 buf = system(command); # ファイルディスクプリタを閉じる close(command); print ""; }' # 基本4 演算できる。なんだこの気持ち悪いインタプリタ echo 1 | awk '{ print $1 + 1 * 2 }' # 基本5 if もループもできる。 echo 1 | awk '{ for (i=1; i<100; i++) { sum += i; if (sum >= 100) { break; } } print "i:" i " sum:" sum; }'
スクリプト置くならえんやこら手続きがいるけど、手順書に乗っけるだけならば検証作業はいりませんなぁ(ゲス顔) その代わり、結構遅いんやねこれ。。
grep "" dir/*/*/*/*
で、400byteのファイル×10万個ぐらいひっかけると、「引数が長すぎます」といわれて死んだ。
awkを使って、動的にコマンドを生成しつつ回避。
#/bin/bash # ファイルが 数万個のところでlsとかすると、「引数が長すぎます」とエラーが出る。 # awkを使って疑似回避。 # 非常に重たい。 ls -1d msgs/*/* | awk '{ command = sprintf("grep ERROR %s/*/*", $1); system(command); close(command); }'
日本なんでもIT展覧会 CEATEC 2016、いってきました。
今年のキーワードはズバリ「IoT」。 去年もIoTの前哨戦があり、各企業ができる限りの方向性を展示したのち1年あけての成果報告会といったところ。
エリアが2つに分かれていて、自分は技術出展のほうをメインで回っていた。 一般客というよりかは、ほんとうに企業人や学生、研修、研究者が主。 手を取りあうチャンスでもあってマニアックなブースが多く、非常に見ごたえのある展覧会だった。
今回のテーマ「IoT」を飾るごとく、IoT関連の出展がいっぱいいっぱい。
まず大きく一角を占めていたのが、部品や端子といったハードウェア組み込みモジュールの展示エリア。
製品のバリエーションの広さがIoTを用いたソリューションの新規性や安定した事業の難しさを表してた一方、 何より興味深かったのが製品のパターンが明らかに見て取れたことだ。
どこにでも適応できるようにするにはもちろん、どうやって、自立稼働できるようになるか、メンテのコストが下げれるようになるか、の創意工夫がいくつも見られた。
製品を見る限り、小型は十分なんだろうか?例えば倉庫で稼働する製品なんてオーバーキル相当だし(単価はどうかしらんけど)、一体型で製造したらもうなんでもはっつけれるサイズになりそう。
残る課題は電力と電源、あとは長期間の使用と稼働維持がどうなんだろう。例えば農業で使う場合、それなりの耐性が必要なはずだ。 (話を聞いたらちょっとはわかったんだけど、時間がなくても見るだけでスルーしていた。。)
IoT関連のソリューションをいくつか見た。
・・・が、この辺りはあまり見ごたえがなかった。 どれもこれも要約すると「IoTで無人で監視して、画面から管理者が一覧を見る」または「開発を支援するためのソリューション」にことにつきる。
考えてみればそうだ。
機械を小型化して色んなところに適応するっていうのは、つまり自動で何かやってくれることを期待するわけで、IoTはついでにネット繋げて遠距離間で連携しあうとこがミソだけど、ネットワーク形態ってクライアントサーバ(Master-Slave)とP2Pぐらいしかない。 で、今のIoTでサーバーとか自律した機能を持たせると電力がもたず、必然的にクライアントになってしまう。
IoT製品自体が(または単独で)ユーザーにメリットを与えるのは非常に難しく、バックにソフトウェアサービスがあってこそ初めて現実的な事業になる。
ということは、2つに1つだ
で、それぞれのモジュールがやることは
ぐらいだ。それは、要するに人が出向くことがコストに合わないような用途に適応することに等しい。(コスト的不可の解決)
「IoTができる製品を作る」だけでは儲からないのだ。 今回の展示があるように、情報量を集めて規模を食えるサービスを別途開発して売ること、はたまたIoTに必要な商材を買う一次生産者的なビジネスが最もパイが大きい。 一次生産者は無理なので、「IoTを作る」「バックエンドのサービスも作る」両者を満たす業態が今後増えていくはずだ。
技術ブースであまり数はなかったんだけど、 IoTで集めた情報をまとめる位置づけとしてAI関連の出展がちらほら見られた。
AIといっても、「ニューラルネットワークによる学習」「アルゴリズム実装による模擬的な人工知能」「データサイエンス」がごっちゃになっている感じだけど。。(小うるさいって?)
さすがにこちらはまだまだ研究しか出ていなく、大学などが未来を感じる研究成果を発表する程度だった。
データをまとめて価値を出す、という位置づけてデータサイエンスの事例がいくつか見られた。(名前わからないけど、リクルートの方の講演もちょっぴり見た。) 人材が足りていないと噂の通り、競争の産物というよりは今の事業や作業をいかに正規化・標準化するかに絞った成果が要だったが、じゃあ人が増えて、シビアな事業になって、っていう環境はまだ遠く予測できない印象だった。弁護士みたいにならなければいいけれど・・・。
AIやデータサイエンス分野とIoTは、端っこからのデータ生産者・データ統計からのサービス生産者で一見組み合わせられるように見えるが、 IoTで生産したデータを直接突っ込んだところで、役に立つのは、気象温度といった定期的に測定するものや一部の研究分野に限られるんだろう。 公共分野で近い開発をする場合、ちょっと知識あったほうがいいのかな。
成約ありきのブースを展開していた日本人の傍ら、海外からの出展社も多くみられた。
中国や台湾は10年前や昭和を思わせる製品をひっさげてきたが、その価格が衝撃的だった。3Dプリンタ、1台20,000円。 まさにここの勝負だ、ということが見て取れる。
ほかにも海外の研究や事業のブースが、ぞんざいな扱いだが一角にあったが、 内容が非常に面白い。
3DSignalsという企業のプロジェクト概要から抜粋すると 「超音波データを収集するIoTセンサーと産業機械のアコースティックエミッションをビッグデータ解析するプラットフォームを開発している。」 とのことだ。
つまり、超音波から産業機械の状態を取得して、異常パターンの検出をアラートであげるプロジェクト。 非常に先進的で唸った。モジュールありき、他社連携ありき、既存路線の拡張が張り出される日本語の中、本当に挑戦的な内容が書きだされてあった。
ブースに存在感はなかったが、アイディアは本物だ。後ろにいるのはもっとでかいんだろう。
各企業や事業の足並みがそろいつつ、着実に次世代まで進んでいることが目に見えてわかったが、サプライズがあるような出展がなかった。今年は平日のみの開催となった意図なのだろうか。
もし、来年も名刺交換会になるようであれば、 行くのはちょっとためらう。
書くネタがないのでとりあえず割割り増しましで。
Workbook = 今開いてるExcelファイル1個。
全体を保持するコレクションがApplication.Workbooks
。Applicationは省略できるので、単にWorkbooks
とも書ける。
Function FindBook(ByRef bookname As String) As Workbook For Each book In Workbooks If book.Name = bookname Then set FindBook = book Exit Function End If Next book set FindBook = Nothing End Function
Office2010以前だと、1つのウィンドウがあってその中にBookの子ウィンドウがたくさんある実装だが、 Wookbooksは、その1つのウィンドウ内のものだけを保持している。(らしい) 例えばxlsmとxlsを同時開きしても、互いに別のアプリのウィンドウでVBAから見えないため悲しみが生まれる。 これなんか解決策あるんかな。。
Workbook.Nameは、拡張子も含む。(タイトル部分ママ)ただし、未保存のものは拡張子のない「Book1」みたいな感じになる。
Ubuntu、サービス上げ下げsystemd
やんか。
serviced
に慣れたおっさんに辛い。(なんかビミョーにタイプしにくいんだ。。)
サービスあげる
systemctl start <サービス名>
サービスを止める
systemctl stop <サービス名>
サービス再起動
systemctl restart <サービス名>
サービスの状態
systemctl status <サービス名>
ログ(エラー詳細など)
下記「systemctl status
で出てる実行ファイルを直接ぶっこむ。
journalctl <Matches>
詳しくは知らないけど、旧来のエコシステムが軒並みFuckだから、その一環できれいなsystemd
作った経緯があるみたい。
類似の機能、あといい感じの機能があるんじゃないかな。