16 October 2010

การใช้งาน และ config github เบื้องต้น

การใช้งาน และ config github เบื้องต้น - สมัครสมาชิก github ที่
- สร้าง Github Repository โดยเลือกที่
กรอกรายละเอียดให้ครบ หลังจากนั้นจะเห็นการแนะนำขั้นตอนการใช้งาน
#Global setup:
#Set up git
  git config --global user.name "Chagridsada  Boonthus"
  git config --global user.email mr.tumcpe@gmail.com
      
#Next steps:
  mkdir chagridsada-blog
  cd chagridsada-blog
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin https://github.com/chagridsada/chagridsada-blog.git
  git push -u origin master
      
#Existing Git Repo?
  cd existing_git_repo
  git remote add origin https://github.com/chagridsada/chagridsada-blog.git
  git push -u origin master   

#Importing a Subversion Repo?
#Push the repo    
  git remote add origin git@github.com:chagridsada/chagridsada-blog.git
  git push origin master

#When you're done:
#Continue
- Download และ ติดตั้ง Git ได้ที่
- เพิ่ม public key เพื่อให้สามารถติดต่อกับ Github ได้โดย
1.สร้าง public key โดยดูขั้นตอนจาก 2.ไปที่หน้า profile เลือก 3.เลือกที่ 4.นำ public key ที่ได้มาใส่ แล้วบันทึก - ทดสอบสร้าง project ตามขั้นตอนที่ได้มาตอนแรกเป็นอันเสร็จ.

13 October 2010

การติดตั้ง Apache, PHP, MySQL และ phpMyAdmin บน Ubuntu

การติดตั้ง Apache, PHP, MySQL และ phpMyAdmin บน Ubuntu การติดตั้ง Apache
1. เปิด Terminal จาก Applications/Utilities/Terminal จากนั้นให้พิมพ์คำสั่งนี้
sudo apt-get install apache2
2. หากใน Terminal เห็นข้อความว่า
gksu vi /etc/apache2/conf.d fqdn
เมื่อเปิดเสร็จแล้ว ให้พิมพ์ ServerName localhost ลงไปในไฟล์และบันทึก จากนั้นก็ปิดไฟล์ 3. เมื่อติดตั้งเสร็จแล้ว ทดสอบโดยใฃ้เบราว์เซอร์ และเปิด http://localhost
หากใช้งานได้จะพบข้อความว่า It works!
การติดตั้ง PHP5
1. พิมพ์คำสั่ง
sudo apt-get install php5 libapache2-mod-php5
2. เมื่อลง PHP5 เสร็จแล้วจำเป็นต้องเริ่มการทำงานของ Apache อีกครั้ง ด้วยการใช้คำสั่ง
sudo /etc/init.d/apache2 restart
3. ทดสอบการใช้งาน PHP โดยพิมพ์คำสั่ง
sudo vi /var/www/info.php
- เมื่อไฟล์ถูกเปิดขึ้นมาแล้ว ให้พิมพ์โค้ด PHP ดังนี้
<?php
    phpinfo();
?>
    
- จากนั้นให้บันทึกไฟล์และปิดไฟล์นี้ 4. ทดสอบโดยใฃ้เบราว์เซอร์ และเปิด http://localhost/info.php หากใช้งานได้จะผลดังนี้
Display PHP Info
การติดตั้ง MySQL
1. พิมพ์คำสั่ง
sudo apt-get install mysql-server
2. เมื่อเห็นภาพดังด้านล่างนี้ ให้กรอกรหัสผ่านสำหรับผู้ใช้ root ฃอง MySQL
Configuring mysql-server-5.0
3. หลังจากติดตั้งเสร็จ จะต้องให้ PHP ทำงานร่วมกับ MySQL ได้โดยเปิดไฟล์ php.ini ด้วยคำสั่งนี้
gksudo vi /etc/php5/apache2/php.ini
- จากนั้นแก้ไขบรรทัดที่มี
;extension=msql.so
เป็น
extension=msql.so
- ต่อไปก็เริ่มการทำงาน Apache อีกครั้งด้วยคำสั่ง
sudo /etc/init.d/apache2 restart
การติดตั้ง phpMyAdmin
1. พิมพ์คำสั่ง
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
2. เมื่อเห็นภาพดังด้านล่างนี้ ให้เลือก Apache2
Configuring phpmyadmin
3. สร้างทางลัดใน /var/www
sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin
4. เมื่อติดตั้งเสร็จแล้ว ให้ทดสอบโดยใฃ้เบราว์เซอร์ และเปิด http://localhost/phpmyadmin จะได้ผลดังนี้
Display phpMyAdmin

09 October 2010

CodeFese2010#8 กิจกรรมเขียนโปรแกรมมาราธอน ครั้งที่ 8

  
สถานที่จัดกิจกรรม
 ณ มหาวิทยาลัยพายัพ จังหวัดเชียงใหม่
วัตถุประสงค์
  1. เพิ่มจำนวนซอฟต์แวร์โอเพนซอร์สที่พัฒนาในประเทศ และยกระดับความสามารถของนักพัฒนาไทยให้ทัดเทียมกับนานาประเทศ
  2. เปิดโอกาสให้ผู้ที่สนใจได้เพิ่มความรู้และทักษะในการพัฒนาโปรแกรมแบบโอเพนซอร์ส ซี่งเป็นการเพิ่มศักยภาพด้านวิชาชีพ
  3. เป็นสื่อกลางของนักพัฒนาที่มีความสนใจร่วมกัน และมีส่วนสร้างชุมชนนักพัฒนาโอเพนซอร์สให้เกิดขึ้นใน
ลักษณะกิจกรรม
จัดกิจกรรมในรูปแบบการเข้าค่ายเขียนโปรแกรมมาราธอนแบบโอเพนซอร์ส เพื่อให้ผู้เข้าร่วมกิจกรรมได้เรียนรู้วิธีการและสิ่งแวดล้อมในการพัฒนา ซอฟต์แวร์จากทีมนักวิจัยโอเพนซอร์ส ของศูนย์เทคโนโลยีอิเล็กทรอนิกส์และคอมพิวเตอร์แห่งชาติ ซึ่งจะให้คำแนะนำกระบวนการพัฒนาซอฟต์แวร์โอเพนซอร์ส ตลอดโครงการ รวม 2 วัน 1 คืน (ผู้เข้าร่วมกิจกรรมต้องพักค้างคืนในค่าย) รายละเอียดดังนี้
  • รับสมัครผู้เข้าร่วมกิจกรรม 30 คน (พิจารณาคัดเลือกจากความสนใจ) โดยเปิดโอกาสกว้างแก่นักเรียน นักศึกษา และ บุคคลทั่วไปที่มีความสนใจจากทั่วประเทศ
  • เงื่อนไขการสมัคร ผู้สมัครต้องมีความสามารถในการเขียนโปรแกรมมาก่อน และมีความสนใจเรียนรู้การพัฒนาโปรแกรมแบบโอเพนซอร์ส และต้องสามารถร่วมกิจกรรมได้ตลอดโครงการ
  • ในระหว่างการเข้าค่าย ผู้ร่วมกิจกรรมเข้ากลุ่มตามความสนใจ กลุ่มละ 5-7 คน ตามโจทย์หัวข้อโปรแกรมที่ระบุในขั้นตอนรับสมัคร
  • ระดมสมองเพื่อกำหนดรูปแบบ และผลลัพธ์ของกิจกรรม
  • แบ่งหน้าที่กันทำงาน เพื่อให้แต่ละกลุ่มได้ผลลัพธ์ที่ต้องการ
  • นำเสนอผลงาน และ เป้าหมายในการดำเนินงานของกลุ่ม
  • ผลลัพธ์ที่ได้จากกิจกรรม จะเผยแพร่ในรูปแบบของโอเพนซอร์ส ทั้งซอฟต์แวร์ และ รายงานต่าง ๆ
หัวข้อกิจกรรม
TwitterTalk v.2 โดยใช้ภาษา Java

Linux Kiosk โดยใช้ Linux shell

การควบคุมอุปกรณ์ระยะไกลผ่านเครือข่ายโทรศัพท์ โดยใช้ภาษา C และ PHP
กำหนดการ
วันศุกร์ที่ 8 ตุลาคม 2553
08.00น.-09.00น. ลงทะเบียนผู้เข้าร่วมกิจกรรม
09.00น.-09.30น. พิธีเปิด
09.30น.-10.30น. บรรยายรายละเอียด เงื่อนไข และภารกิจ
10.30น.-12.00น. บรรยายเทคนิค แนะนำตัวผู้เข้าร่วมกิจกรรม และแบ่งกลุ่ม
12.00น.-13.00น. รับประทานอาหารกลางวัน
13.00น.-15.00น. ประชุมกลุ่มและวางแผนการทำงาน
15.00น.-18.00น. พัฒนาโปรแกรม
18.00น.-19.00น. รับประทานอาหารเย็น
19.00น. เป็นต้นไป พัฒนาโปรแกรม หรือพักผ่อน
วันเสาร์ที่ 9 ตุลาคม 2553
07.30น.-08.30น. รับประทานอาหารเช้า
08.30น.-12.00น. พัฒนาโปรแกรม
12.00น.-13.00น. รับประทานอาหารกลางวัน
13.00น.-15.00น. เตรียมสรุปผลและเตรียมนำเสนอผลงาน
15.00น.-16.30น. นำเสนอผลงาน
16.30น.-17.00น. พิธีปิด
ภาพกิจกรรม

 
...............................................................................................
http://gallery.opentle.org/v/2010108_09_CodeFest8/

08 October 2010

CodeFese2010#8 โคดโปรแกรม Embed

CodeFese2010#8 โคดโปรแกรม Embed embed.c
#include "stdio.h"
#include "fcntl.h"
#include "getopt.h"
#include "unistd.h"
#include "stdlib.h"
#include "errno.h"
#include "string.h"
#include "sys types.h"
#include "sys stat.h"
#include "24cXX.h"
#include "sys socket.h"
#include "netinet in.h"
#include "netdb.h"
 
#define VERSION     "0.7.6"
#define ENV_DEV        "EEPROG_DEV"
#define ENV_I2C_ADDR    "EEPROG_I2C_ADDR"
 
int g_quiet;
 
#define usage_if(a) do { do_usage_if( a , __LINE__); } while(0);
void do_usage_if(int b, int line)
{
const static char *eeprog_usage =
"eeprog " VERSION ", a 24Cxx EEPROM reader/writer\n"
"Copyright (c) 2003-2004 by Stefano Barbato - All rights reserved.\n"
"Usage: eeprog [-fqxdh] [-16|-8] [ -r addr[:count] | -w addr ]  /dev/i2c-N  i2c-address\n"
"\n"
"  Address modes: \n"
"    -8        Use 8bit address mode for 24c0x...24C16 [default]\n"
"    -16        Use 16bit address mode for 24c32...24C256\n"
"  Actions: \n"
"    -r addr[:count]    Read [count] (1 if omitted) bytes from [addr]\n"
"            and print them to the standard output\n"
"    -w addr        Write input (stdin) at address [addr] of the EEPROM\n"
"    -h        Print this help\n"
"  Options: \n"
"    -x        Set hex output mode\n"
"    -d        Dummy mode, display what *would* have been done\n"
"    -f        Disable warnings and don't ask confirmation\n"
"    -q        Quiet mode\n"
"\n"
"The following environment variables could be set instead of the command\n"
"line arguments:\n"
"    EEPROG_DEV        device name(/dev/i2c-N)\n"
"    EEPROG_I2C_ADDR        i2c-address\n"
"\n"
"    Examples\n"
"    1- read 64 bytes from the EEPROM at address 0x54 on bus 0 starting\n"
"       at address 123 (decimal)\n"
"        eeprog /dev/i2c-0 0x54 -r 123:64\n"
"    2- prints the hex codes of the first 32 bytes read from bus 1 \n"
"       at address 0x22\n"
"        eeprog /dev/i2c-1 0x51 -x -r 0x22:0x20\n"
"    3- write the current timestamp at address 0x200 of the EEPROM on \n"
"       bus 0 at address 0x33 \n"
"        date | eeprog /dev/i2c-0 0x33 -w 0x200\n";
 
    if(!b)
        return;
    fprintf(stderr, "%s\n[line %d]\n", eeprog_usage, line);
    exit(1);
}
 
 
#define die_if(a, msg) do { do_die_if( a , msg, __LINE__); } while(0);
void do_die_if(int b, char* msg, int line)
{
    if(!b)
        return;
    fprintf(stderr, "Error at line %d: %s\n", line, msg);
    //fprintf(stderr, "    sysmsg: %s\n", strerror(errno));
    exit(1);
}
 
#define print_info(args...) do { if(!g_quiet) fprintf(stderr, args); } while(0);
 
void parse_arg(char *arg, int* paddr, int *psize)
{
    char *end;
    *paddr = strtoul(arg, &end, 0);
    if(*end == ':')
        *psize = strtoul(++end, 0, 0);
}
 
int confirm_action()
{
    fprintf(stderr,
    "\n"
    "____________________________WARNING____________________________\n"
    "Erroneously writing to a system EEPROM (like DIMM SPD modules)\n"
    "can break your system.  It will NOT boot anymore so you'll not\n"
    "be able to fix it.\n"
    "\n"
    "Reading from 8bit EEPROMs (like that in your DIMM) without using\n"
    "the -8 switch can also UNEXPECTEDLY write to them, so be sure to\n"
    "use the -8 command param when required.\n"
    "\n"
    "Use -f to disable this warning message\n"
    "\n"
    "Press ENTER to continue or hit CTRL-C to exit\n"
    "\n"
    );
    getchar();
    return 1;
}
 
int read_from_eeprom(struct eeprom *e, int addr, int size, int hex ,int *ar)
{
    int ch, i,arr=0;
    for(i = 0; i < size; ++i, ++addr)
    {
        die_if((ch = eeprom_read_byte(e, addr)) < 0, "read error");
        if(hex)
        {
            if( (i % 16) == 0 )
                printf("\n %.4x|  ", addr);
            else if( (i % 8) == 0 )
                printf("  ");
            
            if(!(i%2==1)){
                ar[arr]= ch;
                arr++;
            }
        } else
            putchar(ch);
    }
    if(hex)
        printf("\n");
    fflush(stdout);
    return 0;
}
 
int write_to_eeprom(struct eeprom *e, int addr)
{
    int c;
    while((c = getchar()) != EOF)
    {
        print_info(".");
        fflush(stdout);
        die_if(eeprom_write_byte(e, addr++, c), "write error");
    }
    print_info("\n");
    return 0;
}
 
