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

Google làm việc như thế nào?

Google làm việc như thế nào?


Google chạy trên mạng phân tán gồm hàng ngàn máy tính giá rẻ (low-cost computers) và có thể thực hiện nhanh các xử lý song song. Google có 3 phần:
-          Googlebot
-          Indexer
-          Query processor

1. Googlebot, Google’s Web Crawle

Googlebot là robot thu thập dữ liệu web của google, nó tìm và lấy về các trang web và giao cho Google indexer. Chức năng của nó giống như trình duyệt web, nó gởi request tới web server để yêu cầu một trang web, tải nguyên trang về và giao cho bộ phận lập chỉ mục của Google.
Googlebot gồm nhiều máy tính gởi yêu cầu và tải về các trang rất nhanh. Thực tế, googlebot có thể gởi hàng ngàn yêu cầu một giây cùng một lúc. Để tránh làm tràn ngập web server, hay lấn áp các yêu cầu của người dùng, googlebot đã cố ý gởi các yêu cầu tới mỗi trang web chậm hơn khả năng của nó rất nhiều.
Googlebot tìm các trang qua 2 cách:
        Thông qua các liên kết form thêm URL: www.google.com/addurl.html
        Thông qua tìm kiếm các liên kết bằng cách thu thập trang web.
Các kẻ gởi thư rác đã tìm ra các để tạo ra các chương trình bắn phá form thêm URL ở địa chỉ trên, bằng hàng triệu URL với mục đích quảng cáo thương mại. Google từ chối các URL được gởi thông qua form thêm URL mà nó nghi ngờ là đang cố đánh lừa người dùng bằng các thủ thuật như: bao gồm các hidden text / link trên một trang, nhồi nhét quá nhiều từ không liên quan vào một trang, kỹ thuật che giấu (cloaking) (còn gọi là mồi câu và chuyển đổi), sử dụng dụng chuyển hướng lén lút (sneaky redirects), tạo ra các cửa ra vào (doorways), các tên miền hoặc các tên miền con có nội dung cơ bản giống nhau, ở câu truy vấn tự động tới google, và các liên kết tới các “láng giềng xấu” (bad neighbors). Do đó, ở form thêm url có sử dụng capcha để tránh các spambot.
Khi Googlebot tìm nạp một trang, nó cũng lấy tất cả các liên kết có trong trang và thêm vào một hàng đợi để thu thập sau đó. Googlebot nhắm tới thu thập một ít rác (spam) vì hầu hết các tác giả trang web chỉ liên kết tới các trang mà họ tin tưởng chúng là các trang chất lượng cao. Bằng cách thu thập các liên kết từ mỗi trang nó bắt gặp, googlebot có thể xây dựng nhanh chóng một danh sách các liên kết bao phủ rộng khắp thế giới web. Kỹ thuật này được gọi là thu thập theo chiều sâu (deep crawling), nó cũng cho phép googlebot thăm dò sâu trong một site riêng lẻ. Thu thập theo chiều sâu cho phép đạt tới hầu như mọi trang web, nhưng vì thế giới web rất lớn, việc này tốn thời gian, nên một số trang có thể chỉ được thu thập chỉ một lần một tháng.
Mặc dù chức năng của đơn giản, nhưng Googlebot phải được lập trình để xử lý một số thách thức. Trước tiên, kể từ khi Googlebot sẽ gửi ra các yêu cầu đồng thời cho hàng ngàn trang, hàng đợi các URL “visit soon” phải được liên tục kiểm tra và so sánh với các URL đã có trong chỉ mục của Google để tránh sự trùng lắp trong hàng đợi, dẫn tới googlebot phải lấy cùng một trang hai lần. Googlebot cũng phải xác định bao lâu sẽ viến thăm lại một trang. Google mong muốn tái chỉ mục các trang đã thay đổi để cung cấp kết cập nhật nhất, nhưng không muốn phí tài nguyên để tái chỉ mục cho các trang mà không có thay đổi nào.
Để thực hiện điều này, google liên tục thu thập lại các trang phổ biến thường xuyên thay đổi với một tỷ lệ tuần suất các trang thay đổi. những thu thập như vậy gọi là “fresh crawl”. Các trang báo được download hàng ngày, các trang có báo giá cổ phiếu được tải xuống thường xuyên hơn nhiều. “fresh crawl” thao tác với ít trang hơn “deep crawl”. Google kết hợp cả hai để sử dụng hiệu quả tài nguyên và làm cho các chỉ mục phù hợp với hiện tại.

2. Google’s Indexer

Các trang mà googlebot tải về dưới dạng văn bản (full text) sẽ được lưu trong CSDL chỉ mục của google.Chỉ mục này được sắp thứ tự abc theo các từ tìm kiếm (search key), mỗi mục sẽ lưu một danh sách các tài liệu có chứa từ này và vị trí nó xuất hiện trong văn bảng. Cấu trúc này giúp truy xuất nhanh tới các tài liệu có chứa các từ khóa truy vấn của người dùng.
Các từ phổ biến được gọi là stop words (vd: is, on, or, of, how, why, các số và ký tự đơn) và các dấu câu,
 được bõ qua, nó cũng chuyển các ký tự thành chữ thường để tăng hiệu xuất.

3. Google’s Query Processore

Bộ xử lý truy vấn có một số bộ phận, bao gồm giao diện người dùng (hộp tìm kiếm), “engine” đánh giá câu truy vấn và so khớp chúng với các tài liệu liên quan, và bộ phận định dạng kết quả (“results formatter”)
google sử dụng thuật toán PageRank để xếp hạng các trang web. Một trang với PageRank cao hơn thì được coi là quan trọng hơn và có nhiều khả năng được liệt kê ở trên một trang có PageRank thấp hơn.
PageRank được xem sét dựa vào hàng trăm yếu tố và quyết định tài liệu nào có liên quan nhất với câu truy vấn, gồm độ phổ biến của trang; vị trí và lượng từ tìm kiếm có trong trang; vị trí các từ tìm kiếm có gần nhau trong trang không.
Tham khảo thêm:
[ A patent application discusses other factors that Google considers when ranking a page. Visit SEOmoz.org’s report for an interpretation of the concepts and the practical applications contained in Google’s patent application. ]

Thứ Ba, 3 tháng 5, 2011

So sánh .Net Remoting và Webservice

So sánh .Net Remoting và Webservice


Contact me


Ky thuật xây dựng& phát triển UDPT




Hiện nay có nhiều kỹ thuật phát triển ứng dụng phân tán trên các môi trường khác nhau


- ASP.NET Web Service hay .NET Remoting


- Distributed ComponentObject Model (DCOM) của Microsoft


- Common Object Request BrokerArchitecture (CORBA) của Object Management Group


- Remote MethodInvocation (RMI) của Sun.


Mỗi kỹ thuật có điểm mạnh và điểm yếu riêng, chủ yếu phù hợp với nhu cầu và môi trường phát triển






Giới thiệu .NET Remoting




.NET Remoting là một kỹ thuật .net được giới thiệu từ .NET Framework 1.1, giải pháp cho xử lý tính toán từ xa



remoting voi .net



Đây là một công nghệ cho phép các "miền ứng dụng" (application domain) khác nhau có thể giao tiếp với nhau .

Trong đó, miền ứng dụng được định nghĩa là cơ chế dùng để cô lập các ứng dụng phần mềm được thực thi sao cho chúng không làm ảnh hưởng hoạt động lẫn nhau




Một cách đơn giản, .NET Remoting là kĩ thuật cho phép đối tượng này được truy xuất đến 1 đối tượng khác ở xa , là một giải pháp xử lý tính toán từ xa, có thể xảy ra trong cùng 1 tiến trình, giữa các tiến trình cùng 1 máy hoặc khác máy.


Mỗi miền ứng dụng có một không gian địa chỉ ảo riêng






Giới thiệu ASP.NET Webservice




Dịch vụ Web (Web Service) được coi là một công nghệ mang đến cuộc cách mạng trong cách thức hoạt động của các dịch vụ B2B (Business to Business) và B2C (Business to Customer). Giá trị cơ bản của dịch vụ Web dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng gói và hệ thống kế thừa.





Các phần mềm được viết bởi những ngôn ngữ lập trình khác nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy tính. Tuy nhiên, công nghệ xây dựng dịch vụ Web không nhất thiết phải là các công nghệ mới, nó có thể kết hợp với các công nghệ đã có như XML, SOAP, WSDL, UDDI…





=>Với sự phát triển và lớn mạnh của Internet, dịch vụ Web thật sự là một công nghệ đáng được quan tâm để giảm chi phí và độ phức tạp trong tích hợp và phát triển hệ thống.

giao thuc trong webservice
Tầng giao thức trong dịch vụ WEB





So sanh .NET Remoting va Webservice


Giong Nhau




Về khía cạnh xử lý từ xa thì web services hoàn toàn tương tự như .net remoting. Bằng cách host trong iis thì .net remoting có thể trở thành web services.



Khac Nhau


Webservice .Net Remoting
Chỉ có thể truy xuất qua http Có thể dùng trên nhiều giao thức khác nhau nhưu http, tcp, ipc channel
Cho phép các ứng dụng giao tiếp với nhau không phụ thuộc vào ngôn ngữ lập trình Đòi hỏi ứng dụng phía client phải là .net application
Môi trường stateless, không lưu lại bất kì trạng thái nào của lần gọi trước, không biết gì về phía client đang thực hiện request. Mỗi lần có request thì một đối tượng mới được tạo ra để request từ client lên server. Hỗ trợ nhiều lựa chọn state management, object có thể thực hiện được nhiều request từ một client, hỗ trợ callbacks.
send message thông qua giao thức SOAP(Simple Object Access Protocol) xây dựng trên nền tảng XML: phân tích các đối tượng thành XML bên trong SOAP message Truyền thông tin tuỳ theo giao thức và định dạng
Cách thức sắp xếp thứ tự dữ liệu và kiểu định dạng cho metadata:ASP.net webservices, xmlserializer và xsd:phân tích đối tượng dữ liệu thành xml, đưa vào trong SOAP hoặc là lấy ra trong thời gian chạy. Sử dụng WSDL và XSD giúp metadata linh động. Cách thức sắp xếp thứ tự dữ liệu và kiểu định dạng cho metadata: .NET remoting, Formatter, Common language runtime(bộ thực thi ngôn ngữ chung): phân tích theo kiểu format sẵn: kiểu nhị phân hoặc soap

Contact me

So sánh ASP.NET và PHP

So sánh ASP.NET và PHP


Contact me


Ngon ngu lap trinh web





Trong thời điểm internet rầm rộ như hiện nay, tương tác thông qua internet phát triển rầm rộ như hiện nay, hàng loạt các ngôn ngữ và các giao thức giao tiếp, thiết kế trang web cũng ra đời để phục vụ cho những mục đích nhất định. Có thể nhắc đến nhiều ngôn ngữ đã phổ biến như

HTML, HTML5, DHTML, XML, Javascript, Perl, PHP, ColdFuson, ASP, ASP.Net…

Mỗi loại có ưu và nhược điểm riêng.





Xét về tính đơn giản, gọn nhẹ thì HTML vẫn là lựa chọn đầu tiên. Tuy nhiên, nếu trang web của bạn yêu cầu khả năng tương tác cao hơn; liên kết và cập nhật dữ liệu động; thể hiện thông tin, đồ họa phức tạp, thì Javascript hay PHP là lựa chọn thời thượng. Ngoài ra phải kể đến ASP.Net với phong cách lập trình giống hoàn toàn với C# nhưng cũng cho một ứng dụng web tuyệt vời.


Giới thiệu ASP.NET




ASP.NET là Active Server Pages .NET (.NET framework).




Nói đơn giản, ngắn và gọn thì ASP.NET là một công nghệ có tính cách mạng dùng để phát triển các ứng dụng về mạng hiện nay cũng như trong tương lai (ASP.NET is a revolutionary technology for developing web applications).

ASP.NET là một phương pháp tổ chức hay khung tổ chức (framework) để thiết lập các ứng dụng hết sức hùng mạnh cho mạng dựa trên CLR (Common Language Runtime) chứ không phải là một ngôn ngữ lập trình.




ASP.NET không phải là ASP. Một số KHÁC BIỆT GIỮA ASP.NET VÀ ASP.




ASP.NET được phác thảo (re-design) lại từ số không, nó được thay đổi tận gốc rễ và phát triển (develop) phù hợp với yêu cầu hiện nay cũng như vạch một hướng đi vững chắc cho tương lai .Microsoft nghĩ rằng tốt nhất là làm lại một kiểu mẫu hoàn toàn mới thay vì vá víu chổ này chổ nọ vào ASP. Ðó là chưa kể đến nhiều phát minh mới ra đời sau này dựa trên các khái niệm mới mẽ theo xu hướng phát triển hiện nay của công nghệ Tin Học (Information Technology) cần được đưa vào kiểu mẫu phát triển mới đó.




* Tập tin của ASP.NET (ASP.NET file) có extension là .ASPX, còn tập tin của ASP là .ASP.


* Tập tin của ASP.NET (ASP.NET file) được phân tích ngữ pháp (parsed) bởi XSPISAPI.DLL, còn tập tin của ASP được phân tích bởi ASP.DLL.


* ASP.NET là kiểu mẫu lập trình phát động bằng sự kiện (event driven), còn các trang ASP được thi hành theo thứ tự tuần tự từ trên xuống dưới.


* ASP.NET xử dụng trình biên dịch (compiled code) nên rất nhanh, còn ASP dùng trình thông dịch (interpreted code) do đó hiệu suất và tốc độ phát triển cũng thua sút hẳn.





Hiện nay, ASP.NET yểm trợ tất cả các browser và quan trọng hơn nữa là yểm trợ các thiết bị lưu động (mobile devices). Chính các thiết bị lưu động, mà mỗi ngày càng phổ biến, đã khiến việc dùng ASP tron g việc phát triển mạng nhằm vươn tới thị trường mới đó trở nên vô cùng khó khăn.


Giới thiệu PHP




PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. PHP là một ngôn ngữ lập trình kiểu script , chạy trên Server và trả về mã HTML cho trình duyệt.




PHP rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.




Thẻ <'?php và thẻ ?> sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã PHP qua đó máy chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá tiện lợi của PHP giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng trong việc xây dựng phần giao diện ứng dụng HTTP.




Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và có sự đóng góp rất lớn của Zend Inc, công ty do các nhà phát triển cốt lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.




So sanh Asp.NET va PHP


Ky Thuat




Theo đánh giá chung, các giải pháp của Microsoft rất tốt ở cấp Enterprise (cái này thì chỉ có J2EE sánh được). Xin đừng nhầm lẫn giữa khái niệm Enterprise với website có nhiều người truy cập, ở đây nói về độ phức tạp của các dịch vụ, độ tin cậy, tính khả chuyển… những tiêu chuẩn mà chỉ khi thiết kế các ứng dụng phục vụ cho các tập đoàn lớn thì chúng ta mới đụng tới. Tuy nhiên đi kèm với nó cũng là sự phức tạp và tốn kém tài nguyên.




PHP rất thích hợp hơn cho những nhóm phát triển nhỏ, cho cách phát triển kiểu agile, nghĩa là có thời gian phát triển và đưa vào sử dụng nhanh. Nhưng điều này không có nghĩa là PHP dành cho những website có ít người sử dụng, rất nhiều website có hàng triệu người sử dụng hàng ngày làm trên PHP.


Thi Phan




Theo thống kê mới nhất, hiện nay PHP chiếm 36.1%, ASP.Net chiếm 54.4%, tuy nhiên tốc độ tăng trưởng của PHP nhanh hơn đáng kể so với ASP.Net (các giải pháp web trên Java đang bị sụt giảm thị phần). Các bạn có thể xem ở bài viết này:


http://www.businessweek.com/technolo...213_042973.htm




Điều này phản ánh xu thế chuyển sang các nền tảng mã nguồn mở với hai mục đích:




+ Giảm giá thành phát triển.


+ Không phụ thuộc vào các "tay chơi" lớn như Microsoft hay Sun.


Ngon Ngu Lap Trinh- Nhan Luc Phat Trien




ASP.Net, nói chính xác hơn là C# hay VB.Net, là ngôn ngữ lập trình hướng đối tuợng được thiết kế tốt, thừa hưởng rất nhiều thế mạnh của Java. ASP.Net cũng có bộ công cụ phát triển hạng nhất: Visual Studio.Net. Nhưng giá phải trả là tài nguyên và thời gian học. Để tạo một trang web đơn giản bằng ASP.Net khá dễ, nhưng để hiều sâu sắc cho những vần đề phức tạp hơn lại là cả một quá trình




PHP là một ngôn ngữ được sinh ra với mục đích duy nhất là để dùng lập trình Web: giản dị và dễ hiểu. Mãi đến PHP 5, lập trình hướng đối tượng mới được đưa vào tương đối đầy đủ. Công cụ phát triển (IDE) cho PHP không có cái nào sánh được VS nhưng hiện nay nếu dùng Eclipse plug-in cũng có thể nói đạt 8/10 (theo sở thích riêng thì tôi ưa dùng Eclipse hơn VS).




Một vấn đề nữa là PHP thường nhúng mã logic chương trình vào trang web (embedded scripts) còn ASP.Net tách rời phần hiển thị và logic rất rõ ràng (chúng ta nói tới kiến trúc MVC: Modal –View - Controller). Thực tế, bạn hoàn toàn có thể thực hiện được MVC trong PHP (nhất là PHP 5) nếu thiết kế đúng bài bản hay dùng các framework như Smarty, PHPCake…




Vấn đề nhân lực, vì các LTV ASP.Net thích hợp cho các nhóm phát triển lớn nên khó tìm ra nhân lực cho các dự án nhỏ (đấy là trên thế giới, ở VN thì có thể là ngược lại!!!).


Chi Phi




Rõ ràng là phát triển bằng ASP.Net tốn kém hơn nhiều so với PHP. Bạn phải trả cho SQL Server, Windows Server, Visual Studio, MSDN và hỗ trợ kỹ thuật cao hơn nhiều so với LAMP là của cộng đồng mã nguồn mở. Dù rằng ở VN chúng ta thường dùng phần mềm "chùa" nhưng nếu tạo một ứng dụng thương mại nghiêm túc thì chi phí bản quyền trả cho M$ là rất lớn.




Ngược lai, chi phí sở hữu tổng cộng (Total ownership cost) của LAMP lại có thể cao hơn nhất là khi bạn quản trị nhiều server Linux lớn do thiếu các chuyên gia giỏi về Linux. Đây là vấn đề gây tranh cãi, trong khi Microsoft khẳng định chi phí cho Windows rẻ hơn thì một số nghiên cứu lại cho kết quả ngược lại, ví dụ bản báo cáo này

http://www-1.ibm.com/linux/RFG-LinuxTCO-vFINAL-Jul2002.pdf !


Toc Do




Có khá nhiều tranh cãi về tốc độ của LAMP hay của ASP.Net + SQL Server cao hơn. Cái này còn tùy vào cấu hình, đặc thù của ứng dụng. Nhìn chung về mặt web server, Linux "có tiếng" hơn Windows Server về tốc độ (Google, Yahoo đều dùng Linux server cho các dịch vụ của mình và tôi không dám phàn nàn gì về tốc độ cả!). Theo một số người, PHP script nhanh hơn ASP.Net script (như C#, VB.Net) trong các tác vụ thông thường và tốn ít bộ nhớ hơn, tuy nhiên điều này cũng còn nhiều tranh cãi!.




Về database server, MySQL có tốc độ rất tốt (đặc biệt là kiểu MyISAM) nhưng thiếu một số tính năng cao cấp như stored procedure, trigger (phiên bản MySQL 5 có hỗ trợ các tính năng này nhưng còn yếu và có bug). Bài viết này sẽ giúp bạn có so sánh nhiều mặt hơn giữa MySQL và SQL Server: "MySQL or SQL Server: Look beyond politics and hype when deciding which to use". Tất nhiên, PHP cũng có thể dùng với nhiều database khác, còn ASP.Net dùng với Oracle thì không có gì phải bàn về tốc độ cả.




Ý kiến riêng của tôi là bạn không cần phải băn khoăn gì về tốc độ của PHP + MySQL cho bất kỳ website nào dù lớn hay nhỏ. Vấn đề chi là thiết kế ứng dụng hiệu quả và tìm được dịch vụ hosting tốt. Điều này cũng đúng cả với ASP.Net.


Cong Dong Phat Trien




Nói chung bạn có thể nhận đựơc nhiều mã nguồn và sự giúp đỡ từ cộng đồng mã nguồn mở như PHP miễn là bạn có kỹ năng tìm kiếm tốt




Ngược lại MSDN đựơc đầu tư công phu và rất hữu ích giúp cho việc tìm kiếm nhanh chóng hơn. Với một số trang web như codeproject.com cũng có những code ASP.net có giá trị. Bên cạnh đó, platform DNN(DotNetNuke) là một điều tuyệt vời cho ASP.NET.


Bao mat va Virus




Khỏi cần phải nói, Linux luôn có tiếng tốt về bảo mật và cũng ít bị các loại virus nhắm vào. Nhưng để cho trang web của bạn thực sự bảo mật thì lại là vấn đề thiết kế và lập trình, cả PHP và ASP.Net đều có những lỗ hổng có thể khai thác.


Contact me

SUPERKIDS KHTN

SUPERKIDS - KHTN


Tiều sử hình thành


Gồm những thành viên đến từ khoa CNTT của trường đại học khoa học tự nhiên. Cùng chung sở thíc đam mê công nghệ chúng tôi cùng nhau hợp thành nhóm SUPPER KID.


Thành viên ban đầu gồm 5 người :


1. Hà Nguyễn Khánh Luân


Ha Nguyen Khanh Luan


2. Nguyễn Vũ Nhật Chương


Nguyen Vu Nhat Chuong


3. Nguyễn Công Thành


Nguyen COng THanh


4. Lê Phú Khánh


Le Phu Khanh


5. Bùi Đắc Thịnh


Bui Dac Thinh


Với ý tưởng xây dựng website portal giới thiệu quản lí cho các trường đại học trên toàn quốc dựa trên nền tảng dotnetnuke . Ban đầu tuy gặp nhiều khó khăn về công nghệ nhưng với những nổ lực không ngừng nhóm đã thành công khi triển khai đầu tiên cho trường DHKHTN . Thành công nối tiếp thành công, dự án được triển khai trên hầu hết các trường đại học trên cả nước.


Thanh Lap Cong Ty


Sau những thành công với hệ thống website portal, tên tuối của nhóm được nhiều người biết đến hơn. Được sự mới gọi của nhiều công ty lớn song với mong muốn thành lập công ty cho riêng mình cuối cùng nhóm đã quyết định thành lập công ty . Ban đầu công ty chỉ gồm có 5 người với số vốn ít ỏi. Thời gian đầu anh em làm việc dường như không biết mệt mỏi, không lương suốt mấy tháng liền nhưng ai nấy cũng đều vui. Với sản phẩm hệ thống website thương mại điện tử được tung ra thị trường không ít lâu sau đó, doanh thu cũng như tên tuổi công ty ngày càng lớn mạnh. Năm 2011 công ty đạt doanh thu 50 tỷ một năm


Ý Tưởng Tuong Lai


Với mong muốn đưa công ty ngang tầm quốc tế, chúng tôi không ngừng nỗ lực phấn đấu, học tập. Trong tương lai, công ty tập trung hướng phát triển các công nghệ điện toán đám mây, các hệ thống thông minh…