Twitter GitHub

Рубрика “Webdev”

Никто не знает как правильно закачать файл с помощью Ruby Net::HTTP

Я сейчас, в качестве хобби, работаю над своим гемом http_wrapper. И на текущий момент реализую фичу загрузки файлов. Я не очень люблю изобретать колеса, особенно если кто-то уже изобрел отличное круглое колесо, поэтому первым делом начал гуглить возможные варианты решения моей задачи. И вот где начинается забавное: я не нашел ни одного варианта, в котором бы предлагалась правильная загрузка файла с помощью Net::HTTP. Предлагают использовать готовые обертки (типа Rest Client и httparty) или гемы, реализующие именно функционал multipart/form-data (например, multipart-post), да даже использовать curl через системный вызов предлагают. Жуть, в общем.

Все это мне не понравилось и я начал копаться в недрах Net::HTTP. И в итоге откопал большую тайну (судя по тому, что больше я этого нигде на просторах интернета не нашел), которой сейчас с вами поделюсь: как правильно закачать файл с помощью стандартной библиотеки Ruby Net::HTTP: Читать дальше →

BetterErrors и RubyMine в Mac OS X

Есть такой великолепный и очень полезный gem — BetterErrors. Чем он так полезен и замечетален вы можете посмотреть в скринкасте RailsCasts.com, заодно и про RailsPanel узнаете. В этом же скринкасте говориться и об одной из самых полезных фич этого gem’а — открытие файла и строчки, в которой произошла ошибка, прямо из браузера — кликом мышки. Но из коробки, к сожалению, эту фичу поддерживает только TextMate и с небольшим допилом Sublime Text 2.

До недавнего времени в RubyMine эту проблему можно было частично решить плагином Remote Call, а частично, потому что при клике по ссылке нужный файл открывался, но вот фокус в приложение RubyMine не переключался, нужно было вручную возвращаться в IDE, что не очень-то и удобно.

Однако буквально на днях вышел RubyMine ICHII (EAP), в котором была заявлена поддержка gem’а RubyMine Heaven, и благодаря этому теперь можно полноценно использовать и возможности BetterErrors. Читать дальше →

Оптимизируем WordPress (и не только) с помощью Grunt’а

С самого момента установки WordPress’а и темы для него, меня как разработчика, очень сильно напрягло, что ни сам WordPress, ни тема никак не оптимизируют количество подгружаемых файлов стилей и скриптов — никакой минификации, никакой конкатенации, только пачка запросов к серверу на 5 файлов стилей и 12 скриптов. Все это меня удручало, но как-то все было не того.

Но вот вчера я наткнулся на отличную статью на Хабре про Grunt, в конце которой оказалась ссылка на еще более полезную статью Артёма Сапегина про Grunt как систему сборки для фронтенд-разработчиков. После ознакомления с указанными статьями я подумал, что это просто-таки отличное решение моей проблемы с Wordpress’ом и погрузился в изучение Grunt’а.

Вот что из этого получилось… Читать дальше →

Git merge vs. rebase

Коротко:

  • git pull --rebase вместо git pull
  • git rebase -i @{u} до того как git push
  • (в «feature») git merge master чтобы сделать ветку feature совместимой с последними изменениями в master’е
  • (в «master») git merge -no-ff feature для релиза фичи

Однако избегайте merge-коммита, если ветка «feature» содержит только 1 коммит: (в «master») git cherry-pick feature.

Развернуто:

Читать дальше →

«Мимишная» альтернатива другим сервисам динамической генерации изображений для placeholder’ов. Разнообразьте свои трудовые будни няшными котиками ;)

Placekitten

Отслеживаем ошибки на сайте с помощью Ratchet.io

Практически всегда после разработки сайта и его запуска необходимо отслеживать возникновение возможных ошибок. Можно для этого использовать логирование, извещения на почту, какие-то свои велосипеды, а можно воспользоваться специально созданными для этого сервисами. Одним из самых известных сервисов такого рода является Airbrake, однако у него есть ряд недостатков: официально они поддерживают только Ruby on Rails и iOS, в эксперементальном виде Javascript, остальное поддерживается сторонними разработчиками. А кроме того абсолютно бесполезный бесплатный тариф (1 пользователь, 1 проект, никакой интеграции с GitHub, никакого трэкинга деплоев). Нужно больше — плати, а не всегда это оправданно, особенно если пилишь пару-тройку своих маленьких проектов с частотой ошибок в продакшене пара-тройка раз в неделю.

Но не так давно я наткнулся в своем RSS-ридере на пост Александра Макарова (Sam Dark) про Ratchet.io.

Читать дальше →