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.

Advertisements

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

Bắt Đầu Với Service Fabric

Kịch bản: Number counting console application sử dụng Stateful service.

Set Up Development Environment:

Yêu cầu

  • Hệ điều hành: Windows8 trở lên / Windows Server 2012 R2
  • Visual Studio: 2015 update 2 trở lên

Bước 1: Install the runtime, SDK, and tools:

Bạn có thể xem thêm lại đây cho phù hợp: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-get-started

Bước 2: Enable PowerShell script execution

Service Fabric sử dụng Windows PowerShell scripts cho việc tạo local development cluster và để deploying applications từ Visual Studio. Mặc định, Windows block các script đang chạy. Vì vậy phải enable nó, Cần phân quyền điều PowerShell execution policy. Mở PowerShell như quyền administrator and enter command như trên dưới:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser

Bước 3: Verify local cluster setup:
Mở Service Fabric Explorer từ “C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricExplorer\ServiceFabricExplorer.exe”

Create a Stateful Service

  1. Launch Visual Studio as an administrator.
  2. Click File > New Project > Cloud > Service Fabric Application.
  3. Đặt Name the application and click OK.new-project-dialog
  4. Chọn Stateful đặt tên và click OK.

new-project-dialog-2

Tạo project thành công ta sẽ được như thế này

solution-explorer-stateful-service-template


Giải thích 1 số thành phần trong project

Publish profiles: Được sử dụng để quản lý tuỳ chọn dụng cụ cho các môi trường khác nhau.
Scripts: bao gồm một PowerShell script cho deploying/upgrading application của bạn. Visual Studio sử dụng script behind-the-scenes của Visual Studio. The script Các kịch bản cũng có thể được gọi trực tiếp tại các dòng lệnh.
Application definition: bao gồm application manifest trong thư mục ApplicationPackageRoot. Associated application parameter files bên trong thư mục ApplicationParameters, sử dụng để định nghĩa ứng dụng của bạn và cho phép bạn configure chỉ định một môi trường nhất định

Deploy and debug the application

F5 để chạy =]], cái này có nhiều cái để bàn nên các bạn có thể xem thêm nha có thể mô phỏng đầy đủ hơn.

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-create-your-first-application-in-visual-studio

Azure Service Fabric – Tổng Quan Sơ Bộ

Ở bài này focus vào 2 vấn đề chính:

  • Azure service fabric là gì
  • Lý do tại sao phải cần đó.

Azure Service Fabric

Service Fabric Platform là một thế hệ tiếp theo của platform-as-a-service cung cấp bởi microsoft.
Nó được dùng thử từ tháng 5 năm 2015 và chính thức vào đầu năm 2016. Nó được gọi là Paas 2.0 nó không chỉ hỗ trợ stateless services mà còn hỗ trợ stateful services để xây đựng một ứng dụng doanh nghiệp có hiệu quả cao, tin cậy và có khả năng mở rộng. Hiện nay Microsoft PaaS 1. 0 chủ yếu là cung cấp cho Web role or Worker như stateless services mà không thể duy trì trạng thái. Microsoft cũng nói rằng đây là công nghệ tương tự như quyền hạn cơ sở hạ tầng đám mây của họ và nhiều dịch vụ khác như Skype for business, dù Hubs, DocumentDB, và Azure SQL Databases.

Azure Service Fabric có thể nói là 1 framework phá vỡ nhanh chóng các vấn đề phức tạp của doanh nghiệp  vào độ tin cậy và khả năng mở rộng của stateless microservices và stateful microservices, triển khải và đóng gói một cách dễ dàng.

appwithstatelessservices

An application built using stateless services

appwithstatefulservices

An application built using stateful services

Có thể thấy rằng  ở ứng dụng sử dung stateful servuces: front end services là load balanced (Cân bằng tải) để handle request từ end users trong nhiều stateful microservices làm các công việc cụ thể phía sau Bởi vì dữ liệu có thể được tin cậy tục tồn tại trong dịch vụ, chúng tôi không phải lấy hoặc lưu dữ liệu từ một cửa hàng bên ngoài cho mọi yêu cầuBởi vì dữ liệu có thể được tin cậy tục tồn tại trong dịch vụ, chúng tôi không phải lấy hoặc lưu dữ liệu từ một strore bên ngoài cho mọi request như ứng dụng sử dụng chỉ sử dụng stateless services.

Paas 2.0 so với Paas 1.0

Sự khác biệt lơn nhất của Paas 2.0 so với Paas 1.0 là giới thiệu về stateful services trong version sau. bây giờ với Azure Service Fabric bạn có thể tạo stateful services có thể giữ dữ liệu đáng tin cậy giữa nhiều bản sao triển khai trên nhiều node (VM). Điều này loại bỏ sự cần thiết phải sử dụng dịch vụ  caching services, queues, or database calls để fetch hoặc save data cho mỗi request.

20150503194703

Simplistic architecture of Service Fabric vs. existing cloud services

Thuật ngữ liên quan

Stateless là design không lưu dữ liệu của client trên server. Có nghĩa là sau khi client gửi dữ liệu lên server, server thực thi xong, trả kết quả thì “quan hệ” giữa client và server bị “cắt đứt” – server không lưu bất cứ dữ liệu gì của client. Như vậy, khái niệm “trạng thái” ở đây được hiểu là dữ liệu và cụm “phi trạng thái” có thể làm nhiều người hiểu sai bản chất vấn đề.

Stateful là một design ngược với stateless, server cần lưu dữ liệu của client, điều đó đồng nghĩa với việc ràng buộc giữa client và server vẫn được giữ sau mỗi request (yêu cầu) của client. Data được lưu lại phía server có thể làm đầu vào (input parameters) cho lần kế tiếp, hoặc là dữ kiện dùng trong quá trình xử lý hay phục phụ cho bất cứ nhu cầu nào phụ thuộc vào bussiness (nghiệp vụ) cài đặt.

Đặc Tính microservice

  • Encapsulate a customer or business scenario. What is the problem you are solving?
  • Developed by a small engineering team.
  • Written in any programming language and use any framework.
  • Consist of code and (optionally) state, both of which are independently versioned, deployed, and scaled.
  • Interact with other microservices over well-defined interfaces and protocols.
  • Have unique names (URLs) used to resolve their location.
  • Remain consistent and available in the presence of failures.

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