2016年3月2日水曜日

EclipseでJSONでエラーが出る

新しいEclipse環境(MARS)をセットアップ。
すると、今までの環境(June)で問題なかった箇所でエラーが出るように。

しかもJSONデータで。意味がわかりません。

Errors running builder 'JavaScript Validator' on project ....

ググってみると、以下がドンピシャでした。
Javascript Validator problem in Eclipse

ValidationのJSON Syntaxで、「Use strict validation for JSON syntax」を外すと問題なくエラー0。

2016年3月1日火曜日

Eclipseで文字列リテラルでエラーになる

新規にEclipse環境を構築して、既存プロジェクトをインポートしたらエラーの嵐。

これがビンゴでした。
文字列リテラルがダブル・クォートによって正しく閉じられていません

設定までは行っていたのですが、エディターとか触っても変化せず。

変更後、クリーンで無事エラー0になりました。

2016年2月18日木曜日

Excel VBAでエラー1004が出る

Excel VBAで、あるフォルダー下のExcelファイル群について、順番にファイルを開いて値を取得する、という処理を書いていました。

そんな中、以下の箇所で、エラー1004が発生。


Workbooks.Open [ファイル名]

何度繰り返しても同じです。
調べてみると、マイクロソフトのサポートに情報がありました。
Excel で、プログラムを介してワークシートをコピーすると「実行時エラー 1004 」が発生する

定期的に保存しなさい、とのことです。
なので、上記処理の前に以下を追加。

Application.ActiveWorkbook.Save

ですが、改善されません。
VBAでのファイル読込エラーの対応方法

On Errorでエラー処理する、と書いていますが、それはとっくにやっています。どうやら、通常にはエラーハンドリングされないケースのようです。

同じように、1000以上のファイルを開く、という処理は別のプログラムでやったことがあり、そのときには何の問題もなく動作しましたので、理由が思い当たりません。
何度も試して諦めかけていましたが、上記リンク先にある以下の一文を念のため追加して実行。

Application.ScreenUpdating = False


。。。上手く行きました!!!

うーん、よく分かりませんが、Excel VBA(特にExcel固有のWorkbookとか)はいろいろと誤動作がまだあるようで、おまじないが必要な状況のようです。

2016年2月11日木曜日

SIMフリーiPhonse5sをiOS9.2.1にアップグレードした結果

iOS9へのアップグレードが可能になってから半年近く経とうとしていますが、今までアップデートを放置してきました。動かなくなったら嫌なのと、いろいろと忙しかったからでしょうか。

という訳で、週の半ばの休日ということもあり、アップデートを敢行。いつの間にか、9.2.1まで進んでいるようです(ということで、アップデートで気づいた点は、9.0、9.1、9.2のいずれから含まれるようになったかは定かではありません)。

いつも通り、OSアップデートには自宅の無線LAN環境で15分程で完了。接続についても、WiFi、LTE共に問題なし。
以下、いくつか気づいた点です。

1. Siriの画面がナイトライダーみたいになっている
Siriを起動すると、待ち受け画面(というか音声認識状態)が横棒になっていました。話すと、音声認識状況が周波数表示みたいな感じで表示されます。なんか、ナイトライダーみたい。

2. ホームボタンをダブルクリックするとメニュー表示が左⇒右ではなく、右⇒左になっている
この変更は結構戸惑いました。ホームボタンをダブルクリックすると起動中のアプリが選択できた(できる)のですが、
・従来は、ホーム画面が一番左だったのが、ホーム画面が一番右になっている
・起動中アプリが並列に表示されたのが、 カードが重なるみたいに順番に表示されている

という感じに変わっています。何なんでしょうね、この変更は。

3. ホーム画面から更に左にスワイプすると、新たな画面が表示される
これも結構煩雑です。間違って操作して表示してしまうのですが、その度にiTunesへのサインアップを求められます。いちいちこれをキャンセルするのが面倒。最初の5回くらいはこの状態が続きました。今は、このサインアップは表示されなくなっています。
よく使うアプリとか、ニュースとかが表示されるようですが、何の画面かはよく分かりません。

4.「Find Friends」と「Find iPhone」のアプリ追加
今回は2つのアプリが追加されていました。
「Find Friends」は、登録すると、同じくアプリに登録した友達の居場所が分かる、というものらしい。自分の居場所を常に知られるのは好きではないので、当然登録しませんでした。
「Find iPhone」は失くしたときの検索用?これも良くわからないので保留。


お約束ですが、言語設定変更時のスピードをチェック。やはり、遅いままのようです。以前よりも多く時間がかかるようになったのは気のせいかな。


とりあえず、気になったところは以上です。

2016年1月26日火曜日

Excelで非表示のシートを表示する

とある、他人が作ったマクロ入りのExcelを修正する作業が舞い込んで来ました。

