Концерт Animal ДжаZ в Авроре 25 декабря 2011
Классный был концерт, мне тогда показалось, что один из лучших, проходивших в Авроре.
comment commentsВулкан Тейде на Тенерифе
Поднялись на вулкан Тейде, что на Тенерифе. Ехать туда чуть больше часа на автобусе до подножия. Потом пришлось подождать подъемник, т.к. из-за ветра он не работал. Уже думали, что так и не попадём туда. Но он всё-таки заработал. Подъёмник поднимает на высоту 3500 метров над уровнем моря. После чего по специальному разрешению (кажется национальной гвардии), которое можно получить через сайт, можно подняться к самому кратеру. В итоге ты оказываешься на высоте 3710 метров, на самой высокой точке Испании. Эти 210 метров по дорожке из камней в виде лестницы дались нелегко. Холод, ветер, недостаток кислорода. Выдыхаешься через каждые 20 метров, приходится останавливаться, чтобы отдышаться. Сердце бешено колотится. Но оно того стоит. Неописуемая красота, стоишь над облаками, видно сверху даже остров Gran Canaria. Плохо соображаешь, но я залез на самый высокий камень, который нашёл. Кратер ничего особенного из себя не представляет - округлая впадина, запах серы и местами из под камней пробивается белый дымок. Но виды там потрясающие. Снял немного видео. Почти без какого-либо монтажа просто положили видео на музыку.
Музыка: Jon Hopkins - Insides.
comment commentsПара мыслей о выступлении Павла Дурова на DLD 2012
Сегодня на 3-м дне конференции DLD 2012 (Digital, Life, Design). Пара мыслей, просто, чтобы порассуждать.
comment commentsОшибка Nginx Too many open files
Про ускорение. Пара полезностей.
Как известно, у браузеров ограничено число одновременных соединений на домен во время загрузки сайта. Таким образом элементы сайта грузятся последовательно. Каждая картинка/js/css-файл - отдельное соединение. Если таких элементов много на страницах сайта - то ускорить его загрузку можно, если вынести статику на поддомены. Например s1.domain.com, s2.domain.com и т.д. Таким образом, если в браузере у нас, скажем, лимит на 5 соединений на каждый домен - то теперь у нас будет по 5 соединений на каждый поддомен. Если грамотно всё раскидать, то теоретически скорость загрузки может вырасти чуть ли не в 5 раз.
Обратная сторона. Количество одновременных соединений с сервером также растёт. При той же посещаемости сайта - число соединений растёт примерно в 5 раз (при наличии 5 поддоменов). Если фронтендом стоит Nginx - то у него есть ограничение на число соединений в конфиге. А, поскольку соединений теперь в 5 раз больше, то и работы ему приходится одновременно проделывать больше, чем ранее. Таким образом с нашим ускорением мы также и приближаем Nginx к ограничению одновременных соединений, в результате у пользователя может не открываться сайт или какие-то файлы просто не отдаваться во время загрузки.
В логах Nginx будет ошибка:
"...socket() failed (24: Too many open files) while connecting to upstream..."
Посмотреть текущее ограничение из консоли:
ulimit -n
Посмотреть красиво в виде:
nginx: worker process
Limit Soft Limit Hard Limit Units
Max open files 1024 1048576 files
Currently open files: 945
nginx: master process /usr/sbin/nginx
Limit Soft Limit Hard Limit Units
Max open files 1024 1048576 files
можно, выполнив в консоли:
for pid in `pidof nginx`; do echo "$(< /proc/$pid/cmdline)"; egrep 'files|Limit' /proc/$pid/limits; echo "Currently open files: $(ls -1 /proc/$pid/fd | wc -l)"; echo; done
Изменить ограничение:
-
в /etc/security/limits.conf добавить строки:
* soft nofile 16384
* hard nofile 16384 -
от рута выполнить:
ulimit -n 16384
- рестарт Nginx, на всякий случай.
Пишут ещё, что можно просто прописать в конфиге Nginx:
worker_rlimit_nofile 16384
и перезапустить его.
comment commentsПолезная штука Prefix.pch
Открыл для себя полезную штуку в разработке под iOS - файл Prefix.pch - Precompiled Header.
Судя по описанию - Precompiled Headers компилируются, кэшируются и потом автоматически включаются в каждый компилируемый файл. Поэтому, если есть какой-то класс, который нужен везде или в почти везде в проекте - можно внутри Prefix.pch-файла, который автоматически создаётся в новом проекте, сделать include этого класса и он будет доступен везде. Мне вот совсем не нравилось в каждом View Controller'е снова и снова инклудить один класс, который нужен почти везде.
comment comments