Powered By Blogger

29 December 2010

CentOS Web Server + FTP Server

Setup Linux CentOS สำหรับ ทำ FTP Server
+ Web Server + php

http://202.143.161.22/linux/CentOS.htm

http://www.eak.in.th/2009/12/04/%E0%B8%95%E0%B8%B4%E0%B8%94%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87-centos-%E0%B9%81%E0%B8%A5%E0%B8%B0-web-server-packages/

CentOS with FTP
http://www.linuxthai.org/forum/index.php?topic=6795.0

FTP Server บน Fodera Core
http://www.linuxlane.com/vsftpd-fedora-core-6-server/


SSH
http://www.howtoconfig.com/os/ubuntu/ssh-login-without-password.html

2Way PKI + PHP
http://www.howtoconfig.com/development/php-2way-encrypt-pki-openssl.html


PXE Server
http://www.howtoconfig.com/os/ubuntu/network-install-via-pxe-server.html

Squid Reverse Proxy
http://www.howtoconfig.com/os/ubuntu/how-to-implement-squid-reverse-proxy.html

Authen Log
http://www.linuxthai.org/forum/index.php?topic=7605.0


eBook อื่นๆ ยังไม่ได้ลองโหลด
http://ebook-ubuntu.blogspot.com/2010/01/install-xen-centos-53.html


--------------------------------------------------------
OS อื่นๆ

WebDav Protocol บน SuSE   + แสดง Architech เบื้องต้น
http://www.playoss.com/node/111

ติดตั้ง WebDAV บน Apache
http://www.thaitux.info/test/node/38
http://www.thaitux.info/test/taxonomy/term/49

ลอง WebDav กับ Apache
http://vuthi.blogspot.com/2004/12/webdav-apache.html

------------------------------------------------------------
Apache Security
http://www.thaicert.nectec.or.th/paper/unix_linux/apache_sec1_1.php

28 December 2010

treeview in YUI3

I found it on google
http://yuilibrary.com/gallery/show/treeview

ิBut , I found  jQuery Plugin easier
http://docs.jquery.com/Plugins/Treeview/treeview

Just , copy and paste to  *.php / *.html file  in web browser ,
and then run  with IE , Chrome .


-------------------------------------------------
And  TreeView from jQuery plugin again ,
with document .

http://www.dynamicdrive.com/dynamicindex1/treeview/index.htm

-------------------------------------------------
menu in jQuery Plugin
http://plugins.jquery.com/project/jme
http://sawanna.org/jquery/jmenu/#
http://www.msconcept.fr/jMenu

-------------------------------------------------

More Javascript ... here ...
http://www.dynamicdrive.com/

-------------------------------------------------

29 October 2010

PHP - Connect 2 System With XML DOM

เมื่อมี 2 ระบบ 
บางครั้งเราไม่อยาก จะให้ ระบบ A เข้าถึง ฐานข้อมูลในระบบ B
แต่ก็ อยากจะเชื่อมต่อข้อมูลได้ 


เราอาจเลือกการเชื่อมต่อด้วย XML โดย StaticFile 
แต่การสร้าง Static XML file ต้องอาศัยเลือก ทำ Export ตามช่วงเวลา 
หรือ สร้าง Temp File 


