• Как программируют слабовидящие программисты?

    • Translation

    От переводчика

    Что это за пост? Он не похож на статью


    Это действительно не статья. Это компиляция самых интересных, на мой взгляд, ответов на заглавный вопрос: «Как программируют слабовидящие программисты?» из обсуждения на Quora.com.

    Почему я сделал перевод?


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

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

    Это не так. Совсем не так.

    Нет никаких специально обученных разработчиков.

    Нет никакого особого веба.

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

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

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

    Читать дальше →
  • 30 советов, как эффективно трудиться и не сойти с ума, работая дома

    • Translation
    Тем, кому знакомы прелести работы дома (на себя, фрилансером или удаленно на ставку), также знаком соблазн поваляться на диване и затягивание сроков.

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

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

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

      Ванька Жуков, девятнадцатилетний веб-девелопер, устроившийся три месяца тому назад в столичное интернет-агентство, в ночь под выход новой версии Ubuntu не ложился спать. Дождавшись, когда тех. директор и менеджеры ушли на совещание, он достал из-под стола сотовый телефон, USB-кабель, мышку с заедающим шариком и, разложив перед собой обшарпанный ноутбук, стал набирать. Прежде чем нажать первую клавишу, он несколько раз пугливо оглянулся на двери и окна, покосился на портрет Артемия Андреевича, по обе стороны которого тянулись полки с «атмарками», и прерывисто вздохнул. Ноутбук лежал на офисном кресле, а сам он стоял перед креслом на коленях.

      Читать дальше →
    • Семь заповедей быстрого чтения

        — Чувак, наточи топор!
        — Да некогда мне! Дрова нужно рубить!


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

        Читать быстро
      • Как я завел дружбу с асинхронностью в JavaScript

          JavaScript встречает разработчиков асинхронностью можно сказать чуть ли не с порога. Начинается все с DOM-событий, ajax, таймерами и библиотечными методами, связанными с анимацией (например jQuery-методы fadeIn/fadeOut, slideUp/slideDown). В целом, это все не очень сложно и разобраться с асинхронностью на этом этапе не представляет проблем. Однако, как только мы переходим к написанию более или менее сложных приложений, в которых комбинируется все вышеуказанное, асинхронный поток может сильно затруднить понимание происходящего в коде. Цепочки асинхронных действий, например, анимация > ajax-запрос > инициализация -> анимация, создают достаточно сложную архитектуру, которая не подчиняется строгому направлению «снизу верх». В этой статье я намерен рассказать про свой опыт преодоления трудностей связанных с асинхронным JS.
          Читать дальше →
        • Методы в примитивных типах PHP

          • Translation
          Некоторое время назад назад Энтони Феррара выразил мысли по поводу будущего PHP. Соглашусь с большинством его взглядов, но не со всеми. В статье я остановлюсь на одном конкретном аспекте: преобразования примитивных типов данных, таких как строки или массивы, в “псевдо-объекты”, позволяя выполнять в них вызовы методов.

          Начнем с нескольких примеров:

          $str = "test foo bar";
          $str->length();      // == strlen($str)        == 12
          $str->indexOf("foo") // == strpos($str, "foo") == 5
          $str->split(" ")     // == explode(" ", $str)  == ["test", "foo", "bar"]
          $str->slice(4, 3)    // == substr($str, 4, 3)  == "foo"
          
          $array = ["test", "foo", "bar"];
          $array->length()       // == count($array)             == 3
          $array->join(" ")      // == implode(" ", $array)      == "test foo bar"
          $array->slice(1, 2)    // == array_slice($array, 1, 2) == ["foo", "bar"]
          $array->flip()         // == array_flip($array)        == ["test" => 0, "foo" => 1, "bar" => 2]
          

          Здесь $str — это обычная строка и $array является простым массивом — они не объекты. Мы просто даем им немного объектного поведения, позволяя вызывать в них методы.

          Обратите внимание, такое поведение совсем не за горами. Это уже не сон, кое-что уже существует прямо сейчас. PHP расширение scalar objects позволяет определить методы для примитивных типов.

          Читать дальше →
        • Кто возьмёт билетов пачку… или о монетизации игровых приложений

            image

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

              По следам хабралинча имени Рюмкина коснёмся темы правильного типографического оформления чисел. В голову пришли следующие темы, если что-то вдруг забыто — пишите в комментариях, добавлю в статью.
              • Минускульные и маюскульные цифры
              • Целые числа и десятичные дроби
              • Простые дроби
              • Буквенные сокращения (тысяча, миллион, миллиард)
              • Диапазоны
              • Порядковые числительные и числительные в составе сложных слов
              Ещё в комментариях к хабралинчу возникло интересное обсуждение согласования и управления при употреблении порядковых числительных, но это, как мне кажется, скорее отдельная тема для блога Пишу правильно.

              Читать дальше →
            • Всё (или почти всё) о пробеле

                Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

                Вообще говоря, пробел — это любое пустое место в рукописном, печатном или отображаемом на любом другом носителе тексте. Так что пробелы бывают разные:
                • спусковые (большие вертикальные пропуски в первой полосе издания) и концевые пробелы полосы,
                • абзацные отступы и концевые пробелы абзаца,
                • межстрочные пробелы (между строками текста),
                • межсловные пробелы (между словами в одной строке),
                • межбуквенные пробелы (между буквами в слове).
                Далее речь пойдёт о межсловных пробелах, разделяющих слова, и функционально принадлежащих к знакам препинания.
                Читать дальше →
              • Что мне приглянулось в Ruby on Rails

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

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

                  Взгляд пал на Руби он Рейлс. Была прочитана знаменитая Agile Web Development with Rails: Second Edition и написан небольшой проект. Здесь я попытаюсь перечислить те возможности этого прекрасного фреймворка, которые приглянулись мне. Если вы не планируйте писать на рейлс, то думаю вам всё-таки будет интересно познакомиться с некоторыми вкусностями, которые можно без труда портировать на другие языки (многое уже сделано для РНР, в том числе и мной).
                  Читать дальше →