Thứ Sáu, 30 tháng 11, 2012

Hướng dẫn sử dụng bản đồ tư duy





Kiếm Tiền Online với ITY – Hướng Dẫn Chi Tiết


Click: Url Shortner

ITY là một website mới ra mắt của giới kiếm tiền online. Với ITY bạn có thể kiếm được đến $4 cho 1000 lượt click. ITY hỗ trợ mức thanh toán thấp chỉ $3. Pay tự động (vào account settings để thiết lập)!

Trang này có cách chơi tuơng tự như adf.ly nhưng rate hấp dẫn hơn!!
Có bốn cách để kiếm tiền:
-Cách 1: CPM (Per 1000 impressions): 0.1$ - 0.5$ 
-Cách 2: Earnings Per Click: 0.01$ - 0.13$ 
-Cách 3: Interstitial Ad Displays (Earnings Per 1,000 Views): 0.04$ - 2.94$ 
-Cách 4: 5% từ ref. Thưởng 0.03$ - 0.15$ cho mỗi ref mới sign up và khi ref kiếm được tối thiểu 1$.

Đầu tiên bạn hãy bấm vào link đăng ký bên dưới :

Đăng Ký ITY

Sau đó bạn điền các thông tin cần thiết cho việc đăng ký :






Tiếp theo hãy vào e-mail mà bạn đăng ký để kích hoạt tài khoản ( Nếu không thấy thư hãy tìm trong mục Spam ) :







Sau khi kích hoạt , bạn đã có thể đăng nhập và bắt đầu kiếm tiền với ITY :





Các cách thức kiếm tiền với ITY

1- Kiếm tiền bằng cách rút gọn link

Với cách kiếm tiền này bạn sẽ có được thu nhập khi người khác click vào link mà bạn đã rút gọn. Bạn có thể kiếm đến $4 cho 1000 lượt truy cập vào link đó.

Ví dụ như: http://ity.im/abc

Để tiến hàng rút gọn link. Sau khi đăng nhập tại giao diện “Members Home” bạn hãy click chọn “My Links” :




Sau đó dán link bạn cần rút gọn vào rồi bấm “Shorten” :

Liên kết đã được rút gọn sẽ xuất hiện:




Bây giờ bạn chỉ việc gửi liên kết này lên khắp các điễn đàn, blog , hay web và bắt đầu kiếm tiền thôi!


2- Kiếm tiền bằng cách đặt code quảng cáo

Nếu bạn có website hay blog bạn có thể đặt các quảng cáo để kiếm tiền với ITY.
ITY hỗ trợ 2 định đạng quảng cáo là Banner ( tính tiền theo click ) và Interstitial Ads ( Kiểu quảng cáo chuyển trang tự động -Tình tiền tương tự rút gọn link ).
Để tiến hàng. Sau khi đăng nhập tại giao diện “Members Home” bạn hãy click chọn “Get Code For Website” :

Tại đây bạn chọn kích thước Banner quảng cáo hoặc chọn hình thức “Interstitial Ads” :






Sau khi chọn xong bạn chỉ việc copy đọan mã tại “Basic Ad Code” đặt vào web là xong :







Lưu ý: ITY sẽ thanh toán khi bạn đủ 3$ ( cái này đơn giản mất k quá 1 tiếng đồng hồ)
sau đó các bạn vào cash out điền tài khoản ngân hàng trực tuyến paypal



Chúc các bạn thành công!

Thứ Năm, 29 tháng 11, 2012

Code C\C++ : Làm việc với mảng cấu trúc (Bài thực hành KTLT ngày 30-11-2012)


/*
Viet cac ham:
- Nhap danh sach sinh vien
- In danh sach sinh vien duoi dang bang
- Tính diem tong ket
- In thong tin sinh vien co diem tong ket cao nhat
- Dem so sinh vien diem tk >=8, sinh nam 1993
- Sap xep sinh vien theo chieu giam cua diem
*/

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>


// khai bao bien

struct SV{

char maSV[6], hoTen[30], dc[50], lop[10];
int namSinh;
float d1,d2,d3,dtk;

};

SV a[30]; // mang cau truc SV
int n; // chua so sinh vien

// ham nhap thong tin

void NhapTT(){

// nhap so sinh vien
 do{  cout<<"\n n="; cin>>n;
if (n<3||n>30) cout<<"\n Nhap lai n!";
 }while(n<3||n>30);

 // nhap day sinh vien
 cout<<"\n Nhap vao thong tin sinh vien:";
 for(int i=0;i<n;i++)
{
cout<<"\n SV thu "<<i+1<<" : ";
cout<<"\n - Ho ten : "; gets(a[i].hoTen);
cout<<"\n - Ma SV : "; gets(a[i].maSV);
cout<<"\n - Lop : "; gets(a[i].lop);
cout<<"\n - Dia chi : "; gets(a[i].dc);
cout<<"\n - Nam sinh : ";cin>>a[i].namSinh;
cout<<"\n - Diem ky I : "; cin>>a[i].d1;
cout<<"\n - Diem ky II : "; cin>>a[i].d2;
cout<<"\n - Diem ky III : "; cin>>a[i].d3;
}
}

