ある日突然、EC2からRDSへのアクセスがブロックされるようになった。

error: 'Host 'hogehoge.compute.internal' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts''

どうやら、コネクションエラーが多数発生したため、当該インスタンスからの接続のみを拒否している模様。

unblock with 'mysqladmin flush-hosts''

と書いてあるので、以下のようなコマンドで復活しました。

mysqladmin -h hogehoge.rds.amazonaws.com -P 3306 -u username --password=hogehoge flush-hosts

一瞬はまったのはブロックされているインスタンスから flush-hosts を発行しても拒否されるということです。
(当然なのでしょうが。。。)

RDSに接続できる別のインスタンス(マシン)から flush-hosts を発行する必要があります。

また、コネクションエラーになった根本原因を取り除いておかないと再発の可能性があります。







- (void)viewDidAppear:(BOOL)animated
{
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(someSelector) userInfo:nil repeats:YES] ;
}


といった感じでタイマーをセットしたが、viewが表示されても一向に someSelector が呼ばれない。

viewController の呼び出し場所によっては、同じコードでも呼ばれるときがある。

調べた結果以下のようにメインスレッドでタイマーをセットすると呼ばれるようになりました。


- (void)startTimer
{
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(someSelector) userInfo:nil repeats:YES] ;
}

- (void)viewDidAppear:(BOOL)animated
{
        [self performSelectorOnMainThread:@selector(startTimer) withObject:nil waitUntilDone:NO] ;
}




viewWillAppear内で
[self.tabBarController.tabBar setHidden:YES] ;
でタブバーの表示を隠したのだが、タブがあった位置にあるViewのタップが検知されない。

[someViewController setHidesBottomBarWhenPushed:YES] ;
[self.navigationController pushViewController:someViewController animated:YES] ;
で呼び出される前にsetHidesBottomBarWhenPushedすることで解決。

なんでだろ。


iOSアプリ開発で Facebook SDK を使ってログイン処理を書いていたら

App not setup: The developers of this app have not set up this app properly for Facebook Login.

というエラーでログインできなかった。

ログイン処理のコードは別のアプリでも使っているものなので問題なさそう。

Facebook developer ページのアプリの設定で
Status & Review の Do you want to make this app and all its live features available to the general public?
の問いを YES にするとログインできるようになりました。

public にしなくても本人のアカウントではログインできるので、他の人がテストするまで気づきませんでした。




iOS 5.x でアプリ起動時に
dyld_fatal_error
dyldbootstrap::start .....
エラーとなる。

悩んだ結果、追加したFrameworkがiOS5に無いためのようだ。
Social
AdSupport
Accounts
の各フレームワークをOptional にしたら無事起動しました。



twitter4j を使っている android アプリで、今まで動いていたのに以下のようなエラーが出るようになりました。

W/System.err(23240):     http://www.google.co.jp/search?q=bfb606ed or
W/System.err(23240):     http://www.google.co.jp/search?q=4ef9707c
W/System.err(23240): TwitterException{exceptionCode=[bfb606ed-4ef9707c], statusCode=403, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.3}
W/System.err(23240):     at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177)
W/System.err(23240):     at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
W/System.err(23240):     at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
W/System.err(23240):     at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:122)
W/System.err(23240):     at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:104)
W/System.err(23240):     at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:281)
W/System.err(23240):     at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:273)

twitter4j の jar を最新版の 3.0.5 に差し替えたら動作するようになりました。

急に動かなくなるのは恐いです。。



twitter4j を使った認証で、ある日突然認証ができなくなった。

今までは動いていたのに以下のようなエラーで認証ができない。
特定の端末のみで起こっており、他の端末では問題なく動作する。

Received authentication challenge is null
Relevant discussions can be found on the Internet at:
http://www.google.co.jp/search?q=bfb606ed or
http://www.google.co.jp/search?q=4ef9708b
TwitterException{exceptionCode=[bfb606ed-4ef9708b e2110e48-90349c9b], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.3}
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:192)
at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:98)
at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:122)
at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:104)
at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:281)
at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:273)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.io.IOException: Received authentication challenge is null
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:1169)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:1111)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1064)
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:735)
at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:34)
at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:156)
14 more

少々悩んだ結果、原因は端末の時刻が現在時刻と大きくずれていることでした。

端末の時刻を現在時刻に合わせたところ問題なく動きました。

テストのために時刻を進めていて、元に戻すのを忘れていました。。。

twitter4j に限らず iOS の twitter 認証でも同様に失敗するようです。

前にも一度これでハマったはずなのに、もう一度同じ失敗を繰り返しました。
しかも以前に経験していたことも思い出せなかったので備忘録として書きました。




Intent intent = new Intent("com.android.camera.action.CROP");
intent.setData(data.getData());
intent.putExtra("outputX", 320);
intent.putExtra("outputY", 320);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);

こんなコードで、クロップをまかせてみたが、帰ってきた画像の大きさが320x320になっていない端末がある。

Xperiaは320x320,Galaxyは160x160,Nexus7は229x229で返ってくる。

どうやらメモリ渡しなので大きさが制限されているようだ。

intent.putExtra("return-data", true);

intent.putExtra(MediaStore.EXTRA_OUTPUT, pickedFileUri);
に変えて、ファイルに書き出してもらうようにしたらちゃんと320x320で取得できました。




webView.loadData(htmlString, "text/html", "UTF-8") ;

とやると

画面上でWeb page not available というエラーが出てしまう。

Galaxy(4.1)では問題なく動くがXperia(2.3)では上記のエラーが出る。

webView.loadData(URLEncoder.encode(htmlString).replaceAll("\\+"," "), "text/html", "utf-8" ) ;

としたら解決。

先人の知恵はすばらしい。


Nexus 7 2013

| コメント(0) | トラックバック(0)

遅ればせながら2013年夏に発売された Nexus 7 を検証用に購入しました。
ちょっとケチって Wi-Fi 16GB モデルです。

まず最初の印象は物理的に軽いこと。
この大きさでも片手で楽に持てます。

肝心の動作も非常に滑らかに動きます。

OSは現在最新の2.3

画面も綺麗で解像度は 1920x1200 あるそうです。
私がPCで使っているディスプレイ(1920x1080)よりも高い解像度。。。

PCでメディア空き容量を確認したところ11GB台でした。
重いデータをガンガンに入れて使いたい人は32GBモデルにしたほうが良いかもしれません。

充電用アダプタとUSBケーブルは同梱されていました。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アイテム

  • abc2012spring.jpg
  • starbucks.png
  • twitter.png
  • windows.png
  • benz.png
  • firefox.png
  • google.png
  • anpanman.png
  • sign1.png
  • 711.png

タグクラウド

Powered by Movable Type 5.13-ja