Redis hash nodeJS คือ

หากเราต้องการใช้ Redis เก็บข้อมูลลักษณะเป็น table เราสามารถใช้ Redis hash มาช่วยได้
โดยใช้คำสั่ง hmset ในการเก็บข้อมูล key => Object

client.hmset(key, ["channel",key,"fh",fh,"uid", account_management_info.uid, "device_id", account_management_info.device_id,"user_agent",JSON.stringify(userAgent),"type",userAgentType,"browser",userAgentBrowserName,"brand",userAgentBrand,"name",userAgentName,"icon",userAgentIcon,"client_id",account_management_info.client_id,"ip",ip,"last_login",time,"token",token], function (err, res) {});

ใช้คำสั่ง hgetall ในการเรียกดูข้อมูล

client.hgetall(key, function (err, obj) {//get redis hash
    console.dir(obj);
});

ใช้คำสั่ง sadd ในการเก็บข้อมูลเป็น List

client.sadd(account_management_info.uid, hash);//set of {UID} store array of hash

ใช้คำสั่ง smembers ในการเรียกดูสมาชิกใน List

client.smembers(account_management_info.uid, function (err, replies) {//loop list set of {UID}
    if(!err){
    callback(replies);
    }
})

ใช้คำสั่ง srem ในการลบข้อมูลใน List

client.srem(message.uid,message.channel);
Posted in redis | Leave a comment

WordPress export title and permanent link slug

Sometime we want to export wordpress data to other database such as elasticsearch or other…

SELECT  wpp.post_title,
        wpp.guid,
        wpp.post_date,
        CONCAT
        (
          wpo_su.option_value,
          REPLACE
          (
            REPLACE
            (
              REPLACE
              (
                REPLACE
                (
                  wpo.option_value,
                  '%year%',
                  date_format(wpp.post_date,'%Y')
                ),
                '%monthnum%',
                date_format(wpp.post_date, '%m')
              ),
              '%day%',
              date_format(wpp.post_date, '%d')
            ),
            '%postname%',
            wpp.post_name
          )
        ) AS permalink
  FROM wp_posts wpp
  JOIN wp_options wpo
    ON wpo.option_name = 'permalink_structure'
  JOIN wp_options wpo_su
    ON wpo_su.option_name = 'siteurl'
 WHERE wpp.post_type = 'post'
   AND wpp.post_status = 'publish'
  AND wpp.ID > {LAST_ID}
 ORDER BY wpp.post_date DESC
Posted in wordpress | Leave a comment

Cloudflare PhpMyAdmin white screen after enable RocketLoader

just edit libraries/Scripts.class.php by adding data-cfasync=”false” attribute to the relevant script tag, for example:

 <script data-cfasync="false" src="/javascript.js"></script>

reference : https://support.cloudflare.com/hc/en-us/articles/200169436-How-can-I-have-Rocket-Loader-ignore-specific-JavaScripts-

Posted in cloudflare | Leave a comment

Enable MySQL slow query log on CentOS

1. แก้ไข MySQL config ได้ที่

vi /etc/my.cnf

หากไม่พบ ให้ลองดูที่ /etc/mysql/my.cnf แทน

2. เพิ่มคำสั่งล่างบรรทัด [mysqld]

slow_query_log = 1
log-slow-queries = /var/log/mysql-slow.log
long_query_time = 2

3.สร้างไฟล์เก็บ log รอไว้

touch /var/log/mysql-slow.log
chown mysql:mysql /var/log/mysql-slow.log

4. Restart MySQL service

service mysqld restart

for MariaDB

service mariadb restart

5. รอเว็บไซต์เรามีการเรียก query ที่ช้า มันจะเก็บข้อมูลลง log เราสามารถตรวจสอบ slow query log ด้วยคำสั่ง

mysqldumpslow -a /var/log/mysql-slow.log
Posted in ไม่มีหมวดหมู่ | Leave a comment

javascript sort object by value

ถ้าเราต้องการ sort object ที่มีลักษณะอย่างนี้ แต่เลือก sort ที่ associate key last_login แบบ desc มากไปน้อย
[
{ type: 'browser',
browser: 'Chrome',
client_id: 'xxx',
channel: 'xxxx',
last_login: '1460158773247',
},
{ type: 'browser',
browser: 'Chrome',
client_id: 'xxx',
channel: 'xxxx',
last_login: '1560158773247',
},
{ type: 'browser',
browser: 'Chrome',
client_id: 'xxx',
channel: 'xxxx',
last_login: '1760158773247',
},
]

console.log(valArray[0]);
console.log(valArray[1]);
console.log(valArray[2]);
                       
const jsonAsArray = Object.keys(valArray).map(function (key) {
    return valArray[key];
})
.sort(function (itemA, itemB) {
    return itemA.last_login < itemB.last_login;
});
       
res.json(jsonAsArray);
Posted in ไม่มีหมวดหมู่ | Leave a comment