Pull to refresh
0
0
Бондаренко Илья @bondarenko

User

Send message

Несколько полезных ruby-трюков, которые (возможно) улучшат ваш код

Reading time3 min
Views31K
Скучая в эту дождливую праздничную погоду, наткнулся на занимательную статейку в блоге с говорящим названием Samurails, в которой описываются некоторые интересные ruby-трюки, которые наверняка будут интересны новичкам.

Итак, приступим.

Создаем хэш из массива


Проще простого. Ставим команду Hash перед любым массивом и получаем готовые пары ключ/значение:

Hash['key1', 'value1', 'key2', 'value2']

# => {"key1"=>"value1", "key2"=>"value2"}

Читать дальше →
Total votes 34: ↑26 and ↓8+18
Comments34

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Reading time20 min
Views315K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Total votes 335: ↑318 and ↓17+301
Comments244

Что такое хорошо: как мы разрабатывали критерии для оценки качества вёрстки веб-проектов

Reading time9 min
Views94K


На Хабре уже было немало материалов о том, как проводить качество вёрстки веб-проектов (вот отличная статья на эту тему) — как правило, речь в таких топиках идёт о коммерческих сайтах. В ходе развития образовательного проекта HTML Academy мы также столкнулись с необходимостью выработки критериев для оценки работ учеников.

Очевидно, что учить нужно так, чтобы потом люди (не все из которых «технари») могли приходить в компании и работать «правильно» — то есть создавая вёрстку, которая красиво выглядит и не требует больших усилий по поддержке. Процесс создания списка универсальных критериев для оценки занял довольно длительное время и был сопряжён с рядом трудностей. Сегодня мы расскажем о том, что же у нас в итоге получилось.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments47

Тонкости Rails 4 — Cache Digests

Reading time5 min
Views13K


Гем под названием "cache_digests" (включен по умолчанию в Rails 4) автоматически добавляет цифровую подпись к каждому фрагментному кэшу, основываюсь на представлении (вьюхе). При этом, если страница изменяется, то старый кэш автоматически удаляется. Но остерегайтесь подводных камней!
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments38

Ускоряем Nginx за 5 минут

Reading time5 min
Views289K
image
Попытайтесь повторить это сами

Как правило, настроенный должным образом сервер Nginx на Linux, может обрабатывать 500,000 — 600,000 запросов в секунду. Но этот показатель можно весьма ощутимо увеличить. Хотел бы обратить внимание на тот факт, что настройки описанные ниже, применялись в тестовой среде и, возможно, для ваших боевых серверов они не подойдут.

Минутка банальности.

yum -y install nginx

На всякий пожарный, создадим бэкап исходного конфига.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
vim /etc/nginx/nginx.conf

А теперь можно и похимичить!
Бдыжь-бдыжь
Total votes 203: ↑138 and ↓65+73
Comments128

Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно

Reading time9 min
Views55K
Целью данной заметки я ставлю в подробностях описать организацию сервера для Rails приложений в самой популярной на данный момент связке: rvm + Rails + Nginx + Unicorn. К написанию статьи побудило отсутствие полной пошаговой документации по этой связке, понятной не только ядреным профессионалам этой области. Далее я попытаюсь подробно, шаг за шагом, описать идеологически правильный процесс организации сервера для обслуживания нескольких Rails приложений (на примере одного) — если у вас есть абсолютная уверенность в том, что на подопытной машине никогда не будет работать более одного приложения — настройка может быть существенно короче и проще. Хочу предупредить, что тонкости, касающиеся работы приложения под высокой нагрузкой в статье не описываются, т.к. цель ставилась иная — заставить работать приложение в связке и сократить количество конфликтов с другими приложениями до минимума.
Читать дальше →
Total votes 68: ↑63 and ↓5+58
Comments135

Как оптимизировать процессы Unicorn в Ruby on Rails приложении

Reading time5 min
Views14K

Если вы являетесь rails-разработчиком, то вы наверняка слышали про Unicorn, http-сервер, способный одновременно обрабатывать множество запросов.

Для обеспечения параллельности Unicorn использует создание множества процессов. Т.к. созданные (форкнутые) процессы являются копиями друг друга, это значит, что rails-приложение должно быть потокобезопасным.

Это здорово, т.к. нам тяжело быть уверенными, что наш код является потокобезопасным. Если мы не можем быть уверены в этом, то ни о параллельных веб-серверах, таких как Puma, ни даже об альтернативных реализациях Ruby, реализующих параллелизм, таких как JRuby и Rubinius, не может быть и речи.

Поэтому Unicorn предоставляет нашим rails-приложениям параллельность даже если они не потокобезопасны. Однако, это требует определенной платы. Rails-приложения, запускаемые на Unicorn’е требуют гораздо больше памяти. Не обращая никакого внимания на потребление памяти вашим приложением, вы можете в итоге обнаружить, что ваш облачный сервер перегружен.

В этой статье мы рассмотрим несколько способов использования параллельности Unicorn'а, при этом контролируя количество потребляемой памяти.
Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments24

Почему вы никогда не должны использовать MongoDB

Reading time16 min
Views287K
Дисклеймер от автора (автор — девушка): Я не разрабатываю движки баз данных. Я создаю веб-приложения. Я участвую в 4-6 разных проектах каждый год, то есть создаю много веб-приложений. Я вижу много приложений с различными требованиями и различными потребностями хранения данных. Я разворачивала большинство хранилищ, о которых вы слышали, и несколько, о которых даже не подозреваете.

Несколько раз я делала неправильный выбор СУБД. Эта история об одном таком выборе — почему мы сделали такой выбор, как бы узнали что выбор был неверен и как мы с этим боролись.Это все произошло на проекте с открытым исходным кодом, называемым Diaspora.
Читать дальше →
Total votes 219: ↑181 and ↓38+143
Comments245

Как DRYить модели

Reading time5 min
Views17K
В большинстве рельсовых проектов основная концентрация кода приходится на модели. Все наверняка читали про Slim controllers & fat models и стараются впихать в модели как можно больше, а в контроллеры как можно меньше. Что ж, это похвально, однако в стремлении утолстить модели многие часто забывают про принцип DRY — don't (fucking) repeat yourself.

Я тут постараюсь вкратце расписать, как в районе моделей и рыбку съесть, и про DRY не забыть.

Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments22

Как мы Select2 в хелпер заворачивали

Reading time6 min
Views30K
Думаю, многие знакомы с Select2. Всё в нём замечательно: и элементы красивые, и кастомизации вагон, и c ajax работает и ещё много много полезного делать умеет. Только проблема одна: инициализация довольно громоздкая (js писать надо, экшн иметь для ajax-овой подгрузки результатов и так далее). Это было не шибко удобно и решили мы сделать свою надстройку для Select2, в которой и js писать не надо, да и за пределы вьюхи уходить почти не придётся. О том как мы это делали и что получилось читайте под катом.

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments7

Применение принципа DRY в RSpec

Reading time5 min
Views19K


DRY(Don’t Repeat Yourself) — один из краеугольных принципов современной разработки, а особенно в среде ruby-программистов. Но если при написании обычного кода повторяющиеся фрагменты обычно легко можно сгруппировать в методы или отдельные модули, то при написании тестов, где повторяющегося кода порой еще больше, это сделать не всегда просто. В данной статье содержится небольшой обзор средств решения подобных проблем при использовании BDD-фреймворка RSpec.
Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments17

ActiveRecord немного про грабли, Relations и индексы

Reading time8 min
Views23K
Хочу рассказать Вам о наболевшем: о работе с AR в целом и с Relation в частности; предостеречь от стандартных садовых изделий, которые легко могут испортить жизнь и сделать код медленным и прожорливым. Повествование будет основываться на Rails 3.2 и ActiveRecord того же разлива. В Rails 4, конечно же, много чего нового и полезного, но на него ещё перейти нужно, да и фундамент в любом случае один и тот же.

