|
|
Unfor86 wrote:
Để làm 1 hacker giỏi như mấy anh thì bước đâu tiên của em là như thế nào...
Có anh nào giúp em,em mê lắm nhưng chưa biết bắt đầu từ đâu và đi về đâu (
++ Hèm, cái tiêu đề này cần phải rõ ràng hơn!
++ Bài này Post sai chỗ, nên post trong mục Góp ý và Hỏi đáp thắc mắc chung, hoặc trong mục Định hướng.
----> Bạn nên đọc "How to become a hacker" Của Eric S. Raymond.
http://catb.org/~esr/faqs/hacker-howto.html.
---->Những hiểu biết cơ bản nhất để trở thành haker http://hvaforum.net/hvaonline/posts/list/131.html
----> "Những cuộc đối thoại với rookie" cũng là một topic nên đọc cho câu hỏi này. http://hvaforum.net/hvaonline/posts/list/51.html
+ Ngoài ra còn có nhiều topic khác bạn search trên diễn đàn.
Thân ái.
|
|
|
Tạm thời bây nhiêu đã. Có chỗ nào sai sót mong anh em góp ý, đặc biệt là bác LQV0604.
|
|
|
Selection Sort
Nguyên tắc :
Chia mảng cần sắp thành 2 phần
Phần đã được sắp và phần chưa được sắp :
<A = phần được sắp> < B= phần chưa được sắp>
C = phần tử đầu tiên của B
Bước 1 : Tìm trong B phần tử lớn nhất max_key
Bước 2 : swap C và max_key ( hoán đổi vị trí )
Bước 3 : Bỏ max_key vào A . Khi này A mới = { A cũ , max_key } .
Quay lại bước 1
Gọi Sortable_List là list được hiện thực bằng mảng
Code:
void Sortable_List<Record>::selectionsort()
{
for ( int position = count -1 ; position > 0 ; position -- )
{
int max = max_key(0,position) ; // tìm key lớn nhất
swap ( max , position ) ;
}
}
void Sortable_List<Record>::swap ( int low , int high)
{
Record temp ;
temp = entry[low] ;
entry[low] = entry[high] ;
entry[high] = temp ;
}
.... max_key(int low , int high)
{
int largest , current ;
largest = low ;
for ( current = low +1 ; current <= high ; current ++ )
if ( entry[largest] < entry[current] )
{
largest = current ;
}
return largest ;
}
|
|
|
insertion sort
VD :
A = { 5 8 6 3 10 }
Insertion sort làm như sau :
Chia mảng A làm 2 phần sorted và unsorted
Ban đầu sorted là B = { 5 }
Unsorted là C = { 8 6 3 10 }
Lần làm thứ nhất :
Lấy phần tử đầu tiên của C là 8 ra---> C = { 6 3 10 }
Tìm vị trí của số 8 trong mảng B ---> B = { 5 8 }
Lần làm thứ hai :
Lấy phần tử đầu tiên của C là 6 ra---> C = { 3 10 }
Tìm vị trí của số 6 trong mảng B ---> B = { 5 6 8 }
Lần làm thứ ba :
Lấy phần tử đầu tiên của C là 3 ra---> C = { 10 }
Tìm vị trí của số 3 trong mảng B ---> B = { 3 5 6 8 }
Lần làm thứ tư :
Lấy phần tử đầu tiên của C là 10 ra---> C = { }
Tìm vị trí của số 10 trong mảng B ---> B = { 3 5 6 8 10}
Kết thúc thuật toán
Ý nghĩa của insertion sort là lấy một phần tử của mảng ra và insert vào vị trí thích hợp trong mảng
Giải thuật
Code:
void Sortable_List<Record>::insertion_sort() // phien bản nay list được hien thưc thông qua mảng chứ kg phải con trỏ
{
int first_unsorted ;
int position ;
Record current ;
for( first_unsorted = 1 ; first_unsorted < count ; first_unsorted ++)
{
if(entry[first_unsorted] < entry[first_unsorted-1])
{
position = first_unsorted ;
current = entry[first_unsorted] ;
do {
entry[position] = entry [ position -1] ;
position -- ;
} while (position > 0 && entry[position-1]> current );
entry[position] = current ;
}
}
}
|
|
|
Heap là một cấu trúc dữ liệu , có thể được biểu diễn thông qua 2 cách :
-Dạng thứ 1: Dạng cây nhị phân có đặc điểm là node cha thì lớn hơn 2 node con trực tiếp của nó .
-Dạng thứ 2: nếu ta đánh số các node theo thứ tự từ trên xuống và từ trái qua . Bắt đầu là node root = 0 , thì ta có thể định nghĩa heap thông qua mảng một chiều , có đặc điểm là phần tử thứ k sẽ lớn hơn các phần tử thứ 2k+1 và 2k+2 . Ta có thể dễ nhận thấy là phàn tử thứ 0 sẽ tương ứng với root trong cây ở cách biểu diễn thứ 1
Nguyên tắc sắp xếp của heap sort
Dựa vào tính chất của heap trong cách biểu diễn thứ 1 và thứ 2 , ta có thể thấy phần tử đầu tiên trong cách biểu diễn theo mảng sẽ là phần tử lớn nhất ---> cách sắp xếp đơn giản là : ( Gọi mảng ban đầu là A )
Khởi tạo : Tạo heap từ mảng ban đầu đã cho (mảng A )
1. Lấy phần tử đầu tiên trong mảng ra bỏ vào mảng kết quả
2. Tạo lại heap từ mảng A
3.Quay lại bước 1
VD : Ta lấy một mảng đã được tạo thành một heap :
y r p d f b k a c
Lấy phần tử đầu tiên là y bỏ vào mảng kết quả C = { y }
khi này A = r p d f b k a c
Tạo heap A = r f p d c b k a
Lấy phần tử đầu tiên ra là r bỏ vào mảng C = { r y }
Khi này A = { f p d c b k a }
Tạo heap cho A = { p f k d c b a}
Lấy phần tử đầu tiên ra là p bỏ vào mảng C = { p r y }
Khi này A = { f k d c b a }
Tạo heap cho A = { k f b d c a}
Lấy phần tử đầu tiên ra là k bỏ vào mảng C = { k p r y }
Khi này A = { f b d c a }
Tạo heap cho A = { f d b a c}
Lấy phần tử đầu tiên ra là f bỏ vào mảng C = { f k p r y }
Khi này A = { b d c a }
Tạo heap cho A = { d c b a}
Lấy phần tử đầu tiên ra là d bỏ vào mảng C = {d f k p r y }
Khi này A = { c b a }
Tạo heap cho A = { c a b }
Lấy phần tử đầu tiên ra là c bỏ vào mảng C = {c d f k p r y }
Khi này A = { b a }
Tạo heap cho A = { b a }
Lấy phần tử đầu tiên ra là b bỏ vào mảng C = {b c d f k p r y }
Khi này A = { a }
Tạo heap cho A = { a }
Kết thúc ta có được mảng C đã có thứ tự .
Cải tiến:
Ta có thể hạn chế việc sử dụng thêm mảng C bằng cách tận dụng luôn mảng A ban đầu . Ta làm như sau
A = y r p d f b k a c
Bước 1 :
Lấy y ra
Lấy c ra
Bỏ y vào chổ của c .
Bỏ c vào chỗ của y
Khi ta bỏ y vào chỗ của c thì giống như ta bỏ y vảo mảng C .
Khi này mảng A sẽ coi như gồm 2 phần A = c r p d f b k a ---- y
Bước 2 : tạo heap cho phần đứng trước của A là c r p d f b k a
Phần sau là chứa y để nguyên
Ta sẽ có A mới là : r f p d c b k a -- y
Quay lại bước 1 : Lấy r , a ra và swap r và a
A sẽ thành A= a f p d c b k -- r y
Tạo heap cho A = p f k d c b a -- r y
...........
Làm tương tự đến khi kết thúc
Qua VD ta thấy rằng phần quan trọng nhất là làm sao sinh ra heap từ một mảng cho trước
Sau đây là phần code cho phần cải tiến
Giải thuật
Post Condition : Dùng để phục hồi lại heap .
Pre Condition :
Ta sẽ có A mới là : r f p d c b k a -- y
Quay lại bước 1 : Lấy r , a ra và swap r và a
A sẽ thành A= a f p d c b k -- r y
Tạo heap cho A = p f k d c b a -- r y
Thì khi này current chính là a
low là 0
high là 7
Code:
void Sortable_List<Record>::insert_heap(const Record ¤t, int low , int high )
{
int large ;
large = 2*low+1 ;
while ( large <= high ) {
if (large < high && entry[large] < entry[large+1] )
large ++ ;
if(current >= entry[large] )
{
break ;
}
else
{
entry[low] = entry[large] ;
low = large ;
large = 2 * low + 1 ;
}
}
entry[low] = current ;
}
Tạo ra heap lúc ban đầu , lúc chưa chạy giải thuật
void Sortable_List<Record>::bulidheap()
{
int low ;
for ( low = count / 2- 1; low >= 0 ; low -- )
{
Record current = entry[low] ;
insert_heap(current, low, count -1) ;
}
}
void Sortable_List<Record>::heapsort ()
{
Record current ;
int last_unsorted ;
buildheap() ;
for ( last_unsorted = count -1 ; last_unsorted > 0 ; last_unsorted -- )
{
current = entry[ last_unsorted] ;
entry[last_unsorted] = entry[0] ;
insert_heap(current,0,last_unsorted-1) ;
}
}
|
|
|
Quick sort
Ý tưởng:
Gần giống như merge sort , ta sẽ chia đôi mảng cần xếp rồi sắp xếp các mảng con , sau đó sẽ ghép mảng con đã sắp xếp thành mảng ban đầu nhưng đã sắp xếp
Điểm khác nhau: Là chổ ta chia đôi mảng con theo nguyên tắc riêng :
Gọi điểm mà tại đó ta chia đôi mảng ban đầu có trị là pivot (không nhất thiết là nằm đúng vị trí chính giữa . Nhưng giải thuật sẽ chạy tốt nếu nó nằm gần điểm chính giữa) và ta sẽ không cần merge 2 dãy con (do đó nhìn chung sẽ chạy nhanh hơn ) , thỏa điều kiện là tất cả những phần tử bên trái pivot đều nhỏ hơn pivot và nằm bên phải pivot thì lớn hơn pivot
VD :
2 4 6 7 18 14 13
Ta chọn phần tử pivot = 7 ( do bên trái của nó nhỏ hơn pivot = 7 , bên phải lớn hơn pivot = 7 ) (Thực ra ta phải tìm pivot , do ở đây làm bằng tay nên dễ thấy )
Chia đôi : A = { 2 4 6 } B = { 18 14 13 }
+ Sắp A
+ Trong dãy A ta cũng chọn phần tử pivot là 4
+ Được 2 dãy con là A11 = {2 } A12 = {6}
+ Sắp A11 ( sắp sẵn rồi )
+ Sắp A12 ( sắp sẵn rồi )
+ Tạo lại mảng A = { A11 được sắp , pivot , A12 được sắp } = {2 4 6 }
+Sắp B . Trong B ta không thấy được pivot do chọn cái nào ta cũng không thấy thỏa . Nhưng mục tiêu của quick sort là làm sao ta được dãy
<C= dãy có trị nhỏ hơn pivot > pivot < D= dãy có trị lớn hơn pivot >
Sắp 2 dãy con C , D rồi ghép lại ta được dãy sắp thứ tự .
Vì vậy áp dụng một giải thuật tìm pivot trong B( sẽ trình bày sau ) ta sẽ được C = { 13} D = {18} và pivot là 14 .
+ Sắp dãy con C , D ( do chỉ có một phần tử nên không sắp , hoặc tìm pivot)
+ Ghép lại tạo thành mảng B được sắp B = { 13 14 18 }
+Ghép A và B để tạo thành mảng được sắp xếp ban đầu
Thuật toán
Code:
void Sortable_List<Record>::quick_sort()
{
recursive_quick_sort(0 , count -1 ) ;
}
void Sortable_List<Record>::recursive_quick_sort(int low , int high )
{
int pivot_position ;
if (low < high )
{
pivot_position = partition (low , high ) ;
recursive_quick_sort(low , high ) ;
recursive_quick_sort(pivot_position +1 , high ) ;
}
}
int Sortable_List<Record>::partition(int low , int high )
{
Record pivot ;
int i , last_small;
swap ( low , (low +high) /2 ;
pivot = entry[low] ;
last_small = low ;
for ( i = low +1 ; i <= high ; i ++ )
{
if(entry[i] < pivot )
{
last_small = last_small +1 ;
swap ( last_small , i ) ;
}
}
swap (low , last_small );
return last_small ;
}
PS : Hiệu quả của giải thuật quicksort phụ thuộc rất nhiều vào việc chọn cho được pivot tốt ( tức nếu pivot nằm gần chính giữa thì đạt gần tối ưu )
Có rất nhiều phiên bản quicksort khác nhau nếu ta thay đôi cách tìm pivot . VD Ở cách trên phương pháp làm là chọn phần tử giữa để lấy trị của nó làm pivot ,rồi sau đó sẽ di chuyển phần tử giữa để nó đúng vào vị trí cần có của pivot là <bên trái nhỏ hơn pivot > pivot <bên phải lớn hơn pivot > . Ta có thể chọn cách khác là lấy phần tử đầu làm trị pivot . Sau đó di chuyển phần tử đầu đến đúng vị trí cần có của pivot .
Do đó ta sẽ có rất nhiều cách để hiện thực một ý tưởng và nhiều phiên bản của quick sort . Bởi vậy tui thích xem ý tưởng hơn là đưa ra những đoạn code rồi ngồi xem code nó chạy như thế nào .
|
|
|
Merge sort
Nguyên tắc :
VD ta có
12 13 45 32 100 34 65 10
Ta có ở trên là 8 phần tử cần được sắp xếp :
Ý tưởng của merge sort là thay vì sắp xếp 8 phần tử (khó sắp ) thì ta chia đôi dãy đó ra làm đôi (số phần tử nhỏ hơn --> sắp dễ hơn ) và sắp xếp các dãy con rồi ghép 2 dãy con lại ( gọi là merge 2 dãy con )
Vậy ta làm như sau:
Chia đôi --> được hai dãy con mới là 12 13 45 32 và 100 34 65 10
sắp 2 dãy con lại : 12 13 45 32 gọi là dãy A
100 34 65 10 gọi là dãy B
+ Muốn sắp A ta cũng làm y như trên
Chia đôi A , được 2 dãy mới là A11 = { 12 13 } A12 = {45 32 }
Chia đôi B được 2 dãy mới là B11 = {100 34} B12 = {65 10 }
+ Sắp xếp A11, B11 , A12 , B12
+ Muốn sắp xếp A11 thì ta cũng chia đôi đến khi sắp được
ta có 2 dãy con là A21 = {12} A22 = { 13}
Sắp 2 dãy con trên được ( đơn giản vì chỉ có một phần tử ) là A21 = {12 } A22 = {13}
Sắp xong thì ta merge lại thành A11 = { 12 13 }
+ Tương tự sắp xếp cho B11 , A12 , B12 ta cũng có
B11 = {34 100} B12 = {10 65 } A12 = {32 45 }
+Sắp xếp xong , ta sẽ merge lại A11 , A12 thành A = { 12 13 32 45 }
B11 , B12 thành B = { 10 34 65 100 }
Sắp xong A , B , ta sẽ merge chúng lại thành dãy ban đầu :
{10 12 13 32 34 45 65 100 }
Phương pháp merge:
VD A = { 12 13 32 45 }
B = { 10 34 65 100}
Đầu tiên lấy phần tử đầu tiên của A và B : 12 và 10
10 < 12 nên ta lấy 10 bỏ vào mảng kết quả là C = {10}
Giử lại số 12 , và lấy tiếp phần tử thay thế 10 trong mảng B là 34
So sánh 12 và 34 . 12 < 34 , lấy 12 ra và bỏ vào C = {10 12}
Giử lại 34 . Lấy phần tử kế tiếp để thay cho 12 trong mảng A là 32
So sánh 32 và 34 chọn 32 bỏ vảo C = { 10 12 32 }
........ Làm tương tự ......
Đến bước cuối cùng A hết phần tử B còn lại B = { 65 100}
Ta sẽ bỏ toàn bộ mảng B vào C . Kết quả C đã được merge và có thứ tự
Giải thuật:(cho trường hợp dùng list để chứa các phần tử cần sort)
Sortable_List là một lớp list có đặc điểm là có hàm sort
Node là một template class biểu diễn cho các node trong list
Record là class dùng để biểu diễn data cần sắp xếp . ( VD như sắp một dãy các số nguyên , hay VD là sắp theo tên của các record bao gồm tên , tuổi , số điện thoại ...)
sublist là list cần sắp xếp
Code:
Sortable_List<Record>::recursive_merge_sort(Node<Record> *&sublist )
{
if ( sublist != 0 && sublist->next != 0 } //tức là có tồn tại 2 node trở lên để có thể chia đôi sublist được
{
Node <Record > *second_half = divide_from (sublist);
recursive_merge_sort(sublist) ;
recursive_merge_sort(second_half) ;
sublist = merge(sublist, second_half)
}
}
Node<Record>* Sortable_List <Record>::divide_from( Node<Record> *sublist)
{
Node<Record> *position , *midpoint , *second_half ;
if (( midpoint = sublist) == NULL) return NULL ; // hổng có ds để chia
position = midpoint->next ;
while(position != 0)
{
position = position->next ;
if ( position != 0)
{
midpoint = midpoint->next ;
position = position->next ;
// midpoint duyêt 1 thì position duyệt 2 node cùng 1 lúc nên khi position kết thúc = NULL thì midpoint cũng đang ở vị trí chính giữa;
}
}
second_half = midpoint->next ;
midpoint->next = NULL ;
return second_half ;
}
Node <Record> * merge(Node<Record> *first , Node<Record>* second )
{
Node<Record> *last_sorted ;
Node<Record> combined ;
last_sorted = &combined ;
while ( first != NULL && second != NULL )
{
if (first->entry <= second->entry ) {
last_sortesorted->next = first ;
last_sorted = first ;
first = first->next ;
}
else
{
last_sorted->next = second ;
last_sorted = second ;
second = second->next ;
}
}
if ( first == NULL )
last_sorted->next = second ;
else
last_sorted-> next = first ;
return combind.next
}
//
PS : Hàm merge này viết hay , không tạo ra một ds mới để chứa kết quả như ta trình bày ở VD mà chỉ dùng một ds các con trỏ (combined) để chỉ đến thứ tự các node ở trên cả hai first và second. Cách này có lợi nếu Record là một trường phức tạp .
|
|
|
Hồi trước Fal có save lại bài "Các kĩ thuật sắp xếp, hay dùng" của:
LQV0604
Group: HVA Member
Posts: 164
Joined: 29-December 03
From: Nothing is impossible
Member No.: 55908
Bây giờ post lên lại đây, tiện thể học tí luôn!
|
|
|
Thanks batdoi!
http://nts.su --- Thú vị thật!
)
|
|
|
meovonchuot wrote:
Thằng bạn em nó vừa thi kỳ thi tuyển sinh ĐH xong, nó không đủ điểm chuẩn vào khoa CNTT trường BK mà nó mong muốn. Nó tính ở nhà ôn sang năm thi tiếp nhưng ba má nó kêu nó đi học một số khoá học chuyên viên hay kỹ thuật viên cũng được chứ không nhất thiết phải học ĐH. Nó nói với em là nếu học thì nó chọn học một trong 2 hướng: 1 là học quản trị mạng, 2 là học đồ hoạ. Nó có hỏi em là học một trong 2 hướng đó thì khi ra trường cái nào sẽ dễ xin việc và áp dụng thực tế nhiều hơn.
---Fal không biết học một khoá Chuyên viên Kỹ thuật mạng hay đồ hoạ bao lâu. Nhưng có lẽ để trở thành Chuyên viên không phải chỉ qua một khoá học. Bởi thế:
+ Nếu chỉ xác định học để cho biết và thoả mãn đam mê thì ko sao. Nhưng xác định học để thành nghề nghiệp lâu dài thì Fal nghĩ không nên.
+ Nếu vẫn còn quyết tâm thi ĐH thì việc chính vẫn là củng cố kiến thức. Vì thế cũng ko nên nghĩ nhiều đến chuyện học gì trong thời gian này.
Một vài ý kiến....
|
|
|
----"Tại sao máy bạn mất Accessories?" Fal nghĩ có lẽ chính bạn hoặc một chương trình nào đó đã remove mất Accessories.
---- Nếu bạn ko biết làm sao để có lại Accessories:
Control Panel ---> Add or Remove Programs ---> Add/remove Windows Components ---> chọn Accessories (lưu ý có thêm mục Detail để chọn lựa).
Thân chào!
|
|
|
TRích từ http://www.tomshardware.com:
"Firstly, Pentium D 820 processor does not support Intel Enhanced SpeedStep technology, which is available in all other dual-core processors on Smithfield core. The reason for this is the clock frequency multiplier, which equals 14x for this CPU. It is the minimum clock frequency multiplier for all processors based on modifications of Prescott core. For the same reason, Pentium D 820 does not support such technologies as C1E (Enhanced Halt State) Technology and TM2 (Thermal Monitor 2) Technology, which also require dynamic change of the CPU clock frequency multiplier.
Secondly, the low TDP level of the Pentium D 820 processor is also quite remarkable here. All other Pentium D CPUs and Pentium Extreme Edition 840 feature the thermal design power of 130W. Moreover, this characteristic of the Pentium D 820 processor is even lower than that of the top single-core Pentium 4 solutions: their TDP equals 115W. This gives us some hope that Pentium D 820 will turn out not so hot as the previously reviewed Pentium Extreme Edition 840 and will allow using pretty simply cooling solutions. Besides, relatively low heat dissipation and power consumption of the Pentium D 820 processor should make it possible for this processor to work just fine in mainboards without “enforced” CPU voltage regulator."
Hì, có lẽ 820 ko được rồi!
Ở chỗ Fal tạm thời AMD 2X vẫn còn đắt lắm, mà $ thì còn phải xem lại!! (hic, SV khổ thế đấy!) khoảng 500$ cho CPU+mainboard+VGA (chiến chiến 1 tí cho nó mượt ) +RAM ... băn khoăn, băn khoăn...
|
|
|
Z0rr0 wrote:
Một trong những kĩ năng của người dùng Internet là tìm kiếm thông tin. Tại sao em không thử tìm 1 vòng trên các search engine, vd tại Google http://www.google.com/search?hl=en&q=Caesar+Cipher&btnG=Google+Search
Hì, một câu trả lời hay cho một câu hỏi rất gấp!!!!
|
|
|
Fal xin bổ sung vài ý kiến nhỏ, ngoài những ý kiến của anh lieuphieu ở trên:
traixaxu_hp wrote:
Từ trước đến giờ mình thấy cái nào cũng có cánh quạt đi kèm, nhưng đợt vừa rồi đi lên cửa hàng trung tâm máy tính thấy có cái không có cánh quạt(mà giá thì vẫn ngang ngửa với mấy cái có cánh quạt, tầm 40 €), mình lại không thạo mấy cái này lắm, không biết có tốt không.
Khi mua CPU bạn sẽ thấy có một vài con có chữ Box và một vài con thì không. Chữ Box có nghĩa là có quạt đi kèm đấy. Thường thì những quạt Box đi kèm là khá tốt nếu bạn không Over Clock.
traixaxu_hp wrote:
-Còn cái ổ nguồn thì nó bảo phải mua cái từ 400W chở lên. Mà khi đi xem thì hầu như toàn thấy cái cánh quạt của nó ở phía trên chứ không phải ở đằng sau như mấy cái máy mình thường gặp, nếu như mua cái đó mình có thể lộn ngược cái hướng của cánh quạt xuống dưới được không (tại nếu để hướng lên thì phải khoan một lỗ ở phía trên máy).Có cái mình còn thấy nó có cả ở trên lẫn dưới, như thế tôt hay là không tôt.
Ổ nguồn bao nhiêu còn tuỳ thuộc loại main của bạn, trong quyển sách đi kèm với main sẽ viết rất rõ điều này. Bộ nguồn lắp xuôi, ngược cũng phụ thuộc vào case của bạn, nếu bạn lắp xuôi ngược tuỳ ý thì phải mổ xẻ cái case. (mổ xẻ mà biết đầu tư cũng có được 1 cái case lạ mắt và đẹp đấy).
traixaxu_hp wrote:
Đậy là cấu hình của máy mình:
CPU: AMD Athlon XP 3000+ L2/512KB, Sockel 939
Hì, cái này là con CPU thôi mà bạn sao gọi là "Cấu hình máy" được?
|
|
|
Console Computer management là một console rất hữu ích, qua bài viết nhỏ này Fal muốn giới thiệu với các bạn để tham khảo. Bài viết thực hiện dựa trên kinh nghiệm "ngồi máy vi tính" của bản thân, và tham khảo một ít tài liệu tiếng Anh nên có thể có những điểm chưa chính xác, mong các anh chị cùng các bạn góp ý để mọi người có cái nhìn tổng quát, chính xác về Computer Management.
Giới thiệu chung:
Computer management là giao tiếp không những dùng để quản lý máy tính cục bộ, mà còn có thể quản lý những máy tính khác được điều khiển trong mạng. (ở đây khái niệm máy tính cục bộ được dịch từ Local computer, và máy được điều khiển trên mạng từ remote computer).
Để truy cập vào Computer management bạn có thể truy cập từ:
+ Control Panel -> Administrative tools -> Computer management
hoặc:
+ Click chuột phải vào My Computer -> chọn Manage
Cửa sổ Computer Management hiện ra dưới dạng một trình Explore khá quen thuộc. 3 mục chính trong Computer management là: System Tools, Storage và Services and Applications. Chúng ta sẽ xem sơ lược từng mục này.
Ghi chú: Bạn có thể quản lý một máy khác trong mạng bằng cách Click chuột phải vào Computer Management sau đó chọn Connect to another computer ... và điền các thông tin cần thiết về tên máy, User và password truy cập.
I. System Tools
System tools dùng để quản lý những sự kiện làm việc của hệ thống với các mục nhỏ:Event Viewer, Shared Folders, Local Users and Groups, Performance Logs and Alerts overview, Device Manager.
1. Event Viewer:
Với Event Viewer ta có thể giám sát các hoạt động của các ứng dụng (Applications), bảo mật (Security) và các bản ghi của hệ thống (System logs).
+ Applicatrion logs chứ các sự kiện của các ứng dụng hay các chương trình. Các logs chứa trong mục này là: Information, Error, Warning, Success audit, Failure audit. Muốn xem một log bạn chỉ việc click 2 lần vào logs muốn xem, trong cửa sổ mới sẽ hiện ra sẽ chứa đầy đủ thông tin về ngày tháng, và một giải thích kèm theo. Ví dụ:
----------------------------------------------
Event Type: Information
Event Source: Winlogon
Event Category: None
Event ID: 1002
Date: 9/3/2006
Time: 6:56:05 PM
User: N/A
Computer: PAVO_LUSA
Description:
The shell stopped unexpectedly and Explorer.exe was restarted.
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
---------------------------------------------------------------
Ở đây ta có thể biết được trình tiện ích đã bị Stop unexpectedly và Explorer.exe đã được khởi động lại (The shell stopped unexpectedly and Explorer.exe was restarted.), kèm theo thời gian xảy ra sự kiện.
Ghi chú: Khi mở cửa sổ Event properties bạn có thể Click nút mũi tên lên hoặc xuống để di chuyển tới sự kiện tiếp theo, và cũng có thể copy thông tin sự kiện vào clipboard rồi lưu vào một file text nào đấy.
- Để xuất tẩt cả các event ra một File text, *.CSV, hoặc *.evt bạn click chuột phải vào Application và chọn Save log file as....
- Số lượng event, sẽ phụ thuộc vào dung lượng bộ nhớ được quy định trong properties của Application. Bạn cũng có thể chọn lọc những event cần thiết và thay đổi các các thông tin khác ở trong properties.
+ Security log ghi lại thông tin trong quá trình logon, liên quan đến những tài nguyên như tạo, mở hay xoá file, thư mục,...
+ System log chứa những sự kiện những thành phần của Windows mà cụ thể là các service kèm theo. Ta xem một ví dụ sau:
-------------------------------------------------------
Event Type: Information
Event Source: Application Popup
Event Category: None
Event ID: 26
Date: 9/3/2006
Time: 2:37:32 PM
User: N/A
Computer: COMPUTER1
Description:
Application popup: Messenger Service : Message from COMPUTER1 to WorkGroup on 03.09.2006 14:37:32
Hello world
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
--------------------------------------------------------
Ở đây System log ghi lại sự kiện một message được gửi từ máy có tên COMPUTER1 đến WorkGroup với nội dung: Hello world.
Chú ý: Bên cạnh Application, Security, và System log, bạn có thể tạo thêm Log View với những tuỳ chọn (trong mục Filter) thích hợp cho riêng mình bằng cách chọn New Log View.
2. Shared Folders: Trong mục này bạn có thể quản lý các thư mục các tài nguyên được share trên mạng với 3 mục con Shares, Sessions và Open Files.
+ Trong Shares hiển thị tất cả tài nguyên bạn đang share trên mạng. Bạn có thể dễ dàng ngắt share bằng cách chọn Stop sharing trong menu Action, hoặc thay đổi các thông số, quyền truy cập của user ... trong mục properties.
+ Trong Sessions hiển thị những user đang truy cập vào tài nguyên trên máy bạn với những thông số về tên máy, số lượng files đang mở, thời gian truy cập,... chọn Dissconect session trong mục Action để ngắt truy cập.
+ Trong Open Files hiển thị chi tiết những file đang được truy cập.
3. Local Users and Groups: Dùng để quản lý và phân quyền những User và những Group của máy tính.
+ Users: Bạn có thể tạo mới, thay đổi Group của User, hoặc set Password của User mà ko cần biết password cũ.
+ Tương tự, Groups dùng để quản lý và phân cấp các nhóm users.
4. Performance Logs and Alerts: Trong mục này bạn có thể thu thập những thông tin một cách hoàn toàn tự động thông qua chương trình System Monitor hoặc xuất thông tin ra một file thích hợp (Text, CSV, SQL)
Ví dụ:
Trong mục Counter Log Tôi tạo một log mới có tên Memory để xem thông tin về bộ nhớ (bằng cách chọn New log setting...). Trong tab Memory hiện ra, chọn General, Add Objects để add mục Memory. Trong tab Log Files tôi chọn Binary File. File log sẽ được lưu vào: C:\PerfLogs\Memory.blg. Chọn Tab Schedule để thay đổi thông tin Start log, stop log,... ở đây tôi để default có nghĩa là máy sẽ thực hiện ngay cái log này. Bây giờ ta vào C:\PerfLogs\ và mở file Memory.blg lên, cửa sổ Performace xuất hiện với thông số về Memory được cập nhật liên tục. Ta cũng có thể tạo mới logs cho Cache, Paging file,...
Tương tự trong phần Trace logs với các thông tin về giao tiếp mạng. Mục Alerts cho phép bạn thiết lập một thông báo về một counter khi thông tin về counter vượt quá một giá trị cho phép nào đó.
5. Device Manager: Dùng để quản lý các thiết bị phần cứng của máy tính: Update driver, Disable, Uninstall,... Có lẽ phần này không phải nói gì nhiều )
II. Storages
Storages cung cấp thông tin về những thiết bị lưu trữ đã được cài đặt trên máy bạn đang quản lý.
1. Removable Storage: Cung cấp thông tin về các thiết bị lưu trữ "có thể tháo lắp" được. Mục Media liệt kê những ổ đĩa đang hoạt động (đang chứa đĩa), mục Libraries liệt kê tất cả các thiết bị "removable storages" trong máy.
2. Disk Defragmenter: là trình tiện ích giảm phân mảnh trên các ổ đĩa. Trong vùng thông tin cụ thể phía bên phải của cửa sổ Computer management, bạn chọn ổ đĩa cần xem rồi chọn Analyze để xem thông tin về phân mảnh của ổ đĩa. Hoặc chọn Defragment để sắp xếp lại.
3. Disk Management: cung cấp những chức năng liên quan đến việc quản lý các ổ đĩa: Tạo Partitions, tạo một volume mới, format ổ đĩa hay thay đổi các ký tự chữ cái của ổ đĩa...
Lưu ý: Nếu bạn chưa thông thạo việc chia Partition hoặc tạo Volume mới thì không nên thử chức năng này. Nên đọc trước về nó một ít.
III. Services and Applications
Services and Applications chứ những công cụ mặc định và những ứng dụng trên máy tính hiện tại.
Services:
Click đúp vào mỗi service, trong tab General chứa thông tin về service, và tóm tắt mô tả. Có 3 trạng thái Startup của service: Automatic, Manual và Disabled
Trong tab Log on sẽ cho phép service hiện tại hoạt động tuỳ theo các lựa chọn: Local System account, hoặc một account mà bạn chọn.
Trong tab Recovery xác lập hành động của máy tính nếu Service không chạy nữa.
Tab Dependencies hiển thị sự phụ thuộc lẫn nhau giữa các Service.
Lưu ý: Một Service sẽ có thể có những service khác phụ thuộc vào sự hoạt động của nó hoặc bản thân service phụ thuộc hoạt động của những service khác. Bạn nên lưu ý mục Dependencies trong khi lựa chọn Startup type của các Service.
Có lẽ bao nhiêu đây đã đủ để các bạn có một cái nhìn sơ lược về Computer Management. Tuỳ theo từng phiên bản Windows khác nhau mà sẽ có thêm những mục khác ngoài những mục nêu trên.
Có gì sai sót xin nhờ các anh chị và các bạn bổ sung thêm cho bài viết được hoàn thiện.
|
|
|
mrtuanphuong wrote:
Anh nói như vậy thì em đã hiểu rõ vấn đó đó rồi em rất cảm ơn anh nhe !
nhưng vậy thì vẫn còn cái khác em chưa biết em muốn hỏi anh thêm không biết có phiền gì anh không nữa nếu như có phiền anh thì cho em xin lỗi anh nhe còn nếu anh giúp được cho em thì em mừng và cảm ơn anh nhiều .Chuyện là em muốn biết cách hạn chế người truy cập internet nếu người đó muốn truy cập internet thì phải thông qua pasword nếu không có pass thì sẽ không truy cập được internet vậy anh biết cách thì giúp em với .Minh phải cần thay đổi thông số nào hay phải sử dụng phần mềm hổ trợ vậy anh ,mong anh giúp cho em với !
- Trước tiên mình nghĩ bạn nên cho mọi người biết bạn truy cập vào Internet như thế nào thì mới biết mà hạn chế được chứ?
Có lẽ cái này bạn nên tạo Topic khác cho vấn đề đỡ loãng.
|
|
|
Tất cả đều bình thường mà? có thấy cái nào: "Chữ cứ loạn cả lên đâu" :p)
|
|
|
lonely_Xorhandsome wrote:
nhu cầu bạn dùng là gì ? có xài .NET không ? có xài Eclipse hay đồ hoạ không ? từ đó mới hình thành nhu cầu về cấu hình ( nếu là dân SV) , thưc ra bạn chọn con Pentium 2X cũng không cần thiết lắm vì nó sẽ không hoạt động hết công suất trong quá trình bạn làm việc đâu ! bạn nên chú ý tới RAM,Cache có lẽ cần hơn .
Thân.
Hì, trước đây mình có dùng 1 con như thế này: (khoe tí )
AMD Sempron (socket A) 2500+ @2.1Ghz
Mainboard Epox 8RDA3I
Ram Hynix: 2 x 256Mb Dual @ 7-3-3-2.0
Vga Geforce Ti4200+ (híc cái này ko chắc lắm, lú lẫn quá rồi!)
Nói chung là đáp ứng nhu cầu học hành + game sơ sơ thì cũng chiến, nhưng "lỡ" cho thằng em trai mất rồi nên giờ phải tậu lại thôi. Thấy 2X mới ra nên cũng thích dùng thử cho biết! Còn về nhu cầu thì... hic, sau này còn khối cái phải dùng. Tạm thời Fal đang lang thang đọc mấy cái review của mấy loại 2X này, và cũng đang chờ $$$ nữa ) ) )
|
|
|
Thanks a lot!
Fal cũng vừa được tin cái domain VOZ hoạt động trở lại rồi. Cũng xem sơ qua, nhưng chưa quyết định được vì $ vẫn chưa có! hì hì... vấn đề muôn thuở!!!
|
|
|
lihavim wrote:
Hờ, cái BIOS máy em nó chẳng hiểu sao nữa, hình như là hư(Em không chắc lắm )
Tình trạng nó thế này:
Máy chạy khá chập chờn, có lúc thì boot vào được DOS, lúc thì bị đứng ở chỗ test ram, có lúc thì detect được cái ổ CD+HDD thì đứng luôn. Sáng nay bật ra thì nó báo lỗi gì đó liên quan đến check sum(Em không nhớ rõ, lúc đó lú lẫn quá, quyên ghi lại) rồi đứng. Em tắt máy đi ra ngoài một lát, quay vào bật lại thì màn hình chả thèm hiện nữa, em đã kiểm tra đủ kiểu rồi nó vẫn không chịu lên.
Khi bật máy mấy lần em có thấy cái đèn ổ đĩa mềm nó sáng trưng(em không set khởi động từ đĩa mềm). Có lần nào đó em đọc hình như BIOS trục trặc nó kiểm tra ổ đĩa mềm để phục hồi gì đó nên em đoán BIOS có vấn đề. Em thử search nhưng toàn thấy nó update từ DOS :?) .
Vậy giờ làm sao em sửa được cái BIOS ạ?
Theo mình:
+Nếu không động gì đến ổ mềm trước lúc có triệu chứng thì không thể là cắm ngược đầu cắm dây dữ liệu ổ mềm được.
+Máy boot chập chờn, xuất hiện lỗi: Check sum error, press... to continue có thể do những nguyên nhân sau: Bios đã bị chỉnh sửa và có một số giá trị nghi ngờ nên máy ra lệnh chờ chỉnh sửa lại hoặc tiếp tục với thiết lập hiện tại.
Trường hợp nếu ko chỉnh sửa Bios thì nguyên nhân chủ yếu là do nguồn điện chưa ổn. Điện của CPU, của Ram, của VGa do OverClock,... không phù hợp nên xảy ra tình trạng "boot nửa vời rồi đứng". Bạn nên kiểm tra lại các rack cắm điện, và các nguồn điện sao cho bảo đảm.
Một nguyên nhân nữa là do phần cứng không tương thích như các bạn đã nói: do các thanh Ram không tương thích, hoặc do không tương thích với main chẳng hạn.
Trong trường hợp này nếu là mình, mình sẽ cố gắng config lại cái Bios xem thử ra sao. Nếu không thành công thì mới tính tới chuyện update Bios. (Nếu bạn không rành về config Bios thì có thể cho nó chuyển về dạng default của nhà sản xuất bằng cách:
-------Set lại jumper của Bios: thường là 1+2 chuyển sang 2+3 rồi trở về 1 +2 sau khoảng 10s.
------- Với các main cũ ko có jumper thì mới tháo pin Bios. Tháo pin Bios cũng nguy hiểm chứ ko đơn giản như các bạn nghĩ đâu, chập 1 phát là tiêu đấy! )
Vấn đề Update Bios:
Quan trọng nhất là phải biết main của mình là loại gì, ký hiệu ra sao, Bios version nào, sau đó search xem có phiên bản mới cho Bios hay ko? Download nó về. Bạn sẽ phải Unzip gì đó, file update Bios thường có đuôi là *.BIN. Tuỳ theo loại main sẽ hỗ trợ update Bios trên Win, trên Dos, hoặc trên phần mềm đính kèm main. Tuỳ trường hợp mà bạn có thể lựa chọn.
Lưu ý là mình không đồng tình lắm với ý kiến nhỏ của bạn jamesmr là máy phải BOOT được từ ổ mềm. Bởi vì bạn chỉ cần boot từ bất kỳ thiết bị nào để chạy được chương trình update bios lên, sau đó trỏ vào file update là OK! hì, máy mình ko có ổ mềm nên toàn Boot linh tinh cả.
To lihavim: Bạn mà thấy error, tắt máy đi ra ngoài là có ngày ... tiêu đấy, mấy cái Bios này đùa với nó nguy hiểm lắm.
Và một ý kiến cuối cùng:
Tài liệu tham khảo đi kèm Main là một tài liệu cực kỳ hữu ích đấy, bạn chỉ cần 1 ít kỹ năng lắp ráp + cuốn sách này là có thể lắp ngon ơ 1 cái máy tính. Bỏ thời gian xem tí cũng không bỏ công đâu!
|
|
|
Hic, search ko ra cái main DOUBLE là cái gì cả...
|
|
|
thanhtuoc wrote:
Mình cũng kiểm tra rồi các bạn ạ. Mang Ram sang máy khác thi no vẫn chạy bình thường vẫn nhận đủ Ram (Mình có 2 thanh 128 ), mang ổ cứng cài ở máy khác vẫn cài ngon. Còn đĩa SP2 thi vẫn cài ở máy khác bình thường. CÓ khi nào la do CD ROM ko nhi?
Bạn mang Ram và ổ cứng đi rồi có nghĩa là còn cái CPU, cái main, cái CD rom chưa test được phải ko?
Hì, hay là cái main của bạn có vấn đề? điện không ổn định, Ram ko tương thích,... Bạn viết 1 chữ DUMP mình ko hiểu gì cả? nếu được bạn cho biết hiện tượng cụ thể hơn tí được không?
|
|
|
Chào tui_có_bít_gì_đâu
Mình có tham khảo ý kiến của các bạn ở trên, theo mình ở đây chỉ là do thao tác trên máy không cẩn thận nên bị xoá một số file trong system32\ mà ở đây máy báo là hal.dll. Để khắc phục lỗi này có lẽ ta làm nhẹ nhàng nhất bằng cách copy file hal.dll từ thư mục I386 trên đĩa cài Windows XP. Chuyện này cũng không quá khó khăn, không cần phải chỉnh sửa BOOT.INI (vì file bị xoá mất chứ có bị chỉnh sửa trong Boot.ini đâu). Theo Fal cứ lấy cái đĩa cài XP ra, sau đó trong quá trình setup chọn chế độ repair -> các bước tiếp theo fal ko nhớ kỹ, nhưng sẽ có thông báo cụ thể. Sau khi vào được môi trường Dos, sau Comand prompt làm vài lệnh Dos căn bản để copy hal.dll vào Windowsroot\System32\ thôi.
.../> copy <name of CD>\i386\system32\hal.dll <Windowsroot>\system32
Ghi chú: <name of CD> là tên cái ổ CD có chứa đĩa cài Win.
<Windowsroot> là đường dẫn của thư mục windows.
|
|
|
CHo mình hỏi các bạn tí nhé!
Ở trên các bạn có nhắc đến một lệnh như NET VIEW, Ping và chương trình NETLOOK. Theo ý mình, lệnh net view chỉ hiện ra danh sách tên máy mà thôi, chứ ko hiện ra IP của các máy đó, muốn biết số IP thì phải ping tên máy một lần nữa à?
Nếu trong group có những máy có firewall thì ping có nhận được không. Mình thử dùng Netview và Ping trong mạng nội bộ của mình rồi nên có lẽ 2 lệnh này không đáp ứng được yêu cầu câu hỏi: "biết được tất cả IP được sử dụng trong mạng LAN".
Các chương trình scan mạng nội bộ thông dụng có lẽ cũng khó có thể đụng tới các máy có firewall.
Nếu mục đích biết số những số IP dùng rồi để chọn cho mình số IP thích hợp thì có lẽ vào internet protocol điền vào số mình đoán sau đó OK. Nếu số này dùng rồi máy sẽ thông báo trùng số IP.
Không biết các bạn có ý kiến có cách nào hay hơn ko?
|
|
|
TuanHung91 wrote:
Thằng bạn tui nó nói là có loại main mà cứ cắm RAM vào thì dung lượng RAM lại tăng gấp đôi??
Có loại đấy không các bác????? :?) :?)
TuanHung91 ơi ời....!!! câu hỏi này làm mình phải bối rối ghê, có loại mail đó sao bạn không hỏi bạn của bạn xem main đó là main gì? cắm Ram gì mà dung lượng lại tăng gấp đôi? Quả thật nếu có thế thì thật là thú vị đấy!
Dung lượng Ram theo ngu ý của Fal cũng là dung lượng vật lý phụ thuộc kích cỡ của "ma trận" các ô nhớ trên Ram mà thôi, làm sao mà nó tự động phình to ra được. Nếu được bạn đưa dẫn chứng Main cụ thể nhé.
Thân.
|
|
|
Chuyện là thế này: Fal vừa cho thằng em cái PC vẫn dùng lâu nay, giờ không có gì dùng ) Định tậu 1 con 2X dùng xem nó thế nào, sau này đỡ nâng cấp sớm, nhưng không có thời gian lên mạng tham khảo lắm. Trước đây Fal có vào VOZforum nhưng thời gian có trục trặc gì đó giờ không biết thay đổi domain thế nào. Bây giờ tham khảo ý kiến anh em vậy! Fal có 2 câu hỏi:
1. con Pentium D 820 (2.8Ghz) thế nào?
2. Mainboard chipset nào đi với nó thì được đây?
(Bro nào phân tích 1 ít về các dòng chipset khác nhau thì "nghìn lần cám ơn!!!", đặc biệt là từ i945 trở đi, tại Fal chưa xem mấy cái này)
Fal định chọn Intel tại thấy mấy con AMD có vẻ nhiều $$ quá, SV cả mà ko có nhiều $$ lắm đâu.
Xin cám ơn các Bro trước nhé!
|
|
|
Chào bạn Applerfect và girlbatcandoi!
Fal hồi xưa có đọc một ít về Ram và Rom xin mạo muội ý kiến thế này.
Cả Ram và Rom đều là bộ nhớ trong của máy tính. (Còn bộ nhớ ngoài bao gồm ổ cứng, ổ mềm, và các thiết bị lưu trữ khác..)
Rom là thiết bị dùng để ghi những cấu hình ban đầu của máy tính và những thông tin này không bị mất khi mất điện. Nếu CPU là trung tâm xử lý thì Ram có thể coi là không gian thông tin vậy. Hệ điều hành và những chương trình khác đều được load vào Ram, và những thông tin trên Ram sẽ mất đi khi mất điện
Hì nói vậy có lẽ bạn hiểu vì sao chúng tồn tại song song nhau rồi chứ? Bọn Tây nó làm hay nhỉ???!! ....
PS: Rom làm mờ ranh giới giữa phần cứng và phần mềm. KHông biết có đúng không, anh em bàn tí chơi!!!
|
|
|
Hic, ko phải chỉ mỗi ở Nhật Bản thôi đâu... Fal thấy có rất nhiều nơi người Việt mượn danh SV du học để sang làm ăn buôn bán.
-> bởi thế vào cửa khẩu hải quan thấy dân VN với cái Visa Lưu học sinh là lại hỏi han, giữ lại lâu lâu 1 chút, cũng tủi thân...
Hèm nhưng biết làm sao được bây giờ....
Chuyện xin visa của chantinh287 thì Fal chịu rồi ko biết được... Bữa nào phải gọi cho ông đại sứ của Nhật tại VN đã. Nếu ông ta đồng ý thì Fal sẽ báo lại sau nhé!!! hì hì
|
|
|
blue_wonder233 wrote:
Cài 1 chương trình vào máy,run nó thì chỉ thấy 1 màn hình đen ngòm xuất hiện trong 3 s,sau đó nó trả về màn hình desktop như cũ ><.cài lại win vẫn thế ><,lỗi như thế thường là do đâu.Mong các anh chỉ giáo :?
blue_wonder233 ơi, bạn nên nói rõ thêm 1 tí đi, chứ bạn hỏi thế này thì chẳng ai mà reply được đâu!
"Cài 1 chương trình vào máy" là sao?Một chương trình bất kỳ hay là chương trình cụ thể nào?
Bạn khắc phục bằng cách cài lại Win nhưng cũng không rõ là Win nào? Cài kiểu gì? Cấu hình máy ra sao?
Nói chung là một câu hỏi chung chung thế này thì ... pó tay!!! -))
|
|
|
chantinh287 wrote:
Em có thằng em trai, hiện giờ nó đang học bên Nhật bủn. Sắp tới nó muốn đón em sang đó để học. Vậy có anh chị nào trong diễn đàn thành thạo về vấn đề du học thì giúp em 1 chút được không??
- Thủ tục để thằng em em bảo lãnh em sang đấy học là như thế nào, bao gồm những gì???
- Hoặc có ai biết thông tin về vấn đề này thì chỉ giáo em 1 chút nha.
Em xin cảm ơn
Hì, cậu "không biết có ai giúp được không???" nhưng tớ thì biết có rất nhiều người giúp được cậu đấy!!!!
Cho tớ góp ý 1 tí nhé!
+ Thứ nhất cậu cần phải xem xem cậu có mong muốn được đi học nước ngoài ko. (Cậu mà không muốn thì thôi, khỏi xem tiếp làm gì ) ) Theo tớ học ở nước ngoài là một cơ hội quá tốt để biết được nhiều thứ đấy.
+ Thứ 2, khi đã quyết tâm rồi thì phải biết 1 ít về những khó khăn trong tương lai: Ngoại ngữ, môi trường học, rồi là xa bạn bè, NGƯỜI IÊU... :cry:
+ Vấn đề thủ tục: Nếu em cậu định bảo lãnh thì chắc cậu ta cũng biết thủ tục mà. Tớ không biết ở Nhựt Bổn thì thế nào, nhưng chỗ tớ thì trước hết cậu cần 1 cái giấy mời của trường Đại học nước sở tại (ở đây là Nhựt Bổn) sau đó đi làm hộ chiếu rồi lên Đại sứ quán Nhật xin Visa. Có 3 cái đó là cậu có thể qua cửa khẩu hải quan được rồi! Suýt quên, thêm $$$ để mua vé máy bay nữa!
Chúc cậu sẽ có 1 quyết định đúng đắn nhé!
"Nếu ước mơ của bạn đủ lớn, mọi chuyện khác chỉ là vặt vãnh!"
Thân!!!!!!
|
|
|
|
|
|
|