Подсветка синтаксиса — HTTP API

13.12.11 00:04

Подсветке синтаксиса добавил HTTP API. Теперь, например, можно будет написать плагин к WordPress.

Оставьте свой комментарий

Островок.ру

28.11.11 02:06

Уже как неделю работаю в островке разработчиком интерфейсов.

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

Летом, когда много работал дома, экспериментировал с методикой [info]miumau: 45 минут работаешь, 15 отдыхаешь. И успешно перенес ее в офис. Конечно бывает, что полдня невозможно соблюдать темп из-за взаимодействия с коллегами. Но все равно, когда я знаю, что впереди есть немного спокойного времени, очень легко вхожу в поток.

Оставьте свой комментарий

Подсветка синтаксиса

20.11.11 21:54

ЯЛ 276, GR 82, PR 3, тИЦ 30

Сделал онлайн подсветку синтаксиса языков программирования как в TextMate. Для вставки на сайт или блог.

http://markup.su/highlighter/

Стили подсветки у TextMate отличаются своей красотой и открытым кодом. Например, редактор Sublime Text 2 тоже взял за основу ее расцветку и логику.

Ближе всего, к моей реализации проект на руби Ultraviolet. По началу думал использовать его в качестве бэкэнда, но он работал очень долго. Где-то 5-7 секунд на простом коде.

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

В итоге получился быстрый и красивый сервис для подсветки кода.

В комментах можно писать о найденых багах :)

Оставьте свой комментарий

TouchSlider — javascript библиотека для галерей

11.11.11 19:14

Сделал слайдер для использования разработчиками на своих сайтах.

Сайт библиотеки.

Предыстория примерно такая: каждый раз, когда надо было сделать слайдер, я писал 50 строк кода, и все работало. А в процессе появлялись три недоделки, которые требовали больше времени и не имели готового решения:

  • В тач устройствах нет поддержки жестов
  • Анимация в iOS тормозит
  • Переход между слайдами проматывает все слайды. Что бы не было мельтешения. Например, если со второго слайда переходить на двенадцатый, перед пользователем не должен нестись Сапсан из десятка слайдов

Летом время появилось, и я решил реализовать такой слайдер. И еще мелочи. Весит 3КБ (minified и gzipped). Исходный код на GitHub.

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

  • Фоторама фото слайдер
  • Roto фото скроллер
  • Galleria анимации во время жестов нет, но сами жесты поддерживаются. Есть фуллскрин и лайтбокс
  • iScroll 4 библиотека для скроллинга. Часто этого достаточно. Используется с модификациями на сайте Apple
  • http://codecanyon.net/category/javascript/sliders много платных красивых скриптов. Везде много мелких недочетов, но красиво и готово к использованию.
Оставьте свой комментарий

</SUP>

20.05.11 14:03

Сегодня мой последний рабочий день в СУПе.

За прошедшие три с половиной года я сделал на яваскрипте много всего. Из важных для меня это jotsky, чат для жж на базе live messenger (закрыт), LJTimes, список желаний и на той неделе friendstimes. Это было невероятной удачей перепробовать множество подходов к архитектуре и взаимодействию разных технологий.

На работе я познакомился с каким-то огромным количеством человек. Только в мессенджере у меня 85 людей работавших вместе со мной. Например, попиарю репортажного фотографа [info]Егора Савинцева и сервис фотоблогов Игоря Аскарова.

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

А для техническим специалистов есть шанс влиться в команду Живого Журнала, в которой я работал: вакансии для верстальщиков, яваскрипт программистов и перловиков.

Оставьте свой комментарий

Метроном

11.04.11 19:11

Приехал немецкий метроном из штатов.

Метроном

Хотя вся затея ради возможности посмотреть на реакцию таких кошечек вживую

Оставьте свой комментарий

wtf-tv.ru

05.04.11 11:33

Сделали сайт с видео на пару с [info]antarakanov (и команда). На нем выкладываются интервью и видео зарисовки с блогерами.

Сегодня, в 12 дня они должны быть в офисе СУПа, а я вчера как назло разболелся. Коллеги, вы там встретьте их по радушнее пожалуйста :)

Оставьте свой комментарий

Как не забыть вещи в бассейн

31.03.11 23:41

Что бы с утра не забыть вещи для бассейна, мне помогает счет до шести (сланцы, плавки, очки, шампунь, чистые трусы и пакет).
Оставьте свой комментарий

