Все потоки
Поиск
Написать публикацию
Обновить
354.88

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга
Уровень сложности

О флеш-баннерах

Время на прочтение2 мин
Количество просмотров2.1K
Когда я вижу баннер, который меня интересует — я всегда на него кликаю. Но по-разному:

1) Если сайт, на котором расположен баннер, мне неинтересен — кликаю левой кнопкой мыши. Иногда, конечно раздражает, что открывается новая вкладка или, не дай Бог, новое окно. Но это не самое страшное.

2) Если сайт, на котором расположен баннер — хороший и интересный — то мне не хочется открывать его в этой же вкладке. И я кликаю колёсиком мышки. И что происходит? Ни-че-го. Тогда я кликаю правой кнопкой, чтобы выбрать «открыть в новой вкладке». И что происходит? Мне показывается «About Flash Player» и ещё пара пунктов, которыми я ещё никогда в своей жизни не пользовался (и даже не могу представить ситуацию, когда эти пункты мне понадобятся). Что же я делаю, чтобы всё-таки посмотреть на то, что рекламирует баннер? Обычно — ни-че-го (если, конечно, там не «предложение, от которого вообще нельзя отказаться»).
Читать дальше →

Непонимание разметки. Комикс про XHTML 2 и HTML5

Время на прочтение1 мин
Количество просмотров1.9K
image
С выходом HTML 5 и анонсом W3С о прекращении разработки XHTML 2 в конце 2009 года начались активные дебаты по поводу будущей «правильной разметки». XHTML 1.0, XHTML 2, HTML 4, HTML 5 и XHTML 5 — за всем этим тяжело уследить.

Теперь, когда XHTML 2 перестал маячить на горизонте, какой синтаксис выбрать? Остаться на XHTML 1.0, или двинуться вперед на HTML 5? А может, вернуться к старому доброму HTML 4? Этот комикс немного все проясняет.

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

Чеклист запуска сайта

Время на прочтение3 мин
Количество просмотров25K

Этот чеклист будет полезен всем, кто запускает сайты или следит за этим увлекательным процессом. Ничего не пропустите!
Читать дальше →

Просимся в поиск к пользователю с помощью OpenSearch

Время на прочтение2 мин
Количество просмотров12K
Хабрапоиск
На картинке есть одна деталь, которую не все замечают. Подсветка стрелки выпадающего меню. Значит сайт, на котором вы находитесь, предлагает добавление поискового плагина. Работает в Firefox и IE.

Как это сделать на примере Хабрапоиска

Проект Gestalt – пишите на Ruby, Python и XAML прямо в HTML на стороне клиента

Время на прочтение5 мин
Количество просмотров4.8K
imageGestalt – это open source фреймворк, который позволит вам включить в обыкновенный html-код страницы коды на Ruby или Pyhton и даже XAML-разметку. И все это будет работать на стороне клиента! Если вы хотите написать клиентский код подобный следующему,
<script language=«python»> или <script language=«ruby»>
то Gestalt сделан специально для вас. Быстрый старт и простейшую демонстрацию можно посмотреть по адресу http://www.visitmix.com/labs/gestalt/getstarted/.

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

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

Siege — утилита для нагрузочного тестирования веб-серверов

Время на прочтение7 мин
Количество просмотров84K
Надеюсь, что данный материал будет кому-нибудь полезен.

Siege – это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы.

UPD: спасибо за плюсы, перенес в тематический блог.
Читать дальше →

Индикатор окончания эпохи Internet Explorer 6 на рабочем столе

Время на прочтение1 мин
Количество просмотров4K

Internet Explorer 6 появился в 2001 году. В 2003-2004 годах он набрал рекордную рыночную долю 90%, и не глядя на все свои недостатки долгое время удерживал лидирующие позиции. Сегодня мы наблюдаем окончание эпохи IE6. Для того, чтобы наблюдать за этим процессом, я реализовал идею yanajy. Теперь мы можем прямо на рабочем столе наблюдать за изображением уходящего в тень логотипа IE6.


Скачать: ie6-meter.zip (1 кб.)
Исходники: ie6-meter-src.zip (236 кб.)
Демо: http://veg.by/pages/ie6meter/


Индикатор популярности IE6 на рабочем столе

Данные автоматически берутся из статистики liveinternet.ru по неделям. Скрипт генерирует картинку, на которую ссылается обычный HTML документ, что собственно и устанавливается в качестве рабочего стола.


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

Канбан в IT (Kanban Development)

Время на прочтение7 мин
Количество просмотров284K
Я собираюсь написать несколько статей про новую методологию гибкой разработки Канбан (Kanban Development) в целях подготовки к Scandinavian Agile Conference 2009, где я буду делать один из докладов (кстати, заодно приглашаю всех на конференцию).
Сегодня публикую первую из статей.
Основная задача первой статьи — это как можно проще описать основы Канбан: что это такое, в чем отличие от других гибких методологий и зачем это нужно.
Также я хотел бы собрать как можно больше вопросов и сомнений в комментариях, чтобы ответить на них в следующих статьях, так что пишите всё, что вам непонятно, или что ещё вы хотели бы узнать про Канбан.
Я не то, чтобы большой специалист по этой новой методологии, но мы внутри команды пришли к Канбану самостоятельно и последовательно прошли все этапы мутации от SCRUM до Канбан, так что практический опыт есть.

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

Redis — высокопроизводительное хранилище данных

Время на прочтение2 мин
Количество просмотров102K
Бодрый день, хаброчеловеки!

Что такое Redis?


Redis — это высокопроизводительное нереляционное распределённое хранилище данных. В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.

Чем Redis отличается от существующих решений?


API для работы с Memcached (MemcacheDB) позволяет хранить массивы, но эти массивы будут сериализованы и сохранены как строки, таким образом атомарные операции над такими массивами не возможны.
Redis позволяет хранить как строки, так и массивы, к которым можно применять атомарные операции pop / push, делать выборки из таких массивов, выполнять сортировку элементов, получать объединения и пересечения массивов.

Производительность


110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты).

Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.

Sharding


Redis, как и Memcached, может работать как распределённое хранилище на многих физических серверах. Такой функционал реализуется в клиентских библиотеках, и к сожалению, «из коробки» этот функционал реализован пока только в Ruby API, однако это не мешает вам хешировать ключ самостоятельно и получать ID сервера, к которому с этим ключом обращаться.

API


API доступно для следующих языков:
  • Ruby
  • Python
  • PHP
  • Erlang
  • Tcl
  • Perl
  • Lua
  • Java


API для PHP доступно как в виде модуля, написанного на C, так и в виде PHP5 класса, который общается с Redis-сервером через сокеты, таким образом не требуется устанавливать модуль.
Кроме того существует PHP5 класс от отечественного разрабочика (с именем, заслуживающим доверия. Я серьёзно.) — IMemcacheClient. (Спасибо DYPA за наводку)

Перспективы развития


Разработка ведётся очень активно, комиты происходят почти каждый день, сейчас доступна версия Redis 0.900 (1.0 release candidate 1), которая очень скоро станет версией 1.0
В ближайшем будущем авторы обещают внедрить разные интересные фичи, в том числе и сжатие данных.

Лицензия и поддерживаемые платформы


Redis — написан на ANSI C и работает на большинстве POSIX-систем (Linux, MacOS X). Это бесплатное открытое ПО под BSD лицензией =)

Up: Rediska — удобный PHP-клиент для key-value базы Redis. Оф.сайт.

Электронное табло 2 или с пользой для общества

Время на прочтение12 мин
Количество просмотров2.6K
Последнее время на Хабре появляется не так много хороших статей о веб-разработке. Но сейчас не об этом.
Иногда хабралюди делятся интересными идеями, но не раскрывают их сути. И может зря. Потому как в ходе написания статьи (описания) замечаешь то, чего не видел раньше, другие ходы и решения, а читающим проще понять идею и дать дельный совет.
Так несколько дней назад на хабре появилась статья «Электронное табло», в которой автор поделился ссылкой на свою поделку, но из-за недостаточного описания статья получилась из разряда — «посмотри, что я сделал».
Насколько инетересней могла быть статья, если бы автор добавил побольше описания. Потому захотелось показать на примере этой статьи, как можно было бы сделать немного лучше, а заодно и поделиться своей реализацией его задачи.
Читать дальше →

Я — альтруист. Напишу для хабрасообщества любой полезный и бесплатный веб-сервис

Время на прочтение1 мин
Количество просмотров1.8K
Здравствуйте, уважаемые хабралюди!
Я профессионально занимаюсь веб-разработкой. И так сложились обстоятельства, что сейчас у меня есть немного свободного времени, а браться за скучные проекты из популярных фриланс сайтов не охота.
И вот мне подумалось, что было бы неплохо сделать что-нибуть социально полезное и бесплатное, только пока не знаю, куда направить свои силы.

Интересует ваше мнение, как людей, продвинутых в сфере информационных технологий: какого бесплатного веб-сервиса не хватает ру-нету? Какого веб-сервиса не хватает в частности Вам?

Я возьмусь создать такой бесплатный веб-сервис для людей, или по крайней мере дать вам ссылку на то что вам нужно :)

Предлагайте.

Распространенная ошибка при проверке капчи

Время на прочтение1 мин
Количество просмотров13K
В этом топике я хочу предостеречь вас от одной ошибки, которую можно допустить при проверке капчи.

image
Если вы проверяете капчу условно так,
if (!empty($_POST['captcha_code']) && $_SESSION['captcha'] == $_POST['captcha_code']))
{
   print "Все ок!";
}

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

Почему я решил что ошибка распространенная? Потому что, например, в PHPShop она более чем допущена.

почему более чем?

История двух нитей

Время на прочтение3 мин
Количество просмотров2.6K
На собеседовании в ИТ-компании было предложено ответить на следующий вопрос.

Задача. Дано такой код:

		static int counter = 0;

		void worker()
		{
			for (int i = 1; i <= 10; i++)
				counter++;
		}


Процедуру worker() запускают из двух нитей. Какое значение будет содержать переменная counter по завершении работы обеих нитей и почему?

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

Я не называю нити потоками, что бы не путать потоки выполнения (thread) и потоки данных (stream).

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

Ближайшие события

Средневзвешенная система голосования

Время на прочтение3 мин
Количество просмотров3.5K
Вступление. Эту статью написал мой друг — Семён Шторкин, владелец нижегородского сайта-коммьюнити для фотографов (фотогорький). Пока его, к сожалению, нет на Хабре, но попробую этим топиком заработать для него инвайт :)

Добрый день. Хочу поделиться с уважаемым хабрасообществом весьма объективной системой оценок и рейтингов, основанной на средневзвешенной системе с оценками по пятибалльной шкале.
Читать дальше →

Производители браузеров вынудили W3C отказаться от свободных кодеков в HTML5

Время на прочтение1 мин
Количество просмотров5.9K
мутантская рукаПроизводители браузеров так и не смогли остановится на каком-то одном формате для кодирования аудио- и видеоданных для новых тегов <audio> и <video>, тем самым вынудив W3C вообще исключить поддержку каких-либо кодеков из грядущего стандарта.

«После долгих и бурных обсуждений данной ситуации, я, к своему сожалению, пришел к выводу, что нет такого кодека, который все производители хотели бы внедрить в свои продукты», — сказал главный разработчик HTML5 Ян Хиксон.

Apple, например, не собирается добавлять поддержку Ogg Theora в свой QuickTime, беспокоясь о неких потенциальных проблемах с патентами, даже не смотря на то, что его можно использовать совершенно бесплатно. Opera и Mozilla, наоборот, против использования H.264 из-за возможных проблем с его лицензированием и распространением. У Google тоже есть свои схожие заморочки, хотя они уже включили оба кодека в Chrome. А Microsoft вообще не собирается поддерживать тег <video>. Такие вот дела.

via Slashdot

Google App Engine и High load

Время на прочтение3 мин
Количество просмотров2.9K
Гаджет «Евровидение 2009», который мы, Sterno.ru, сделали для компании Google, оказался отличным опытом в тестировании App Engine и проверки того, на что способна эта технология. Теперь мы гораздо лучше понимаем, как работает «Движок приложений» при высоких нагрузках. Эта статья описывает сильные и слабые стороны Google App Engine, а также подводные камни, с которыми разработчики могут столкнуться в ходе ее использования.
Читать дальше →

Плавающие якоря

Время на прочтение1 мин
Количество просмотров9.2K
Верстал комменты для очередного проекта. Всегда напрягало, что якорь в комментариях опускал экран до нужного комментария «впритык», тогда как с эстетической точки зрения было бы приятно, если бы сверху от границы экрана до самого комментария все же был бы какой-то отступ.
image
Читать дальше →

Оптимизация PHPShop

Время на прочтение2 мин
Количество просмотров3K
Так уж случилось, что один из наших клиентов заказал нам добавить в его интернет магазин несколько десятков тысяч товаров. Магазин у него работал на небезызвестном PHPShop(версия 2.1.8). До этого момента, я с этим «чудом» не встречался. После добавления первых 5000 товаров магазин слег и мог показывать только белую страницу.  Тех поддержка отвечала что это все из-за хостера(MasterHost). Я им поверил и решил опробовать все на локальном веб-сервере. Магазин показывал ту же картину. Причем в списке задач отображалось, что Apache «съедает» 200 Мб оперативной памяти. Пришлось лезть во внутренности…
Читать дальше →

Почему дизайнеры должны уметь верстать

Время на прочтение4 мин
Количество просмотров9K
Довольно часто дизайнеров справедливо обвиняют в том, что, создав дизайн сайта, они уходят в свой кокон и замыкаются в неведении, оставляя всю «грязную работу» по воплощению дизайна в жизнь разработчикам. Такая равнодушная позиция отмечается не только в индустрии создания сайтов, но и при разработке программного обеспечения и игр.

Почему дизайнеры должны уметь верстать

Суровая действительность указывает на то, что весь процесс разработки должен происходить при участии дизайнеров. Для достижения оптимальной эффективности дизайнер должен уметь не только нарисовать картинку, но и встроить ее! В этой статье я хотел бы поделиться несколькими соображениями о том, почему дизайнеры должны уметь верстать сайты.
Читать дальше →

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

Время на прочтение3 мин
Количество просмотров32K
Представляю вашему вниманию обзор нескольких полезных инструментов для всестороннего тестирования сайтов.

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

Вклад авторов