Zack Notes

30+ PHP Best Practices for Beginners (1)

Written by Zack Sunday, 25 July 2010 14:25

ကြၽန္ေတာ္ nettuts မွာ "30+ PHP Best Practices for Beginners" ဆိုတဲ့ article တစ္ခုကိုဖတ္လိုက္ ရတယ္။ ဒါေၾကာင့္ အားလုံး

လဲသိသြား  ရေအာင္ ျပန္လည္ေဝမ်ွ လိုက္ပါတယ္။  ၾကိဳျပီး ေျပာထားခ်င္တာ တစ္ခုက author  ေရးထားတဲ့ အတိုင္း ဘာသာျပန္ေရးရင္

ထာက္ေနလို႕ ဖတ္လို႕ အဆင္ေျပေစရန္ အနည္းငယ္ ျပင္ျပီး ေရးလိုက္ပါတယ္။

1. Befriend the PHP Manual

PHP Developer သမားတိုင္း အတြက္ အေကာင္းဆုံး reference  လုပ္ႏိုင္တဲ့ php.net က officially  လုပ္ေပးထားတဲ့ manual ပဲျဖစ္

ပါတယ္။ PHP မွာ သုံးေနတဲ့ function တိုင္းရဲ႕ manual usage ကို အဲဒီမွာ ဖတ္ႏိုင္ပါတယ္။ ဒီ manual ကိုဖတ္မယ္ ဆိုရင္ေတာ့ ေအာက္

ကေပးထားတဲ့ comment ေတြကိုလည္း ေသခ်ာ ဖတ္ၾကည့္သင့္ပါတယ္။ တစ္ခါတစ္ရံမွာ ကိုယ္ၾကဳံေနရတဲ့ ျပသနာက တျခားသူ တစ္ေယာက္

ၾကဳံျပီးသား ဆိုရင္ေအာက္က comment ေတြမွာရွိႏိုင္တယ္။ အနီးစပ္ဆုံးကေတာ့ PHP 5.3 Deprecated ျဖစ္တဲ့ functions ေတြမွာ ရွိေနတဲ့

ေအာက္က comment ေတြက အဖိုးတန္တယ္။ Download လုပ္ျပီး ဖတ္ခ်င္ရင္ေတာ့

http://php.net/download-docs.php



2. Turn on Error Reporting

ကြၽန္ေတာ္တို႔ coding ေရးေနတဲ့ development time မွာ Error Reporting ေတြကို On ျပီးေရးသင့္တယ္လို႕ သူကဆိုပါတယ္။ ဟုတ္ပါတယ္

ဒါမွ  ကိုယ္ေရးတဲ့ program ထဲမွာ  ရွိေနတဲ့ errors ေတြ၊ bugs ေတြ၊ warning ေတြကို  deployment မလုပ္ခင္ရွင္း သင့္ပါတယ္။ PHP ရဲ႕

error reporting မွာ ERROR ကိုျပမွာလား? WARNING ကိုျပမွာလား? NOTICE ကိုျပမွာလား? ဆိုျပီး အဆင့္ေတြရွိေပမယ့္

error_reporting(E_ALL);  ON ဆိုရင္ေတာ့ ရွိသမ်ွ PHP Errors ေတြအားလုံးကို  ျမင္ရမွာ ျဖစ္ပါတယ္။ Error Reporting Manual ကို

ဒီ link မွာ ဖတ္ၾကည့္ႏိုင္ပါတယ္။ ဒီ Error Reporting ေတြကို php.ini ထဲမွာလည္း config လုပ္ႏိုင္တယ္ဗ်။ ကြၽန္ေတာ္ကေတာ့ php.ini

ထဲမွာပဲ လုပ္ေလ့ရွိပါတယ္။ အေရးၾကီးတာက production မွာ live သြားေတာ့မယ္ ဆိုရင္ေတာ့ ဒီ Error Reporting ေတြကို OFF ျပန္လုပ္

ပးဖို႔ ေတာ့လိုပါတယ္။

3. Try an IDE

Author က IDE တစ္ခုခုနဲ႔ ေရးသင့္တယ္လို႕ ေျပာေသာ္လည္း စစခ်င္းမွာ IDE သုံးျပီးေရးမယ္ဆိုရင္ function name မွတ္စရာ မလိုေတာ့ပဲ

အပ်င္းၾကီးသြားႏိုင္ တယ္လို႕ ကြၽန္ေတာ္ ျမင္ပါတယ္။ IDE ေတြကေတာ့ syntax highlighting, code completion, error warnings,

re-factoring (reworking) features ေတြရလို႕ coding ေရးရတာ ပိုျပီးလြယ္ကူ ျမန္ဆန္ပါတယ္။ နာမည္ၾကီး IDE ေတြရဲ႕ Feature ေတြကို

ဒီ link မွာ ဆက္ဖတ္ႏိုင္ပါတယ္။ ကြၽန္ေတာ္ အၾကံျပဳခ်င္တာ ကေတာ့ Advanced Text Editor ေတြကိုလည္း သုံးၾကည့္သင့္ပါတယ္။

 

4. Try a PHP Framework

PHP Framework ေတြကိုသုံးမယ္ ဆိုရင္ေတာ့ ျမန္ျမန္ဆန္ဆန္နဲ႔ application တစ္ခုကို လုပ္ႏိုင္ပါတယ္။ နာမည္ၾကီး PHP Framework

