5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

タグ: オープンソース

  • CakePHP URLの指定 - 例えば、htmlヘルパーのlinkのパラメータの話し

    CakePHPを使っていると、ヘルパーなどのリファレンスを解説本では簡単に説明を済ませているところに当たります。CakePHPのマニュアルをよく見れば書いているのですが(ただし、日本語サイトは遅れている場合があり)。

    例えばhtmlヘルパーのlinkの説明ところ。Webとか解説本には、

    HtmlHelper::link($title, $url = null, $htmlAttributes = array(), $confirmMessage = false, $escapeTitle = true)
    
    $title : タイトル
    $url : リンク先URL
    $htmlAttributes : 属性
    $confirmMessage : 確認メッセージの有無
    $escapeTitle : エスケープの有無

    などど書いていています。$urlは、”http://testtest.jp/”のようなURLをテキストで設定するようにサンプルに書かれています。

    しかし、CakePHPではURLの指定は、

    array('controller' => コントローラ名, 'action'=>アクション名)

    のように連想配列で指定可能なのです。もし、管理者サイトでは、

    array(Configure::read('Routing.admin') => true,'controller' => コントローラ名, 'action'=>アクション名)

    のようにすればいいのです。アクション名には’admin_’とかは付ける必要はありません。

    CakePHPを使いこなしている人なら当たり前かもしれませんが。一応、自分の覚え書きです。

    あとlinkのURLに関連して、ここのサイトに書かれていますが(感謝!)、IDなどの検索条件のパラメータをpaginatorヘルパーに含めるには、 Veiwで$paginator->optionsにurlをキーにした連想配列を設定すればいいようです。Veiwで$paginator->optionsのurlに設定してしまうと、View内のpaginatorヘルパーでsort()などのリンク先には、’val1/val2’が勝手に付けてくれます。

    もし、このようにパラメータが付けてアクセスしたときに、

    http://testtest.jp/コントローラー/アクション/val1/val2/

    ビューの最初で

    <?php
    $paginator->options = array(
      'url' => $this->passedArgs
      );
    ?>

    とすると、passedArgs変数は、パラメータを持っていますので、ビュー内の

    <?php echo $paginator->sort('title');?>

    は、

    http://testtest.jp/コントローラー/アクション/val1/val2/page:1/sort:title/direction:asc

    というようなパラメータを付けたリンクを作ってくれます。

    著:山田祥寛
    ¥3,366 (2025/03/27 13:40時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/27 13:40時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/30 15:22時点 | Amazon調べ)
  • WordPressをWordPress Automatic Upgrade Pluginで自動更新

    PCやサーバーを使っていると、どうしてもソフトウェアのアップデートをしなければいけません。Windowsですと自動的にアップデートしてくれるのでいいのですが、オープンソースのサーバーアプリケーションですと、ダウンロード、ファイルのアップ、更新と一連の作業を行わなければなりません。

    サーバーのアプリケーションの更新が重要なのは理解していますが、面倒であるということも確かです。納品したお客様の中には、作業費を出していただけない場合もありますので、無償で作業するか、最悪そのままで運用となります。

    なるべく手間をかけないことができないかということで、現在このブログで利用しているWordPressの自動更新のプラグイン(WordPress Automatic Upgrade Plugin)を試してみました。

    まずは、あまり影響のないサイトで試してみます。インストールはいつものWordPressのプラグインのインストールと同じ。プラグインのディレクトリにコピーするだけです。

    管理画面でWordPress Automatic Upgrade Pluginを実行すると、あとは画面にしたがっていくだけです。テーブルのバックアップに始まり、最新のWordPressのダウンロード、そしてインストールまでやってくれます。

    日本語の辺りで不具合が出るかと思いましたが、問題なしです。

    もし、WordPressの更新があれば、管理画面で表示してくれます。最新のWordPressはプラグインの更新も教えてくれますので、こちらも併せて使えれば、常に最新の状態にしてくれます。

    これは簡単です。トラブルが発生しても、バックアップファイルで戻せるので、良しとしましょう。

    追記

    以前にWordPressのソースを修正して対応した、RSSでの時間がUTCになってしまういうトラブルですが、WordPress Automatic Upgrade Pluginを実行したら元に戻ってしまいました。当たり前のことでしょうが、元のWordPressが対応してくれないとだめですね。

  • WordPressを2.6.1にアップデート

    WordPressが2.6.1にアップデートされていましたので、このサイトもアップデートしました。

    まずは、バックアップをします。何かあったら、すぐに戻るように、プログラムのファイルをまるごと違うディレクトリにコピーします。今使っているサーバーは、シェルが使えるのでcpで簡単。

    次に、記事とかコメントもバックアップします。これはWordPressのエクスポート機能を使えば簡単。

    そして、プラグインをすべて無効にします。

    次に2.6.1のファイルを上書きします。設定ファイルは上書きされないので安心です。

    最後にプラグインの有効に戻して完了です。

    オープンソースで構築したサーバーの管理は、アップデートという毎回面倒なメンテナンス作業があります。せっかくサーバーを構築しても、メンテナンス作業にお金を出さないユーザーがいますので、ずっとシステムが古いままなのが気になるところです。

  • 一日、見積もりと提案書を書いた話し

    小さな会社をやっていると、仕事がないのが一番困ります。積極的に営業活動していないのは問題なのですが。

    もう一つ困るのは、仕事が重なること。一番ひどかったのは、5本ほど重なったことも。体は一つしかないので、並列処理はできません。

    さて、今回は見積もり依頼の連絡が入った。連絡していただいた会社は2年前に納品した会社。覚えていただいたようでありがたい。

    内容はAccessでのアプリケーション開発。辛いが、納入先のお客様のどうしてもという事情で仕方ないらしい。いつもやっているオープンソースのLAMPでのWebサイトを提案したが、あえなく却下。

    Accessの復習でもしましょう。

    要求仕様にしたがって、一日かけて提案書を書く。送った後で、競合見積もりであることを知らされる。駆け引きする前に撃沈かもしれない・・・。

  • AsteriskNOWでIP電話はじめましょうという話し

    きちんとAsterisk でIP電話のシステムを作りたくて、今日はいろいろ作業しました。まずはサーバーの設定から。

    今までは、ファイルサーバーに使っているマシンにAsteriskをインストールして使っていました。confファイルを作成していましたのでとても面倒です。

    そこで、GUIで設定できるAsteriskNOWをインストールしてみることにしました。まずはサーバーを新しく使用かと思いましたが、これ以上マシンを増やしてもいかがなものかということで、VMware Serverをファイルサーバーに入れることに。この辺りからはまりだしているのがわかります。

    ファイルサーバーは、3年くらいに購入したDELL PowerEdge800。メモリが1MBで少ない。そこでメモリ増設から。

    そのメモリは手元にある注文書によると、DDR2/533MHz DRAM DIMM ECCであるとのこと。一般には売っていない。そこで、よく行く秋葉原のサーバー専門の店に行ってみると、運良く1GBが2枚中古であったので購入しました。

    それで早速、メモリ増設から。しかし、その前にサーバーの大掃除。年末に埃を払いましたが、半年経つとものすごくたまっている。まだまだ回り道。

    無事にメモリが3GBになったことを確認して(ここまでトラブルなし)、OSの再起動完了。

    次に、VMware Serverのインストール。今回が初めてなので、サイトを参考にしながらインストール。簡単にRPMでインストール完了。VMware Server ConsoleでWindowsのクライアントから仮想マシンを作成して(今回は、ディスク10Gでメモリ256MBで作成)、ターゲットのOS(今回は、AstersiskNOWのCDイメージ)を簡単にインストールできた。この簡単さが驚きとうれしい。

    AsteriskNOWもトラブルなくインストール完了。日本語とひかり電話のRT-200NEのパッチを当てるため、Asteriskのソースを入手、パッチを当ててmakeする。今回は、Asteriskのバージョンが新しいため、VOIP-Info.jpで用意されているja-autopatch.shではパッチを当てられませんしたので、FTPで直接該当するバージョン(1.4.18.1)のパッチファイルを入手しました。

    後は、クライアントのWebブラウザからAsteriskNOWのインストールするだけ。ここから参考にしたのは、「AsteriskNOWではじめるIP電話
    」という本です。しかし、今回外線が、フレッツひかり電話で、マイナンバーで発着信するため。書いているとおりにいかないのが大変。結局は、SIP電話をユーザーを登録するだけで、あとはconfファイルを編集してしまいました。最初の目的と離れてきた。

    内線の発着信、外線の発着信のテストをして完了。

    結果としては、Webブラウザでconfファイルを編集できるようになって、これだけでも簡単に設定できるようになりました。

    以上、1日作業でした。設定ファイルの希望があれば、ここに載せませすので連絡くださいませ。

  • OpnePNEの改造は実は簡単であるという話し

    現在、OpenPNEを使った専門家向けのSNSサイトを開発しています。簡単に改造点を言うと、SNS部分はほぼOpenPNEの機能を使って、その上位に専門家が所属する団体でグルーピングするとものです。

    OpenPNEのような大きなオープンソースのシステムの改造は普通に考えると難しいと思いますが、OpenPNEに限っていうとそんなに難しくはありません。

    これは、OpenPNE独自のフレームワーク(こう言ってしまっていいのでしょうね)がシンプルな考え方(難しいことができないというのではなくて)に基づいているので、とても見通しがよいからです。

    どのページがそのプログラムとテンプレートで構成されているかというのは、ページのパラメータをみれば一目瞭然です。ページの出力とその後の処理をきちんと分けられているので、フォーム->処理->結果表示という一般のWebアプリケーションの自然なフローが、ルールに乗っ取ったファイルの命名方法になっています。

    同じオープンソースでもXOOPSとは大きな違い。XOOPSのモジュール改造はとても苦労します。

    もし、OpenPNEを使ったサイトをお考えの方がいらっしゃったらご連絡ください。(最後は宣伝モードでした・・・。)

    このページは xfy Blog Editor を利用して作成されました。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/03/28 17:08時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • Asteriskを使って海外から電話をした話し

    年末にカナダに行ってきましたが、そのときの日本への電話のかけ方です。

    横浜の事務所にAsteriskで構築したSIPサーバー(電話のサーバー)を用意。ソフトフォン(電話のアプリケーション:今回はX-Liteを使用)で発信を確認しておきます。今回は、持っているノートPC(前述のLet’sNoteR6)からX-Liteで外線に接続できるようにします。外線はNTTのひかり電話を利用。設定は

    を読めば簡単です。

    カナダからはインターネットに接続できたら、VPNで横浜の事務所に接続します。後はX-Liteで電話をするだけ。国内の電話料金で済みます。意外と明瞭に電話ができます。

    このページは xfy Blog Editor を利用して作成されました。

    パナソニック(Panasonic)
    ¥10,200 (2025/03/28 23:41時点 | Amazon調べ)

    私の電話機を選ぶ基準は、まずはカールコードがないこと。受話器がワイアレスだとコードのねじれを気にせずに楽です。後は、着信拒否の登録件数の多さでしょうか。50件程度でしたら、すぐに登録が一杯になります。100件以上着信拒否ができる電話機を選びます。

  • 楽天ビジネス不成立の理由を考えた話し

    楽天ビジネス(楽天が運営しているWebサイト上の一括見積サービス)で、最近あった商談不成立の理由で、提案で考えさせることがありました。

    その理由は、「業界用語は分からない」の一言。

    何の業界用語はわからないのか? 「オープンソース」がいけなかったのか? それとも「コンテンツ管理」が? いえいえいきなり「XOOPS」を出したのが悪かったのか・・・。 

    そもそも楽天ビジネスのマッチングは、一方向でしか回答がないのです。コミュニケーションとかはできないのです。提案に何が問題であるかは、知る手段はありません。それが不満。とりあえず何か提案をしてみて、その回答を待つ。ダメだったら次の商談に行く。

    あと、ユーザーレベルがわからないので、どこまで簡単に提案を書いていいのかもわからないのもつらい。「ホームページがほしい」というのも、HTMLファイルという言葉(業界用語?)も使っていいのかも、ちょっとした賭けになります。

    でも、そんな人は、Webで商談しようとしないと思いますが・・・・。ただ、安く仕事を受けてもらえると思っているだけかも。

    普段もお客さんにも難しいことを言っているのかなあ?? 

    このページは xfy Blog Editor?を利用して作成されました。

  • Asteriskで電話の転送をした話し

    現在、Asteriskを仮運用中です。現在、できていることは、

    1. ひかり電話で横浜本社の外線の発着信
    2. 横浜本社の電話を青山事務所の電話で取れる。
    3. 青山事務所のRT57iに接続されたアナログ電話をAsteriskサーバーで発着信できるように、RT57iAsteriskサーバーに登録。
    4. 横浜本社にSnom105を設置。これを横浜本社の代表電話にしようとしています。
    5. 各PCにソフトフォンをインストール。各PCから外線発信。

    です。5.のソフトフォンですが、最初はX-Liteを入れましたが、電話の転送がわからず(できない??)断念。次にSJphoneをインストールしてみました。SJphoneは転送ができました。ここで、SJphoneでの転送の方法(取り次ぎ転送)の覚え書きです。

    Asteriskロゴ
    1. SJphoneで電話を受ける。下のShow Statusにかかってきた電話のアイコンが出てくる。
    2. HOLDボタンを押す。受けた電話はつながったまま。Show Statusは「On Hold」になる。
    3. 転送したい内線をかける。Show Statusにもう一つ内線電話のアイコンが出てくる。これで内線相手と話せるので、電話がかかってきたことを伝える。
    4. 電話を転送する場合は、アイコンを右クリックして「Transfer」-「相手の番号」を選ぶ。
    5. これで、電話の転送完了。

    相手の確認とらずに電話を転送する(ブラインド転送)場合は、

    1. TRNSFボタンを押して、内線をかける。
    2. 電話が切れて転送先を呼び出しているはず。
    3. 転送先は電話をとって話しをする。

    しかし、転送先が出ないときは、ボイスメールになるはずですが、なぜか切り替わらない。こちらは検証しなければいけません。

    あとは、Snom105の取り次ぎ転送のやり方がわからない。ブラインド転送はできますが。

    パナソニック(Panasonic)
    ¥10,200 (2025/03/28 23:41時点 | Amazon調べ)

    私の電話機を選ぶ基準は、まずはカールコードがないこと。受話器がワイアレスだとコードのねじれを気にせずに楽です。後は、着信拒否の登録件数の多さでしょうか。50件程度でしたら、すぐに登録が一杯になります。100件以上着信拒否ができる電話機を選びます。

  • Asteriskで電話の交換機にしてみた話し

    以前から注目していたオープンソースのPBXソフトであるAsteriskをサーバーにインストールしてみました。きっかけは、Linux Expoでお会いしたAsteriskユーザー会の高橋さんの「とりあえずやってみましょう。」の一言。

    とりあえずインストールしてましたが、思ったよりインストールのハードルは低いです。インストール方法は、VoIP-Info.jp Wikiや、高橋さんの著書(Asterisk徹底活用ガイド)です。たくさん必要な設定ファイルは、VoIP-Info.jp Wikiにあるサンプル設定ファイルを使ったので、簡単でした。

    ソフトフォン(CounterPathX-Lite)を2台つないで、内線で通話を確認しました。つぎにひかり電話につないで、外線からの発着信も確認。こちらも何もトラブルなしに使えます。

    最後に青山オフィスにもX-Liteをインストールして、VPN経由で横浜から外線に発着信することも確認しました。こちらは、ルーターのファイヤーウォールにSIPのポートを開ければOK。Asteriskの設定より、ファイヤーウォールの設定のほうが面倒です。

    以上で、青山からX-Liteで外線をかけると、VPN経由で横浜本社のAsteriskサーバーに接続して、ひかり電話に抜けます。したがって、青山から電話すると着信通知が045になります。

    音声の品質も、ちょっと遅れますが、そんなに悪くありません。横浜と青山の間のネットワークの帯域に影響されるのでしょうが。

    いまのところ電話をかけてAsteriskをおもちゃにして遊んでいるというレベルなので、本格的に使うためには、通話の転送など普段電話機で利用している機能が実現できるかの確認が必要です。まさかPBXで遊べるなんて思ってもいなかったというのは正直なところ。システム屋としては、Asteriskとアプリケーションの連携なんて興味がありますが、電話の使用で当たり前のことができるかどうか順次見ていきます。

    最終的には、青山オフィスのNTT電話(今はISDN)の契約が解約するくらいになれば、会社としては経費削減でいいかもしれません。でも、今までの03の番号が使えなくなるのは問題かも。

    パナソニック(Panasonic)
    ¥10,200 (2025/03/28 23:41時点 | Amazon調べ)

    私の電話機を選ぶ基準は、まずはカールコードがないこと。受話器がワイアレスだとコードのねじれを気にせずに楽です。後は、着信拒否の登録件数の多さでしょうか。50件程度でしたら、すぐに登録が一杯になります。100件以上着信拒否ができる電話機を選びます。