• Ресайз картинок в браузере. Все очень плохо

      Если вы когда-нибудь сталкивались с задачей ресайза картинок в браузере, то вы наверное знаете, что это очень просто. В любом современном браузере есть такой элемент, как холст (<canvas>). На него можно нанести изображение нужных размеров. Пять строчек кода и картинка готова:

      function resize(img, w, h) {
        var canvas = document.createElement('canvas');
        canvas.width = w;
        canvas.height = h;
        canvas.getContext('2d').drawImage(img, 0, 0, w, h);
        return canvas;
      }
      

      Из холста картинку можно сохранить в JPEG и, например, отправить на сервер. Можно было на этом закончить статью, но сперва давайте взглянем на результат. Если вы поставите рядом такой холст и обычный элемент <img>, в который загружена та же картинка (исходник, 4 Мб), то вы увидите разницу.

      img
      Читать дальше →
    • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

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

        И что же них такого деформированного?
      • Почему товары Apple разработаны в Калифорнии, но собраны в Китае

        • Перевод
        Посмотрите на заднюю панель своего айфона, айпада или макбука. Вы увидите слова «Designed by Apple in California. Assembled in China.» Многие американцы, включая самого президента, задавались вопросом, почему Apple вынесла практически все свои производственные мощности за границу. В прошлом году на званом обеде с участием президента и управляющих важнейшими технологическими компаниями США, Обама прямо спросил Джобса, чего будет стоить вернуть рабочие места в Штаты. По словам Джобса, не существует никаких возможностей для этого.

        Почему не существует? Почему айфоны, айпады и все прочие магические гаджеты компании Apple не могут быть произведены в США? И вообще, почему американские компании по производству бытовой электроники и компьютеров не могут собирать больше своих товаров в родной стране, создавая новые рабочие места и помогая экономике в борьбе с кризисом?
        Читать дальше →
      • Если бы плотников нанимали так же, как программистов

        • Перевод

        Интервьюер: Итак, вы считаете себя плотником?
        Плотник: Всё верно. Это именно то, чем я занимаюсь.

        Интервьюер: Как долго вы занимаетесь этим?
        Плотник: Десять лет.

        Интервьюер: Очень хорошо. А теперь я бы хотел задать вам несколько технических вопросов, чтобы оценить, насколько вы впишетесь в нашу команду. Договорились?
        Плотник: Конечно, было бы неплохо.

        Интервьюер: Должен вам сказать, что мы работаем в подразделении, занимающимся постройкой большого количества коричневых домов. Доводилось ли вам строить множество коричневых домов?
        Плотник: Ну, я же плотник — я строю дома, а люди уже красят их так, как пожелают.

        Интервьюер: Да, я понимаю, но не могли бы вы подсказать мне, сколько у вас опыта именно с коричневыми? Ну, плюс-минус.
        Плотник: Я действительно понятия не имею. С того момента, как дом построен, меня не волнует, в какой цвет его покрасят. Может, шесть месяцев?
        Читать дальше →
      • Жизнь разработчика (в картинках)

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

          Когда я показываю босу, что окончательно пофиксил баг



          Когда проджект-менеджер входит в офис



          Читать дальше →
        • «Умная» ложка LiftWare поможет людям с нарушениями нервной системы (тремор рук)



            Сейчас умнеют не только чашки со стилусами, но и кухонные принадлежности, например, ложки с вилками. К примеру, ложка от LiftWare помогает людям с нарушениями нервной системы, которые приводят к тремору (постоянному дрожанию) рук.

            Такой тремор наблюдается у людей с болезнью Паркинсона (причем такое заболевание поражает не только пожилых людей, достаточно вспомнить о Мухаммеде Али). И нормально людям с нарушениями нервной системы достаточно сложно. Именно для таких людей и предназначены ложки от LiftWare.

            Читать дальше →
            • +12
            • 11,3k
            • 4
          • Back/Forward Cache — механизм кеширования страниц в браузере

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

            Не «баг», а «фича»

            Помимо прочего, непонимание данного механизма браузеров вызывает настоящую головную боль у разработчиков. Рассмотрим пример.
            Есть форма, данные которой мы хотим отправить на сервер. Мы хотим как-то визуализировать этот процесс и запускаем спиннер при отправке формы. Браузер переходит на следующую страницу. Если мы вернемся назад, используя кнопку браузера «Назад» (или через window.history.back()), то скорее всего увидим, что спиннер так и вращается, хотя на самом деле уже ничего не происходит.

            Разработчик может посчитать, что данное поведение ни что иное как баг браузера или какая-то его особенность, и в поисках быстрого решения бездумно вставить лишний обработчик на событие unload (первый пункт в списке, приведенном дальше). Тем самым разработчик отказывается от BFCache вообще, тем самым лишая своих пользователей возможности практически мгновенного перемещения по посещенным страницам.
            Читать дальше →
          • Всё, что вы должны знать о прототипах, замыканиях и производительности

            • Перевод
            • Tutorial

            Не всё так просто


            На первый взгляд, JavaScript может показаться достаточно простым языком. Возможно, это из-за достаточно гибкого синтаксиса. Или из-за схожести с другими известными языками, например, с Java. Ну или из-за достаточно малого количества типов данных, по сравнению с Java, Ruby, или .NET.

            Но в действительности, синтаксис JavaScript гораздо менее прост и очевиден чем может поначалу показаться. Некоторые наиболее характерные черты JavaScript до сих пор неправильно воспринимаются и до конца не поняты, особенно среди опытных разработчиков. Одна из таких черт — производительность при получении данных (свойств и переменных) и возникающие при этом проблемы с производительностью.

            В JavaScript поиск данных зависит от двух вещей: прототипного наследования и цепочек областей видимости. Для разработчика понимание этих двух механизмов совершенно необходимо, ибо ведет к улучшению структуры, а, зачастую, ещё и производительности кода.
            Читать дальше →
          • Один из подходов к отладке решений для SharePoint

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

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

            Стандартный процесс включения отладки и сам процесс следующий:
            Читать дальше →
          • Вы до сих пор не любите JavaScript?

            С началом эпохи HTML5, рынку понадобилось большое количество JavaScript программистов. Многие специалисты по другим языкам, начали массово переориентироваться на JavaScript. Я много раз видел, как программисты с большим опытом ругали этот, один из самых гибких и могучих, язык, не понимая его принципов. В этой статье я постараюсь рассказать суть и философию JavaScript. Здесь будет всего 4 строчки кода и много-много того, что не напишут в учебниках. Обещаю, что вы полюбите этот язык, или по крайней мере, станете эффективнее в нём. Итак, поехали!
            Читать дальше →