ေတြကေတာ့ Codeigniter, CakePHP, Symfony, Zend ျဖစ္ျပီး ကိုယ္နဲ႔သင့္ေတာ္မယ္ ထင္တာကို ေရြးခ်ယ္သုံးႏိုင္ပါတယ္။ ဒီ link မွာ

ၾကည့္မယ္ ဆိုရင္ေတာ့ PHP Framework ေတြရဲ႕ List ေတြကို ျမင္ရပါမယ္။ Beginner ေတြအေနနဲ႔ ကေတာ့ Framework ေပၚမွာ မေရး

သင့္ေသးဘူးလို႕ ထင္ပါတယ္။ Framework ေတြကိုစျပီး လုပ္ခ်င္သူေတြကို ကြၽန္ေတာ္ အၾကံျပဳခ်င္တာကေတာ့ Codeigniter ဟာစရတာ

လြယ္ပါလိမ့္မယ္။

5. Learn the DRY Approach

DRY ဆိုတာကေတာ့ Don’t Repeat Yourself ပဲျဖစ္ပါတယ္။ ကြၽန္ေတာ္လည္း ဒီအေခၚအေဝၚကို ဒီ article ကိုဖတ္လိုက္ေတာ့မွ သိသြား

တာျဖစ္ပါတယ္။ PHP မွ မဟုတ္ပဲ တျခားဘယ္ Programming Languages မွာ မဆို code ေတြဟာ DRY Approach ျဖစ္ဖို႔၊ redundant

code ေတြမျဖစ္ဖို႔ကို ေရွာင္ၾကဥ္ေသာက္သင့္ပါတယ္။ DRY Approach ကိုေတာ့ ဒီမွာ ဆက္ဖတ္ၾကည့္ႏိုင္ပါတယ္။

http://en.wikipedia.org/wiki/Don't_repeat_yourself
http://www.artima.com/intv/dry.html


6. Indent Code and Use White Space for Readability

ဟုတ္ပါတယ္ coding ေရးတဲ့အခါ ညီညာတဲ့ Indent ေတြ၊ White Space ေတြနဲ႔ဆိုရင္ေတာ့ ေနာက္ပိုင္း ျပန္ျပီး maintain လုပ္ရတာလဲ

အဆင္ေျပရပါတယ္။တကယ္လို႕ IDE ေတြသုံးမယ္ ဆိုရင္ေတာ့ alignment ေတြ auto adjust လုပ္ေပးတဲ့ အတြက္ ေရးရတာ ပိုေကာင္း

ပါတယ္။ Author ကေတာ့ Indent Code and Use White Space မရွိတဲ့ Coding ေတြကို Jackson Pollock painting နဲ႔ ခိုင္းႏႈိင္းကာ

ေျပာသြားပါတယ္။ Jackson Pollock paintingဆိုတာကို ဗဟုသုတ အေနနဲ႔ ၾကည့္လို႕ရေအာင္ ေအာက္မွာ ထည့္ေပးထားပါတယ္။


7. “Tier” your Code

Coding ထဲမွာ HTML ဆိုရင္ HTML သက္သက္၊ JS ဆိုရင္ JS သက္သက္၊ PHP Code ဆိုရင္ PHP Code သက္သက္ Tier ေတြခြဲထား

သင့္ပါတယ္။ Tier ေတြဘယ္လို႕ခြဲထုတ္လဲ ဆိုတာကို ဒီမွာ ဖတ္ၾကည့္ႏိုင္ပါတယ္။ ကြၽန္ေတာ္လည္း အဲဒီ article ကိုျပန္ေရးဖို႔ အစီအစဥ္

ရွိပါတယ္။

8. Always Use <?php ?>

PHP မွာ

<?  echo "Hello world";  ?>
<?="Hello world"; ?>



စသည္ျဖင့္ ႐ိုက္ႏိုင္ေပမယ့္ author ကေတာ့ အျမဲတမ္း <?php ?> ထည့္ေပး သင့္တယ္လို႕ ဆိုပါတယ္။ ကြၽန္ေတာ္ အေတြ႔အၾကဳံအရ

short tag ေတြကို on ထားမွ အေပၚမွာျပထားတဲ့ code ေတြက အလုပ္လုပ္မွာ ျဖစ္ပါတယ္။ ဒီမွာေတာ့ short open tag အေၾကာင္းေရး

ထားတာ ရွိပါတယ္။ <?php ?> လို႕ေရးရင္ေတာ့ open tag ဘာပဲျဖစ္ေနျဖစ္ေန အလုပ္လုပ္မွာ ျဖစ္တာေၾကာင့္ author က standard 

အေနနဲ႔ ေျပာတာ ျဖစ္ပါလိမ့္မယ္။

9. Use Meaningful, Consistent Naming Conventions

Variable name, Class Name, function name, object name ေတြကို အမည္ေပးတဲ့ အခါ အဓိပၸါယ္ရွိေသာ name ေတြကိုသာ ေပးသင့္

ပါတယ္။ ဒါမွကိုယ့္ code ကိုကိုယ္ပဲ ျပန္ဖတ္ဖတ္ သူမ်ားပဲလာဖတ္ဖတ္ အလြယ္တကူ နားလည္ႏိုင္မွာ ျဖစ္ပါတယ္။

10. Comment, Comment, Comment

ကိုယ့္ code ကိုေနာက္တခ်ိန္ ကိုယ့္ဟာကိုယ္ပဲ ျပန္ဖတ္ဖတ္၊ သူမ်ားက ဆက္ျပီး maintain လုပ္ဖို႔ ဖတ္ဖတ္ indent ေတြ၊ white space ေတြ

