Trang

Ngẫu hứng

Ảnh của Tôi
Momen
Khi tối trời thì nhìn cũng đẹp trai sáng sủa , im lặng không nói thì cũng có vẻ thông minh hiểu biết, đi ngủ rồi thì cũng hiền lành củ khoai, đứng một mình thì cũng có vẻ nổi trội
Xem hồ sơ hoàn chỉnh của tôi

Tổng số lượt xem trang

Được tạo bởi Blogger.
1 thg 4, 2012

Loại bỏ thói trì hoãn


(Dân trí) - “Tôi biết mình phải làm gì. Tôi hiểu rõ những ích lợi của việc đó. Tôi cũng biết những hậu quả tiêu cực nếu mình không làm nó. Tôi có đủ năng lực và công cụ để thực hiện công việc. Nhưng tôi vẫn không làm”.
Chuyện này có vẻ quen với bạn ư?
1 thg 12, 2011
Câu chuyện về bà lão bán rau đang lan truyền trên cộng đồng mạng
28 thg 10, 2011

Sách khoa học máy tính

Phân tích thiết kế thuật toán cơ bản
Phân tích thiết kế thuật toán nâng cao
Combinatorics (bao gồm lý thuyết đồ thị và toán rời rạc)
Xử lý ngôn ngữ tự nhiên
Machine learning và statistics

24 thg 10, 2011

Cử nhân khoa học máy tính không là kỹ sư phần mềm

