Качаем 1080p с youtube через youtube-dl со звуком

Как известно, через свои форматы ютуб отдает только 1280х720 Чтобы скачать лучшее качество нужно немного поизголяться. Для начала смотрим какие форматы есть вообще
$ youtube-dl 'http://www.youtube.com/watch?v=c9JoHd7xoPA' -F
[youtube] c9JoHd7xoPA: Downloading webpage
[youtube] c9JoHd7xoPA: Extracting video information
[youtube] c9JoHd7xoPA: Downloading DASH manifest
[info] Available formats for c9JoHd7xoPA:
format code extension resolution  note 
139         m4a       audio only  DASH audio   49k , audio@ 48k (22050Hz), 1.28MiB (worst)
140         m4a       audio only  DASH audio  129k , audio@128k (44100Hz), 3.39MiB
171         webm      audio only  DASH audio  131k , audio@128k (44100Hz), 3.17MiB
172         webm      audio only  DASH audio  195k , audio@256k (44100Hz), 4.59MiB
141         m4a       audio only  DASH audio  255k , audio@256k (44100Hz), 6.74MiB
278         webm      256x144     DASH video   91k , webm container, VP9, 15fps, video only, 1.54MiB
160         mp4       256x144     DASH video  111k , 15fps, video only, 2.79MiB
242         webm      426x240     DASH video  127k , 30fps, video only, 1.73MiB
133         mp4       426x240     DASH video  248k , 30fps, video only, 6.28MiB
243         webm      640x360     DASH video  233k , 30fps, video only, 3.10MiB
134         mp4       640x360     DASH video  603k , 30fps, video only, 8.29MiB
244         webm      854x480     DASH video  390k , 30fps, video only, 5.19MiB
135         mp4       854x480     DASH video  928k , 30fps, video only, 16.02MiB
247         webm      1280x720    DASH video  829k , 30fps, video only, 11.34MiB
136         mp4       1280x720    DASH video 1532k , 30fps, video only, 31.34MiB
248         webm      1920x1080   DASH video 1594k , 30fps, video only, 24.76MiB
137         mp4       1920x1080   DASH video 2785k , 30fps, video only, 55.71MiB
17          3gp       176x144     
36          3gp       320x240     
5           flv       400x240     
43          webm      640x360     
18          mp4       640x360     
22          mp4       1280x720    (best)
Видим что под номером 137 находится 1080p видосик, под номером 141 звуковая дорожка 256 кбит/с Ну чтоже, давайте их и скачаем, для мерджа необходим ffmpeg
$ youtube-dl 'http://www.youtube.com/watch?v=c9JoHd7xoPA' -f 137+141
[youtube] c9JoHd7xoPA: Downloading webpage
[youtube] c9JoHd7xoPA: Extracting video information
[youtube] c9JoHd7xoPA: Downloading DASH manifest
[download] Destination: Flash - Life in the Sky-c9JoHd7xoPA.f137.mp4
[download] 100% of 55.71MiB in 00:10
[download] Destination: Flash - Life in the Sky-c9JoHd7xoPA.f141.m4a
[download] 100% of 6.74MiB in 00:01
[ffmpeg] Merging formats into "Flash - Life in the Sky-c9JoHd7xoPA.mp4"
6 января 2015, 13:02

Блокируем доступ с опеределенного ip в iptables

Блочим
iptables -I INPUT -s 111.111.111.111  -j DROP
Смотрим
iptables -L INPUT --line-numbers
------------
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       all  --  111.111.111.111      anywhere
Отменяем брокировку (1 - это номер правила из предыдущей команды)
iptables -D INPUT 1
4 января 2015, 12:31

Установка MongoDb на Centos

Создаем файл /etc/yum.repos.d/mongodb.repo с таким содержимым
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
Инсталлим
yum install -y mongodb-org
chkconfig mongod on
service mongod start
4 января 2015, 12:27

Как отключить selinux в Centos 6

Отключение из консоли
setenforce 0
А чтобы опять не включилось после ребута vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
3 января 2015, 07:33

Brew - Another version is already linked

Если пакет не хочет обновляться, то можно принудительно переключить версию
brew switch php55 5.5.20
28 декабря 2014, 03:53

Все актуальные доменные зоны

Взято отсюда
28 декабря 2014, 03:11

PDO mysql, как закрыть коннект

Заметил интересную особенность: чтобы закрыть коннект недостаточно занулить pdo объект
<?php
$db = new PDO(
    'mysql:host=localhost;dbname=test',
    'root',
    'root',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);

$q = $db->prepare('select now()');
$q->execute();
$now = $q->fetch();
//без этой строчки соединение с базой не закроется! (смотреть ниже)
//кто не верит может закомментить эту строчку и посмотреть process list
unset($q);
var_dump($now);
//допустим, нам нужно закрыть соединение с базой, чтобы произвести какие-то действия
$db = null;
//собственно действия
sleep(100);
?>
27 декабря 2014, 06:09

Установка ssh на Centos

yum -y install openssh-server openssh-clients
26 декабря 2014, 11:23

Циклы на bash

for i in `seq 1 100`;
do
  echo $i
done 
#!/bin/bash
for i in {1..100}
do
   echo "starting $i"
done
26 декабря 2014, 04:42

Конвертация числа из десятичной системы в любую

<?php
class BaseConvert {
    private static $base = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

    public static function encode($num, $b = 62) {
        $r = $num % $b;
        $res = self::$base[$r];
        $q = floor($num / $b);
        while ($q) {
            $r = $q % $b;
            $q = floor($q / $b);
            $res = self::$base[$r] . $res;
        }
        return $res;
    }

    public static function decode($num, $b = 62) {
        $limit = strlen($num);
        $res = strpos(self::$base, $num[0]);
        for ($i = 1; $i < $limit; $i++) {
            $res = $b * $res + strpos(self::$base, $num[$i]);
        }
        return $res;
    }
}
var_dump(BaseConvert::encode(124, 36), BaseConvert::decode('3g', 36));
Тоже самое стандартными средствами
<?php
var_dump(
base_convert(124, 10, 36),
base_convert('3g', 36, 10)
);
24 декабря 2014, 15:13

mysql - InnoDB: Unable to lock ./ibdata1, error: 11

service mysql-server stop
mv /var/db/mysql/ibdata1 /var/db/mysql/ibdata1.bak
cp -a /var/db/mysql/ibdata1.bak /var/db/mysql/ibdata1
chown -R mysql:mysql .
service mysql-server start
18 декабря 2014, 02:18

Git pull из определенной директории (без cd)

git >= 1.8.5
git -C /home/project pull
12 декабря 2014, 10:04

Решение проблемы с keglim в nginx

Если у вас зависает nginx и в топе вы видите следующее
21106 www           1  20  -10 49668K 24392K keglim 13   4:33   8.50% nginx
То не обходимо увеличить kern.ipc.nmbjumbop
sysctl -w kern.ipc.nmbjumbop=400000
Также стоит записать в /etc/sysctl.conf
kern.ipc.nmbjumbop=4000000
11 декабря 2014, 08:24

Проверка и восстановления дисков при помощи fsck

Это нужно делать в single mode
fsck -y -f
28 ноября 2014, 13:46

Получение серийного номера HDD в Centos

hdparm -I /dev/sda | grep Serial
28 ноября 2014, 12:45

Получение серийного номера HDD во FreeBSD

camcontrol identify ada1 | grep serial
28 ноября 2014, 12:41

Задание max open files на Centos

Значение по умолчанию очень маленькое 1024, для многочисленных коннектов надо его увеличить. Изменить это значение можно так, но это действует только до перезагрузки.
ulimit -n 200000
Чтобы значение не сбрасывалось пишем в /etc/sysctl.conf
fs.file-max = 200000
Также пишем в /etc/security/limits.conf
* hard nofile 200000
* soft nofile 200000
И еще устанавливаем значение тут (в необходимости этого пункта не уверен)
echo 200000 > /proc/sys/fs/file-max
22 ноября 2014, 23:03

Крутилка баннеров на JavaScript

По мотивам article#55
<div id="banner"></div>
<script>
    function showBanner(elem) {
        var banners = [
            {
                'src': 'http://url1.jpg',
                'url': 'http://url1.page',
                'alt': 'title1'
            },
            {
                'src': 'http://url2.jpg',
                'url': 'http://url2.page',
                'alt': 'title2'
            },
            {
                'src': 'http://url3.jpg',
                'url': 'http://url3.page',
                'alt': 'title3'
            }
        ];
        var banner = banners[Math.floor(Math.random() * banners.length)];
        elem.innerHTML = '<a href="' + banner.url + '"><img src="' + banner.src + '" alt="' + banner.alt + '" />';
    }
    
    showBanner(document.getElementById('banner'));
</script>
17 ноября 2014, 23:50

Catching errors in PHP

15 ноября 2014, 13:40

Проверка bash на уязвимость shellshock

Если эта команда выводит "busted", то надо обновить bash
env X="() { :;} ; echo busted" bash -c "echo stuff"
11 ноября 2014, 13:50