Новости

Распечатка доклада в Харькове

декабря 5, 2014  |  Published in Best Practices, Tips&Tricks, Новости, Уголок философа

Подготовил доклад для встречи организуемой DataArt в Харькове: «Философия систем сквозь призму разработки ПО», но, увы, не смог его рассказать так, как положено. С этой целью и выкладываю шпоргалку (без редактирования, как есть) для того, чтобы хотя бы из нее вы почерпнули ту информацию, которой я хотел бы поделиться. Номера пунктов — это номера слайдов в презентации. Презентация лежит здесь: system-philosophy.

2.

Тема моего доклада: Философия систем сквозь призму разработки ПО.

Что есть Философиия систем? Философия систем — это научно-философский труд над которым я начал работать совсем недавно и закончу совсем не скоро. Тем не менее мне уже сейчас есть чем с вами поделиться.

К сожалению, время отведенное на подготовку к докладу и на сам доклад сильно ограничены, потому я ограничусь введением в философию систем и парой важных рекомендаций построения надежных систем, которы применимы не только к языку Ruby, но к любому другому языку программирования.
3.

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

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

Что же касается философской составляющей, то она в большей мере проявляется в самом стиле труда, а не в содержании. Сухие математические выкладки меня прельщают в меньшей мере, нежели красивый литературный слог.
Таким образом Философия систем ограничивается коротким и прагматичным объяснением: Все есть система.
4.

Целое больше, чем сумма его частей. — заметил Аристотель.

Это целое состоящее из множества частей и является системой. Система — это не просто множество компонентов вхожих в нее, но скорее отношения между этими компонентами.
5.

Фундаментальным предикатом всего сущего есть то, что это нечто существует. Если нечто способно существовать на протяжении хотя бы незначительного промежутка времени после того, как породившие его причины исчезли, то такой объект представляет интерес для нас в силу другого свойства — устойчивости. Так как второе начало термодинамики никто не отменял, то объект подвергается разрушительному воздействию среды, а потому способен существовать лишь противодействуя этому воздействию.

Можно сказать что рассматриваемый нами объект — это система, а среда — это суперсистема, то есть система, компонентом которой является рассматриваемая система. Внутри суперсистемы А, система А1 пребывает в некоторых взаимоотношениях с другими вложенными системами: А2, А3, …, Аn, и эти взаимодействия потенциально опасны.

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

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

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

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

В некоторых случаях все может быть с точностью наоборот. Относительная устойчивость может обеспечиваться тем, что энергия израсходована, как например в случае потенциальной энергии шарика, что скотился в ямку. Шарик и ямка представляют собой систему. При приложении незначительной силы к шарику, он будет несколько вскатываться вверх, но затем вновь скатываться на прежнюю позицию. Система существует до тех пор, пока сила притяжения шарика и сила трения достаточно велики в сравнении с силами внешних воздействий.

Вы слышите об исключениях и слышите слова «в некоторых» и как неудобно мне дается категоризация систем. Позже вы узнаете почему так.
7.

У нас возникает больше оснований говорить об активном противодействии внешним изменениям в случае самоорганизующихся или саморегулирующихся систем.

Чаще всего эти понятия применяют в отношени биологических систем, например, клетки, органа или целого организма, но сфера их употребления не ограничивается лишь биологией.

8.

В чем разница между саморегуляцией и самоорганизацией?

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

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

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

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

В противовес самоорганизации и саморегуляции существуют организация и регуляция, то есть управление. Самоорганизующаяся и саморегулирующаяся система (объект управления) начинает противостоять субъекту управления. Так, например, программный продукт противостоит разработчику, даже не смотря на то, что часть логики его поведения была заложена самим разработчиком.

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

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

 

10.

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

Все это характерно для любых систем в том числе и абиотических.
11.

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

Так, применяя адаптивную разработку, мы не допускаем разрушительных волн — цунами.
12.

