Your PostgreSQL is too old

[vagrant@localhost ipa]$ yum list installed | grep postgres
postgresql.x86_64 8.4.20-8.el6_9 @base
postgresql-devel.x86_64 8.4.20-8.el6_9 @base
postgresql-libs.x86_64 8.4.20-8.el6_9 @base
postgresql96.x86_64 9.6.15-1PGDG.rhel6 @pgdg96
postgresql96-devel.x86_64 9.6.15-1PGDG.rhel6 @pgdg96
postgresql96-libs.x86_64 9.6.15-1PGDG.rhel6 @pgdg96
postgresql96-server.x86_64 9.6.15-1PGDG.rhel6 @pgdg96

psqlが8.4を読み込んでいるため、「Your PostgreSQL is too old」のエラーが出る

まず、psqlにログインして、実行ファイルを探します
[vagrant@localhost ipa]$ su – postgres
パスワード:
-bash-4.1$ which -a psql
/usr/bin/psql

node.js, npmバージョンアップ

[vagrant@localhost ~]$ nvm install v10.12.0
Downloading and installing node v10.12.0…
Downloading https://nodejs.org/dist/v10.12.0/node-v10.12.0-linux-x64.tar.xz…
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v10.12.0 (npm v6.4.1)
[vagrant@localhost ~]$ nvm use v10.12.0
Now using node v10.12.0 (npm v6.4.1)

[vagrant@localhost ~]$ node -v
v10.12.0
[vagrant@localhost ~]$ npm -v
6.4.1

空チェックをして型チェック

nullかチェックをして、その後、型チェックを行う

$var = "2019/04/01";

if(empty($var)){
	echo "値を入力してください";
} else{
	if(preg_match("/^[a-zA-Z0-9]+$", $var)){
		echo "英数字で入力してください";
	} else {
		echo "合格";
	}
}

うむ、nullかどうかはオブジェクトにしたいですな。

正規表現 英数記号:\s!-~

英字:[A-Za-z]

$var="My name is Tom";
echo preg_match("/[A-Za-z]/", $var);

数字:[0-9]

$var="My name is Tom, 19years";
echo preg_match("/[0-9]/", $var);

英数字:[A-Za-z0-9]

$var="今年の桜は綺麗ね";
echo preg_match("/[A-Za-z0-9]/", $var);

英数記号:!”\#$%&@'()*+,-./_

$var="hoge@gmail.com";
echo preg_match("/[\#$%&@'()*+,-._]/", $var);
$var="hoge@gmail.com";
echo preg_match("/[\s!-~]/", $var);

あれ!? ”\#$%&@'()*+,-._”と”\s!-~”、一緒だ。
すげーーーーーーーーーーーー

s3からphpでファイルをローカルにダウンロード

引き続き、aws sdkを読み込みます。

require_once('vendor/autoload.php');

$s3client = new Aws\S3\S3Client([
	'credentials' => [
		'key' => '',
		'secret' => ''
	],
	'region' => 'ap-northeast-1',
	'version' => 'latest',
]);

$result = $s3client->getObject([
	'Bucket' => 'hoge',
	'Key' => 'article.csv',
	'SaveAs' => 'article.csv',
]);

なに、こんなに簡単なのか。。。。。。
続いて、csvからmysql! gogogo!

letの変数は重複させない

@IBAction func getGoo(_ sender: Any) {
        let results1 = ["Image1","Image2","Image3"]
        let random1 = arc4random_uniform(UInt32(results1.count))

        let image1 = UIImage(named: results1[Int(random1)])
        imageView.image = image1
    }
    

    @IBAction func getChoki(_ sender: Any) {
        let results2 = ["Image1","Image2","Image3"]
        let random2 = arc4random_uniform(UInt32(results2.count))
        
        let image2 = UIImage(named: results2[Int(random2)])
        imageView.image = image2
    }
    
    @IBAction func getPa(_ sender: Any) {
        let results3 = ["Image1","Image2","Image3"]
        let random3 = arc4random_uniform(UInt32(results3.count))
        let image3 = UIImage(named: results3[Int(random3)])
        imageView.image = image3
    }

let result, let randomを3回書くと、うまく表示されません。varだったら行けるのかもしれませんが。

最新の日銀金融政策を中国語で自動表示する

最新バージョンだけなら、難なくいけますね。


$text = $titles[0]."<br><br>";

foreach(glob("file/".$y."/{*.txt}",GLOB_BRACE) as $file){
    if(is_file($file)){
        $files[] = htmlspecialchars($file);
    }
}
// var_dump($files);

	$file = fopen($files[0], "r");
	if($file){
		while ($line = fgets($file)){
			$text .= $line;
		}
	}
	fclose($file);

	

	$key = '';

	$host = "https://api.cognitive.microsofttranslator.com";
	$path = "/translate?api-version=3.0";
	$params = "&to=zh";

	if(!function_exists('com_create_guid')){
		function com_create_guid(){
			return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
			mt_rand(0, 0xffff), mt_rand(0, 0xffff),
			mt_rand(0, 0xffff),
			mt_rand(0, 0x0fff) | 0x4000,
			mt_rand(0, 0x3fff) | 0x8000,
			mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff));
		}
	}

	function Translate ($host, $path, $key, $params, $content) {
	    $headers = "Content-type: application/json\r\n" .
	        "Content-length: " . strlen($content) . "\r\n" .
	        "Ocp-Apim-Subscription-Key: $key\r\n" .
	        "X-ClientTraceId: " . com_create_guid() . "\r\n";
	    $options = array (
	        'http' => array (
	            'header' => $headers,
	            'method' => 'POST',
	            'content' => $content
	        )
	    );
	    $context  = stream_context_create($options);
	    $result = file_get_contents ($host . $path . $params, false, $context);
	    return $result;
	}

	$requestBody = array (
	    array (
	        'Text' => $text,
	    ),
	);
	$content = json_encode($requestBody);
	$result = Translate($host, $path, $key, $params, $content);

	$json = json_decode($result);
	$newtext =  $json[0]->translations[0]->text;

	echo $newtext; 

ガンガンいきたいところだが、アプリ(android・iOS)のタスクがかなり重いので、translatorはひとまずこれをazureに載せるところまでとしたい。

weather mapのデータをDBに格納する

テーブル名はcakeを使うので、複数形にします。

create table weather.marunouchis(
	id int unsigned auto_increment primary key,
	forecast varchar(255),
	main varchar(255),
	description varchar(255),
	temp float,
	humidity int,
	cloud int,
	speed float,
	created datetime default null
);

PDO::PARAM_INTは、floatやdoubleはないとのこと。指定しないとstrになる。

$now = date("Y-m-d H:i:s");
$i = 0;
foreach($main as $value){
    $stmt->bindParam(':forecast', $time[$i], PDO::PARAM_STR);
    $stmt->bindParam(':main', $value, PDO::PARAM_STR);
    $stmt->bindParam(':description', $description[$i], PDO::PARAM_STR);
    $stmt->bindParam(':temp', $temp[$i], PDO::PARAM_STR);
    $stmt->bindParam(':humidity', $humidity[$i], PDO::PARAM_INT);
    $stmt->bindParam(':cloud', $cloud[$i], PDO::PARAM_INT);
    $stmt->bindParam(':speed', $speed[$i], PDO::PARAM_INT);
    $stmt->bindParam(':created', $now, PDO::PARAM_STR);
    $stmt->execute();
    $i++;
}

入っていますね。