2013年10月25日

特別であるということ

人は「自分は特別である」と思いたがります。たぶん。

例えば、「私は何でも美味しく食べられる」といった人がいたとします。
Javaのメソッド風に書くと以下のようになります。
PositiveFeedback eat(Food food) { ... }

何を食べても良い感想しか返さない。これは特別な感じがします。
素晴らしい特技・才能と言っても良いでしょう。

ただ、よく聞くとアレルギーでどうしても食べられないものがあるそうです。
メソッドを書き直しましょう。
PositiveFeedback eat(Food food) 
throws AllergyException { ... }

こんな感じでしょうか。アレルギーは仕方ありません。
え?なんでしょうか。今、思い出した?
食べると吐いてしまうくらい嫌いな食べ物が1つだけある?
他の食べ物は全部好き?
…そうですか。はい、わかりました。
PositiveFeedback eat(Food food)
throws AllergyException, HateFoodException { .. }

こうですね。ちょっと例外が増えてきました。
でも、いくつかの例外を除いて美味しく食べられるというのは素晴らしいことです。
あ、そういえば、この間一緒に食事に行った時、「マズイ」って言ってませんでしたっけ?
あはは、言ってましたよね。確かにあそこの料理は不味かった(笑)
Feedback eat(Food food)
throws AllergyException, HateFoodException { ... }

こうなりました。
普通じゃねーか、ばーか。

ということにならないように気をつけましょう。
posted by t2low at 13:44| 日記

2013年07月02日

Googleアカウントが復元された話

Googleアカウントを消されてしまった話の後の話です。
タイトルの通り、先日削除されたアカウント(以降、旧アカウント)が復元されました。
復元された理由はわかりません。
Googleから復元したという連絡はありませんでした。

運が良かったです。
メールクライアントから旧アカウントの設定を消さずにおいたおかげで気付くことができました。
アカウントを削除された後、起動する度にエラーダイアログが表示されていたのですが、その日は特にエラーになることなく起動出来ました。
どういうことかと受信トレイを見てみると、その日のメールが受信できていました。
急ぎ他のサービスも利用できるか確認してみて、どうやら復元してもらえたらしいことを知りました。
6/20の2:00頃でした。

Gmailをよくよく確認してみると、アカウントが削除されていた(と思われる)期間のメールは受信できていませんでした。
消される前の最後に受信したのが5/31 3:13で、その次のメールが6/19 14:29になっています。
この期間、確かに消されていて(停止されていて?)、19日の昼ころ復元してもらえたものと思われます。

しかし、復元したという連絡がないというのも恐ろしいですね。
せっかく復元してもらえても気付かない可能性があったということですものね。
Googleアカウントが消された人の中には、復元してもらえているのに気づいていない人もいるんじゃないでしょうか。

ちなみに息子のちんちんが写った写真はインスタントアップロード上にはありませんでした。
Googleが消したのか、それともアップロードされたという事自体、自分の勘違いだったのか…。
はっきりとは覚えていませんが、アップロードされてしまった気はするのでGoogleが消したのだと思います。
Googleが写真を消したのだとすれば、アカウントが削除された原因はやはり息子の写真だったのでしょうか。


理由がわからないというのはモヤモヤしますね。
削除されたのもそうですが、今回の復元された理由もわかりません。

前回の記事を多くの人に読んでもらったことで、Googleの中の人の目にも留まり特別対応してくれた
→これはなさそう。

・アカウント削除の判断が間違いだった
→これもないでしょう。

・時間がかかったが、以前出していた問い合わせのどれかに対応してくれた
→これは可能性としてはあるかも知れない。けど、返信がないから違う気もする。

・原因となった画像を削除したから復元した
→単純に画像削除で済むものではないような気がする。

・上記のような理由を総合的に考えて、児童ポルノ保持が目的ではなかったと判断した
→Googleが人によって基準が異なるような対応をするというのは想像がつかない。けど、そうならちょっと嬉しい。

やっぱり考えてもわかりません。
モヤモヤしてはいるものの、アカウントが復元されたことは素直に喜んでいます。
これまでのデータが使える、残っているということの他に、児童ポルノだと判断してアカウントを削除したGoogleが、再びアカウントを使えるようにしてくれた、ということが嬉しいです。
「児童ポルノ」として写真を撮ったわけではない、ということをわかってくれたような気がするのです。
これからは気をつけてGoogleサービスを使っていくつもりです。

あと、ご心配いただいた皆様、どうもありがとうございました。
皆様も同じようなことにならないようお気をつけください。
タグ:Google
posted by t2low at 03:04| 日記

2013年06月16日

Googleアカウントを消されてしまった話

先日、普段使っていたGoogleアカウントを突然消されてしまいました。
使っていたサービスは、メール、カレンダー、リーダー、Google+、Android Developer、ドライブ、Play storeなどなど。
もう生活の一部でした。

変だな、と思ったのは5/31の朝のことでした。
使っていたAndroid端末でGoogle関連のアプリが使用できなくなっていたのです。
ブラウザからログインしてみると、「削除」されたことが書かれていました。
しかも理由は「違法な性的コンテンツが含まれるため」とのことでした。

