Thứ Ba, 15 tháng 5, 2018

SQL trở lại quyết đấu NoSQL và tương lai của dữ liệu

SQL đã trở lại sau nhiều năm bị bỏ mặc. Thế quái nào? Và ảnh hưởng của việc này đến cộng đồng data?

Từ những ngày đầu của kỷ nguyên máy tính, chúng ta đã từng thu thập một lượng dữ liệu càng ngày càng lớn, liên tiếp đòi hỏi nhiều hơn về năng lực của công nghệ xử lý, phân tích và lưu trữ dữ liệu.
Trong thập kỷ qua, căn do này khiến cho các developer bỏ qua SQL để hướng tới một thứ có các đặc tính có thể mở rộng được là NoSQL: MapReduce và Bigtable, Cassandra, MongoDB…

Tuy nhiên, SQL đang dần trở lại. quờ quạng các nhà cung cấp dịch vụ cloud lớn hiện đều offer database dạng này như Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL (Azure chỉ vừa mới launch trong năm nay). Theo cách riêng của Amazon, Aurora database (compatible với MySQL-PostgreSQL) trở nên dịch vụ có tốc độ tăng trưởng nhanh nhất lịch sử AWS.
SQL interface bên trên lớp Hadoop/Spark đấu phát triển. Và chỉ mới tháng trước, Kafka đã tương trợ SQL.

Trong bài viết này, chúng tôi sẽ thẩm tra vì sao tình thế lại xoay chuyển trở lại với SQL, và ý nghĩa của việc này đối với giới data engineering và analysis
Phần 1: Một niềm hy vọng mới


Để hiểu tại sao SQL trở lại, hãy bắt đầu ở khởi điểm với lý do tại sao nó được thiết kế
Câu chuyện bắt đầu tại IBM Research trong thời kỳ đầu của thập niên 70, nơi mà cơ sở dữ liệu quan hệ ra đời. Vào thời điểm đó, tiếng nói tầm nã dựa vào logic toán học và ký hiệu. Hai tiến sĩ Donald Chamberlin và Raymond Boyce đã bị ấn tượng bởi mô hình dữ liệu quan hệ, nhưng cũng thấy rằng ngôn ngữ tầm nã sẽ là một nút thắt ngăn cản việc ứng dụng nó.
Họ đã thiết kế một ngôn ngữ truy vấn mới (theo cách của họ): “dễ tiếp cận hơn cho người học lập trình web mà không cần được đào tạo chính quy về toán học hoặc lập trình máy tính.”
Trước thời kỳ của Internet và máy tính cá nhân chủ nghĩa, khi mà ngôn ngữ lập trình C được giới thiệu với thế giới, hai nhà khoa học máy tính trẻ nhận ra rằng, “phần lớn sự thành công của ngành công nghiệp máy tính phụ thuộc vào việc phát triển một nhóm người dùng phổ thông khác, ngoài việc đào tạo các chuyên gia máy tính”.

Họ muốn một tiếng nói truy nã dễ hiểu như tiếng Anh, và cũng bao gồm hệ quản trị cơ sở dữ liệu và thao tác.
Kết quả là SQL, lần trước nhất được giới thiệu với thế giới vào năm 1974. Trong vài thập kỷ sau đó, SQL đã chứng minh được sự phổ biến rộng rãi. Khi các cơ sở dữ liệu quan hệ như System R, Ingres, DB2, Oracle, SQL Server, PostgreSQL, MySQL (và nhiều hơn nữa) đã tiếp quản ngành công nghiệp phần mềm, SQL đã trở thành tiếng nói ưu việt để tương tác đến cơ sở dữ liệu với cộng đồng đông đảo và hệ sinh thái cạnh tranh.
(Đáng buồn, Raymond Boyce chưa bao giờ có thời cơ chứng kiến sự thành công của SQL và chết vì chứng phình mạch não 1 tháng sau khi đưa ra một trong những bài thuyết trình SQL sớm nhất, chỉ 26 tuổi, để lại vợ và con gái).
Trong một tuổi, tuồng như SQL đã hoàn tất thành công sứ mệnh của nó. Nhưng sau đó Internet ra đời.

Phần 2: NoSQL cự

Trong khi Chamberlin và Boyce đang hội tụ phát triển SQL, họ không nhận ra là nhóm kỹ sư thứ hai ở California khi ấy đang làm việc cho một dự án khác mà sau đó nó lan rộng và đe doạ sự tồn tại của SQL. Dự án đó là ARPANET, và vào ngày 29 tháng 10 năm 1969, nó đã ra đời.
Nhưng SQL đã đích thực tốt cho đến khi một kỹ sư khác xuất hiện và phát minh ra World Wide Web, vào năm 1989.
Giống như một loại cỏ dại, Internet và Web đã phát triển mạnh mẽ, phá vỡ thế giới của chúng ta bằng nhiều cách, nhưng đối với cộng đồng dữ liệu, nó gây ra một vấn đề nhức đầu: nhiều nguồn tạo ra dữ liệu mới với khối lượng và vận tốc cao hơn trước.
Khi Internet tiếp chuyện phát triển và phát triển, cộng đồng phần mềm đã phát hiện ra rằng cơ sở dữ liệu quan hệ lúc đó không thể xử lý nổi. Có một sự hỗn loạn, kiểu như hàng triệu database thốt nhiên kêu khóc và bị quá tải.

Sau đó, hai gã khổng lồ mới của Internet đã đột phá và phát triển các hệ thống non-relational phân tán của riêng họ để giúp giải quyết vấn đề này: MapReduce (xuất bản năm 2004) và Bigtable (xuất bản 2006) của Google và Dynamo (xuất bản năm 2007) của Amazon.

Các tài liệu này đã dẫn tới nhiều cơ sở dữ liệu non-relational khác, bao gồm Hadoop (dựa trên MapReduce paper, 2006), Cassandra (lấy cảm hứng từ cả hai bài báo Bigtable và Dynamo, 2008) và MongoDB (2009). vị đây là những hệ thống mới được viết từ đầu, họ cũng tránh SQL, dẫn đến sự gia tăng của phong trào NoSQL.

