[TFS] Quy định về quản lí code
thuvienwinform - Có thể sau một thời gian sử dụng chúng ta sẽ gặp những lỗi gây ức chế từ việc quản lí code của TFS@! Cụ thể là hiện tượng conflict, mất file, ...Để hạn chế tình trạng này mình đề nghị như sau:
- Về lỗi thiếu file. Ta sẽ thử cho một bạn up from lên rồi một bạn get về xem có thực sự là trên server có mà lại không get được không? Nếu thực sự như vậy thì TFS quá tệ@!
- Về lỗi thiếu file. Ta sẽ thử cho một bạn up from lên rồi một bạn get về xem có thực sự là trên server có mà lại không get được không? Nếu thực sự như vậy thì TFS quá tệ@!
- Với form của mình không được phép conflict (kể cả check-in và get last version) vì chỉ mình mình sửa form đó thôi
- Để hạn chế conflict:
+ Chỉ check-in form của mình.
+ Khi conflict ở form không phải của mình thì cứ take server version thôi.
+ Khi conflict ở form của mình thì phải xem lại ai đã check-in form đó lên vào thực hiện ghép code lại cẩn thận (Merge) rồi hẵng check-in
+ Với các file dùng chung (DB, .sln, .csproj,...) thì dành cho bạn nào làm frmMain, sau khi chỉnh lại cho các form gắn kết đc với nhau thì sẽ check-in các file này (check-in cả project - không check-in solution) (lúc này thường là lỗi DB và thiếu Reference, còn lỗi trong form thì phải đề nghị sửa lại). Và đó sẽ là bản final cho lần sửa đó.
- Với một số form dùng chung nhau, ví dụ như dùng form hiển thị file word thì thường gặp lỗi về DB và đầu vào cho form. Để hạn chế thì phải thống nhất code đầu vào và DB trên 2 máy mới thực hiện được.
- Conflict là gì?
Conflict xẩy ra khi 2 hay nhiều người cùng sửa 1 file. Ví dụ thế này:
Người 1: lấy phiên bản 1 về -> sửa -> tải lên (Check-in) -> thành bản 2
Người 2: lấy phiên bản 1 về -> sửa -> tải lên (Check-in) -> conflict.
Khi xẩy ra conflict có 3 lựa chọn sau:
+ Merge: ghép code file của người 2 (file local) với file trên server (phiên bản 2 của người 1 up lên). Khi ghép thì ta sẽ chọn những phần nào khác nhau để lấy về. Chọn những phần khác nhau giữa 2 phiên bản sẽ có phiên bản đầy đủ của file này. Sau khi ghép xong thì có thể check-in bình thường.
+ Take Server Version: tức là sẽ lấy phiên bản trên server (phiên bản 2) về -> mất hết những gì đã sửa
+ Keep Local Version: tức là sẽ giữ nguyên bản trên máy. Không lấy bản 2 kia về. Khi này trên server là phiên bản 2. Trên máy có thể là phiên bản 3 (nhưng chưa check-in) -> rất kho cho sau này.
Phương pháp lựa chọn tối ưu vẫn là ghép code. Để hạn chế xẩy ra conflict khi check-in thì không để nhiều người cùng sửa 1 file.
Chúc chúng ta có những dự án thật thành công :)
- Conflict là gì?
Conflict xẩy ra khi 2 hay nhiều người cùng sửa 1 file. Ví dụ thế này:
Người 1: lấy phiên bản 1 về -> sửa -> tải lên (Check-in) -> thành bản 2
Người 2: lấy phiên bản 1 về -> sửa -> tải lên (Check-in) -> conflict.
Khi xẩy ra conflict có 3 lựa chọn sau:
+ Merge: ghép code file của người 2 (file local) với file trên server (phiên bản 2 của người 1 up lên). Khi ghép thì ta sẽ chọn những phần nào khác nhau để lấy về. Chọn những phần khác nhau giữa 2 phiên bản sẽ có phiên bản đầy đủ của file này. Sau khi ghép xong thì có thể check-in bình thường.
+ Take Server Version: tức là sẽ lấy phiên bản trên server (phiên bản 2) về -> mất hết những gì đã sửa
+ Keep Local Version: tức là sẽ giữ nguyên bản trên máy. Không lấy bản 2 kia về. Khi này trên server là phiên bản 2. Trên máy có thể là phiên bản 3 (nhưng chưa check-in) -> rất kho cho sau này.
Phương pháp lựa chọn tối ưu vẫn là ghép code. Để hạn chế xẩy ra conflict khi check-in thì không để nhiều người cùng sửa 1 file.
Chúc chúng ta có những dự án thật thành công :)
[TFS] Chuyển Team Foundation Server giữa các server, các máy (video + ảnh)
thuvienwinform - Rất nhiều trường hợp, có thể là SQL Server gặp lỗi và phải cài lại, hay chỉ vì muốn đổi lại tên Server mà có thể xẩy ra những lỗi đối với Team Foundaiton Server (cụ thể là lỗi TF246017). Khi đó TFS sẽ mất kết nối với CSDL (cụ thể là database Tfs_Configuration). Cách khắc phục rất đơn giản. Chỉ cần vài dòng lệnh là xong!
- Chuẩn bị:
+ File TfsRestore.bat: https://www.dropbox.com/s/gclsrza6kjshtqz/TfsRestore.bat (2KB)
+ Máy có cái Team Foundation Server, SQL Server
- Giải thich một số lệnh trong file .bat:
+ TfsConfig TfsServiceControl quiesce: dừng Team Foundation lại
+ TfsConfig TfsServiceControl unquiesce: khởi động lại Team Foundation
+ TfsConfig Accounts /ResetOwner: thiết lập tài khoản Owner cho file Database (cần thiết khi chuyển từ máy này sang máy khác)
+ TfsConfig Accounts /add /AccountType:ApplicationTier: thêm tài khoản ApplicationTier
+ TfsConfig RegisterDB: Thiết lập database cho Tfs. Đối với việc chuyển từ server này sang server khác cùng máy chỉ cẩn chuyển database và chạy lệnh này là OK
- Tình huống:
+ Thêm mới 1 server và muốn chuyển TFS sang đó
+ Hoặc chuyển TFS từ máy này sang máy khác
+ Cài lại SQL Server, cài lại win
- Cách làm này có thể khắc phục được lỗi TF246017
+ TF246017:
- Một số chú ý khi thực hiện:
+ File TfsRestore.bat phải được chạy bằng quyền Admin
+ Khi chuyển database phải stop (dừng) server đó lại. Nếu không sẽ không cho copy
- Thực hiện
B1: Chuyển Database
- Đầu tiên stop server đang được dùng để cài Tfs lại
- Copy các file database của Tfs (.mdf, .log) ra
+ Tìm đường dẫn
+ Thực hiện copy và paste ra đâu đó như bình thường
- Atach database sang server mới
- Tạo tài khoản mới cho database của Tfs trên server mới này
+ Chú ý với winserver thì phải yêu cầu mật khẩu bảo mật cao (hoặc bỏ tích Enfoce Password Policy)
B2: Thiết lập lại Team Foundation
Chạy file TfsRestore.bat và làm theo hướng dẫn
+ Thu Muc Tfs = Thư mục cài Team Foundation Server. Mặc định là: C:\Program Files\Microsoft Team Foundation Server 11.0\Tools
+ Server name = Tên Server mới muốn chuyển Tfs đến
+ Database name = tên database gắn kết với Tfs (mặc định là Tfs_Configuration)
+ Tai Khoan = tài khoản tạo đề quản lí Tfs_Confition ở B1
Done
Có gì vướng mắc khi chuyển Tfs các bạn có thể comment hoặc liên hệ với mình. Chúc thành công! ^^
Code một số thao tác đơn giản với xử lí hình ảnh: tăng độ sáng, độ tương phản, đổ màu,...
thuvienwinform - C# hỗ trợ chúng ta thư viện System.Drawing. Dựa vào đó chúng ta có thể thực hiện một số thao tác cơ bản với hình ảnh như thiết lập độ sáng, độ tương phản, xoay hình ảnh, hay tạo ảnh đen trắng,...Hôm nay mình xin được giới thiệu một số thao tác xử lí hình ảnh đơn giản thông qua lớp Bitmap trong System.Drawing
Tải demo: https://www.dropbox.com/s/4khmb41yyogxanf/thuvienwinform-XuLyHinhAnh.rar (500KB)
1. RGB
- Có thể hiểu nó là một bộ 3 số (R, G, B) nằm trong đoạn từ 0 -> 255. Mỗi số đại diện cho màu đỏ (Red - R), Xanh là cây (Green - G), Xanh lam (Blue). Bất kì màu nào cũng có thể được biểu diễn bằng bộ ba số này!
VD:
\
Màu đen: (0, 0, 0)
Màu đỏ: (255, 0, 0)
...
- Với hình ảnh (Image) nó được chia ra thành các pixel (điểm ảnh), mỗi pixel là một bộ ba số theo mô hình RGB này. Số pixcel = (chiều rộng)x(chiều cao).
- Trong C# để xử lí với các pixel này ta sử dụng lớp Bitmap trong System.Drawing (using System.Drawing)
- Cách làm chính là duyệt từng pixel và thực hiện các thao tác mong muốn trên các pixel đó để thu được bức ảnh mong muốn
2. Một số hàm, biến cơ bản
- Khai báo 1 Bitmap:
Bitmap bitmap = new Bitmap(anh);//anh là kiểu Image
Bitmap bitmap = new Bitmap(chieurong, chieucao);//chieucao, chieurong là kích thước của bitmap nàyVD
Bitmap bitmap = new Bitmap(200, 200);//ảnh có kích thước 200x200
- Color:
Color c;//Bản ghi color. Khi đó bộ ba số RGB sẽ là: c.R, c.G, c.B
Color.FromArgb(r, g, b);//Lấy màu từ bộ ba số RBGVD: màu đen
Color.FromArgb(0, 0, 0);//Màu đen
Color.Black;//Màu đen
Color.FromName("Black");//Màu đen
- Lấy màu của 1 pixel:
Color c;
c = bitmap.GetPixel(cot, hang);//cot, hang là tọa độ của pixel cần lấy màu
- Tô màu cho 1 pixel:
bitmap.SetPixel(cot, hang, Color.FromArgb(r, g, b));//r, g, b là chỉ số RGB
câcsc
3. Thao tác cơ bản:
3.1. Chuyển ảnh về đen trắng (GrayScale):
GrayScale
- Để chuyển một ảnh về đen trắng ta chuyển chỉ số từng pixel theo công thức: .299 * c.R + .587 * c.G + .114 * c.B
public Bitmap DenTrang(Image anh) { Bitmap kq = new Bitmap(anh.Width, anh.Height); Bitmap anhtam = new Bitmap(anh); Color c; Byte rgb; for (int cot = 0; cot < anhtam.Width; cot++) for (int hang = 0; hang < anhtam.Height; hang++) { c = anhtam.GetPixel(cot, hang); rgb = (byte)(.299 * c.R + .587 * c.G + .114 * c.B); kq.SetPixel(cot, hang, Color.FromArgb(rgb, rgb, rgb)); } return kq; }
3.2. Chuyển ảnh về âm bản (Invert):
Invert
- Để chuyển ảnh về âm bản ta lấy 255 trừ đi từng chỉ số (làm màu từng pixel ngược lại)
public Bitmap AmBan(Image anh) { Bitmap kq = new Bitmap(anh.Width, anh.Height); Bitmap anhtam = new Bitmap(anh); Color c; for (int cot = 0; cot < anhtam.Width; cot++) for (int hang = 0; hang < anhtam.Height; hang++) { c = anhtam.GetPixel(cot, hang); kq.SetPixel(cot, hang, Color.FromArgb(255 - c.R, 255 - c.G, 255 - c.B)); } return kq; }
3.4. Lọc màu (Filter):
Green Filter
- Đề lọc màu (cụ thể là theo 3 màu chính đỏ, xanh lá cây, xanh lam)
+ Màu đỏ: ta giữ nguyên màu đỏ và đảo ngược 2 màu kia (lấy 255 trù đi chỉ số G và B)
+ Tương tự với xanh và xanh lam
public Bitmap ChenMau(Image anh, int mau) { //1 = do; 2 = xanh Green); 3 = xanh (blue) Bitmap kq = new Bitmap(anh.Width, anh.Height); Bitmap anhtam = new Bitmap(anh); Color c; int g = 0, r = 0 , b = 0; for (int cot = 0; cot < anhtam.Width; cot++) for (int hang = 0; hang < anhtam.Height; hang++) { c = anhtam.GetPixel(cot, hang); switch (mau) { case 1: r = c.R; g = c.G - 255; b = c.B - 255; break; case 2: r = c.R - 255; g = c.G; b = c.B - 255; break; case 3: r = c.R - 255; g = c.G - 255; b = c.B; break; } r = Math.Max(r, 0); b = Math.Max(b, 0); g = Math.Max(g, 0); kq.SetPixel(cot, hang, Color.FromArgb(r,g,b)); } return kq; }
3.5. Ghép 2 hình:
- Đề ghép 2 hình thì ta khai báo một Bitmap có chiều rộng bằng chiều rộng 1 ảnh và chiều cao bằng tổng chiều cao 2 ảnh.
- Sau đó setpixel từng pixel cho bitmap này.
Ngoài ra còn có chỉnh độ sáng (Brightness), chỉnh độ tương phản (Contrast),...các bạn có thể xem thêm
trong code.
[TFS] Khi đã vào guồng
thuvienwinform - 1 tuần là không đủ giới thiệu được hết các chức năng của TFS cũng như nổi trội của nó! Đó mới chỉ là những bước đầu tiên trong việc sử dụng TFS đề phát triển phần mềm. Nhưng mình nghĩ rằng nó đã đủ cho một nhóm mới làm quen với TFS. Giải quyết những câu hỏi ban đầu khi mới tiếp xúc với TFS cũng như scrum. Và đó cũng chỉ là những hiểu biết của mình về nó (2 tuần sử dụng), có thể mình chưa hiểu hết về nó, vì vậy rất mong các bạn đóng ghóp, chia sẻ kinh nghiệm trong sử dụng, quản lí TFS để các nhóm phát triển chúng ta làm việc hiệu quả hơn, có những sản phẩm tốt, nhanh hơn! Đó là mong muốn lớn nhất của mình. Vì hiện nay các nhóm thường không public các công nghệ cũng như quy trình làm việc của mình! Nhưng mình nghĩ là cái đó nên chia sẻ để các nhóm cùng học hỏi lẫn nhau, cùng nhau phát triển.
Lúc đầu mình không hề biết đến TFS là cái gì? Rất ít bài viết tiếng việt nói về nó (có thể là có quá dễ hoặc là các nhóm không muốn chia sẻ). Và mọi công việc trong nhóm đều thực hiện trên doc, excel, mail. Vì vậy, dù mới chỉ dùng được 2 tuần nhưng mình rất nóng lòng muốn chia sẻ nó đến các nhóm phát triển phần mềm để chúng ta cùng sử dụng những công nghệ phát triển nhất, với mục đích cuối cùng là hiệu suất công việc!
Những bài viết mình ít tham khảo (Vì toàn là nguồn tiếng anh) nên có nhiều sai sót mong các bạn đọc đóng ghóp cho nó hoàn thiện hơn nữa. Những phần như giao công việc, tạo các product log, back log...mình sẽ không hướng dẫn vì khi đã thao tác với TFS thì nó sẽ tự đến với bạn một cách tự nhiên, không nên áp đặt theo cách của mình!
Mình rất mong là có một cộng đồng TFS việt để cùng nhau chia sẻ cách làm việc của nó cũng như là nguồn tài liệu cho những người mới, là nơi giao lưu cũng như chia sẻ kinh nghiệm về TFS.
[TFS] Phân quyền. Nhiệm vụ quan trọng
thuvienwinform - Có thành viên chỉ được xem mục work Item, có thành viên được xem hết các mục. Hoặc có thành viên được phép tạo build, project,...Đó là công việc phân quyền
- Việc phân quyền trong TFS rất tỉ mỉ, có thể chỉnh cho cả nhóm, hoặc từng cá nhân!
- Phân quyền là do Admin (master hoặc product owner) thực hiện
Phân quyền chung:
Phân quyên từng project
v..v phần này rất nhiều nhưng rất dễ hiểu, các bạn có thể tự vọc nha :)
[TFS] Backup, công việc không thể thiếu
thuvienwinform - Những sự cố là không thế tránh khỏi như virus, hỏng mạng, cài lại hệ điều hành, đổi máy server khác,...đều làm chúng ta mất dữ liệu. Để khắc phục vấn để này ta phải backup TFS thường xuyên. Thật may là nó đã có sẵn, chúng ta chỉ việc cài và quyên nó đi :D
Mở TFS Administration Console lên
Chú ý: Network Backup path phải là folder share (Full quyền cho EveryOne)
Sau đó chỉ việc next và configure là xong
[TFS] Thiết lập email thông báo (Alert) cho TFS bằng Gmail hoặc Live mail. Giúp cập nhật công việc kịp thời
Email được gửi đến khi có check-in
thuvienwinform - Chẳng nhẽ bật máy lên là phải vào visual luôn thì mới thấy công việc được giao? Không cần, chỉ cẩn vào mail là có thể biết được những lần check-in, sửa code,...Trong bài này mình xin được hướng dẫn tạo email cảnh báo đến các tài khoản khi ai đó check-in, tạo build,...
Chú ý:
- Với nhóm nhỏ khoảng 5, 6 thành viên thì có thể dùng Gmail
- Với nhóm nhiều thành viên thì Gmail sẽ chặn thư (lí do là spam). Còn đối với live mail thì mình thấy vẫn ổn
- Việc gửi thông báo này sử dụng smtp server vì vậy những máy cài winserver có thể tự tạo cho mình 1 smtp server riêng được (nếu có máy server riêng mình sẽ hướng dẫn chi tiết phần này :) )
Để gửi được thư, trước hết phải thiết lập thông báo (Alert) trên máy cài TFS sau đó thiết lập trên từng tài khoản (do từng cá nhân thực hiện)
A. Cài đặt trong máy cài TFS
I. Sử dụng Gmail: https://mail.google.com/
1. Tạo tài khoản Gmail (có rùi thì đổi lại mật khẩu cho mạnh)
Yêu cầu: mật khẩu phải đủ mạnh (chữ hoa, thường, số, kí tự đặc biệt) thì mới được chấp nhận
2. Bật POP (POP là gì thì có thể Google nha)
- Vào hòm thư -> cài đặt
- Chọn tab "chuyển tiếp và POP/MAP
3. Cài đặt trong Team Foundation Adminstration Console
II. Sử dụng live mail
1. Tạo tài khoản: https://mail.live.com/ (có rồi thì đổi lại mật khẩu cho mạnh)
Yêu cầu: Yêu cầu: mật khẩu phải đủ mạnh (chữ hoa, thường, số, kí tự đặc biệt) thì mới được chấp nhận
2. Cài đặt trong Team Foundation Adminstration Console
B. Cài đặt hòm thư của từng tài khoản
- Chọn project -> ấn vào tên của mình -> My Alerts:
- Thêm email và khi nào gửi email
- Ngoài ra có thể chọn Advance Alets Managerment Page để chỉnh nội dung mail (phần này tự vọc nhé)
Ok vậy là đã hoàn thành Alert cho TFS!
[TFS] Source Control Explorer và việc quản lí code
thuvienwinform - Source Control Explorer trong VS chính là công cụ để quản lí code khi đã được up lên TFS. Thông qua nó ta có thể thực hiên việc check-in sau khi chỉnh sửa, check-out lấy code về, xem các version, thành viên nào up lên, so sánh các file, nội dung được chỉnh sửa bởi ai....
A. Source Control Explorer
B. Đưa code lên server
Sau khi tạo project xong ta có thể upcode lên như sau
b1: map
map là để đưa code trên server về một thư mục tên máy của mình
b2: Nếu đã code code rùi thì chỉ việc Get Last Version về là được. Còn chưa có thì sẽ đưa code lên
- Get Last version
- Up code lên.
Để thực hiện việc này ta có nhiều cách.
Cách 1: kéo thả folder chứa code vào Source Explorer
Sau đó check-in
hoặc
Các version
[TFS] Kết nối TFS với Visual Studio và tạo project mới
thuvienwinform - Hôm nay mình xin hướng dẫn cách kết nối Visual Studio (VS) vào một Team Foundation Server đã được tạo ra
Địa chỉ server: Ohia-Pc:8080/tfs
A. Kết nối đến TFS
OK, bật VS lên
Chọn Team -> Connect to a... -> connect
Ấn nút server -> Add -> điền địa chỉ server vào -> OK
Ấn Close
Chọn server -> ấn connect
B. Tạo project
Sau khi đang connet thành công ta có tạo 1 project trong tfs như sau:
Team -> Connect a team... -> new team project...
và thực hiện theo các bước
Địa chỉ server: Ohia-Pc:8080/tfs
A. Kết nối đến TFS
OK, bật VS lên
Chọn Team -> Connect to a... -> connect
Ấn Close
Chọn server -> ấn connect
B. Tạo project
Sau khi đang connet thành công ta có tạo 1 project trong tfs như sau:
Team -> Connect a team... -> new team project...
và thực hiện theo các bước
Hiển thị project trên web:
[TFS] Team Explorer và trang Web TFS
thuvienwinform - Team Explorer là nơi quản lí các kết nối, công việc được giao...Để hiển thị nó ta làm như sau:
Còn về phần web, nó quản lí tất cả của TFS trên này: các project, các work item, code, test,...
Để có cái nhìn trực quan các bạn truy cập vào địa chỉ TFS để xem
Trong này có sẵn nhiều video hướng dẫn các bạn có thể xem trước, nó rất bổ ích đấy
Để có cái nhìn trực quan các bạn truy cập vào địa chỉ TFS để xem