- Hành trình về phương đông
- Lối sống tối giản của người Nhật
- Nhà giả kim
- Chì thuộc về anh
- Làm việc bằng trí tuệ
- Khoa học điều trí khiển tâm
- Dám bị ghét
- Dám hạnh phúc
- ++
01/01/2018
Sách hay 2018
06/09/2017
Git flow
Git flow
Các bước khởi tạo và xử dụng git phù hợp với dự án của tôi và có vẻ phù hợp bạn :)
1) Tạo git repo
2) Tạo project mặc định_readme.md [mô tả tối thiểu về project cũng được]
3) Ignore list bin, obj, .suo, .vs ...
4) Thêm 3rd Libs nếu có cần dùng tới
5) Push khởi tạo lên git với branch master
Tạo sẵn branch từ master:
dev: sơ khai từ master và "như tờ giấy trắng_master", tương lai sẽ chứa toàn bộ source code test/CR/bug/hotfix/NF/improve
=> dành cho test nội bộ
stagging: sơ khai từ master và "như tờ giấy trắng_master", tương lai sẽ chứa toàn bộ source code test/CR/bug/hotfix/NF/improve ĐÃ QUA TEST NỘI BỘ VÀ CHỜ KHÁCH HÀNG UAT
=> dành cho khách hàng test
release_version: sơ khai từ master và "như tờ giấy trắng_master", trong tương lai sẽ chứa source code release sau khi nội bộ đã test và khách hàng đã UAT
(*) Dễ mà, xong bước 1 :)
Trong quá trình phát triển dự án (*) Qua thời gian:
1) sẽ có người tham gia thêm..(tốt quá, 1 mình làm sao nổi)
2) sẽ có thay đổi (change request_CR)
3) sẽ có fix bug (ohh no.. bug...)
4) sẽ có hotfix (ohh no... bug... urgent..)
5) sẽ có tính năng mới (new feature_NF_internal)
6) sẽ có tối ưu hóa (UI/UX_performance .._improve_internal)
(*) Qua thời gian:
1) thêm người
=> add/invite thành viên vô git
2) Change request và các yêu cầu 3) 4) 5) 6) có thể làm tương tự:
Giả sử có 2 CR, assign cho 2 thành viên
2.0) Thành viên 1:
_Luôn luôn pull master về local trước khi khởi tạo branch để đảm bảo source mới nhất release ở thời điểm bạn tạo branch mới (*)
1_Tạo branch CR 1 từ master_[vd branch: project_abc_cr_1]
2_=> code/sefl test
3_=> merge [project_abc_cr_1] vào branch dev [thường thì thành viên 1 tự merge]
4_=> yêu cầu tester test
5_=> tester pass
6_=> merge [project_abc_cr_1] vào branch stagging [thường thì leader merge]
7_=> yêu cầu kh test
8_=> kh pass
9_=> yêu cầu tạo mới branch release_version_CR_1 từ [project_abc_cr_1]
10_=> yêu cầu release production source code release_version_CR_1 [comment chi tiết] [thường thì leader merge]
11_=> release production xong :)
12_=> yêu cầu merge branch release_version_CR_1 vào master
13_=> merge vào master [done]
2.1) Thành viên 2:
_Luôn luôn pull master về local trước khi khởi tạo branch để đảm bảo source mới nhất release ở thời điểm bạn tạo branch mới (*)
1_Tạo branch CR 2 từ master_[vd branch: project_abc_cr_2]
2_=> code/sefl test
3_=> merge [project_abc_cr_2] vào branch dev [thường thì thành viên 2 tự merge]
4_=> yêu cầu tester test
5_=> tester pass
6_=> merge [project_abc_cr_2] vào branch stagging [thường thì leader merge]
7_=> yêu cầu kh test
8_=> kh pass
9_=> yêu cầu tạo mới branch release_version_CR_2 từ [project_abc_cr_2]
10_=> yêu cầu release production source code release_version_CR_2 [comment chi tiết] [thường thì leader merge]
11_=> release production xong :)
12_=> yêu cầu merge branch release_version_CR_2 vào master
13_=> merge vào master [done]
(*) Tùy vào qui trình từng dự án mà có stagging hay không, nếu 6) không có thì bỏ qua 7) 8)
(*) Conflict source thường xảy ra từ bước 2.3_=> merge vào branch dev hoặc 6_=> merge vào branch stagging
(*) Source code branch Master sau cùng là bản release khách hàng, đã được nội bộ test, đã được kh UAT và history có thông tin release_**** [vd: release_version_CR_1] để dễ theo dõi source release
09/05/2017
Dự án VinGYM.com
VinGYM.com - Kết nối người tập, phòng tập và huấn luyện viên.. Kết nối gymers
- Chủ phòng tập
Chủ phòng tập có thể giới thiệu phòng tập với cộng đồng và quản lý thông tin học viên của phòng tập. - Thành viên tập
Tìm thông tin phòng tập, huấn luyện viên phù hợp hay tham khảo thông tin bài tập được chia sẻ để tập luyện. - Huấn luyện viên
Tìm phòng tập hay học viên phù hợp để hợp tác. - Shop
Cửa hàng/đơn vị cung cấp sản phẩm dịch vụ liên quan với tập luyện.
10/02/2017
Giải tán
Một ngày đẹp trời, ẻm im ru, gọi điện nhắn tin tìm kiếm các kiểu ko có thông tin gì
Vài ngày gặp lại thái độ hững hờ lạnh tanh
Em chọn xa ta :)
30/10/2016
Sử dụng C# gửi email bằng gmail
Đôi khi bạn cần gửi email từ ứng dụng của bạn và... bạn chọn gmail để thực hiện việc gửi email giúp bạn, việc này dễ khi dùng với c#
private bool SendEmail(string subject, string htmlString)
{
try
{
MailMessage message = new MailMessage();
SmtpClient smtp = new SmtpClient();
message.From = new MailAddress("your_out_going_address");
message.To.Add(new MailAddress("receive_address"));
message.Subject = subject;
message.IsBodyHtml = true; //to make message body as html
message.Body = htmlString;
smtp.Port = 587;
smtp.Host = "smtp.gmail.com"; //for gmail host "smtp.gmail.com"
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("your_out_going_address", "your_out_going_address_password");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(message);
return true;
}
catch (Exception ex) {
//Your common write log method
//LogError(GetExceptionMsg(ex));
return false;
}
}
//Lưu ý:
// tìm google "Less secure app access" và tắt theo hướng dẫn.....
23/07/2016
03/02/2016
Tạo danh sách chọn đơn giản trong MVC
Đoạn code c# đơn giản để tạo 1 danh sách chọn theo dạng dropdownlist
Dưới dây là hàm trả về danh sách chọn tháng trong năm hiện tại tính từ tháng 01 tới tháng hiện tại
//start
public static SelectList GetMonths()
{
List<CommonKeyValueViewModel> months = new List<CommonKeyValueViewModel>();
var currentYear = DateTime.Now.Year;
var currentMonth = DateTime.Now.Month;
for(int i = 1; i<= currentMonth; i ++)
{
months.Add(new CommonKeyValueViewModel { Label = string.Format("{0}/{1}", i < 10 ? "0" + i.ToString() : i.ToString(), currentYear), Point = i });
}
List<SelectListItem> list = new List<SelectListItem>();
foreach (var row in months)
{
list.Add(new SelectListItem()
{
Text = row.Label,
Value = row.Point.ToString()
});
}
return new SelectList(list, "Value", "Text");
}
//end
Hiển thị trên razor view như sau:
@Html.DropDownList("month", yournamespace.class.GetMonths(), "Chọn tháng", new { @class = "form-control" })
Đăng ký tên miền, hosting, máy chủ, thiết kế lập trình website theo yêu cầu
Chính thức trở thành đơn vị cung cấp dịch vụ đăng ký tên miền quốc tế, tên miền Việt Nam hosting, máy chủ, cloud hosting, cloud server, ema...