09/12/2012
Student Visit Tour Document
Thời gian vừa qua Folami có cơ hội được trò chuyện với các bạn sinh viên HCMUT (cũng là các bạn đồng môn F). Nội dung chính là các bạn chuẩn bị gì để trở thành một nhà phát triển phần mềm C/C++ và một vài kinh nghiệm cho buổi phỏng vấn xin việc. Tất cả những vấn đề nêu ra đều xuất phát từ ý kiến cá nhân của F trong quá trình phỏng vấn các bạn sinh viên mới ra trường xin việc làm. Nếu có thông tin gì không đúng hay có gì muốn trao đổi với F thì đừng ngần ngại gửi email cho F.
06/12/2012
Hiển thị tập tin Freemind trong Blogger
- Tải visorFreemind.swf từ trang nhà của Freemind
- Upload visorFreemind.swf lên một host miễn phí nào đó ví dụ http://www.000webhost.com. Giả sử URL của file visorFreemind.swf là http://www.example.com/visorFreemind.swf
- Upload file Mindmap example.mm lên host tương tự như tập tin visorFreemind.swf. Giả sử URL của file này là http://www.example.com/example.mm
- Tạo bài viết mới trong blog của bạn chọn tab "HTML" và post nội dung bên dưới vào:
<div style="width: 100%;height:500px;">Sau đây là một ví dụ:
<object data="http://www.example.com/visorFreemind.swf" height="100%" type="application/x-shockwave-flash" width="100%">
<param name="movie" value="http://www.example.com/visorFreemind.swf" />
<param name="quality" value="high" />
<param name="flashvars" value="initLoadFile=http://www.example.com/example.mm&openUrl=_self&startCollapsedToLevel=3&maxNodeWidth=200&mainNodeShape=elipse&justMap=false&defaultToolTipWordWrap=200&offsetX=middle&offsetY=middle&buttonsPos=top&min_alpha_buttons=20&max_alpha_buttons=100&scaleTooltips=false&bgcolor=0xF8FBFC" />
</object>
</div>
05/12/2012
Những điểm mới trong XCode 4.5
Hiện nay XCode có phiên bản mới nhất là 4.5.2. So với phiên bản 4.5 thì các phiên bản 4.5.1 và 4.5.2 chủ yếu là để sửa các lỗi trong phiên bản 4.5. So với các phiên bản trước đó thì XCode 4.5 có những điểm nổi bật như sau:
- LLDB là trình gỡ rối mặc định thay cho GDB.
- Hỗ trợ OpenGL debugging & performance analysis.
- Auto layout.
- Object-C literal trong NSArray và NSDictionary.
- Hỗ trợ truy xuất bằng toán tử [].
- Hỗ trợ chuẩn C++11.
- NSNumber literals:
// character literals.
NSNumber *theLetterZ = @'Z'; // equivalent to [NSNumber numberWithChar:'Z']
// integral literals.
NSNumber *fortyTwo = @42; // equivalent to [NSNumber numberWithInt:42]
NSNumber *fortyTwoUnsigned = @42U; // equivalent to [NSNumber numberWithUnsignedInt:42U]
NSNumber *fortyTwoLong = @42L; // equivalent to [NSNumber numberWithLong:42L]
NSNumber *fortyTwoLongLong = @42LL; // equivalent to [NSNumber numberWithLongLong:42LL]
// floating point literals.
NSNumber *piFloat = @3.141592654F; // equivalent to [NSNumber numberWithFloat:3.141592654F]
NSNumber *piDouble = @3.1415926535; // equivalent to [NSNumber numberWithDouble:3.1415926535]
// BOOL literals.
NSNumber *yesNumber = @YES; // equivalent to [NSNumber numberWithBool:YES]
NSNumber *noNumber = @NO; // equivalent to [NSNumber numberWithBool:NO]
#ifdef __cplusplus
NSNumber *trueNumber = @true; // equivalent to [NSNumber numberWithBool:(BOOL)true]
NSNumber *falseNumber = @false; // equivalent to [NSNumber numberWithBool:(BOOL)false]
#endif
Lưu ý:
- Giá trị sau @ là một giá trị đơn, không chấp nhận biểu thức. Trong trường hợp cần đóng gói
(boxing) cho một biểu thức thì sử dụng cú pháp:@(expression) - Đóng gói giá trị enum thì giá trị này chuyển sang kiểu của enum, nếu enum không khai báo kiểu
thì kiều mặc định là số nguyên. - Đóng gói C string chuyển thành NSString với UTF8 encoding.
- Container literals:
- Array: NSArray*a = @[Danh sách các đối tượng ngăn cách nhau bằng dấu phẩy];
- Dictionary: NSDictionary*b = @{ 1 danh sách các cặp @"key":object cách nhau bằng dấu phẩy}.
- Object subscripting:
NSMutableArray *array = ...;
NSUInteger idx = ...;
id newObject = ...;
id oldObject = array[idx];
array[idx] = newObject; // replace oldObject with newObject
NSMutableDictionary *dictionary = ...;
NSString *key = ...;
oldObject = dictionary[key];
dictionary[key] = newObject; // replace oldObject with newObject
- Sử dụng #if __has_feature(objc_array_literals|objc_dictionary_literals|objc_subscripting) để kiểm tra chức năng này có hay không.
Labels:
iOS
24/06/2012
Lập trình Qt cho Android
Nếu bạn đã có một chương trình Qt chạy khá tốt trên các nền tảng khác bây giờ bạn muốn chuyển nó qua Android mà bạn không muốn tốn nhiều công sức để viết lại từ đầu sử dụng Android SDK thì đây là bài viết phù hợp cho bạn.
Tôi cũng là một nhà phát triển phần mềm sử dụng Qt/QML. Tôi cũng có một mong muốn giống bạn. Tôi đã bắt đầu từ Android Lighthouse. Tuy nhiên gần đây tôi đã phát hiện ra Necessitas. Necessitas đã cung cấp cho người dùng một bộ SDK khá hoàn chỉnh để phát triển chương trình Qt/QML cho Android. Necessitas sử dụng Android Lighthous, Qt Creator, Ministro. Tuy Necessitas chưa được ổn định nhưng đã phần nào đáp ứng nhu cầu của tôi.
Tôi đã thử phát triển chương trình QML và deploy trên Android phone. Chương trình chạy rất OK.
Tôi cũng là một nhà phát triển phần mềm sử dụng Qt/QML. Tôi cũng có một mong muốn giống bạn. Tôi đã bắt đầu từ Android Lighthouse. Tuy nhiên gần đây tôi đã phát hiện ra Necessitas. Necessitas đã cung cấp cho người dùng một bộ SDK khá hoàn chỉnh để phát triển chương trình Qt/QML cho Android. Necessitas sử dụng Android Lighthous, Qt Creator, Ministro. Tuy Necessitas chưa được ổn định nhưng đã phần nào đáp ứng nhu cầu của tôi.
Tôi đã thử phát triển chương trình QML và deploy trên Android phone. Chương trình chạy rất OK.
13/06/2012
Lần đầu tiên sử dụng dịch vụ nhờ thu hộ Séc
Nhớ lần đầu tiên tôi nhận Séc của GMI. Tôi không biết phải làm sao để sử dụng nó. Tôi lên mạng hỏi nhà thông thái Google. Thì ra tôi phải ra ngân hàng sử dụng dịch vụ thu hộ Séc. Gần chỗ tôi làm có phòng giao dịch của ngân hàng STB. Khi tôi đưa tờ Séc ra cô nhân viên xinh đẹp hỏi tôi có phải Séc du lịch không? Trời ơi tui biết Séc du lịch là cái gì tui chết liền ý. Tôi mới trả lời là mình không biết. Cô ấy chạy lại hỏi cấp trên một hồi và nói:
-Anh ơi cái này anh qua VCB ấy, bên đó họ mới thanh toán Séc quốc tế.
Tôi trở về mà lòng buồn buồn và tự hỏi sao mà phiền phức tiếp. Có được vài từ khoá qua cuộc trao đổi với cô tiếp tân của STB tôi quyết định hỏi bác Google lần nữa. Lần này tui hỏi bác ấy ngân hàng nào chấp nhận thanh toán. Bác ấy trả lời là BIDV. Sáng hôm sau tôi đến phòng giao dịch BIDV lấy số thứ tự và ngồi chờ. Đến lượt tui, tui đưa cái Séc ra, cô nhân viên BIDV lại lắc đầu lia lịa:
-Anh ui cái này anh qua VCB kế bên nha, bên đó họ mới thanh toán Séc quốc tế.
Tôi đành phải qua phòng giao dịch VCB kế bên. Lần này không phải lấy số đâu nhé vì trưa rồi không còn ai nữa. Tôi đưa tờ Séc cho anh đẹp trai, anh ta lại lắc đầu nguầy nguậy:
-Anh ui cái này anh phải đến chi nhánh cơ. Ở TP.HCM thì anh đến CN Kỳ Đồng hay CN Bến Chương Dương.
Tôi không quên cảm ơn anh.
Hôm sau, tôi lên CN Kỳ Đồng vì chỗ này gần chỗ tôi. Tôi bắt số và ngồi chờ đến lượt. Cuối cùng cũng đến lượt tôi. Tôi đưa tờ Séc cho cho bank teller, cô ta nói giọng Huế ngọt lịm:
-Anh ui, cái này anh đến chỗ Bến Chương Dương nha, ở đó mới có bộ phận làm việc này.
Trong lòng bắt đầu chán nản nhưng tôi cũng cố lên Bến Chương Dương:
-Anh ui, cái địa chỉ trong Séc không giống trong CMND, địa chỉ này là địa chỉ tạm trú à. Vậy anh có đem sổ tạm trú không?
-Trời ơi sao tôi biết cái này phải đem sổ tạm trú chứ! Chị vui lòng cho tôi bổ sung khi đến nhận tiền không?
-Không được anh à! Vì sếp em duyệt nữa mà không có sổ tạm trú là không được duyệt rùi.
Tôi đành phải chạy về nhà để mượn sổ tạm trú. Khi quay lên tôi lại không đi đường cũ mà chạy lạc qua hầm chui Thủ Thiêm. Lần đầu tiên tôi chạy qua cái hầm này. Trời đất ơi cái hầm sao mà dài và qua hầm lại không có chỗ quay đầu xe. Cuối cùng cũng đến được VCB một lần nữa. Lần này mọi thứ suôn sẻ. Tiền thu từ Séc có thể tự động chuyển vào tài khoản.
-Anh ơi cái này anh qua VCB ấy, bên đó họ mới thanh toán Séc quốc tế.
Tôi trở về mà lòng buồn buồn và tự hỏi sao mà phiền phức tiếp. Có được vài từ khoá qua cuộc trao đổi với cô tiếp tân của STB tôi quyết định hỏi bác Google lần nữa. Lần này tui hỏi bác ấy ngân hàng nào chấp nhận thanh toán. Bác ấy trả lời là BIDV. Sáng hôm sau tôi đến phòng giao dịch BIDV lấy số thứ tự và ngồi chờ. Đến lượt tui, tui đưa cái Séc ra, cô nhân viên BIDV lại lắc đầu lia lịa:
-Anh ui cái này anh qua VCB kế bên nha, bên đó họ mới thanh toán Séc quốc tế.
Tôi đành phải qua phòng giao dịch VCB kế bên. Lần này không phải lấy số đâu nhé vì trưa rồi không còn ai nữa. Tôi đưa tờ Séc cho anh đẹp trai, anh ta lại lắc đầu nguầy nguậy:
-Anh ui cái này anh phải đến chi nhánh cơ. Ở TP.HCM thì anh đến CN Kỳ Đồng hay CN Bến Chương Dương.
Tôi không quên cảm ơn anh.
Hôm sau, tôi lên CN Kỳ Đồng vì chỗ này gần chỗ tôi. Tôi bắt số và ngồi chờ đến lượt. Cuối cùng cũng đến lượt tôi. Tôi đưa tờ Séc cho cho bank teller, cô ta nói giọng Huế ngọt lịm:
-Anh ui, cái này anh đến chỗ Bến Chương Dương nha, ở đó mới có bộ phận làm việc này.
Trong lòng bắt đầu chán nản nhưng tôi cũng cố lên Bến Chương Dương:
-Anh ui, cái địa chỉ trong Séc không giống trong CMND, địa chỉ này là địa chỉ tạm trú à. Vậy anh có đem sổ tạm trú không?
-Trời ơi sao tôi biết cái này phải đem sổ tạm trú chứ! Chị vui lòng cho tôi bổ sung khi đến nhận tiền không?
-Không được anh à! Vì sếp em duyệt nữa mà không có sổ tạm trú là không được duyệt rùi.
Tôi đành phải chạy về nhà để mượn sổ tạm trú. Khi quay lên tôi lại không đi đường cũ mà chạy lạc qua hầm chui Thủ Thiêm. Lần đầu tiên tôi chạy qua cái hầm này. Trời đất ơi cái hầm sao mà dài và qua hầm lại không có chỗ quay đầu xe. Cuối cùng cũng đến được VCB một lần nữa. Lần này mọi thứ suôn sẻ. Tiền thu từ Séc có thể tự động chuyển vào tài khoản.
Labels:
Kiếm tiền qua mạng
02/06/2012
PHP: Phân biệt Android Phone và Android Tablet
Đầu tiên lấy thông tin UA từ server:
$userAgent = $_SERVER['HTTP_USER_AGENT'];
Nếu chuỗi này có chứa từ Android thì client device đang chạy Android OS:
if (stripos($userAgent, 'Android') !== false){
//Cần xác định Android Phone hay Android Tablet ở đây.
}
Không có một cách nào chính xác để phân biệt giữa Android Phone và Android Tablet (chưa kể một số web browser cho phép người dùng thiết lập UA). Tuy nhiên có một số mẹo sau:
- Android 3.x chỉ sử dụng cho các Tablet.
- Google khuyên các nhà sản xuất bỏ chữ 'Mobile' ra khỏi chuỗi UA.
- Một số thiết bị Kindle Android lại có chữ Mobile trong UA nhưng nó lại không có chữ Silk.
if (stripos($userAgent, 'Android') !== false){
if (stripos($userAgent, 'Android 3') !== false ||
stripos($userAgent, 'Tablet') !== false ||
stripos($userAgent, 'Mobile') === false ||
stripos($userAgent, 'Silk') !== false )
}else{
//Android Phone
}
}
12/05/2012
Tắt ARC trong XCode 4.2
Trong XCode 4.2, khi bạn tạo một dự án mới thì có một checkbox cho phép bạn chọn là dự án của bạn có dùng chức năng ARC (Automatic Reference Counting) hay không. Với chức năng này khi viết code bạn không phải quan tâm nhiều đến việc quản lý bộ nhớ. Bạn đã chọn sử dụng ARC. Tuy nhiên sau đó dự án của bạn phải sử dụng một thư viện của hãng thứ ba, thư viện này lại không sử dụng tính năng ARC. Do đó bạn đứng trước một lựa chọn vô cùng khó khăn: Sử dụng thư viện hay sử dụng ARC. Mình tin rằng bạn chọn sử dụng thư viện. Vậy làm sađâyo để tắt tính năng ARC cho dự án hiện tại đây? Bạn làm theo các bước sau đây:
- Chọn project file
- Chọn tab Build Settings, chọn tuỳ chọn Levels (mặc định là Combined)
- Có một ô dùng để tìm kiếm gần Combined, gõ vào từ Automatic
- Chọn nhóm Apple LLVM Compiler 3.0 – Language, hàng thứ hai trong nhóm này dùng để điều khiển ARC
- Chuyển "yes" sang "no" ở hàng này
Labels:
iOS
11/05/2012
Hide navigation bar
Trong lập trình iOS sử dụng navigation controller đôi chúng ta muốn ẩn đi navigation bar chẳn hạn như ở view đầu tiên. Ở view nào chúng ta muốn tắt navigation bar chúng ta sử dụng đoạn code sau:
- (void) viewWillAppear:(BOOL)animated{
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated{
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillDisappear:animated];
}
Labels:
iOS
09/05/2012
Kiếm tiền qua mạng: Lập trình viên tự do
Nếu bạn là một lập trình viên, một chuyên viên thiết kế đồ hoạ giỏi thì việc chọn ở nhà làm một người làm nghề tự do (freelancer) cũng là một lựa chọn không tồi lắm, đôi khi còn sáng suốt nếu bạn là người yêu thích tự do nhưng không thích làm doanh nhân mở công ty riêng.
Để làm freelancer bạn phải chọn cho mình một nguồn công việc ổn định, nếu bạn là người quan hệ rộng có nhiều quan hệ thì quá tốt còn không bạn hãy chọn cho mình một website. Rất nhiều website dạng này:
Tôi đã từng làm cho vWorker.com. Đây là website rất tốt. Bạn chỉ cần đăng ký một tài khoản miễn phí. Sau đó sử dụng RSS reader để nhận liên kết công việc mới nhất được post trên website. Sau đó bạn vào đấu giá công việc phù hợp với bạn. Khi Employers chấp nhận bạn, bạn tiến hành công việc theo thảo thuận. Tiền lúc này đã được Employers chuyển vào tài khoản bên thứ 3. Khi bạn giao kết quả, Employers chấp nhận kết quả đó thì tiền sẽ chuyển từ bên thứ ba vào tài khoản của bạn trên vWorker.
Nếu có xảy ra tranh chấp thì bạn hãy nhờ các trọng tài Arbitrator phân xử.
Đến kỳ hạn thì vWorker sẽ chuyển tiền của bạn theo phương thức mà bạn chọn. Các phương thức gồm có:
Chúc các bạn may mắn.
Bài kế tiếp mình sẽ viết về cách kiếm tiền qua mạng bằng "Lập website"
Để làm freelancer bạn phải chọn cho mình một nguồn công việc ổn định, nếu bạn là người quan hệ rộng có nhiều quan hệ thì quá tốt còn không bạn hãy chọn cho mình một website. Rất nhiều website dạng này:
Tôi đã từng làm cho vWorker.com. Đây là website rất tốt. Bạn chỉ cần đăng ký một tài khoản miễn phí. Sau đó sử dụng RSS reader để nhận liên kết công việc mới nhất được post trên website. Sau đó bạn vào đấu giá công việc phù hợp với bạn. Khi Employers chấp nhận bạn, bạn tiến hành công việc theo thảo thuận. Tiền lúc này đã được Employers chuyển vào tài khoản bên thứ 3. Khi bạn giao kết quả, Employers chấp nhận kết quả đó thì tiền sẽ chuyển từ bên thứ ba vào tài khoản của bạn trên vWorker.
Nếu có xảy ra tranh chấp thì bạn hãy nhờ các trọng tài Arbitrator phân xử.
Đến kỳ hạn thì vWorker sẽ chuyển tiền của bạn theo phương thức mà bạn chọn. Các phương thức gồm có:
- Trả qua Western Union: vWorker gửi cho bạn mã chuyển tiền. Bạn chỉ cần ra chi nhánh Western Union gần nhất, đọc mã số trên để nhận tiền. Phương pháp này phí chuyển tiền khá cao.
- Snail mail check: vWorker gửi séc cho bạn qua thư đến địa chỉ nhà bạn. Mình không dùng cách này.
- Payoneer
- Paypal: Cách này mình thấy tiện lợi nhất. vWorker chuyển tiền vào tài khoản Paypal của bạn. Bạn có thể chuyển tiền từ tài khoản Paypal vào tài khoản ngân hàng ở Việt Nam. Mỗi giao dịch hiện nay Paypal tính $5 và điểm cần lưu ý là tỉ lệ qui đổi tiền USD sang VND thường thấp hơn thị trường.
- Skrill: Mình chưa thử cách này.
Chúc các bạn may mắn.
Bài kế tiếp mình sẽ viết về cách kiếm tiền qua mạng bằng "Lập website"
Labels:
Kiếm tiền qua mạng
28/04/2012
Vua bánh mì (King Of Baking, Kim Tak Goo)
- Đạo diễn: Han Joon Seo
- Diễn viên: Yoon Si Yoon, Joo Woo, Lee Young Ah, Jun Gwang Ryul, Jun In Hwa, Jun Mi Sun, Oh Jae Moo, Shin Dong Woo
- Thể loại:Tình cảm, hài hước
- Sản xuất: KBS
- Quốc gia: Hàn Quốc
- Thời lượng: 30 Tập
- Năm phát hành: 2010
- Thích nhất là mỗi lúc gặp khó khăn, chùng bước anh chàng Kim Tak Goo lại tự gọi tên mình và nói "Phải là chính mình". Đúng vậy phải là chính mình, biết rõ mình là ai, thích điều gì, đam mê điều gì, mạnh ở đâu và yếu chỗ nào thì nhất định chuyện gì, khó đến đâu cũng làm được.
- Đoạn xúc động nhất là lúc chị cả Goo Ja Kyung ôm chầm hai cậu em trai Kim Tak Goo và Goo Ma Joon với niềm hạnh phúc, xúc động và lòng biết ơn trào lên ở khoé mắt. Một cảnh đẹp của sự đoàn kết của tình anh em. Nếu biết đoàn kết và thương yêu nhau của anh chị em trong một nhà thì không gì hạnh phúc bằng.
- Luật nhân quả: Seo In Sook là con dâu sống không tốt với mẹ chồng nên sau này cô con dâu Shin Yoo Kyung cũng lấy cùng thái độ để đối đãi với bà.
- Xem phim chắc ai cũng thấy đáng ghét nhất là Goo Ma Joon nhưng thật ra cậu ấy thật đáng thương. Cậu ấy là một con người lương thiện nhưng vì sự tác động của Han Seung Jae và mẹ mình nên anh đi từ sai lầm này đến sai lầm khác nhưng cuối cùng cái thiện trong con người anh ta cũng được bộc lộ ở cuối phim khi anh đã vì nghĩa diệt thân tự tay đưa Han Seung Jae (người mà theo anh là cha ruột của mình) vào còng vì đây là cách duy nhất để cứu ông.
- Con trai nhờ đức mẹ: Đây là câu nói của ông bà xưa. Trong câu chuyện này cũng thể hiện phần nào cái ý này qua hai nhật vật Kim Tak Goo và Goo Ma Joon.
- Kết thúc phim với triết lý sống mỗi người chỉ sống thật sự hạnh phúc khi được làm những gì mình yêu thích. Hãy làm nó với tất cả niềm đam mê cháy bỏng, bạn sẽ thành công.
- Hơi hụt hẫng một tí khi cảnh Hwang Mi Sun mặc áo cô dâu cùng chàng rễ Kim Tak Goo không xuất hiện.
Labels:
Xem phim cùng Fo
27/04/2012
Kiếm tiền qua mạng:Trả lời bảng khảo sát
Bài viết này nằm trong loạt bài viết "Kiếm tiền qua mạng". Trong loạt bài viết này tôi sẽ lần lượt chia sẻ kinh nghiệm thực tế của tôi về những cách kiếm tiền qua mạng mà tôi đã từng làm. Nếu bạn không thích đi làm ở một công ty mà muốn tự do, tự tại thì mạng máy tính là một kênh kiếm tiền không thể bỏ qua. Có rất nhiều cách kiếm tiền từ mạng, sau đây là một số cách mà tôi đã làm:
- Trả lời bảng khảo sát
- Lập trình viên tự do
- Lập website (forum, blog, directory) bán quảng cáo, link, logo, ...
- Kinh doanh bất động sản mạng ( tên miền ý mà).
- Post liên kết
- Để tham gia được phương pháp này điều cần thiết là bạn phải có một tài khoản email. Bạn có xin một tài khoản email miễn phí từ Yahoo, Google, Gawab, Hotmail, ... một cách dễ dàng.
- Đăng ký tài khoản tại trang https://www.globaltestmarket.com
- Trả lời tất cả các Profile Surveys vì nó sẽ giúp cho GlobalTestMarket hiểu rõ hơn về bạn.
- Khi có một bảng khảo sát phù hợp với bạn, GlobalTestMarket sẽ gửi đến địa chỉ email của bạn. Mỗi một bảng khảo sát có điểm từ 5-60 điểm, 5-80 điểm.
- Tham gia trả lời bảng khảo sát, tuỳ câu trả lời của bạn mà số điểm bạn nhận sẽ khác nhau.
- Khi tài khoản của bạn đạt ít nhất 1000 điểm, bạn có thể yêu cầu Redeem trong trang Rewards. Khi đó GlobalTestMarket sẽ yêu cầu bạn xác nhận lại địa chỉ của bạn để GlobalTestMarket gửi tiền cho bạn (Thời gian nhận là từ 4-8 tuần). 1000 điểm tương ứng $50.
Labels:
Kiếm tiền qua mạng
19/04/2012
Xoá thư mục không rỗng trong Qt
Cho đến phiên bản 4.8, để xoá một file trong Qt chúng ta dùng QFile::remove hay QDir::remove, để xoá một thư mục rỗng thì chúng ta sử dụng QDir::rmdir và không có sẵn phương thức để xoá một thư mục không rỗng.
Đến phiên bản 5.0, thì Qt bổ sung phương thức QDir::removeRecursively dùng để xoá thư mục và toàn bộ nội dung bên trong của nó. Như vậy nếu chúng ta đang dùng Qt phiên bản 4.8 trở về trước thì chúng ta tự hiện thực phương thức removeRecursively. Sau đây là cách hiện thực sử dụng đệ quy của Folami tôi:
Đến phiên bản 5.0, thì Qt bổ sung phương thức QDir::removeRecursively dùng để xoá thư mục và toàn bộ nội dung bên trong của nó. Như vậy nếu chúng ta đang dùng Qt phiên bản 4.8 trở về trước thì chúng ta tự hiện thực phương thức removeRecursively. Sau đây là cách hiện thực sử dụng đệ quy của Folami tôi:
bool removeRecursively(const QString &dirName) { bool result = true; QDir dir(dirName); if (dir.exists(dirName)) { Q_FOREACH(QFileInfo info,
dir.entryInfoList(QDir::NoDotAndDotDot |
QDir::System |
QDir::Hidden |
QDir::AllDirs |
QDir::Files, QDir::DirsFirst)) { if (info.isDir()) {
//Neu la thu muc thi goi de quy de xoa thu muc nay
result = removeRecursively(info.absoluteFilePath()); } else { result = QFile::remove(info.absoluteFilePath()); } if (!result) { return result; } }
//Da xoa het noi dung, thu muc la thu muc rong
//Xoa no
result = dir.rmdir(dirName); } return result; }
15/04/2012
Tải nhạc từ trang nhaccuatui.com
Bài hướng dẫn này dành cho những bạn là fan của Firefox (cũng không khác lắm cho IE, Chrome, Safari, Opera).
Để tải nhạc từ trang nhaccuatui.com các bạn thực hiện các bước như sau:
1) Truy cập trang có bài nhạc bạn yêu thích ví dụ:
Click chuột phải trên trang > View page source
3) Bấm Ctrl+ F tìm cụm từ
Để tải nhạc từ trang nhaccuatui.com các bạn thực hiện các bước như sau:
1) Truy cập trang có bài nhạc bạn yêu thích ví dụ:
http://www.nhaccuatui.com/nghe?M=UwP5oaaicD
2) View mã nguồn của trangClick chuột phải trên trang > View page source
3) Bấm Ctrl+ F tìm cụm từ
file=http://www.nhaccuatui.com/api/playerv7.ashx?
4) Copy đoạn sau "file=" cho đến hết giá trị của key2= ta có
http://www.nhaccuatui.com/api/playerv7.ashx?key2=001b003400040076002e0035002f002a00370007
5) Mở tab mới dán link này vào
6) Làm lại bước 2 cho tab mới.
7)Bấm Ctrl+F tìm từ khoá
<location><![CDATA[
8) Copy đoạn ngay sau đó cho đến trước dấu ]] ta có:
http://stream41.gonct.info/de70ee715a5d94d497da16735ad75b09/4f8abddd/NhacCuaTui211/The Lost Child - Anathema [NCT 036347011027685350008].mp3
Bây giờ bạn có thể tải file nhạc về rồi bằng trình download bạn thích.
Labels:
Chrome,
Firefox,
NCTDownloader,
Safari
14/04/2012
Thợ săn thành phố (City Hunter)
- Đạo diễn: Jin Hyuk
- Diễn viên: Lee Min Ho, Park Min Young, Lee Jun Hyuk, Goo Hara
- Nhà sản xuất: SBS
- Quốc gia: Hàn Quốc
- Thời lượng: 20 tập
- Thể loại: Phim Bộ Hàn Quốc
- Năm sản xuất: 2011
Câu chuyện bắt đầu chuyến viếng thăm của tổng thống Hàn Quốc và các quan chức cấp cao tới Myanmar. Một vụ nổ đã xảy ra do các điệp viên của Triều Tiên thực hiện. Vụ nổ không giết chết tổng thống nhưng rất nhiều quan chức cấp cao đã chết.
Để trả đũa cho hành động này, Ngũ nhân hội đã lên kế hoạch gửi người sang Triều Tiên và tiêu diệt các điệp viên của Triều Tiên. Lee Jin-Pyo và Park Moo-Yul đang làm trong đội cảnh vệ Nhà Xanh đã dẫn đầu đoàn 21 người Bắc tiến với nhiệm vụ cực kỳ nguy hiểm. Theo kế hoạch thì đội đặc nhiệm được đưa đến bờ biển gần Triều Tiên và họ sẽ tiến và đất Triều Tiên để thực hiện kế hoạch ám sát. Choi Eung-Chan hứa sẽ điều tàu ngầm đón họ quay về.
Khi kế hoạch đang tiến hành thuận lợi, phía Hàn Quốc chỉ có Park Moo-Yul bị thương thì Ngũ Nhân hội thay đổi ý kiến họ ra lệnh thủ tiêu toàn bộ đội đặc nhiệm. K hi đội đặc nhiệm hoàn nhiệm vụ bị truy đuổi họ đã bơi về phía chiếc tàu ngầm điều họ không ngờ là tên sát thủ đã lần lượt đưa họ về với tổ quốc duy chỉ có Lee Jin-Pyo là sống sót do Park Moo-Yul xả thân cứu thoát. Chứng kiến cảnh máu đồng đội nhuộm đỏ biển Nampu vì sự phản bội của Ngũ Nhân hội, ông thề sẽ trả thù một cách tàn khốc nhất và kế hoạch trả thù của ông bắt đầu bằng việc bắt cóc đứa con trai của Park Moo-Yul và đưa sang khu Tam Giác Vàng để huấn luyện. Ở đây đứa bé được gọi bằng cái tên Thái là Poo Chai
28 năm sau, Lee Yun-Seung (Poo Chai) và Steve Lee ( Lee Jin-Pyo) quay về Hàn Quốc với mác là chàng tiến sĩ MIT và thương nhân Hàn kiều. Kế hoạch trả thù bắt đầu. Tuy nhiên phương pháp trả thù của Lee Yun-Seung và Steve Lee lại khác nhau hoàn toàn. Liệu họ có thành công không?
Sau khi xem phim xong thấy cái chết của chàng công tố viên Kim Young-Joo thật là đau lòng là một kết thúc buồn, se lòng trước cảnh nàng Jin Soo-Hee đổ sụp trước quan tài của người chồng cũ ...
Phim lấy bối cảnh 2010 rất hiện đại nhưng tình yêu nam nữ trong phim cứ như thập niên 1980 ...
Lee Yun-Seong (Lee Min-Ho) |
Kim Na-Na (Park Min-Young) |
Jin Soo-Hee (Hwang Sun-Hee) |
Kim Young-Joo (Lee Jun-Hyuk) |
Labels:
Xem phim cùng Fo
07/04/2012
Tại sao Lệnh Hồ Xung là người vô địch?
Đọc "Tiếu ngạo giang hồ" của Kim Dung ai cũng biết phái Hoa Sơn chia thành hai tông: Kiếm Tông và Khí Tông. Khí Tông thì chú trọng vào luyện công phu mà không chú trọng luyện chiêu thức. Kiếm Tông thì ngược lại chỉ chú trọng vào luyện chiêu thức mà không chú trọng luyện nội công. Lệnh Hồ Xung là đệ tử của Nhạc Bất Quần+Ninh Trung Tắc thuộc phe Khí Tông. Lệnh Hồ Xung là đệ tử cưng của họ, học giỏi và tài nghệ nhất nhì môn phái nhưng ra đường chẳng bằng ai. Một hôm Lệnh Hồ Xung gặp tiền bối Phong Thanh Dương thuộc phe Kiếm Tông truyền thụ võ công và từ đó Lệnh Hồ Xung thành đệ nhất thiên hạ.
Câu chuyện tóm tắt là vậy. Xem đến đây nhiều người lầm tưởng rằng Lệnh Hồ Xung thành đệ nhất thiên hạ là do học được tuyệt kỹ của phe Kiếm Tông. Nhưng sự thực theo Folami tôi nghĩ không phải vậy. Sở dĩ Lệnh Hồ Xung thành đệ nhất thiên hạ vì anh đã biết kết hợp tinh hoa của hai phe Kiếm Tông và Khí Tông. Đây mới thật sự là điều mà tác giả Kim Dung muốn gửi đến độc giả. Mỗi một môn phái, một trường phái đều có cái hay, cái dở của nó. Người thành công là người biết kết hợp tinh hoa của các trường phái này lại
Một điểm khá hay nữa nếu độc giả để ý sẽ thấy đó là Lệnh Hồ Xung phải học Khí Tông trước rồi mới học Kiếm Tông nghĩa là anh ta phải vững nền tảng rồi sau đó mới học chuyên sâu. Đây là một thứ tự mà có lẽ Kim Dung cũng cố tình truyền đạt.
Bàn đến việc học ngày nay:
Một trường đại học đúng nghĩa thì thuộc phe Khí Tông. Trường đại học dạy cho sinh viên kiến thức nền tảng (nội công) và khả năng tư duy để từ cái nền tảng này biến thành chiêu thức khi đi vào làm việc. Đây là nhóm người biết tại sao nhưng không biết làm, hoặc biết làm mà không hay. Thời gian học kéo dài (Lệnh Hồ Xung ở Hoa Sơn mười mấy năm mà). Tuy nhiên có rất nhiều trường đại học hiện nay lại thuộc phe Kiếm Tông.
Một trường trung cấp, cao đẳng nghề hay một khoá học ngắn hạn thì thuộc phe Kiếm Tông (Lệnh Hồ Xung học với Phong Thanh Dương là khoá ngắn hạn mà ). Ở đây học viên học các kỹ năng để làm việc, một số công việc cụ thể. Đây làc nhóm người làm rất giỏi mà không biết tại sao.
Một người muốn giỏi thì phải biết kết hợp hai trường phái này lại và theo đúng trình tự Khí Tông-Kiếm Tông.
Nếu đã theo học phe Khí Tông (tốt nghiệp đại học, Lệnh Hồ Xung bị trục xuất khỏi Hoa Sơn ) thì bạn nên tự trang bị cho mình các tuyệt kỹ của Kiếm Tông (học thêm các kỹ năng bằng tự học, đăng ký học các khoá ngắn hạn, ...) cái này Folami tôi gọi là công thức 1: n (1 bằng đại học+n chứng chỉ)
Nếu bạn vì lý do nào đó phải theo phe Kiếm Tông rồi thì cũng đừng quá lo lắng (Phong Thanh Dương cũng một thời chọc trời khuấy nước đấy thôi), bạn hãy học tiếp Khí Tông (liên thông lên đại học í mà). Tuy có khó khăn hơn một tí nhưng quyết chí cũng thành công.
Ngoài cái chuyện học hành ra trong Tiếu ngạo giang hồ còn một câu chuyện tình đẹp của nàng Nhậm Doanh Doanh và chàng lãng tử Lệnh Hồ Xung. Đây là một trường đoạn khác nói về tình yêu không biên giới, không giai cấp. Có dịp sẽ bàn đến ...
Labels:
Ôn cố tri tân
05/04/2012
Dịch ngược ứng dụng Android
Việc chuyển gói nhị phân apk của một ứng dụng Android thành dạng mà con người có thể đọc được gọi là quá trình dịch ngược (reverse engineering). Ở đây tôi không bàn đến tính hợp pháp của hành động này mà tôi chỉ bàn đến khía cạnh kỹ thuật của nó. Đồng tiền thì có hai mặt. Việc dịch ngược này cũng vậy tôi tin rằng nó cũng hữu ích cho bạn trong nhiều tình huống hoàn toàn hợp pháp. Để dịch ngược ứng dụng Android bạn cần thực hiện qua hai bước
Decompiling
- Tải android-apktool từ đây.
- Giải nén hay cài đặt (tuỳ theo gói mà bạn chọn tải về).
- Thực hiện câu lệnh sau đây:
apktool d file.apk
- Bạn thu được các tập tin resource xml và mã nguồn smali. Tuy nhiên mã nguồn smali rất khó đọc (có thể chạy debug được). Chúng ta cần tiến hành bước kế tiếp để thu được mã nguồn Java.
Disassembling
- Tải công cụ dex2jar tool tại đây.
- Giải nén nó vào một thư mục bất kỳ.
- Thực hiện câu lệnh sau đây để chuyển gói apk thành gói jar
dex2jar file.apk
- Tải công cụ jd-gui tại đây.
- Sử dụng công cụ này để chuyển file class thành file java.
Labels:
Android
04/04/2012
Truy xuất Facebook bằng Operator
Opera Tor hay Operator là dạng portable của trình duyệt web nổi tiếng Opera.
Opera Tor sử dụng polipo proxy server để che dấu IP của trang web mà trình duyệt truy xuất. Do đó chúng ta dễ dàng truy xuất trang Facebook sử dụng Opera Tor.
Tuy nhiên khi sử dụng Opera Tor có một phiền toái là Facebook không nhận ra vị trí, thiết bị mà mình truy xuất nên Facebook thường xuyên tiến hành quy trình kiểm tra bảo mật (captcha, xác nhận tài khoản bằng điện thoại di động, ảnh bạn bè, câu hỏi bảo mật). Nên chia sẻ vị trí của bạn cho Facebook để giảm bớt quá trình kiểm tra bảo mật ở lần đăng nhập sau.
Một phiền toái khác nữa là khi bạn đang duyệt web thì polipo chết. Bạn nên khởi động lại polipo.exe bằng tay bằng câu lệnh:
polipo -c config
Để tải Opera Tor bạn vào đây:http://archetwist.com/en/opera/operator
Opera Tor sử dụng polipo proxy server để che dấu IP của trang web mà trình duyệt truy xuất. Do đó chúng ta dễ dàng truy xuất trang Facebook sử dụng Opera Tor.
Tuy nhiên khi sử dụng Opera Tor có một phiền toái là Facebook không nhận ra vị trí, thiết bị mà mình truy xuất nên Facebook thường xuyên tiến hành quy trình kiểm tra bảo mật (captcha, xác nhận tài khoản bằng điện thoại di động, ảnh bạn bè, câu hỏi bảo mật). Nên chia sẻ vị trí của bạn cho Facebook để giảm bớt quá trình kiểm tra bảo mật ở lần đăng nhập sau.
Một phiền toái khác nữa là khi bạn đang duyệt web thì polipo chết. Bạn nên khởi động lại polipo.exe bằng tay bằng câu lệnh:
polipo -c config
Để tải Opera Tor bạn vào đây:http://archetwist.com/en/opera/operator
Labels:
Facebook
18/02/2012
IT Careers
This afternoon, I shared some my thoughts about IT with the students from Le Qui Don highschool on behalf of alumni student. I used the following slides:
05/02/2012
Bug fix for folderlistmodel
If you have used folderlistmodel in Qt.labs.folderlistmodel 1.0, I am sure that it will make you disappointed because it cannot reflect the change from system file such as file deleted, file renamed, ...
I found that folderlistmodel is based on QDirModel which is a deprecated class. I decided to implement it again using QFileSystemModel because QFileSystemModel use file system watcher.
I have succeeded!If you have same problem as me, drop me a line...
I found that folderlistmodel is based on QDirModel which is a deprecated class. I decided to implement it again using QFileSystemModel because QFileSystemModel use file system watcher.
I have succeeded!If you have same problem as me, drop me a line...
Labels:
QML
27/12/2011
弟14課-復習B
I。
1)かばんを開けてください。
2)レポートをコピーしてください。
3)あそこに車を止めてください。
4)レポートを書いてください。
II.
- すみませんが、エアコンをつけてください。
- すみませんが、ドアを閉めてください。
- すみませんが、もう少しゆっくり話してください。
- すみませんが、写真をもう1枚撮ってください。
III.
1)これをコピーしましょうか。。。。ええ、5枚コピーしてください。
2)レポートを送りましょうか。。。。ええ、すぐ送ってください。
3)タクシーを呼びましょうか。。。。ええ、2台呼んでください。
4)あしたも来ましょうか。。。。ええ、10時来てください。
IV.
1)地図をかきましょうか。。。。ええ、お願いします。
2)荷物を持ちましょうか。。。。いええ、けっこうです。
3)エアコンをつけましょうか。。。。いええ、けっこうです。
4)駅まで迎えに行きましょうか。。。。ええ、お願いします。
V.
1)今電話をかけています。
2)今コーヒーを飲んでいます。
3)今ダンスをしています。
4)今たばこをすっています。
VI.
1)ミラーさんは何をしていますか。。。。シュミットさんと話しています。
2)ワンさんは何をしていますか。。。。新聞を読んでいます。
3)カリナさんは何をしていますか。。。。花をかいています。
4)サントスさんは何をしていますか。。。。寝ています。
VII.
1) 子どもと遊んでいます。
2)木の下で寝ています。
3)新聞を読んでいます。
4)どこへ食事に行きますか。。。。インド料理のレストランへ食事に行きます。
Labels:
Mina no Nihongo
Đăng ký:
Bài đăng (Atom)