Saturday, July 12, 2014

create and last update timestamp fields on mysql

As of MySQL 5.6 its easy-peasy... give it a try:
create table tweet ( 
    id integer not null auto_increment primary key, 
    stamp_created timestamp default now(), 
    stamp_updated timestamp default now() on update now(),
    message varchar(163)
)
 
or 
 
  `inserted` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `insert_src_ver_id` INT NULL,
  `updated` TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
  `update_src_ver_id` INT NULL,
 
 
for MySQL 5.5 or older 
 
First define them like this:
CREATE TABLE `entity` ( `entityid` int(11) NOT NULL AUTO_INCREMENT, `createDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `lastModified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `name` varchar(255) DEFAULT NULL, `comment` text, PRIMARY KEY (`entityid`), ) Then add these triggers:
DELIMITER ;; CREATE trigger entityinsert BEFORE INSERT ON entity FOR EACH ROW BEGIN SET NEW.createDate=IF(ISNULL(NEW.createDate) OR NEW.createDate='0000-00-00 00:00:00', CURRENT_TIMESTAMP, IF(NEW.createDate<CURRENT_TIMESTAMP, NEW.createDate, CURRENT_TIMESTAMP));SET NEW.lastModified=NEW.createDate; END;; DELIMITER ; CREATE trigger entityupdate BEFORE UPDATE ON entity FOR EACH ROW SET NEW.lastModified=IF(NEW.lastModified<OLD.lastModified, OLD.lastModified, CURRENT_TIMESTAMP);
  • If you insert without specifying createDate or lastModified, they will be equal and set to the current timestamp.
  • If you update them without specifying createDate or lastModified, the lastModified will be set to the current timestamp.
But here's the nice part:
  • If you insert, you can specify a createDate older than the current timestamp, allowing imports from older times to work well (lastModified will be equal to createDate).
  • If you update, you can specify a lastModified older than the previous value ('0000-00-00 00:00:00' works well), allowing to update an entry if you're doing cosmetic changes (fixing a typo in a comment) and you want to keep the old lastModified date. This will not modify the lastModified date.
 
 

Friday, July 11, 2014

วิธีแก้ MySQL ใน Ubuntu Linux ให้รองรับภาษาไทยได้

ต้องแก้  /etc/my.cnf โดยเพิ่มตามข้างล่างนี้

To set the default to UTF-8, you want to add the following to my.cnf
 
 
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Monday, May 5, 2014

How to install Gnome on Debian 6 minimally

Install Debian 6 from installation CD
Choose only Standard System Utilities.  Uncheck Graphical Desktop Environment
Reboot and logon after installation finish

apt-get install xserver-xorg-input-kbd xserver-xorg-input-vmmouse xserver-xorg-video-vmware


Use virtualenv to manage multiple version of python on linux

virtualenv can switch between multiple python version and addon.
Use pip to install additional python packages in each python environment

virtualenv -p /usr/bin/python3 py3env
source py3env/bin/activate
pip install package-name

Monday, January 6, 2014

Ubuntu Touch Install script waiting for device fix



  • For Arch Linux users (if any Arch users read here?) wishing to do this, fastboot needs root to run, so if you get stuck at '< waiting for device >' at any point in the script, just change every occurrence of 'fastboot' with 'sudo fastboot' in the script. Everything ran smoothly from there :)
     

      Ubuntu Touch on Nexus 7 fix

      i have had the same issue on my n7 (2012) with release 79 of ubuntu touch in regards to flickering and freezing. just follow these commands. reboot into regular android with debugging enabled and in terminal
      sudo adb shell
      adb root
      rm -f /home/phablet/.display-mir && reboot
      worked for me, its a mir bug.

      Friday, October 18, 2013

      Steps to remove package

      sudo apt-get remove --purge pkgname*
      sudo apt-get clean
      sudo apt-get autoremove