Facebook thêm một lần nữa làm xấu hổ ngành công nghiệp mạng máy tính 41 tỉ đô

Facebook đã tạo ra một cuộc cách mạng mới trong ngành công nghiệp mạng máy tính. Một lần nữa, Facebook lại làm ngành công nghiệp 41 tỉ USD này phải xấu hổ. Đặc biệt, sự thay đổi này được Facebook chia sẻ miễn phí với cả thế giới. Điều này đã làm các nhà cung cấp mạng viễn thông phải chú ý.

Sự đổi mới sẽ được giới thiệu vào ngày thứ ba (08/11/2016), cái được gọi là Backpack  thuộc Switch thế hệ thứ hai, kế thừa từ sản phẩm 6-Pack được sản xuất bởi Cisco. Nhưng có một sự khác biệt, Backpack nhanh hơn. 6-Pack là Switch (bộ chuyển mạch) 40G. Backpack là Swtich 100G, nghĩa là nó nhanh hơn gấp 2.5 lần và sử dụng đường truyền quang (ánh sáng Aka aka) để truyền tải dữ liệu thay vì sử dụng dây đồng.

Vào mùa xuân năm ngoái, Facebook cũng đã công bố Wedge 100. Wedge 100 thường được sử dụng để kết nối giữa máy chủ và các thiết bị ở tầng mạng. Và giờ đây, các Wedge 100 được kết nối với nhau qua Backpack.

Facebook đang cố gắng tự mình xây dựng một trung tâm dữ liệu đạt chuẩn 100G cùng với các thiết bị mạng được công bố vào tuần trước.

DỰ KIẾN SẼ ĐƯỢC BÁN VÀO NĂM 2017

Có hai điều quan trọng về Switch mới của Facebook. Thứ nhất, Facebook đã chuyển nó thành dự án mở bằng cách tham gia OCP từ khi Facebook bắt đầu dự án được vài năm.

Mark Zuckerberg

Mark Zuckerberg

OCP tạo nên các phần cứng mã nguồn mở, các kỹ sư ở đó có thể làm việc với nhau để tạo nên các thiết kế phần cứng và tự do sử dụng các thiết kế đó.

OCP thường đưa ra các bản thiết kế tủ mạng (racks), máy chủ (servers), thiết bị lưu trữ và một số phần cứng khác. Các nhà sản xuất sẽ kí hợp đồng để hỗ trợ xây dựng các sản phẩm đó. OCP xây dựng nguồn cảm hứng  cho các tổ chức internet xây dựng phần cứng từ đầu, như Linkedin.

Với Switchs của Facebook, Facebook đã ký kết hợp đồng và chuyển giao cho Accton để sản xuất thiết bị số lượng lớn để tất cả mọi người có thể mua chúng.

Và Facebook cũng mở mã nguồn chạy trên Switch cho cộng đồng, và đã làm việc với một số các công ty khởi nghiệp về network để hoàn thiện sản phẩm của mình.

Facebook dự định sẽ  làm tất cả những điều này cho Backpack, Omar Baldonado một thành viên của đội ngũ kĩ sư mạng Facebook đã nói với chúng ta.

Backpack Switch 100G

Backpack Switch 100G

“Chúng tôi dự đoán nó sẽ đi cùng một con đường. Sau năm 2017, mọi người có thể có được một Backpack. Chúng tôi cũng đang làm việc với hệ sinh thái phần mềm. Đó là lí do tại sao chúng tôi đang đóng góp vào OCP”. Anh ấy đã chia sẻ với chúng ta.

CÔNG NGHỆ

Để tạo nên Backpack, Facebook đã làm việc với các nhà sản xuất chip và cung cấp vật liệu quang học để làm những sản phẩm chưa bao giờ thực hiện trước đó. Việc tạo nên chip và sợi quang đặc biệt làm giảm chi phí sản xuất Switches.

Các Switches quang học trên thị trường thường không được sử dụng trong các trung tâm dữ liệu để kết nối các máy chủ với nhau. Nó được sử dụng trong “Backpack”, một phần của mạng lưới kéo dài giữa trung tâm dữ liệu hoặc các tỉnh thành.