int main(int argc, char** argv)
{
    struct eeprom e;
    int ret, op, i2c_addr, memaddr, size, want_hex, dummy, force, sixteen;
    char *device, *arg = 0, *i2c_addr_s;
    struct stat st;
    int eeprom_type = 0;
 
    op = want_hex = dummy = force = sixteen = 0;
    g_quiet = 0;
 
    while((ret = getopt(argc, argv, "1:8fr:qhw:xd")) != -1)
    {
        switch(ret)
        {
        case '1':
            usage_if(*optarg != '6' || strlen(optarg) != 1);
            die_if(eeprom_type, "EEPROM type switch (-8 or -16) used twice");
            eeprom_type = EEPROM_TYPE_16BIT_ADDR;  
            break;
        case 'x':
            want_hex++;
            break;
        case 'd':
            dummy++;
            break;
        case '8':
            die_if(eeprom_type, "EEPROM type switch (-8 or -16) used twice");
            eeprom_type = EEPROM_TYPE_8BIT_ADDR;
            break;
        case 'f':
            force++;
            break;
        case 'q':
            g_quiet++;
            break;
        case 'h':
            usage_if(1);
            break;
        default:
            die_if(op != 0, "Both read and write requested");
            arg = optarg;
            op = ret;
        }
    }
    if(!eeprom_type)
        eeprom_type = EEPROM_TYPE_8BIT_ADDR; // default
 
    usage_if(op == 0); // no switches
    // set device and i2c_addr reading from cmdline or env
    device = i2c_addr_s = 0;
    switch(argc - optind)
    {
    case 0:
        device = getenv(ENV_DEV);
        i2c_addr_s = getenv(ENV_I2C_ADDR);
        break;
    case 1:
        if(stat(argv[optind], &st) != -1)
        {
            device = argv[optind];
            i2c_addr_s = getenv(ENV_I2C_ADDR);
        } else {
            device = getenv(ENV_DEV);
            i2c_addr_s = argv[optind];
        }
        break;
    case 2:
        device = argv[optind++];
        i2c_addr_s = argv[optind];
        break;
    default:
        usage_if(1);
    }
    usage_if(!device || !i2c_addr_s);
    i2c_addr = strtoul(i2c_addr_s, 0, 0);
 
    print_info("eeprog %s, a 24Cxx EEPROM reader/writer\n", VERSION);
    print_info("Copyright (c) 2003-2004 by Stefano Barbato - All rights reserved.\n");
    print_info("  Bus: %s, Address: 0x%x, Mode: %dbit\n",
            device, i2c_addr,
            (eeprom_type == EEPROM_TYPE_8BIT_ADDR ? 8 : 16) );
    if(dummy)
    {
        fprintf(stderr, "Dummy mode selected, nothing done.\n");
        return 0;
    }
    die_if(eeprom_open(device, i2c_addr, eeprom_type, &e) < 0,
            "unable to open eeprom device file "
            "(check that the file exists and that it's readable)");
    switch(op)
    {
    case 'r':
        if(force == 0)
            confirm_action();
        size = 1; // default
        parse_arg(arg, &memaddr, &size);
        print_info("  Reading %d bytes from 0x%x\n", size, memaddr);
        int ar[3],i,j,x[2],y[2],z[2];
        while(1){
            for(i=0;i<2;i++){
                read_from_eeprom(&e, memaddr, size, want_hex,ar);
                    x[i]=ar[0];    y[i]=ar[1];   z[i]=ar[2];
                printf(" P[%d] = %d %d %d",i,x[i],y[i],z[i]);
            }
            printf("\n\n");
            int ac = 15,ac1 = 230;
            if(((abs(z[0]-z[1]) > ac)&&(abs(z[0]-z[1]) < ac 1))||
   ((abs(y[0]-y[1]) > ac)&&(abs(y[0]-y[1]) < ac 1))||
   ((abs(x[0]-x[1])="">ac)&&(abs(x[0]-x[1]) < ac 1))){ 
   if(((z[0]-z[1]="" > ac)&&(z[0]-z[1] < ac 1))){ 
   printf("error="" in="" z="" val="%d" and="" %d="" <-=""> %d.\n",z[0],z[1],abs(z[0]-z[1]));
                SendToServer(z,'Z');
                break;
                }else if (((y[0]-y[1]>ac)&&(y[0]-y[1] < ac 1))){ 
    printf("error="" in="" y="" val="%d" and="" %d="" <-=""> %d.\n",y[0],y[1],abs(y[0]-y[1]));
                  SendToServer(y,'Y');
                }else{
                  printf("Error in X val = %d and %d <-> %d.\n",x[0],x[1],abs(x[0]-x[1]));
                  SendToServer(x,'X');
                break;
                }
             }
        }
 
        break;
    case 'w':
        if(force == 0)
            confirm_action();
        parse_arg(arg, &memaddr, &size);
        print_info("  Writing stdin starting at address 0x%x\n",
            memaddr);
        write_to_eeprom(&e, memaddr);
        break;
    default:
        usage_if(1);
        exit(1);
    }
    eeprom_close(&e);
 
    return 0;
}
 
int SendToServer(int acc[],char ch[]){
    
        int sockfd, portno, n;
            struct sockaddr_in serv_addr;
            struct hostent *server;
 
        char buffer[1024];
        portno = atoi("80");
        sockfd = socket(AF_INET, SOCK_STREAM, 0);
        if (sockfd < 0)
        error("ERROR opening socket");
        server = gethostbyname("192.168.1.9");
        if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
        }
        bzero((char *) &serv_addr, sizeof(serv_addr));
        serv_addr.sin_family = AF_INET;
        bcopy((char *)server->h_addr,
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);
        serv_addr.sin_port = htons(portno);
        if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) {
        error("ERROR connecting");
        }
        bzero(buffer,1024);
           // sprintf(buffer,"GET /g-Box/index.php?act=%c&val=%d HTTP/1.0\n\n",ch,abs(acc[0]-acc[1]));
        sprintf(buffer,"Error in  %c val = %d and %d <-> %d.\n",ch,acc[0],acc[1],abs(acc[0]-acc[1]));
        n = write(sockfd,buffer,strlen(buffer));
        if (n < 0)
         error("ERROR writing to socket");
        bzero(buffer,1024);
        n = read(sockfd,buffer,1024);
        if (n < 0)
         error("ERROR reading from socket");
        printf("%s\n",buffer);
 
return 0;
}
 
int  error(char *msg)
{
    perror(msg);
    exit(0);
return 0;
}

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Blog by Chagridsada Boonthus | http://chagridsada.blogspot.com/