Latest Entries »

Có lẽ dân làm IT thì không còn xa lạ với việc…đọc ebook. Mình hay gặp 1 số bạn hay than phiền là đọc ebook mỏi mắt và lại thường là tiếng Anh nên không hiểu do đó không đọc ebook được ^^!. Nếu các bạn đang trên con đường phát triển CNTT mà bị tình trạng như thế thì cũng hơi lo ngại cho bạn, bởi lẽ nếu bạn không đọc được ebook thì bạn khó mà “đứng” trong ngành với tốc độ và kỹ thuật “khắc nghiệt” như ngành này.

Mình xưa giờ là 1 tín đồ trung thành của ebook, chỉ khi nào gặp 1 cuốn sách cực kỳ hay thì mới phải in ra để nghiền ngẫm, chứ in hết ra có nước đầy nhà. Hồi trước cũng có làm 1 site “sinh viên phục vụ sinh viên”, cung cấp ebook cho người Việt Nam nhưng mình đã đánh giá sai lầm thì trường ebook ở Việt Nam nên dự án website đó đã thất bại ^^ với lại hồi đó sinh viên nên cũng không có gì để theo đuổi ngoài việc mua cái domain :D .

Mình cũng hay lang thang trên mấy diễn đàn và thấy hầu hết các câu hỏi liên quan đến IT đều nằm trong các cuốn sách cực kỳ căn bản, nhưng điều đáng buồn là những câu hỏi đó cứ lặp đi lặp lại và theo chu kỳ thì nó sẽ còn tiếp diễn :D . Thay vì ngồi chờ người ta trả lời sao không kiếm đại cuốn sách nào cùng chủ đề, lướt qua 1 lần mục lục hoặc index để tìm giải pháp hoặc google cho nhanh.

Bài viết này chẳng phải phê phán các bạn không chịu đọc ebook hay ý gì mà chỉ là lời khuyên cho những bạn nào hiện chưa coi ebook là 1 vũ khí đắc lực trong kho vũ khí kiếm tiền của mình. Bài viết này mình sẽ giới thiệu tới các bạn 7 nhà xuất bản sách nổi tiếng trong lĩnh vực CNTT mà cụ thể là ngành phát triển web, để nếu không có thời gian thì cũng nên đọc những sách của nhà xuất bản này trước vì cách viết sách và trình bày rất dễ hiểu và đọc tiếp thu nhiều hơn. Sách của các nhà xuất bản này khá dễ để nhận diện, hầu như nhìn cái bìa sách là biết của nhà xuất bản nào liền.

7 nhà xuất bản mình muốn đề cập tới trong bài viết này là: O’Reilly, For Dummies, Wrox, Apress, PACKT Publishing, ManningAddison Wesley.

1.O’Reilly


– Các sách của O’reilly khá dễ nhận diện. Thường với 2 tông màu chủ đạo là đen và trắng và 1 màu sắc khác như xanh, đỏ, cam…và mỗi cuốn sách thường có 1 hình minh họa (dạo này thấy toàn động vật ^^). Sách của O’Reilly tương đối dễ đọc và thường không dài. Bố cục sách thì ok và cách dùng từ cũng đơn giản nên không gây khó khăn cho anh em ta nhiều khi đọc hiểu tiếng anh.

2.For Dummies


– Sách của nhà xuất bản này rất dễ biết. Với tông màu chủ đạo là vàng và đen, ngoài bìa thì có hình 1 thằng đeo kính nhìn rất là..dummy. Sách thuộc nhà xuất bản này cũng dễ đọc, vì thể loại khá phong phú (hầu hết món nào cũng có: tin học, cuộc sống, kinh doanh….) và dàn trải nên các sách không chuyên sâu lắm. Tuy nhiên, bố cục rất dễ đọc, sử dụng tiếng anh đơn giản, thậm chí còn dễ hơn O’Reilly và cách tóm tắt cũng như hiển thị các ý chính khiến sách này rất dễ đón nhận.

3.Wrox


– Sách của Wrox khá dễ nhận ra, đó là một màu đỏ nằm ở nữa dưới cuốn sách và tựa đề có màu vàng. Phần trên thì in hình trắng đen của các tác giả.

– Sách của Wrox thuộc dạng Intermediate nên nếu bạn nào ở trình độ căn bản đọc sẽ khá phức tạp. Tuy nhiên, những sách của NXB này tập trung chủ yếu vào mảng Programmer (Programmer to Programmer) nên nó hầu hết các đầu sách về các công nghệ mới. Cách dùng từ thuộc dạng hơi khó hiểu, tuy nhiên nếu đọc quen thì sách của wrox đọc rất có giá trị vì tính thực tiễn của nó.

4.Apress


– Sách của Apress thì có 2 màu chủ đạo là đen và vàng nên cũng khá dễ nhận diện. Tiêu đề màu vàng trên nền đen kèm với 1 biểu tượng hoa văn bên góc trên bên phải của sách là 1 điểm độc đáo của bìa sách này.

– Mặc dù ra đời gần đây, nhưng các đầu sách của Apress cũng thuộc dạng nắm bắt kịp các công nghệ lập trình mới nên sách của Apress đọc cũng khá hay. Các sách của Apress thiên về Web Developer hơn các công nghệ khác. Nếu so về độ phức tạp thì dễ hơn của Wrox một chút và thường ít có sách nào có cấp độ Intermediate. Sách của Apress hầu hết là sách hay nên bạn cố gắng đừng bỏ qua cuốn nào nhé (đọc sách liên quan đến ngành mình thôi nha, nếu rảnh rỗi đọc hết thì quá tài ^^). Lối hành văn cũng không phức tạp lắm nên sách cũng dễ hiểu.

5.PACKT Publishing


– Sách của PACKT Publishing hao hao với sách của apress, bìa sách sử dụng 2 màu đen và cam làm chủ đạo và tựa đề là màu trắng trên nền đen. Nữa trên của cuốn sách thường là 1 hình gì đó mô tả về cuộc sống, tự nhiên…
– Về cách trình bày và sử dụng từ thì có thể nói nó cũng ngang tầm với Apress, sách trình bày khá tốt và số đầu sách cũng khá nhiều chủ đề trong IT, không như Apress thường tập trung vào đối tượng Web Developer.

6.Manning


– Sách của Manning rất dễ nhận diện đó là trên bìa sách sẽ có 1 dải màu chạy bên trái và có hình vẽ minh họa 1 nhân vật lịch sử nào đó. Kèm với dòng chữ “in action” trong tiêu đề là điểm nhận dạng của sách này.
– Sách của Manning viết cũng thuộc dạng khó và sách chủ yếu tập trung cho đối tượng Programmer nên đọc khá là khó hiểu. Tuy nhiên các sách của Manning viết khá hay về độ sâu và có nhiều kiến thức mới cũng như những đầu sách lạ. Đọc dạng sách này tiếng anh lên cũng khá lắm ^^.

7.Addison Wesley


– Sách của Addison Wesley thường không có một đặc điểm nhận dạng chung ngoài cái logo là 3 hình tam giác. Sách của Addison thiên về Programming, Network system nên các sách cũng khó đọc và cách dùng từ cũng thuộc dạng “xương”.
– Tuy nhiên, sách của Addison Wesley được mình liệt vào dạng sách quý hiếm vì hầu hết sách của NXB này đều là sách chuyên sâu và hay, đồng thời với các kiến thức mở rộng khá phong phú. Sách của NXB này thường khá dày, độ khoảng >600 trang / cuốn.
—————
Trên đây mình đã giới thiệu với các bạn 7 nhà xuất bản sách phục vụ cho dân IT mà nếu đã làm IT thì chắc hẳn đã từng 1 lần đọc sách của họ. Ngoài các nhà xuất bản này ra, còn rất nhiều nhà xuất bản mà có những sách rất hay, tuy nhiên những sách đó thuộc dạng hàn lâm nên cũng hơi bị khó đọc. Mặc dù nói như vậy, nhưng nếu đã thích đọc thì sách của của ai cũng đọc tuốt, cái gì cũng đọc, đâu nhất thiết là đọc sách IT đúng không :D !
Hãy tập thói quen đọc sách mỗi ngày nhé các bạn!

Nguồn http://bloghoctap.com

Advertisements

eBook [LaTeX]

LaTeX một cách soạn thảo văn bản hoàn toàn mới so với những người đã quen sử dụng word trong việc tạo lập văn bản. Nhưng một khi đã thành thạo, LaTeX sẽ không là gì đối với bạn. Một điểm mình rất khoái ở LaTeX là việc xuất các công thức toán học rất mịn, đẹp hơn MathType trong Word gấp mấy chục lần :D.
Đây là 2 quyển sách về LaTeX mình sưu tầm được gởi đến mọi người cùng tham khảo:https://i0.wp.com/docs.4share.vn/Resources/Images/1/21205.png

Download

https://i0.wp.com/upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Wikibooks-logo-en.svg/400px-Wikibooks-logo-en.svg.png

Download WikiBook

Chào mừng các bạn đến với Website của mario!
Tên thật của mình là Nguyễn Hữu Thiện, sinh năm 1993, chòm sao Kim Ngưu.
Hiện đang học năm 1 tại trường ĐH Khoa Học Tự Nhiên tp.HCM – ĐHQGTPHCM, ngành Công Nghệ Thông Tin.
mario luôn mong muốn chia sẽ kiến thức, kinh nghiệm, tài liệu, ebook đến tất cả các bạn cùng ngành.
Mong các bạn đóng góp ý kiến để website ngày càng hoàn thiện hơn. Xin cám ơn!
Liên lạc với mình qua email: 1112407.fit@gmail.com

OpenCalc là công cụ thay thế tuyệt vời cho bảng tính Excel khi bạn sử dụng các HĐH nguồn mở. Với cấu trúc các hàm, chức năng cũng như giao diện khá gần với Excel giúp người dùng dễ dàng tiếp cận với OpenCalc. Tuy nhiên OpenCalc vẫn còn phải cải tiến hơn nữa để có được những sức mạnh mà Excel đang có. Đây là quyển eBook hướng dẫn sơ lược về OpenCalc cũng như các nhóm hàm của nó, mong sẽ giúp ích cho mọi người!

Beginning OpenOffice Calc 2011 By Cool Release

Download

Vừa qua nhóm M3T đã thực hiện cuộc khảo sát với các sinh viên trong khuôn viên trường ĐH Khoa Học Tự Nhiên về đề tài “Hình thức giải trí trong sinh viên”. Ban đầu, tưởng chừng đây là sẽ là một công việc vô cùng khó khăn đối M3T nhưng khi bắt tay vào làm thì mọi thứ hoàn toàn khác. Từ việc thiết kế Form, đi dạo xin ý kiến đến việc thống kê và chuyển thành định dạng TeX là cả một quá trình thú vị và đầy thử thách chong gai. Qua lần khảo sát này, các thành viên nhóm M3T đã mạnh dạn hơn, có được nhiều bạn hơn và 1 điều quan trọng là đã tiếp cận được công cụ soạn thảo văn bản LaTeX. Đây là một công cụ mạnh mẽ hỗ trợ để viết trong các bài báo cáo khoa học, viết sách… Soạn thảo với LaTex đòi hỏi bạn phải cấu trúc hóa văn bản mà mình sắp gõ cộng với vài thứ linh tinh( thiếu các thư viện trong LaTeX, cú pháp, …) làm cho chúng ta có thể lớ nhớ trong những lần soạn thảo đầu tiên. Tuy nhiên nếu sử quen dần thì bạn sẽ cảm thấy LaTeX là một điều gì đó thật thú vị. Các file Tex lần này được M3T edit và Compile trên chương trình Mixtex 2.9. Đây là một phần mềm nguồn mở và các bạn có thể vào trang http://miktex.org/2.9/setup để tải về.
Sau đây là một số hình ảnh của buổi khảo sát:

Và đây là “sản phẩm thu hoạch” được ở lần này:

Mẫu khảo sát (PDF+Tex file): Download

Bản báo cáo (PDF+Tex file)  : Download

Vì đây là lần đầu nhóm M3T thực hiện công việc khảo sát cũng như làm quen với LaTex nên có gì thiếu sót mong thầy và các bạn góp ý để nhóm có thể hoàn thiện hơn trong những lần sau. Rất cảm ơn mọi người :)!

Đây là chiếc máy tính trong mơ của mình, với cấu hình toàn những “linh kiện” cao cấp. Máy được ráp chủ yếu cho mục đích đồ họa và chơi games, hihi!!!

 

[Hình ảnh chỉ mang tính chất minh họa]

Hy vọng một ngày nào đó mình sẽ có đủ khả năng tậu 1 cái PC như thế này về!!! 😀

Đây là file excel chứa thông tin về các linh kiện cũng như giá thành của từng linh kiện :)! mời bạn tham khảo

Download file Excel

[Problem]

Bài 1: Cho số tự nhiên A. Hãy tìm số tự nhiên N nhỏ nhất sao cho N lũy thừa N (nhân N cho chính nó N lần) chia hết cho A. Hãy viết chương trình tìm số N đó và xuất ra màn hình. Trong đó A có giá trị: 1 ≤ A ≤ 10^9.
Ví dụ:
Số nhập vào là A          Số xuất ra là N
8                                       4
13                                     13

[Solution]

