Оптимизация и рефакторинг

21 декабря 2015, 13:54

Как передать json из шаблонизатора в javascript

<script type="application/json" id="json">{"json_data":"here"}</script>
<script>
$(function(){
    var json = JSON.parse($('#json').text());
});
</script>
19 декабря 2015, 03:45

Добавление и удаление элементов массива в javascript

10 декабря 2015, 21:29

Простейший фаирвол на FreeBsd

Разрешаем только ssh, http и https трафик
Для этого правим /etc/rc.conf
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="workstation"
firewall_myservices="22 80 443"
firewall_allowservices="any"
firewall_logdeny="NO"
Запускаем
sudo service ipfw start
8 декабря 2015, 13:36

Парсим сайты на php при помощи phantomjs

Для начала нужно скачать composer
Теперь создадим файл composer.json
{
  "require": {
    "jonnyw/php-phantomjs": "3.*",
    "symfony/dom-crawler": "3.*",
    "symfony/css-selector": "3.*"
  },
  "config": {
    "bin-dir": "bin"
  },
  "scripts": {
    "post-install-cmd": [
      "PhantomInstaller\\Installer::installPhantomJS"
    ],
    "post-update-cmd": [
      "PhantomInstaller\\Installer::installPhantomJS"
    ]
  }
}
Скачаем все зависимости
php composer.phar install
Ну и сам парсинг index.php
<?php
require __DIR__ . '/vendor/autoload.php';

$client = \JonnyW\PhantomJs\Client::getInstance();
$request = $client->getMessageFactory()->createRequest('http://superdeals.aliexpress.com/en?spm=2114.11010108.21.1.v65LIL', 'GET');
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
$html = $response->getContent();

$crawler = new \Symfony\Component\DomCrawler\Crawler($html);
$div = $crawler->filter('div.pro-msg');
if($div) {
    echo $div->first()->text();
}
Если выполнить php index.php можно увидеть, что фантом скачал страницу и выполнил javascript код
        Today Only
        
          Boy's Coat
          >  Synthetic leather> Motor jacket style> Available in black and red
          share:

    vk
        pinterest
        facebook
        Twinner
        Google+
        Email
    Sign in and share the website for a chance to get Points, which you can then convert to coupons.

          US $9.74
          
            US $32.48 / piece | 70% Off
          
          
          
          
            0486Left					
          Buy Now
7 декабря 2015, 12:29

Как узнать что занимает порт

netstat -tunlp | grep 8080
20 ноября 2015, 12:20

Парсинг csv файла при помощи генератора

<?php
function getRows($file) {
    $handle = fopen($file, 'rb');
    if ($handle === false) {
        throw new Exception();
    }
    while (feof($handle) === false) {
        yield fgetcsv($handle);
    }
    fclose($handle);
}

foreach (getRows('data.csv') as $row) {
     print_r($row);
}
16 ноября 2015, 14:37

Просмотр серийных номеров дисков FreeBSD в RAID

Надо установить утилиту megacli /usr/ports/sysutils/megacli
MegaCli -PDList -aAll | egrep 'Slot Number|Device Id|Inquiry Data|Raw|Firmware state' | sed 's/Slot/nSlot/g'
11 ноября 2015, 17:30

Установка label на диск во FreeBSD

Установить метку на диск можно так
tunefs -L mylabel /dev/da3
mount /dev/ufs/mylabel /mnt/mylabel
Просмотр всех меток
glabel status
Инфо https://www.freebsd.org/doc/handbook/geom-glabel.html
11 ноября 2015, 13:15

Как подключить диск с ufs на Ubuntu

mount -r -t ufs -o ufstype=ufs2 /dev/sda /mnt/sda
7 ноября 2015, 21:33

Сброс всех очередей в rabbitmq

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
15 октября 2015, 17:21

Настройка репликации master-slave в MYSQL

У нас должно быть 2 mysql сервера: master и slave В my.cnf на master пишем и рестартим mysql
[mysqld]
bind-address = 0.0.0.0
log_bin
server_id = 1
expire_logs_days = 5
max_binlog_size = 1000M
binlog_do_db = our_database1
binlog_do_db = our_database2
Затем заходим в mysql консоль на master и задаем доступ для slave
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'password_for_slave';
FLUSH PRIVILEGES;
Теперь нужно сделать дамп master Заходим в mysql консоль и блокируем таблицы
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
В ответ должны получить примерно следующее
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      102 | our_database1, our_database2 |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Теперь спокойно снимаем дамп
mysqldump -u root  > db.sql
Заходим в консоль mysql и снимаем блокировку
mysql> UNLOCK TABLES;
Теперь загрузим дамп на slave
rsync --inplace -arvlt --stats --progress -e 'ssh -p 22' /home/db.sql  root@slave_ip:/home/db.sql
На этом действия с master закончились, переходим к slave. На slave сервере редактируем my.cnf
[mysqld]
server_id = 2
Перезапускаем slave, заливаем дамп с мастера
mysql -u root < db.sql
Включаем репликацию (MASTER_LOG_FILE и MASTER_LOG_POS берутся из команды SHOW MASTER STATUS на мастере после блокировки таблиц)
mysql> CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='slave', MASTER_PASSWORD='password_for_slave', MASTER_LOG_FILE='localhost-bin.000001', MASTER_LOG_POS=102;
mysql> START SLAVE;
Проверка репликации
mysql> SHOW SLAVE STATUS\G
1 октября 2015, 01:31

Как сделать 3proxy анонимным

# Sets the proxy on port 3128 with high anonymous flag -a
proxy -a -p3128
24 сентября 2015, 11:39

Installing Bower on Ubuntu 14.04 LTS

sudo apt-get install nodejs
sudo apt-get install nodejs-legacy
sudo apt-get install npm
sudo npm install -g bower
bower -version
18 сентября 2015, 17:48

Mac OS ssh tunnel

sudo ssh -N -D 999 user_name@server_address
16 сентября 2015, 02:07

No space left on device: Cannot create SSLMutex

for i in `ipcs -s | grep apache | awk '{print $2}'` ; do ipcrm -s $i; done
4 сентября 2015, 01:39

Unable to Connect to GitHub.com For Cloning

git config --global url."https://".insteadOf git://
7 августа 2015, 01:06

Nginx websocket configuration

location /chat {
proxy_pass http://node_app; 
proxy_http_version 1.1; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade";
}
27 июля 2015, 02:00

Вход в mysql из консоли без пароля

Необходим о создать файл ~/.my.cnf
[client]
user=root
password="pass"

[mysql]
user=root
password="pass"

[mysqldump]
user=root
password="pass"

[mysqldiff]
user=root
password="pass"
25 июля 2015, 14:58

Install RVM on Ubuntu

sudo apt-add-repository ppa:rael-gc/rvm
sudo apt-get update
sudo apt-get install rvm
15 июля 2015, 17:20