Cách fixed lỗi Failed to initialize NVML: Driver/library version mismatch

Nguyên nhân Failed to initialize NVML: Driver/library version mismatch là do chúng ta chưa tắt auto update driver.

Cách fix:

Bước 1: Tắt hết các tiến trình đang chạy GPU Nvidia

lsof /dev/nvidia* | awk '{print $2}' | xargs -I {} kill {}

Bước 2: Xoá một vài module đã update

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm
sudo rmmod nvidia

Bước 3: Kiểm tra lại xem được chưa

nvidia-smi 

Bước 4: Chặn auto update

cat /proc/driver/nvidia/version # lấy version và thực hiện chặn update version đó ở lệnh dưới
sudo apt-mark hold nvidia-utils-<version_number>

[FreePBX] Fixed – Please enable DTLS for Media Encryption field first before enabling DTLS parameters –

Khi mình setting nâng cao cho Extension chan_sip, chọn yes DTLS nhưng hiện thông báo “Please enable DTLS for Media Encryption field first before enabling DTLS parameters“, kiểm tra lại thì không thấy Media Encryption trên giao diện.

Search thử trên mạng thì có vài bài viết nhưng cũng chưa được giải quyết. Lỗi này do update cert manager.

Chỉ chan_pjsip có Media Ecryption

Đi sâu hơn của vấn đề thì update này cho cài đặt chan_pjsip nhưng bản update bị degraded đến setting chan_sip vì vậy khi setting chan_sip sẽ bị lỗi mà không thể tìm thấy Media Ecryption

Nếu không thể setting được yes DTLS sẽ không thể thực hiện được cuộc gọi qua webrtc.

Vì vậy, có 2 solutions mình giải quyết tình huống này:

  1. Inspect browser, edit no to yes, enter, submit :)), hơi thủ công nhưng hiệu quả=)))

2. Edit module cert manager.

Vì mình chỉ cần chan_sip nên mình không care chan_pjsip vì vậy mình comment out toàn bộ javascript xử lý đoạn đó.

SSH server với path:

/var/www/html/admin/modules/certman/assets/js/views

Comment out all file extensionsHook.js

Comment toàn bộ đoạn code trong file.

Ngon rồi, bạn tự test đi nha. ❤

p/s: nếu bạn muốn xịn hơn thì post bug cho freebpx hoặc nghiên cứu đoạn js extensionsHook.js và edit đúng với advanced setting của chan_pjsip. Vì mình không cần tới chan_pjsip nên mình không để thời gian nghĩ vào việc đó =)))

[apache-httpd] Cấu hình trỏ domain vào localhost port và redirect http sang https trên vps

Chào các bạn, mình sẽ hướng dẫn các bạn cấu hình như sau:

Môi trường: Centos 7

Bước 1: Truy cập nơi chứa config của httpd

cd /etc/httpd/conf.d

Bước 2: Tạo file cấu hình của domain hoặc thêm vào file cấu hình có sẵn đoạn code sau:

<VirtualHost *:80>
ServerName xxxabc.com
Redirect / https://xxxabc.com/
</VirtualHost>

<VirtualHost *:443>
ServerName xxxabc.com:443
ProxyPreserveHost On
ProxyRequests Off
LogLevel warn
SSLEngine on
SetEnvIf User-Agent ‘.*MSIE.*’nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
ServerAlias xxxabc.com
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/xxxabc.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxxabc.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/xxxabc.com/chain.pem

ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
</VirtualHost>

  1. Bạn thay xxxabc.com thành domain của bạn. Lưu ý để có được https thì trước đó các bạn cần có được ssl đã nhé. Không có ssl thì không lên https được đâu :D. Mình đang dùng free của letsencrypt.
  2. localhost:8081 là đích mà domain mình sẽ trỏ tới.

Bước 3: Lưu lại file cấu hình và restart lại httpd thôi.

sudo systemctl restart httpd

Ngon rồi 😀

Alias là gì?Tạo aliase bật VirtualBox trên macOS Majave

Vấn đề:

Ví dụ mình đang muốn bật 1 con máy ảo trên máy tính của mình, nhưng việc mở phần mềm lên và click start là một việc cảm thấy khó chịu với mình. Vì mình hay dùng command line :p

Vậy, những gì mình phải làm là mở terminal gõ dòng lệnh sau (ko copy):

VBoxManage startvm “spiral” –type headless

Thấy hơi mệt mệt rồi đúng ko?

Ừ, được rồi. Mình cũng thấy thế. Lúc này, bạn sẽ nghĩ làm sao để có thể dùng câu lệnh gì đó thật ngắn mà vẫn bật được server lên, ko cần thao tác nhiều bước phải ko?

Cái chỗ mình bôi đậm bên trên chính là alias đó. Viết ngắn ngọn hay viết tắt để thể hiện một mong muốn nào đó của mình thôi.

Ví dụ như gõ: startvms hay stopvms để bật tắt server.

Cụ thể, mình cần làm các bước sau để có được alias bật/tắt server.

Bước 1: Liệt kê các VBox đang dùng

VBoxManage list vms

Screen Shot 2019-03-15 at 11.42.26 AM.png

Bước 2: Mở bash_profile rồi add alias vào. (chú ý cái tên spiral là tên của Vb đang chạy nhé)

sudo nano ~/.bash_profile

Add đoạn code bên dưới vào file bash_profile

#start/stop Virtualbox
alias startvms=”VBoxManage startvm “spiral” –type headless”
alias stopvms=”vboxmanage controlvm “spiral” poweroff soft”

Chạy lệnh source để dùng được bash hoặc tắt terminal đi để bash được cập nhật

source ~/.bash_profile

Vậy là xong rồi đó 😛

[Maven] Cách thêm thư viện jar tải ngoài vào maven

Khi dùng maven, không phải thư viện nào cũng có sẵn trên trang mvnrepository.com để có thể “kéo” về project của mình.

Vì thế, việc tải thư viện của một developer nào đó hoặc việc tích hợp 1 project A vào project của mình, cách hay làm thông thường là mở cài đặt library của IDE và add thư viện vào. :))

Ôi!!!, có 200 cái lib chẳng hạn thì add đến bao giờ? Nếu còn có yêu cầu setting lại môi trường trên một máy khác nữa thì thôi rồi lượm ơi!!!

Vậy thì cách mình sẽ nghĩ là làm sao đưa cái đống thư viện lằng nhằng đó vào maven, để khi chạy lệnh của maven là có thể cập nhật được lib ngay. Phải không? Hehe.

Đây, có ngay.

Bước 1: Tổ chức tất cả các lib vào 1 thư mục nằm bên trong project của mình.

Ví dụ:  Project của mình là springbootfileupload , thư mục chứa lib muốn thêm vào project nằm trong springbootfileupload

Selection_030.png

Bước 2: Vào file pom.xml

Thêm 1 thẻ properties bên trong có thẻ thuộc tính jars. Thẻ này chứa đường dẫn trỏ tới thư mục lib của mình.

Lưu ý: Với mỗi hệ điều hành thì sẽ có những đường dẫn tuyệt đối khác nhau nhé.

<properties>
    <jars>/home/khiemnd5/IdeaProjects/springbootfileupload/lib</jars>
</properties>

Selection_031.png

Bước 3: Ở dependency gọi path thư viện cần dùng thôi.

Ví dụ: Mình đang muốn dùng thư viện libclamav.jar mình làm như sau:

<dependency>
    <groupId>libclamav</groupId>
    <artifactId>libclamav</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${jars}/libclamav.jar</systemPath>
</dependency>

 

Selection_032.png

Vậy là được rồi đó, chúc các bạn vui :d

 

Cách cài đặt Adobe Flex SDK 4.6 và build file mxml

Sau gần một ngày tìm hiểu cách cài đặt và sử dụng. Mình nghĩ, sẽ có người bước sau mình nên mình quyết định viết lại những gì đã làm.

adobe flex 4.6.png

Mình thực hiện trên Ubuntu và Mac OS.

Phần 1: Cách cài đặt Adobe Flex SDK.

Phần 2: Cách build file mxml sau khi cài đặt Adobe Flex SDK xong.

Phần 1: Cách cài đặt Adobe Flex SDK.

Adobe Flex là gì? Mình đọc trên trang chủ, wiki thì thấy rằng Adobe Flex này là một SDK phục vụ cho việc phát triển và deployment (triển khai) trên nhiều nền tảng (IOS, Android, Window, Mac, Linux …) dựa trên nền tảng là Adobe Flash. Nên để chạy các file được build ra swf (mxml là layout của Flex được build sang swf) thì cần phải có sự hỗ trợ của Adobe Flash Player.

Bước 1: Tải Adobe Flex SDK 4.6 từ trang chủ: Tại Đây

Bước 2: Giải nén thư mục.

Bước 3: Cài đặt Java theo đúng version 32 bit. (Trang chủ yêu cầu, do phần mềm được viết trền nền 32). Nếu không cài đúng sẽ bị lỗi phía dưới.

version java 64.png

Bước 4: Set path cho Adobe Flex.

  • Đối với MacOS:

nano ~/.bash_profile

add đường dẫn tới thư mục bin giải nén của bạn vào: (Mỗi bạn sẽ có những đường dẫn khác nhau đấy nhé!)

export PATH=$PATH:/Volumes/data/khiemnd5/Desktop/flex_sdk_4.6/bin;

path mac.png

 

  • Đối với Linux (Ubuntu) thì chạy lệnh

sudo nano ~/.bashrc

add thêm path phía dưới (tùy chỉnh đường dẫn của bạn nhé)

#full path to flex4 sdk bin added to PATH variable
PATH=$PATH:/home/khiemnd/Desktop/flex/bin/
export PATH

path ubuntu.png

 

=> Check thử xem Adobe Flex đã hoạt động được chưa.

mxmlc -version

version.png

 

Phần 2: Cách build file mxml sau khi cài đặt Adobe Flex SDK xong.

Bước 1: Tạo file test.mxml

Tại Desktop, tạo file test.mxml

Sau đó mở file lên và paste đoạn code ví dụ Hello World sau:

<?xml version = "1.0" encoding = "utf-8"?>
<s:Application xmlns:fx = "http://ns.adobe.com/mxml/2009" 
   xmlns:s = "library://ns.adobe.com/flex/spark" 
   xmlns:mx = "library://ns.adobe.com/flex/mx"
   width = "100%" height = "100%"
   minWidth = "500" minHeight = "500" 
   initialize = "application_initializeHandler(event)">

   <fx:Script>
      <![CDATA[
         import mx.controls.Alert;
         import mx.events.FlexEvent;
         protected function btnClickMe_clickHandler(event:MouseEvent):void {
            Alert.show("Hello World!");				
         }

         protected function application_initializeHandler(event:FlexEvent):void {
            lblHeader.text = "My Hello World Application";				
         }
      ]]>
   </fx:Script>
   
   <s:VGroup horizontalAlign = "center" width = "100%" height = "100%" 
      paddingTop = "100" gap = "50">
      <s:Label id = "lblHeader" fontSize = "40" color = "0x777777" />
      <s:Button label = "Click Me!" id = "btnClickMe" 
         click = "btnClickMe_clickHandler(event)" />
   </s:VGroup>	
</s:Application>

Bước 2: Build

Mở terminal tại màn hình Desktop. Gõ command:

mxmlc test.mxml

Xem log trên màn hình thì sẽ thấy đường dẫn file test.swf được built ra cùng với đường dẫn của file test.mxml.

Lưu ý: Có cảnh báo khi build nhưng không vấn đề gì đâu 😀

Bước 3: Cài đặt Adobe Flash Player cho trình duyệt.

Xem bài viết sau:  Cách cài Adobe Flash Player

Bước 4: Enable flash trên trình duyệt cho file test.swf 

Lý do: Các trình duyệt tính đến thời điểm hiện tại tháng 9/2017 thì đã đều disable flash vì bảo mật. Nếu muốn dùng thì phải enable lên. Nếu không enable thì khi mở bằng trình duyệt, trình duyệt sẽ tự động tải file về.

Test chrome: (Paste đoạn text dưới vào trình duyệt). Hoặc vào setting => search “plugin” => content setting => unsandboxedPlugins. Add dường dẫn file test.swf

chrome://settings/content/unsandboxedPlugins?search=Unsandboxed%20plugin%20access

set enable flash.png

 

Bước 5: Kéo file / mở file test.swf vào / bằng trình duyệt.

result.png

Chạy rồi 😀

Ref:

  1. https://productforums.google.com/forum/#!msg/chrome/BP5jjon7kZA/3Tpu2PN7AAAJ
  2. https://en.wikipedia.org/wiki/Apache_Flex
  3. https://helpx.adobe.com/flash-builder/release-note/flex-4-6-sdk-release.html

 

Cách cài Adobe Flash Player trên Linux

Các bạn vào trang chủ tải về : https://get.adobe.com/flashplayer/

download flash.png

Chọn loại file muốn tải về cài đặt. Tại thời điểm hiện tại có 2 loại file cài đặt là rpm và tar.gz

Đối với tar.gz

Sau khi tải về (flash_player_ppapi_linux.x86_64.tar.gz). Thì giải nén file định dạng tar.gz này và copy toàn bộ những file được giải nến ra vào thư mục /usr/lib/adobe-flashplugin/ . Cả quá trình trên được mô tả bằng 1 command bên dưới. (Lưu ý: Các bạn change path thành tên của mình nhé)

sudo tar -xvzf /home/khiemnd/Downloads/flash_player_ppapi_linux.x86_64.tar.gz -C /usr/lib/adobe-flashplugin/

Khi muốn gỡ ra thì vào thư mục /usr/lib/adobe-flashplugin/ xóa bằng tay thôi :d

Đối với extension là rpm

Đứng tại thư mục tải về chạy command trong terminal :

rpm -Uvh flash-player-ppapi-27.0.0.130-release.x86_64.rpm

Với case này, khi muốn gỡ thì chạy command:

rpm -e flash-player-ppapi-27.0.0.130-release.x86_64.rpm

Vậy là xong rồi 😀

Cách cài (update) Sublime Text thông qua command line, thêm license

Các bạn thực hiện theo các bước sau: (Mình đang làm trên Ubuntu)

Selection_008.png

Mình cài theo apt.

apt

Install the GPG key:

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -

Ensure apt is set up to work with https sources:

sudo apt-get install apt-transport-https

Select the channel to use:

Stable
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
Dev
echo "deb https://download.sublimetext.com/ apt/dev/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

Update apt sources and install Sublime Text

sudo apt-get update
sudo apt-get install sublime-text

 

Các bạn muốn add license cho bản mới nhất 3143 này thì vào đây để lấy license:

https://github.com/code4idiot/SublimeText

Vào Help => Enter License.

add license.png