MySQL Casual Advent Calendar 2011 著者 MySQL Casual Advent Calendar 2011 参加有志 著 発売日 2012年3月5日 更新日 2012年3月5日
前置き こんにちは。はじめまして i47_rozary と申します。みなさん、意識は高まっていますか? 僕は上々でいたーいです。今回は拙作のTime::Piece::Over24というモジュールを紹介いたします。 皆さん Time::Piece ってモジュールご存知ですか? 軽いとの評判もあり、DateTime に代わって使われるようになってきている時間系のモジュールであります。 ボクは時間周りの処理をよくするので、よく使うんですけれども。Time::Pieceは、24時以降の時間(例えば、25時は翌日の1時であるとか)を扱えないので、深夜帯に生きるボクには活かせづらいときがままありました。 だので、そこら辺をよしなにしたいなといった趣向のモジュールになります。 24時以降のTime::Pieceオブジェクトを作っちゃう use strict; use warnings; use Time
2012年2月1日の更新を持って、カレンダーおよび記事の登録を完全に完了しました。また 2012 年の Advent Calendar でお会いしましょう! カレンダーのカテゴリに関しては、勉強不足のために不適切なカテゴリに分類されている可能性があります。カテゴリ移動についての希望があればご連絡下さい。( @otchy ) 記事へのリンクテキストについては、原則として記事タイトルからカレンダー名やタグ名などを除いたものとしています。 ただ、「アドベントカレンダー名+日付」などのように内容が推測出来ない記事タイトルだった場合、記事の内容の簡単なメモをリンクテキストとするように心がけています。
新年あけましておめでとうございます。年明け早々ではありますが、去年の話をします。 昨年末は各種の技術系アドベントカレンダーが盛り上がっていて、そのまとめを作っていました。 まとめサイト自体はすでに公開済でしたが、ようやく (ほぼ) 全ての記事の登録が終わり「完結」と呼べる程度になったので再度アナウンスします。 じゃん! 上のリンクから飛べる専用サイトで、合計 97 個のカレンダーとそれらに含まれる 2264 もの記事全てに直リンクしています。 2012 年のはじめにこれらのカレンダーの記事をまとめ読みして、今年の抱負なんかを考えてみるのもいいんじゃないでしょうか? それにしても驚くべきは記事の質の高さとその数です。普段あまり目にする事のない、Web 系以外の技術情報もかなりの数があり、こんな世界があるのかと驚くことも度々でした。日本の Web は技術情報の宝庫です! 数字の分析 全部で 9
こちら Yappo の日でございますが、 Yappo の執筆ペースが芳しくないので、本日も社員のオオサワが代打で「DBI」や「ORM」について書かせて頂きたいと思います。 trigger / hook point insert, update, delete クエリの前後処理を拡張して、レコード作成時刻の設定や update 時刻の更新はたまたレコード削除時に削除テーブルへの自動コピー等を、一度ベースクラス上で定義しておけば新しく作るテーブルへも use parent する等して簡単に適用出来きるように便利になりますが、うっかりしてると後続の開発者がハマったり制約が出てきます。 DBMS の trigger ORM の機能の trigger を多用していると、後続は DBMS 本体の trigger を使う事に躊躇します。使っちゃいけないというわけではないでしょうが、一つのクエリに対する副
Perl AdventCalendar初投稿でドキドキしているriywoです。目指せhirose31ということで「コードも書けるインフラエンジニア」を所望していますが、正直、DBI使ってゴリゴリアプリとか作ってない。。。限りなくひとりDBIx::Casual Trackではありますが、そんな僕だからこそ書けるゆるふわなエントリをどうぞ! 情弱なんで生SQLがいいんです。。。 Tengとかすごい魅力的なんですが、ゆるふわ過ぎてついつい生でSQLを書きたくなります。ORMのメソッド覚える努力をしないだけ情弱なんですが、特にインフラはいつも慣れ親しんでいるSQLをそのままアプリでも使いたくなっちゃいます。 とは言え、こんなコードを書いてしまうと色々と残念な感じです(注:2年前くらいの僕)。 my @line = `mysql -N -uuser -ppass hoge -e "select *
※ブクマコメントで指摘頂いた箇所を追記しました>< MySQL Casual Advent Calendar 2011 21日目の記事です。 前日は@sohgohさんの 「MySQLのUDFでカジュアルにファイル操作【MySQL Casual Advent Calendar 2011 20日目】」 でした。図や動画もあって見やすいですね! 改めて自己紹介です。21日目を担当する、今回のカレンダーでNo.1カジュアルの座を狙っているid:oranie(オラニエ)です。 今回はMySQLもそこそこで、僕の名前の正しい読み方だけを覚えてくれれば今日は大丈夫です。 意図的に間違えている人もたまにいますが、心が汚れすぎていると思うのでお寺で座禅とかした方がいいと思います。 今までの記事を拝見させて頂き、みんな真面目に色々Tipsを書いているのでニッチ狙い&初心者の僕は 「MySQLに対して、カジュア
2011年8月のkazeburoさんのエントリに対する解説記事です。結論から言うとkazeburoさんの案に賛成なのですが、本日はどうしてそうなったのかというところを確認していきたいと思います。本記事はMySQL Casual Advent Calendar 2011の17日目のエントリです。16日目はakira1908jpさんでした。 当時の内容を覚えていない方は、先にkazeburoさんのエントリをご一読ください。また、テストケースがGitHubに公開されていますのでカジュアルに再現試験をすることも可能です。 Covering Index と self-join と MySQL - blog.nomadscafe.jp kazeburo's gist: 1150842 - Gist 問題のSQLをチューニングするには、MySQLがインデックスに対してどのようにアクセスするかという点につ
カジュアル!(挨拶) このエントリは MySQL Casual Advent Calendar 2011 の18日目の記事です。 昔、専ら PostgreSQL を使っていた頃、MySQL のクエリキャッシュって簡単に性能上がるしみたいだし羨ましいなあ、と思っていました。そのため、1年ほど前から業務で MySQL を使うようになっても、クエリキャッシュは当然のごとく有効にしておりました。 ところが先日 DSAS開発者の部屋:クエリキャッシュは切ったほうがいいんじゃなイカ? というエントリを読みまして、クエリキャッシュはグローバルロックを獲得するとのこと。これはちょっと検証してみなければなるまい、ということでベンチマークをしてみました。 ベンチマーク結果 結果は別ページにまとめました benchmark script と my.cnf ざっくりと説明しますと、 平均 260 byte/行、1
やぁ。可愛いアイコンでお馴染みの@nekokakだよ。 mysql-casualとか言ってるけどカジュアルな記事が@oinumeさんくらいしかないよね。 ドン引きだね'`,、('∀`) '`,、 ということでガクンと敷居を下げようって感じで超絶カジュアルな話をしてみようと思うんだ。 カジュアル運用していると、「あれなんかこのテーブルまじレコード数おおすぎね?」 とかあるあるですよね。 そこでカジュアルにcountして見るわけです。 InnoDBのテーブルになのにそれもmsaterに対して。 カジュアルですね。 mysql> select count(*) from accesslog; +----------+ | count(*) | +----------+ | 11676738 | +----------+ 1 row in set (1 min 36.99 sec)1分半くらいかか
aloelightです。 みなさん、DBIx書いてますか?私は5年以上はPerlを使っていますが、DBIxを書いたことがありません。CPANの既存ライブラリとDBIの基本機能で間に合ってしますからです。今日はDBI付属の機能の中からDBI::Profileを紹介したいと思います。 どんな時に使うの? 開発時には何気なく実行してたけど、なんかこの機能が遅いような気がする。そんなことありませんか? MySQLではEXPLAINを使ってクエリの実行計画を確認することで、そのクエリがなぜ遅いかを判断することができますが、その前にどのクエリが遅いかを判断しなければいけません。お手軽さを求めるなら、DBI::Profileを使うのがいいんじゃないでしょうか。 使い方 DBI::Profileの使い方はいくつかありますが、今回は$ENV{DBI_PROFILE}にセットする方法を使います。他には$dbh
こんにちは、最近 PSP1000 の電池が一瞬で切れてしまってまともにゲームができない xaicron です。 さて、みなさんは DBI から吐かれた SQL をみたいなーと思うこともあるでしょう。 そんな時は、$ENV{DBI_TRACE} = 2 とかしてみると、ドバーッといっぱいデバッグログが出てきて、 その中に実際に発行された SQL がちょろっと出てたりするのでこいつを頑張ってパースすればいい感じですね! っていうのはだいぶ面倒だったりしますね。あたりまえですね。 そこで、use するだけでとりあえず全部の発行された SQL を STDERR にはいてくれるモジュールを書きました。 その名も DBIx::QueryLog です。そのままですね。 つかいかた 使い方は至極簡単で、どっかで適当に use するだけです。ほかには何もいりません。 そうすると、以下のような感じで STDE
こんばんは。 MySQL Casual Advent Calendar 2011 5日目担当のid:marqsです。 東京は12月6日になってしまったかもしれませんが、京都は霊力が強いせいかまだ12月5日のようです。 MySQLにまつわるCasualなネタ、なかなか思いつかなかったのですがちょっと前に調べたInnoDBのテーブル統計情報について書いてみます。 InnoDBのテーブルのインデックス統計情報ですが、基本的に以下のタイミングで更新されます。 テーブルがオープンされたとき テーブル統計の情報が更新された後、テーブルの全行数の1/16が更新されたとき テーブル統計情報の更新後、20億行以上の行が更新されたとき ANALYZE TABLEが実行されたとき SHOW TABLE STATUS, SHOW INDEX FROM …が実行されたとき この統計情報の更新処理ですが、@nippo
2011-12-08 00:40追記 @karupaneruraさんに指摘されて、s/Plack::Middleware::Conditionals/Plack::Builder::Conditionals/ しました。ありがとうございます。@kazeburoさんすみませんでした。 こんにちは。Songmuです。鎌倉の面白法人でPerlでソーシャルゲームの開発をおこなっています。 「ぼくらの甲子園熱闘編」や「ぼくらのワールドリーグ」の開発に携わっております。 アプリはArk + DBIx::Class + Text::MicroTemplate::Extendedという構成で作ることが多いのですが、 今回はソーシャルゲーム開発で活用しているPlack関連モジュールを2つ紹介させていただきます。 ちなみにArkのadvent calendarもやっておりますので、併せて読んでもらえると嬉しい
“MySQL Casual Advent Calendar 2011” 7 日目を担当させていただく、hatak (@hisashi) です。 普段はモバイルゲームのインフラをメインにみているのですが、今回はそんな業務で経験したことを基に記事を書かせていただきます。 カジュアルすぎる内容かもしれませんが、お付き合いいただければと思います。 MySQL のレプリケーション MySQL のレプリケーションは、安定稼働やバックアップ、負荷分散などの目的に利用できる優れた機能です。 bin-log (バイナリログ) を利用して Master サーバから Slave サーバに更新を伝播させ、データの複製を行います。Slave サーバでは、2 つのスレッドが動作しています。 IO_THREAD – Master から送られてきたデータを受け取り、relay-log (リレーログ) として書き出す SQ
http://mysql-casual.org/2011/11/mysql-casual-advent-calendar-2011.html の6日目の記事として書かせていただきます、sugyanです。 勢いで参加表明してしまい、今日慌てて久しぶりにMySQLを触りました。 MySQLでFizzBuzz ストアドプロシージャって使ったこと無かったので初めて触ってみました。 DROP PROCEDURE IF EXISTS FizzBuzz; delimiter // CREATE PROCEDURE FizzBuzz(n INT) BEGIN DECLARE i INT DEFAULT 1; WHILE i <= n DO SELECT CASE WHEN i % 3 = 0 AND i % 5 = 0 THEN 'FizzBuzz' WHEN i % 5 = 0 THEN 'Buzz'
こんにちは。新潟在住Perl人、neko_gata_sです。AdventCalendarの敷居を下げにきました。ものっそいカジュアルな話をします。今日はList::Utilについて書こうと思います。 どちらが良いコード? さて、いきなりですが、以下のふたつのコードを比べてみてください。 use strict; use warnings; my @shugo_charas = qw/ran miki suu dia/; my @shugo_charas_uc; foreach my $shugo_chara (@shugo_charas) { push @shugo_charas_uc, uc $shugo_chara; } use strict; use warnings; my @shugo_charas = qw/ran miki suu dia/; my @shugo_charas_
昨日でTengを利用するのに必要なクラス定義は終了しているので早速 次のステップとして新しいレコードをデータベースに登録する INSERTの方法を紹介します。 insertメソッド SQLのINSERT文を実行するには以下のようにします。 my $row = $teng->insert('user', +{id => 1, name => 'nekokak'}); このようにすると、 INSERT INTO user (id,name) VALUES(1,'nekokak'); というようなSQLが実行され、データベースに新しい行が登録されます。 Tengのinsertメソッドの返り値として、insertしたtableに対応するRowクラスでインスタンス化された Rowオブジェクトがかえってきますので、 $row->id; # 1 $row->name; # nekokak といったように
Tengを使うにはまずSchemaの定義を行う必要があります。 なお、今回はProj::DBというnamespaceで統一して記述していきます。 コードは特記しない限りSQLiteを前提としています。 以下のようなテーブルがあるとし、 create table user ( id integer, name text, primary key ( id ) ); create table status ( id integer, user_id integer, body text, primary key ( id ) ); コレに対応するTengのSchemaは以下の様に書きます。 package Proj::DB::Schema; use strict; use warnings; use Teng::Schema::Declare; table { name 'user'; pk
こんにちは! 今年はボクが作ってるTengというPerlのORMについて 25日かけて紹介してみたいとおもてるんだ。 師走ってことで仕事もあっていろいろあって忙しいから完走できるかどうか不安なんだけど みんなに是非つかってもらいたいから頑張るんだ。 この記事執筆時点のTengの最新バージョンは0.14_03のdev releaseとなっています。 25日間でTengのバージョンがupされるかもしれませんがその場合は注意書きをいれますのでご注意ください。 Tengのリポジトリはhttps://github.com/nekokak/p5-TengこちらですのでCPANにupされる前に試したい! Tengにpatches and testsを叩きつけたい!という場合はforkしてpull requestしてくだされば よきにmergeしますよ。 Tengはなるべく依存モジュールが増えないようには
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く