@thaihuy Bạn config rồi nó thông báo lỗi như thế nào vậy? Mình thấy document họ ghi đầy đủ và chi tiết mà:
Install
composer require yajra/laravel-oci8
Config
Thêm OCI8 provider cho laravel tại config/app.php:
'providers' => [
// ...
Yajra\Oci8\Oci8ServiceProvider::class, // Thêm dòng này vào mảng providers
],
Tùy chỉnh config nâng cao thêm, một file cấu hình cụ thể sẽ xuất hiện thêm trong thư mục config để bạn cấu hình thêm các thông số khác:
php artisan vendor:publish --tag=oracle
Sử dụng
Thay vì dùng Model mặc định của laravel, bạn dùng Yajra\Oci8\Eloquent\OracleEloquent để thay thế:
use Yajra\Oci8\Eloquent\OracleEloquent as Eloquent;
class Student extends Eloquent {
// define binary/blob fields
protected $binaries = ['content'];
// define the sequence name used for incrementing
// default value would be {table}_{primaryKey}_seq if not set
protected $sequence = null;
}
Bạn thử config lại với các bước như trên xem có được ko nhé!
Bạn có thể cụ thể hơn giúp mình được không bạn? vì mình đã cài laravel-oci8 rồi mà vẫn không kết nối được, bạn có thể hướng dẫn chi tiết hơn giúp mình không? (có thể select 1 table trên database luôn giúp nhé). Cảm ơn bạn nhiều!
Không bao giờ quá già để học hỏi. Rất khâm phục anh Sam đã có một chiến lược đúng đắn. Đặc biệt là khi anh ấy "đi du lịch" và vẫn học tập, đọc sách. Mình từng gặp nhiều người phương Tây, luôn đọc sách trên tàu, hoặc máy bay, hoặc quán cafe ở khu du lịch, bờ biển. Họ luôn đi du lịch và không ngừng tìm cơ hội cho mình. Tư duy phương Đông và phương Tây có sự khác nhau ở chỗ "Làm việc để đi du lịch" và "Vừa đi du lịch vừa làm việc". Một bài dịch xuất sắc. Cảm ơn bạn!
PHPUnit is the best tool for PHP Unit testing. It is really easy to install and write a test case using this tool. All you have to do is to create set the directory structure, create phpunit.xml file, add testsuite in it and write your test case.
Chỗ Scope chain do trong function b() không được khai báo biến nên bạn viết lại thành:
var text;
function b() {
console.log(text);
}
function a() {
var text = "in a";
b();
}
a();
text = "in gloal";
Và lý do bạn giải thích là thế này: "Trong function b không có biến text, do vậy nó sẽ ngược lên scope cha để tìm biến text. Tuy dòng khai báo text nằm ở cuối cùng, tuy nhiên do hoisting trong Js, nên mọi khai báo sẽ được chuyển lên đầu scope" --> cái này ok, mình chấp nhận.
Cứ cho là vậy, nhưng đến lúc goi function a():
function a() {
var text = "in a";
b();
}
Có phải sẽ tương đương thế này:
function a() {
var text = "in a";
function b() {
console.log(text);
}
}
Theo tính chất Lexical Scope thì biến bên trong scope có thể truy cập ra phạm vi bên ngoài để lấy giá trị, vậy tại sao ở đây biến text không truy cập đến bên ngoài để lấy giá trị là "in a"
Chỗ này mình chưa thực sự hiểu ? Mong bạn giải thích thêm ...
@Terry sau khi bạn deploy lên rồi sẽ có contract address, bạn chỉ cần thêm contract address này vào "Watch contract" hoặc ở Metamask thì vào "Add token", điền địa chỉ contract vào sẽ theo dõi được mình có bao nhiêu token
@minhtuancnttk39 Có lẽ bạn có thể thấy mục đích đơn giản là ẩn đi giá trị của id nguyên thủy (integer - auto increment) vì nó là một cái bộ đếm. Đối thủ của bạn có thể nhìn vào URL dự đoán được bảng dữ liệu đấy có bao nhiêu records. Ngoài ra, hash id trên url nên nó khó nhớ hơn url dạng integer.
VD:
Nếu url dạng: https://localhost/posts/1, người khác có thể viết code crawl dư liệu dễ hơn, chỉ cần vòng for thay số 1 bằng 1 số khác là họ có dư liệu của một bản ghi khác, dù chưa biết là có tồn tại record nào theo id đó ko. :v Nếu dạng https://localhost/posts/WrZnjNQrZxw thì sao họ dự đoán được một id khác để thay thế nhỉ?
Nếu là bảng users, họ biết bạn đang có bao nhiêu users, nếu họ thống kê hàng tháng họ đoán được tốc độ phát triển của bên bạn như nào... Điều này là ko hay nên tốt nhất là ẩn id đi và sử dụng hash id.
Bonus:
Hash id thì cũng phải là chuỗi đã mã hóa và unique.
Có thể được tự động tạo. Mình thấy các DBMS đều hỗ trợ tự động sinh hash id là khi tạo mới một record theo quy tắc bạn muốn.
mình nghĩ ko phải nhiều item mà là do item đang chứa nhiều view quá, còn cả khởi tạo adapter trong đó nữa nên nó mới thế. mình đã thử set adapter mẹ chỉ có 10item thôi mà vẫn lag mà (giật 1 phát khi scroll nhanh chứ ko phải cứ scroll là giật). Bạn có thể cho mình tham khảo một số cách tối ưu media player ko?
THẢO LUẬN
pwa
@thaihuy Bạn config rồi nó thông báo lỗi như thế nào vậy? Mình thấy document họ ghi đầy đủ và chi tiết mà:
Install
Config
Thêm OCI8 provider cho laravel tại
config/app.php:Tùy chỉnh config nâng cao thêm, một file cấu hình cụ thể sẽ xuất hiện thêm trong thư mục config để bạn cấu hình thêm các thông số khác:
Sử dụng
Thay vì dùng Model mặc định của laravel, bạn dùng
Yajra\Oci8\Eloquent\OracleEloquentđể thay thế:Bạn thử config lại với các bước như trên xem có được ko nhé!
@Thor_Pham bài viết hay và dễ hiểu. em có một vài góp ý hi vọng có thể giúp chị cải thiện thêm hiệu năng của model:
Em chúc chị có những bài viết Viblo thú vị hơn nữa
Bạn có thể cụ thể hơn giúp mình được không bạn? vì mình đã cài laravel-oci8 rồi mà vẫn không kết nối được, bạn có thể hướng dẫn chi tiết hơn giúp mình không? (có thể select 1 table trên database luôn giúp nhé). Cảm ơn bạn nhiều!
Không bao giờ quá già để học hỏi. Rất khâm phục anh Sam đã có một chiến lược đúng đắn. Đặc biệt là khi anh ấy "đi du lịch" và vẫn học tập, đọc sách. Mình từng gặp nhiều người phương Tây, luôn đọc sách trên tàu, hoặc máy bay, hoặc quán cafe ở khu du lịch, bờ biển. Họ luôn đi du lịch và không ngừng tìm cơ hội cho mình. Tư duy phương Đông và phương Tây có sự khác nhau ở chỗ "Làm việc để đi du lịch" và "Vừa đi du lịch vừa làm việc". Một bài dịch xuất sắc. Cảm ơn bạn!
tôi đã thử và mất 1 đống tiền mua khóa học online như thế nào
lương ông x2 nữa thì công ty phá sản à
tôi đã học được cách giật tít câu view như thế nào (phanno)
PHPUnit is the best tool for PHP Unit testing. It is really easy to install and write a test case using this tool. All you have to do is to create set the directory structure, create phpunit.xml file, add testsuite in it and write your test case.
Bài viết rất hữu ích. Nếu bạn bổ sung thêm source code trên github thì (ngon). Mình muốn dùng tool này vào app của mình, đỡ phải cột lại =))
may quá. có cách nhận diện các bạn gái cũ roài =))
Private network la main hay test ban? minh chay tren chainid = 500
Comment tí cho vui. Các kernel mà bạn viết thực chất nếu đã học qua môn DSP và Image processing thì nó là các filter thôi.
@Terry Bạn đang chạy trên mainnet hay test net vậy ?
Chỗ
Scope chaindo trong function b() không được khai báo biến nên bạn viết lại thành:Và lý do bạn giải thích là thế này:
"Trong function b không có biến text, do vậy nó sẽ ngược lên scope cha để tìm biến text. Tuy dòng khai báo text nằm ở cuối cùng, tuy nhiên do hoisting trong Js, nên mọi khai báo sẽ được chuyển lên đầu scope"--> cái này ok, mình chấp nhận.Cứ cho là vậy, nhưng đến lúc goi function a():
Có phải sẽ tương đương thế này:
Theo tính chất
Lexical Scopethì biến bên trongscopecó thể truy cập ra phạm vi bên ngoài để lấy giá trị, vậy tại sao ở đây biếntextkhông truy cập đến bên ngoài để lấy giá trị là"in a"Chỗ này mình chưa thực sự hiểu ? Mong bạn giải thích thêm ...
@Terry sau khi bạn deploy lên rồi sẽ có contract address, bạn chỉ cần thêm contract address này vào "Watch contract" hoặc ở Metamask thì vào "Add token", điền địa chỉ contract vào sẽ theo dõi được mình có bao nhiêu token
@minhtuancnttk39 Có lẽ bạn có thể thấy mục đích đơn giản là ẩn đi giá trị của id nguyên thủy (integer - auto increment) vì nó là một cái bộ đếm. Đối thủ của bạn có thể nhìn vào URL dự đoán được bảng dữ liệu đấy có bao nhiêu records. Ngoài ra, hash id trên url nên nó khó nhớ hơn url dạng integer.
VD:
Nếu url dạng:
https://localhost/posts/1, người khác có thể viết code crawl dư liệu dễ hơn, chỉ cần vòng for thay số 1 bằng 1 số khác là họ có dư liệu của một bản ghi khác, dù chưa biết là có tồn tại record nào theo id đó ko. :v Nếu dạnghttps://localhost/posts/WrZnjNQrZxwthì sao họ dự đoán được một id khác để thay thế nhỉ?Nếu là bảng users, họ biết bạn đang có bao nhiêu users, nếu họ thống kê hàng tháng họ đoán được tốc độ phát triển của bên bạn như nào... Điều này là ko hay nên tốt nhất là ẩn id đi và sử dụng hash id.
Bonus:
@MinhDucHoang dạ em set rồi mà vẫn khônng ăn thua
mình nghĩ ko phải nhiều item mà là do item đang chứa nhiều view quá, còn cả khởi tạo adapter trong đó nữa nên nó mới thế. mình đã thử set adapter mẹ chỉ có 10item thôi mà vẫn lag mà (giật 1 phát khi scroll nhanh chứ ko phải cứ scroll là giật). Bạn có thể cho mình tham khảo một số cách tối ưu media player ko?