第7回SE勉強会レポート

991 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2008/05/25 18:44:59 カテゴリ: 勉強会
スポンサード リンク
第7回SE勉強会


本日の内容は以下。

  1. 宿題発表
  2. prototype.jsをかじってみる
  3. CakePHPでやってみようOpenID入門
  4. e-shop,書店案内ネットなど
  5. Linuxサーバ構築関係の話
  6. 各自で色々と・・・。


詳細は続きにて。

[続き:]

宿題

言語 : PHPかJavaScript(併用も可) / 想定コーディング時間:30分程度
☆30桁対応電卓☆
数値は整数のみでOK、ただし30桁まで対応。
加減のみでOK。乗除は不要。
インターフェースは自由ですが、「+」「-」「=」「クリア」ボタンは必須。

自分のは

  1. 計算はajaxをつかってPHPに渡している
  2. gmp関数を使って数字の計算をしている
  3. 30桁を超えるとOVERを表示(操作が無効になる)
  4. 「数字」+「数字」-「数字」・・・と続けて計算できる
  5. prototype.jsを使っている
  6. 制限時間内に出来なかった。→難しかった・・・。だらだらしすぎなものあるか。

こんな感じになりました。
HTML

<div id="computer">    
    <div id="now"></div>    
    <div id="result">0</div>    
    <input type="hidden" value="" id="first" />    
    <input type="hidden" value="" id="second" />    
    <input type="hidden" value="" id="flg" />    
    <input type="hidden" value="" id="cap" />    
    <table border="1">    
        <tr>    
            <td><input type="button" value="+" id="plus" /></td>    
            <td><input type="button" value="-" id="minus" /></td>    
            <td><input type="button" value="=" id="equal" /></td>    
        </tr>    
        <tr>    
            <td><input type="button" value="7" id="seven" /></td>    
            <td><input type="button" value="8" id="eight" /></td>    
            <td><input type="button" value="9" id="nine" /></td>    
        </tr>    
        <tr>    
            <td><input type="button" value="4" id="four" /></td>    
            <td><input type="button" value="5" id="five" /></td>    
            <td><input type="button" value="6" id="six" /></td>    
        </tr>    
        <tr>    
            <td><input type="button" value="1" id="one" /></td>    
            <td><input type="button" value="2" id="two" /></td>    
            <td><input type="button" value="3" id="three" /></td>    
        </tr>    
        <tr>    
            <td><input type="button" value="0" id="zero" /></td>    
            <td colspan="2"><input type="button" value="クリア" id="clear"></td>    
        </tr>    
    </table>    
</div>    

CSS

body,td{text-align : center;}
table{width : 100%}
#now{height : 20px}
#computer{
    margin : 0 auto;
    text-align : left;
    width : 250px
}
input{
    margin : 5px;
    padding : 5px 15px;
}
#result{
    width : 100%;
    height : 25px;
    border : 1px solid gray;
    margin : 5px 0;
    text-align : right;
}

JavaScript[prototype.js使用]

window.onload = function(){
     Clear();OncButton();
     $("clear").onclick = Clear;
     $("equal").onclick = Equal;
}
var numButton= new Array('zero','one','two','three','four','five','six','seven','eight','nine');
var opeButton = new Array('plus','minus');
function OncButton(){
    //数字ボタンが押されたときに実行
    numButton.each(function(obj) {
        Event.observe(obj, "click", AddNum, false);
    });
    //+、-
    opeButton.each(function(obj) {
        Event.observe(obj, "click", Operator, false);
    });
}
//計算する数字の追加
function AddNum(event){
    if($F("cap") != "") return;
    var numID = ($F("flg") == "") ? "first" : "second";
    if($F(numID).length >= 30) return
    if($F(numID) == "0") $F(numID) = "";
    var eID = Event.element(event);    //イベントが発生した要素取得
    $(numID).value = $F(numID)+eID.value;
    $("result").update($F(numID));
}

//+、-
function Operator(event){
    if($F("cap") != "") return; //over用
    var eID = Event.element(event);
    if($F("second") != "") Equal();
    $("flg").value = eID.value;
    $("now").update(eID.value)
}
//初期値に戻す
function Clear(){
    $("result").update("0");
    $("now").update();
    $("first").value = "";
    $("second").value = "";
    $("flg").value = "";
    $("cap").value = "";
}

//イコール
function Equal(){
   if($F("flg") == "" || $F("second") == "") return;
    var Areq= new Ajax.Request(
        './08-05-25.php',
        {
        method: 'post',
        asynchronous: true,
        postBody: $H({first:$F("first"),second:$F("second"),flg:$F("flg")}).toQueryString(),//ハッシュ文字をクエリ文字列
        onSuccess: function (request) {
           $("first").value = request.responseText;
           $("result").update(request.responseText);
           $("second").value = "";
           if(request.responseText == "over") $("cap").value = "1";
        }
    });
}

PHP

<?php    
if(!empty($_POST)){    
    if($_POST['flg'] == "+"){    
        $sum = gmp_add($_POST['first'],$_POST['second']);    
    }else{    
        $sum = gmp_sub($_POST['first'],$_POST['second']);    
    }    
    $result = gmp_strval($sum);    
    $max = gmp_cmp($result, "999999999999999999999999999999");     
    $min = gmp_cmp($result, "-999999999999999999999999999999");     
    if($max == 1 || $min == -1){    
        $result = "over";    
    }    
    echo $result;    
    exit;    
}    
?>

感想

prototype.jsをかじってみるってことで、発表しました。色々反省。
こういう機会があるのはすごく良いことだと改めて思いました。
発表することによって学べることがたくさんあると思うので、何かある人は是非やるといいとおもいますよ。

資料をアップしました。→[こちら]


「CakePHPでやってみようOpenID入門」あつさん
自分もやる機会があると思うので、参考になります。


今回は色々と社内的なことも含めて、色々とやりました。
前回でひと段落がついて、色んな意味で整理という感じでしょうか。

次回も、発表できることがあれば、発表しよう。

 →ツイッターのフォローはこちら
スポンサード リンク
         

関連記事

↑ページ上部へ

アクセスカウンター

今日 : 7 昨日 : 56

ブログ内容

主にウェブ関係のことを書いてます。たまにブレイクダンスとか他のことも書いています。

プロフィール

MICK

MICKです。

1983年1月24日生まれ。ウェブの世界にいるのは、偶然のようで必然なのかも。

好きなこと :
 挑戦すること。物事に没頭すること。勉強すること。
嫌いなこと :
 自慢話を聞くこと。人の悪口を言うこと。

運営サイト

      

カテゴリ一覧

サイト広告

オススメの書籍とか

感想

紹介

色々

最近のコメント

最新記事

注目記事

人気記事

最近の人気記事

人気の記事

関連サイト

運営サイト

色々

最近のトラックバック