Что такое SOLID?

мая 4, 2013  |  Published in Новости

SOLID — это аббревиатура, в которой содержатся 5 принципов ОО-дизайна.
  • S (SRP) — Single Responsibility Principle
  • O (OCP) — Open/Closed Principle
  • L (LSP) — Liskov Substitution Principle
  • I (ISP) — Interface Segregation Principle
  • D (DIP) — Dependency Inversion Principle

WTF do you mean?

Read the rest of this entry »

Tags: , ,

Let’s use PostgreSQL #1 Installing PostgreSQL on Ubuntu 12.10 & Getting started

января 8, 2013  |  Published in In English, PostgreSQL, Базы данных  |  1 Comment

postgresql_logoA few months ago I throught about migrating from MySQL to PostgreSQL. PostgeSQL has more features and is fast, stable and secure relative DB. And it is also free, open-source and has many different extensions. The main drawback of PostgreSQL is that it is more complicated than MySQL, so you should spend more time to learn how to work with it or hire an admin.

In this series of articles I want to describe how to drop MySQL, start to use PostgreSQL and how to be happy with this powerfull solution without hiring a DBA (only if you doesnt work with big and high-loaded projects).

Let’s start by installing PostgreSQL on your development machine.

I work on Ubuntu Linux 12.10 so I will describe process of installing PostgreSQL on Ubuntu 12.10. To install PostgreSQL 9.2 on your Ubuntu you should use this command in your terminal:

$ sudo apt-get install postgresql-9.2

After installing PostgreSQL you can check PostgreSQL version on your machine:

$ psql —version
psql (PostgreSQL) 9.2.2

So now you have PostgreSQL installed on your Ubuntu 12.10 machine. Read the rest of this entry »

Tags: , ,

<irony>Майкл Хартл — самый ужасный программист в мире!</irony>

ноября 18, 2012  |  Published in Best Practices, Уголок философа  |  7 Comments

Не раз ко мне обращались с какими-то вопросами, вроде помоги найти ошибку или что-то вроде того, когда я находил в годе копрокод, точнее, когда я находил, что весь код в целом — копрокод, то мне в лицо бросались ссылкой на ставшую популярной книгу Майкла Хартла. Последний такой случай сподвиг меня на написание этой философской статьи, которую многие по праву могут назвать водой, а автора которой мудаком, который должен облить себя бензином и поджечь.

Собственно из-за того бросания в меня ссылками на Хартла и родилось это название <irony>Майкл Хартл — самый ужасный программист в мире!</irony>. Я надеюсь, что использование тега <irony></irony> спасет меня от «Ты сам мудак! Хартл — няша!» ибо, как показывает практика, людей обидчивых и не понимающих иронию очень много. К Майклу Хартлу я отношусь очень хорошо, он написал хорошую книгу, которую я рекомендовал бы к прочтению всем и хотя у меня есть несколько мелких разногласий с автором, я все же считаю его отличным программистом, а его книгу обязательной для прочтения. Read the rest of this entry »

Tags: , , , ,

О культе карго и хранении денег

ноября 15, 2012  |  Published in Best Practices  |  7 Comments

Вы должно быть знаете о культе карго (cargo cult)? Если нет — в Википедии есть замечательная статья. Культом карго также стало модно называть любое подражание без понимания сути. Члены культа карго подражают человеку или группе людей, которые добились успеха в чем-либо, рассчитывая на то, чтобы добиться аналогичных результатов от своего повторения.

Разумеется, подражание не есть плохо, но когда это глупое подражание, подражание без понимания сути, тогда это подражание становится глупостью и может сыграть с подражающим злую шутку. Почему? — Потому, что любое следования заповедям — это глупость. Поведение должно быть ситуативным и осмысленным, а не основываться на каких-либо догмах.

Если спросить — Чем тушить пожар? — Большинство не задумываясь ответят — Водой. На самом же деле не всякий пожар можно тушить водой. Например, нельзя тушить водой электротехнику, нельзя потушить водой горючие жидкости, например, бензин или керосин и т.д. Водой также нельзя тушить воспламенившиеся щелочные металлы и много-много чего прочего.

Read the rest of this entry »

Tags: , , , , , ,

Self в Ruby

сентября 8, 2012  |  Published in Ruby, Расширения, Уголок философа  |  4 Comments

Честно сказать, достали меня уже вопросом о том, что такое self. Особено странно, что некоторые люди начинают работать с Ruby on Rails не разобравшись с самим языком Ruby. Ну как так можно? А?! Если лень читать книгу на 600 страниц — есть статьи на RubyDev, они не полностью корректные так как я писал их достаточно давно, но в общем достаточно годные, как мне кажется. Если нет желания прочитать краткие статьи, которые я пытался написать более чем понятным новичку языком, то, я думаю, что программирование — это не ваше. Ну да ладно. Напишу отдельную статью о self, хотя то, что такое self много где упоминалось в статьях на RubyDev.

self — это ссылка на текущий объект.

У каждого метода должен быть приемник — на то он и метод, а не функция, а если приемник не указан, то подразумевается, что приемником является self.

Read the rest of this entry »

Tags: , , ,

Tips&Tricks: Установка gem’ов без генерации документации

сентября 5, 2012  |  Published in Ruby Gems, Tips&Tricks  |  5 Comments

Зачем?

Все мы знаем, что при установке gem’ов часто генерация документации занимает куда больше времени, чем сама установка gem’а, при этом никто не пользуется оффлайновой документацией. Зачем открывать новую вкладку и запускать gem server, если вся документация доступна онлайн? Если вы не пользуетесь оффлайн документацией, то зачем засорять ею жесткий диск и тратить время на ожидание ее генерации при установке gem’ов?

Для отключения генерации документации с командой gem install используют флаги —no-rdoc и —no-ri, например, так:

$ gem install rails —no-rdoc —no-ri

Однако есть вариант получше — использовать файл .gemrc в вашей home/ директории.

Просто добавьте в него следующую строку:

gem: —no-rdoc  —no-ri

И вы забудете о генерации документации навсегда!

Tags: , , ,

Tips&Tricks: Превращение строки в константу

сентября 3, 2012  |  Published in Ruby, Tips&Tricks  |  1 Comment

Недавно в статье о Переменных и константах в Ruby я упомянул о том, что из строки можно получить константу используя Kernel.const_get, на что получил в комментариях целых два замечания. Первое касалось того, что следует использовать Object.const_get, вместо Kernel.const_get, а второе касалось того, что нужно учитывать неймспейсы, а потому получение констант из строки несколько сложнее реализовать. Та статья была о другом, потому, я решил добавить отдельную статью в Tips & Tricks о том, как правильно получать из строки константу.

Код выполняющий это действие я решил поместить в метод #constantize, метод называется так же, как аналогичный метод в Rails, и создать для него псевдоним #to_const. Собственно вот его код:

class String
  def constantize
    constants = self.split("::")
    main = Object.const_get(constants.shift)
    constants.inject(main) { |full, nested| full = full.const_get(nested) }
  end

  alias :to_const :constantize
end

Пример работы:

module SuperExtensions
  module MySuperExtension
    class Extension
      def self.hello
        puts "Hello!"
      end
    end
  end
end

klass = "SuperExtensions::MySuperExtension::Extension".to_const
klass #=> SuperExtensions::MySuperExtension::Extension
klass.hello # Hello!

Вот и все! Удачи!

Tags: , , ,

RubyDev Ruby Tutorial > Копирование объектов в Ruby

сентября 3, 2012  |  Published in Ruby, Основы  |  3 Comments

В Ruby переменные — это просто ссылки на объект в памяти. Присваивая переменной значение, вы не самом деле ссылаетесь ей на объект. Присваивая переменной значение — другую переменную вы просто создаете две ссылки на один и тот же объект:

original = {
  :ruby => ["rails", "sinatra"],
  :erlang => ["chicago_boss", "nitrogen"]
}

another_var = original

Одинаковый object_id — значит и переменные ссылаются на один и тот же объект:

original.object_id #=> 72411200
another_var.object_id #=> 72411200

original[:ruby][0] = "Ruby on Rails"
another_var[:ruby][0] #=> "Ruby on Rails"

Для создания нового объекта — копии используют два метода — #dup и #clone. Ниже преведены примеры использования обоих.

Read the rest of this entry »

RubyDev Ruby Tutorial > О переменных и константах

сентября 1, 2012  |  Published in Ruby, Основы  |  5 Comments

Честно говоря я не очень понимаю в чем возникает путаница с переменными в Ruby, однако мне уже не раз задавали вопросы типа: Что такое @-переменная? Что такое @@-переменная? А в чем их разница?

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

В Ruby существует 4 вида переменных и константы.

Read the rest of this entry »

Tags: , ,

Интервью с Ильей «Зайко» Зыкиным о его open-source проектах, frontend и backend разработке

августа 4, 2012  |  Published in Интервью  |  2 Comments

Продолжая традиционную рубрику интервью с разработчиками на RubyDev раз приветствовать в нашей виртуальной студии нового гостя — разработчика на платформе Rails — Илью Зайко.

 

Добрый день Илья. Представься пожалуйста читателям RubyDev.

Илья ЗыкинПривет, Владимир! Ну для начала расставим точки над i. Зайко — это не фамилия, а псевдоним. Прозвище Зайко появилось, что называется “шутки для”, на основе вот этой картинки с зайцем из смешариков, да так и прилипло. На эту тему есть у меня даже фирменный смайл зайца >;0)

По диплому я школьный учитель физики. До того момента, пока не перепрофилировался в Ruby/Rails разработчика я отработал в образовании 5 лет. Только физику не преподавал — с первых дней занимался преподаванием информатики. Сначала в колледже, потом вел частные курсы для школьников при университете. Последние 2 года преподавал в гимназии. Буквально несколько недель назад выпустились ребята у которых я вел информатику в 9 — 10 классах. Рад за них. Говорят последний год информатику вела у них какая-то “грымза” (улыбаюсь).

С момента окончания вуза в 2007 успел поучиться в аспирантуре и послужить лейтенантом в отделе Информационного обеспечения в МЧС РФ (тоже кстати хороший опыт).

В августе 2011 я оставил образование и начал работать удаленно Ruby разработчиком вместе со своим близким другом.

В январе 2012 меня пригласили на постоянную работу в Петербург работать над фронтендом нового проекта по бронированию авиабилетов. Сейчас подобные сервисы очень популярны и востребованы, и очень надеюсь, что у нас все получится.

В свободное время я занимаюсь не только программированием, но и кулинарией. Точнее занимается жена, а я в меру сил ей не мешаю. Мы с женой ведем кулинарный блог — open-cook.ru Где публикуем рецепты домашней кухни, которые может приготовить каждый. Многие разработчики начинают изучение руби и рельса с создания блога или кулинарной книги, но видимо мы с женой пока что единственные, кто решил выпустить наш маленький кулинарный проект в мир. Наша домашняя кухня открыта для вас, уважаемые Rails разработчики, по адресу http://open-cook.ru!

Read the rest of this entry »