• Один из простых способов улучшить свои навыки программирования — читать чужой код

    • Перевод
    Примечание: первоначально эта статья была написана для сайта Fuel Your Coding back в мае 2010 года. К сожалению, этот сайт сейчас не работает, поэтому я публикую статью здесь, чтобы сохранить её для потомков. Я собирался обновить её, учитывая последние веяния, но решил оставить так, как она была написана. Те части, что подустарели, могут показаться немного смешными, но да ладно. Получайте удовольствие…

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

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

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

    В этой статье я хотел бы помочь вам в выборе того, что именно читать, и дать практические советы по такому чтению. Если вы уже и так читаете другие программы, то, может быть, вы найдёте здесь что-нибудь, что позволит получить больше от ваших усилий. Если же вы не читаете коды других разработчиков, то вы просто обязаны заняться этим.
    Читать дальше →
  • Создание превью изображения на основне свойства Overflow

    • Перевод
    По просьбам пользователей после прочтения статьи Визуализация данных на CSS

    Цель данной статьи заключается в том, чтобы реализовать возможность создания превью для изображения, размеры которого можно устанавливать самостоятельно. Бывает так, что у нас нет свободного места на странице, чтобы показать превью картинки полностью. Но и делать из картинок обрезки не хочется. Трюк, приведенный в статье, позволит создать нужные нам размеры превью и отображать полный его размер при наведении курсора на превью.
    читать продолжение
  • Безразмерная разметка с помощью relative (без float)

      Навеянно этой темой.
      Пример, как это работает.

      1. Введение


      Представим, мы имеем класс relative, внутри которого имеется текст, и не задаём ему width:
      #bar{
      position:relative;
      border:5px solid #00FFFF;
      padding:10px;
      height:200px;
      }
      мы получим резиновый блок:
      <div id="bar">
      text
      </div>


      При этом, блок обладает неизменными padding+border и резиновым width, таким, что width_px+padding_px+border_px = 100%.
      Для absolute блоков, такой трюк не прокатывает.
      Читать дальше →
    • Регулярные выражения, пособие для новичков. Часть 2

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

        image

        Чтобы было понятно, о чем идет речь, сразу скажу, что наш сервис — биржа копирайтинга ContentMonster.ru. В данный момент, на ней выполняется более 300 заказов сутки и постоянно работает более 400 авторов. Работаем мы над его созданием уже больше полутора лет, и за это время набили некоторое количество «шишек», большую часть из которых можно было избежать. Скорее всего, если бы совершенных ошибок не было, то росли бы мы быстрее, пользователей было бы больше, а психика устойчивей. Итак, начнем.

        1. Запуск апдейта в пятницу.

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

        • Перевод

        Предлагаю вашему вниманию вольный перевод статьи Jordan Julien Cognition & The Intrinsic User Experience

        За последние несколько лет было много дискуссий, вокруг того, какой пользовательский опыт может быть разработан. Каким бы ни был UX, пользователь всегда будет иметь возможность пройти по своему, уникальному пути. Все потому, что когнитивное сопротивление является уникальным для каждого пользователя. Создание интуитивно понятного интерфейса является очень важным шагом, но мало кто может точно сказать, что именно делает интерфейс интуитивно понятным. Здесь понятия Когнитивной Нагрузки и Когнитивного Барьера играют большую роль.
        Читать дальше →
        • +35
        • 4,5k
        • 6
      • Как сделать конкурс так, чтобы в нём участвовало больше 2 человек

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

          Если вы сами проводили конкурсы и всё было ок — не читайте топик. Если где-то ждал облом — добро пожаловать под кат.

          Читать дальше →
        • Новый пуленепробиваемый синтаксис @font-face

          • Перевод
          • Tutorial
          С самого начала «вебошрифтовой революции» мы полагались на неизящные хаки деклараций @font-face, чтобы шрифты из Паутины загружались во всех браузерах. Может ли существовать лучший путь? Вполне изящный и совместимый с будущими браузерами?

          Вкратце об истории вопроса


          В сентябре 2009 года Пол Айриш (Paul Irish) огласил пуленепробиваемый синтаксис для записи деклараций @font-face. Синтаксис был компактным и в то время действовал во всех браузерах. Недавно стали поступать, со временем усиливаясь, жалобы на отказ шрифтов загружаться в Android — поэтому мы стали вместо того рекомендовать синтаксис «Mo' Bulletproofer», сочинённый Ричардом Финком (Richard Fink). К сожалению, синтаксису «Mo' Bulletproofer» требуется двойная запись деклараций, так что поддержка его сложнее.

          Синтаксис Fontspring @Font-Face


          А вот таким этому коду следовало бы быть с самого начала. Чистым, ясным и простым:
          @font-face {
          	font-family: 'MyFontFamily';
          	src: url('myfont-webfont.eot?') format('eot'), 
          	     url('myfont-webfont.woff') format('woff'), 
          	     url('myfont-webfont.ttf')  format('truetype'),
          	     url('myfont-webfont.svg#svgFontName') format('svg');
          	}
          

          Что? Я не понял.


          Хак Трюк, заставляющий этот код заработать — символ «?» вслед за именем файла EOT. Без шуток.

          Как это срабатывает


          Читать дальше →
        • С версткой почтовых рассылок все не так уж плохо

            И снова рад приветствовать хабражителей!

            На написание нижеследующего меня сподвиг этот комментарий из моего первого топика. Суть сводится к тому, что коварный парсер mail.ru вырезает инлайновые стили в верстке письма, а так же добавляет ужасные отступы к ячейкам таблицы, что превращает работу верстальщика в сплошную головную боль. Спешу опровергнуть сказанное злыми языками.
            Читать дальше →
          • Настройка резервного копирования Linux-сервера за 5 минут

              Передо мной возникла необходимость настроить резервное копирование на новом Linux-сервере, задачка эта оочень важная, но уж больно скучная: нужно написать и отладить скрипты, которые будут архивировать нужные папки (причем желательно делать инкрементальные архивы), базы данных, хранилища subversion, а затем переносить эти архивы на удаленный сервер. По этому я попробовал нагуглить готовое решение для этой задачки и в результате наткнулся на backup-manager — замечательный опенсорсный набор bash-скриптов, позволяющих:
              • архивировать любые папки, в том числе и создавать инкрементальные архивы. В конфиге просто указывается список директорий, которые должны быть скопированы, а также «черный список» файлов, которые копироваться не будут.
              • делать резервное копирование баз данных MySQL. В конфиге указываются логин и пароль mysql-юзера, имеющего доступ к базам, а всю остальную работу backup-manager делает сам.
              • делать резервное копирование svn-репозиториев, причем бэкап делается не копированием папки с хранилищем, а с помощью команды svnadmin dump.
              • шифровать архивы.
              • копировать созданные архивы на удаленные сервера по FTP, SSH или (это самая важная для меня фича) в хранилище Amazon S3, а также записывать их на DVD.

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