Search
Write a publication
Pull to refresh
80
0
Валентин Шергин @shergin

User

Send message

Закончен предварительный перевод книги «Волшебство Git»

Reading time1 min
Views27K
Я, как и многие программисты, после знаменитого выступления Линуса Торвальдса о Git на Google Talks заинтересовался распределенными системами управления версиями, а в особенно Git.

Я довольно таки свободно читаю на английском, но мне приятнее читать на русском языке, при условии нормального перевода.
Существует замечательная книга «Git Magic» Бена Лина (Ben Lynn).
Благодаря труду многих людей вышел первый черновой вариант этой книги. Всех желающих улучшить перевод — приглашаю под кат.
Читать дальше →

Gordon: среда исполнения Flash, реализованная на джаваскрипте

Reading time1 min
Views1.2K
Вот это сюрприз! Тобиас Шнайдер (Tobias Schneider) построил среду исполнения Flash, работающую прямо во браузере. Она реализована на чистом джаваскрипте и HTML5, и все исходники являются открытыми (MIT-лицензированными), и располагаются на GitHub.

Поглядите на Gordon в действии (хостинг демонстраций осуществил Пол Айриш).

Gordon работает волшебно в последних версиях Файерфокса, Хрома и Сафари (да, и в iPhone Safari, хотя демонстрация «blue» на моём 3G идёт утомительно медленно). Чтобы установить его себе, запустите «git clone git://github.com/tobeytailor/gordon.git». Я обнаружил, что с URL «file:///» демонстрации не грузятся (в силу системы зависимостей скрипта), так что направьте ваш вебосервер на корень Gordon, а браузер направьте на demos/.

Документации ещё никакой нету, так что неясно, насколько широкой совместимостью с Flash обладает Gordon, или в каком направлении станет развиваться. Однако, по крайней мере, это мощная заявка на зрелость открытых веботехнологий.
<body onload="new Gordon.Movie('trip.swf', {id: 'stage', width: 500, height: 400})"></a>
    <div id="stage"></a></div>
</body>
[Gordon (скриншот)]
Читать дальше →

Двунаправленный асинхронный обмен данными в веб-приложениях

Reading time4 min
Views21K
Одной из основных черт современного веба эксперты называют RIA, что часто расшифровывается как тренд, когда веб-приложения по функциональности приближены к настольным приложениям. Тем не менее, это приближение весьма условно. Подавляющее большинство «обогащеных» веб-приложений по-прежнему построены по модели «запрос-ответ». Т.е. события на стороне клиента могут быть отражены на стороне сервера, никак не наоборот. Для того чтобы реализовать такую банальную вещь как чат приходиться прибегать к изощренным уловкам. Спасибо Алексу Расселу (Alex Russell) из Dojo, у нас есть даже имя для подобной техники – Comet.
Читать дальше →

Побит рекорд самого короткого кода по определению IE

