Perlを中心とした技術系の話などをつらつら

2006年09月30日

フリップ・クリップも絶賛社員募集中です!

naoyaさんのバイト募集に便乗して、弊社の社員募集を出してみます。

弊社はFlipClipという動画共有サービスを運営している会社です。

http://www.flipclip.net/

動画共有サービスというとYouTubeがまっさきに思いつくと思いますが、

YouTubeをイメージしてもらって、そこからEvilさを引いて、かわいらしさをプラスするとFlipClipのイメージに近くなるかなーと思います。

ただ、YouTubeの真似をして、日本版YouTubeを作る気はありません。

ブログによって、誰でも自分の意見を世界に発信できるようになったように、

FlipClipを使うと、誰でも動画を簡単に世界に発信できるようになるといわれるようなサービスに

したいと思っています。そのために動画を公開する人が使いやすかったり、便利だったりする機能を

どんどん強化していきたいと考えています。

フリップ・クリップでは、上記のようなサービスの開発に興味があり、

以下のようなことができる方を募集しています。

  • PerlでWebアプリを開発したことのあるエンジニア(Sledge経験者大歓迎。Linux,Apache,MySQLに詳しい方さらに大歓迎)
  • ActionScriptがバリバリかけるFlashエンジニア
  • XHTML+CSSなコーディングがバリバリできるデザイナー、コーダー
  • GFSのような世界中の動画を管理できるような巨大ストレージシステムを構築したいと考えている方
  • 巨大なトラフィックをさばけるようなサーバの構築・運用をしたいと考えている方

弊社の会社概要は以下のとおりです。

http://www.flipclip.net/company

現在、Perlエンジニアが僕を含めて2名、デザイン・コーディング・広報まで担当している、デザイナーが1名、営業・マーケティング担当が1名の4名がメインで活動しています。

そして、関連会社のアトムにFlash、デザイン、サーバ構築運用の部分を手伝ってもらっています。

社員はみんな、動画を使ってあんなことできないか、こんなことできないか、あーでもないこーでもないと議論しながら、面白いアイデアはどんどん実装していこうというスタンスで開発を進めています。

FlipClipはすべてPerlで書かれていて、フレームワークにSledgeを採用しています。

OSは、CentOS4.3で、WebサーバはApache+mod_perl, DBにMySQL, SMTPサーバにPostfixを採用しています。

動画の変換部分もffmpegやQuickTimeなど様々なソフトウェアを組み合わせて自前で構築しています。

ソースコードの管理にはSubversionを使っています。

簡単に弊社を紹介させていただきましたが、ちょっとでも興味をもたれた方は、

horiyasu at gmail.com までご連絡ください。


via: naoyaのはてなダイアリー - バイト募集してます。

Posted by horiuchi at 16:05 | Permalink | Comments (1) | TrackBack (0)

MT3.3でBerkeley DBからPostgreSQLへの移行する際の注意点

MTのエントリが多くなりすぎて、再構築ができなくなったと友達から連絡をもらい、確認したところ、DBにBerkeleyDBを使っていたので、それを改善すべくDBをBerkeleyDBからPostgreSQLに移行してみました。

その際、MTのマニュアルにしたがってやってみたところ、そのままではうまくいかなかったので、行った作業をメモ的に残しておきます。

* PostgreSQLの設定

まず、マニュアルをみてPostgreSQLの設定をしました。

基本マニュアルどおりに進めて、mt-config.cgiの設定を変更し、

データベースの作成をおこないました。

DBの文字コードはUTF-8だったので、DB作成の際、文字コードを指定しました。

createdb -E UNICODE --owner xxxxx

* 移行スクリプトを実行

次にマニュアルどおりMT付属の移行スクリプトを実行したところ、DBの文字コードと違う文字コードのデータを入れようとした旨のエラーメッセージが出て、移行スクリプトを完了できませんでした。

文字コードの違うデータというのは、トラックバックPingのデータで、トラックバック元のブログの文字コードがUTF-8ではないものがエラーではじかれているようでした。

これは、文字コードが違うPingを探し出して削除するのは面倒くさかったので、移行スクリプトのほうを修正して、インサートに失敗しても処理を続行するようにして、回避しました。

修正点は以下のとおり。saveに失敗してもdieしないようにしただけです。MTの方で、DBへのアクセスが高度に抽象化されているので、修正は非常に簡単です。

 --- ./mt-db2sql.cgi.org       Sat Sep 30 00:54:15 2006
 +++ ./mt-db2sql.cgi  Sat Sep  9 20:09:45 2006
 @@ -141,8 +141,8 @@
                  $obj->allow_comments(0)
                      if defined $obj->allow_comments && $obj->allow_comments eq '';
              }
 -            $obj->save
 -                or die $obj->errstr;
 +            $obj->save;
 +               # or die $obj->errstr;
          }
 
          # fix up the category parents

この修正版のスクリプトを再度実行したところ、今度は問題なく、データの移行が完了しました。

* シーケンスの作成、更新

これで万事OKかと思ったんですが、この状態でエントリを作成しようとすると、以下のようなエラーがでて、作成できなくなってしまいました。

Saving entry failed: ERROR: ExecInsert: Fail to add null value in not null attribute entry_id

このエラーでググッてみると、どうやらDB内にシーケンスがないためのようです。

先ほどの移行用スクリプトだと、テーブルは作成されてもシーケンスは作成してくれないみたいです。

そうとわかれば、後はシーケンスを手動で作成するだけです。

以下のSQLを実行し、シーケンスを作成し、格納されている値を現在の最大値にセットしたところ、問題なく動くようになりました。

CREATE SEQUENCE mt_author_id;
CREATE SEQUENCE mt_blog_id;
CREATE SEQUENCE mt_category_id;
CREATE SEQUENCE mt_comment_id;
CREATE SEQUENCE mt_config_id;
CREATE SEQUENCE mt_entry_id;
CREATE SEQUENCE mt_fileinfo_id;
CREATE SEQUENCE mt_ipbanlist_id;
CREATE SEQUENCE mt_log_id;
CREATE SEQUENCE mt_notification_id;
CREATE SEQUENCE mt_objecttag_id;
CREATE SEQUENCE mt_permission_id;
CREATE SEQUENCE mt_placement_id;
CREATE SEQUENCE mt_plugindata_id;
CREATE SEQUENCE mt_tag_id;
CREATE SEQUENCE mt_tbping_id;
CREATE SEQUENCE mt_template_id;
CREATE SEQUENCE mt_templatemap_id;
CREATE SEQUENCE mt_trackback_id;
select setval('mt_author_id',(select max(author_id) from mt_author));
select setval('mt_blog_id',(select max(blog_id) from mt_blog));
select setval('mt_category_id',(select max(category_id) from mt_category));
select setval('mt_comment_id',(select max(comment_id) from mt_comment));
select setval('mt_config_id',(select max(config_id) from mt_config));
select setval('mt_entry_id',(select max(entry_id) from mt_entry));
select setval('mt_fileinfo_id',(select max(fileinfo_id) from mt_fileinfo));
select setval('mt_ipbanlist_id',(select max(ipbanlist_id) from mt_ipbanlist));
select setval('mt_log_id',(select max(log_id) from mt_log));
select setval('mt_notification_id',(select max(notification_id) from mt_notification));
select setval('mt_objecttag_id',(select max(objecttag_id) from mt_objecttag));
select setval('mt_permission_id',(select max(permission_id) from mt_permission));
select setval('mt_placement_id',(select max(placement_id) from mt_placement));
select setval('mt_plugindata_id',(select max(plugindata_id) from mt_plugindata));
select setval('mt_tag_id',(select max(tag_id) from mt_tag));
select setval('mt_tbping_id',(select max(tbping_id) from mt_tbping));
select setval('mt_template_id',(select max(template_id) from mt_template));
select setval('mt_templatemap_id',(select max(templatemap_id) from mt_templatemap));
select setval('mt_trackback_id',(select max(trackback_id) from mt_trackback));

以上BerkeleyDBからPostgreSQLへの移行の際の注意点をまとめると、

  • 文字コードの問題でエラーがでるため、移行スクリプトを修正して、エラーを無視するようにする。
  • シーケンスは作成されないので手動で作成する。

の2つを注意しないといけないようです。

Posted by horiuchi at 03:13 | Permalink | Comments (3) | TrackBack (0)