အျပင္အေရးၾကီးတဲ့ ေနရာေတြမွာ comment ေတြရွိေနမယ္ဆိုရင္ အရမ္းကိုေကာင္ပါတယ္။ ဒါေၾကာင့္ စနစ္တက် comment ေပးတတ္တဲ့

အက်င့္ေလးကို လုပ္သင့္ပါတယ္။ ဘယ္ programming languages မွာမဆို စနစ္တက် သန္႔သန္႔ ရွင္းရွင္း ေရးတတ္တာ အလြန္ေကာင္းမြန္တဲ့

အက်င့္ပဲ ျဖစ္ပါတယ္။ကြၽန္ေတာ္လည္း ပ်င္းလာရင္ ျဖစ္ေစ၊ dead line အရမ္နီးလာရင္ ျဖစ္ေစ code ေတြကို dirty ျဖစ္ေအာင္ေရးတက္တဲ့

အက်င့္ကို ျပင္ဖို႔ ဒီ article ကိုေရးရင္ သတိဝင္လာပါတယ္။  စုစုေပါင္း ၃၂ ခ်က္ရွိေပမယ့္ ဒီ post မွာေတာ့ ဒီေလာက္နဲ႔ပဲ ခဏရပ္ခ်င္ပါတယ္။ 



 

Google Chart API Part - 3 (or) Events on Interactive Charts

Written by Zack Thursday, 22 July 2010 00:03

ဒီ Post ကိုဖတ္မယ္ ဆိုရင္ေတာ့ ျပီးခဲ့တဲ့ ဒီ post ႏွစ္ခုကို ျပန္ဖတ္ဖို႔ လိုပါတယ္။

  1. Google Chart API Part -1
  2. Google Chart API Part -2 (or) Interactive Charts

ဒါမွ အဆက္အစပ္ေလး ရွိသြားျပီး ပိုျပီး သေဘာေပါက္သြား မွာျဖစ္ပါတယ္။ ဒီ Post မွာ အဓိက ေျပာခ်င္တာကေတာ့ user event ေတြကို

ဘယ္လိုထည့္ မလဲ ဆိုတာျဖစ္လို႕ အဲဒီေနရာေလးေတြကိုပဲ အဓိကထား ေရးပါမယ္။ တကယ္လို႕ တစ္ခုခု မသိတာ ရွိရင္ေတာ့ ေရွ႕က post

ႏွစ္ခုကို ျပန္ဖတ္လိုက္ပါ။ အရင္ post ေတြမွာတုန္းက လုပ္ထားတဲ့ charts ေတြကို event ေတြဘယ္လို ေပါင္းထည့္မလဲ ဆိုေလးၾကည့္ ရေအာင္။

ဒီပုံကေတာ့ ျပီးခဲ့တဲ့ example က event မပါေသးတဲ့ column chart ေလးေပါ့။

First Chart
mouseover event ကိုေပါင္းထည့္မယ္ ဆိုရင္ေတာ့ ဒီ code ေလးကို အရင္ထည့္ ေပးရမယ္။

google.visualization.events.addListener(chart, 'onmouseover', showDetails);


parameters ေတြကိုၾကည့္မယ္ ဆိုရင္

chart က chart object name ကိုဆိုလိုျပီး 'onmouseover' ကေတာ့ event trigger အတြက္ပါ။ ေနာက္ဆုံး showDetails ကေတာ့

mouseover လုပ္တဲ့ အခါ run မယ့္ function ပဲျဖစ္ပါတယ္။

mouse over ျပီးရင္ေတာ့ mouse out ေလးလဲလိုေသးတာေပါ့။ ဒီလိုေလး ေရးလိုက္ရင္ ရပါျပီ။

google.visualization.events.addListener(chart, 'onmouseout', hideDetails);


အိုေက ... ဒါဆိုရင္ ကြၽန္ေတာ္တို႔ showDetails နဲ႔ hideDetails ကိုဆတ္ေရးလိုက္မယ္။

function showDetails(e) {
        switch (e['row']) {
            case 0: document.getElementById('details0').style.visibility='visible';
                break;
            case 1: document.getElementById('details1').style.visibility='visible';
                break;
            case 2: document.getElementById('details2').style.visibility='visible';
                break;
            case 3: document.getElementById('details3').style.visibility='visible';
                break;
        }
    }

    function hideDetails(e) {
        switch (e['row']) {
            case 0: document.getElementById('details0').style.visibility='hidden';
                break;
            case 1: document.getElementById('details1').style.visibility='hidden';
                break;
            case 2: document.getElementById('details2').style.visibility='hidden';
                break;
            case 3: document.getElementById('details3').style.visibility='hidden';
                break;
        }
    }

CSS ရဲ႕ style.visibility ကို ကစားသြားတာပဲ ျဖစ္ပါတယ္။ အဲဒါ ျပီးရင္ေတာ့ <body></body> ႏွစ္ခုၾကားမွာ ဒီ div ေလးေတြကို

ထည့္ေပးဖို႔ လိုပါတယ္။  ဒါမွ showDetails နဲ႔ hideDetails က style.visibility ကို ကစားတဲ့ အခါ အလုပ္လုပ္မွာ ျဖစ္ပါတယ္။
   

<body>

        <!--Div for our chart -->
        <div id="chart"></div>

        <!--Divs for our messages -->
        <div id="details0">These are the details for Q1...</div>
        <div id="details1">Here you have the numbers for Q2...</div>
        <div id="details2">Explanations for the third quarter...</div>
        <div id="details3">Q4 was as expected...</div>

    </body>