Lần đầu tiên nhìn vào bài toán, nhiều bạn có thể tròn mắt nói rằng: số gì mà lớn vậy kiểu nào chứa nổi trời? Đúng thật, nếu nhìn ban đầu thì có lẽ chúng ta phải bó tay trước bài toán này. Nhưng nếu biết khóe léo vận dụng vài kiến thức của số học + vài nhận xét thì bạn có thể giải bài toán một cách nhẹ nhàng.
Trước hết quan sát trằng để N^N chia hết cho A, thì N phải chia hết cho các ước nguyên tố của A.
Mặt khác, nếu viết:
A= pr[1]^e[1]  *  pr[2]^e[2]  *  …  *  pr[k]^e[k];
Như vậy, với mỗi pr[.] cần xuất hiện ít nhất một lần trong N, nghĩa là N= pr[1]^t1 * pr[2]^t2 * … * pr[k]^tk, với ti>=1

Bước 1: Phân tích A ra tích các thừa số nguyên tố và số mũ của nó. Việc này có thể thực hiện nhanh chóng bằng sàng Eratosthenes, lưu ý các bạn không nên cài 1 hàm kiểm tra số nguyên tố và kiểm tra từng số nguyên tố từ 2 tới round(sqrt(A)) như vậy sẽ rất mất thời gian!

Bước 2: Ta xét các trường hợp cụ thể sau:
Trường Hợp 1 – A chỉ có 1 ước số nguyên tố:
Lúc này A=pr[1]^e[1], cần tìm N= pr[1]^x;
x sẽ chạy giá trị từ 1 tới ceil(e[1] / pr[1]) Cho đến khi x*pr[1]^x >= e[1] thì dừng, Lúc này N= pr[1]^x;

Trường Hợp 2 – A chỉ có 2 ước số nguyên tố:
Ta dùng 2 vòng lặp for lồng nhau để tìm ra N

kq = n;

for (int t1 = 1, temp1 = pr[1]; t1 <= e[1]; ++t1, temp1 *= pr[1])

for (int t2 = 1, temp = temp1 * pr[2]; t2 <= e[2]; ++t2, temp *= pr[2])

if (temp * t1 >= e[1] && temp * t2 >= e[2])

if (temp < kq) kq = temp;

Trường Hợp 3 – A có từ 3 ước nguyên tố trở lên:
Ta có 1 số nhận xét sau:
Do A <= 10^9 < 2^30 do đó khi N có 3 ước nguyên tố trở lên N >= pr[1]*pr[2]*pr[3] >= 2*3*5=30
mà với giới hạn đó thì số mũ tối đa của một cơ số (cụ thể là 2) không thể vượt quả 30. Vì vậy trong trường hợp này, giả dụ A có k ước nguyên tố N = pr[1] * pr[2] * … * pr[k].
Đến đây bài toán đã được giải quyết xong! 🙂
Bonus: Nói vậy thôi, bài này chủ yếu là dựa vào Google + chịu khó đọc hiểu bài giải có sẵn là có thể làm được, hihi :D!

[Code]

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

#define lim 50000

bool
a[lim];
int
pr[lim/2], e[lim/2];

void SanNgTo(void)
{

memset(a,true,sizeof(a));

int i,j;
i = 1;
a[1]=false;

while (i*i<=lim){
while
(!a[i]) i++;

j=2;
while
(j*i<=lim){

a[j*i]=false;
j++;
}

i++;
}
}

void PhanTich(int n, int& k)
{

int
i=1;

k=0;
while
(n!=1){
while
(!a[i]) i++;

if (n%i==0){
k++;
pr[k]=i;

e[k]=0;
}

while
(n%i==0){

e[k]++;
n/=i;
}

i++;
}
}

int
Solve(int k, int n)
{

int kq;
switch
(k){
case
1:

int t;
t=e[1]/pr[1];

if (e[1]%pr[1]!=0) t++;

kq=1;
for
(int i=1; i<=t; i++)
{

kq*=pr[1];

if (kq*i>=e[1]) break;
}

break
;

case 2:
int
temp1, temp;
kq = n;

for (int t1 = 1, temp1 = pr[1]; t1 <= e[1]; ++t1, temp1 *= pr[1])

for (int t2 = 1, temp = temp1 * pr[2]; t2 <= e[2]; ++t2, temp *= pr[2])

if (temp * t1 >= e[1] && temp * t2 >= e[2])
if
(temp < kq) kq = temp;
break
;

default:
kq=1;
for
(int i=1;i<=k;i++)
kq*=pr[i];
}

return kq;
}

int
main(void)
{

SanNgTo();

int n, a, k=1;
printf(“Nhap A= “);

scanf(“%d”,&a);
PhanTich(a,k);
n = Solve(k,a);

printf(“So N nho nhat can tim: %d\n”,n);
printf(“va %d^%d chia het cho %d\n”,n,n,a);

getch();
}

Download Source Code (*.CPP)

Thuật toán sàng nguyên tố Eratosthenes là một công cụ mạnh mẽ để giải quyết những bài toán đòi hỏi phải kiểm tra số nguyên tố nhiều lần. Ban đầu, nhà toán học Eratosthenes sau khi tìm ra thuật toán, đã lấy lá cọ và ghi tất cả các số từ 2 cho đến 100. Ông đã chọc thủng các hợp số và giữ nguyên các số nguyên tố.

Thuật toán:
Dùng 1 mảng bool có N phần tử, với giá trị khởi tạo cho các phần tử của mảng đều là True, với ý nghĩa các số từ 1..N đều là số nguyên tố.
Gán a[1]=false (1 không phải là số nguyên tố);
B1: i++ cho đến khi a[i]= true;
B2: Điền các phần tử của mảng a có chỉ số là 2*i, 3*i… là false (với ý nghĩa các số này ko phải là số nguyên tố)
B3:Nếu i*i>=N thoát chương trình, nếu không quay lại bước 1.

pseudocode:

Input: an integer n > 1

Let A be an array of Boolean values, indexed by integers 2 to n,
initially all set to true.

for i = 2, 3, 4, ..., while in/2:
  if A[i] is true:
    for j = 2i, 3i, 4i, ..., while jn:
      A[j] = false

Now all i such that A[i] is true are prime.

Ngoài ra bạn có thê tham khảo công cụ mạnh hơn (nhưng cài đặt cũng phức tạp hơn) đó là sàng Atkin.

[Problem]

Xem công thức tính sau đây (đề thi tuyển sinh cao học ngành KHMT, năm 2011):

Trong đó Max, Min lần lượt là giá trị lớn nhất, nhỏ nhất của n số thực (được nhập vào từ thiết bị nhập chuẩn) a0, a1, …, an-1. Chỉ dùng duy nhất 1 vòng lặp (for hoặc while), đề xuất cách thức để nhập n số thực như trên và tính giá trị  của biểu thức Aver, xuất kết quả  tính ra thiết bị  xuất chuẩn. Viết chương trình để minh họa đề xuất đó.
Lưu ý: Phần này sinh viên chưa học về mảng, như vậy vấn đề chính của bài toán này là không thể dùng mảng để lưu giá trị của n số thực nói trên. Như vậy phải đề xuất một giải pháp “thông minh” để nhập và tính toán mà không đưa trước các số thực này vào mảng.

[Solution]

Nếu như không có yêu cầu cuối cùng (chỉ dùng 1 vòng lặp và không dùng mảng) thì bài toán có lẽ đã đơn giản hơn nhiều. Ý tưởng để giải bài toán này là xét xem liệu biểu thức Aver có thể được tính sau khi đã kết thúc quá trình nhập hay không?
Đầu tiên ta xét tổng:

Nếu ta khai triển (ai-Max)^2 bằng hẳng đẳng thức đáng nhớ học hồi cấp II 😛 ta được: ai^2 – 2*ai*Max + Max^2. Lúc này ta sẽ có:

  1. a0^2 + a1^2 + a2^2+  … + a(n-1)^2
  2. n*Max^2
  3. -2*Max*Sum,
    với  Sum  = a0 + a1 + a2 + … + a(n-1) <- Cái này có thể tính dễ dàng

Như vậy nhìn cái tổng có vẻ rắc rối trên bằng với: (1) + (2) + (3).
Đến đây mọi chuyện đã có vẻ khá rõ ràng. Vừa nhập vừa tính Sum và cập nhật Max, Min. Kết thúc quá trình nhập kết tất cả lại theo cách tính được nêu ra ở trên (!) 🙂

[Code]

#include <stdio.h>
#include <conio.h>
main()
{

float min, max, Aver, sum, sumbp, a;

int n;
printf(“Nhap n = “);
scanf(“%d”,&n);

printf(“Nhap a0 = “);
scanf(“%f”,&a);
max = a;

min = a;
sum = a;
sumbp = a*a;

for (int i=1; i<=n1; i++){

printf(“Nhap a%d = “,i);
scanf(“%f”,&a);
if
(min>a) min=a;

if (max<a) max=a;
sum+=a;

sumbp+=a*a;
}

Aver= n*max*max + n*min*min + 2*sumbp 2*max*sum 2*min*sum + (float)n/2*(maxmin)*(maxmin);

printf(“Aver = %f\n”,Aver);
getch();
}


Download Source Code (*.CPP)

#include <stdio.h>

main()

{

        printf(“Hello WordPress :)!“);

}