Chủ Nhật, 30 tháng 11, 2008

Sử dụng Helper TinyMCE trong Cakephp 1.2

Sử dụng tinyMCE trong cakephp đã được chaubl hướng dẫn ở bài trước (http://i-php.net/2008/10/cakephp-tinymce-ibrowser/). Tuy nhiên ở đây tôi sẽ hướng dẫn các bạn sử dụng TinyMCE thông qua một helper TinyMCE của cakephp.
Cài đặt TinyMCE

Bạn có thể download bản tinymce mới nhất tại địa chỉ http://tinymce.moxiecode.com/download.php và copy thư mục /tinymce/jscripts/tiny_mce vào thư mục /app/webroot/js.
Tạo ra helper TinyMCE

Bạn tạo một helper tinymce theo đường dẫn : app/views/helpers/tinymce.php . Bạn vào  http://i-php.net/2008/11/helper-tinymce/ để lấy source nhé.
Sử dụng trong controller

Bạn khai báo sử dụng helper tinymce trong controller như sau:
var $helpers = Array('Form', 'Tinymce'); 

Sử dụng trong view

Sử dụng tinymce hepler trong view sẽ tương tự như sử dụng các hepler form, html trong cakephp. Để khai báo một ô textarea sử dụng tinymce bạn chỉ việc thêm đoạn code sau vào:
<?php echo $tinymce->input('content') ?>

Sau đây là 2 trang view code mẫu để các bạn tham khảo:

đoạn code 1:
<div class="form-container">
<?php echo $form->create('Page'); ?>
<fieldset>
<legend>Page</legend>
<?php
echo $form->input('title');
echo $tinymce->input('content');
?>
</fieldset>
<?php echo $form->end('Save'); ?>
</div>

đoạn code 2: ở đây sẽ cấu hình một vài option của tinyMCE
<div class="form-container">
<?php echo $form->create('Page'); ?>
<fieldset>
<legend>Page</legend>
<?php
echo $form->input('title');
echo $tinymce->input('content', null, array(
'theme' => 'advanced',
'theme_advanced_toolbar_location' => 'top',
'theme_advanced_toolbar_align' => 'left',
'theme_advanced_statusbar_location' => 'bottom',
));
?>
</fieldset>
<?php echo $form->end('Save'); ?>
</div>

Sự tiện ích khi sử dụng helper TinyMCE này là các bạn có thể tuỳ ý chọn ô textarea nào sử dụng tinyMCE cũng được, ta có thể tuỳ ý cấu hình từng ô nhập textarea cho phù hợp với ý đồ của mình. Good luck.

Helper TinyMCE

Bạn có thể tham khảo hướng dẫn sử dụng tại: http://i-php.net/2008/11/sử-dụng-helper-tinymce-trong-cakephp-12/

Tạo file app/views/helpers/tinymce.php.
<?php
class TinyMceHelper extends AppHelper
{

// Take advantage of other helpers
var $helpers = array('Javascript', 'Form');
// Check if the tiny_mce.js file has been added or not
var $_script = false;

/**
* Adds the tiny_mce.js file and constructs the options
*
* @param string $fieldName Name of a field, like this "Modelname.fieldname", "Modelname/fieldname" is deprecated
* @param array $tinyoptions Array of TinyMCE attributes for this textarea
* @return string JavaScript code to initialise the TinyMCE area
*/
function _build($fieldName, $tinyoptions = array())
{
if(!$this->_script)
{
// We don't want to add this every time, it's only needed once
$this->_script = true;
$this->Javascript->link('tiny_mce/tiny_mce.js', false);
}
// Ties the options to the field
$tinyoptions['mode'] = 'exact';
$tinyoptions['elements'] = $this->domId($fieldName);
return $this->Javascript->codeBlock('tinyMCE.init(' . $this->Javascript->object($tinyoptions) . ');');
}

/**
* Creates a TinyMCE textarea.
*
* @param string $fieldName Name of a field, like this "Modelname.fieldname", "Modelname/fieldname" is deprecated
* @param array $options Array of HTML attributes.
* @param array $tinyoptions Array of TinyMCE attributes for this textarea
* @return string An HTML textarea element with TinyMCE
*/
function textarea($fieldName, $options = array(), $tinyoptions = array(), $preset = null)
{
// If a preset is defined
if(!empty($preset))
{
$preset_options = $this->preset($preset);

// If $preset_options && $tinyoptions are an array
if(is_array($preset_options) && is_array($tinyoptions))
{
$tinyoptions = array_merge($preset_options, $tinyoptions);
}
else
{
$tinyoptions = $preset_options;
}
}

return $this->Form->textarea($fieldName, $options) . $this->_build($fieldName, $tinyoptions);
}

/**
* Creates a TinyMCE textarea.
*
* @param string $fieldName Name of a field, like this "Modelname.fieldname", "Modelname/fieldname" is deprecated
* @param array $options Array of HTML attributes.
* @param array $tinyoptions Array of TinyMCE attributes for this textarea
* @return string An HTML textarea element with TinyMCE
*/
function input($fieldName, $options = array(), $tinyoptions = array(), $preset = null)
{
// If a preset is defined
if(!empty($preset))
{
$preset_options = $this->preset($preset);

// If $preset_options && $tinyoptions are an array
if(is_array($preset_options) && is_array($tinyoptions))
{
$tinyoptions = array_merge($preset_options, $tinyoptions);
}
else
{
$tinyoptions = $preset_options;
}
}

$options['type'] = 'textarea';
return $this->Form->input($fieldName, $options) . $this->_build($fieldName, $tinyoptions);
}

/**
* Creates a preset for TinyOptions
*
* @param string $name
* @return array
*/
private function preset($name)
{
// Full Feature
if($name == 'full')
{
return array(
'theme' => 'advanced',
'plugins' => 'safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template',
'theme_advanced_buttons1' => 'save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect',
'theme_advanced_buttons2' => 'cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor',
'theme_advanced_buttons3' => 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen',
'theme_advanced_buttons4' => 'insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak',
'theme_advanced_toolbar_location' => 'top',
'theme_advanced_toolbar_align' => 'left',
'theme_advanced_statusbar_location' => 'bottom',
'theme_advanced_resizing' => true,
'theme_advanced_resize_horizontal' => false,
'convert_fonts_to_spans' => true
);
}

// Basic
if($name == 'basic')
{
return array(
'theme' => 'advanced',
'theme_advanced_toolbar_location' => 'top',
'theme_advanced_toolbar_align' => 'left',
'theme_advanced_statusbar_location' => 'bottom',
'theme_advanced_resizing' => true,
'theme_advanced_resize_horizontal' => false,
'convert_fonts_to_spans' => true
);
}

// BBCode
if($name == 'bbcode')
{
return array(
'theme' => 'advanced',
'plugins' => 'bbcode',
'theme_advanced_buttons1' => 'bold,italic,underline,undo,redo,link,unlink,image,forecolor,styleselect,removeformat,cleanup,code',
'theme_advanced_buttons2' => '',
'theme_advanced_buttons3' => '',
'theme_advanced_toolbar_location' => 'top',
'theme_advanced_toolbar_align' => 'left',
'theme_advanced_styles' => 'Code=codeStyle;Quote=quoteStyle',
'theme_advanced_statusbar_location' => 'bottom',
'theme_advanced_resizing' => true,
'theme_advanced_resize_horizontal' => false,
'entity_encoding' => 'raw',
'add_unload_trigger' => false,
'remove_linebreaks' => false,
'inline_styles' => false
);
}

return null;
}
}
?>

Thứ Bảy, 29 tháng 11, 2008

So sánh PHP vs Python

Bài viết này được tổng hợp từ nhiều nguồn khác nhau (bằng tiếng anh) cộng với kinh nghiệm viết PHP trong 5 năm và Python trong 5 tháng của tôi :D .

I.Giống nhau :

  • Là ngôn ngữ cao cấp , thông dịch và định kiểu động

  • Mã nguồn mở

  • Cộng đồng lập trình viên rộng lớn

  • Dễ học (so với Java , C hay Perl)

  • Dễ mở rộng (so với Java C++)

  • Rất khả chuyển , chạy được trên nhiều nền tảng mã không phải biên dịch lại (taats nhiên rồi) hay sửa code


II.Khác nhau :

1.PHP hơn

  • PHP kế thừa các curly braces để đánh dấu code block của C và dấu $ của Perl

  • Các câu lệnh switch và vòng lặp do..while

  • Toán tử gán , increment và decrement (++ và --)

  • Toán tử ternary operator/statement (... ? ... : ...)


    • Trong Python 2.5 có câu lệnh if .. else có tác dụng tương tự ("X if C else Y")





  • array rất mạnh ,đùng cho cả list và dict


  • tham chiếu ('$a =& $b' tức là khi biến  $b thay đổi, thì biến $a cũng thay đổi)





  • Có cả private, protected và public access modifiers cho cả phương thức và thuộc tính

  • Dùng cả abstract và final modifiers cho cả classes và methods

  • Có interfaces

  • $this là đối tượng mặc định , và không cần truyền ngược self để định nghĩa method như Python ( với Python chỗ này hơi chuối để định nghĩa test là method của một lớp cần định nghĩa :                                 def test(self)

  • Hỗ trợ code trên nhiều dòng (với Python phải thêm dấu \ vào cuối dòng nếu muốn)

  • Comment sướng hơn Python (# /* //)


(Các bạn đọc có đóng góp gì cứ comment nhét)

2.Python hơn

  • Ngôn ngữ sử dụng với các mục đích chung (Python có thể dùng để lập trình hầu hết mọi thứ , trong khi PHP chỉ dùng để lập trình web hay console . Tất nhiên có thể làm được việc khác nhưng không đáng kể )

  • Sử dụng indentation (thụt vào đầu dòng, và dòng mới) thay thế cho các dấu curly braces để đánh dấu các code block . (Tất nhiên là trông đẹp hơn , nhưng không thân thiện với HTML template cho Web )

  • Có namespaces và modules (PHP 5.3 mới có namespaces)

  • Truyền biến cho hàm hiệu quả hơn PHP nhờ cặp key=value pair , hỗ trợ tốt hơn cho giá trị mặc định của biến truyền vào hàm

  • Cho phép đa thừa kế (không biết là hay hay là dở nữa)

  • Introspection tốt hơn PHP Reflection

  • Mọi thứ từ biến tới đối tượng đều có kiểu tham chiếu

  • Có Threading

  • Document tốt hơn PHP  (nhưng chắc chắn là ít TUT ,Guide,comment,... hơn PHP)

  • Có thể lập trình GUI (Tất nhiên là PHP cũng có thể nhưng không thể bằng)

  • Có thể chạy trên .Net với IronPython hay nền Java với Jython (PHP cũng có thể chạy trên Java thậm chí trong cả các Application Server)

  • Có web server,Application server riêng , 100% viết bằng Python  .

  • lambdas và các hàm hỗ trợ để xây dựng hàm (PHP có create_function và closure)

  • cached byte-code (PHP cũng có nhưng không tốt bằng )

  • Unicode được hỗ trợ tốt hơn

  • Kiểm soát lỗi ngoại lệ tốt hơn

  • Chạy nhanh hơn PHP (Đúng là nhanh hơn nhưng ngốn CPU và Ram khủng khiếp :D )

Thứ Sáu, 28 tháng 11, 2008

generated list will be indexed

Sử dụng Element trong Cakephp

Element thật sự là cần thiết khi chúng ta muốn sử dụng một đoạn code nhiều lần trong view hoặc layout. Thay vì chúng ta viết đi viết lại nhiều lần trong các view với một đoạn source giống nhau thì chúng ta chỉ việc viết một lần trong element và sử dụng chúng nhiều lần. Việc tạo một element sử dụng nhiều lần trong cakephp sẽ rất dễ dàng khi chúng ta sử dụng hàm requestAction. Sau đây tôi sẽ hướng dẫn các bạn sử dụng element mà dùng được trong cả cakephp 1.1 lẫn cakephp 1.2.

Đầu tiên chúng ta sẽ tạo ra controller Post như sau:
<?php
class PostsController extends AppController {
var
$name = 'Posts';


function index() {
$posts = $this->Post->findAll();

//Kiểm tra xem hàm requestAction có được gọi hay không
if(isset(
$this->params['requested'])) {
return
$posts;
}
$this->set('posts', $posts);
}
}
?>

Trong hàm index trên ta sẽ kiểm tra xem nó có được gọi bằng hàm requestAciton hay không. Nếu có thì hàm sẽ trả về một mảng $posts. Bây giờ chúng ta sẽ tạo ra một element post.ctp (hay post.thml trong cakephp 1.1) có đường dẫn như sau: /app/elements/posts.ctp.
<?php

$posts = $this->requestAction('posts/index');
foreach($posts as $post):
echo $post['Post']['title'];
endforeach;


?>

Để sử dụng element trên, chúng ta chỉ việc thêm đoạn code sau vào các view hoặc layout là xong.
<?php echo $this->renderElement('posts');?>

Vậy là xong.

Thứ Năm, 27 tháng 11, 2008

Hàm tạo alias từ title


/**
*Hàm thay này có tác dụng thay thế các kí tự tiếng việt  và dấu cách bằng các ký tự không dấu và
*dấu '-'
*
*@author : không rõ
*@param string
*@return string
*/
function convert2Alias($cs)
{

$marTViet=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă",
"ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề"
,"ế","ệ","ể","ễ",
"ì","í","ị","ỉ","ĩ",
"ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ"
,"ờ","ớ","ợ","ở","ỡ",
"ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ",
"ỳ","ý","ỵ","ỷ","ỹ",
"đ",
"À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă"
,"Ằ","Ắ","Ặ","Ẳ","Ẵ",
"È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ",
"Ì","Í","Ị","Ỉ","Ĩ",
"Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ"
,"Ờ","Ớ","Ợ","Ở","Ỡ",
"Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ",
"Ỳ","Ý","Ỵ","Ỷ","Ỹ",
"Đ"," ");

$marKoDau=array("a","a","a","a","a","a","a","a","a","a","a"
,"a","a","a","a","a","a",
"e","e","e","e","e","e","e","e","e","e","e",
"i","i","i","i","i",
"o","o","o","o","o","o","o","o","o","o","o","o"
,"o","o","o","o","o",
"u","u","u","u","u","u","u","u","u","u","u",
"y","y","y","y","y",
"d",
"A","A","A","A","A","A","A","A","A","A","A","A"
,"A","A","A","A","A",
"E","E","E","E","E","E","E","E","E","E","E",
"I","I","I","I","I",
"O","O","O","O","O","O","O","O","O","O","O","O"
,"O","O","O","O","O",
"U","U","U","U","U","U","U","U","U","U","U",
"Y","Y","Y","Y","Y",
"D","_");
return str_replace($marTViet,$marKoDau,$cs);
}

tuan cho

Thứ Ba, 25 tháng 11, 2008

Cake bake - cake console toàn tập

Đã có bài viết của chaubl về việc sử dụng cake bake tuy nhiên bài viết này đề cập tới một vài kỹ thuật nhanh gọn khác .

Bình thường bạn sẽ phải gõ :

$cake bake

rồi sau đó trả lời từng câu hỏi cả cake bake như gen cái gì D/M/V/C/P/Q ... rồi gen thế nào ...?


  1. Muốn gen trực tiếp models :                    $cake bake model



  2. Muốn gen trực tiếp controller :                $cake bake controller



  3. Muốn gen trực tiếp view :                        $cake bake view



  4. Muốn gen trực tiếp models với tên :        $cake bake model tên_model



  5. Muốn gen trực tiếp controller với tên :    $cake bake controller tên_controller



  6. Muốn gen trực tiếp view với tên :            $cake bake view tên_controller tên_view



  7. Muốn gen view với tên với template :      $cake bake view tên_controller tên_template tên_view các template đặt ở đây : /cake/console/libs/templates/views và có thể viết thêm hoặc viết đè vào đây : /app/vendors/shells/templates/views


  8. Muốn gen controller giống kết quả của scaffold
    $cake bake controller Users scaffold


  9. Muốn gen controller thêm các action dành cho admin (cùng là add hay view nhưng admin sẽ có thể khác user thường , layout khác xử lý khác )
    $cake bake controller Users scaffold admin


  10. Muốn gen controller chỉ có các action dành cho admin
    $cake bake controller Users null admin


  11. Có cả help nữa nhé
    $cake bake model help


  12. Danh sách các Model
    $cake bake all


  13. Làm một phát sinh tất model -> controller -> views
    $cake bake all Tên_Model



Định viết tiếp vài kỹ thuật nữa nhưng số 13 là số đẹp đấy chứ ?

Thứ Hai, 24 tháng 11, 2008

auto counterCache và SEO url trong cakePHP

CakePHP Console

Hướng dẫn cách gencode bằng CakePHP console:


1. Start > Run > cmd [enter]

2. cd C:\AppServ\www\cake_1.2.0.7692-rc3\cake\console

3. cake -app C:\AppServ\www\cake_1.2.0.7692-rc3\app bake

( tham số -app để chỉ định đường dẫn đến thư mục app C:\AppServ\www\cake_1.2.0.7692-rc3\app )

4. Welcome to CakePHP v1.2.0.7296 RC2 Console

Thứ Tư, 19 tháng 11, 2008

happy teacher day!

I would like to send very special greetings for all my teachers & professor.

Happily, our BIT's CTO, mr. Ngoc performs somewhat as a very friendly instructor. Wish you health, smile & all the best on your day

Ill think bout you at every step I face to
greetings! :)

happy teacher's day

I would like to send very special greetings for all my teachers & professor.

Happily, our BIT's CTO, mr. Ngoc performs somewhat as a very friendly instructor. Wish you health, smile & all the best on your day

Thứ Ba, 18 tháng 11, 2008

code PHP ngắn thôi nhé!

trước nay hoangnd mới chỉ quen lập trình với các ngôn ngữ strongly-typed language như C#, Java, C/C++ (không tính javascript :P ). Sau trận benmark PHP với đại ca Ngọc (hiz hiz, thảm bại mất chầu bia :(( ) thì đã đầu tư một chút vào các dynamic language (PHP, Python).

PHP quả là linh động và thú vị, các đồng nghiệp ở BIT đang viết code khá nhanh và dễ dang. Thế nhưng, khi mà các bạn đang nghe đại ca Ngọc đang phàn nàn nhiều về việc viết comment trong quá trình code :P thì sao không thư giãn bằng cách viết code ngắn gọn hơn :).

