Analytics

วันอังคารที่ 12 กุมภาพันธ์ พ.ศ. 2556

การใช้ ABS สร้าง Application หน้าตาสวยบน Android

ABS Action Bar Sherlock สร้างโดย Mr. Jake Wharton เป็น Library ที่มีความสามารถสูง

http://actionbarsherlock.com/index.html 

การใช้งาน ABS ทำโดย Opent New Project from Existing code เข้ามาใน WorkSpace แล้วกำหนด Propeties ใน Project แท็ป Android ใน Library แล้ว Add Library ABS เข้ามา



การใช้งานดูได้จาก Samplelist

เช่นการทำ List Naigate



วันพฤหัสบดีที่ 7 กุมภาพันธ์ พ.ศ. 2556

วันนี้ได้รับ Rasberry Pi จาก Rasberry Pi Thailand แล้ว



วันนี้ได้รับ Rasberry Pi จาก Rasberry Pi Thailand.com แล้ว รู้สึกว่าเล็กกว่าที่คิดไว้ ทำให้น่าจะใช้กับการทำ Project เกี่ยวกับการเก็บ Data ด้วยรหัสผ่าน และโครงการทำตู้กดถั่ว O-Top ได้ด้วย

วันนี้จะเขียนถึง RTB ซึ่งเป็น interpeater ภาษา BASIC บน Rasberry Pi ที่เขียนด้วยภาษา C
เข้าที่ Rasberry Pi Raspbian

cd \tmp
wget http://project-download.dragon.net/rtb/setup-rpi
cdmod +x setup-rpi
./setup-rpi


เสร็จแล้วกด
rtb

thanks drogon.net 

วันจันทร์ที่ 4 กุมภาพันธ์ พ.ศ. 2556

php Robot Crawler สำหรับเข้าไปเก็บรูปในเว็ปอื่น



ตัว robot ที่สร้างขึ้นเพื่อเก็บข้อมูลในเว็ปอื่น เป็นโครงสร้างพื้นฐานของ App EasyBuy ในลักษณะเดียวกับของ FlipBoard โดย code ตั้งต้นมีดังนี้


เทคนิคง่ายๆในการทำให้ code รันเร็วขึ้น


ก็จะทำให้ไม่เรียก function addurl มาใช้ 2 ครั้ง 2 ครา


การทำ Application บน Android ตอนที่ 6


เรียก cd android-sdks\tools เพื่อใช้ zipalign จัดการ pack APK ให้อยู่ในรูปแบบที่พร้อมจะวางตลาด โดยใช้คำสั่ง zipalign -v 4 C:\Users\SuPhot\Desktop\Tux\newcarprice.apk C:\Users\SuPhot\Desktop\Tux\newcaprice1.apk ผลที่ได้ค newcarprice1.apk จะเป็นไฟล์ที่จะใช้วางตลาด
ที่ถูกแล้วในขั้นตอนจากตอนที่ 5 ที่จะ export signed apkควร ตั้งชื่ไฟล์เป็น newcarprice_nonalign.apk แล้วค่อยมาเปลี่ยนเป็น newcarprice.apk ในขั้นตอนนี้ก็จะได้มาตราฐานกว่า 










หน้าตาใน De
veloper Console ใช้งานง่ายคงไม่ต้องอธิบายแล้ว



ข้
อสังเกตในการทำ Application บน Android
***ตั้งชื่อ Project ให้เรียบร้อยก่อน
เพราะเวลาไปแก้ทีหลังจะทำได้ยากมาก

้าจะแก้ชื่อาจต้องเริ่มทำกันใหม่เลยจะง่ายกว่า


วันอาทิตย์ที่ 3 กุมภาพันธ์ พ.ศ. 2556

การทำ Application บน Android ตอินที่ 5


คลิกขวาที่ชื่อ Project เลือก Android Tools เลือก Export Signed Application Package... 



สร้าง Keystore โดยเลื
อิก Create new keystore ก็ให้ใช้ตำแหน่งที่จะเก็บ APK ขอิงเรา กำหนด Password ให้กับ Keystore แล้วกด Next >






ใส่รายละเอียดขอิงผู้สร้าง กำหนดปีที่อินุญาตปกติก็ 30ปี 



กำหนดที่ตั้ง APK ที่จะ Export เป็นอิันเสร็จพิธี เราจะได้ File APK ที่จะทำไปใช้ขึ้น store แต่ยังเหลือิอีกนิดนึงรอิอิ่านตอนที่ 6 ก่อน


โครงการ 2 เปิดแล้ว กำลังทำงาน อิย่างหนัก

วันเสาร์ที่ 2 กุมภาพันธ์ พ.ศ. 2556

การทำ Application บน Android ตอนที่ 4

ก๊อปพวกไฟล์ cordova ที่อยู่ใน PhoneGap 2.3.0 example มาใส่ตามโครงของ path เดิมของเค้า


แล้วใส่บรรทัดนี้ลงไปใน AndroidManifest.xml

    <uses-permission android:name="android.permission.INTERNET" />

อันนี้เพื่ออนุญาตให้มีการโหลดเว็ปภายนอกเข้ามาใน App

โครง Array ที่ได้จากการ login JQuery ผ่านทาง FaceBook


All your personal information such as (name, email) may be stored in database during this demo, will be automatically removed every sunday.
Ajax Response :
Hi Supot Sawangpiriyakij (100001529011703)!
Now that you are logged in using ajax Facebook connect, you can [Log Out].
the information can be stored in database
Array
(
    [id] => 100001529011703
    [name] => Supot Sawangpiriyakij
    [first_name] => Supot
    [last_name] => Sawangpiriyakij
    [link] => http://www.facebook.com/supot.sawangpiriyakij
    [username] => supot.sawangpiriyakij
    [hometown] => Array
        (
            [id] => 110585945628334
            [name] => Bangkok, Thailand
        )

    [education] => Array
        (
            [0] => Array
                (
                    [school] => Array
                        (
                            [id] => 120143931336587
                            [name] => โรงเรียนวัดบวรนิเวศ (Wat Bowonniwet School)
                        )

                    [type] => High School
                )

            [1] => Array
                (
                    [school] => Array
                        (
                            [id] => 338121759548446
                            [name] => สุโขทัยธรรมาธิราช
                        )

                    [concentration] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 200436220002991
                                    [name] => พัฒนาการเด็กและการเลี้ยงดู
                                )

                            [1] => Array
                                (
                                    [id] => 196847660345337
                                    [name] => คณะบริหารธุรกิจ เอกการบัญชี
                                )

                        )

                    [type] => College
                )

        )

    [gender] => male
    [email] => supotmails@yahoo.com
    [timezone] => 7
    [locale] => th_TH
    [verified] => 1
    [updated_time] => 2012-12-02T13:47:12+0000
)

เจาะ code ของ FaceBook ตอนที่ 1

เจ้า Facebook ที่เราใช้กันอยู่ทุกวันนี้ถ้าสังเกต กว่าจะ load หน้ามันเข้ามาจะใช้เวลาหน่วงพอสมควร เราลองเจาะเข้าไปดู source code ของ FB ดูซิว่า หน้าตามันเป็นอย่างไร

ส่วนแรกเราจะเจอ stylesheet 4 ชุด
    <link rel="stylesheet" href="http://static.ak.fbcdn.net/rsrc.php/v2/yV/r/YAgO_lPbwSR.css" />
    <link rel="stylesheet" href="http://static.ak.fbcdn.net/rsrc.php/v2/yG/r/gITZRzEd4mG.css" />
    <link rel="stylesheet" href="http://static.ak.fbcdn.net/rsrc.php/v2/yP/r/rfa2eSxPHQ1.css" />
    <link rel="stylesheet" href="http://static.ak.fbcdn.net/rsrc.php/v2/yG/r/3gZ1uDednbZ.css" />

ต่อมา จะเจอ script ตัวแรก
<script src="http://static.ak.fbcdn.net/rsrc.php/v2/yy/r/Ze_5aUqe0W3.js"></script>
จะเห็นว่าเรียกมาจากไซด์ที่ชื่อว่า fbcdn.net เราก็ลองโหล JavaScript ตัวนี้มดู

จะยกเฉพาะบรรทัดที่ 20 มาให้ดูเป็นตัวอย่างนะ


(function(a){if(a.require)return;var b=Object.prototype.toString,c={},d={},e={},f=0,g=1,h=2,i=Object.prototype.hasOwnProperty;function j(s){if(a.ErrorUtils&&!a.ErrorUtils.inGuard())return ErrorUtils.applyWithGuard(j,this,arguments);var t=c[s],u,v,w;if(!c[s]){w='Requiring unknown module "'+s+'"';throw new Error(w);}if(t.hasError)throw new Error('Requiring module "'+s+'" which threw an exception');if(t.waiting){w='Requiring module "'+s+'" with unresolved dependencies';throw new Error(w);}if(!t.exports){var x=t.exports={},y=t.factory;if(typeof y==='string'){var z='('+y+')';y=eval.apply(a,[z]);}if(b.call(y)==='[object Function]'){var aa=[],ba=t.dependencies,ca=ba.length,da;if(t.special&h)ca=Math.min(ca,y.length);try{for(v=0;v<ca;v++){u=ba[v];aa.push(u==='module'?t:(u==='exports'?x:j(u)));}da=y.apply(t.context||a,aa);}catch(ea){t.hasError=true;throw ea;}if(da)t.exports=da;}else t.exports=y;}if(t.refcount--===1)delete c[s];return t.exports;}function k(s,t,u,v,w,x){if(t===undefined){t=[];u=s;s=m();}else if(u===undefined){u=t;if(b.call(s)==='[object Array]'){t=s;s=m();}else t=[];}var y=c[s];if(y){if(x)y.refcount+=x;return;}else if(!t&&!u&&x){e[s]=(e[s]||0)+x;return;}else{y={id:s};y.refcount=(e[s]||0)+(x||0);delete e[s];}y.factory=u;y.dependencies=t;y.context=w;y.special=v;y.waitingMap={};y.waiting=0;y.hasError=false;c[s]=y;o(s);}function l(s,t,u){k(s,t,undefined,g,u,1);}function m(){return '__mod__'+f++;}function n(s,t){if(!s.waitingMap[t]&&s.id!==t){s.waiting++;s.waitingMap[t]=1;d[t]||(d[t]={});d[t][s.id]=1;}}function o(s){var t=[],u=c[s],v,w,x;for(w=0;w<u.dependencies.length;w++){v=u.dependencies[w];if(!c[v]){n(u,v);}else if(c[v].waiting)for(x in c[v].waitingMap)if(c[v].waitingMap[x])n(u,x);}if(u.waiting===0&&u.special&g)t.push(s);if(d[s]){var y=d[s],z;d[s]=undefined;for(v in y){z=c[v];for(x in u.waitingMap)if(u.waitingMap[x])n(z,x);if(z.waitingMap[s]){z.waitingMap[s]=undefined;z.waiting--;}if(z.waiting===0&&z.special&g)t.push(v);}}for(w=0;w<t.length;w++)j(t[w]);}function p(s,t){c[s]={id:s};c[s].exports=t;}p('module',0);p('exports',0);p('define',k);p('global',a);p('require',j);p('requireDynamic',j);p('requireLazy',l);k.amd={};a.define=k;a.require=j;a.requireDynamic=j;a.requireLazy=l;j.__debug={modules:c,deps:d};var q=false,r=function(s,t,u,v){k(s,t,u,v||h);};a.__d=function(s,t,u,v){t=['global','require','requireDynamic','requireLazy','module','exports'].concat(t);r(s,t,u,v);};a.__e=a.__d;})(this);                      


จะเห็นว่าวิธีให้ค่าตัวแปรเป็น a ถึง z และ aa ถึง zz เพื่อลดความยาวโค๊ดให้ได้มากที่สุด ก็จะหมายถึงอ่านแกะโค๊ดได้ยากที่สุดไปด้วย


วันนี้เอาแค่นี้ก่อนเน้อ

การทำ Application บน Android ตอนที่ 3

ต่อจากตอนที่สองนะ ควรจะเตรียมรูป icon ให้เรียบร้อยก่อนจะเริ่มทำ App นะ แล้วก็ใส่ในขั้นตอนนี้เลย เลือก Activity แบบ FullScreen ดังนี้



วิธีทำข้าวหน้าปลาไหลย่างซีอิ๊วจากปลาแซลมอน

ลองซื้อผงทำไก่เทอริยากิของ แม็กกี้ มา แต่ที่บ้านไม่มีไก่ เลยเอาปลาแซลมอนมาลองทำดูนะ ก็หั่นปลาแซลมอนเป็นชิ้น ชิ้นเท่ากับไก่ แล้วใส่ลงไปในถุงที่เค้าเตรียมมาไว้ให้ (แถมมาในซอง) เชย่าผงซอสกับชิ้นปลา แล้วทอดด้วยน้ามันมะกอก จริงๆแล้วต้องนึ่งในหม้อหุงข้าวพร้อมกับข้าว แต่เราหุงข้าวเสร็จแล้วเลยเอามาผัดแทน



ผลงานออกมาเป็นชิ้นปลาดำๆ แต่ว่าอร่อยมาก รสชาตเหมือนข้าวหน้าปลาไหลญี่ปุ่น ต้องลองนะ ของเค้าดีจริงๆ แม็กกี้ ผงไก่เทอริยากิ (ถ้านำไปนึ่งคงจะไม่ดำออกสวย)


วันศุกร์ที่ 1 กุมภาพันธ์ พ.ศ. 2556

การแทรกโฆษณา Adsense เข้าไปใน JQuery List View

การจะแทรกโฆษณา Adsense เข้าไปใน JQuery List View โดยตรงนั้นทำไม่ได้ เนื่องจากเมื่อตัว JavaScript ของ JQuery รัน จะทำให้ code ในส่วนที่เป็น Adsense ซึ่งแปลความไม่ได้นั้นหายไป วิธีคือไปวาง script ของ Adsense ไว้ที่ส่วนท้ายของหน้าหลัง </body> เช่น

</body>
<div id="adsense" style="display:none;">
    <script type="text/javascript"><!--
    google_ad_client = "ca-pub-6739623484530657";
    /* mobile */
    google_ad_slot = "4631487563";
    google_ad_width = 234;
    google_ad_height = 60;
    //-->
    </script>
    <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
</div>
</html>

แล้ววาง
                    <li>
                    <div id="googleadgoeshere"></div>
                    <br><br><br>
                    </li>
ไว้ในตำแหน่งของ List View ที่จะแสดงโฆษณา

จากนั้นก็เขียน code นี้ไว้ตรงส่วนบนของหน้า page

    <script type="text/javascript">
      $(window).load(function(){
          $("#adsense").find("iframe").appendTo("#googleadgoeshere");
          $("#adsense").remove();
      });
    </script>

เมื่อ browser โหลดหน้า page ก็จะดึงโฆษณาของ Google ที่อยู่ในส่วนท้ายของ div ที่ตั้งไว้ไปวางในตำแหน่งที่ JQuery ควบคุมอยู่ ซึ่งการควบคุมของ JQuery นั้นมันหมดไปก่อนแล้ว ไอ้ code ที่เราวางไว้ตอนบนนั้น ต้องอยู่หลังการเรียก .js ของ JQuery เข้าใจปล่าวเนี่ย


อันนี้ต้องขอบคุณ stackoverflow.com เพราะลอกมา แต่คิดว่าอธิบายให้เข้าใจได้ง่ายกว่าด้วยภาษาไทย

http://stackoverflow.com/questions/1142861/jquery-append-google-adsense-to-div