Reading time1 min
Views3.3K
Без малого год назад, я уже писал (http://habrahabr.ru/blogs/javascript/50544/) о самом коротком способе определение браузера Internet Explorer, но вот некто Aleko нашел еще более короткий вариант:

-[1,]

Всего 5 байт. Пример использования:
if(-[1,]){
alert("Not IE!");
}

Делаем собственный NTP-сервер Stratum-1

Reading time3 min
Views50K
На написание этой заметки меня натолкнул хабраюзер BarsMonster со своим топиком «О точном времени».
В своей статье он призывал хабраюзеров «Давать больше Stratum-1 серверов», но не сказал как (:
Попытаюсь восполнить этот пробел.

Как мы боролись за свою статью о Wapalta в Википедии

Reading time5 min
Views18K
Уважаемые хабралюди,
В последнее время немало обсуждений ведется об удалениях статей, посвященных раличным компьютерным программам, в англоязычной части Wikipedia и об оценки критерия значимости.

Представляем вашему вниманию историю о нашем опыте взаимодействия со Свободной энциклопедией при размещении нашей статьи о программе Wapalta в русской части Энциклопедии и о борьбе за эту статью, которая в своё время подверглась безжалостному удалению.

В нашей компании мы всегда стараемся использовать различные современные медиа каналы для продвижения и развития бизнеса. Блоги, группы, обсуждения на форуме собственной мобильной социальной сети позволяют нам общаться с целевой аудиторией и быстро получать обратную связь в процессе развития наших мобильных проектов, объединенных брендом «Сеть в кармане».
Но за всем сразу не угнаться. Вплоть до весны 2009 года неохваченной нашим вниманием оставалась Wikipedia. Наконец, руки дошли.

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

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

читать о восстановлении статей в Википедии

Собираем тихий и вместительный домашний сервер

Reading time5 min
Views68K
image
Задача: собрать малогабаритный домашний сервер с четырьмя 3,5-дюймовыми HDD, по возможности тихий. Служить будет в качестве NAS, backup-сервера и торрентокачалки.

Решение
Читать дальше →

jk-навигация

Reading time3 min
Views1.9K
jk-navigation services

Что объединяет эти сервисы? Удобная навигация клавишами 'j' и 'k'.

Недавно Pamela Fox (сотрудница Google, специалист по связям с разработчиками) в своем твиттере дала совет, что клавиша пробела в Google Wave переводит на непрочитанный блип. Я поинтересовался у нее, нет ли в планах ввода jk-навигации, на что она ответила, что не знает, что это за навигация такая. Pamela — замечательный гик. В какой-то мере благодаря ее постам на технических форумах, Google Maps API стал популярен среди разработчиков. Этот эпизод убедил, что рассказывать о таком удобном дополнительном функционале в гиковских сообществах имеет смысл.

Такая навигация присутствует и в почте, и в ридере от Google. jjjjj — так удобно пробегаться по ленте ридера. А чистить почту при помощи клавиатуры для меня намного приятнее и эффективнее, чем при помощи мыши. В обоих сервисах есть много других удобных клавиатурных сокращений, о которых можно узнать, нажав '?'.

Еще о прелестях jk-навигации и как ее воплощать

Встраиваемые шрифты с кириллицей

Reading time3 min
Views7.3K
Пусть расцветают сто цветов, пусть соперничают сто школ. Этим лозунгом первого китайского императора Цинь Ши Хуана хочется поднять волну народного негодования стремления к появлению как можно большего количества шрифтов с веб-лицензией, которые поддерживают кириллицу. Сто школ в данном случае — различные словолитни и сервисы, предоставляющие встраиваемые шрифты.

В настоящее время подобные сервисы активно развиваются. Крупнейший из них, Typekit, содержит на данный момент 376 шрифтов от более чем 30 производителей. Но вот незадача: Typekit пока поддерживает только подмножество Latin-1, хотя и работает над добавлением поддержки других подмножеств Unicode.

Что же прямо сейчас делать нам, пользователям кириллицы?

Читать дальше →

Авторесайз IFRAME и безопасный способ передачи информации с одного домена на другой

Reading time1 min
Views11K
Как известно, при работе с фреймами для обеспечения безопасности браузеры не позволяют JavaScript-коду обращаться со страницы одного домена на страницу другого домена. В этой краткой статье мы рассмотрим аспекты кросс-доменной работы в JavaScript, опишем один из «хороших» частных случаев, а в конце — я надеюсь в хабракомментах получить ответы на оставшиеся вопросы.

UPD1: те, кто здесь впервые, — обязательно читайте комментарии к этой статье, в них очень много интересного накидали (как я и надеялся). Спасибо!

UPD2: найдено решение задачи авторесайза для всего, кроме Opera < 10.

UPD3: полностью кроссбраузерное решение задачи с ресайзом приводится ниже. Его особенности: а) не портится history, б) работает даже в Опере 7 и IE6, в) для ускорения работы высота фрейма всегда делается кратной N=30 пикселям. Фактически, там 2 алгоритма — для IE (через location.hash) и для «не-IE» (через window.name и «простукивание» возможных высот в цикле). См. также комментарии к статье, там разъяснения, почему так, а не иначе.

