2012年12月20日木曜日

[c] ファイル名等組み込みマクロ

恥ずかしながらどうやってるのだろうと気になっていたけど
やっと知る事ができたのでメモ


  1 #include <stdio.h>
  2
  3 int main(void){
  4
  5     printf("error message in %s line: %d\n",__FILE__,__LINE__);
  6
  7     return 0;
  8 }

標準出力

error message in test.c line: 5


2012年12月10日月曜日

[PEAR::Mail] Mail headerについて

普段湯水のように送っているメールでも
実際自分でライブラリーの恩恵に預かりながらとはいえ使う側から作る側になって
初めて気づく事もあるというのが今回の教訓

Mail のheaderについてです。
先の投稿 の続報という形になっています。

 24 $header = array(
 25     "To" => "to-address@gmail.com",
 26     "From" => "from-address@gmail.com",
 27     "Subject" => mb_encode_mimeheader("テストメール")
 28 );

25行目を下記の様にすると

25     "To" => mb_encode_mimeheader("上様") . "<ue@email.ne.jp>",

thuderbirdでは、下記のようにメールアドレスと名前の部分がスムーズに登録されます。

また、Ccも指定できますというか知らなかっただけ。知らなすぎますねw

 24 $header = array(
 25     "To" => "to-address@gmail.com",
26    "Cc" => "cc@gmail.com"
 27     "From" => "from-address@gmail.com",
 28     "Subject" => mb_encode_mimeheader("テストメール")
 29 );

[php] smtp over ssl

smtp-auth over ssl なsmtpサーバーからメールを送る。
PHP -> 5.4.6

[1] pear-Mail のインストール
cd /usr/ports/mail/pear-Mail
make config-recursive
PEAR_NET_SMTPを有効にする
make
make install

[2] コーディング


  1 <?php
  2 require_once("Mail.php");
  3
  4 // require for includeing japanese mail
  5 mb_language("Japanese");
  6 mb_internal_encoding("UTF-8");
  7
  8 // settting of smtp servser
  9 $params = array(
 10     "host" => "ssl://smtp-server-address",
 11     "port" => 465,
 12     "auth" => true,
 13     "username" => "account",
 14     "password" => "possword"
 15 );
 16
 17 // make instance of PEAR::Mail
 18 $mailObject = Mail::factory("smtp", $params);
 19
 20 //  address of recipients
 21 $recipients = "to-address@gmail.com";
 22
 23 // mail header
 24 $header = array(
 25     "To" => "to-address@gmail.com",
 26     "From" => "from-address@gmail.com",
 27     "Subject" => mb_encode_mimeheader("テストメール")
 28 );
 29
 30 // body of mail
 31 $body = "これは、テストメールです。";
 32
 33 // encoding
 34 $body = mb_convert_encoding($body, "ISO-2022-JP", "UTF-8");
 35
 36 // sending
 37 print("Sending....<br>");
 38 $ret =$mailObject->send($recipients, $header, $body);
 39 if(PEAR::isError($ret)){
 40     print($ret->getMessage());
 41 }
 42
 43 ?>


[3] PHP E_STRICT について
以下のようなエラーが出る場合
Strict Standards: Non-static method Mail::factory() should not be called statically in/usr/local/www/apache22/data/pearmail/index.php on line 18

Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in /usr/local/share/pear/Mail/smtp.php on line 365

Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in /usr/local/share/pear/Net/SMTP.php on line 450

これらのエラーは、Fartalなエラーではないため
/usr/local/etc/php.ini のerror_reportingを以下のようにして
error_reporting = E_ALL & ~E_STRICT
E_ALL からE_STRICTを除く設定にする。

2012年12月8日土曜日

[Cake PHP] 404 Not Found

既出の記事がたくさんがあるが自分用のメモ

Cake PHP( ver. 2.2.2 ) で404 Not Found が出る場合の対処法

[0] apache の mod_rewrite が有効になっているか確認
httpd.confで以下の用になっていればOK

LoadModule rewrite_module libexec/apache22/mod_rewrite.so

[1] .htaccess にmod_rewriteに関する設定をする
以下の例は、[document-root]/cakeblog/にCake PHPを配置している場合

まずは、[document-root]/cakeblog/.htaccess

  1 <IfModule mod_rewrite.c>
  2    RewriteEngine on
  3    RewriteBase /cakeblog/
  4    RewriteRule    ^$ app/webroot/    [L]
  5    RewriteRule    (.*) app/webroot/$1 [L]
  6 </IfModule>

次は、[document-root]/cakeblog/app/.htaccess

  1 <IfModule mod_rewrite.c>
  2     RewriteEngine on
  3     RewriteBase /cakeblog/app/
  4     RewriteRule    ^$    webroot/    [L]
  5     RewriteRule    (.*) webroot/$1    [L]
  6 </IfModule>

最後に[document-root]/cakeblog/app/webroot/.htaccess

  1 <IfModule mod_rewrite.c>
  2     RewriteEngine On
  3     RewriteBase /cakeblog/app/webroot/
  4     RewriteCond %{REQUEST_FILENAME} !-d
  5     RewriteCond %{REQUEST_FILENAME} !-f
  6     RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  7 </IfModule>

[2] apacheの設定
cakeblog専用の設定ファイルを/usr/local/etc/apache22/Includes/に「cakeblog.conf」として作成して、以下を記す。


  1 <Directory "/usr/local/www/apache22/data/cakeblog">
  2     AllowOverride All
  3     Order allow,deny
  4     Allow from all
  5 </Directory>


そして、apacheを再起動して終了


2012年12月5日水曜日

[vim] 256色で表示するようにする

例えばGnome terminalは、256色の表示に対応しているがデフォでは、vimは、16色でしか表示してくれない。

vimも256色で表示するは、~/.vimrcのcolorchemeの設定の前に以下を追加

set t_Co=256

reference http://vim-users.jp/2009/08/hack64/

2012年12月4日火曜日

[freeBSD] postfix install


cd /usr/ports/mail/postfix
make config-recursive
make
make install

[2] sendmailの無効化
man rc.sendmailを参考に
/etc/rc.confに以下を追加


sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

[3] 専用ユーザーの追加
adduserでpostfix専用ユーザーを作成する。
ログインしないユーザーでホームディレクトリは、無し

[4]
エリアスのセット
/etc/aliasesに以下を追加
postfix: root

送信バッファーディレクトリpostdrop用グループの追加
pw groupadd postdrop

ホスト名等の設定(/etc/postfix/main.cf)で
myhostname =  my_host_name
mydestination = $myhostname,localhost

とした。

次に起動時にpostfixを走らせるための設定
/etc/rc.conf に以下を追加

postfix_enable="YES"

そして、postfixの起動
/etc/rc.d/postfix onestart

telnetでsmtp接続してみる
telnet localhost 25

本稿はここまで





2012年12月1日土曜日

[Mac] GNU Global + vim

GNU Global と vim の組み合わせで快適ソースコードリーディング環境を構築してみる。



まず、GNU Globalのインストール

 sudo port global

vimのプラグインのコピー
  cp /opt/local/share/gtags/gtags.vim ~/.vim/plugin/
コピー先のホームディレクトリのvim pluginディレクトリが無い場合は、予め作成しておく。

そして、インデックス出力のために読みたいソースファイルがあるディレクトリにてGtags -v を実行。

そして、読みたいソースを開く。ソース内の関数一覧を表示するには、
 :Gtags -f %

カーソルの位置の関数の定義に飛ぶには、

:GtagsCursor

本稿は、この辺まで。。。

参考サイト: http://www.machu.jp/diary/20090308.html#p01