Cách trị no resource found trong file values-v23.xml sau khi cập nhật SDK tool trong Android Studio

Nếu như gặp phải lỗi như hình 1 khi ta tạo project mới sau khi cập nhât SDK tool thì các làm như sau:
Hình 1

  1. Mở SDK Manager lên và đánh dấu kiểm vào SDK Platform của Android 6.0 (API 23) để cài đặt.
  2. Sau khi cài xong, đóng SDK Manager. Vào project mở file build.gradle (Module:app) lên.
  3. Sửa trị số đằng sau compileSdkVersion thành 23 và buildToolsVersion thành "23"
  4. Sync lại trang gradle này.
  5. Vậy là xong.

Xử lý lỗi "Failed to lock the file" khi mở file vmware

Khi bạn mở file vmware mà gặp phải lỗi
Failed to lock the file
Cannot open the disk '/path to file/xxx.vmx' or one of the snapshot disks it depends on.
Module DiskEarly power on failed.
Failed to start the virtual machine
thì giải quyết bằng cách xóa tất cả các file *.lck trong thư mục chứa file xxx.vmx là xong.

Làm quen MAC OS X (Updating)

Mới cài MAC OS X trên VMWare để lập trình iOS. Ngày trước quen dùng Windows OS nên khi chuyển sang MAC OS có hơi bỡ ngỡ vì thế tui viết bài này để khi nào rảnh có quên thì quay lại xem :)

I. Bật bộ gõ tiếng việt
Trên thanh Stardock (hình 1.1)
Hinh 1.1 - Thanh stardock cua Mac OS X

Click vào biểu tượng của System Preferences () sẽ xuất hiện bảng hộp thoại System Preferences (hình 1.2)
Hinh 1.2 - Màn hình System Preferences

Click vào Keyboard sẽ xuất hiện bảng hộp thoại Keyboard và sau đó click vào tab Input Sources  (hình 1.3).
Hình 1.3 - Màn hình Keyboard
Click  sẽ xuất hiện dialog Browse using language and select an input source to add, ở panel bên trái chọn Vietnamese, panel bên phải chọn Telex (vì tui quen kiểu gõ này, ai quen kiểu gõ nào thì chọn kiểu gõ ấy) và nhấn nút Add (hình 1.4).
Hình 1.4 - Dialog Browse úing language and select an input source to add
Ở góc bên phải của thanh Topdock Mac (hình 1.5)


Hình 1.5 - Góc bên phải của thanh Topdock của Mac OS X
Click vão biểu tượng. Sau đó chọn Telex (hình 1.6) để chuyển sang chế độ gõ Telex tiếng việt.
Hình 1.6 - Màn hình lựa chọn bộ gõ
Vậy là chúng ta có thể gõ được tiếng việt rồi đó.
Để chuyển đổi qua lại giữa bộ gõ tiếng việt và tiếng anh bằng phím tắt ta làm như sau:
Ở màn hình Keyboard (hình 1.3) click vào tab Shortcuts, ở panel bên trái chọn Input Sources, panel bên phải đánh dấu tick hết các ô checkbox (hình 1.7).
Hình 1.7 - Giao diện tab Shortcuts của màn hình Keyboard
Xong. Để chuyển đổi bộ gõ qua lại ta nhấn tổ phím  + Shift + Space

II. Tổ hợp phím tắt chụp màn hình

  • Chụp toàn màn hình:  + Shift + 3
  • Chụp một vùng trên màn hình:  + Shift + 4
Sau khi chụp xong sẽ xuất hiện file *.png trên Desktop

III. Một số tổ hợp phím tắt thông dụng

  • Copy:  + C
  • Paste:  + V
  • Undo:  + Z
  • Đặt con trỏ chuột văn bản ở đầu dòng:  + !
  • Đặt con trỏ chuột văn bản ở cuối dòng:  + "
  • Bôi đen dòng văn bản từ vị trí con trỏ chuột văn bản tới đầu dòng:  + Shift + !
  • Bôi đen dòng văn bản từ vị trí con trỏ chuột văn bản tới cuối dòng:  + Shift + "
  • Trong Safari, để mở tab mới thì nhấn tổ hợp phím  + T
  • ...