心当たりがなかったので、「削除が間違いだと思う人用のリンク」から問い合わせを行おうと考えました。
しかし、そのページがエラーで利用できませんでした。
やむを得ず、Googleに電話をかけてみました。

もうあまり覚えていないのですが、自動応答の音声にしたがってボタンを押していくと、電話がつながりました。
女性でした。Googleもサポート的な人を雇っているのでしょうか。
アカウントが消されたことは間違いではないかということ、問い合わせフォームが利用できなかったことを伝えたところ、担当者に転送するから問い合わせフォームのエラー画面をキャプチャしてメールを送れとメールアドレスを教えられました。
キャプチャを撮り、アカウント削除が間違いのはずだとメールを書き、送信しました。

その日の夜、ふと思い出しました。
「違法な性的コンテンツ」に該当するかもしれないデータがあったことに。
それは息子(4際)がちんちんを丸出しにしていた写真でした。

アカウントが削除された数日前、息子が「ちんちんが痛い」と言っていたため、ズボンとパンツを脱がせて、様子を見ていました。
その日は暑く、多分蒸れたのでしょう。赤くなっていました。
さて、その素人診察の後、息子は全然パンツを履きませんでした。
何が可笑しかったのかちんちんを丸出しにしたままケタケタ笑っていたのです。
その姿が面白かったので、ふざけ半分つい写真を撮ってしまいました。

これだけなら削除はされていなかったでしょう。
自分がまずかった(と思っている)のは、Google+のインスタントアップロード機能がONになっていたことです。
意識せず息子のちんちん丸出し画像がインターネット上にアップロードされてしまっていたのです。
公開はしていなかったので、単なるバックアップ程度にしか考えていなかったのですが、それすらもまずかった可能性があります。
「児童ポルノ」としてGoogleに認識されてしまったのではないでしょうか。

数日待ちましたが、Googleからの返信はありませんでした。6/4でした。
修正されたかも、と再度問い合わせフォームを開いてみました。別のブラウザでアクセスしてみたところ、エラーなく使えることがわかりました。
もしかしたら、初日に発生していたエラーもブラウザが原因だったのかも知れませんね。
問い合わせフォームからも問い合わせを行いました。

問い合わせフォームからの問い合わせに対しては、数時間で返信がありました。
内容は以下のとおり。自動応答でしょうか。

> お使いのアカウントは Google の利用規約に違反したため無効となりました。以後ア
> カウントに再びアクセスできるようにすることはできません。Google のポリシー
> と、アクセス制限やアカウント無効化につながる規約違反の種類について詳しくは、
> 以下のページをご覧ください。
> http://www.google.com/intl/ja/+/policy/content.html

このメールに対して返信をしました。
きっと返信はこないだろうと期待はしていませんでした。
実際に10日ほど経過しましたが、返信はありません。

なお、アカウントは削除されましたが、いくつかのデータはサルベージできました。
・メール → Sparrowがローカルに保存してくれていた。
・カレンダー → すべてではないが、別の人と共有していたデータは残った。
・写真 → Google+以外にもDropBoxなどでもSyncしていたので問題なかった。
・リーダー → リーダークライアントアプリに残っていた。
・Androidアプリ → Androidに設定したアカウントを消すまでは使えるようだ。

Googleドライブのデータは残念ながらバックアップがなく、完全に失われてしまいました。
Googleドライブのクライアントさえインストールしておけば、ローカルに残っていたかも知れません。
Bloggerに投稿したいくつかの記事も消えてしまいましたね。
残念です。


今回のアカウント削除が辛かったのは以下の点です。
・削除の前の警告が全くなかったこと
・削除が覆らなかったこと
・息子のちんちんが写った写真が児童ポルノと判断されてしまった(可能性が高い)こと

アカウントは新しく作り直しました。
今回はGoogle+のインスタントアップロード機能はOFFにしました。
お子さんがいる方でインスタントアップロードをONにしている方はお気をつけください。

※具体的な削除理由はわからないので、もしかしたら息子の写真が原因ではないかも知れません。他に思い当たるものはありませんが。

7/2追記:アカウントが復元されました。
tappli blog: Googleアカウントが復元された話 http://blog.tappli.com/article/70311479.html
タグ:Google
posted by t2low at 23:32| 日記

2013年06月06日

[Mac] KeyRemap4MacBook と Control単押しでのEsc

Android studio用のvi風操作プラグインについてつぶやいたら、こんなご意見いただきました。




KeyRemap4MacBookというアプリをインストールして簡単な設定するだけで実現できるらしいので、さっそく試してみました。

アプリはこちらからダウンロードさせていただきます。
KeyRemap4MacBook - OS X用のソフトウェア
ダウンロードしたら、インストーラを使ってインストールします。簡単です。

とりあえず自分が必要なControl単押しのときはEscとして扱うための設定は…

Control_L to Control_L
(+ When you type Control_L only, send Escape)

この項目にチェックをつけるだけでした。

control_to_escape.png

