タグ

data-modelに関するyappoのブックマーク (26)

  • モダンPerl連載第39回 - Charsbar::Note

    報告が遅くなりましたが、今回はsoozy.con/kamakura.pm開催記念ということでめずらしく作者が日人のネタがメインになっています。当初は年末年始に原稿を書いて、年明け早々に公開、のつもりでいたのですが、Tengの開発が格化したうえカンファレンスまでやるということになったので、締め切りを半月遅らせてもらったのでした。分量が分量なのでたいしたことを追記できたわけではありませんが、今回4系統のサンプルを書いてみて、それぞれ特徴があっておもしろいなあと思ったことです。個人的には生DBIと、以前ならJifty::DBIを使っていたものについては少しずつData::Modelに乗り換えているところ。Tengは「天狗」からということになっていますが、オジサンにはテレサ・テン(Teresa Teng)のTengに見えて仕方ないのよね――というネタは、さすがに編では自重しました。マッパは「

    モダンPerl連載第39回 - Charsbar::Note
  • 第39回 DBIx::Skinny:DBIx::Classに不満を感じたら | gihyo.jp

    DBIC以降の選択肢 今回はデータベース話の締めくくりとして、DBIx::Class以降に登場したいくつかの選択肢についてざっくりまとめておきます。これらはいずれも若く、DBICに比べてユーザ数も少ないためドキュメントなどの整備が遅れている部分もありますが、今回とりあげるものの多くは日人がつくっているものですから、英語圏で開発が進められているものより疑問や要望は送りやすいはず。気になることがあったらぜひそれぞれの作者氏に伝えていただければと思います。 DBIx::Skinny nekokakこと小林篤氏のDBIx::Skinnyは、今回紹介するもののなかではもっとも実績豊富なものといってよいでしょう。開発の動機については氏のブログによくまとまっていますが、標準で用意されているCRUDメソッドを使うときだけでなく、速度を稼ぐために生のSQLを書いたときでもinflateなどの補助機能を使え

    第39回 DBIx::Skinny:DBIx::Classに不満を感じたら | gihyo.jp
  • Mojolicious::LiteとData::ModelとjQueryでAJAXなチャットを作ってみた - 日曜プログラマのそゞろ事

    Mojoliciousが1.01になりましたね。 まあ、それとは関係ないですが、jQueryを使ってAJAXなチャットを作ってみたので晒してみようかと思います。 AJAX自体、やった事が無いので、もっと良いやり方があるとは思います。 値の受け渡しはJSONを使ったのですが、Mojolicious側の受け取り方法がよく分からなくて$self->req->jsonとか、Mojo::JSON->newとかやっていたのですが、結果的に普通に$self->paramで受け取れるのがわかって、凄いと思いました。 JavaScript側では、Perlからのtime値をどうやって渡すのかが、調べていてもよく分からなかったので、正解に行き着くのが大変でした。 ミリセカンドで渡す、というのは気づきませんでした。 常識すぎてあまり書かれないんでしょうか…。 #!/usr/bin/env perl #ut

  • Data::Modelで$row->get_columnsを覚えた - 日曜プログラマのそゞろ事

    JSONを返すスクリプトの記事で、リストを作るときに以下のようにしていたのですが。 my @json; for my $msg (@{$messages}) { push @json, { id => $msg->id, msg => $msg->msg, ts => $msg->ts, }; } $self->render(json => [@json]); レコードの情報は、get_columnsで取得できることがわかった。 それをふまえて書くと、上の処理に相当するコードは以下のようになります。 for my $msg (@{$messages}) { push @json, $msg->get_columns; } ここまで来たら、mapを使って書いてみたいですよね。 my @json = map { $_->get_columns } @{$messages}; $self->r

  • Mojolicious::LiteでData::Modelを使ってみた - 日曜プログラマのそゞろ事

    先日1.0にバージョンアップしたMojolicious(::Lite)を格的に触ってみようとアレコレやってみた。 MojoliciousのWikiにORLiteを使ったサンプルがあったのですが、残念ながらそのままでは日語には対応していないので、他のORMを使ってみようという、そんな感じです。 ほとんどが元ネタのパクリですが。 #!/usr/bin/env perl #utf8 package DataModel; use utf8; use base 'Data::Model'; use Data::Model::Schema; use Data::Model::Driver::DBI; my $dbfile = qq{$0.db}; my $dsn = qq{dbi:SQLite:dbname=$dbfile}; my $driver = Data::Model::Driver::

  • 『Amebaなう』リアルタイム検索機能に Apache Solr と MessagePack を採用 - 古橋貞之の日記

    ミニブログサービス「Amebaなう」に検索機能を追加 Apache Solrのカスタマイズにより検索パフォーマンスが大幅向上 検索機能は、当社の研究開発組織「インキュベーションラボラトリー」が開発し、Apache Solrをベースに、検索インデックス作成アルゴリズムの効率化や、データを高速かつ効率的に保存できる技術仕様「MessagePack」と各種圧縮アルゴリズムを組み合わせる等の対応を行いました。 あわせて読みたい:LuceneのインデックスにStoreするデータをMessagePackで圧縮してみた - 社内NEET宣言 MessagePack と各種圧縮アルゴリズムを組み合わせることで、インデックスサイズを80%程度に圧縮することが可能になったようです。 MessagePack を使うと、配列やMapなどの構造を、非常にコンパクトに保存することができます。例えば、[1,2,3]とい

    『Amebaなう』リアルタイム検索機能に Apache Solr と MessagePack を採用 - 古橋貞之の日記
  • DBD::SQLite 1.30_02 - Charsbar::Note

    あと、先日リリースしたDBD::SQLite 1.30_02の変更点について。 DBD::SQLiteはこれまで DBIが用意した枠組みの範囲内でのトランザクションを利用している(AutoCommit/begin_work) fork()などを利用して並列性を高めている 読み書きを平行して行っている といった条件が重なったときにトランザクションがデッドロックすることがある、という問題を抱えていました。最小限の再現コードはこんな感じになります。 use strict; use warnings; use DBI; my $pid = fork(); if ($pid) { do_transaction(); } else { sleep 1; do_transaction(); exit; } unlink 'test.db'; sub do_transaction { my $dbh =

    DBD::SQLite 1.30_02 - Charsbar::Note
  • Data::Model事始め - Kentaro Kuribayashi's blog

    たまにはいつも使ってるのとは違うORMを使ってみようってんで、id:yappoさん作のData::Modelを使ってみました。その特徴である、独立したカラム定義や、そのことによる柔軟なエイリアス、inflate/deflateの仕組み、透過キャッシュなど、とてもいい感じだなーと思いました。 ……が、Active Recordパターン脳としては、たとえばRow クラスにメソッドを追加 - JPerl Advent Calendar 2009にあるような、schema定義の中にadd_methodしておのおののテーブル定義の中にロジックを書いていくのは、なんだか見通しが悪いという感じが……。どうにかならないのかなーってんでソースを見てみたら、どうにかなっていました。申し分けございません。 たとえば、Userというモデルに対して、以下のような定義を行うとして、 package MyApp::Mo

    Data::Model事始め - Kentaro Kuribayashi's blog
    yappo
    yappo 2010/01/04
    そういえばそんなのが!使い方はあってますー use しなきゃならない件は、僕がその使い方を使って無いから仕様が固まってないというだけです><
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    yappo
    yappo 2009/12/21
    dann++ あざーーっす!
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • oinume journal

    RaycastにはScript Commandsという機能があり、ずっとずっと気になっていたのでGW中に重い腰を上げて試してみた。最近会社の人にRaycastをオススメすることが多くなってきたのだけれども、「Raycast歴1年以上経つのにScript Commandsも使ったことないの?」みたいに後ろ指差されないようにするためにも... Script Commandsとは? 簡単にいうとCUIのコマンドをRaycastから呼び出せるというただそれだけのものっぽい。「っぽい」というのは単純に自分がちゃんと調べてないだけです。はいテキトーですいません。 なにを作るか? Hello Worldを出力するだけのScript Commandsを作っても仕方がないので、よく自分でやっている単純作業を自動化するスクリプトを考えてみた。結果として生まれたのは、以下のような beforeの文字列をafte

    oinume journal
  • Data::Model

    Data::Model is a new ORM created by yappo, Its usage style is similar to DataMapper and Jifty::DBI. Different from most famous equivalent, Data::Model handles multi-database. In order to do that, every model was appointed its database and table name in addition to its schema specification. Let's see a simple example: This is a simplest model in Data::Model, Only two DDL in it. The first, base_driv

    yappo
    yappo 2009/07/07
    おー
  • Data::Model - Chupei Perl Mongers

    四個檔案中,Posts 和 Users 是 Model,MyApp::DB 則是一些自定義的函式,simple-create-read.pl 則建立一條資料並讀出。 Model 中主要就是兩條 DDL,首先先用 base_driver( $driver ) 指定映射的資料庫,可用的 driver 可參考 DBI 模組。目前 Data::Model 支援的資料庫則只有 MySQLSQLite 兩樣。當然了,在每個 Model 中重複指定相同的 driver 是很不合乎 perl style 的,我們把他提出到 MyApp::DB 中讓 driver() 處理它。 剩下的工作和上述提到的兩個 ORM 就差不多了,install_model() 宣告這個 Model 對應的資料表名稱和 schema。columns() 可說是 Data::Model 最佳的語法糖衣,可以一口氣用預設方式宣

    yappo
    yappo 2009/07/07
    gugod++
  • Data::Model PostgreSQL 対応作業中 - 酒日記 はてな支店

    http://github.com/fujiwara/p5-Data-Model/tree/master Data::Model を PostgreSQL でも使いたいので対応作業をやってみたら、テストまわりでいくつか困ったことが。 テーブル名 user は PostgreSQL では予約語のため、quote しないと使えない quote すればいいのだけど、PostgreSQL は "", SQLiteMySQL は `` で、そこを切り替えるのが面倒そうだったので s/user/tusr/g; してしまった CHAR 型のカラムは、PostgreSQL では末尾に空白が埋められるので、取り出すと期待する値と異なる (MySQL では取り出すときに切り捨てられる) デフォルトの型を切り替えられるように Schema::Properties->default_column_type

    Data::Model PostgreSQL 対応作業中 - 酒日記 はてな支店
    yappo
    yappo 2009/07/03
    ご苦労おかけします>< テストケースの方の名前変えちゃってokです><
  • YappoLogs: Data::Model っていう ORM みたいの CPAN にあげたよ

    Data::Model っていう ORM みたいの CPAN にあげたよ あざーす。循環参照しすぎるとバターになる。。なんでそんなに人の目を気にするのだろうと、マジレス。 早速ですが Data::Model っていう O/Rマッパー 的な物を CPAN にあげました。 Data::Model http://github.com/yappo/p5-Data-Model/tree/master 元来は MVC モデルで言う所の Model を一括でまかなえるつもりで実装していますが、ロジック処理は普通の Perl のクラスで書いちゃった方が潰しが聞くため、主にストレージを Perl のオブジェクトにマッピングする ORM 的な使い方が主流となっています。 そして、 Data::Model の多くの実装や設計などは Data::ObjectDriver を参考にして開発しました。 他にも後述して

    yappo
    yappo 2009/06/11
    昨年末の時点ではDBIx::Skinyより良いとSkinyの中の人が発表してました > id:fbis
  • Kazuho@Cybozu Labs: Pacific という名前の分散ストレージを作り始めた件

    大規模なウェブアプリケーションのボトルネックがデータベースであるという点については、多くの同意が得られるところだと思います。解決策としては、同じ種類のデータを複数の RDBMS に保存する「sharding」 (別名:アプリケーションレベルパーティショニング/レベル2分散注1) が一般的ですが、最近では、分散キーバリューストア (分散 KVS) を使おうとする試みもみられるようになってきています。 分散 KVS が RDBMS sharding に対して優れている要素としては、事前の分割設計が不要で、動的なノード追加(とそれにともなう負荷の再分散)が容易、といった点が挙げられると思います。一方で、Kai や Kumofs のような最近の実装では eventually consistent でこそ無くなってきているものの、ハッシュベースの分散 KVS は、レンジクエリができなかったり (例:

  • 今日は Yokohama.pm の日です - Pixel Pedals of Tomakomai

    こちらでustされますので、早めにテレビの前に集まりましょう! QudoxSkinny / nekokakさん DBIx::Skinny 昔はSQL::Parser。今はルールベースでオブジェクトにマッピング Data::Modelに近い setupで接続情報、install_tableでテーブル情報 install_utf8_columnsとかinstall_inflate_rule → ルールベースでの設定 SQL::Parserを使うの辞めたら、開発が盛んになった → 速くなったら戻ってくる まとめ: やりたいことは大体出来る。githubにあるのでどうぞ Qudo TheSchwartzにかわるJobQueueシステム Skinnyをベースにしたかった githubの練習がしたかった TheSchwartzのスペルが覚えにく過ぎる。拡張がむずい。挙動を知りたい QueueDoでクド

    今日は Yokohama.pm の日です - Pixel Pedals of Tomakomai
  • DBIx-DataModel-3.12

    Tools Download (213.53KB) MetaCPAN Explorer Permissions Subscribe to distribution Install Instructions Dependencies Carp::Object Clone DBI Data::Structure::Util Hash::Util MRO::Compat Module::Build Module::Load Params::Validate SQL::Abstract::Classic SQL::Abstract::More Scalar::Util Storable Try::Tiny namespace::clean version and possibly others Reverse dependencies CPAN Testers List Dependency gr

    DBIx-DataModel-3.12
    yappo
    yappo 2009/03/16
    なんできづかなかったんだろう
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    yappo
    yappo 2009/02/05
    gjすぎて鼻血でた