Опускаясь на уровень ниже, к системе — самому коду приложения, важно знать о таком правиле организации систем, как правило максимальной изоляции.

Клетку от вредного воздействия из вне защищает мембрана, человека защищает кожа, Землю защищает магнитное поле и атмосфера.

Так как система не может быть закрытой абсолютно изолированной и даже если могла бы, то пользы для нас от этого было бы не много, то мы обязаны разработать протокол взоимодействия этой системы с внешним миром.

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

Боги программирования низпослали нам принципы именуемые SOLID.

Принцип единственной ответственности говорит о том, что компонент системы должен отвечать за решение лишь одной задачи.

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

Принцип подстановки Барбары Лисков говорит о том, что компонент B, наследуемый от компонента A, должен быть способен заменить компонент А. Другими словами, он обязан реализовывать тот же интерфейс. Этот принцип перекликается с предыдущим.

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

Принцип инверсии зависимостей говорит о том, что система должна быть разделена на слои и более высокие слои не должны зависеть от более низких. Абстрагирование от базы данных, как от детали является одним из примеров принципа инверсии зависимостей.

Другой важный принцип низпосланный нам богами имеет название TDA. Эта аббревииатура расшифровывается как: Tell, do not ask, то есть: говори, а не спрашивай.

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

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

Что до синергетики, то она изначально развивалась на стыке науки и философии ставя перед собой менее практичные и более широкие и абстрактные вопросы, нежали то обычно принято в научной среде. Тем не менее научность синергетики, как и системологии не вызывает сомнениия.
14.

Важным философским и не только философским вопросом является вопрос о том, чем некий объект является на самом деле, без его оценки нами, без существования расстояниями между нами и объектом, то есть постижение вещи в себе, ноумена. Людвиг Витгенштейн говорил о том, что философия существует лишь благодаря несовершенству нашего языка и что нет проблем философии, но есть проблемы языка, которым мы называем вещи и явления. Я же двигаюсь более прагматично. Работая над разработкой той или иной программной системы я постоянно задаюсь вопросами о том, какие сущности, другими словами компоненты мне необходимы и в каких отношениях они находятся. Я отбрасывают вопрос о том, что они есть так как в самом деле он не он глуп. Правильный вопрос должен звучать так: Из чего это состоит? Мы ведь рассматриваем все как систему.

В ответе на вопрос: «Из чего они состоят?» кроется маленькая хитрость.

Дело в том, что человеку свойственно платонизировать, то есть создавать идеальные образы, категоризировать и строить иерархии. Иерархия есть выдумка человеческого ума, а не то, как мир устроен на самом деле. Это упрощение созданное людьми и для людей. Так человек не является иерархией органов. И в обществе нет таких иерархий, какими их нам преподносят.

Одной из ошибок ученых является создание понятия таксона и таксономии, как науки. Они берут отдельные кадры фильма истории и называют их определенными именами. Так один кадр они называют Homo erectus, а другой — Homo sapiens. Но если взять типичного Homo sapiens, его родителя и его потомка, то разница между ними будет так незначительна, то они будут оставаться тем же видом Homo sapiens. И если взять их родственников — ситуация повторится. Так где же проходит черта, переступив через которую организм преобразуется в новый вид? Это похоже на вопрос о курице и яйце, тем не менее ученые продолжают заниматься этим неблагородным занятием — классификацией.

Ответ заключается в генах. Мы должны работать с генами, а не с платоновскими идеальными объектами из метафизического мира. Согласно Платону, если есть человек, то дожно существовать идеальное воплощение человека, а сам человек — лишь жалкая его тень. рТак мы создаем класс Human и наполняем его необходимыми нам свойсвами и методами. И этот класс описывает нечто одно. Будто человек — это просто шарик слепленный из глины. Он и представляет абстрактного человека, а человечностью мы назовем принадлежность к этому классу.

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

Гены — это информация об организме, закодированая в длинные цепочки ДНК.

