Thứ Ba, 17 tháng 9, 2019

Python : Sử dụng module 'python3-jsonrpc'

Trong module 'python3-jsonrpc' vừa sửa và cài đặt từ mã nguồn
https://github.com/wheeler-microfluidics/application_repository.jsonrpc

Tập tin proxy.py được sửa lại cho python 3 như sau :


import urllib.request, urllib.parse, urllib.error

from jsonrpc.json import dumps, loads


class JSONRPCException(Exception):

    def __init__(self, rpcError):

        Exception.__init__(self)

        self.error = rpcError
        

class ServiceProxy(object):

    def __init__(self, serviceURL, serviceName=None):

        self.__serviceURL = serviceURL

        self.__serviceName = serviceName


    def __getattr__(self, name):

        if self.__serviceName != None:

            name = "%s.%s" % (self.__serviceName, name)

        return ServiceProxy(self.__serviceURL, name)


    def __call__(self, *args):

         postdata = dumps({"method": self.__serviceName, 'params': args, 'id':'jsonrpc'})

         postdata = postdata.encode('utf-8')

         respdata = urllib.request.urlopen(self.__serviceURL, postdata).read()

         resp = loads(respdata.decode('utf-8'))

         if 'error' in resp:

             raise JSONRPCException(resp['error'])

         else:

             return resp['result']        


Giả dụ, ta có phương thức get_status ở địa chỉ url "http://localhost/services/jsonrpc", sử dụng proxy gọi phương thức này như sau :

>>> from jsonrpc import ServiceProxy

>>> proxy = ServiceProxy("http://localhost/services/jsonrpc")

>>> print("Server status :", proxy.get_status())


Chi tiết dùng module này xem tại đây :

https://www.jsonrpc.org/archive_json-rpc.org/python-json-rpc.html


Đóng gói và cài đặt một module tạo mới cho Python

Khi nâng cấp lên dùng python 3, có trường hợp một số thư viện cũ ta dùng trong python 2 không có cho python 3. Khi đó, nếu có mã nguồn của thư viện này ta có thể chuyển chúng sang mã của python 3 với công cụ 2to3 (xem bài trước) rồi đóng gói và cài đặt module này để dùng.

Dưới đây lấy ví dụ gói jsonrpc với mã nguồn tải về tại đây để minh họa :
https://github.com/wheeler-microfluidics/application_repository.jsonrpc

Sau khi tải mã về, dùng công cụ 2to3 để chuyển mã rồi sửa lỗi nếu có. Ta sẽ đóng gói và cài đặt module này như sau

Ta đặt tên gói này là 'python3-jsonrpc'. Tạo và thay thế tập tin setup.py với nội dung như sau :

#!/usr/bin/env python

from distutils.core import setup

setup(name='python3-jsonrpc',
      version=0.1,
      description='A json-rpc package which implements JSON-RPC over HTTP.',
      keywords='JSON RPC',
      license='LGPL',
      packages=['jsonrpc'])


Đóng gói module này với lệnh

$ python3 setup.py sdist


Ta thấy gói python3-jsonrpc-0.1.tar.gz được tạo trong thư mục dist
Bây giờ ta có thể cài đặt gói này với lệnh :

$ sudo python3 -m pip install python3-jsonrpc-0.1.tar.gz

Nếu có lỗi
/usr/bin/python3: No module named pip 

Cài đặt pip3
$ sudo apt-get install python3-pip 


Nếu tiếp tục còn lỗi
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'

Cài pip3 với lệnh sau
$ curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3


Kiểm tra gói vừa được cài đặt :

$ python3 -m pip list


Ta thấy trong danh sách hiển thị gói python3-jsonrpc

Nếu không dùng nữa, ta gỡ gói này ra ta với lệnh :

$ sudo python3 -m pip uninstall python3-jsonrpc


Thứ Tư, 11 tháng 9, 2019

Nâng cấp lên python 3 trong Ubuntu

Nâng cấp lên python 3 trong Ubuntu theo các bước sau

1. Cập nhật và kiểm tra xem python3.6 có sẵn để cài đặt hay không :

$ sudo apt-get update

$ apt-cache search python3.6


2. Nếu chưa có thì thêm PPA cho python3.6

$ sudo add-apt-repository ppa:jonathonf/python-3.6 

