12/26/2021

LaTeX cho người mới bắt đầu với 7 videos | Kỹ năng


Như các bạn đã biết, Latex là một công cụ soạn thảo các văn bản khoa học chuyên nghiệp, đặc biệt là các công thức Toán học với nhiều công dụng vô cùng hữu ích, có thể chạy hoàn toàn miễn phí trên hệ thống phần cứng và các hệ điều hành khác nhau.

Latex có rất nhiều ưu điểm nội nổi trội so với các công cụ soạn thảo khác, như:

  • Latex tạo ra văn bản chất lượng cao, chuyên nghiệp và đẹp mắt. Văn bản tạo ra bởi Latex có chất lượng in ấn rất cao

  • Hỗ trợ soạn thảo các công thức toán, các hình vẽ, mã nguồn lập trình, tạo các cấu trúc phức tạp như chỉ mục, mục lục, phụ lục, tài liệu tham khảo một cách dễ dàng.

  • Latex tạo ra văn bản có dung lượng tập tin nhỏ, tiện dụng trong việc lưu trữ trong đĩa mềm.

  • Latex cho phép tách nội dung văn bản độc lập ra khỏi hình thức trình bày. Điều này cho phép người soạn thảo chỉ cần tập trung vào nội dung mà không cần tốn thời gian làm đẹp phần trình bày.

  • Latex khắc phục được một số vấn đề của Word: không có sự thông nhất về định dạng trong toàn văn bản, thường có lỗi trong các tham chiếu chéo, khó khăn trong việc gõ các công thức...

  • Latex là phần mềm mã nguồn mở, liên tục được phát triển và cải tiến. Có cộng đồng người dùng rộng khắp trên thế giới và Latex community luôn sẵn sàng giải đáp mọi thắc mắc và khó khăn của bạn qua Internet.

Nếu các bạn theo các con đường nghiên cứu thì LaTeX chính là phần không thể thiếu vì nó là bắt buộc để viết một bài báo khoa học. Ngoài ra, nếu bạn sử dụng LaTeX để làm báo cho cho đồ án môn học hay đồ án tốt nghiệp thì sẽ được đánh giá rất cao (các trường hợp này mình đều đã gặp), báo cáo làm bằng LaTeX đẹp hơn rất nhiều so với một báo cáo bằng Word.

BCH Liên chi đoàn - Liên chi hội Viện Toán Ứng dụng và Tin học cũng đã từng rất nhiều lần tổ chức các khóa học LaTeX BASICS. Nhưng với quan điểm của mình, những thứ kiểu như "cho người mới bắt đầu", "BASICS" thì có thể tự học được, tham gia các khóa học mặc dù được chỉ bảo, hỏi đáp trực tiếp nhưng mất thời gian vào các khóa BASICS là không cần thiết.

LaTeX nó cũng gần giống như các ngôn ngữ lập trình mà các bạn học vậy, muốn sử dụng chúng ta phải cài vào môi trường và có một công cụ soạn thảo trên máy. Tuy nhiên, bây giờ có rất nhiều các trang web hỗ trợ soạn thảo LaTeX online cực kì tiện lợi, một công cụ phổ biến mà mình thấy các thầy/cô cũng thường sử dụng để viết các bài báo là https://www.overleaf.com/. Việc làm việc online cũng đem lại những lợi ích nhất định khi mọi người có thể cùng nhau chỉnh sửa một bài, có thể chia sẻ lẫn nhau xem trước khi xuất bản,...

Overleaf cũng giới thiệu chuỗi 7 video hướng dẫn học LaTeX cho người mới bắt đầu, các bạn có thể tham khảo toàn bộ khóa học TẠI ĐÂY (HUST & PI cũng mong muốn sẽ dịch được phần transcript của các video bài học này sang tiếng Việt để cho mọi người có thể tham khảo dễ hơn, tuy nhiên hiện tại vẫn chưa thể làm được do vấn đề thời gian và nhân lực).

LaTeX video tutorial for beginners: 

Video 1: 

Video 2: 

Video 3: 

Video 4: 

Video 5: 

Video 6: 

Video 7: 


Các công cụ hỗ trợ lateX online nổi tiếng: 

https://www.sharelatex.com/

https://www.overleaf.com/login?

12/17/2021

Hướng dẫn lab 5 | Môn lưu trữ và xử lý dữ liệu lớn


Các bạn học môn lưu trữ và xử lý dữ liệu lớn của thầy Đào Thành Chung sẽ phải làm 5 bài lab, trong bài viết này mình sẽ hướng dẫn mọi người chạy bài lab số 5 (lab về Spark Streaming), xem yêu cầu của bài lab TẠI ĐÂY

Chú ý

- Trong hướng dẫn của thầy, có một số hướng dẫn đã quá cũ và không thể chạy được nếu bạn làm theo y nguyên trong hướng dẫn của thầy. Mình đã sửa lại 2 project trong lab cho phù hợp, các bạn chỉ cần clone về và làm theo hướng dẫn của mình dưới đây.

- Project của thầy và project mình sửa lại đều chạy với Spark Single node, nên nếu bạn cài với cụm Multi node thì hãy sửa đổi các địa chỉ hostname từ localhost thành địa chỉ máy master, chỗ nào cần sửa mình đã lưu ý bôi đậm, các bạn chú để sửa lại cho đúng.

Bài 1: Socket Stream

Clone toàn bộ project sau về máy để chuẩn bị chạy nha: https://github.com/demanejar/socket-stream.

Trong project có 2 file chính, một là file SocketStream.scala:

object SocketStream {
    def main(args : Array[String]){
        val conf = new SparkConf().setAppName("Socket-Stream")
        val ssc = new StreamingContext(conf, Seconds(1))
        val lines = ssc.socketTextStream("localhost", 7777)
        val errorLines = lines.filter(_.contains("error"))
        errorLines.print()
        ssc.start()
        ssc.awaitTermination()
    }
}

  • Để có thể submit job này với spark-submit thì bạn phải build chúng thành một file .jar, với scala thì chúng ta sẽ sử dụng sbt

  • Lưu ý: nếu bạn chạy cụm Spark nhiều máy, thì hãy đổi địa chỉ hostname từ localhost thành địa chỉ máy master nha

Khởi động Spark và kiểm tra địa chỉ của master thông qua cổng 8080 (spark://PC0628:7077):

Build project vừa rồi thành file .jar với câu lệnh:

sbt clean package

Chạy spark-submit với file jar vừa bulid được:

spark-submit --master spark://PC0628:7077 --class SocketStream target/scala-2.11/socket-stream_2.11-0.0.1.jar

  • Tham số master là địa chỉ của master mà bạn vừa lấy ở bên trên

  • Tham số class là đường dẫn tới hàm main của project

Mở một terminal khác lên và chạy lệnh sau để bắt đầu gửi text qua cổng 7777:

nc -l 7777

Kết quả in ra màn hình và sẽ vụt qua rất nhanh:



Bài 2: Log Analyzer

Clone toàn bộ project về máy để chuẩn bị chạy nha: https://github.com/demanejar/logs-analyzer.

Mình sẽ đi qua giải thích từng file để mọi người hiểu hơn về project, đầu tiên là file đầu vào log.txt, file này chứa 1546 dòng log, các log đều có cấu trúc giống nhau, công việc của project này chính là nhận đầu vào từ file log này và đưa ra các phân tích, thống kê về trên tập log này.

File stream.sh là một file shell script với nhiệm vụ là đọc dữ liệu từ file log.txt và đẩy chúng qua cổng 9999.

File build.sbt thì giống với project trước, file này để khai báo các thư viện, phụ thuộc để có thể build project thành một file .jar

Cuối cùng là project của chúng ta viết bằng scala với 2 file ApacheAccessLog.scalaLogAnalyzerStreaming.scala. File LogAnalyzerStreaming.scala sẽ lắng nghe ở cổng 9999, lấy dữ liệu và tiến hành tổng hợp, phân tích chúng.

  • Lưu ý: nếu bạn chạy cụm Spark nhiều máy, thì hãy đổi địa chỉ hostname  trong file LogAnalyzerStreaming.scala từ localhost thành địa chỉ máy master nha

Khởi động Spark và kiểm tra địa chỉ của master thông qua cổng 8080 (spark://PC0628:7077):

Build project vừa rồi thành file .jar với câu lệnh dưới đây, lần đầu build có thể các bạn sẽ phải đợi khá lâu vì nó phải tải xuống các thư viện, trong các lần build sau sẽ nhanh hơn:

sbt clean package

Chạy spark-submit với file jar vừa bulid được:

spark-submit --master spark://PC0628:7077 --class LogAnalyzerStreaming target/scala-2.12/log-analyzer_2.12-0.0.1.jar

  • Tham số master là địa chỉ của master mà bạn vừa lấy ở bên trên

  • Tham số class là đường dẫn tới hàm main của project

Trong bài viết trước, chúng ta đã gửi dữ liệu thông qua socket bằng tay, trong bài này vẫn là socket tuy nhiên chúng ta sẽ viết một chương trình để chúng tự động gửi dữ liệu và chúng ta chỉ việc ngồi chờ kết quả thôi.

Như mình giải thích ở ban đầu, file stream.sh là một file shell script với nhiệm vụ là đọc dữ liệu từ file log.txt và đẩy chúng qua cổng 9999. Sử dụng câu lệnh sau để bắt đầu chạy:

./stream.sh log.txt

  • Với log.txt viết ở phía sau thể hiện log.txt là một tham số đầu vào của chương trình viết trong file .stream.sh

  • Lưu ý: nếu bạn chạy cụm Spark nhiêu máy thì file này phải được chạy trên máy master 

Kết quả in ra màn hình cũng sẽ vụt qua rất nhanh, các bạn có thể kéo terminal lên để nhìn

Mở cổng 4040 để xem lại chi tiết các job vừa thực hiện (localhost:4040):


Tham khảo: https://demanejar.github.io/