В царстве бактерий существует такое явление, как конъюгация, то есть обмен генами. Если человек наследует геном от родителей + происходит небольшая их мутация за счет информационного шума, то бактерии, будучи гораздо более примитивными существами способны собирать свой геном как конструктор взаимодействуя с другими бактериями. Могут ли в таком случае таксономисты четко определить вид и построить иерархию, например, родословную? Нет.
15.

Другой важной концепцией является концепция мема предложенная Ричардом Докинзом. Мем — это аналог гена в информационном пространстве. Мем — это некий смысл. И если мы будем рассматривать те или иные идеологии достаточно внимательно, то обнаружим, что они не являются чем-то цельным, но состоят из множества мемов.
К чему это я?

Я о том, что для большего удобства разработки нам следует использовать концепции аналогичные генам и мемам. Некая сущность в разрабатываемой системе должна быть лишь собранием тех или иных «генов». На ум сразу приходят примеси реализуемые в Ruby через подмешивание модулей, или trait’ы в Scala. Это отличная практика переодически выность код из классов в модули. Я обычно таким модулям даю окончание -able, например:
Authenticable, Logable, и т.д.

Так же, как и в случае с генами мы должны иметь инструменты включения и отключения тех или иных модулей.
В случае с генами на их включение или выключение влияет окружающая среда. Таким образом, вероятно, на включение или отключение тех или иных примесей в компонент системы должна влиять система, которой принадлежит этот компонент. В своем коде я использую сущности именуемые сервисами. В них я инкапсулирую логику определенного взаимодействия нескольких сущностей и по этому они являются отличным претендентом на звание «среды», которая может влиять на включение и выключение генов.

Другой возможный вариант, который может использователься параллельно — это минимизация использования наследования в пользу композиции. Целое мы разбиваем на компоненты. В ксенотранспланталогии популярным опытом является пересадка сердца ГМ свиньи человеку. За исключением того, что так и не удалось добиться того, чтобы чужеродное сердце прижилось, идея отличная ибо функциональность сердца свиньи и человека идентичны.

В случае с программным обеспечением, которое является гораздо более простой системой, чем даже организм глупого моллюска с всего-то 3000-5000 нейронов, «сердце» является достаточно абстрактным компонентом для того, чтобы иметь возможность использовать его как в свинье и в обезьяне или в человеке.

 

 

RailsClub Moscow 2014 состоится 27 сентября, в уютном зале DigitalOctober.

сентября 7, 2014  |  Published in Новости

состоится 27 сентября, в уютном зале DigitalOctober.

 logo_rails__b_on_w

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

 

       В программе

foto-frame Аарон Паттерсон, член Ruby и Rails core team, топ 1 контрибьютор на сегодня, RubyHero 2010. Человек, который определяет развитие языка, и очень харизматичный спикер.

Не зря мы расписывали Аарону, как хорошо ему будет в Москве (). Тема выступления сейчас уточняется.

Божидар Батсов, CTO Tradeo, автор Rubycop и редактор Ruby и Rails style guides.

The Elements of Style in Ruby

Речь пойдет о том, что же такое стиль, чем хороший стиль отличается от плохого, как придерживаться единого стиля в коде. Как связаны стиль и язык и как эволюционируют стили в коммьюнити Ruby Style Guide.

 

Джонас Никлас, автор фреймворка для тестирования Capybara и популярных библиотек Pundit, Turnip и CarrierWave. Ruby Hero 2011

Concurrent systems in Ruby

Джонас расскажет, как Ruby меняется к лучшему в аспектах работы с concurrenсу — больным местом многих нагруженных проектов. Он продемонстрирует несколько разных вариантов, включая классический mutex/condition variable combo, Node-style evented IO, Clojure-style compare-and-set и Erlang-style actors. Покажет, как их можно использовать в Ruby и как Ruby дает более широкий выбор по сравнению с другими платформами.

 