IV. Tổ hợp phím dùng cho XCode

  • Mở bảng hộp thoại Choose a template for your new file (hình 4.1):  + N

    Hình 4.1 - Bảng hộp thoại Choose a template for your new file trong XCode
  • ......
V. Những cái hay khi sử dụng MAC OS

  • Khi download file nén bằng safari thì khi download song ta được thư mục đã được giải née của file nén mà ta download về (đỡ cho chúng ta về thời gian giải nén)
  • Trong Xcode, trong đoạn code mà xuất hiện warning thì trong warning có kèm theo gợi ý fix bug (hình 5.1), rất tiện cho người lập trình ;)

Hình 5.1 - Warning có kèm theo gợi ý fix bug trong Xcode

--- Tạm thời như vậy đã, sẽ còn tiếp :) ---
        

Sửa lỗi I/O Error: Unable to open sync connection! khi run app trên device trong android studio

Nếu bạn dính lỗi này (hình 1) khi run build app trên device (cụ thể device của tôi là Sony Erricson Neo V - M11i - Bản Android 4.0.4)
Hình 1
thì cách sửa như sau:
vào Settings > Applications > Development > USB debugging (Hình 2)
Hình 2
Uncheck rồi check lại ở USB debugging.
Xong rồi, giờ run lại thôi, nếu không được nữa thì .......................... chúng ta sẽ nghiên cứu sau :P


Hướng dẫn tích hợp Google Apps 4.4.2 vào Genymotion 2.2

Genymotion là phần mềm tạo lập máy ảo Android, khi bạn tương tác với máy ảo Android đó bạn sẽ cảm thấy giống như bạn đang tương tác trên thiết bị thật. Genymotion là sự lựa chọn tốt nhất thay thế AVD mặc định của Android SDK khi lập trình ứng dụng Android. 
Chúng ta hãy so sánh Genymotion đối với AVD của Android SDK nhé (cái này là theo kinh nghiệm sử dụng Genymotion của mình, có gì sai sót thì các bạn phản hồi lại cho mình nhé)
Ưu điểm
  • Genymotion khởi động nhanh hơn rất nhiều
  • Xử lý trên Genymotion nhanh hơn
  • Cho phép cài đặt và sử dụng các ứng dụng Google Apps như Gmail, Google Play, Hangout, ….
  • Tự động kết nối tới Android SDK, cho nên lúc lập trình Android, khi chúng ta run app sẽ tự động nhận diện máy ảo Genymotion.
Nhược điểm
  • Không thể gửi tin nhắn và gọi điện thoại qua lại giữa các Virtual Device của Genymotion với nhau.
Hôm nay mình sẽ hướng dẫn cài đặt gói Google Apps cho Virtual Device dùng platform Android 4.4.2 trên Genymotion 2.2.
Gói cài đặt Google Apps gồm các ứng dụng mà Google phát triển là Google Play, GmailHangout, … 
Genymotion ở các phiên bản trước 2.0+ thì đều tích hợp các Google Apps, từ phiên bản 2.0 trở về sau thì không còn tích hợp các Google Apps nữa. Mình cũng không biết vì sao lại vậy nhưng không sao, chúng ta sẽ cài đặt thủ công.
Bước 1: Chuẩn bị "hàng"
Genymotion ARM Translation 1.1 – Download tại trang http://filetrip.net/dl?4SUOrdcMRv (ta được file Genymotion-ARM-Translation_v1.1.zip)
Google Apps 4.4.2 - Download tại trang http://www.androidfilehost.com/?fid=23311191640114013 (ta được file gapps-kk-20140105-signed.zip)
Bước 2: Cài đặt Google Apps
Mở Virtual Device (Virtual Device Machine này sử dụng phiên bản Android 4.4.2) của Genymotion lên, VD: Mình mở Google Nexus 10 dùng bản Android 4.4.2. Sau khi Virtual Device khởi động xong, mở khóa (hình 1)
Hình 1
Kéo thả Genymotion-ARM-Translation_v1.1.zip vào Virtual Device, xuất hiện bảng hộp thoại như hình 2
Hình 2
Nhấn OK và chờ nó transfer, sau khi transfer xong xuất hiện thông báo yêu cầu khởi động lại máy (hình 3)
Hình 3
Nhấn OK, tắt Virtual Device rồi trên màn hình Genymotion for personal use, click vào Virtual Device vừa tắt lúc nãy và nhấn nút Play để chạy Virtual Device đó lên (hình 4)
Hình 4
Sau khi khởi động xong, mở khóa và kéo thả gapps-kk-20140105-signed.zip vào Virtual Device, xuất hiện bảng hộp thoại như hình 5
Hình 5
Nhấn OK và chờ nó transfer, sau khi transfer xong xuất hiện thông báo yêu cầu khởi động lại máy (hình 6)
Hình 6
Nhấn OK, tắt Virtual Device rồi trên màn hình Genymotion for personal use, click vào Virtual Device vừa tắt lúc nãy và nhấn nút Play để chạy Virtual Device đó lên (hình 4)
Lúc khởi động sẽ xuất hiện hộp thoại thông báo Android đang nâng cấp (hình 7). 
Hình 7
Sau khi khởi động xong, mở khóa, ta thấy xuất hiện hộp thoại như hình 8 thì cũng không cần bận tâm, nhấn OK để tắt thông báo này đi.
Hình 8
Bước 3: Cấu hình tài khoản google
 Trên màn hình Virtual Device nhấn nút , xuất hiện màn hình ứng dụng (hình 9)
Hình 9
Click vào nút Settings, xuất hiện màn hình Settings và click vào Add Acount tại mục Accounts (hình 10)
Hình 10
Xuất hiện màn hình Add an account, click chọn Google (hình 11)
Hình 11
Xuất hiện màn hình Add an Google Account và có 2 nút tại đây là Existing và New (hình 12). Nếu bạn đã có tài khoản google rồi (VD: tài khoản google của tôi là cudem.it@gmail.com) thì click vào nút Existing, còn chưa có thì bạn click vào nút New để tạo tài khoản google mới.
Hình 12
Chúng ta click nút Existing (giả sử ở đây chúng ta đã có tài khoản google rồi), xuất hiện màn hình Sign Up yêu cầu nhập email và password để xác nhận, sau khi nhập xong nhấn nút mũi tên hướng phải để tiếp tục (hình 13)
Hình 13
Xuất hiện bảng thông báo yêu cầu bạn đồng ý với điều khoản của Google (hình 14), nhấn OK để tiếp tục.
Hình 14
Xuất hiện màn Google Services (hình 15), chúng ta cứ để mặc định và nhấn nút mũi tên hướng phải để tiếp tục.
Hình 15
Như vậy là ta đã thêm thành công tài khoản Google trên máy ảo Genymotion. Từ giờ bạn có thể vào ứng dụng Google Play để download bất cứ ứng dụng nào mà bạn muốn. Hy vọng bài viết này giúp ích được ít nhiều cho các bạn. Thân ái và hẹn gặp lại vào bài sau cool.

Cách mở exists project trong NetBeans

Nếu bạn đã gặp phải lỗi này khi thêm project với source đã tồn tại (hình dưới) thì cách giải quyết như sau:
Bạn vào source mà bạn muốn add vào trong netbean và xóa thư mục nbproject và restart netbean và add lại source đó là OK.

Phần mềm test USB Boot

Download phần mềm tại đây https://docs.google.com/file/d/0B_g6XB91JjXBWVY1UVVoNF80WU0/edit
Giải nén ra và chạy file exe bằng quyền Administrator và làm theo hình 1
 7.
Hình 1 - Giao diện thực thi của ứng dụng Ultimate Boot USB

Sau khi nhấn test USB thì nó sẽ hiển thị màn hình như chúng ta đang trong màn hình boot, nếu USB của bạn tích hợp Hiren boot thì nó sẽ hiển thị màn hình như hình 2 sau khi nhấn nút Test USB (hình 1)

8.
Hình 2 - Màn hình test USB boot Hiren boot

Include android support version 4 in Android Studio

Edit file build.gradle (Module:app):
apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "duchoa.navigationdrawerv1"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}
Add compile 'com.android.support:support-v4:+' below code compile 'com.android.support:appcompat-v7:21.0.3' and press link Sync

Note in Android Fragment


  1. The Fragments Lifecycle methods with the same name execute after the Activity's lifecycle method during creation and before the Activity's lifecycle methods during destruction
  2. The order of the methods being called slightly varies based on whether your Fragment was attached to the Activity using XML or Java
  3. There is no onRestart or onRestoreInstanceState inside a Fragment, you receive the Bundle in onCreate, onCreateView and onActivityCreated when it comes to a Fragment
  4. When adding Fragments to XML, the layout width and height values defined in the <fragment> tag take precedence over the width and height specified for the Root Layout of the Fragment
  5. You can perform add, replace, remove on multiple Fragments together and all those statements between transaction.begin() and transaction.commit() will be considered as a single transaction
  6. When adding Fragments in Java, the width and height value from the root View of the Fragment are taken into consideration for dimensioning


Tích hợp Syntax Highligher vào Blogger, Blogspot

Hôm nay tôi sẽ giới thiệu cách tích hợp Syntax Highlighter vào Blogger, Blogspot.
Đầu tiên thì chúng ta phải biết Syntax Highlighter là gì?
Syntax Highlighter là thành phần javascript làm nổi bật cú pháp hiển thị đoạn code hỗ trợ nhiều ngôn ngữ lập trình (hình 1). Đối với những blogger thường hay viết những bài tut lập trình thì đây là trợ thủ đắc lực, không thể thiếu được.

Hình 1- Làm nổi bật code C# với Syntax Highlighter

Để tích hợp Syntax Highlighter vào Blogger, Blogspot, ta làm như sau:

Bước 1: Nhấn nút Mẫu trong trang quản trị Blog, sau đó nhấn nút Chỉnh sửa HTML trong phần Trực tiếp trên Blog (hình 2).

Hình 2

Bước 2: Nhúng đoạn code dưới đây vào trong thẻ head:
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css"></link>
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" rel="stylesheet" type="text/css"></link>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript">
<!-- add brushes here -->
<script type='text/javascript'>
   SyntaxHighlighter.config.bloggerMode = true;
   SyntaxHighlighter.all();
</script>

<!-- add brushes here -->
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js" type="text/javascript">

Giải thích code:
- Đoạn
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css"></link>
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" rel="stylesheet" type="text/css"></link>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript">
<!-- add brushes here -->
<script type='text/javascript'>
   SyntaxHighlighter.config.bloggerMode = true;
   SyntaxHighlighter.all();
</script>
Đoạn code này để nhúng thành phần javascript SyntaxHighlighter vào Blogger của bạn

- Đoạn
<!-- add brushes here -->
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js" type="text/javascript">
Đoạn này để nhúng mẫu nổi bật (brush) của ngôn ngữ lập trình cụ thể nào đó, vì dụ ở đoạn code trên là brush của ngôn ngữ javascript. Để nhúng brush khác thay chữ in đậm trong đoạn http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js thành tên File Name khác theo hình 3 tùy theo bạn muốn nhúng brush của ngôn ngữ lập trình nào
Hình 3 - Bảng Brushes của SyntaxHighlighter

Như trang Blog của tôi thì nhúng như sau (hình 4):
Hình 4 - Code nhúng SyntaxHighlighter trong Blog của tôi

Bước 3: Dùng SyntaxHighlighter trong bài viết blog
Vào bài viết và nhấn nút HTML (hình 5) và đặt trỏ chuột vào chỗ cần dán code, gõ code <pre class="brush:language"> ... </pre>, bạn thay chữ language trong brush:language với tên ngôn ngữ lập cần nhúng theo brush aliases trong hình 3 và paste đoạn code thay thế ... trong thẻ pre
Hình 5

Bước 4: Xuất bản bài viết để xem thành quả.

Hy vọng bài viết này giúp ích cho các bạn. Thân ái :)

Tham khảo tại:


Bài viết nổi bật

[Android] Hàm hẹn giờ thực thi method

Các bạn có bao giờ thắc mắc có những ứng dụng bạn đang sử dụng một thời gian nhất định thì ứng dụng tự động xuất hiện quảng cáo. Thực tế cod...