投稿

ニュース記事を取得するのにGoogle Custom Search Engine(CSE)を使う

イメージ
Google News Search APIが完全に廃止される2014/05/26が1ヶ月後に迫ってきたので、真剣にどの技術を使うか調べてみた。 Spring cleaning for some of our APIs - The official Google Code blog 代替手段として調べたサービス。 Bing Search API Yahoo News API GoogleニュースのURLに「output=rss」を付けて処理 サーバー側でキャッシュした情報を配信したいので、それぞれの利用規約を読んで断念。 数多あるニュースサイトを串刺しで検索する方法はお金がかかりそうなので、 Google Custom Search Engine API を使って、ニュースサイトを手動で追加して検索対象にすることにした。 登録方法は下記サイトが分かりやすい。 google custom search engine(CSE)を使って、検索結果をjsonで取得する - ryutamaki 簡単な手順 Google Developers Console に行く Custom Search APIをONにしてAPI Keyを取得 Google カスタム検索の管理画面 に行く 検索エンジンを追加 検索対象にするニュースサイトを追加 検索機能 → 詳細設定で検索結果の並び替えをオンにする API Keyと検索エンジンIDを使ってAPIにリクエストする 1日100リクエストに制限されているので、15分に1回リクエストして最新情報を取得する感じ。 詳細は公式リファレンスを参考に。 CSE - Custom Search - Google Developers   < Related Posts> ニュース記事を取得するのにBing Search APIを試してみた Google ニュースのAPIを商用利用できるかとYahooとの比較

子育て支援アプリ「teniteo学園」をリリース

イメージ
去年、子育て情報サイト「 teniteo 」の今後の戦略についてプレゼンして作らしてもらったアプリの紹介。 まず、今までのウェブサイトとアプリの主な問題点 登録会員数の伸び悩み アクティブユーザー数が少ない 書き込みまでしてくれるのは一部のユーザー 愛知の地域情報が目立っていて他の地域の人が入りづらい   これを解決するために新しいアプリで実践したこと。 「学園」のイメージで仮想空間を作る アニメ調で可愛く 会員登録しなくても閲覧とコメント可能 アイコンを多用して直感的に使いやすく 掲示板機能に特化   出来たのがこれ。 teniteo学園 - Google Play の Android アプリ teniteo学園 - App Store の iPhone、iPod touch、iPad 用アプリ   学園のイメージを出しつつ使いやすいUIを考えるのに苦労した。 次はアプリのプロモーションを考えたい。   < Related Posts > 子育て情報サイト「teniteo」アプリをアップデート Titaniumを使ったアプリと苦労した事とかのまとめ2013年

[Titanium] アプリ名に日本語を含んでいるとDistributeするときにError

イメージ
tiapp.xmlのnameタグを日本語名にしただけでAndroidもiOSも開発は出来たけど、iOSをDistributeしようとしたときにエラーになった。 ちなみにAndroidはPlayストアへアップロードしても問題なかった。 環境: Titenium SDK 3.2.2.GA エラーはこれ。 参考サイト Internationalization of App Names | Appcelerator Blog Titaniumでアプリ名を日本語にする方法 | Titanium | nekosukoブログ   修正手順 1.各言語フォルダにapp.xmlを作る $ vi /i18n/jp/app.xml $ vi /i18n/en/app.xml <?xml version="1.0" encoding="UTF-8"?> <resources>     <string name="appname">日本語名のアプリ</string> </resources>     2.tiapp.xmlを編集 tiapp.xmlのnameタグはアルファベットで記述する。 アンダーバーを入れたらValidationのときに同じエラーになった。ハイフンとスペースは大丈夫だった。 さらにAndroidの場合は、「android:label」を指定しないと設定 → アプリケーション管理でのアプリ名がnameタグで指定した名前になる。 <android>   <manifest>     <application android:label="日本語名のアプリ">     </application>   </manifest> </android> ビルドすると/build/android/AndroidManifest.xmlが作成されるので確認できる。 参考サイトの記事ではAndroidManifest.xmlを設置する方法が書かれていたけど、tiapp.xml...

子育て情報サイト「teniteo」アプリをアップデート

