Archive

Archive for the ‘Quick Tips’ Category

Добавяне на timezones в MySQL (Adding time zones to MySQL)

При опит да сменим часовата зона на MySQL сървъра:

SET time_zone = 'Europe/London';

Се получи следната грешка:

SQLSTATE[HY000]: General error: 1298 Unknown or incorrect time zone: "Europe/London"

Как да оправим грешката? Импортираме всички timezones в MySQL сървъра 🙂

От конзолата пишем:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Където:
-u root е потребителското име за root достъп до MySQL сървъра.

Categories: Linux, MySQL, Quick Tips Tags:

PHP UK Postcode format function

/**
 * If postcode is 5 characters, insert space after the 2nd character
 * If postcode is 6 characters, insert space after the 3rd character
 * If postcode is 7 characters, insert space after the 4th character
 * @param $postcode
 * @return string
 */
function formatUKPostcode($postcode)
{
    $postcode = strtoupper(preg_replace("/[^A-Za-z0-9]/", '', $postcode));
 
    if(strlen($postcode) == 5) {
        $postcode = substr($postcode,0,2).' '.substr($postcode,2,3);
    }
    elseif(strlen($postcode) == 6) {
        $postcode = substr($postcode,0,3).' '.substr($postcode,3,3);
    }
    elseif(strlen($postcode) == 7) {
        $postcode = substr($postcode,0,4).' '.substr($postcode,4,3);
    }
 
    return $postcode;
}
Categories: How to ... ?, Quick Tips Tags:

PHP UK 2014 – бележки on-the-fly

Това са моите бележки, направени по време на PHP UK Conference 2014.
Надявам се някой ден да имам време да наипиша още 2-3 изречения по всяка от темите.

OPcache
——-
nginx + php-cgi
deploy – start a new php-cgi processes and then switch nginx to use it

—————–
Profiling PHP app
—————–

codestash

graphite (graphics)

js tool to measure client side

for consumer/user point of view, best TTL is less than 1 sec.

minify css + jss, concatenate css+js
enable opcache
cdn
gzip
memcached/redis
php 5.5
spdy ???
image compression
compress html
yslow
enable dns prefetch

.htaccess проверка за съществуващо cookie

Днес трябваше да правим “магии”. Трябваше да защитим няколко домейна/поддомейна с cookie.
Идеята: ако имаш cookie с име COOK, можеш да видиш съответният домейн/поддомейн. В противен случай ще те изпратим в google.

Тъй като малко ме мързеше, го направих с .htaccess. Не исках да обикалям всичките апликейшъни и да им гледам и променям кода… 🙂

Ето и кода на самият .htaccess файл:

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !COOK=ok [NC]
RewriteRule ^ http://www.google.com [NC,L]
Categories: How to ... ?, Quick Tips Tags:

Форматиране и проверка на UK Postcode

 
	function UKPostcode($postcode) {
	        $postcode = strtoupper($postcode);
	        $postcode = preg_replace('/[^A-Z0-9]/', '', $postcode);
	        $postcode = preg_replace('/([A-Z0-9]{3})$/', ' \1', $postcode);
	        $postcode = trim($postcode);
 
	        if (preg_match('/^[a-z](\d[a-z\d]?|[a-z]\d[a-z\d]?) \d[a-z]{2}$/i', $postcode)) {
	            return $postcode;
	        } else {
	            return NULL;
	        }
	}
Categories: How to ... ?, PHP, Quick Tips Tags:

Брой “кънекции” на IP

Как да намерим от кое IP колко connection-и имаме в момента:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Опит в реални условия:

root@popeye ~ # netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
      1 111.13.8.19
      1 176.8.242.234
      1 66.249.66.156
      1 66.249.66.22
      1 66.249.72.238
      1 86.13.124.242
      1 93.123.69.7
      1 94.175.113.39
      1 94.193.159.185
      2 86.8.238.10
      2 87.121.214.124
      2 90.195.21.66
      2 94.193.152.75
      2 94.73.35.88
      3 2.122.59.243
      3 46.208.162.134
      3 79.100.59.207
      3 92.14.138.87
      3 92.236.71.211
      3 92.40.253.7
      3 95.169.209.242
      4 78.90.211.49
      4 86.28.150.187
      5 123.126.68.32
      5 86.81.215.173
      6 46.10.82.69
      6 82.12.250.92
      7 2.28.89.144
      7 81.98.23.19
      7 86.148.168.216
      8 188.28.252.230
      8 86.21.216.192
      9 78.147.234.103
     10 92.41.251.197
     14 127.0.0.1
     15 86.25.213.226
     22 2.125.125.108
     24 93.96.33.84
    134 176.9.39.106
root@popeye ~ #
Categories: Debian, Linux, Quick Tips Tags:

Display open connections by port

Или как да видим на кой порт колко закачени конекции има в момента:

netstat -tuna | awk -F':+| +' 'NR>2{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Пример в реални условия:

root@popeye ~ # netstat -tuna | awk -F':+| +' 'NR>2{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
      1 110
      1 21
      1 443
      3 22
      6 53
      8 11211
    130 9002
    196 80
root@popeye ~ #

Extracting a Database From a mysqldump File

Или “Как от файл пълен с бази данни да извадим точно тази, от която имаме нужда?”

Елементарно Уотсън 🙂

sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' AllDatabases.sql > mydb.sql

Заменете dbname с името на базата данни, която искате да извадите от архива и “магически” тя ще се озове във файла mydb.sql 🙂

Categories: Quick Tips Tags: , ,

Инсталация на ioncube под Debian

1. Сваляме ioncube файловете, отговарящи на нашата конфигурация. Списък с файловете можете да намерите тук

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz .

2. Разархивираме

tar -xvf ioncube_loaders_lin_x86-64.tar.gz

3. Така получената директория с име ioncube местим на по-подходящо място:

mv ioncube /usr/local/

4. Създаваме файл с описание за ioncibe extension-a

nano /etc/php5/conf.d/ioncube.ini

и в него пишем следният ред:

zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3.so

5. Рестартираме Apache и сме готови 🙂

/etc/init.d/apache2 restart
Categories: Debian, Quick Tips Tags:

Preloading images with jQuery

$.fn.preload = function() {
    this.each(function(){
        $('<img/>')[0].src = this;
    });
}
 
$(['img1.jpg','img2.jpg','img3.jpg']).preload();

For simple JavaScript use:

function preload(arrayOfImages) {
    $(arrayOfImages).each(function(){
        $('<img/>')[0].src = this;
    });
}
 
preload([
    'img/1.jpg',
    'img/2.png',
    'img/3.gif'
]);