Thứ Tư, tháng 8 30, 2006

Refactoring or "if it works, don't fix it"?

Once upon a time, a consultant made a visit to a development project. The consultant looked at some of the code that had been written; there was a class hierarchy at the center of the system. As he wandered through the hierarchy, the consultant saw that it was rather messy. The higherlevel classes made certain assumptions about how the classes would work, assumptions that were embodied in inherited code. That code didn't suit all the subclasses, however, and was overridden quite heavily. If the superclass had been modified a little, then much less overriding would have been necessary. In other places some of the intention of the superclass had not been properly understood, and behavior present in the superclass was duplicated. In yet other places  several subclasses did the same thing with code that could clearly be moved up the hierarchy.

The consultant recommended to the project management that the code be looked at and cleaned up, but the project management didn't seem enthusiastic. The code seemed to work and there were considerable schedule pressures. The managers said they would get around to it at some later point.

The consultant had also shown the programmers who had worked on the hierarchy what was going on. The programmers were keen and saw the problem. They knew that it wasn't really their fault; sometimes a new pair of eyes are needed to spot the problem. So the programmers spent a day or two cleaning up the hierarchy. When they were finished, the programmers had removed half the code in the hierarchy without reducing its functionality. They were pleased with the result and found that it became quicker and easier both to add new classes to the hierarchy and to use the classes in the rest of the system.

The project management was not pleased. Schedules were tight and there was a lot of work to do. These two programmers had spent two days doing work that had done nothing to add the many features the system had to deliver in a few months time. The old code had worked just fine. So the design was a bit more "pure" a bit more "clean." The project had to ship code that worked, not code that would please an academic. The consultant suggested that this cleaning up be done on other central parts of the system. Such an activity might halt the project for a week or two. All this activity was devoted to making the code look better, not to making it do anything that it didn't already do.

How do you feel about this story? Do you think the consultant was right to suggest further clean up? Or do you follow that old engineering adage, "if it works, don't fix it"?

I must admit to some bias here. I was that consultant. Six months later the project failed, in large part because the code was too complex to debug or to tune to acceptable performance.

The consultant Kent Beck was brought in to restart the project, an exercise that involved rewriting almost the whole system from scratch. He did several things differently, but one of the most important was to insist on continuous cleaning up of the code using refactoring. The success of this project, and role refactoring played in this success, is what inspired me to write this book, so that I could pass on the knowledge that Kent and others have learned in using refactoring to improve the quality of software.

 

(trích từ  Refactoring: Improving the Design of Existing Code)

 

Thứ Ba, tháng 8 29, 2006

Đọc Tru Tiên

Nhân sĩ võ lâm nào yêu thích kiếm hiệp, hãy thi triển kinh công đến Nhạn Môn Quan, vào Tru Tiên Điện, thưởng thức tác phẩm Tru Tiên của Tiêu Đỉnh.

Tiểu thuyết này hiện đang gây "sóng gió" ở Trung Quốc và các nước lân cận. Hiện các công ty game, hãng làm phim, đài truyền hình và xưởng phim hoạt hình Trung Quốc, Hàn Quốc và Đài Loan đang thương thảo với tác giả về việc chuyển nhượng bản quyền của quyển tiểu thuyết này.

Có người đã mạnh dạn nhận xét rằng Tru Tiên sẽ là một “thánh kinh võ hiệp thời đại hậu Kim Dung”, còn Tiêu Đỉnh sẽ là "võ lâm minh chủ" mới.

Thật ra, theo tôi đây là một tiểu thuyết kiếm hiệp giả tưởng, với các yếu tố tà ma, tiên thần và kiếm hiệp trộn lẫn nhau. Tôi cho rằng nó không thể bì kịp các tác phẩm của Kim Dung... nhưng vẫn là một truyện hay (không biết có phải vì đọc bản dịch trên diễn đàn, nên không thấy hết cái thần trong văn của Tiêu Đỉnh). Tôi nghĩ, chắc là vì gần đây, giới yêu thích kiếm hiệp đang bị "đói khảt" vì thiếu các tác phẩm xem được, nên Tru Tiên mới gây được sóng gió lớn như vậy...

2006 Technology of the Year Awards

SYSTEM ARCHITECTURES

Best Enterprise Server
IBM eServer OpenPower 710 
Multiprocessing powerhouse with excellent fault-tolerance features

