Ký Sự Trở Thành Lập Trình Viên Thật Sự – P1: Thời con nít

Tôi không biết tại sao viết bài này, nhưng thật sự viết 1 bài để cho mọi người hiểu, một bài viết gọi là có tâm và có trách nhiệm. Trong chuỗi bài  viết này tôi sẽ giúp mọi người hiểu làm thế nào để trở thành một lập trình viên, một lập trình viên đúng nghĩa… Nếu trong võ thuật thứ cốt lõi cho người môn sinh thì đó là những kỹ thuật cơ bản về đấm và đá và sau đó kết hợp chúng thành 1 bộ quyền. Còn khi bước vào với cái nghiệp lập trình viên thì cái nền tảng cơ bản nhất đó là những kỹ thuật tư duy giải quyết để tạo ra một sản phẩm hoàn hảo.

Võ thuật cũng cũng có nhiều môn phái thì trong công nghệ thông tin cũng có nhiều trường phái khác nhau, tùy từng trường phái mà sẽ có các hướng tiếp khác nhau, có trường thì dạy cho môn sinh lập trình C/C++, có trường thì cho môn sinh tiếp cận C# hoặc java nhưng suy cho cùng thì cái mà họ hướng đên đó là cái tư duy để lập trình chứ không phải học một ngôn ngữ, ở đây mình nhấn mạnh từ tư duy, nói chung tư duy nó là thứ tồn tại mãi mãi, vì trong công nghệ thông tin ngôn ngữ rất đa dạng, trường hợp nếu không có tư duy thể bạn phải bỏ 1 năm để học 1 ngôn ngữ thế  thì 10 ngôn ngữ thì cũng mất 10 năm rùi, Với ví dụ đơn giản trong bộ Phim Ỷ thiên đồ long ký, Trương Vô Kỵ chỉ mất có vài tiếng để học xong 7 tầng của càn khôn, nếu người xem phim thì sẽ biết là do có một môn võ trước đó có điểm tương dồng, vậy tư duy cũng là một ví dụ điển hình giúp bạn có học được nhiều ngôn ngữ khác một cách dễ dàng và nhanh chóng và cảm thấy thoải mái hơn, còn ngược lại thì nó sẽ khiến cho các bạn mới học công nghệ thông tin cảm thấy khó và chán và cho dù hiểu được ngôn ngữ mà ko có tư duy giải quyết thì chỉ ngừng lại ở mức vỡ lòng. Trong cuộc sống không phải mọi thứ điều dễ dàng, nhưng để được đến với cái dễ dàng thì bạn cần vượt qua được những điều khó khăn, nghe có vẻ phi lý, nhưng nếu một vấn đề nhỏ bạn giải được thì các vấn đề dễ hơn nó lại là dễ. có lẽ hại não nhưng cái cần vượt qua bây giờ nó là những kiến thức cơ bản nhất nhưng nó không phải dễ nhất, khi muốn trở thành một master thì không phải một sớm 1 chiều. Các bạn sẽ thấy rõ hơn ở các bài viết sau. Phần giới thiệu thế đủ rùi giờ chúng ta vào câu chuyện chính và xem một con người thật sự khi bước vào ngành công nghệ thông tin thế nào.

Trước khi tiếp cận với ngành Công nghệ Thông tin, tôi đã được tiếp xúc máy tính từ lúc lớp 2, nói chung niềm đam mê về máy tính cũng bắt đầu từ khi ba tôi được ông thầy tặng cái máy. Thời đó cũng như nhiều đứa con nít khác tôi chỉ thích duy nhất 1 thứ đó là game và hoạt hình. Tình cờ tôi cũng quen được vài người bạn có đĩa game, tôi cũng cố gắng mượn về để cài, với quyết tâm để cài game tôi đã cố gắng mò nó rất là khó khăn, thời đó chưa có wifi. nhưng chiếc máy tính nó chỉ sống được khoảng nửa năm đã hư, nguyên nhân sau này tui mới biết nó là do con chuột cắn dứt dây nguồn. Mà quên chắc bạn sẽ hỏi ủa thằng cha nào đang chém vậy, vâng Tôi là Phạm Tấn Phong hiện đang làm lại công ty NOIS làm outsoucre chuyên về trường phái .Net và azure cloud, và đang làm vài dự án IoT ở club nghiên cứu IUHYRA của trường, Ok quay lại nội dung chính nào, tào lao quá đi.

