• Горячая перезагрузка Chrome-расширения

    • Tutorial

    На днях возникло желание написать простенькое расширение для Google Chrome. Столкнулся с такой проблемой, что после изменений в коде расширения, браузер не перезагружает его автоматически. Это очень сильно затрудняет разработку, т.к. после каждого Cmd-S в редакторе, приходится нажимать "Reload" в списке расширений, а затем еще и рефрешить страницу, чтобы перезапустить контент-скрипты.


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


    Готовое встраиваемое решение лежит на github.com/xpl/crx-hotreload, а в этой статье я расскажу, как оно реализовано.

    Читать дальше →
    • +14
    • 4,3k
    • 7
  • JavaScript: где мы сейчас и куда двигаться

      Привет, хабраюзер. Поскольку, судя по всему, мы уже живем в будущем, то недавно я плотно засел за изучение новых фич ES6, ES7 и новых идей, предлагаемых React и Redux. И написал для своих коллег статью, в которой изложил сублимацию этих своих изысканий. Статья неожиданно получилась довольно объемной, и я решил опубликовать её. Заранее извиняюсь за некоторую непоследовательность изложения и отсылки к проприетарному коду из наших проектов — но думаю, что это всё же может помочь некоторым из нас лучше понять то, куда движется мир JavaScript, и почему не стоит игнорировать происходящее в нём.


      Я расскажу про свои мысли о компонентых моделях, классах, декораторах, миксинах, реактивности, чистой функциональности, иммутабельных структурах данных и ключевой идее React. Сразу скажу — я не являюсь пользователем React, и все изложенное это результат чтения его документации и технических статей, объясняющих его архитектуру. То есть, некоторое идеализированное преставление, которое безусловно лишь упрощенная модель того, как оно всё на самом деле обстоит.


      Читать дальше →
    • It’s the future

      • Перевод

      Этот пост просто шутка и не пытается выставить инструменты, упомянутые здесь, в дурном свете. Я использую их постоянно, они великолепны, и я рекомендую их использовать. По мотивам It's the future @ CircleCI Blog


      — Эй, я бы хотел научиться писать крутые веб-приложения. Слышал, у тебя есть опыт.


      — Да, я как раз занимаюсь фронтендом, юзаю пару тулз.


      — Круто. Я щас делаю простое приложение — обычный TODO-лист, используя HTML, CSS и JavaScript, и планирую заюзать JQuery. Это норм?


      — Не-не-не. Это олдскул. Джиквери мёртв — никто не использует его теперь! Тебе нужен React. Это будущее.


      — Окей, лады. А что это?


      Читать дальше →
    • Sublime Text: валидация синтаксиса, автодополнение (v.1.1)

        UPD: по совету комментаторов, заменил jsl на более новый eslint

        Заметил у себя на работе, что многие JS-разработчики до сих пор используют «голый» Sublime Text, матерясь и чертыхаясь после каждой пропущенной запятой, непарной скобочки или еще какой опечатки. Поэтому написал краткий гайд по исправлению этого недоразумения, которым с вами и делюсь. Итак:
        Читать дальше →
        • +6
        • 21,6k
        • 9
      • C++/CLI — «клейкий» язык

          В этом топике я расскажу про C++/CLI — промежуточный язык для склеивания кода на C/C++ и .NET

          Это довольно распространённая задача, ведь на C/C++ написаны тонны проверенного временем высокопроизводительного кода, который невозможно переписать на управляемые языки.

          Наша задача — обеспечить .NET-интерфейс к этим библиотекам. Но как это сделать, если они написаны на C/C++?

          Microsoft предлагает два варианта решения проблемы.
           
          Читать дальше →
        • Three Futamura Projections и не только

            Привет, хабрачеловек. Сегодня я расскажу тебе про некоторые фундаментальные вещи в computer science: частичные вычисления, три проекции Футамуры и суперкомпиляцию.
             
             

            1. Сразу к коду


            -- функция, которая возводит x в степень y (неотрицательную)
            power x y =
                case y of
                    0 → 1
                    1 → x
                    _ → x * (power x (y - 1))


            Читать дальше →
          • South — новый клёвый syncdb

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

              А добавление или удаление полей в уже существующие модели превращается в настоящий pain in ass — приходится «подсматривать» за тем, как ORM создала бы таблицы заново (manage.py sqlall) и вручную делать ALTER TABLE для изменившихся столбцов таблиц.

              То есть, ORM в Django так или иначе предполагает активный трах с SQL shell, потому что в процессе прототипирования эти поля в моделях изменяются просто пачками.

              Погуглив, я нашел несколько способов...
            • Всплывающие извещения — зло

                Когда жмешь на кнопку 'Сохранить' в профайле — ничего не происходит.

                Ну, почти ничего.

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

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

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

                Кстати, пока писал пост — вылез поп-ап «Возникла ошибка в получении XML данных». WTF? Нельзя так сообщения об ошибках делать. Надо сообщать о том, что именно не удалось сделать, а не техническую причину этого.
              • Чем изучение Haskell/Python вредит программисту

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

                На этот перевод меня толкнула очередная ситуация «мозгового ступора» при написании банального кода на C++/C#: я часами смотрел на уродливый код, но не мог сделать его по-настоящему лучше; мне пришлось просто принять то, что уродливым его видел только я один, и это была моя проблема, а не проблема в коде или языке. Я вспомнил те времена, когда такого со мной не было — а заодно вспомнил и эту старую статью, автор которой пострадал так же, как и я, при этом хорошо написав об этом.


                Я обнаружил, что изучение Python и Haskell не улучшило меня как программиста на других языках (что противоречит тому, что иногда пишут об этом). В частности, Haskell — являясь настолько непохожим на императивные языки — по идее, должен был дать мне просветление в программировании, которое помогало бы мне даже без использования какого-либо языка вообще. Мой текущий опыт не совсем соответствует этому, и вот, почему:
                Читать дальше →