Thật dễ hiểu vì sao: NoSQL mới và sáng bóng; hứa về scale và power; nó dường như là con đường nhanh chóng để thành công về kỹ thuật. Nhưng rồi những vấn đề bắt đầu xuất hiện.
Các nhà phát triển sớm nhận ra rằng không có SQL đích thực là khá hạn chế. Mỗi cơ sở dữ liệu NoSQL cung cấp ngôn ngữ truy vấn duy nhất của riêng mình, có tức thị nhiều tiếng nói hơn để học (và dạy cho đồng nghiệp của bạn); gia tăng sự khó khăn trong việc kết nối các cơ sở dữ liệu này với các ứng dụng, dẫn đến dính theo hàng tấn code; thiếu hệ sinh thái của bên thứ ba, đòi hỏi các công ty phải phát triển các công cụ vận hành và biểu diễn dữ liệu riêng.
Những ngôn ngữ NoSQL mới cũng không được phát triển đầy đủ. tỉ dụ, để thêm tính năng JOIN của SQL vào NoSQL rất phức tạp ở tầng application. Sự thiếu JOINs cũng dẫn đến sự không thông thường, dẫn đến sự sụp đổ và kiêm toàn của dữ liệu.
Một số cơ sở dữ liệu NoSQL đã thêm các ngôn ngữ truy tìm “giống SQL”, như CQL của Cassandra. Nhưng điều này thường gây ra vấn đề bợt hơn. sử dụng một giao diện gần giống với một cái gì đó phổ thông hơn, thực thụ ám ảnh về mặt tinh thần: các kỹ sư không biết những gì đã được tương trợ và những gì không được.
Một số trong cộng đồng đã nhận thấy những vấn đề với NoSQL từ sớm (tỉ dụ, DeWitt và Stonebraker trong năm 2008). Theo thời gian, ngày càng có nhiều nhà phát triển phần mềm nhận vờ này.

Phần 3: Sự trở lại của SQL

Ban đầu bị hấp dẫn bởi “lực lượng bóng tối”, cộng đồng phần mềm bắt đầu nhìn thấy ánh sáng và trở lại với SQL.
trước nhất là các giao diện SQL bên trên Hadoop/Spark, hướng NoSQL thành “Not only SQL”
Sự phát triển của NewSQL: cơ sở dữ liệu mới, có thể mở rộng và hỗ trợ SQL. H-Store (xuất bản năm 2008) của MIT và các nhà nghiên cứu ở Brown lần đầu tiên thực hiện mở mang các cơ sở dữ liệu OLTP . Google đấu dẫn đầu việc nhân rộng cơ sở dữ liệu có giao diện SQL với bản bẩm trước hết của họ (xuất bản năm 2012) (những tác giả bao gồm các tác giả gốc MapReduce), tiếp theo là những người tiên phong khác như CockroachDB (2014).
Đồng thời, cộng đồng PostgreSQL bắt đầu hồi sinh, bổ sung các cải tiến quan trọng như kiểu dữ liệu JSON (2012) và một loạt các tính năng mới trong PostgreSQL 10: tương trợ tốt hơn cho phân vùng và replication, hỗ trợ lùng văn bản toàn diện cho JSON và hơn thế nữa (dự định phát hành cuối năm nay). Các công ty khác như CitusDB (2016) và Yours Truly (TimescaleDB, phát hành trong năm nay) đã tìm ra những cách mới để mở rộng PostgreSQL cho các data workload chuyên biệt.
Trên thực tại, hành trình phát triển TimescaleDB của chúng tôi phản chiếu chặt chẽ con đường mà ngành công nghiệp đã trải qua. Các phiên bản nội bộ trước tiên của TimescaleDB bao gồm ngôn ngữ truy vấn SQL-like, gọi là “ioQL.” Vâng, chúng tôi cũng bị cám dỗ bởi mặt tối: việc xây dựng tiếng nói tầm nã riêng của chúng tôi có cảm tưởng là sẽ mạnh mẽ. Tưởng như dễ dàng, chúng tôi lại sớm nhận ra rằng chúng ta phải làm nhiều việc hơn: ví dụ, quyết định cú pháp, xây dựng các kết nối khác nhau, giáo dục người dùng … Chúng tôi cũng tìm thấy chính mình liên tục kiêng kị cú pháp thích hợp với tầm nã mà chúng tôi đã có thể biểu lộ bằng SQL, cho một ngôn ngữ truy vấn mà chúng tôi đã chính tay viết ra!

Một ngày chúng tôi nhận ra rằng xây dựng tiếng nói truy hỏi riêng của chúng tôi không có ý nghĩa. Đó chính là chìa khóa dẫn đến chấp nhận SQL. Và đó là một trong những quyết định thiết kế tốt nhất mà chúng tôi đã thực hiện. tức tốc một thế giới hoàn toàn mới mở ra. ngày nay, dù rằng TimescaleDB chỉ là một cơ sở dữ liệu 5 tháng tuổi, người dùng có thể sử dụng trong production và nhận được bít tất các điều tuyệt: phương tiện trực giác (Tableau), kết nối với các ORM phổ quát, một loạt các tools và các tùy chọn sao lưu, chỉ dẫn phong phú và trả lời syntax trực tuyến, v.v.

Nhưng đừng tin chúng tôi. Hãy thử tìm hiểu về Google
Google rõ ràng là người tiên phong trong lĩnh vực cơ sở dữ liệu và cơ sở hạ tầng trong hơn một thập kỷ nay. Nó khiến chúng tôi để ý đến những gì họ đang làm.
Xem paper của Google(Spanner), phát hành cách đây chỉ bốn tháng (Spanner: Becoming a SQL System, May 2017), và bạn sẽ thấy rằng nó củng cố các phát hiện của chúng tôi.
ví dụ: Google đã bắt đầu xây dựng trên Bigtable, nhưng sau đó phát hiện ra rằng việc thiếu các vấn đề tạo SQL (nhấn mạnh trong tất các trích dẫn dưới đây của chúng tôi):

“dù rằng các hệ thống này cung cấp một số ích lợi của một hệ thống cơ sở dữ liệu, nhưng họ thiếu nhiều tính năng cơ sở dữ liệu truyền thống mà các nhà phát triển ứng dụng thường dựa vào. Một ví dụ quan yếu là một ngôn ngữ truy tìm mạnh mẽ, có nghĩa là các nhà phát triển phải viết mã phức tạp để xử lý và tổng hợp dữ liệu trong các vận dụng của họ. Do đó, chúng tôi đã quyết định biến Spanner thành một hệ thống SQL đầy đủ tính năng, với việc thực hành truy tìm được tích hợp chém với các tính năng kiến trúc khác của Spanner (như tính nhất quán mạnh mẽ và nhân rộng toàn cầu). “