UPD4: статья начала принимать черты монументальной, посему она переехала ко мне в Наблы на dkLab: dklab.ru/chicken/nablas/58.html — там же все примеры кода самой последней актуальности. Но, конечно, в случае изменений я буду их и тут тоже анонсировать, добавляя UPD5, UPD6 и т.д.

Динамичные веб-презентации без использования Flash

Reading time3 min
Views1.9K
Недельку назад Крис Миллс (Opera Software) сказал, что он «планирует серию статей показывающую, что возможно делать „флешеподобные“ вещи, используя только открытые веб-стандарты». Мне показалось это интересным, и, когда я наткнулся на небольшую флеш-презентацию фото-портфолио в журнале Ньюйоркер, то решил проиллюстрировать идею Криса, переделав презентацию. Мне показалось, что с применением JavaScript это будет сделать довольно легко, и я решил не искать лёгких путей, и сделать презентацию только используя возможности CSS. Так же мне было интересно попробовать на практике вкусные новинки CSS3, такие как переходы (transitions).
Если вы хотите просто просмотреть демонстрацию (вторая ссылка), то вам понадобится один из этих браузеров:
  • лучше всего, на данный момент: Google Chrome 4 или Apple Safari 4
  • Firefox 3.7 (полуношные сборки)
  • Opera 10 Mobile (Presto 2.3) или, если вы инсайдер, то Opera (Presto 2.4)
Так же прошу извинить за глупый экран параноидальной MyOpera, требующий подтверждения, что вы действительно хотите посмотреть файл. Обещаю не нанести вам или вашему компьютеру вред. :)
Далее следуют некоторые детали имплементации

Мастер-класс по рисованию объемного персонажа (немного странного) в Adobe Photoshop

Reading time3 min
Views30K
Иллюстратор Евгения Родина jodybastet решила поделиться своими умениями и написала урок по рисованию объемного персонажа в Adobe Photoshop с использованием графического планшета. Персонаж немного странный, но мы надеемся он не оскорбил ни чьи чувства.



Урок рекомендуется как дизайнерам/иллюстраторам (коих, мы верим, немало на Хабре), так и просто любителям рисовать за компьютером.
Читать дальше →

Небольшой отладчик в Javascript

Reading time3 min
Views624
Недавно столкнулся в исследованиях с проектом trimpath. Лично для себя ничего интересного не обнаружил, кроме интересного способа расстановки точек останова (я его немного видоизменил от оригинала — иначе длинные строки некорректно отображались в опере и ИА)

Читать дальше →

Отладка Javascript

Reading time5 min
Views146K
Debug Logo

Многие задают мне один и тот же вопрос:
«Как дебажить этот $%*!%$! JavaScript?».

Так вот, во-первых JavaScript — не $%*!%$! А как я его дебажу — сейчас расскажу.

(Примечание: наверное эта статья больше для новичков. Так что не судите строго)

Читать дальше →

ETag спешит на помощь

Reading time2 min
Views42K
Ни для кого не секрет, что в протоколе HTTP, а точнее в той его части, что является ответом с сервера, есть такие замечательные заголовки, как Last-Modified и ETag (Подробнее можно прочитать в спецификации протокола). Призваны они ускорить процесс получения контента с сервера, а точнее избавить клиента от загрузки данных, которые не были изменены с момента предыдущего запроса.

Так вот. Для меня факт существования двух, по-сути одинаковых, механизмов сообщить клиенту изменилось ли содержимое страницы или нет немного настораживал. Немного. Точнее я его не понимал для чего нужен ETag, если мне всегда было достаточно одного Last-Modified и юзкейса для другого я даже и представить не мог (хотя меня этот вопрос, признаться честно, не особо и волновал).
Читать дальше →

«Свежачок» по оптимизации — поведение браузеров при использовании Data:URI CSS Sprites

Reading time2 min
Views1.4K

Последнее время в инете стало появляться все больше публикаций про использование data:uri css sprites. Приведу две ссылки из блога Steve Souders, известный всему миру «оптимизатор» работающий в Google.

CSSEmbed — automatically data: URI-ize
Aptimize: realtime spriting and more

