Почему я люблю и ненавижу JavaScript

ноября 29, 2011  |  Published in ClientSide, JavaScript  |  10 Comments

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

1. Мне очень не нравится зависимость JavaScript от окружения. Это не есть недостатком самого языка, но есть большим недостатком технологии. Вместо того, чтобы писать код, программист вынужден бороздить просторы интернета в поисках документации о различиях браузеров и решении возникающих из этого проблем. Часто разработчики пишут код под какой-то один браузер (javascript движок), например под FireFox, а затем тестируют и допиливают его для работы в остальных браузерах. К счастью имеюттся различные фреймворки вроде jQuery, которые решают многие проблемы с кроссбраузерностью.
Read the rest of this entry »

Святой Грааль разработки ПО

ноября 27, 2011  |  Published in Уголок философа  |  4 Comments

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

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

Можно бесконечно долго сидеть и изобретать совершенную архитектуру или несколько часов придумывать идеальное название для метода или функции, но вам платят не за пустые размышления и не за глупо потраченное время, а за результат.Всегда необходимо видеть реальную причину. Вы пишите код не для того, чтобы прокачаться, стать программистом 80 уровня и получить артефакт «клавиатура дракона», но потому, что вы зарабатываете деньги. Клиентам вообще наплевать как и что там будет работать внутри, главное их требование — правильная работа бизнес-конвейера.

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

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

Выходя из утверждения работа = деньги можно прийти к выводу, что чем больше денег ты зарабатываешь тем лучше, однако это не всегда так. Кому-то важнее деньги, а кому-то комфорт. Каждый выбирает свое. Лично я заинтересован в работе над интересными проектами в дружной атмосфере, но это не значит, что я готов работать за копейки. Каждому труду есть цена и каждый человек за свой труд должен получать адекватный проделанной работе кусок пирога. Много денег не бывает и много никто не заплатит, разве что дурак какой-то. Работодатель должен платить в соответствии с производительностью рабочего. Чем лучше ты программист — тем больше у тебя производительность и тем больше ты получаешь. Арифметика простая, хороший программист — это такой, который больше зарабатывает, а не тот, который следует всем практикам Мартина Фаулера, покрывает код на 200% спеками и тестами и находит время поддерживать несколько open-source проектов.

Желание стать совершенным программистом в край глупо. Правильное желание — иметь отличную в плане коллектива и проектов работу с достойной твоего вклада оплатой.

Если тебя не тошнит от работы и ты чувствуешь, что получаешь ровно столько, сколько заслуживаешь, поздравляю! Ты нашел золотой Грааль!

— Мое субъективное мнение.

Query-Chain Object Pattern в Ruby

ноября 25, 2011  |  Published in Ruby  |  3 Comments

Предупреждение: На самом деле я не знаю, как в действительности называюется этот паттерн, но название Query-Chain Object Pattern мне кажется очень подходящим.

Я был очень рад увидеть в ActiveRecord 3.0 такое значительное изменение, как добавление класса ActiveRecord::Relation. Этот класс, точнее его объекты, занимаются тем, что «накапливают» запросы в виде вызова методов и на их основе генерируют SQL-запрос к БД.

Post.where(:id => 3).class
#=> ActiveRecord::Relation

Post.where(:id => 3).order('id desc').class
#=> ActiveRecord::Relation

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

Эта статья не о работе с ActiveRecord, но о паттерне Query Chain.

Описание Query Chain:

При определенных запросах к некоторому объекту A объект A возвращает не запрашиваемые результаты, а query-chain объект B в котором записываются запросы, которые позже выполняются вместе и изменяют состояние объекта A, или который изменяет состояние объекта A сразу при каждом запросе (здесь запрос — просто вызов метода).

Самый простой пример реализации Query Chain паттерна:
Read the rest of this entry »

Tags: ,

Революционная формула борьбы с ленью. 100% гарантия!

ноября 19, 2011  |  Published in Уголок философа  |  3 Comments

Нет более закаленных в разговорах о лени людей чем сами лентяи. Одни любят оскорблять себя — Боже мой, какой я ленивый, неудачливый мудак. Другие, предпочитают рассказывать об этом как о некой форме наркомании — Ничего не могу с собой поделать, прыгаю туда-сюда из Вконтакта в Ютьюб, из Гугл+ в Одноклассники из видео с чихающей пандой к фирменному посту в ЖЖ от Сергея Доли или Темы Лебедева. Третьи абсолютно смирились с ленью, их абсолютно устраивает то, что они обречены на ничтожное существование или у них имеется папа с толстым кожаным кошельком, который всегда готов финансово помочь своему любимому чаду.
Read the rest of this entry »

Tags: ,

Интервью с Дмитрием aka wyldrodney о SimpleReality CRM и не только

ноября 19, 2011  |  Published in Интервью  |  2 Comments

Сегодня в виртуальной студии RubyDev гость — Дмитрий aka wyldrodney. Дмитрий — администратор и разработчик на платформе Ruby on Rails и сегодня мы поговорим о разрабатываемой им CRM системе.

 

Дмитрий, представься пожалуйста читателям и расскажи немного о себе, своих хобби, интересах и т.д.

Привет! Знаешь, сейчас эра Интернета, всё что мы делаем для сети, отражается в первую очередь на сети, и потому мало кому будет действительно интересно кто я. Но друзья зовут по имени — Дима, хотя обычно предпочитаю ник wyldrodney :)

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

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

Read the rest of this entry »

Tags: ,

SASS / SCSS в Rails

ноября 3, 2011  |  Published in ClientSide, CSS и верстка, Ruby on Rails, Ruby on Rails 3, View  |  5 Comments

sass cssВот и дошли мои руки, ноги и сознание до изучения такой штуковины, как SASS / SCSS.

SASS — это синтаксический сахар для CSS. Аббревиатура SASS расшифровывается как Syntactically Awesome StyleSheets.

SCSS — это новое название SASS начиная с 3й версии и расшифровывается как Sassy CSS. Основное отличие SCSS — это улучшенная поддержка CSS3 и то, что в SCSS можно писать на каноническом CSS (можно сказать, что SCSS является надмножеством CSS).

SCSS позволяет писать стили вашего приложения с использованием очень мощных расширений стандартных возможностей CSS: возможности использовать переменные в стилях, подмешивания примесей, удобный синтаксис объявления стилей вложенных элементов и т.д. Все это мы рассмотрим в нашей статье, но не просто рассмотрим, а рассмотрим на примере использования в приложении на Rails.

Я уже писал на RubyDev об использовании языка HAML в Rails и с тех пор я стал его активно использовать вместо стандартного ERB. В этой статье я расскажу об SASS / SCSS. SASS / SCSS является проектом созданным под вдохновением от HAML, кроме того, чаще всего SCSS и HAML используются вместе. Эту статью о SASS / SCSS и статью о HAML можете считать предисловием к грядущим статьям по Compass и AssetsPipeline в Rails 3.1. Конкретно в данной статье рассматривается использование SASS / SCSS в приложении на Rails 3.0.9.
Read the rest of this entry »

Tags: , , ,

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

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

Это я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: ,

Программирование на языке Си: Использование массивов данных в Си. Указатели.

октября 31, 2011  |  Published in Си и C++  |  8 Comments

gnu-cОбъявление массива в Си
Массив (Array) относится к вторичным типам данных. Массив в Си представляет собой коллекция явно определенного размера элементов определенного типа. то есть в отличие от массивов в Ruby массивы в Си являются однотипными (хранят данные только одного типа) и имеют заранее определенную длину (размер).

В Си массивы можно грубо разделить на 2 типа: массив чисел и массив символов. Разумеется, такое деление абсолютно условное ведь символы — это также целые числа. Массивы символов также имеют несколько иной синтаксис. Ниже приведены примеры объявления массивов:
Read the rest of this entry »

Tags: , , ,

Дела бложные

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

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

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

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

Tags:

Программирование на языке Си: Первичные типы данных в Си

октября 29, 2011  |  Published in Си и C++

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

Первичные типы данных в Си включают в себя:

Целочисленные типы (integer)
Целочисленные типы используются для хранения чисел в диапазоне определяемом компилятором. Традиционно целые числа занимают 2 байта памяти и значения, которые относятся к типу int находятся в диапазоне от -32768 до +32767. Тип signed int (целое со знаком) использует один бит для хранения знака числа и 15 бит для хранения самого числа. Помимо канонического int, Си имеет еще 2 integer-типа данных:

- short int
- long int

Все три типа имеют как форму со знаком, так и беззнаковую форму (соотв. signed и unsigned). Short int обычно использует половину объема памяти int однако это не константное соотношение, например, в некоторых компиляторах int может занимать не 16 бит, а 32, а short int 16, а не 8. Тип long int обычно использует объем памяти в двое больший, чем int, то есть 4 байта, что опять-таки может изменяться в различных компиляторах. В signed-типах один бит всегда занимается хранением знака числа, в unsigned все биты занимаются исключительно хранением значения числа при этом unsigned-числа всегда считаются целыми.
Read the rest of this entry »

Tags: , , ,