スポンサーサイト

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    phplist-2.10.7

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    phplistが久方ぶりに更新されています。

    セキュリティアップデートがメインの様です。
    下記、本家サイトからの引用文です。


     This release adds a few small features related to forwarding and it fixes a security issue that was found in the FCKeditor that comes with phpList.



    一年ぶりのアップデートでしたが、脆弱性による更新ということで、
    適用の重要度は高いと思います。

    日本語の関係で、2.11.3を公開しておりますが、なるべくはやめに、
    2.10.7をベースに日本語適用できるようにして公開していきたいと思います。
    スポンサーサイト

    theme : Linux
    genre : コンピュータ

    メール配信phplist使い方メモ(1)

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    今回は、中身のソースからの視点は、一旦離れてメール配信のアプリケーションの
    視点から、機能に関しても触れておきたいと思います。

    本家のサイトに行けばわかるじゃんと言う話もあるかと思いますが、
    私自身がそうであるように、日本語文献が少ないという理由だけで、
    プライオリティが最低に近くなってしまう人もいらっしゃるかと思いますので、
    今後は、具体的な使い方も触れていきたいと思います。

    まずは、豊富な機能面に関して触れておきます。



     ○メール配信基本機能
         ・文面作成(属性の差込)
         ・配信リスト管理(重複管理、confirm管理、リストインポートなど)
         ・配信予約(指定時刻での配信開始)
     ○ユーザ登録用フォーム
         ・アドレス存在確認(本登録用URLの登録時自動配信)
         ・登録情報更新フォーム
         ・メール配信停止用フォーム
     ○バウンスメール(エラーメール)管理
     ○HTMLメールの送信機能
         ・WYSIWYG HTMLエディター搭載(FCKeditor標準利用可能、TinyMCE利用可能)
     ○テンプレート機能
         ・メールテンプレート(テキスト、HTML)
         ・登録フォームなど各種フォームテンプレート編集
     ○トラッキング
         ・開封確認(HTML)
         ・各アドレスからの配信履歴逆引き
     ○特殊配信
         ・RSSfeed
         ・PDF配信




    機能の切り方は、私の個人的主観ですが、およそメール配信で必要と思われる
    機能が十分に備わっていることがご理解頂けるかと思います。
    50万件以上のダウンロードがある、オープンソースの実力ということでしょうか。

    昔ながらの広報的な担当者の方はもちろん、マーケティングを担当している
    方でも、満足されるのではないでしょうか。

    今後少しずつ使用の実践をお伝えしていきます。

    theme : Linux
    genre : コンピュータ

    eticket受信メールpipe.php日本語処理  FreeTicket

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    ※4/9追記eTicketは、FreeTicketに移行しました。
     FreeTicketのカテゴリをあわせてご参照ください。

    ここ5日間全く前に進めませんでした。
    はまった、はまった。

    eticketのpip.phpですが、なるべく簡潔に修正した気持ちとは
    大きくかけ離れ、だいぶオリジナルになってしまいました。

    受信メールをpop3でなく、pipeで直接処理するソースがようやく
    できたので、postします。

    ちなみに今回のソースは、phplistの空メールでも参考にさせて頂いた
    こちらを参考にさせて頂き、さらには、ラッパーを利用させて頂いているので、
    ファイルとしてまとめて公開するのは、ご許可を頂いてからと考えています。

    前置きはいりましたが、下記ソースです。
    今回、chdirのせいか、postfixのchrootが関係あるのか、切り分けていませんが、
    init.phpの読み込みにより、動かないことだけは切り分けできていたので、
    init.phpとsetting.phpからソースに必要になる箇所だけinit2.phpとしてまとめました。

    設置方法としましては、
    下記、pipe.phpとinit2.phpをeticketのディレクトリに配置し、
    ReceiptMailDecoder.class.phpを同じディレクトリに準備してください。

    /etc/aliasesへ


    support: "| /usr/bin/php /var/www/html/eticket/pipe.php"


    といった形で設定してください。
    また、init2.phpの中身も自分の環境に合わせて書き換える必要があります。

    まだまだソースをきれいにできるかと思いますが、ひとまずこれで許してください。

    pipe.php



    #!/usr/bin/php
    /**********************************************************************************
    * eTicket ・http://www.eticketsupport.com *
    * by Digital Frontiers, UTO *
    **********************************************************************************
    * Software Version: eTicket 1.7.2 *
    * Software by: Digital Frontiers, UTO (http://www.eticketsupport.com) *
    * Copyright 2008 by: Digital Frontiers, UTO (http://www.eticketsupport.com) *
    * Support, News, Updates at: http://www.eticketsupport.com *
    ***********************************************************************************
    * This program is free software; you may redistribute it and/or modify it under *
    * the terms of the provided license as published by Digital Frontiers, UTO. *
    * *
    * This program is distributed in the hope that it is and will be useful, but *
    * WITHOUT ANY WARRANTIES; without even any implied warranty of MERCHANTABILITY *
    * or FITNESS FOR A PARTICULAR PURPOSE. *
    * *
    * See the "license.txt" file for details of the eTicket license. *
    * The latest version can always be found at http://www.eticketsupport.com. *
    **********************************************************************************/
    ob_start();

    mb_language("japanese");
    mb_internal_encoding("UTF-8");

    require_once dirname(__FILE__) . '/init2.php';
    require_once dirname(__FILE__) . '/inc/class.ticket.php';

    $incoming = file_get_contents("php://stdin");
    if(!$incoming){
    exit();
    }
    require_once dirname(__FILE__) . '/ReceiptMailDecoder.class.php';

    $decoder =& new ReceiptMailDecoder($incoming);

    if ($istart = mb_strpos($incoming, "Content-Type:")) {
    if ($istart = mb_strpos($incoming, "boundary=\"", $istart)) {
    $istart+= mb_strlen("boundary=\"");
    $iend = mb_strpos($incoming, "\"", $istart);
    $boundary = mb_substr($incoming, $istart, $iend-$istart);
    }
    }
    if (!$boundary) {
    $boundary = "\r\n";
    }
    $part_header = mb_split($boundary, $incoming);
    $header1 = array_shift($part_header);
    $header2 = array_shift($part_header);
    $header = $header1 . $header2;

    if ($decoder->body['html']) {
    $body = mb_convert_encoding($decoder->body['html'],$db_setting['charset'],auto);;
    $body = strip_tags($body);
    $body = html_entity_decode($body);
    } elseif ($decoder->body['text']) {
    $body = mb_convert_encoding($decoder->body['text'],$db_setting['charset'],auto);
    } else {
    $body = mb_convert_encoding($decoder->body['text'],$db_setting['charset'],auto);
    }

    $banlist = array();
    $ban_res = mysql_query("SELECT * FROM " . $db_table['banlist']);
    while ($ban_row = mysql_fetch_array($ban_res)) {
    $banlist[] = $ban_row['value'];
    }
    $email = str_replace("'", "", $decoder->getDecodedHeader( 'from' ));
    $name = '';
    if (mb_strpos($email, '<')) {
    $email = mb_eregi_replace('.*<(.*)>.*', '\\1', $email);
    }
    if (preg_match("/^(?:(.*?)[ ]?)?<(.*?)>|(.*?)$/", $decoder->getDecodedHeader( 'from' ), $matches)) {
    if ($email == '') $email = $matches[2] . $matches[3];
    $name = $matches[1];
    if (preg_match("/^\".+\"$/i", $name)) $name = mb_substr($name, 1, -1);
    }
    if (preg_match("/^(?:(.*?)[ ]?)?<(.*?)>|(.*?)$/", $decoder->getDecodedHeader( 'to' ), $matches)) {
    if ($toemail == '') $toemail = $matches[2] . $matches[3];
    $toname = $matches[1];
    }
    if ($name == '') {
    $name = $email;
    }

    $banned = 0;
    foreach($banlist as $banline) {
    if (!empty($banline)) {
    if (stristr($decoder->getDecodedHeader( 'from' ), $banline)) {
    $banned = 1;
    }
    if (stristr($decoder->getDecodedHeader( 'subject' ), $banline)) {
    $banned = 1;
    }
    if (stristr($body, $banline)) {
    $banned = 1;
    }
    }
    }


    if (mb_eregi('^Yes', $decoder->getDecodedHeader( 'x-spam-flag' ))) {
    $stopmessage = 1;
    }

    if ($decoder->getDecodedHeader( 'return-path' ) == "<>") {
    $stopmessage = 1;
    }

    if ($decoder->getDecodedHeader( 'x-auto-generated' )) {
    $stopmessage = 1;
    } elseif ($decoder->getDecodedHeader( 'x-auto-replied' )) {
    $stopmessage = 1;
    }

    if ($stopmessage == 1 or $banned == 1) {
    ob_clean();
    die(0);
    }

    if ($decoder->getDecodedHeader( 'x-importance' ) == "high") {
    $pri = 3;
    } elseif ($decoder->getDecodedHeader( 'x-importance' ) == "low") {
    $pri = 1;
    } elseif ($decoder->getDecodedHeader( 'x-priority' ) == "1" or $decoder->getDecodedHeader( 'x-priority' ) == "2") {
    $pri = 1;
    } elseif ($decoder->getDecodedHeader( 'x-priority' ) == "4" or $decoder->getDecodedHeader( 'x-priority' ) == "5") {
    $pri = 3;
    } else {
    $pri = 2;
    }

    if ($db_settings['remove_original'] && $db_settings['remove_tag'] && mb_strpos($body, $db_settings['remove_tag'])) {
    preg_match('/(.+?)>? ?' . $db_settings['remove_tag'] . '.+/s', $body, $matches);
    if (!empty($matches[1])) $body = $matches[1];
    }
    $body = trim($body);

    $c = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS `cnt` FROM `$db_table_tickets` WHERE `email`='$email' AND `status`!='closed';"));
    if ($c['cnt'] >= $db_settings['ticket_max']) {
    $limit_msg = str_replace('%url', $db_settings['root_url'], $db_settings['limit_msg']);
    $limit_msg = str_replace('%local_email', $cat_row['email'], $limit_msg);
    $limit_msg = str_replace('%user_email', $email, $limit_msg);
    $limit_msg = str_replace('%ticket_max', $db_settings['ticket_max'], $limit_msg);
    if ($db_settings['limit_response']) {
    mb_send_mail($email, $db_settings['limit_subj'], $limit_msg, $db_settings['limit_email'], FALSE, $pri);
    }
    ob_clean();
    die(0);
    }
    unset($ticket_id);
    unset($send_notice);
    if (preg_match("/$db_settings[ticket_format]/", $decoder->getDecodedHeader( 'subject' ), $matches)) {
    $id = trim($matches[1]);
    if (ValidID($id)) {
    $ticket_id = $id;
    }
    $send_notice = TRUE;
    }
    $cat_res = mysql_query("SELECT * FROM " . $db_table['categories'] . " WHERE email='" . $toemail . "'");
    $cat_row = mysql_fetch_array($cat_res);
    if ($cat_row['email'] != $email) {
    if (empty($ticket_id)) {
    $ticket_id = CreateTicket($decoder->getDecodedHeader( 'subject' ), $name, $email, $cat_row['ID'], '', $pri, $ip, $body);
    $send_notice = FALSE; //a notice is already sent by CreateTicket
    $iid = PostMessage($ticket_id, $body, $header, $send_notice, 'new');
    } else {
    $iid = PostMessage($ticket_id, $body, $header, $send_notice, 'custreplied');
    }
    }
    if (is_dir($db_settings['attachment_dir']) && $db_settings['accept_attachments']) {

    if ( $decoder->isMultipart() ) {
    $filetypes = explode(';', $db_settings['filetypes']);
    $tempFiles = array();
    $num_of_attaches = $decoder->getNumOfAttach();
    for ( $i=0 ; $i < $num_of_attaches ; ++$i ) {
    foreach($filetype as $ext)
    $file_name_ext = $decoder->attachments[$i]['filename'];
    if (strstr($file_name_ext, '.')) {
    $file_name_ext = mb_substr($file, mb_strrpos($file, '.'));
    if ($ext == $file_name_ext){
    if (!$db_settings['attachment_size'] || (mb_strlen($decoder->attachments[$i]['binary']) <= $db_settings['attachment_size'])) {
    mt_srand(time());
    $rand = mt_rand(100000, 999999); //six chars.
    $basename_ext = explode(".", $decoder->attachments[$i]['filename']);
    $base_name = array_shift($basename_ext);
    $destfile = $rand . '_' . $base_name . "." . $ext;
    $dest = $db_settings['attachment_dir'] . $destfile;
    echo $dest;
    $ifp = fopen($dest, "wb");
    fwrite($ifp, $decoder->attachments[$i]['binary']);
    fclose($ifp);
    $sql = "INSERT INTO " . $db_table['attachments'] . " (ticket, ref, filename, type) VALUES (" . $ticket_id . ", " . $iid . ", '" . $rand . "_" . $base_name . "." . $ext . "', 'q')";
    mysql_query($sql);
    }
    }
    }
    }
    }
    }
    ob_clean();
    die(0);
    ?>




    init2.php




    #version
    $version = '1.7.2';
    #database settings
    $db_type = 'mysql';
    $db_host = 'localhost';
    $db_name = 'eticket';
    $db_user = 'root';
    $db_pass = '';
    $db_table_prefix = 'ticket_';
    $db_table_tickets = 'tickets';
    #path to where eTicket is installed
    $rootpath_dir = '/var/www/html/eticket/';
    #have you run the installer?
    $installed = 1;


    //require_once dirname(__FILE__)."/lang.php"; // include the language file
    // create tables array
    $db_table = array();
    $db_table['answers'] = $db_table_prefix . 'answers';
    $db_table['attachments'] = $db_table_prefix . 'attachments';
    $db_table['banlist'] = $db_table_prefix . 'banlist';
    $db_table['categories'] = $db_table_prefix . 'categories';
    $db_table['groups'] = $db_table_prefix . 'groups';
    $db_table['messages'] = $db_table_prefix . 'messages';
    $db_table['privmsg'] = $db_table_prefix . 'privmsg';
    $db_table['reps'] = $db_table_prefix . 'reps';
    $db_table['settings'] = $db_table_prefix . 'settings';
    $db_table['tickets'] = $db_table_tickets ? $db_table_tickets : 'tickets';
    /* Core variables */
    //files, directories and table vars
    $themes_dir = $rootpath_dir . 'themes'; //directory of themes
    $image_dir = $rootpath_dir . 'images'; //directory of images in themes
    $buttons_dir = $rootpath_dir . 'buttons'; //directory of button images in themes
    $install_dir = $rootpath_dir . 'install'; //directory of installer
    $inc_dir = $rootpath_dir . 'inc'; //directory of includes
    $header_file = $rootpath_dir . 'header.php'; //part of the theme
    $footer_file = $rootpath_dir . 'footer.php'; //part of the theme
    $errors_file = $rootpath_dir . 'errors.php'; //displays errors
    //defines - must be loaded BEFORE INC files are included
    if (substr($inc_dir, -1) != DIRECTORY_SEPARATOR) {
    $inc_dir = $inc_dir . DIRECTORY_SEPARATOR;
    } //just a quick fix...
    define('INC_DIR', $inc_dir); //full path of include directory
    define('ADMIN', 1); //this is the numerical value of the Administrator's group as per the database
    define('ISINC', TRUE); //used to check if this file has been run
    // headers/footers/errors
    $site_header = INC_DIR . $header_file;
    $site_footer = INC_DIR . $footer_file;
    $site_errors = INC_DIR . $errors_file;

    //This is the timezone data, used in inc/pref.php
    $gmoffset = date('O');
    $timezones = array('' => LANG_SYSTEM_TIMEZONE . " (GMT $gmoffset)", -12 => "GMT -12:00 (Eniwetok, Kwajalein)", -11 => "GMT -11:00 (Midway Island, Samoa)", -10 => "GMT -10:00 (Hawaii)", -9 => "GMT -09:00 (Alaska)", -8 => "GMT -08:00 (Pacific Time)", -7 => "GMT -07:00 (Mountain Time)", -6 => "GMT -06:00 (Central Time)", -5 => "GMT -05:00 (Eastern Time)", -4 => "GMT -04:00 (Atlantic Time)", -3 => "GMT -03:00 (Greenland)", -2 => "GMT -02:00 (Mid-Atlantic)", -1 => "GMT -01:00 (Azores)", 0 => "GMT (Greenwich Mean Time)", 1 => "GMT +01:00 (West Central Africa)", 2 => "GMT +02:00 (Jerusalem)", 3 => "GMT +03:00 (Baghdad)", 4 => "GMT +04:00 (Kabul)", 5 => "GMT +05:00 (New Delhi)", 6 => "GMT +06:00 (Kathmandu)", 7 => "GMT +07:00 (Bangkok)", 8 => "GMT +08:00 (Hong Kong)", 9 => "GMT +09:00 (Tokyo)", 10 => "GMT +10:00 (Sydney)", 11 => "GMT +11:00 (Solomon Islands)", 12 => "GMT +12:00 (Fiji)", 13 => "GMT +13:00 (Nuku'alofa)");

    //connect to database
    if ($db_con = @mysql_pconnect($db_host, $db_user, $db_pass)) {
    $db_sel = mysql_select_db($db_name, $db_con);
    }
    //check for errors
    if (mysql_error()) {
    die('' . LANG_FATAL_ERROR . ': ' . LANG_DB_COULD_NOT_CONNECT . '
    ' . mysql_error() . '
    ' . $help_link);
    }
    //Disable strict mode in MySQL 5... Bug #1793730
    mysql_query("SET @@session.sql_mode='MYSQL40'");

    //Ensure database is using correct charset - Bug #1963216
    if ($db_settings['charset']) {
    $mysqlcharset = str_replace(strtolower($db_settings['charset']), '-', '');
    }

    if ($mysqlcharset) @mysql_query("SET NAMES '" . $mysqlcharset . "'");

    /* Load settings from database */
    $sql = @mysql_fetch_array(mysql_query("SHOW TABLES LIKE '" . $db_table['settings'] . "'"));
    if ($sql) {
    $query = mysql_query("SELECT * FROM " . $db_table['settings']);
    $db_settings = array();
    while ($setting = mysql_fetch_array($query)) {
    if (!empty($setting['group'])) {
    $db_settings[$setting['group']][$setting['key']] = $setting['value'];
    } else {
    $db_settings[$setting['key']] = $setting['value'];
    }
    }
    }
    //Ensure database is using correct charset - Bug #1908635
    if ($db_settings['charset']) $mysqlcharset = str_replace(strtolower($db_settings['charset']), '-', '');
    if ($mysqlcharset) @mysql_query("SET NAMES '" . $mysqlcharset . "'");
    /* fix some vars */
    //tickets_per_page
    $db_settings['timezone'] = ($db_settings['timezone'] == '') ? date('Z') /3600 : $db_settings['timezone'];
    //set attachment dir to ensure it has a trailing slash
    $db_settings['attachment_dir'] = $rootpath_dir . $db_settings['attachment_dir'];
    //if the attachment dir isn't writable, we'll just disable attachments by removing the variable
    if (!(is_writable($db_settings['attachment_dir'])) && (file_exists($db_settings['attachment_dir']))) {
    unset($db_settings['accept_attachments']);
    }
    ?>


    theme : Linux
    genre : コンピュータ

    eticketのautomail.phpサブジェクト文字化けについて FreeTicket

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    ※4/9追記eTicketは、FreeTicketに移行しました。
     FreeTicketのカテゴリをあわせてご参照ください。

    eticketのpop3からのメール取得プログラムautomail.phpに
    関してですが、非常に単純に文字化けが解消しました。

    難航すると勝手に決め付けて、
    手をつけていなかっただけでした。すみません。



    automail.php 
    line:102
    $str = mb_convert_encoding($str, $db_settings['charset']);

    $str = mb_convert_encoding($str, $db_settings['charset'], $decoded[$i]->charset);



    これだけです。。。

    拍子抜けしてしまいますが、単純に変換前のコードを明示的にしてあげることで
    OKのようです。

    pipe.phpに関してひと段落したら、全体を更新して公開したいと思います。


    theme : Linux
    genre : コンピュータ

    無料で空メール

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録

    手付かずだったPHPListですが、eticketでの受信メール処理に手をつけるのに前後して、
    受信メール処理を勉強する意味もこめて、空メールを送ることで、PHPListにsubscribeする
    独立したソースを書きました。

    携帯電話からの登録などで、だいぶ当たり前になってきていますので、
    今後きちんと実装して、登録だけでなく停止に関しても実装できればと考えています。
    現状では、どのリストに登録するかソース上の変数で直接指定することを想定しています。
    また、自動での応答メールは通常の登録時のメールと同じです。

    まだ、最低限を実装しただけで、blacklistの処理など考慮したいポイントなどありますが、
    ソースだけご覧頂いてご意見頂ける様にしたいと思います。

    mimeDecodeが必須です。

    今回は、こちらを特に参考にさせて頂きました。

    また、携帯電話向けにメールを送る場合は、こちらで非常に詳細な記述をされています。
    参考になります。

    絵文字とか、携帯向けエントリーページとか、やっておきたいことは多いですが、
    それは、いずれかの機会で。

    使い方としましては、
    空メールを受け取りたいアドレスを決め、/etc/aliasesに下記の様に記載します。
    例えば、empty@~というアドレスで空メールを受けたい場合は、


    empty: "| /usr/bin/php /var/www/html/lists/mail_subscribe.php"



    という感じです。
    newaliasesを忘れずに。

    確認のコメントなどが汚く残っています。
    ご容赦ください。


    mail_subscribe.php 空メール処理





    require_once dirname(__FILE__) .'/admin/commonlib/lib/magic_quotes.php';
    require_once dirname(__FILE__).'/admin/init.php';

    //require_once dirname(__FILE__)."/admin/phpmailer/class.phpmailer.php";
    include "config/config.php";

    $GLOBALS["database_module"] = basename($GLOBALS["database_module"]);
    $GLOBALS["language_module"] = basename($GLOBALS["language_module"]);

    require_once dirname(__FILE__).'/admin/'.$GLOBALS["database_module"];
    require_once dirname(__FILE__)."/texts/english.inc";
    include_once dirname(__FILE__)."/texts/japanese.inc";
    require_once dirname(__FILE__)."/admin/defaultconfig.inc";
    require_once dirname(__FILE__).'/admin/connect.php';
    include_once dirname(__FILE__)."/admin/languages.php";
    include_once dirname(__FILE__)."/admin/lib.php";
    $I18N= new phplist_I18N();
    require_once dirname(__FILE__)."/admin/date.php";
    $date = new Date();

    require_once 'Mail/mimeDecode.php';

    mb_language("japanese");
    mb_internal_encoding("UTF-8");

    $source = file_get_contents("php://stdin");
    if(!$source){
    exit();
    }

    //解析
    $decoder = new Mail_mimeDecode($source);
    $structure = $decoder->decode($params);

    //送信元取得
    $from = $structure->headers['from'];
    $from = mb_decode_mimeheader($from);
    $from = mb_convert_encoding($from, mb_internal_encoding(), 'auto');
    if(preg_match( '/<(.*?)>$/', $from, $match)){
    $from =$match[1];
    }
    $from = trim($from);
    $from = strtolower($from);

    //subscribemailの初期値
    $email = $from;
    $htmlemail = "1";
    $id = 1;
    $key = 2;
    $rssfrequency = "";


    $result = Sql_query("select * from {$GLOBALS["tables"]["user"]} where email = \"$email\"");#"
    if (isset($_POST['rssfrequency'])) {
    $rssfrequency = validateRssFrequency($_POST['rssfrequency']);
    } else {
    $rssfrequency = '';
    }

    if (!Sql_affected_rows()) {
    # they do not exist, so add them
    $query = sprintf('insert into %s (email,entered,uniqid,confirmed,
    htmlemail,subscribepage,rssfrequency) values("%s",now(),"%s",0,%d,%d,"%s")',
    $GLOBALS["tables"]["user"],addslashes($email),getUniqid(),$htmlemail,$id,
    $rssfrequency);
    $result = Sql_query($query);
    $userid = Sql_Insert_Id();
    addSubscriberStatistics('total users',1);
    } else {
    # they do exist, so update the existing record
    # read the current values to compare changes
    $old_data = Sql_fetch_array($result);
    if (ASKFORPASSWORD && $old_data["password"]) {
    if (ENCRYPTPASSWORD) {
    $canlogin = md5($_POST["password"]) == $old_data["password"];
    } else {
    $canlogin = $_POST["password"] == $old_data["password"];
    }
    if (!$canlogin) {
    $msg = $GLOBALS["strUserExists"];
    $msg .= '

    '.$GLOBALS["strUserExistsExplanationStart"].
    sprintf('%s',getConfig("preferencesurl"),$email,
    $GLOBALS["strUserExistsExplanationLink"]).
    $GLOBALS["strUserExistsExplanationEnd"];
    return;
    }
    }

    $userid = $old_data["id"];
    $old_data = array_merge($old_data,getUserAttributeValues('',$userid));
    // $history_entry = 'http://'.getConfig("website").$GLOBALS["adminpages"].'/?page=user&id='.$userid."\n\n";

    $query = sprintf('update %s set email = "%s",htmlemail = %d,subscribepage = %d,rssfrequency = "%s" where id = %d',$GLOBALS["tables"]["user"],addslashes($email),$htmlemail,$id,$rssfrequency,$userid);
    $result = Sql_query($query);
    }

    //echo $userid;

    # subscribe to the lists $lists = '';
    $result = Sql_query("replace into {$GLOBALS["tables"]["listuser"]} (userid,listid,entered) values ($userid,$key,now())");
    $lists .= "\n * ".listname($key);
    addSubscriberStatistics('subscribe',1,$key);


    $subscribemessage = ereg_replace('\[LISTS\]', $lists, getUserConfig("subscribemessage:$id",$userid));

    $blacklisted = isBlackListed($email);

    //$dip_mes = $email.getConfig("subscribesubject:$id").$subscribemessage.system_messageheaders($email).$envelope;
    //$dip_mes = $subscribemessage;
    //echo $dip_mes;
    if(!$blacklisted){
    if (sendMail($email, getConfig("subscribesubject:$id"), $subscribemessage,system_messageheaders($email),$envelope,1))
    {
    sendAdminCopy("Lists subscription","\n".$email . " has subscribed\n\n$history_entry");
    addUserHistory($email,$history_subject,$history_entry);
    print $thankyoupage;
    } else {
    print '

    '.$strEmailFailed.'

    ';
    // if ($blacklisted) {
    // print '

    '.$GLOBALS['I18N']->get('YouAreBlacklisted').'

    ';
    // }
    }
    }

    //if (!$mail->Send()){
    // echo("メールが送信できませんでした。エラー:".$mail->ErrorInfo);
    //}

    ?>




    theme : Linux
    genre : コンピュータ

    eticketメール受信処理に関して FreeTicket

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    ※4/9追記eTicketは、FreeTicketに移行しました。
     FreeTicketのカテゴリをあわせてご参照ください。

    時間が空いてしまいました。
    サボっていたわけではなく、受信メール処理関連で
    ずっとはまっていました。

    eticketでのメールの処理ですが、
    以前、記載したように、pipeとpop3の二つの手段があります。

    pipeに関しては、うまくいっていないことを報告していましたが、
    pop3に関しても運用によっては問題がおおありということがわかったので、
    手をつけ始めました。

    pop3での運用の場合でも、システム側からお問い合わせ番号を発行し、
    顧客との間でUTF8のメールをやり取りしていれば問題ありませんが、
    基本的に、メーラーで新規にメールを作成するとやはり日本語の場合は、

    「iso-2022-jp」

    であることが多いので、このままでは問題があります。

    pipe.phpに関しては、class.parse.phpという独自のクラスがマルチバイトを
    考慮していないためだと思われます。

    pipe.phpと、日本語対応させた、parse部分を混合してソース編集しています。
    なるべく、元ソースのステップを維持して編集していますが、
    若干苦労しています。

    近いうちに公開できる様に準備したいと思います。


    theme : Linux
    genre : コンピュータ

    LimeSurveyデモ

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録

    LimeSurveyのデモを作成してみました。

    http://d-ip.site90.net/limesurvey/admin/admin.php

    アカウントは、demo/demoです。

    無料サーバを用いていますので、
    多少遅いですが、ご容赦ください。

    theme : Linux
    genre : コンピュータ

    無料アンケート LimeSurveyのインストール

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    最初の方で、予告していたのにも関わらず、ずいぶん後回しに
    なってしまいました。

    ちょうど1.7.2がリリースされ、テンプレート編集のバグフィックスなど
    が行われ、良いタイミングになりました。

    LimeSurveyは、一部訳されていない箇所はあるものの、
    日本語訳が行われておりますので、今回は、ソースには
    一切手を加えていません。
    ですので、ソースは、本家から入手してください。

    ただし、毎回のことですが、メールの送信部は、
    iso-2022-jpにしたい場合は、phpmailer周りに手を加える
    必要があります。
    ご要望があれば、コメントください。

    LimeSurveyの動作環境は、下記の通りです。

    必須:
    PHP 4.3.2 以降
    MySQL 4.1.0 以降
    mbstring
    推奨:
    GDライブラリ
    LDAPライブラリ

    Webインストーラでインストールできますが、まず下準備します。
    今回は、CentOS4、CentOS5.2どちらでも標準のrpmで行けます。
    ※どちらのOSも動作を確認していますが、この記事はCentOS5.2上
     での実施を元に記載していますので、CentOS4の際には細部が
     異なる場合があります。

    また、LimeSurveyのサイトでは日本語のドキュメントもある程度存在しますので、
    あわせて、こちらを参照してください。

    1.OSのインストール

    OSインストールで実施したことは、

    ・日本語選択
    ・パーティション1つに
     →DB領域、今回は「/var/lib/mysql/」を注意してパーティションを設定します。

    ・パッケージカスタマイズ
      不要なものを取り除きベースシステムのベース、MySQL、Webサーバ選択
      インストール後にphp-mbstringを追加しました。

    2.パッケージの展開と設定

    上記で取得したファイルをWebサーバのDocumentroot以下に展開し,
    config.phpファイルの準備をします。

    細かな設定をしたい場合は、config-defaults.phpを用います。
    私は、デフォルト言語を「ja」に設定したかったので、こちらのファイルを
    用いました。


    # tar zxvf limesurvey172_build5737_20081007.tgz.gz
    # cp config-defaults.php config.php
    # vi config.php



    日本語を既定の言語にする場合は、config-defaults.phpの
    コピーを用いて、


    Line:65
    $defaultlang = 'ja';


    とします。

    LimeSurveyでは、DBを作成できる権限さえ利用できるのであれば、
    DB作成もインストーラがやってくれます。

    そうでない場合もあると思いますので、先に作成する場合は、
    下記の様にします。
    OSインストール直後はMySQLが停止しているので起動します。
    (CentOS4の時は、停止していたか、忘れました。。。)
    日本語ファイルとあわせDBの文字コードもUTF-8にしておきます。


    #service mysqld start
    # mysql -u root -p
    mysql> create database limesurvey charset='utf8';




    3.ブラウザからインストーラー起動

    それでは、ブラウザからアクセスします。

    http://FQDNまたはIPアドレス/limesurvey/admin/install/

    ボタンを二度ほど押すだけで完了します。


    4.微調整

    最後に、インストールディレクトリを削除します。


    # rm -rf /var/www/html/limesurvey/admin/install/



    後は、
    http://FQDNまたはIPアドレス/limesurvey/admin/
    にアクセスします。
    この時、デフォルトのIDとパスワード設定は、configファイルで指定できます。
    通常は、admin/passwordです。



    theme : Linux
    genre : コンピュータ

    eticketのデモ  FreeTciket

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    ※4/9追記eTicketは、FreeTicketに移行しました。
     FreeTicketのカテゴリをあわせてご参照ください。

    eticketのデモ環境つくりました。

    管理画面こちら
    お問い合わせ画面こちら
    ※お問い合わせフォームを使用しない場合はこちらは使用しません。

    デモアカウントは demo/demo です。

    theme : Linux
    genre : コンピュータ

    eticketインストール・設定

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    ※4/9追記eTicketは、FreeTicketに移行しました。
     FreeTicketのカテゴリをあわせてご参照ください。

    前回は触れられませんでしたが、
    eticketのインストールに関してコメントします。

    まず、こちらからファイルを取得してください。

    動作環境は、apache、PHP5以上、MySQL4.1以上の環境です。
    Webインストーラでインストールできますが、まず下準備します。
    PHP5だったので、やはりCentOS5.2を用いました。

    1.OSのインストール

    OSインストールで実施したことは、

    ・日本語選択
    ・パーティション1つに
     →DB領域、今回は「/var/lib/mysql/」を注意してパーティションを設定します。

    ・パッケージカスタマイズ
      不要なものを取り除きベースシステムのベース、MySQL、Webサーバの
      あたりを加えました。
      インストール後にphp-mbstringを追加しました。

    2.パッケージの展開と設定

    上記で取得したファイルをWebサーバのDocumentroot以下に展開し,
    settings.phpファイルの準備とpipe.phpの権限を「666」の書き込み可能な
    権限にします。


    # tar zxvf eticket-1.7.2_dip.tar.gz
    # cd ./eticket-1.7.2/
    # cp settings.default.php settings.php
    # chmod 666 settings.php
    # chmod 666 pipe.php



    ここで、Webインストーラを起動する前に、DBを作っておきます。
    OSインストール直後はMySQLが停止しているので起動します。
    日本語ファイルとあわせDBの文字コードもUTF-8にしておきます。


    #service mysqld start
    # mysql -u root -p
    mysql> create database eticket charset='utf8';



    細かな設定ファイルの編集はここでは必要なく、Webインストーラがやってくれます。

    3.ブラウザからインストーラー起動

    それでは、ブラウザからアクセスします。

    http://FQDNまたはIPアドレス/eticket-1.7.2/install/

    上部のInstallタブを選択肢、「Agree」ボタンで継続します。
    自分で作成したMySQLの情報を入力し、継続します。

    次の画面でLinuxでは基本的な部分は埋まりますが、Windowsでは、
    パスなどを丁寧に確認して入れましょう。
    「Submit」するとひとまず終了です。
    ブラウザは一旦閉じてかまいません。

    4.微調整

    最後に、インストールディレクトリの削除と
    「2.」で書き込み許可したファイルを調整します。


    # rm -rf /var/www/html/eticket-1.7.2/install/
    # chmod 644 settings.php
    # chmod 755 pipe.php



    最後の最後ですが、「eticket」では、
    お問い合わせメールの処理手段が二つあります。
    pop3のアカウントでのメール取得と、
    pipeプログラムを使ったリアルタイム処理があります。

    私の環境では、pipeプログラムを用いた手法は日本語処理が
    うまくいかないのか、メール文面のパースに失敗している様で、
    うまくいきませんでしたので、ひとまず、pop3アカウントでの
    手段で設定しています。
    pop3アカウント情報自体は、管理画面
    http://FQDNまたはIPアドレス/eticket-1.7.2/admin.php
    から「お問い合わせカテゴリ」の設定で行います。

    メールアカウントへのアクセスはautomail.phpにて行います。
    automail.phpにアクセスすることで動作します。
    wgetや、lynxの動作をcronで設定します。
    下記は、wgetでの設定例です。


    0 * * * * wget -q -O /dev/null http://FQDNまたはIPアドレス/eticket-1.7.2/automail.php




    theme : Linux
    genre : コンピュータ

    お問い合わせ管理「eticket」日本語ファイル公開!FreeTicket

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    ※4/9追記eTicketは、FreeTicketに移行しました。
     FreeTicketのカテゴリをあわせてご参照ください。

    突然ですが、皆さんは、会社でのお問い合わせ管理はどうされていますか?
    ・電話
    ・メール
    ・Webフォーム

    と言ったところではないでしょうか。
    電話は当然として、ネットショッピングも浸透してきた今、
    メールとWebフォームのお問い合わせがほとんどといった方も
    いらっしゃるのではないかと思います。

    osCommerceを出発点としてzencartなど日本でも大いに普及している
    中で、お客様からのお問い合わせ対応、また対応管理は、業務を円滑に
    進める中で不可欠です。

    前回予告しました、オープンソースつまり、無料のお問い合わせ管理ソフト「eticket」に関して、
    言語ファイルを日本語化しましたので、公開します。

    皆さんに有用に使って頂ければと思っています。

    今回は、特にプログラムソースには手を加えず、lang.phpをUTF-8ファイルにして
    日本語入力しただけです。

    メールは、最終的には、PHPListと同様にiso-2022-jp化すべきと考えますが、
    とりあえずは、UTF-8のメール発信は問題なく行えます。

    日本語訳に関しては、かなり私の主観が入った物となっています。
    ticketに関しては、お問い合わせ番号という訳にしています。

    純粋な翻訳より使う際にわかりやすい日本語と言うことを基軸にしていますので、
    これは、違うこう変えてほしいなどのご要望は是非コメントにお寄せください。


        eticket-1.7.2日本語化ファイル



    前置きで長くなってしまったので、インストール動作確認は次回に。

    theme : Linux
    genre : コンピュータ

    VMwareplayerえっ!!動かない

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    今回は少し脱線して、開発環境の話での小ネタ。

    ESXに関しては以前触れたが、結局、ESXサーバでは、VmwareServerで作成したイメージが
    そのまま使えず、VmwareServer2での運用にしていました。

    夏にEeePCを購入し、最近は、外でEeePCとEmonsterでネットするのが、
    習慣になっています。
    開発環境も持ち歩いて、喫茶店などでも仕事ができたらなぁと思っていました。

    EeePCにVmwareServer2入れるのは、考えるまでもなくしんどいので、
    とりあえず、VmwarePlayer2を入れてみた。

    メモリの使用率も低く(Serverに比べて)快適快適。
    早速、普段使っていた開発イメージをコピーして動かして見る。

    あれっなんか、「ネットワークマッピングライブラリを開くことができません。」とか
    言われてしまい、ネットワークが動かない、何だろうと思っていると、
    vmxファイルに


    ethernet0.networkName = "HostOnly"


    こんな記述が。
    以前もなかったっけ、こんなこと。。。
    nameって多分ホスト側のネットワーク接続の名称のことだと
    思いますが、これじゃあ合うはずもない。

    これを消したらうまくつながりました。

    次回予告。
    無料の問い合わせ対応ツールeticket
    ・問い合わせ画面の自動生成
    ・問い合わせ番号の発行
    ・問い合わせ担当者の割り振り、
    ・対応履歴
    ・対応メモ
    ・受付アドレスからの自動処理(スレッドに自動で緋も付けてくれる)
    ・POP3での代表アドレスなどのメールアカウント対応
    などなど、オープンソースでこれだけの機能が実装されれば、
    使わない手はない、「eticket」日本語化しました。

    公開します!
    お楽しみに。

    theme : Linux
    genre : コンピュータ

    PHPListインストール

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    せっかくファイルを公開したので、いまさらではありますが、
    自分の備忘録も兼ねてインストール方法を記載しておきます。

    OSですが、CentOS5.2を使いました。
    こちら
    自分のなじみのあるところから選ぶのがよいと思いますが、
    メールサーバの構築方法や、いろいろな情報が多いので、
    なんだかんだで、CentOSが楽な気がします。

    1.OSのインストール

    OSインストールで実施したことは、

    ・日本語選択
    ・パーティション1つに
     →恐らくspool領域だけ気をつければどのように切っても問題ないと思います。
    ・パッケージカスタマイズ
      不要なものを取り除きベースシステムのベース、MySQL、Webサーバの
      あたりを加えました。
      足りないパッケージがあったら後で追加します。

    2.パッケージの展開と設定
    こちらで取得したファイルをWebサーバのDocumentroot以下に展開し、lists/だけ
    /var/www/html/に移動しました。
    具体的には/var/www/配下で


    # tar zxvf phplist-2.11.3_dip_xxxx.tar.gz
    # mv phplist-2.11.3_dip/public_html/lists/ ./html/



    ここで、configファイルを編集するまえに、DBを作っておきます。
    OSインストール直後はMySQLが停止しているので起動します。


    #service mysqld start
    # mysql -u root -p
    mysql> create database phplistdb charset='utf8';


    ※MySQL初回起動直後なので、本当は何もなくてもOKだったりします。

    ようやく、lists/config/config.phpの編集です。
    確認ポイントは以下です。

    $database_host = "localhost";    //26行目
    $database_name = "phplistdb";   //29行目
    $database_user = "phplist";     //32行目
    $database_password = 'phplist';    //35行目


    下記あたりも適宜変更。
    [行数]
    73 # $message_envelope = 'listbounces@yourdomain';
    77 $bounce_protocol = 'pop';
    86 $bounce_mailbox_host = 'localhost';
    87 $bounce_mailbox_user = 'popuser';
    88 $bounce_mailbox_password = 'password';


    そして、二年ほど前に私がはまった箇所なのですが、
    195行目の

    define ("TEST",0);

    ここを0にしないとメールが発信されません。
    後は、SMTPサーバの設定などがあります。環境によっては
    かえる必要があるかと思います。

    また、PHPMailerの設定はHTMLメールを送りたいことから
    使う設定にしています。
    このために、各所の日本語変更が生きてくるわけです。

    3.ブラウザからインストーラー起動

    さて準備が整い、インストーラーを起動できるわけですが、
    CentOS5.2を入れた場合(他でも多いとは思いますが)、
    iptablesが邪魔してWebにアクセスできませんので、止める
    または、httpのポートを空けておきましょう。
    私はひとまず停止しました。


    #service iptables stop



    あらためて、ブラウザからと思ったらやはり抜けが判明しました。
    php-mbstringを入れ忘れています。

    CentOS5.2では、fstabからcdromの項目が消えているので、


    # mkdir /mnt/cdrom
    # mount /dev/cdrom /mnt/cdrom/
    # rpm -ivh /mnt/cdrom/CentOS/php-mbstring-5.1.6-20.el5.i386.rpm
    # service httpd restart



    こんな感じでマウントとrpmパッケージのインストールを行います。
    Apacheの再起動も忘れずに。
    それでは、ブラウザからアクセスします。

    http://FQDNまたはIPアドレス/lists/admin/

    最初のアクセスは時間がかかると思います。
    インストールが終わっていなくてもDBの確認に行って、
    タイムアウトするのを待っている様です。

    ここで、

    「警告: PHP magic_quotes_gpc = on のときよく機能します。」

    こんなメッセージが出ていると思います。
    触れて来ませんでしたが、listsディレクトリにはあらかじめ、
    .htaccessが用意されてますので、状況に応じて、.htaccess
    を利用可能にするのがよいかと思われます。

    「データベースの初期化」リンクをクリックして先に進みます。
    「次を続ける:phplistセットアップ」で次に進みます。

    後は、セットアップに適宜、自分の環境の値を入れてください。

    ライセンス無料で、ここまでの機能を持っていれば十分ではないかと
    思います。
    日本で使う中では、文字コードの問題が大きいと思いますので、
    他のクリックトラックや、バウンスメールの処理(エラーメール)機能
    などなかなかのものです。

    属性差込もできますので、企業での取引先向けのメルマガ配信など
    には十分すぎるほどの機能でしょう。
    コンシューマ向け、特に携帯電話向けのメールなど大量で
    細かな処理が必要なものは厳しい印象をぬぐえませんが、
    小規模に行う場合は使えるのではないかと思います。

    今回PHPMailerへの文字コード変換の修正をせっかくやったので、
    携帯各社向けの文字コード変換の実装も決めうちで盛り込んでみても
    よいかなと思っています。

    長い内容にお付き合い頂き、お疲れ様でした。
    次回以降、他のアプリケーションに触れられるかと思います。
    お楽しみに。





    theme : Linux
    genre : コンピュータ

    PHPList日本語化改修版変更点の追記

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    前回公開した「PHPList日本語化改修版」のオリジナルからの
    変更点を追記しておきます。
    defaultconfig.inc
    ファイルを私独自の意訳した日本語にしています。
    オリジナルファイルは、defaultconfig.inc.orgとしています。


    theme : Linux
    genre : コンピュータ

    PHPList日本語化改修版公開しました!

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    いろいろ手を加えましたが、一通り動作するようになりましたので、
    公開します。
    ご利用ください。


     PHPList-2.11.3 独自日本語化ファイル

    ※10月8日 追記:リンクが誤っておりました、
      すみません修正しました。
      ご指摘ありがとうございます。



    メールエンコード  : iso-2022-jp
    ソース内部コード  : UTF8

    となっています。
    当然のことながら、PHPList本家の更新時には、改めて追従する必要がありますので、
    ご注意ください。

    インストール手順に関しては、通常のPHPListの手順と変わりませんが、
    今まで触れてきませんでしたので、おいおい触れたいと思います。

    theme : Linux
    genre : コンピュータ

    PHPList日本語化の実践

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録

    回り道していましたが、PHPListです。

    こちらを参考にUTF-8化してみました。

    ちなみに環境はCentOS4.6標準に準じています。
    PHP、Mysql、Apacheはそれぞれ、ディストリビューションで配布されているものを
    そのまま、使用しています。

    PHPListは、2.11.3の開発版です。

    1.日本語関連ファイルのUTF-8変換



     ○変換手段は、iconvを用いて、単純に変換しました。


    #!/bin/sh
    for file in "$@"
    do
    cp $file temp
    iconv -o $file -f EUC-JP -t UTF-8 temp
    rm -f temp
    done


      
    ※特にエラー処理なども行っていないので、参考程度にご覧ください。

     ・texts/japanese.inc
     ・admin/help/ja/以下のファイル全て
     ・admin/info/ja/以下のファイル全て
     ・admin/lan/ja/以下のファイル全て
     ・admin/phpmailer/language/phpmailer.lang-ja.php

    ※lists/admin/lan/ja/template.phpが壊れているようです。
     私は、enからコピーしてきて凌ぎましたが、日本語にしているので、
     一通り完了したら公開します。


    2.UTF-8でDB作成



    プロンプトからでも、phpMyAdminなどでも問題ないと思います。
    ただし、UTF-8に文字コードをセットしてください。
    また、UTF-8にすることで、Latin-1では、1文字1byteですむところが、3byteに
    なるために、MySQLの1000byte制限に引っかかり、
    インストールスクリプトに問題が発生します。

    これは、forumでも話題が挙がっていましたが、私は、とりあえず、
    「lists/structure.php」を


    line70

    "name" => array("varchar(100) not null","Name of Dataitem"),


    "name" => array("varchar(50) not null","Name of Dataitem"),



    としました。

    3.各種ソース改修



    下記ファイルに関しては、こちらが十二分に解説してくださっていますので、
    ここではふれません。
    管理画面のエンコード設定も確認しておく必要があります。

    texts/japanese.inc
    config/config.php
    admin/phpmailer/class.phpmailer.php
    admin/class.phplistmailer.php

    しかし、ここで困ったことに、本文がうまく、iso-2022-jpになってくれません。
    いろいろソースを追いなおして、私は、PHPmailerを通して、メールを
    送信しようとしていたので、
    admin/phpmailer/class.phpmailer.php
    内 で、
    function MailSend($header, $body)
    では処理できていなかったようです。
    もう少し前の本文処理にかませようと考え、

    admin/class.phplistmailer.php内にて、下記のような変更を加えました。


    line100

    function CreateBody() {
    $body = parent::CreateBody();
    if ($this->message_type != 'plain') {
    foreach ($GLOBALS['plugins'] as $plugin) {
    $plreturn = $plugin->mimeWrap($this->messageid,$body,$this->header,$this->ContentTypeHeader,$this->destinationemail);
    if (is_array($plreturn) && sizeof($plreturn) == 3) {
    $this->header = $plreturn[0];
    $body = $plreturn[1];
    $this->ContentTypeHeader = $plreturn[2];
    }
    }
    }
    $body = mb_convert_encoding($body, $this->CharSet);
    //上記一行を追記しました
    return $body;
    }



    おそらく、もっと適切な配置もあると思いますが、現時点ではこれで通っているので、
    よしとします。

    ここがおかしい、もっとスマートな方法があるなどのご指摘はご遠慮なく、
    コメントください。

    とりあえず、今回はここまでにします。
    次回以降、私が日本語化した、template.phpや、上記変更を加えた
    tarballをもう少し確認した上で公開しようかと思います。

    そろそろ本格的にlimesurveyを触りたい。
    2.0系がcakePHPで実装されている様なので、今後扱いやすそう。。。

    theme : Linux
    genre : コンピュータ

    悪い癖が

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    更新があいてしまいました、なるべく毎日と思っていましたが、
    私の悪い癖が出て寄り道しておりました。

    ことの発端は、ちょうどVmwareServer2がリリースされたようだったので、
    検証・開発環境を今回の件で改めて見直そうと思い、いろいろ見ていたら、
    なんと、ESXサーバまで無料になっていた!?全く知らなかった。。。

    ESXも面白そうだとググっていたら、USBメモリで環境作ってしまうのが、
    良いと。
    で、作業環境がLinuxでの手順だったので、「そういえば手ごろな自分の
    Linux環境がないなぁ(サーバではなく)」と思ってしまったのが、脱線の
    始まりでした。

    Linux環境作るのはいいけど普段の仕事的にWindowsは捨てられない、
    ダブルブートの環境は、なんか気持ち悪いので個人的に好きじゃない
    ということで、Linux環境もUSBに作ることを決意してしまった。

    こちらを参考に、今はやり??のubuntuをUSBメモリに入れるところまでは
    すんなり。
    しかーし、つい最近引っ越した関係で私のネット環境はemonsterに頼りきり。
    こいつを使えんようになると何もできん。。ということで、bluetoothの設定と
    emonsterのDUNの設定。。。やることが雪だるま式に増えていく。。。
    昔からこうなんだ。自分で一個やること増やすともっと超えなければいけない壁が
    増える。VM環境整えたかっただけなのに。

    http://hogshead.jp/diary/tb.cgi/20080816

    ubuntuのDUN設定は、こちらを参考にしました。
    ありがとうございます。


    皆さんの汗と涙の結晶でどれだけ私の道との遭遇が軽減されているか。
    こういった情報がなければ、全部自分で試しながら。。。。考えたくないなぁ。、

    いよいよ、ESXサーバ(といっても、本当は早く、PHPListや、Limesurveyに戻り
    たいところだけど。

    http://passing.breeze.cc/mt/mt-tb.cgi/83

    こちらをまたまた参考にさせて頂き、USB環境作成完了。

    使ってみて、すごっ!!と同時にむずっ!!ということで
    こいつを使いこなすのは時間をかけて。。この二日の寄り道は。。。

    次回こそ、元の道に戻ります。
    PHPListについて、前回の私と似たような感想をお持ちの方がいるみたいで、
    またしても非常に参考になる情報がありました。
    実践の結果は、次回ということで。

    theme : Linux
    genre : コンピュータ

    ご案内
    google検索
    カスタム検索
    カテゴリ
    最新記事
    Amazon
    カテゴリー&RSS
    RSS新着情報

    plugin by F.B

    検索フォーム
    最近のコメント(コンパクト)
    データ取得中...
    リンク
    フリーエリア
    RSSリンクの表示
    カレンダー
    09 | 2008/10 | 11
    - - - 1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31 -
    ブックマーク
    Yahoo!ブックマークに登録
  • | このエントリーを含むはてなブックマーク
  • 月別アーカイブ
    最新トラックバック
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。