Pull to refresh
27
0
Андрей Емельяненко @YourWest

User

Send message

Советы по Postgres для Rails разработчиков

Reading time4 min
Views8.7K

В апреле на RailsConf в Фениксе мы обсудили огромное количество советов по использованию Postgres с Rails, и подумали, что будет полезно их записать и поделиться с более широкой аудиторией. Здесь вы найдете некоторые из них, касающиеся отладки и улучшения производительности базы данных вашего Rails приложения.

Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments0

Создание игры на Unreal Engine 4 за 150 часов (видео + исходники)

Reading time6 min
Views186K
Приветствую, Хабр! Хотел бы познакомить вас с относительно небольшим проектом, который я сделал c нуля примерно за 150 часов (50 заходов ~3 часа каждый) на Unreal Engine 4. Проект я делал в прямом эфире только на стримах раз в неделю (в общей сложности ушел год), попутно отвечая на вопросы пользователей.

Сам проект не предназначался как коммерческий. Целью я ставил на практике показать всю сложность разработки игр, а именно такие проблемы, как:

  • Планирование и прототипирование проекта
  • Продумывание и реализация архитектуры проекта и отдельных его компонентов
  • Реализация интерфейса пользователя
  • Отладка и исправление ошибок
  • Работа с ассетами и графикой

image

В конце всей серии стримов у нас получился играбельный прототип “Сурвайвл” шутера. Те, у кого стакан наполовину полон, смогут даже назвать это пре-альфой без сюжета.

Если вам интересны подробности проекта, записи стримов, исходники и прочее, читайте далее.
Total votes 103: ↑99 and ↓4+95
Comments45

Шизофрения: взгляд изнутри

Reading time8 min
Views204K
Пишу сюда первый раз, и на русском пишу редко, так что если что не так, прошу о понимании.

Тема указанная в заголовке как мне показалось из комментариев к этой статье вызывает определённый интерес, и я решил поделиться своим небольшим опытом в надежде, что он поможет кому-то преодолеть жизненные трудности.
Читать дальше →
Total votes 133: ↑129 and ↓4+125
Comments497

Книга «Ruby. Объектно-ориентированное проектирование»

Reading time5 min
Views15K
image Привет, Хаброжители! Совсем недавно мы перевели бестселлер Сэнди Метц.

Книга посвящена проектированию объектно-ориентированных программ. Это не учебник, а рассказ программиста о том, как следует создавать программный код. Книга научит вас, как скомпоновать программное обеспечение, чтобы его высокая продуктивность не снижалась ни через месяц, ни через год. В ней показано, как создаются приложения, которые могут пользоваться успехом сегодня и адаптироваться к требованиям будущего.

Внимательно изучив это руководство, вы сможете: • Понять, как писать на Ruby качественный код в духе ООП • Решать, что должно входить в состав класса Ruby • Не допускать тесной связи между объектами в тех случаях, когда требуется разграничить функциональность • Определять гибкие интерфейсы между объектами • Освоить утиную типизацию • Эффективно задействовать наследование, композицию и полиморфизм • Разрабатывать экономные тесты • Доводить до совершенства любой legacy-код Ruby.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments17

400 потрясающих бесплатных сервисов

Reading time16 min
Views718K

Рад представить дополнение оригинального списка из 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).
Читать дальше →
Total votes 108: ↑89 and ↓19+70
Comments38

Autofill: чего не знают веб-разработчики, хотя должны знать

Reading time14 min
Views77K


Многим известно, что в мобильной версии Safari можно отсканировать свою банковскую карту. Но многие ли разработчики умеют создавать формы, поддерживающие эту возможность?

Готов поспорить, что немногие.

Дело осложняет полное отсутствие документации от Apple по работе этой функции. Но тут есть один момент. Функция сканирования банковских карт является подмножеством автозаполнения — браузерного функционала, давно игнорируемого веб-разработчиками. Понятно, почему они не уделяли ему должного внимания: когда регулярно заполняешь форму тестовыми данными, автозаполнение обычно мешает. Но для наших пользователей это важная функция. В Google выяснили, что при использовании автозаполнения пользователи на 30% быстрее заполняют формы. Так что давайте изучим работу автозаполнения, разберёмся, как создавать формы, поддерживающие кросс-браузерное автозаполнение, и воспользуемся преимуществами новых возможностей наподобие сканирования банковских карт.
Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments12

Workflow просмотра сериалов для Alfred

Reading time5 min
Views18K

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


Для тех кто не знает что такое Alfred

Alfred — это Spotlight на стероидах. Умеет чуть более чем всё что умеет Spotlight, плюс, начиная со второй версии, поддерживает написание, а так же использование написанных другими людьми, так называемых, workflows. То бишь, расширений функциональности самописными скриптами. Для их написания поддерживается несколько скриптовых языков:


  • bash
  • zsh
  • php
  • ruby
  • python
  • perl
  • osascript
  • javascript

Речь в этой статье пойдет об одном из таких расширений.


Немного забегая вперед, хочу показать, что же у нас есть в итоге…
Когда обнаруживается время расслабиться и включить сериальчик, я запускаю Alfred, ввожу "сериалы" и получаю в ответ список загруженных.


Красота, не правда ли?

Под катом пара бонусов для любителей сериалов
Total votes 18: ↑16 and ↓2+14
Comments13

Автомасштабирование в Amazon Web Services: EC2 + CloudWatch

Reading time4 min
Views15K
Добрый день!

Настройка автомасштабирования на основе Amazon EC2 это очень интересная задача, которую я когда-то решил и теперь применяю на практике. Существует много возможных вариантов, но я рассмотрю самый простой из них: горизонтальное масштабирование одного сервера под одним балансировщиком.

В качестве инициатора маштабирования будет выступать Cloud Watch. Метрикой будет наша кастомная метрика Load Average.

Итак, начнём-с. Первое, как тру линуксоид, я советую и рекомендую использовать в настройке автоскейлинга утилиты командной строки (Command Line Tools — CLT) по следующим причинам:
  • из CLT можно сделать всё;
  • удобнее копипастить в консоль, чем кликать мышкой.

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments17

Как подружиться клиенту, дизайнеру и разработчику

Reading time4 min
Views4.2K
1. Говорите спасибо за работу, оплату и критику. Хвалите. К такому подходу быстро привыкаешь, работая с людьми из Европы и Штатов, и это здорово мотивирует. Прежде всего постарайтесь найти и подметить что-то положительное в работе, которую вам показали, а потом уже переходить к критике.

2. Заключайте договор, пусть даже без подписей, просто в письме и человеческим языком. Что должно быть сделано, как это будет работать, к какому сроку, что будет, если кому-то не понравится (обе стороны должны иметь возможность легко отказаться от проекта). Бейте работу на этапы и объясните, что вы работаете по предоплате 100% за каждый этап.

3. Дизайнер, не ограничивайтесь фотошопом. Разберитесь немного, как работает браузер и интернет, обязательно пользуйтесь веб-инспектором — вы научитесь менять размер шрифта и цвет плашек самостоятельно. Веб-инспектор окрыляет.

4. Разработчик и дизайнер, подружитесь. Сходите в кино, съешьте фисташковое мороженое (по личному опыту говорю). Смотрите и изучайте, как работает коллега — каждый должен немного уметь делать работу другого.

Дизайнер, графика в 90% случаев должна быть в векторе, лучше если это сразу отдельный SVG-файл для каждой иконки (ну или векторный макет, с отдельными слоями и объектами, чтобы было легко достать любой элемент).

Цвета и их оттенки как-то нужно называть в переменных, это стоит обсудить с фроентенд-разработчиком и составить общую таблицу. Воспользуйтесь инструментом, помогающим называть цвета, или вот прекрасной готовой палитрой. Идеально, если все участники проекта могут поправить файл settings.scss с цветами и размерами в Гите.

5. Дизайнер, разделите мысленно интерфейс на компоненты и блоки. Выделите три вида кнопок, подпишите, чем они отличаются, можно ли сделать их в коде одной кнопкой .button по всем параметрам, кроме размера .button--xl и цвета .button--yellow? Всегда ли кнопка будет желтой, или на самом деле она должна называться .button--warning, а цвет может поменяться в процессе работы?

Адаптивную версию не всегда обязательно отрисовывать отдельно, хороший фроентендер поймет, где брейкпоинт, и какой блок за каким должен стать в столбик на смартфоне, если на десктопе была сетка. Но основные моменты, ширину колонок и сетку, поведение меню, стоит примерно обговорить заранее. И быть готовым к тому, что большая часть задач и сложностей всплывает в процессе работы.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments2

