Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

Стабилизация растений для ленивых романтиков. Ну и гиков тоже

Время на прочтение8 мин
Количество просмотров89K

Думаю, это очень классная история, когда ты подарил цветы, а они не вянут целый год!

Стабилизированное растение больше напоминает свежесрезанный цветок, чем мумифицированный остов из гербария. Оно остается эластичным — его можно трогать, не боясь, что растение рассыплется от прикосновения.

В основе стабилизации нет никакого чуда: обычные законы физики и биохимии, простые ингредиенты и широкий простор для экспериментов. Хотя у производителей остаются свои секреты.

Читать далее
Всего голосов 133: ↑131 и ↓2+129
Комментарии78

Цвет в современных фильмах

Время на прочтение11 мин
Количество просмотров102K

Всем привет, меня зовут Денис. Я работаю художником по свету (Lighting Artist) в игровой индустрии. Часто читаю Хабр просто потому что интересно и вот сегодня увидел статью Дефицит цветов в современных фильмах которая меня немного ошарашила. Ведь в кино существуют целые отделы композитинга, которые занимаются цветокоррекцией изображения, чтобы конечный результат выглядел красиво, а также вызывал определённые эмоции. Поэтому меня сильно удивило, что кто-то видит в этом отрицательную сторону.

И вот я уже собрался написать длинный комментарий, но понял, что информации настолько много, что можно об этом написать целую статью, собственно, почему бы и нет.

Давайте разбираться, почему же в кино цветовая палитра сводится к нескольким конкретным цветам, а не представляет полный спектр. Хочу заметить, что всё нижеупомянутое применимо и к современным играм.
Читать дальше →
Всего голосов 331: ↑326 и ↓5+321
Комментарии286

Четыре способа получить аудио вк или «это не баг, а фича»

Время на прочтение127 мин
Количество просмотров65K

Всем привет! Сегодня я расскажу вам о моем опыте с ВК, найденных багах, об отношении к пользователям и, собственно, как получить аудиозаписи вк, пользуясь "не багами а фичами", как меня заверяли сотрудники данной корпорации. Итак, приступим!

Читать далее
Всего голосов 70: ↑67 и ↓3+64
Комментарии58

Руководство по Apple Subscriptions Notifications для iOS. Так ли они хороши на самом деле?

Время на прочтение4 мин
Количество просмотров8.9K


Итак, у вас есть приложение с автоматическими возобновляемыми подписками. Оно прекрасно работает, пользователи безудержно оформляют премиум подписки и пишут хвалебные отзывы. Красота!


Всем привет, меня зовут Денис, я руководитель проекта Apphud – сервиса аналитики авто-возобновляемых подписок для приложений на iOS.


Вам, как руководителю проекта, жизненно необходимо быть в курсе ключевых метрик продукта. Одной из самых важных является Life time value (LTV) – средний доход с каждого пользователя за все время пользования приложением. Но как его вычислить в случае с авто-возобновляемыми подписками на iOS? Как отследить момент продления, отмены, возобновления подписки пользователем?

Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Пот, слезы и учет времени — как мы повышали рентабельность компании

Время на прочтение11 мин
Количество просмотров15K
Мы продолжаем делиться внутренней кухней WebCanape и выдавать все наши самые страшные тайны. В прошлый раз я рассказывал, как мы разработали CRM для SEOшников, а сейчас поведаю о том, как мы ведем учет рабочего времени и зачем вообще это делаем.

webcanape

В штате компании – 90 человек. Управлять таким количеством сотрудников и контролировать их не у всех получается хорошо. Из-за неэффективного управления может проседать качество услуг компании, снижаться рентабельность проектов, ухудшаться общий климат в офисе. Чтобы этого избежать, мы внедрили у себя мониторинг эффективности работы сотрудника.
Читать дальше →
Всего голосов 38: ↑22 и ↓16+6
Комментарии80

Кластер PostgreSQL высокой надежности на базе Patroni, Haproxy, Keepalived

Время на прочтение25 мин
Количество просмотров125K
Привет, Хабр! Встала передо мной недавно задача: настроить максимально надежный кластер серверов PostgreSQL версии 9.6.

