thepcafe

đã thích câu trả lời

Sau khi ngâm cứu thì mình đã tìm ra giải pháp:

Sửa file Validator trong vendor folder

vendor\magento\Framework\View\Element\Template\File\Validator.php

Thêm vào dưới dòng 138

$realPath = str_replace('\\', '/',$this->fileDriver->getRealPath($path));

Sau đó chạy các lệnh sau:


php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade


Xóa dữ liệu các thư mục:

pub/static/frontend/* pub/static/adminhtml/* var/cache/ var/generation/ var/page_cache/ var/view_preprocessed/ var/composer_home generated/


Chạy tiếp lệnh:

php -dmemory_limit=6G bin/magento setup:static-content:deploy -f


Phân quyền 777 2 thư mục:

pub/ var/


Sau đó chạy lệnh:

php bin/magento cache:clean


Ok, vậy là đã chạy ngon lành!



thepcafe

Làm sao để đăng nhập ssh vào server trên AWS EC2 qua file pem
thepcafe đã trả lời

Bạn có thể thử cách đăng nhập sau:

ssh -i /path/my-key-pair.pem ec2-user@ec2-server-domain-or-ip

Sau đó bạn sẽ thấy nó hiện lên màn hình như sau

The authenticity of host 'ec2-server-domain-or-ip'
can't be established.
RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
Are you sure you want to continue connecting (yes/no)?

bạn nhập yes và ấn enter là xong.






thepcafe

Mua Asset trên Unity Asset Store thì file tải về được lưu ở đâu?
thepcafe đã trả lời

Sau khi bạn tiến hành thanh toán mua Asset trên Unity Asset Store bạn ấn vào nút Mở trên Unity. Sau đó Unity sẽ mở ra cửa sổ Assets Store, bạn ấn vào Download assets bạn vừa mua.

Bạn có thể dùng trực tiếp qua Unity, còn nếu bạn muốn lấy file vừa tải về thì kiểm tra trong thư mục sau

  • macOS: ~/Library/Unity/Asset Store
  • Windows: C:\Users\accountName\AppData\Roaming\Unity\Asset Store



thepcafe

Lỗi dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.63.dylib khi chạy PHP trên Mac
thepcafe đã trả lời

Mình có thử cách xem phiên bản icu4c hiện tại rồi switch sang verion đó nhưng không thành công.

 brew list icu4c
 brew switch icu4c <version>

Sau vài tiếng tìm hiểu thì mình cũng tìm được cách giải quyết cho vấn đề của mình như sau:

Xoá icu4c hiện tại: dùng 1 trong 2 lệnh dưới

brew uninstall icu4c
brew uninstall --ignore-dependencies icu4c

Cài lại php, tuỳ theo phiên bản bạn muốn dùng

brew install php@7.2

Link lại php bạn vừa cài

brew link php@7.2

nếu báo lỗi đã link bản php trước đó thì unlink bản cũ đi, của mình bản cũ đang dùng php 7.1

brew unlink php@7.1

chạy lại lệnh link php như trước hoặc

brew link --overwrite php@7.2

Sau đó mình chạy lại php -v và được kết quả như dưới

PHP 7.2.19 (cli) (built: Jun 17 2019 19:59:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
  with Zend OPcache v7.2.19, Copyright (c) 1999-2018, by Zend Technologies

Chúc các bạn may mắn.






thepcafe

đã thích câu trả lời

Bạn dùng câu lệnh top nhé. Đây là câu lệnh cơ bản để liệt kê danh sách những tiến trình đang chiếm nhiều tài nguyên của hệ thống.

Tiến trình nào sử dụng nhiều CPU sẽ được sắp xếp lên đầu.

Ngoài ra bạn có thể dùng câu lệnh htop. Cơ bản thì lệnh này tương tự như top nhưng nó sẽ sắp xếp thông tin hiển thị ra dễ nhìn và dễ hiểu hơn.

Bạn có thể dùng phím mũi tên để chọn tiến trình, sau đó có thể kill tiến trình đó hoặc thay đổi độ ưu tiên của tiến trình bằng phím F.


thepcafe

Làm thế nào để xem danh sách các tiến trình đang chạy và chiếm bao nhiêu phần trăm tài nguyên của server linux
thepcafe đã trả lời

Bạn dùng câu lệnh top nhé. Đây là câu lệnh cơ bản để liệt kê danh sách những tiến trình đang chiếm nhiều tài nguyên của hệ thống.

Tiến trình nào sử dụng nhiều CPU sẽ được sắp xếp lên đầu.

Ngoài ra bạn có thể dùng câu lệnh htop. Cơ bản thì lệnh này tương tự như top nhưng nó sẽ sắp xếp thông tin hiển thị ra dễ nhìn và dễ hiểu hơn.

Bạn có thể dùng phím mũi tên để chọn tiến trình, sau đó có thể kill tiến trình đó hoặc thay đổi độ ưu tiên của tiến trình bằng phím F.



thepcafe

đã thích câu trả lời

Khi cài magento 2 thì bạn sẽ hay gặp phải mấy lỗi như vậy. Theo mình thì bạn nên thử cài lại từ đầu.

Trước khi cài lại thì bạn nên xoá những files đã được tạo ra từ lần cài đặt trước và toàn bộ database cũ.

Chú ý quan trọng: Xoá cookie trình duyệt trước khi cài lại.

Chúc bạn may mắn!





thepcafe

Cài PHP Extension intl trên máy mac OS
thepcafe đã trả lời

Mình đã tự config được rồi nhé, note trên đây để ai gặp trường hợp tương tự thì có thể thử làm theo cho đỡ mất thời gian tìm hiểu.

Sau khi chạy lệnh:

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.1

Thì cần phải cập nhật lại file config php.ini, file cần config lại ở đây là /Applications/XAMPP/xamppfiles/etc/php.ini chứ không phải file /usr/local/etc/php/7.1/php.ini.

Sau đó restart lại apache lại là được.






thepcafe

đã thích câu trả lời

Bạn có thể tham khảo qua cách sử dụng cú pháp CASE trong SQL. Với yêu cầu bài toán của bạn thì thử cách sau nhé. Tuy nhiên khi số lượng bản ghi của bảng products quá lớn, bạn nên tách ra thành từng phần như khoảng 1000, 2000 id để update.

$cases = [];
$ids = [];
$params = [];

foreach ($updateData as $id => $value) {
    $id = (int)$id;
    $cases[] = "WHEN {$id} then ?";
    $params[] = $value;
    $ids[] = $id;
}

$ids = implode(',', $ids);
$cases = implode(' ', $cases);
$now = \Carbon\Carbon::now(); //ví dụ là 2019-06-08 09:47:38

DB::update("UPDATE `products` SET `view_count` = CASE `id` {$cases} END, `updated_at` = \"{$now}\" WHERE `id` in ({$ids})", $params);

Query từ câu lệnh trên sẽ tương đương với câu SQL như sau:

"UPDATE `products` SET `view_count` = CASE `id` WHEN 1 then ? WHEN 2 then ? WHEN 3 then ? WHEN 4 then ? WHEN 5 then ? END, `updated_at` = "2019-06-08 09:47:38" WHERE `id` in (1,2,3,4,5)"

Với dữ liệu ví dụ bạn đưa ra, câu SQL với params được truyền vào cụ thể sẽ là:

"UPDATE `products` SET `view_count` = CASE `id` WHEN 1 then 20 WHEN 2 then 35 WHEN 3 then 60 WHEN 4 then 82 WHEN 5 then 350 END, `updated_at` = "2019-06-08 09:47:38" WHERE `id` in (1,2,3,4,5)"

thepcafe

đã thích câu trả lời

Có thể sử dụng một số cách như sau:

UPDATE products p
JOIN (
    SELECT 1 as id, 5 as product_view_count
    UNION ALL
    SELECT 2, 10
    UNION ALL
    SELECT 3, 8
    UNION ALL
    SELECT 4, 10
) vals ON p.id = vals.id
SET view_count = product_view_count;

Hoặc:

INSERT INTO products 
    (id, view_count)
VALUES 
    (1, 5),
    (2, 10),
    (3, 8),
    (4, 10)
ON DUPLICATE KEY UPDATE 
    view_count = VALUES(view_count);

P/S: Lười chưa thử nhưng chắc sẽ ok