Олег Годовых «Страх и ненависть в Event Bus»DevDay
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
Август 2014, DevDay, Новосибирск
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Tanya Denisyuk
Тезисы:
За последние 2 года экосистема tarantool пополнилась огромным количеством батареек: дисковое хранение, lua-шардинг, работа со схемами данных и версиями, nginx upstream модуль. Используя эти компоненты, можно создавать высокопроизводительные приложения без использования дополнительных технологий.
В докладе будет описан опыт использования Tarantool для разработки performance-critical restful api: расскажу в чем плюсы и минусы текущей реализации lua-шардинга, как создать restful api прямо в базе данных и почему это быстрее многих популярных решений на примере реальных данных. Кроме того, будет рассмотрен подход использования avro схем для валидации, версионирования и хранения json документов в Tarantool. Для наглядности во время доклада будет разработан микросервис и проведено нагрузочное тестирование.
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Yandex
Ужасы локализации и как с ними бороться на пошаговом примере: от «Эврика, нам нужно перевести проект на язык Х!» до «Как не прострелить себе ногу, когда у вас есть Xcode, разработчики, переводчики и дедлайн». Рассматриваются все базовые инструменты локализации (genstrings, ibtool) в целях понимания, как их использовать с наименьшими телодвижениями. Отдельно рассказывается про то, как мы подружили весь этот «зоопарк» в Яндексе и чем готовы поделиться.
Неважно какой фреймворк вы используете, внутри всё равно будет ваш уникальный код под проект, со своей структурой и логикой. Его нужно поддерживать, а коллегам нужно в него вникать. Как минимизировать порог вхождений и в целом облегчить поддержку проекта? Какие инструменты и подходы можно использовать, или сделать самому, для анализа, даже не кода, а проекта в целом? Константин поделится своим взглядом на этим вопросы и какие могут быть решения.
QA Fest 2014. Катерина Овеченко. Google hacking: удивительное рядомQAFest
Уверена, каждый из нас хотя бы раз использовал Google для поиска необходимой информации. А вы пробовали вводить в посиковую строку что-то сложнее обычного «текста запроса»?
Google хранит огромное количество информации о доступных в сети веб приложениях. Кроме содержания веб страниц в поле зрения поисковика зачастую попадают документы и файлы, не предназначенные для всеобщего доступа. Google Hacking – это способ получения этой информации и обнаружения дыр в безопасности с помощью лишь правильно сформулированного запроса в Google.
В докладе я расскажу, какие данные можно узнать о вашем приложении из Google и покажу как это сделать практически, а также предложу способы защиты от подобных «поисковых атак».
Доклад будет полезен всем, так как единственное необходимое умение - это умение пользоваться Google.
Доклад о разработке (а главное - оптимизации) программы на Perl под Raspberry PI.
Наглядно показывает, что в Perl есть немало возможностей, а также инструментов, которые позволяют делать программы быстрее и эффективнее - используя как преимущества самого языка, так и оптимизацию алгоритма программы.
Олег Годовых «Страх и ненависть в Event Bus»DevDay
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
У нас было 500 страниц спецификаций, 40000 строк кода, 2 офиса, полдюжины разработчиков, а также целое множество андроидов всех сортов и расцветок. Не то, чтобы это был необходимый запас для приложения крупной торговой сети. Но если начал собирать софт, становится трудно остановиться. Единственное, что вызвало у меня опасение — это сетевая библиотека. Нет ничего более беспомощного, безответственного и испорченного, чем писать AsyncTask на каждый вызов. Я знал, что рано или поздно мы перейдём на Event Bus.
Август 2014, DevDay, Новосибирск
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Tanya Denisyuk
Тезисы:
За последние 2 года экосистема tarantool пополнилась огромным количеством батареек: дисковое хранение, lua-шардинг, работа со схемами данных и версиями, nginx upstream модуль. Используя эти компоненты, можно создавать высокопроизводительные приложения без использования дополнительных технологий.
В докладе будет описан опыт использования Tarantool для разработки performance-critical restful api: расскажу в чем плюсы и минусы текущей реализации lua-шардинга, как создать restful api прямо в базе данных и почему это быстрее многих популярных решений на примере реальных данных. Кроме того, будет рассмотрен подход использования avro схем для валидации, версионирования и хранения json документов в Tarantool. Для наглядности во время доклада будет разработан микросервис и проведено нагрузочное тестирование.
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Yandex
Ужасы локализации и как с ними бороться на пошаговом примере: от «Эврика, нам нужно перевести проект на язык Х!» до «Как не прострелить себе ногу, когда у вас есть Xcode, разработчики, переводчики и дедлайн». Рассматриваются все базовые инструменты локализации (genstrings, ibtool) в целях понимания, как их использовать с наименьшими телодвижениями. Отдельно рассказывается про то, как мы подружили весь этот «зоопарк» в Яндексе и чем готовы поделиться.
Неважно какой фреймворк вы используете, внутри всё равно будет ваш уникальный код под проект, со своей структурой и логикой. Его нужно поддерживать, а коллегам нужно в него вникать. Как минимизировать порог вхождений и в целом облегчить поддержку проекта? Какие инструменты и подходы можно использовать, или сделать самому, для анализа, даже не кода, а проекта в целом? Константин поделится своим взглядом на этим вопросы и какие могут быть решения.
QA Fest 2014. Катерина Овеченко. Google hacking: удивительное рядомQAFest
Уверена, каждый из нас хотя бы раз использовал Google для поиска необходимой информации. А вы пробовали вводить в посиковую строку что-то сложнее обычного «текста запроса»?
Google хранит огромное количество информации о доступных в сети веб приложениях. Кроме содержания веб страниц в поле зрения поисковика зачастую попадают документы и файлы, не предназначенные для всеобщего доступа. Google Hacking – это способ получения этой информации и обнаружения дыр в безопасности с помощью лишь правильно сформулированного запроса в Google.
В докладе я расскажу, какие данные можно узнать о вашем приложении из Google и покажу как это сделать практически, а также предложу способы защиты от подобных «поисковых атак».
Доклад будет полезен всем, так как единственное необходимое умение - это умение пользоваться Google.
Доклад о разработке (а главное - оптимизации) программы на Perl под Raspberry PI.
Наглядно показывает, что в Perl есть немало возможностей, а также инструментов, которые позволяют делать программы быстрее и эффективнее - используя как преимущества самого языка, так и оптимизацию алгоритма программы.
DevOps или исскуство ухода за Интернет-проектомAlexander Titov
Половина дела - создать интернет-проект, другая половина - позволить
ему работать и зарабатывать для вас деньги при любом количестве
пользователей и переменчивых погодных условиях вплоть до атаки инопланетян.
Жизнь есть жизнь, и она наполнена рисками - пренебрежение
эксплуатацией может оставить вас без бизнеса. Совсем.
http://devconf.ru/offers/81
Доклад будет о правильном и бережном уходе за интернет-проектами. О применении культуры DevOps на практике, о путях внедрениях и сложностях на пути технического директора, который осознанно встал на путь DevOps.
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
Текущим определением DevOps является аббревиатура CAMS:
— культура;
— автоматизация;
— измерения;
— распространение знаний.
Для меня это недостаточно понятно, я дополнил эти пункты тем, что DevOps это впервую очередь о передаче смысла без искажений. Я расскажу, как эти мысли соотносятся с методиками прошлого (ITIL, etc), как, используя такой подход, создать набор правил для работы и почему автоматизация — это не всегда хорошо.
Мы посмотрим как инструменты автоматизации помогают передавать смысл изменений между окружениями на примере реальных компонентов и кукбуков и рассмотрим на практике почему bash скрипты более слабый инструмент, чем Opscode Chef.
Совместно разберемся к требованиям к системе мониторинга. Что в системах мониторинга вредит передаче смысла, а что, наоборот, помогает. Какую систему мониторинга выбрать для вашего проекта?
Важность честности и открытости в команде для передачи смысла. Честные публичные пост-мортемы — это не проявление слабости, а проявление уважения к своим пользователям. Как научится делиться информацией друг с другом и не скрывать важного.
Методология DevOps - новое течение в управлении разработкой и эксплуатацией. DevOps дает возможность бизнесу быстрее добиваться своих целей, активнее меняться и постоянно пробовать новое.
Основные направления DevOps:
- новая инженерная культура, построенная на взаимной - ответственности коллектива;
- автоматизация и инструменты;
- управление изменениями и мониторинг;
- распространение знаний между всеми участниками технической команды.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
4. Зачем?
• Морфологический поиск
• Различные источники поиска
• Скорость
• Встроенные возможности для сниппетов
• Простой язык запросов (*,|,&,! и пр.)
• Плюшки типа MVA,wordforms, stopwords
• бесплатно
7. Конфиг коннекта
#/usr/local/etc/sphinx.conf – конфиг тут
source parent
{
type = mysql #mysql, pgsql, mssql, xmlpipe and xmlpipe2, and odbc.
sql_host = 127.0.0.1
sql_user = db_user
sql_pass = db_pass
sql_db = db_name
sql_port = 3306
# Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы
# операции с БД происходили не через TCP/IP стек сервера)
sql_sock = /var/lib/mysql/mysql.sock
#mysql_connect_flags = 32 # 32- включение сжатие при обмене данными с БД
# Включам нужную кодировку соединения и выключаем кеш запросов
sql_query_pre = SET NAMES cp1251
#sql_query_pre = SET SESSION query_cache_type=OFF
sql_ranged_throttle = 500 #пауза в м.сек. между запросами
}
8. Каталог статей. Часть 1
source documents: parent
{
# запрос на получения данных топиков
sql_query = SELECT 100000 + documents.id as
`fake_id`, documents.title as `title`,
documents.body as `text`, 1 as `type`,
documents.id as `id`, documents. pub_date,
documents. user as `user` FROM documents
WHERE documents.id BETWEEN $start AND $end
9. Каталог статей. Часть 2
# запрос для дробления получения топиков
#на неколько итераций
sql_query_range = SELECT
MIN(documents.id),MAX(documents.id)
FROM documents
10. Каталог статей. Часть 3
# сколько получать объектов за итерацию
sql_range_step = 1000
#неиндексируемые данные
sql_attr_uint = type
sql_attr_uint = id
sql_attr_timestamp = pub_date
}
11. Блоги. Часть 1
source blogs: parent
{
sql_query = SELECT 200000 + posts.id as `fake_id`,
posts.title, posts.text, 2 as `type`, az_posts.id,
posts.pub_date , users.name as `user`
FROM posts
INNER JOIN `users` ON users.id = posts.user_id
WHERE posts.id BETWEEN $start AND $end
12. Блоги. Часть 2
# запрос для дробления получения топиков
# на неколько итераций
sql_query_range = SELECT MIN(id),MAX(id) FROM posts
# сколько получать объектов за итерацию
sql_range_step = 1000
sql_attr_uint = type
sql_attr_uint = id
sql_attr_timestamp = pub_date
}
13. Конфиг индекса
index site_search
{
source = posts
source = documents
path = /vhosts/site.ru/sphinx/site_search
docinfo = extern
morphology = stem_en, stem_ru
html_strip = 1
charset_type = sbcs #для однобайтных кодировок
min_word_len = 2 #мин длина фразы для поиска
# Минимальная длина инфикса (префикс в том числе)
#min_infix_len = 2
#enable_star = 1
}
14. Конфиг индексатора и демона
indexer
{
# Лимит памяти, который может использавать демон-индексатор
mem_limit = 256M
}
searchd
{
listen = 127.0.0.1 # Адрес, на котором будет прослушиваться порт
port = 3312 # Ну и собственно номер порта демона searchd
log = /var/log/sphinx/searchd.log # Лог-файл демона
# Лог поисковых запросов.
query_log = /var/log/sphinx/query.log
# Время в секундах, которое ждет демон при обмене данными с клиентом
read_timeout = 5
# Максимальное количество одновременно-обрабатываемых запросов
#. 0 означает дофига, а точнее без ограничения
max_children = 30
# Файл, в который сохраняется PID-процесса при запуске
pid_file = /var/log/sphinx/searchd.pid
max_matches = 250
}
15. Запуск
Запуск демона:
service searchd start
Запуск индексатора:
indexer --all --rotate
Крон:
37 */4 * * * indexer --all –rotate
Запускать можно не от рута:
в /etc/init.d/sphinx нужно указать юзера
крон, файлы логов ,файл с pid, файл конфига и директория для
файлов индекса должны иметь соответствующие права
22. Что можно добавить?
• Поиск по ключевикам для лучшего
ранжирования
• Подсказки при добавлении тегов с
синонимами
• Фильтр по тегам при поиске(используя
MVA)
• Фильтр по датам