Translate

2016年1月13日水曜日

【mysql】最新状況を検索したいの続き

よく考えたら前回の記事では最新状況の一覧は出せたが、検索はできていなかった。

(前回)

FLOW: start -- aaa--bbb--ccc--end

select * from ( select * from log where status = "aaa" OR status = "bbb" OR status = "ccc" order by date desc) as t group by product order by date desc
//all id's recent log

ここからさらに塗装中の個別IDを拾いたいときは、こんな感じ

select * from (select * from ( select * from log order by date desc) as t group by product order by date desc) as t2 where status ="aaa"
//search where recent status is  "aaa"

2016年1月9日土曜日

【mysql】最新状況を検索したい

例えばある製品の製造工程をログにとっているとして、
テーブルは
id product status date
という項目、
開梱→組み立て→塗装→梱包→発送
というフローだとする。
このうち、組み立てから梱包までの作業上にある製品の、最新ステータスを検索したいとき

select * from ( select * from log where status = "組み立て" OR status = "塗装" OR status = "梱包" order by date desc) as t group by product order by date desc

group by で値を拾うときはテーブルの一番上の行を採用するらしいので、
ソートをかけて拾いたい最新のデータを、()内で一番上にもってきている。

2016年1月8日金曜日

【javascript】簡潔な配列の宣言

var array1 = ["contents1","contents2","contents3","contents4","contents5","contents6"];
var array2 ="contents1,contents2,contents3,contents4,contents5,contents6".split(",");

下のほうが書きやすく、要素が多くなるほど文字数を省ける

2015年12月29日火曜日

PHPの連想配列を表にしたい

$curry['肉'] = ['牛肉','鶏肉','豚肉','ひき肉'];
$curry['野菜'] = ['人参','ジャガイモ','玉ねぎ','ほうれん草','トマト'];
$curry['炭水化物'] =['お米','ナン'];

こんな連想配列を

具材種類
牛肉 鶏肉 豚肉 ひき肉
野菜人参 ジャガイモ 玉ねぎ ほうれん草 トマト
炭水化物お米 ナン
としたい

echo "<table>";
      foreach($curry as $key => $value){
         echo "<tr><td> $key </td><td>";//ここで得られる$valueは配列
         foreach ($value as $key2 => $value2) {
            echo $value2." " ;
         }
         echo "</td></tr>";
      }
echo "</table>";

2015年12月14日月曜日

XAMPP環境でPHPからmysqlにmysqldumpコマンドを打つときにはまったこと

データベースの内容をバックアップするボタンを作ろうと、こんなスクリプトを書いた。

$id = "root";
$pwd = "password";
$db = "myDB";
passthru('mysqldump '.$db.' -u '.$id.' -p'.$pwd.' >./tmp/test.sql ');

・・・が、うまく行かない。空のsqlが書き出される。
色々調べた結果、stackoverflowで同じような質問があったので解決
xamppを使用の場合、

passthru('c:\xampp\mysql\bin\mysqldump '.$db.' -u '.$id.' -p'.$pwd.' >./tmp/test.sql ');
とすればよい。ローカルのインストールしたパスを参照させないといけない。

同様に、バックアップから復帰させるときは

passthru('c:\xampp\mysql\bin\mysql '.$db.' -u"'.$id.'" -p"'.$pwd.'" <./tmp/test.sql ');
とする。

2015年3月11日水曜日

JINS花粉カット眼鏡の重さ

花粉症には辛い季節になりました。
仕事柄、眠くなるタイプの薬は飲まないようにしているのですが、
目が痒いですね。とても痒い。プログラミングどころじゃないっての。
早く世の中にまさかりダイエットが流行って、一日一本ずつ杉の木を伐採する人がでてくるといいなと思います。
いつか来るその日のための繋ぎとして、花粉症対策眼鏡を買ってみました。
花粉をカットしてくれるかどうかは、よくわかりませんが・・・
これは重い!普段使っている眼鏡よりずっと重い!
そういえば、小学生くらいの時につけていた眼鏡はこれくらいの重さだったなぁ・・・と思いながら、
試しに重さを測ってみました。
両方とも、同じ度付きの眼鏡です。



普段使いの眼鏡(owndays)

JINS 花粉CUTパーフェクトフィットタイプ

大体、三倍くらい重さが違うんですねー。
花粉のカットももちろん大事なんですが、かけていて耳が痛くなるのは評価できませんなー

2015年3月1日日曜日

monaca内でのcanvas全画面処理と画像の表示方法

Monacaは一つのコードでandroidやappleのアプリを同時に作れるのがメリットですが、
端末によってディスプレイのサイズが違うのが難しいところです。
色々な端末があります・・・ 

tableタグなどでレイアウト調整すればいい場合もありますが、
今回苦戦したのがcanvasで大きな一枚絵を表示するケースです。
メインのマップを表示する際、後で色々なエフェクトを足したかったので
canvasを使う方法を選んだのですが、

まず、canvasを全画面にするのに一苦労。
こちらのページを参考にしました。

    var main = document.getElementById("main");
    mainhtml='<div id="wrapper" style="    width: 100%; height: 100%; position: fixed;">';    
    mainhtml+='<canvas id= "world" onclick="coordinate()"></canvas>';      
    mainhtml+='</div>';  
    main.innerHTML =mainhtml;


$(function () {
    sizing();
$(window).resize(function() {
sizing();
});
});

function sizing(){
$("#world").attr({height:$("#wrapper").height()});
$("#world").attr({width:$("#wrapper").width()});
}

これで、画面いっぱいに表示されました。


全画面表示成功

ところが、ipadのような端末のシミュレーターだと、縦横比が異なるため、
mapの見え方が変わってきてしまいます。

間延びした格好に 
というわけで、画像の縦横比とcanvasの縦横比を比べて、
画像のほうが横長のときはcanvas内で縮めて表示するようにしました。
(画像の表示については、他の記事を見てください。)

    if(img.width/canvaswidth> img.height/canvasheight)//横長の比率がcanvasのほうがきついとき
    {
縦を少し縮めて表示
        ctx.drawImage(img,0,0,img.width , img.height*(img.width/canvaswidth)/(img.height/canvasheight),0,0, canvaswidth, canvasheight);
 
    }
    else
    {
//通常通り表示
        ctx.drawImage(img,0,0,img.width , img.height,0,0, canvaswidth, canvasheight);
    }




うまくいきました。下の開いたスペースには、後で飾りを入れてごまかしましょう。