Share This

MỞ RỘNG PHẠM VI KHẢ NĂNG CỦA SHELL QUA LÝ THUYẾT VÀ ỨNG DỤNG

24/11/2017
    ★ Có thể sử dụng trên cả mong đợi? Bash on Ubuntu on Windows.

Từ 8/2016, [Bash on Ubuntu on Windows] (dưới đây sẽ viết tắt là BoW) được lồng vào Windows 10, vì thế chúng ta có thể sử dụng được cả Ubuntu và Bash trên Windows.
Chắc hẳn không ít người nghĩ rằng [Nếu có thể dev được như vậy thì thú vị lắm]?
Chúng tôi đã sử dụng Bow để giả lập môi trường Dev thực tế kiểm chứng có thực đáp ứng được mức kì vọng như vậy không.

Dùng BoW để phát triển thử ứng dụng.

Được đưa vào từ phiên bản Windows 10 Anniversary Update, [Bash on Ubuntu on Windows] là chức năng tăng cường bởi Creators Update vào tháng 4/2017, các development tool đi kèm cũng sẵn sàng để sử dụng được. Tại bài viết này, chúng ta cùng kiểm chứng xem khi sử dụng Bow để dev thực tế có đúng là trên cả mong đợi hay không.

Về môi trường
Chúng ta tiến hành dev và kiểm chứng các vấn đề ở chương này trên môi trường sau.
Windows 10 Pro 64bit, version 1703, build 15063.138 (Creators Update)
16GB RAM
Intel Core i7-5500U CPU @ 2.40GHz

Và BoW thì sử dụng những phần sau Creators Update [Chỉ dẫn 1].
▼Chỉ dẫn 1 Thông tin của Bash on Ubuntu on Windows sử dụng tại bài viết này (*1)
$ uname -a
Linux DESKTOP-T3CMM04 4.4.0-43-Microsoft #1-Microsoft ⇙
Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

(*1) Về việc hiển thị Terminal, đặc biệt, trường hợp không có ghi chép thì hiển thị Terminal của BoW,
chứ không phải là Command prompt.

Về cách thức đưa BoW vào thì sẽ bị lược bỏ trong bài viết này. Hãy tham khảo cách thức đưa vào qua bài báo trên internet (*2).
Sau khi đưa vào, có thể khởi động từ Start Menu, có thể chọn [Bash on Ubuntu on Windows] hoặc là nhấn key …+ …,
rồi nhập bash vào phần [chỉ định tên file muốn thực thi] trong dialog được hiển thị.

(*2) Link Tham Khảo

Về nội dung kiểm chứng
Để xác minh, sẽ thử phát triển ứng dụng mẫu đơn giản như sau đây trên thực tế, rồi xác nhận cảm nhận khi sử dụng.(*3)
(*3) Sample Code thì được public trên GitHub.

●Phát triển Web bằng Java và Play Framework
●Phát triển Front-End bằng việc sử dụng Vue.js và npm
●Phát triển Twitter Client đơn giản bằng Python

Thêm nữa, ngoài những cái ghi ở trên, cũng đã xác minh những việc như là tạo môi trường COBOL dành cho Mastodon chạy.
Những cái như vậy thì được giới thiệu trên blog của tác giả, nếu có hứng thú thì vui lòng xem thêm trên đó (*4).
(*4) Link 1 Link 2

Sự liên kết, kết nối của BoW và môi trường Windows
Về cơ bản thì, đối với môi trường thực tế sử dụng BoW thì sẽ hướng đến việc sử dụng Editor hay IDE trên Windows. Vì không thể
tham chiếu thư mục dùng chung thư mục của BoW từ Windows, nên trên Windows, sẽ tạo thư mục (C:¥work), thư mục này sẽ dùng
cho cả BoW và Windows cùng tham chiếu đến và development. Do là nếu giữ nguyên như vậy mà sử dụng từ BoW thì có 1 chút trở ngại
nên sẽ tốt hơn nếu tạo symbolic link tại $HOME rồi sử dụng giống như [Chỉ dẫn 2].

▼Chỉ dẫn 2 Tạo symbolic link đến folder để làm task trên Windows
$ ln -s /mnt/c/work $HOME/work
$ ln -l work
lrwxrwxrwx 1 kunst kunst 11 April 29 17:58 work -> /mnt/c/work

Install Open JDK 8 bằng apt đến môi trường BoW.
$ sudo apt-get install openjdk-8-jdk

sbt thì được install theo trình tự [Chỉ dẫn 3] của [Install của sbt đến Linux] trên Site chính thức (*7).

▼Chỉ dẫn 3 Install sbt
$ echo "deb https://dl.bintray.com/sbt/debian /" | ⇙
sudo tee -a /etc/apt/sources.list.d/sbt.list
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 ⇙
--recv 2EE0E64E40A89B84B2DF73499E82A75642AC823
$ sudo apt-get update
$ sudo apt-get install sbt

(*7) Link Tham Khảo

Chuẩn bị cho việc development (BoW)
Tại môi trường BoW, tạo template cho Play Application. Khi tạo template thì sử dụng command sbt new (*8).

(*8) Link Tham Khảo
$ sbt new playframework/play-java-seed.g8
Lúc này thì có nhiều câu hỏi được đặt ra, tuy nhiên, theo như [Chỉ dẫn 4] thì ngoài name ra, những chỗ còn lại để trống
và Enter thì cũng OK.

▼Chỉ dẫn 4 Câu hỏi khi tạo template
This template generates a Play Java project
name [play-java-seed]: play-java8-sample ←Nhập tên project vào
organization [com.example]: ←Khoảng trống rồi Enter
scala_version [2.11.11]: ←Khoảng trống rồi Enter
play_version [2.5.14]: ←Khoảng trống rồi Enter

Template applied in ./play-java8-sample

Chuẩn bị cho việc development (Windows)
Vì có thể tạo template cho Project bằng BoW, nên sẽ mở Project được tạo (C:¥work¥play-java8-sample) từ Windows.
Tại IDE thì sử dụng IntelliJ IDEA (khi compile Java application bằng IntelliJ IDEA, riêng tại môi trường Windows thì cũng cần JDK)

DEVELOP
Chúng ta vừa khởi động dev server bằng BoW vừa chỉnh sửa source bằng IDE của Windows để tiến hành develop.
Khởi động dev server bằng command sau đây
$npm run dev

Và sau đó truy cập đến [localhost:8080] từ browser. Ở đây đã được xử lý hot deploy và hot reload, nên màn hình sẽ tự động reload mỗi khi source code có thay đổi mới. (Như hình 11)
Bắt đầu dev với điều kiện như thế này.

Vì code mẫu hầu như là giống với code đã được giới thiệu ở trang nêu trong Note 10, nên ở chỗ này sẽ lược bỏ.
Vì chỉ cần BoW để sử dụng npm nên có thể dev mà không cần cài đặt npm trên Windows.
Tác giả đã cho chạy npm trên BoW và thực hiện ghi đè lên ok.

Tiện ích : open command
Việc update Creators vào tháng 4 năm 2017 đã giúp cho có thể thực hiện trực tiếp binary trên Windows từ BoW.
Nó mở thư mục hiện hành và thực hiện lệnh giống lệnh open của Mac nên rất là tiện lợi.

Tạo script ở List 3 cho [$HOME/bin/open], chúng thiết lập luôn PATH cho [$HOME/bin] bằng . bashrc chẳng hạn.
Và như thế là có thể mở các thư mục như là open và open word\js-sample.
Tuy nhiên hãy lưu ý rằng với cơ chế của BoW thì không thể mở các thư mục nằm ngoài thư mục của Windows ( chẳng hạn các thư mục bên trong /mnt/c/)

List 3 bin/open
#! /bin/bash
"if [ $# -eq 0 ]; then
DIR=.
else
DIR=""$*""
fi
explorer.exe $DIR"

Tiện ích [lệnh thay đổi Path]
Dùng terminal trên BoW, GUI trên Windows trong nhiều trường hợp muốn hoặc không muốn dùng Path của Windows bằng BoW.
Những lúc như vậy nếu tạo sẵn command để thay đổi giống như List 1, 2 sẽ tiện lợi.
Ví dụ như bên dưới
$ echo "/mnt/c/work/python-sample" | u2w
C:\work\python-sample
$ echo "C:\work\python-sample|e" | w2u
/mnt/c/work/python-sample"

▼ List 1 Command thay đổi Path Windows qua Path Ubuntu (bin/w2u)
#!/bin/bash
sed 's_ \\_/_g' | sed -r 's_^(.)(:)_/mnt/\L\1_g'

▼ List 2 Command thay đổi Path Ubuntu
#!/bin/bash
sed -r 's_^(/mnt/)(.)_\U\2:_g' | 's_/_\\_g'

Dev Twitter client một cách dễ dàng bằng Python

Tiếp theo chúng ta tiến hành sử dụng Python để dev cho Twitter client.
Bởi vì chỉ ở mức độ kiểm chứng môi trường develop, nên chỉ tạo CLI client đơn giản tiến hành riêng việc hiển thị tuần tự (timeline)

Chuẩn bị develop (BoW)
Vì tool quản lý package tiêu chuẩn dành cho BoW chưa được cài đặt nên ta tiến hành cài.
$sudo apt install python3-pip

sử dụng pip cài sẵn luôn những libraries cần thiết
$pip3 install requests_oauthlib

Chuẩn bị develop (Windows)
Đối với việc kiểm chứng develop của Python không sử dụng những cái như là project sample.
Tạo thư mục [C://work/python-sample] trên Windows, mở Atom chẳng hạn bằng text editor.

Develop
Ngoài ra, lần này cũng không sử dụng dev server.
Sử dụng editor của Windows để chỉnh sửa source, ngay sau khi chỉnh xong execute nó từ BoW.
Code hoàn chỉnh tham khảo ở GitHub note 13

Vậy thì chúng ta chạy tool đã tạo bằng command line nào.
Nó sẽ hiển thị tuần tự (time line) như ở Map 12.

Là một cách kiểm chứng đơn giản, gọi Twitter API từ Python của BoW, chúng ta có thể làm được những việc như là trích xuất data.

Tổng kết

Thực hiện kiểm chứng trên nhiều ngôn ngữ Java, Java Script, Python, trên mọi môi trường chỉ cần chuẩn bị sẵn sàng thì có thể tiến hành dev bình thường (có thể cần phải chuẩn bị công phu một chút).
Với góc nhìn theo hướng sử dụng cá nhân, có thể cảm nhận một cách đầy đủ như là tạo máy ảo Linux trên môi trường Windows và tiến hành develop.
Trường hợp tiến hành dev trên Windows, thì cần phải cài rất nhiều tools develop, và vì thế sẽ phát sinh ra một vấn đề môi trường sẽ bị rối loạn. Nếu sử dụng BoW làm môi trường develop, ở một mức độ nào đó có thể phân tách rõ ràng các môi trường,
và từ đó có những lợi điểm chẳng hạn như có thể tự động hóa các shall script.
Hơn nữa, cũng có thể thực hiện bởi các môi trường thuần của nó (native enviroment) chứ không chỉ trên các máy ảo. Do thế trong tương lai đó sẽ là một lựa chọn cho develop.

Tái cấu trúc môi trường BoW
Tác giả sẽ giới thiệu các bước thực hiện trong trường hợp môi trường BoW không chạy được tốt như mong đợi hoặc khi tái cấu trúc lại môi trường từ đầu.
Mở Command prompt lên với quyền admin, thực hiện 2 command theo như sau
>lxrun /uninstall
>lxrun /install

Vì cho dù là tái cấu trúc lại đi chăng nữa cũng không xóa thư mục /root và /home nên các files setting chẳng hạn như tái sử dụng users, .bashrc chẳng hạn có thể sử dụng như ban đầu.
Map 12 Twitter client sau khi hoàn thành
$ ./sample.py
おやすみなさい
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自
これでもう無線のレンジを独自これでもう無線のレンジを独自これでもう無線のレンジを独自

Cách sử dụng Python trong tích hợp trong BoW bằng Visual Studio Code

Trong khâu kiểm thử phát triển của Python, IDE từ đầu đã có dự định sử dụng Visual Studio Code. Tuy nhiên việc sử dụng trực tiếp Python tích hợp trong BoW của Visual Studio Code lại khó và trong bài viết này cũng đã bỏ qua việc sử dụng nó (dĩ nhiên, nếu có thể cài đặt trong môi trường Windows thì cũng có thể xài bình thường được).
Tuy nhiên, đối với trong quá trình kiểm thử, đã có thể sử dụng Python trong BoW từ Visual Studio Code. Bên cạnh đó, trong phương pháp này không thể sử dụng Pylint (Python code checker).
Đầu tiên, chúng ta sẽ cài đặt một plugin cho Python như hình 13. Sau khi cài xong, khởi động lại Visual Studio Code là có thể thấy các file đuôi *.py sẽ được tô màu.
Kế tiếp, nhấn tổ hợp Ctrl + , để mở file settings.json rồi chỉnh sửa (như list 4). Rồi sửa file “C:\work\python.bat” được ghi trong settings.json, thêm nội dung như trong list 5.
Sau khi thiết đặt xong thì click chuột phải trong editor của Visual Studio Code, chọn “Run Python File in Terminal” là file sẽ được chạy trên IDE (hình 14).
Dù sao thì vì tôi nghĩ là BoW sẽ được hỗ trợ tốt nhất trong Visual Studio Code (hi vọng) nên nếu mà như thế thì tôi cũng muốn chuyển qua.

Hình 13: Cài đặt plugin cho Python

List 4: Sửa file settings.json
// Để ghi đè các thiết đặt mặc định, khai báo các thiết đặt bên trong file này
{
""python.pythonPath"": ""C:/work/python.bat""
}

List 5: python.bat
bash.exe -c "echo %* | sed 's_\\\\_/_g' | sed -r 's_^(.)(:)_/mnt/\\L\\1_g' | xargs python3"

Hình 14: Chạy python bằng Bow trong Visual Stduio Code

RELATED POST

See more






    Share
    Close