หากต้องการ สร้าง XML on the fly  ,  ( http://en.wikipedia.org/wiki/On_the_fly )  
สามารถ ใช้ วิธีการ สร้างตัวเชื่อมต่อระบบ ด้วย PHP ได้ 
(ระบบหลักอาจเป็น Database / ภาษา อื่นๆได้ ) 


ดังนี้ 


1 จุด Export Data เป็น XML 
ws_user.php  สำหรับ  Export  รายชื่อ user 
---------------------------------------------------------------------

<?php
header('Content-Type: text/xml');
header('Content-Disposition: attachment; filename="file_user.xml"');
header('Content-Transfer-Encoding: binary');

$db= mysql_connect("127.0.0.1", "root","password");
mysql_select_db("km", $db);
$rs = mysql_query("select * from  table_user  " , $db );

echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" ;
echo "<root>";
while($r = mysql_fetch_object($rs )){
echo "<user>";
 etag ("id",$r->id );
 etag ("username" , $r->username );
 etag ("password" , $r->password );
echo "</user>";              
}
echo "</root>";

function etag($tagname, $data ){
                echo "\n<$tagname>$data</$tagname>";
}
?>

จะได้ XML  
ดังนี้ 
<?xml version="1.0" encoding="UTF-8" ?>
  - <root>
- <user>
    <id>1</id>
  <username>admin</username>
  <password>aa</password>
  </user>
- <user>
  <id>2</id>
  <username>prakarn</username>
  <password>don't_use_this_for_next_delete</password>
  </user>
  </root>

ข---------------------------------------------------------------------

   ส่วนระบบ  ที่ดึงข้อมูลไปใช้ 
  จะมี code php ดังนี้ 


  file  get_xuser.php 
ข---------------------------------------------------------------------
<?php 
// phpinfo();

//$dom = new DOMDocument('1.0' , 'UTF-8');

/
$query = "http://127.0.0.1/xml/use/ws_user.php" ;
echo "$query";

$xml = file_get_contents($query);
echo "<BR>load xml";
echo "<BR>xml=" ;
echo "<pre>";
echo htmlentities($xml);
echo "</pre>";

$dom = new DOMDocument('1.0' , 'UTF-8');
if($dom->loadXML($xml) == false){
die('Paarsing failed');
}else{
echo "<BR>load  xml to dom ok";
}

echo "<BR>dom=" ;
print_r($dom );


$phpobject = simplexml_load_string($xml) or die("can not load simple xml ");
echo "<pre>";
print_r($phpobject);
echo "</pre>";



?>

  จาก ตัวอย่างเป็น  2 วิธีในการดึงข้อมูล  ถ้า PHP 4 ต้อง ใช้ DOM
  แต่ PHP 5 จะมี SimpleXML Module แปลงมาเป็น โครงสร้าง PHP Object เลย  
   ซึ่งจะง่ายกว่า วิธีนี้ แนะนำใน WebSite ของ Yahoo!  Developer สำหรับ PHP 5 






จะได้ ผลลัพธ์ ดังด้านล่าง  
http://127.0.0.1/xml/use/ws_user.php
load xml
xml=
<?xml version="1.0" encoding="UTF-8" ?><root><user>
<id>1</id>
<username>user1</username>
<password>pass1</password></user><user>
<id>2</id>
<username>user1</username>
<password>pass2 Test</password></user></root>

load xml to dom ok
dom=DOMDocument Object ( )

SimpleXMLElement Object
(
    [user] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [id] => 1
                    [username] => user1
                    [password] => password1
                )

            [1] => SimpleXMLElement Object
                (
                    [id] => 2
                    [username] => user2
                    [password] => password2
                )

        )

)
ซึ่งในโปรแกรม นี้จะแสดง วิธีโหลด เข้ามาทั้งแบบ DOM และ แบบ SimpleXML
แต่จะพบว่า SimpleXML จะได้โครงสร้าง เป็น PHP เลยซึ่งน่าจะง่าย ในการ parse มากกว่า  ส่วนวิธีการ parse หรือวนลูป แล้วอ่าน  element/attribute ต่างๆนั้น  อาจศึกษาใน link reference  และ document php  เพิ่มเติม


21 October 2010

Code Sample :: Show Tooltip ( Cross Browser IE , Chrome , FireFox )

  /* Function Show Tooltip form URL
     Browser IE7 ,Google Chrom ,Mozilla FireFox
     By      Thitipong Samranvanit.
     Date    21-10-2010
     JS         Native JavaScript  ,  jQuery     
     Parameter : topic_id , object (DOM) , event (DOM)        
  */
  function showtooltip(tid,obj,event){
             /* <<<<--- Change To Your URL */
            var url = "index.php/getview/admin_show_detail/" +  tid ;
            var tt = $("#tooltip");
            var difx = 15 ;
            var dify = 15 ;
           
            var xx , yy ;
            var e = window.event  /* IE TYPE */ ;
            if( e ){  /* IE TYPE */
               xx = e.clientX + difx ;
               yy = e.clientY + dify ;
            }else{   /* FIREFOX and  Chrome */
               xx = event.pageX + difx ;
               yy = event.pageY + dify ;
            }
            tt.html("OOO1" + e + "]");  
            tt.html("OOOP2");  
            //tt.html ( xx + " : " + yy )  ;

            tt.css('z-order',99).css("position","absolute").css("top" ,yy ).css("left" , xx );
            tt.css("border","1px solid #000000").css("background-color","lightyellow");
           
            tt.load(url);
            tt.css("opacity","0.95").show();
  }

  function hidetooltip(){
        $("#tooltip").hide();
  }


------------------------------------------------------------------
Usage 

HTML/PHP File  

