Review ตัวละคร ชื่อ Max ในเกมส์ rov ขำๆ

Review ตัวละคร ชื่อ Max ในเกมส์ rov

ฮีโร่สาย Tank & Fighter หนุ่มเทคนิคฟันหลอ หน้าตาดี Max อีกทั้งยังเป็นตัว support และ roaming ได้อีก ด้วย

  • Skill 1 Bionic Blender หมุนตัวรอบๆ สร้างความเสียหายทางกายภาพ
  • Skill 2 Smooth Moves เคลื่อนที่โดนการกระโดดข้ามหัวเป้าหมาย
  • Skill 3 Liftoff ยิงกระสวยติดตามเพื่อ hack map สามารถมองเห็น เป้าหมายและพุ่งโจมตีได้
  • Passive skill : Static Shock โจมตี ศัตรู ได้รับความเสียหายจริง ทะลุเกราะ นั้นเอง

Review ตัวละคร ชื่อ Grakk ในเกมส์ rov ขำๆ

Review ตัวละคร ชื่อ Grakk ในเกมส์ rov

ฮีโร่สาย Tank อดทนทนทานชื่อ Grakk อีกทั้งยังเป็นตัวsupport และ roaming ได้อีก ด้วย

  • Skill 1 Earthquake ดาเมสไม่ค่อยแรงเท่าไร่แต่ทำให้ศัตรูเคลื่อนที่ช้าลง
  • Skill 2 Devil’s Chain ท่านี้ถือเป็นท่าหลัก ในการใช้งาน  อีกทั้งยังเพิ่ม สกิลติดตัวทำให้ ช่วยเหลือหรือฆ่าศัตรู จะได้เลือดเพิ่ม ซึ่งสามารถ stack ได้ 20 ครั้ง
  • Skill 3 World Devourer ถ้านี้จะดูดศัตรู และเพิ่มเกราะให้กับตัวเอง ค่อยข้างใช้ยากและมี delay skill ที่ค่อนข้างนาน แต่ถ้าติดในจังหวะ สำคัญ ถือว่าเกมส์จะได้เปรียบมาก
  • Passive skill : Blood Ritual หากโดนโจมตี มากกว่า 10 % ของเลือดที่เหลืออยู่ จะปล่อยพลังเวท ออกมารอบๆ ตัว แต่มีคูลดาวน์ อยู่ที่ 2 วิ

การออกของนิยมออกของสายแทงค์  พวกเกราะและเพิ่มเลือดเป็นหลัก

วิธีกำหนด IP Address บน Linux ผ่าน terminal

วิธีกำหนด  IP Address บน Linux ผ่าน terminal โดยหมายเลข IP นี้จะเป็น DHCP  หรือ Static IP ก็ได้ ซึ่งการใช้งานก็จะแตกต่าง กันไป ขึ้นอยู่กับจุดประสงค์ หลักๆคือถ้าอยากได้ IP เดิมทุกครั้งที่ เชื่อมต่อก็ต้องเป็น แบบ static ip เท่านั้น เป็นต้น

เริ่มต้นการทำงานให้เราเรียกโปรแกรม Terminal แล้วพิมพ์ คำสั่ง ifconfig (ต้อง login ด้วย สิทธิ์ที่สามารถใช้คำสั่งนี้ได้ เช่น root)

eth0 ส่วนมากจะเป็น card network ของเรา port แรกที่ต่อกับสาย Lan

lo เป็น loop back interface โดยปกติ ก็ 127.0.0.1

หากตรงการเชื่อมต่อ แบบ DHCP ก็สามารถ พิมพ์

ifconfig eth0 down
ifconfig eth0 up
dhclient eth0

กรณีที่เป็น static

ifconfig eth0 192.168.1.33 netmask 255.255.255.0
route add default gw 192.168.1.1

คำสั่งเปิดปิด

/etc/init.d/networking stop
/etc/init.d/networking start

service networking restart

คำสั่งเปิดปิด port

auto  eth0
iface  eth0  inet static
address 192.168.1.63
network 192.168.1.0
netmask 255.255.255.0
boardcast 192.168.1.255
gateway  192.168.1.1

หดฟห

auto eth0
iface eth0 inet dhcp

วิธีการเพิ่ม Tab page บน Facebook page

วิธีการเพิ่ม tab page บน facebook สามารถทำได้ง่ายๆ โดยการใช้ app ที่มีอยู่ พิมพ์คำว่า woo หรือ iframe ก็จะมี app ให้เลือก แต่วันนี้เราจะมาทำวิธีที่ไม่ใช้ app สำเร็จรูป โดนการสร้าง app ของเราเอง

ขั้นตอนที่  1: สร้าง content ที่เราต้องการใช้ บน website ของเรา โดนจะต้องอยู่บน https และความกว้างของ content ควรจะเป็น ขนาดที่ facebook แนะนำ นั่นคือ 520 px (default) และ 810 px(max)
ขั้นตอนที่  2: สร้าง Application บน Facebook โดยไปที่ https://developers.facebook.com/ และหากใครยังไม่เคยลงทะเบียน ก็ให้กดลงทะเบียน ไว้เลยครับ ตามรูปตัวอย่างด้านล่าง

เลือกเมนู “การตั้งค่า” ทางด้านซ้ายมือ เพื่อที่จะได้ กำหนดค่าต่างๆ หลังการกำหนดเรียบร้อยแล้วให้คลิกเลือก “เพิ่มแพลตฟอร์ม”


ขั้นตอนที่  3: เลือกชนิดของ application ให้เป็น “แท็บของเพจ” ใส่ URL content ของเราที่เตรียมไว้ในขั้นตอนที่ 1 และชื่อของ แทบ ตามลำดับ หากต้องการใส่รูปก็สามารถ อัพโหลดรูป ขึ้นมาได้

ขั้นตอนที่  4: เมื่อเราสร้าง app เรียบร้อยแล้วก็ให้ติดตั้งบน Page ของเราโดยการ ใช้ URL Rewrite

https://www.facebook.com/dialog/pagetab?
  app_id=YOUR_APP_ID
  &redirect_uri=YOUR_URL

ขั้นตอนที่  5: กลับมาหน้า page ของเราจะเห็นได้ว่ามี app ใหม่ติดตั้ง อยู่ให้ลองกดเข้าไปดู ก็จะว่ากลับมาที่ เพจของเราแต่จะมี tab page ที่เราสร้างไว้ ขึ้นมา

ขั้นตอนที่  6: ถ้าเราอยากให้ tab page นี้ติดอยู่หน้าของเราโดยไม่ต้อง กดที่ app ก็ให้เเลือก จัดการ tab แล้วเลื่อนไปอยู่ บน สุด

 

สุดท้ายคุณก็จะได้ tab page สวยๆ ตามสไตน์ของคุณเองโดยไม่ต้องพึ่ง app สำเร็จรูปซึ่งบางทีมี โฆษณาทำให้คุณเสียอารมณ์ได้ ขอบคุณครับ

reference : https://developers.facebook.com/docs/pages/tabs

วิธีการใช้งาน PHP curl (Postman)

สวัสดีครับ หลายๆ คนคงเคยได้ ยินคำว่า curl ในภาษา php วันนี้เราจะมาลองใช้ งานมันดูกันนะครับ สมมุติว่าเราต้องดึงข้อมูล Api ระหว่าง server 2 ตัว เราจะทำยังไง ?

Curl สามารถช่วยแก้ปัญหาได้ โดยตัวมันสร้างสามารถสร้าง request RestFul  โดยขั้นตอนการทำงานแบบง่ายคือ

  • curl_init() เพื่อเปิดการทำงาน
  • curl_setopt ( resource $ch , int $option , mixed $value ) เพื่อใส่ option ต่างๆ สำหรับ method post สิ่งที่จำเป็น ก็คือ CURLOPT_URL (url ของ api ที่เราต้องการไปเรียก) , CURLOPT_POSTFIELDS (ข้อมูลที่เราต้องการจะส่งไป) และ CURLOPT_POST (เซตให้เป็น true)
  • curl_exec ( resource $ch ) เพื่อสั่งให้ curl ทำงานคล้ายๆ การกดปุ่ม submit ใน form ที่ client
  • curl_close ( resource $ch ) สุดท้ายคือการสั่งปิดการทำงาน

ด้านล่างคือ source code ที่ใช้สำหรับ ทดสอบโปรแกรม

TestApi.php สร้าง curl สำหรับเรียกใช้งาน

<?php
  $url = 'http://localhost:81/Api/RestfulApi.php'; 
  
  $data = "fn=login&test=1";
  
  /*$data = array(
        'fn' => "login" 
    );*/
  
  
  try{
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    $content = curl_exec( $ch );
    curl_close($ch);
    
    print_r($content);
    
  }catch(Exception $ex){
  
    echo $ex;
  }
    
?>

RestfulApi.php Api ที่เราต้องการเรียกใช้งาน

<?php  

$server = isset($_SERVER['HTTP_HOST'])?isset($_SERVER['HTTP_HOST']):"";
$reqFunction = isset($_POST['fn'])?$_POST['fn']:""; 
$raw  =  isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA  : " POST_DATA  is  null  ";

try{
  switch($reqFunction)
  {
    case 'login';
      $result['status'] = true;
      $result['message'] = "login success" . " test : " . $_POST['test'];
    break;
    default;
      $result['status'] = false;
      $result['message'] = " Unknow command " . $reqFunction. $raw;
    break;
  }
}catch(Exception $ex){
  $result['status'] = false;
  $result['message'] = "exception: ".$ex;
}
    
 echo json_encode($result, JSON_UNESCAPED_UNICODE);

?>

สุดท้ายการสร้าง curl บางครั้งอาจดูยุ่งยาก เพราะต้องกำหนด parameter ต่างๆ ซึ่งมีทั้ง header และ body บางทีก็เขียนผิดเขียน ถูก วันนี้เลยขอแน่ะนำ tools เพื่อใช้ในการเขียน curl ที่เป็น extension ใน chrome ชื่อ postman

จากรูปและในวีดีโอจะเห็นได้ ว่า postman สามารถสร้าง source code ออกมาให้ เราได้เลย ทำให้สะดวกต่อการ ทดสอบ และการเขียนโปรแกรมเพื่อทดสอบการทำงาน ของ api ได้อย่างรวดเร็ว ลองดูนะครับ ผมว่ามีประโยชน์เลยทีเดียว

Cross Domain with JSONP e

เคยไหมกับปัญหาการใช้ Api ข้าม Domain แล้วจะพบว่าไม่สามารถใช้งานได้ เนื่องจาก browser ตรวจสอบแล้วพบว่า ส่วนร้องขอข้อมูลกับส่วนประมวลผลข้อมูลเป็นคนละ domain กัน ดูจากรูปด้านล่าง http://location:81/test/json.html ไปยัง Api ที่อยู่ บน http://localhost:8080/testApi.php จะไม่สามารถแสดงผลได้ เนื่องจากการ Cross domain นั่นเอง

แล้วจะทำอย่างไรถึงจะใช้งานได้ล่ะ ? JSONP เป็นอีกหนึ่งทางเลือก ของการแก้ปัญหานี้ วิธีการนั้นทำได้โดย

  1. โดนรูปแบบของการส่งข้อมูล แทนที่จะเป็น json ธรรมดาก็เปลี่ยนเป็น json พร้อมกับ callback function สามารถทำได้โดยการเพิ่ม option dataType เป็น JSONP และ jsonpCallback ตามด้วยฟังก์ชั่น ที่เราเตรียมไว้ กับ ข้อมูล
  2. ส่ง callback query เพื่อให้ api บน server ทราบชื่อ callback function ที่เราเตรียมไว้ โดยรูปแบบของ json กับ jsonp จะแตกต่างกัน ตามรูปที่แสดง

Code ตัวอย่างด้านล่างนี้นะครับ

json.html :

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>JQuery (cross-domain) JSONP Twitter example</title>
        <script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
        <script>
            $(document).ready(function(){
              
        $('document').ready(function() {
            
          function photos (data) { 
            console.log(data);
          };
      
          var pm_url = 'http://localhost:8080/testApi.php?callback=photos'; 
          $.ajax({
            url: pm_url,
            //type: 'GET',
            success: function(json) {
              $("#data").text(JSON.stringify(json));
              console.dir(JSON.stringify(json));
            },
            error: function(e) {
              $("#data").text(e.message);
               console.log(e.message);
            },
            dataType: 'JSONP',
            jsonpCallback: 'photos',
            //jsonp: 'callback', 
          });
        });
            });
       
      //angular
      var app = angular.module('MyApp', []);
      app.controller('MyCtrl', function($scope, $http) {
        $scope.firstName = "John";
        $scope.lastName = "Doe";
        $scope.colorwheelies = "wait";
        
        $http.jsonp('http://localhost:8080/testApi.php?callback=angular.callbacks._0')
         .success(function(data){
          console.log(data);
          $scope.colorwheelies = data;
          //console.log(data);
          });
          
        $scope.search = function() {
           
        };
      }); 
        </script>
    </head>
    <body  ng-app="MyApp">
        
      Ajax Result :	<span id="data"></span><br/>
     
      <div ng-controller="MyCtrl">
       <p>
        Angularjs result : {{colorwheelies}}
       </p>
      </div> 
    </body>
</html>

testApi.php:

<?php
  
  $callback_fn = isset($_GET['callback'])?$_GET['callback']: 'angular.callbacks._0';
   
  $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
  $result['result'] = $arr;
  
  if(false){
    echo  $callback_fn. "(".json_encode($result).")" ; //for angularjs as default;
    //angular.callbacks._0 ({"result":{"a":1,"b":2,"c":3,"d":4,"e":5}});
  }else{
    echo  json_encode($result) ;
    //{"result":{"a":1,"b":2,"c":3,"d":4,"e":5}};
  }
?>