Datgs' Blog

Quyết chiến quyết thắng !

Archive for the category “Development Tools”

Ma thuật với jQuery Deferred

Những ai đã từng làm việc với jQuery đặc biệt là với các hiệu ứng Animation hoặc Ajax với tính năng callback. Chắc hẳn bạn cũng đã từng điên cái đầu với những hiệu ứng kết hợp phức tạp, nối tiếp nhau… Nó làm cho mã nguồn trở nên rối như tơ vò. Mức độ phức tạp ngày một tăng khi bạn phải callback nhiều tầng nhiều lớp.

Ví dụ đơn giản là bạn muốn thực hiện 3 ajax call kế tiếp nhau, sử dụng kết quả của nhau. Bạn làm thế nào

$.ajax({…

success : function(){

$.ajax({…

success: function(){

$.ajax({…

success : function(){}

}

}

}

});

Bức tranh tương tự với các hiệu ứng animation của  jQuery.

Rất nhiều dư thừa trong đó. Và đặc biệt là rất khó phát triển, thay đổi … theo chiều sâu tính bằng số lượng của các ajax call bạn cần giải quyết.

Nhưng jQuery đã nhận ra điều đó và giải quyết nó từ jQuery 1.5

Với $.Deffered, bạn không phải lo lắng về những điều đó nữa.

function callAjax1(){

$.ajax({..});

}

function callAjax2(){

$.ajax({..});

}

function callAjax3(){

$.ajax({..});

}

$.when(callAjax1).then(callAjax2).then(callAjax3)

Bạn cũng có thể tự tạo defered cho các hiệu ứng như:

function getData(){
return $.get(‘/foo/’);
}
function showDiv(){
var dfd = $.Deferred();
$(‘#foo’).fadeIn( 1000, dfd.resolve );
return dfd.promise();
}
$.when( getData(), showDiv() )
.then(function( ajaxResult ){
console.log(‘The animation + AJAX request are both done!’);           // ‘ajaxResult’ is the server’s response
});

Có lẽ không cần phải nói thêm về tính hữu ích của nó. Tất cả đều có thể xem ở website của jQuery.

Lỗi in ấn IE7 – Printing crashes IE7

Lỗi chức năng này có nguyên nhân cực kỳ đơn giản khiến mình mất khá nhiều thời gian để fix, thực tế là để search google.

Có một lỗi rất thường gặp khi in ấn với IE7 là lỗi khiến cho IE7 bị treo khi Ctrl+P hoặc sử dụng javascript window.print().

Nguyên nhân là do css cho media=”print” của bạn hoặc media=”all” của bạn có một số định nghĩa float:left hoặc right khiến cho việc sinh ra file in ấn của IE7 vào một vòng lặp vô tận.

Để khắc phục lỗi này, đơn giản là hãy đảm bảo clear sau khi float hoặc tốt nhất là bỏ float khỏi css printing.

Để xem lỗi, bạn có thể chuột phải màn hình và chọn print preview. Bạn sẽ thấy số trang in tăng liên tục mà không có điểm dừng.

Kho phần mềm nguồn mở hosted tại Việt Nam

Một số công ty, tổ chức tại Việt nam hiện đã cung cấp các server lưu trữ phần mềm nguồn mở. Tìm kiếm, tải về và cập nhật từ các kho này đương nhiên là nhanh hơn nhiều so với các kho ở nước ngoài.

1- FPT

Địa chỉ server của FPT là http://mirror-fpt-telecom.fpt.net

Tại đây có các bản Linux Fedora, Ubuntu, CentOS, Mandriva, Debian, OpenSUSE, Slackware và một số phần mềm: OpenOffice, KDE, GNOME, Apache, ….

Trong các bản Linux, Ubuntu có vẻ đầy đủ hơn cả gồm các file iso cho desktop và server từ 6.04 đến bản mới nhất là 8.10. Ngoài ra còn có các kho phần mềm (repository) để cài đặt và cập nhật. Thay cho các repo của Ubuntu có thể add các địa chỉ sau:

deb http://mirror-fpt-telecom.fpt.net/ubuntu/intrepid main restricted universe multiverse
deb http://mirror-fpt-telecom.fpt.net/ubuntu/intrepid-security main restricted universe multiverse
deb http://mirror-fpt-telecom.fpt.net/ubuntu/intrepid-updates main restricted universe multiverse
deb http://mirror-fpt-telecom.fpt.net/ubuntu/intrepid-proposed main restricted universe multiverse

(Bỏ chọn các kho tương ứng của Ubuntu).

OpenSUSE cũng có chất lượng kho tương đương Ubuntu (gồm cả bản iso 11.1 và các repo). CentOS có bản mới nhất là 5.2.

Mandriva trên server này quá cũ (chỉ có bản 2009.1 alpha và không cập nhật, chắc là không được đăng ký trong mirror list của Mandriva). Các phần mềm khá hơn: KDE có bản mới nhất 4.2, OpenOffice có bản 3.0 hoàn toàn Việt hóa, Firefox có bản 3.1 beta2.

Nhìn chung, server của FPT có nhiều PMNM, tốc độ khá nhanh (khoảng 250 – 300KB/s) xứng đáng là cty Tin học số 1 Việt nam. Việt nam thôi vì cách quản lý còn tùy hứng, cái nào không quan tâm thì bỏ. Hy vọng là FPT sẽ cải tiến.

2- OpenLAB:

Tên thì hoành tráng nhưng kho phần mềm có mỗi Ubuntu 8.10 và Moblin. Với Ubuntu 8.10 có thể add các repository này:

deb http://www.oss-hcm.gov.vn/ubuntu/ intrepid main restricted universe multiverse
deb http://www.oss-hcm.gov.vn/ubuntu/ intrepid-security main restricted universe multiverse
deb http://www.oss-hcm.gov.vn/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://www.oss-hcm.gov.vn/ubuntu/ intrepid-proposed main restricted universe multiverse
deb http://www.oss-hcm.gov.vn/ubuntu/ intrepid-backports main restricted universe multiverse

Chưa dùng bao giờ.

Chuyển đổi dữ liệu từ MySQL sang MSSQL

1. Vấn đề

Việc chuyển đổi dữ liệu giữa hai hệ quản trị này thực sự là không cần thiết, bởi vì hai hệ quản trị có sự khác biệt lớn về mục đính, cách tổ chức dữ liệu…

Tuy nhiên, trong thực tế đôi khi vẫn cần phải thế. Vì mục đích lưu trữ hoặc chuyển đổi sang một hệ quản trị khác có tính năng mạnh mẽ hơn như Oracle hoặc MSSQL.

2. Công cụ chuyển đổi trực tiếp

Hãy tìm hiểu, hình như là không có?! Xét cho cùng, điều này là không cần thiết.

3. Nếu cần ?

Đơn giản là sử dụng phpMyAdmin để export dữ liệu ra định dạng MSSQL hoặc Oracle. Sau đó import dữ liệu đó vào các hệ quản trị tương ứng.

Lựa chọn xuất dữ liệu MySQL với phpMyAdmin

Lựa chọn xuất dữ liệu MySQL với phpMyAdmin

4. Lỗi tương thích

Đang tìm hiểu…

Apache modules

mod_evasive

mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera. mod_evasive presently reports abuses via email and syslog facilities.

Cài đặt apache, php, mysql trên windows (cập nhật)

Chú ý: chỉ áp dụng chính xác cho phiên bản apache2.2.x php5.2.x và mysql 5.x, với các phiên bản khác có thể có một chút đổi khác.

Có thể chỉ phù hợp với những người có kinh nghiệm cài đặt Apache, PHP và MySQL. Nếu hướng dẫn dưới đây là không đầy đủ. Bạn có thể tìm một hướng dẫn chi tiết hơn cho từng mục.

0. Chuẩn bị

Chú ý duy nhất là nếu bạn cài đặt đè lên bản apache cũ, bạn hãy xóa file config cũ đi. Vì khi cài đè apache không đè các file config.

1. Các bộ cài

Apache 2.2.x tải về từ  website http://httpd.apache.org/ (chọn bản MSI installer)

MySQL5.xtải về từ website http://dev.mysql.com/downloads/mysql/5.0.html (chọn bản MSI installer)

PHP5.2.x tải bản zip dành cho windows tại http://www.php.net/downloads.php.

2. Cài đặt

Cài đặt Apache2.2.x bình thường với cấu hình cơ bản là localhost, localhost, <admin email>, 8080 hoặc 80. Chú ý một trong hai cổng 8080 hoặc 80 phải tự do, tức là chưa có dịch vụ nào sử dụng nó.

Cài đặt MySQL5.x bình thường. Đến phần cấu hình next cho đến khi được yêu cầu nhập root password. Bạn nên chọn một password. Với server đang phát triển, thường chọn mật khẩu root là 123456.

PHP giải nén và chú ý ghi nhớ đường dẫn đến thư mục PHP của bạn.

3. Cấu hình

Để Apache2.2.x chạy PHP dưới dạng một module bạn làm như sau

Mở file httpd.conf của Apache (nằm trong thư mục conf, nơi bạn đã cài apache)

Thêm vào httpd.conf đoạn cấu hình

LoadModule php5_module “E:\WEBSERVER\php5\php5apache2_2.dll”
AddType application/x-httpd-php .php
PHPIniDir “E:\WEBSERVER\php5″

LoadModule php5_module “PHP_PATH\php5apache2_2.dll”

AddType application/x-httpd-php .php

PHPIniDir “PHP_PATH”

Với chú ý rằng PHP_PATH là nơi bạn đã giải nén PHP.

Để Apache2.2.x chọn index.php làm trang web mặc định để

Tìm tới dòng

DirectoryIndex index.html

Sửa lại thành

DirectoryIndex index.html index.php

Nếu bạn muốn index.php có ưu tiên cao hơn, bạn có thể chuyển nó về trước index.html

DirectoryIndex index.php index.html

Chuẩn bị file php

Tìm trong thư mục bạn đã giải nén PHP file php5ts.dll và copy nó vào thư mục bin của apache.

Trong thư mục bạn đã giải nén PHP, copy toàn bộ các file *.dll bạn nhìn thấy vào trong thư mục Windows/system32 chú ý chỉ copy file bạn nhìn thấy, không cần copy các file trong thư mục

Bước này chỉ là kinh nghiệm của tôi qua việc cài đặt các phiên bản trước. Có thể trong phiên bản này bước này không còn cần thiết nữa. Tuy nhiên, tôi vẫn thường làm theo cách này và không gặp bất cứ trục trặc nào.

Trong thư mục bạn đã giải nén PHP, copy php.ini-dist và sửa tên file bạn vừa copy thành php.ini.

Bạn sửa luôn php.ini-dist thành php.ini cũng không sao cả.

Cấu hình php.ini

1. Mở file php.ini bằng notepad, notepad++ hay wordpad

2. Tìm trong php.ini từ khóa doc_root và sửa thành

doc_root = APACHE_PATH/htdocs

* Trong đó APACHE_PATH là nơi bạn đã cài đặt apache.

* Chú ý rằng

htdocs là nơi mặc định của apache để đặt các public files (html, php). Bạn có thể cấu hình lại, hoặc dùng virtual host, hoặc dùng Script-Alias… Tuy nhiên, nếu bạn mới bắt đầu sử dụng Apache thì bạn không cần phải quá quan tâm đến vấn đề này. Chỉ cần cấu hình mặc định là được.

3. Tìm trong php.ini từ khóa extension_dir và cấu hình thành

extension_dir = PHP_PATH/ext

* extension_dir là đường dẫn đến nơi bạn để các thư viện mở rộng của PHP

4. Tìm các dòng ;extension=php_*.dll đó là các extension mà php cung cấp cho bạn. Chú ý rằng nếu có ; tức là thư viện đó chưa được sử dụng. Nếu bạn muốn sử dụng thư viện nào, chỉ cần bỏ dấu ; . Các thư viện cần đề dev bao gồm

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_soap.dll

5. Copy các file *.dll trong thư mục PHP_PATH vào thư  mục system32 của windows (WINDOWS/system32) (nhắc lại một câu ở trên vì thao tác này khá là dễ bị quên)

4. Hoàn thành

Khởi động lại apache là hoàn tất.

DbDesigner – phần mềm thiết kế csdl – like visio

http://www.fabforce.net/dbdesigner4/downloads.php

Nếu bạn không thích sử dụng đồ của Microsoft, bạn có thể thử ứng dụng này.

Online visio, công cụ visio online – tổng hợp

http://www.gliffy.com/about.shtml

Phần mềm ghi lại màn hình – Instant Demo

Chắc hẳn đã hơn một lần bạn gặp khó khăn khi trợ giúp khác hàng sử  dụng các chương trình phần mềm. Phải Print screen từng bản giao diện một, và viết từng comment một và trong trường hợp phần mềm quá lớn với nhiều tình huống sử dụng. Bạn sẽ mệt mỏi và tốn nhiều thời gian hơn.

Instant Demo, đơn giản là khi bạn  ấn nút RECORDING, toàn bộ các thao tác trên màn hình của bạn sẽ được ghi lại. Sau khi bạn đã ghi lại toàn bộ những gì … cần ghi,  bạn kết thúc và lưu tư liệu lại. Tư liệu này hoàn toàn có thể được chỉnh sửa, thêm các dòng comment và xuất ra dưới dạng Flash Slider.

Rất đơn giản phải không ^^

http://www.instant-demo.com/download.php

Chúc mọi người tiết kiệm thời gian làm Demo hoặc Help/Guide Slider.

Mercury LoadRunner 8.0

I. Các tính năng của Mercury LoadRunner 8.0

1. Công cụ Virtual User Generator để tạo User ảo (Virtual User), với các hành vi được copy từ thao tác của người duyệt web.

2. Điều khiển truy cập số lượng lớn (sử dụng nhiều VUser để truy cập vào web apps với kịch bản test đã xây dựng bởi Virtual User Generator).

4. Công cụ phân tích mạnh mẽ, chi tiết, ngoài việc test các thông số cơ bản như  Transaction, Loading time… Còn có thể kiểm tra các thông số tài nguyên của hệ thống (localhost hoặc deployment server trong cùng mạng nội bộ)

3. Công cụ phân tích đánh giá (Analys) bằng đồ thị rất mạnh mẽ và tiện dụng. Có thể tạo các báo cáo dạng *html.

II.  Đặc điểm của công cụ Mercury Loadrunner

-          Dễ sử dụng, bảo trì, tạo test script nhanh. Cung cấp dữ liệu kiểm tra rõ ràng và dễ hiểu.

-          Kiểm tra phiên bản mới của ứng dụng với rất ít sự thay đổi.

-          Hỗ trợ làm việc theo nhóm thông qua sự chia sẻ thư viện, thống nhất quản lý.

III. Cách sử dụng Mercury Loadrunner

-          B1: Recording scripts (Vuser Generator)

-          B2: Replaying scripts (Test script)

-          B3: Sử dụng controller để điểu khiển các Vuser scripts

-          B4: Sử dụng Analysis để phân tích kết quả :D

IV. Links

-          Download trial: http://downloads.mercury.com/cgi-bin/portal/download/loginForm.jsp?id=160

-          Website: http://www.mercury.com

V. Hướng dẫn sử dụng sơ bộ nè

http://www.mediafire.com/?sharekey=29d2c2feda5f209c4012e8015643d9c8418e752a73fd7cd8

Chúc các bạn thành công ^^


Post Navigation

Follow

Get every new post delivered to your Inbox.