クラウドゾンビハント

新しいプレーヤーは、急速に成長しているPaaS市場に参入しています。 少し前、IBMは争いに参加し、Bluemixサービスを一般的なプログラミングコミュニティに紹介しました。 プッシュツーデプロイを実行できるクラウドを持っている人を驚かせる必要はありません。そのため、競争は「見た目、クラウドもあります」というゾーンから移動しました。プロジェクトが成長するまで無料です。」 カットの下で、この最新のPAASシステムとほんの数行のコードを使用して、オンラインゲームのサイトを厳密に監視し、興味深いニュースが表示されたらすぐにプッシュ通知を送信するサービスを作成する方法を示します。







なぜゾンビが必要なのか





例として「Hello world!」アプリケーションを選択することは、あまり面白くありません。 有用なものの最小限の動作のプロトタイプを作成する方がはるかに楽しいです。 たとえば、サイトの変更を追跡するためのアプリケーション。 このタスクには、VisualPingからChrome拡張機能まで、多くのソリューションがインターネット上にあります。 彼らのほとんどは、迅速な通知のためのお金、偽陽性の罪を望んでいます-一般に、彼らはこれが良い、適切なニッチであることを外観全体で示しています。 ゾンビとの私のお気に入りのゲームは実験的なウサギとして機能します-あなたはどういうわけかあなたの注意を引き付ける必要があります:)



自分用のクラウドを作成する





私たちのソリューションは、次の4つの部分で構成されます。





Bluemixに登録し、コントロールパネルに移動してNode.jsアプリケーションを作成します。 アプリケーションを作成するには、「ダッシュボード」に移動して、作業環境の名前(「スペース」)を指定し、「アプリの作成」を選択します。







次のウィンドウで、アプリケーションのタイプを選択する必要があります。この例では「モバイル」になります。







デフォルトでは、私たちが作成するものはすべて無料ティアのフレームワーク、つまり完全に無料で提供されます。 IBMは、アプリケーション用に大量のメモリが必要な場合、または1か月あたり100万通を超える通知を送信する場合など、お金を必要とします。



重要な点 :デフォルトでは、アプリケーションには128メガバイトのメモリが割り当てられ、最大512 MBを無料で使用できます。 したがって、作成後すぐに、HTMLの解析時にガベージコレクターが操作スペースを確保できるように、アプリケーションで使用可能なメモリを増やしてください。



Bluemixは便利な抽象化を提供します-アプリケーションが必要なイベントについてのみプッシュ通知をサブスクライブおよび受信できるようにするタグ。 この例では、「通知」セクションに移動して、mytagというタグを追加します。



Google Cloud Messagingを少し追加してください





サンプルをコンパクトにするために、Androidでのみ通知を送信する方法を示しますが、BluemixにはiOSを操作するためのツールも用意されています。 Google Developers Consoleにアクセスして、アプリケーションを作成し、プッシュ通知をアクティブにして、アクセス設定をBluemixにコピーします。







モバイルアプリケーションを作成します





過去数年間で、モバイルアプリ開発ツールは大きく進歩しました。 Eclipseの思慮深いカスタマイズがAndroid開発の世界への入学試験だった時代を今でも覚えています。 これですべてが間違っています。最新バージョンのAndroid Studioをダウンロードし、[新規プロジェクトの作成]、[空のアクティビティ]の順に選択すると、アプリケーションの準備が整います。 エミュレータで実行したり、電話にインストールしたりできます。



競争は良いことです。 開発者との闘いにおいて、最新のクラウドソリューションは、クラウドインフラストラクチャ自体だけでなく、その周りに構築されたエコシステム全体も提供します。 たとえば、プッシュ通知を操作するための便利なライブラリが含まれます。 対応するBluemixライブラリをプロジェクトに接続するには、必要な依存関係をGradleに追加します。



リトルグラドル
compile 'com.google.android.gms:play-services:+' compile 'com.ibm.mobile.services:ibmbluemix:1.+' compile 'com.ibm.mobile.services:ibmpush:1.+'
      
      









Androidアプリケーションは、相互にメッセージを交換するコンポーネントで構成されています。 Bluemixコードで必要なタスクを実行するには、AndroidManifest.xmlにいくつかのコンポーネントを登録する必要があります。 同じ場所で、アプリケーションに必要な権利を示します。



小さなXML
 <?xml version="1.0" encoding="utf-8"?> <manifest> ... <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> ... <application> ... <service android:name="com.ibm.mobile.services.push.IBMPushIntentService"> </service> <receiver android:name="com.ibm.mobile.services.push.IBMPushBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.ibm.mbaas.push.android.sample" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="com.ibm.mbaas.push.android.sample" /> </intent-filter> </receiver> </application> </manifest>
      
      