Матрица прокрастинации (откладывания дел «на потом»)

Reading time14 min
Views144K
Для лучшего понимания этого поста, прочитайте сначала предыдущий пост про прокрастинацию.

Если бы, когда я учился в школе, вы спросили меня прокрастинатор ли я, я бы конечно ответил “да”. Учеников школы учат “держать темп” с крупными проектами. И я гордо держал темп больше чем кто-либо кого я знаю. Я никогда не пропускал дедлайн, но делал все ночью перед сроком сдачи работы. Я был прокрастинатором.

На самом деле я не был. Учебная программа в школе полна дедлайнов и коротких заданий. И даже долгие проекты состоят из промежуточных дедлайнов, которые не позволяют сильно расслабиться. Было всего несколько ужасных моментов, но в большинстве случаев, я все равно делал все в последнюю минуту, потому что знал, что все со мной будет хорошо, так почему бы нет.

Без всякого сомнения в моей голове была Обезьянка Немедленного Удовольствия, но она была милее всех на свете. С постоянно маячащими дедлайнами, Панический Монстр никогда не спал и Обезьянка знала об этом. Она конечно постоянно отвлекала, но не была за главного.

Мой мозг в школе:
image

Читать дальше →
Total votes 62: ↑53 and ↓9+44
Comments221

Рецепты тестирования Ruby и Rails приложений

Reading time7 min
Views22K
image

В этом посте я хотел бы рассказать о подходах, приемах и средствах подготовки тестов. Расскажу про то, как не писать лишнего, меньше дублировать код, писать тесты так, чтобы их было легко поддерживать, и как выигрывать в производительности в некоторых ситуациях.

Кому это будет интересно?

  • Если вы начали писать тесты недавно.
  • Если вы пишете тесты и считаете, что в них много копипасты, или можно значительно улучшить их.
  • Если вы пишете тесты изредка или не пишете совсем, так как вам не нравится или считаете, что это долго.
  • Если вы мастер в написании тестов. Возможно, вы узнаете некоторые тонкости или найдете несколько полезных мелочей.

Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments16

Критически опасные уязвимости в популярных 3G- и 4G-модемах или как построить Большого Брата

Reading time12 min
Views23K


Данный отчет является логическим продолжением исследования «#root via SMS», завершенного в 2014 году командой SCADA Strangelove. Исследование затрагивало уязвимости модемов лишь частично, в рамках более широкого описания уязвимостей оборудования телеком-операторов. В настоящем документе представлено описание всех найденных и использованных уязвимостей в 8 популярных моделях 3G- и 4G-модемов, доступных в России и по всему миру. Найденные уязвимости позволяют проводить удаленное выполнение кода в веб-сценариях (RCE), произвольную модификацию прошивки, межсайтовую подделку запросов (CSRF) и межсайтовое выполнение сценариев (XSS).

В исследовании также описан наиболее полный набор векторов атак на клиентов телекома, использующих данные модемы — это может быть идентификация устройств, внедрение кода, заражение пользовательского компьютера, к которому подключен модем, подделка SIM-карты и перехват данных, определение местоположения абонента и доступ к его личному кабинету на портале оператора, а также целевые атаки (APT). Слайды презентации данного исследования с ZeroNights 2015 представлены здесь.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments6

Что такое «пузырь фильтров» и как из него выбраться

Reading time5 min
Views29K
image

На Хабре много лет назад была статья, про так называемый «пузырь фильтров» или «фильтр интересов». Смысл в том, что современные информационные системы накапливают огромные объемы данных о каждом пользователе, анализируют, структурируют и в итоге сами решают какую информацию выдавать на экран. Хорошо это или плохо? Чем это может грозить? Как это контролировать? А надо ли вообще контролировать?
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments12

Совместное редактирование. Часть 1

Reading time9 min
Views43K
Добрый день. Последний год я занимаюсь в проекте «МойОфис» вопросами совместного редактирования (collaboration). Оглядываясь назад, могу констатировать, что это непростая и очень интересная задача. Поэтому я хотел бы подробно рассказать о ней и дать ответы на следующие вопросы:

  1. Какие существуют подходы к обеспечению совместного редактирования?
  2. Насколько они сложны в реализации?
  3. Можно ли взять готовую библиотеку и использовать ее в своем проекте?
  4. Можно ли вести разработку без оглядки на совместное редактирование?



