投稿

10月, 2014の投稿を表示しています

複数サーバーでセッション管理するためにRedisからMariaDB Cluster(MySQL)に変更

イメージ
前の記事 で複数サーバー構成にした。nginxの設定では「ip_hash」を使いIPアドレスをキーにした負荷分散にしたけど、モバイルアプリからのアクセスは頻繁にセッションが切れる現象に遭遇。 環境: CentOS 6.6 x64, Node.js v0.11.14, MariaDB 10.0.14 今までアプリのセッションは各サーバーごとにRedisで管理していた。セッション管理するサーバーを用意して各アプリサーバーが参照するようにすれば出来る。 Redisでセッションを一元管理する場合のポイント bind(/etc/redis.conf)は制限せずにファイヤーウォールで制限する Redis Clusterもあるけど、まだ開発段階みたい   。。。と調べたけど、このサービスはMariaDB Galera Clusterでクラスター構築したので、セッション管理もこっちを使うことにした。 connect-mysqlを使えば解決。poolも使えるので便利。 nlf/connect-mysql | GitHub connect-mysql-session の方が人気みたいだけど、内部で seqelize という O/Rマッパー を使っている。node-mysqlを使ってほしいので除外。 MariaDB ClusterがサポートしているのはInnoDBかXtraDBストレージエンジンだけでMemoryは使えないので注意。   < Related Posts > MariaDB Galera Clusterをインストールしてデータベースをクラスター化 CentOS6 + nginx + PHP5.4 + MariaDB10 + WordPress + node.jsの環境を構築する手順をまとめ RedisをInstallして、Node.js + RedisでSession管理

【Titanium】SQLiteのテーブル一覧を出力

イメージ
Titanium.Databaseを使ってテーブルを作成したあとに、確認のためにデータベースのテーブル一覧を出力したときの覚書。 環境: Titanium SDK 3.3.0.GA 公式ドキュメントを参考に。 Working with a SQLite Database - Appcelerator Platform - Appcelerator Docs Pragma statements supported by SQLite EZ-NET: SQLite でテーブルのカラム構造を取得する SQLで取得するためには「sqlite_master」からSELECTすればいいらしい。 データベース名を引数にして、構造をオブジェクトで返す関数を作った。 /** * Get Database Structure * * @api public * @param {String} dbName Database Name * @return {Object} */ function getStructure(dbName) {     var db, rsTables, rsColumns;     var sql, tables, tableName;     // Generate SQL     sql = [];     sql.push("SELECT name");     sql.push("FROM sqlite_master");     sql.push("WHERE type = 'table';");     // Excute     db = Ti.Database.open(dbName);     rsTables = db.execute(sql.join(' '));     // Loop in Table ResultSet     tables = {};     while (rsTables.isValidRow()) {         tableName = rsTables.fieldByName('name');         tables[tableName] = {}

Google Compute Engineにインスタンス作成してSSHでログイン

イメージ
開発用でGoogle Compute Engine上にCentOSインスタンスを作成してTera Termでログインするまでの覚書。 環境: f1-micro, CentOS 6.5 x86_64   目次 Google Developers Consoleでプロジェクト作成 Google Compute Engine上でインスタンス作成 Tera Term(SSH)からrootでログイン 気付いたこと   1.Google Developers Consoleでプロジェクト作成 Google Developers Console にアクセスして「Create Project」する。   2.Google Compute Engine上でインスタンス作成 作成したプロジェクトを選択して、 Compute → Compute Engine を選択すると初回はクレジットカードの登録が必要。住所と名前は日本語でも大丈夫だった。 有効になると Compute → Compute Engine → VM instances から「New instances」を選んでインスタンスを作成する。 MACHINE TYPEは料金に関係してくる。詳しくは公式サイトで。 Google Compute Engine - クラウド コンピューティングと Infrastructure As A Service ー Google Cloud Platform 「EXTERNAL IP」はEphemeral(一時IPアドレス)を選択しておけば追加料金はかからない。 作成後は自動で起動される。 一覧から選択して「SSH」を選択するとブラウザ版SSHが起動する。これでも十分操作可能。   3.Tera Term(SSH)からrootでログイン TeraTerm Menuから起動するため。 詳しくは公式ドキュメントを参考にしながら。 Google Developers Console - Google Compute Engine ー Google Cloud Platform まずは公開鍵と秘密鍵を作成する。この辺は前の記事を参考に。 【CentOS】さくらVPSサーバーの初期設定 作成した公開鍵を管理画面の「SSH Keys」

PHPStormを64bitで動作+メモリ容量を増やして高速化

イメージ
コード補完候補が表示されるときに一瞬止まるのがイラッときたので調査。 環境: Windows 8.1 x64, JDK 8u20, PHPStorm 8.0.2 やってはみたものの日本語入力すると落ちるのでオススメしない。 → こちらの方が既に報告してくれている様子。Javaのバグらしい。バージョン9で直るらしいのでしばらく先になりそう。 Windows 7、Java SE 8u20、NetBeans 8の組み合わせで落ちる - torutkの日記   < 2015/03/24 Modified > PHPStorm 8.0.3 + JDK 8u40で無事動作するのを確認。   参考サイト Selecting the JDK version the IDE will run under : JetBrains Support PhpStormのメモリ使用量を増やして高速化   目次 使用中のメモリ容量を表示 64bit版JDKをインストール 64bit版PHPStormを起動 最大使用メモリ容量を増やす   1.使用中のメモリ容量を表示 File → Settings → Appearance → Show memory indicator   2.64bit版JDKをインストール Help → Aboutで確認するとJRE 1.7.0 x86を使っているので最新の64bit版JDK 1.8をインストールすれば速くなるかなと思ってやってみた。 JDKを公式サイトからダウンロード。JREでなくJDKと参考サイトに書いてあった。 Java SE - Downloads | Oracle Technology Network | Oracle 「jdk-8u20-windows-x64.exe」を実行してインストール。 念のためマシン再起動。   3.64bit版PHPStormを起動 PHPStormのインストールディレクトリに移動して64bit版を起動。 C:\Program Files (x86)\JetBrains\PhpStorm 8.0.2\bin\PhpStorm64.exe Help → Aboutでさっきインストールした1.8を使っているか確認。