Сей материал, по большей части, предназначен для начинающих, ибо автору очень больно смотреть на извлечение содержимого целых таблиц в память в виде ActiveRecord объектов и на прочие отстрелы конечностей при использовании AR. Разработчикам, познавшим дзен, топик вряд ли принесёт пользу, они могут лишь Помочь, дополнив его своими примерами и назиданиями.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments41

Как бесплатно отправлять push оповещение на iphone из своего скрипта c помощью Boxcar 2

Reading time2 min
Views14K
Появилась задача отправлять на iphone оповещения. Конечно, было бы проще сделать это обычным email-ом, но клиент настоял именно на push-е. Поэтому пришлось пользоваться поиском. К моему удивлению ни на хабре, ни в русской части интернета рабочего примера, как делать бесплатный push, не оказалось. Надо бы это исправить.

Нам потребуется установить бесплатное приложение Boxcar 2, так же в нашем скрипте должна быть поддержка CURL.



Под катом представлено пошаговое руководство и пример на php.
Читать дальше →
Total votes 23: ↑18 and ↓5+13
Comments16

PenSpinning — спорт для программистов!

Reading time1 min
Views4.2K
image
Что такое PenSpinning? Это, можно сказать, эдакий вид спорта. На русский правильнее всего переводится «манипулирование ручкой». Сам он появился относительно недавно и распространен в России мало, хотя в азиатских странах развит очень неплохо.
Наверное, каждый, сидев в свое время на лекции, начинал специально или непроизвольно крутить ручку в пальцах — вот это и есть пенспиннинг. Все дело не в том, что и где крутить, а в том, как :) Само по себе это занятие помогает не только скоротать время, но и доставляет массу удовольствия, кроме того, при должной тренировке со стороны это выглядит очень даже круто! В России уже существует несколько сообществ пенспиннеров, и на их умение действительно стоит посмотреть. Кстати, по количеству вариантов моддинга ручек этот «вид спорта» дает сто очков вперед любому другому, например, стритрейсингу!

Ну и, для разогрева, пример!

Сайт российского сообщества пенспиннеров

UPD: все о Penspinning на торрентах:
torrents.ru/forum/viewtopic.php?t=984359
torrents.ru/forum/viewtopic.php?t=1687450
Спасибо юзернейму TimTowdy!
UPD2: Отличная подборка обучающего видео онлайн
Total votes 144: ↑120 and ↓24+96
Comments109

156 Run команд

Reading time4 min
Views8.6K
Надеюсь, что ни для кого не секрет, что в Windows есть возможность выполнять Run команды посредством вызова диалога Пуск-> Выполнить или используя горячие клавиши Win + R.
Это удобно для запуска приложений, к которым вы либо иначе доступ и не получите, либо получите, пройдя по папкам с большим уровнем вложенности (например для установки и удаления программы вам нужно зайти в Пуск -> Панель управления -> Установка и удаление или просто выполнить команду appwiz.cpl).

Поэтому, для того, чтобы ускорить работу за компьютером привожу список из 156 команды, которые вы можете выполнить из Run диалога. Особенно актуально это будет для системных администраторов:

access.cpl — специальные возможности
accwiz — мастер специальных возможностей
hdwwiz.cpl — мастер установки оборудования
appwiz.cpl — установка и удаление программ
control admintools — администрирование
acrobat — Adobe Acrobat
acrodist — Adobe Designer
acrodist — Adobe Distiller
imageready — Adobe ImageReady
photoshop — Adobe Photoshop
wuaucpl.cpl — автоматическое обновление
fsquirt — мастер передачи файлов через блютус
calc — калькулятор
certmgr.msc — сертификаты
charmap — таблица символов
chkdsk — проверка дисков
clipbrd — папка обмена
cmd — консоль
dcomcnfg — службы компонентов
compmgmt.msc — управление компьютером
Читать дальше →
Total votes 101: ↑77 and ↓24+53
Comments33

Как написать отличную статью и завоевать умы

Reading time12 min
Views18K

Web 2.0, существование которого некоторыми отрицается, привел в интернет много авторов, которые стали писать статьи и заметки на самые разные темы. В зависимости от ресурса, вид, содержание, оформление и размер таких статей различаются, но у них есть один общий компонент — авторский текст, который, собственно, почти всегда, является сутью статьи. Такие статьи, в основном, пишутся не профессиональными журналистами, а простыми пользователями, которые в силу разных причин делятся своими мыслями, идеями или полученной информацией.

В данной статье мне хотелось бы предложить несколько вариантов того, как стоит создавать статьи, как их подавать и как поддерживать жизнь своей статьи.
Читать дальше →
Total votes 131: ↑96 and ↓35+61
Comments77

Классификация видов тестирования

Reading time5 min
Views217K
Учил студентов предмету «Тестирование и отладка программного обеспечения» в ИжГТУ. Структуру курса обучения построил на основе классификации видов тестирования.
Виды тестирования

О ней и будет сей рассказ.
Total votes 71: ↑64 and ↓7+57
Comments35

Советы front-end разработчику

Reading time7 min
Views191K


Привет, читатель хабра.

Наверное, ты сразу спросишь меня: «Да кто ты такой, чтобы давать мне советы?». Итак, немного обо мне.

Первое мое общение с HTML и CSS было 10 лет назад, еще в школе, когда у меня только появился интернет, и я понял что тоже хочу делать странички, которые сможет увидеть весь мир. С тех пор у меня есть как минимум 5 полных лет опыта разработки сайтов по-взрослому. Сейчас я могу без лишней скромности сказать, что сверстал я уже пару сотен сайтов, большинство из которых, как ни странно, совершенно не совпадают с моими текущими требованиями к верстке.

Я не хочу рассказывать как надо делать, эта статья результат моего опыта и попытка написать рекомендации тем, кто только начинает, хотя и для матерых верстальщиков (слово режущие слух) здесь могут найтись интересные идеи.
Если ты заинтересовался прошу под кат…
Читать дальше →
Total votes 129: ↑109 and ↓20+89
Comments139

Занимательный web-квест. Узнай весь URL

Reading time1 min
Views16K
Нашла на просторах могучего очень интересный квест. Как раз для пятничного хабра.

Немного о правилах:

Для решения задачи необходимо отгадать правильный URL адрес.
Каждая следующая задача добавляет к URL адресу очередную директорию.
Т.е. адрес будет выглядеть так start.webolomka.ru/ответ1/ответ2
В написании пути могут использоваться латинские буквы (регистронезависимы), цифры, и символы: .,-+()$:;_@
Не бойтесь ошибаться. На некоторых уровнях есть неправильные страницы с подсказками.
Большая просьба не публиковать прямых ссылок на пройденные уровни.


На старт. Внимание. Марш!

UPD. Мой отзыв
Total votes 29: ↑26 and ↓3+23
Comments234

Faye как способ не задолбать свой сервер

Reading time3 min
Views12K
Здравствуйте, хабралюди. Сегодня я хочу рассказать о том, как в одном из наших проектов мы снизили количество запросов на сервер на пару порядков за счет использования технологии Comet.

Суть проблемы: веб-приложение для службы такси, диспетчера работают удаленно (из дома, из офиса и т.п.). Перед каждым — список заказов. Состояние заказов может измениться в любой момент — водитель взял заказ, водитель отказался, клиент отказался, другой диспетчер завел новый заказ. Очень важно чтобы диспетчер видел картину практически в реальном времени, поскольку в час пик звонки идут один за другим без перерыва. Вначале это было сделано через вызывающийся периодически (setTimeout) AJAX запрос, который получив с сервера отрендеренный список текущих запросов заменял содержимое div'а. Для 1-2 разработчиков, и пары тестеров это казалось нормальной идеей — 1-2 запроса в секунду не сильно напрягали. По результатам компромисса между актуальностью и снижением нагрузки на сервер определились что будем дергать сервер раз в 3 секунды.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments25
1

Information

Rating
Does not participate
Location
Пермь, Пермский край, Россия
Date of birth
Registered
Activity