平面図が欲しかったが、SUBARUさんも3面図のみの掲載・・・。
平面図を作成するために、結局全部書いてしまった・・・。
誰トク?なCADデータだが、約2,500台/月の販売実績だし、
ちょっとリコール出てるけど、車に問題はないし、
オーナー様にご利用頂ければと思い、公開。
FC2に「SUBARU_XV_DBA_GT7.zip」でアップロードしてます。(JW_CAD)
SUBARU(スバル)XV 2017年5月~ DBA-GT7型 2.0i-Sアイサイト
smtp送信テストPHP(UTF-8送信)<?
require_once("/置いた所/vendor/autoload.php" ); //これを忘れると動かない!! require_once("/置いた所/vendor/phpmailer/phpmailer/class.phpmailer.php"); //これを忘れると動かない!!
mb_language("japanese");
mb_internal_encoding("UTF-8");
$to = "XXXX@gmail.com"; $subject = "SMTP587テスト"; $body = "smtpサーバ経由のメールテスト";
$from = "hoge@hogehoge.com"; $fromname = "送信テスト君"; $mail = new PHPMailer();//インスタンス生成 $mail->CharSet = "UTF-8";//UTF-8の宣言をすること $mail->Encoding = "base64";//記述しないと正しく認識しないサーバが存在するらしい。 $mail->IsSMTP(); //smtp利用宣言 $mail->SMTPAuth = TRUE;//smtp認証宣言 $mail->Host = 'mail.xxxx.jp:587'; // ホストアドレス:ポート25or587 $mail->Username = 'hoge'; //smtp認証ユーザ $mail->Password = 'hogehoge'; //smtp認証パス $mail->AddAddress($to);
$mail->From = $from;
$mail->FromName = $fromname;
$mail->Subject = $subject; $mail->Body = $body;
//メールを送信 if (!$mail->Send()){ echo("Failed to send mail. Error:".$mail->ErrorInfo); }else{ echo("Send mail OK."); }
?>
postfixのmain.cf にリレーさせる
2.Qdsmtpというhal456さんが作成したライブラリを利用させて頂き、smtpサーバ経由にする。
3.PHPMailerという老舗のライブラリを利用させて頂きsmtpサーバを経由にする。
# mkdir comp 適当な作業ディレクトリを作成。
# cd comp
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 1.7.2) successfully installed to: /root/composer.phar
Use it: php composer.phar
# rm -f composer-setup.php もう要らないので、消す
# mv composer.phar /usr/local/bin/composer システム全般で使えるように移動
セキュリティホールになるからルートで使うなと言われるらしいので、 一般ユーザで確認
$ composer
でロゴとか出れば、OK
続けて、ライブラリ
phpmailer
を入れる。
任意のユーザの任意のディレクトリで行うこと
$ composer require phpmailer/phpmailer
Using version ^5.2 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing phpmailer/phpmailer (v5.2.26): Downloading (100%)
phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Google XOAUTH2 authentication)
Writing lock file
Generating autoload files
何処に置いたか忘れたら、これで探すようかな?
$ find -name vendor -type d
smtp送信テストPHP<?
require_once("/置いた所/vendor/autoload.php" ); //これを忘れると動かない!! require_once("/置いた所/vendor/phpmailer/phpmailer/class.phpmailer.php"); //これを忘れると動かない!!
mb_language("japanese");
mb_internal_encoding("UTF-8");
$to = "XXXX@gmail.com"; $subject = "SMTP587テスト"; $body = "smtpサーバ経由のメールテスト";
$from = "hoge@hogehoge.com"; $fromname = "送信テスト君"; $mail = new PHPMailer();//インスタンス生成 $mail->CharSet = "iso-2022-jp"; $mail->Encoding = "7bit"; $mail->IsSMTP(); //smtp利用宣言 $mail->SMTPAuth = TRUE;//smtp認証宣言 $mail->Host = 'mail.xxxx.jp:587'; // ホストアドレス:ポート25or587 $mail->Username = 'hoge'; //smtp認証ユーザ $mail->Password = 'hogehoge'; //smtp認証パス $mail->AddAddress($to);
$mail->From = $from; $mail->FromName = mb_encode_mimeheader(mb_convert_encoding($fromname,"JIS","UTF-8"));
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8")); $mail->Body = mb_convert_encoding($body,"JIS","UTF-8"); //メールを送信 if (!$mail->Send()){ echo("Failed to send mail. Error:".$mail->ErrorInfo); }else{ echo("Send mail OK."); }
?>
テスト送信が届いたら、
念のため、SMTPサーバの/var/log/maillog も確認し、上手くいってるようだ。
稼働中のプログラムの置き換えをして完了。
明日できれば置き換えよう
うん、がんばろう・・・。
# nano /etc/postfix/master.cf 頭の方に記載がある
【中身】
smtp inet n - n - - smtpd
↑必須 submission inet n - n - - smtpd ↑587ポートを使う場合
-o smtpd_tls_security_level=may
↑587の時これをencriptにすると、STARTTLSをしてから送れ、と言われてしまうので、どっちも許容のmayがよい
-o smtpd_sasl_auth_enable=yes
↑SMTP認証を使う場合はyesにする
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
↑SMTP-AUTHを通ったものを許可する。rejectは細かく指定するとそこは蹴れる。
# nano /etc/postfix/main.cf TLSは末尾に記載されているので、そこを編集
【中身】
## TLS
# Transport Layer Security
#
smtpd_use_tls = yes
smtp_use_tls = yes
#smtpd_tls_auth_only = yes
↑これを有効にするとTLSでないと蹴るので、コメントアウトのままにしておく smtpd_tls_key_file = /usr/local/ssl/private/キーファイル.key smtpd_tls_CAfile = /usr/local/ssl/crt/SSL証明書ファイル.crt smtpd_tls_loglevel = 3
↑これを1にすると、ログにTLSの事が記載されるらしい。
smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom
smtpd_tls_security_level=may
↑25ポートからのSTARTTLSを使う場合は、master.cfでなく、main.cfに記載するとの事。postfixを再起動して内容反映
# systemctl restart postfix
オレンジ色の部分を記載すると、
相手がTLSを受け付けてくれる場合は、MTA間通信をSSL/TLSにて行える
# yum install autoconf automake libtool # yum install libpng-devel libjpeg-devel libtiff-devel zlib-devel # yum install libicu-devel # yum install pango-devel
icu4c をmakeからインストールする
# cd /usr/local/src/ # sudo wget http://download.icu-project.org/files/icu4c/56rc/icu4c-56_rc-src.tgz # tar zxf icu4c-56_rc-src.tgz # cd icu/source/ # ./configure # make # make install
# cd /usr/local/src/# wget http://www.leptonica.com/source/leptonica-1.76.0.tar.gz
# tar -xzvf leptonica-1.76.0.tar.gz # cd leptonica-1.76.0 # ./configure # make # make install
# cd /usr/local/src/# wget https://github.com/tesseract-ocr/tesseract/archive/3.04.01.tar.gz
#./autogen.sh
# LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" ./configure --with-training-tools
# make
# make install
# ldconfig
更に、設定ファイルを定義
取敢えず英語の場合、
tesseract-ocr-3.02.eng.tar.gzをどこからか探してくる。
/usr/local/share/tessdate/配下に 中身をコピーする。
これで、ようやくocrが使える。
# pdftoppm 0000.pdf 0000out これで、0000ont.ppmが生成されるので、
これをocrに掛ける。
画像が大きい場合は、optionでトリミングしたりする。
文字 | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
コード | %20 | %21 | %22 | %23 | %24 | %25 | %26 | %27 | %28 | %29 | %2A | %2B | %2C | %2D | %2E | %2F |
文字 | : | ; | < | = | > | ? | @ | [ | \ | ] | ^ | _ | ` | { | | | } | ~ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
コード | %3A | %3B | %3C | %3D | %3E | %3F | %40 | %5B | %5C | %5D | %5E | %5F | %60 | %7B | %7C | %7D | %7E |
次のようなテーブル名 Scoreで4行の其々最大のレコードを取得したいとき。
x | y | z |
---|---|---|
1 | 2 | 3 |
1 | 2 | 2 |
3 | 3 | 3 |
5 | 4 | 2 |
単純な比較の場合は、簡単な記述で済む
SELECT CASE WHEN x < y THEN y ELSE x END AS maxmum FROM Score;
しかしながら、複数で比較が発生する場合は些か記載が面倒になる
SELECT CASE WHEN CASE WHEN x < y THEN y ELSE x END < z THEN z ELSE CASE WHEN x < y THEN y ELSE x END END AS maxmum FROM Score;
4つでの比較になると、更に2回記述が増えるので、非常に見難い。
三つ巴までが使用限界と思う。
テーブル内に処理番号、日付、店舗ごとの管理連番、を格納している社内DBで、
年度ごとの店舗ごとの処理件数の合計をカウントでなく、管理連番の最大値の合計を
取得したかった。
受付時、受付受理時、一次納品、二次納品、三次納品、納品完了
このようなステージごとに管理しているが、
一次~三次納品は一括りで数値が欲しかったため、
複数のcaseが必要になった。
力技で一行づつ比較となるので、
レコード数が重いと結構負荷がかかるようだ。