ví dụ 1
// A lot of code
$status = fwrite($h, 'some text');
if (!
$status) {
log('Writing failed');
}


// Less code
${0} = fwrite($h, 'some text');
if (!${
0}) log('Writing failed');

// Even less code
fwrite($h, 'some text') or log('Writing failed');

ví dụ 2
// A lot of code
if ($age < 16) {
$message = 'Welcome!';
} else {
$message = 'You are too old!';
}


// Less code
$message = 'You are too old!';
if (
$age < 16) {
$message = 'Welcome!';
}


// Even less code
$message = ($age < 16) ? 'Welcome!' : 'You are too old!';

ví dụ 3
// A lot of code
$i = 0;
while (
$i < 100) {
$source[] = $target[$i];
$i += 2;
}


// less code
for ($i = 0; $i < 100; $source[] = $target[$i+=2]);

hi hi, trông hay chưa :P, sự thực là hầu hết các ngôn ngữ lập trình đều có khả năng viết code ngắn gọn như thế này. Thế nhưng, các đồng nghiệp sẽ có điều kiện thấy một ngôn ngữ mạnh mẽ hơn nhiều, đó là python :)

nhân đây các đồng nghiệp viết lại bài toán in ra các số từ 1 -> 20 với các điều kiện chia hết cho 3, 5, 15 đi :)