1つだけシートがあり、そのシート上のボタンを押すと、必要な処理をしてくれる、そんなファイルです。

で、マクロの編集メニューからVBA編集画面に飛んで見てみました。ボタンを押した際の実行関数はモジュールにまとまっていたので、こちらを拝見。

で、ソースコードを読んでいくと、「いろんなシート」をリフレッシュして、最新データを取りこんでいるようです。

いろんなシート???

先に書いたように、ファイルには1シートしかありません。他のシートはどうやって隠されているのか。何かパスワードロックがかかっているのではないか。。。

と疑いましたが、以下の手順で簡単にハッキング成功。
見せたくないシートを非表示にしたい

あまりに簡単な方法でしたが、すっかり騙されたので、備忘のため描いておきます。

2016年1月22日金曜日

NFCの規格

AndroidでNFC通信によりデバイスからデータを読取ることをしていました。
で、結構、

機種同士により、相性がある
という話をよく耳にしました。
1つは、読取り位置というか、機種によりスウィートポイントが異なるようです。これは何となく理解できます。もう1つは、機器により通信できない、というもの。そんなものかな、と思いつつ、気にはしていなかったのですが、自分のやっているケースで見事に発生。
FelicaだとOKだけど、RFIDだと駄目、みたいな。

そんなこんなで、規格自体を調べてみることに。

【国際標準規格】NFCの規格と採用例
NFCについてのまとめ
NFCの定義

要するに、NFCと一口にいっても、IP-1(ISO/IEC 18092)とIP-2(ISO/IEC 21481)という種類があるようです。Felicaとは、デバイス的にはどちらでも通信できるが、RFIDとは、IP-2でないとデバイスレベルですら通信できない。

あと、Felicaのみ対応のNFC、なんてのもあるようで、『NFC』という言葉だけでは、どのISO規格に対応しているのか、分からない状況です。
近距離無線通信
NFC phones: The definitive list

いくつかの製品情報で検索してみたのですが、メーカーのページにも、『NFC対応』とだけ記載しているだけで、IP-1(ISO/IEC 18092)なのかIP-2(ISO/IEC 21481)なのか、はたまたFelica(ISO/IEC 18092)だけなのか、記載はないようでした。


まあ、日本のスマートフォンは、Felica対応(のみ)から始まっているようですが、徐々に、少なくともIP-1(ISO/IEC 18092)、続いてIP-2(ISO/IEC 21481)対応の方向に向かっているような気がします。あくまでも希望的観測ですが。

ちなみに、iPhone6/6sの「NFC」はMIFARE(ISO/IEC 14443)である模様。

2016年1月2日土曜日

Excel VBAで行の挿入に失敗する

年が明けました。
とはいっても、残念ながら、昨年し残した仕事がなくなった訳ではありません。
という訳で、正月早々から、プログラミングをしています。

今回はExcel VBA。Excelの資料を自動作成する、というのに取り組んでいます。
これまで、Excel VBAは結構使ってきましたが、どちらかというとデータ処理結果を残すのにExcelという表形式が適していただけで、主にVisual Basic同様の感覚で使っていました。相違点といえば、WorksheetとCellsを指定するくらい。
ただ、今回は、Excelファイルを雛形からコピーして、セル書式を定義し、データ量に応じて表の行数を制御する、といった、Excel寄りの内容で、正直、あまり経験はありません。

ということで、いつもの如く、先達たちの知見をGoogle先生から学びます。

ファイルコピーとかは難なく正常に動作。が、行の追加で

Application.ActiveWorkbook.Sheets("Sheet1")..Rows.Insert

とすると、1004エラーが発生してしまいました。


エラーメッセージを読んでも訳が分からないため、以下のそれぞれの記事を参照。
エクセルのVBAでの行の挿入について
エクセル VBA で「実行時エラー '1004': Range クラスの Select メソッドが失敗しました。」
Office TANAKA - Excel VBAの実行時エラー
Error message: To prevent possible loss of data, Microsoft Excel cannot shift nonblank cells off the worksheetRuntime error 1004 when inserting rows via VBA


上記を読んでいて分かったのは、1004エラーにはいろいろな種類があるということ、行の追加を行う際にはいろいろと内部的な処理があるということでしょうか。

・行挿入前にファイルを保存する
・xlDownを指定する

等、試みたのですが、いずれも成功せず。

正月早々、これは縁起が悪い、と、ちょっと諦め気味だったのですが、初歩の初歩に戻って1つの実験をしました。それは

『マクロを記録してみて、どんなコードが生成されるか確認する』

です。 これを試してみたところ、こんな感じでコードが生成されることを確認。

    Rows("8:8").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

で、結局、これに倣って修正するとうまく動きました。
一応、今年の初仕事(初内職)は無事完了。