Nhà khoa học xây để học, kĩ sư học để xây.FRED BROOKS
Khi phỏng vấn ứng viên cho vị trí lập trình, câu tôi thích hỏi là: “Bạn có thể tự ví mình là ai trong quá trình làm một phần mềm?”. Tôi đưa ra một số ví dụ: thợ mộc, lính cứu hỏa, kiến trúc sư, họa sĩ, nhà văn, nhà thám hiểm, nhà khoa học. Một số ứng viên cố đoán xem câu trả lời nào sẽ làm tôi hài lòng; đa số ứng viên tự ví mình với “nhà khoa học”. Những người lập trình siêu thường bảo là họ ví mình như đặc công hoặc cảnh sát cơ động. Có một ứng viên trả lời rằng: “Khi thiết kế phần mềm, tôi là kiến trúc sư. Khi thiết kế giao diện, tôi là họa sĩ. Khi viết chương trình, tôi là thợ thủ công. Còn khi kiểm tra chương trình, tôi là thằng cực kì nghịch ngợm!”, tôi thích câu trả lời này nhất.
Tôi thích đưa ra câu hỏi này, vì nó là câu hỏi cơ bản về làm phần mềm: Làm phần mềm thuộc về lãnh vực gì? Khoa học? Nghệ thuật? Hay lãnh vực gì khác?
“Là” và “nên”
Tranh cãi làm phần mềm là nghệ thuật hay khoa học đã có từ lâu. Ba mươi năm trước, Donald Knuth bắt đầu viết bộ sách 7 tập nhan đề Nghệ thuật lập trình. 3 tập đầu gồm có 2200 trang, nghĩa là cả bộ sách có thể đạt khoảng 5000 trang. Nếu nghệ thuật lập trình là như thế, tôi không chắc là mình sẽ muốn tìm hiểu khoa học lập trình.
Những người chủ trương lập trình là nghệ thuật chỉ ra khía cạnh thẩm mỹ của việc làm phần mềm, và cho rằng khoa học không cho phép độ cảm hứng và tự do sáng tạo đạt đến mức cao như vậy. Những người chủ trương lập trình là khoa học dẫn ra lỗi trong nhiều chương trình, và cho rằng đối với chương trình máy tính thì độ tin cậy thấp như vậy là không thể chấp nhận – không có chỗ cho tự do sáng tạo. Cả 2 quan điểm đều không toàn diện và cả 2 đều đặt sai câu hỏi. Làm phần mềm là nghệ thuật, là khoa học, là xã hội học, và nhiều hoạt động khác nữa. Nó mang tính tài tử ở một số khía cạnh, nhưng lại mang tính chuyên nghiệp ở những khía cạnh khác. Do đó, câu hỏi thích hợp không là “Làm phần mềm là gì?”, mà là “Làm phần mềm một cách chuyên nghiệp nên như thế nào?”. Theo ý kiến của tôi, câu trả lời là: Làm phần mềm một cách chuyên nghiệp nên thuộc về ngành kĩ thuật.
Kĩ thuật và khoa học
Chỉ khoảng 40% người làm phần mềm có bằng cử nhân khoa học máy tính, và trên thực tế không ai có bằng kĩ sư phần mềm. Do đó không có gì ngạc nhiên là nhiều người bối rối khi phân biệt kĩ thuật phầm mềm và khoa học máy tính. Sự phân biệt giữa khoa học và kĩ thuật trong lãnh vực phần mềm cũng giống như trong các lãnh vực khác. Nhà khoa học thì nghiên cứu những chân lí, kiểm chứng những giả thuyết. Kĩ sư thì học cách áp dụng kiến thức để giải quyết những vấn đề thực tế. Nhà khoa học phải cập nhật thông tin về những nghiên cứu mới nhất. Kĩ sư phải làm quen với những kĩ thuật được chứng minh là đúng đắn và hiệu quả. Nếu là nhà khoa học, bạn có thể bỏ hết công sức để chỉ đào sâu một chuyên ngành hẹp nào đó. Nếu là kĩ sư, bạn phải hiểu biết rộng về tất cả các yếu tố ảnh hưởng đến sản phẩm mình đang thiết kế. Nhà khoa học thì không cần được chuẩn hóa, vì họ chủ yếu làm việc với nhau. Còn kĩ sư thì nhất thiết phải được chuẩn hóa, vì họ chủ yếu làm việc với số đông người bình thường, không cùng chuyên môn với họ. Kiến thức khoa học giúp sinh viên sau khi ra trường có thể tiếp tục tự nghiên cứu. Kiến thức kĩ thuật giúp sinh viên có thể tham gia vào lực lượng lao động ngay sau khi ra trường.
Các trường đại học cấp bằng cử nhân khoa học máy tính cho sinh viên, và thường thì các trường đại học cho rằng những cử nhân này sau khi ra trường có thể tham gia ngay các dự án phần mềm, các dự án mà trong đó họ phải giải quyết vấn đề của thế giới thực, không còn là của thế giới ảo trong sách vở. Chỉ một phần nhỏ những cử nhân này tiếp tục học sau đại học.
Những cử nhân khoa học máy tính này bị đặt vào tình huống hết sức khó khăn. Được gọi là nhà khoa học, chưa qua đào tạo về kĩ thuật, nhưng họ phải làm công việc của kĩ sư. Điều này giống như việc chỉ định công việc thiết kế thiết bị điện với mục đích thương mại cho một tiến sĩ vật lí. Có thể vị tiến sĩ này hiểu rất rõ các nguyên lí về điện, nhưng ông ta chỉ có kinh nghiệm chế tạo các thiết bị dùng cho nghiên cứu trong phòng thí nghiệm. Ông ta không có kinh nghiệm chế tạo các thiết bị dùng cho mục đích thương mại, theo yêu cầu của người tiêu dùng. Thiết bị ông ta chế tạo có thể hoạt động được trong điều kiện phòng thí nghiệm, nhưng thiếu thực tiễn hoặc không an toàn trong điều kiện của thế giới bên ngoài phòng thí nghiệm. Cũng có thể chi phí để chế tạo một bản mẫu để thí nghiệm là chấp nhận được, nhưng chi phí để sản xuất hàng loạt lại quá cao.
Khi người lao động được đào tạo để trở thành nhà khoa học máy tính bắt đầu tham gia làm phần mềm thực sự, những thứ mà họ thiết kế và xây dựng ra thường rất tệ, không thể gọi là sản phẩm để giao cho khách hàng. Họ thường chú tâm vào một vài vấn đề hẹp, và bỏ qua nhiều yếu tố khác quan trọng hơn. Họ có thể bỏ ra 2 ngày để điều chỉnh một thuật toán cho phù hợp với yêu cầu công việc, thay vì bỏ ra 2 tiếng đồng hồ để học cách sử dụng thư viện có sẵn. Một sinh viên vừa tốt nghiệp ngành khoa học máy tính thường phải mất vài năm đào tạo qua công việc thực tế mới đạt được những kiến thức thực dụng, những kiến thức để có thể làm ra một sản phẩm nho nhỏ thực sự.
Công nghiệp phần mềm là nạn nhân của sự thành công của chính nó. Yêu cầu của thị trường việc làm phát triển nhanh hơn khả năng cung ứng của hạ tầng giáo dục, và do đó hơn một nửa số người làm về phần mềm được đào tạo trong những ngành không phải là phần mềm. Hạ tầng giáo dục đang chạy ì ạch phía sau yêu cầu tuyển dụng.
Kĩ thuật phần mềm
Một số người nghĩ rằng “kĩ sư phần mềm” đồng nghĩa với “lập trình viên”, “kĩ thuật phần mềm” đồng nghĩa với “lập trình”. Phải thừa nhận rằng, họ đang nhầm lẫn.
Từ “kĩ thuật” dùng để chỉ việc áp dụng các nguyên lí khoa học và toán học cho những mục đích thực tiễn. Chúng ta sử dụng những thuật toán được định nghĩa bằng toán học, những phương pháp thiết kế, những phương pháp quản lí chất lượng, ... để làm phần mềm. Trong các lãnh vực kĩ thuật khác (vd: kĩ thuật xây dựng), nghề nghiệp tương ứng được phát minh ra (vd: kĩ sư xây dựng), và chúng ta có thể xác định được người có trình độ thế nào thì mới đủ tư cách để tạo ra sản phẩm (vd: nhà). Lãnh vực phần mềm cũng tương tự như vậy.
Một số người nghĩ rằng đã coi làm làm phần mềm thuộc về kĩ thuật, thì luôn luôn phải áp dụng những phương pháp chính qui – viết chương trình luôn luôn phải chặt chẽ như chứng minh định lí toán học. Ý nghĩ này xuất phát từ nhận định sai về ngành kĩ thuật. Ngành kĩ thuật là ngành áp dụng những nguyên lí khoa học cho những mục tiêu thực tiễn. Coi làm phần mềm là kĩ thuật giúp làm sáng tỏ thêm ý: những mục tiêu khác nhau là phù hợp cho những dự án phần mềm khác nhau. Khi thiết kế một căn nhà, vật liệu xây dựng phải phù hợp với mục tiêu sử dụng căn nhà. Tôi có thể xây một nhà kho để chứa máy cày từ vật liệu là thép tấm, nhưng tôi không dùng thép tấm để xây nhà ở.
Một dự án phần mềm được thực hiện tốt, thì có thể đáp ứng các mục tiêu đối với sản phẩm:
  • Ít lỗi
  • Dễ sử dụng
  • Dễ bảo dưỡng
  • Dễ nâng cấp
  • Thời gian xử lí nhanh
  • Độ chính xác cao
Những người thực hiện dự án cần xác định tầm quan trọng tương đối giữa các mục tiêu trên một các rõ ràng trước khi bắt tay thực hiện.
Trong các dự án có sử dụng vật liệu, chi phí vật liệu có thể chiếm hơn 50% giá trị của cả dự án. Một số công ty cho rằng bất kì dự án nào mà chi phí nhân công chiếm hơn 50% giá trị dự án, thì dự án đó có độ rủi ro cao. Đối với dự án phần mềm, chi phí nhân công thường chiếm 100% giá trị cả dự án. Do đó, có thêm các mục tiêu đối với dự án:
  • Thời gian lập dự án ngắn
  • Có thể xác định tương đối chính xác thời điểm giao sản phẩm
  • Số thành viên tham gia dự án ít
  • Dễ thay đổi tính năng của phần mềm khi dự án đang diễn ra
Mục tiêu đối với dự án và mục tiêu đối với sản phẩm cần cân đối với nhau.
Bài viết này lược dịch từ chương 4 quyển Professional Software Development , tác giả Steve McConnell, nhà xuất bản Addison Wesley phát hành năm 2003. Steve McConnelll vào năm 1998 được độc giả tạp chí Software Development bình chọn là một trong ba nhân vật ảnh hưởng nhất đến công nghiệp phần mềm, cùng với Bill Gates và Linus Torvalds. Ông là tổng biên tập tạp chí IEEE Software từ năm 1998 đến năm 2002.
 Theo http://cntt.tv/nodes/show/21
14 thg 9, 2011

SQL joins: left join, right join, inner join, outer join,

9 thg 9, 2011

SlideShow chạy ảnh rất chậm

Haizz, xin chào các bạn. Chào mừng các bạn đến với tình huống ngày hôm nay. :D
Tôi đang làm 1 site: http://360bongda.com.vn/. Hoàn thành hết rồi nhưng lại gặp phải một lỗi khá kỳ quặc là: slide show của mục clip mới load mãi không xong. (Rất chậm - khách hàng comment). Chúng ta cùng mày mò nào,
1 thg 9, 2011

Config IIS cho ASP.Net và các lỗi thường gặp

Cấu hình IIS cho website ASP.NET

Việc cài đặt IIS khá là đơn giản, có thể tìm thấy trên mạng. Tôi chỉ có một chú ý là khi cài cho ASP.Net, cần phải check vào ASP.NET trong phần Application Development Features
29 thg 8, 2011

Những câu nói của những người nối tiếng



Steve Job của Apple
14 thg 9, 2010

Từ rày trở đi sẽ viết blog chăm hơn.

Cứ bắt tay vào công việc, gặp khó khăn là chán nản. Nhìn lại thì mình có nhiều việc quá, mà chưa làm được việc gì. Muốn làm được việc thì phải có kế hoạch cụ thể và tuân theo nó một cách nghiêm khắc.
Để xem hôm này nói gì nhé.

25 thg 4, 2010

Ngày thứ 3.

Phần 2:

Trong bài viết trước, tôi đã cố gắng mô tả một số khía cạnh của nghề lập trình viên, nhưng quên nêu lên luận điểm quan trọng nhất: vì sao lại như vậy và chúng ta phải làm thế nào đây?

Ta sẽ đi đến đâu từ vị trí này?

Nào, trước hết chúng ta bắt đầu bằng câu hỏi:

Chúng ta sẽ được làm gì khi tham gia vào một công ty phần mềm?

Một ngày đẹp trời của anh chàng LTV !

Tiếp tục với câu truyện lần trước.
Lại có một dịp khác tôi có dịp đi ăn tối với các người bạn của một người bạn của tôi. Thành phần thì đủ cả: dược sĩ, nhân viên bán hàng, marketing, giáo viên, người không có việc làm và người chưa có việc làm.

Suy nghĩ của một lập trình viên ???

Gửi những người bạn của tôi, những người đang và sẽ là lập trình viên.
Bài viết là sưu tầm của người đi sưu tầm. Đọc xong thấy nó thật thú vị. Dù là gì đi nữa, thì đây cũng là một thử thách nghề nghiệp, ta cần nhìn thẳng và nó, định hướng đúng đắn. Bài viết này được post trên một web về CNTT, và gần như các members sau khi đọc nó đều vẫn giữ được niềm tin, và đam mê vào con đường họ đã chọn.

Bài này tui đọc được bên ddth, thấy cũng rất hay và thực tế đối với các LTV như chúng ta nên cũng mạn phép leech sang đây,xin lỗi vì đã ko nhớ tên tác giả!
--------------------------------------------------------------
15 thg 4, 2010

Hic !

Chỉ là một bài nhỏ về C, thôi mà bug cả buổi tối ko ra, Gặp lỗi cấp phát bộ nhớ động. Hic. Thật ngại quá, ko hoàn thành bài tập cho C.
Nào cùng Refresh với :
Donna Donna.
13 thg 4, 2010

C và C++. All about string.

String (or array of character) dùng để lưu trữ ký tự. Các hàm của nó được khai báo trong hay (trong C++). Nó kết thúc bằng ký tự NULL ('\0') .

11 thg 4, 2010

C++. Char array và string

Có sự khác biệt nào giữa chúng không?
Câu trả lời là có, nhưng với những hiểu biết hạn chế của tôi thì nó đại loại là, string được lưu trong vùng nhớ stack, còn mảng ký tự động thì lưu trong vùng nhớ heap, trong C++.( Chú ý ,mảng tĩnh vẫn được lưu trong vùng nhớ stack)

C++.Tham trị hay tham biến

Cái này chắc nhiều bạn đã biết. Về vấn đề tham biến, tham trị. Tham biến là truyền địa chỉ, tham trị chỉ truyền giá trị. Nôm na là như thế.

28 thg 3, 2010

Sử dụng vector ( một dạng mảng động ) trong C++.

Trong C++ có một cách nữa là dùng vector. Vector là một mảng có thể co giãn chiều dài tùy ý. Phần tử của vector được truy nhập bằng toán tử []. Số phần tử được cho bằng hàm size(). Bạn có thể xem thêm các phương thức khác của vector ở đây: http://www.cplusplus.com/reference/stl/vector/

27 thg 3, 2010

Khai báo mảng động 2 chiều trong C++.

Dùng con trỏ 2 lần được đấy. Ví dụ, muốn tạo một mảng 2 chiều kiểu int cỡ M*N (đại khái tương tự như khai báo "int a[M][N]" trong đó M, N không nhất thiết là hằng), bạn cần
- tạo một mảng 1 chiều x kiểu int cỡ M*N
- tạo một mảng 1 chiều a gồm M con trỏ int
- cho mỗi con trỏ trong a trỏ đến một địa chỉ của một dòng trong X.

12 thg 3, 2010

Tự sự !

Hôm nay, một ngày đẹp trời. Buổi sáng mình dậy rất sớm, thức dậy được nhờ tiếng càu nhàu của thằng phòng bên. Hắn đi đến trường nhưng ko học nên đi về. Chắc hắn bực phải biết, mấy khi hắn đi học đâu, mà hôm nay lại dậy rất sớm mới kinh chứ. Đường đến trường vẫn vậy, vừa đi vừa ngắm mấy em xinh tươi, thấy cuộc đời thật đẹp sao, gió vẫn thổi, dòng người ngày một đông. Nhắm mắt để có một chút yên bình. Đến trường tuy hơi muộn, thầy đã vào dạy, ngồi nhìn một chút cũng hiểu được thầy dag nói gì. Hai tiết hệ điều hành qua nhanh thôi. Bỏ 4 tiết giải tích phức nhé? Ok. Lúc đó thiết nghĩ nếu có bị gọi lên bảng cũng không làm được bài, chỉ là cuối kỳ ko được cộng điểm quá trình mà thôi. " Được cộng cũng tốt, nhưng ko được cộng cũng chả chết ai". Thế là đi học HTML.
Nói về tâm trạng, đến giờ vẫn rất thất thường, ko thể kiểm soát được. Vẫn biết là chính mình thì sẽ tốt, nhưng "mình" như thế này thì ko thể được. Đến bao giờ mới kiểm soát được mình, ko biết đến bao giờ mới có người thích được mình,lúc đó ta sẽ đặt câu hỏi : " Anh thật ko hiểu tại sao em lại thích một người như anh, anh là một người đa cảm, một người ba phải, một con người tẻ nhạt. Khi em buồn, anh ko biết an ủi. Khi em vui, anh ko biết sẻ chia niềm vui. Anh thường làm những điều ngớ ngẩn. Em biết ko,khi anh yêu em thật lòng, nếu em có rơi nước mắt chắc rằng sẽ có một chàng trai khác tốt hơn anh đến lau đi những giọt nước mắt ấy, nếu trên đôi môi em nở nụ cười chắc rằng nó xứng đáng để dành cho một chàng trai khác hơn anh."
Mình phải cố gắng hơn nữa, TỰ TIN hơn. Không cần biết trước kia tôi là người như thế nào, tôi chỉ biết bây giờ nếu có ai hỏi "Bạn là ai?" Tôi sẽ nói to lên rằng "Tôi là Nguyễn Mạnh Toàn, và tôi làm được điều đó".
Hãy vạch ra những tính cách của con người trong tương lai bạn muốn hướng tới, và thực hiện nó, thể hiện nó bằng hành động. Bề ngoài của bạn chẳng nói lên điều gì, tính cách của bạn sẽ được thể hiện qua hành động của bạn. Hãy để mọi người cảm nhận được những gì tốt đẹp trong con người bạn. Có câu " Thời gian có thể hàn gắn tất cả những vết thương, có thể sửa chữa tất cả những lỗi lầm". Bạn có tin nó ko. Riêng tôi thì ko. Hãy học cách sống ở hiện tại, những cái gì đã qua thì cho nó qua. Những cái gì đang có, hãy đứng lên và thực hiện nó. Đừng ỷ lại, đừng đùn đẩy cho thời gian , đừng để nó kiểm soát. Hãy trả lời tôi thật lòng, có phải điều bạn nuối tiếc nhất từ trước đến giờ là để thời gian trôi đi vô ích:" Giá như mình được quay trở lại ngày hôm qua,mình sẽ ko ngủ cả ngày nhử thế" . Liệu ngày hôm qua bạn có nghĩ rằng ngày mai bạn sẽ nói như thế ko? Có một cách duy nhất là hãy lập cho mình một lịch biểu, Hãy tuân thủ nó một cách nghiêm ngặt. Đừng bao giờ để mình bị cuốn vào những cái ko đâu, sẽ làm mất tập trung. Nếu ko bạn sẽ trở thành một con người vô dụng và suốt ngày chỉ ngồi và than vãn "Giá như mà.." Bạn đã tưởng tượng ra cảnh tượng đó chưa.
Còn bây giờ đi giặt quần áo, sau đó tắt máy tính và đi đọc giải tích phức, và phân tích số liệu.
3 thg 2, 2010

Các loài hoa.

Vẻ đẹp của thiên nhiên là thuần khiết, chỉ có tự nhiên mới làm vừa mắt con người. Ta thấy khoan khoái khi đứng trước vẻ hùng vĩ của núi rừng, thấy tâm hồn trong sáng khi ngắm một bông hoa đẹp. Hoa tuy nhỏ bé nhưng nó lại mang một ý nghĩa rất to lớn, nó thể hiện tình cảm, nó còn chứa đựng ý nghĩa sâu xa. Hoa tuy đẹp, nhưng nếu con người biết nâng niu trân trọng, hiểu được ý nghĩa thì nó sẽ còn đẹp hơn rất nhiều.

Mai, tuyết giành xuân chẳng chịu nhường
Thi nhân đành bỏ chuyện giai chương
Mai thua tuyết ấy vài phân trắng
Tuyết hẳn nhường mai mấy bậc hương.
( Tuyết mai kỳ nhất - Lư Mai Pha)