• Паралич анализа: вы знаете слишком много, чтобы просто писать код

    • Перевод

    Это перевод статьи Analysis Paralysis: Over-thinking and Knowing Too Much to Just CODE Скотта Хансельмана за 30 марта.

    Прочитал сегодня пост на ArsTechnica «Я знаю слишком много чтобы программировать быстро. Что мне делать?» — это обзор вот этого вопроса на StackOverflow:

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

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

    Это просто бомба, прямо про меня. Я тоже недавно задумывался, а не от возраста ли появляются такие проблемы, но я просто не настолько стар. Проблему создаёт огромный опыт вкупе со слишком глубоким обдумыванием задачи. Я опытнее многих, но, очевидно, не настолько опытный, чтобы не страдать от паралича анализа.
    Читать дальше →
  • Лёгкий способ писать iOS приложения на вебе

      Всем привет. Не так давно Габриель подарил нам игру 2048. Это тот самый удивительный случай, когда клон игры становится более популярный, чем оригинал. Не малая часть успеха Габриеля — открытый код и, вуаля, MIT лицензия. Набрав чуть больше 20к очков, захотелось поделиться результатом с друзьями, кроме как сделать скриншот не получилось. Глянул аппстор на наличие клона с геймцентром или чем-то подобным — пусто. И тут подумал, почему бы нет?
      Забегая вперёд, на создание приложения и всех «ништяков» к нему ушло 4 дня. На выходе универсальный код, который от части работает и в вебе и легко портируется на иос/андроид. Однако, давайте по порядку.


      Читать дальше →
    • Некоторые особенности VimL


      В этой статье я хочу рассказать о некоторых особенностях VimL, зачастую неочевидных, которые надо знать человеку, желающему написать хорошее дополнение для Vim. Для понимания статьи требуется знание vimscript и рекомендуется наличие как минимум одного написанного дополнения. Людям, не желающим написать своё собственное дополнение статья будет, по большей части, бесполезна.
      Читать дальше →
      • +22
      • 4,9k
      • 3
    • Компиляция. 1: лексер

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

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

        Далее в посте:

        1. С какой стати писать компиляторы?
        2. Общий план
        3. Анализ текста
        4. Практический пример
        5. Как это работает?
        Читать дальше →
      • Элементы DSL на PHP: как сделать библиотечные API удобнее в использовании

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

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

          Читать дальше →
        • Горячая замена кода (code hot swapping) в РНР

            Погода за окном просто требует чего-то горяченького, поэтому воспользовавшись возможностью что-то по исследовать в свободное время, я решил подумать — а можно ли не останавливая скрипт, подменить функцию, которая выполняется? С таким требованием я встретился чуть ранее, при разработке нашего стартапа. У нас был один из внутренних серверов, который заведовал всеми действиями между пользователями в реальном времени. Это обычный РНР-демон-роутер, который обрабатывал запросы от клиентских запросов (внутри сервера), но была одна сложность — в случае, когда я что-либо изменял в коде сервера или обработчиков отдельных команд, демон приходилось перезагружать, что означало отключение текущих клиентов и потеря информации о состоянии сервера (этот вопрос решаемый, конечно). То же самое было в случае ошибки в коде — все подключенные пользователи сразу это чувствовали на себе (хорошо, что все они такие же разработчики, а не реальные клиенты). Можно ли этого избежать?

            Конечно можно, например, отказавшись от скриптов-демонов, как мы и сделали. Однако это проблему не сняло, просто переместило ее в другую плоскость. Ведь остались другие сервисы-демоны, которые также должны работать непрерывно, хоть их значимость меньше, однако перезагружать каждый раз не очень то хочется. Поэтому решил я поискать возможность на лету подключать новый код и сразу его исполнять. Минимальным кодом будет функция, но вполне возможно подключать и методы классов.
            Читать дальше →
          • «Агония IT проекта» или «Как узнать, что лошадь мертва?»

              Студентов MBA на западе учат древней индейской мудрости — если Вы замечаете что лошадь, на которой Вы скачете сидите, мертва, то лучше всего с неё слезть. Применимо к бизнесу и стартапам это означает, что если продукт помер, его часто лучше списать в утиль и идти дальше, чем вкладывать деньги в реанимацию или особенно бездействие. Замечу, что даже сидя на мёртвой лошади менеджмент может быть уверен, что скачет галопом в светлое будущее. Многие будущие CEO эту мудрость на вооружение берут более дословно — мол не зазорно уйти с тонущего корабля одним из первых, существуют и другие выводы, результирующие из недо-, пере- и иначе-понимания этой мудрости.

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

              Что мы делаем когда закрадывается смутное предположение, что компания скачет на мёртвой лошади:

              [ Индикаторы класса «Возможны ложные срабатывания» ]
              — Мы достаём более хлёсткий и мощный кнут для мёртвой лошади (а нередко и на конюхов розг хватает)
              — Ждём, ничего не делаем, ведь мы всегда точно так ездили на мёртвых лошадях и раньше проблем не было
              — Меняем наездника. Когда мёртвая лошадь не скачет виноват обычно он
              — Облагораживаем стойло, достаём конюхам пряников
              — Едем за бугор, там с незапамятных времён водились наездники на мёртвых лошадях, перенимаем их опыт
              — В добровольно-принудительном порядке предлагаем курсы верховой езды сотрудникам отдела
              — Создаём группу и анализируем мёртвую лошадь, время смерти и меру окоченения
              — Признаём мёртвую лошадь неверно аттестованной, она живее всех живых

              Более веские приметы под катом
              Читать дальше →
            • Где погрызть гранит науки

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

                UPD. Переранжировал сайты. В категорию «Компьютерные науки» попали те сайты, которые можно внести более, чем в одну из нижеперечисленных категорий. Ранжировка производилась по большинству содержимого, то есть в некоторых сайтах, отнесенных к определенной категории, могут попадаться статьи не относящиеся к определенной, но они будут составлять абсолютное меньшинство

                Большое спасибо в помощи добавлении ресурсов vansickle, RedFox, kagen, theinterman, sM1Le.

                Англоязычные ресурсы



                Компьютерные науки



                OpenCourseWare MIT




                Одно из самых больших хранилищ учебных курсов. Здесь собраны практически все курсы, которые преподаются в Massachusets Institute of Technology, который по праву считается одним из лучших в мире. На сайте всего 1900 курсов, а тех, которые преподаются на факультете Electrical Engineering and Computer Science я насчитал более 200. Состав большинства курсов: краткие конспекты лекций, подробное описание курса, календарный план, задания на лабораторные работы, задания на курсовые проекты и экзамены, промежуточные модули. К некоторым курсам прилагаются и видеолекции.

                смотреть другие сайты
              • Запуск виртуальной машины в VirtualBox без GUI

                  VirtualBoxИногда возникает необходимость запустить виртуальную машину на хосте без иксов. Я расскажу о том как это сделать, имея доступ к хостовой системе только по ssh + rdp (Remote Desktop Protocol). процесс я буду описывать для OC Ubuntu 9.10 в качестве хоста.
                  Читать дальше →