Archive for октября, 2011

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

октября 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: ,

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

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

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

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

Tags: , , ,

Дела бложные

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

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

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

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

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: , , ,

Программирование на языке Си: Первая программа на Си. Функции.

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

язык СиЗнакомство с языком Си мы начнем с написания простой программы «Hello, World!», которая будет заниматься печатью на экран сообщения «Hello, World!».

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

Первая программа:

#include <stdio.h>
int main() {
  printf("Hello, World!\n");
  return(0);
}

Read the rest of this entry »

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: ,

Интервью с Джереми Эвансом (Jeremy Evans) о Sequel и не только

октября 22, 2011  |  Published in Sequel, Интервью

Оригинал на английском: Interview with Jeremy Evans about Sequel and not only

Привет, Джереми. Расскажи читателям RubyDev немного о себе, своей работе и хобби.

Привет. Меня зовут Джереми Эванс (Jeremy Evans). Я работаю в калифорнийском бюро государственного учета (California Bureau of State Audits), в меленьком департаменте правительства штата которое занимается аудиом других правительственных департаментов. Я главные технический эксперт в департаменте и отвечаю за программирование для департамента, системное администрирование, сетевое администрирование и администирование баз данных, кроме прочих обязанностей.

Кроме компьютеров и программирования моим основным хобби является игра с моим трехлетним сыном.

Джереми, расскажи пожалуйста о Sequel и как у тебя родилась идея разработки Sequel?

это набор инструментов для работы с базой данных из программ на Ruby. Sequel разрабатывался для предоставления простого, независимого от базы данных API для взаимодействия с SQL-базыми данных. Sequel поддерживает продвинутые SQL возможности, которые не поддерживаются другими библиотеками для Ruby для работы с базами данных. Sequel также включает в себя мощный и гибкий ORM, который называется Sequel::Model.

Я не являюсь первоначальным автором Sequel. Первоначальный автор проекта — это Шэрон Рош(c)нер (Sharon Rosner) и я думаю, что толчком к разработке Sequel послужило то, что он был разочарован в ActiveRecord и хотел создать что-то лучшее. Шэрон работал над фреймворком, который назывался ServerSide и Sequel был изначально добавлен как компонент этого фреймворка (ServerSide::Database) в ноябре 2006 года. Затем, в марте 2007 года, он извлек компонент для работы с базой данных в отдельную библиотеку и назвал ее Sequel.

С марта 2007 до февраля 2008 он разрабатывал библиотеку и в марте 2008 он решил, что больше не хочет заниматься ее разработкой. Я недавно отправлял патчи для добавления поддержки ассоциаций в ORM Sequel’а и когда он решил, что больше не будет заниматься поддержкой проекта, то он написал мне и еще нескольким разработчикам письмо с вопросом не хочет ли кто-нибудь из нас заменить его. Мой ответ был принят и я работаю над улучшением Sequel по сей день.

Read the rest of this entry »

Tags: , , ,

Interview with Jeremy Evans about Sequel and not only

октября 22, 2011  |  Published in Sequel, Интервью

Russian version: Интервью с Джереми Эвансом (Jeremy Evans) о Sequel и не только

Hello Jeremy, please introduce yourself for RubyDev readers.

My name is Jeremy Evans.  I work for the California Bureau of State Audits, a small state government department that audits other government departments.  I’m the lead technical staff member here, responsible for the department’s programming, system administration, network administration, and database administration, among other things.

Outside of computers and programming, my main hobby is playing with my three year-old son.

Jeremy, tell me please what is the Sequel and how an idea of creating Sequel  born in your mind?

is a database toolkit for ruby.  It’s designed to provide an easy, database independent API for interacting with SQL databases.  It supports advanced SQL features not supported by other ruby database libraries.  It also ships with a powerful and flexible ORM called Sequel::Model.

I am not the original author of Sequel.  The original author was Sharon Rosner, and I believe the reason he originally created Sequel was because he was frustrated with ActiveRecord and wanted to create something better.  Sharon was working on a web framework called ServerSide, and Sequel was originally added as the database component of that (ServerSide::Database) in November 2006.  He extracted the database component into a separate library named Sequel in March of 2007.

From March 2007 until February 2008, he developed the library, and in March 2008, he decided he didn’t want to maintain it anymore.  I had recently submitted patches to add associations support to the ORM part of Sequel, and when he decided he didn’t want to maintain it, he emailed me and a few other developers asking if one of us wanted to take it over.  I accepted and have been working on improving the library since then. Read the rest of this entry »

Tags: , , ,

RDRubyTutorial: Метапрограммный Ruby

октября 19, 2011  |  Published in Ruby, Основы

Метапрограммный Ruby
Эта статья-учебник даст вам самые основные знания и понимания программирования на языке Ruby. В ней, в отличие от RubyDev Ruby Tutorial (RDRT) не будет рассматриваться работа с какими-нибудь конкретными объектами, например строками или целыми числами, или с массивами, или с чем-либо еще. Мы будем рассматривать синтаксис и основные концепции языка и не будем изучать методы и приемы работы с определенными объектами — все это описано в официальной документации (учите английский).

Автор (то есть я) предполагает, что вы в общих чертах знаете, что такое Ruby, читали блог RubyDev или статью о Ruby в Wikipedia, по этому я не намерен повторяться и рассказывать о происхождении языка, истории, его авторе и прочих практически бесполезных вещах.

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

1. Объекты
Ruby — объектно-ориентированный язык, а значит все, с чем мы работаем — объекты. Объекты принадлежат определенному классу (типу), например вы, мой дорогой читатель, которого, предположим зовут Александр Сергеевич принадлежите классу людей, или группе людей, или ваш тип, как объекта — человек.

Александр Сергеевич, кто вы?  — Я — Человек!

Объект — это набор свойств и методов. Александр Сергеевич, вы например, имеете свойства: имя, фамилия, отчество, рост, вес, цвет волос и так далее, но также вы имеете методы, то есть вы можете выполнять некоторую работу (выполнять некоторые функции), например, сидеть, стоять, разговаривать и отвечать комментариями на мои статьи.

Для того, чтобы появился новый объект вашего типа, Александр Сергеевич, вам следует совокупиться с некоторой человеческой особью женского пола и через 9 месяцев будет получен новый объект класса человек. В Ruby процесс создание новых объектов более быстрый и менее ресурсоемкий. Чуть позже мы разберемся с ним, а сейчас поговорим о классах.

Read the rest of this entry »

Tags: , ,

Linux Bash ч.1: Самые Азы

октября 15, 2011  |  Published in bash, Linux

Одной из особенностей операционных систем семейства Unix(Unix, Linux, BSD, MacOS) является то, что большая часть работы в них выполняется при помощи специальных программ — консольных комманд. Это достаточно условно «большая часть работы», ведь в Windows имеется CMD, а в Ubuntu имеется возможность производить большинство действий без работы с консолью (терминалом), в большей мере благодаря этому Ubuntu и называется fuman-friendly дистрибутивом. То есть потому, что вы можете работать в Ubuntu также тупо, как и в Windows, без знания устройства системы.

Эта статья посвящена консоли (терминалу) — черному окошку в которое вы вводите команды ;-) и скриптовому языку программирования Bash, который вам придется очень часто использовать работая в Linux, если только ваша работа не ограничивается в работе с документами, просмотром фильмов и прослушиванием музыки. Консоль (терминал) также часто называют командрой оболочкой, что является более официальным или даже официозным термином (термин терминал означает сам интерфейс взаимодействия с shell, но не сам shell, однако на это часто закрывают глаза).

Командная оболочка Bash произошла от командной оболочки Bourne shell — «оболочка Борна», которая была разработана для Unix Стивеном Борном — одним из основных разработчиков Unix в Bell Labs. Сокращенно Bourne shell называют просто sh.

Bash — это усовершенствованный вариант sh. Bash разшифровывается как «Bourn again shell», где происходит игра слов так как имя Bourn и слово born (рождение) созвучны, таким образом Bash можно перевести как «перерожденная оболочка Борна». Read the rest of this entry »

Tags: ,