В апреле на RailsConf в Фениксе мы обсудили огромное количество советов по использованию Postgres с Rails, и подумали, что будет полезно их записать и поделиться с более широкой аудиторией. Здесь вы найдете некоторые из них, касающиеся отладки и улучшения производительности базы данных вашего Rails приложения.
Андрей Емельяненко @YourWest
User
Создание игры на Unreal Engine 4 за 150 часов (видео + исходники)
6 min
186KПриветствую, Хабр! Хотел бы познакомить вас с относительно небольшим проектом, который я сделал c нуля примерно за 150 часов (50 заходов ~3 часа каждый) на Unreal Engine 4. Проект я делал в прямом эфире только на стримах раз в неделю (в общей сложности ушел год), попутно отвечая на вопросы пользователей.
Сам проект не предназначался как коммерческий. Целью я ставил на практике показать всю сложность разработки игр, а именно такие проблемы, как:
В конце всей серии стримов у нас получился играбельный прототип “Сурвайвл” шутера. Те, у кого стакан наполовину полон, смогут даже назвать это пре-альфой без сюжета.
Если вам интересны подробности проекта, записи стримов, исходники и прочее, читайте далее.
Сам проект не предназначался как коммерческий. Целью я ставил на практике показать всю сложность разработки игр, а именно такие проблемы, как:
- Планирование и прототипирование проекта
- Продумывание и реализация архитектуры проекта и отдельных его компонентов
- Реализация интерфейса пользователя
- Отладка и исправление ошибок
- Работа с ассетами и графикой
В конце всей серии стримов у нас получился играбельный прототип “Сурвайвл” шутера. Те, у кого стакан наполовину полон, смогут даже назвать это пре-альфой без сюжета.
Если вам интересны подробности проекта, записи стримов, исходники и прочее, читайте далее.
+95
Шизофрения: взгляд изнутри
8 min
204KПишу сюда первый раз, и на русском пишу редко, так что если что не так, прошу о понимании.
Тема указанная в заголовке как мне показалось из комментариев к этой статье вызывает определённый интерес, и я решил поделиться своим небольшим опытом в надежде, что он поможет кому-то преодолеть жизненные трудности.
Тема указанная в заголовке как мне показалось из комментариев к этой статье вызывает определённый интерес, и я решил поделиться своим небольшим опытом в надежде, что он поможет кому-то преодолеть жизненные трудности.
+125
Angular2 + Websocket + RxJS + Rails5
6 min
17KВсем привет! Эта статья о том как связать клиентское приложение Angular2 с Rails 5 сервером используя Websocket.
+11
Книга «Ruby. Объектно-ориентированное проектирование»
5 min
15K Привет, Хаброжители! Совсем недавно мы перевели бестселлер Сэнди Метц.
Книга посвящена проектированию объектно-ориентированных программ. Это не учебник, а рассказ программиста о том, как следует создавать программный код. Книга научит вас, как скомпоновать программное обеспечение, чтобы его высокая продуктивность не снижалась ни через месяц, ни через год. В ней показано, как создаются приложения, которые могут пользоваться успехом сегодня и адаптироваться к требованиям будущего.
Внимательно изучив это руководство, вы сможете: • Понять, как писать на Ruby качественный код в духе ООП • Решать, что должно входить в состав класса Ruby • Не допускать тесной связи между объектами в тех случаях, когда требуется разграничить функциональность • Определять гибкие интерфейсы между объектами • Освоить утиную типизацию • Эффективно задействовать наследование, композицию и полиморфизм • Разрабатывать экономные тесты • Доводить до совершенства любой legacy-код Ruby.
Книга посвящена проектированию объектно-ориентированных программ. Это не учебник, а рассказ программиста о том, как следует создавать программный код. Книга научит вас, как скомпоновать программное обеспечение, чтобы его высокая продуктивность не снижалась ни через месяц, ни через год. В ней показано, как создаются приложения, которые могут пользоваться успехом сегодня и адаптироваться к требованиям будущего.
Внимательно изучив это руководство, вы сможете: • Понять, как писать на Ruby качественный код в духе ООП • Решать, что должно входить в состав класса Ruby • Не допускать тесной связи между объектами в тех случаях, когда требуется разграничить функциональность • Определять гибкие интерфейсы между объектами • Освоить утиную типизацию • Эффективно задействовать наследование, композицию и полиморфизм • Разрабатывать экономные тесты • Доводить до совершенства любой legacy-код Ruby.
+15
400 потрясающих бесплатных сервисов
16 min
718KTranslation
Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.
И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.
A. Бесплатные веб-сайты
- HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
- Bootswatch: Бесплатные темы для Bootstrap.
- Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
- Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
- Strikingly: Конструктор веб-сайтов.
- Layers: Создание сайтов на WordPress (new).
- Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
- Landing Harbor: Продвижение мобильного приложения c помощью бесплатного лендинга (new).
+70
Autofill: чего не знают веб-разработчики, хотя должны знать
14 min
77KTranslation
Многим известно, что в мобильной версии Safari можно отсканировать свою банковскую карту. Но многие ли разработчики умеют создавать формы, поддерживающие эту возможность?
Готов поспорить, что немногие.
Дело осложняет полное отсутствие документации от Apple по работе этой функции. Но тут есть один момент. Функция сканирования банковских карт является подмножеством автозаполнения — браузерного функционала, давно игнорируемого веб-разработчиками. Понятно, почему они не уделяли ему должного внимания: когда регулярно заполняешь форму тестовыми данными, автозаполнение обычно мешает. Но для наших пользователей это важная функция. В Google выяснили, что при использовании автозаполнения пользователи на 30% быстрее заполняют формы. Так что давайте изучим работу автозаполнения, разберёмся, как создавать формы, поддерживающие кросс-браузерное автозаполнение, и воспользуемся преимуществами новых возможностей наподобие сканирования банковских карт.
+38
Workflow просмотра сериалов для Alfred
5 min
18KВ конце предыдущей своей статьи я начал рассказывать о том как у меня организован просмотр сериалов, но решил что это — тема для отдельной заметки.
Для тех кто не знает что такое Alfred
Alfred — это Spotlight на стероидах. Умеет чуть более чем всё что умеет Spotlight, плюс, начиная со второй версии, поддерживает написание, а так же использование написанных другими людьми, так называемых, workflows. То бишь, расширений функциональности самописными скриптами. Для их написания поддерживается несколько скриптовых языков:
- bash
- zsh
- php
- ruby
- python
- perl
- osascript
- javascript
Речь в этой статье пойдет об одном из таких расширений.
Немного забегая вперед, хочу показать, что же у нас есть в итоге…
Когда обнаруживается время расслабиться и включить сериальчик, я запускаю Alfred, ввожу "сериалы" и получаю в ответ список загруженных.
+14
Автомасштабирование в Amazon Web Services: EC2 + CloudWatch
4 min
15KДобрый день!
Настройка автомасштабирования на основе Amazon EC2 это очень интересная задача, которую я когда-то решил и теперь применяю на практике. Существует много возможных вариантов, но я рассмотрю самый простой из них: горизонтальное масштабирование одного сервера под одним балансировщиком.
В качестве инициатора маштабирования будет выступать Cloud Watch. Метрикой будет наша кастомная метрика Load Average.
Итак, начнём-с. Первое, как тру линуксоид, я советую и рекомендую использовать в настройке автоскейлинга утилиты командной строки (Command Line Tools — CLT) по следующим причинам:
Настройка автомасштабирования на основе Amazon EC2 это очень интересная задача, которую я когда-то решил и теперь применяю на практике. Существует много возможных вариантов, но я рассмотрю самый простой из них: горизонтальное масштабирование одного сервера под одним балансировщиком.
В качестве инициатора маштабирования будет выступать Cloud Watch. Метрикой будет наша кастомная метрика Load Average.
Итак, начнём-с. Первое, как тру линуксоид, я советую и рекомендую использовать в настройке автоскейлинга утилиты командной строки (Command Line Tools — CLT) по следующим причинам:
- из CLT можно сделать всё;
- удобнее копипастить в консоль, чем кликать мышкой.
+19
Как подружиться клиенту, дизайнеру и разработчику
4 min
4.2K1. Говорите спасибо за работу, оплату и критику. Хвалите. К такому подходу быстро привыкаешь, работая с людьми из Европы и Штатов, и это здорово мотивирует. Прежде всего постарайтесь найти и подметить что-то положительное в работе, которую вам показали, а потом уже переходить к критике.
2. Заключайте договор, пусть даже без подписей, просто в письме и человеческим языком. Что должно быть сделано, как это будет работать, к какому сроку, что будет, если кому-то не понравится (обе стороны должны иметь возможность легко отказаться от проекта). Бейте работу на этапы и объясните, что вы работаете по предоплате 100% за каждый этап.
3. Дизайнер, не ограничивайтесь фотошопом. Разберитесь немного, как работает браузер и интернет, обязательно пользуйтесь веб-инспектором — вы научитесь менять размер шрифта и цвет плашек самостоятельно. Веб-инспектор окрыляет.
4. Разработчик и дизайнер, подружитесь. Сходите в кино, съешьте фисташковое мороженое (по личному опыту говорю). Смотрите и изучайте, как работает коллега — каждый должен немного уметь делать работу другого.
Дизайнер, графика в 90% случаев должна быть в векторе, лучше если это сразу отдельный SVG-файл для каждой иконки (ну или векторный макет, с отдельными слоями и объектами, чтобы было легко достать любой элемент).
Цвета и их оттенки как-то нужно называть в переменных, это стоит обсудить с фроентенд-разработчиком и составить общую таблицу. Воспользуйтесь инструментом, помогающим называть цвета, или вот прекрасной готовой палитрой. Идеально, если все участники проекта могут поправить файл settings.scss с цветами и размерами в Гите.
5. Дизайнер, разделите мысленно интерфейс на компоненты и блоки. Выделите три вида кнопок, подпишите, чем они отличаются, можно ли сделать их в коде одной кнопкой
Адаптивную версию не всегда обязательно отрисовывать отдельно, хороший фроентендер поймет, где брейкпоинт, и какой блок за каким должен стать в столбик на смартфоне, если на десктопе была сетка. Но основные моменты, ширину колонок и сетку, поведение меню, стоит примерно обговорить заранее. И быть готовым к тому, что большая часть задач и сложностей всплывает в процессе работы.
2. Заключайте договор, пусть даже без подписей, просто в письме и человеческим языком. Что должно быть сделано, как это будет работать, к какому сроку, что будет, если кому-то не понравится (обе стороны должны иметь возможность легко отказаться от проекта). Бейте работу на этапы и объясните, что вы работаете по предоплате 100% за каждый этап.
3. Дизайнер, не ограничивайтесь фотошопом. Разберитесь немного, как работает браузер и интернет, обязательно пользуйтесь веб-инспектором — вы научитесь менять размер шрифта и цвет плашек самостоятельно. Веб-инспектор окрыляет.
4. Разработчик и дизайнер, подружитесь. Сходите в кино, съешьте фисташковое мороженое (по личному опыту говорю). Смотрите и изучайте, как работает коллега — каждый должен немного уметь делать работу другого.
Дизайнер, графика в 90% случаев должна быть в векторе, лучше если это сразу отдельный SVG-файл для каждой иконки (ну или векторный макет, с отдельными слоями и объектами, чтобы было легко достать любой элемент).
Цвета и их оттенки как-то нужно называть в переменных, это стоит обсудить с фроентенд-разработчиком и составить общую таблицу. Воспользуйтесь инструментом, помогающим называть цвета, или вот прекрасной готовой палитрой. Идеально, если все участники проекта могут поправить файл settings.scss с цветами и размерами в Гите.
5. Дизайнер, разделите мысленно интерфейс на компоненты и блоки. Выделите три вида кнопок, подпишите, чем они отличаются, можно ли сделать их в коде одной кнопкой
.button
по всем параметрам, кроме размера .button--xl
и цвета .button--yellow
? Всегда ли кнопка будет желтой, или на самом деле она должна называться .button--warning
, а цвет может поменяться в процессе работы?Адаптивную версию не всегда обязательно отрисовывать отдельно, хороший фроентендер поймет, где брейкпоинт, и какой блок за каким должен стать в столбик на смартфоне, если на десктопе была сетка. Но основные моменты, ширину колонок и сетку, поведение меню, стоит примерно обговорить заранее. И быть готовым к тому, что большая часть задач и сложностей всплывает в процессе работы.
+7
Матрица прокрастинации (откладывания дел «на потом»)
14 min
144KTranslation
Для лучшего понимания этого поста, прочитайте сначала предыдущий пост про прокрастинацию.
Если бы, когда я учился в школе, вы спросили меня прокрастинатор ли я, я бы конечно ответил “да”. Учеников школы учат “держать темп” с крупными проектами. И я гордо держал темп больше чем кто-либо кого я знаю. Я никогда не пропускал дедлайн, но делал все ночью перед сроком сдачи работы. Я был прокрастинатором.
На самом деле я не был. Учебная программа в школе полна дедлайнов и коротких заданий. И даже долгие проекты состоят из промежуточных дедлайнов, которые не позволяют сильно расслабиться. Было всего несколько ужасных моментов, но в большинстве случаев, я все равно делал все в последнюю минуту, потому что знал, что все со мной будет хорошо, так почему бы нет.
Без всякого сомнения в моей голове была Обезьянка Немедленного Удовольствия, но она была милее всех на свете. С постоянно маячащими дедлайнами, Панический Монстр никогда не спал и Обезьянка знала об этом. Она конечно постоянно отвлекала, но не была за главного.
Мой мозг в школе:
Если бы, когда я учился в школе, вы спросили меня прокрастинатор ли я, я бы конечно ответил “да”. Учеников школы учат “держать темп” с крупными проектами. И я гордо держал темп больше чем кто-либо кого я знаю. Я никогда не пропускал дедлайн, но делал все ночью перед сроком сдачи работы. Я был прокрастинатором.
На самом деле я не был. Учебная программа в школе полна дедлайнов и коротких заданий. И даже долгие проекты состоят из промежуточных дедлайнов, которые не позволяют сильно расслабиться. Было всего несколько ужасных моментов, но в большинстве случаев, я все равно делал все в последнюю минуту, потому что знал, что все со мной будет хорошо, так почему бы нет.
Без всякого сомнения в моей голове была Обезьянка Немедленного Удовольствия, но она была милее всех на свете. С постоянно маячащими дедлайнами, Панический Монстр никогда не спал и Обезьянка знала об этом. Она конечно постоянно отвлекала, но не была за главного.
Мой мозг в школе:
+44
Рецепты тестирования Ruby и Rails приложений
7 min
22KTutorial
В этом посте я хотел бы рассказать о подходах, приемах и средствах подготовки тестов. Расскажу про то, как не писать лишнего, меньше дублировать код, писать тесты так, чтобы их было легко поддерживать, и как выигрывать в производительности в некоторых ситуациях.
Кому это будет интересно?
- Если вы начали писать тесты недавно.
- Если вы пишете тесты и считаете, что в них много копипасты, или можно значительно улучшить их.
- Если вы пишете тесты изредка или не пишете совсем, так как вам не нравится или считаете, что это долго.
- Если вы мастер в написании тестов. Возможно, вы узнаете некоторые тонкости или найдете несколько полезных мелочей.
+20
Критически опасные уязвимости в популярных 3G- и 4G-модемах или как построить Большого Брата
12 min
23KДанный отчет является логическим продолжением исследования «#root via SMS», завершенного в 2014 году командой SCADA Strangelove. Исследование затрагивало уязвимости модемов лишь частично, в рамках более широкого описания уязвимостей оборудования телеком-операторов. В настоящем документе представлено описание всех найденных и использованных уязвимостей в 8 популярных моделях 3G- и 4G-модемов, доступных в России и по всему миру. Найденные уязвимости позволяют проводить удаленное выполнение кода в веб-сценариях (RCE), произвольную модификацию прошивки, межсайтовую подделку запросов (CSRF) и межсайтовое выполнение сценариев (XSS).
В исследовании также описан наиболее полный набор векторов атак на клиентов телекома, использующих данные модемы — это может быть идентификация устройств, внедрение кода, заражение пользовательского компьютера, к которому подключен модем, подделка SIM-карты и перехват данных, определение местоположения абонента и доступ к его личному кабинету на портале оператора, а также целевые атаки (APT). Слайды презентации данного исследования с ZeroNights 2015 представлены здесь.
+16
Что такое «пузырь фильтров» и как из него выбраться
5 min
29KНа Хабре много лет назад была статья, про так называемый «пузырь фильтров» или «фильтр интересов». Смысл в том, что современные информационные системы накапливают огромные объемы данных о каждом пользователе, анализируют, структурируют и в итоге сами решают какую информацию выдавать на экран. Хорошо это или плохо? Чем это может грозить? Как это контролировать? А надо ли вообще контролировать?
+15
Совместное редактирование. Часть 1
9 min
43KДобрый день. Последний год я занимаюсь в проекте «МойОфис» вопросами совместного редактирования (collaboration). Оглядываясь назад, могу констатировать, что это непростая и очень интересная задача. Поэтому я хотел бы подробно рассказать о ней и дать ответы на следующие вопросы:
Для того чтобы подробно и аргументированно ответить на них, необходимо написать довольно много материала, поэтому статей будет несколько, присаживайтесь поудобнее, мы начинаем.
- Какие существуют подходы к обеспечению совместного редактирования?
- Насколько они сложны в реализации?
- Можно ли взять готовую библиотеку и использовать ее в своем проекте?
- Можно ли вести разработку без оглядки на совместное редактирование?
Для того чтобы подробно и аргументированно ответить на них, необходимо написать довольно много материала, поэтому статей будет несколько, присаживайтесь поудобнее, мы начинаем.
+36
Паттерны проектирования на Ruby
5 min
20KДзен Ruby говорит нам о том, что реализовать задачу можно несколькими способами, поэтому приведенные здесь решения лишь небольшое подмножество вариантов того как решить задачу более «красиво». Почти везде, где я читал про паттерны, приводились какие-то искусственные примеры, мне же всегда хотелось, чтобы кто-то показал мне «как правильно» на уже написанном, плохо спроектированном коде.
Итак, сегодня рассмотрим два шаблона проектирования: абстрактная фабрика и шаблонный метод.
Итак, сегодня рассмотрим два шаблона проектирования: абстрактная фабрика и шаблонный метод.
+4
Обработка 1 миллиона запросов в минуту c Go
8 min
38KTranslation
Предлагаю читателям «Хабрахабра» перевод статьи главного архитектора компании Malwarebytes о том, как они достигли обработки 1 миллиона запросов в минуту всего на 4 серверах.
У нас в Malwarebytes мы переживаем бешеный рост и с тех пор, как я присоединился к компании около года назад в Кремниевой Долине, одной из моих основных обязанностей было проектирование и разработка архитектур нескольких систем для развития быстрорастущей компании и всей необходимой инфраструктуры для поддержки продукта, который используют миллионы людей каждый день. Я работал в индустрии антивирусов более 12 лет в нескольких разных компаниях, и знаю, насколько сложными получаются в итоге эти системы, из-за колоссальных объемов данных, с которыми приходится иметь дело ежедневно.
У нас в Malwarebytes мы переживаем бешеный рост и с тех пор, как я присоединился к компании около года назад в Кремниевой Долине, одной из моих основных обязанностей было проектирование и разработка архитектур нескольких систем для развития быстрорастущей компании и всей необходимой инфраструктуры для поддержки продукта, который используют миллионы людей каждый день. Я работал в индустрии антивирусов более 12 лет в нескольких разных компаниях, и знаю, насколько сложными получаются в итоге эти системы, из-за колоссальных объемов данных, с которыми приходится иметь дело ежедневно.
+34
Ruby On Rails и взаимодействие с REST Qiwi Shop
6 min
7.7KИмею огромное желание рассказать о том, как просто работать с QIWI Shop, используя Ruby on Rails.
Для чего нужен QIWI Shop? Например, у Вас есть свой онлайн-магазин и Вам необходимо принимать платежи от пользователей. Qiwi достаточно распространен в мире. Он не требует наличия персонального аттеста для вывода средств, как это, например, требуют в WebMoney. Поэтому QIWI достаточно привлекателен для интеграрации в онлайн-магазины.
Для чего нужен QIWI Shop? Например, у Вас есть свой онлайн-магазин и Вам необходимо принимать платежи от пользователей. Qiwi достаточно распространен в мире. Он не требует наличия персонального аттеста для вывода средств, как это, например, требуют в WebMoney. Поэтому QIWI достаточно привлекателен для интеграрации в онлайн-магазины.
+13
Gem ice_cube для повторяющихся событий
3 min
4.4KВ некоторых проектах требуется дать возможность пользователю настроить правила для повторяющихся событий. Иногда правила событий могут быть достаточно сложными, к примеру, “каждый предпоследний день месяца” или “каждую вторую пятницу месяца до определенной даты“. Для решения подобных задач можно успешно применять gem ice_cube.
+9
Создаём отзывчивые письма для будущего без медиа-запросов
26 min
34KTutorial
Translation
Создавая HTML код для email, приходится иметь дело с изрядным количеством больных вопросов. И вряд ли для кого то будет приемлемо, если нам к тому же ещё и придётся следить за новыми email-клиентами и размерами устройств, которые появляются каждую неделю. Поддержка media query как и сам CSS разнятся среди приложений, в следствии этого, каждый раз когда вы слышите что появилось новое восхитительное почтовое приложение, для которого тоже нужно провести тесты, вас неизбежно одолевает страх.
Но что если бы вы могли создать шаблон, который был бы отзывчивым даже в окружениях с наименьшей поддержкой современного CSS? Что если каждый раз, услышав о каком-то очередном почтовом приложении, которое все испытывают, вместо того чтобы предаваться страху, можно было бы чувствовать себя спокойно и уверенно, зная что ваши email наверняка будут выглядеть хорошо?
Приведенный ниже метод, сторонником которого я являюсь, всецело ориентирован на создание положительного опыта взаимодействия при работе с email-клиентами, у которых вообще отсутствует поддержка media query.
Он называется fluid-hybrid method, иногда упоминается как spongy метод для email разработок. Часть fluid предполагает что мы используем изрядной количество процентных вычислений. Часть hybrid означает что мы также используем max-width дабы ограничить некоторые из наших элементов на экранах большего размера.
Но что если бы вы могли создать шаблон, который был бы отзывчивым даже в окружениях с наименьшей поддержкой современного CSS? Что если каждый раз, услышав о каком-то очередном почтовом приложении, которое все испытывают, вместо того чтобы предаваться страху, можно было бы чувствовать себя спокойно и уверенно, зная что ваши email наверняка будут выглядеть хорошо?
Приведенный ниже метод, сторонником которого я являюсь, всецело ориентирован на создание положительного опыта взаимодействия при работе с email-клиентами, у которых вообще отсутствует поддержка media query.
Он называется fluid-hybrid method, иногда упоминается как spongy метод для email разработок. Часть fluid предполагает что мы используем изрядной количество процентных вычислений. Часть hybrid означает что мы также используем max-width дабы ограничить некоторые из наших элементов на экранах большего размера.
+15
Information
- Rating
- Does not participate
- Location
- Харьков, Харьковская обл., Украина
- Registered
- Activity