Search
Write a publication
Pull to refresh
73
0
Дмитрий @depp

User

Send message

prettyPrint

Reading time1 min
Views9.2K
imageТе из вас кто следит за автором на Github могли заметить, что недавно он добавил новый проект под названием «prettyPrint».
«prettyPrint» — браузерный дампер переменных для JavaScript аналогичный cfdump для ColdFusion. Он позволяет выводить на экран объекты любого типа в виде таблиц для просмотра во время отладки.
Посмотреть пример.
Читать дальше →

Делаем скриншоты сайтов

Reading time3 min
Views17K
Бродя по просторам PHP документации случайно наткнулся на две функции: imagegrabwindow и imagegrabscreen. Они умеют делать скриншоты в Microsoft Windows.
Заинтересовало. Кончилось дело тем, что был написан скриптик генерирующий полный скриншот любого сайта.
Итак нам необходимы:

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

Максимальный поток минимальной стоимости

Reading time15 min
Views86K
Транспортная задача (классическая) — задача об оптимальном плане перевозок товара со складов в пункты потребления на транспортных средствах.

Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку).

Под катом очень-очень много текста, т.к. рассказывается один из вариантов решения данной задачи «в картинках» для тех, кто мало знаком с графами. Листинг прилагается.

Путешествие в тысячу миль начинается с первого шага

Съешь еще этого вкусного сочного CPU (решение проблемы с загрузкой процессора)

Reading time1 min
Views1.4K
Во время перекомпиляции или рестарта ASP.NET-приложения я регулярно наблюдал картину, когда процесс firefox использовал процессор не меньше, а то и больше, чем aspnet_wp. С какой, спрашивается, радости он это делает, если он просто ждет ответа от сервера? На что тратится ресурс процессора?

Ответ на этот вопрос был заметен, оказывается, невооруженным взглядом, но он настолько дурацкий, что подумать его было сложно. Процессор кушает… анимация (APNG) крутящегося индикатора загрузки! Достаточно заменить его статическим png (или анимированным gif), чтобы проблема ушла.

Злополучный файл называется loading_16.png. Я нашел его здесь: Mozilla Firefox\chrome\classic.jar\skin\classic\global\icons\, — и заменил на статическую картинку. Также он лежит в skin\classic\aero\global\icons\loading_16.png, но это, видимо, для Висты, а у меня XP. Там я его оставил.

Ура, теперь не надо обдумывать переход на другой браузер! :) Надеюсь, в 3.5 это все-таки исправят, как-то неохота повторять операцию после апдейта.

Другой вариант решения — скопировать вот это в userChrome.css (не пробовал, это информация с баг-трекера Мозиллы).

Ссылки с подробностями:
https://bugzilla.mozilla.org/show_bug.cgi?id=437829
forum.mozilla-russia.org/viewtopic.php?pid=315838#p315838

Оригинальный баг с iframe и DOM в IE

Reading time2 min
Views3.3K
Некоторое время назад обнаружил интересный баг в IE, успешно доживший и до восьмой версии. Суть бага заключается в том, что при уходе со страницы содержащей несколько iframe-ов и последующем возврате при помощи кнопки back, содержимое этих самый фреймов может перемешаться.

UPD: Говорят FF и Opera на этом коде тоже косячат, но по-другому :)
Читать дальше →

Расширенный сборник CSS-хаков

Reading time4 min
Views37K
Статья является расширенным сборником CSS-хаков в сравнении с аналогичной статьей.
Под хаком подразумевается метод, позволяющий воспринимать CSS только определенному браузеру.
Хаки могут использоваться не только для исправления багов в верстке, но и в случае использования определенных особенностей браузера для ускорения рендеринга web-страницы в нём (к примеру CSS3-свойства)

Подробности под катом

Фонетический поиск

Reading time4 min
Views16K
Пару лет назад была задача написать для одного из сайтов такой поиск, который бы распознавал опечатки и предлагал бы исправленные запросы. Было перепробовано несколько вариантов, об одном из которых я и хотел тут написать. Поиск на основе звучания слов может стирать языковые границы, поскольку имена собственные на разных языках созвучны. Например, ищешь «Арнольд Шварцнеггер» на русском — находишь «Arnold Schwarzenegger» на английском, или ищешь «Michael Jordan» — находишь «Майкл Джордан», или ищешь «Чак Норрис» — и вдруг он сам тебя находит. Помимо поиска созвучных слов этот метод нивелирует большое количество опечаток. А то че-то задолбала попса, надо больше про инсайд…

...больше про инсайд

Мне кажется, я начал понимать, что ты имела в виду!

Reading time7 min
Views33K
Опечататься дело нехитрое; опечататься в поисковом запросе так и вдвойне. Почитай все большие веб-поисковики сегодня умеют корректировать ошибки в ключевых словах во-1х и подсказывать запросы во-2х; вслед за ними того же хочется поискам поменьше. Обе штуки можно ловко реализовать при помощи открытого поисковика по кличке Sphinx; в этом посте расскажу, как конкретно.

Ну, за did you mean («что ты имела в виду») и прочий query completion («уж не Васю ли ты ищешь»).
Читать дальше →

Как готовить SphinxQL

Reading time6 min
Views46K
По заявкам трудящихся, расскажу про две новых мега-фичи в Sphinx. Предложения тем для последующих рассказов можно засылать в комментарии.

Обе фичи добавлены в версии 0.9.9-rc2, опубликованной в начале апреля 2009го. Версия традиционно (слишком) стабильная, известных серьезных багов нету, тесты проходятся, итп. Отважные люди, а также коммерческие клиенты с контрактами про поддержку, уже успешно используют в продакшне, несмотря на отличный от «release» тег.

1я мега-фича. Теперь Sphinx поддерживает сетевой протокол MySQL (внутренней версии номер 10, которую поддерживают все версии сервера и клиента, начиная с MySQL 4.1 и по MySQL 5.x включительно).

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

ChatterBlocker или Вон из моей головы!

Reading time1 min
Views5.7K
Как-то привык я к тому, что предметы вокруг меня должны издавать звуки. Музыка это, или просто шум системника — не суть. Лишь бы тишина на уши не давила.

Но если шум системника сам по себе довольно ровный, то музыка (особенно вокальные треки) может здорово отвлекать.

А если ты не дома, а в офисе? Да еще с шумными соседями а–ля «Добрый день, — Марина, отдел закупок, мы бы хотели...» и в таком духе. Концентрация «магическим» образом улетучивается, оставляя после себя стресс и порой несделанную в срок работу.

Есть ли выход?

Выход есть!

Cufón – используйте шрифты, какие душа пожелает

Reading time4 min
Views91K
Если стоит задача использовать в проекте нестандартный шрифт, то есть возможность пойти несколькими путями:
  1. Ъ-метод – не использовать нестандартные шрифты, достаточно в CSS сказать body {font-family: sans-serif;} и не морочить себе голову.
  2. Быдло-метод – нарезать из ЖПЕГов, картинок с заголовками, ужать посильнее, что б появилась размытость и вставлять вместо текста картинки. Достаточно популярный на наших просторах метод.
  3. W3C-метод – используем @font-family и наслаждаемся красивыми шрифтами без всяких заморочек. Пока этот метод не рассматривают, как рабочий, по причине слабой поддержи со стороны браузера.
  4. sIFR – клевая вещь, наиболее употребляемая на сегодняшний день, но как недостаток – требует наличия Flash-плагина. Хотя это трудно назвать недостатком, но если есть инструмент, позволяющий обойтись без плагинов, то это не может не радовать.
  5. Cufón – самое то. Относительно новый метод, который показывает превосходные результаты. Он и есть герой этой статьи.
Читать дальше →

Виджет обратной связи

Reading time2 min
Views2.5K
imageFeedback > 2.0 интересный аскетичный по дизайну виджет и необычный в реализации. В нем вы найдете только самые нужные функции для сбора отзывов и предложений от посетителей вашего сайта. Ничего лишнего – все только по делу.
Рализация данного виджета по сути уникальна так как он полностью разработан на Javascript, включая работу с базой данных. Виджет обратной связи состоит из двух частей:
  • Виджет обратной связи (отображается на вашем сайте)
  • Виджет админ (панель администрирования)
Весь код виджета и панели администрирования предоставляется под opensource лицензией LGPL3.
Подробнее о виджете и рабочий пример

Нюансы сериализации

Reading time1 min
Views2.5K
Думаю многим известны «магические» методы __sleep и __wakeup для управления сериализацией объектов.

Казалось бы все просто:
__sleep вызывается перед сериализацией чтоб можно было убрать ненужные связи (бд, мемкэш и тд).
__wakeup вызывается после unserialize, чтоб можно было автоматом необходимые связи вернуть в зад.

Но есть нюанс. Причем я сталкивался с ним раза 4 за последние 5 лет работы.
Читать дальше →

Управляем Flash-объектом на Javascript

Reading time3 min
Views12K
Управляем Flash-объектом на JavaScript

Возможности JavaScript в 95% случаев позволяют решить любую задачу для Web 2.0. Но иногда хочется чуточку больше, чуточку красивее, возможно, чуточку быстрее. В этой статье на примерах я хочу показать, как восполнить этих 5% недостающего функционала средствами Flash.
Эта статья будет полезна разработчикам, которые пишут в основном на JavaScript и имеют минимальные знания ActionScript 3.

Для вдохновения


Вдохновил меня на написание этой статьи пример из пакета FancyUpload, реализующий одновременную загрузку нескольких файлов на сервер с симпатичным прогресс-баром в стиле gmail (обратите внимание: можно сразу выбирать несколько файлов).

Этот пример интересен тем, что дизайн и управление контролируется средствами CSS и JavaScript. JavaScript при необходимости использует необходимый функционал из Flash.

Если Вам понравилось, идем дальше: мы рассмотрим как это работает на более простом примере.
Читать дальше →

Лучшие стартапы Апреля

Reading time6 min
Views1.2K


Апрельский рейтинг порадовал. 10 лучших проектов месяца, пройдя через горнила народного отборочного голосования, и отобравшись в итоговый рейтинг, перед вами. Это 10 действительно очень классных проектов. Я абсолютно убежден, что это самые сильные 10 проектов за все время, что мы делаем подобные рейтинги. Больше и говорить ничего не надо. Под катом вы найдете 10 отличных стартапов, некоторые, из которых обязательно вам понравятся. Тем временем совсем скоро начнется голосование за звание лучшего стартапа Мая. Зарегестрироваться на участие можно здесь — startuppoint.ru/startup/add

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

Загрузка по требованию и jQuery

Reading time1 min
Views3.1K
Несмотря на то, что необходимо минимизировать количество http-запросов, иногда (или часто, в зависимости от задачи) бывает полезно загружать часть «тяжелого» функционала только тогда, когда он действительно понадобится на странице.
У jQuery есть механизм, позволяющий осуществить это — $.getScript, однако, он обладает рядом недостатков:
  • не запоминаются уже загруженные или загружаемые в данный момент скрипты, при повторном запросе опять идет их загрузка.
  • нельзя указать сразу несколько скриптов
  • выключен кэш (к каждому урлу насильно приписываются параметры типа ?_=1242843920520). Зачем это было так жестко сделано, для меня осталось загадкой.
  • у коллбэка нельзя задать контекст (это вообще болезнь коллбэков jQuery).
Пришлось написать небольшой плагин, лишенный вышеперечисленных недостатков:

$.requireScript(url, callback, [context], [options])
Где:
url — урл загружаемого скрипта (может быть массивом урлов)
callback — коллбэк-функция, вызываемая после загрузки скриптов
context — контекст, в котором вызывается коллбэк-функция (опционален)
options — параметры; в данный момент поддерживается только один параметр — parallel, указывающий, нужно ли использовать параллельную загрузку для нескольких скриптов (по умолчанию — true)


Может кому-то пригодится. Скачать и попробовать можно с code.google.

UPDATE: согласно замечаниям в комментах, $.loadScript переименован в $.requireScript, и теперь можно указать несколько урлов сразу.

7 творческих принципов Pixar от John Lasseter

Reading time4 min
Views2.6K
Данный текст подготовил и перевел Евгений aka jeje. Если текст вам понравился, то благодарите Евгения, сам он опубликовать перевод не может из-за ограничений кармы.

1.Никогда не начинайте с одной идеей


Если вы хотите написать книгу, сделать дизайн мебели или мультфильма — Никогда не начинайте с одной идеей, их должно быть три.
«Причина проста. Если продюсер приходит ко мне с предложением о новом проекте, он вынашивает эту конкретную идею долгое время. Это ограничивает его. Мой ответ всегда: «Приходи ко мне, когда будешь иметь три идеи, и это не значит, что одна хорошая, а две остальных плохих. Я хочу три действительно прекрасных идеи, из которых ты не можешь решить, какая же лучше. Будь готов обосновать все три задумки. Затем мы решим, какую идею ты будешь развивать далее.»

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity