ようへい

2018年12月5日水曜日

GAE/J の環境から、 Dropbox にファイルをアップロードする

Google App Engine / Java8 の環境で、ファイルをアップロードされた場合、アップロードしたファイルの置き場所をどうしようかと悩んでいた。
すると、Dropbox の API があるようだったので使用してみることにした。
なんとなく GAE の環境に対応していそう。
Dropbox Core SDK for Java 6+
https://github.com/dropbox/dropbox-sdk-java とりあえず、以下でアクセストークンを作成。
Generate an access token for your own account
https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/ チュートリアルにあるように、以下のように実装。
DbxRequestConfig config = DbxRequestConfig.newBuilder(SystemProperty.applicationId.get()).build();
DbxClientV2 client = new DbxClientV2(config, <<DROPBOX_ACCESS_TOKEN>>);
client.files().uploadBuilder("/GAE/" + fileName).withMode(WriteMode.OVERWRITE)
    .uploadAndFinish(fileStream);
とりあえずデプロイしてGAE上で実行。
すると案の定エラーが。
error: com.dropbox.core.NetworkIOException: content.dropboxapi.com (Logger.java:58)
 at com.dropbox.core.v2.DbxRawClientV2.uploadStyle(DbxRawClientV2.java:259)
 at com.dropbox.core.v2.files.DbxUserFilesRequests.upload(DbxUserFilesRequests.java:2985)
 at com.dropbox.core.v2.files.UploadBuilder.start(UploadBuilder.java:154)
 at com.dropbox.core.v2.files.UploadBuilder.start(UploadBuilder.java:20)
 at com.dropbox.core.v2.DbxUploadStyleBuilder.uploadAndFinish(DbxUploadStyleBuilder.java:92)
GAEで開発してる人ならピンと来るはず。
GAE/Java 8では外部にあぷセスする際に使用する、Javaネイティブの java.net.URL.openConnection などが無効になり、URLFetchServiceFactory を使う必要がある。
どうやらホスト名が引けず、エラーになっているようなので、何かしら GAE 用の処理を加えないと使えなさそう。
GitHub で、検索をかけるとソース上に使用方法が書いてあった。
dropbox-sdk-java/src/main/java/com/dropbox/core/http/GoogleAppEngineRequestor.java
https://github.com/dropbox/dropbox-sdk-java/blob/aa70590b492bc79a47c6eaf5bc667206ab51bfdd/src/main/java/com/dropbox/core/http/GoogleAppEngineRequestor.java#L25
/**
 * {@link HttpRequestor} implementation that uses Google App Engine URL fetch service.
 * You can only use this if your project includes the App Engine libraries.
 *
 * <p> If your app runs in Google App Engine, it is strongly recommended to use this Requestor to
 * ensure certificate validation is performed on all requests.
 *
 * <p> To use this, pass an instance to the {@link com.dropbox.core.DbxRequestConfig} constructor:
 *
 * <pre>
 *     DbxRequestConfig config = DbxRequestConfig.newBuilder("MyAppEngineApp/1.0")
 *         .withHttpRequestor(new GoogleAppEngineRequestor())
 *         .build();
 *
 *     String accessToken = ...;
 *     DbxClientV2 client = new DbxClientV2(config, accessToken);
 * </pre>
 */
なるほど。
.withHttpRequestor(new GoogleAppEngineRequestor()) が必要らしい。
これを加えて、先ほどのコードを修正。
DbxRequestConfig config = DbxRequestConfig.newBuilder(SystemProperty.applicationId.get())
        .withHttpRequestor(new GoogleAppEngineRequestor()).build();
DbxClientV2 client = new DbxClientV2(config, <<DROPBOX_ACCESS_TOKEN>>);
client.files().uploadBuilder("/GAE/" + fileName).withMode(WriteMode.OVERWRITE)
        .uploadAndFinish(fileStream);
無事アップロードできるようになりました。
関連記事

2018年11月22日木曜日

11/22 Android アプリセール情報ひとまとめ 11アプリが無料化! ダンジョンメーカーがセール中

11アプリが無料化!
アプリ名デベロッパー価格ストアリンク
Draw Rider Plus ドローライダープラス17Studio¥210 →¥110
Slender Last Sleep17Studio¥210 →¥110
The Light Story 光の物語17Studio¥210 →¥110
Civilization Revolution 22K, Inc.¥1,100 →¥220
NBA 2K192K, Inc.¥900 →¥560
WWE 2K2K, Inc.¥660 →¥220
XCOM®: Enemy Within2K, Inc.¥1,100 →¥230
My Device Pro3k Developers¥330 →¥110
FRACTER4L GAMES LTD.¥470 →¥240
Russian Car Driver ZIL 130 PremiumABGames89¥170 →¥100
子供のジグソーパズル - 82匹の動物を学びますAbuzz¥320 →¥110
Istanbul: Digital EditionAcram Digital¥760 →¥520
Samorost 3 (サモロスト3)Amanita Design¥500 →¥109
Death PointAndiks LTD¥200 →¥100
ルビースクエア:論理パズルゲーム (700レベル)AppSoGreat¥190 →¥100
VandalsARTE Experience¥580 →¥320
Jade Empire: Special EditionAspyr Media, Inc.¥1,120 →¥340
Star Wars™: KOTORAspyr Media, Inc.¥1,060 →¥340
子供のための絵画練習”線をなぞりましょう!Bini Bambini¥300 →¥130
The House of Da VinciBlue Brain Games s.r.o.¥600 →¥360
勇者には休みがない!アドバンスド - レトロRPGランナーBuff Studio Co.,Ltd.¥100 →無料
Teen Titans GO Figure!Cartoon Network¥440 →¥110
三國志漢末覇業ChengDu LongYou Tech¥1,200 →¥720
Pocket CityCodebrew Games¥430 →¥210
Adventures of Poco Eco - Lost SoundsCodium World Kft.¥320 →¥160
コブシ道VIPDAERISOFT¥290 →無料
KolumnoDevilishGames¥240 →¥130
DownwellDevolverDigital¥330 →¥110
ReignsDevolverDigital¥330 →¥110
Reigns: Game of ThronesDevolverDigital¥440 →¥280
Reigns: Her MajestyDevolverDigital¥330 →¥110
SPACEPLANDevolverDigital¥330 →¥110
はーとふる彼氏DevolverDigital¥540 →¥110
Castle of IllusionDisney¥550 →¥340
Double Dragon TrilogyDotemu¥350 →¥160
Gobliiins TrilogyDotemu¥350 →¥160
Little Big AdventureDotemu¥600 →¥270
NEO TURF MASTERSDotemu¥350 →¥170
R-TYPE IIDotemu¥250 →¥110
Raiden LegacyDotemu¥560 →¥270
The Last ExpressDotemu¥600 →¥270
イースIIクロニクルズDotemu¥560 →¥270
イースIクロニクルズDotemu¥560 →¥270
League of Stickman 2018- Ninja Arena PVP(Dreamsky)DreamSky¥100 →無料
Need for Speed™ Most WantedELECTRONIC ARTS¥600 →¥120
トリビア・クラック (広告なし)Etermax¥330 →¥110
Pocket Rogues: UltimateEtherGaming¥520 →¥280
もりのがっこう : 愛のどうぶつ学園 (Start Pack Edition)FatherMade¥430 →無料
New York Mysteries 3 (Full)FIVE-BN GAMES¥760 →¥430
ダンジョンメーカーGameCoaster¥310 →¥100
アメイジング・スパイダーマン2Gameloft¥840 →¥160
Farming Simulator 18GIANTS Software¥600 →¥110
Sentinels of the MultiverseHandelabra Games¥950 →¥270
FL Studio MobileImage-Line¥1,920 →¥1,150
Denki Blocks! Deluxe (Tablet)Jakyl¥290 →¥100
Forget-Me-NotJakyl¥290 →¥100
Ground Effect Pro XHDJakyl¥430 →¥140
Hard LinesJakyl¥290 →¥100
KiwanukaJakyl¥430 →¥100
MixtJakyl¥290 →¥100
TileStormJakyl¥290 →¥100
Don't Starve: Pocket EditionKlei Entertainment Inc.¥520 →¥110
CluedoMarmalade Game Studio¥280 →¥150
Hasbro's BATTLESHIPMarmalade Game Studio¥370 →¥150
前置詞マスター(Preposition Master) - 英語を学びましょうMasterKey Games¥900 →¥520
サイレントモードᴾᴿᴼ (カメラミュート)MIN Studio¥150 →¥99
シャドウファイト2 スペシャルエディションNEKKI¥550 →¥380
アフター・ジ・エンド:忘れられた運命NEXON M Inc.¥430 →¥110
Lumino CityNoodlecake Studios Inc¥560 →¥130
Suzy CubeNoodlecake Studios Inc¥430 →¥120
スキタイのムスメ:音響的冒剣劇Noodlecake Studios Inc¥430 →¥110
リヒトシュピーアNoodlecake Studios Inc¥430 →¥110
Space MarshalsPixelbite¥570 →¥111
Death Worm - メガ怪獣PlayCreek LLC¥340 →¥110
Evoland 2Playdigious¥800 →¥130
unWordedPlaydigious¥340 →¥100
Motorsport Manager Mobile 3Playsport Games¥580 →¥110
MathematiqaQuark Brain Lab¥130 →無料
I'm learning to calculaterainbow learning software¥450 →¥130
Planet Genesis - solar system sandboxRaptor Claw¥190 →¥100
Geometry DashRobTop Games¥200 →¥100
Seven MysteriesSang Hendrix¥330 →¥140
スマートランチャー Pro3 (SmartLauncher)Smart Launcher Team¥520 →¥190
いつでもコピペ&メモ&ランチャー クリップボード拡張 ProSnow Technology¥400 →¥280
ヒットマンスナイパー (Hitman Sniper)SQUARE ENIX Ltd¥120 →無料
Robert Rodriguez’s THE LIMITSTXsurreal¥1,140 →¥560
Robert Rodriguez’s THE LIMIT for AndroidSTXsurreal¥900 →¥450
ブラックソーン城の謎Syntaxity¥320 →無料
ソリティアメガパックTesseract Mobile¥320 →¥110
Sky Dancer PremiumTOPEBOX¥100 →無料
True SkateTrue Axis¥230 →¥100
Rima: The Story Begins - Adventure GameUP Entertainment Ltd.¥520 →¥190
Monument Valley 2ustwo games¥600 →¥110
モニュメントバレーustwo games¥390 →¥110
Litchi for DJI Mavic / Phantom / Inspire / SparkVC Technology Ltd¥2,720 →¥1,840
DaedalusVertical Robot¥800 →¥320
Scribblenauts UnlimitedWarner Bros. International Enterprises¥560 →¥110
無限ダンジョン VIPZabob Studio¥120 →無料
山桂(Shan Gui)ZiX Solutions¥110 →無料
Shadow of Death: 暗黒の騎士 - スティックマン・ファイティングZonmob Game Studio¥120 →無料
関連記事

Nexus 6P に Factory Image 焼こうとしたら、error: Cannot generate image for userdata になった

格安で Nexus 6P を入手したのだが、以下のサイトから最新の Factory Image を持ってきて、flass-all.bat を実行した。
Factory Images for Nexus and Pixel Devices | Google APIs for Android | Google Developers
https://developers.google.com/android/images?hl=ja#angler すると、最後のほうで以下のようなエラーが
wiping userdata...
CreateProcess failed: The system cannot find the file specified. (2)
mke2fs failed: -1
error: Cannot generate image for userdata
Press any key to exit...
ググると -w オプションを外せばいいよとのこと。
fastboot -w update image-angler-opm7.181105.004.zip から -w を外し以下のように変更。
PATH=%PATH%;"%SYSTEMROOT%\System32"
fastboot flash bootloader bootloader-angler-angler-03.81.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash radio radio-angler-angler-03.88.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot update image-angler-opm7.181105.004.zip

echo Press any key to exit...
pause >nul
exit
無事 flash できました。
起動後、user data が wipe されていないことによるエラーが出ますが、factory reset を選ぶと user data を wipe できました。
その後無事起動しました。
関連記事

2018年11月6日火曜日

2018/11/06 更新 - [AdAway] 日本環境向け 広告除去用hosts

AdAwayで使用可能な、日本環境用 広告除去用hostsを公開します。
日本環境用に特化しています。
新たな広告を見つけ次第、随時追加予定
リストで除去されないアプリ、または新しいhostを見つけた方はコメントにて連絡いただけるとありがたいです。
また、広告に関係のないサイト、またはhostsでブロックすることによる影響が大きいようであれば除去していきますのでコメントください。

以下のページでhostの調査方法等記載しています。
[AdAway] 広告配信hostの調査、ブラックリストへの追加方法 - ログろいど

なお、ここで公開しているhostリストは、私が調査したhost以外に、2chのAndroid hostsスレからも引用しています。
スレの皆様ありがとうございます。

hosts に登録してあるサイト

hosts には以下のようなカテゴリに含まれると思われるドメインを登録してあります。
  • 広告配信ドメイン
  • 広告にリダイレクトするドメイン
  • マルウェアをダウンロードさせようとするドメイン
  • 詐欺まがいのサービスを提供しているドメイン (課金石xxx個全員プレゼント等)
  • IP Address (Geocode) から場所を表示し脅迫まがいのメッセージを表示するドメイン
  • 迷惑なサービスを提供しているドメイン

公開URL

以下のURLをAdAwayのhostsのソースに追加し、ファイルをダウンロードして適用をしてください。
どのように追加するか分からない方は、次項を読んでください。

https://logroid.github.io/blogger/file/hosts.txt

2017/09 より、ホスティング場所を Google サイト から GitHub に移動しました。

AdAway設定方法

  1. Androidでこの記事を開きます。
  2. 以下のURLをコピーします。
  3. AdAwayを起動し、メニューキー -> hostsのソースをタップします。
  4. をタップし、URLを貼り付けます。
  5. 追加をタップします。
2018/06/16 更新 - 日本環境向け 広告除去用hosts
追加後は、ファイルをダウンロードして適用を実行してください。
関連記事

11/6 Android アプリセール情報ひとまとめ 27アプリが無料化!

