カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

テーブルの内容を簡単置き換え【SQL】

MySQLテーブルのデータ内容をSQL文を使って簡単に書き換えることができます。

例えば、何らかのシステムの変更により、テーブルのとあるカラムの内容を
条件を付けて一括で置き換えたい、という場合に便利な方法です。

わざわざPHP等のプログラムを書いてサーバーに入れて処理…などとしなくても
SQLだけで短時間で処理できます。

例)exTableというテーブルのカラム「ex_column2」が「test」という文字列のレコードの
カラム「ex_column」にある「source」という言葉を「destination」に全て置き換えます。

UPDATE exTable SET 
ex_column = REPLACE(ex_column, 'source' , 'destination') 
WHERE ex_column2 = 'test' ;
2,473 views

カスタムフィールドを追加し、常に投稿画面に表示させる – WordPress

記事を新規投稿する際、プラグインを使用せずカスタムフィールドの入力欄をデフォルトで表示させる、という方法があったのでご紹介します。
自作のオリジナルテーマであることが前提です。

テーマのfunctions.phpに記述します。

admin_menuアクションフックでカスタムボックスを定義
(管理画面メニューの基本構造が配置された後に実行する)

add_action('admin_menu', 'add_custom_fields');

また、add_meta_boxesアクションフックでも可能なようです。
(投稿編集画面が読み込まれた際に実行する(バージョン3.0以降))

add_action('add_meta_boxes', 'add_custom_fields');

投稿画面にカスタムフィールドを表示するカスタムセクションを追加

function add_custom_fields() {
    add_meta_box('my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'post');
}

固定ページ投稿画面に追加する場合は

add_meta_box('my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'page');

add_meta_box関数について 続きを読む…»

5,033 views

VBAでWEBサーバーにHTTPリクエスト

MSXML2.XMLHTTPオブジェクトを利用してWEB上のデータを取得したり、PHP等のプログラムへデータを送信することができます。

ACCESS等で入力したデータをすぐにWEBに反映させたいとき等に便利です。

まずは宣言

Dim xmlHttp  as Object 'HTTPリクエストオブジェクト
Dim url      As String 'リクエストを送るURL
Dim strParam As String 'リクエストパラメータ
Dim strRes   As String '結果を受け取る変数

HTTPリクエスト用オブジェクトのバインド

Set xmlHttp = CreateObject("MSXML2.XMLHTTP")

・GET送信
リクエストするURLを指定

url = "http://www.example.jp/index.html"
With xmlHttp
    .Open "GET", url, False
    .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .Send
    strRes = .ResponseText
End With

続きを読む…»

55,589 views

PHPでJSON形式のデータを簡単に扱う

PHPにはJSON形式のデータを簡単に扱える関数が用意されています。
PHP5.2.0以降であればコアに含まれるので追加インストールの必要はありません。

例として会員システムで登録ユーザーの最終ログイン日とログイン回数を記録するというプログラムとします。

まずは以下のようなサンプル配列を作成します。

$VALUE["suzuki"]    = array("last_login_date" => "13-10-26", "count" => 1);
$VALUE["hashimoto"] = array("last_login_date" => "13-10-28", "count" => 5);

確認のため、出力してみます。

Array
(
    [suzuki] => Array
        (
            [last_login_date] => 13-10-26
            [count] => 1
        )

    [hashimoto] => Array
        (
            [last_login_date] => 13-10-28
            [count] => 5
        )

)

作成した配列を引数として渡し、JSONデータを作成します。

$json = json_encode($VALUE);

出力してみましょう。

{"suzuki":{"last_login_date":"13-10-26","count":1},"hashimoto":{"last_login_date":"13-10-28","count":5}}

たったこれだけでJSONデータが作成できます。

次はデータに変更を加えてみます。 続きを読む…»

9,150 views

ルート検索 最適経路

営業の仕事をしていると、複数の場所を効率よく回りたい、という要求が出てくるかと思います。
GoogleMap APIを利用すれば出発地点、到着地点、8ヶ所の経由地を指定し、効率よく回るルートを検索することができます。
所謂巡回セールスマン問題を踏まえた結果を返してくれます。
その際はリクエストプロパティの「optimizeWaypoints」にtrueを設定しておきます。

しかし、経由地8ヶ所以上の検索はできません。
費用が発生してよいならば、23ヶ所まで検索できるようです。
では、費用をかけずに8ヶ所以上検索したい場合はどうしたらよいでしょうか?

どうにか自前でできないかと色々調べました。
巡回セールスマン問題、組み合わせ最適化、パス表現法、ナップサック問題、欲張り法、遺伝的アルゴリズム等々。

巡回セールスマン問題、組み合わせ最適化を踏まえた最適ルートの検索で、何通りのルートを計測すればいいかと言いますと、以下の通り

n!/2n

nを10とすると(10×9×8×7×6×5×4×3×2×1)÷(2×10)で181,440通りとなります。

更にnが増加すると莫大な計算量になってしまうので、日常のプログラムとして使用するには
現実的ではありませんし、スーパーコンピューターでも100億年かかるという計算量になってしまいます。

…無理です。。。

何か打開策はないかと、物理の仕事(仕事率)も応用してみようと試みましたが、力(N)に当たるものが
ないので、比較する値としては単純な速さとなってしまうので最適な結果は得られず断念。

最終的に、遺伝的アルゴリズムを見ていると、ルートをランダムに作成するしかないのか、
という結論に至り、研究は終了しました。

というわけで、PHPとJavaScriptを使いプログラムを作成しました。

続きを読む…»

9,008 views