スタッフブログ

  • Ryujiさんの最新配信
  • RSS

あえてシステム化しないという選択

Ryuji : 技術全般 2013/1/8 7:21

Blogger's Avatar

お客さんとシステム化の相談をしていると様々な要望がでてきます。

そんな要望のうち予算内でシステム化できることでも、あえてシステム化しないことを提案することもあります。

私がシステム化をお勧めしないのは、頻度が少ないのに複雑な処理が必要にな業務についてです。


・年に数回しか行わない
・手順が定まってない
・毎回ちょっとずつ違うやり方でやっている

こういう業務をシステム化すると、

・滅多に使わない機能なのに工数(開発費用)が増える
・数回使っただけで機能改修しないと使えなくなる
・他の良く使う機能が、滅多に使わない機能の複雑な制約にひっかかって使いにくくなる

なんてことが良く発生します。

だから予算があっても「滅多に使わない」「やけに複雑」な業務については
システム化するか慎重に判断することをおすすめしています。

問合せフォームに営業日のお知らせを自動的に表示させる

Ryuji : XOOPS 2012/12/18 9:36

Blogger's Avatar

めんどくさがり屋の龍司です。

めんどくさがり屋なので、楽をするために苦労してみることがあります。

今回は
「年末年始の営業日について『お知らせ』にも『お問い合わせ』にも書くのはめんどくさい」
と思ったのでそれを解決したときの方法をご紹介します。

このサイトでは、「お知らせ」にbulletinを使っています。
お知らせに書いた正月休みについての記事を問合せフォームでも表示できれば、営業日については一度書くだけで済みます。

...続きを読む

何だかよくわからない問題にぶちあたったらcache, templates_cの中身を削除してみましょう

Ryuji : XOOPS » TIPS小ネタ 2012/12/13 18:31

Blogger's Avatar

XOOPS Cubeを使っていると「何故かうまくうごかない」とか「さっきはちゃんと動作したのに、今はうまくうごかない」というような事態にたまに遭遇することがあります。

そんな時に念のために試してもらいたいのが、cache,templates_cディレクトリの中身を空にすることです。

cacheディレクトリには何が入る?


cacheディレクトリは、キャッシュという名前のとおり、ブロックキャッシュやモジュールキャッシュを有効にしたときに、ブロック出力のHTMLをファイルとしてキャッシュするために使われるディレクトリです。

その他にもモジュールが何かをキャッシュするためにこのディレクトリを使うことがあります。

たとえば、picoは、メインメニューに表示されるサブメニューの項目をcacheディレクトリにキャッシュします。