27アプリが無料化!
アプリ名デベロッパー価格ストアリンク
3D 図表 PROAdvance-Media¥195 →¥110
カメラZOOM FX Premiumandroidslide¥490 →¥260
Cannon Conquest (ALL UNLOCKS)blackforestbytes¥260 →¥160
War 1944BlueBird Games¥230 →無料
Candy Shooter 2019 - Bubble Shooter gameBrightmoon Entertainments¥100 →無料
Battlevoid: Sector SiegeBugbyte¥490 →¥130
Age of Pirates RPG EliteCory Trese¥330 →¥110
ぷにぷにピチョンちゃん - 可愛いプラットフォーム・ゲームCrimson Ghost Games - Arcade Action in Your Pocket¥330 →¥140
GET HER BACK: A Journey To The Creature IslandD PASAHAN Game Studio¥380 →¥100
マンガダンジョン VIPDAERISOFT¥110 →無料
リーグ・オブ・スティックメン(Dreamsky)DreamSky¥100 →無料
Amethlion - open world RPG adventure!Dynamic Zero¥220 →¥100
Diamond Dino UltimateELNAGGAR¥250 →無料
見性 (Kenshō)FIFTYTWO¥460 →¥100
Please, Don't Touch Anything 3DForwardXP¥680 →¥310
13のパズル室Gameday Inc.¥200 →無料
ColEm Deluxe - Coleco EmulatorGarage Research Emulators¥460 →¥220
AbzorbGerald P Kelley¥110 →無料
Dead AgeHeadup¥310 →¥160
The Inner WorldHeadup¥330 →¥110
The Inner World - The Last Wind MonkHeadup¥600 →¥320
Toby: The Secret MineHeadup¥499 →¥220
Dual N-back IQのゲーム脳ビルダープレミアムHigh Secret¥180 →¥100
Mahjong Solitaire BlastJose Varela¥500 →¥250
Mahjong Star ProJose Varela¥520 →¥250
Pyramid Solitaire Asia ProJose Varela¥520 →¥250
Solitaire Dungeon EscapeJose Varela¥520 →¥250
Solitaire Dungeon Escape 2Jose Varela¥520 →¥250
Math Effect FullKidga¥379 →¥130
デモングハンター VIPLinkTown.co¥310 →無料
Guess & Find PROLittleBigPlay - Word, Educational & Puzzle Games¥150 →無料
Word Connect PROLittleBigPlay - Word, Educational & Puzzle Games¥200 →無料
FunTime Cards For KidsMapleScot Development¥130 →無料
Earthlings Beware!Marconi Loures¥150 →¥100
Freelancer Simulator Inc : Game Dev Money ClickerMEDU¥100 →無料
Memo Box - Memory gameMental Lab¥210 →¥110
ダンジョン999Moontm¥100 →無料
マンガ999 - VIPMoontm¥100 →無料
Note Fighter UnlimitedMythicOwl¥210 →¥120
Extreme Mountain DrivingNasar Games¥110 →無料
みんなのアルピジNomadGames¥100 →無料
Nostalgia.NES Pro (NES Emulator)Nostalgia Emulators¥520 →¥240
INTO THE ABYSSo3one kinetics¥340 →¥180
Binary Fun™ Decimal Propetraapps¥230 →¥100
Hot GunsQuantized Bit¥180 →¥110
Johnny Bonasera 1Rafael García¥260 →無料
IMAGEine Premiumrarodx¥250 →¥100
Farm and Click - Idle Farming Clicker PRORed Machine¥110 →無料
Heroes of Magic: Card Battle RPG PRORed Machine¥110 →無料
YoWindow 天候RepkaSoft¥600 →¥200
Fit ToonRETRO BOX¥110 →無料
Retro NES Pro - NES EmulatorRetro Game Emulators¥200 →¥100
Her StorySam Barlow¥560 →¥220
Ancient GenocideSimon Schubert¥300 →無料
OTTTD : Over The Top TDSMG Studio¥640 →¥280
ロロロロ (Death Squared)SMG Studio¥699 →¥160
Fast Burst CameraSpritefish¥420 →¥100
Swordbreaker The Game. Text questSubbotinov Aleksandr Igorevich¥150 →¥100
Cashknight ( Duo Event Version )SUPERCLAY Inc¥1,020 →無料
Spider: Rite of Shrouded MoonTiger Style¥560 →¥110
Spider: Secret of Bryce ManorTiger Style¥220 →¥110
Waking MarsTiger Style¥340 →¥110
[VIP] 2048 Bunny Maker - bunny city buildingUnderBunny¥110 →無料
Kids ABC Tracing and Alphabet WritingVersatile Techno¥120 →無料
Demon's Rise 2Wave Light Games, Inc.¥660 →¥170
Charlie's PlanetWhaleby Games¥210 →無料
Empire Warriors TD Premium: プレミアムタワーディフェンスゲームRPGZITGA PTE. LTD.¥100 →無料
王国防衛2Zonmob Game Studio¥100 →無料
関連記事