スタッフブログ
ほぼ、毎月1度開催されている「XOOPS Cube勉強会」に行ってきました。
場所は高田馬場から歩いて1分、便利で快適なコワーキングスペース CASE Shinjuku さんです。
・XOOPS Cubeをインストールしてから動かすまでのレクチャー
・xcckについての質疑応答
などのほか、個別に「今こういうことがやりたいけどつまづいている」などの問題に参加メンバーが答える、というかゆいところに手が届いちゃう感じの勉強会でした。
今回初めて参加された方が作られた不動産サイトがすばらしくいいできで、感動しました。サーバ負荷を考えてこちらにはリンクを貼りませんが、よろしかったらこの辺から見てみてください。
XOOPS Creators -- 作る人、使う人誰でも参加できる!XOOPS使い集まれ♪
次回3月は OSC/Tokyo Spring があるため、日程調整中です。
OSCのXOOPSブースでも色々質問や雑談など出来ると思いますから日程が合えばご参加ください!
次回のXOOPS Cube勉強会については
を見ていると分かると思いますのでぜひご覧ください~
定期的に開催されているXOOPS初心者向けの実践的勉強会「XOOPS初心者勉強会」
その2014年最初の勉強会が1月11日にコワーキングスペース CASE Shinjukuにて開催されました。
その当日に主催の竹原さんから発表があったのが勉強会名称の変更です。
「初心者」の文字をはずして「XOOPS Cube勉強会」と名前が変更になりました。
初心者だけでなく、XOOPS Cubeになれてきた方やベテランさんも集って欲しいという思いがよくわかる名前変更ですね。
実際、この11日の勉強会ではたまたまCASE Shinjukuに来ていて参加してみたという全く初めてXOOPS Cubeのことを知ったという方から、XOOPS Cube開発者の氷川さん、bulletinモジュールを開発したSuinさん、XUGJ.orgのfabiさん等ベテランさんまで幅広く参加されてました。
次回第21回目の勉強会は2月1日に開催されますので、みさなん是非ご参加くださいね。
[第21回] XOOPS Cube勉強会 2/1(土)開催 : ATND
残念ながら私はこの日ブルベを走る予定なので勉強会には参加出来ません〜(^^;
xelfinderで画像をUPしてブログ記事を書こうとしたらアップロードした画像が表示できずに"No input file specified."になって困ってたんですが、coreserverでの有名な問題みたいですね。
No input file specified.と出たら ≫ 運営堂
上記ページにあるとおり、.htaccessに
mod_gzip_on Off
を追加したら画像が表示されるようになりました。
あけましておめでとうございます。昨年末に高尾に引っ越した龍司です。
せっかく周りにハイキングコースがたくさんあるので、トレイルランでもやってみようかなぁと思っていろいろ検索してたら「ヤマレコ」というサイトを発見しました。
ヤマレコ - 登山やハイキング、クライミングなどの記録を共有できる、登山の総合コミュニティサイト
細部まで良くデザインされてて気がつくのが遅れましたが、このサイトもXOOPSで構築されてるんですね。
ちょっと記憶を頼りに他にXOOPSでできた趣味コミュニティサイトをリストアップすると下記のようなサイトもあります。
ランニングサークルWindRun(ウィンドラン) - 風のように走る
趣味活動では活動記録を残したり、ハウツーの情報交換があり、イベントでの交流などがありますが、XOOPSにそれらの活動に対応した拡張モジュールがあるから趣味コミュニティサイトで良く採用されるのでしょうね。
いろんなXOOPSサイトを見ていると「あ、これは今考えてる○○に応用できそうだな」って発見もあって楽しいものですね。
そうそう発見といえば、勉強会で他の方が作られてるサイトを見せてもらうのも良い刺激がえられますね。
1月は1月11日(土)にXOOPS Cube初心者勉強会が新宿で、1月16日に神戸でもくもく会が予定されてるので、時間のある方は参加しては?
NetCommons2のmaple/nccore/db/DbObjectAdodbをみてたら
StartTrans(), FailTrans(), CompleteTrans()なんてメソッドがあって、トランザクションに対応してそうな雰囲気だが、これは罠。
NetCommon2で使ってるのはAdodbのmysqlドライバで、このmysqlドライバが残念ながらトランザクションに対応してない。
なので、Innodb使っててトランザクション処理したいときは自前でexecute('BEGIN')とかするしかないようだ。
NetCommons2はSmartyのdefault_modifiersを利用して自動で全変数にエスケープかかるようになってるが、これが罠。
このdefault_modifiesって表示だけでなく、変数を使うところ全てで適用されるので、下記の様なコードで問題になる。
<{foreach from=$arrayList item=item}>
<{$item}>
<{/foreach}>
from=$arrayList で$arrayListの中身をSmarty::_run_mod_handlerでエスケープかけようします。
_rum_mod_handlerで、配列の中身すべてにdefault_modifiersで指定されたmodifireがかかります。
NetCommons2の場合、escapeです。さらに<{$item}>を表示するときにもdefault_modifiersで指定されたescapeがかかります。
結果、二重にエスケープされるわけです。
これを避けるにはsmarty:nodefaultsを利用してdefault_modifiersが適用されないように、下記の様なコードにします。
<{foreach from=$arrayList|smarty:nodefaults item=item}>
<{$item}>
<{/foreach}>
Smartyのバグ ~default_modifiers~ : アシアルブログも参考にしたんですが、
<{if isset($foo)}>
みたいなときもエスケープかけようとするので、これも下記みたいにしないとダメなようです。
<{if isset($foo|smarty:nodefaults)}>
ブログに書いたつもりが下書きのままパソコン内に記事が眠ってて焦った龍司です。
2013年10月22日にEngineYardさんで開催されたSendGrid Nightに参加してきました。
EnginYardさんでは、定期的に1つのPaaSを掘り下げた勉強会を開催していこうと考えてるそうで、その取り組みが「○○ Night」みたいです。
1回目はサーバ監視サービスの「NewReric」をとりあげた「NewReric Night」を開催、2回目はメール配信サービスの「SendGrid」をとりあげる「SendGrid Night」ってことでした。(今後どんな○○Nightが開催されるか楽しみですね。)
以前EngineYardの安藤さんにSendGridの存在を教えてもらっていて興味をもったんですが、今回の勉強会に参加してみるまで自分がなんでSendGridに興味もったのかをすっかり忘れてました(^^;
それが参加してみてやっと何故興味をもったか思いだすことができました。
何故興味をもったか?
それは「メールの大量配信をちゃんと行うのはすんごいめんどくさいこと」だったからです。
会員制のWebシステム開発を何度もやってると中にはメールを大量配信するケースも出てきます。これをまともに実行できるようにするのがとてもめんどくさかったんですね。
メール配信をちゃんとやろうとすると、なにがめんどくさいか
SendGridNightでも話しがあったのですが、今やメールの9割が迷惑メール。各プロバイダや携帯キャリア、メールソフトそれぞれが迷惑メール対策をあれこれ実施しています。
そのおかげで迷惑メールに触れる機会が減ってるんですが、ちゃんとしたメール配信をしようとすると、この各種の迷惑メール対策でフィルタリングされないように、送信側もあれこれ設定したり、配信ペースを押さえたりと面倒なことがいっぱいでてきます。
さらにサーバのスペックの問題も発生します。メール送信って他のサーバとの通信が発生するのでサーバにけっこう負担かけるんですよね。それにあわせてサーバスペックあげると、メール配信以外の普段ではオーバースペックでハイコストの原因になっちゃうし、スペックさげるとメール配信がいつまでも終わらないなんてことが起こったり、けっこうムキーーーってなったりします。
エラーメールの対処をどうするかってのも頭の痛い問題です…
ほんと、送ったメールがちゃんと届くようにする って結構大変なことだったのを勉強会を通してよーーーーっっっく思いだしましたよ…
で、SendGrid。
SendGridはWebサービス、Webサイトをつくってるときに発生するこういう「めんどくせーーー!!」と叫びたくなるメール配信系をうまいことやってくれるサービスなわけですね。
というわけで基本的なメール配信はもちろん問題なくできるようになってますが、それだけでなくプラスアルファでいろいろ便利そうなサービスになってます。
SendGridが便利そうなポイント
自分でメールサーバをたてる大変さから解放されるのが一番のポイント。
他の便利ポイントとしては
- 送信ログの確認ができる
- 配信されたか拒否されたかちゃんとわかります。
- ParseAPI使うと受信メールをきっかけにWebへメール内容をPOSTなんてこともしてくれる
- SMTP API使うと一度に1000通ぐらい送信とか宛名の置換とかもできるそうです
- 無料で毎月6000通まで送信OKらしいので、メール送信テスト時にコストかからんのもいいです
ってあたりが個人的にはヒットでした。
最近ちょっとWindowsAzureをうまいこと利用できないか試行錯誤してるんですが、WindowsAzureはメール送信できないってことで早速SendGridの無料プランをちょっと使わせてもらいました。
これをきっかけにちょこちょこ利用できたらなぁと思ってます。
XCL2.1からXCL2.2にしたときにXCL2.1付属のPM(PrivateMessage)をやめてMessageモジュールを導入された方も多いかと思います
このMessageモジュールはインストール時にPMのデータを移行する仕組みが備わってたのですが、ちょっとしたバグがあって移行できませんでした。
というわけで、元からあった移行コードにちょっと手をいれて、後からでもpmモジュールのデータをmessageモジュールに移行できるようにしてみました。
こちらからダウンロードできます。
XOOPS_ROOT_PATH直下にアップロードしたら、XOOPS_URL/pm2message.phpにアクセスしてください。
pmにあるメッセージがmessageモジュールに移行されます。
2度3度起動してもいいように、from, to, subject, bodyが全く同じメッセージがすでにmessageモジュールにあったら、そのメッセージは移行しないようになってます。
messageモジュールの自動削除で消えてしまったメッセージがpmに残ってるときにサルベージするのにも使えると思います。
htmlを書く感覚で作れるので、通常のページであまり書き換えが行われない固定的なページにはpicoを使うことが多いです。
私の場合、以前から使ってきて必ずカスタマイズする部分や必ずデフォルトの一般設定から変更するという作業が発生していました。
今回それらについてデフォルトのままインストールしてもカスタマイズやデフォルトの一般設定を変えなくてもそのまま使えるようにpicoをカスタマイズしてみました。
いつものカスタマイズではなく、picoの本体自体にカスタマイズをして再配布可能なように作りました。コアチームにpullリクエストをしてありますので、もし賛同が得られて、取り入れてもらえれば今後のpicoがこのように変わると思います。
RYUSの場合、実績ページなどをpicoで作っています。そのコンテンツを元に改造前と後を見比べてみましょう。
実績ページは3つのカテゴリに分け、その中にコンテンツを置いています。
今現在ですとこのような構成になっています
実績・事例←モジュール名をこのように変更してある
└社内システム開発←カテゴリー名
└社内システム開発事例←コンテンツ
└WEBシステム開発←カテゴリー名
└WEBシステム開発事例←コンテンツ
└その他の事例←カテゴリー名
└お客様事例 -デジタルハリウッド大学大学院教授 三淵啓自先生 ←コンテンツ
└お客様の声 株式会社ノード様 ←コンテンツ
これをデフォルトのpicoで表示したものと、pico自体にカスタマイズをしたもので見比べてみます。
まずはモジュールのトップページ
【改造前】
上記の ピンク色の文字 で書いた部分をいつもカスタマイズしていましたが、新しく改造したpicoで表示するとデフォルトでこのようになります。
【改造後】
これらは一般設定で選択することで、今までの表示のようにも出来るようになります。
一般設定
同様にカテゴリーのトップページも変更しました
【改造前】
【改造後】
メニュー、RSSのリンクはデフォルトでは出さないようにして、トップという表示もモジュール名にしました。
コンテンツページです。一番よく修正するのが表題を表示することでしたのでそのようにしてみました。
【改造前】
【改造後】
一般設定で以前と同じ表示にも出来ます。
その他、今までデフォルトで「はい」になっているけれど大概の場合「いいえ」としていた項目を最初から「いいえ」にしてみました。それらの項目は以下のものです。
ページナビゲーションを表示する
印刷画面へのリンクを表示する
友達に紹介するリンクを表示する
tellafriendモジュールを利用する
投票機能を利用する
今時点でこのpicoのソースはこちらに置いてあります。
このページの右下の方にある Download ZIP をクリックするとzipファイルでダウンロードすることが出来ますので、試してみたい方は是非どうぞ♪
PHPでファイルアップロードサイズの上限値は upload_max_filesizeで設定します。 .htaccessなら下記の様な感じですね。
php_value upload_max_filesize 256M
この数値を変更したときに合わせて見直しておきたい設定項目が2つあります。
memory_limit と post_max_sizeです。
この3つの設定項目の数値はそれぞれ下記のような関係である必要があります。
memory_limit > post_max_size > upload_max_filesize
ここ、気をつけてないと、upload_max_filesizeは増やしたけど他のサイズが小さくてファイルアップロードがうまくいかないということが発生します。
私がはまったパターンでは、post_max_sizeが小さくて大きなファイルをアップロードしようとすると、$_POSTが空っぽになってしまい、いきなり別ページに飛ばされるなんてことがありました(^^; # 最近のフロントコントローラ方式だとまずこうなりますね