По задумке, хотелось получить кластер, который переживает выпадение любого сервера, или даже нескольких серверов, и умеет автоматически вводить в строй сервера после аварий.

Планируя кластер я проштудировал много статей, как из основной документации к PostgreSQL, так и различных howto, в том числе с Хабра, и пробовал настроить стандартный кластер с RepMgr, эксперементировал с pgpool.

В целом оно заработало, но у меня периодически всплывали проблемы с переключениями, требовалось ручное вмешательство для восстановления после аварий, и т.д. В общем я решил поискать еще варианты.

В итоге где-то (уже не вспомню точно где) нашел ссылку на прекрасный проект Zalando Patroni, и все заверте…
Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии69

Авторизация клиентов в nginx посредством SSL сертификатов

Время на прочтение4 мин
Количество просмотров135K

Введение:


Потребовалось мне тут как-то написать небольшой API, в котором необходимо было помимо обычных запросов принимать запросы с «высокой степенью секретности».
Не я первый с этим столкнулся и мир давно уже использует для таких вещей SSL.

Поскольку на моём сервере используется nginx, то был установлен модуль SSL
Гугл не выдал ни одного работоспособного howto, но информация в сети есть по частям.

Итак, пошаговое руководство по настройке nginx на авторизацию клиентов через SSL-сертификаты.
Читать дальше →
Всего голосов 41: ↑34 и ↓7+27
Комментарии32

UAC Bypass или история о трех эскалациях

Время на прочтение14 мин
Количество просмотров34K
На работе я исследую безопасность ОС или программ. Ниже я расскажу об одном из таких исследований, результатом которого стал полнофункциональный эксплоит типа UAC bypass (да-да, с source-code и гифками).


Ах, да, в Майкрософт сообщили, они сделали вид, что им не интересно.
Алярм! Под катом около 4 мегабайт трафика – картинок и гифок.
Поднять права
Всего голосов 60: ↑58 и ↓2+56
Комментарии15

Nginx + Lua, гибкая балансировка нагрузки с сохранением сессии

Время на прочтение5 мин
Количество просмотров22K

При балансировке нагрузки важный вопрос — сохранение сессии клиента. Особенно, если за балансировщиком стоит какой-то интерактивный backend. И тем более, если захотелось сделать A/B тестирование и гибко регулировать порции клиентов к различному содержанию. "Nginx plus" предлагает такие возможности, но что делать, если хочется дёшево и быстро?


На помощь приходит возможность расширить функционал Nginx с помощью Lua.


Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии24

Лучшие практики Go, шесть лет в деле

Время на прочтение18 мин
Количество просмотров59K
В 2014 году я выступил на открытии конференции GopherCon с докладом под названием «Go: Best Practices for Production Environments». В SoundCloud мы были одними из первых пользователей Go и к тому времени уже два года писали на нём и поддерживали Go в бою в той или иной форме. За это время мы кое-чему научились, и я попытался поделиться частью этого опыта.

С тех пор я продолжал программировать на Go в течение всего рабочего дня, сначала в командах SoundCloud, отвечающих за операционную деятельность и инфраструктуру, а теперь работаю в компании Weaveworks над Weave Scope и Weave Mesh. Также я усердно трудился над Go kit, набором инструментов для микросервисов с открытым исходным кодом. И всё это время я принимал активное участие в развитии сообщества Go-программистов, встречался со многими разработчиками на митапах и конференциях по всей Европе и в США, коллекционируя их истории успехов и провалов.

В ноябре 2015-го, на шестую годовщину релиза Go, я вспоминал то своё первое выступление. Какие из лучших практик прошли проверку временем? Какие из них устарели или стали неэффективными? Появились ли какие-то новые методики? В марте мне представилась возможность выступить на конференции QCon London, где я рассказал о лучших практиках 2014 года и дальнейшем развитии Go до 2016 года. В этом посте представлена выжимка из моего выступления.

Ключевые положения я выделил в тексте в виде Top Tips — лучших советов.

А вот и cодержание:

  1. Среда разработки
  2. Структура репозитория
  3. Форматирование и стиль
  4. Конфигурация
  5. Разработка программы
  6. Логирование и метрики
  7. Тестирование
  8. Управление зависимостями
  9. Сборка и развёртывание
  10. Заключение
Читать дальше →
Всего голосов 68: ↑63 и ↓5+58
Комментарии19

Внутри MP3. А как оно всё устроено?

Время на прочтение5 мин
Количество просмотров104K


Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в PHP-скрипте узнать длительность mp3-файла. Я слышал о ID3 тегах и сразу подумал, что информация о длительности хранится либо в тегах, либо в заголовках mp3-файла. Поверхностные поиски в интернете показали что за пару-тройку минут решить эту задачу не получится. Поскольку от природы я довольно любопытен а время не поджимало — решил не использовать сторонние инструменты а разобраться в одном из самых популярных форматов самостоятельно.

Если Вам интересно, что там внутри – добро пожаловать под кат (трафик).
Читать дальше →
Всего голосов 230: ↑219 и ↓11+208
Комментарии55

Малоизвестные Git-команды

Время на прочтение4 мин
Количество просмотров73K


У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.
Читать дальше →
Всего голосов 188: ↑162 и ↓26+136
Комментарии43

Экосистема Ruby (on Rails) с горьким привкусом, или «Как мы любим пошпынять PHP»

Время на прочтение16 мин
Количество просмотров31K

Это перевод статьи Ruby (on Rails) ecosystem bittersweet or "we like to hate PHP", написанной 30 мая 2016, т.е. совсем недавно. Я полностью согласен с её автором, и сам давно горел желанием написать что-то подобное в последнее время, но у меня не так много опыта с Ruby, поэтому моя писанина не была бы настолько объективна, как писанина человека, который этот опыт имеет, и имеет его в хорошем количестве. А тут на тебе: всё в одном месте уже собрано, и мысли прямо один в один как у меня. Грех не перевести на русский. Также, статья вообще очень хороша как небольшой набор объективного и беспристрастного анализа двух языков современной веб-разработки. В общем, далее — перевод слов автора.


многобукв; нечитал;
В этой статье я рассказываю о некоторых фактах и персональном опыте для того чтобы доказать, что PHP в данный момент живее, конкурентоспособнее, а также имеет менее связанную экосистему, чем Ruby. Я говорю о Производительности, Синтаксисе и Аспектах кодинга, Сообществе и Инструментарии разработчика.
Читать дальше →
Всего голосов 65: ↑54 и ↓11+43
Комментарии203

Redmine: миграция с MySQL на PostgreSQL 9.5

Время на прочтение3 мин
Количество просмотров15K
image
В последнее время клиенты нашей компании все чаще обращаются с просьбой осуществить переход с MySQL на PostgreSQL. Действительно, активное развитие PostgreSQL дает повод разработчикам задуматься о смене СУБД. Зачастую при этом встает вопрос о переносе больших объемов данных, которыми «обросла» существующая база под MySQL.

Мы сами являемся активными пользователями Redmine и разработчиками плагинов для него, потому и выбрали эту CRM для иллюстрации процесса миграции.

Ниже описывается один из способов миграции с БД MySQL на PostgreSQL 9.5 для Redmine на ОС CentOS 6.

Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии10

Создание ознакомительного поискового движка на Sphinx + php

Время на прочтение5 мин
Количество просмотров103K

Предыстория


Раньше для поиска по сайту мы использовали обычный fulltext поиск. Но в определенный момент он перестал нас устраивать и мы решили опробовать альтернативную технологию поиска: Sphinx. К сожалению, у сфинкса совсем нет русской документации, поэтому эта статья — аналог статьи Build a custom search engine with PHP, только на русском языке и для моего локального окружения (windows 7, mysql/php)
Статья состоит из 4 частей:
  1. Краткий рассказ про подготовку базы для поиска.
  2. Рассказ про первоначальную установку и настройку сфинкса
  3. Индексирование базы и тестовый поиск из командной строки
  4. Тестовый поиск из php