<img src=”…”
Onclick=”…”
onMouseOver="javascript: showtooltip(<?=$entry['id'] ?> ,this ,event)"
onMouseOut="javascript: hidetooltip( )" 
> 


In this php file  
I pass parameter  (  topic_id,  this , event ) 
this = image tag object in DOM 
event =  MouseEvent  in DOM


17 October 2010

windif , wget

wget   for windows  ( Linux Tools for download file from  URL , ex . http://www.aaa.com/myfile.html   )
http://pages.interlog.com/~tcharron/wgetwin.html


WinDiff  
http://www.computerperformance.co.uk/w2k3/utilities/windiff.htm
( change font to 10 , for easy reading )

c:\>wget\wget  http://www.google.co.th

--02:05:12--  http://www.google.co.th:80/
           => `index.html.1'
Connecting to www.google.co.th:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]

    0K -> ........

02:05:13 (8.60 KB/s) - `index.html.1' saved [8805]
c:\>dir   *.*
10/17/2010  02:06 AM             8,805 index.html





======================================
example with  findstr  in win xp


C:\>
C:\>
C:\>d:\wget\wget http://stackoverflow.com/questions/2967176/where-is-svn-exe-in-
my-machine
--02:11:21--  http://stackoverflow.com:80/questions/2967176/where-is-svn-exe-in-
my-machine
           => `where-is-svn-exe-in-my-machine'
Connecting to stackoverflow.com:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 39,609 [text/html]


    0K -> .......... .......... .......... ........              [100%]


02:11:26 (37.77 MB/s) - `where-is-svn-exe-in-my-machine' saved [39609/39609]




C:\>type where-is-svn-exe-in-my-machine | findstr /N "jquery"
14:    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/
jquery/1.4.2/jquery.min.js"></script>


C:\>





This example , found  jQuery in this page at line 14  .  




16 October 2010

แก้ปัญหา IE จำ Catch ของ jQueryUI ครับ เมื่อใช้ Dialog

แก้ปัญหา IE จำ Catch ของ jQueryUI  ครับ  เมื่อใช้ Dialog
เป็นปัญหาเวลาจะแสดง  Dialog

กรณีใช้ Chrome และ FireFox จะไม่จำ Cache
แต่ถ้า IE จะจำ Cache จึงมักมีปํญหากับ  Ajax และ Dialog , load
ครับ


แก้ไขตามโค้ดแนวๆนี้ครับ

ลองดูโค้ด ครับ

  $(document).ready(function(){
//$.ajaxSetup({cache: false}});
$.ajaxSetup({cache: false});       // &lt;------- ใส่ตรงนี้เข้าไป  :)
     $("#dialog").dialog({ autoOpen: false });
$("#dialog").dialog( "option", "closeOnEscape", true );
$("#dialog").dialog({ modal: true });
$("button[tag=bt1]").click( function(obj, data){

//alert("ok this is tag=bt1 : " + $(this).attr("rowid")    );
var rowid ;
rowid=  $(this).attr("rowid");
//$("#iframe1").attr("src","edit.php?id=" + rowid  );
$("#dialog").load("edit.php?id=" + rowid );

$("#dialog").dialog({title:"Title Test",width:600,height:450});
$("#dialog").dialog('open');
//location.reload(true); // refresh page
});
  });

สรุปว่า ให้ใส่
$.ajaxSetup({cache: false});
เพื่อ เคลียร์แคช ไว้ข้างหน้าโค้ดอื่นๆ
ไม่งั้นจะแสดง Dialog เดิมๆ ข้อมูลเก่าๆ แม้จะแก้ข้อมูล ใน database แล้วก็ตาม


ในโค้ดนี้แสดง วิธี ผ่านค่า ไปยัง page ถัดไปที่ไว้แสดงการแก้ไขข้อมูลด้วยครับ
และมีการใช้ $(this) แต่ไม่ขอกล่าวรายละเอียดครับ ..

=================================
สำหรับ  แถวต่างๆที่แสดง
จะมี ปุ่มกดอยู่ ที่ปุ่มกดจะมี attribute เพิ่มเข้ามา
เพื่อใช้อ้างอิง ต่อไป จาก jQuery ครับ

นี่คือตัวอย่าง  ในโค้ดนี้ ดึงข้อมูล จาก joomla มาแสดง
โดยแสดงแบบง่ายๆ ไม่สนใจความสวยงามครับ
แล้ว จับ id ใส่ไว้ในปุ่มกดเลย
ส่วน $(this) นั้น ก็ คือ  object (DOM) ปุ่มกด นั้่นๆ  นั้นเ่อง


$rs = mysql_query("SELECT * from jos_content");
while ($row = mysql_fetch_object($rs)){
echo "<hR>";
//print_r($row);
echo "<BR>ID: " . $row->id ;
echo " " ;
echo "<BR>TITLE: <font color=blue>" . $row->title . "</font>" ;
echo " " ;
echo "<BR>INTRO: " .$row->introtext ;
echo "<BR><button tag=\"bt1\" rowid=\"$row->id\" >edit</BUTTON>";
}

13 October 2010

reset mysql password in windows environment


mysqld-nt --skip-grant-tables --user=root

เปิด อีก cmd.exe

C:\Users\user>mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql
Database changed
mysql> update user set PASSWORD=PASSWORD('aa') where user='root';
Query OK, 0 rows affected (0.00 sec)Rows matched: 1  Changed: 0  Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.02 sec)
mysql> quit
Bye

