Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
TL;DR FuelPHPでセッション情報をMemcacheやRDBMSなどを使って複数ノードで共有する場合には、 app/config/crypt.php を複数ノードで同じ値となるように設定する必要がある。 背景 Webアプリを複数ノードで構成して、ロードバランサでセッション維持をしない場合には、どのノードにユーザの再アクセスがあってもセッションを維持するために、セッションストアとしてMemcacheやRDBMSなどを使うと思います。 例えば、以下のような構成。 このような構成を FuelPHP で行う場合の注意点を書いておきます。 図と、以降の説明では ElastiCache(Redis)を使っていますが、注意点についてはRDBMSだろうが普通のMemcacheだろうが同じです。 セッションストアの指定 FuelPHP では、セッションストアの指定を app/config/sessi
$ brew install memcached ==> Installing memcached dependency: libevent ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libevent-2.0.22.yosemite.bottle.tar.gz ######################################################################## 100.0% ==> Pouring libevent-2.0.22.yosemite.bottle.tar.gz ? /usr/local/Cellar/libevent/2.0.22: 48 files, 1.8M ==> Installing memcached ==> Downloadi
MySQL または MariaDB で2つのデータベースの定義がどう異なるのか、調べたいことってありますよね? mysqldump を使って diff で差分を取得することをまず考えるかもしれませんが、もしその差分をなくす、つまり一方に行った変更を他方に反映したい場合に、まさかそこから手動で ALTER TABLE 文を書こうなんてエンジニアはいないと思います。 そんなわけで mysqldiff コマンドの出番です。 mysqldiff コマンドについて mysqldiff は Python で実装された Oracle 公式の MySQL 向けユーティリティツール群である MySQL Utilities に含まれるツールのひとつです。2つの異なるデータベースを比較し、その差分を出力することができます。 Perl製のツール MySQL::Diff について mysqldiff で検索すると同
Embulk Advent Calendar 2015の7日目の記事です。 こんにちは @sonots です。淡々と拙作のプラグインの紹介をしていこうと思います。文量が多くなったのと明日、明後日が空いていたので、記事を分けて 7日目: embulk-filter-column および embulk-filter-row 8日目: embulk-output-vertica 9日目: embulk-parser-none および embulk-filter-stdout のように紹介していこうと思います。 embulk-filter-column URL: https://github.com/sonots/embulk-filter-column カラムの絞り込みをするための filter プラグインです。 弊社での Embulk のユースケースは、主に HDFS に格納されているログを
内部動作の概要 内部動作的には以下のような挙動をしています (ターゲットテーブルがない場合は、ターゲットテーブルを作成します) テンポラリテーブルを作成し、そこに COPY statement でデータを投入します。 テンポラリテーブルは、ターゲットテーブルのスキーマ情報を取得して、全く同じスキーマで作成します COPY は COPY スキーマ名.テーブル名 FROM STDIN PARSER fjsonparser を利用します。結果 fjsonparser の機能をフルに利用することができます。fjsonparser 最強説に準拠しています。 テンポラリテーブルにデータを投入するのは、ターゲットテーブルの LOCK を取らないようにするためと、冪等性の担保をしやすくするためです。テンポラリテーブルには並列で書き込みます。 テンポラリテーブルにデータの投入が全て終わったら、INSERT
Embulk Advent Calendar 2015の10日目の記事になります。Treasure Dataの赤間です。 今日はEmbulkの リジューム実行 差分実行 について書いてみたいと思います。 どちらも大量のデータをロードする際に使える機能ですが、以下のような違いがあります。 リジューム実行 Embulkの場合成功したタスクの情報をファイルに書き込むことができ、1番目と4番目のタスクが成功したというような情報が残るので、リジューム実行した場合は2番目と3番目のタスクのみを実行するというものです。 -rオプションを使用して実行する なお頻繁にタスクが失敗してリジューム実行をする必要がないようにプラグイン側(Input/Output/FileInput/FileOutput)でリトライ処理を実装することも大事なポイントです。 その辺りは2日目にEmbulkプラグインのリトライ/例外処
先日の Embulk Meetup Tokyo #2 で発表したembulk-parser-grokというプラグインが好評だったので、使い方を紹介したいと思います。 embulk-parser-grok Embulkを活用したログ管理システム embulk-parser-grok embulk-parser-grokは、Grokというライブラリを利用した汎用的なパーサライブラリです。 https://github.com/thekrakken/java-grok Grokはほぼ正規表現のようなものなのですが、パターンに名前をつけて再利用できるという大きなメリットを持っています。 社内ではこのプラグインを使って、各種アプリケーションログ、Apacheのアクセスログ、Javaのスレッドダンプ、GC Log、JMeterの出力などをパースしています。 汎用的に使えるのでとても重宝しています。 簡
embulk meetupの後にsonots先輩に何か書いてくださいよーって言われたので、 embulkに限った話ではないのですが、関連する話題なのでEmbulk Advent Calendarに書かせてもらおうと思います。 embulkは設定ファイルがYAMLです。 現時点ではテンプレート機能はまだ限定的な機能しかなくて、それ程表現力がありません。 それならもう、YAMLの生成を別に任せようと思って簡単なgemを作りました。 joker1007/yaml_master YAMLの設定ファイルの大本になるマスターファイルを作っておいて、そこから特定の範囲だけを別のYAMLとして出力するだけのgemです。 その際にerbでRubyを埋め込めるようにしているので、Rubyで表現できることは何でもできます。 環境変数から日付を取ってそれをRangeにしてループしたり、ActiveRecordから
以前embulkのjava pluginをbundlerっぽくgithubからインストールして実行できるラッパーを作った - Qiitaという記事を書いた。 要はJava製のプラグインをgithubから直接インストールしてリリース前のものを使いたいというものだ。 で、コマンドをラップするgemを作ってみたのだが、DSLの挙動をちゃんと制御するのは面倒だしコマンドをラップするのは色々とポータビリティが悪い。 しかし、ある時天啓が降りてきた。 「Bundlerを弄ればいいや」と。 で、ソースコード読んで、gemspecの判別がどうなってるのかとモンキーパッチを当てるのにちょうど良い場所を探して試してみた所、とてもシンプルなハックで上手くいった。 Gemfile上でBundlerにモンキーパッチを当てるというダーティさに目を瞑れば割と便利ではないだろうか。 こんな風に書く。 require 'b
Neo4jって何? Neo4jはJavaで実装された、 オープンソースの最も人気のあるグラフデータベースです。 グラフデータベースでは、データセット全体をひとつの巨大な高密度ネットワーク構造としてモデル化します。 細かい説明は、ここを見てください。 Neo4jでできること グラフデータをそのままの構造でデータベースに保存することができて、そのグラフデータを元に検索やデータの引き出しなどができます。 グラフデータベースの構造は至ってシンプルで、以下の3つで構成されています。 node:関係を持つ対象 relation:方向を有する関係性 property:ノードとリレーションシップが持つ属性 具体的に、弊社で運営しているTalentBaseのデータ構造をグラフデータベースで管理したらどんなことが出来るかをまとめてみます。 TalentBaseの場合、 node:ユーザー、企業、求人 rela
neo4jとは neo4jとはNeo Technologyが開発したJavaベースのグラフデータベースです。(日本語ページ) グラフデータベースは、一つ一つのデータを行で表現するリレーショナルデータベースと異なり、 ノード(頂点)、リレーションシップ(エッジ)、プロパティ(属性)という3つの基本構成要素でデータを格納します。 グラフデータベースが有用なのはTwitterやFacebookのように、フォローや友人関係を扱う時です。 「友人のそのまた友人を探す」や「任意の二人を選択し、最短の関係(パス)を探す」などの問題を解こうとしたとき、 リレーショナルデータベースでは関係の探索に大量の結合演算が必要になりますが、 グラフ構造をそのまま格納しているグラフデータベースなら高速に処理することが可能です。 neo4jはオープンソースですが、ライセンスはAGPLv3なので、商用利用などの際はライセン
【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く