• Javascript

    Triển khai môi trường production trong Vuejs

    Mở cmd vào trong thư mục dự án vuejs Đánh lệnh : npm run build Copy các file và thư mục trong thư mục dist vào nơi bạn chạy web production Thêm file .htaccess để có thể chạy được các router với nội dung <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule> Sau đó bạn có thể chạy được web production Chú ý : Nếu chạy trên môi trường local thông qua xampp bạn cần tạo tên miền ảo để chạy

    Chức năng bình luận bị tắt ở Triển khai môi trường production trong Vuejs
  • PHP

    Image và Font trong tcpdf

    Hiển thị hình ảnh dạng base64 với writeHTML() Sử dụng dạng: $html = ‘<img width=”220″ height=”135″ src=”@’ . preg_replace(‘#^data:image/[^;]+;base64,#’, ”, $img_base64_encoded) . ‘”>’; Với $img_base64_encoded là dữ liệu hình ảnh dạng base64. Thêm kí tự ‘@’ để biểu thị theo luồng dữ liệu hình ảnh. Hiển thị font tiếng nhật trong file pdf. Trong thư viện font tcpdf có font mặc định ‘cid0jp’ có thể hiển thị được tiếng nhật, tuy nhiên font chữ này không đồng bộ khi xem file pdf trên trình duyệt, trên PC, Smart Phone, sẽ có 1 số chữ kí tự khác font. Để đồng bộ font chúng ta sử dụng bộ font ‘arialuni’ dùng cho chữ thường,…

  • Javascript

    Sử dụng recaptcha-v3 trong VueJS

    Truy cập https://www.google.com/recaptcha để tạo captcha và lấy sitekey và secretkey để import vào dự án. Install recaptcha-v3 cho VueJs: npm install vue-recaptcha-v3 Sau khi install thành công, import recaptcha-v3 vào trong component cần sử dụng: import Vue from ‘vue‘ import { VueReCaptcha } from ‘vue-recaptcha-v3‘ Vue.use(VueReCaptcha, { siteKey: ‘<YOUR_SITE_KEY>’ })   Sau khi đã import recaptcha-v3 vào component cần sử dụng, dùng grecaptcha.execute để tạo ra token (recaptcha-v3 sẽ tạo ra một token để ta xác nhận nó, token này chỉ được xác nhận một lần duy nhất)  <input type=”button” @click =”submitForm” >  methods: { submitForm () { grecaptcha.execute(YOUR_SITE_KEY).then(token => { …code… }) } } Với token đã có, ta gọi ajax tới một file php để xác nhận token này:…

    Chức năng bình luận bị tắt ở Sử dụng recaptcha-v3 trong VueJS
  • Server linux

    Lỗi cài redmine ubuntu 16.04

    Nguyên nhân lỗi: – Không cài rake: Could not find rake-12.3.3 in any of the sources – Phiên bản Bundle/ruby/gem không tương thích nhau. => Cài update toàn bộ. 1. Đầu tiên cài đặt rvm: Install Ruby on Rails on Ubuntu 16.04 Bundle hiện tại yêu cầu ruby2.5 nhưng default ruby2.3 2. Cài đặt ruby2.5 3. Update gem lên: gem update –system 4. Vào thư mục cài đặt update lại file gem: bundler update –bundler 5. Nhận thấy lỗi Could not find rake-12.3.3 in any of the sources, cài đặt thêm rake version 12.3.3 bằng lệnh: gem install rake -v ‘12.3.3’ 6. Chạy lại lệnh: bundler update –bundler Mọi command…

    Chức năng bình luận bị tắt ở Lỗi cài redmine ubuntu 16.04
  • Uncategorized

    App Sổ thu chi – chú ý phần test xóa data cho iOS (giống Android)

    TH1: Đăng nhập tk 1 ở máy A. Sau đó tạo 1 bản ghi. Sau đó đăng nhập tk 1 đó ở máy B. -> Bản ghi vừa tạo ở máy A vẫn có bên máy B. Khi đó xóa bản ghi đó đi (xóa bản ghi trong app). Sau đó đăng nhập lại máy A nếu bản ghi đó đã được xóa thì OK TH2: Đăng nhập tk 1 ở máy A. Sau đó tạo 1 bản ghi. Sau đó đăng nhập tk 1 đó ở máy B. -> Bản ghi vừa tạo ở máy A vẫn có bên máy B. Khi đó xóa bản ghi đó đi (xóa bản…

    Chức năng bình luận bị tắt ở App Sổ thu chi – chú ý phần test xóa data cho iOS (giống Android)
  • Uncategorized

    Case Re-connect ở các màn hình

    TH Re-connect ở các màn hình, phổ biến nhất là : – Đang dùng app có cuộc gọi đến – Đang sử dụng có tin nhắn SMS, message, zalo, etc. -> xem tin xong vào lại app – Đang dùng bấm phím Home trên Device (cả android, ios) – Đang load màn hình (chuyển round hay chức năng…) bấm Home rồi vào lại – Đang dùng hết pin, sập nguồn -> sạc vào lại – Đang dùng -> sạc pin/rút sạc đang sạc ra – Đang dùng có thông báo pin yếu – Đang dùng có thông báo tới -> xem thông báo -> vào lại app – Load quảng…

    Chức năng bình luận bị tắt ở Case Re-connect ở các màn hình
  • Android

    [Android] Tạo tutorial theo từng màn hình

    Khi tạo hướng dẫn sử dụng cho 1 ứng dụng chúng ta có nhiều cách, 1 trong số đó là hiển thị chức năng của từng thành phần trên từng màn hình như sau :   Để làm việc này ta sẽ thực hiện theo các bước sau : 1. Thêm thư viện vào file gradle (trong cấp thư mục app) :    implementation 'com.elconfidencial.bubbleshowcase:bubbleshowcase:LATEST_VERSION'    LATEST_VERSION : Kiểm tra version ở trang chủ theo link ở cuối bài viết, thời điểm hiện tại là 1.3.1 2. Trong mỗi màn hình cần show tutorial cho view nào đó thực hiện add code :    new BubbleShowCaseBuilder(getActivity()) // Activity instance .title("Tiêu đề…

    Chức năng bình luận bị tắt ở [Android] Tạo tutorial theo từng màn hình
  • Android,  iOS

    [Mobile][Resources] Quy chuẩn đặt tên resource cho ứng dụng

    Với 1 ứng dụng thì resources (ảnh, text, media …) đóng 1 vai trò vô cùng quan trọng. Tuy nhiên khi phát triển ứng dụng thì đôi khi việc update 1 resource nào đó là ko tránh khỏi. Việc đặt tên các resources sao cho dễ hiểu dễ update là việc rất quan trọng đặc biệt là khi ứng dụng được phát triển cho nhiều os khác nhau (android, ios…) tương ứng với nó là nhiều đội dev khác nhau. Để tiện cho việc update app cũng như update resource thì khi bắt đầu làm cần thống nhất việc đặt tên cho các resource trong app giữa các đội dev…

    Chức năng bình luận bị tắt ở [Mobile][Resources] Quy chuẩn đặt tên resource cho ứng dụng