Свободное время

19.03.11 23:57

Ради чего я освобождаю время? Откуда черпать энергию? Кого искать?

Нашел нужные слова в отрывке из книги «Все, что мне нужно знать, я узнал в детском саду»:

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

Оставьте свой комментарий

Тест Желаний (Wishlist)

17.12.10 19:49

Поляризационный светофильтр

Поляризационный светофильтр

http://market.yandex.ru/search.xml?hid=994004&glfilter=6390885:6390895&glfilter=6375048:67,67

View full wishlist

Почитать: http://tema.livejournal.com/406335.html

Сделали для ЖЖ список желаний. Хорошо получилось.

Моя карма разработки LJ Messenger → Share This → LJTimes закончилась ;)

В комментах можно устроивать баг-коллектор.

Оставьте свой комментарий

JavaScript функция проверки замусоривания

28.09.10 01:01

Переменные постоянно рвутся к глобальной области видимости. Особенно жуткими бывают всякие i и j, которые не понятно как искать.

Для периодического отстрела, написал функцию window_diff. Она запоминает состояние объекта window: до и после вызова функции, и выдает разницу.

<script type="text/javascript">
    function window_diff()
    {
         var ary = arguments.callee.ary, i, new_ary = [];
         if (ary) {
              for (i in window) {
                   if (!~ary.indexOf(i)) {
                        new_ary.push(i);
                   }
              }
              console.log('window_diff', new_ary);
              arguments.callee.ary = null;
              return ary;
         }
         ary = [];
         for (i in window) {
              ary.push(i);
         }
         return arguments.callee.ary = ary;
    }

    window_diff();
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
    window_diff();
</script>

Интересно, а можно переписать этот код сеттерами? Тогда можно следить, кто мусорит во время жизни страницы.

Не стоит забывать, что JSLint умеет подсказывать, какие глобальные переменные мы наобъявляли. Иногда проще скормить код ему.

А может это умеют делать еще какие-то инструменты?

Оставьте свой комментарий

Петерхост и Python

08.02.10 15:57

ЯЛ 247, GR 84, PR 4, тИЦ 90

Тихо мирно ввел поддержку Python. Не анонсировали, видимо, для внутреннего тестирования. Узнал благодаря твиту.

Я на радостях даже сделал страничку, где можно посмотреть всё ПО которое стоит на сервере. Их вика не успевает за обновлениями, заставляя идти в консоль и проверять версию.

Текущие значания:

  • Apache: 1.3.41
  • PHP 5: 5.2.8
  • PHP 4: 4.4.9
  • MYSQL: 5.0.77
  • Zend: 2.2.0
  • Perl: 5.008008
  • Python: 2.5.2
  • C++: 3.4.6

Раньше мне казалось, что обилие языков нужно для покрытия клиентов, а самому программисту хватает одного языка. А вот недавно мне понадобился серверный C++ и перловый XSD конвертер аналог которого есть только на java. И мой монополярный php мир, рухнул. Кстати, если кто знает конвертер который понимает старые dtd'шки аля правила валидатора html 3.2, скажите.

UPD: добавил mysql.

42b936c07f55ef16ce063092fce4d37b
Оставьте свой комментарий

Обновил lusever.ru

20.01.10 16:17

ЯЛ 224, GR 83, PR 4, тИЦ 80

Изменил только главную страницу.

Для svg анимации используется Raphaël, у которой та еще магия. Люди с аккаунтом на гитхабе могут поддержать меня проголосовав за баг :)

В Опере 10.50 pre-alpha сайт у меня не заработал, видимо потому что это альфа. В последней 10.10 все хорошо.

Оставьте свой комментарий

Баг FCKeditor в Опере с твердым знаком

04.11.09 00:20

Сейчас в Опере на update.bml, как и в демо CKeditor'а, можно видеть баг: вводишь твердый знак и срабатывает кнопка выделения жирным.

На работе, ругнувшись на Оперу, я удалил эту команду для оперы. По крайней мере, так делают на drupal.ru.

Дома мне стало интересно, где там у Оперы косяк, что команда не работает. Оказалось, что косяка нет, а есть нормальная поддержка русского event.keyCode. То есть, по нажатию на твердый знак, все браузеры выдают keyCode равным нулю, а опера правильный юникодный номер — 1066.

