• Продвинутое использование объектов в JavaScript

    • Перевод
    Этот пост выходит за рамки повседневного использования объектов в JavaScript. Основы работы с объектами по большей части так же просты, как использование JSON-нотации. Тем не менее, JavaScript дает возможность использовать тонкий инструментарий, с помощью которого можно создавать объекты некоторыми интересными и полезными способами и который теперь доступен в последних версиях современных браузеров.
    Читать дальше →
  • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

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

      И что же них такого деформированного?
    • Быть Чубаккой, или невербальная коммуникация. Немножко практики

        Лавра Федотовича это затруднение наконец утомило, и, прервавши оратора, он произнес только одно слово:
        — Неубедительно.
        Раздался тяжелый удар. Большая Круглая Печать впилась в мою заявку.
        А. и Б. Стругацкие. «Сказка о Тройке»



        Доброе утро, Хабр.

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

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

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

        Микро-тренинг #1
      • Монолог инкогнито с одной айтишной конференции

          Disclaimer. Монолог ниже является стенограммой выступления одного из докладчиков на одной из айтишных конференций. Автор поста всего лишь публикует его здесь с разрешения докладчика.

          Всем привет!

          В программе мероприятий вам обещали инкогнито долларового миллионера. Увы, он отбыл на воды в Баден-Баден лечить переговорную печень и пришлось затыкать дыру кем попало.

          Меня зовут Сергей. Чтобы сказать про себя «я плохой докладчик», нужно хотя бы им, докладчиком, быть. Я вообще не оно. Свою первую и одну из последних презентаций я провел в 18 лет в Испании, перед аудиторией человек в 100. Мой весьма средний на тот момент английский синхронно переводили на испанский, народ зевал и почесывал репы, ожидая когда ЭТО недоразумение закончит блеять и объявится кофебрейк.

          Сказать что мне было стыдно — это ничего не сказать, красный как рак, я свалил вторым выходом, забился в свой номер и боялся показаться на глаза. Всякие public professionals типа Карнеги сказали бы «позор!» и «never again!». Для себя я решил — все что угодно, хоть жигулевское пиво по пятницам, только не публичные экзекуции

          К чему это я? Многие, глядя на ИТшников, путают скромность со стеснительностью. Да и фиг с ними. Главное — чтобы мы сами не путали. Я — стеснительный, поэтому буду смотреть в пол и читать по бумажке. Я бы выпил, конечно, для смелости, граммчиков сто (а лучше сто пятьдесят), но организаторы запретили. Ну что, пусть фигово, зато честно!

          Я владелец компании П, в которой мы уже лет 13 или 14 занимаемся разработкой всякой фигни, про которую никто не слышал. Не имея таланта делать что-то красивое и эстетичное, мы довольствуемся подводной частью айсберга: софт-свитчи и клиенты для IP-телефонии, аппаратно-программные решения для высоконагруженных систем обработки контента, системы имперсонализации web и e-mail для виртуального присутствия, облачное видеонаблюдение, несколько справочных и торговых интернет-порталов, ну и еще пара проектов в стадии стартапа, говорить о которых рано, потому что стыдно

          Все о чем собираюсь сказать, основано исключительно на личном опыте, относится к маленьким компаниям и совершенно не обязано работать в больших, хотя иногда бывает. За 25 лет, отданных айти-бизнесу, я умудрился побывать в разных шкурах, от техника, подносящего кофе джуниор девелоперам, до владельца компаний, которому не надо вставать в 8. Посредине между этими сомнительными гранями было, наверное, два главных увлечения — язык Си и темное ирландское пиво. Увы, и то и другое со временем пришлось сильно урезать.
          Читать дальше →
        • Беспроводной звук. Часть 1. Препарируем Bluetooth

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

            Такая история со мной приключилась в момент обзора с коллегой r3s потребительской беспроводной Bluetooth-акустики Klipsch KMC 3. Я столкнулся с ситуацией, когда «беспроводной» аудиопоток начинал безбожно прерываться, стоило лишь мне расположить источник звука у себя за спиной. Пищи для размышлений мне подкинула другая Bluetooth-аудиосистема, которая в тех же условиях вела себя куда лучше. Такая простая проблема выродилась в нырок с головой во внутренности протокола Bluetooth и детали передачи аудио с его помощью.

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

            • Перевод
            Примечание переводчика: Оригинал здесь. Все примеры в оригинале написаны на JavaScript, но я решил перевести их на Scheme. Уверен, менее понятно не стало, но зато видна вся красота этого языка.
            UPD: добавил ко всем примерам справа еще и оригинальные примеры на JavaScript.


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

            Для понимания примеров в этой статье необходимы базовые понятия о функциях в LISP (Scheme). Если вы понимаете, что напечатает этот код, можно смело читать дальше:

            (define x 10)
            
            (define (f y)
                (display x) (newline)
                (display y) (newline)
            )
            
            (define g f)
            (f 1)
            (g 2)
            

            var x = 10;
            
            var f = function(y) {
                console.log(x);
                console.log(y);
            }
            
            var g = f;
            
            f(1);
            g(2);
            


            Эта статья — просто разминка для мозгов, а не то, что можно было бы использовать в реальном коде. Но как гитарист играет гаммы, которые он никогда не использует в настоящей песне, так же и программистам стоит разминать свои мозги время от времени.
            Читать дальше →
            • +37
            • 7,7k
            • 9
          • Основной цикл в Javascript



            Все мы слышали про ajax и node.js. Они прочно обосновались уже не просто в словарном запасе, но и в наборе инструментов веб-разработчика. Ajax — асинхронное подтягивание данных с сервера на страницу, node — фреймворк с асинхронным IO. Но как в таком однопоточном языке, как Javascript, реализуется та самая асинхронность?

            Вы, наверное, уже догадались из заголовка, речь пойдет об основном цикле («main loop»).
            Читать дальше →
          • Генерация случайных лиц в PaperJS



              Синтетические изображения обычно выглядят неестественно, не по-человечески, и тренированный глаз сразу их отличает от настоящих. Проект Weird Faces Study — это попытка объединить традиционную технику «человеческого» рисунка и компьютерные алгоритмы. Результат — сгенерированные компьютерные лица, каждое из которых уникально и выглядит как оригинальная авторская работа.
              Читать дальше →
            • Pixi.js — 2D движок с прозрачной поддержкой WebGL

                Pixi.js позволяет использовать мощь WebGL для рендеринга 2D-сцен, совершенно не вникая в подробности реализации, более того, он умеет самостоятельно определять наличие поддержки WebGL и переключаться между способами рендеринга. В отсутствие WebGL рендеринг осуществляется средствами canvas. Кроме того в Pixi.js реализован граф сцены, поддержка текстур и спрайтов, чуть больше недели назад в нём появилась поддержка интерактивности — на спрайты можно повесить обработчики событий мыши и тачскрина.
                Читать дальше →
              • Мягкие ссылки на страже доступной памяти или как экономить память правильно

                  image
                  Все java-разработчики, рано или поздно, встречаются с пресловутой ошибкой OutOfMemoryError. 
                  После этой встречи мы начинаем более бережно относится к используемой памяти, экономить ее. Начиная с версии 1.2 в Java появился пакет java.lang.ref.* с классами SoftReference, WeakReference, PhantomReference. Далее я расскажу вам о том, как помогут эти классы в борьбе с OutOfMemoryError. И что более интересно, приведу реальные примеры их использования. Начнем.
                  Читать дальше →