LinuxのCUIプログラムの標準出力の文字の色を変える - 2015.12.26

lsコマンドを実行すると、出力内容のディレクトリ、バイナリファイルなど色が変更される。これを自作のCUIプログラムに取り入れてみる。

 

まず、lsコマンドのソースを確認したが、環境変数やらtputsやら、ソース解析に時間がかかりそう・・・。手っ取り早く、lsコマンド実行結果のtelnetプロトコルパケットをキャプチャしてみた。キャプチャデータから、色を変更するための エスケープシーケンスをハッキングした。

 

【色を変更するためのエスケープシーケンス】

ヘキサ:0x1b 0x5b 0xXX  0xXX  0x3b  0xXX 0xXX 0x6d
文字列:{ESC}   [   X  X   ;      X  X   m  
文字のタイプ(数字)  文字の色(数字)

 

【文字のタイプ】

  • ・0・・・デフォルト
  • ・1・・・強調
  • ・4・・・アンダーライン
  • ・5・・・点滅

 

【文字の色】

  • ・0・・・デフォルト
  • ・30・・・黒  ・40・・・黒背景
  • ・31・・・赤  ・41・・・赤背景
  • ・32・・・緑  ・42・・・緑背景
  • ・33・・・黄  ・43・・・黄背景
  • ・34・・・青  ・44・・・青背景
  • ・35・・・紫  ・45・・・紫背景
  • ・36・・・シアン ・46・・・シアン背景
  • ・37・・・灰色 ・47・・・灰色背景

 

【例】

    • ・赤文字を出力する場合
      • →{ESC}[00;31m
    • ・文字変更を止める場合
      • →{ESC}[00m

     

    【実践(Javaの場合)】

    public class CollorSysout {
     
            public static void main(String[] args){
     
    		System.out.print("標準出力文字を");
     
    		// {ESC}[00;31m
                    writeSysout((byte)0x1b,(byte)0x5b,
    			(byte)0x30,(byte)0x30,(byte)0x3b,
    			(byte)0x33,(byte)0x31,(byte)0x6d);
    		
    		System.out.print("赤く");
    		System.out.print("、");
    		System.out.print("赤く");
     
    		// {ESC}[00m
                    writeSysout((byte)0x1b,(byte)0x5b,
    			(byte)0x30,(byte)0x30,(byte)0x6d);
    		
    		System.out.println("してみました。");
    	}
     
    	private static void writeSysout(byte... buf){
    		try {
    			System.out.write(buf);
    		} catch(java.io.IOException e) {
    			// 標準出力なんで例外は想定しないことにする。
    		}
    	}
    }
    

lolipopのSMTPサーバーを使ってCakePHP3でメールを送る - 2015.12.26

概要

CakePHP3からlolipopのWebメール送信をする。

1.設定

設定ファイル「config/app.php」を編集


      :

    EmailTransport' => [
        'lolipop' => [
            'className' => 'Smtp',
            // The following keys are used in SMTP transports
            'host' => 'smtp.lolipop.jp',
            'port' => 587,
            'timeout' => 30,
            'username' => 'ユーザー名',
            'password' => 'パスワード',
            'tls' => null,
        ],
    ],

      :

    'Email' => [
        'lolipop' => [
            'transport' => 'lolipop',
            'from' => 'メールアドレス',
        ],
    ],

      :

2.コントローラー

<?php
namespace App\Controller;

use App\Controller\AppController;
use Cake\Mailer\Email;

class XxxxController extends AppController {
	public function index() {
		$emailInstance = new Email('lolipop');
		$emailInstance
			->from([yyyyy@yyyy.yy => '送信元名'])
			->to('xxxxx@xxxxxx.xx', '宛先名')
			->subject('タイトル')
			->send('メール本文');
	}
}

WindowsでZip形式のMySqlを導入 - 2015.12.26

 

インストーラーを使わずにWindowsにMySqlを導入した。

1.ダウンロード

MySql Community Editionをダウンロード

 

https://www-jp.mysql.com/downloads/

 

MySQL MySQL Downloads

 

Comunity (GPL) Downloads 》 をクリックする。

 

MySQL MySQL Downloads-02

 

MySQL Community Serverをの「DOWNLOAD」をクリック

MySQL MySQL Downloads-03

 

Windows ZIP Archiveをダウンロード(今回は64bitを選択)

 

 

MySQL MySQL Downloads-04

 

No Thanks, just start my download.をクリック

 

2.DB作成

ダウンロードしたZIPファイルを

C:\mysql

に解凍する。

 

 

「Windowsキー」+「R」を押下して、ファイル名を指定して実行ウインドウを開く。

「cmd」を入力してコマンドプロンプトを起動する

WS000002

 

MySqlのコマンドディレクトリ「C:\mysql\bin」に移動

cd C:\mysql\bin

DB作成コマンドを実行

mysqld.exe --log_syslog=0 --console --standalone --initialize

実行すると、最後に仮パスワード「eCxDu*MgT2Cz」が表示されるのでこれをコピーしておく。

2015-12-21T09:58:19.767548Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 
2015-12-21T09:58:21.475503Z 0 [Warning] InnoDB: New log files created, LSN=45790 

2015-12-21T09:58:21.866185Z 0 [Warning] InnoDB: Creating foreign key constraintsystem tables. 
2015-12-21T09:58:22.006756Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5e7bc454-a7c9-11e5-8704-7c7a910e7cc9. 
2015-12-21T09:58:22.022437Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 
2015-12-21T09:58:22.022437Z 1 [Note] A temporary password is generated for root@localhost: eCxDu*MgT2Cz 
MySqlサーバーを起動する

mysqld.exe

このまま、コマンドプロンプトウインドウを放置しておく。

もう一度、「Windowsキー」+「R」を押下して、ファイル名を指定して実行ウインドウを開く。

「cmd」を入力してコマンドプロンプトを起動する

WS000002


MySqlのコマンドディレクトリ「C:\mysql\bin」に移動

cd C:\mysql\bin

DB作成コマンドを実行

mysql.exe -u root -p 

パスワードを聞かれるので、先ほどコピーしておいた「eCxDu*MgT2Cz」を入力する。

パスワードをリセットする。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('noguso');

これで初期処理は終わり。