Наш отечественный герой «веб-оптимайзер» sunnybear намного раньше поднимал вопрос про использование data:uri в css и нами совместно был проведен ряд исследований. В то время вылезло много интересных моментов и особенностей о которых мы писали в предыдущих статьях. Последние эксперименты вскрыли ряд ранее неизвестных моментов по работе браузеров с data uri css спрайтами.
Читать дальше →

Printliminator — букмарклет для удобной распечатки сайтов

Reading time2 min
Views2.2K
Не раз на Хабре поднимался вопрос об media">оптимизации страниц веб-сайтов к печати. Тем не менее, время идёт, а отдельным стилем для печати обзавелось не так уж много сайтов. Да и не всегда надо печатать всю страницу, например, мне интересна статья, но совершенно не интересны комментарии под ней, что же мне печатать всё, а затем просто выбрасывать лишние листы в мусорку.

Этим же вопросом озадачился как-то и Крис Койер (Chris Coyier), автор блога CSS-Tricks. Он хотел распечатать слова песни, но очень не хотел при этом печатать все баннеры, логотипы, фоновые изображения и прочий мусор. Тогда он сел и написал небольшой скрипт на jQuery, который в дальнейшем вылился в героя сегодняшнего хабратопика — букмарклет «Printliminator».
Читать дальше →

Загрузка браузером нескольких файлов

Reading time5 min
Views30K
Если нужно дать пользователю возможность загрузки нескольких файлов, традиционное решение на данный момент — использовать для этой цели Flash (реже — Java applet или ActiveX). В случае, если соответствующий плагин недоступен, пользователю, как правило, показывают стандартный HTML-элемент для загрузки файла.

Последнюю ситуацию можно улучшить, если использовать встроенную в браузеры возможность множественной загрузки файлов. Из всех браузеров сейчас данную возможность не поддерживает только Internet Explorer (впрочем, мы ещё не видели девятую версию, может там что-то изменится), остальные браузеры — Opera 9 и выше (а так же версии 3.5—6.05), Firefox 3.6+, Chrome 3.0.191.0+ и Safari 4.0.1+ такую возможность предоставляют.

Достаточно написать что-то вроде
Copy Source | Copy HTML
  1. <form enctype="multipart/form-data" method="post">
  2.    <input type="file" min="1" max="9999" name="file[]" multiple="true" />
  3.    <input type="submit" name="submit" />
  4. </form>
PHP оказался готов к такой конструкции (именно для него в параметре «name» стоят квадратные скобки), он просто разложит загружаемые файлы по элементам массива $_FILES, если только мы не используем «Оперу».

К сожалению, «Опера» (ещё с версии 3.5) отправляет, при использовании мультизагрузки, файлы в контейнере «multipart/mixed», который PHP не понимает.

Я попробовал исправить эту ситуацию.
Читать дальше →

Организация on-line платежей на сайте. Для тех, кто никогда этим не занимался, но боится, что придётся. Часть 2: архитектура

Reading time13 min
Views7.2K
Вслед за первой частью, призванной в первую очередь показать, что «не так страшен чёрт, как его малюют»

Статья об архитектуре части проекта, которая занимается он-лайн платежами. Намеренно не хотелось бы сейчас подробно описывать API конкретного биллинга или процедуру регистрации в нём. Тонкости конкретных биллингов нужно обсуждать отдельно, иначе тему просто не раскрыть. Цель статьи: обсудить вариант архитектуры, позволяющий нанизывать новые виды биллингов и типы платежей, с наименьшей головной болью.
Читать дальше →

Внешние зависимости в гите: submodule или subtree?

Reading time3 min
Views56K
Давным-давно я усвоил, что зависимости должны храниться вместе с кодом проекта. Тогда, при возврате к старой версии кода, гораздо проще восстанавливать окружение.

У моего проекта несколько зависимостей. Бóльшая часть зависимостей живет в гитовых репозиториях. Сам проект тоже живёт в гите.

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

Раньше я просто копировал зависимости в папку проекта, и добавлял к каждой файл VERSION.TXT с её версией. Но, если нужно работать с текущей версией стороннего кода, это неудобно. Да и копировать файлы руками когда есть гит как-то глупо. Хочется найти более современное решение.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity