2178
ngocdaothanh.myopenid.com 149Updated about 1 year ago |
Cache là thượng sách để tăng tốc độ truy cập cho web. Thường nó giúp tốc độ trang web tăng lên ngay lập tức vài chục lần. Trước khi nghĩ đến hạ sách load balance, thread pool, DB connection pool, vertical scaling, horizontal scaling và những thuật ngữ rất kêu khác, hãy nghĩ đến cache. Wikipedia định nghĩa cache như sau:
a cache (pronounced /kæʃ/, like "cash") is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch (owing to longer access time) or to compute, compared to the cost of reading the cache. In other words, a cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, future use can be made by accessing the cached copy rather than re-fetching or recomputing the original data, so that the average access time is shorter.
Ý tưởng về cache cho web rất đơn giản: nội dung web tuy động nhưng không thay đổi quá nhanh, khi 100 người truy cập cùng URL thì trong đa số trường hợp 100 người này đều nhìn thấy cùng chuỗi kí tự HTML, do đó chỉ cần tính toán chuỗi kí tự HTML đó ở lần truy cập đầu tiên rồi cache kết quả lại, 99 lần tiếp theo chỉ cần hiện nguyên xi kết quả lấy từ cache.
Bài viết này trình bày chung về cache, có thể áp dụng cho nhiều ngôn ngữ và framework khác nhau.
687
tnd.myopenid.com 17Updated about 1 year ago |
các bước config để đang nhập SSH mà không cần password.
Trên server 1:
Tạo authentication keys:
[test@server1 ~]$ ssh-keygen -t rsaGenerating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):
Created directory '/home/test/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
de:50:34:93:e1:4a:84:24:ef:1b:e5:cd:ff:53:be:83 test@server1
[test@server1~]$
1179
ngocdaothanh.myopenid.com 149Updated about 1 year ago |
Trước khi tung ra thị trường, để chuẩn bị cho quảng cáo hoặc kiểm nghiệm sản phẩm người ta thường benchmark. Để benchmark sản phẩm liên quan đến trao đổi dữ liệu qua mạng như web, DB, LDAP server người ta thường giả lập tình huống có cùng lúc hàng ngàn, hàng chục ngàn, hàng trăm ngàn v.v. kết nối cùng lúc đến server rồi đo xem nó chịu nổi bao nhiêu, tốc độ kết nối, tốc độ trả lời ra sao v.v.
Mấu chốt nằm ở chỗ làm sao cùng lúc tạo ra cùng lúc rất nhiều kết nối. Có nhiều công cụ để benchmark, ví dụ web thì ab (Apache Benchmark) hay được dùng, tuy nhiên hầu hết chúng chỉ tạo được vài trăm đến khoảng vài ngàn kết nối. Bài viết này giới thiệu Tsung, công cụ viết bằng Erlang cho phép dễ dàng tạo khoảng rất nhiều, có thể lên đến hàng vạn kết nối trên mỗi máy nó chạy. Hơn thế nó có tính năng cho phép chạy song song Tsung trên nhiều máy, lúc này tổng số kết nối chỉ còn phụ thuộc số lượng máy bạn có.
tnd.myopenid.com 17about 1 year ago |
847
saigon.myopenid.com 8Updated about 1 year ago |
Gnuplot là một phần mềm miễn phí, dùng để vẽ đồ thị các hàm toán học, hoặc từ tập dữ liệu sẵn có. Phần sau đây sẽ hướng dẫn cách cài đặt và sử dụng vài hàm cơ bản của gnuplot.

1231
ngocdaothanh.myopenid.com 149Updated about 1 year ago |
Biết cách tạo DSL có thể giúp tăng năng suất lên rất cao. Đối với nhiệm vụ chuyên biệt, thay vì viết code bằng ngôn ngữ tổng quát (general-purpose), bạn có thể tự tạo ngôn ngữ chuyên biệt giúp giải quyết nhiệm vụ thật hiệu quả. Ví dụ NASA tự tạo DSL để cải thiện độ tin cậy, giảm rủi ro, giảm chi phí, và tăng tốc độ phát triển. Ngay máy tính dẫn đường cho Apollo từ thập niên 1960 đã dùng đã dùng DSL để hỗ trợ việc tính toán vector.
Phần mềm chẳng qua chỉ là tập hợp các tính năng. BDD là phương pháp phát triển đang trở nên phổ biến do phần mềm thu được vừa đạt chất lượng cao mà những người tham gia dự án lại vừa thấy thoải mái. Scenario là chiêu thức rất độc đáo của BDD. Ruby có thư viện giúp viết scenario cực hay là Cucumber, nó cho phép diễn tả requirement của dự án bằng DSL dưới dạng plain text. Ví dụ dưới đây là tập tin login.feature miêu tả tính năng login:
Feature: Login
Scenario: Correct username/password
Given correct username joe
And password secret
When login
Then login would be seccessful
Erlang hiện chưa có thư viện như kiểu này. Bài viết này trình bày đầu tiên khái niệm về DSL và trình biên dịch nói chung, sau đó cách viết trình biên dịch cho DSL của Cucumber cho Erlang bằng Leex và Yecc nói riêng. Leex và Yecc là biến thể cho Erlang của 2 công cụ cực kì nổi tiếng là Lex và Yacc. Hầu hết ngôn ngữ đều có thư viện biến thể của Lex và Yacc cho riêng mình, nên ngay cả khi bạn không dùng Erlang, đọc xong bài viết này có thể bạn cũng áp dụng điều học được lên ngôn ngữ mình thích.
1209
ngocdaothanh.myopenid.com 149Updated about 1 year ago |
Như bài Làm từ điển dựa trên full text search engine đề cập, search các ngôn ngữ theo hệ chữ alphabet như tiếng Anh và tiếng Việt nói chung không có vấn đề vì việc phân tách các từ rất dễ dàng, chỉ cần dựa vào khoảng trắng. Với các ngôn ngữ không có khoảng trắng thì khó hơn.
Bài viết này tìm hiểu 3 giải pháp search CJK (Chinese-Japanese-Korean), nhiệm vụ thường gặp khi làm project cho khách hàng đến từ 3 nước này, cho chương trình Rails dựa trên 3 engine: Sphinx, Lucene, và Ferret thông qua 3 plugin: Thinking Sphinx, acts_as_solr, và acts_as_ferret.
tnd.myopenid.com 17about 1 year ago |
513
saigon.myopenid.com 8Updated about 1 year ago |
ab là công cụ thường được dùng để benchmark web (HTTP) serser. Nó đo xem server của bạn có khả năng chịu được bao nhiêu request/giây. ab là viết tắt của ApacheBench, chi tiết các tham số tham khảo tại: http://httpd.apache.org/docs/2.0/programs/ab.html. Bài viết sau giới thiệu sơ cách dùng.
ngocdaothanh.myopenid.com 149about 1 year ago |
1570
ngocdaothanh.myopenid.com 149Updated about 1 year ago |
Bản chất của từ điển là từ keyword do người dùng đưa ra lục tìm văn bản liên quan. Đây chính là nhiệm vụ của full text search (FTS) engine. Do đó, hoàn toàn có thể làm từ điển dựa trên FTS engine. Nếu đã có sẵn dữ liệu, thì dùng chiêu thức này giúp việc làm từ điển trở thành nhẹ tênh
.
Bài viết này giới thiệu chung về FTS engine và chương trình từ điển webdictr do anh Nguyễn Duy Thọ viết, dùng Sphinx.
1971
nguoitapdich.myopenid.com 35Updated about 1 year ago |
Những công ty phần mềm lớn luôn cố gắng để đạt chuẩn quốc tế này nọ, ví dụ CMM, CMMI. Việc công ty PSV cố gắng trở thành công ty đầu tiên của Việt Nam đạt CMMI cấp 5 (cấp cao nhất) là minh chứng.
Để đạt được những chuẩn rắc rối như CMMI rất khó, nhưng việc đạt chuẩn để tạo danh tiếng chỉ là mục đích phụ. Mục đích chính là tạo cho công ty khung làm việc hiệu quả cho nhân viên, đảm bảo tiến độ và chất lượng ổn định cho khách hàng qua mọi project. Khung làm việc này giúp công ty tránh rủi ro, tránh trường hợp project này thì hoàn thành tốt, project kia lại thất bại.
Như vậy việc được tổ chức nào đó công nhận mình đạt chuẩn không quan trọng bằng việc mình tạo được khung làm việc kể trên. Vấn đề là không phải công ty nào cũng tự biết mình yếu chỗ nào, cải thiện điểm yếu thế nào! Xin giới thiệu một cách rất đơn giản và dễ hiểu cách để tự biết mình mà cải thiện: Joel test.
alide.myopenid.com 32about 1 year ago |
1058
ngocdaothanh.myopenid.com 149Updated about 1 year ago |
Bạn đã đọc chán chê [vân vân và vân vân]. Bây giờ, muốn bắt đầu thì cụ thể phải làm thế nào? Một khi đã bắt đầu được, mọi chuyện sẽ suôn sẻ. Như các bác lãnh đạo vẫn nói, hổng chỗ nào ta đắp chỗ đó, sợ quách gì

ngocdaothanh.myopenid.com 149over 2 years ago |
about 1 year ago