Best Industry Standard Server
HP ProLiant DL585 
Outstanding out-of-band management and serviceability

Most Innovative Server
Sun Fire T2000 
Changes the math for threaded performance and power consumption

Best Blade System
ClearCube PC Blade System 
Powerful management software for high-availability workstations

Best Workstation
Apple Power Mac G5 Quad 
Impressive hardware specs, sub-$5,000 price tag, and the magic of OS X

OPERATING SYSTEMS

Best Server Operating System
Mac OS X Server v10.4 
A powerful, extensible Unix server with a uniquely robust set of standard features

Best Client Operating System
Mac OS X v10.4 Tiger 
A rich and friendly desktop OS built with professional users in mind

VIRTUALIZATION

Best Server Virtualization
VMware ESX Server and VirtualCenter 
Dynamic duo points to new possibilities in datacenter management

Best Workstation Virtualization
VMware Workstation 5.5 
Indispensable companion to software developers and testers

NETWORKING

Best Enterprise Switch
Cisco Catalyst 4500 Series Supervisor Engine II-Plus-10GE 
Wire-rate 10-Gig switching and granular QoS support for the edge

Best SMB Switch
Dell PowerConnect 3424P 
Delivers an array of enterprise-class features in a tidy package

Best WAN Traffic Manager
Packeteer PacketShaper 9500 
The Cadillac of QoS for WAN circuits, upholstered with extensive reporting

Best WAN Accelerator
Riverbed Steelhead 3010 
Amazing caching and optimization techniques overcome chatty apps and slow links

Best IP PBX
Siemens HiPath 8000 Real-Time IP System 
Full-featured, scalable phone system that set the standard for SIP support in our test

Best Network Analysis Tool
Niksun NetVCR 2005 
Complete network analysis package that puts complete historical data at your fingertips

STORAGE

Best SAN
Compellent Storage Center QuickStart 
Extensive management, strong performance, great scalability, and superb ease-of-use

Best iSCSI SAN
EqualLogic PS200E 
A well-designed and superbly executed storage array, boasting extremely good performance

Best Director Switch
McData Intrepid i10K Director 
Fabric partitioning and long-haul connectivity take the sting out of distributed SANs

Best NAS
NetApp FAS3020c 
Solid performance, flawless fail-over, exceptional scalability, and a jack of all trades

Best NAS Killer
HP StorageWorks Enterprise File Services Clustered Gateway with PolyServe Matrix Server 
Brings the processing power and high-availability of clustering to Linux and Windows

Best Storage Management Software
HP Storage Essentials 4.0 
Accurate discovery, powerful provisioning, and seamless support for heterogeneous hardware

Best Storage Virtualization
EMC Invista 
Preserves investments in existing hardware without sacrificing manageability or performance

APPLICATION DEVELOPMENT

Best IDE
Visual Studio 2005
A unified, end-to-end, role-based toolset that extends the IDE's reach in all directions

Best Java IDE
IBM Rational Software Architect 6.0 
The most feature-complete Java development environment for architects and coders

Best AJAX Toolkit
Tibco General Interface 3.1 
Friendly, capable toolkit for building sophisticated applications that run in a browser

Best Application Test Tool
Agitar Agitator 3.0 and Parasoft Jtest 7.0 
Two great ways to create unit tests and exercise code forced us to call it a draw

Best Security Analysis Tool
Fortify Source Code Analysis Suite 3.0 
Thorough analysis and detailed recommendations make remedial action quick and effective

Best Rules Management System
ILOG JRules 5.0 
Adds depth and polish to an already rich set of tools, including customizable rule language

APPLICATIONS AND MIDDLEWARE

Best CRM Application
Salesforce.com Winter '05 Enterprise Edition 
The undisputed champ of hosted CRM combines strong features and unparalleled extensibility

Best Enterprise Service Bus
Sonic SOA Suite 6.1 
Complete, flexible, and powerful, delivering the reliability necessary for high-volume transactions

Best Application Performance Manager
Indicative Service Director and SLA Manager 6.5 
Especially strong at linking real-time performance measures with service-level agreements

DATABASES

Best Enterprise Database
Microsoft SQL Server 2005 
Ambitious, enterprise-oriented overhaul creates a new measuring stick for database management

Best XML Database
eXist 1.0
A smooth, even pleasurable introduction to the power of XQuery and XML content management

CONTENT MANAGEMENT

Best Enterprise CMS
EMC Documentum 5 Enterprise Content Management Platform 
Impressively unified approach to managing content creation, reuse, archiving, and disposal

Best Enterprise Search
Vivísimo Velocity 4.2 
Advanced capabilities that can be deployed faster and less expensively than competing solutions

Best Document Manager
Xerox DocuShare 4.0.1 
Strong mix of collaboration, personalization, ease-of-use, and extensibility

Best Web Analytics
Omniture SiteCatalyst 12 
Makes site traffic data easier to analyze and streamlines the process of fixing problematic pages

COLLABORATION

Best Exchange Killer
Gordano Messaging Server 10.05 

Feature-rich messaging server that eases swaps with unique real-time mailbox migration

Best Live Collaboration
WebEx WebOffice 
Shared databases, documents, and discussions, plus seamless integration with real-time meetings

IDENTITY MANAGEMENT

Best Identity Manager
Novell Identity Manager 2 
Powerful graphical workflow and design tools plus intuitive user interface set it apart

SECURITY

Best Anti-Spam
Symantec Mail Security 8200 Series 
Best-in-class accuracy and ease-of-use with great policy-driven filtering and e-mail firewall features

Best Anti-Spyware
F-Secure Anti-Virus Client Security 6 
The best real-time protection we've seen, backed by first-rate detection and removal

Best Insider Threat Defense
Vontu 4.0
Exceptional administration combined with the best collection of built-in compliance policies

Best Network Access Controller
Elemental Compliance System 1.1 
Powerful policy engine and deep reporting constitute a major step toward enterprise-wide NAC

Best SSL VPN
Juniper Secure Access 5000 
A beast of a box that provides exceptional remote access capabilities with fine-grained control

Correction:
In this article, the name of EMC's content management product should have been EMC Documentum 5 Enterprise Content Management Platform . InfoWorld regrets the error, which has been corrected.

 

Thứ Hai, tháng 8 28, 2006

Giấc mơ nhỏ bé của một lập trình viên

Một lập trình viên đang đi dọc theo bờ sông Sài Gòn. Vô tình anh ta nhặt được một cái chai, khi mở nắp, một bà tiên xuất hiện. “Ta sẽ ban cho con một điều ước,” bà tiên nói.

-          Con muốn đi du lịch sang Mỹ. Nhưng con rất sợ đi máy bay và không thích đi tàu thủy. Con ước có một chiếc cầu nói liền Việt Nam và Mỹ.

-          Việc ấy khó lắm con à. Ta không có khả năng làm điều đó.

-          Vậy xin bà cho con một điều ước nho nhỏ thôi. Hãy cho con có thể làm ra những phần mềm không có lỗi.

-          Thế con muốn chiếc cầu có mấy làn xe.

                                                                                             (Thời báo Vi Tính Sài Gòn- Số 14-06 (44))

 

Nếu bạn là một lập trình viên, chắc hẳn giờ đây bạn đang gật gù tán thưởng: thật chí lý, chí lý…  Truyện chỉ để giải trí nhưng nó lại đặt ra nhiều câu hỏi:

+ Nếu là một developer:

-          Có phải lỗi là một sự tất yếu đối với việc lập trình?

-          Nguyên do vì sao chúng ta hay mắc lỗi?

-          Làm thế nào để giảm thiểu tối đa lỗi?

 

+ Nếu là một nhà quản lý:

-          Có nên để nhân viên mình mắc lỗi trước khi giúp họ sửa chữa, hay là ngăn chặn trước khi lỗi xảy ra?

-          Ngưỡng lỗi có thể chấp nhận được? (Quota for Errors)

 

Tôi là một developer, nên chắc chỉ cần bận tâm hai câu hỏi đầu.

 

Bạn là một lập trình viên và đã tham gia phát triển nhiều phần mềm:

-          Vậy bạn đã bao giờ dừng lại và “ngắm nhìn” lại thành quả mà bạn đã tạo ra sau không ít thời gian miệt mài gõ bàn phím?

-          Tất nhiên là có rồi…

-          Và chắc hẳn trong tất cả các lần nhìn ngắm ấy, không lần nào bạn không tự nhủ rằng ta sẽ viết tốt hơn nếu có cơ hội được viết lại.

 

Thật vậy, các quy trình phát triển phần mềm hiện nay đều nhận thức rất rõ việc sửa chữa lỗi trong quá trình thiết kế và hiện thực. Một trong những kỹ thuật xây dựng phần mềm hiện nay là phát triển theo các bước lặp (iterative design). Tại sao lại là các bước lặp? Phải chăng vì nó cho ta cơ hội sửa chữa sai lầm gây ra ở các bước trước. Không những thế, các phương pháp luận phát triển phần mềm gần đây như là XP, Test Driven… đều quan tâm đến việc xây dựng các phương pháp nhằm giảm thiểu lỗi. Có thể kể ra một số kỹ thuật sau: refactoring trở thành một trong các yêu cầu cơ bản của việc lập trình; unit test được xem trọng và còn viết trước cả mã lệnh…

[ Nếu các bạn muốn tìm hiểu về Refactoring, xin giới thiệu bạn cuốn sách Refactoring: Improving the Design of Existing Code, còn Test Driven Development thì nên đọc Test Driven Development: By Example. ]

 

Các lý luận trên có thể minh chứng rằng:

Công việc lập trình ngày nay về cơ bản là khó.

Việc luôn tìm ra giải pháp tốt nhất ngay ban đầu là không thể.

Do đó:

 Mắc lỗi trong lập trình là tự nhiên và là sửa lỗi một phần của việc lập trình

 

Nguyên do vì sao chúng ta hay mắc lỗi?

 

Khi đã chấp nhận lỗi là vấn đề không thể tránh khỏi, việc tìm hiểu nguyên nhân là một trong các yếu tố giúp các lập trình viên giảm thiểu việc mắc lỗi. Tất nhiên là có rất nhiều nguyên nhân, đó có thể là thiếu kiến thức, thiếu kinh nghiệm, không hiểu rõ yêu cầu… Ở đây tôi không muốn bàn đến các vấn đề “đại sự” này vì nó chỉ được khắc phục thông qua sự nỗ lực của bản thân cũng như của cả đội ngũ phát triển dự án.

Tôi xin “mạn phép” nói đến một vấn đề rất nhỏ, và chúng ta hoàn toàn có thể khắc phục được, đặc biệt là dành cho các bạn lập trình viên trẻ tuổi. Đó là sự lạc quan của tuổi trẻ.

 

Sự lạc quan của tuổi trẻ:

Những lập trình viên trẻ tuổi thường luôn tự tin theo kiểu thế này “chúng ta có thể hoàn tất chúng cuối tuần này”, mà không hề nhận biết hết mức độ phức tạp của vấn đề. Ngoài ra, họ còn quan niệm người lập trình đích thực không cần … ngủ

 

Tôi đã làm chung trong nhiều dự án và phát hiện chúng tôi thường gặp phải những lỗi khi ép mình vào công việc:

-          Tiêu tốn rất nhiều giờ đồng hồ nhưng vẫn không debug ra lỗi, trong khi đó ngày hôm sau lại phát hiện ra lỗi chỉ trong vài phút.

-          Đi hiện thực lại những cái đã có sẵn, thậm chí là những hàm được built-in trong ngôn ngữ.

-          Không tin rằng chính mình đã viết ra những đoạn mã như vậy

-          Vấn đề được giải quyết nhưng thiết kế lại vô cùng rối rắm.

-         

Nếu bạn cũng gặp các vấn đề như vậy, phương châm dưới đây sẽ giúp bạn giảm thiểu được lỗi mắc phải trong khi lập trình:

 

Đối với công việc lập trình:

Việc nào để được ngày mai thì hãy để ngày mai

(trích từ tư tưởng của một kẻ lười )

 

Tôi định giới thiệu thêm một vài nguyên nhân khác, chẳng hạn như là “nỗi ám ảnh của design”, hay “việc phức tạp hóa vấn đề”, v.v…

 

Thế nhưng, đó là việc của ngày mai…

Thứ Sáu, tháng 8 25, 2006

Passion for Excellence

(bài dịch lấy từ www.nguoitapviet.info, nguyên văn tiếng Anh từ blog http://blog.360.yahoo.com/blog-9k7SE3k9cqj0m.0QxO6qN_Q-?cq=1&p=139 )

 

Có một điều từ từ lâu đã khiến tôi trăn trở rất nhiều - có lẽ cũng hơn 10 năm - và giờ đây tôi nghĩ là có thể đã đến lúc mình có thể chia sẽ với tất cả mọi người.

 

Rất thường xuyên, khi chúng ta chỉ ra những điểm yếu và vấn đề của dân tộc hay hệ thống của mình, tôi thường hay nghe những câu trả lời đại loại như "Chúng ta đã làm tốt hơn nhiều nước khác ở châu Phi" hay "Có rất nhiều nước cũng đang phát triển còn tệ hơn mình nhiều". Hay là, "Chúng ta là một nước nghèo".

 

Đó là cái mà tôi gọi là "Tâm lý kẻ bại trận".

 

Nó giống như trong một câu truyện kể rằng một thầy giáo nói với một học sinh của mình rằng "Em có thể làm bài tốt hơn như thế này - hãy cố gắng hơn" và cậu học sinh đó đã trả lời rằng "Nhưng thưa thầy, nhà em nghèo - và rất nhiều bạn khác cũng nghèo như em còn làm dở hơn em nhiều."

 

Tại sao lại so sánh chúng ta với nhữ kẻ bại trận khác? tại sao chúng ta không thể so sánh mình với những người giỏi nhất? Thay vì so sánh chúng ta với những nước đang phát triển và những nước nghèo khác, tại sao chúng ta không nói "Chúng a muốn một ngày nào đó sẽ vượt qua Pháp, qua mặt Mỹ, về công nghệ và kinh tế"?

 

"Bạn có điên không? Đây là một trong những nước phát triển cao nhất trên thế giới. Bạn đang mơ hoặc bạn là một người không thực tế."

 

"Bạn à, nếu như tôi nhớ không nhầm, thì chúng ta đã từng đánh bại hai quốc gia này trên chiến trường. Vậy có gì khác ngăn cản chúng ta trên lĩnh vực kinh tế và khoa học kỹ thuật?"

 

Thử tưởng tượng chúng ta hôm nay sẽ như thế nào nếu chủ tịch Hồ Chí Minh cách đây gần 70 năm nói với chúng ta rằng "Hỡi đồng bào, nước Pháp là một trong những quốc gia hùng mạnh nhất trênh thế giới. Chúng ta sẽ chẳng thể nào so sánh được với súng và đại bác của họ. Sẽ là điên khùng để đánh với họ, đừng nói gì đến suy nghĩ sẽ đánh bại Pháp". Nếu Bác Hồ nói như vậy - thử tưởng tượng chúng ta giờ đây đang ở đâu?

 

Thật không may là sau khi chúng ta dành chiến thắng trên chiến trường, những thế hệ kế cận đã không tiếp nối được tinh thần đó. Chúng ta đã không có khí thế, tinh thần và mong muốn dành chiến thắng.

 

Cách đây nhiều năm, trong một lần về VN, có khá nhiều người bạn trong Uỷ ban đối ngoại tại thời điẻm đó đã ra đón. Tôi đã rất buồn khi thấy một nhân viên cửa khẩu vòi tiền của Việt kiều và đã có lời với một trong những người bạn có mặt hôm đó: "Anh này, những người này đang đòi tiền người khác một cách không biết ngượng". Người bạn đó đã trả lời rằng "À, cậu thiếu gì tiền. Cậu có thể giúp đỡ những người anh em của mình chứ."

 

Nói thật là tôi đã cực kỳ thất vọng khi nghe câu trả lời này và vì vậy tôi cũng không trả lời lại. Đó là tư thế của kẻ bại trận, tư thế sẵn sàng chấp nhận những thứ kém chất lượng và đi tìm lý do để biện minh cho hành động đó. Người bạn này của tôi sau này trở thành đại sứ ở nhiều nước - tức là anh ta không phải là một người có vai vế thấp trong xã hội. Bạn có thể tưởng tượng sẽ có bao nhiêu người có cái tư tưởng bại trận như vậy trong xã hội [nếu quả thật chỉ những người tài mới được đưa lên vị trí cao - n.d.]

 

Và nếu nhiều người trong chúng ta có tâm lý và tư tưởng đó - liệu VN sẽ đi đến đâu?

 

Chúng ta, thế hệ này hôm nay, có lẽ nên tự xấu hổ với thế hệ cha ông của mình. Ông cha chúng ta đã không nói "Pháp và Mỹ rất mạnh - chúng ta không thể đánh bại họ". Họ chỉ có một suy nghĩ duy nhất trong đầu - sống hoặc chết. Đó chính là khao khát để vươn đến sự xuất sắc, là khao khát chiến thắng, là khao khát quyết không chịu đứng thứ hai (bởi vì như vậy đối với họ có nghĩa là chết).

 

Nếu chúng ta muốn chiến thắng, chúng ta phải suy nghĩ như một người chiến thắng. Và điều đó có nghĩa là, "Chúng ta muốn đánh bại kẻ mạnh nhất. Chúng ta muốn là người vô địch. Và chúng ta sẽ đi theo cách riêng của mình để đạt đến mục tiêu đó." Những tư tưởng như vậy sẽ tự động thúc đẩy chúng ta không chịu chấp nhận sự xoàng xỉnh, không chấp nhận chất lượng kém, không chấp nhận bất kỳ cái gì ngoài những nổ lực cao nhất trong mọi thứ chúng ta làm.

 

Một ai người sẽ nói - "Nhưng đấu tranh cho sự sống còn khác với đấu tranh cho sự giàu có. Trong văn hoá của chúng ta, sự giàu có chưa bao giờ là một cái gì to tác. Trong văn hoá truyền thống của chúng ta, là một giáo viên nghèo vẫn là một vị trí được trân trọng nhất."

 

Câu trả lời của tôi sẽ là:

 

(1) Khi chúng ta chống lại thực dân Pháp và Mỹ, đó không phải là chiến đấu vì sự sống còn. Chúng ta vẫn có thể sống dưới sự cai trị của thực dân Pháp và Mỹ. Nhưng dó không phải là một cuộc sống đáng tự hào. Vì vậy, chúng ta đấu tranh vì danh dự - không phải vì cái chết và sự sống.

 

(2) Ngày hôm nay, đấu tranh chống lại sự nghèo đói để đạt đến sự giàu có cũng là cuộc chiến vì danh dự - bởi vì mọi người xung quanh chúng ta đều luôn có thái độ xem thường những công dân của những nước nghèo.

 

(3) Nền văn hoá truyền thống của sự nghèo đói mà vinh quang thật ra là sai lầm. Nói theo cách nói khác, đó có thể xem là "ảo tưởng" - biện minh ("opium"). Từ góc nhìn của mỗi cá nhân, sự giàu có có lẽ tuỳ thuộc vào mỗi người và có thể sẽ là không quan trọng lắm đối với nhiều người. Tuy nhiên, từ góc nhìn của một dân tộc, nghèo đói là một sự sỉ nhục và giàu có là sức mạnh và sự độc lập. Giả như Việt Nam là một quốc gia giàu có và hùng mạnh cách đây hơn một ngàn năm thì chưa chắc Trung Quốc, Pháp, Mông Cổ, Nhật Bản, hay Mỹ đã có đủ can đảm mà xâm lăng chúng ta. Và nếu vậy thì chúng ta đã không mất quảng chừng đó thời gian để chiến đấu. Là một dân tộc, nghèo đói nghĩa là yếu thế, nghĩa là chúng ta để lộ điểm yếu cho người khác đánh, là để bị xâm lược bởi những quốc gia khác, để bị xem thường bởi những người nước khác. Đi vòng quanh thế giới và bạn sẽ thấy rõ điều này.

 

Nghèo đói là một căn bệnh của dân tộc. Nó cần phải bị xoá bỏ. Bất kể triết lý của bạn về sự giàu có là như thế nào - đối với một quốc gia, giàu có là một mục tiêu chính yếu.

 

Vậy nên, chúng ta cần phải tự bảo lẫn nhau rằng hãy đòi hỏi nhiều hơn từ chính bản thân mình và mọi người xung quanh. Hãy đòi hỏi nhiều hơn từ các cơ quan nhà nước và những người lãnh đạo đất nước. Hãy nhìn những quốc gia hàng đầu thế giới như Nhật, Anh, Úc - xem họ làm như thế nào - để học hỏi vàq quyết tâm vượt qua họ sau này (và chắc rằng họ cũng sẽ lấy làm vui lòng khi biết điều này, bởi một thầy giáo đúng nghĩa sẽ rất vui sướng khi học trò của mình vượt qua mình). Hãy thôi cái lối suy nghĩ "chúng ta nghèo - và vậy là đủ". Không, sẽ không bao giờ là đủ nếu chúng ta chưa đánh bại kẻ mạnh nhất trên thế giới này.

 

Hãy tin tưởng vào bản thân. Nếu chúng ta nghĩ rằng chúng ta sẽ làm được điều đó - chúng ta sẽ làm được.

 

Hãy đừng thoả mãn với sự xoàng xỉnh. Đừng bao giờ chấp nhận đứng thứ hai.

 

Vươn đến những gì tốt nhất.

 

Đòi hỏi những gì tốt nhất từ bản thân và mọi người.

 

Chúng ta có một lịch sử dài cho thấy rằng chúng ta sẽ làm được những điều mà người khác cho là không thể.

 

Chúc bạn một ngày thật tuyệt.

 

Trần Đình Hoành, LLB, JD

Luật sư, Washington DC

Thứ Năm, tháng 8 24, 2006

Download sử dụng eMulePlus

Một vài hướng dẫn giúp anh em download dùng eMulePlus với tốc độ cao:

1.       Cấu hình Port Forwarding cho DSL - ADSL Routers:

Tham khảo link: http://portforward.com/english/routers/

port_forwarding/routerindex.htm

2.       Tìm cho mình một file client.met thật tốt vào, bạn sẽ có độ ưu tiên cao khi phải đợi download.

 

 

Thứ Hai, tháng 8 21, 2006

Một tuần làm việc


Tuần làm việc của bạn có giống thế này chăng?

Thứ Bảy, tháng 8 12, 2006

Ngụy biện và vụ kiện về nửa học phí

Nói về ngụy biện, vụ kiện về nửa học phí thật thú vị:

 

Pro-ta-go-rát, nhà triết học cổ Hi Lạp là nhà ngụy biện nổi tiếng, nhận dạy cho một học sinh học luật là Ơ-ti-les. Thầy trò thỏa thuận học phí trả làm hai đợt, một nửa học phí trả khi Ơ-ti-les tốt nghiệp, còn nửa kia trả khi Ơ-ti-les ra tòa cãi thắng lần thứ nhât. Thế nhưng Ơ-ti-les sau khi tốt nghiệp mãi không chịu ra tòa đi cãi hộ. Pro-ta-go-rát rất suốt ruột bèn kiện ra tòa đòi nửa học phí kia. Ông ta nói với Ơ-ti-les:

“Nếu lần này anh thắng thì theo hợp đồng, anh phải trả cho tôi một nửa học phí còn lại kia. Nếu lần này anh thua thì theo phán quyết của tòa, anh cũng phải trả nửa kia. Anh dù thắng dù bại, cũng phải trả cho tôi nửa còn lại.”

 

Ông thầy những tưởng dù gì đi nữa thì cũng thu được nửa số học phí còn lại. Ai dè thầy hay sinh trò giỏi, thuật ngụy biện mà thầy truyền dạy, học trò đã lấy đó mà đối phó lại với thầy:

“Nếu lần này em thắng, thì theo phán quyết của tòa, em không trả cho thầy nửa số học phí kia. Nếu em thua thì theo hợp đồng, em cũng không trả cho thầy nửa nọ. Vụ kiện này em dù thắng dù bại thì đều không phải trả cho thầy nửa số học phí còn lại”.

 

Nghe nói lúc đó bọn họ đã làm cho quan tòa khó xử, không biết phải phán quyết thế nào. Kì thực, họ đều ngụy biện tất, tiêu chuẩn đã không được giữ đồng nhất trong quá trình suy luận.

Parkinson's law

From Wikipedia, the free encyclopedia (http://en.wikipedia.org/wiki/Parkinson%27s_law)

 

Parkinson's Law states that "work expands so as to fill the time available for its completion."

 

It was first articulated by C. Northcote Parkinson in the book Parkinson's Law: The Pursuit of Progress, (London, John Murray, 1958) based on extensive experience in the British Civil Service. The scientific observations which contributed to the law's development included noting that as Britain's overseas empire declined in importance, the number of employees at the Colonial Office increased.

 

According to Parkinson, this is motivated by two forces: (1) "An official wants to multiply subordinates, not rivals" and (2) "Officials make work for each other." He also noted that the total of those employed inside a bureaucracy rose by 5-7% per year "irrespective of any variation in the amount of work (if any) to be done".

 

"Parkinson's Law" is also used to refer to a derivative of the original relating to computers: "Data expands to fill the space available for storage"; buying more memory encourages the use of more memory-extensive techniques. It has been observed over the last 10 years that the memory usage of evolving systems tends to double roughly once every 18 months. Fortunately, memory density available for constant dollars also tends to double about once every twelve months (see Moore's Law); unfortunately, the laws of physics guarantee that the latter cannot continue indefinitely.

 

"Parkinson's Law" could be more generalized still as: "The demand upon a resource always expands to match the supply of the resource." Brian Tracy put forth an interpretation of this in his course The 21 Secrets of Self-Made Millionaires, noting that "expenses rise to meet income", as a corollary of the law.

 

It is interesting to note that this generalization has become very similar to the economics law of cost and demand; that the lower the cost of a service or commodity, the greater the demand.

 

Parkinson also proposed a rule about the efficiency of administrative councils. He defines a coefficient of inefficiency with the number of members as the main explaining variable.

 

Thứ Sáu, tháng 8 04, 2006

Bernard Shaw và những câu trả lời hóm hỉnh

Bernard Shaw, nhà văn nổi tiếng hài hước người Anh, sau khi đã thành danh thì một nghệ sĩ múa nổi tiếng đến cầu hôn, cô ta nói:

“Nếu anh đồng ý kết hôn với em, con chúng ta đẻ ra sẽ thông minh như anh và xinh đẹp như em. Như vậy sẽ rất là hay!”

Bernard Shaw với phong cách hài hước vốn có:

“Nếu tôi và cô lấy nhau, con cái sinh ra sẽ xấu như tôi và đầu óc đần đọn như cô. Như vậy thật đáng sợ!’

 

Nhận xét: Đây là phương pháp dẫn từ khả năng, phương pháp biện luận phản bác suy đoán về tình hình có thể trong tương lai của sự vật mà đối phương nêu ra, từ đó mà chọn lựa tình hình có thể đối lập với họ.

 

Có một lần cột sống của Bernard Shaw bị đau và cần phải rút một cái xương chân để chắp cho cột sống. Sau khi mổ xong thầy thuốc có thêm một chút tiền bồi dưỡng, liền nói:

“Ông Bernard Shaw này, đây là ca mổ xưa nay chúng tôi chưa từng thực hiện”

Bernard Shaw cười nói: “Tốt lắm, xin hỏi ông sẽ trả tôi bao nhiêu tiền thực nghiệm đây?”

 

Nhận xét: Đây là phương pháp dẫn từ nhân quả, từ cùng một nguyên nhân mà dẫn tới nhiều kết quả khác nhau, cần lựa chọn kết quả có lợi cho mình trong biện luận.

 

Bernard Shaw tới thăm Trung Quốc, Lỗ Tấn và Sái Nguyên Bồi ra tiếp ông tại nhà bà Tống Khánh Linh ở Trùng Khánh. Sau bữa cơm, mọi người dạo chơi vườn hoa, lúc này thời tiết tạnh ráo sau nhiều này mưa sụt sùi, ánh mặt trời hiền hòa rọi trên mái tóc bạc của Shaw. Sái Nguyên Bồi vui vẻ nói:

“Ông Shaw này, ông thật là hên, ông đã nhìn thấy mặt trời ở Thượng Hải rồi đó”.

Shaw nghe vậy mỉm cười:

“Không, đó là mặt trời gặp may, đã nhìn thấy tôi ở Thượng Hải đấy!”

Bernard Shaw thay đổi trật tự từ làm cho câu nói thật là ngộ, chan chứa ý vị.

A-ri-tốt cũng từng sử dụng thật biện luận này khi trả lời câu hỏt: “Ông và người bình thường có gì khác nhau?”

”Họ sống là để ăn còn tôi ăn để sống ”

 

Tương truyền Hai-phây sau khi biểu diễn lần đàu ở Luân đôn, Bernard Shaw vĩ đại đi ra sau sân khấu nói với chàng trai trẻ kéo vĩ cầm này:

”Trên thế gian này không có cái gì thập toàn thập mĩ cả, nếu không các thần sẽ đố kị. Tôi đề nghị anh: đêm đêm trước khi đi ngủ, ít nhất hãy kéo một nốt sai”

Vốn hết lòng ca ngợi chàng trai chơi vi-ô-lông, nhưng ở đây Bernard Shaw lại dùng thuật phản ngữ với lời nói ngược để biểu đạt, để lại cho ta một dư vị lâu dài.