スタッフブログ

  • Ryujiさんの最新配信
  • RSS

XOOPS CubeをEUC-JPからUTF-8に変更したらLiaiseでフォームが表示されなくなった時の解決方法

Ryuji : XOOPS » 総合的な情報 2012/6/5 17:03

Blogger's Avatar

XOOPS Cube Legacy2.1系の初期の頃は、日本語文字コードEUC-JPがデフォルトでした。

今ではUTF-8を使うことが主流になってきているため、お客様から文字コードEUC-JPで構築したXOOPS CubeサイトをUTF-8化するご依頼を受けることが度々あります。

そんな文字コード変換中に、メールフォームモジュールのLiaiseではまったことがあります。

通常文字コード変換するときは、DBデータをダンプして、ダンプファイルの文字コードを変換してインポートする程度で済むのですが、Liaiseはこれだけではすみませんでした。

■原因はserialize
Liaiseではフォーム要素のデータをPHPのserialize関数を使って変換してDBに保存していました。
serialize関数を使うと配列やオブジェクトを文字列にしてくれるので、項目数が増減する値をDBカラムに保存するときなどに便利に使うことがあります。

この文字列にする過程で、変数内のも文字列のバイト数も書き出されます。
このバイト数が、EUC-JPとUTF-8で異なるため、EUC-JPでserializeされた値をUTF-8でunserializeしても元にもどせなくなっていました。

■EUC-JPでunserializeしてUTF-8でserializeしなおす
そこで、インポートしたDBからEUC-JPでunserializeしてUTF-8でserializeしなおして保存しなおすプログラムを書いて対処しました。

下記を書いたファイルをXOOPS_ROOT_PATH直下へ配置してアクセスするだけで、Liaiseのフォーム要素をEUC-JPでunserializeしてUTF-8でserializeしなおします。
<?php

require 'mainfile.php';

$sql = sprintf("SELECT * FROM %s ", $xoopsDB->prefix('liaise_formelements');

$result = $xoopsDB->query($sql);
while($row = $xoopsDB->fetchArray($result)){
    $ele_value = reserialize($row['ele_value']);
    $sql = sprintf("UPDATE %s SET ele_value=%s WHERE ele_id=%d",
        $xoopsDB->prefix('liaise_formelements'),
        $xoopsDB->quoteString($ele_value),
        $row['ele_id']
    );
    
    $xoopsDB->queryF($sql);
}
function reserialize($str)
{
    $s = $str
    $euc = mb_convert_encoding($s, 'EUC-JP', 'UTF-8');
    mb_internal_encoding('EUC-JP');
    $un = unserialize($euc);
//    var_dump($un);
    mb_internal_encoding('UTF-8');
    array_walk($un, 'c');
    $seri = serialize($un);
//    var_dump($seri);    
    return $seri;
}
function c(&$var, $key){
    $var = mb_convert_encoding($var, 'UTF-8', 'EUC-JP');
}

当サイトをTOKYOPenにアップグレードしました。

Ryuji : XOOPS » 総合的な情報 2012/1/13 13:39

Blogger's Avatar

これまでXOOPS Cube Legacy2.1.xを使っていたのですが、先ほど当社で開発中のTOKYOPenにアップグレードしました。

TOKYOPenはもともとXOOPS Cube Legacy2.1系をベースに開発されたホダ塾ディストリビューションがベースになっているため、それほど苦労することなくアップグレードできました。

いくつか発生した問題をメモ的にかいておきますと
・日本語がEUC-JPで直書きされてて文字化け→文字コード変換
・Smartyプラグインが見つからなくて真っ白→html/class/smarty/pluginに追加してたプラグインをxoops_trust_path/libs/smartypluginsへ移動
というあたりがメインでしたね。

TOKYOPenは自分たちで開発してるので、できて当たり前といえば当たり前ですが、エラーメッセージを見ながらひとつひとつ対処してけばちゃんと動くようになってよかったです。

11月19日 OSC2011 Tokyo/FallでXOOPS Cubeの新しい風にふれてみませんか

Ryuji : イベント 2011/11/14 13:38

Blogger's Avatar

最近XOOPS Cube界隈がまた活気づいてきてます!

XOOPS Cube Legacy2.2が正式リリースされたり…
XOOPS Cube Legacy2.2をベースとしたパッケージPack2011の開発がはじまったり…
RYUSでは、XOOPS Cube Legacy2.1をベースとしたTOKYOPenを開発したり…
勉強会も開かれ始めてますよね。

さて、そんないろんな動きがあるXOOPS Cubeですが、もちろん今週末に開催されるオープンソースのお祭り、オープンソースカンファレンス2011 Tokyo/Fallにも参加してます!

オープンソースカンファレンス2011 Tokyo/Fall

XOOPSセッションは19日(土曜)16:15から

おそらく当日は開発者の皆さん、ユーザの皆さんがXOOPSのブースやこのセッションに多数集まると思います。

ぜひ会場に来て、XOOPS Cubeの新しい風を感じてみてください!

XOOPS Cube Legacy2.1ベースのCMS「TOKYOPen」開発中です!

Ryuji : XOOPS » 総合的な情報 2011/10/25 17:13

Blogger's Avatar

現在、RYUSではXOOPS Cube Legacy2.1をベースにして、あらたなCMS「TOKYOPen」を開発しています。

TOKYOPen

先週開催されたXOOPS Cubeサタデーラボでデモを少しみなさんに見てもらったのですが、わりと好評だったようで、さらに開発がんばっていこうとおもってるところです。

このTOKYOPenについての情報は主にfacebookやtwitterで公開することが多いと思いますので、是非facebook, twitterもチェックしてくださいね。

TOKYOPen facebookページ
TOKYOPen twitter

XOOPS Cubeサタデーラボのfacebookページあります

Ryuji : XOOPS » 総合的な情報 2011/7/19 11:05

Blogger's Avatar

告知してませんでしたが、XOOPS Cubeサタデーラボのfacebookページあります

熱心な参加者の皆さんにささえられて、今度の土曜(2011/07/23)で第17回目になるXOOPS Cubeサタデーラボですが、facebookページがあるのご存知ですか?

けっこう前につくってたんですが、ryus.co.jp でお知らせするのをすっかり忘れてました(^^;

■Facebookでサタラボ最新情報を入手しませんか?


ちょっと今回は実験的に参加申込もfacebook ページからできるようにしてみました。

# 今回は更に実験的に、ATNDでも受け付けてます。

どこでもお好みの方法で申込していただければと思ったんですが、あちこちで申込できるとかえってどこで申込したらいいか迷いますかね?

「うまくいってないこと」より「うまくいってること」をかきだそう

Ryuji : その他 2010/9/24 19:20

Blogger's Avatar

あるとき、仕事のカイゼンをしようと思い立って、仕事中に「これ、うまくいってないなぁ」と気がついたことを全部メモに書き出すようにしてみました。
すぐにカイゼンできなくても、後で時間をとって、対策を考えて実施しようと考えたんです。

ところが全然カイゼンがすすまない!

なぜなら、このメモを見返そうとしなかったからです。

で、なんでこのメモを見返そうとしなかったのか?

たぶん1ヶ月以上はこのメモをとってたはずなんですが、「うまくいってないこと」がたまってくると、だんだんこのメモを見返すのがイヤになってきたんですね。

今かんがえてみると、そりゃ見返すのがイヤになりますよね。
なんといっても「うまくいってないこと」が束になってかいてあるわけですから。
しかも、対策を考えるために書き出してたので、

 この「うまくいってないこと」の束を見る=対策を考えなきゃいけない=考えるタスクが増える!

というわけで、結構タスクだらけになって、ストレスを感じてた状況で、更にストレスを感じるモノをふやしちゃったわけです。

そりゃ見返さないし、カイゼンだってすすむわけがない。

で、3週間ぐらい前に急にガクッと気持ちが落ち込んだときに、以前読んだ本を読み返してみたら、このやり方はやっぱいうまくいかなくて、かえって、気持ちを落ち込ませて今できてることさえできなくなる可能性がありそうだと気がつきました。

ちなみに読んだ本はこれです。






一見、全然関連性がなさそうな2冊ですよね(^^;
でも、共通点もありました。

■なぜ、「うまくいってないこと」を書き出すのがうまくいかないのか?
「うまくいってないこと」「できてないこと」に気持ちをフォーカスさせると、気持ちがだんだんと「俺は何ひとつうまくやれてない!」ってマイナスになってきちゃうんですね。

カイゼンしようと思って、書き出したのがマイナスに作用して、「できない俺」って認識を強める方向に働いちゃってました。

今、ふりかえってみると、「うまくいってないこと」メモをとってたころの自分は、けっこうストレスフルだったり、落ち込んだりしてました。


■逆に「うまくいってること」「できてること」を書き出してみると。。
実は、先に紹介した2冊で、どちらにも書かれてたのが、「できてること」「うまくいってること」を書き出してみましょうってアドバイスです。

というわけで、素直に毎朝5つ書き出すようにしてみました
# 実際には、さぼっちゃう日も多いんですが(^^;

「うまくいってること」を書き出すことに何の意味があるんだろ?って思いませんか?
でも、いざ改めて書き出してみると「お、けっこう色々できてるじゃん!」って、気分がよくなります。

この「気分がよくなる」ってのが大事なんだろうなぁって最近思います。

以前の「うまくいってないこと」を書き出してたときは、気分が落ち込みがちで、マイナスオーラいっぱいのブラックホールにエネルギーを吸い取られ続けてる感じで、ちょっと面倒なことがあると、アッというまにフラストレーションがたまってました。

それが「うまくいってること」を書き出すようになってから、書き出したときにプラスエネルギーがちょっと補給されるような感じで、面倒なことに遭遇しても、「とりあえず、ちょっとだけでもやっとくか」って前向きに取り組めるようになりました。

というわけで、「うまくいってること」を毎朝書き出すのはおすすめですよ!

第9回XOOPS Cubeサタデーラボは「あなたのXOOPS Cubeサイトの課題解決します」

Ryuji : イベント 2010/8/23 18:19

Blogger's Avatar

最近iPad用にBluetoothキーボードを購入した龍司です。
# この話はまた次回にでも書きましょうか

さて、今週末開催予定のXOOPS Cubeサタデーラボですが、これまでと違ってちょっと実験的な勉強会になります。

いつものXOOPS Cubeサタデーラボは、ゲストスピーカーの方数人に発表をしてもらって、それを聞くという、受け身の勉強会です。

今回は特別企画で、参加される皆さんにPCをもってっきてもらい、皆さんのXOOPS Cubeサイトで、
「ここを、○○したいけど、どうすればいい?」
「○○したいんだけど、そういうモジュールとかカスタマイズってある?」
「ここがナゼかレイアウトくずれちゃうんだけど、どうすればいいの?」
など、皆さんのXOOPS Cubeサイトで起きてる、疑問、問題、課題をその場で解決してしまおうという企画になってます。

事前に課題をお聞きしていないので、当日になってどんな課題が飛び出すのか、実は今からドキドキしています。
できれば、個別に「これなら、こうすればいいですよ」というのと同時に、他のXOOPS Cubeサイトで、どんな応用が利くかなんて話もできたらなぁと思っていますが、さてどうなるでしょうか。

毎回XOOPS Cubeサタデーラボでの発表内容は、メルマガ「XOOPSうさぎ通信」にてレポートを送信していますが、もしかしたら今回は「ここだけの話に。。。」という相談が多くなって、「XOOPSうさぎ通信」ではレポートできないかもしれませんが、特別な企画なので、そうなってしまっても、ご容赦いただければと思います。

次回XOOPS Cubeサタデーラボは7月24日(土曜)に開催予定

Ryuji : イベント 2010/6/27 12:53

Blogger's Avatar

昨年9月に第1回目を開催したXOOPS Cubeサタデーラボですが、早いもので来月は8回目の開催となります。

その8回目ですが、7月24日に予定しています。

XOOPS Cubeサタデーラボの一番の目的は、「XOOPS Cubeに関心のある人たちがオフラインで集まれる場を用意する」ことでした。

それまでも、オープンソースカンファレンスなどのイベントがあったときに、ちょっと飲んで話すということはありましたが、

・やや突発的(当日、「じゃ、飲みに行こ」とか)
・もちろん不定期
・基本的に誰ともなく言い出して、声かけた範囲の人だけの参加

という感じで、オープンな感じでオフラインで集まれる機会というのは非常に少なかったです。

そこで、
・事前にちゃんと告知して
・定期的に開催し
・誰でも参加可能な
イベントとしてやってみることにしたのが、「XOOPS Cubeサタデーラボ」です。

今の所XOOPS Cubeサタデーラボは、無料で参加できる勉強会と、有料の懇親会の2部構成で実施しています。

勉強会の部では、
・モジュールの開発をしている方
・テーマデザインをされている方
・XOOPS Cubeでホームページを構築している方
などに、ゲストスピーカーとしてお話をしてもらってます。

懇親会の部では、場所をかえて呑みながらXOOPS Cube談義を楽しんでます。
# 気がつくとXOOPS Cubeと全然関係ない話をしていることも多いですが(^^;

というわけで、次回7月24日(土曜)のXOOPS Cubeサタデーラボにも是非みなさんご参加くださいね。
# 詳細未定のため、まだ参加申し込み受け付けておりませんが、今週中には申し込み受付開始いたします。

SaaSなどのクラウドサービスと比較したときのXOOPS Cubeの様なオープンソースのメリットとは?

Ryuji : XOOPS » 総合的な情報 2010/6/3 17:44

Blogger's Avatar

先週水曜に「タダでも出来るIT業務効率化」というタイトルで2時間ほどセミナーをやらせていただきました。ご参加いただいた皆様おつかれさまでした。

このセミナーでは、タダで使えるITツール、サービスとしてEvernote、Dropbox、GoogleAppsなどのクラウドサービスと、RYUSの得意としているXOOPS Cubeをあわせて紹介させていただきました。

手軽に無料や安価で使えるSaaS等のクラウドサービスがたくさん出てきた今、設置に手間のかかるXOOPS Cubeなどのオープンソースのシステムを導入するメリットとは何なのか?
今回のセミナー開催にあたり、この点を改めて考えてみました。

■オープンソースなら、業者に縛られない
無料や安く利用できるクラウドサービスがたくさんでてきていますが、どれも

 そのサービスを利用する=サービス利用業者に固定される

ことになります。
同じコトは、これまでのシステム開発でもよく見られることでした。

どこかの開発会社に依頼して開発してもらったシステムや提供してもらったシステムが気に入っていても、その会社の対応や保守メンテの価格面で気に入らないということはありえます。
ところが、ソースコードが開示されていないと、他の業者に乗り換えたくても、他の会社では全くメンテできないので、乗り換えることが出来ません。

それに対して、ソースコードが開示されている(オープンソース)と、業者の乗り換えに多少コストはかかりますが、他の会社でもメンテ可能なので、特定の業者に縛られると言うことがありません。

SaaSなどのクラウドサービスを利用した場合、そのサービス提供業者に縛られるという点はこれまでのパッケージ利用等とかわりません。

少人数で利用している内は、いざ別のサービスに乗り換えるときに、大変ですが打撃は少ないと思いますが、多人数で利用していると乗り換えコストも膨大になりそうです。

■オープンソースならカスタマイズ限界がない
オープンソースのもうひとつの特徴としては、プログラムをかきかえてしまえば、ほとんど無限にカスタマイズできるという点があります(もちろん費用がかかるので、費用面の限界が先にきます)
これがSaaS等のクラウドサービスだと、いくらカスタマイズできると言われていても、限界があります。

■オープンソースなら社内サーバに設置することもできる
最近では、クラウドサービスとして提供しつつ、サーバインストール型のライセンスも別途提供するというものもありますが、大抵のクラウドサービスは自前で用意したサーバに設置することができません。

 「大事なデータは、どうしても社内に置きたい」

このようなニーズにこたえつつライセンス費用無しで使えるのもオープンソースの特徴だと思います。

とはいえ、少人数ですぐさまサクッと使いたいというときには、クラウドサービスも非常に便利だと思っています。

クラウドサービスもオープンソースも適材適所、用途にあわせてうまく使い分けていきたいですね。

WindowsでXOOPS Cubeをすぐに体験する2つの方法

Ryuji : XOOPS » 総合的な情報 2010/4/12 22:31

Blogger's Avatar

社内ポータルや部署内の情報共有サイトに導入するシステムの候補にXOOPS Cubeがあるなら、手元のWindowsマシンですぐにXOOPS Cubeを試す方法が2つあります。

方法1.WARP/XCCPを利用する
ひとつめの方法は、当社のダウンロードで公開しているWARP/XCCPを利用する方法です。

WARP/XCCPは、
apache, php, mysqlの動作環境がセットになったWARPに、XOOPS Cubeをインストールして、社内ポータルの雰囲気をつかんでもらえるように、サンプルコンテンツも入れた状態にしてパッケージしてあります。

ダウンロードしたファイルを解凍して、サーバを起動するだけですぐに、XOOPS Cubeの雰囲気をつかんでもらえると思います。

難点は、ファイルサイズが大きくて、解凍にも時間がかかること。そしてサンプルコンテンツをいれた構築済み状態なので、構築時の苦労も楽しみもあまり体験出来ない点です。

いざ、実運用に使おうかなぁと思うと、サンプルコンテンツがあるせいで、余計なデータやユーザを削除するのにもちょっと苦労します。


方法2.MicrosoftのWeb Platform Installerを利用する
以前、このブログでもとりあげましたが、MicrosoftのWeb Platform Installerがよくできていますので、これで体験するのも良いと思います。

WebサーバにIISを利用しますので、モジュールによっては動作しないということもありますが、phpやmysql環境の準備をしなくても、インストーラにしたがっていけば、WindowsIISでXOOPS Cubeがすんなり動くようになるので、評価のために体験する環境をつくるにはもってこいです。

こちらは、インストールが完了しても、サンプルコンテンツもないし、モジュールのファイルはあっても、XOOPS Cubeにはインストールされてない状態ですので、「インストールが終わった。さぁ、こっからどうしよう」という苦労も楽しみも体験できます。

おすすめは、WARP/XCCPで雰囲気をつかみ、Web Platform Installerで自由に構築
コンテンツが無い状態でシステムの雰囲気をつかむというのは、大変難しいと思います。またダミーでもコンテンツを入力するというのは、なかなか骨の折れる作業です。
なので、雰囲気をつかむには、WARP/XCCPを利用してもられればと思っています。

ただ、WARP/XCCPをベースに構築にトライするのは、今度はコンテンツ削除などが面倒になるので、Web Platform Installerで構築にトライした方が楽だろうと思っています。

残念なのは
デフォルトの設定のままでは、この両者は同時に起動することができない点です。
デフォルトのままだと同じポート番号を利用しようとするので、後から起動しようとした側が起動に失敗するはずです。
# もし、どうしても両方一緒に起動したくなったら、ぜひ「うさぎにもできるXOOPS Cube入門♪」で質問してください。
# きっとRYUSメンバの誰かが設定変更の方法を解説してくれると思います。

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.