// Ham In thong tin sinh vien

void InTT(){
  cout<<"\n \n DANH SACH SINH VIEN:\n";

  cout<<"\n|Ma SV\t|Ho ten \t|Dia chi\t|Nam sinh \t|Lop \t|Diem I \t|Diem II \t|DiemIII \t|";
  
 cout<<"\n|---- \t|----- \t|-------\t|------- \t|---\t|\t-----\t|------\t|------\t|";

for (int i=0;i<n;i++){
cout<<"\n|"<<a[i].maSV<<"\t|"<<a[i].hoTen<<"\t|"<<a[i].dc<<"\t|"<<a[i].namSinh<<"\t|"<<a[i].lop<<"\t|"<<a[i].d1<<"\t|"<<a[i].d2<<"\t|"<<a[i].d3<<"\t|";
}

}

// ham tinh diem

void TinhDiem(){
for(int i=0;i<n;i++)
a[i].dtk=(a[i].d1+a[i].d2+a[i].d3)/3;
}

// In sinh vien co diem tk cao nhat

void InSV_Diem_Max(){
float max=a[0].dtk;
int m=0;
for(int i=1;i<n;i++)
if (a[i].dtk>max){ max=a[i].dtk ; m=i;}
// in sinh vien co diem cao nhat
cout<<"\n * SINH VIEN CO DIEM CAO NHAT:\n";
cout<<a[m].maSV<<"\t|\t"<<a[m].hoTen<<"\t|\t"<<a[m].dc<<"\t|\t"<<a[m].namSinh<<"\t|\t"<<a[m].lop<<"\t|\t"<<a[m].dtk;
}

// ham diem sinh vien diem tong ket >=8, sinh nam 1993

void DemSV(){
int dem=0;
for(int i=0;i<n;i++)
if (a[i].dtk>=8 && a[i].namSinh==1993) dem++;

cout<<"\n * So sinh vie co diem tk >=8 va sinh nam 1993 la: "<<dem;
}
// doi cho

void DoiCho(SV &a, SV &b){
char str[50];
int ns;
float diem;

diem=a.d1;
a.d1=b.d1;
b.d1=diem;

diem=a.d2;
a.d2=b.d2;
b.d2=diem;

diem=a.d3;
a.d3=b.d3;
b.d3=diem;

ns=a.namSinh;
a.namSinh=b.namSinh;
b.namSinh=diem;

strcpy(str,a.hoTen);
strcpy(a.hoTen,b.hoTen);
strcpy(b.hoTen,str);

strcpy(str,a.dc);
strcpy(a.dc,b.dc);
strcpy(b.dc,str);

strcpy(str,a.maSV);
strcpy(a.maSV,b.maSV);
strcpy(b.maSV,str);

strcpy(str,a.lop);
strcpy(a.lop,b.lop);
strcpy(b.lop,str);


}

// Ham sap xep diem giam dan

void SapXep(){
// sap xep
for (int i=0;i<n-1;i++)
for(int j= i+1;j<n;j++)
if (a[j].dtk>a[i].dtk)
DoiCho(a[j],a[i]);
}

// Ham chinh

void main(){
clrscr();
NhapTT();
InTT();
TinhDiem();
InSV_Diem_Max();
DemSV();
   SapXep();
InTT();

getch();
}



Cài Win, Ghost, Boot từ USB - Cách tạo USB Boot

Chắc hẳn các bạn biết rất rõ lợi ích của đĩa cứu hộ PC Hirien'BootCD, nhưng trên thực tế nhiều khi việc sử dụng các đĩa CD để Boot đang gặp không ít khó khăn cho các bạn, vì đĩa CD bị trầy xước, ổ đọc CD kém, ... Trong bài viết này mình hướng dẫn các bạn tạo 1 USB Booot, cách cài win ghost bằng USB.

1. Chuẩn bị công cụ: 
1> USB (dung lượng ít nhất 512 MB); 
2> phần mềm: USB Disk Storage Format
3> phần mềm: grubinst_gui
4> nguồn hiren'Boot 10 or các bản cao hơn. Nguồn cài win XP, 7, 8, Vista (Copy từ đĩa vào thư mục hoặc tạo ảnh đĩa cài dạng file ISO); Bản ghost tùy chọn của bạn.

2. Tiến hành tạo Boot USB:
2.1 Kết nối USB với máy tính của bạn --> dùng phần mềm USB Disk Storage Format tiến hành định dạng lại USB như hình ảnh sau:

2.2 Tải về nguồn hiren'Boot CD Part 1, Part 2 (321 MB) giải nén toàn bộ vào USB vừa định dạng.
2.3 Tạo GrubDos cho USB bằng phần mềm grubinst_gui làm theo hình ảnh sau


*** USB của bạn đã có thể boot được rồi, lưu ý nếu bạn dùng USB có dung lượng lớn để chứa cả nguồn cài Win, bản ghost thì sau khi copy nguồn cài win, bản ghost vào USB để chắc chắn khả năng boot USB của bạn không bị ảnh hưởng do sao chép bạn cần làm lại bước 2.3 (tạo grubDos).

3. Hướng dẫn Boot từ USB, cài win, ghost, xử lí phân vùng (Chia ổ cứng ...):
3.1 Kết nối USB --> bật máy tính --> Màn hình Dos (màu đen chữ trắng) hiện ra nhấn F11 hoặc F12 hoặc ESC (Tùy từng mainbroad) --> Trong menu Boot hiện ra chọn From USB.
3.2 Trường hợp máy tính của bạn không hiện Menu Boot khi nhấn F11 bạn cần khai báo trong BIOS: Kết nối USB --> Bật máy tính --> Màn hình Dos (màu đen chữ trắng) hiện ra nhấn Del (hoặc F2) tùy từng Mainbroad để vào BIOS --> Chọn Boot --> FirtBoot là USB (Hoặc USB-HDD) --> Ở 1 số main cần thêm thao tác sau: Trong mục Hardisk Drivers chuyển tên USB (VD: Geranic flash storege drive, ...) lên trước tên Đĩa cứng (VD: SAMSUNG SV40253, ...) và Boot table. --> Nhấn F10 để lưu lại BIOS --> Khởi động lại máy để Boot từ USB.
3.3 Sau khi Boot từ USB màn hình hiện như sau:

Bạn chọn Khoi dong Mini Windows XP 15.1 --> màn hình hiện ra như sau:




Bạn chọn theo hình để tiến hành định dạng lại phần vùng cần cài win hoặc ghost, hoặc chia lại các phân vùng mà không mất dữ liệu. Để cài win hoặc ghost bạn đọc hướng dẫn cụ thể mà mình đã tích trong Mini Win XP.

Chúc các bạn thành công !!!!!!!!!!

Thứ Ba, 27 tháng 11, 2012

EMU8086 - lập trình Assembly

Download here
------------------------------------------------------------------


Thứ Hai, 26 tháng 11, 2012

Thiết kế giao diện với XML trong Android



XML trong Android:

Không giống như lập trình java thông thường, lập trình android ngoài các lớp được viết trong *.java còn sử dụng XML để thiết kế giao diện cho ứng dụng. Tất nhiên bạn hoàn toàn có thể thiết kế 1 giao diện như ý muốn mà không cần tới bất cứ 1 dòng XML nào, nhưng sử dụng XML sẽ đơn giản công việc đi rất nhiều. Đồng thời sd XML sẽ giúp việc chỉnh sửa ứng dụng sau này trở nên dễ dàng.

Về nguyên tắc, khi lập trình ứng dụng ta thiết kế giao diện bằng XML và cài đặt các xử lý khi tương tác với giao diện trong code.

Một số thành phần cơ bản trong Android:

1.Các layout:

Layout được dùng để quản lý các thành phần giao diện khác theo 1 trật tự nhất định. 

- FrameLayout: Layout đơn giản nhất, thêm các thành phần con vào góc trên bên trái của màn hình.

- LinearLayout: thêm các thành phần con theo 1 chiều nhất định (ngang hoặc dọc). Đây là layout được sử dụng nhiều nhất.

- RelativeLayout: thêm các thành phần con dựa trên mối quan hệ với các thành phần khác hoặc với biên của layout.

- TableLayout: thêm các thành phần con dựa trên 1 lưới các ô ngang và dọc.

- AbsoluteLayout: thêm các thành phần con dựa theo tọa độ x, y.

Layout được sử dụng nhằm mục đích thiết kế giao diện cho nhiều độ phân giải. Thường khi lập trình nên kết hợp nhiều layout với nhau để tạo ra giao diện bạn mong muốn.

2. XML unit:

Để hiểu được các thành phần cơ bản của XML cũng như việc sử dụng XML kết hợp với code, ta sẽ đi xây dựng thử một chương trình đơn giản.

Yêu cầu:  Xây dựng 1 ứng dụng cho phép gõ 1 nội dung vào rồi hiển thị ra nội dung đó ở bên dưới.

B1: Khởi tạo 1 project (ở đây sử dụng Eclipse để minh họa).

Vào thẻ File -> New -> Android Project. Nếu bạn mới lập trình Android lần đầu thì có lẽ dòng Android Project sẽ không hiện ra, khi đó xuống phía cuối chọn Other rồi vào Android -> Android Project.

B2: Điền thông tin cho project 

Project name: Example 1Build Target: Chọn Android 1.5 (mới nhất là 2.1 nhưng hiện tại bạn chưa cần quan tâm )Application name: Example 1Package name: at.examCreate Activity: Example
=> Kích nút Finish.

B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:

- drawable: thư mục chứa các hình ảnh để làm icon hoặc tài nguyên cho giao diện... 
- layout: chứa các file xml để thiết kế giao diện. 
- values: chứa các giá trị sử dụng trong ứng dụng được bạn định nghĩa, như các dòng ký tự (string), các màu (color), các themes...

B4: Vào thư mục layout, chọn file main.xml và gõ đoạn code sau vào thay cho toàn bộ nội dung có sẵn (Eclipse hỗ trợ kéo thả cho xml nhưng theo mình không nên sử dụng):

Mã:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_hint"
/>
<TextView
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/text_color"
android:textSize="28px"
android:typeface="monospace"
/>
</LinearLayout>
Trong đoạn XML này chúng ta khai báo một Linear Layout với 2 thành phần con của nó là 1 Edit Text (dùng để gõ xâu ký tự) với 1 Text View (hiển thị xâu ký tự). Linear Layout được khai báo với từ khóa orientation nhằm chỉ ra chiều sắp xếp của 2 thành phần con là chiều dọc. Còn với layout_width, layout_height các bạn có thể cho giá trị bằng "fill_parent" hoặc "wrap_content" để thông báo thành phần này sẽ có chiều rộng (dài) phủ đầy thành phần cha hoặc chỉ vừa bao đủ nội dung.

Trong Edit Text và Text View các bạn có thể thấy có từ khóa id, từ khóa này cho phép khai báo id của các thành phần để lấy về trong code (sẽ đề cập sau).

Ngoài ra từ khóa hint trong Edit Text cho phép hiện ra phần nội dung mờ khi Edit Text vẫn chưa có ký tự nào. "@string/edit_hint" thông báo lấy trong file strings.xml xâu có tên là edit_hint.

Còn textColor của Text View thì thông báo đoạn ký tự sẽ được hiển thị với màu lấy trong file colors.xml, textSize chỉ ra cỡ chữ bằng 28 pixel và typeface chỉ ra kiểu chữ là monospace

B5: Vẫn trong thư mục res, vào values và chọn file strings.xml. Bố sung thêm dòng định nghĩa cho edit_hint như sau:

Mã:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Example!</string>
<string name="app_name">Example 1</string>
<string name="edit_hint">Enter the work here</string>
</resources>

B6:Trong thư mục values, tạo file colors.xml (chuột phải vào thư mục, chọn New -> Android XML File, và lưu ý chữ s, không phải là color.xml). Gõ nội dung cho file như sau:

Mã:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="text_color">#ff3300</color>
</resources>
Vậy là bạn đã tạo một màu mới cho dòng chữ sẽ được hiển thị trong Text View (ff3300 là mã hexa của màu đỏ). Thực chất bạn hoàn toàn có thể gõ thẳng 

Mã:
android:textColor="#ff3300"
trong file main.xml mà không cần tạo mới file colors.xml, nhưng mục đích của XML trong Android chính là để hỗ trợ nâng cấp chỉnh sửa dễ dàng. Nếu sau này bạn muốn sửa màu của dòng text thì chỉ cần vào colors.xml thay đổi thay vì mò mẫm trong main.xml (có thể rất dài nếu giao diện phức tạp).

Các thành phần trên mới chỉ là các phần cơ bản của XML. Ngoài ra các bạn có thể khai báo thêm về Animation, Style và Theme (phức tạp hơn nhiều nên mình không giới thiệu trong phần cơ bản này).

B7: Vậy là chúng ta đã hoàn thiện phần giao diện với XML, giờ đến viết code để xử lý các sự kiện cho các thành phần:

=> vào thư mục src (source code của project) => at.exam => Example.java, gõ nội dung code sau vào:

Mã:
package at.exam;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.TextView;

public class Example extends Activity {
/** Called when the activity is first created. */ 
@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState); 
//Thiết lập giao diện lấy từ file main.xml
setContentView(R.layout.main); 
//Lấy về các thành phần trong main.xml thông qua id
final EditText edit = (EditText) findViewById(R.id.edit_text);
final TextView text = (TextView) findViewById(R.id.text_view); 
//Thiết lập xử lý cho sự kiện nhấn nút giữa của điện thoại

edit.setOnKeyListener(new OnKeyListener() {
@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN   && keyCode == KeyEvent.KEYCODE_DPAD_CENTER) 
       text.setText(edit.getText().toString());
       edit.setText("");
       return true;
}
else {
return false;
}
}
}); 
}
}
Dạo qua một chút kiến thức cơ bản: Trong Android, các lớp sử dụng để tạo giao diện (Edit Text, Text View...) đều là lớp con của lớp View. Một số lớp thường xuyên được sử dụng để tạo giao diện:
- TextView- EditText- ListView- Spinner- CheckBox- Button- RadioButton
Ngoài ra bạn còn có thể tạo 1 View riêng của mình bằng cách kế thừa View có sẵn.

Các Listener được sử dụng để bắt 1 sự kiện nào đó. Ở đây mình sử dụng OnKeyListener dùng để bắt sự kiện khi nhấn 1 phím của điện thoại. Ngoài ra thường sử dụng OnClickListener để bắt sự kiện chạm vào 1 View đang hiển thị trên màn hình. Mỗi View đều phải set Listener riêng để xử lý cho sự kiện tương tác với nó, và mỗi loại View cũng lại có những Listener dành riêng cho nó (VD: CheckBox có OnCheckChangedListener).

Ở đây mình sử dụng hàm dạng inner để định nghĩa xử lý cho OnKeyListener nên có thể mọi người không quen lắm, nhưng nó cũng nằm trong phần cơ bản của Java đấy nhé.

Đề nghị lưu ý thêm phần R.id.edit_text. Để lấy hoặc truy nhập các thành phần ta đã định nghĩa trong XML ta phải sử dụng R.* như R.layout.main, R.id.edit_text. Lệnh findViewById sẽ trả về 1 View có Id thiết lập trong phần XML. Do View là lớp cha của EditText với TextView nên ở đây ta phải ép kiểu.

Ngoài ra các string hay color cũng có thể lấy về bằng lệnh getResource() . 

VD: getResource().getColor(R.color.text_color)

B8: Chạy chương trình. Chọn Run => Android Application và chờ cho emulator khởi động nhé. Ai có 1 Android thật có thể kết nối qua USB và thử nghiệm luôn. Tự chỉnh sửa trong code và trong XML để hiểu thêm về lập trình Android.

VD:
Mã:
edit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
hoặc trong XML thêm vào phần Text View 
Mã:
android:textSize="50px"


để xem chương trình thay đổi như thế nào !

Chúc các bạn thành công!


Các thành phần cơ bản của một ứng dụng Android

Understanding Android Application:

Việc hiểu được các thành phần (component) tạo nên một ứng dụng Android là rất cần thiết cho việc lập trình. Các thành phần này được chia làm 6 loại bao gồm:

1. Activity: hiểu một cách đơn giản thì Activity là nền của 1 ứng dụng. Khi khởi động 1 ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.

2. Service: thành phần chạy ẩn trong Android. Service sử dụng để update dữ liệu, đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy.

3. Content Provider: kho dữ liệu chia sẻ. Content Provider được sử dụng để quản lý và chia sẻ dữ liệu giữa các ứng dụng.

4. Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc bạn mong muốn. 
VD: khi mở 1 trang web, bạn gửi 1 intent đi để tạo 1 activity mới hiển thị trang web đó.

5. Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới. VD: bạn viết 1 chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1 BR để nhận biết các Intent là các cuộc gọi tới.

6.Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động.

Activity, Service, Broadcast Receiver và Content Provider mới là những thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest (tham khảo bài 2 có giới thiệu đầy đủ về file này).


Understanding Android Application Life Cycle:

Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có priority thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên.

1.Foreground process: là process của ứng dụng hiện thời đang được người dùng tương tác.

2.Visible process: là process của ứng dụng mà activity đang hiển thị đối với người dùng (onPaused() của activity được gọi).

3.Service process: là Service đang running.

4.Background process: là process của ứng dụng mà các activity của nó ko hiển thị với người dùng (onStoped() của activity được gọi).

5.Empty process: process không có bất cứ 1 thành phần nào active.
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process, trước tiên là các empty process.

Android Activity Life Cycle:

Như mình đã giới thiệu ở trên , Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành running activity, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng.

Activity bao gồm 4 state:

- active (running): Activity đang hiển thị trên màn hình (foreground).

- paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus). VD: một activity mới xuất hiện hiển thị giao diện đè lên trên activity cũ, nhưng giao diện này nhỏ hơn giao diện của activity cũ, do đó ta vẫn thấy được 1 phần giao diện của activity cũ nhưng lại không thể tương tác với nó.

- stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop

- killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc ưu tiên. Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái trước đó.

Biểu đồ miêu tả Activity state


Vòng đời của Activity:

- Entire lifetime: Từ phương thức onCreate( ) cho tới onDestroy( )

- Visible liftetime: Từ phương thức onStart( ) cho tới onStop( )

- Foreground lifetime: Từ phương thức onResume( ) cho tới onPause( )

Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương thức onCreate( ) để thực hiện quá trình khởi tạo. Các phương thức khác có cần viết lại hay không tùy vào yêu cầu lập trình.

Nguồn bài viết : DroidViet




Bắt đầu Lập trình Android


Yêu cầu kiến thức cơ bản cho lập trình Android:

Để lập trình android, mình nghĩ mọi người chỉ cần kiến thức java căn bản là hoàn toàn được. Căn bản ở đây có nghĩa là hiểu được thế nào là class, package, biết ý nghĩa của các từ khóa như public, private, protected,... thành thạo các lệnh cơ bản như if, for(), switch(), while(), do while()... biết sử dụng các lệnh chuyển kiểu như Integer.parseInt() hay String.valueOf()... 
Nên có thêm kiến thức về gói java.util vì đây là gói hỗ trợ nhiều lớp rất mạnh được sử dụng trên mọi nền, ngoài ra các gói như java.io, java.net... cũng được recommended 

Các kiến thức về các gói lập trình cho desktop như java.awt, java.swing hoàn toàn không cần thiết (bản thân mình cũng chưa sử dụng cái này bao giờ, nhảy vào học java là học J2ME luôn), hay các gói của J2ME cũng vậy Lập trình Android tuy cũng là lập trình di động, nhưng các điện thoại sử dụng hđh Android có cấu hình rất mạnh (Nexus One có VXL lên tới 1Ghz), vì vậy 2 nền tảng Android và J2ME cũng rất khác nhau. 

Android có những gói riêng hỗ trợ lập trình cho nó và không yêu cầu khắt khe về việc tối ưu code như J2ME. Thật đáng tiếc vì J2ME khônng ứng dụng được mấy vào lập trình Android (tuy nhiên 1 số kỹ thuật cơ bản cho lập trình game 2D như Sprite, double buffering, Tile... thì vẫn ko hề phí phạm chút nào).

Cài đặt Android để lập trình:

Để lập trình Android thì mỗi bộ SDK của Google là không đủ, bạn còn cần tích hợp nó vào một IDE như Eclipse. Có 2 bài hướng dẫn rất chi tiết về cài đặt Android trong Eclipse cũng như Netbeans trên Internet (các bạn có thể tìm kiểu thêm), nhưng theo mình mọi người nên sử dụng Eclipse hơn vì nó có nhiều tính năng hỗ trợ lập trình Google, còn Netbeans thì plugin cho Android vẫn chưa hoàn thiện lắm.

Để học lập trình Android theo mình nên đọc 2 cuốn Professional Android Application Development và Unlocking Android (có thể download tại http://kcc.net.vn). Cả 2 cuốn đều dành cho beginner nhưng cuốn đầu code nhiều, giải thích ít, cuốn thứ 2 giải thích rõ ràng hơn. Nếu có ai có ý định tham khảo thì nên đọc cuốn UA trước để hiểu rõ hơn Android, sử dụng cuốn PAAD trong việc tham khảo các đoạn code cho lập trình.

Nguồn : vietandroid




Chủ Nhật, 25 tháng 11, 2012

Alibaba chuẩn bị thâu tóm toàn bộ Yahoo

Đối tác đến từ Trung Quốc của Yahoo đang chuẩn bị thâu tóm toàn bộ công ty Internet này, theo thông tin mới nhất từ trang tin tài chính Bloomberg.

Giám đốc điều hành Alibaba đã có ý định thu mua Yahoo.

Bloomberg cho hay, Alibaba và Softbank đang có những cuộc đàm phán ở cấp cao với tập đoàn tài chính Blackstone Group và quỹ đầu tư Bain Capital để đưa ra mức giá thâu tóm Yahoo.

Hiện giờ chưa rõ con số mà Alibaba trả cho mỗi cổ phiếu của Yahoo, tuy nhiên nhiều khả năng cao hơn giá do nhóm dẫn đầu bởi quỹ đầu tư Silver Lake đưa ra (16,6 USD/cổ phiếu), cũng có tin TPG Capital tham gia vào vụ này và đưa ra mức cao hơn 1 USD so với Silver Lake.

Giám đốc điều hành Jack Ma của Alibaba đã đánh tiếng về việc mua lại Yahoo trong một buổi nói chuyện ở Đại học Stanford (Mỹ) vào cuối tháng 9 vừa qua. Từ lâu ông đã kêu gọi Hội đồng quản trị của Yahoo bán lại cổ phần của họ đang nắm giữ trong Alibaba (lên đến 40%).

Kịch bản thương vụ Yahoo mà Bloomberg đưa ra là Alibaba sẽ thu hồi toàn bộ cổ phần của họ, Softbank nắm giữ 35% cổ phần của Yahoo trong Yahoo Nhật Bản, các tổ chức Blackstone và Bain sẽ sở hữu Yahoo tại Mỹ.

Theo CNet

Top 10 Tên Miền Free Tốt Nhất Cho Các Bạn Làm Web



 Một trong những vấn đề khi chúng ta thiết kế trang web và đưa trang web lên internet chia sẻ là vấn đề tên miền, hiện nay việc sở hữu một tên miền .com .net .info ... là một chuyện thường. Tuy nhiên do một lý do nào đó mà chúng ta không mua tên miền như : không đủ tiền, mới tập làm web hay đơn giản là do mới chúng ta mới bắt đầu và chưa có doanh thu, hay là để tiết kiệm chi phí.
Trong trường hợp này thì các tên miền miễn phí là sự lựa chọn hàng đầu, tuy nhiên hiện nay có vô số các tên miền miễn phí làm cho ta băn khoăn không biết chọn tên miền nào cho phù hợp, dưới đây là bảng xếp hạng 10 dịch vụ cung cấp tên miền miễn phí tốt nhất cho bạn lựa chọn.

1. Co.Cc

Co.Cc là dịch vụ cung cấp tên miền miễn phí đứng đầu trong danh sách các tên miền miễn phí tốt nhất, hỗ trợ rất nhiều tính năng như một tên miền trả phí thật sự như : Nameservers, CNAME, A, MX, TXT records, Google Apps, Windows Live Custom domain...

Chất lượng tên miền luôn được đảm bảo và khá ngắn gọn dễ nhớ. Hơn nữa tên miền Co.Cc còn cung cấp tính năng hỗ trợ DNS cho WebHost, tức là bạn có thể Packed Domain cho WebHost của bạn.
Nhược điểm duy nhất của Co.Cc là Co.Cc giới hạn 20 bản ghi và một tài khoản free được đăng ký tối đa 2 tên miền.

Đăng ký tiên miền này theo dạng www.tenban.co.cc Các bạn có thể vào đây để đăng ký cho mình một tên miền trên co.cc hay xem hướng dẫn đăng ký tên miền Co.Cc chi tiết kèm hình ảnh tại đây.

2.Cz.cc

Đứng ở vị trí thứ hai là dịch vụ Cz.Cc - đây cũng là một trang cung cấp tên miền miễn phí giống với Co.Cc - được xếp hạng ở vị trí thứ 2 là do ra đời muộn và ít người dùng hơn Co.Cc. Tuy nhiên Cz.Cc giới hạn số lượng bản ghi records cho DNS (của Co.Cc giới hạn 20 bản ghi). Với mỗi tài khoản bạn đăng ký được 5 tên miền free.
Hỗ trợ full DNS (NS, A, CNAME, MX, SOA, TXT, AAAA) Sub domains, Control Panel.
Các bạn vào đây để đăng ký tên miền miễn phí .Cz.Cc. Hay xem hướng dẫn đăng ký tên miền .Cz.Cc chi tiết kèm hình ảnh tại đây.

3. Cu.Cc

Tên miền miễn phí Cu.Cc ko giới hạn số lượng bản ghi records cho DNS và cho phép mỗi tài khoản free bạn đăng ký được 5 tên miền miễn phí. Hỗ trợ full DNS (NS, A, CNAME, MX, SOA, TXT) Sub domains, Control Panel.
Bạn click vào đây để đăng ký free tên miền .CU.CC hay xem hướng dẫn chi tiết kèm hình ảnh tại đây.

4. Dot.TK

Chắc các bạn cũng từng nhìn thấy qua các tên miền dạng .tk, đây cũng là tên miền cấp 1 duy nhất được cung cấp miễn phí hiện nay. Hiện tại Dot.Tk cũng đã hỗ trợ full DNS (A, CNAME, MX) Sub domains, Control Panel quá đã với một dịch vụ free.
Các bạn vào đây để đăng ký tên miền miễn phí .tk và xem hướng dẫn đăng ký kèm hình ảnh tại đây.

5. Come.vn cung cấp tên miền miễn phí .vn

Trang này cung cấp rất nhiều tên miền cho bạn chọn: come.vn no1.vn very.vnisp.vn soc.vn (sốc) cuibap.vn (cùi bắp) nuhon.vn choang.vn 
(sưu tầm)

Giới thiệu hệ quản trị cơ sở dữ liệu Oracle

Giới thiệu Oracle

1.Lịch sử phát triển của Oracle

Trước khi đi vào các bài học, chúng ta cũng giành vài phút đi ngược lại lịch sử để hiểu rỏ hơn về Oraclẹ

1977 Thành lập Relational Software Inc.

1978 Phiên bản Oracle v1 đầu tiên, chạy trên hệ điều hành PDP-11 của máy RSX (dòng của hãng DEC), khả năng sử dụng bộ nhớ tối đa là 128 KB.
Viết bằng ngôn ngữ Assemblỵ
Oracle V1 chỉ được sử dụng trong nội bộ công ty, khjông được phát hành ra bên ngòaị

1980 Phát hành phiên bản Oracle v2 - Đây cũng là hệ cơ sở dữ liệu thương mại đầu tiên sử dụng ngôn ngữ SQL.
Phiên bản này vẫn được viết bằng Assembly cho PDP-11, tuy nhiên, nó còn chạy được trên Vax/VMS.

1982 Phát hành Oracle v3 released, Oracle trở thành DBMS đầu tiên chạy trên các máy mainframes, minicomputers, và PC's (portable codebase). Phiên bản Oracle đầu tiên thể làm việc theo "transactional".
Oracle v3 được viết bằng C.

1983 Relational Software Inc. đỗi tên thành Oracle Corporation.

1984 Phát hành Oracle v4, giới thiệu tính năng "read consistency", có thể chạy trên nhiều Hệ Điều Hành, và cũng là phiên bản đầu tiên chạy theo mô hình PC - Server.

1986 Phát hành Oracle v5. Thực sự là CSDL client/server, hổ trợ cluster trên VAX.
CSDL đầu tiên sử dụng truy vấn dữ liệu phân tán (distributed queries).

1988 Phát hành Oracle v6
Giới thiệu ngôn ngữ PL/SQL
Oracle cũng giới thiệu sản phẩm ứng dụng sử dụng CSDL Oracle - Oracle Financial Applications.

1989 Phát hành Oracle v6.2 với tính năng chạy song song - Oracle Parallel Server

1992 Phát hành Oracle v7 chạy trên UNIX

1993 Phát hành bộ công cụ phát triển ứng dụng - Oraclés Cooperative Development Environment (CDE).
Giới thiệu "Oracle Industries" và "Oracle Media Server"

1994 Phát hành Oracle v7.1 và Oracle v7 trên máy PC.

1997 Phát hành Oracle8 , giới thiệu Cơ sở Dữ liệu Hướng Đối Tượng - object-relational

1998 Phát hành phiên bản trên Intel Linux

1999 Phát hành Oracl8i (i = internet), tích hợp với máy ảo Java - JVM

2000 Phát hành Oracl8i Release 2
Ngòai Oracle Database, Oracle còn phát triển bộ sản phẩm ứng dụng cho doanh nghiệp - ERP
Phát hành Oracl9i Application Server, đây là một sản phẩm thuộc lớp giữa (midle tier)

2001 Phát hành Oracl9i Release 1 với tính năng Cluster (RAC) và Advanced Analytic Service

2002 Phát hành Oracl9i Release 2

2004 Phát hành Oracle10g Release 1 (g = grid)

2005 Phát hành Oracle10g Release 2

2. Ưu điểm của Oracle:

Nhiều người cho rằng Oracle chỉ sử dụng cho những Doanh Nghiệp (DN) lớn nên không thích hợp ở Việt Nam.

Điều này, theo tôi, là hoàn toàn sai lầm. Oracle không chỉ nhắm tới những DN lớn mà còn nhắm tới những DN trung bình và cho cả những DN nhỏ.
Cụ thể là Oracle Server có đủ các phiên bản thương mại từ Personal, Standard đến Enterprise (ngoài ra còn có Oracle lite nữa).

- Về phía các DN: Oracle tỏ ra rất có ưu điểm như tính bảo mật cao, tính an toàn dữ liệu cao, dễ dàng bảo trì-nâng cấp, cơ chế quyền hạn rỏ ràng, ổn định,...
Oracle cũng không quá đắc như các bạn nghĩ, nếu DN đã từng mua lisence của MSSQLServer thì sẽ thấy giá của Oracle cũng không chênh lệch là bao thậm chí còn rẻ hơn (xem phần so sánh giá), nhưng lợi ích có được lại rất lớn.

- Về phía những nhà phát triển: Oracle cũng tỏ ra rất có ưu điểm như dễ cài đặt, dễ triển khai và dễ nâng cấp lên phiên bản mớị
Hơn nữa Oracle còn tích hợp thêm PL/SQL, là một ngôn ngữ lập trình có cấu trúc - Structure Language. Tạo thuận lợi cho các lập trình viện viết các Trigger, StoreProcedure, Package. Đây là điểm rất mạnh so với các CSDL hiện có trên thị trường.
Oracle, ngoài các kiểu dữ liệu thông thường còn có các kiểu dữ liệu đặc biệt khác góp phần mang lại sức mạnh cho Oracle như Blob, clob, Bfile, ...
Nếu bạn chỉ chạy thử, bạn cũng không cần lo đến vấn đề lisence vì có thể download từ trang của Oracle (technet.oracle.com).

- Ngoài ra, bạn có thể triển khai Oracle trên nhiều OS khác nhau (Windows, Solaris, Linux,...) mà không cần phải viết lại PL/SQL codẹ
Có thể import một dumpFile (backupFile) từ một máy chạy OS này sang OS khác hoặc từ một version thấp lên một version cao hơn mà không gặp bất cứ trở ngại nào ! (việc ngược lại cũng có thể thực hiện được nếu như bạn không xài các tính năng mới so với version trước đó).

Nguồn: ORAVN