これで、通知を操作するための実際のコードを追加できます。 mytagタグを使用して通知をサブスクライブする最も単純なコードをMainActivity.javaに挿入する必要があります。 「ルート」、「アプリキー」、「アプリシークレット」を指定する必要があるコードでは、これらはアプリケーション制御画面の「モバイルオプション」セクションにあります。



Javaを使用した小さなトルコ人
 import java.util.List; import com.ibm.mobile.services.core.IBMBluemix; import com.ibm.mobile.services.push.IBMPush; import bolts.Continuation; import bolts.Task; public class MainActivity extends ActionBarActivity { private IBMPush push = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IBMBluemix.initialize(this, "ff2c1e25-cc27-435d-b93a-a6b46fbc5056", "14d8536672d53bb5eb9d1ba28e83292e6320495c", "http://grigoryvp-test.eu-gb.mybluemix.net" ); push = IBMPush.initializeService(); //   . push.register("mydevice", "myuser").continueWith(new Continuation<String, Void>() { @Override public Void then(Task<String> task) throws Exception { if (task.isFaulted()) return null; //  ,   . push.getSubscriptions().continueWith(new Continuation<List<String>,Void>() { @Override public Void then(Task<List<String>> task) throws Exception { if (task.isFaulted()) return null; //      ? if (task.getResult().isEmpty()) { //    . push.subscribe("mytag").continueWith(new Continuation<String, Void>() { @Override public Void then(Task<String> task) throws Exception { return null; } }); } return null; } }); return null; } }); }
      
      









すべて、アプリケーションの準備ができました。 起動時に、プッシュ通知をサブスクライブします。 Bluemix Webインターフェースを介してすべてが直接機能することを確認できます。「通知」セクションに進み、「通知の送信」を選択すると、電話で通知が表示されます。







ゾンビを見て





Node.jsアプリケーション(最初のステップでBluemixで既に作成したもの)に、指定されたサイトをモニターし、別のIBMライブラリーを使用して通知を送信することだけを教える必要があります。 ところで、アプリケーションはオンラインで編集したり、gitリポジトリに追加したり、ローカルで開発およびデバッグしたり、git pushを使用してデプロイしたりできます。 gitリポジトリを操作するには、「ダッシュボード」に移動し、アプリケーションを選択して、アプリケーション画面の右上隅にある「gitを追加」を選択します。 インターフェイスの上部が変更されます:gitリポジトリを計画するためのURLと、便利なオンラインIDEでコードを編集するためのボタンが表示されます。







サイトを調べるために、RequestライブラリとCheerioライブラリを使用します。最初のライブラリでは、HTTPSリクエストを送信してWebページのコンテンツを1行で受信できます。2番目のライブラリは、受信したHTMLコードで必要な情報を見つけるためのjQueryインターフェイスを提供します。 DevToolsを使用して調査中のサイトを注意深く見ると、CSSセレクターで最も興味深い変更がすべて行われていることがわかります。
  .mc_2_news:最初の子.mc_2_news_paragraph 




サイトをポーリングしてプッシュ通知を送信するコードは次のとおりです。



JavaScriptのビット
 var content = ""; var ibmpush = require('ibmpush'); var request = require('request'); var cheerio = require('cheerio'); function periodic() { request("https://www.pi-online.ru/", function (err, res, body) { if (!err && 200 == res.statusCode) { var $ = cheerio.load(body); var contentNew = $(".mc_2_news:first-child .mc_2_news_paragraph").text(); if (content && content !== contentNew) { var message = { "alert" : "something updated", "url": "http://www.google.com" }; req.ibmpush.sendBroadcastNotification(message, null).then( function() { logger.info("send success"); }, function() { logger.info("send failure"); } ); } content = contentNew; } setTimeout(periodic, 60 * 1000); }); } periodic();
      
      









これをクラウドにデプロイします-ソリューションの準備は完了です。 サイトを更新してから数秒後に、携帯電話で通知を受け取ります。 無料で。



結論





示されている解決策は可能な限り単純です。データベース、エラー制御、ニュースのテキストの表示、および他の多くの必要なものを扱う作業はありません。 しかし、これは、高度なクラウドソリューションがどれだけ進歩したかを明確に示しています。 無料のIBMアプリケーションの一部として、24時間稼働するサービスを作成し、数十万ものプッシュ通知を送信し、膨大な数の既製のライブラリを使用できます。 プログラマーの闘いは本格的であり、健全な競争が実を結び、仕事をより簡単で便利にすることを願っています。



All Articles