Posted in Cloud Technology, Home

Metaverse 2021: Chúng ta đang ở trong thời đại nào?

Hôm nay mình đọc trên medium có thấy một bài rất hay, bài viết có nêu một từ mới đối với mình, là Metaverse. Mình khá hứng thú với bài viết nên cũng đăng bài này nhằm mục đích chia sẻ quan điểm của mình.

Khi nào sẽ xuất hiện Metaverse?

Trước khi đề cập đến khái niệm này mình muốn chỉ ra là chúng ta đang nói đến một thứ thuộc về tương lai. Hiện tại trình độ khoa học công nghệ của chúng ta chưa đủ để tạo ra một metaverse hoàn chỉnh. Nhưng không có nghĩa là trong tương lại sẽ không có, bài viết này mình sẽ miêu tả về một cách sử dụng internet khác hoàn toàn cách chúng ta sử dụng hiện tại. Nhưng trước tiên, mời các bạn cùng mình điểm qua các thế hệ đang dùng internet ngày nay.

Những ai đang sử dụng Internet năm 2021?

Để bắt đầu bài viết mình xin liệt kê một số thế hệ được sinh ra vào các năm như sau:

GenerationX 1965 đến 1980
GenerationY 1981 đến 1994
GenerationZ 1997 đến năm 2012
GenerationA 2012 đến năm 2025

Có sự khác biệt về những thế hệ trên, nhưng ở đây mình chỉ xét về yếu tố công nghệ và tiếp xúc với công nghệ, internet, facebook, AI, blockchain…

Nhìn từ trên xuống thì GenX, chính là cha mẹ chúng ta, hầu như tiếp xúc với IT vào những năm cuối đời, nên đối với họ công nghệ chỉ là công cụ hỗ trợ. Nhiều người không tin công nghệ thông tin có thể làm được nhiều.

GenY, là tác giả(1991): là thế hệ tiên phong trong việc tiếp cận công nghệ, internet, cloud, iphone, ipod, AI, gần nhất là blockchain. Có thể nói chúng ta may mắn sinh ra trong một thời kì bùng nổ mạnh mẽ của internet và chúng ta nhìn thấy internet lớn lên cùng mình. Mình vẫn nhớ ngày đầu tiên dùng Internet Explorer hay Facebook, giờ nhớ lại nhìn như 1 trang web trẻ con mà bây giờ ai cũng làm được.

Chúng ta là thế hệ tiên phong, có kỷ niệm về những ngày đầu của thế giới số, thành tựu của chúng ta có thể kể tới Yahoo, Facebook, Google, Amazon, Youtube. Những cá nhân tiêu biểu như Mark Zukerberg, Jeff bezos….

GenZ(1997): Thế hệ này gần như được tiếp xúc với công nghệ thông tin từ khi họ sinh ra, đăc biệt là sau 2007, khi iphone thống trị thế giới di động. Họ hiện nay là thế hệ trẻ nhất, thành phần nòng cốt của thế giới công nghệ. Và đây cũng là thế hệ, mà theo ý kiến tác giả, là họ quen thuộc với thế giới thứ 2, thế giới ảo, bao gồm Facebook, Instagram, snapchat…

Đây là thế hệ gần với thế hệ Y, họ kế thừa và phát triển những công nghệ có sẵn. Những sản phẩm thay đổi thế giới xuất hiện trong giai đoạn này gồm có: XR(AR và VR), công nghệ thưc thế tăng cường, cho phép chúng ta nhìn thấy và làm việc với môi trường 3D. Snapchat, Tiktok, instagram. Những Influencer xuất hiện nhiều hơn nhờ tương tác tốt trên nền tảng mạng xã hội….

Gen A(???): Thế hệ này đến khi viết bài viết này thì các cháu lớn nhất là 9 tuổi, chính là thế hệ tương lai của chúng ta. Mặc dù chưa có định hình rõ về GenA nhưng chúng ta thấy những bé này sinh được tiếp xúc từ nhỏ với những gì ta thấy cao siêu, mới mẻ, những đối với chúng thì đó là chuyện bình thường. Những đứa trẻ GenA này sẽ lớn lên cùng robot, AI, dùng tiền điện tử để thanh toán. Mua bán trực tuyến…. Và, đặc biệt hơn, có thể thế hệ này của chúng ta sẽ không chỉ sống trong 1 thế giới chúng ta đang sống, mà còn sống trong 1 thế giới khác –> Metaverse?

Vậy thì quay lại với tiêu đề bài viết, Metaverse là gì? Theo định nghĩa:

Metaverse là thế giới kỹ thuật số, nơi mà bất cứ thứ gì chúng ta có thể tưởng tượng đều có thể tồn tại. Cuối cùng, chúng ta sẽ luôn được kết nối với metaverse, mở rộng các giác quan về thị giác, âm thanh và xúc giác, kết hợp các vật phẩm kỹ thuật số vào thế giới thực hoặc thả mình vào môi trường 3D hoàn toàn nhập vai bất cứ khi nào chúng ta muốn. Họ công nghệ đó được gọi chung là eXtended Reality (XR).

What's Next For the Metaverse? — Naavik
Metaverse?

Khái niệm này mới nghe qua có vẻ xa vời, nhưng thực ra nó đã có từ khá lâu. Các bạn 8x 9x chắc không xa lạ gì với các game nhập vai như diablo, MU hay kinh điển là võ lâm truyền kì:))

Đây là những game mà đề cập tới khái niệm Avatar(là nhân vật của các bạn). Nghĩa là sáng các bạn sống cuộc đời của mình, đi làm đi học, tối về các bạn sống cuộc sống của một vị đại hiệp đi trừ gian diệt bạo. Và phải bỏ tiền mua vật phẩm trong game, hoặc đi săn boss… Nhưng tất nhiên là game chỉ bó hẹp trong tiểu thuyết võ hiệp thôi, Hãy tưởng tượng 1 game tương tự như Võ Lâm, nhưng cho phép người chơi tùy sức sáng tạo ra các thế giới mới, các loại võ công mới, không những vậy nó không chỉ gói gọi trong game kiếm hiệp nữa, mà là tất cả những gì bạn có thể tưởng tượng, tổng hợp lại trong 1 thế giới duy nhất gọi là Metaverse.

Nguồn gốc & đặc điểm của Metaverse

Liệu Metaverse có phải là một thuật ngữ mới nổi lên trong thời đại công nghệ thông tin phát triển như ngày hôm nay?

Sự thật là, “Metaverse” đã được đề cập lần đầu tiên trong cuốn tiểu thuyết khoa học viễn tưởng “Snow Crash” của Neal Stephenson vào năm 1992, được mô tả là một nơi con người có thể tương tác qua lại với nhau thông qua không gian ông gọi là cyberpunk.

Như vậy, thuật ngữ “Metaverse” đã được ra đời từ cách đây khá lâu (trước cả thời đại Internet). Bản thân từ Metaverse cũng được cấu tạo từ 2 từ đó là Meta (beyond hay là vượt lên) và Verse (trong universe hay vũ trụ). Do đó concept này có hàm ý “vượt lên vũ trụ hiện hữu”.

Một số đặc điểm của Metaverse có thể kể đến đó là:

  • Sustainability: Khả năng duy trì và liên tục có những cải tiến về dịch vụ hay hệ sinh thái trong đó.
  • Immersion: Mức độ chân thực của Metaverse (đặc điểm này trả lời cho câu hỏi liệu trải nghiệm của chúng ta trong Metaverse đạt được bao nhiêu % so với thực tế).
  • Openness: Tính mở, có nghĩa là Metaverse cho phép người tham gia có thể kết nối hoặc ngắt kết nối bất kỳ lúc nào. Đồng thời đó phải là không gian mở cho phép những sáng tạo trở nên không có giới hạn.
  • Economic System: Một hệ thống kinh tế song song với thực tế. Trong đó, người tham gia có thể dịch chuyển tài sản của mình giữa thế giới thực và Metaverse một cách dễ dàng, cũng như có thể dựa trên việc có những cải tiến sáng tạo đột phá trong metaverse để tích luỹ và gia tăng tài sản cho chính bản thân.

Các ông lớn công nghệ nói gì về metaverse

Không phải ngẫu nhiên Metaverse có tiềm năng to lớn như thế. Ngoài việc giải quyết những nhu cầu trong thực tiễn đời sống thì nó còn phải thu hút được sự chú ý từ những ông lớn – những tổ chức có những nguồn lực dồi dào thì mới hiện thực hoá được tầm nhìn khổng lồ như trên.

Cái tên đầu tiên có thể kể tới đó là Mark Zuckerberg – Founder & CEO của Facebook.

Mark Zuckerberg is betting Facebook's future on the metaverse - The Verge

Chia sẻ về metaverse, Mark cho rằng:

“Internet di động ngày nay đã có thể đáp ứng nhiều nhu cầu khác nhau của mọi người từ lúc thức dậy đến khi đi ngủ. Vì vậy, tôi không nghĩ mục đích chính của Metaverse là để mọi người tham gia vào Internet nhiều hơn, mà là cho phép mọi người tham gia vào Internet một cách tự nhiên hơn”.

Đi cùng với đó là những động thái trong việc phát triển Metaverse, Facebook cũng đã đầu tư các thiết bị VR thông qua việc sở hữu Oculus để sẵn sàng hoàn thành những cơ sở hạ tầng phần cứng thiết yếu cho Metaverse vào những năm cuối của thập kỷ.

Ngoài Facebook, các gã khổng lồ công nghệ như Google, Microsoft, Sony cũng đã cùng Facebook thành lập nên XR Association – một liên minh với tham vọng tạo nên tương lai của “Experiential Reality”.

Tất nhiên, để tránh trường hợp như các phim viễn tưởng, thế giới nào cũng bị 1 tên độc tài thao túng, các tổ chức đề cao về tính phi tập trung của Metaverse, cho rằng tính decentralized phải được đề cao để người dùng thỏa sức sáng tạo và có quyền thực sự sở hữu những thứ họ có được trong metaverse.

Nếu đề cao tính phi tập trung, phải chăng Blockchain là nơi lý tưởng để phát triển Metaverse?

Trên thực tế, Metaverse có thể được thiết lập trên nền của rất nhiều lại công nghệ khác nhau. Tuy nhiên, trong một thế giới đề cao sự sáng tạo không giới hạn, tương tác, tính tự do phân quyền như Metaverse thì dường như Blockchain sẽ là một trong những công nghệ then chốt của thế giới này.

Tại sao lại như vậy?

Thứ nhất: ngành công nghiệp Metaverse đang có sự tham gia của rất nhiều công ty công nghệ, bao gồm cả phần cứng, lẫn phần mềm, blockchain, gaming, …

Một vấn đề có thể thấy rõ ràng trong các các nền tảng đã tồn tại này đó là chúng gần như không có khả năng tương tác với nhau. Anh em không thể di chuyển hoặc trao đổi một vật phẩm rất hiếm trong Fortnite để lấy một vật phẩm tương đương trong Minecraft được.

Ngoài ra, những vật phẩm trong game mà người chơi đang sở hữu cũng không thực sự thuộc về các bạn trong các tựa game này, điều này khiến cho tính cá nhân hoá & tính sở hữu không được đề cao. Và đôi khi chỉ cần một vài yếu tố ví dụ như luật pháp hoặc chính sách công ty tác động thì các vật phẩm này có thể biến mất khỏi tài khoản của bạn.

Và tất cả các bài toán kể trên có thể được giải quyết trên công nghệ Blockchain:

Nguồn: coin98:

  • Xét về khả năng mở rộng : Các Blockchain hiện tại cho khả năng mở rộng rất lớn. Đặc biệt đối với Blockchain có concept dạng Internet of Blockchain như Avalanche, Polkadot hay Cosmos.
  • Xét về khả năng tương tác : Tài sản trên các Blockchain khác nhau hoàn toàn có thể dịch chuyển qua lại thông qua công nghệ Cross-chain.
  • Xét về tính cá nhân hoá : Điều này được biểu hiện rõ nhất thông qua NFTs – các token độc nhất và không thể được thay thế.
  • Xét về tính bảo mật: Công nghệ Blockchain với tính bảo mật cao sẽ giúp tài sản trong không gian mạng của anh em tránh khỏi những đợt tấn công từ Hackers.

Dự đoán về Metaverse

Hiện tại Vẫn là một concept thuộc về tương lai

Tuy công nghệ thông tin đã và đang phát triển rất mạnh mẽ, nhưng hiện tại Metaverse vẫn chỉ là một concept thuộc về tương lai, và đây chưa phải là thời điểm để bùng nổ. Nhưng không có gì là không thể.

Bằng chứng đầu tiên nằm ở việc chúng ta có thể thấy hiện nay, các công cụ VR còn đang rất hạn chế và khá đắt đỏ trên thị trường. Đồng thời, các trải nghiệm hỗ trợ VR vẫn chưa phổ biến, cũng như các nhà phát triển cũng chưa mặn mà với việc phát triển VR do thị trường chưa thực sự lớn.

Số liệu về Market Size của công nghệ Virtual Reality Market trong năm 2021 ước tính đạt khoảng $22B (theo Grand View Research) – vẫn là một con số rất nhỏ so với tiềm năng khổng lồ mà Metaverse có thể đạt được

Cũng theo đơn vị này ước tính rằng, tốc độ tăng trưởng kép của VR Industry sẽ rơi vào khoảng 18%/năm và đạt $70B vào năm 2028.

FORTNITE-game có nhiều sự tương đồng với metaverse

VR hardware là yếu tố then chốt và là nền tảng để có được Metaverse thực sự. Tuy nhiên, không phải khi VR phát triển xong thì Content Layer mới phát triển mà nó sẽ phát triển song hành và đợi thời điểm VR Hardware đạt đến độ chín mùi để có thể bùng nổ.

Bằng chứng đó chính là sự tham gia của rất nhiều các ông lớn công nghệ với tầm nhìn xây dựng nên Metaverse trong bối cảnh dịch bệnh hiện tại:

  • Facebook công bố tham gia vào Metaverse Industry.
  • Với tầm nhìn xây dựng Metaverse, Epic games – công ty đứng sau tựa game Fortnite đã huy động $1B nâng giá trị công ty lên $30B.
  • Trong tháng 6, Matthew Ball, một nhà đầu tư mạo hiểm đã thúc đẩy thành lập một quỹ ETF bao gồm các công ty hoạt động trong lĩnh vực Metaverse (phần cứng và phần mềm) như NVIDIA hay Roblox.

Tóm lại, Metaverse là một ngành công nghiệp đầy hứa hẹn trong tương lai. Cùng với sự tham gia đầu tư mạnh tay đến từ các ông lớn công nghệ thì một thế giới ảo song song với thực tại sẽ là một tương lai không xa.

Posted in Home, Life in Europe

5 điều cần biết trước khi viết blog hoặc website! (SEO)

Nói nôm na đây là bài viết về các mẹo làm sao để bài viết của bạn được lên top tìm kiếm của Google. Mặc dù có rất nhiều cách nhưng thứ giữ lại khán giả vẫn là nội dung các bạn nhé, nào bắt đầu vào đề thôi (-_-) .

1 – Hiểu biết về SEO: (Tối ưu hóa Công cụ Tìm kiếm) là một trong những yếu tố quan trọng mà mọi blogger nên cân nhắc trước khi pos bài. Bạn muốn bài viết của bạn có nhiều người xem thì phải làm sao nó xuất hiện nhiều trên Google. Nhiều website không quan tâm đến SEO; họ chỉ cần chọn một themes thân thiện google và bắt đầu post bài. Đây cũng chính là lý do họ bị phụ thuộc vào các thuật toán của Goolge như Google Panda và Penguin.

Photo by Tobias Dziuba on Pexels.com

Xếp hạng công cụ tìm kiếm cao hơn không chỉ phụ thuộc vào chủ đề bài viết của bạn, mà còn ở tiêu đề của các bài đăng trên blog của bạn. Nếu bạn có một blog hơn 100+ bài viết, một số bài viết trong blog của bạn có thể phổ biến và một số trong số đó có thể không phải là một bài viết phổ biến. Bạn đã bao giờ nghĩ tại sao chỉ có một vài bài viết được xem nhiều trong blog của bạn? Bởi vì dù có cố ý hay không, vô tình bài viết nhiều view của bạn có tiêu đề phù hợp với công cụ tìm kiếm như là google, hoặc bạn cung cấp nội dung ít người tìm kiếm.

2- Một nguyên tắc chung là: Từ khoá của bạn phải nằm trong tiêu đề bài đăng và hầu hết người viết mắc lỗi khi chỉ thêm Từ khoá và không quan tâm đến việc tối ưu hoá nó để có CTR(tỷ lệ nhấp chuột) tốt hơn. Có Từ khóa trong tiêu đề bài đăng của bạn sẽ giúp ích rất nhiều, nhưng khi nói đến việc tăng CTR, cách bạn đặt các tiêu đề bài đăng của bạn tạo ra sự khác biệt rất lớn.

Ví dụ hãy xem 2 cách đặt tiêu đề sau:

Làm sao đưa bài này lên top (Tiêu đề trung bình)

Điều duy nhất bạn cần làm để đưa bài này lên top (Tiêu đề sẽ giúp bạn nhận được nhiều CTR hơn)

Như mình đã nói, tiêu đề thân thiện với SEO rất quan trọng để xếp hạng công cụ tìm kiếm tốt hơn, tất nhiền là bài viết của bạn cũng phải hấp dẫn, nếu không …… thì sẽ không giữ được người đọc.

Trong bài viết này, mình sẽ chia sẻ cho bạn “Cách viết tiêu đề có thể chơi với công cụ tìm kiếm không chỉ mang lại cho bạn nhiều truy cập miễn phí mà còn cải thiện tỉ lệ nhấp chuột lên trang web của bạn“. Tiêu đề ví dụ mà mình đã chia sẻ ở đây là “Làm thế nào để có thêm lưu lượng truy cập blog”. Tiếp tới đây, mình sẽ đặt tiêu đề này làm tiêu đề thân thiện với công cụ Tìm kiếm.

Các bước để viết tiêu đề chơi được với SEO:

Nếu bạn chưa quen với SEO, mình xin nhắc lại một lần nữa là từ khóa của bạn phải là một phần của tiêu đề bài post của bạn. Bạn có thể tham khảo hướng dẫn Harsh về cách viết tiêu đề bài đăng khác nhau cho người đọc và Công cụ tìm kiếm. Một mẹo mà tôi muốn đưa ra ở đây, hãy luôn chọn tiêu đề bài đăng của bạn sau khi hoàn thành bài viết, và hãy suy nghĩ kỹ cho chủ đề bài viết.

3- Phân tích từ khóa của bài viết Phân tích từ khóa là bước đầu tiên để làm cho tiêu đề bài đăng của bạn thân thiện với SEO. Có nhiều công cụ phân tích từ khoá có sẵn trực tuyến, chẳng hạn như công cụ phân tích từ khoá của Google. Hãy mình phân tích các tìm kiếm từ khóa trong bài viết của mình trên Google nhé. Đầu tiên mình sẽ viết một bài báo, cụ thể là “Làm thế nào để có thêm lưu lượng truy cập blog”. Đầu tiên tôi Mở công cụ Từ khoá của Google Adwords(như là Semrush) và kiểm tra các trang khác, Số lượng tìm kiếm… Vv… của từ khoá chính trong bài viết của mình. Sau khi Phân tích, mình nhận thấy rằng danh sách tìm kiếm từ khóa “Cách tạo lưu lượng truy cập blog” nhiều hơn và có mức độ cạnh tranh thấp. Bây giờ mình đã tìm thấy từ khóa chính để chèn vào tiêu đề của mình. Nếu bạn là một trong những người thích Từ khóa đuôi dài, tôi khuyên bạn nên thử SEMRUSH hoặc Ahrefs vì công cụ này giúp bạn tìm Từ khóa đuôi dài dựa trên từ gốc của bạn.

4- Sử dụng các từ khóa mục tiêu chính cho tiêu đề của bạn: Bây giờ mình đã tìm thấy từ khóa mà tôi nên chèn nó vào tiêu đề bài đăng của mình. Đầu tiên, mình đã nói điều đó, tôi sẽ giữ tiêu đề của mình là “Cách để có thêm lưu lượng truy cập blog”, sau khi tôi chèn từ khóa chính vào tiêu đề của Bài đăng và sau khi thực hiện một số thay đổi trong tiêu đề, tôi đã thực hiện nó như “Mẹo tạo lưu lượng truy cập để tăng lưu lượng truy cập vào blog của bạn”. Tiêu đề mà tôi đã tạo cũng thân thiện với công cụ tìm kiếm và hấp dẫn, loại tiêu đề hấp dẫn này khiến mọi người háo hức mở bài viết của bạn và đọc nó. 80% của phần đã kết thúc. Sau đó, những gì về 20% còn lại? , bạn có thể tìm thấy nó ở bước 3!

5- Bước thêm số: Rất quan trọng! 80% phần làm cho tiêu đề bài viết thân thiện với SEO đã kết thúc! Bây giờ là lúc để thêm phần hoàn thiện vào tiêu đề của bài viết! 20% tiếp theo là thêm một số hoặc tiền tố-hậu tố, vào tiêu đề của bạn để cải thiện CTR hơn nữa. Ví dụ trong bài này mình trình bày 5 cách để nhận được nhiều view cho blog hơn. Và vì thế nên có số “5” trên tiêu đề của bài post. Và tiêu đề là: “5 điều cần biết trước khi viết blog hoặc website!”

Bây giờ mình đã tạo một tiêu đề thân thiện với công cụ tìm kiếm cho bài đăng trên blog của mình và điều đó sẽ thu được nhiều người xem hơn mình thường, không biết có bài này có giúp mình giàu lên không:))!

Bài viết đến đây kết thúc:). Hy vọng các bạn có thể áp dụng điều này vào blog của mình nhé.

Chào Thân ái!

Posted in Home

Devops chuyện chưa kể(Series) phần 1 : Truyền thuyết Amazon Web Servies (AWS ).

Truyền thuyết kể rằng:

Năm thứ nhất sau Covid-19, anh Tèo, CTO của lele.com, 1 trang web chuyên về gà, đang gặp rắc rối nghiêm trọng về tương lai công ty…

Công ty anh điều hành 1 website gọi gà ở chợ đầu mối, như những web gọi gà khác, trang web của anh có cấu trúc như sau:

Khách hàng sẽ vào trang web của tèo tìm gà, ưng ý bấm chọn, thì browser sẽ gửi request tới server để lấy thông tin của gà được chọn thông qua domain name server( từ đây mình sẽ viết tắt là DNS), DNS này dùng để phiên dịch tên miền lele.com thành IP cho máy dễ hiểu thôi. Sau khi gửi request syn ack các kiểu, giao thức TCP-IP được thành lập thì server sẽ gửi hình của gà cho các bạn xem, và nếu ok sẽ tiến hành bước tiếp theo là đá gà.

Ok mọi chyện sẽ khá bình thường cho đến 1 ngày trang web trở nên nổi tiếng vì dàn gà mới đi thi đoạt giải, dẫn tới số lượng user tăng lên vùn vụt, mỗi ngày có thêm 10 ngàn user, khách nhiều thì tốt nhưng nhiều quá cũng không tốt đẹp gì…Và trang của anh gặp phải vài vấn đề đau đầu:

  1. Khi quá nhiều lượt truy cập vào 1 server, băng thông sẽ bị nghẽn và làm chậm tốc độ load web.
  2. Số lượng gà mới có profile khủng hơn, cty anh tèo phải cung cấp thêm nhiều thông tin vì khác hàng yêu cầu, dẫn tới sever quá tải. Đầu tư thêm server thì mất công setup network này nọ. Mà upgrade thì web vẫn phải chạy để níu chân khách.
  3. Mặc dù khách đông nhưng thường chỉ hoạt động về đêm làm lag server, có những thời điểm web không có khách. Nên đầu tư thêm để ban đêm phí quá.

Nhiều vấn đề không được giải quyết, Tèo quyết định thuê chuyên viên về thay đổi cấu trúc cty. Cuối cùng họ quyết định: Đưa tất cả lên Cloud!

Nhưng có nhiều dịch vụ cung cấp cloud thì chọn cái nào? Xem lại trang web cạnh tranh của Tèo là xemheo.com họ cũng đã chuyển hết Server, cơ sở dữ liệu của họ cho Microsoft Azure. Tèo quyết định không chơi đụng hàng, sau 1 một hồi phân vân và anh chọn AWS vì AWS có giao diện dễ sử dụng hơn:

Amazon Web Services: cung cấp một loạt các sản phẩm dựa trên đám mây trên toàn cầu bao gồm máy tính, lưu trữ, cơ sở dữ liệu, phân tích, mạng, thiết bị di động, công cụ dành cho nhà phát triển, công cụ quản lý, IoT, bảo mật và các ứng dụng doanh nghiệp: theo yêu cầu, khả dụng trong vài giây, trả phí -giá cả tùy ý. Từ kho dữ liệu đến các công cụ triển khai, thư mục đến phân phối nội dung, hơn 175 dịch vụ AWS có sẵn.

Anh Tèo quyết định trở thành khách của AWS. Anh đăng kí mua gói cơ bản, giờ anh có 1 server chạy trên AWS, services thì chạy trên EC2, các backend method đã có Lambda, dữ liệu thì lưu trữ trên S3 bucket, anh còn đang nghiên cứu chuyển qua dùng Kafka cho giống Linkedin vì kafka dữ liệu cập nhật và lưu trữ thông minh hơn. Service của anh giờ còn có chatbot để chat cùng khách hàng và anh được theo dõi toàn bộ server của mình thông qua Amazon Cloud Watch.

Với AWS, Tèo đã phát triển web bán gà của anh thành một thương hiệu International, với quy mô đàn gà 1000 con và nhiều gà ngoại.

Tèo đã xem video sau và thành công, còn bạn thì sao?:

Author:

NGUYEN TRUONG THANH / Software Engineer in Atomotive, Germany

_________________________________________

E-mail: thanhnguyen1181991@gmail.com  

Phone: 004917657997009

GLS it Services, Eschborn, Frankfurt am Main, Germany 

Website: thanhnguyensite.net

Posted in Home

Using AI for object classification.

In this post I will show you the easiest way to combine AI, convolution neural network(CNN) and docker container to classified object in real time. So all thing you need to know is basic knowledge about docker and neural network. If you are very new to programming, don’t worry, just follow the step below, and you will have a program classified object in real time.

in the video above I’m driving a car go around with a camera on top, to tracking other car and person inside it. I use CUDA Yolo + Nvidia GPU. You can also do the same, all you need to do is download my Docker file and run it.

For who need to understand the theories behind, I will summaries like this. The docker file will create a Ubuntu Linux environment and install Nvidia GPU+OpenCV+darknet in to it. Darknet is a wonderful neural network, it was train by around 10 millions picture and can real-time recognize about 70 categories (car, dog, cat, ship, plane….). If you want to learn more about darknet, you can read my article : https://thanhnguyensite.net/2020/11/05/neural-network/

OK! now let’s go the AI world:

Darknet Nvidia-Docker Ubuntu 16.04

Prerequisites

  1. Make sure you have the NVidia driver for your machine

Find out your the Graphics Card model

lspci | grep VGA

https://www.nvidia.com/Download/index.aspx?lang=en-us

How to install NVidia Drivers on Linux https://gist.github.com/wangruohui/df039f0dc434d6486f5d4d098aa52d07#install-nvidia-graphics-driver-via-runfile

  1. Install Docker and NVidia Docker https://github.com/NVIDIA/nvidia-docker

Steps to run

  1. Clone this repo:
git clone https://gitlab.com/thanhnguyen1181991/darknet-docker.git
  1. Build the machine (this step might take a while, go make some coffee)
docker build -t darknet .
  1. On start.sh make sure you have the correct address of your webcam, in file start.sh line 8, if you use laptop onboard webcam, then choose: device=/dev/bus/usb/003/004:/dev/video0, if use external webcam, then: device=/dev/bus/usb/003/004:/dev/video0

Find your webcam bus

lsusb -t

Change the following line with the correct webcam bus

--device=/dev/bus/usb/003/002:/dev/video0
  1. Map a local folder to the Docker Container

Format:

/local/folder:/docker/folder

on start.sh change the following line

-v /home/projects:/dev/projects \
  1. Run the machine with Webcam
sh start.sh

Darknet

Make sure you have the weights for what you want to run

More information at https://pjreddie.com/darknet/

Posted in Home

6 tips for Linux noob (like me)

In this post I will share experience using linux command, and was we can do and play with a operating system for Developer, or shorter is Linux. You don’t need to know more about this, I will show you how you can create funny program with some Linux command, what you can’t do in Windows.

1. Linux updates and upgrades do not require you to reboot

Re-booting after every software installation or update is very annoying in Windows. I keep wondering why this is not necessary in Linux, but on Windows is rule of tumb – every installation is asking you to re-boot, or after you download the Upgrades annoying window pop up and say – will reboot in 10 minutes, save your work. This is really annoying.

With Linux all you need to do is run : sudo apt update

Then have a cup of coffee until it update your computer.

2. No need to install drivers every time you plug in your computer USB device

OK, I understand that there are custom devices which use uncommon drivers like printers, cameras, etc, but why on earth every time you plug in Windows simple mass storage disk drive, or USB-Serial converter, or Mouse, or Keyboard – devices which are standard and are embedded in every Windows OS after W98 it ALWAYS ask for drivers which are already there? Why on Linux I plug the external HHD or Flash drive and it automatically mounts on my computer and I can work with it, while Windows is asking me for drivers and several minutes scans and show me different windows with warnings and Continue buttons like I’m doing something scaring which may ruin my OS?

3. You can move image/boot-able drive between machines without need for reinstall

Yes! this is something windows users can’t imagine is possible! I do remember back in the dark ages Windows asked me to re-install after I have upgraded the RAM memory size! Now imagine you get your Windows boot-able HDD and plug it on other computer, will it boot? no way!

4. system config in files not registers mess

Now this is one of the most annoying WIndows features – after several months of installing and removing software your registers and windows/system directory becomes so bloated with shared DLLs and mess that some people start making money by writing registry cleaning software!

5. You can’t boot windows from USB Stick

Probably they didn’t find a way to ask you for registration and to collect your money every time they sense this USB is plug to other computer??

6. You cant see this on Windows:

# uptime
15:54PM up 122 days, 11:22, 5 users, load average: 0.12, 0.30, 0.13

every few days if you do not reboot windows machine it starts to act slowly due to the severe memory fragmentation

Posted in Home

Python MySQL

Python MySQL – Create Database

Last Updated: 09-03-2020

Python Database API ( Application Program Interface ) is the Database interface for the standard Python. This standard is adhered to by most Python Database interfaces. There are various Database servers supported by Python Database such as MySQL, GadFly, mSQL, PostgreSQL, Microsoft SQL Server 2000, Informix, Interbase, Oracle, Sybase etc. To connect with MySQL database server from Python, we need to import the mysql.connector interface.

Syntax:

CREATE DATABASE DATABASE_NAME
importing rquired libraries
 import mysql.connector 
 dataBase = mysql.connector.connect( 
 host ="localhost", 
 user ="user", 
 passwd ="gfg"
 ) 
 preparing a cursor object
 cursorObject = dataBase.cursor() 
 creating database
 cursorObject.execute("CREATE DATABASE geeks4geeks") 

Output:

python-mysql-create-db

The above program illustrates the creation of MySQL database geeks4geeks in which host-name is localhost, the username is user and password is gfg.

Let’s suppose we want to create a table in the database, then we need to connect to a database. Below is a program to create a table in the geeks4geeks database which was created in the above program.

importing required library
 import mysql.connector 
 connecting to the database
 dataBase = mysql.connector.connect( 
                     host = "localhost", 
                     user = "user", 
                     passwd = "gfg", 
                     database = "geeks4geeks" ) 
 preparing a cursor object
 cursorObject = dataBase.cursor() 
 creating table
 studentRecord = """CREATE TABLE STUDENT ( 
                 NAME VARCHAR(20) NOT NULL, 
                 BRANCH VARCHAR(50), 
                 ROLL INT NOT NULL, 
                 SECTION VARCHAR(5), 
                 AGE INT, 
                 )"""
 table created
 cursorObject.execute(studentRecord) 
 disconnecting from server
 dataBase.close() 

Output:

PYTHON-MYSQL-CREATE-DB1
Posted in Home

Python MongoDB

MongoDB Python | Insert and Update Data

Prerequisites : MongoDB Python Basics
We would first understand how to insert a document/entry in a collection of a database. Then we would work on how to update an existing document in MongoDB using pymongo library in python. The update commands helps us to update the query data inserted already in MongoDB database collection.

Insert data

We would first insert data in MongoDB.

Step 1 – Establishing Connection: Port number Default: 27017conn = MongoClient(‘localhost’, port-number)If using default port-number i.e. 27017. Alternate connection method:conn = MongoClient()

Step 2 – Create Database or Switch to Existing Database:db = conn.dabasenameCreate a collection or Switch to existing collection:

collection = db.collection_name

Step 3 – Insert : To Insert Data create a dictionary object and insert data in database. Method used to insert data: insert_one() or insert_many()After insert to find the documents inside a collection we use find() command. The find() method issues a query to retrieve data from a collection in MongoDB. All queries in MongoDB have the scope of a single collection.
Note : ObjectId is different for every entry in database collection.
Let us understand insert of data with help on code:

# Python code to illustrate 
# inserting data in MongoDB 
from pymongo import MongoClient 
  
try: 
    conn = MongoClient() 
    print("Connected successfully!!!") 
except:   
    print("Could not connect to MongoDB") 
  
# database 
db = conn.database 
  
# Created or Switched to collection names: my_gfg_collection 
collection = db.my_gfg_collection 
  
emp_rec1 = { 
        "name":"Mr.Geek", 
        "eid":24, 
        "location":"delhi"
        } 
emp_rec2 = { 
        "name":"Mr.Shaurya", 
        "eid":14, 
        "location":"delhi"
        } 
  
# Insert Data 
rec_id1 = collection.insert_one(emp_rec1) 
rec_id2 = collection.insert_one(emp_rec2) 
  
print("Data inserted with record ids",rec_id1," ",rec_id2) 
  
# Printing the data inserted 
cursor = collection.find() 
for record in cursor: 
    print(record) 
Connected successfully!!!
Data inserted with record ids    
{'_id': ObjectId('5a02227b37b8552becf5ed2a'), 
'name': 'Mr.Geek', 'eid': 24, 'location': 'delhi'}
{'_id': ObjectId('5a02227c37b8552becf5ed2b'), 'name':
'Mr.Shaurya', 'eid': 14, 'location': 'delhi'}

Updating data in MongoDB

Methods used: update_one() and update_many()
Parameters passed:
+ a filter document to match the documents to update
+ an update document to specify the modification to perform
+ an optional upsert parameter

# Python code to illustrate 
# updating data in MongoDB 
# with Data of employee with id:24 
from pymongo import MongoClient 
  
try: 
    conn = MongoClient() 
    print("Connected successfully!!!") 
except:   
    print("Could not connect to MongoDB") 
  
# database 
db = conn.database 
  
# Created or Switched to collection names: my_gfg_collection 
collection = db.my_gfg_collection 
  
# update all the employee data whose eid is 24 
result = collection.update_many( 
        {"eid":24}, 
        { 
                "$set":{ 
                        "name":"Mr.Geeksforgeeks"
                        }, 
                "$currentDate":{"lastModified":True} 
                  
                } 
        ) 
  
  
  
print("Data updated with id",result) 
  
# Print the new record 
cursor = collection.find() 
for record in cursor: 
    print(record) 

Output:

Connected successfully!!!
Data updated with id 
{'_id': ObjectId('5a02227b37b8552becf5ed2a'), 
'name': 'Mr.Geeksforgeeks', 'eid': 24, 'location': 
'delhi', 'lastModified': datetime.datetime(2017, 11, 7, 21, 19, 9, 698000)}
{'_id': ObjectId('5a02227c37b8552becf5ed2b'), 'name': 
'Mr.Shaurya', 'eid': 14, 'location': 'delhi'}

To find number of documents or entries in collection the are updated use.

 print(result.matched_count) 
Posted in Home

Python OpenCV

OpenCV is one of the most popular computer vision libraries. If you want to start your journey in the field of computer vision, then a thorough understanding of the concepts of OpenCV is of paramount importance.
In this article, I will try to introduce the most basic and important concepts of OpenCV in an intuitive manner.
This article will cover the following topics:

  1. Reading an image
  2. Extracting the RGB values of a pixel
  3. Extracting the Region of Interest (ROI)
  4. Resizing the Image
  5. Rotating the Image
  6. Drawing a Rectangle
  7. Displaying text

This is the original image that we will manipulate throughout the course of this article.

Original Image

Let’s start with the simple task of reading an image using OpenCV.

Reading an image

Importing the OpenCV library
 import cv2 
 Reading the image using imread() function
 image = cv2.imread('image.png') 
 Extracting the height and width of an image
 h, w = image.shape[:2] 
 Displaying the height and width
 print("Height = {}, Width = {}".format(h, w)) 

Now we will focus on extracting the RGB values of an individual pixel.
Note – OpenCV arranges the channels in BGR order. So the 0th value will correspond to Blue pixel and not Red.

Extracting the RGB values of a pixel

Extracting RGB values.
 Here we have randomly chosen a pixel
 by passing in 100, 100 for height and width.
 (B, G, R) = image[100, 100] 
 Displaying the pixel values
 print("R = {}, G = {}, B = {}".format(R, G, B)) 
 We can also pass the channel to extract
 the value for a specific channel
 B = image[100, 100, 0] 
 print("B = {}".format(B)) 
Region Of Interest
Posted in Home

Python Examples

Basic Programs:

  1. Python program to add two numbers
  2. Maximum of two numbers in Python
  3. Python Program for factorial of a number
  4. Python Program for simple interest
  5. Python Program for compound interest
  6. Python Program to check Armstrong Number
  7. Python Program for Program to find area of a circle
  8. Python program to print all Prime numbers in an Interval
  9. Python program to check whether a number is Prime or not
  10. Python Program for n-th Fibonacci number
  11. Python Program for How to check if a given number is Fibonacci number?
  12. Python Program for n\’th multiple of a number in Fibonacci Series
  13. Program to print ASCII Value of a character
  14. Python Program for Sum of squares of first n natural numbers
  15. Python Program for cube sum of first n natural numbers

Array Programs:

  1. Python Program to find sum of array
  2. Python Program to find largest element in an array
  3. Python Program for array rotation
  4. Python Program for Reversal algorithm for array rotation
  5. Python Program to Split the array and add the first part to the end
  6. Python Program for Find reminder of array multiplication divided by n
  7. Python Program to check if given array is Monotonic

List Programs:

  1. Python program to interchange first and last elements in a list
  2. Python program to swap two elements in a list
  3. Python | Ways to find length of list
  4. Python | Ways to check if element exists in list
  5. Different ways to clear a list in Python
  6. Python | Reversing a List
  7. Python program to find sum of elements in list
  8. Python | Multiply all numbers in the list
  9. Python program to find smallest number in a list
  10. Python program to find largest number in a list
  11. Python program to find second largest number in a list
  12. Python program to find N largest elements from a list
  13. Python program to print even numbers in a list
  14. Python program to print odd numbers in a List
  15. Python program to print all even numbers in a range
  16. Python program to print all odd numbers in a range
  17. Python program to print positive numbers in a list
  18. Python program to print negative numbers in a list
  19. Python program to print all positive numbers in a range
  20. Python program to print all negative numbers in a range
  21. Remove multiple elements from a list in Python
  22. Python – Remove empty List from List
  23. Python | Cloning or Copying a list
  24. Python | Count occurrences of an element in a list
  25. Python | Remove empty tuples from a list
  26. Python | Program to print duplicates from a list of integers
  27. Python program to find Cumulative sum of a list
  28. Python | Sum of number digits in List
  29. Break a list into chunks of size N in Python
  30. Python | Sort the values of first list using second list
Posted in Home

Python OOP

A class is a user-defined blueprint or prototype from which objects are created. Classes provide a means of bundling data and functionality together. Creating a new class creates a new type of object, allowing new instances of that type to be made. Each class instance can have attributes attached to it for maintaining its state. Class instances can also have methods (defined by its class) for modifying its state.
To understand the need for creating a class let’s consider an example, let’s say you wanted to track the number of dogs which may have different attributes like breed, age. If a list is used, the first element could be the dog’s breed while the second element could represent its age. Let’s suppose there are 100 different dogs, then how would you know which element is supposed to be which? What if you wanted to add other properties to these dogs? This lacks organization and it’s the exact need for classes.
Class creates a user-defined data structure, which holds its own data members and member functions, which can be accessed and used by creating an instance of that class. A class is like a blueprint for an object.
Some points on Python class:
Classes are created by keyword class.
Attributes are the variables that belong to class.
Attributes are always public and can be accessed using dot (.) operator. Eg.: Myclass.Myattribute


<strong>Class Definition Syntax:</strong> class ClassName:     
# Statement-1     
.     .     .     
# Statement-N 
<strong>Defining a class –</strong>

python class

Declaring Objects (Also called instantiating a class)
When an object of a class is created, the class is said to be instantiated. All the instances share the attributes and the behavior of the class. But the values of those attributes, i.e. the state are unique for each object. A single class may have any number of instances.
Example:

python declaring an object

Declaring an object


# Python program to
# demonstrate instantiating
# a class


classDog: 

# A simple class
# attribute
attr1 ="mamal"
attr2 ="dog"

# A sample method  
deffun(self): 
print("I'm a", self.attr1)
print("I'm a", self.attr2)

# Driver code
# Object instantiation
Rodger =Dog()

# Accessing class attributes
# and method through objects
print(Rodger.attr1)
Rodger.fun()

Output:
mamal I’m a mamal I’m a dog
In the above example, an object is created which is basically a dog named Rodger. This class only has two class attributes that tell us that Rodger is a dog and a mammal.
The self
Class methods must have an extra first parameter in method definition. We do not give a value for this parameter when we call the method, Python provides it.
If we have a method which takes no arguments, then we still have to have one argument.
This is similar to this pointer in C++ and this reference in Java.
When we call a method of this object as myobject.method(arg1, arg2), this is automatically converted by Python into MyClass.method(myobject, arg1, arg2) – this is all the special self is about.
__init__ method:
The __init__ method is similar to constructors in C++ and Java. Constructors are used to initialize the object’s state. Like methods, a constructor also contains a collection of statements(i.e. instructions) that are executed at the time of Object creation. It is run as soon as an object of a class is instantiated. The method is useful to do any initialization you want to do with your object.

# A Sample class with init method 
classPerson: 
# init method or constructor  
def__init__(self, name): 
self.name =name 
# Sample Method  
defsay_hi(self): 
print('Hello, my name is', self.name)
p =Person('Nikhil') 
p.say_hi() 

 
Output:
Hello, my name is Nikhil
Class and Instance Variables
Instance variables are for data unique to each instance and class variables are for attributes and methods shared by all instances of the class. Instance variables are variables whose value is assigned inside a constructor or method with self whereas class variables are variables whose value is assigned in the class.
Defining instance varibale using constructor.

# Python program to show that the variables with a value  
# assigned in the class declaration, are class variables and 
# variables inside methods and constructors are instance 
# variables. 

# Class for Dog 
classDog: 

# Class Variable 
animal ='dog'

# The init method or constructor 
def__init__(self, breed, color): 

# Instance Variable     
self.breed =breed
self.color =color        

# Objects of Dog class 
Rodger =Dog("Pug", "brown") 
Buzo =Dog("Bulldog", "black") 

print('Rodger details:')   
print('Rodger is a', Rodger.animal) 
print('Breed: ', Rodger.breed)
print('Color: ', Rodger.color)

print('\nBuzo details:')   
print('Buzo is a', Buzo.animal) 
print('Breed: ', Buzo.breed)
print('Color: ', Buzo.color)

# Class variables can be accessed using class 
# name also 
print("\nAccessing class variable using class name")
print(Dog.animal)        

Output:
Rodger details: Rodger is a dog Breed: Pug Color: brown Buzo details: Buzo is a dog Breed: Bulldog Color: black Accessing class variable using class name dog
Defining instance variable using the normal method.

# Python program to show that we can create  
# instance variables inside methods 

# Class for Dog 
classDog: 

# Class Variable 
animal ='dog'

# The init method or constructor 
def__init__(self, breed): 

# Instance Variable 
self.breed =breed             

# Adds an instance variable  
defsetColor(self, color): 
self.color =color 

# Retrieves instance variable     
defgetColor(self):     
returnself.color    

# Driver Code 
Rodger =Dog("pug") 
Rodger.setColor("brown") 
print(Rodger.getColor())  
Output:
brown