[ENCODING] Chuyển đổi qua lại giữa các loại mã (Unicode-UTF8-UTF7-ASCII...)
Chào !
Hôm nay mình sẽ hướng dẫn các bạn chuyển đổi các loại mã (Unicode-UTF8-UTF7-ASCII...)
Các bạn có thể hoàn toàn tạo được 1 tool giúp chuyển đổi các loại mã trong Văn bản ^^!
(Ví dụ bạn dùng MS Word đã lỡ dùng Unicode nhưng người ta yêu cầu phải dùng định dạng ASCII hết chẳng hạn ... )
OK. Bắt đầu nhé !
Ở đây mình sẽ ví dụ chuyển mã Unicode sang mã UTF8 :
1. Hãy "using System.Text" để sử dụng lớp Encoding
2. Chuyển dữ liệu về mảng byte :
OK Vậy là đã xong !
Hôm nay mình sẽ hướng dẫn các bạn chuyển đổi các loại mã (Unicode-UTF8-UTF7-ASCII...)
Các bạn có thể hoàn toàn tạo được 1 tool giúp chuyển đổi các loại mã trong Văn bản ^^!
(Ví dụ bạn dùng MS Word đã lỡ dùng Unicode nhưng người ta yêu cầu phải dùng định dạng ASCII hết chẳng hạn ... )
OK. Bắt đầu nhé !
Ở đây mình sẽ ví dụ chuyển mã Unicode sang mã UTF8 :
1. Hãy "using System.Text" để sử dụng lớp Encoding
2. Chuyển dữ liệu về mảng byte :
// Chuyển string szDuLieuUniCode về dạng mảng byte byte[] unicode = Encoding.Unicode.GetBytes(szDuLieuUniCode); // Cover byte unicode sang byte utf8 byte[] utf8 = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, unicode); // chuyển từ mảng byte utf8 về dạng string string szDuLieuUTF8 = Encoding.UTF8.GetString(utf8);
OK Vậy là đã xong !
[API] Ini - Ghi các setting cực tốt !
Với một phần mềm có chức năng tùy chỉnh thì việc lưu các setting là rất quan trọng.
Hôm nay mình xin hướng dẫn các bạn một trong các kiểu ghi/đọc các setting cực kì phổ biến -- Đọc/Ghi Ini
1. Tổng quan một file ini
1 file được ghi theo kiểu Ini sẽ có dạng sau đây :
Ví dụ mình muốn lưu cái "Tự động đăng nhập" cho phần mềm của mình thì File ini sẽ có dạng sau :
2. Thực hiện trong C#
2.1 . Đừng quên " using System.Runtime.InteropServices;" để có thể sử dụng các hàm API
2.2. Sử dụng DLL : kernel32
OK vậy là bạn có thể Đọc/Ghi dữ liệu từ file setting theo cách trên
Nếu chưa làm được hãy xem code dưới đây (Bạn chỉ cần sử dụng INI.READ và INI.WRITE thôi)
// Viết thêm 2 hàm mới cho dễ
3. Thực hành
Ví dụ : (Sử dụng class INI được xây dựng bên trên)
[TuDongDangNhap]
TaiKhoan=buiducduy111
KichHoat=1
OK. Nếu chưa hiểu bạn cứ comment ở dưới nhé!
Hôm nay mình xin hướng dẫn các bạn một trong các kiểu ghi/đọc các setting cực kì phổ biến -- Đọc/Ghi Ini
1. Tổng quan một file ini
1 file được ghi theo kiểu Ini sẽ có dạng sau đây :
[Section]
Key=Value
Ví dụ mình muốn lưu cái "Tự động đăng nhập" cho phần mềm của mình thì File ini sẽ có dạng sau :
[TuDongDangNhap]
KichHoat=1
TaiKhoan=buiducduy111
2. Thực hiện trong C#
2.1 . Đừng quên " using System.Runtime.InteropServices;" để có thể sử dụng các hàm API
2.2. Sử dụng DLL : kernel32
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
[DllImport("kernel32")]
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filepath);
OK vậy là bạn có thể Đọc/Ghi dữ liệu từ file setting theo cách trên
Nếu chưa làm được hãy xem code dưới đây (Bạn chỉ cần sử dụng INI.READ và INI.WRITE thôi)
public class INI
{
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
[DllImport("kernel32")]
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filepath);
// Viết thêm 2 hàm mới cho dễ
public static string READ(string szFile, string szSection, string szKey)
{
StringBuilder tmp = new StringBuilder(255);
long i = GetPrivateProfileString(szSection, szKey, "", tmp, 255, szFile);
return tmp.ToString();
}
public static void WRITE(string szFile, string szSection, string szKey, string szData)
{
WritePrivateProfileString(szSection, szKey, szData, szFile);
}
}
3. Thực hành
Ví dụ : (Sử dụng class INI được xây dựng bên trên)
INI.WRITE("Data.ini","TuDongDangNhap","TaiKhoan", "buiducduy");Kết quả trong Data.ini :
INI.WRITE("Data.ini","TuDongDangNhap","KichHoat", "1");
[TuDongDangNhap]
TaiKhoan=buiducduy111
KichHoat=1
string s = INI.READ("Data.ini","TuDongDangNhap","TaiKhoan");Kết quả "buiducduy";
MessageBox.Show(s);
OK. Nếu chưa hiểu bạn cứ comment ở dưới nhé!
[SOFTWARE DESIGN] Thiết kế phần mềm theo mô hình 3 lớp Layer
Hướng tới lập trình chuyên nghiệp (nói cho oai chứ mình gà lắm) - không chỉ về mặt code , thuật toán ... mà bạn cần phải thiết kế phần mềm sao cho dễ chỉnh sửa , cập nhật nhất (nhất là đối với code team và bạn đã định hướng phát triển phần mềm lâu dài)
Hôm nay mình xin giới thiệu một cách thiết kế khá phổ biết là "MÔ HÌNH 3 LỚP LAYER"
1. Giới thiệu tổng quan
Như tên của mô hình. Chúng ta sẽ thiết kế phần mềm theo 3 lớp sau :
- GUI Layer : chuyên xử lí về GUI (giao diện)
- Business Layer : chuyên xử lí về nghiệp vụ, thuật toán....
- Data Access Layer : đưa dữ liệu xuống cơ sở dữ liệu cũng như lấy dữ liệu từ cơ sở dữ liệu lên
Ngoài ra chúng ta dùng thêm 1 class là : Data Transfer Object (DTO) có chức năng là cầu nối giữa các Layer. (Ta cũng có thể dùng các parameter để truyền dữ liệu , tùy nhiên nhiều parameters quá thì nên dùng tên class này)
2. Các bước thiết kế phần mềm theo mô hình 3 lớp layer
Bây giờ chúng ta cùng nhau thiết kế một phần mềm đơn giản nhé ^^
Để đơn giản ở đây tôi không dùng hệ quản trị cơ sở dữ liệu mà ghi dữ liệu ra file "Data.txt" (Coi như nó là DataBase đi :D -- File này sẽ chỉ ghi được 1 tài khoản thôi nhưng đây là ví dụ mà -- các bạn có thể áp dụng vào các hệ quản trị CSDL giống như vậy)
- Thiết kế một GUI như sau :
GUI có 2 textbox : txtTaiKhoan và txtMatKhau và một button : btnDangKi
- Tạo các Folder vào các class như hình dưới đây :
(GUI Layer : frmRegister.cs | Business Layer : XuLi.cs | Data Access Layer : VanChuyenDuLieu.cs
và DTO.cs)
- OK Tiến hành code nhé :
** DTO.cs (Nơi đây chỉ chứa các biến vận chuyển) :
**VanChuyenDuLieu.cs (Nơi đây chỉ có chức năng đọc/ghi dữ liệu xuống CSDL)
Ở phương thức GhiDuLieu tôi sẽ truyền vào đối tượng DTO
** Và cuối cùng là Xử lí nút "Đăng kí ở GUI" như sau :
Hôm nay mình xin giới thiệu một cách thiết kế khá phổ biết là "MÔ HÌNH 3 LỚP LAYER"
1. Giới thiệu tổng quan
Như tên của mô hình. Chúng ta sẽ thiết kế phần mềm theo 3 lớp sau :
- GUI Layer : chuyên xử lí về GUI (giao diện)
- Business Layer : chuyên xử lí về nghiệp vụ, thuật toán....
- Data Access Layer : đưa dữ liệu xuống cơ sở dữ liệu cũng như lấy dữ liệu từ cơ sở dữ liệu lên
Ngoài ra chúng ta dùng thêm 1 class là : Data Transfer Object (DTO) có chức năng là cầu nối giữa các Layer. (Ta cũng có thể dùng các parameter để truyền dữ liệu , tùy nhiên nhiều parameters quá thì nên dùng tên class này)
2. Các bước thiết kế phần mềm theo mô hình 3 lớp layer
Bây giờ chúng ta cùng nhau thiết kế một phần mềm đơn giản nhé ^^
Để đơn giản ở đây tôi không dùng hệ quản trị cơ sở dữ liệu mà ghi dữ liệu ra file "Data.txt" (Coi như nó là DataBase đi :D -- File này sẽ chỉ ghi được 1 tài khoản thôi nhưng đây là ví dụ mà -- các bạn có thể áp dụng vào các hệ quản trị CSDL giống như vậy)
- Thiết kế một GUI như sau :
GUI có 2 textbox : txtTaiKhoan và txtMatKhau và một button : btnDangKi
- Tạo các Folder vào các class như hình dưới đây :
(GUI Layer : frmRegister.cs | Business Layer : XuLi.cs | Data Access Layer : VanChuyenDuLieu.cs
và DTO.cs)
- OK Tiến hành code nhé :
** DTO.cs (Nơi đây chỉ chứa các biến vận chuyển) :
namespace MOHINH3LOPLAYER
{
public class DTO
{
private string _TaiKhoan;
private string _MatKhau;
public string TaiKhoan
{
set {_TaiKhoan = value;}
get {return _TaiKhoan;}
}
public string MatKhau
{
set {_MatKhau = value;}
get {return _MatKhau;}
}
}
}
**VanChuyenDuLieu.cs (Nơi đây chỉ có chức năng đọc/ghi dữ liệu xuống CSDL)
Ở phương thức GhiDuLieu tôi sẽ truyền vào đối tượng DTO
namespace MOHINH3LOPLAYER.Data_Access_Layer** XuLi.cs (Nơi đây chỉ có chức năng xử lí thuật toán)
{
public class VanChuyenDuLieu
{
public static void GhiDuLieu(DTO doituong)
{
FileStream fs = new FileStream("Data.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.None);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(doituong.TaiKhoan);
sw.WriteLine(doituong.MatKhau);
sw.Flush();
sw.Close();
}
}
}
namespace MOHINH3LOPLAYER.Business_Layer}
{
public class XuLi
{
private static bool KiemTra(DTO doituong)
{
if (doituong.TaiKhoan != "" && doituong.MatKhau != "")
return true;
return false;
}
public static bool DangKi(DTO doituong)
{
if (!KiemTra(doituong))
return false;
MOHINH3LOPLAYER.Data_Access_Layer.VanChuyenDuLieu.GhiDuLieu(doituong);
return true;
}
}
** Và cuối cùng là Xử lí nút "Đăng kí ở GUI" như sau :
// Tạo đối tượng DTO
private void btnDangKI_Click(object sender, EventArgs e)
{
DTO doituong = new DTO();
doituong.TaiKhoan = this.txtTaiKhoan.Text;
doituong.MatKhau = this.txtMatKhau.Text;
if (MOHINH3LOPLAYER.Business_Layer.XuLi.DangKi(doituong))
{
MessageBox.Show("Đăng kí thành công");
}
else
{
MessageBox.Show("Đăng kí thất bại");
}
}
OK như vậy là xong ^^! Đơn giản đúng không :D
Code quay lui bằng C# tìm tổ hợp, chỉnh hợp chập k của n
thuvienwinform - Thuật toán trâu bò quen thuộc và khá hữu ích trong việc code. Để tìm tổ hợp đơn giản là tìm một dãy số thỏa mãn điều kiện sau:
- Các số đều khác nhau
- Số sau lớn hơn số trước
- Các bộ số không trùng lặp nhau
-...
Thuật toán quay lui với vòng lặp sẽ bắt đầu từ a[i-1] đề thỏa mãn điều kiện các số khác nhau và số sau lớn hơn số trước. Trong quá trình duyệt kết hợp đánh dấu phần tử đã sử dụng để không bị trùng (ở trong này mình dùng mảng dau)
Khi tìm đủ k phần tử cho mảng a thì xuất ra.
Về lí thuyết quay lui có thể tham khảo trong sách giải thuật và lập trình của Lê Minh Hoàng
Với code này chuyển thành tính chỉnh hợp cũng không có gỉ cả, chỉ cẩn thay vòng lặp thành thế này là OK
Các số trong bộ số sẽ không phải là từ a[i-1] nữa mà là từ 1
- Các số đều khác nhau
- Số sau lớn hơn số trước
- Các bộ số không trùng lặp nhau
-...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace QuayLuiTimToHop { class Program { #region Khai báo static int n, k; static int[] a, dau; #endregion #region THủ tục private static void Xuat(int i) { for (int j = 1; j <= k; j++) Console.Write(a[j] + " "); Console.WriteLine(); } private static void Duyet(int i) { if (i > k) Xuat(i); else { int j; for (j = a[i - 1]; j <= n; j++) { if (dau[j] == 0) { a[i] = j; dau[j] = 1; Duyet(i+1); dau[j] = 0; } } } } #endregion static void Main(string[] args) { #region Đầu vào Console.Write("Nhap va n: "); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Nhap va k: "); k = Convert.ToInt32(Console.ReadLine()); a = new int[n+1]; dau = new int[n+1]; for (int i = 0; i < n + 1; i++) dau[i] = 0; #endregion #region Xử lí Console.WriteLine("To hop chap " + k + " cua " + n + ": "); a[0] = 1; Duyet(1); #endregion Console.ReadKey(); } } }Dãy cần tìm là a
Thuật toán quay lui với vòng lặp sẽ bắt đầu từ a[i-1] đề thỏa mãn điều kiện các số khác nhau và số sau lớn hơn số trước. Trong quá trình duyệt kết hợp đánh dấu phần tử đã sử dụng để không bị trùng (ở trong này mình dùng mảng dau)
Khi tìm đủ k phần tử cho mảng a thì xuất ra.
Về lí thuyết quay lui có thể tham khảo trong sách giải thuật và lập trình của Lê Minh Hoàng
Với code này chuyển thành tính chỉnh hợp cũng không có gỉ cả, chỉ cẩn thay vòng lặp thành thế này là OK
Các số trong bộ số sẽ không phải là từ a[i-1] nữa mà là từ 1
for (j = 1; j <= n; j++) { if (dau[j] == 0) { a[i] = j; dau[j] = 1; Duyet(i+1); dau[j] = 0; } }
[API] Phát nhạc MP3
Như chúng ta đã biết thư viện "System.Media" chỉ cho phép chạy file âm thanh ".wav" nhiều chúng ta chạy file MP3 rất khó khăn (làm một chương trình phát nhac đơn giản chẳng hạn -- không dùng dll của Windows Media đâu nhé)
Hôm nay mình sẽ hướng dẫn các bạn sử dụng API để chạy file MP3 trong C#.
Các bước như sau :
1. Đừng quên "using System.Runtime.InteropServices;" để sử dụng API nhé.
2. Import Dll "winmm.dll"
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
Hàm API này không hẳn có chức năng chạy MP3 mà nó là 1 hàm cho phép thực hiện câu lệnh được Coder đưa vào qua 1 string là strCommad . như vậy parameters này là quan trọng nhất (và mình cũng không biết các param khác có chức năng gì -- thôi thì cứ null -- API thường vậy mà HIHI ^^)
3. Giới thiệu các Commad để chạy 1 file MP3
- Mở MP3 : "open "Đường dẫn tới file mp3" type mpegvideo alias MediaFile"
ví dụ : "open "E:\MUSIC\nhac.mp3" type mpegvideo alias MediaFile"
- Chạy MP3 vừa mở : "play MediaFile"
Có thể dùng "play MediaFile REPEAT" để phát đi phát lại file MP3 vừa mở
- Dừng MP3 : "close MediaFile"
Nếu chưa làm được hãy xem ví dụ này :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace MP3// Import Dll này vô
{
public partial class Form1 : Form
{
public bool isOpen = false;
public Form1()
{
InitializeComponent();
}
[DllImport("winmm.dll")]'
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
// BUTTON PLAY MP3
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "MP3 (*.mp3)|*.mp3";
if (op.ShowDialog() == DialogResult.OK)
{
string szFile = op.FileName;
MP3Open(szFile);
Mp3Play(false);
}
}
// BUTTON STOP MP3
private void button2_Click(object sender, EventArgs e)
{
Mp3Close();
}
// PHẦN XỬ LÍ ----------------------------------------------------------------------------------
public void MP3Open(string szFileName)
{
string szCommad = "open \"" + szFileName + "\" type mpegvideo alias MediaFile";
MessageBox.Show(szCommad);
mciSendString(szCommand, null, 0, IntPtr.Zero);
isOpen = true;
}
public void Mp3Close()
{
string szCommand = "close MediaFile";
mciSendString(szCommand, null, 0, IntPtr.Zero);
isOpen = false;
}
public void Mp3Play(bool isLoop)
{
if (isOpen)
{
string szCommand = "play MediaFile";
if (isLoop) szCommand += " REPEAT";
mciSendString(szCommand, null, 0, IntPtr.Zero);
}
}
}
}
[API] Kiểm tra kết nối Internet
Trong nhiều chương trình, chúng ta cần thao tác với Server qua Network , song nếu máy tính chưa kết nối Internet thì chương trình rất có thể bị "Treo" do cố gắng làm những công việc bạn code (Đơn giản như chương trình gửi mail - hãy thử ngắt kết nối Internet và chạy chương trình :D)
Hôm nay mình sẽ hướng dẫn các bạn làm sao để kiểm tra máy tính có đang kết nối Internet !
1. Nhớ "using System.Runtime.InteropServices;" để có thể sử dụng API
2. Import DLL "wininet.dll"
Ở đây hàm này sẽ trả về true nếu có kết nối internet và false nếu không ^^!
* Nếu các bạn chưa làm được có thể xem ví dụ dưới đây
Hôm nay mình sẽ hướng dẫn các bạn làm sao để kiểm tra máy tính có đang kết nối Internet !
1. Nhớ "using System.Runtime.InteropServices;" để có thể sử dụng API
2. Import DLL "wininet.dll"
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
Ở đây hàm này sẽ trả về true nếu có kết nối internet và false nếu không ^^!
* Nếu các bạn chưa làm được có thể xem ví dụ dưới đây
public class INTERNET
{
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
public static bool ISINTERNETCONNECTED()
{
int des;
if (InternetGetConnectedState(out des, 0) == true)
return true;
return false; }
}
NVNhan's Blog đăng loạt bài giới thiệu và hướng dẫn từng bước xây dựng một website bằng ASP MVC
thuvienwinform - Ngôn ngữ C# ngoài lập trình cho winform còn lập trình được cho cả webform (tức các trang web). Được phát triển bởi Microsoft, hiện nay các trang web viết bằng ASP MVC ngày càng nhiều. Công nghệ MVC mang lại cho coder cách tổ chức code khoa học hơn. Hiện nay blog NVNhan đang đăng các bài viết hết sức cơ bản dành cho các bạn mới làm quen với ASP, ASPMVC có một cách tiếp cận nhanh nhất với việc lập trình web. Mời các bạn đón đọc tại:
hoặc
Giao diện NVNhan's Blog
Với tiêu chí ngắn gọn, xúc tích, đơn giản và dễ hiểu. Các bài viết trên blog sẽ trang bị cho bản các kiến thức hết sức cơn bản về lập trình web, từ lúc bắt đầu tạo project đến lúc hoàn thành ra sản phẩm.
Kính mời các bạn đón đọc!
Code gửi thư bằng gmail
thuvienwinform - Ứng dụng của nó khá nhiều ví dụ như báo lỗi sản phẩm, liên hệ tác giả, lấy key,...Trong code mình dùng máy chủ smtp của google. Các bạn có thể dùng các máy chủ khác hỗ trợ smtp như OutLook nhưng khi đó địa chỉ máy chủ và cổng sẽ khác, chỉnh lại là OK. Nếu code không hoạt động thì bạn tham khảo cách cài đặt tài khoản Gmail để smtp hoạt động ở bài: http://thuvienwinform.blogspot.com/2014/03/tfs-thiet-lap-email-thong-bao-alert-cho-team-foundation-server-bang-gmail-hoac-live-mail-giup-cap-nhat-cong-viec-kip-thoi.html
Project demo: https://www.dropbox.com/s/ey7fksmiddqjpkm/thuvienwinform-GuiThu.rar (26KB)
Sử dụng 2 thư viện:
+ using System.Net.Mail;
+ using System.Net;
để thực hiện công việc này
Code:
private void GuiThu(string diachigui, string matkhau, string diachinhan, string tieude, string noidung) {
//using System.Net.Mail; //using System.Net; #region Tạo nội dung thư MailMessage mail = new MailMessage(diachigui, diachinhan, tieude, noidung); #endregion #region Cấu hình smtp SmtpClient smtp = new SmtpClient() { //Máy chủ smtp Host = "smtp.gmail.com", //Cổng gửi thư Port = 587, //Tài khoản Gmail Credentials = new NetworkCredential(diachigui, matkhau), EnableSsl = true }; #endregion #region Gửi thư smtp.Send(mail); #endregion }
[TFS]Xóa project, work Item
thuvienwinform - Thực sự thì theo phương pháp WeareHouse thì không xóa được project và Work Item trong Tfs nhưng thực tế thì ta có thể thực hiện công việc này như sau:
1. Xóa project
- Có thể Admin sẽ xóa các User khỏi project đó đi -> trên máy người khác sẽ không thấy nữa (thực tế là nó bị ẩn). Nên dùng cách này vì còn có thể khôi phục được
- Hoặc xóa trong Tfs Admin Console (không khôi phục được)
- Hoặc dùng comand sau (phải cài Visual Studio) (phải gõ vào notepad xong copy, paste vào cmd):
cd C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
TfsDeleteProject /force /collection:http://Ohia-PC:8080/tfs/DefaultCollection/ "Xóa anh đi 2"
- Với
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE: là được dẫn đến thư mục IDE của Visual Studio
+ http://Ohia-PC:8080/tfs/DefaultCollection/: là đường dẫn đến Collection
+ Xóa anh đi 2 là tên project cần xóa.
2. Xóa WorkItem:
- Command:
witadmin destroywi /collection:http://Ohia-PC:8080/tfs/DefaultCollection/ /id:id1, id2, id3
- Trong đó:
+ http://Ohia-PC:8080/tfs/DefaultCollection/: là đường dẫn đến collection
+ id1, id2, id3: là id các workitem cần xóa
- Hoặc có thể dùng ứng dụng của TEK xóa trực tiếp ngay trong Visual Studio. Bạn nào cần liên hệ mình gửi cho :)
My dictionary - tự xây dựng từ điển cuả riêng bạn!
thuvienwinform - Cảm ơn bạn Bùi Đức Duy đã mang đến MY DICTIONARY. Một phần mềm giúp người dùng tự xây dựng 1 cuốn từ điển cho riêng mình. Phần mềm sẽ tự động thống kê và đánh giá vốn từ của bạn thông qua tổng số từ bạn đưa vào từ điển.
Link (Giải nén và sử dụng) (1.89MB) :
https://www.mediafire.com/?qen53rkal9wx8w3
Chức năng chính :
+ Thêm | Sửa | Xóa từ trong từ điển của bạn 1 cách dễ dàng
+ Quản lí theo tài khoản (Hỗ trợ cho nhiều người dùng 1 máy tính ... - Thống kê số từ và đánh giá)
+ Hỗ trợ đổi mật khẩu | Tên | Hình đại diện cho người dùng
+ Nâng câp lên phiên bản PRO :
--- Liên kết tài khoản trong cùng 1 máy tính (Đồng bộ hóa từ điển vào nhau)
--- Chia sẻ tài khoản sang máy tính khác
Đặc biệt phần mềm có dung lượng cực nhỏ. Chỉ ~4MB.
Chạy trên mọi HĐH
Hỗ trợ tốt đồ họa cho Windows 7 trở lên !
Ở trong chương trình này có 2 công nghệ khá hay là gửi thư và phát âm mình sẽ giới thiệu trong vài bài tiếp theo. Các bạn tải về và cho đánh giá nha