Thứ Ba, 6 tháng 12, 2011

Embedded Question (Câu hỏi phức)



Câu hỏi phức là dạng câu hỏi được thêm vào trong một câu hỏi khác hoặc một câu thông thường khác( is a question placed insede another question). Thực chất câu hỏi phức là câu hỏi được ghép từ 2 câu. Một câu là câu hỏi và câu còn lại là một câu thông thường hoặc là một câu hỏi khác.
Ví dụ các câu hỏi phức trong tiếng Việt như
Tôi không thể giải thích được tại sao tôi lại làm như vậy.
(Câu này được gộp vào từ 2 câu. “Tôi không thể giải thích được” và “Tại sao tôi lại làm như vậy”)
Anh có biết quyển sách này giá bao nhiêu?
(gộp vào của 2 câu hỏi. “Anh có biết” và “quyển sách này giá bao nhiêu”)
  • Câu hỏi phức có cấu trúc như sau:
    • [Chủ ngữ] + [Động từ/cụm động từ] + [từ để hỏi] + [chủ ngữ] + [động từ]
    • [subject] + [verb] + [....] + [subject]
    • Trong đó từ [Từ để hỏi] là những một từ đơn như When, Where, What, Which, Why, và How. Hoặc là cụm từ dùng để hỏi như how many, how long, what kind, vv.
    • Ví dụ:
      • Nobody knows what I need to do now

      • Không một ai biết tôi cần phải làm gì bây giờ

      • Only my mum knows why she was late

      • Chỉ có duy nhất mẹ biết vì sao chị ý đến muộn

      • I do not know exactly how much money I got left in my bank account

      • Tôi không biết chính xác tôi còn lại bao nhiêu tiền trong tài khoản

      • The police asked me how long I have parked my car here
      • Cảnh sát hỏi tôi đã đỗ xe ở đây trong bao lâu
  • Trong trường hợp có một câu hỏi được đặt trong một câu hỏi khác, chúng ta sử dụng mẫu như sau:
    • [Trợ động từ] + [chủ ngữ] + [động từ] + [từ để hỏi] + [chủ ngữ] + [động từ]
    • ([driect object] + [subject]  +[verb] +[])
    • Trong đó [Trợ động từ ] là một cụm từ như Could you tell, Do you know, Do you think, Did you decide , Did you hear , Are you sure, Did anyone tell you , have you head , can you tell me , Will you let me know ................
    • Ví dụ:
      • Could you tell me what time it is
      • Anh có thể cho tôi biết mấy giờ

      • Do you know what his name is

      • Cậu có biết tên của anh ấy là gì không?

      • Could you explain why you failed the exam

      • Con có thể giải thích vì sao con lại trượt kỳ thi?

      • Do you know how lovely she is

      • Cậu có biết cô ấy đáng yêu như thế nào không

      • Can you tell me how long the interview will take

      • Anh có thể nói cho tôi cuộc phỏng vấn kéo dài trong bao lâu

      • Do you know how much does this cost
      • Ấy có biết giá của nó là bao nhiêu không
    • Câu trả lời:


Thứ Hai, 5 tháng 12, 2011

Mục Tiêu Trong Học Tập

TÔI MUỐN ĐẶT MỤC TIÊU ĐẠT ĐƯỢC 300 TOEIC TRONG BA TỚI 
  • Lợi ích và nguyên nhân:
    • Tạo đà để tiến tới đạt được điểm cao hơn
    • nâng kiến thức English lên tầm mới
    • Tôi muốn xem thử bản thân tôi có đạt được hay không .
  • Kế hoạch hành động :
    • KH: 
      • THường xuyên học anh văn liên tục trong 3 tháng tới
      • Một ngày học khoảng 3 đến 4 tiếng dành cho anh văn (vào ngày thứ 2,4,6,3,5,7)
    • HĐ:
      • Tìm kiếm tài liệu (CD,Video,Ebook) nhất là phần đọc và nghe để rèn luyện thêm kỹ năng đọc và nghe
      • Chuẩn bị kỹ bài khi đến học trung tâm English Dương Minh (làm bài trước khi học. nghe CD).
  • Thời gian đạt được mục tiêu là ngày : 01 tháng 02 năm 2012 

MỤC TIÊU CHO SỨC KHỎE

Tôi quyết tâm đạt kết quả tốt sức khỏe hàng tháng.
  • Lợi ích và nguyên nhân:
    • Để trở nên toàn diện hơn
    • Để có nguồn năng  lượng dồi dào cho cuộc sống
    • Để chứng tỏ tôi có thể làm được .
  • Kế hoạch và hành động :
    • KH và HĐ:  
      • Ngủ trước 12h dù làm bất cứ việc gì
      • Buổi sáng chạy bộ khoảng 2 dòng tại công viên hoàng văn thụ 
      • Hít đất 15 cái / 1 lượt
      • Tập cơ bụng 30 cái/1 lượt
      • chiều Chủ nhật đi bơi .
  • Thời hạn đạt được mục là ngày 12 tháng 12 năm 2012 

Thứ Hai, 20 tháng 6, 2011

Tạo chữ nhấp nháy trên một control RichText Spark trong Flex 4


<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2010/08/13/creating-blinking-text-on-a-spark-richtext-control-in-flex-4/ -->
<s:Application name="Spark_RichText_blink_test"
        xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx">
    <s:layout>
        <s:HorizontalLayout horizontalAlign="center" verticalAlign="middle" />
    </s:layout>
 
    <fx:Declarations>
        <s:Animate id="fader"
                duration="500"
                repeatBehavior="reverse"
                repeatCount="0"
                target="{lbl}">
            <s:SimpleMotionPath property="alpha"
                    valueFrom="1.0" valueTo="0.0" />
        </s:Animate>
    </fx:Declarations>
 
    <s:Label id="lbl"
            text="BLINKING TEXT, I HATE YOU!"
            color="red"
            fontSize="32"
            creationComplete="fader.play();" />
 
</s:Application>

Thứ Ba, 7 tháng 6, 2011

Khái niệm về Flex

Thế nào là Flex? 

Cũng như Flash, Flex tạo ra file SWF và được trình bày bởi Flash Player. Tuy nhiên, Flex chỉ là một công cụ chủ yếu của người lập trình và cách thức bạn phát triển ứng dụng Flex hoàn toàn khác biệt với cách thức bạn phát triển Flash RIAs (Rich Internet applications). Tất cả các sự phát triển của flex phụ thuộc vào framework mà nó hỗ trợ cho bạn sử dụng lại hoặc phát triển thêm các thành phần giao diện người dùng, những tương tác dữ liệu, các hàm về sự kiện v.v...Bạn có thể tạo RIAs mã quen thuộc trong một môi trường-trung tâm, nhưng bạn vẫn còn gặt hái những lợi ích của việc ứng dụng Flash, trong đó bao gồm:

* Khả năng design và kế thừa giao diện mà không phải sợ giới hạn của trình duyệt
* Một môi trường runtime với việc triển khai gần như 100% cho tất cả mọi người sử dụng Internet.
* Khả năng mạnh mẽ của ngôn ngữ actionscript
* Khả năng tích hợp các phương tiện thông tin phong phú như streaming video và âm thanh.

Người nào sẽ sử dụng Flex ?

Flex được tạo ra dành cho các lập trình viên , chứ không phải cho các nhà thiết kế. Ngôn ngữ lập trình chính Flex( ActionScript 3) là hướng đối tượng vì thế thật dễ dàng nếu bạn đã có một số kinh nghiệm với các khái niệm OOP.

Những gì bạn sẽ cần mua ? 

Xây dựng các ứng dụng Flex có thể được miễn phí. Tất cả những gì bạn cần là miễn phí, mã nguồn mở Flex SDK, trong đó bao gồm:

* The Flex Framework - Nhưng thư viên class được định nghĩa trước
* The standalone compiler 

Những công nghệ phần mềm Adobe Flex có chi phí là:

* Flex Builder - The Eclipse-IDE dùng cho việc xây dựng giao diện nhanh chóng.
* Flex Charting - Thư viện giao diện dành cho việc vẽ các hình ảnh biểu đồ.
* LiveCycle Data Services (previously Flex Data Services) - The enterprise technology with built-in data management services, Flex-Ajax bridge, Java Message Service (JMS) adapter, and real-time collaboration tools.


Bạn xây dựng ứng dụng Flex như thế nào? 


Một khi bạn đã quyết định xem bạn sẽ sử dụng miễn phí Flex SDK hay Flex Builder IDE, bạn có thể bắt đầu phát triển RIA của bạn.
Bạn cần biết các ngôn ngữ sau:

* MXML là XML-based markup language dùng cho việc xây dựng các đối tượng hình ảnh
* Actionscript


Nếu bạn đang sử dụng miễn phí SDK, bạn sẽ sử dụng standalone compiler để biên dịch mã của bạn vào một swf file. Flex Builder có thể được đặt để biên dịch mã của bạn sẽ tự động tạo ra những mã code liên quan đến với trình duyệt.

Trong quá trình biên soạn, mã MXML của bạn được dịch sang mã ActionScript và sau đó tất cả các mã ActionScript được biên soạn vào tập tin nhị phân swf. Các tập tin swf có thể được tải lên máy chủ trang web, nơi mà sau đó nó được phục vụ lập dựa trên yêu cầu người sử dụng.


Thành phần của Flex? 

Flex 2.0 là sự kết hợp 2 công nghệ chính Multimedia eXtensible Markup Language (MXML) và Action Script dựa trên nền tảng phát triển Eclipse. Ngoài ra, còn một thành phần rất quan trọng khác của nền tảng Flex 2.0 là Dịch vụ dữ liệu Flex (Flex Data Services – FDS), được đưa ra để thay thế máy chủ trình diễn Flex (Flex Presentation Server) ở các phiên bản Flex trước đây


MXML 

Là ngôn ngữ dựa trên XML giúp tạo ra các ứng dụng Flex. Cấu trúc của MXML khá giống với HTML, ta có thể xem qua ví dụ nhỏ sau:

<mx:Button x="100" y="100" label="Submit Now" id="btn_submit" click="CheckForm()"/>

Nhìn vào đoạn mã trên, đối với những người có chút kiến thức về IT có thể hiểu ngay nó dùng làm gì. Tương tự với HTML, các file MXML cũng cho phép nhúng các đoạn script vào trong và gọi ở nơi thích hợp. Chỉ khác ở chỗ là HTML sử dụng Java còn MXML thì sử dụng Action Script. MXML mạnh hơn rất nhiều so với HTML bởi ngoài khả năng sử dụng các thành phần (component) phong phú được tạo sẵn, ta còn có thể tạo ra các component cũng như event . Có thể nói MXML mạnh mẽ không kém gì các ngôn ngữ lập trình thông thường hiện nay. Việc kết hợp các file MXML với nhau là việc rất dễ dàng, chính vì thế việc tái sử dụng hay xây dựng template cho 1 website trở nên nhẹ nhàng hơn.

Action Script 3.0

Action script 3.0 hỗ trợ mô hình lập trình hướng đối tượng (OOP) hoàn chỉnh, giới thiệu các kiểu dữ liệu cơ bản và đặc biệt là từ khóa sealed class giúp tăng hiệu năng của ứng dụng. Hơn hẳn các ngôn ngữ script khác, action script có hẳn một thư viện đồ họa giúp vẽ các ảnh vector và tạo effect lúc runtime. Action script + MXMLl kết hợp với thư viện component đồ sộ của flex giúp tạo ra các ứng dụng web cực kì mạnh mẽ về tính năng và mỹ thuật.

FDS

FDS có thể chạy tốt trên nhiều nền tảng khác nhau như Windows, Linux, Unix và làm việc tốt với hầu hết các máy chủ ứng dụng Java. FDS cung cấp một số công cụ quản trị và giám sát cơ bản có thể truy nhập thông qua trình duyệt. Tuy nhiên, FDS được đưa ra chủ yếu để triển khai và chạy các ứng dụng Flex, tăng khả năng tích hợp và liên kết dữ liệu cấp doanh nghiệp.

Sức mạnh của Flex

Các công cụ trong Flex Builder và Flex Data Services đã đơn giản hoá việc phát triển ứng dụng và làm cho bản thân các ứng dụng này hoạt động tốt hơn. Các nhà phát triển cũng không phải bỏ tiền ra để sử dụng thành phần phát triển ứng dụng này. Flex SDK miễn phí bao gồm tất cả công cụ chương trình biên dịch, chương trình gỡ rối, và các mã cần thiết để tạo các ứng dụng Flex. Hơn nữa, giờ đây Flex SDK cũng có thể dùng để tạo các ứng dụng hoạt động độc lập mà không cần có sự hỗ trợ của máy chủ.

Điểm mạnh

Khác với các phiên bản Flex trước đây, Flex 2.0 đã được cải tiến rất nhiều cả về tính năng và giao diện làm việc. Với Flex 2.0, người dùng khả năng chuyển đổi giữa thiết kế theo phương pháp kéo-thả và môi trường viết mã lệnh cho phép xây dựng từng phần của ứng dụng trong môi trường thích hợp nhất. Chẳng hạn, với khung nhìn thiết kế, người ta có thể kéo và thả các thành phần để bố cục ứng dụng rồi nhanh chóng xây dựng các phần trình diễn cơ bản cho ứng dụng. Trong khung nhìn mã lệnh, tất cả các trợ giúp viết mã cần thiết đều có sẵn để giúp hiệu chỉnh trực tiếp mã ứng dụng, thông tin định dạng (stylesheet) và các mã định nghĩa riêng của Flex như ActionScripts hay MXML.

Điểm yếu

Điểm yếu Flex Builder lại chỉ tương thích duy nhất với môi trường Windows, điều mà người ta ít thấy ở các sản phẩm của hãng Adobe .Mặc dù Flex builder được phát triển trên nền tảng Eclipse – nền tảng được thiết kế để thực thi trên nhiều môi trường khác nhau và có FDS rất mạnh mẽ.
Mặc dù việc tạo ra các ứng dụng Flex là khá dễ dàng đối với các nhà phát triển đã quen với lập trình ứng dụng Web và dịch vụ Web, Flex vẫn có một số thành phần khá phức tạp đối với các lập trình viên chưa thành thạo. Tuy vậy, bộ công cụ hỗ trợ cho lập trình viên của Flex khá mạnh với các ví dụ mẫu, hướng dẫn giải quyết tình huống trong từng hoàn cảnh cùng các trợ giúp khác giúp người dùng dễ dàng vượt qua các khó khăn trong quá trình phát triển ứng dụng Flex.
Với những gì hiện có, Flex xứng đáng được vinh danh tại 2007 Technology of the Year Awards . Tương lai của RIA cần những cú huých như thế này để ngày càng phát triển lên những tầng cao mới. Flex đã mang lại bước tiến nhảy vọt cho RIA nói riêng và IT thế giới nói chung.

Thứ Tư, 20 tháng 4, 2011

Create a sample web crawler (auto content)

I'll create a sample project: auto download content from a website using  HtmlAgilityPack and c#


  1. Create new Console project
  2. References HtmlAgilityPack.dll to web application
  3. Create class with content:
  4. In main function type:
  5. Completed
Note: 
  1. class Cralwer source:
    class Crawler
        {
            public string Url
            {
                get;
                set;
            }
            public Crawler() { }
            public Crawler(string Url) {
                this.Url = Url;
            }

            public XDocument GetXDocument()
            {
                HtmlAgilityPack.HtmlWeb doc1 = new HtmlAgilityPack.HtmlWeb();
                doc1.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
                HtmlAgilityPack.HtmlDocument doc2 = doc1.Load(Url);
                doc2.OptionOutputAsXml = true;
                doc2.OptionAutoCloseOnEnd = true;
                doc2.OptionDefaultStreamEncoding = System.Text.Encoding.UTF8;
                XDocument xdoc = XDocument.Parse(doc2.DocumentNode.SelectSingleNode("html").OuterHtml);
                return xdoc;
            }
        }
  2. Main source
static void Main(string[] args)
        {
            string url = "http://vnexpress.net/GL/Xa-hoi/";
            string xmlns = "{http://www.w3.org/1999/xhtml}";
            Crawler cl = new Crawler(url);
            XDocument xdoc = cl.GetXDocument();
            var res = from item in xdoc.Descendants(xmlns + "div")
                      where item.Attribute("class") != null && item.Attribute("class").Value == "folder-news"
                      && item.Element(xmlns + "a") != null
                      //select item;
                      select new
                      {
                          Link = item.Element(xmlns + "a").Attribute("href").Value,
                          Image = item.Element(xmlns + "a").Element(xmlns + "img").Attribute("src").Value,
                          Title = item.Elements(xmlns + "p").ElementAt(0).Element(xmlns + "a").Value,
                          Desc = item.Elements(xmlns + "p").ElementAt(1).Value
                      };
            foreach (var node in res)
            {
                Console.WriteLine(node);
                Console.WriteLine("\n");
            }
            Console.ReadKey();                   
        } 

Done, Wish you success!!