C:\Users\user>mysql -u root -p
Enter password: **
Welcome to the MySQL monitor.  
Commands end with ; or \g.Your MySQL connection id is 3Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Close mysql-nt.exe  ( first window ) by
C:\Users\user>mysqladmin shutdown -u root -p
Enter password: **

C:\Users\user>

10 October 2010

Java Package for Network

Apache Common  - Network

http://commons.apache.org/net/
http://packages.debian.org/unstable/java/libcommons-net-java
http://www.informit.com/guides/content.aspx?g=java&seqNum=40


Other Apache Commons
http://commons.apache.org/

เพิ่ม VirtualPath ให้ Apache บน WinXP

ตัวอย่างการสร้าง
path ย่อย ที่ไม่ได้อยู่ใน Apache folder
กรณีนี้ใช้ C:\AppServ\www
ถ้าต้องการให้อยู่นอก www แก้ไขโดยเพิ่ม
ท้ายไฟล์ C:\AppServ\apache2.2\conf\httpd.conf

ตัวอย่าง path ที่เก็บข้อมูลคือ

Alias /path1/app1 "C:/doc1/www/app1" 
 
<Directory "C:/doc1/www/app1" > 
#Options Indexes FollowSymLinks MultiViews ExecCGI   -- Comment  
   Options Indexes FollowSymLinks MultiViews ExecCGI
   AllowOverride All
   Order allow,deny
   Allow from all  
<\Directory>
------------------------
Othe Example 
Alias  /download/cpu   "C:/checkCPU"
Alias /app/tasklist    "D:/php_app/tasklist"  


จะเปิดดูข้อมูลได้ที่ http://127.0.0.1/doc1/www/ ที่เครื่องของตัวเอง
โดยถ้าไม่มี index.html
จะแสดง เป็น List รายการไฟล์ให้

setup apache2 on ubuntu-server 6

************************************************************************
Note by Thitipong samranvanit  
Ubuntu Server , Install with LAMP 
Sun VM VirtualBox , ver 3.2.8 
Date  9 / 10 / 2010   
Document tools : Ubuntu Server + vi  ( 6 )
************************************************************************
I download LiveCD-Server6 from Ubuntu 
and Install In HD ( Oracle VirtualBox )

set ipconfig by  

 # ifconfig eth0 192.168.1.102  netmask 255.255.255.0  up 

set default gateway by 
 # route add default via 192.168.1.1 

In my machin  use  Oracle VirtualBox 

1 NetworkCard is Bridge Mode , Adapter1 as Bridge Adapter , Cable Connected
2 , Adapther 2 as NAT  , Cable not connected

I start ping gateway by ping  192.168.1.1 
and after success , then ping  www.google.co.th

end ping process by  Ctrl + C  (  must  LEFT Ctrl in VirtualBox  )

******************************
Apache2
******************************
Apache2 is in /etc/Apache2
config not in  /etc/apache2/httpd.conf
But  config in /etc/apache2/apache2.conf 

root directory is in 
/var/www 

