ダン・クァン・ミン Blog

はじめまして

Mysql - Useful Command Line

Create database UTF8

mysql> CREATE DATABASE bookshelf DEFAULT CHARACTER SET utf8;

Drop database

mysql> DROP DATABASE <データベース名>;

Import database from file

$ mysql -u username -p database_name < file.sql

Export database to file

$ mysqldump -u username -p database_name > file.sql

Setup Cakephp 3.x

Installing CakePHP

First, you’ll need to download and install Composer if you haven’t done so already. If you have cURL installed, it’s as easy as running the following:

curl -s https://getcomposer.org/installer | php

Now that you’ve downloaded and installed Composer, you can get a new CakePHP application by running:

php composer.phar create-project --prefer-dist cakephp/app [app_name]

Or if Composer is installed globally:

composer create-project --prefer-dist cakephp/app [app_name]

You can now visit the path to where you installed your CakePHP application and see the setup traffic lights.

Development Server

A development installation is the fastest method to setup CakePHP. In this example, we will be using CakePHP’s console to run PHP’s built-in web server which will make your application available at http://host:port. From the app directory, execute:

bin/cake server -H 192.168.13.37 -p 5673

Create .htaccess file

CakePHP webroot directory (will be copied to your application’s web root by bake):

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    app/webroot/    [L]
    RewriteRule    (.*) app/webroot/$1    [L]
</IfModule>

Setup Apache2 Virtual Host on Ubuntu

Create the Directory Structure

The first step that we are going to take is to make a directory structure that will hold the site data that we will be serving to visitors.

sudo mkdir -p /var/www/example.local/public_html

The Presentation Time Stamp

wikipedia

The presentation timestamp (PTS) is a timestamp metadata field in an MPEG transport stream or MPEG program stream that is used to achieve synchronization of programs' separate elementary streams (for example Video, Audio, Subtitles) when presented to the viewer. The PTS is given in units related to a program’s overall clock reference, either Program Clock Reference (PCR) or System Clock Reference (SCR), which is also transmitted in the transport stream or program stream.

Hello Oxygine Framework

Intro

Free, Open Source and Cross-Platform

Oxygine is completely free and open source (MIT license) 2D game engine, available on BitBucket. It is written in C++ and runs on MacOSX, iOS, Android, Windows and Linux.

Sample About Sort

Binary Sort

void BinSort(int x[ ], int n)
{
    int i, j;

    if (n > MAX_DATA) {
        printf("データが多すぎます!\n");
        return;
    }
    else {
        for (i = 0; i < MAX_DATA; i++)
            Bin[i] = 0;             /* 作業用配列の初期化 */

        for (i = 0; i < n; i++)     /* x[i] の値の */
            Bin[x[i]]++;            /* Bin[ ] の要素の値を */
                                    /* インクリメント */
        j = 0;                      /* x[ ] の添字として使用 */
        for (i = 0; i < MAX_DATA ; i++)
            if (Bin[i])             /* 0でなければ */
            x[j++] = i;             /* 書き戻す */
    }
}

Buble Sort

int BubSort(int x[ ], int n)
{
    int i, j, temp;

    for (i = 0; i < n - 1; i++) {
        for (j = n - 1; j > i; j--) {
            if (x[j - 1] > x[j]) {  /* 前の要素の方が大きかったら */
                temp = x[j];        /* 交換する */
                x[j] = x[j - 1];
                x[j - 1]= temp;
            }
        }
        /* ソートの途中経過を表示 */
        ShowData(x, NUM_DATA);
    }
}

Heap Sort

void Hpsort(int a[ ], int n)
{
    int leaf, root;

    leaf = n;                   /* 初期値は末尾の要素 */
    root = n/2;                 /* 初期値はその親 */

    while (root > 0 ) {         /* 半順序木を構成 */
        DownHeap(a, leaf, root);
        root--;
    }

    while(leaf > 0) {
        Swap(a, 1, leaf);       /* 半順序木の根と末尾の要素を交換 */
        leaf--;                 /* 末尾の要素を半順序木から外す */
        DownHeap(a, leaf, 1);   /* 半順序木を再構成する */
    }
}

void DownHeap(int a[ ],  int leaf, int root)
{
    int i;

    i = root * 2;
    while (i <= leaf) {
        if (i < leaf && a[i + 1] > a[i])  /* a[i] と a[i + 1]  の大きい方と */
            i++;
        if (a[root] >= a[i])              /* a[root] と比較 */
            break;                        /* 子の方が大きければ */
        Swap(a, root, i);                 /* 交換 */

        root = i;                         /* 更にその子についても調べる */
        i = root * 2;
    }
}

void Swap(int a[ ], int i, int j)
{
    int temp;

    temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}

Quick Sort

void QSort(int x[ ], int left, int right)
{
    int i, j;
    int pivot;

    i = left;                      /* ソートする配列の一番小さい要素の添字 */
    j = right;                     /* ソートする配列の一番大きい要素の添字 */

    pivot = x[(left + right) / 2]; /* 基準値を配列の中央付近にとる */

    while (1) {                    /* 無限ループ */

        while (x[i] < pivot)       /* pivot より大きい値が */
            i++;                   /* 出るまで i を増加させる */

        while (pivot < x[j])       /* pivot より小さい値が */
            j--;                   /*  出るまで j を減少させる */
        if (i >= j)                /* i >= j なら */
            break;                 /* 無限ループから抜ける */

        Swap(x, i, j);             /* x[i] と x[j]を交換 */
        i++;                       /* 次のデータ */
        j--;
    }

    if (left < i - 1)              /* 基準値の左に 2 以上要素があれば */
        QSort(x, left, i - 1);     /* 左の配列を Q ソートする */
    if (j + 1 <  right)            /* 基準値の右に 2 以上要素があれば */
        QSort(x, j + 1, right);    /* 右の配列を Q ソートする */
}

void Swap(int x[ ], int i, int j)
{
    int temp;

    temp = x[i];
    x[i] = x[j];
    x[j] = temp;
}

Hello World

Tự giới thiệu

Cũng không có gì đặc biệt.

酒と泪と男と女

忘れてしまいたい事や
どうしようもない 寂しさに
包まれた時に男は
酒を飲むのでしょう
飲んで飲んで 飲まれて飲んで
飲んで飲みつぶれて 寝むるまで飲んで
やがて男は 静かに寝むるのでしょう

忘れてしまいたい事や
どうしようもない 悲しさに
包まれた時に女は
泪みせるのでしょう
泣いて泣いて 一人泣いて
泣いて泣きつかれて 寝むるまで泣いて
やがて女は 静かに寝むるのでしょう

またひとつ 女の方が偉く思えてきた
またひとつ 男のずるさが見えてきた
俺は男 泣きとおすなんて出来ないよ

今夜も酒をあおって 眠ってしまうのさ
俺は男 泪はみせられないもの
飲んで飲んで 飲まれて飲んで
飲んで飲みつぶれて 眠るまで飲んで
やがて男は静かに 眠るのでしょう