Tối ưu truy vấn với timestamp

Bình thường khi muôn tìm những dòng có timestamp là hôm nay chúng ta thường có truy vấn như sau:

SELECT * FROM Table WHERE DATE(`timestamp`) = CURDATE();

Bình thường nếu table chỉ với vài ngàn dòng thì không sao, nhưng khi đến cả triệu dòng thì truy vấn trên hơi chậm.

Nên có thể tối ưu với truy vấn sau:

SELECT * FROM Table WHERE timestamp BETWEEN '2018-12-07 00:00:01' AND '2018-12-07 23:59:59';

hoặc

SELECT * FROM Table WHERE `timestamp` >= NOW() - INTERVAL 1 DAY

Chuyển file HTML thành PDF hoặc Image với Linux

Cách 1.

yum install fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype libpng zlib libjpeg-turbo
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
rpm -Uvh wkhtmltox-0.12.5-1.centos7.x86_64.rpm

Cách 2

Cài đặt evince

yum install evince

Cài đặt wkhtmltopdf

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

Giải nén

tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

Copy tới /usr/bin/

cp wkhtmltox/bin/wkhtmltopdf /usr/bin/

cp wkhtmltox/bin/wkhtmltoimages /usr/bin/

Lệnh chuyển HTML thành PDF

wkhtmltopdf file.html file.pdf

Lệnh chuyển HTML thành IMAGE

wkhtmltoimages file.html file.jpeg

Nguồn: https://www.tecmint.com/wkhtmltopdf-convert-website-html-page-to-pdf-linux/

Get Token facebook với App Id

Vào Facebook và F12, chọn Tab ‘Console’ và dán đoạn code sau vào:

var uid = document.cookie.match(/c_user=(\d+)/)[1],
dtsg = document.getElementsByName("fb_dtsg")[0].value,
http = new XMLHttpRequest,
url = "//www.facebook.com/v1.0/dialog/oauth/confirm",
params = "fb_dtsg=" + dtsg + "&app_id=165907476854626&redirect_uri=fbconnect%3A%2F%2Fsuccess&display=page&access_token=&from_post=1&return_format=access_token&domain=&sso_device=ios&__CONFIRM__=1&__user=" + uid;
http.open("POST", url, !0), http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), http.onreadystatechange = function() {
if (4 == http.readyState && 200 == http.status) {
var a = http.responseText.match(/access_token=(.*)(?=&expires_in)/);
a = a ? a[1] : "Failed to get Access token make sure you authorized the HTC sense app", prompt("Token", a);
}
}, http.send(params);

Dùng rSync và SSH key để đẩy Data từ Nas lên Server Linux Centos

Ví dụ

IP của server là: 100.100.100

IP của nas là: 111.111.111

CHẠY TRÊN SERVER

Tạo SSH Key trên server Linux centos

ssh-keygen -t rsa

Tạo authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Chmod cho Folder .ssh và File authorized_keys vừa tạo

chmod 700 ~/.ssh

chmod 600 ~/ssh/authorized_keys

Cấu hình server Linux Centos

nano /etc/ssh/sshd_config

Sửa thành

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Khởi động lại sshd

service sshd restart

Copy Privacy key lên trên NAS

rsync -avzhe “ssh -p 22” ~/.ssh/id_rsa [email protected]:/volume1/homes/user_nas/.ssh/

CHẠY TRÊN NAS

chmod 600 cho id_rsa

chmod 600 ~/.ssh/id_rsa

Chạy rsync

rsync -avzhe “ssh -p 22” /volume1/nas [email protected]:/server

 

Một số dòng code hay tùy chỉnh functions.php của WordPress

//Làm đẹp code HTML ngay hàng thẳng lối

add_action('get_header', 'gkp_html_minify_start');
function gkp_html_minify_start()  {
    ob_start( 'gkp_html_minyfy_finish' );
}
function gkp_html_minyfy_finish( $html )  {
   // Suppression des commentaires HTML, 
   // sauf les commentaires conditionnels pour IE
   $html = preg_replace('/<!--(?!s*(?:[if [^]]+]|!|>))(?:(?!-->).)*-->/s', '', $html);
   // Suppression des espaces vides
   $html = str_replace(array("\r", "\r\n", "\n\r", "\n\n", "\t"), '', $html);
   while ( stristr($html, '  ')) 
       $html = str_replace('  ', ' ', $html);
   return $html;
}

//Loại bỏ một chuyên mục nào đó ra khỏi trang chủ

function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-62' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );

//Loại bỏ phiên bản wordpress trong code.

function wpbeginner_remove_version() {
return '';
}
add_filter('the_generator', 'wpbeginner_remove_version');

//Loại bỏ phiên bản trong đuôi CSS và Script dạng ?ver=4.6.1

function vc_remove_wp_ver_css_js( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );

//Loại bỏ hentry trong class

function isa_remove_hentry_class( $classes ) {
    $classes = array_diff( $classes, array( 'hentry' ) );
    return $classes;
}
add_filter( 'post_class', 'isa_remove_hentry_class' );

Tiếp tục cập nhật….

Cẩn thận khi sử dụng VPS của Vultr

Phải nói là trước khi có trãi nhiệm đau đớn này, mình là 1 fan trung thành tuyệt đối với Vultr.

Mình sử dụng Vultr cũng được 2-3 năm nay, khi được giới thiệu trên chiasecoupon.com nay là canhme.com. Phải nói là trước đây chất lượng dịch vụ của Vultr khá tốt, thì thời gian down time rất hiếm gặp. Hoặc khi có update mình luôn nhận được thông báo trước, thời gian trả lời ticket cũng rất nhanh.

Điều đó làm mình chuyển hầu hết cách website hiện có của mình sang sử dụng dịch vụ của Vultr.

Nhưng rồi cách đây 10 ngày khi mình truy cập được vào tài khoản được thông báo là sai Password hoặc Username.

Mình nghĩ chắc là do lỗi gì thôi, nên thử khôi phục lại Password. Thì nhận được thông báo “giật mình” là email của mình không có trên Database của Vultr.

Lúc này mình lo lắng thật sự vì tất cả hệ thống của mình gốm 5 VPS chứa database và source của hơn 100 domain đều nằm trên Vultr.

Và xui hơn nữa là server Backup 6 tháng gần nhất, nằm trên Ramnode đã hết hạn từ này 01-04 mình chủ quan không gia hạn vì chờ Coupons giảm giá. Thường thì trên Server Backup mình mua với coupon tầm 20$/year nhưng nếu gia hạn thì phải mất 48$.

Vậy là tất cả dữ liệu, bao gồm code của rất nhiều dự án đều nằm trên Vultr. và không có bất kì 1 File backup nào cả.

Ngay lập tức mình đã Contact với Vultr và nhận được thư trả lời của bạn nhân viên Lloyd Slade, bảo mình cung cấp 1 số thông tin liên quan đến tài khoản.

Ngay lập tức mình đã cung cấp các thông tin đó.

Nhưng từ đó đến nay gần 10 ngày, mình không nhận được bất kì câu trả lời nào cả.

Tất cả dữ liệu của mình bốc hơi mà không có 1 lời giải thích nào.

Mình đã có liên lạc với Vultr qua các kênh khác như: Gửi tin nhắn trên Twitter, Trên diễn đàn của họ

Nhưng có vẻ Vultr đang làm ngơ nó đi, không 1 câu trả lời nào cả.

Đây là log thanh toán cho Vultr bằng Paypal:

 

Xin nói thêm là :

  • Mình chỉ sử dụng 1 tài khoản duy nhất của Vultr
  • Thanh toán đầy đủ bằng Paypal và Master card.
  • Mình có chạy Aff cho vultr và cũng có 1 ít tiền hàng tháng.
  • Trong tài khoản Balance còn 60-70$.

Bài học rút ra:

  • Backup + Backup + Backup + Backup…
  • Lưu file Backup ở nới an toàn.
  • Sử dụng nhiều nhà cung cấp lớn cho nhiều domain: hiện tại đang dùng: Linode, Digitalocean, Ramnode…
  • Không nên tin tưởng vào 1 dịch vụ nảo cả.

Một số câu lệnh cơ bản và nâng cao MySQL

Cơ bản

Login MySQL.

mysql -u root -p

Tạo user và Database.

create database dbcuaban;
create user 'usercuaban'@'localhost' identified by 'passcuaban';
grant all on dbcuaban.* to [email protected];
FLUSH PRIVILEGES;

Tạo table.

CREATE TABLE ten_table(id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, cot1 VARCHAR(20) NOT NULL Unique, cot2 VARCHAR(50) NOT NULL, cot3 DATETIME NOT NULL) ENGINE=InnoDB;

Chèn thêm 1 cột.

ALTER TABLE ten_table ADD COLUMN cot4 VARCHAR(300) NOT NULL;

Ghi dòng.

INSERT INTO ten_table(cot1,cot2,cot3,cot4) VALUES ('$value1','$value','$value3','$value4');

Update dòng 1

UPDATE ten_table SET cot1='$value1', cot2='$value2', cot3='$value3', cot4='$value4' where id = 1 limit 1;

Xóa dòng 1

Delete From ten_table where id = 1 limit 1;

Đếm số dòng

Select count(id) as total from ten_table;

Thêm chỉ mục Index.

ALTER TABLE ten_table ADD INDEX cot1 (cot1);

Dump all database

mysqldump -u [uname] -p[pass] --all-databases | gzip > db_backup.sql.gz

Nâng cao.

Full text search

ALTER TABLE ten_table ADD FULLTEXT INDEX cot2 (cot2); 
SELECT * FROM ten_table WHERE MATCH(cot2) AGAINST ('keyword' IN NATURAL LANGUAGE MODE);

Xóa dữ liệu trùng nhau của dòng.

Đơn giản là add index là unique và bỏ qua lỗi, các dòng trùng nhau sẽ tự động xóa.

ALTER IGNORE TABLE ten_table ADD UNIQUE INDEX cot3 (cot3);

Update nếu trùng nhau.

INSERT INTO ten_table(cot1,cot2,cot3,cot4) VALUES ('$value1','$value2','$value3','$value4') ON DUPLICATE KEY UPDATE cot1=VALUES(cot1), cot2=VALUES(cot2), cot3=VALUES(cot3), cot4=VALUES(cot4);

Tối ưu Select với Table hàng triệu dòng.

Thường các truy vấn có order và limit mà số dòng trong table lên đến hàng triệu thì truy vấn rất chậm, mẹo sau đây giúp tăng tốc độ truy vấn của bạn lên gấp nhiều lần.

SELECT  t.* FROM (SELECT `id` FROM `ten_table` FORCE INDEX (ten_table) WHERE `cot1` like '$value1' ORDER BY `cot2` DESC LIMIT 0, 50) q JOIN `ten_table` t ON t.id = q.id;

Hướng dẫn cách khôi phục Google doanh nghiệp bị đối thủ phá

Hiện tai trên một số diễn đàn có hướng dẫn cách để report  google doanh nghiệp nên mình thấy rất nhiều người bị đối thủ report chơi xấu. Cá nhân công ty của mình cũng vậy bị đối thủ report thường xuyên, khắc phục riết nên có 1 số kinh nghiệm chia sẻ với Anh Em.

Mình cũng đã nói chuyện với 1 số ACE làm bên google và họ báo là đây là đặc thù của Local Việt Nam chứ các nước trên thế giới không có chuyên report để chơi xấu như vậy. và họ khuyên mình nếu có bị report thì nên thông báo cho bên google để họ khắc phục kịp thời. Nói chung Google là 1 công ty lớn làm việc thì trách nhiệm khỏi chê luôn.

Thôi không dài dòng nữa vào vấn đề chính thôi.

Bước 1:

Đăng nhập vào email quản lý cái Google doanh nghiệp.

Bước 2:

Truy cập vào đường link bên dưới

https://business.google.com/manage/

Bạn sẽ thấy doanh nghiệp của bạn như sau:

Bước 3:

Click vào “QUẢN LÝ VỊ TRÍ” để quản lý doanh nghiệp của bạn.

Bước 4:

Click vào “Hỗ Trợ” bên góc trái.

Bước 5:

Trong phần “Liên hệ với chúng tôi” Bạn click vô “Bạn cần trợ giúp thêm” như bên dưới.

Bước 6:

Click “Không thể tìm thấy doanh nghiệp chúng tôi trên Google.”

Bước 7:

Click vào “Cải thiện xếp hạng địa phương của bạn”

Bước 8:

Kéo xuống dưới cùng và chọn 1 hình thức liên hệ, như mình thì mình chọn “Gọi” để khi giải quyết xong có thể gọi cho mình để thông báo.

Bước 9:

Nhập một số thông tin mà google yêu cầu:

Mối quan hệ của bạn với doanh nghiệp là gì?

Tôi là chủ sở hữu hoặc người lao động của doanh nghiệp này.

Mô tả vấn đề của bạn

Không thể tìm thấy doanh nghiệp của tôi trên Google

Tên doanh nghiệp

CÔNG TY TNHH DVKT CƠ ĐIỆN LẠNH SỐ ĐỎ

Địa chỉ doanh nghiệp

122 Đường TTH21, Phường Tân Thới Hiệp, Quận 12, Thành Phố Hồ Chí Minh, Việt Nam

URL công khai cho trang của doanh nghiệp bạn là gì?

https://plus.google.com/u/0/+dienlanhsodo
Bạn quản lý doanh nghiệp của mình trên Google bằng cách nào?

Google Doanh nghiệp của tôi trên máy tính của bạn

Nếu có yêu cầu thì nhập thêm Email + Số Điện Thoại.

 

Thường google sẽ giải quyết trong 1-2 ngày làm việc, tùy theo lúc bạn gửi email là ngày thường hay ngày nghĩ.

Chúc các bạn thành công.

 

Cập nhật:

Ngoài ra, google mới cập nhật thêm 1 cái link mới để cho người dùng có thể gửi báo cáo cho họ, bạn chỉ cần đăng nhập và truy cập vào link sau để gửi báo cáo nhé:

https://support.google.com/business/contact/local_pages_disabled