Эрик Майклс-Обер, участник open-sourсe проектов RailsAdmin, Thor и Twitter gem. Ruby Hero 2014 и разработчик в SoundCloud, Берлин.

Writing Fast Ruby

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

 

Сэнди Метц, автор «Practical Object-Oriented Design in Ruby», обладатель Ruby Hero Award 2013

All the Little Things

Между теорией ООП и практикой лежит большая пропасть. Многие приложения содержат огромные классы из длинных методов и неуклюжих условий. Их сложно понять, неудобно использовать повторно и очень дорого изменять. В этом выступлении Сэнди возьмет уродливый кусок кода, который содержит много условий, и перепишет его так, что получится всего несколько простых объектов. А слушатели познакомятся с понятной стратегией, которую каждый сможет использовать для улучшения своего кода.

 

Равиль Байрамгалин, Evil Martians, ведущий разработчик Oh My Stats, контрибьютор больше 40 опенсорсных проектов.

Big Data и Ruby

Big Data — не только модные слова для стартап буллшит-бинго, но и реальная головная боль для многих инженеров в интернет-бизнесе. Для масштабирования вычислений на несколько машин есть множество Big Data фреймворков. Чтобы лучше понять их особенности и сделать правильный выбор, Равиль расскажет:  зачем необходима локальность данных,  почему эти фреймворки построены на dataflow,  в чем заключается лямбда архитектура, как ее упростить. И о том, как в Oh My Stats эспериментировали с реактивной абстракцией для вычислений. Среди конкретных фреймворков будут упомянуты ставшие уже классическими Hadoop и Storm (и как их использовать из Ruby), а также в чем преимущества модных Summingbird, Spark и парочки других альтернатив.

Александр Балашов, тимлид в Evrone

Интеграция всех аспектов разработки в единый процесс

Разработка веб-приложений включает в себя много аспектов. Это управление задачами, внесение изменений в код, повышение качества кода, тестирование и так далее. Каждому из них нужно уделять внимание, но не всегда хватает времени и дисциплины, чтобы это делать. Чтобы это стало привычным делом и каждая новая фича проходила контроль по всем аспектам нужно создать интегрированный процесс разработки, который позволит это сделать. Как создать процесс, в котором каждый шаг важен и нужен, Саша расскажет на конкретном примере.

Кстати, мы решили разнообразить формат и помимо традиционных получасовых докладов предлагаем выступить в серии lightning talks — с пятиминутным техническим докладом, в котором можно поделиться методологической находкой, полезной тулзой или презентовать свой open-source проект. У нас уже есть 4 отличных LT, темы которых мы анонсируем позже

Мы еще принимаем заявки в программу конференции. Есть о чем рассказать —

Англоязычные доклады будут идти с качественным синхронным переводом на русский язык (как и обратно)

Что кроме докладов:

  • Много профессионального общения.
  • Вкусная еда и отличный кофе.
  • Веселые движухи от спонсоров и организаторов в перерывах.
  • Зажигательное афтепати, на которой у вас будет возможность неформально пообщаться с участниками и спикерами.

Присоединяйтесь, не пожалеете!

Цена билета до 10 августа — 7500

Успевайте

Партнеры проекта:

Генеральный спонсор —

Золотой спонсор —

HR -партнер —

Организаторы — и

Площадка мероприятия —

Svitla Systems приглашает на RubyC-2014

апреля 11, 2014  |  Published in Новости

Svitla Systems приглашает на RubyC-2014

31 мая – 1 июня 2014 года в Киеве пройдет вторая конференция RubyC,
посвященная Ruby и Ruby on Rails

Svitla Ruby Conference 2014

Посетить будет полезно тем, кто хочет:

  • пообщаться с лучшими рубистами со всего мира;
  • увидеть лучшие варианты практического использования Ruby на примере реальных проектов;
  • услышать все о последних трендах в Ruby и Ruby on Rails;
  • с пользой провести два дня среди талантливых, умных людей, набраться новых идей и почувствовать вдохновение для дальнейших достижений .

В этом году RubyC вновь собирает звездный состав докладчиков из Америки, Европы и стран СНГ. Среди приглашенных гуру: Стив Клабник (США), Бен Ловелл (Великобритания), Хавьер Рамирес (Великобритания), Александр де Оливера (Бразилия), Дэвид Хеннер (США), Джереми Эванс (США), Константин Теннахард (Германия), а также Богдан Гусев (Украина), Тимофей Цветков (Россия), Евгений Пирогов (Украина).

Подробнее о спикерах и их темах можно узнать на сайте .

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

Полезности:

  • Продажа билетов уже открыта на сайте конференции!
  • Место проведения конференции: БЦ «ИНКОМ», ул. Смоленская, 31-33, Киев.
  • Рабочие языки конференции – английский, русский, украинский.
  • Присоединяйтесь к группам RubyC на и .

Впервые RubyC состоялась в 2011 году, став одним из наиболее значимых событий для руби-сообщества того года, поскольку собрало вместе не только высококлассных докладчиков из разных уголков земного шара, но и около 200 посетителей из Украины, России, Беларуси, Латвии и США . Спикерами RubyC среди прочих стали: Райан Бигг (Австралия), Стив Клабник (США), Джонас Никлас (Швеция), Дарси Лейкок (Австралия), Алексей Найден (Россия) и многие другие. Подробнее о том, как прошла первая конференция RubyC можно узнать .

Организатор RubyC — , американская аутсорсинговая компания, которая занимается разработкой приложений на Ruby, .NET, PHP, Java, Magento, Flash, а также мобильных приложений. Офисы компании находятся в Киеве, Львове, Харькове, Севастополе, Черкассах, Черновцах и Тернополе. Головной офис располагается в Сан-Франциско.

Контакты:

PR менеджер
Надежда Береговая
n.beregova@svitla.com
+38 097 852 86 71

Tags:

Le Roi est mort, vive le Roi!

ноября 22, 2013  |  Published in Новости

Будем честны, RubyDev — весьма скучный блог, я имею ввиду, что в нем нового? Введение в Ruby, введение в Rails, ничего принципиально нового и заставляющего включить мозг. Просто справочная информация для новичков, за что они довольны, но меня не слишком прельщают похвалы новичков.

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

Ам-м-м… Думаю, достаточно аналогий. RubyDev больше не будет блогом для новичков. Я собираюсь опубликовать новый, исправленный и действительно «православный» учебник по Ruby и это будет единственным моим подарком тем, кто называет себя новичками в программировании или junior’ами.

Мне не интересно писать введения, но по Ruby действительно отсутствует качественная литература. Не только по Ruby. Я имел удовольствие прочесть несколько книг по различным языкам программирования: Scala, Java, Erlang, Clojure, Ruby, Rails, JavaScript, но я не сумел найти среди них таких книг, которые мне бы понравились, разве что только книги Николаса Закаса. Это не камень в огород их авторов, точнее не камень в огород авторов, как разработчиков, но камень в огород авторов, как, эм…, авторов. Изложение либо скучно, либо непонятно, либо это просто рассказ о синтаксисе языка. В общем унылая тягомотина на 600-800 страниц, которая годится лишь для тренировки силы воли. Таким образом я постараюсь написать новый учебник по Ruby таким, чтобы он был интересным и учил не только синтаксису, но и вообще программированию.

RubyDev больше не будет блогом для новичков еще и по той причине, что нынешнее состояние блога несколько дискредитирует меня. Это и огромное количество ошибок в статьях, и уровень, на который они рассчитаны. Создается впечатление, что я сам вечный новичок. Да, все мы ученики от рождения и до смерти, но вы понимаете о чем я.

