Обновить
39
0
Дмитрий@perl_demon

Пользователь

Отправить сообщение

HTML5 File API: множественная загрузка файлов на сервер

Время на прочтение7 мин
Охват и читатели88K
Когда передо мной в очередной раз встала задача об одновременной загрузке нескольких файлов на сервер (без перезагрузки страницы, само собой), я стал блуждать по интернетам в поисках довольно корявого jQuery-плагина, который позволяет имитировать ajax-загрузку файла (того самого плагина, который со скрытым фрэймом: от java- и flash- плагинов сразу было решено отказаться). В процессе поиска я вспомнил, что в грядущем стандарте html 5 возможности по работе с файлами должны быть существенно расширены, и часть этих возможностей доступна уже сейчас. В итоге было решено опробовать их в действии.

Рассматривать возможности File API будем на примере одновременной загрузки нескольких картинок на сервер. В конце статьи приводится готовое решение, оформленное в виде jQuery-плагина.
Читать дальше →

Комментарии в коде — полезные, бессмысленные, вредные?

Время на прочтение3 мин
Охват и читатели27K
Как-то проглядывая код некоторых старых модулей, вновь подумал о роли комментариев. Вопрос хоть и тривиальный и обсужденный миллионы раз в книгах, блогах, статьях и форумах, а все-таки подчас задевает за живое. При этом, о пользе комментариев пишут гораздо чаще, чем о их вреде.

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

Итак:
Читать дальше →

TDD — это как сноубординг

Время на прочтение3 мин
Охват и читатели12K

Я только что получил следующее письмо, которым хочу поделиться и ответить на него публично.

«Я не использую эту методологию (TDD) из-за того, что главный для меня вопрос остается без ответа. Я знаю, что использование TDD уменьшает количество багов, но что насчет времени, необходимого при работе по этой методологии?
Я хотел бы знать как изменяется время на разработку корпоративного приложения с использованием TDD — уменьшается, увеличивается или остается неизменным.
Надеюсь, вы сможете ответить, так как TDD и BDD меня очень интересуют.»

Ответ на письмо

HackDay: Битва компаний — 9-10 декабря

Время на прочтение1 мин
Охват и читатели4.2K
HackDay: Company Battle — новый формат соревнований между IT-компаниями: необходимо продумать концепцию проекта, заявить и реализовать ее за 24 часа. Участвовать в HackDay: Company Battle может любая софтверная компания. Участницы должны выставить команду, которая будет способна целиком спроектировать и написать прототип проекта за сутки. Мы задаем только тематику проектов, например: коммерция, игры, утилиты, развлечения и тому подобное. После этого у вас будут сутки на то, чтобы разработать проект от идеи до работающего прототипа, готового для демонстрации. Разработанные приложения будут оцениваться жюри по ряду параметров: безопасность, баги, идея, качество кода и др.

Битва будет происходить в Петербурге, но мы ждем команды из других городов.

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

Всего есть места для 20 команд. 4 компании подтвердили свое участие. Осталось 16.

Зрители приглашаются в пятницу вечером на официальное представление проектов.

Правила.
Заявка на участие.

Анонс Ext JS 4: быстрее, проще, стабильнее

Время на прочтение6 мин
Охват и читатели2.7K
image Создатели прекрасного фреймворка Ext JS/Sencha на одной из конференций посвященной Ext JS анонсировали выход 4-й версии. Эта статья является вольным переводом поста из блога разработчиков. В новой версии, очень много изменений, которые не оставят равнодушными разработчиков. Ждем публичной беты.

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

Kernel Pool Overflow: от теории к практике

Время на прочтение10 мин
Охват и читатели42K
Ядро Windows всегда было лакомым кусочком для хакера, особенно при наличии законченных методик его эксплуатирования, приводящих к повышению прав. Учитывая тот факт, что за последние несколько лет количество уязвимостей, связанных с переполнением динамической памяти ядра, резко возросло, я активно заинтересовался данным направлением и, к собственному удивлению, в конечном итоге накопал столько материала, что его хватит не на один 0day-баг.

Наглядный ядерный шеллкод :)
Читать дальше →

Как покупать через twitter

Время на прочтение1 мин
Охват и читатели9.7K
Итак, первыми в рунете мы реализовали подбор товаров через твиттер по тегу #wishbuy. Если вам интересно, как мы сделали это технически — спрашивайте, постараемся ответить.

Итак, пишем твит:
Я хочу в подарок новый #iPhone к 30.11.2010, Москва #wishbuy
Читать дальше →

Конкурс по труднорешаемым задачам для программистов

Время на прочтение4 мин
Охват и читатели12K
Здравствуй, хабрачитатель.

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

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

Отладка Javascript на мобильных устройствах

Время на прочтение2 мин
Охват и читатели14K
Как я уже недавно писал, в настоящее время я занимаюсь разработкой мобильной версией одного сервиса. Вчерашняя статья про особенности дизайна сайта для мобильных устройств показала, что у аудитории есть интерес к разработке сайтов, адаптированных под телефоны, коммуникаторы и т.д.
Читать дальше →

Синхронизация асинхронных вызовов. WaitSync

Время на прочтение3 мин
Охват и читатели8.9K

Задача


Допустим вы хотите выполнить два или более AJAX запроса на сервер и вызвать функцию после того, как все они будут закончены.

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

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

Собственно, этим и занимается мой небольшой класс WaitSync =)

WaitSync.js


Пользоваться элементарно просто:

1. Создаем объект типа WaitSync, передав в конструктор callback функцию, которая будет вызвана после того, как отработают нужные задачи.
	var vulture = new WaitSync(function () {
		console.debug('Start eating: ', arguments);
	});


2. Вместо простого
	$.getJSON(
		'savannah/get_prey', 
		function (data) {
			console.log('... prey found: ' + data);
		}
	);
	
	$.getJSON(
		'savannah/get_other_predators', 
		function () {
			console.log('... predators are done eating');
		}
	);


«заворачиваем» задачи в метод .wrap
	$.getJSON(
		'savannah/get_prey', 
		vulture.wrap( 
			function (data) {
				console.log('... prey found: ' + data);
			}
		)
	);
	
	$.getJSON(
		'savannah/get_other_predators', 
		vulture.wrap(
			function () {
				console.log('... predators are done eating');
			}
		)
	);


3. Все =) Как только будут выполнены оба AJAX запроса, стервятник начнет есть.

Как это работает?

Числа, которые должен знать каждый программист

Время на прочтение1 мин
Охват и читатели20K
Чтобы было понятно, на чём следует концентрироваться при оптимизации, слайд из доклада «Создание программных систем в Google и его уроки»:
Таблица

Особенности дизайна сайта для мобильных устройств

Время на прочтение3 мин
Охват и читатели8.8K
Речь пойдет о мобильных устройствах, которые на данное время занимают большой % на рынке WAP’a (телефоны без ОС, Symbian и прочие), об Android и iPhone сегодня говорить не будем



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

Два в одном: spring-mobile & spring-android

Время на прочтение2 мин
Охват и читатели11K
Продолжая тему новых проектов SpringSource хотел бы в одном посте рассказать сразу о двух новых проектах: Spring Mobile & Spring Android.
image
Читать дальше →

Prelink и Preload для ускорения запуска программ в Linux

Время на прочтение3 мин
Охват и читатели38K
В этой заметке я опишу две утилиты, которые помогут ускорить работу системы Linux, а конкретно — запуск приложений: prelink и preload. Prelink оптимизирует исполняемые файлы для быстрого связывания с библиотеками. Preload кэширует часто используемые библиотеки и программы.
Подробности под катом.
Читать дальше →

Ежедневный Git

Время на прочтение3 мин
Охват и читатели98K
Уже были статьи про основы гита (0, 1, 2), были и статьи про внутреннее устройство репозитория. Сегодня поговорим, как простому смертному работать с гитом на автопилоте и не морочить себе голову.

Во-первых, шорткаты (в порядке убывания популярности):

alias gst='git-status'
alias ga='git-add'
alias gc='git-commit -m'
alias gp='git pull && git push'
alias gull='git pull'
alias gush='git push'
alias gb='git-branch'
alias gco='git-checkout'
alias gd='git-diff'

Во-вторых, отображение текущей ветки в командной строке:
export PS1='`__git_ps1 "%s"` \w \$ '

Выглядит так:
lazy-args-in-futures ~/Work/io/oleganza-io.git $

(Как установить: ericgoodwin.com/2008/4/10/auto-completion-with-git)

Типичный поток работы в одной ветке
Читать дальше →

Про Git на пальцах (для переходящих с SVN)

Время на прочтение8 мин
Охват и читатели281K
Год назад мы с командой решили перейти с SVN на Git. Зачем это было надо — писать не буду, т.к. на эту тему уже и так много написано. А хочу я описать типичные алгоритмы работы, понятные человеку, который долгое время пользовался SVN. Ниже — памятка, написанная для команды год назад, чтобы легче было мигрировать. Надеюсь, кому-нибудь пригодится.
Читать...

Android Calendar API

Время на прочтение5 мин
Охват и читатели44K

В этой статье речь пойдет об использовании недокументированного API для работы со стандартным календарем Android. Статей на русском по данной теме не нашел, да и на английском лишь несколько постов с устаревшими данными. Кто заинтересовался – под кат.
Читать дальше →

Moose(X). Продолжение

Время на прочтение6 мин
Охват и читатели2.7K
В продолжение топика Use Moose; Современное ООП в Perl, я хочу рассказать про некоторые интересные возможности, которые предоставляет Moose и его расширения.
Из упомянутого выше топика можно понять, что с Moose вам не придется тратить время на реализацию объектной модели. Но кроме автоматического создания аксесоров/мутаторов и конструктора, есть еще куча всяких полезностей и интересностей. А уж с помощью расширений, так вообще можно преобразить Perl до неузнаваемости (в хорошую, естественно, сторону).

Примеры кода я буду приводить из своего модуля, который я пробую переписать в стиле modern perl.
Читать дальше →

Google Chrome — самая «дырявая» программа?

Время на прочтение1 мин
Охват и читатели817
Bit9 опубликовала исследование, в котором выявила, что Google Chrome — самая «дырявая» программа, в которой было обнаружено 76 уязвимостей с высокой степенью риска.
Сам своеобразный «топ» выглядит так:
1). Google Chrome (76 заявленных уязвимостей)
2). Apple Safari (60)
3). Microsoft Office (57)
4). Adobe Reader и Acrobat (54)
5). Mozilla Firefox (51)
6). Sun Java Development Kit (36)
7). Adobe Shockwave Player (35)
8). Microsoft Internet Explorer (32)
9). RealNetworks RealPlayer (14)
10). Apple WebKit (9)
11). Adobe Flash Player (8)
12). Apple QuickTime (6) и Opera (6)
Исследование проводилось с привлечением данных из Национальной базы данных уязвимостей. С многими заявленными уязвимостями можно ознакомиться и на официальном блоге Google. При этом данное исследование только утвердило меня в мнении использовать браузер от Google, как ни парадоксально.

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность