« XPathGraphがおもしろいUpdate Scanner便利だー »

第7回SE勉強会を行ないました

パーマリンク 2008/05/25 18:50:53 著者: あつ メール
カテゴリ: PHP, CakePHP, 勉強会・セミナー, HTML/JavaScript

第7回SE勉強会を行ないました

第7回SE勉強会を行ないました。

今回の宿題は難しかった。
お題はこちら。

[お題]言語:P

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


解答はこちら。
jqueryを使っています。

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>

$(function(){
// デフォルト設定
$("#cal&quot;).text('0');
saveData = 0; // 保存データ
saveAction = ''; // 保存アクション
oldAction = ''; // 一つ前ののアクション

$("input&quot;).click(function(){
oldData = $("#cal&quot;).text(); // 表示中のデータ
inputData = this.value; // 入力データ

// オーバーフロー時は初期化
if (oldData == 'E') {
oldData = 0;
saveData = 0;
saveAction = ''
oldAction = '';
}

switch (inputData) {
case 'C': // 入力データ(クリアー)
$("#cal&quot;).text('0');
saveData = 0;
saveAction = '';
oldAction = '';
break;
case '+': // 入力データ(+)
case '-': // 入力データ(-)
case '=': // 入力データ(=)
if (oldAction == '') {
switch (saveAction) {
case '+':
case '-':
$.get('cal.php?data1=' + saveData + '&data2=' + oldData + '&act=' + encodeURIComponent(saveAction), function(data) {
$("#cal&quot;).text(data);
});
break;
default:
$("#cal&quot;).text(oldData);
}
} else {
$("#cal&quot;).text(oldData);
}
saveAction = inputData;
oldAction = inputData;
break;
default: // 入力データ(0-9)
if (oldData == '0') { // 表示中のデータ(0)
$("#cal&quot;).text(inputData);
oldAction = '';
} else if (oldAction != '') { // 一つ前ののアクション
$("#cal&quot;).text(inputData);
oldAction = '';
saveData = oldData;
} else {
$("#cal&quot;).text(oldData + inputData);
}
}
});
});

</script>
</head>
<body>
<table border="1" width="250">
<tr>
<td colspan="4" style="text-align:right;" id="cal"></td>

</tr>
<tr>
<td align="center"><input type="button" value="7"></td>
<td align="center"><input type="button" value="8"></td>

<td align="center"><input type="button" value="9"></td>
<td align="center"><input type="button" value="C"></td>

</tr>
<tr>
<td align="center"><input type="button" value="4"></td>
<td align="center"><input type="button" value="5"></td>

<td align="center"><input type="button" value="6"></td>
<td align="center"><input type="button" value="+"></td>

</tr>
<tr>
<td align="center"><input type="button" value="1"></td>
<td align="center"><input type="button" value="2"></td>

<td align="center"><input type="button" value="3"></td>
<td align="center"><input type="button" value="-"></td>

</tr>
<tr>
<td align="center"><input type="button" value="0"></td>
<td align="center">&nbsp;</td>

<td align="center">&nbsp;</td>
<td align="center"><input type="button" value="="></td>
</tr>

</table>
</body>
</html>


計算の部分はAjaxでPHPに渡して処理させています。
そのPHPはこちら。

<?php
$data1 = $_GET['data1'];
$data2 = $_GET['data2'];
$act = $_GET['act'];

if ($act == '+') {
$cal = gmp_add($data1, $data2);
} elseif ($act == '-') {
$cal = gmp_sub($data1, $data2);
}
$sum = gmp_strval($cal);
if (strlen($sum) > 30) {
echo 'E';
} else {
echo $sum;
}


今回のポイントはgmp関数を使ったところ。
mickも同じやり方だったのですが、マイナス30桁の処理が何か違う・・・。
僕のやり方だと、マイナスは29桁までしかできないような・・・・。

他の人のやり方は、整数で扱える桁数で分割するやり方もありました。
それぞれのやり方が違っていておもしろかったな。

今回は初めてmickの発表がありました。
内容は「prototype.jsをかじってみる」。

その説明を受けて午後から個々で何かを作りました。

僕は以前から作りたかった『オススメの本がコロコロ変わる機能』に挑戦しました。

地域ホームページ清洲城の左側に設置しました。
プログラムはソースを直接見てください。(貼り付けるのがめんどうだったり。。。。mickごめんなさい)
PHP側は配列に入れたデータからランダムで1件取得してXMLで吐き出しています。

僕の説明は『CakePHPでやってみようOpenID入門』。
資料はSE勉強会ブログにアップしてあります。

その他にはLinuxサーバー構築入門の話がありました。
うちの会社の標準の構築方法でやったことがないので、来週にでもやってみよう♪

次回の勉強会は・・・いつだろう??

この記事へのトラックバック アドレス

トラックバックURL(右クリックでURLのコピーをしてください)

モデレーション待ちのフィードバック

この投稿にはモデレーション待ちのフィードバックが 2 件あります....

コメントを残す


頂いたメールアドレスはこのサイト上には表示されません

頂いたURLは表示されます。
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))

あつ

Facebookやってます

愛知県名古屋市在住のWEBシステム屋(SE・プログラマ)。株式会社一六社(いちろくしゃ)所属。PHP、 CakePHPを利用して日々開発中。WEBで地域活性化を目指します。好き:フットサル/GTD/Mac/ 住んだことのある場所:一宮(愛知)、豊田(愛知)、浜松(静岡)、浦添(沖縄)、中津川(岐阜)、名古屋(愛知)

検索

タグクラウド

勉強会

欲しい物リストの全て

レコメンデーションエンジン

16ブログ     powered by b2evolution free blog software