Статьи о Rails? Признаться, я не люблю Rails. Я был восхищен его возможностями после перехода с PHP, но сейчас я вижу в Rails много неудачных решений. Чтобы быть совсем честным, что аналогичными недостатками изобилует абсолютное большинство фреймворков того же назначения. Я работаю с Rails и они позволяют мне заработать на хлеб, но Rails — это лишь инструмент. Как плотник не обязан обожать молоток, а сантехник испытывать нежные чувства к вантузу, так и я остаюсь хладнокровен к Rails. Мне не интересно писать учебник по Rails. У Rails есть хорошая документация по API и Rails Guide. Тем не менее у меня есть идея написать несколько статей критикующих Rails. Я напишу об антипаттернах в коде и API самого фреймворка и об антипаттернах тех, кто его использует.

После того, как я напишу первые 7 статей из учебника Ruby, я начну их публиковать по одной в день, а все старые статьи будут удалены (сейчас их 209).

Что такое 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: , ,

Rubydev Magazine

июля 22, 2012  |  Published in Новости

Будущее Rubydev, если оно будет, будет светлым. У меня есть следующие идеи по развитию проекта:

1. Не блог, но журнал. Хочу сделать из Rubydev что-то вроде SmashingMagazine, но с ориентацией на backend. Разумеется, будут статьи по frontend технологиям, но это т.с. только 30% от основного контента. Не очень люблю статьи о дизайне и юзабилити, в них очень много воды и очевидных вещей, такое чувство, что их пишут только для того, чтобы инкрементировать счетчик записей и что-бы малоопытные люди могли в комментариях небоясь раскрыть свою малоопытность общаться буд-то специалисты на абстрактные темы вроде каким цветом сделать кнопку для продажи и какой шрифт лучше — serif или sans. Ну и разумеется, новый Rubydev будет написан на Rails.

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

2. На Rubydev появятся обсуждения или форум, что в принципе одно и то же. Любой зарегистрированный пользователь сможет задать вопрос касательно веб разработки и получить ответ.

Есть еще много разных идей для разделов нового RubyDev, но я оставлю их пока в тайне потому, что не уверен в том, что все они будут реально востребованы и что у меня хватит времени на реализацию всех своих задумок.

Для реализации всего этого мне необходим дизайнер, который позже будет по-совместительству ведущим редактором по frontend технологиям. Если вы считаете себя хорошим или крутым дизайнером и frontend разработчиком — присылайте ваши работы или ссылки на них на egotraumatic{a}gmail.com. Если я вам пришлю ответное письмо в течении 2 дней, то это значит, что я заинтересовался вашим соучастием в разработке нового Rubydev.

Ответы на некоторые вопросы

октября 31, 2011  |  Published in Интервью, Новости

Это я1. ВВМ, почему на RubyDev ты начал писать статьи по Си?

RubyDev — это мой личный блог, который почему-то обрел стилистику исключительно технического блога. Если я найду совершенный рецепт стейка я обязательно напишу и о нем. Это я так тонко намекаю на то, что пишу то, что хочется, хотя ваше мнение меня также очень интересует, но интересует мнение о том, что писать, и немного о том, как писать, но не что не следует писать.

Статьи по Си я начал писать потому, что мне давно был интересен Си и я начал его активно изучать, и делюсь своими познаниями с вами мои дорогие читатели. Кроме того, я не нашел хороших руководств и книг по программированию на Си. K&R я не считаю хорошей книгой, как и 99.99% всей технической литературы. Подавляющее количество авторов пишут очень скучно и очень непонятно. В этом нет вины авторов книг, в этом наверное, виновата огромная пропасть между теми, кто пишет и теми, что читает. Это пропасть я и стараюсь преодолеть. Мой стиль — это достаточно краткие и максимально понятные статьи, это похоже на то, как розовые фламинго кормят птенцов отрыгивая уже пережеванную и частично переваренную пишу для ее большего усвоения птенцами. В статьях я даю основы — 70-90% от того, что есть, остальные 10-30% можно легко найти в Google зная основы. Это похоже на то, как мастер показывает ученику несколько раз удар ногой, а остальные 5000 раз ученик этот удар повторяет сам оттачивая его до совершенства.

2. Что там с работой?

Первая ступень преодолена — я осознал, что я лентяй и что я не соответствую некоторым требованиям. Сначала я думал, что это плохое знание JS и RSpec, но на самом деле это лень выполнять монотонную работу. Я надеюсь люди которым я некоторое время морочил голову по поводу работы не проклинают меня за то, что я на все забил и сейчас я вольный поднебесный странник и иду туда, куда дует ветер ведь так проще.

Если серьезно, то JS и BDD следует очень активно наверстывать, чтобы не казаться полным идиотом в глазах работодателя, а еще нужно очень круто разобраться в Rails (ждите отличных статей по Rails 3.1).

Из устройства на работу я сделал несколько выводов:

—. Прокрастинацией больны все. Если ты не супер гуру, то тебя заставят писать спеки, тесты и заниматься прочей скучной фигней потому, что этим больше никто заниматься не хочет.

—. Даже если ты супер гуру — спеки и тесты нужно уметь писать ведь не всегда найдется кто-то на кого можно спихнуть эту работу и тебя могут заставить это делать при устройстве если ты этого делать не умеешь.

—. Любая работа — это только работа. Все так банально, серо и уныло, что хочется … Хм… Я чувствую себя эмо-программистом. В общем работа — это суровая штука и пока ты не готов — лучше туда не суйся. Это можно сравнить с досвадебными отношениями — нужно все перепробовать и вдоволь нагуляться перед тем, как принять семейный образ жизни.

—. Любой гуру написал говнокода в сотни раз больше чем вы. Не стесняйтесь писать копрокод, убейте в себе перфекциониста, пускай он отравится миазмами исходящими от вашего кода. Пишите, пишите и еще раз пишите. Делайте велосипеды, фреймворки и операционки! Это весело и полезно!

3. Я что-то слышал про RubyDev 2.0. Что это?

RubyDev 2.0 это религиозно верный RubyDev, который очищается от нечистот именуемых PHP и WordPress и переписанный на Rails 3.1. Кроме блога, очевидно, будет еще несколько плюшек в виде простого и удобного форума, доски объявлений и т.д. В общем RubyDev социализируется и коммуннизируется и станет скорее сообществом чем блогом.

4. Почему так много ошибок в тексте?

Без ошибок читать скучно, однажды я написал вместо «сперва» слово «сперма», что вызвало бурное обсуждение.

На самом деле я набираю тексты в продвинутом блокноте с подсветкой, который называется Kate и который не подсвечивает ошибок как то делает MS Word. Кроме того, я не перечитываю статьи кроме интервью ведь более скучным занятием чем чтение того, что сам написал является только чтение того, что сам написал дважды. Интервью приходится перечитывать потому, что в них нужно внести правки, часто я задаю вопросы очень кратко и нужно в окончательном варианте их несколько растянуть для более длительного смакованием моей несравнимой стилистикой письма (это сарказм), кроме того, переводы англоязычных интервью я делаю в два подхода: сначала я перевожу практически буквально, затем я редактирую переведенный текст так, чтобы его могли читать адекватные люди.

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

5. Какие планы на будущее?

Сейчас чай настоится и я его чуть позже выпью, ну а если вы о долговременной перспективе, то моя продажная душонка мечтает продать за 30 серебрянников богоугодный GNU/Linux и перебежать в пользователи MacOS X. Сначала я планирую завести ее на каком-нибудь DELL, а затем обзавестись оригинальной техникой от Apple. Для того, чтобы обзавестить техникой от Apple обзаведусь работой в какой-нибудь нетривиальной конторе которая занимается мегасерьезными и интересными вещами, за пару лет стану мегакрутым программистом и куплю машину круче чем у DHH.

Если мне удастся мигрировать на MacOS, то Ubuntu все-равно будет моей второй любимой ОС и я буду продолжать писать о Linux, но начну писать об MacOS, Objective-C и т.д.

Этим летом хочу устроить небольшую тусовку в Крыму с читателями сего уютного бложика и провести под открытым небом на берегу моря импровизированную конференцию с поеданием шашлыков и избиением парочки заранее отловленных PHP’шников.

6. Как обстоят дела с QuasarCMS?

QuasarCMS — разрабатывается очень медленно, но верно. Дело в том, что я долго определялся с архитектурой и наконец-то определился к 6 разу полного переосмысления и переписывая кода. Основными моими проектами сейчас являются самообразование с целью набрать необходимую кондицию для устройства на работу и разработка RubyDev 2.0.

7. Где статьи по JavaScript?

JavaScript не самый приятный язык программирования и я постоянно откладываю тесную дружбу с ним. я начал цикл статей по JavaScript и остановился на 4 статьях описывающих работу с функциями и прототипами, думаю, что описывать работу с типами данных не буду — это очень скучно, скорее всего сделаю упор на работу с прототипами, изучения устройства библиотек, например JQuery и работу с DOM. Node.js — это такое очень перспективное в очень далеком будущем говно, таком далеком будущем, что к тому моменту наверняка поменяется несколько более удобных технологий и о Node.js вообще забудут. Слушайте умных людей, а не патологических энтузиастов — используйте Erlang или EventMachine если любите Ruby и вам не нужна производительность Erlang’a.

Я также начал цикл статей по jquery, но временно завис, сейчас выходит Jquery 1.7 и я думаю по этому поводу внувь активизировать эту рубрику.

8. Где статьи по Git?

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

Tags: ,

Дела бложные

октября 29, 2011  |  Published in Новости

Ув. читатели! К вам имеется несколько вопросов:

  1. Нравится ли вам новая рубрика — «Программирование на языке Си»?
  2. Чего-бы написать по javascript (не по jquery или другим библиотекам/фреймворкам, а по самому javascript)?
  3.  Какая тенденция развития у RubyDev? Становится лучше или становится хуже?
  4. Как вам мой стиль изложения информации? Что исправить? Что нравится?

Спасибо за ваше участие в жизни RubyDev! Не забывайте о нашей группе в Вконтакте.

Tags:

Вопрос или комментарий — золото в копилку знаний

октября 23, 2011  |  Published in Новости

Когда на RubyDev будет стабильно 500+ хостов и 10+ комментариев к каждому посту, я начну публикацию цикла статей о Rails 3.1. Такие условия поставлены потому, что комментариев мало, а ведь это один из основных вдохновляющих на написание статей факторов, кроме того, я еще не работал с Rails 3.1. и всякие-там AssetsPipeline, IdentityMap и прочие штуки кажутся мне либо извращением, либо экзотикой и мне необходимо время разобраться с этим новыми «Rails features».

Статьи будут выходить в мини-формате, т.е. не будет рассматриваться создание приложения, но будут рассматриваться решения узких задачь, одна статья — одна задача, например загрузка файлов на сервер, аутентификация с Devise, работа с assets, роутинг, рендеринг, хэлперы форм, использование сторонних решений для построения форм и т.д. В общем это будет похоже на ASCII-Casts. Я считаю, что это идеальный вариант так как статьи смогу писать быстро и понятно.

Буду благодарен, если вы будете размещать ссылки на RubyDev везде, где только можно, кликать кнопочки «+1″ и т.д., писать комментарии и не стесняясь задавать в комментариях вопросы.

 

И не забывайте про нашу официальную группу ! Нас уже 77 фанатиков и просто любителей Ruby и Rails. Интересное общение по теме и помощь гарантированы.

Tags: ,

Группа во Вконтакте

октября 11, 2011  |  Published in Новости

Доброго времени суток ув. читатели RubyDev. Для общения и обмена опытом мною была создана группа во Вконтакте, которую вы можете найти по адресу:

()

Новчикам помощь, старичкам почет.

Tags: ,