Читать дальше →
Всего голосов 82: ↑73 и ↓9+64
Комментарии59

Comet–приложение для Mochiweb c нагрузкой в 1 000 000 пользователей. Часть 1/3

Время на прочтение6 мин
Количество просмотров7.5K
Часть 2
Часть 3

В этом цикле статей я поделюсь тем, что я узнал опытным путем о том, как Mochiweb обрабатывает большое количество открытых соединений, и покажу, как создать Comet-приложение, используя Mochiweb, где каждое соединение зарегистрировано в маршрутизаторе. Мы закончим рабочим приложением, которое в состоянии справиться с 1000 000 параллельных соединенией, и узнаем, как много памяти нам для этого потребуется.

В части первой:
• Создание простого Comet — приложение, которое посылает клиентам сообщение каждые 10 секунд.
• Настройка ядра Linux для поддержки большого количества соединений.
• Создание тестирующей утилиты для создания большого количества соединений.
• Определение необходимого количества памяти.

Следующие части этого цикла расскажут, как построить реальную систему, покажут дополнительные уловки, чтобы уменьшить использование памяти, и содержат тесты с 100 000 и 1 000 000 параллельных соединений.

Предполагается, что Вы знакомы с bash, и немного с Erlang.
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии67

Эрланг для веб-разработки (1) -> Знакомство;

Время на прочтение7 мин
Количество просмотров29K

Продолжение о базе данных и деплое во второй статье.

Я начинаю публиковать серию статей о веб-разработке на Эрланге. Многие хотят попробовать Эрланг, но сталкиваются с проблемой, что вводные курсы в основном касаются Эрланга как функционального языка и далеки от реальных проектов (Learn You Some Erlang for great good! — хорошая и подробная книга). С другой стороны все обучающие материалы по веб-разработке подразумевают, что читатель уже хорошо знает Эрланг.

Эта серия статей рассчитана для разработчиков, у которых есть опыт в веб-разработке (PHP, Ruby, Java), но не имеют опыта разработки на Эрланге.

Задачей будет сделать блог. Код из статей https://github.com/denys-potapov/n2o-blog-example, готовый проект можно посмотреть по адресу http://46.101.118.21:8001/. Особенности проекта:
  • обновление комментариев в реальном времени;
  • авторизация через фейсбук;
  • данные храним в mnesia.

В основе проекта феймворк n2o. Выбор довольно субъективен, но из живых Эрланг фреймворков, n2o мне показался наиболее «эрлангоподобным», в тоже время ChicagoBoss больше похож на MVC фреймворки в других языках.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии121

Памятка пользователям ssh

Время на прочтение13 мин
Количество просмотров1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Всего голосов 360: ↑352 и ↓8+344
Комментарии148

Винные Трюки или установка компонентов Windows в Wine

Время на прочтение1 мин
Количество просмотров33K
Удивлен, что на Хабре все еще нет описания программы winetricks и плюсов, которые она может дать.

Многие сталкивались с ситуацией, когда Windows-программе требуется какой-то компонент для запуска. Например, .NET, Mono или DirectX.

Устанавливать их руками — долго и муторно — нужно искать дистрибутивы, скачивать, указывать параметры… Особенно в ситуации, когда установка wine выполняется впервые и ставить нужно много.

Сообщество Wine решило эту проблему.

Рассмотрим подробнее.
Всего голосов 54: ↑46 и ↓8+38
Комментарии21

Распознавание некоторых современных CAPTCHA

Время на прочтение15 мин
Количество просмотров78K
Именно так называлась работа, представленная мной на Балтийском научно-инженерном конкурсе, и принёсшая мне очаровательную бумажку с римской единичкой, а также новенький ноутбук.

Работа заключалась в распознавании CAPTCHA, используемых крупными операторами сотовой связи в формах отправки SMS, и демонстрации недостаточной эффективности применяемого ими подхода. Чтобы не задевать ничью гордость, будем называть этих операторов иносказательно: красный, жёлтый, зелёный и синий.

Читать дальше →
Всего голосов 319: ↑313 и ↓6+307
Комментарии148

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность