Pull to refresh
0
0
Михаил @MichaelHitchens

User

Замедляем выполнение запросов в PostgreSQL

Reading time 2 min
Views 18K
Tutorial

Кому-то может показаться странным заголовок поста. И правда, зачем в здравом уме тормозить выполнение запросов на сервере?

Я вот отвечу: «Чтобы проверить как работает интерфейс программы-клиента во время длительных запросов». Такая задача возникла предо мной во время реализации импорта структуры базы для нашего ER-дизайнера.

Интерфейс программы, по моему скромному мнению, во время длительных запросов должен обеспечить три аспекта:
  1. Радовать глаз пользователя всякого рода статистикой и анимацией(?).
  2. Не дать пользователю нажать или сделать что-то не то.
  3. С другой стороны, обязательно дать возможность остановить длительный процесс.


Чем же будем тормозить?
Total votes 17: ↑12 and ↓5 +7
Comments 14

7 рефакторингов для больших ActiveRecord — моделей

Reading time 9 min
Views 13K
От переводчика: предлагаю вашему вниманию вольный перевод статьи из блога Code Climate под названием 7 Patterns to Refactor Fat ActiveRecord Models.
Code Climate — мощное средство анализа качества кода и безопасности Ruby on Rails — приложений.

Введение


Когда разработчики начинают использовать Code Climate для улучшения качества их Rails-кода, им приходится избегать «распухания» кода их моделей, так как модели с большим количеством кода создают проблемы при сопровождении больших приложений. Инкапсуляция логики предметной области в моделях лучше, чем помещение этой логики в контроллеры, однако такие модели обычно нарушают Принцип единственной обязанности (Single Responsibility Principle). К примеру, если поместить в класс User все что относится к пользователю — это далеко не единственная обязанность.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Comments 12

vkontakte_api: ruby-адаптер для ВКонтакте API

Reading time 7 min
Views 28K
В начале этого года мне понадобилось работать с API ВКонтакте из rails-приложения. Увы, я не нашел сколько-нибудь устраивающего меня гема: где-то меня принуждали писать названия методов в camelCase (что в ruby-коде выглядит неестественно), где-то — обязательно проходить авторизацию через библиотеку (при том, что я использовал omniauth) и вообще везде для обращений к API использовался захардкоденный Net::HTTP, блокирующий реактор эвентмашины, на которую я тогда прицеливался. Также в плане документации почему-то все было очень грустно, и приходилось постоянно читать исходники.

Так появился на свет vkontakte_api. Рельсовый проект, послуживший поводом для написания данной библиотеки, уже успел почить — но гем живет и продолжает развиваться, в июле достигнув версии 1.0 (которая послужила поводом для значительных изменений). Используя faraday, библиотека поддерживает вызов любых методов API, загрузку файлов на сервера ВКонтакте и опциональную авторизацию, не принимая за программиста решения, упомянутые в предыдущем абзаце.

Посмотрим, как работать с API с помощью vkontakte_api. В качестве примера сгодится несложное веб-приложение, отображающее на странице ленту новостей (API-метод newsfeed.get), список друзей (friends.get) и групп (groups.get) пользователя, прошедшего OAuth2-авторизацию. А выглядеть это будет примерно так:


Читать дальше →
Total votes 43: ↑40 and ↓3 +37
Comments 27

7 паттернов рефакторинга толстых моделей в Rails

Reading time 6 min
Views 29K
Толстые модели сложны в поддержке. Они, конечно, лучше, чем контроллеры, захламленные логикой предметной области, но, как правило, нарушают Single Responsibility Principle(SRP). “Всё, что делает пользователь” не является single responsibility.
В начале проекта SRP соблюдается легко. Но со временем модели становятся де-факто местом для бизнес-логики. И спустя два года у модели User больше 500 строчек кода и 50 методов в public.
Цель проектирования — раскладывать растущее приложение по маленьким инкапсулированным объектам и модулям. Fat models, skinny controllers — первый шаг в рефакторинге, так давайте сделаем и второй.
Второй шаг
Total votes 38: ↑35 and ↓3 +32
Comments 27

Делаем админпанель для MySQL и MongoDB на Node.js

Reading time 5 min
Views 27K

Хотим «phpMyAdmin» (читай web GUI) для ноды


Отсутствие универсальных веб-интерфейсов для управления распространенными СУБД, несколько усложняет освоение Node.js, а разворачивать рядом другой веб-сервер и другой язык с инфраструктурой, ой как не хочется. Открывать порты и управлять базами, подключаясь с другого сервера или со своего рабочего компьютера — это и неудобно и есть соображения безопасности. Поэтому мы решили включить такой инструмент в платформу для веб-приложений Impress, которую анонсировали, о которой я немного писал и которая доступна в открытом коде для всеобщей пользы. Задумка такая: реализовать простой и удобный унифицированный интерфейс для СУБД, которые чаще всего применяются в связке с Node.js, позаботиться о быстром развертывании (просто скопировать папку) и независимости от среды. В бета-версии уже поддерживаются MySQL, MongoDB и в скором времени очередь дойдет до PostgreSQL и Oracle.
Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Comments 22

Поддержка мультиязычности в веб-проектах — базовые варианты реализации

Reading time 4 min
Views 52K

Занимаясь проектами связанными с веб-разработкой я сталкивался с различными вариантами реализации подержки нескольких языков для сайтов, порталов и веб приложений. Здесь я описал базовые варианты реализации архитектуры БД, которые мне встречались чаще всего.
Думаю для новыичков в веб-разработке эта статья окажется полезной, а тех кто уже имет опыт построения мультиязычных систем приглашаю для обсуждения тех вариантов, которые вы предпочитаете.
Читать дальше →
Total votes 36: ↑28 and ↓8 +20
Comments 34

Всё, что вы хотели знать о динамическом программировании, но боялись спросить

Reading time 12 min
Views 232K
Я был крайне удивлён, найдя мало статей про динамическое программирование (далее просто динамика) на хабре. Мне всегда казалось, что эта парадигма довольно сильно распространена, в том числе и за пределами олимпиад по программированию. Поэтому я постараюсь закрыть этот пробел своей статьёй.

# Весь код в статье написан на языке Python

Основы


Пожалуй, лучшее описание динамики в одно предложение, которое я когда либо слышал:

Динамическое программирование — это когда у нас есть задача, которую непонятно как решать, и мы разбиваем ее на меньшие задачи, которые тоже непонятно как решать. (с) А. Кумок.
Читать дальше →
Total votes 110: ↑100 and ↓10 +90
Comments 33

Несколько интересностей и полезностей для веб-разработчика (выпуск 2)

Reading time 3 min
Views 82K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Webflow



С помощью данного сервиса вы сможете сверстать кроссбраузерный отзывчивый макет за 55 минут. Очень красивый и удобный интерфейс. Идеальное решение для веб-дизайнеров, 26 000 из которых уже используют Webflow. Для создания двух проектов сервис бесплатный, а в дальнейшей перспективе вас ждут вполне демократичные цены. Инструмент реально «крутой».

Если Вам GUI для верстки не комильфо сам по себе как для меня, все равно рекомендую зарегистрироваться и экспортировать парочку responsive макетов. А еще есть простой генератор отзывчивого лэйаута и Responsive Patterns.

Parallax.js


Функциональный и простой инструмент для создания параллакс эффекта.

Читать дальше →
Total votes 124: ↑114 and ↓10 +104
Comments 27

Заовнил, вонзился, запилил: словарь IT-шника

Reading time 5 min
Views 97K
Как часто друзья и родственники, не связанные с IT, просили вас рассказать, что нового на работе, а вы, увлекаясь, начинали говорить вроде на русском, но совершенно непонятном для них языке? Мы создали наш словарь терминов, в который вошли как внутренний сленг отдельных проектов, так и достояние широкой общественности. Надеемся, эта компиляция поможет айтишникам при необходимости выразить свои мысли на языке маглов, а неайтишникам – понять, что айтишники несут. Ну и просто повеселит всех. Ведь пятница!

Про код и изменения





Код добра – программный код, очевидно содержащий непоправимые улучшения.
Котятоемкий код — очень некрасивое техническое решение. Выражение обязано своим происхождением предположению, что каждый раз, когда программист пишет строчку некрасивого кода, бог убивает котенка.
Непоправимо улучшить – запилить годное, но не до конца проверенное изменение функционала. Синоним — необратимо улучшить.
Мясной коммит (ковровый коммит) – правка, судя по количеству и характеру изменений, наверняка содержащая непоправимые улучшения.
Тупач – очень срочная задача, результаты работ по которой должны попасть в бранч для выкатываемой версии. Образовано от to patch.
Минорный тупач – задача горит – сильнее некуда, но уж очень мелкая.
Глубокий ToDo Later — (отправить задачу в глубокий тудулейтер) статус задачи в таск-трекере отложена на неопределенный срок.
Подпереть костылями – реализовать функциональность за счет непредусмотренного временного решения.
Шрапнельные правки – огромное количество мелких правок по всему проекту, которые очень сложно оттестировать.
Скриптюня — очень классный скрипт, экономит кучу времени, практически лучший друг оператора.
Читать дальше →
Total votes 280: ↑173 and ↓107 +66
Comments 97

RailsClub'Moscow 2012 – 15 сентября в Москве. Конференция ruby / ruby on rails разработчиков

Reading time 2 min
Views 2.6K

15 сентября 2012 в Москве на территории центра Digital October состоится 11-ая конференция веб разработчиков на Ruby и Ruby On Rails – RailsClub’Moscow 2012.

RailsClub’Moscow 2012 соберет вместе ведущих российских и известных иностранных Ruby разработчиков, которые поделятся с участниками конференции своими знаниями и опытом, обсудят новинки разработки, расскажут о возникших проблемах в работе и методах их решений.

На RailsClub 2012 будем обсуждать проектирование, разработку, тестирование, отладку, оптимизацию под большие нагрузки, масштабирование ruby on rails проектов. Также затронем темы: управления конфигурацией, деплоя, администрирования больших веб проектов.

В этом году в качестве докладчиков к нам приедут знаменитые ruby звезды.

Свое участие на данный момент подтвердили:
Steve Klabnik (США), автор «Designing Hypermedia Apis» и обладатель Ruby Hero Award 2011;
Xavier Noria (Испания), участник Rails core team и обладатель Ruby Hero Award 2010;
Wynn Netherland (США), разработчик GitHub, соавтор @thechangelog и книги «Sass, Compass»;
Dirkjan Bussink (Голландия), разработчик rubinius и datamapper;
Sau Sheong Chang (Сингапур), автор книг “Ruby on Rails Web Mashup Projects” и “Cloning Internet Applications with Ruby”, директор прикладных исследований в HP Labs.

Выступления иностранных спикеров будут синхронно переводиться на русский язык.

Регистрация и оплата участия в конференции — railsclub.timepad.ru/event/29192

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 7

Information

Rating
Does not participate
Location
Калуга, Калужская обл., Россия
Date of birth
Registered
Activity