Lên lớp 6 ba mẹ tôi mua cho tôi con máy tính mới đê học cũng như phần thưởng cho tôi để tôi học tốt hơn, thời đó tôi chỉ biết game là trên hết. Tới khi chuẩn bị lên lớp 8 nghe mọi người nói rằng sẽ học lập trình và nghe nói nó rất khó, và tôi cũng bị nhiều người đi trước hù dọa, để xem nó là cao nhân gì tui cố gắng mượn quyển sách tin học của anh chị đi trước về đọc, và làm, niềm đam mê lập trình cũng tự nhiên bắt đầu từ đó, ngó thể đây là ngôn ngữ đầu tiên của tôi Pascal.

Tới lớp 8 thấy tôi có năng khiếu về vi tính nên gia đình tôi quyển sang mở tiệm game, và cho tôi quản lý, với thân phận một người coi net thì luôn cố gắng tìm kiếm những điều tốt nhất cho người chơi, cũng như học lén được nghề sửa máy tính từ nhân viên bảo trì và sau đó toàn quyền việc bảo trì cho các máy tính của nhà tôi, cũng vì thế mà tôi cũng được nhiều người ở đó biết đến, và cũng được nhiều người nhờ cài máy =]],

Một ngày đẹp trời của lớp 8: Không biết nguyên nhân tại sao, tôi có ý định đựng 1 server game nó là MU. có lẽ đây cũng là thứ giúp tôi tiếp xúc đến cơ sở dữ liệu, các khái niệm mà đến đại học tôi mới thực sử được học sâ, tôi cũng tình cờ quen được những người nổi tiếng trong vài lần tôi bị thả virus và họ hỗ trợ tôi và hướng dẫn tôi diệt nó, mà những thứ như những đứa trẻ trâu bây giờ thấy máy hư là virus cài lại win, những người ấy chỉ tôi dùng safe mode sử dụng tool để quet và kiểm tra các tập tin bị nghi ngờ, àm có thể giờ họ cũng không còn nhớ tôi là ai vì tôi cũng mất liên lạc quá lâu, Quay lại Việc đựng 1 server game đã là khó, việc chạy ổn định còn khó hơn, nhưng với kinh nghiệm của thằng nhóc lớp 8 nghĩ vậy nó là tuyệt rùi nhưng không 1 ngày đẹp trời server nó bị hack, nó cũng không biết tại sao, rùi hắn mò mò, cuối cùng cũng biết lỗi, rùi hắn fix lỗi, thật sự thấy vậy mà vui, nhưng vài ngày sau như 1 định mệnh nó gặp C50 thật sự khai niệm đó với nó cũng không biết, sau vài lần nói chuyện hắn với người ấy như trở thành anh em, hắn dạy mình kiến thức, chia sẻ kinh nghiệm các lỗ hổng bảo mật, và về virus mà giờ nó cũng không tin được, những lỗ hổng bảo mật những thứ mà bây giờ ai chỉ cần hack sân bay với vài bước cơ bản đã được lên báo, rùi tôi cũng tình cờ quen được những người bạn những người mà ngày xưa làm admin web phim topdau.com họ chỉ tôi làm web họ dạy tôi kiến thức… rùi dần tôi cũng được bước tới UG nơi mà buôn bán CC chia sẻ hack, Và với vài kiến thức nó cũng có 1 số tiền khổng lồ nhưng lương tâm của nó cũng trách bảo nó không thì giờ nó cũng bị nhốt rùi, Hắn chuyển sang đi hack web đi mò lỗi web và thật sự với cái kỹ năng thời đó, hắn có thể hạ được nhiều trang web và báo lỗi và nhận được những lời cảm ơn, mà giờ khi quay lại nó vẫn còn sống, và họ cũng đang sẽ nhớ mình là ai =]]. Đến lớp 10 hắn bỏ những thứ hắn đang theo đuổi, hắn quên đi con đường hắn đã đi rùi hắn bỏ kiến thức về đó và không đụng vào.

 

Nhưng đây có thẻ là một thời con nít trẻ trâu, nhưng thật sự nó tạo ra cái đam mê cho nó quyết định học ngành Công Nghệ Thông Tin, và nó học thế nào và làm sao để có điểm cao và kinh nghiệm đi làm, những điểm cơ bản nhất sẽ trở lại trong một ngày đẹp trời.

Kích Hoạt Visual Studio Dev Essentials – Active gói azure 300USD/năm mãi mãi

Microsoft Imagine, có thể giúp bạn dễ dàng đăng ký tài khoản azure for student. Nhưng nếu bạn không phải là student thì sao. Bài viết này tuy đã cũ nhưng hy vọng sẽ hữu ích cho mọi người đặc biệt với các bạn không có Microsoft Imagine.

Nếu bạn đang là student có Microsoft Imagine (Tên mới của Dreamspark) thì có thể xem lại bài viết sau đây:

https://www.stdio.vn/articles/read/331/dang-ky-va-chung-thuc-dreamspark-azure-for-student

Chế Đế:

Năm 2017, năm của microsoft năm của dot net core lên ngôi visual 2017 ra đời, computing là tiêu chuẩn hàng đầu trong nhiều lĩnh vực. Nên việc cần và tìm hiểu computing là một vấn đề cần thiết và quan tâm hàng đầu. Nắm nhu cầu đó Microsoft đã hỗ trợ cho nhà phát triển với chương trình Visual Studio Dev Essentials, đăng ký subscription nhạn 300USD miễn phí (25USD/tháng) cho Microsoft Azure. Việc đăng kí cho Visual Studio Dev Essential rất đơn giản, từ việc sử dụng Microsoft account, đến việc đăng kí thẻ credit card để sử dụng Microsoft Azure,  giúp cho nhà phát triển dễ dàng tìm hiểu  các dịch vụ như Virtual Machines, Web Apps, Cloud Services, Mobile Services, Storage, SQL Database, Content Delivery Network, HDInsight và Media Services…

Công Thành:

Bước 1: https://msdn.microsoft.com/vi-vn/default.aspx Chọn Subscriber portal trên menu

Bước 2: Đăng nhập tài khoản visual studio

ss2

+ Đăng ký nếu chưa có tài khoản https://app.vsaex.visualstudio.com/profile/create?mkt=vi-VN

ss03

Bước 3: Kích hoạt subsciption

ss04

Bấm Accept

ss05

Tự Trị:

Bạn có thể thấy trong danh mục của subscription có biết nhiều thứ có giá trị đúng không từ các công cụ lập trình đến micorosft azure và cả các khóa học nữa. Còn việc tiếp theo là tùy ý của bạn sử dụng.

Paging in ASP.NET Web API :Using HTTP Headers

 

[Route("", Name = "ObjectRoute")]
[HttpGet]

public async Task<IHttpActionResult> GetListObject(int page = 0, int pageSize = 50, string orderBy = null, bool des = true)
 {

var res = new ObjectListModel();


 try
 {
 //Get list object
 var objects = await _objectService.GetAllAsync();
 if (objcets == null)
 {
 //not create before
 return Ok(res);
 }

var totalCount = res.Result.Count();
 var totalPages = (int)Math.Ceiling((double)totalCount / pageSize);

var urlHelper = new UrlHelper(Request);
 var prevLink = page > 0 ? urlHelper.Link("ObjectRoute", new { page = page - 1 }) : "";
 var nextLink = page < totalPages - 1 ? urlHelper.Link("ObjectRoute", new { page = page + 1 }) : "";

var paginationHeader = new
 {
 TotalCount = totalCount,
 TotalPages = totalPages,
 PrevPageLink = prevLink,
 NextPageLink = nextLink
 };

System.Web.HttpContext.Current.Response.Headers.Add("X-Pagination",
 Newtonsoft.Json.JsonConvert.SerializeObject(paginationHeader));

res.Objects= objects
 .Skip(pageSize * page)
 .Take(pageSize)
 .ToList()
 .Select(a => new Object
 {...}).ToList();
 #region Sort
 res.Objects.SortObjectsList(orderBy.ToLower(), des);
 #endregion
 return Ok(res);
 }
 catch (Exception ex)
 {
 res.ErrorMessages.Add(ex.Message);
 return Ok(res);
 }
 }

Rename Database in sql.

You might have seen “The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)” error when you try to rename SQL server database.  This error normally occurs when your database is in Multi User mode where users are accessing your database or some objects are referring to your database.

Nothing much to do to resolve the issue. First set the database to single user mode and then try to rename the database and then set it back to Multi user mode.

We will go through step by step.

First we will see how to set the database to single user mode,

ALTER DATABASE dbName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE

Now we will try to rename the database

ALTER DATABASE dbName MODIFY NAME = dbNewName

Finally we will set the database to Multiuser mode

ALTER DATABASE dbName
SET MULTI_USER WITH ROLLBACK IMMEDIATE
Hope you are able to rename your database without any issues now!!!

Collect: https://weblogs.asp.net/varadam/the-database-could-not-be-exclusively-locked-to-perform-the-operation-microsoft-sql-server-error-5030

Sử dụng Data Factory Copy Wizard để tạo pipeline để copy data qua lại dễ dàng

Trong bài này , bạn sẽ sử dụng dụng Data Factory Copy Wizard để tạo một pipeline với một Copy Activity trong data factory.
Các bước thực hiện:
Bước 1: Tạo Data factory sử dụng Azure Portal.
Bước 2: Sử dụng Copy Wizard để tạo Data Factory linked services, Dataset, pipeline với Copy Activity

Tạo Data factory:

Bạn có thể sử dụng Azure Portal để tạo một Data Factory, bằng cách click + NEW từ góc bên trái phía bến select Data analytics sẽ hiện ra tiếp một bảng bạn chọn Data Factory, điền đầy đủ thông tin rồi nhấn tạo.

Chú ý: Đặt tên và chọn vùng phù hợp với khu vực của mình. (Hiện tại khu vực asian không được hỗ trợ, DF chỉ hỗ trợ có 3 khu vực chính) mọi người có thể xem thêm ở đây https://azure.microsoft.com/en-us/regions/#services

sn01

 

 

 

Tạo pipeline

Trên trang home của Data Factory, click vào Copy data.sn02.JPG

Tại trang Copy Wizard bạn dễ dàng tạo một pipeline nhanh xong theo ba bướ

Bước 1: Select the source

Bước 2: Select the destination

Bước 3: Configure settings

select-data-source-page

Sau khi thiết lập xong bạn bấm  Finish và chờ đợi tiến trình kết thúc, sau đó bấm vào Click here to monitor copy pipeline như hình dưới để giám sát theo dõi pipeline. copy-tool-deployment-succeeded

 

 

 

 

CREATE PROCEDURE [dbo].[spPhanTrang_Table] (
 @PageNumber int,
 @PageSize int
)

AS
 DECLARE @Start int, @End int
 BEGIN TRANSACTION GetDataSet
 SET @Start = (((@PageNumber - 1) * @PageSize) + 1)
 IF @@ERROR <> 0
  GOTO ErrorHandler
 SET @End = (@Start + @PageSize - 1)
 IF @@ERROR <> 0
  GOTO ErrorHandler
 CREATE TABLE #TemporaryTable (
  Row int IDENTITY(1,1) PRIMARY KEY,
  CateID int, CateName nvarchar(100)
 )
 IF @@ERROR <> 0
   GOTO ErrorHandler
 INSERT INTO #TemporaryTable
  SELECT CateID, CateName FROM [TB_Category] 
 IF @@ERROR <> 0
  GOTO ErrorHandler
 SELECT CateID, CateName  
  FROM #TemporaryTable
  WHERE (Row >= @Start) AND (Row <= @End)
 IF @@ERROR <> 0
  GOTO ErrorHandler
 DROP TABLE #TemporaryTable
 COMMIT TRANSACTION GetDataSet
 RETURN 0
ErrorHandler:
ROLLBACK TRANSACTION GetDataSet
RETURN @@ERROR

 

Nguồn hwme

Giải thích phía trên là đoạn code phân trang gồm 2 tham số.

Giả sử thực thi EXEC spPhanTrang_Table (1,20)

Nếu tại vị tri trang 1 no sẽ hiển thị 20 row đầu tiên, nếu vị trí trang là số 2 nó sẽ hiển thị row từ 21 đến 21+20-1 = 40