Камасутра для оратора. Заметки. Глава 1.

Камасутра для оратора. Заметки. Глава 1.

Вроде бы я еще не писал о том, что я был на конференции Google Developers Day 2008. Про саму конференцию я как-нибудь в другой раз напишу (если напишу вообще, все ж таки информационный повод не первой свежести).

Сегодняшняя же заметка будет вот о чем: на этом самом дне разработчиков посчастливилось мне побывать на выступлении талантливого оратора Brad’a Neuberg’a. И очень сильно мне запало в душу его умение ладить с аудиторией и объяснять простым языком достаточно сложные вещи. На мой взгляд, он вообще один из лучших ораторов, которых я когда либо видел.

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

 Интересно?

jQuery 1.3.1 вышел

jQuery 1.3.1 вышел

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

  • Распаковка скрипта. Да, eval медленная штука, а eval таких объемов данных – очень медленная штука. В итоге получается, что «полезный» код начинает работать позже, чем если бы он был minified, даже с учетом того, что уpackованный скрипт загружается быстрее.
  • После того, как была такая нагрузка на движок JS, и было занято столько памяти под распаковку, некоторое время движок не сможет работать в полную скорость – пока не отработает сборщик мусора, да и некоторое количество памяти все равно будет занято под изначальный код скрипта. И в итоге и работать скрипт будет медленнее, если браузер получит его упакованным в packer.

О таких «мелочах», что уpackованный скрипт в разы труднее дебажить, и упоминать не будем.

Короче, хорошо, что ребята перешли на использование моего любимого YUI Compressor‘a. Вообще, мне полагается сейчас скакать до потолка с криками «А я ведь говорил, я знал, я ЗНАЛ!». Но, так как письменных свидетельств того, что я уже неоднократно негативно высказывался об упаковке JS packer’ом не осталось (кроме как в асечных логах), то придется скромно промолчать :)

Обзор книги: Том Питерс. «Основы. Талант.»

Обзор книги: Том Питерс. «Основы. Талант.»

 

Купить на Озоне книгу Тома Питерса «Основы. Талант».

Купить на Озоне книгу Тома Питерса «Основы. Талант».

Прочитал сегодня маленькую, но очень и очень классную книжку от «сверх-гуру» Тома Питерса, называется «Основы. Талант». 

 

Это правильная книга. Книга, которую стоит читать. Она изменила меня – во время чтения я прямо чувствовал, как что-то во мне сдвигается, меняется, выпрямляется.

Ну и помимо мозговпрямляющего эффекта, Том нехило мотивирует – после чтения так и хочется вскочить и побежать что-нибудь делать. Делать великое.

Отдельной строкой надо отметить дизайн – книгу интересно читать, разглядывать, держать в руках.

Чтение даже побудило меня выписать самые ценные (на мой, разумеется, взгляд) мысли в отдельную заметку (мысли – Питерса, стиль и изложение зачастую мои):

  • Стоит делать что-то, заведомо обреченное на неудачу. И убедить всех (и коллег) в том, что вы обречены на успех. Почему это работает? Потому что если вы собираетесь сделать что-то, нацеленное на успех, значит, вы будете ориентироваться на успешных игроков. А значит, повторять то, что уже и без вас делают. А значит, ни на какой оглушительный успех вы рассчитывать не можете.
  • Идиоты продают Ролекс. Гении продают образ жизни с  олексом.
  • В конечном итоге, только продажа определяет, успешен или нет проект. А значит, каждый в наше время на полную ставку работает в отделе продаж. Продавайте «изнутри» (проект – своим коллегам, начальству), продавайте «снаружи» (ощущения – клиенту), продавайте себя (вы – бренд).
  • Нанимайте людей, которые смотрят на мир иначе, чем вы. Зачастую они вам будут неприятны, у вас не будет к ним симпатии, но именно они, их странности, приведут ваш проект к успеху. Вам нужны люди, которые смотрят на вещи с другой стороны.
  • Будете водиться с чудаками – станете чудаком. Будете водиться с занудами – станете занудами…
  • Вещи, которые изменяют мир, всегда появляются с черного входа.
  • Тупые конкуренты – тупой вы. Классные конкуренты – классный вы.
  • Почтенные компании отторгают энтузиастов.
  • Классная метафора – «Гигансткие поглощения (имеется ввиду приобретения одной корпорацией другой) == спаривание динозавров».
Fireunit Screencast

Fireunit Screencast

Сегодня, после прочтения поста Джон Резига, решил записать по горячим следам первый в своей жизни (это я к тому, что сильно ругать не стоит, а конструктивная критика приветствуется :) скринкаст.

Волновался, натурально, как мальчик, впервые снимающий с девочки лифчик, чуть до заикания дело не дошло. Что есть очень, очень плохо. Надо будет попробвать еще писать скринкасты, или подкасты, чтобы не робеть перед собственным ноутбуком со включенным микрофоном.

Видео получилось со второй попытки, продолжительность – 18 минут, звук писался через встроенный макбуковский микрофон. Писалось все в программе ScreenFlow.

Собственно, вот видео с viddler’a:


Fireunit Screencast from Alexander Ulizko on Vimeo.

Хотя лучше смотреть на самом vimeo в HD качестве, лучше видно шрифт: http://vimeo.com/2565495

Файлы тестов, полученные в результате съемки можно посмотреть в действии здесь (firefox 3+, firebug 1.2+, fireunit 0.9).

Калейдоскоп ссылок:

А как вам такой синтакс?

А как вам такой синтакс?

Все знают, что пользоваться browser-detection – неправильно. Подозреваю, эти же все знают, что правильно пользоваться так называемым object-detection. Если вы еще не входите в число этих «всех», сходите к Peter-Paul Koch’y, он подробно расписал, чем одно хуже другого.

Предположим, мы пишем класс ArrayUtilites, который удачно сочетает в себе разные вкусняшки для работы с массивами. И мы хотим, чтобы у нас был кроссбраузерный метод each. Мой вариант написания, сам алгоритм взят с MDC:forEach#compability:

if (typeof ArrayUtilites == "undefined" || !ArrayUtilites) {
    var ArrayUtilites = {};
}
 
ArrayUtilites.each = (Array.prototype.forEach) ?
    function (a, f, o) {
        Array.prototype.forEach.call(a, f, o || A);
        return ArrayUtilites;
    } :
    function (a, f, o) {
        for (var i = 0, it; it = a[i]; i=i+1) {
            f.call(o || A, it, i, a);
        }
        return ArrayUtilites;
    };

Как уважаемые любители JavaScript воспринимают такой синтакс для feature-detection? А именно, использование тернарного оператора (a ? b : c) вместо условной конструкции (if else)?

YUI.Lang is buggy?

YUI.Lang is buggy?

Сижу я, значит, никого не трогаю, починяю примус пишу один модуль, и тут выясняется неприятное: оказывается, в YUI 3.0.0.pr2, модуле Lang методы isNumber и isBoolean того. Не этого. В смысле, бажные:

    alert(YUI.Lang.isNumber(new Number(1))); // false
    alert(YUI.Lang.isBoolean(new Boolean(true))) // false

Неприятно.

 Интересно?

Релиз

Релиз

Вчера с утра релизнулись. Ну, в смысле, альфа-релиз выставили в нет.

Это было нечто – месяц ночных бдений, программирования, программирования, программирования.

Эти выходные вообще практически не спали – сидели и дотачивали.

В итоге получилась конфетка. Лучший проект (по крайней мере, с технической стороны) нашей компании на данный момент. Особенно мне нравится система поиска товаров.

Горжусь нашей командой и собой.

Весь день спал как убитый и (по заверениям очевидцев) улыбался.

P.S. Сегодня объяснял одному новичку в js, как делать анимацию. Написал образовательный мини-скрипт. Возможно, кому-нибудь пригодится – весь код подробно задокументирован. Демо тут, анимация срабатывает при наведении курсора на логотип, код в удобном виде можно посмотреть тут: http://jsbin.com/igapi/edit

command-line package manager for textmate

command-line package manager for textmate

Ползая по github’у наткнулся на замечательную консольную приблуду от небезызвестного Yehuda Katz (русифицировать его имя не рискну :).
Эта утилита позволяет из командной строки устанавливать, удалять, обновлять и просматривать список установленных bundle’ов для textmate.

Ссылка: http://github.com/wycats/textmate/tree/master

Да, кстати: устанавливайте ее из сорцов, если не хотите потом руками править исходник ;)

widget своими руками

widget своими руками

Привет.

Наверное, многие из вас пользовались стандартными javascript-виджетами, написанными как безвестными мудаками разработчиками, так и маститыми профессионалами. Есть великолепные коллекции виджетов, поставляемых в качестве плагинов к известным фреймворкам (вроде jQuery, Prototype JS, YUI), так и целые фреймворки, акцентирующие свое внимание на создании виджетов, вроде Ext JS или qooXdoo.

Но что, если вы не хотите использовать достаточно объемный фреймворк для создания простого диалогового окна, или хотите разобраться в том, как создаются такие виджеты, или даже разрабатываете собственный фреймворк?

Об этом и пойдет речь в сегодняшнем посте – как сделать простейшее диалоговое окно и alert средствами чистого javascript, без применения каких-либо фреймворков.

 Интересно?

merb 4 ninjas

merb 4 ninjas

Сабж читать лучше так:

<code>document.getElementById('warning').style.display = 'none';</code>

Ну и хочется заметить, что для «Living on the edge» очень многое устарело.

Последние твиты