$ sudo apt-get update


3. Cài đặt python3.6

$ sudo apt-get install python3.6


4. Kiểm tra phiên bản python3.6 vừa cài đặt :

$ python3.6

Python 3.6.3 (default, Oct  6 2017, 00:00:00) 

[GCC 4.8.4] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> exit()


5. Kiểm tra phiên bản python3 mặc định của hệ thống :

$ python3 --version


6. Nếu phiên bản hiển thị không phải là phiên bản 3.6 vừa được cài, ta dùng update-alternatives để cấu hình python3 cho hệ thống.

Để hiển thị danh sách các lựa chọn để cấu hình cho python3 :
$ update-alternatives --list python3


Cập nhật bảng danh sách này để thêm phiên bản python 3.6 vừa cài đặt nếu phiên bản này chưa có trong danh sách hoặc nếu danh sách này chưa được tạo cho python3:
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 100


7. Chọn phiên bản 3.6 cho python3 :
$ update-alternatives --config python3


Kiểm tra phiên bản python3 vừa được cấu hình :
$ python3 --version


Dùng công cụ 2to3 để chuyển script python 2 sang python 3

Công cụ 2to3 được cài đặt cùng với python3 để chuyển đổi các script từ python 2 sang python 3. Dưới đây là một số ví dụ sử dụng công cụ này :

Hiển thị những khác biệt giữa tập tin hiện thời và phiên bản của nó ở python 3
$ 2to3 example.py


Viết đè những chuyển đổi lên tập tin nguồn và lưu một bản backup cho nó
$ 2to3 -w example.py


Chuyển đổi những tập tin trong thư mục hiện hành sang python 3 và sang thư mục 'python3' mà không thay đổi nội dung của những tập tin này trong thư mục hiện hành.
$ 2to3 --output-dir=python3 -W -n .




Thứ Năm, 5 tháng 9, 2019

Nâng cấp lên maven 3 trong Ubuntu

Nâng cấp lên maven 3 trong Ubuntu theo các bước sau

1. Thêm PPA cho maven3
$ sudo add-apt-repository "deb http://ppa.launchpad.net/natecarlson/maven3/ubuntu precise main"


Nếu có lỗi :
sudo: add-apt-repository: command not found
Cho Ubuntu 18.04, 16.04, et 14.04, phải cài thêm gói software-properties-common như sau
$ sudo apt-get install -y software-properties-common


2. Cập nhật gói với repository vừa thêm
$ sudo apt-get update


Rồi kiểm xem maven3 có sẵn để cài đặt hay chưa
$ apt-cache search maven3


3. Cài đặt maven3
$ sudo apt-get install maven3


4. Kiểm tra xem phiên bản maven3 vừa cài đặt có được chọn xài hay chưa
$ mvn -version


Nếu chưa thì cấu hình để chọn phiên bản maven 3 như sau :
$ sudo update-alternatives --config mvn


Nếu update-alternatives chưa nhận biết phiên bản maven3 vừa được cài đặt, ta  phải cài đặt như sau rồi cấu hình lại với lệnh trên
$ sudo update-alternatives --install /usr/bin/mvn mvn /usr/share/maven3/bin/mvn 100


Đôi khi việc cài đặt maven3 làm thay đổi phiên bản javac đang dùng, ta có thể kiểm tra phiên bản javac và cấu hình lại với lệnh sau :
$ javac -version
$ sudo update-alternatives --config javac


Thứ Ba, 23 tháng 7, 2019

Cài đặt thủ công Java trên Ubuntu

Trong bài trước ta đã tìm hiểu cách cài đặt Java từ PPA (Personal Package Archive). Tuy nhiên, trong một số trường hợp ta cần cài đặt những phiên bản cũ của Java để thực hiện kiểm thử chẳng hạn. Khi đó, ta cũng có thể cài đặt Java trong Ubuntu bằng cách tải về trực tiếp các gói phiên bản từ trang của Oracle.

Trong bài này tôi sẽ cài đặt gói JDK 8u151 tải về từ trang https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

Các bước thực hiện :

1. Tải gói jdk-8u151-linux-x64.tar.gz về máy

2. Chép gói này vào thư mục /usr/lib/jvm
~$ sudo scp jdk-8u151-linux-x64.tar.gz /usr/lib/jvm/


3. Sau đó vào thư mục /usr/lib/jvm và giải nén gói này
~$ cd /usr/lib/jvm/

xxx/usr/lib/jvm$ sudo tar zxvf jdk-8u151-linux-x64.tar.gz 


4. Gán quyền sở hữu thư mục vừa giải nén cho root
xxx/usr/lib/jvm$ sudo chown -R root: jdk1.8.0_151


5. Thêm phiên bản này vào danh sách Java cài đặt trên máy
xxx/usr/lib/jvm$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_151/jre/bin/java 1061
xxx/usr/lib/jvm$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_151/jre/bin/javac 1061 


6. Chọn phiên bản vừa cài đặt với lệnh sau
xxx/usr/lib/jvm$ sudo update-alternatives --config java


There are 5 choices for the alternative java (providing /usr/bin/java).



  Selection    Path                                            Priority   Status

------------------------------------------------------------

  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode

  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode

  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          73        manual mode

* 3            /usr/lib/jvm/java-8-oracle/jre/bin/java          83        manual mode

  4            /usr/lib/jvm/jdk1.8.0_151/jre/bin/java           1061      manual mode

Press enter to keep the current choice[*], or type selection number: 


Sau đó chọn số 4 để dùng phiên bản vừa cài đặt.

7. Tương tự như trên, chọn trình biên dịch javac vừa cài đặt với lệnh sau, rồi chọn phiên bản vừa cài đặt :
xxx/usr/lib/jvm$ sudo update-alternatives --config javac


Thứ Năm, 21 tháng 3, 2019

Nâng cấp lên Java 8 trong Ubuntu 14.04

Trong bài ta sẽ nâng cấp từ Java 1.7 lên Java 1.8 trong Ubuntu 14.04 và cài đặt, cập nhật cấu hình cho Eclipse và Glassfish cũng như cập nhật các tập tin pom.xml để Maven dùng Java 8 biên dịch mã.


A. Nâng cấp từ Java 1.7 lên Java 1.8 trong Ubuntu 14.04

1. Thêm PPA (Personal Package Archive) cho gói Oracle Java 1.8, là gói chính thức của Oracle :

$ sudo add-apt-repository ppa:webupd8team/java

(Nếu không, ta có thể xài gói openjdk như sau :
$ sudo add-apt-repository ppa:openjdk-r/ppa
)

Nếu gặp lỗi :
sudo: add-apt-repository: command not found

thì cài đặt software-properties-common như sau :

$ sudo apt-get install -y software-properties-common


2. Cập nhật thông tin gói trên máy (local package cache) :

$ sudo aptitude update


3. Liệt kê tất cả các phiên bản JDK, JRE, BIN có sẵn :

$ sudo aptitude show oracle-java8-jdk
$ sudo aptitude show oracle-java8-jre
$ sudo aptitude show oracle-java8-bin 


4. Cài đặt Java 8.181-1 :

$ sudo aptitude install oracle-java8-jdk=8.181-1~trusty1 oracle-java8-jre=8.181-1~trusty1 oracle-java8-bin=8.181-1~trusty1


* Ta có thể dùng lệnh apt-get thay vì dùng lệnh aptitude cho các bước 2,3,4 như sau :

$ sudo apt-get update
$ sudo apt-get install oracle-java8-jdk oracle-java8-jre oracle-java8-bin


5. Lưu phiên bản Java mới vừa cài đặt và chuyển sang dùng phiên bản này :

$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-7-oracle/jre/bin/java          73        manual mode
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java          83        manual mode

Press enter to keep the current choice[*], or type selection number: 3 
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/java to provide /usr/bin/java (java) in manual mode

Ta chọn số 3 tương ứng với Java 8 vừa cài đặt

6. Tương tự như trên, chọn trình biên dịch javac vừa cài đặt với lệnh sau, rồi chọn phiên bản vừa cài đặt :
xxx/usr/lib/jvm$ sudo update-alternatives --config javac

7. Kiểm tra phiên bản Java được dùng trong Ubuntu :

$ java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b25, mixed mode)

$ javac -version
javac 1.8.0_181

B. Cập nhật các tập tin pom.xml để Maven dùng java 8 cho biên dịch và chạy mã

1. Tìm các tập tin còn sử dụng java 1.7:

$ grep -r --exclude-dir=.svn "<source>1\.7" *
$ grep -r --exclude-dir=.svn "<target>1\.7" * 

2. Thay phiên bản 1.7 bằng 1.8 trong các tập tin pom.xml vừa tìm được :

$ find . -name pom.xml -exec sed -i "s/<source>1\.7/<source>1\.8/g" {} \;
$ find . -name pom.xml -exec sed -i "s/<target>1\.7/<target>1\.8/g" {} \; 

3. Cập nhật cấu hình và biên dịch mã trong dự án để kiểm tra việc biên dịch này chạy không lỗi :

$ mvn eclipse:eclipse
$ mvn clean install -DskipTests


C. Cài đặt và cấu hình dùng Java 8 cho Eclipse

Tôi dùng Eclipse phiên bản Kepler nên cần phải cài một bản vá hỗ trợ cho việc dùng Java 8 cho phiên bản này. Nếu bạn dùng phiên bản Eclipse gần nhất thì Java 8 được hỗ trợ sẵn và không cần phải cài bản vá này.

Tải bản vá Java 8 java8patch-P20140317-1600-repository.zip ở đường dẫn sau :
https://archive.eclipse.org/eclipse/downloads/drops4/P20140317-1600/

Help > Install New Software... > Add, nhấn Archive để chọn tập tin zip vừa tải về

Rồi chọn cài đặt 'Eclipse Java Development Tools'

Sau khi cài đặt xong, cấu hình Eclipse như sau :

Window->Preferences->Java->Installed JREs-> thêm jdk 1.8 và chọn hướng đến thư mục này /usr/lib/jvm/java-8-oracle-1.8.0.181
Sau đó chọn JRE 1.8 vừa thêm vào
       
Window->Preferences->Java->Compiler-> chọn java 1.8

Cuối cùng chấp nhận để Eclipse biên dịch lại toàn bộ mã trong Workspace để thích ứng với phiên bản java 8 vừa chọn sử dụng


D. Cấu hình Glassfish 3.1.2.2 để dùng Java 8

Tôi dùng Glassfish 3.1.2.2 nên cần phải cấu hình như sau :
Cập nhật phiên bản JRE cho Glassfish :

- Trong tập tin glassfishv3.1.2.2/glassfish/config/asenv.conf -> thêm hoặc thay đổi như sau :
AS_JAVA="/usr/lib/jvm/java-8-oracle-1.8.0.181"

- Trong tập tin glassfishv3.1.2.2/glassfish/config/osgi.properties -> thêm vào cuối tập tin:
jre-1.8=${jre-1.7}

Cuối cùng kiểm tra phiên bản Glassfish và phiên bản Java nó sử dụng :

$ asadmin version -v
Version = GlassFish Server Open Source Edition 3.1.2.2 (build 5), JRE version 1.8.0_181
Command version executed successfully.


Thứ Năm, 31 tháng 1, 2019

Nâng cấp lên PHP 7.x trong Ubuntu

Trong bài ta sẽ nâng cấp từ PHP 5.x lên PHP 7.x trong Ubuntu 14.04 và xài Apache
Thực hiện các bước sau :

1. Thêm PPA (Personal Package Archive) cho gói PHP 7.2, Ondřej Surý phát triển gói PHP cho Debian và PPA cho PHP 7.x trên Ubuntu :

$ sudo add-apt-repository ppa:ondrej/php

Nếu gặp lỗi :
sudo: add-apt-repository: command not found

thì cài đặt software-properties-common như sau :

$ sudo apt-get install -y software-properties-common


2. Cập nhật thông tin gói trên máy (local package cache) :

$ sudo apt-get update


3. Nâng cấp mod_php dùng trong Apache để chạy mã php :

$ sudo apt-get install php7.2


4. Kiểm tra phiên bản PHP vừa cài đặt :

$ php -v


Cho output như sau :
PHP 7.2.14-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Jan 13 2019 10:33:56) ( NTS )

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

    with Zend OPcache v7.2.14-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies


5. Cài đặt thêm một số gói thông dụng nếu cần thiết, chẳng hạn :

$ sudo apt-get install php7.2-cli php7.2-common libapache2-mod-php7.2 php7.2 php7.2-mysql

$ sudo apt-get install php7.2-mbstring


6. Cập nhật cấu hình Apache với mod_php dùng gói vừa nâng cấp :

$ sudo a2dismod php5

$ sudo a2enmod php7.2


7. Khởi động lại Apache :

$ sudo service apache2 restart


8. Kiểm tra phiên bản PHP mà máy chủ web dùng bằng cách tạo một tập tin info.php trong document root:

$ sudo nano /var/www/html/info.php


Điền nội dung tập tin info.php :
<?php

phpinfo();

?>


Kiểm tra thông tin phiên bản và cấu hình PHP dùng trong máy chủ với đường dẫn sau xem có đúng là dùng phiên bản vừa cập nhật :
http://server_domain_name_or_IP/info.php

9. Chạy ứng dụng PHP mà ta phát triển để kiểm thử, nếu có vấn đề, xem lỗi trong log :

$ sudo cat /var/log/apache2/error.log


Đôi khi ứng dụng không chạy do thiếu một thư viện, ta có thể tìm và cài đặt thư viện tương ứng còn thiếu cho phiên bản PHP vừa cài đặt trên máy. Ví dụ tìm và cài đặt thư viện xmlrpc cho PHP 7.2 như sau :

$ apt-cache search php | grep xmlrpc

$ sudo apt-get install php7.2-xmlrpc

Sau đó, khởi động lại Apache :

$ sudo service apache2 restart


10. Nếu muốn quay trở lại dùng phiên bản php 5.5 :

$ sudo a2dismod php7.2

$ sudo a2enmod php5


Sau đó, khởi động lại Apache :

$ sudo service apache2 restart

Thứ Tư, 30 tháng 1, 2019

Cài đặt và dùng Docker trên Ubuntu 14.04

Ngắn gọn về Docker
Khi bạn phát triển một ứng dụng, bạn cần cung cấp các thư viện, máy chủ web, cơ sở dữ liệu... để mã của bạn có thể hoạt động. Đôi khi có những tình huống ứng dụng mà bạn triển khai chạy tốt trên một số máy nhưng trên một số máy khác thì không.

Vấn đề này có thể được giải quyết bằng cách cô lập ứng dụng và làm cho nó độc lập với hệ thống mà nó chạy trên đó. Docker là một giải pháp để thực hiện việc này.

Docker là một công cụ mã nguồn mở cho phép thực hiện việc phát triển, triển khai và chạy một ứng dụng bên trong một bộ chứa phần mềm (sofware container).


Một số thuật ngữ

* Hình ảnh (image): là một gói thực thi bao gồm tất cả những thứ cần thiết để cho một ứng dụng chạy, tức : mã nguồn, môi trường hoạt động (runtime), thư viện, biến môi trường, file cấu hình...

* Bộ chứa (container): là một thực thể (instance) của image trong đó chứa ứng dụng cần sử dụng. Nó luôn luôn được khởi động từ image. Bộ chứa có thể đưa ra các cổng (port) và volumes để tương tác với các bộ chứa khác và tương tác với môi trường ngoài bộ chứa.

* volume : có thể xem như một thư mục chia sẻ. Volume được khởi tạo khi bộ chứa được hình thành. Nó được dùng để lưu dữ liệu và độc lập với vòng đời của bộ chứa.

* Registry : là máy chủ lưu giữ các hình ảnh docker. Nó tương đương với Github, bạn có thể kéo (pull) một hình ảnh từ registry xuống và triển khai (deploy) trên máy bạn và có thể đẩy (push) lên registry hình ảnh tạo trên máy bạn.


Docker khác với máy ảo (virtual machine) ra sao?

Máy ảo dùng thêm các hệ điều hành bên trên hệ điều hành của máy chứa máy ảo, do đó nó đòi hỏi nhiều tài nguyên hơn ứng dụng cần, thêm nữa là boot chậm.

Docker chia sẻ lõi hệ điều hành giữa các bộ chứa và chạy như những tiến trình riêng lẻ trên hệ điều hành chứa nó.


Cài đặt Docker trên Ubuntu 14.04

Để dùng Docker trong Ubuntu 14.04 ta tải và cài đặt gói docker.io như sau :

$ sudo apt-get update

$ sudo apt-get -y install docker.io


Sau khi cài đặt xong docker, ta tạo đường dẫn tượng trưng để có thể gọi docker trực tiếp trong cửa sổ lệnh terminal :

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker


Kiểm tra phiên bản docker cài đặt :

$ sudo docker version


Thử chạy chương trình hello world với docker để kiểm tra

$ sudo docker run hello-world

* docker run là lệnh chạy một bộ chứa.
* hello-world là một hình ảnh mà bạn chạy. Ở đây là hình ảnh của ứng dụng hiển thị dòng chữ "Hello world". Khi bạn chỉ định một hình ảnh trong dòng lệnh này, đầu tiên Docker sẽ tìm hình ảnh này trên Docker host của bạn. Nếu hình ảnh này chưa có trên máy, nó sẽ được kéo xuống (pull) từ public image registry tức Docker Hub
* Dòng lệnh trên đơn thuần hiển thị "Hello world" rồi kết thúc.

Nếu chương trình chạy hiển thị không lỗi thì việc cài đặt docker hoàn thành.

Lệnh khởi động và tắt docker :

$ sudo start docker

$ sudo stop docker


Để tránh dùng root user (tức khỏi gần gõ sudo trước docker), ta tạo nhóm docker và thêm người dùng vào nhóm vì người dùng trong nhóm docker có cùng quyền như root user :

$ sudo usermod -aG docker <username>



Thay thế <username> bằng người dùng muốn thêm vào chẳng hạn :

$ sudo usermod -aG docker toan


Kích hoạt việc thêm nhóm này :

$ newgrp docker



Kiểm tra việc thêm nhóm này thành công hay không bằng cách dùng docker không cần phải gõ thêm sudo đằng trước lệnh :

$ docker run hello-world
$ docker -v
$ docker version 

Đôi khi cần reboot để việc cập nhật này thành công

Tham khảo về việc cài đặt Docker trên các phiên bản Ubuntu khác tại đây : https://docs.docker.com/install/linux/docker-ce/ubuntu/

Các lưu ý sau khi cài đặt Docker trên Ubuntu nếu nó không hoạt động : https://docs.docker.com/install/linux/linux-postinstall/

Tham khảo :
https://docs.docker.com/engine/reference/commandline/docker/


Ví dụ dùng bộ chứa docker để chạy php7cc (PHP 7 Compability Checker) 

Khi ta muốn chuyển một ứng dụng PHP dùng phiên bản cũ lên phiên bản PHP 7, ta cần phải cập nhật mã của ứng dụng cho tương thích với PHP 7. PHP7cc (PHP 7 Compatibility Checker) giúp ta làm việc này.

Ứng dụng này sẽ phân tích các tập tin php và thông báo cho ta các chỗ cần chỉnh sửa dưới dạng các warning (màu vàng) hoặc error (màu đỏ). Nó cũng cho biết các lỗi cú pháp có trong mã nguồn.

Tham khảo dự án php7cc tại đây : https://github.com/sstalle/php7cc

Thay vì tải về, cài đặt và dùng ứng dụng này, ta sẽ dùng một bộ chứa docker để xài một hình ảnh docker của ứng dụng được tạo sẵn tại đây : https://hub.docker.com/r/ypereirareis/php7cc/


Ta chỉ việc dùng bộ chứa docker để xài ứng dụng php7cc đã được cài đặt sẵn (tiết kiệm cho ta việc tải ứng dụng này về và cài trên máy) với cú pháp sau :

$ docker run -it --rm -v $(pwd):/app ypereirareis/php7cc php7cc <path to source to verify>

* -t flag (--tty) gọi một pseudo-tty hoặc terminal bên trong bộ chứa.
* -i flag (--interactive) cho phép thực hiện kết nối tương tác bằng cách thu nhận standard input (STDIN) của bộ chứa.
* -v flag  (--volume) gắn và tạo một volumn.
* -rm flag tự động xóa bộ chứa một khi thoát tiến trình (process). Mặc định, bộ chứa không bị xóa và nó tồn tại khi ta giữ shell session và kết thúc khi ta ra khỏi session

thay <path to source to verify> bằng đường dẫn tới thư mục chứa mã nguồn cần kiểm tra tính tương thích với PHP 7, chẳng hạn :

$ docker run -it --rm -v $(pwd):/app ypereirareis/php7cc php7cc ./src