tham khảo:Arnold Daniels's blog

Thứ Ba, 11 tháng 11, 2008

Thế mạnh của PHP



Thứ nhất PHP có một kiến trúc độc nhất vô nhị , dựa trên triết lý "share nothing" mỗi luồng chạy php được webserver và ZendEngine thực hiện độc lập , giải phóng tài nguyên hoàn toàn sau khi kết thúc tác vụ .Điều này giúp cho PHP tuy và ngôn ngữ động và thông dịch nhưng lại có tốc độ thực thi rất nhanh và đặc biết là tiêu tốn rất ít tài nguyên. Một điểm nữa là giao thức HTTP (giao thức giao tiếp của web) cũng hoạt động tương tự như vậy "HTTP, each request is distinct"


Thứ 2  PHP được sinh ra để làm web (xem thêm)  . Nên thiết kết của PHP chắc chắn hơn hẳn các ngôn ngữ khác trong công nghệ web . Bản thân PHP cũng là một template engine rất mạnh thân thiện với web (HTML-CSS-Javascript).


Thứ 3 PHP là ngôn ngữ được dùng cho web phổ biến nhất thế giới , gần như tất cả các máy chủ web đều hỗ trợ PHP . PHP cũng có số lượng các lập trình viên web đông đảo nhất thế giới qua đó đã xây dựngđược một cộng đồng rộng lớn , lớn hơn rất nhiều các cộng đồng khác .




[caption id="" align="alignnone" width="480" caption="thống kê của netcraft"]thống kê của netcraft[/caption]

Xem thêm đánh giá của cộng đồng trên TIOBE , PHP đứng thứ 5 , quá cao so với một ngôn ngữ chỉ dùng làm Web - server side script .


Xem thống kê mới nhất của Nexen


Thứ 4 PHP là ngôn ngữ mà nguồn mở , nên với hàng triệu ứng dụng có sẵn , miễn phí , thư viện mã nguồn mở giúp cho việc lập trình trên ngôn ngữ này trở nên nhanh chóng và chất lượng .


Nếu như các ngôn ngữ khác có 1-2 sản phẩm ví dụ ASP.NET có một - hai sản phẩm diễn đàn thì PHP có vài chục sản phẩm có chất lượng tốt hơn nhiều .Có thể thấy điều tương tự qua các ứng dụng khác như : Blog , Shopping Cart , CMS .


Các thư viện của PHP nhiều hơn bất kì công nghệ lập trình web nào khác , được đóng góp bởi cả một cộng đồng rộng lớn , trong đó có các công ty IT hàng đầu như : Oracle , Yahoo ,IBM, Zend , FaceBook ..


Thứ 5 Với stack công nghệ mã nguồn mở LAMP bao gồm : hệ điều hành Linux , webserver Apache , Hệ quản trị cơ sở dữ liệu Mysql   và PHP . Đã làm nên một nền tảng mở mạnh mẽ với chi phí rất khiêm tốn . Nhưng dễ dàng mở rộng




[caption id="" align="alignnone" width="268" caption="Nguồn oracle"]Nguồn oracle[/caption]

Chính vì vậy các mạng xã hội 2.0 đã lựa chọn PHP thay vì các ngôn ngữ khác .


Kết luận : PHP là vô địch trên sân chơi web

Thứ Bảy, 8 tháng 11, 2008

Nhập môn RIA (Rich Internet Application)

Trước đây khi nhắc đến web người ta hiểu chúng là các nội dung tĩnh , qua một thời gian phát triển nội dung đã có thể được tùy biến và trở nên "động" và có tính tương tác cao hơn .  Ngày nay web đã có những sự thay đổi lớn lao , người ta nhắc đến các mạng xã hội tương tác giữa người với người , hay các "Ứng Dụng Web" phục vụ các công việc mà bình thường phải sử dụng các phần mềm độc lập .

RIA cũng là các ứng dụng web , cũng chạy trên các trình duyệt nhưng chúng khác ứng dụng web thông thường ở chỗ :

- Nhằm thay thế một phần hoặc hoàn toàn các ứng dụng desktop

- Thông thường sẽ hỗ trợ việc cộng tác , chia sẻ với các người dùng , nhóm người dùng

- (thông thường) Có thể chạy khi không có kết nối internet , và tiến hành cập nhật với server khi có kết nối trở lại

Có thể lấy ví dụ một vài RIA tiêu biểu :

googledocs,mindomo,splashup.com ..

Và ở việt nam hiện sắp xuất hiện phần mềm soạn bài giảng trực tuyến của fpt-visky-bachkim hay phần mềm soạn đề thi trực tuyến của bitjsc , phần mềm soạn thời khóa biểu trực tuyến của bit tech .

Công nghệ được sử dụng để tạo ra ứng dụng RIA thì có nhiều , nhưng thị phần chủ yếu thuộc về Flash-Flex của Adobe , Ajax-DHTML , và mới đây là SliverLight của M$ . Các nền tảng công nghệ này đủ mạnh để tạo các ứng dụng RIA lớn nhưng hiện các công ty việt nam còn chưa chú ý . Điều này cũng dễ hiểu vì việt nam chủ yếu làm outsource , hiện nay xuất hiện nhiều công ty làm các web 2.0 hay các mạng xã hội chứ các ứng dụng RIA thì chưa thấy nhiều . Về công nghệ thì chủ yếu là flash và DHTML , số các công ty đủ trình độ kỹ thuật để xây dựng các ứng dụng RIA cũng không nhiều , theo tôi biết thì có một vài công ty được thuê outsource các ứng dụng RIA với DHTML chủ yếu là webos (Hệ điều hành trên nền web) . Bachkim thì thực chất là online hóa sản phẩm violet (cũng được làm bằng flash là chủ yếu) . BIT jsc thì chủ yếu sử dụng Flex-Flash và một chút DHTML.

Thị trường RIA kể cả production và outsource hiện nay chủ yếu rơi vào các công ty Ấn Độ , Việt Nam muốn chen chân thì đầu tiên phải thay đổi cách tư duy của các nhà quản lý , rồi đến đội ngũ kỹ thuật ....

Thứ Sáu, 7 tháng 11, 2008

BIT FLV player 1.1

BIT FLV player 1.1

7/11/08 : Bit Flv player chính thức ra mắt .

Là một phần mềm chạy file flv (flash video) ,file này thường chạy khi download trên các trang chia sẻ video trực tuyến như Youtube.com về xem offline trên máy .

được viết trên nền tảng Adobe AIR có các tính năng :

  1. Chạy nhiều file flv cùng lúc

  2. Hỗ trợ kéo thả file Flv vào chương trình

  3. Seek trực tiếp vào file đang chạy


link download

Bản không kèm Adobe AIR (bạn phải cài Adobe AIR trước)

http://bitjsc.com/flvplayer/BitFLVPlayerV1.1.zip

có thể down Adobe AIR tại đây .

http://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe

Bản kèm Adobe AIR

http://bitjsc.com/flvplayer/BitFLVPlayerV1.1AIR.Include.zip