You must copy file from  /var/www/default-www/*.html.en  to  /var/www by "cp"
and copy *.gif ,*.png from /var/www/default-ww/*.* to /var/www
then rename *.html.en to *.html   by  command "mv"    

then  open browser on host PC ( ex. Windows XP + Chrome ) 
and   enter url  http://192.168.1.102   
then  you will find  Apache page 

start/stop apache2 by
# /etc/init.d/apache2 start 
# /etc/init.d/apache2 stop 
or you can use "sudo" if you not root
$sudo /etc/init.d/apache2 start 
( must enter password of root again ) 


*********************************
To Test PHP 
*********************************
Create 1 file named  phpinfo.php
add this below code


end then  save in  /var/www

open browser in Host File to browse file 
http://192.168.1.102/phpinfo.php

***********************************
Test Mysql
***********************************
mysql is in /etc/mysql  
with config file my.cfg

Can check mysql by run at prompt 
#mysql  {enter}   to run mysql client 
if mysql server running (by default ) 
it will connect to mysql server database
mysql> 

run command to show database by 
mysql>show databases;
will list database 

(now mysql is part of Oracle ) 

***********************************
SYSTEM 
***********************************
hostname can view by command 
#cat /etc/hostname 

installing new software
apt-get install [pacakge] 
this command may tell you unknown .

use aptitude for more information 
#aptitude install [pacakge]
or user 
#aptitude   
to display  GUI (text mode) on Linux 
quit gui by "q"  
user F1  on keyboard for help

for Searching package use "/"
searching Apache2 may use 
"apache"  or "httpd" , in this machin 
found  "apache" 

you will find description of many program
on aptitude 
( most linux program name very unclear for WinXP user)

***********************************
Download File
***********************************
you can download file with 
wget ( see in aptitude ) 

***********************************
NOTE: in this Ubuntu Server (TextMode Only ) 
,there is no other files in /var/www  
***********************************






   


install apache on centOS

ต้อง DEBUG  PHP บนเครื่อง CentOS
เคยลองบน  WinXP แล้ว มีปัญหา เลยต้องลง OS เ้อง เลย

************************************************

config  Apache httpd
บน  CentOS
ลองทำบน  CentOS Live CD
ไปโหลด Live CD ตัวเล็กๆ 700MB จาก


sudo yum install httpd mod_ssl


ตาม
http://articles.slicehost.com/2008/2/6/centos-installing-apache-and-php5
http://www.techiecorner.com/125/how-to-install-lamp-apache-php-and-mysql-in-linux-using-yum/

แต่ยังไม่ได้ลอง mysql + php


ตรวจสอบต้องตรวจโดย  su - ก่อนเพื่อเป็น root
แล้วค่อย ใช้
service httpd status
service httpd start 
ตาม  http://www.mail-archive.com/centos@centos.org/msg02899.html
http://www.linuxmail.info/how-to-start-stop-services-centos-5/

ลองเปิด web browser แล้วเลือก
Browse  http://127.0.0.1/  จะเห็นหน้า CenteOS


************************************************
ก่อน install อาจต้อง ติดตั้ง network ก่อน
set default gateway โดย
http://www.cyberciti.biz/faq/howto-rhel-fedora-linux-setup-default-gateway/

# vi /etc/sysconfig/networkSetup GATEWAY={Router-IP}, if router IP is 74.86.49.129, type:
GATEWAY=192.168.1.1
ตัวอย่าง IP แต่ส่วนมากเป็น .1.1

Restart network ด้วย


# /etc/init.d/network restart


แล้ว ถ้าขึ้น OK หมด ก็ ลอง ปิง  192.168.1.1 
แล้วค่อยลองปิง google.co.th


อ้ันนี้ตามที่ลองทดสอบ จะได้ DHCP จาก router เอง
เช่น  192.168.1.34 




******************************************************
install mysql โดย 
******************************************************


# yum install mysql               <-- mysql client  
# yum install mysql-server 
ต้องคอยตอบ y  เรื่อยๆ 


#service mysqld status 
#service mysqld start  


connect mysql client by 
#mysql  
will prompt  
mysql> 


check database by 
mysql> show databases;
mysql> show status; 




******************************************************
Enable Service SSH  for Remote Access ( command line ) 
******************************************************
# service sshd status 
# service sshd start 




--------------------------------------------------------------------
Install ftp  on centOS (NOT Complete ) 


Install 
ftp server ( not secure ) 
by 
# yum install vsftpd
# chkconfig vsftpd on
# service vsftpd start

OpenFirewall
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# service iptables start   <--- or restart   

if want to  Disable Firewall   - > #service iptables stop  

Test FTP 
$ ftp localhost

open at 
# vi /etc/vsftpd/vsftpd.conf
$ man vsftpd.conf

--  Help on  vsftpd  -- 
==================




====================================
SET  FTP  On  CentOS  , Thai/English

http://www.linuxlane.com/vsftpd-fedora-core-6-server/   <-- Thai
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch15_:_Linux_FTP_Server_Setup
http://www.cyberciti.biz/tips/rhel-fedora-centos-vsftpd-installation.html