А FCKeditor делает хэш для сочетания клавиш Ctrl+B, с ключом 1066, где 1000 это контрол, а 66 кнопка B.

Решение

Переопределить константу CTRL с 1000 на 8000 в fckonfig.js. Думаю даже, сделать для надежности все три константы CTRL, SHIFT и ALT с шестью нулями.

Оставьте свой комментарий

Две кнопки submit

31.10.09 15:59

ЯЛ 229, GR 81, PR 4, тИЦ 70

В ЖЖ в формах частенько используются две кнопки submit. Обычно они идут в нужной последовательности. Например «Сохранить», а потом «Удалить».

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

Первое решение которое пришло в голову, сделать нелогичную кнопку type="button", а при клике менять на type="submit":

<input type="button" name="delete_btn" onclick="this.type='submit'"/>

Это решение не будет работать в IE6. Не позволяет он динамически менять тип.

Зато он позволяет менять имя:

<input type="button" name="delete_btn" onclick="this.form.save_btn.name='delete_btn';this.form.save_btn.click()"/>
Оставьте свой комментарий

Определение IE

01.10.09 21:40

ЯЛ 202, GR 69, PR 4, тИЦ 70

Сегодня на собеседовании узнал способ определить IE:

'\v' == 'v'

Вот как составить поисковой запрос, что бы найти первоисточник?

В нашу команду, нужны js'ники. Немного фоток из СУПа. А у Наташи описание вакансии. Спойлерю: 70т.р. Если что, в письмо вкладывайте ваш код.

Оставьте свой комментарий

Блог Пети Леонова

06.06.09 13:52

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

Исследует работу в JavaScript с датами и className у элементов 12. Бенчмарками округления i & -1. Экспрешен или header убирает imagetoolbar в IE6. Пишет расширение для Firefox highlight.js. Портрирует JavaScript в nginx.

С днем рождения, Петя.

Оставьте свой комментарий

Коротакая запись attachEvent и addEventListener

28.05.09 10:51

ЯЛ 194, GR 70, PR 4, тИЦ 70

Было:

node[/*@cc_on !@*/0 ? 'attachEvent' : 'addEventListener'](/*@cc_on 'on'+@*/'click', myfunction, false)

Стало:

node[/*@cc_on'attachEvent'||@*/'addEventListener'](/*@cc_on'on'+@*/'click', myfunction, false)
node[/*@cc_on'detachEvent'||@*/'removeEventListener'](/*@cc_on'on'+@*/'click', myfunction, false)

Пробелы по краям условной компиляции оказались не нужными.

Оставьте свой комментарий

[Mac OS X] Управление диалоговыми окнами с клавиатуры

13.04.09 13:05

Нашел в комментариях у Ильи Бирмана:

Чтобы табом по кнопкам скакать:

EN: System Prefs — Keyboard & Mouse — Keyboard Shortcuts — выбрать All Controls в «Full keyboard access» (внизу)

RU: Системные настройки — Клавиатура и мышь — Сочетания клавиш — выбрать Всеми объектами управления в «Полный клавиатурный доступ» (внизу)

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

Как же мне это не хватало в iTunes:

iTunes dialog

Оставьте свой комментарий

[Mac OS X] ImageOptim 1.0.9

08.04.09 17:48

ЯЛ 187, GR 68, PR 4, тИЦ 100

Как-то с [info]pepelsbey на Клиентсайде мы говорили о том, что было бы круто, если написать программу, которая массово оптимизирует картинки. Без консоли, без лишних настроек. Сама бы выбирала оптимальный алгоритм.

Если учесть количество доступных консольный программ таких как PNGOUT и Jpegtran, сделать это было вполне логичным.

И в сентября 2008 года незаметно вышла опенсорсная программа ImageOptim которая имеет внешний интерфейс для тех самых консольных программ: AdvPNG, OptiPNG, PngCrush, JpegOptim, Jpegtran, PNGOUT. Их алгоритмы пережимают изображения и удаляют копирайты с комментариями, не изменяя само изображение.

ImageOptim

Работает простым киданием файлов/папок в программу.

Для примера я взял файлы с головной страницы www.livejournal.com. Вес до – 164 КБ, после – 144 КБ.

После недели тестирования, на пяти сайтах ни одна картинка у меня не сломалась.

Выбросил Ping за ненадобностью.

Оставьте свой комментарий
navigation
[ viewing | most recent entries ]
[ go | earlier ]