これに気がつかなくて、コンテンツ追加したのになんでサブメニューに表示されないんだろう?ってすごい悩んだこともあります(^^;

templates_cディレクトリって何に使われる?


こちらはSmartyテンプレートからHTML出力されるまでの間の中間ファイルが作成されるディレクトリになります。

Smartyの仕組みは、テンプレートファイルをもとにして、phpコードに変換し、phpコードを実行して出力を得るようになってます。このphpコードに変換したファイル(このファイルはコンパイル済みキャッシュと呼ばれます)の置き場所がtemplates_cです。

テンプレートに関係してよく起きる問題が「ファイルを書き換えたのに反映されない」という問題です。

こんな時にあれこれ悩む前にtemplates_cの中身をきれいさっぱり消してしまうとうまく反映されることがあります。

templates_cに作られるファイルも一種のキャッシュですので、想定外のことがあるとキャッシュが悪さして思うように変更が反映されないことがあるんですね。

ちなみに私がはまったケースでは、ディスク容量が不足したときに、中途半端なコンパイル済みキャッシュができてしまい、画面表示に失敗したというのがあります。

このときもtemplates_cをクリアしたら解決しました。

というわけで、何か変更が反映されないトラブルに遭遇したら、cache, templates_cディレクトリの中身の削除(ディレクトリは残してくださいね)を試してみてください。

QiitaにXOOPS小ネタたくさんあります

Ryuji : XOOPS » 総合的な情報 2012/11/28 6:09

Blogger's Avatar

Qiitaってご存知ですか?



Qiita


サイトには「プログラミング知識を共有しよう。」と書かれていて、基本はプログラマ向けの情報共有サイトです。

他の人が書いた記事を「ストック」として収集しておくこともできます。

ちょっとした小ネタを書きやすいので最近私もちょこちょこメモ代わりに投稿することが増えてきました。

記事はタグごとに分類されていて、XOOPSタグもありますのでちょっとのぞいてみてくださいね。

Qiita XOOPSタグのついた記事一覧

私も書いてますので気になるネタがありましたら是非ストックしてください。

Smartyクロスサイトスクリプティングの脆弱性の修正

Ryuji : XOOPS » TIPS小ネタ 2012/11/14 5:59

Blogger's Avatar

http://jvn.jp/jp/JVN63650108/
でXOOPS Cubeでも利用しているSmartyにつていの脆弱性が報告されてます。

Smartyのバージョンアップをするのがベターなのですが、テンプレートにトリッキーな記述があったりすると、バージョンアップで動かなくなることもあるので、サクッとバージョンアップするわけに
はいかないケースもあると思います。

その場合は下記の様に現在のコードを修正することで回避してみてください。


XOOPS_ROOT_PATH/class/smarty/Smarty.class.php 1090行目あたりに下記の様なコードがあります。

    function trigger_error($error_msg, $error_type = E_USER_WARNING)
    {
        trigger_error("Smarty error: $error_msg,", $error_type);
    }

これを下記に書き換えてください。

    function trigger_error($error_msg, $error_type = E_USER_WARNING)
    {
        $msg = htmlentities($error_msg);
        trigger_error("Smarty error: $msg", $error_type);
    }

PhpStormをXOOPS CubeのSmartyデリミタ設定に合わせる方法

Ryuji : XOOPS » TIPS小ネタ 2012/10/8 8:50

Blogger's Avatar

Mac版だと
メニューからPhpStrom→Preference
ProjectSettingsでPHPを開く


Smartyを選択してデリミタ設定を "{" から"<{"、"}"から"}>"へ変更


これでXOOPS CubeでのSmartyのデリミタ設定に合わせることができます。

picoのサブメニューはキャッシュされます

Ryuji : XOOPS » TIPS小ネタ 2012/10/2 9:26

Blogger's Avatar

XOOPS Cubeに標準で付属するメインメニューは、各モジュールを開いたときに自動的にそのモジュールが用意しているサブメニューが展開されるようになっています。

HTMLページを作成するpicoモジュールでは、サブメニューにカテゴリなどを自動的に展開する機能があります。

ところが、カテゴリを追加してもサブメニューにカテゴリが追加されないことがありました。

最初は不思議だったのですが、コードを追っかけてたら一定時間サブメニューをキャッシュするつくりになっていたのを発見しました。

XOOPS_TRUST_PATH/modules/pico/xoops_version.php line48
	$_sub_menu_cache = XOOPS_TRUST_PATH . '/cache/'. urlencode(substr(XOOPS_URL, 7)) . '_' . $mydirname . '_' . (is_object(@$GLOBALS['xoopsUser'])? join('-', $GLOBALS['xoopsUser']->getGroups()):XOOPS_GROUP_ANONYMOUS)  . '_' . $GLOBALS['xoopsConfig']['language'] . '.submenu';
	if (is_file($_sub_menu_cache) && time() - 3600 < filemtime($_sub_menu_cache)) {
		$modversion['sub'] = unserialize(file_get_contents($_sub_menu_cache));
	} else {
		require_once dirname(__FILE__).'/include/common_functions.php' ;
		$modversion['sub'] = pico_common_get_submenu( $mydirname ) ;
		file_put_contents($_sub_menu_cache, serialize($modversion['sub']));
	}
上記コードのif文のなか、 is_file($_sub_menu_cache) && time() - 3600 ってのがポイントですね。3600秒=60分キャッシュされます。

キャッシュされたくなければ、3600を0に書き換えてしまえばキャッシュされなくなります。サイト構築時はキャッシュ無しの方がすぐに表示確認できて便利ですよね。

公開時にはまたキャッシュ数値を大きくすると良いと思います。

9月8日にオープンソースカンファレンス2012 Tokyo/Fall へ行ってきました。

Ryuji : イベント 2012/9/24 15:25

Blogger's Avatar

様々なオープンソース関係者が集まるオープンソースのお祭り「オープンソースカンファレンス(以下OSC)」 9月7日〜8日と明星大学で開催されたオープンソースカンファレンス2012 Tokyo/Fallに1日だけですが参加してきました。

ロードバイクで片道2.5時間

最近すっかりロードバイクにはまってる(くわしくは「40代からのロードバイク」をごらんください)ので、自宅から明星大学日野キャンパスまでロードバイクで移動してみました。

行きは約2.5時間、帰りは約2時間弱だったかな(^^;

軽いトレーニングのつもりで走るにはちょうどよい距離でした。

誰もいないXOOPSブース(^^;

P9081177

いつもこういうイベント出展のときに力がぬけてるXOOPSブースらしく、私が到着した頃には誰もブースにいませんでした(^^;

それと比較するととなりのNetCommonsブースは気合いがはいってましたねぇ

NetCommonsセッション

IMG_3127

XOOPSのセッションは9月7日(金)に開催されていて私の参加した土曜日にはセッションがなかったので、かわりにNetCommonsのセッションを聞いてきました。

NetCommons

NetCommonsは学校、教育関係での導入実績が豊富です。最近でそれ以外の実績もちょくちょく見かけるようになりましたね。

つい先日お台場で開催された「お台場サイクルフェスティバル」のサイトもNetCommonsで構築されてましたし。

お台場サイクルフェスティバル

デザインや細かなところを見るとやや時代遅れ感もあるのですが、こういう保守的な見た目の方が良いということもあるので、これはこれでありだろうな思ってます。

それにしても驚いたのが毎月3回セミナーが開催されていること。 入門講座、活用講座、デザインカスタマイズ講座、モジュールカスタマイズ講座、システム運用講座と学びたい内容にあわせて5種類のセミナーが用意してあって毎月いずれか3つが開催されてるようです。 かなり力はいってますね。

夜のOSC

P9081204P9081203P9081195夜は久しぶりにXOOPS関係のみなさんと楽しい食事ができました。

なんだかんだで4,5時間同じ店でしゃべり続けてたような気がします(^^;

7月26日にCMSインサイドでXOOPS Cubeを紹介してきました。

Ryuji : イベント 2012/8/3 7:51

Blogger's Avatar

そのときに紹介したメールフォームモジュールを当サイトのダウンロードコーナーで公開しております。

フォーム作成方法が簡単になってると思いますので、もしよければお試しください。

CMSインサイド当日に使ったスライドを少しだけ手直ししてSlideShareにもUPしました。
復習等にお使いいただければと思います。

unameでのログインを禁止するHack

Ryuji : XOOPS » TIPS小ネタ 2012/6/12 11:38

Blogger's Avatar

仕事でXOOPS Cubeの改造をしていると、中には非常にレアな要望もでてきます。

今回ご紹介するのは、uname でのログイン禁止です。

unameは、XOOPS Cubeでユーザさんのハンドル名として扱われるカラムでログインするときも、このunameとパスワードのペアでログインするのがデフォルトです。

ただ日本では、ハンドル名に日本語を使いたかったり、社内ポータルとしてXOOPS Cubeを使うケースではunameに本名を記述して、ユーザ名として表示させたりしていて、ログインIDとして使うには不向きなことがあります。

そんなときにはemail+パスワードでログインできるpreload等を使うのが定番です。

通所だと、email+パスワードでも、uname+パスワードでもログインできてOKとなることがほとんどなのですが、先日出てきたご要望で「unameでのログインは禁止したい」という要望があり、対応しました。

改造する箇所はシンプルです。

html/modules/user/kernel/LegacypageFunctions.class.php のcheckLoginメソッドを改造します。
	function checkLogin(&$xoopsUser)
	{
		if (is_object($xoopsUser)) {
			return;
		}

		$root =& XCube_Root::getSingleton();
		$root->mLanguageManager->loadModuleMessageCatalog('user');


とあるので、この直後に
return;
を追加するだけです。

このタイミングでreturnしてるのは、一応userモジュールの言語ファイルだけ読み込むためです。
(他のログイン関係のpreload等で使われる可能性が高いので)

レアな改造ですが、もし同じ事をしたくなったら参考にしてください。

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

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

Copyright(c) 2012 RYUS.All Rights Reserved.