Bởi vì họ đã đặt mục tiêu sử dụng Switches cho mạng quy mô thành phố, nên các Switches sử dụng nhiều năng lượng, tỏa ra nhiều nhiệt và rất tốn kém.

Baldonado nói rằng: Facebook đã thiết kế một Switch sử dụng ít điện năng hơn và giảm lượng toả nhiệt hơn có thể hoạt động ở 55 độ C, điều mà chưa thể làm được trước đây. Folks trong nghành công nghiệp mạng đã nói với chúng  tôi cách làm việc của 100G Facebook là “mind blowing”.

Để giảm chi phí, các Switch này cũng như các Switches khác của OCP đều được mô đun hoá, nghĩa là bạn có thể kéo nó ra và trao đổi trên các bộ phận, sử dụng con chip khác nhau, Card Mạng và phần mềm cũng khác nhau.

Tại thời điểm đó một cựu kĩ sư Facebook tên là Yuval Bachar tuyên bố mục tiêu rằng mạng lưới nên có chi phí ít nhất là $1 cho mỗi Gb. Baldonado là người đầu tiên thừa nhận rằng mục tiêu ấy đã không đạt được. Nhưng anh lại nói: Đối với Switch và tất cả các phần cứng khác thì Facebook mang lại chi phí thấp . Trong trường hợp này, mặc dù Switch vẫn còn quá đắt để mua nhưng chi phí hoạt động thì rẻ hơn.

Facebook đang dẫn đầu vì chi phí rẻ, nhanh và nhiều trung tâm dữ liệu bởi vì vào một ngày nào đó chúng ta sẽ được sử dụng mạng xã hội trong thực tế ảo và có nhiều video trực tuyến hơn.

Anh ấy nói “Bây giờ chúng ta tạo ra nhiều thứ hơn, tương tác với video 360 đòi hỏi nhiều khả năng mở rộng hơn,hiệu quả và nhanh chóng”.

Tuyết Nguyễn, theo Business Insider

Ngày thứ 2 học IOT: Đo nhiệt độ, độ ẩm và gửi dữ liệu lên Cloud

Trong phần này, mình sẽ tiếp tục chia sẻ với các bạn ngày thứ 2 học IOT của mình.

Trong phần trước, mình đã tìm hiểu cơ bản về ESP8266, và NodeMCU DevKit cũng như Sming Framework. Phần này mình sẽ tiến hành đo nhiệt độ, độ ẩm và gửi dữ liệu lên Cloud.

Để có thể đo nhiệt độ, độ ẩm, chúng ta dùng cảm biến DHT11, giá thị trường khoảng 50 ngàn VNĐ (phương Tây họ hay dùng DHT22 hơn).

Cảm biến nhiệt độ, độ ẩm DHT-11

Cảm biến nhiệt độ, độ ẩm DHT-11

DHT11 có ba chân. Trong đó, chân S là chân tín hiệu. Hai chân còn lại là chân nguồn và chân đất.

Như vậy, ta sẽ kết nối DHT11 với NodeMCU như sau:

  • Chân đất của DHT11 nối với chân đất của NodeMCU
  • Chân nguồn của DHT11 nối với chân nguồn của NodeMCU
  • Chân tín hiệu của DHT11 nối với chân D2 của NodeMCU
Kết nối NODEMCU ESP8266 với DHT11

Kết nối NODEMCU ESP8266 với DHT11 (Ảnh từ esp8266.vn)

Sau khi chuẩn bị xong phần cứng, chúng ta cần chuẩn bị mã nguồn để nạp vào ESP8266.  Về cơ bản, mã nguồn cần làm ba việc sau:

  • Kết nối Wifi
  • Kết nối DHT11, lấy dữ liệu nhiệt độ và độ ẩm
  • Gửi dữ liệu nhiệt độ, độ ẩm qua Internet lên Cloud

Có khá nhiều lựa chọn cho Cloud, bạn có thể dùng ThingSpeak.  Với mình, mình chọn Koor.IO.

Mình đã viết mã nguồn trên nền tảng Sming Framework và đẩy lên Github ở link sau https://github.com/KoorIO/koor-samples/tree/master/HttpClient

Các bước thao tác trên Koor.IO, và triển khai mã nguồn mình đã ghi lại video. Các bạn có thể xem video để biết cụ thể hơn.

Như vậy, việc đẩy dữ liệu từ thiết bị lên Cloud trở nên hết sức dễ dàng với sự hỗ trợ của ESP8266, Koor.IO và Sming Framework.

Ngày tiếp theo, mình sẽ nghiên cứu thêm về Micropython for ESP8266, hứa hẹn là mọi chuyện sẽ dễ dàng hơn nữa. Chúng ta có thể làm một ví dụ đơn giản kiểu như bật tất đèn LED qua MQTT chẳng hạn.

Tôi đã học Internet Of Things như thế nào

Như các bạn biết, Internet Of Things là môt xu thế công nghệ được mọi người hướng tới nhiều nhất trong thời gian qua. Những Developer kinh nghiệm cũng tham gia nghiên cứu IOT nếu không muốn mình bị lạc hậu. Còn những Developers trẻ tuổi cũng háo hức học IOT để bắt đầu khởi nghiệp, hoặc để có một công việc tốt hơn trong tương lai.

Ngày nay,  IOT hay Khoa Học Công Nghệ không còn là câu chuyện của các cá nhân, tổ chức. Chính phủ nước nhà cũng đã chung tay góp sức bằng nhiều chính sách hỗ trợ cụ thể với những khởi nghiệp trong lĩnh vực này.

Cá nhân tôi cũng chỉ mới nghe về IOT một năm trước. Với nhận định đây là một xu hướng không thể thay thể, tôi bắt đầu nghĩ về nó, và chuẩn bị cho mình những kiến thức cơ bản:

  • Cơ bản về điện và điện tử
  • Các khái niệm trong IOT
  • Tổng quan về kiến trúc các hệ thống IOT
  • Giao thức MQTT

Với các tiếp cận của một Developer, tôi luôn bắt đầu viết mã nguồn sau khi nắm sơ bộ các kiến thức cơ bản. Việc thực hành giúp tôi hiểu vấn đề một cách dễ dàng hơn là việc đọc hàng trăm trang tài liệu. Việc đọc cũng rất quan trọng, nhưng nếu chỉ đọc mà không thực hành, tôi sẽ không thể hệ thống được kiến thức của mình.

Do không biết bắt đầu thực hành từ đâu, tôi đã tham gia lớp dành cho người mới bắt đầu của nhóm Maker Hanoi (một cộng đồng các Maker ở Hà Nội). Từ đó, mọi việc trở nên dễ dàng và đơn giản hơn.

Đầu tiên, tôi mua một NodeMCU ESP8266 DevKit với giá 200.000 đồng.

  • ESP8266 là một module Wifi
  • NodeMCU ESP8266 DevKit chứa ESP8266 và kết nối USB để giúp chúng ta có thể dễ dàng nạp mã nguồn vào ESP8266.
NodeMCU ESP8266 Dev Kit

NodeMCU ESP8266 Dev Kit

Tiếp đó, tôi kiếm thêm một dây cáp Micro USB để nối DevKit với máy tính của mình.

Micro USB Cable

Micro USB Cable

Sau khi có DevKit, tôi bắt đầu xem qua ESP8266 Datasheet để hiểu về các chân và cách hoạt động của ESP8266. Và tôi cũng tham khảo thêm ảnh bên dưới để biết các chân đầu ra của DevKit tương ứng với chân nào của ESP8266.

NodeMCU ESP8266 Dev Kit Pin Out

NodeMCU ESP8266 Dev Kit Pin Out

Sau khi chuẩn bị đầy đủ phần cứng, tôi bắt đầu với phần mềm. Tôi được gợi ý lựa chọn Sming Framework  để viết firmware cho ESP8266. Sming Framework rất dễ hiểu và dễ sử dụng. Tuy nhiên, bạn có thể gặp một vài khó khăn khi cài đặt nó.

Ý tưởng đầu tiên của tôi cho đoạn mã nguồn đầu tiên về IOT là sử dụng ESP866 đẩy dữ liệu lên một IOT Platform. Hiện nay có rất nhiều IOT Platform, có cả mã nguồn mở hay những platform sử dụng miễn phí. Tôi đã lựa chọn Koor.IO – Môt IOT Platform dành cho Developer.

Với Koor.IO, tôi có thể tạo Restful API, Websocket và cả MQTT. Koor.IO cũng giúp tôi lưu dữ liệu từ client gửi lên vào hiển thị chúng lên biểu đồ.

Để tiến thành, tôi đã làm theo các bước sau:

Bước 1: Tạo Projects

Đăng ký tài khoản trên Koor.IO và tạo một projects.

Create a IOT Project on Koor.IO

Create a IOT Project on Koor.IO

Sau khi tạo xong project, chúng ta cần đợi một lúc để Koor.IO cài đặt project.

2016-10-12_1700

Tiếp đến, mở project và tạo một Field. Field này sẽ giúp Koor.IO nhận biết dữ liệu bạn muốn lưu vào server.

2016-10-12_1704

Như vậy là chúng ta đã xong với Koor.IO, tiếp đến là viết mã nguồn.

Bước 2: Mã nguồn

Trước tiên, chúng ta lấy mã nguồn ví dụ của Koor.IO về máy https://github.com/KoorIO/koor-samples.

Trong thưc mục Mqttclient, chúng tao tạo file cấu hình bằng lệnh:

Tiến đến, điều chình file include/config.h cho phù hợp với môi trường của mình.

MQTT_TOPIC  chính là project_domain/field trên trang Koor.IO. Trong đó,  field là Field Code bạn đã tạo, còn project_domain chính là domain của project.

MQTT_HOST, bạn chọn mqtt.koor.io

Và  WIFI_SSID, WIFI_PWD chính là thông tin mạng WIFI

Bước 4: Biên dịch

Sau khi thay đổi file cấu hình, chúng ta cần biên dịch và nạp mã nguồn vào ESP8266 với lệnh sau:

Kết quả

Sau khi build flash thành công, chúng ta mở Dashboard của dự án trên Koor.IO để xem dữ liệu được đẩy lên từ thiết bị theo chu kỳ khoảng 20 giây một lần.

Koor.IO - Chart - ESP8266

Koor.IO – Chart – ESP8266

Các vấn đề có thể gặp

Nếu bạn sử dụng Linux, trong trường hợp máy tính không nhận được DevKit, ta dùng lệnh sau để debug

Nếu bạn muốn thấy Logs từ ESP8266, ta dùng lệnh:

Như vậy là đã hoàn thành ứng dụng IOT đầu tiên 🙂

Bắt đầu với ExpressJS và Mongoose

Trong bài này, chúng ta sẽ sử dụng kết hợp Mongoose và ExpressJS để thao tác dữ liệu với MongoDB

Source code của bài học: https://github.com/thanhson1085/bean-seed/tree/2.0

Để bắt đầu, chúng ta cần cài đặt thư viện Mongoose

Models

Tạo thư mục models với lệnh

Tạo file modes/index.js với nội dung như sau

Mục đích của file index.js là quét tất cả các file (trừ file index.js) trong thư mục models, và import và biến db.

Tiếp đến, tạo file models/user.js

Controllers

Tạo thư mục chứa các controllers

Trong thư mục apis, tạo file index.js

Mục đích của file này là để định tuyến các URL vào các file controller tương ứng.

Tiếp theo, tạo file apis/users.js.  Trong file này, chúng tao sẽ viết một API tạo mới user

Bước cuối cùng là cập nhật file index.js

Test

Sau khi hoàn thành phần code, chúng ta sử dụng Restful Client (Postman) để chạy thử (api/vi/users/create, POST)

Cài đặt và chạy thử MongoDB trên Ubuntu

Cài đặt MongoDB trên Ubuntu Server tương đối đơn giản.  Tuy nhiên, nếu muốn cài MongoDB với một version cụ thể, chúng ta nên xem hướng dẫn tại trang của (MongoDB https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/).

Để cài đặt một cách đơn giản, chúng ta dùng lệnh sau:

Để kiểm tra lại xem MongoDB đã chạy trên server chưa, ta dùng lệnh sau:

Hoặc lệnh:

Sau khi chắc chắn mongodb đã hoạt, chúng ta sử dụng mongo client để kết nối đến mongodb server

Sau đó, bạn có thể dùng tập lệnh sau để thao tác với database

 

Làm phần mềm không chỉ có ngôn ngữ và kiểm thử

Một số người tin rằng việc làm phần mềm chỉ là lập trình, kiểm thử nhưng đây là một quan niệm rất giới hạn. Có người cho rằng muốn có việc làm phần mềm chỉ cần học ngôn ngữ lập trình như: Java, C++, C#, Python, Ruby v.v. để xây dựng phần mềm có thể chạy được trên máy tính. Họ tin rằng nếu công ty thuê họ viết chương trình trong Java, họ phải biết gì đó về Java; nếu công ty muốn C++ thì họ cần biết C++ và đó là tất cả những gì họ phải học.

Nếu chỉ quan niệm giản dị như thế, không ai cần phải bỏ ra bốn năm trong đại học chỉ để học ngôn ngữ lập trình. Nếu đào tạo đại học chỉ dạy chuyên về lập trình mà không gì khác, thì chương trình khác gì các trường hướng nghề?

Có những tri thức phần mềm “căn bản” được dạy ở đại học mà mọi người làm việc phải biết như kiến thức về các quy trình phát triển phần mềm (Software Process), ), thiết lập đặc tả yêu cầu (Requirements Development), kiến trúc hệ thống máy tính, (Computer architecture) thiết kế giao diện giữa phần cứng và phần mềm (Hardware/Software Interface), thực hiện và trắc nghiệm rằng việc thực hiện đáp ứng các yêu cầu (Verification and Validation) và thuộc tính chất lượng (Qualirty Attributes) v.v.

Người kĩ sư phần mềm phải có cái nhìn rộng về việc phát triển phần mềm và sự liên quan giữa tác dụng của sản phẩm phần mềm với thương mại của doanh nghiệp thay vì chỉ chú trọng vào ngôn ngữ lập trình. Ngày nay, dễ dàng tìm người có kĩ năng lập trình (Programmer/Coder) ở mọi nước, nhưng tìm người kĩ sư phần mềm (Software Engineer) để dẫn dắt dự án tới thành công thì khó hơn nhiều. Trên thế giới đã có nhiều người lập trình rồi, cho nên lương của người lập trình không tăng như trước. Hầu hết các công ty Mĩ và châu Âu không thuê người lập trình nữa bởi vì rất dễ khoán gia công phần mềm (Outsource) công việc lập trình cho Ấn Độ, nơi người lập trình làm việc với lương bổng thấp hơn người lập trình ở Mĩ và châu Âu. Điều công nghiệp phần mềm cần hiện nay là kĩ năng “kĩ sư phần mềm (Software Engineer).

Nhiều người nghĩ rằng bởi vì gia công phần mềm (Outsourcing), việc làm lập trình là tốt nhưng đây là tư duy ngắn hạn. Nếu bạn chỉ đi theo xu hướng này, bạn chỉ chạy theo người khác và không bao giờ bắt kịp những biến chuyển của công nghệ. Nếu doanh nghiệp của bạn cạnh tranh công việc gia công ngoài với Ấn Độ vì họ sẵn sàng nhận giá cả thấp hơn nhưng họ sẽ phải cạnh tranh với Nam Mĩ và châu Phi nơi họ cũng có kĩ năng lập trình với số lương thấp hơn nhiều. Tôi mong các bạn theo dõi những biến chuyển trong công nghệ, để bắt kịp những trào lưu chứ không đi theo những điều gì mà người khác đã làm.

Để thành công, bạn phải phát triển các kĩ năng có nhu cầu cao trong các vị trí liên quan đến doanh nghiệp phần mềm như người phân tích hệ thống, (System Analyst) kĩ sư yêu cầu (Requirements Engineer), người quản lí dự án (Project Management), hay kiến trúc sư hệ thống (System Engineer) để chuẩn bị cho những xu hướng tiếp trong tương lai. Do đó bạn phải chọn đại học nào có những đào tạo chuyên về những kỉ năng này. Đào tạo giáo dục là một đầu tư quan trọng đòi hỏi nỗ lực, tiền bạc và thời gian nên bạn cần bỏ thời giờ nghiên cứu cẩn thận để chọn trường đúng và đào tạo đúng. Bằng việc có cả kĩ năng lập trình và kĩ nghệ phần mềm, bạn đặt mình vào ưu thế của xu hướng tương lai thay vì chỉ đi theo người khác.

Tất nhiên, người lập trình (Programmer/Coder) không thể trở thành người kĩ sư phần mềm (Software Engineer) ngay được. Sự chuyển đổi cần thời gian và kinh nghiệm để thành công cho nên các bạn sẽ cần đào tạo thêm. Nếu bạn đã làm việc trong công nghiệp như người lập trình, bạn có thể học thêm về thiết kế, kiến trúc hay quản lí. Bạn có thể học về quản lí dự án phần mềm và phân tích doanh nghiệp bằng cách học các môn học ngắn và áp dụng tri thức này vào dự án của bạn. Không gì là tốt hơn kinh nghiệm thực tế. Bạn càng biết nhiều bạn sẽ càng nhận ra rằng bạn cần đào tạo thêm bởi vì học tập là liên tục và không bao giờ dừng lại.

Chìa khóa thành công trong gia công phần mềm (Outsourcing) là hiểu nhu cầu của khách hàng và có khả năng giải quyết vấn đề. Tôi khuyên bạn nên lấy đào tạo về kĩ sư yêu cầu (Requirements Engineer – System Analyst) để làm việc trực tiếp với khách hàng và phát triển khả năng nhận diện và giải quyết vấn đề hiệu quả. Bạn càng làm việc với khách hàng, bạn càng học được nhiều về doanh nghiệp của họ. Bạn càng biết nhiều về doanh nghiệ của họ, bạn càng cải tiến kĩ năng tốt hơn. Là người kĩ sư yêu cầu, bạn làm việc với người quản lí dự án, kiến trúc sư dự án, và khách hàng để nhận diện những chức năng phải được thực hiện trong thời gian, chi phí giới hạn.

Nếu bạn không thích làm việc với khách hàng mà ưa chuộng kĩ thuật thì bạn có thể lấy khóa đào tạo trong kiến trúc (Software Architecture). Đây là vị trí kĩ thuật bao hàm các quyết định then chốt đề cập tới cách hệ thống mới khớp vào trong kết cấu nền toàn thể của tổ chức. Để thành công, người kiến trúc sư cần hiểu và kiểm soát được các yếu tố liên kết và tích hợp (Integration) của các cầu phần (Componens) trong hệ thống thông tin, chi phí (cost) và may rủi (Risks) của giải pháp được đề nghị. Kiến trúc sư hệ thống phải ra quyết định về các cấu phần khác nhau mà sẽ được cần tới, cách khớp các cấu phần này vào trong kết cấu nền hiện có, và thực hiện từng cấu phần theo thứ tự nào.

Kĩ năng khác đang có nhu cầu cao là người quản lí dự án phần mềm (Software project manager) . Người này chịu trách nhiệm thuê nhân viên, lập lịch biểu, và theo dõi dấu vết tiến độ qua mọi pha phát triển. Người này cũng chịu trách nhiện phân chia công việc, giải quyết vấn đề hàng ngày, và đảm bảo nhân viên đang thực hiện nhiệm vụ riêng của họ. Người quản lí dự án phải vừa làm việc với các nhân viên kĩ thuật và khách hàng để thành công trong mục đích của mình.

Ngày nay, để thăng tiến trong nghề nghiệp chuyên môn bạn cần hiểu cách các doanh nghiệp tổ chức và vận hành và áp dụng công nghệ để làmtốt hơn. Tôi khuyên các bạn nên có thái độ học liên tục để cải tiến kĩ năng của mình, thu nhận tri thức mới như trao đổi và lãnh đạo. Mọi người đều có thể học ngoại ngữ nhưng kĩ năng trao đổi cần nhiều thời gian hơn để phát triển. Trao đổi cần có kinh nghiệm để có hiệu quả. Nhiều khách hàng không hiểu kĩ thuật để mô tả chi tiết yêu cầu của họ và nhiều người kĩ thuật không hiểu các qui trình doanh nghiệp bởi vì họ không thể trao đổi được với khách hàng. Học trao đổi, cần có thái độ kiên nhẫn biết “lắng nghe”, là kĩ năng mà nhiều người không có.

Kĩ năng lãnh đạo cũng không phải là gì bạn có thể học được qua vài khóa huấn luyện, nó cần thời gian. Bạn phải tích cực tự mình học từ những sai lầm, học từ kinh nghiệm của người khác, và tự tạo cho mình một vị thế riêng biệt. Cách tốt nhất để thăng tiến trong nghề nghiệp ở mọi công ty là để cấp quản lí biết bạn có khả năng gì. Có khả năng trả lời các câu hỏi của khách hàng, giải quyết các vấn đề, chấp nhận nhiều trách nhiệm hơn, và chia sẻ giải pháp là cách để phân biệt bạn với những người khác.

(Bài viết của John Vu )

Bắt đầu dự án AngularJS với Yeoman

Bạn có thể dễ dàng chạy thử một ví dụ về AngularJS với chỉ một file html và một file Javascript. Tuy nhiên, để làm một dự án Ứng dụng Web hoàn chỉnh, ta cần có đầy đủ các công cụ phụ trợ như Grunt, Bower, hay một cấu trúc thư mục hợp lý, hoàn chỉnh. Để làm được điều đó, chúng ta sử dụng Yeoman.

Để bắt đầu, chúng ta cài đặt Yeoman, Grunt, và Bower với lệnh sau:

Tiếp đến, chúng ta tạo thư mục cho dự án:

Sau đó, cài đặt các thư viện cần thiết để giúp Yeoman khởi tạo dự án AngularJS

Sau khi hoàn tất, chúng ta tiến hành lệnh khởi tạo dự án

Và tiến hành trả lời các câu hỏi như sau:

Để có thể sử dụng SASS, bạn cần có trình biên dịch. Bước này, chúng ta sẽ tiến hành cài đặt trình biên dịch đó

Cuối cùng, chúng ta sử dụng Grunt để biên dịch và chạy ứng dụng với lệnh

Như vậy, ta có một trang web mặc định của Yeoman chạy ở địa chỉ http://172.20.20.20:9000

Chú ý: Nếu chúng ta thấy lỗi về Version của Jquery, chúng ta chạy 2 lệnh sau để sửa

 

Vấn đề phân trang trong AngularJS và Boostrap Theme

Trong bài viết này, mình sẽ đề cập đến vấn đề phân trang trong AngularJS. Phân trang là một vấn đề rất phổ biến. Vì vậy, hiện nay đã có các thư viện giúp ta làm việc này.

Để bắt đầu, chúng ta cài đặt thư viện sau:

Sau đó thêm module mới ui.bootstrap vào file app/config/config.tpl.js

Kế tiếp, trong phần view app/views/users/list.html, chúng ta thêm thẻ sau:

Ở phần Controller app/scripts/controllers/users.js, chúng ta cần thêm các giá trị vào biến $scope

Như vậy, chúng ta đã hoàn thành phần phân trang.

Vấn đề đa ngôn ngữ trong AngularJS

Trong phần này, mình sẽ thêm chức năng đa ngôn ngữ cho dự án. Đa ngôn ngữ là một phần quan trọng và có mặt ở rất nhiều ứng dụng. Việc xây dựng chức năng này tương đối phức tạp, tuy nhiên lại mang lại lợi ích không nhỏ về lâu dài. Phần source code của dự án các bạn có thể xem tại đây https://github.com/thanhson1085/bean-seed/tree/4.4

Trước khi bắt đầu, chúng ta cần cài đặt các thư viện sau:

Sau đó thêm module mới pascalprecht.translate vào app/scripts/config.tpl.js

Tiếp đến chúng ta cần tạo thư mục resources để lưu các file ngôn ngữ:

Thêm nội dung vào file locale-us_US.json

Thêm cấu hình đa ngôn ngữ vào các file config như config/local.json

Thêm config vào file app.js

Thay đổi nội dung file app/views/users/list.html

Như vậy, đến đây chúng ta đã có thể thấy rằng Angular Translate sẽ đọc các label được khai báo trong file ngôn ngữ và đưa vào view (ví dụ list.html). Nhưng vẫn còn thiếu phần để người dùng có thể thay đổi ngôn ngữ của ứng dụng. Ở đây, ứng dụng có hai ngôn ngữ là English và Việt Nam.

Để làm được điều đó, chúng ta sẽ xây dựng một View và một Directive với từng bước như sau:

Tạo một Service thay đổi ngôn ngữ app/scripts/services/locale.js

Tiếp đến tạo một Directive app/scripts/directives/locale.js

Tạo một view, và thêm Directive vừa tạo vào view app/views/users/setting.html

Cuối cùng, thêm một route mới – app/scripts/app.js

Như vậy, chúng ta đã hoàn thành các bước để thêm chức năng Đa ngôn ngữ vào ứng dụng.

 

 

Link tạo Facebook Live Stream từ máy tính

Mọi người click vào nút bên dưới, một dialog của Facebook sẽ được bật lên để mọi người lấy các thông tin Facebook Live Stream. Vì vậy, nếu trình duyệt chặn Popup của trang này, mọi người nên cấu hình để cho phép popup từ trang.

Để bắt đầu Live Stream facebook trên máy tính, ta làm các bước sau:

Cài đặt OBS

Cài đặt chương trình OBS (Open Broadcaster Software) để có thể phát video từ máy tính. OBS là một phần mềm miễn phí. Bạn có thể download ở link sau: https://obsproject.com/.  Bạn nên lựa chọn phiên bản OBS Studio.

Sau khi download thành công, bạn tiến hành cài đặt như bình thường, không có cấu hình gì phức tạp

Lấy link Live Steam

Bạn click vào nút bên dưới

Đến đây, nếu trình duyệt chặn Popup, bạn cần tắt chế độ chặn đó đi, và ấn lại nút trên. Và một dialog sẽ bật lên, nếu cần bạn sẽ phải login facebook. Và bạn sẽ có giao diện như hình bên dưới.

Facebook Live Steam từ desktop

Facebook Live Steam từ desktop

Đến đây, bạn sẽ lựa chọn share lên Wall hay lên Group rồi ấn Next. Đợi 1 lúc, bạn sẽ có link stream và key.

Lựa chọn nguồn Stream

Bạn bật phần mềm OBS. Vào phần cấu hình để thiết lập link stream và key (cái mà bạn có được từ bước trên).

Sau đó lựa chọn nguồn video muốn Stream. OBS hỗ trợ rất đa dạng, bạn có thể chọn camera, màn hình máy tính hoặc file MP4

Bắt đầu Stream

Sau khi hoàn tất thiết lập, ấn nút Start Stream trên OBS. Rồi quay trở lại màn hình PopUp ấn vào nút Go Live.

Như vậy là bạn đã Go Live thành công, khi muốn kết thúc, bạn vào OBS và ấn nút Stop Stream