Bài đăng

Hiển thị các bài đăng có nhãn Tản mạn về lập trình

Thêm Syntax Highlighter vào Blogger

Trước thẻ kết thúc body, bạn thêm đoạn code <!-- and it's easy to individually load additional languages --> <script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.2.0/languages/go.min.js'/> <script type='text/javascript'> $(document).ready(function() { $('pre code').each(function(i, block) { hljs.highlightBlock(block); }); });  Bạn cần cập nhật lại CSS: pre code { font-size: 0.9em; } code { font-family: Consolas, Monaco, monospace; }

Node.js - Nền tảng lập trình server side cực hấp dẫn

Hình ảnh
Bạn đã từng nghĩ đến một nền tảng xây dựng ứng dụng, lập trình một cách nhanh, nhẹ, tối ưu hóa và đặc biệt là có thể chạy trên cả hướng server lẫn client chưa? Chính xác thì Node.js sẽ giúp bạn làm được điều này.

Cách đây 30 năm người ta lập trình phần mềm như thế nào?

Hình ảnh
Ngày nay công việc lập trình (tuy hơi khô khan) nhưng cũng khá dễ chịu bởi vì các lập trình viên được trang bị rất nhiều phần mềm hỗ trợ, chỉ cần có một chiếc laptop và một phần mềm biên dịch hay soạn mã, người ta có thể viết ra rất nhiều thứ khác nhau. Tuy nhiên cách đây khoảng 3 thập niên, việc viết một phần mềm để chạy ứng dụng nào đó phải nói là rất khó khăn và cực kỳ mất thời gian vì họ không có phần mềm hỗ trợ, không có máy tính (do chưa phổ biến) để ngồi viết code và thậm chí là phải dùng tay để nhập từng đoạn mã một vào các thiết bị máy móc hay phần cứng.

Software development

Hình ảnh
Here’s a beatuful illustration of how software development works. It may seem like a joke, but it’s actually quite accurate.

Xây dựng ứng dụng WPF với mẫu thiết kế MVVM

Hình ảnh
Việc xây dựng giao diện người dùng của một ứng dụng phần mềm trong thực tế là không hề dễ dàng. Nó có thể là sự “hòa trộn” không rõ ràng của dữ liệu, thiết kế tương tác, thiết kế đồ họa, sự liên kết, vấn đề bảo mật, unit testing… Có rất nhiều mẫu thiết kế thông dụng có thể giúp giải quyết phần nào vấn đề, nhưng thực sự việc tách biệt và ánh xạ nhiều mối liên hệ có thể khá khó khăn. Đôi khi chúng ta sử dụng những mẫu thiết kế phức tạp đòi hỏi phải viết code nhiều vì nền tảng giao diện người dùng (UI platform) không đáp ứng được. Điều chúng ta cần là một nền tảng (platform) giúp xây dựng những giao diện (UI) bằng cách sử dụng những mẫu thiết kế đơn giản, có khả năng kiểm thử theo thời gian, có thiên hướng nghiêng về phía lập trình. Và Windows Presentation Foundation (WPF) cung cấp đúng những gì chúng ta cần.

All-In-One Code Framework, your one stop shop for Windows code samples, examples and guidelines

Hình ảnh
I don’t know about you, but I live and die by code samples. Seeing how something is done, walking the code in the debugger is one of the key ways I learn. Doc’s are great and an important resource, but give me code and I’ll be a happy camper. In the past, the best sample king was the Platform SDK, later renamed the Windows SDK . Today, the crown belongs to the All-In-One Code Framework. Begun as a side project, it is now an awesome gold mine of code samples, spanning the entire Windows stack. Oh yeah, the samples are in C#, VB.Net and even some in F# and C++. What will really blow you mind is that about every six weeks they release an official boat load of new samples. Just check out Code sample update in January, 2011 – Microsoft All-In-One Code Framework from the All-In-One Code Framework blog and you’ll see what I mean. And this was just one sample set. In six weeks there will be more, as there were six weeks ago and before that and before that…

Coder hoàn hảo

Hình ảnh
Những kỹ năng chuyên gia lập trình cần có Trong lĩnh vực công nghệ, những người viết chương trình (coder hay lập trình viên – LTV) đã tiến một bước dài từ hình mẫu “chuyên gia” với cây viết giắt túi. Chương trình do LTV tạo ra không chỉ làm thay đổi bộ mặt công nghệ mà còn làm thay đổi cách chúng ta liên lạc, điều hành kinh doanh, truy cập thông tin, kiểm soát sức khoẻ và nhiều thứ khác. Nói chung, nếu không có kỹ năng của các LTV, sẽ không có ngành công nghiệp phần mềm, có lẽ chúng ta vẫn còn dùng máy đánh chữ và mất hàng tuần để gửi thư thay vì chỉ mất vài giây như hiện nay. Để kiếm sống và thăng tiến trong nghề viết code, LTV cần phải thành thạo ít nhất một hay nhiều ngôn ngữ lập trình thời thượng. Và còn phải biết các kỹ thuật lập trình, mô hình phát triển phần mềm và nhiều kỹ năng khác.

10 dự án lập trình viên PHP nên trải qua

Hình ảnh
Đối với một lập trình viên PHP bạn luôn hiểu rằng PHP là một ngôn ngữ phổ biến và có một lượng khổng lồ mã nguồn để tham khảo, đa số các thành phần của một Website đã được phát triển dưới dạng nguồn mở việc sử dụng nó yêu cầu tuân thủ theo giấy phép của tác giả đôi khi không bao gồm sự ràng buộc nào.

Java hay .NET? Một bài toán nan giải của nhiều Newbie

Hình ảnh
Có rất nhiều bạn đang rất phân vân khi không biết chọn hướng nào, có bạn đã định hướng trước là chọn Java nhưng nghe nói .NET hay quá cũng phân vân, có bạn chọn .NET rồi nhưng lại thấy tiếc, có bạn muốn chọn cả hai thì sợ mình kham không nổi. Chính chủ nhân blog này đã từng gặp phải hoàn cảnh như vậy, nhưng khi đọc qua một số bài viết trên một diễn đàn IT thì tôi mới ngộ ra được nhiều điều. Tôi nghĩ bài viết này cũng rất có ích cho nhiều bạn trẻ khi mới tập tành học lập trình ... Cám ơn các tác giả có nickname YHT và davidex về bài phân tích khá chi tiết này.

Skip List - đối thủ của cây cân bằng

Hình ảnh
Khi đề cập đến bài toán tìm kiếm chắc bạn đã ít nhiều biết đến cấu trúc cây cân bằng (balanced tree). Cấu trúc này cho phép thực hiện tìm kiếm với độ phức tạp trung bình là O(log2n). Tuy nhiên, để tránh tình trạng cây suy biến, ta phải cân bằng cây mỗi khi chèn một nút mới. Nói chung, cân bằng cây là một thao tác tương đối phức tạp do phải hoán chuyển nhiều nút và do đó cũng ảnh hưởng đến hiệu suất. Skip List giải quyết vấn đề này khá hiệu quả mà vẫn không ảnh hưởng đáng kể đến tốc độ của phép tìm kiếm. SkipList được giáo sư William Pugh thuộc trường đại học MaryLand giới thiệu vào khoảng tháng 8 năm 1989 trong một bài báo tham dự hội nghị về thuật toán và cấu trúc dữ liệu tại Ottawa Canada.

9 Practical Ways to Enhance your Web Development Using the Firefox Web Developer Extension

Hình ảnh
Whether you’re a front-end graphics designer or a back-end web programmer, if you’ve worked long enough in the field of creating web-based solutions, you’ve no doubt heard about an extension for the Mozilla Firefox web browser called (simply enough) the Web Developer extension . If you have no clue what I’m talking about, here’s a brief overview from Webs Tips to get you familiarized with this wonderful tool. This article lists some practical, everyday uses of the Web Developer extension to help improve your web-building methods. I’ve tried to stay away from the more common and basic uses of the Web Developer extension like troubleshooting layout issues with the Information > Display Div Order option because I feel these have been discussed quite enough in other places. New users, don’t run away quite yet, I think this guide will help you get a rapid jump start into applying this tool into your daily development routine. So without further ado, here’s nine highly pragmatic uses...

Giới thiệu về lập trình hướng đối tượng

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (OOP) LÀ GÌ ? Lập trình hướng đối tượng (Object-Oriented Programming, viết tắt là OOP) là một phương pháp mới trên bước đường tiến hóa của việc lập trình máy tính, nhằm làm cho chương trình trở nên linh hoạt, tin cậy và dễ phát triển. Tuy nhiên để hiểu được OOP là gì, chúng ta hãy bắt đầu từ lịch sử của quá trình lập trình – xem xét OOP đã tiến hóa như thế nào. Lập trình tuyến tính Máy tính đầu tiên được lập trình bằng mã nhị phân, sử dụng các công tắt cơ khí để nạp chương trình. Cùng với sự xuất hiện của các thiết bị lưu trữ lớn và bộ nhớ máy tính có dung lượng lớn nên các ngôn ngữ lập trình cấp cao đầu tiên được đưa vào sử dụng . Thay vì phải suy nghĩ trên một dãy các bit và byte, lập trình viên có thể viết một loạt lệnh gần với tiếng Anh và sau đó chương trình dịch thành ngôn ngữ máy. Các ngôn ngữ lập trình cấp cao đầu tiên được thiết kế để lập các chương trình làm các công việc tương đối đơn giản như tính toán. Các chương trình ban đầu chủ...

Nested Functions

Bài viết trích từ   openandfree . Bài gốc tiếng Anh tại trang gotw Bài viết này không trình bày chi tiết về nested class trong C++ mà chỉ tập trung vào các kĩ thuật sử dụng nested class và function object để mô phỏng các nested function, một yếu tố không có trong C++. Các chi tiết về nested class có thể tìm thấy trong nhiều cuốn sách C++ khác, ví dụ cuốn Thinking in C++, tập 1. Bài viết đưa ra ba câu hỏi và sau đó lần lượt đi tìm các câu trả lời cho chúng. Ba câu hỏi là: 1- Nested class là gì? Tại sao chúng ta cần các nested class? 2- Local class là gì? Tại sao chúng ta cần các local class? 3- Trong C++ không có khái niệm nested function. Bởi vậy, chúng ta không thể viết một đoạn mã như sau int f( int i ) { int j = i*2; int g( int k ) { return j+k; } j += 4; return g( 3 ); } Hãy đưa ra một giải pháp mô phỏng các hàm f và g sao cho đạt được một “hiệu ứng” tương tự như đoạn mã trên. Type rest of the post hereHãy đưa ra một giải pháp mô phỏng các hàm f và g sao cho đạt được một “hiệu ứng”...

Cờ toán Việt Nam

Hình ảnh
Gần đây may mắn được dịp làm quen với món cờ toán này, cảm nhận đầu tiên là cách chơi đơn giản (chỉ 1 phút là biết chơi ngay) nhưng cũng rất thú vị. Cờ toán được phát mình trong thời gian 20 năm (theo lời tác giả) bởi bác Vũ Văn Bảy, một người mới chỉ học hết lớp 7 (đều là số 7, thật trùng hợp). Nghe nói bác Bảy được người Tàu gạ gẫm mua lại cờ toán với giá rất cao (cái giá mà phải em em bán ngay ) nhưng bác đã từ chối vì lí do là tay người Tàu bắt bác thay mấy cái chấm bằng kí tự tượng hình của Tàu và không gọi là cờ toán Việt Nam nữa mà goi là cờ toán quốc tế. Xin hoan nghênh tinh thần dân tộc của bác Bảy, nhưng xin bác đăng kí bản quyền nhanh cho không có số phận của món cờ bác dày công 20 năm lại giống như quần đảo Hoàng Sa thì tiếc lắm lắm. Luật Cờ toán Việt Nam Luật cờ toán rất đơn giản, có thể search trên mạng thấy một đống nhưng chung qui lại có thể tóm tắt như sau: Bàn cờ ban đầu xếp như hình vẽ. Di chuyển: Quân có n chấm thì được đi số bước nhỏ hơn hay bằng n theo 8 hướng. Nh...

Phương pháp lập học lập trình hiệu quả

Các ngôn ngữ lập trình ra đời và lỗi thời nhanh một cách đáng kinh ngạc trong ngành Khoa học Máy tính. Các ngôn ngữ lập trình mới thường chứa đựng những quy tắc khác nhau làm cho mọi người phải thường xuyên thay đổi cách dùng các công cụ cũng như thói quen lập trình. Nhưng việc học một ngôn ngữ lập trình mới để cung cấp thêm kiến thức cho nghề nghiệp của mình cũng là một nhu cầu chính đáng. Trước khi học một ngôn ngữ mới, bạn thường đặt ra câu hỏi: Làm sao để học ngôn ngữ lập trình này được hiệu quả? Có một vài gợi ý nhỏ sau có thể giúp bạn học các ngôn ngữ lập trình dễ dàng hơn: 1. Nắm vững các kiểu dữ liệu cơ bản mà ngôn ngữ lập trình cung cấp. Hầu hết các ngôn ngữ đều cung cấp kiểu số nguyên integer. Bạn phải tìm hiểu thêm thế nào là long integer hoặc short integer? Thế nào là kiểu liệt kê (Enumerated)? Thế nào là kiểu kí tự (Character)? Thế nào là kiểu chuỗi (String)? Ngôn ngữ có hỗ trợ kiểu số thực dấu chấm động hay không, và tầm giá trị của mỗi kiểu dữ liệu là bao nhiêu?...

SUY NGHĨ SAI LẦM VỀ VIỆC HỌC PASCAL !!

Đây là bài viết mình copy từ A1Club, thấy hay và có ích nên mong muốn chia sẻ cho mọi người xem. PHẢN BIỆN NHỮNG SUY NGHĨ SAI LẦM VỀ VIỆC HỌC PASCAL & Tiếp cận với ngôn ngữ Pascal từ một vài bài toán thực tế Phuctho, 3/2009 * * * Thế là sắp hết năm học lớp 11 mà mình thấy việc học pascal của các bạn trong lớp chẳng có gì khả quan! Có lẽ các bạn không có đam mê với môn học này chăng hay các bạn còn có những điều chưa rõ về mục đích của việc học pascal trong nhà trường! Đã có lần mình đọc được trên mạng một bài viết rất phản cảm nói về ngôn ngữ Pascal. Bài viết cho rằng việc học pascal là vô bổ, là phí phạm thời gian! là làm sao mà bộ GDĐT không cho học Visual Basic thay cho pascal vốn đã cũ rích! ...tóm lại bài viết đó có ý nói rằng pascal là ngôn ngữ thiếu tính thực tế, không thể viết phần mềm ứng dụng !!!! Về phần mình, mình xin nhận xét rằng tác giả của bài viết trên đã có một cái nhìn phiếm diện, một cái nhìn nông cạn của một kẻ qua đường với một ngôn ngữ trong sáng như pascal!!...

Một cách nhân độc đáo (Phần 2)

Đây là đoạn code do Nhung viết lên, mọi người xem thử nhé. #include<iostream.h> #include<stdio.h> #include<stdlib.h> #include<string.h> #define max 100 /****/ void xuatfile(char *fn); void docfile(char *fn,int *&a,int *&b,int &n,int &m); void nhan(char *fn,int *&a,int *&b,int **&mt,int n,int m); void ghifile(char *fn,int *&a,int n); /****/ void main() { char *fn="bignum_in.txt"; char *fm="bignum_out.txt"; int *a=new int[max],*b=new int[max];// ab co toi da 100 chu so int n=0,m=0;//la so chu so cua a,b doc tu file,khoi tao =0 docfile(fn,a,b,n,m); //tao ma ram luu ket qua nhan tung chu so cua voi b int **mt; mt=new int *[n]; for(int i=0;i<n;i++) mt[i]=new int [m]; nhan(fm,a,b,mt,n,m); //thu hoi mang dong delete a; delete b; for(i=0;i<m;i++) delete []mt[i]; delete[]mt; //xuat ket qua xuatfile(fm); } /****/ void xuatfile(char *fn) { FILE *f; ...

Một cách nhân độc đáo

Những điều tôi nói đây có lẽ bạn không tin, nhưng đó đúng là sự thật đấy. Bạn có từng đặt câu hỏi: "How to perform cool multiplication. Without using calculator." Và mình tin chắc rằng có bạn nói được vì ta có thể áp dụng cách nhân trên giấy từng học ở lớp 3, lớp 4. Nhưng nếu nói về phương diện lập trình, đây có lẽ không phải là cách tối ưu, nhưng thể hiện sự sáng tạo. Trước khi nói đến phép nhân, mình xin phép kể một câu chuyện. Bạn có quyền tin hay không tin? Nhưng đối với mình, nó là một câu chuyện lí thú và mãi khắc sâu vào lòng mình Thầy mình cho đề tài: Cho 2 số a,b có chiều dài tối đa N (N>=100). Hãy tính kết quả axb. Đây là phép tính tràn bộ nhớ. Mình đã suy nghĩ rất lâu, cuối cùng đã ra được một phương pháp nhân trên ma trận. Lúc đó mình đang ăn sữa chua, trước mặt mình có cái nồi canh, và mình đang nghĩ tới Nỡ. Nỡ rất yếu về ma trận, nồi canh mình tưởng tượng nó phẳng, thế là mình đặt câu hỏi liệu ta để 2 phép tính một dọc, một ngang có được không? Và lúc đó Tâm ...

PHÉP TOÁN XOR

Hôm nay ngẫu hứng tự nhiên thấy phép XOR hơi hay hay, nên viết lên mọi người tham khảo nhé. Còn gọi là hàm không tương đương, Hàm cộng modul-2, Hay là phép Cộng có loại trừ.  Phương trình  : Phương trình hàm XOR 2 biến được định nghĩa như sau :      F(AB) = A B  +  A B = A  Å  B F = 1 khi tất cả các biến đầu vào có giá trị khác nhau.  F = 0 khi các biến vào có giá trị giống nhau. Bảng chân lý  :  bảng chân lý hàm XOR có dạng như sau: A B A  Å  B   0 0 0 0 1 1 1 0 1 1 1 0 Trong phép hoán vị giá trị của 2 biến a,b dùng thuật toán xor đó.

Bài toán tháp Hà Nội

Hình ảnh
Nguồn từ wikipedia.org Bài toán tháp Hà Nội (tiếng Anh gọi là Tower of Hanoi hay Towers of Hanoi) xuất phát từ trò chơi đố Tháp Hà Nội. Mục đích của bài toán là thực hiện được yêu cầu của trò chơi. Dạng bài toán thông dụng nhất là: "Người chơi được cho ba cái cọc và một số đĩa có kích thước khác nhau có thể cho vào các cọc này. Ban đầu sắp xếp các đĩa theo trật tự kích thước vào một cọc sao cho đĩa nhỏ nhất nằm trên cùng, tức là tạo ra một dạng hình nón. Người chơi phải di chuyển toàn bộ số đĩa sang một cọc khác, tuân theo các quy tắc sau: Một lần chỉ được di chuyển một đĩa Một đĩa chỉ có thể được đặt lên một đĩa lớn hơn (không nhất thiết hai đĩa này phải có kích thước liền kề, tức là đĩa nhỏ nhất có thể nằm trên đĩa lớn nhất)". Bài toán này có lời giải chính xác. Tuy nhiên các mở rộng cho trường hợp có nhiều hơn ba cọc cho đến nay vẫn chưa được giải cặn kẽ. Cách giải: Đa số các trò chơi dạng này có 8 đĩa. Đối với người mới chơi thì có vẻ khó nhưng thật ra thuật giải...