慣れるまでは設定したことすら忘れていそうな気がしています…。
タグ:Mac
posted by t2low at 01:10| Mac/iOS

2013年05月10日

[Mac] 職場MacへHomebrewとgitをインストール

自分の書いた過去の記事を参考に会社のPCへHomebrewのインストールを試みました。
http://blog.tappli.com/article/57170851.html

でも、インストールのコマンドがうまく動きません。
本家ページを見に行きました。
http://mxcl.github.io/homebrew/

コマンドが変わったんでしょうか。
以下のコマンドで正常にインストール出来ました。

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"


インストール後の動作確認。OKですね。

$ brew help
$ brew update
$ brew install git


gitのインストールもOKです。
ただ、このままだとHomebrewでインストールしたgitを使わないので、/etc/pathsを書き換えます。
/usr/local/bin が一番上に来るように変更して保存。

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin


これでHomebrewでインストールしたgitが使えるようになりました。
タグ:Mac git Homebrew
posted by t2low at 22:00| Mac/iOS

2013年02月01日

[Android] バックグラウンドで動作しているアプリ

Twitterで流れてきたのですが、以下のコマンドでバックグラウンドで動作しているアプリがわかるそうです。

adb shell dumpsys alarm

実行してみると、いろんなアプリが動作していることがわかります。
こういった情報はどこから仕入れてくるんでしょう…。
dumpsysに指定できるのは、dumpsysを無印で実行したとき先頭に表示される一覧のどれかということなんですかね?
タグ:android ADB
posted by t2low at 02:06| Android

2013年01月25日

[Android] DexFileというクラス

DexFileというクラスを見つけました。
http://developer.android.com/reference/dalvik/system/DexFile.html

おもしろそうです。サンプルコードを書いてみました。
apkを読み込んで、そのapkの中にあるクラスファイルを一覧するだけの簡単なものです。
起動するとファイルの一覧が表示されます。「/system/app」のファイルです。
apkがたくさんあって、読み取り権限があるところということで「/system/app」を指定しています。
ファイルをクリックすると、そのapkが使用しているクラスの一覧を表示します。

ソース - DexFileSample.zip
https://www.box.com/s/8odcwuzwlrqzfl9pr4q0

Apk - DexFileSample.apk
https://www.box.com/s/5tbw6opngxmzb6u4vgsa

難読化しているアプリもあれば、そのままのアプリもありますね。
パッケージの分割方法や、命名規則みたいなものが読み取れて面白いかもしれません。

しかし、このクラスは一体どういった用途で使うんでしょうか?
一般的なアプリに組み込んで使う方法が思い浮かびません。
タグ:android
posted by t2low at 02:07| Android

2013年01月12日

[Android] ToneGeneratorで鳴らせる音

Androidでbeep音を鳴らすときはToneGeneratorを使うようですね。

http://developer.android.com/reference/android/media/ToneGenerator.html

どんな音があるのか気になったので確認するためのサンプルを作ってみました。
tonegenerator_sample.png
↓プロジェクトはこちらです。
https://www.box.com/s/gei8ob2qo6jszuxvlwmg

ToneGeneratorでTONE_から始まる定義をリストアップして、タップでその音を鳴らすようにしています。beep音を確認したい方は是非どうぞ。
タグ:android
posted by t2low at 02:12| Android

2012年11月16日

[android] ネットワークの判別

Android端末がどのネットワークに接続しているか判別する方法を調べました。

ConnectivityManagerのgetActiveNetworkInfo()を使えば良いようです。
ネットワークに繋がっていないときはnullが返りました。

返却されたNetworkInfoのgetType()で接続ネットワークが分かります。
種類はConnectivityManagerにTYPE_XXXとして定義されています。

ISW12HTで試したときは以下のようになりました。

・3G → TYPE_MOBILE
・Wi-Fi → TYPE_WIFI
・WiMAX → TYPE_WIMAX
・機内モード → (null)

ただ、LTEの端末で試してもTypeは変わらず。

・LTE → TYPE_MOBILE

判別には使えないのかとも思いましたが、NetworkInfoにはgetSubtype()というメソッドもありました。
LTE端末で返却される値は13。
合っているかどうかはわかりませんが、おそらくこの値は TelephonyManager#NETWORK_TYPE_LTE だと思います。

サンプル・コードはこちら↓
https://www.box.com/s/bil4ig0a284vhl5dw1oy
タグ:android
posted by t2low at 01:00| Android

2012年08月26日

[Ruby] 自分でインストールしたSQLiteを優先して使う

homebrewでsqliteをインストールしたところ /usr/local/bin にインストールされました。
ただ、これだとプリインストールされていたsqliteが使われてしまいます。
そこで…。

Homebrewを快適に使うために設定してる4つのこと | Macとかの雑記帳
http://tukaikta.blog135.fc2.com/blog-entry-208.html

こちらに書かれていた通りに「/etc/paths」を書き換えました。
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

.bashrcで書き換える方法というのもあるらしいのですが…?
このMacは自分しか使わないし、とりあえずはこれで良いや。
タグ:SQLite
posted by t2low at 23:28| Ruby