PHP

Hướng dẫn sử dụng dotmoney

Khi bạn đăng kí sử dụng với Dotmoney bạn sẽ được cung cấp các giá trị: secretKey, accessKey, product_id Các giá trị ban đầu: $secretKey được sử dụng trong hàm createHash() $accessKey $product_id $accessDate là thời gian hiện tại theo định dạng timestamp (ex: 1671088940) $userId là user id của người dùng $requestMethod = ‘GET’ hoặc ‘POST’ $host = ‘https://api.sb.d-money.jp’;…

Tiếp tục đọc

Javascript & Jquery, PHP

Trình xác thực Auth0

Auth0 là một công cụ dịch vụ xác thực giúp việc triển khai các tính năng liên quan đến xác thực trong website của bạn trở nên dễ dàng.  Một số tính năng của Auth0: Xác thực một lần (single sign-on) Xác thực 2 yếu tố (multifactor authentication) Đăng nhập không cần mật khẩu Quản lý người dùng Tích hợp…

Tiếp tục đọc

Javascript & Jquery

Cách build Chrome extension

1. Tạo tệp kê khai(manifest.json) – Đây là file chứa các thông tin cơ bản của Extension bao gồm: name: Tên của extension description: Mô tả ngắn gọn cho extension version: Phiên bản của extension. Mỗi khi có cập nhật cho extension, bạn nhất định phải thay đổi giá trị này thì extension của bạn mới có thể tự động…

Tiếp tục đọc

Django, Python

Phân biệt Union, Intersection and Difference trong phương thức trả về QuerySet

Bảng MyModel= { 1: ‘A’, 2: ‘B’, 3: ‘C’, 4: ‘D’, 1: ‘E’} Thực hiện truy vấn lấy dữ liệu: q1 = MyModel.objects.all() -> <QuerySet [<MyModel: A>, <MyModel: B>, <MyModel: C>, <MyModel: D>, <MyModel: E>]> q2 = MyModel.objects.filter(name__in=(‘A’,’B’)) -> <QuerySet [<MyModel: A>, <MyModel: B>]> q3 = MyModel.objects.filter(name__in=(‘C’,’D’)) -> <QuerySet [<MyModel: C>, <MyModel: D>]> – Union() sẽ trả kết hợp các kết quả trong…

Tiếp tục đọc

Django, Python

Kiểm tra quyền trong ModelAdmin

Trong Django có các hàm kiểm tra: – ModelAdmin.has_view_permission(request, obj=None) Trả về True nếu đối tượng (obj) được phép xem, ngược lại trả về False. – ModelAdmin.has_add_permission(request, obj=None) Trả về True nếu được phép thêm đối tượng (obj), ngược lại trả về False. – ModelAdmin.has_change_permission(request, obj=None) Trả về True nếu được phép chỉnh sửa đối tượng (obj), ngược lại trả về False. – ModelAdmin.has_delete_permission(request, obj=None) Trả về…

Tiếp tục đọc

Django, Python

Xử lí khi có sự khác biệt các fields trong Form Admin

Trường hợp Bảng ae_fonttype có các trường(id, name, order, font_type) Khi hiển thị(view) cần có các trường (name, font_type, font_list) font_list: là danh sách các font có cùng font_type được lưu ở ae_fonttype_font_list Khi thêm bản ghi mới(add) chỉ có(name, font_type) Model(models/font_type.py): class FontType(models.Model): class Meta: verbose_name = ‘フォントタイプ’ verbose_name_plural = ‘b.1 フォントタイプ一覧’ ordering = [‘order’] name = models.CharField(verbose_name=”名前”, null=True, blank=True, max_length=32)…

Tiếp tục đọc

Javascript & Jquery

Download và zip nhiều file cùng lúc

Để thực hiện tính năng này, cần sử dụng thêm 2 thư viện: jszip & FileSaver https://github.com/Stuk/jszip https://github.com/eligrey/FileSaver.js Sử dụng: var zip = new JSZip(); zip.file(“Hello.txt”, “Hello Worldn”); var img = zip.folder(“images”); img.file(“smile.gif”, imgData, {base64: true}); zip.generateAsync({type:”blob”}).then(function(content) { // see FileSaver.js saveAs(content, “example.zip”); }); Để có thể dùng tính năng tải xuống trực tuyến sử dụng tùy chọn streamFiles zip.generateAsync({ type:…

Tiếp tục đọc

Django, Python

Vô hiệu hóa Chrome tự động điền input password

Việc điền tự động của chrome có thể gây ảnh hưởng tới 1 input khác(tự động điền giá trị) khi có 1 input type=”password” Thay thành autocomplete=”new-password” trong trường hợp autocomplete=”off” và autocomplete=”false” không sử dụng được trong input type=”password”