イメージ
iOS, Android向けに配信中の「teniteo」アプリをリニューアル。 teniteo(iPhone用アプリ) teniteo(Android用アプリ) 今回はサーバー側も設計し直した。。。というかNode.jsで書き直した。アプリのUIも大きく改善。タブ型からスライドメニュー型にした。 前回   今回   レスポンスもよくなってるし、ママたちが使ってくれるといいんだけど。 TitaniumとNode.jsにも慣れたし、Titanium + Node.js + WordPressの組み合わせで別のサービスも作っていきたい。後はアイデアしだい。   < Related Posts > Titaniumを使ったアプリと苦労した事とかのまとめ2013年 ママのための子育て情報サイト(SNS)「teniteo[テニテオ]」 Renewal Open!! teniteo[テニテオ]一周年記念リニューアル

[Titanium] TextFieldにカーソル(キャレット)が表示されない

イメージ
Titaniumで作ったアプリを最近買ったNexus5で動作確認しているときの覚書。 入力時にカーソルの位置(キャレット)が表示されないので入力しづらい。Galaxy S2(Android 4.0.3)ではこの現象は起きなかった。 環境: Titanium SDK 3.2.2.GA, android:targetSdkVersion=19, Android 4.4.2 どうやらAndroidのテーマを理解する必要があるらしい。 [#TIMOB-13567] Android: Textfield cursor not visible when setting API level to 11 or above - Appcelerator JIRA Built-in Themes - Titanium 3.X - Appcelerator Docs   修正手順 1.カスタムスタイルを定義するXMLファイルを用意。 プロジェクトフォルダに「platform/android/res/values/styles.xml」を作成。 次のように記述。nullに設定するとcolorと同じ色を使うようになるらしい。 <?xml version="1.0" encoding="utf-8"?> <resources>     <style name="Theme.MyTheme" parent="@android:style/Theme.Holo.Light">         <item name="android:textCursorDrawable">@null</item>     </style> </resources>   2.tiapp.xmlに作成したカスタムスタイル名を指定。 <android>     <manifest>         <application and...

Nexus5(Android 4.4 KitKat)を買った

イメージ
アプリ開発のためにxxhdpi, Android4.4の端末が欲しくなったので、Nexus5を買ってしまった。 Google Playで16GBが¥39,800なり。 Nexus 5 - Google 2年間使い続けると月1,658円なので、キャリアと契約するより買ってしまった方が安い。これに月額490円のSIMを利用すればコストパフォーマンス抜群。 SE奮闘記: 携帯(スマフォ)2台持ちなら激安SIM月額490円がお得   Android 4.4からは Dalvik仮想マシン を置き換えるために開発されている新しいAndroid RunTime(ART)が実験的に導入されている。 Introducing ART | Android Developers アプリの実行をより高速かつバッテリー効率よく動作できるらしい。 試してみたところTitaniumで作ったアプリも問題なく動いたので一安心。 ARTに関する参考記事 これは64bit化の布石か? ~Android 4.4の新ランタイムART~ | APPREVIEW Nexus 7 Android 4.2で消えた開発者向けオプションを表示させる方法。 - Android(アンドロイド)おすすめアプリ・カスタムニュース|AndroidLover.Net   最後に設定の切り替えを簡単にできるアプリを紹介 Settings Extended - Google Play の Android アプリ   < Related Posts > 携帯(スマフォ)2台持ちなら激安SIM月額490円がお得 Galaxy S4に対応したAndroid Emulator AVDを作成 Windows 8 + nasne + REGZA TV + Android + iPadで快適テレビ生活 海外生活で日本の携帯はどうする?Docomo F-01Cに機種変

[Node.js]ExpressJS 3.xから4.xにUpdate

イメージ
connect-redis を1.5にアップデートしたらエラーで動かない。。。 express 4.0にする必要があったので3.xで作成したアプリを4.xに移行したときの覚書。 環境: node.js v0.10.26, express v4.0.0-rc3 参考サイト ExpressJS 4.0: New Features and Upgrading from 3.0 ♥ Scotch Migrating from 3.x to 4.x · visionmedia/express Wiki · GitHub 4.0からはconnectが削除されるので、付随していたミドルウェアを自前で読み込まなければならない。 例を見るのが分かりやすい。 express 3.xの記述例 var express = require('express'); var app = express(); var RedisStore = require('connect-redis')(express); var C = require('./config'); var GA = require('./lib/google-analytics'); var system = require('./routes/system'); // Load Module app.use(express.urlencoded()); app.use(express.json()); app.use(express.cookieParser(C.cookieSecret)); app.use(express.session({   key: C.cookieKey,   secret: C.cookieSecret,   store: new RedisStore({     db: C.db.session.database   }) })); app.use(express.compress()); // Use gzip app.use(app.router); app.all('*', function(req, res, next) {   // Tracking   G...

Node.js環境のためにMySQLからMariaDBに移行

イメージ
Android, iOSアプリからのアクセスをNode.jsで実装したけれど、データベース(MySQL)がたまに応答しなくなる現象が発生したので調査したときの覚書。 環境:CentOS 5.10 x86_64, MySQL 5.5.36, Node.js v0.10.26, node-mysql 2.1.0   1.MySQL Community Editionの限界 Node.js + node-mysql からMySQLにクエリを投げると、その分だけスレッドが立つ(1つのコネクションに対して1つのスレッド)。 デフォルトの設定では、すぐ「too many connections」とエラーになってしまうので、my.cnfに「max_connections」を設定する。 しかし、コネクション数が256を超えた辺りで、レスポンスが非常に悪くなるらしい。公式サイトにコネクション数とパフォーマンスのグラフがある。 MySQL :: MySQL Enterprise Scalability my.cnfの「thread_handling=pool-of-threads」としたいけど、これはMySQL Enterprise版の機能らしい。 調べてみると、MySQLからフォークした「MariaDB」というのがMySQL互換でスレッドプールも備えているので試してみた。   2.MariaDBについて 下記サイトが詳しい。 MariaDB - Wikipedia MySQLとMariaDBの違い一覧 - The Programmer’s Guide to the Parallel World   3.MariaDB 5.5をCentOSにインストール(失敗) ※この章は失敗したログ。成功した方法は次の章で 。 まずは既存データベースのバックアップ # mysqldump -p hogedb > hogedb_20140310.sql MySQLサーバーは停止。 # /etc/rc.d/init.d/mysqld stop 公式サイトを参考にYUMのリポジトリを追加する。 MariaDB - Setting up MariaDB Repositories Installing Mari...

RedisをInstallして、Node.js + RedisでSession管理

イメージ
Nodejsのセッション管理の仕組みをどうするか迷っていたときの覚書。 環境: CentOS 5.10 x86_64 すでにMySQLが導入済みなので connect-mysql-session か MySQL-Cluster にするか迷ったけど、調査した結果Redisを使うことに決定。 理由 connect-mysql-session は最近メンテナンスされてない。 MySQL-Cluster の最新版を導入するために既存のMySQLが影響受けそう。 セッション管理のモジュールでconnect-redisが人気 Popular sessions modules - Node.JS Modules   参考: visionmedia/connect-redis  | GitHub A Node in Nodes - connect-redisでセッション管理   1.Redisのインストール Redisについては下記記事が分かりやすい。 インメモリKVS「Redis」を試してみる -導入編- | ビズリーチラボ REMIリポジトリがインストールされているなら、最新版をYUM経由で取得できる。 # yum install redis --enablerepo=remi 起動。自動起動も設定。 # /etc/rc.d/init.d/redis start # chkconfig redis on   2.connect-redisのインストール # npm install connect-redis --save   3.Node.js + Expressの環境に導入 var express = require('express'); var app = express(); var RedisStore = require('connect-redis')(express) app.use(express.urlencoded()); app.use(express.json()); app.use(express.cookieParser(C.cookieSecret)); app.use(express.session({   key:C...

SSL + IE11の環境でtype="password"の値が取得できない

イメージ
会員登録の画面でユーザーから「登録できない」と問合せがあったので調べたときの覚書。 <会員登録処理の流れ> ユーザー名、パスワード、パスワード確認を入力 ↓ POST ↓ プレビュー画面 ※このときPOSTされた値はdisplay:noneで隠してある。 ↓ POST ↓ 登録   調べてみるとプレビュー画面からPOSTする際に確認用パスワードの値を取得出来ていない。 IE11のバグとして上がっているみたい。 IE 11 second password input not showing as being populated for SSL page with Autocomplete for passwords enabled | Microsoft Connect   この現象の確認と対策用に作成したスクリプトはこちら <html> <head>     <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>     <title>POSTテスト</title>     <style>         .hide {display: none;}     </style> </head> <body>     <?php var_dump($_POST);?>     <form id="submit-form" method="post">         <div class="frame <?php if (!empty($_POST)) echo 'hide';?>">        ...