Для того чтобы подробно и аргументированно ответить на них, необходимо написать довольно много материала, поэтому статей будет несколько, присаживайтесь поудобнее, мы начинаем.
Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments29

Паттерны проектирования на Ruby

Reading time5 min
Views20K
Дзен Ruby говорит нам о том, что реализовать задачу можно несколькими способами, поэтому приведенные здесь решения лишь небольшое подмножество вариантов того как решить задачу более «красиво». Почти везде, где я читал про паттерны, приводились какие-то искусственные примеры, мне же всегда хотелось, чтобы кто-то показал мне «как правильно» на уже написанном, плохо спроектированном коде.
Итак, сегодня рассмотрим два шаблона проектирования: абстрактная фабрика и шаблонный метод.
Читать дальше →
Total votes 14: ↑9 and ↓5+4
Comments11

Обработка 1 миллиона запросов в минуту c Go

Reading time8 min
Views38K
Предлагаю читателям «Хабрахабра» перевод статьи главного архитектора компании Malwarebytes о том, как они достигли обработки 1 миллиона запросов в минуту всего на 4 серверах.

У нас в Malwarebytes мы переживаем бешеный рост и с тех пор, как я присоединился к компании около года назад в Кремниевой Долине, одной из моих основных обязанностей было проектирование и разработка архитектур нескольких систем для развития быстрорастущей компании и всей необходимой инфраструктуры для поддержки продукта, который используют миллионы людей каждый день. Я работал в индустрии антивирусов более 12 лет в нескольких разных компаниях, и знаю, насколько сложными получаются в итоге эти системы, из-за колоссальных объемов данных, с которыми приходится иметь дело ежедневно.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments53

Ruby On Rails и взаимодействие с REST Qiwi Shop

Reading time6 min
Views7.7K
Имею огромное желание рассказать о том, как просто работать с QIWI Shop, используя Ruby on Rails.

Для чего нужен QIWI Shop? Например, у Вас есть свой онлайн-магазин и Вам необходимо принимать платежи от пользователей. Qiwi достаточно распространен в мире. Он не требует наличия персонального аттеста для вывода средств, как это, например, требуют в WebMoney. Поэтому QIWI достаточно привлекателен для интеграрации в онлайн-магазины.


Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments11

Gem ice_cube для повторяющихся событий

Reading time3 min
Views4.4K
В некоторых проектах требуется дать возможность пользователю настроить правила для повторяющихся событий. Иногда правила событий могут быть достаточно сложными, к примеру, “каждый предпоследний день месяца” или “каждую вторую пятницу месяца до определенной даты“. Для решения подобных задач можно успешно применять gem ice_cube.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments5

Создаём отзывчивые письма для будущего без медиа-запросов

Reading time26 min
Views34K
Создавая HTML код для email, приходится иметь дело с изрядным количеством больных вопросов. И вряд ли для кого то будет приемлемо, если нам к тому же ещё и придётся следить за новыми email-клиентами и размерами устройств, которые появляются каждую неделю. Поддержка media query как и сам CSS разнятся среди приложений, в следствии этого, каждый раз когда вы слышите что появилось новое восхитительное почтовое приложение, для которого тоже нужно провести тесты, вас неизбежно одолевает страх.

Но что если бы вы могли создать шаблон, который был бы отзывчивым даже в окружениях с наименьшей поддержкой современного CSS? Что если каждый раз, услышав о каком-то очередном почтовом приложении, которое все испытывают, вместо того чтобы предаваться страху, можно было бы чувствовать себя спокойно и уверенно, зная что ваши email наверняка будут выглядеть хорошо?

Приведенный ниже метод, сторонником которого я являюсь, всецело ориентирован на создание положительного опыта взаимодействия при работе с email-клиентами, у которых вообще отсутствует поддержка media query.

Он называется fluid-hybrid method, иногда упоминается как spongy метод для email разработок. Часть fluid предполагает что мы используем изрядной количество процентных вычислений. Часть hybrid означает что мы также используем max-width дабы ограничить некоторые из наших элементов на экранах большего размера.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments7
1
23 ...

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Registered
Activity