ဒီေနရာမွာ တစ္ခုသတိထား ရမွာက div ရဲ႕ id ေတြနဲ႔ showDetails နဲ႔ hideDetails ထဲက getElementById မွာ ေခၚထားတဲ့ id ေတြတူဖို႔

လိုပါတယ္။ ဒီ code ကို copy ကူးျပီး စမ္းခ်င္တယ္ ဆိုရင္ေတာ့

<html>
    <head>
        <title>Google Chart Tools Tutorial</title>

        <style type="text/css">

            #details0, #details1, #details2, #details3 {
                visibility:hidden;
                background: #FFFF7F;
                border: solid 1px;
                width: 350px;
                padding: 5px;
                font-size:smaller;
                position:absolute;
                top: 250px;

            }

        </style>

        <!-- load Google AJAX API -->
        <script type="text/javascript" src="http://www.google.com/jsapi"></script>
        <script type="text/javascript">
            //load thee Google Visualization API and the chart
            google.load('visualization', '1', {'packages': ['columnchart']});

            //set callback
            google.setOnLoadCallback (createChart);

            //callback function
            function createChart() {

                //create data table object
                var dataTable = new google.visualization.DataTable();

                //define columns
                dataTable.addColumn('string','Quarters 2009');
                dataTable.addColumn('number', 'Earnings');

                //define rows of data
                dataTable.addRows([['Q1',308], ['Q2',257],['Q3',375],['Q4', 123]]);

                //instantiate our chart objects
                var chart = new google.visualization.ColumnChart (document.getElementById('chart'));

                //define options for visualization
                var options = {width: 400, height: 240, is3D: true, title: 'Company Earnings'};

                //draw our chart
                chart.draw(dataTable, options);

                //register callbacks
                google.visualization.events.addListener(chart, 'onmouseover', showDetails);
                google.visualization.events.addListener(chart, 'onmouseout', hideDetails);
            }

            function showDetails(e) {
                switch (e['row']) {
                    case 0: document.getElementById('details0').style.visibility='visible';
                        break;
                    case 1: document.getElementById('details1').style.visibility='visible';
                        break;
                    case 2: document.getElementById('details2').style.visibility='visible';
                        break;
                    case 3: document.getElementById('details3').style.visibility='visible';
                        break;
                }
            }

            function hideDetails(e) {
                switch (e['row']) {
                    case 0: document.getElementById('details0').style.visibility='hidden';
                        break;
                    case 1: document.getElementById('details1').style.visibility='hidden';
                        break;
                    case 2: document.getElementById('details2').style.visibility='hidden';
                        break;
                    case 3: document.getElementById('details3').style.visibility='hidden';
                        break;
                }
            }

        </script>
    </head>

    <body>

        <!--Div for our chart -->
        <div id="chart"></div>

        <!--Divs for our messages -->
        <div id="details0">These are the details for Q1...</div>
        <div id="details1">Here you have the numbers for Q2...</div>
        <div id="details2">Explanations for the third quarter...</div>
        <div id="details3">Q4 was as expected...</div>

    </body>

</html>


ဒါကေတာ့ ျမင္ရမယ့္ ပုံပါ။

Event Example
ဒီ link မွာလည္း စမ္းၾကည့္ ႏိုင္သလို အရင္ event trigger မထည့္ခင္က chart ကိုလည္း ဒီမွာ ျပန္ၾကည့္ႏိုင္ပါတယ္။

တကယ္လို႕ Charts API ကိုစိတ္ဝင္စားလို႕ ေဆာ့ၾကည့္ခ်င္ သူမ်ား Google Code Playground မွာ ဝင္ေၾကးေပးစရာ မလိုပဲ ကစား

ၾကည့္ႏိုင္ပါေၾကာင္း ေျပာရင္ ကြၽန္ေတာ့္ Google Charts API ကေတာ့ နိဂုံးခ်ဳပ္ သြားပါျပီ။  

Ref: http://net.tutsplus.com/tutorials/other/easy-graphs-with-google-chart-tools/

 

Google Chart API Part -2 (or) Interactive Charts

Written by Zack Wednesday, 21 July 2010 15:16

Interactive Charts

Google Visualization API ကိုသုံးျပီး Interactive Charts ေတြကိုဖန္တီး ႏိုင္ပါတယ္။ ျပီးခဲ့တဲ့ post ကေရးခဲ့တဲ့ static chart လိုေတာ့

URL ကေန run တာမ်ိဳးမဟုတ္ပဲ JavaScript Library သုံးျပီး charts ေတြကို  ဖန္းတီးတာမ်ိဳး ျဖစ္ပါတယ္။  ဒီ link မွာေတာ့ ရွိျပီးသား

ယူသုံးႏိုင္တဲ့ ready made visualizations graphs  ေတြေတြကို   ၾကည့္ႏိုင္ပါတယ္။   ကိုယ္ဟာကို လုပ္ခ်င္တယ္ဆိုလဲ လုပ္ႏိုင္ေပမယ့္

သူရွိျပီးသား graphs ေတြေတာင္ ေတာ္ေတာ္စုံ ေနတာကို ေတြ႔ရတယ္။ example ေလးကို ဆက္ၾကည့္ လိုက္ရေအာင္

 

Formatting the Data

ဒီအဆင့္ကေတာ့ chart   တစ္ခု ဖန္တီးဖို႔ရာ data ေတြကို   analysis လုပ္တယ္လို႕ ေျပာႏိုင္ပါတယ္။  အရင္ဆုံး row and column

သေဘာေလးကို နားလည္ထားဖို့ လိုပါတယ္။

Row value ေတြကေတာ့ zero ကေန အျမဲတမ္း number value ေတြပဲ ျဖစ္ရပါမယ္။ Column values ေတြကေတာ့  zero လဲျဖစ္ႏိုင္

သလို တျခား optional ID ေတြလဲ ျဖစ္ႏိုင္ပါတယ္။ ဒီ example မွာေတာ့  company ရဲ႕ 2009 earnings ေတြကို chart ဆြဲထားတာပဲ

ျဖစ္ပါတယ္။ ဒါေၾကာင့္ အရင္ဆုံး data analysis လုပ္ၾကည့္မယ္ ဆိုရင္ေတာ့ ဒီလို ရပါလိမ့္မယ္။

Quarters 2009 Earnings
Q1 308
Q2 257
Q3 375
Q4 123

Code ေရးမယ္ ဆိုရင္ေတာ့ ဒီလိုျဖစ္ သြားပါမယ္။

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
        <title>Google Charts Tutorial</title> 
 
        <!-- load Google AJAX API --> 
        <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
        <script type="text/javascript"> 
            //load the Google Visualization API and the chart 
            google.load('visualization', '1', {'packages': ['columnchart']}); 
 
            //set callback 
            google.setOnLoadCallback (createChart); 
 
            //callback function 
            function createChart() { 
 
                //create data table object 
                var dataTable = new google.visualization.DataTable(); 
 
                //define columns 
                dataTable.addColumn('string','Quarters 2009'); 
                dataTable.addColumn('number', 'Earnings'); 
 
                //define rows of data 
                dataTable.addRows([['Q1',308], ['Q2',257],['Q3',375],['Q4', 123]]); 
 
                //instantiate our chart object 
                var chart = new google.visualization.ColumnChart (document.getElementById('chart')); 
 
                //define options for visualization 
                var options = {width: 400, height: 240, is3D: true, title: 'Company Earnings'}; 
 
                //draw our chart 
                chart.draw(dataTable, options); 
 
            } 
        </script> 
 
    </head> 
 
    <body> 
 
        <!--Div for our chart --> 
        <div id="chart"></div> 
 
    </body> 
</html>


<script type="text/javascript" src="http://www.google.com/jsapi"></script>


Chart API ကို ေခၚတယ္ ဆိုတာ အားလုံး သိပါတယ္။

google.load('visualization', '1', {'packages': ['columnchart']});


AJAX API ကေန google.load ကိုသုံးျပီး chart ျဖစ္လာဖို႔ loading လုပ္ပါတယ္။ parameters ေတြကို ၾကည့္မယ္ ဆိုရင္ေတာ့

1: Version of the API ျဖစ္ပါတယ္။

packages array: ဘယ္ chart type ကိုသုံးမယ္ဆိုတာကို ေျပာတာျဖစ္ပါတယ္။


google.setOnLoadCallback(createChart);


setOnLoadCallback ကေန createChart ဆိုတဲ့ Function ကို ေခၚလိုက္တာ ျဖစ္လို႕ createChart ကို create လုပ္ဖို႔ လိုလာပါတယ္။

var dataTable = new google.visualization.DataTable();


chart ဆြဲဖို႔ dataTable object တစ္ခု ရျပီဗ်ာ။

//define columns 
dataTable.addColumn('string','Quarters 2009'); 
dataTable.addColumn('number', 'Earnings');



Data type ေျပာျပီး column ေတြကို define လုပ္ပါတယ္။

//define rows of data  
dataTable.addRows([['Q1',308], ['Q2',257],['Q3',375],['Q4', 123]]);


Row define လုပ္တယ္ ဆိုတာ သိမွာပါ။ 4 rows လုံးကို တခါထည္း ထည့္လိုက္တာ ျဖစ္ပါတယ္။ တကယ္လို႕  row တစ္ခုခ်င္း သြင္းခ်င္

ရင္ေတာ့ ဒီလိုမ်ိဳး လုပ္ႏိုင္ပါတယ္။

dataTable.addRow(['Q1',308]); 
data.setValue(0, 0, 'Q1');



var chart = new google.visualization.ColumnChart (document.getElementById('chart'));


ဒီ code အလုပ္လုပ္ဖို႔ ကေန <div id=”chart”></div> ဒီ div ရွိေနဖို႔ လိုပါတယ္။


var options = {width: 400, height: 240, is3D: true, title: 'Company Earnings'}; 
chart.draw(dataTable, options);


တျခား optional parameters ေတြကေတာ့ Chart size, 3D, Chart Title ေတြပဲျဖစ္ပါတယ္။ draw function မွာေတာ့ ဒီ value ကိုထည့္

ေပးဖို႔ လိုပါတယ္။ ဒီ script ေလးကို ကူးျပီး run လိုက္မယ္ ဆိုရင္ေတာ့ ဒီလို ပုံေလးကို ျမင္ရမွာ ျဖစ္ပါတယ္။



တကယ္လို႕ pie chart ကိုသုံးမယ္ဆိုလဲ ရပါတယ္။  

//load the Google Visualization API and the chart
google.load('visualization', '1', {'packages':['columnchart','piechart']});


ဒီလိုေလး ေျပာင္းေပးလိုက္ရင္ ရပါျပီ။ pie chart နဲ႔ေျပာင္းလိုက္မယ္ ဆိုရင္ေတာ့ ဒီလိုေလး ျဖစ္သြားပါလိမ့္မယ္။

demo link မွာ ၾကည့္ႏိုင္ပါတယ္။ ေနာက္ post မွာေတာ့ ဒီ charts ေတြကို  user event ေတြဘယ္လို ထည့္မယ္၊ ဘယ္လို trigger လုပ္မယ္

ဆိုတာေတြကို ဆက္ေရးပါတယ္။


 

Google Chart API Part -1

Written by Zack Tuesday, 20 July 2010 22:39

ဒီညေတာ့ မိုးကလည္း အဖြဲဖြဲနဲ႔ ေကာင္းေနတာေၾကာင့္ ေကာ္ဖီေလး တစ္ခြက္နဲ႔ Net Tuts+ ကိုေရာက္

ခဲ့ပါတယ္။    ဖတ္စရာေတြက   မ်ားျပားလွတာေၾကာင့္  ဘာကစဖတ္ျပီး စမ္းၾကည့္ရမွန္း မသိေအာင္ကို

ျဖစ္ရပါတယ္။ ဒီလိုနဲ႔ Google Charts API အေၾကာင္းဖတ္ကို ဖတ္လိုက္ေတာ့ လြယ္ကူျပီး ျပန္စမ္းၾကည့္

ခ်င္သူေတြ အဖို႔လည္း အလြယ္တကူ လုပ္ၾကည့္ႏိုင္တာမို႔ မ်ႇေဝလိုက္ပါတယ္။

Google Charts API ဆိုတာ

Web Page ထဲမွာ Charts ေတြကို static ျဖစ္ေစ၊ interactive ျဖစ္ေစ အလြယ္တကူထည့္ႏိုင္ေအာင္ လုပ္ေပးထားတဲ့ API တစ္ခုပဲျဖစ္ပါတယ္။

 

Static vs Interactive Charts

ဒီ Charts Tool မွာ API ႏွစ္ခုရွိပါတယ္။ အဲဒါေတြကေတာ့

* Image Charts.- Use the Google Chart API. (Static)

* Interactive Charts.- Use the Google Visualization API

Image Charts/Static ကေတာ့ ပိုလြယ္ေပမယ့္ Interactive Charts ကေတာ့ Java Script library ကိုသုံးထားျပီး event trigger

လုပ္ႏိုင္ေသာေၾကာင့္ သုံးရတာ flexible ျဖစ္တာကို ျမင္ႏိုင္ပါတယ္။

 

Static Chart

ဒီ Method ကေတာ့ အရမ္းကို လြယ္လြန္းလို႕ super easy လို႕ေတာင္ေျပာႏိုင္ပါတယ္။

http://chart.apis.google.com/chart?cht=p3&chs=450x200&chd=t:2,4,3,1&chl=Phones|Computers|Services|Other&chtt=Company%20Sales&chco=ff0000

ဒီ code ေလးကို copy ကူးျပီး browser မွာ run လိုက္ရင္ ေအာက္က ပုံးေလးကို auto generate လုပ္ေပးမွာ ျဖစ္ပါတယ္။


ဒီလိုေလးသာ လုပ္လိုက္ရင္ image အေနနဲ႔ ထည့္လို႕ရျပီဗ်ာ။

<img src='http://chart.apis.google.com/chart?cht=p3&chs=450x200&chd=t:2,4,3,1&chl=Phones|Computers|Services|Other&chtt=Company%20Sales&chco=ff0000'>


ကဲဘယ္ေလာက္ေတာင္ လြယ္သလဲဗ်ာ။ ေျပာပါတယ္ super easy ပါဆိုမွ ...

အလုပ္ပုံကေတာ့ Google Charts API ကို GET (or) POST သုံးျပီး request လုပ္လိုက္တဲ့ အခါ API ကေန png image ကို return

ျပန္ေပးလိုက္တာ ျဖစ္ပါတယ္။

ဒီ URL ကို ခဲြျခမ္း ၾကည့္မယ္ ဆိုရင္ေတာ့

http://chart.apis.google.com/chart?

Base URL ျဖစ္ျပီး က်န္တာေတြက ဒီ URL အတြက္ parameters ေတြပဲ ျဖစ္ပါတယ္။

Mandatory Parameters

ဒီ URL အတြက္ မပါမျဖစ္ထည့္ ေပးရမယ့္ parameters ေတြကိုၾကည့္မယ္ ဆိုရင္ေတာ့

cht=p3

Chart Type အတြက္ ျဖစ္ပါတယ္။ p3 ဆိုတာကေတာ့ 3D pie chart ကိုဆိုလိုပါတယ္။ ရႏိုင္တဲ့ chart type ေတြကိုေတာ့ ဒီမွာ ၾကည့္ႏိုင္

ပါတယ္။

chs=450×200

chart image size ပဲျဖစ္ပါတယ္။

chd=t:2,4,3,1

chart မွာျပမယ့္ data အတြက္ ျဖစ္ပါတယ္။ ပထမ စာလုံး t  ကေတာ့ data format အတြက္ ညြန္းတာ ျဖစ္ျပီး ဒီ example မွာေတာ့

basic text format ကိုသုံးထားပါတယ္။

 

Optional Parameters

title, labels, font types, colors, gradients စတာေတြကို optional parameters အေနနဲ႔ ထည့္ေပးႏိုင္ပါတယ္။ ဒီ example

မွာၾကည့္ရင္ေတာ့

chl=Phones|Computers|Services|Other

chart label အတြက္ ျဖစ္ပါတယ္။ ဒီဟာေလးနဲ႔ တြဲျပီးၾကည့္ရင္ ပိုျမင္သာပါတယ္။ chd=t:2,4,3,1

chtt=Company%20Sales

chart title အတြက္ ျဖစ္ပါတယ္။

chco=ff0000

Chart color အတြက္ ျဖစ္ပါတယ္။ တကယ္လို႕ gradient နဲ႔ျပခ်င္ရင္ေတာ့ colors ႏွစ္ခုကို ဒီလိုျပႏိုင္ပါတယ္။ chco=ff0000,00ff00

Interactive Charts ကေတာ့ ရွည္တာေၾကာင့္ ေနာက္ post တစ္ခု အေနနဲ႔ ေရးမွ ပိုအဆင္ေျပမယ္။ အရမ္းရွည္ေတာ့လည္း ဖတ္ရတာ

ပ်င္းဖို႔ ေကာင္းပါတယ္။ စိတ္ပါရင္တာ့ Live Chart Playground မွာ ေဆာ့ၾကည့္ႏိုင္ပါတယ္။ ေဆာ့ၾကည့္ဗ် ေရလည္လန္းတယ္။



 

TIME MONEY ENERGY

Written by Zack Saturday, 17 July 2010 17:00

ဒီ post ကေတာ့ forward mail ထဲက ဖတ္မိျပီး ကြၽန္ေတာ္ ခံစားခ်က္နဲ႔ တိုက္ဆိုင္ေနလို႕ ျပန္ေရးလိုက္ ပါတယ္။ ေတာ္ေတာ္မ်ားမ်ားလည္း

ဒီလိုပဲ   ခံစားမိၾကမယ္ ထင္ပါတယ္။ ကြၽန္ေတာ္ badminton racket ၾကိဳးျပတ္သြားလို႕ ဆိုင္မွာ ၾကိဳးျပန္ပတ္ေနတုန္း ဗိုက္ကလည္း ဆာေန

တာေၾကာင့္   McDonalds မွာဝင္ျပီး ၾကက္ေၾကာ္ နဲ႔ အားလူးေၾကာ္ ဝယ္ျပီး ဆိုင္ထဲ ေထာင့္က်က် စားပြဲေလးမွ ထိုင္မိလိုက္ပါတယ္။ တျခား

စားပြဲေတြမွာ    မိသားစု အလိုက္ စားေနၾကတဲ့  သူေတြရွိသလို၊ Laptop ေလးေတြသယ္လာျပီး အလုပ္လုပ္ေန ၾကသူေတြလည္း ရွိပါတယ္။

 

အခ်ိန္ေလးကလည္း ရေနတာေၾကာင့္  ရုံးကေပးထားတဲ့ broadband internet ေလးနဲ႔ စာဖတ္မယ္ ဆိုျပီး ပါလာတဲ့ Laptop

ေလးဖြင့္ လိုက္မိပါတယ္။ အဲဒီ အခ်ိန္ေလးမွာ    ဖ်တ္ခနဲ သတိရမိျပီး   လြမ္းသလိုလို ခံစားမိလိုက္တာက ကြၽန္ေတာ္    ေက်ာင္းတတ္တုန္းက

ထိုင္ခဲ့ဘူးတဲ့  လက္ဖက္ရည္ဆိုင္က   ေထာင့္က်က် စားပြဲေလးကိုပါ။ စားပြဲေလးမွာထိုင္ရင္း   ေဆးလိပ္ေလးကို ဖြာရင္း  သီခ်င္းေလးေတြကို

နားေထာင္လိုက္၊   chorus ေလးေရာက္ရင္   အတူတူ လိုက္ဆိုလိုက္ၾက နဲ႔ေပါ့ .... ျပီးေတာ့ ကိုယ္ၾကိဳက္တက္တဲ့  လက္ဖက္ရည္ ပုံစံ အခ်ိဳး

အစားကို  သိေနတဲ့ အေဖာ္ဆရာရဲ႕  လက္ဖက္ရည္ေလး နဲ႔ ခုစားေနရတဲ့ ၾကက္ေၾကာ္ ရဲ႔ အရသာ လားလားမွ မဆိုင္ေပ။ ျပီးေတာ့ ဆက္ျပီး

လြမ္းမိလိုက္တာက အဲဒီ အခ်ိန္တုန္းက လြတ္လပ္မႈေတြ စိတ္ဖိစီးမႈေတြ မရွိေသးတဲ့ ပထမႏွစ္ ေက်ာင္းသားဘဝေလးေပါ့။ ေျပာရရင္ အဲဒီ

အခ်ိန္တုန္းက  စတိုင္က်က် ဆိုင္ေလးမွာ ထိုင္ျပီး ၾကက္ေၾကာ္ဆိုတာကို မစားႏိုင္လို႔ လမ္းေဘးက   လက္ဖက္ရည္ ဆိုင္ေလးမွာ ထိုင္ျပီး

သီခ်င္းေလးေတြဆိုကာ စိတ္ထြက္ေပါက္ ရွာခဲ့ရပါေပါ့။ အဲဒီ အခ်ိန္တုန္းက ကြၽန္ေတာ္မွာ ျဖစ္ခဲ့တာကို ဒီပုံေလးက ေျပာျပပါလိမ့္မယ္။


Teen age: Have Time + Energy …but No Money

 

အဲသည္လိုနဲ႔  မရပ္နားတဲ့ ဘဝခရီးကို ဆက္ေလွ်ာက္ရင္း Working Age ကိုေရာက္လာတဲ့ အခါ ေက်ာင္းသားဘဝ ကထက္စာရင္ေတာ့

စားခ်င္တာကို စားႏိုင္လာတဲ့ အဆင့္ေပါ့ဗ်ာ။ ဒါေပမယ့္ ရွားသြားတာက အခ်ိန္ပါပဲ။ Monday to Friday (or) Sat  ကအလုပ္ထဲမွာ နစ္ေန

ၾကျပီး weekend  ေလးေရာက္ေတာ့လည္း  အိမ္အလုပ္ေတြရယ္၊ တျခားလူမႈေရး အလုပ္ေတြရယ္၊ စာဖတ္စရာေတြရယ္နဲ႔ လုပ္စရာေတြ

ကမ်ား လွပါေပတယ္။ ေျပာမယ္ဆိုရင္ လုပ္စရာေတြမ်ားျပားလြန္းလို႕ ဒီေန႕ ဆိုတာေတြကို အျမန္အဆန္ ဖရိုဖရဲကားလိပ္ခ်ရင္း မနက္ဖန္

ေတြေနာက္ကို ဒေရာေသာပါး လိုက္ေနရတယ္ ဆိုရင္လည္း ဟုတ္ပါတယ္။ ဒီပုံေလး အတိုင္းေပါ့ဗ်ာ။


Working Age: Have Money + Energy …but No Time

 

ေနာက္ age   တစ္ခုကေတာ့   မရေသးေပမယ့္ ျဖစ္လာႏိုင္တာကို အေပၚက ႏွစ္ပုံကိုၾကည့္ျပီး တြက္ဆ လို႔ရေနပါတယ္။ ျဖစ္လာမယ္

ဆိုရင္ေတာ့ ဒီလိုေလးေပါ့။


Old age: Have Time + Money …but no Energy


ဒီေတာ့ဗ်ာ ကြၽန္ေတာ္စဥ္းစားလိုက္မိလိုက္တာကေတာ့ ဘဝဆိုတာ တိုတိုေလးပဲ၊ ကိုယ္က်ိဳးအတြက္လုပ္သလို အမ်ားအက်ိဳး အတြက္လည္း

တတ္ႏိုင္သေလာက္လုပ္ရင္း ဘဝ ရဲ႕ အသက္အပိုင္းအျခားေတြကို ျဖတ္သန္း ၾကတာေပါ့။ ဒီပုံေလး ၃ပုံရယ္၊ လက္တေလာ ျဖစ္ေပၚလာတဲ့

ခံစားခ်က္ေလးေၾကာင့္ ဒီ post ေလးကိုေရး ျဖစ္သြားတာပါ။ Oops !!! Badminton ဆိုင္က ျပန္ခ်ိန္ထားတာ ေနာက္ေတာင္က်ေနျပီ လစ္မွ လစ္မွ

ဪ .. အခ်ိန္ ...  အခ်ိန္ .. အခ်ိန္...

 

Zack-Notes iPhone/iPod version

Written by Zack Wednesday, 14 July 2010 14:22

Joomla Zawgyifont plugin လုပ္ရင္း Joomla ပိုးျပန္ဝင္သြားျပီး Site အတြက္ mobile version ကိုဆက္စမ္းျဖစ္သြားတယ္။ ခုေလာ

ေလာဆယ္ေတာ့  ipod/iphone ကေနၾကည့္ရင္  ေဇာ္ဂ်ီမရွိလည္း content ေတြကိုဖတ္ႏိုင္ေအာင္၊  ျပီးေတာ့ ဖတ္တဲ့ အခါမွာလည္း

အဆင္ေျပေျပ ဖတ္ႏိုင္ဖို႔ mobile template ကို auto switch လုပ္သြားေအာင္ လုပ္ထားပါတယ္။  တျခားေသာ Smart Phone ေတြက

ၾကည့္မယ္ဆိုရင္ေတာ့ ဘယ္လို ျဖစ္မယ္ဆိုတာ မသိပါ။ ဒီအတြက္ JoomTouch ဆိုတဲ့ Extension ကိုသုံးႏိုင္ျပီး၊ အဲဒီ extension က

iWebkit Framework ကို ယူသုံးထားလို႕ iWebkit ကိုအနည္းငယ္ နားလည္မယ္ ဆိုရင္ ကိုယ္ၾကိဳက္သလို ျပင္သုံးႏိုင္ပါတယ္။

JoomTouch ကိုသုံးမယ္ဆိုရင္ ဒီလို error ကိုေတြ႔ ရႏိုင္ပါတယ္။

Call-time pass-by-reference has been deprecated.

အဲဒီလိုေတြေတြ႔လာရင္ေတာ့ stackoverflow က ဒီ link မွာဖတ္ၾကည့္ျပီး ေျဖရွင္းႏိုင္ပါတယ္။ iPod/iPhone ေတြရဲ႕ safari browser

ကေန http://www.zack-notes.net ၾကည့္မယ္ဆိုရင္ ေအာက္ပါအတိုင္း ေတြ႔ရပါမယ္။ 

 

Page 4 of 30

«StartPrev12345678910NextEnd»

Login Form

Categories Table View

RSS Feed

JoomlaWatch Stats 1.2.9 by Matej Koval

Facebook Share

Share on facebook

mod_joomtouch

Version Iphone

Version Iphone by JoomTouch