• Про одного парня

      История реальная, я все видел своими глазами.

      Несколько лет один парень, как и многие из вас, работал программистом. На всякий случай напишу так: «программистом». Потому что он был 1Сником, на фиксе, производственной компании.

      До этого он пробовал разные специальности – 4 года во франче программистом, руководителем проектов, умел закрывать по 200 часов, одновременно получая процент с проекта, за руководство и немного занимаясь продажами. Пробовал самостоятельно разрабатывать продукты, был начальником IT-отдела в большой компании, численностью 6 тысяч человек, примерял разные варианты применения своей кавычечной профессии – программиста 1С.

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

      Этому парню стало интересно, как можно зарабатывать больше денег, не занимаясь продажами и не создавая свой собственный бизнес.
      Читать дальше →
    • Перевод туториалов Google Maps API

        Левшин Олег (LevshinO) в своем блоге поделился с нами переводами статей с официального сайта гугла, объясняющих принципы работы с Google Maps API.

        На данный момент выложены следующие переводы:

        Олег планирует перевод всех одиннадцати статей этого цикла.
      • Памятка для SEO оптимизаторов

          Вот решил поделиться некоторым материалом, который сам составил в ходе экспресс-изучения SEO оптимизации и раскрутки сайтов. Просто попался видео-курс Юсуфа Губайдуллина, который продает его на promoguide.ru и решил воспользоваться случаем. Честно говоря, курс не понравился — нудно как-то рассказывается. Оценил содержание на 4 с минусом, а изложение — на 2 с плюсом. Само SEO весьма скучная вещь, но нужная, поэтому составил небольшую памятку для себя — чтобы не держать это в голове и легко вспомнить когда понадобится. Здесь два файла: первый — просто картинка, второй — в формате freemind, для тех, кто желает что-то для себя добавить.

          SEO-карта
          Читать дальше →
        • Может ли программист быть эволюционистом?

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

            Что уж говорить о том, что в те времена ни о каком ДНК никто не догадывался. А если кто и догадывался о чём-то подобном, то настолько смутно, что это не могло стать хоть каким-либо препятствием на пути распространения теории эволюции.

            И тогда можно было делать широкомасштабные выводы, совершенно не оглядываясь на наследственные механизмы и программу ДНК, хотя любого современного программиста подобные рассуждения повергли бы в шок.
            Читать дальше →
          • Бесплатный e-book по Ruby

              Задумывались об изучении объектно-ориентированного программирования, а в частности языка Ruby? С бесплатной книгой жизнь станет легче.

              LifeHacker опубликовал небольшую заметку о бесплатной книге, доступной в онлайн или для скачивания (pdf) для тех, кто начинает изучать Ruby.

              Книга в легкой и юмористической форме вводит в мир Ruby. Нулевая глава озаглавлена просто и без изысков: «О чем эт вы, мистер?».

              В комментариях на LifeHacker посетители вспомнили еще о двух книгах:
            • jQuery Timers

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

                Пример и исходный код скачать можно здесь

                image
                Привет Isis, давно тебя не было, почитаем дальше
              • STI — одна таблица и много моделей

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

                  STI (Single Table Inheritance) — паттерн проектирования, который позволяет перенести объектно-ориентированное наследование на таблицу реляционной базы данных. В таблице БД должно присутствовать поле идентифицирующее название класса в иерархии. Зачастую, в том числе в RoR, поле называют type.

                  Таким образом, мы можем иметь одну таблицу и несколько типов объектов (моделей), которые будут в ней храниться. В случае с вышеупомянутой хабразаметкой — это одна таблица постов, которая хранит посты разных типов: ссылка, подкаст, статья, перевод и т.д.

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

                  Приступим.
                  Читать дальше →
                  • +3
                  • 20.9k
                  • 8
                • Создание мульти-модельных форм

                  • Translation
                  Иногда требуется создать форму, данные которой связаны с несколькими таблицами. К примеру, у вас имеется две модели: Owner и Car. При добавлении нового Owner'a хотелось бы, чтобы была возможность сразу добавить машину. С появлением Rails 2.3 это стало проще.

                  # Старый вариант (приблизительный)<br/>def create<br/>  @owner = Owner.new(params[:owner])<br/>  ...<br/>  if @owner.save<br/>    @car = Car.new(params[:car])<br/>    if @car.save<br/>    ...<br/>end<br/><br/># Новый вариант, Rails 2.3+<br/>def create<br/>  @owner = Owner.new(params[:owner])<br/>  ...<br/>end

                  Где же магия?
                • Отладка Javascript

                    Debug Logo

                    Многие задают мне один и тот же вопрос:
                    «Как дебажить этот $%*!%$! JavaScript?».

                    Так вот, во-первых JavaScript — не $%*!%$! А как я его дебажу — сейчас расскажу.

                    (Примечание: наверное эта статья больше для новичков. Так что не судите строго)

                    Читать дальше →
                  • ХХ полезных советов для пользователей Git среднего уровня. Часть 1

                      Вообще-то изначально я планировал перевести статью Энди Джеффриса (Andy Jeffries) 25 Tips for Intermediate Git Users, но в процессе я отбросил бестолковые, общеизвестные или самые простые советы вроде «настройте первым делом user.name и user.email», которые явно не подходят людям, уже более-менее плотно знакомым с Git.
                      Взамен я дополню статью моментами из личной практики («Своя практика»! Звучит здорово, будто я частный врач или адвокат! :-] )

                      Читать дальше →
                    • ХХ полезных советов для пользователей Git среднего уровня. Часть 2

                        Это продолжение статьи ХХ полезных советов для пользователей Git среднего уровня

                        Про reset, незапланированно снова про альясы, про замечательный filter-branch, про мерджи и разрешение конфликтов с помощью rerere, про rebase (интерактивный и не очень) и, в завершение, про обслуживание своей гитницы.

                        Читать дальше →
                      • Командная работа в Git

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

                          Ниже я хочу описать свой опыт командной работы над проектом с использованием git'а.
                          Читать дальше →
                        • CSS Sticky Footer / Прилипающий футер

                          • Translation

                          Как использовать прилипающий футер


                          Введение


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

                          Решения Райана Фэйта хорошо известно и работает, но требует лишний пустой <div>. Приверженцы чистого HTML-кода могут найти это богохульство несемантичным. В нашем решении лишнего <div> нет.
                          далее
                        • Различия между IE6, IE7 и IE8. Часть первая

                          • Translation
                          (От перев. Данная статья не претендует на полноту и непротиворечивость, потому мы не будем строить на ее основании никаких теорий. Это всего лишь практическое пособие для разработчиков, немного исправленное и дополненное мной под реалии Рунета.)

                          Одним из самых странных статистических фактов, связанных с использованием браузеров, является широкая распространенность Internet Explorer версии 6, 7 и 8. На сегодняшний день все версии Internet Explorer вместе занимают примерно 65% рынка используемых в настоящее время браузеров. Среди веб-разработчиков эта цифра ниже, здесь доля пользователей IE составляет лишь 40% рынка.
                          (От перев. Надеюсь, эти 40% составляют лишь несчастные верстальщики, проверяющие свои сайты на предмет кроссбраузерности. Статистика по Рунету доступна, например, здесь. Заметьте, в сентябре у всех браузеров IE-семьи график без видимых причин подскочил — это вернулись за свои компьютеры офисные пользователи, самые преданные почитатели наших героев.)

                          Интересно, что популярность браузеров семейства IE примерно одинакова, нельзя выделить один доменирующий браузер, как это было ранее. (От перев. Конечно, нельзя. Вот смотрю и ну никак не могу выделить доминирующий браузер. =) ) Таким образом, сейчас веб-разработчики обязаны проверять работоспособность своего проекта в различных браузерах, разрабатывая как сайты для своих заказчиков, так и персональные странички.

                          Конечно, благодаря различным Javascript-библиотекам, кроссбраузерное тестирование сейчас стало настолько хорошим, насколько данная ситуация вообще позволяет это сделать. (От перев. А еще есть возможность сделать скриншоты в разных браузерах, IE Collection и тому подобные ухищрения) Но есть в этом что-то неправильное, особенно если взглянуть на результат работы трех использующихся версий IE.

                          Эта статья является попыткой дать исчерпывающую, легкую в восприятии информацию для веб-разработчиков, пытающихся понять различия в обработке CSS между IE6, IE7 и IE8. Здесь собраны краткие описания для свойств, поддерживаемых одним или двумя браузерами, но не всеми тремя сразу. Здесь не рассматриваются свойства, не выполняемые ни одним из IE, а также специфичные только им. Таким образом, акцент стоит именно на различиях между браузерами, а не на недостатке поддержки ими тех или иных CSS-свойств.

                          Ну-ну, продолжайте...
                        • Какие бывают META теги и зачем они нужны

                            META-теги


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

                            META-теги имеют два возможных атрибута


                            — <META HTTP-EQUIV="имя" CONTENT="содержимое">
                            — <META NAME="имя" CONTENT="содержимое">
                            META-теги должны находиться в заголовке HTML-документа между <HEAD> и </HEAD> (особенно это важно для документов, использующих фреймы).

                            Стандартом HTML 4.01 значения и имена мета-тегов НЕ оговариваются, поэтому мы будем рассматривать те значения, которые уже устоялись в интернете и используются чаще других.
                            подробнее о META тегах
                          • Управляем Flash-объектом на Javascript

                              Управляем Flash-объектом на JavaScript

                              Возможности JavaScript в 95% случаев позволяют решить любую задачу для Web 2.0. Но иногда хочется чуточку больше, чуточку красивее, возможно, чуточку быстрее. В этой статье на примерах я хочу показать, как восполнить этих 5% недостающего функционала средствами Flash.
                              Эта статья будет полезна разработчикам, которые пишут в основном на JavaScript и имеют минимальные знания ActionScript 3.

                              Для вдохновения


                              Вдохновил меня на написание этой статьи пример из пакета FancyUpload, реализующий одновременную загрузку нескольких файлов на сервер с симпатичным прогресс-баром в стиле gmail (обратите внимание: можно сразу выбирать несколько файлов).

                              Этот пример интересен тем, что дизайн и управление контролируется средствами CSS и JavaScript. JavaScript при необходимости использует необходимый функционал из Flash.

                              Если Вам понравилось, идем дальше: мы рассмотрим как это работает на более простом примере.
                              Читать дальше →
                            • Шрифты, общие для всех (актуальных) версий Windows, и их Mac-эквиваленты

                              • Translation

                              Введение


                              В данном списке перечислены шрифты, общие для всех актуальных на данный момент операционных систем Windows (фактически начиная с Windows 98), и их эквиваленты в Mac OS. Такие шрифты иногда называют «безопасными шрифтами для браузеров» (browser safe fonts). Это небольшой справочник, которым я пользуюсь, когда делаю Web-страницы и думаю, что он будет полезен и Вам.
                              Читать дальше →
                            • Веб-типографика сегодня. Часть I

                                Часть IЧасть IIЧасть IIIЧасть IVЧасть V — Часть VI

                                Часть I



                                Как-то ко мне обратился знакомый дизайнер с просьбой разобраться в странной по его мнению ситуации. Клиент просил «сделать так же, как у Apple», но с использованием собственных способов расположения блоков, изображений, цветовой гаммы и текста. В общем, дизайн в итоге получался совершенно непохожий на apple.com, но этого, собственно, и добивался клиент. И вроде бы у дизайнера получилось, но… Клиенту по-прежнему не нравилось, он всё равно требовал переделать макет. По его ощущения «что-то было ну совсем не так». А что именно — тот объяснить был не в силах. Вот и возник вопрос у моего коллеги по поводу того, как угодить капризам клиента и понять его чаяния. Оказалось всё не так просто, но вполне объяснимо. Я и раньше сталкивался с данной проблемой. Поэтому решил попробовать изложить свои мысли по этому поводу.

                                Итак, какова ситуация в области современной веб-типографики и какими способами следует решать возникающие проблемы?
                                Читать дальше →
                              • Тенденции мировой типографики

                                • Translation
                                Даже относительно ограниченный набор возможностей CSS дает нам много возможностей в типографике, которые можно реализовать, используя каскадные таблицы стилей. Антиква или гротеск? Большой или маленький шрифт? Интерлиньяж, апрош, размер шрифта и всевозможные отступы… Список можно продолжать до бесконечности.

                                Мы провели обширное исследование на 50 популярных сайтах, для которых типографика важна больше обычного, для того, чтобы выделить некие общие решения и найти ответы на известные проблемы в оформлении текстов. Для изучения были выбраны популярные газеты, журналы, блоги и другие ресурсы, так или иначе связанные с типографией. Мы тщательно проанализировали их типографику и таблицы стилей в поисках сходств и отличий. Также, мы построили сравнительную таблицу, в которой отображены различные параметры веб-сайтов (например, соотношение между интерлиньяжем и длиной строки).

                                В конечном счете, мы выделили 13 общих проблем и вопросов, имеющих отношение к типографическим проектам, и попробовали найти ответы на них в нашем исследовании:
                                1. Насколько популярны шрифты с засечками и без засечек в заголовках и основном тексте?
                                2. Какие шрифты используются наиболее часто?
                                3. Каков средний кегль для шрифта?
                                4. Каково, в среднем, соотношение между размером шрифта в заголовке и в основном тексте?
                                5. Чему равно среднее значение интерлиньяжа для основного текста?
                                6. Каково усредненное соотношение между значением интерлиньяжа и размером шрифта для основного текста?
                                7. Чему равно среднее значение соотношения между интерлиньяжем и длиной строки?
                                8. Каковы, в среднем, отступы между абзацами?
                                9. Каково усредненное соотношение значений отступа между абзацами и интерлиньяжем?
                                10. Как выделяются стилистически ссылки?
                                11. Сколько символов обычно используется в строке?
                                12. Как часто ссылки выделяются подчеркиванием?
                                13. Как часто используется замещение шрифтов (sIFR и прочие)?

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

                                  Статья является расширенным сборником CSS-хаков в сравнении с аналогичной статьей.
                                  Под хаком подразумевается метод, позволяющий воспринимать CSS только определенному браузеру.
                                  Хаки могут использоваться не только для исправления багов в верстке, но и в случае использования определенных особенностей браузера для ускорения рендеринга web-страницы в нём (к примеру CSS3-свойства)

                                  Подробности под катом