Sau đó trong bài báo họ đấu feature các lý do chuyển đổi từ NoSQL sang SQL:

API gốc của Spanner đã cung cấp các NoSQL methods để tra hỏi và quét dãy các bảng riêng lẻ và xen kẽ nhau. Trong khi NoSQL methods cung cấp một path đơn giản để khởi chạy Spanner, và tiếp tục hữu ích trong các kịch bản thu hồi kết quả đơn giản, SQL đã cung cấp giá trị bổ sung đáng kể trong việc biểu lộ các mẫu truy cập dữ liệu phức tạp hơn và đẩy tính toán vào dữ liệu.

Bài báo cũng biểu thị cách họ không ngừng nghỉ vận dụng SQL vào Spanner, mở mang ra tuốt phần còn lại của Google, nơi mà nhiều hệ thống hiện thời có chung một phương ngữ SQL:

SQL engine của Spanner san sớt một phương ngữ SQL phổ biến, được gọi là “Standard SQL”, với một số hệ thống khác của Google bao gồm các hệ thống nội bộ như F1 và Dremel (các hệ khác) và các hệ thống bên ngoài như BigQuery …
Đối với người dùng Google, điều này làm giảm rào cản làm việc giữa các hệ thống. Nhà phát triển hoặc nhà phân tách dữ liệu có thể viết SQL trong cơ sở dữ liệu Spanner để transfer sự hiểu biết của họ về ngôn ngữ này sang Dremel mà không quan tâm đến sự khác biệt nhỏ về syntax, xử lý NULL, v.v …

Sự thành công của cách tiếp cận này nói lên bản thân nó. Spanner đã là “suối nguồn chân lý” cho các hệ thống lớn của Google, bao gồm cả AdWords và Google Play, trong khi khách hàng tiềm năng của đám mây quan hoài đến việc dùng SQL.
Xét rằng Google đã giúp khởi xướng phong trào NoSQL, thì điều đáng để ý là ngày nay, họ đang nắm bắt SQL .

Điều này có ý nghĩa gì đối với mai sau của data?

Trong computer networking, có một khái niệm gọi là “narrow waist”.
Ý tưởng này xuất hiện để giải quyết một vấn đề mấu chốt: Trên bất kỳ thiết bị nối mạng nào, hãy hình dong một ngăn xếp, với các lớp phần cứng ở dưới cùng và các lớp phần mềm trên đầu. Có thể tồn tại một loạt các phần cứng mạng; na ná có thể tồn tại một loạt các phần mềm và áp dụng. Cần một cách để bảo đảm rằng bất kể vấn đề về phần cứng, phần mềm vẫn có thể kết nối với mạng; và bất kề vấn đề về phần mềm, phần cứng mạng vẫn biết cách xử lý các yêu cầu mạng.
Trong thế giới mạng, vai trò của narrow waist được thực hành bởi Internet Protocol (IP), đóng vai trò như một giao diện chung giữa các giao thức mạng cấp thấp được thiết kế cho mạng cục bộ và các giao thức vận dụng và giao thức cấp cao hơn. Giao diện chung này đã trở thành tiếng nói giữa các máy tính, cho phép các mạng kết nối, thiết bị truyền thông và “mạng lưới các mạng” này phát triển thành Internet phong phú và đa dạng ngày nay.

Chúng tôi tin rằng SQL đã trở nên narrow waist để phân tích dữ liệu.

Chúng ta đang sống trong thời đại mà dữ liệu đang trở thành “nguồn tài nguyên quý báu nhất thế giới” (The Economist, tháng 5 năm 2017). Kết quả là, chúng ta đã chứng kiến ​​sự bùng nổ của các cơ sở dữ liệu chuyên dụng Cambri (OLAP, time-series, document, graph, etc.), các dụng cụ xử lý dữ liệu (Hadoop, Spark, Flink), data buses (Kafka, RabbitMQ). ngày một nhiều ứng dụng cần dựa vào hạ tầng cơ sở dữ liệu này, kể cả là các công cụ trực quan hoá dữ liệu của bên thứ ba (Tableau, Grafana, PowerBI, Superset), các web frameworks (Rails, Django) hay các custom-built data-driven applications.
Giống như networking, stack phức tạp với cơ sở hạ tầng ở dưới cùng và các ứng dụng bên trên. thường ngày, chúng ta sẽ viết rất nhiều code để làm cho stack hoạt động và chúng cần phải được maintain.

Những gì chúng ta cần là một giao diện chung cho phép các phần của stack này liên lạc với nhau. Một điều gì đó đã được chuẩn hóa trong ngành. Cái gì đó sẽ cho phép chúng ta đàm đạo trong / ngoài các lớp khác nhau với thất thoát tối thiểu.

Đó là sức mạnh của SQL. Giống như IP, SQL là một giao diện chung.

Nhưng SQL đích thực khác biệt hơn IP. vì dữ liệu cũng được phân tách bởi con người. Và đúng với mục đích mà người sáng tạo ra SQL gán cho nó thuở Ban đầu: SQL có thể đọc được.
SQL hoàn hảo? Không, nhưng đó là ngôn ngữ mà hầu hết chúng ta biết. Và mặc dù đã có các kỹ sư đang làm việc trên giao diện ngôn ngữ thiên nhiên hơn, những hệ thống này sau đó sẽ kết nối với những gì? Yes, SQL.

vì thế, có một lớp ở trên cùng của stack. Và lớp đó là chúng ta.

SQL đã trở lại

SQL đã trở lại. vì chưng thế giới đang đầy ắp dữ liệu. Nó vây quanh và kết liên mọi người. Lúc đầu, chúng ta dựa vào các cảm quan của con người và hệ tâm thần cảm giác để xử lý nó. hiện giờ phần mềm và các hệ thống phần cứng cũng đủ sáng ý, sự phức tạp của các hệ thống lưu trữ, xử lý, phân tách…chúng thu thập dữ liệu càng ngày càng nhiều hơn để hiểu rõ hơn về thế giới của chúng ta.

Thứ Năm, 10 tháng 5, 2018

Công cụ kiểm thử phần mềm Nhà phát triển QASymphony tăng 5 triệu$

QASymphony, hãng sản xuất các dụng cụ kiểm thử phần mềm như qTest, đã quyên được 5 triệu USD. Công ty có văn phòng tại Atlanta, Georgia và thành thị Hồ Chí Minh, Việt Nam sẽ sử dụng vốn để phát triển và tiếp thị sản phẩm.

 

Khoản tài trợ này được dẫn dắt bởi các đối tác cổ phần của Fulcrum với sự dự của nhà đầu tư BIP Capital trở về và nâng tổng số tiền của QASymphony lên tới 7,5 triệu đô la.

 

 

 

Các nhà sáng lập QASymphony Vũ Lâm và Josh Lieberman cũng điều hành KMS Technology, một nhà cung cấp dịch vụ CNTT và nhà phát triển phần mềm có hội sở tại đô thị Hồ Chí Minh. Trong năm 2010, hai công ty phần mềm bắt đầu chuyển từ phương pháp “thác nước”, phân chia phát triển phần mềm thành các giai đoạn biệt lập được hoàn thành trước khi bắt đầu một phương pháp “nhanh nhẹn”. các phần của dự án.

 

Giám đốc điều hành Dave Keil nói với TechCrunch trong một email rằng nhiều nền móng kiểm thử phần mềm quá chậm cho phương pháp nhanh nhẹn, vì vậy họ đã tạo ra QASymphony vào năm 2011 để cung cấp cho khách hàng những phương tiện ăn nhập hơn. Công ty được tách khỏi KMS trong năm 2014.

 

Khách hàng của QASymphony hiện bao gồm Adobe, Dell, Verizon và Visa. Keil nói rằng công ty đã tăng doanh thu hàng năm từ 400.000 USD lên 3 triệu USD và dự kiến ​​sẽ sớm đạt 10 triệu USD.


QASymphony

 

qTest, được dùng bởi các công ty như Zappos và Salesforce, được thiết kế để cung cấp cho nhà phát triển một vị trí tụ hội để lưu trữ và quản lý tất cả các trường hợp kiểm thử phần mềm của họ và tích hợp với các phương tiện như JIRA của Atlassian, VersionOne và CA Agile Central. qTest eXplorer ghi lại mọi thứ mà trình soát phần mềm thực hiện trong một phiên để chúng không phải ghi lại quờ các thay đổi bằng tay.

 

 

Thực tế là nó được thiết kế riêng cho phương pháp nhanh là một trong những cách chính các sản phẩm QASymphony như qTest phân biệt với các đối thủ cạnh tranh bao gồm trọng tâm Chất lượng HP, IBM Rational và Borland. Những người sáng lập của công ty cũng nói rằng một số khách hàng của họ đã chuyển sang QASymphony từ trọng điểm Chất lượng HP vì phí nền tảng của nó ít hơn và tích hợp thông hơn với các công cụ như JIRA.

 

 

 

Thứ Ba, 8 tháng 5, 2018

PHÁT TRIỂN APP 4.0 VỚI ANDROID

Nhằm mục tiêu trang bị tri thức về Xây dựng áp dụng (App) và Game trên nền móng Android cho những bạn yêu thích & ham Lập trình Android... NIIT-ICT Hà Nội kết hợp với doanh nghiệp tổ chức khóa đào tạo cấp tốc:

PHÁT TRIỂN APP 4.0 VỚI ANDROID
Link đăng ký: http://bit.ly/khoa-hoc-android-free-thang-5

1. Thời lượng khoá học

- 02 buổi - 06h (3h/buổi), học vào 14/5 và 15/5
- Khai giảng: 18h00 ngày 14/05/2018, tại phòng học tầng 3, tòa nhà 25T2, đường Nguyễn Thị Thập, Cầu Giấy, Hà Nội
2. Đối tượng và đề nghị đầu vào
- quờ các đối tượng đều có thể tham gia khoá học
- Không đề nghị tri thức đầu vào, đào tạo từ con số 0!
3. Nội dung khoá học
Buổi 1:
- thiên hướng công nghệ mới trong hiện tại và ngày mai
- Giới thiệu kiến trúc tổng quan và các đặc điểm của Android
- thời cơ nghề nghiệp với Android
- Demo các sản phẩm Android điển hình
- chỉ dẫn thực hiện tạo App Android
Buổi 2:
- chỉ dẫn các bước phát triển game với Android
- thực hành phát triển game với Android.
4. Cam kết sau khóa học:
- 100% học viên thiết kế được App cơ bản và Game nhỏ sau khóa học
- Từ tri thức nền móng đó các bạn có thể phát triển App lớn và Game lớn hơn
- 30% học lý thuyết, 70% học thực hiện trong khóa học
- giảng sư từ doanh nghiệp có gần 10 năm kinh nghiệp lập trình Android
- Không phát sinh bất cứ 1 khoản phí tổn nào từ học phí - học liệu...
Số lượng có hạn, bạn chỉ cần đăng ký ngay: http://bit.ly/khoa-hoc-android-free-thang-5

Thứ Tư, 2 tháng 5, 2018

7 cuốn sách hay gối đầu giường dành cho dân lập trình

 Để trở thành một software developer thành công thì bạn sẽ phải đọc một lượng sách nhất quyết về nó. tuy thế, với sự phát triển của internet, giờ đây bạn có tới hàng ngàn đầu sách khác nhau với chất lượng lập lờ. Do đó bài viết này sẽ liệt kê ra 7 cuốn sách được đánh giá là tốt nhất dành cho bất cứ ai muốn theo con đường lập trình phần mềm. 

 

 
Code Complete: A Practical Handbook of Software Construction, Second Edition 

Bạn đã học được làm thế nào để code, nhưng liệu bạn đã học khi nào thì nên viết code và viết về gì chưa? Hơn nữa, có một số điều mà bạn cần phải biết mà thường lại bị bỏ qua bởi nhà trường. Có thể nói cuốn sách này chưa đựng “vàng”.

 
 
The Mythical Man-Month 

 

Hầu hết các vấn đề sẽ xảy ra trong một dự án sẽ được giải thích trong cuốn sách này. Tôi khuyên bạn nên đọc nó trước khi thật sự bắt tay vào làm.
 

 

 

 
The Pragmatic Programmer: From Journeyman to Master 

Là phần tiếp theo của Code Complete và hao hao như cuốn trên, nó cũng chứa đựng đầy tri thức giá trị. 
 
 Design Patterns: Elements of Reusable Object-Oriented Software 

Nó giúp bạn học các meta-pattern của chương trình. Điều này sẽ cho phép bạn hà tằn hà tiện thời kì lẫn công sức khi phát triển một sản phẩm. Hơn thế, Design Pattern sẽ cho ban có nghĩ suy về mọi thứ theo đúng cách.
 

 
 Extreme Programming Explained 

Cuốn sách này dạy cho bạn cách phát triển phần mềm hiệu quả. Đừng lo lắng, rất ít công ty thực sự đòi hỏi phải lập trình cặp.
 

 
 Refactoring: Improving the Design of Existing Code 

Ước mơ của bạn về việc tạo ra bất cứ thứ gì từ con số không có thể sẽ rất khó. Hầu như mọi thứ đều đã có sẵn. Bạn sẽ dành phần đông thời gian làm việc của mình để giải quyết đống code được tạo ra bởi những người đi trước. Và sự thực là bạn hiếm khi có đủ thời kì để viết lại. Thay vào đó, hãy tìm hiểu cách tái cấu trúc nó.
 

 
 UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition 

Khoảng 70% của UML toàn là những thứ vô ích thừa mứa nhưng lại được bán với giá trên trời. Cuốn sách này khuyên bạn đừng nên phí thời gian đi sâu vào nó nhưng phải nắm bắt những điều cơ bản của UML.

Thứ Ba, 24 tháng 4, 2018

✪ ✪ ✪ TỌA ĐÀM: CÔNG NGHỆ LẬP TRÌNH WEB - HIỆN TẠI & TƯƠNG LAI

Chúng ta đều có thể thấy ngành công nghiệp phát triển web thay đổi nhanh chóng với tốc độ chóng mặt. Nếu đã bước chân vào thế giới lập trình web này, bạn sẽ phải liên tục cập nhật và đuổi kịp những công nghệ và khuynh hướng phát triển mới nhất. Những công nghệ bạn đã, đang và sẽ dùng sẽ chính là thế mạnh tiềm năng để bạn phát triển trong ngành. Điều quan yếu nhất đó là hãy liên tục cập nhật và "nghe ngóng" những thay đổi mới nhất từng giờ.

Chính vì vậy chương trình TỌA ĐÀM: CÔNG NGHỆ LẬP TRÌNH WEB - ngày nay & ngày mai sẽ một phần nào đó giúp các bạn có được những cái nhìn sâu sắc, những tri thức có ích cùng cơ hội việc làm trong chương trình.

Đăng ký ngay tại đây

✪ NỘI DUNG CHƯƠNG TRÌNH

 ⏩ Chủ đề: CÔNG NGHỆ LẬP TRÌNH WEB - HIỆN TẠI & TƯƠNG LAI

 🕢 Thời gian: 18h30 - 21h00

 📆 05/05/2018

 🗽 Hội trường P5, tầng 3, tòa nhà 25T2, Nguyễn Thị Thập, Hà Nội

 👉 Số lượng tham dự: 80 người

================

 👉 Khách mời chia sẻ:

 👤 Ông Ông Cao Văn Việt (Project Technical Leader - FPT Software Services (FSS))

 👤 Ông Phạm Tuấn Dương (Team Leader - Chính quyền điện tử Công ty CNTT VNPT (VNPT IT))

 👤 Ông Mai Văn Hà - Trưởng phòng Công nghệ Công ty Thiên Hoàng Group)

================

 ☎️ Liên hệ: 0902 242 996

 📬 Email: info@niithanoi.vn

 🌏 Web: icthanoi.edu.vn

Thứ Hai, 23 tháng 4, 2018

4 lý do Javascript vẫn là ngôn ngữ lập trình bạn cần học

Javascript không phải là tiếng nói lập trình bình thường của bạn. Đối với một điều, đó là AF cũ trong thế giới của mã hóa - tạo ra cách trở lại vào năm 1995. Để tham khảo, đó là năm Hillary Clinton là đệ nhất phu nhân, và năm mà "Macarena" đã truyền. Nhưng trong khi Macarena hiện chỉ dành cho danh sách nhạc đám cưới, Java vẫn là một trong 5 tiếng nói lập trình phổ biến nhất để tìm hiểu, hơn 20 năm sau đó.

Nếu bạn là người mới đến với thế giới mã hóa, tầng sự đổi thay nghề, hoặc chỉ tò mò về vớ điều lập trình này, khóa học trực tuyến này được bán với giá chỉ 39 đô la là một khoản đầu tư lớn. Đây là lý do tại sao Javascript vẫn là một ngôn ngữ tót vời để tìm hiểu trong năm 2018:


1. Java là nơi trước hết
Theo Payscale, nhà phát triển Java nhàng nhàng kiếm được mức lương trung bình hơn 73 nghìn đô la mỗi năm. Và xem xét bạn nhãi ranh như thế nào, bạn chắc chắn sẽ vượt qua điều đó.

2. Nhu cầu là có
Có rất nhiều vai trò khác nhau đối với các lập trình viên Java - Nhà phát triển phần mềm, Nhà phát triển web, Lập trình viên web, Nhà phát triển vận dụng - và chúng liên tục có nhu cầu trên toàn thế giới. Từ các công ty đại chúng đồ sộ đến những người khởi nghiệp hai người trong nhà để xe của ai đó, mọi người đều cần một lập trình viên Java. Nhưng có lẽ bạn đang tự hỏi: Ai thực sự dùng Java? Ồ, chỉ các trang web như Netflix, Amazon và Google - nhưng chúng tôi chắc chắn bạn chưa bao giờ nghe nói về những trang web đó.

3. Hoàn toàn miễn phí
Java là mã nguồn mở
có nhẽ tin tốt nhất của vơ là Java dễ học (đối với một ngôn ngữ mã hóa) và siêu linh hoạt. Nó được dùng để xây dựng trang web, ứng dụng, máy chủ front-end, máy chủ back-end, trò chơi, dụng cụ chuyện trò trực tuyến và hơn thế nữa. Nó thậm chí là một ngôn ngữ mong muốn để phát triển các công nghệ mới như Internet of Things và có một API linh hoạt và mạnh mẽ. Không tệ đối với một ngôn ngữ nghe giống như hạt cà phê.

 

Bạn có thể đi sâu vào và bắt đầu tự mình khám phá Java, nhưng cách tốt nhất để tìm hiểu các nguyên tắc cơ bản là dự một khóa học. Chúng tôi khuyên bạn nên đi tuyến đường khóa học trực tuyến, vì nó không đề nghị bạn phải mặc quần và bạn không phải rời khỏi đi văng.

 

Gói trực tuyến gồm 10 khóa, 80 giờ trực tuyến này sẽ cung cấp cho bạn trải nghiệm thực tiễn về xây dựng vận dụng trong khi dạy bạn cách viết mã hiệu quả, sạch sẽ. Nó thường phí $ 740, nhưng bạn có thể nhận được nó chỉ với $ 39 ngay hiện giờ - một khoản tiện tặn lớn 94%. Và sau đó, tằn tiện thêm 20% bằng cách nhập mã phiếu giảm giá MADMARCH20.

Thứ Sáu, 20 tháng 4, 2018

Cách một dòng code đã thay đổi cuộc đời của tôi

 

Đó là năm 2012 và sự nghiệp của tôi vẫn không đi đến đâu. Ngày hôm đó, một đồng nghiệp của tôi, Otto Lombardo, đã chỉ cho tôi một dòng code độc nhất nhưng lại thay đổi cả thế cục tôi mãi mãi. Đây là câu chuyện về cách tôi trở thành một developer phần mềm.

Vốn từ nhỏ đã có thị hiếu với máy tính. Nhưng mọi chuyện chỉ thật sự bắt đầu khi tôi chuyển từ Argentina sang Mỹ lúc 15 tuổi, khi bố mẹ tôi mang cho tôi chiếc máy tính trước nhất, Sony PC màu đen. Quá tuyệt trần! Thời điểm đó cũng là lúc Internet nở rộ, và tôi luôn dành cả đêm để viết các trang web của tôi trong Notepad và tải nó lên AngelFire. Tôi thậm chí còn nhận được đĩa CD vàng (24 kt) với chữ kí của Bill Gates và Steve Ballmer làm quà tặng cho việc đã dự vào quá trình testing MSN. Đó là những ngày thật sự hạnh phúc của tôi.

một đôi năm sau, tôi đã có một cuộc phỏng vấn với một công ty máy tính ở New York và chính thức làm việc tại đó với vai trò là một kỹ sư mạng và phải nói rằng tôi có thể sửa bất kỳ vấn đề máy tính / mạng nào… nhưng bản thân lại không cảm thấy hạnh phúc vì điều đó. Giấc mơ của tôi luôn hướng tới việc sáng tạo ra những thứ mới mẻ nhưng giờ đây tôi nhận ra sự nghiệp 8 năm của mình lại là về việc tu bổ mọi thứ..

Và đó là khi mọi chuyện bắt đầu xảy ra. Một đồng nghiệp chỉ cho tôi một dòng code trong Delphi với khả năng cho in ra một tin nhắn với nội dung là “Xin chào Ricardo!” Thật tuyệt vời! tức khắc tôi biết mình muốn trở thành một developer phần mềm. Tôi về nhà, tải về delphi và trong vòng một tuần tôi học ngấu nghiến mọi thứ có thể từ nó. Thậm chí còn biết được nhiều thủ thuật mà ít người biết tới.

Nhưng vậy là không đủ đối với tôi. Và lần nữa tôi xin nhấn mạnh là mình đã may mắn khi một người bạn của tôi đã đề nghị học iOS “Bạn chỉ có thể tạo một app và đăng lên trong App Store!”. Tuy vậy, tôi mất khoảng một năm để tìm hiểu vì vốn không có nền móng trong lập trình từ trước. Do đó mà việc dành hàng giờ đồng hồ chỉ để đọc sách, xem video gần như chiếm hết khoảng thời gian của tôi.

Nhờ đó mà tôi đã có thể lập trình sản phẩm trước hết của bản thân và giúp cho tôi kiếm được công việc trước nhất…

Tôi sống ở Queens, NY và công việc trước tiên của tôi với vai trò iOS developer là ở Summit, NJ. Dù vậy, tôi phải dìm rằng trải nghiệm này không hề dễ dàng tí nào nhưng công việc đó đã giúp tôi khiếm được cơ hội khác gần nhà hơn với chỉ khoảng 40 phút đi lại ở Manhattan, NY. Cùng thời khắc đó, tôi cũng có giành thắng lợi trong một cuộc thi phát triển với tiền thưởng lên đến 20.000 đô la.

Tôi cũng nhận được chứng chỉ của đại học New York và sau đó được mời làm diễn giả vài sự kiện cũng như được thuê làm cho một số project khác nhau. Đây là cuộc sống mà tôi mong ước, tôi đang sống giấc mơ Mỹ!
 


Tôi hiện đang làm việc tại MediPortal, một nhóm muốn tạo ra sự đột phá trong ngành y tế. Tôi đảm đương mọi việc liên tưởng tới mảng di động. Với giờ giấc khá tự do khi tôi có thể làm việc vào ban đêm, trong ngày thậm chí là cuối tuần.

Tôi xoành xoạch nghĩ đến những câu nói đầy cảm hứng của Steve Jobs:

Nếu có điều gì đó tôi muốn đạt được hiện giờ thì đó chính là khích lệ ai đó giống như Otto đã khích lệ tôi. Hãy ra ngoài và bắt đầu sống với ước mơ của bạn. Không có gì bạn không thể làm và bạn là người độc nhất ngăn trở nó xảy ra. Hãy điên và tự do!

Thứ Tư, 18 tháng 4, 2018

10 lời khuyên các CTO gửi đến lập trình viên



Những lời khuyên sau đến từ các CTO sẽ giúp các lập trình viên có được quan điểm rộng hơn về kinh doanh, và sử dụng các dụng cụ một cách hạp 

Paul McGough, CTO của Qwyit giải thích về những xung đột nảy sinh giữa CTO và các thành viên team. 

McGraw nói: “trách nhiệm quản lý tiến độ công việc là của người leader. Nhưng sự kết hợp thực sự đòi hỏi nổ lực của mỗi thành viên trong team” 

1. Hãy quan sát bức tranh toàn cảnh 

Ben Johnson, CTO của Obsidian Security, các lập trình viên thỉnh thoảng gặp khó khăn khi quan sát thấy bức tranh toàn cảnh. 

Johnson cho biết: “Khi bạn gặp phải vấn đề, rất khó để có cái nhìn toàn cảnh toàn cảnh. Mặt khác, các CTO thường không biết những gì đang được đề cập trong cuộc trò chuyện của team hoặc những người dự cảm thấy thế nào nếu họ không giao thông. Đòi hỏi phải đồ mưu hoạch và điều chỉnh để tối ưu hóa và xếp đặt liên tục”.

2. Tập trung vào nhiệm vụ chính 

Khi các giải pháp dành cho lập trình viên nhiều hơn và dễ dàng hơn, họ dễ bi xa rời nhiệm vụ chính McGough nói. 

Các lập trình viên muốn thêm các nút bấm, nhưng trước hết họ phải tự hỏi mình làm thế nào để phục vụ cho mục tiêu kinh dinh. C ác lập trình viên thường làm theo ý họ muốn: Nói chung, điều này làm họ xa khỏi đích ban sơ. “ 

Hãy hỏi “tại sao” trước khi thêm một tính năng mới làm cho quá trình này rõ ràng hơn và giúp team hoạt động tốt hơn, tạo ra một kết quả tốt hơn, McGough nói.

3. Nhớ bảo mật 

Theo James Goepel, CTO, phó chủ tịch của ClearArmor Corporation, từ góc độ quản lý rủi ro, các lập trình viên cần bảo đảm an ninh cho phần mềm mà họ tạo ra phê duyệt việc sử dụng các kĩ thuật mã hóa tốt. 

Goepel nói: “Giống như những tiếng nói mới, hoặc các cách tiếp cận triết học mới để code Nó có thể có ảnh hưởng lớn đến công ty, và các lập trình viên có bổn phận trực tiếp bảo đảm nó được giải quyết một cách đầy đủ và hợp lý.”

4. Không có một giải pháp độc nhất vô nhị 

Hector Aguilar, CTO và phó chủ tịch của Okta nói: “Các lập trình viên nên lên tiếng và thách thức các giả thuyết, vị có thể có hàng chục cách khác để phát triển sản phẩm hoặc khắc phục sự cố. 

“Mọi lập trình viên nên biết rằng không chỉ có một giải pháp duy nhất nào cho bất kỳ vấn đề cố định”, Aguilar nói. “Khắc phục sự cố là một nghệ thuật, không phải là khoa học, và phải có sự hợp nhất thông tin từ tất tật các thành viên trong team – cấp dưới và cấp cao – để giải quyết những thách thức và vượt quá mục tiêu.”

5. Tránh lãng phí thời gian 

Lee cho biết: “Tôi đã dành cả trái tim vào các ứng dụng trải qua sự quá trình bảo đảm chất lượng chi tiết, chỉ để không có bất cứ sự đổi thay chiến lược vào phút chót. “Nhưng điều quan trọng cần nhớ là sản phẩm không quan yếu đối với sự nghiệp của bạn như là tri thức và kinh nghiệm mà bạn thu thập chuẩn y quá trình viết code, giống như thường nhạc cụ, là một thứ mà bạn cảm thấy tốt hơn. Đừng để một chương trình làm mất sự tập hợp vào những gì bạn sẽ đạt được . “ 
6. Không tin cẩn các giải pháp “kỳ diệu” 

Các lập trình viên trẻ có thể tìm thấy các thư viện mã nguồn mở và nghĩ rằng chúng sẽ tự động làm cho những vấn đề phức tạp trở thành đơn giản, Lee nói. Tuy nhiên, họ cần phải nhìn lại mã nguồn và xem nó được duy như thế nào, và điều gì sẽ xảy ra nếu họ đổi thay nó. 

Ông Lee nói: “Dùng của bên thứ ba thường đi kèm với hiểu biết về gia công phần mềm, và đó là một hành động nguy hiểm chỉ đơn giản giả định rằng một người nào đó đã xác định và rà kỹ lưỡng tất các trường hợp rìa có thể xuất hiện trong áp dụng của bạn. “Hãy nhìn sâu vào bên dưới, cảm nhận về chất lượng code, bổ sung những khoảng trống trong kiến thức và chuẩn bị để làm quen với việc debug và đổi thay khi có thời gian.”

7. Làm thế nào để thực hành đổi thay trên stack 

Sean Suchter nói: “Thường thì các kỹ sư biết làm thế nào để thay đổi các component mà chúng được sử dụng, và khi có các tính năng đòi hỏi phải đổi thay trên nhiều phần của stack, cách độc nhất vô nhị để thực hành dự án là phải có nhiều nhân viên biết về nó, CTO và đồng sáng lập của Pepperdata cho biết. 

“Các kỹ sư thẳng tính liên kết nhiều phần của stack trông giống như” 10 kỹ sư “, Suchter nói. “Nếu có thể cho phép nhiều kỹ sư làm việc, rất nhiều tính năng mà tuồng như khó làm được dễ dàng hơn.”
  
8. Đừng quá tin tưởng.# vào framework 


“Framework có thể giúp bạn tiết kiệm thời gian, nhưng đặc biệt nếu bạn là người mới, chúng có thể dễ dàng làm cho bạn trở thành tù với những hạn chế được thừa kế, các vấn đề về hiệu suất, các lỗ hổng bảo mật, “Lee nói. “Trước khi đi toàn bộ trong một framework, hãy bảo đảm rằng bạn hiểu xác thực những gì bạn đang kinh doanh”

9. Tính năng hoàn chỉnh chưa phải là kết thúc 

John Kodumal, CTO và đồng sáng lập LaunchDarkly cho biết “Tính năng hoàn thiện” chỉ khoảng 10% đoạn đường. 

“Là một nhà phát triển, bạn cũng cần phải suy nghĩ về những gì đang xảy ra trong thời kì, và bạn nên thường xuyên quan sát code,” Kodumal nói. “Một vài năm trước đó có lẽ là tuyên bố vỡ hoang đơn giản, nhưng hiện nay nó tương trợ các công cụ quan sát được và giám sát, tính năng gắn cờ, và nhiều hơn nữa.” .

10. Có thể có lý do bạn không có quyền truy cập vào một số thông tin khăng khăng 

Mike Duensing, CTO và phó chủ tịch của Skuid cho biết: “Các CTO là một phần của nhiều kênh thông tin của một công ty, tình huống của nhà đầu tư, các kế hoạch chiến lược, các sự kiện sắp xảy ra. 

“Một số vấn đề có thể sắp xảy ra, và một số chưa. Bạn ước bạn có thể đưa mọi người vào những gì đang diễn ra, nhưng nó không thể”, Duensing nói. Cách tiếp cận tốt để giải quyết vấn đề này là hãy có tương tác tốt và cung cấp cho bạn các kỹ sư nhiều thông báo nhất có thể và vài lý do vì sao công việc của họ được ưu tiên”
 

Thứ Ba, 17 tháng 4, 2018

Facebook yêu cầu người dùng cài đặt lại bảo mật trong Facebook Messenger trước ngày 25/5 tới

Facebook đang yêu cầu mọi người xem xét lại cài đặt bảo mật tại Messenger nhằm né tránh Luật bảo vệ dữ liệu của Châu Âu, được áp dụng vào ngày 25/5 tới. Có vẻ như công ty đang lo sợ và hoang mang sau cuộc điều trần vừa qua.

Sau khi buổi điều trần vừa chấm dứt, cộng với nỗi lo sợ luật mới về bảo vệ dữ liệu sẽ được Châu Âu sẽ đặt ra vào ngày 25/05 tới, Facebook đã bắt đầu đẩy thông tin tới người dùng tại Messenger, yêu cầu mọi người xem xét lại cài đặt bảo mật.

thông báo này đã xuất hiện tại vận dụng Messenger trên điện thoại và chiếm tuốt tuột màn hình, với nội dung đầy đủ: "Cập nhật quan trọng - Hãy xem lại cài đặt dữ liệu của bạn trước ngày 25/05 để nối dùng Messenger".

Nếu bạn nhấp chuột vào "Review Now - Xem lại ngay hiện thời" thì một loạt cài đặt cho Facebook Messenger trên điện thoại sẽ hiện ra, thế nhưng rất nhiều người dùng đã không thấy hiệu quả tích cực khi cập nhật. Điều đó cho thấy có thể Facebook vẫn đang ở trong chế độ thử nghiệm trước khi cho ra phiên bản đầy đủ chính thức.

 

 

Luật GDPR từ Châu Âu đang khiến gã đồ sộ Facebook sợ hãi

Sở dĩ Facebook lưu ý người dùng mốc thời gian 25/05 là vì đây sẽ là ngày mà Quy chế bảo vệ dữ liệu tổng thể (GDPR) của Châu Âu được áp dụng. Đặc biệt dành cho các công ty công nghệ cao chuyên dùng số lượng dữ liệu của người dùng để chạy quảng cáo như Google và Facebook.

Luật mới sẽ nhắm đến bất cứ bên thứ 3 nào đang sở hữu dữ liệu người dùng được xử lý bởi văn phòng của Facebook tại Ailen và những công ty khác nằm ngoài khu vực EU. GDPR cũng cung cấp cho người dùng quyền kiểm soát lượng dữ liệu của mình trên Facebook, cũng như việc dữ liệu đó được dùng vào việc gì.

Đối với các công ty không tuân thủ luật này có thể bị phạt tới 4% doanh thu hàng năm, song song các cơ quan giám sát dữ liệu tại mỗi nhà nước thành viên EU sẽ có thêm nhiều quyền hạn hơn, nhằm xử lý các công ty có độ bảo mật lỏng lẻo.

Một trong những điểm nhấn quan trọng của GDPR là phải có sự đồng ý rõ ràng từ người dùng. Tuy nhiên Facebook lại nằm vào trường hợp đặc biệt, thông thường công ty sẽ hỏi bạn có vui lòng chia sẽ những dữ liệu như ý kiến chính trị, cội nguồn chủng tộc hay dân tọc, dữ liệu sinh trắc, sức khỏe, thậm chí là khuynh hướng dục tình hay không. Nhưng luật sư Mark McCreary nhận định rằng đây không phải là đề nghị sự đồng ý từ người dùng, mà là những câu hỏi "gây rối", làm phiền thì đúng hơn.

Chính vì điều này mà Facebook đã có động thái "đặt nặng" công tác bảo mật lên người dùng bằng việc "cài đặt lại bảo mật trước ngày 25/05".
Liệu sự chuẩn bị tỉ mỉ của Facebook có kịp trước ngày 25/05 hay không?

ngày nay Facebook đang chuẩn bị để đối mặt với Quy định mới bằng cách cải tổ lại các tính năng và nguồn dữ liệu, với sự rứa của hàng loạt các giám đốc điều hành cao cấp về sản phẩm, thiết kế, kinh nghiệm người dùng, chính sách bảo mật cho cả Instagram và WhatsApp.

Cụ thể là Facebook sẽ có thêm các phím bật/tắt bảo mật đơn giản và nhanh hơn. Công ty sẽ làm rõ các chính sách bảo mật và giải thích cách mình dùng dữ liệu để điều chỉnh các bài đăng, quảng cáo, đề xuất trang và bạn bè. Cũng như cách hiển thị quảng cáo như thế nào và khi nào thì san sẻ thông báo đó với bên thứ 3.

Thế nhưng vẫn chưa rõ là Facebook liệu có đích thực cho phép người dùng xem và kiểm soát dữ liệu của mình hay không ngay cả khi người dùng không biết mình được quyền làm điều đó. thí dụ như Facebook dùng cookie để theo dõi bạn kể cả khi bạn đã đăng xuất và dữ liệu cũng sẽ bị phân tán.

Gần đây một người dùng có tên Paul Olivier-Dehaye đã tả với các Nghị sĩ về việc mình đã nắm được cách Facebook chuyển giao hết thảy dữ liệu thu được phê duyệt 2 công cụ lăng xê Tùy chỉnh đối tượng và Pixel như thế nào. Chỉ cần chờ đến 25/05 thôi, mọi bí mật về Facebook sẽ được lộ rõ.

Stack Overflow đã phát hành nghiên cứu hàng năm về ngành công nghiệp lập trình.

Công ty cho biết ấn bản 2018 của nó đại diện cho nghiên cứu 'lớn nhất từng có' về thái độ, lương và nhân khẩu học của nhà phát triển...