Pull to refresh
73
0
Дмитрий @depp

User

Send message

Загрузка по требованию и 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, и теперь можно указать несколько урлов сразу.
Total votes 45: ↑44 and ↓1+43
Comments52

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

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

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


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

«Проблема у творческих людей всегда одна – они чаще всего фокусируют все свое внимание на одной идее. И выходит так, что они ограничивают свой выбор с самого начала проекта. Каждый творческий человек должен это попробовать. Вы будете удивлены, как это требование внезапно заставит вас думать о других вещах, которые вы даже не рассматривали до того. Из-за этой отстраненности вы вдруг найдете новые перспективы. И поверьте мне, существует всегда, как минимум, три хороших идеи»
Читаем далее
Total votes 87: ↑81 and ↓6+75
Comments26

SMTP relay или что делать если ваш сервер попал в email-блеклист

Reading time2 min
Views60K


Если вдруг невинные письма с вашего сайта начали повально попадать в spam-боксы почтовиков, это может означать, что IP вашего сервера попал в email-блеклист. Вероятность этого возрастает, если у вас не свой собственный сервер. Примерный сценарий попадения в блеклист таков:
  • Юрий Иванович, директор небольшой студии танцев, имеет сайт «по соседству» с вами (читай, на том же сервере). В один прекрасный момент, Юрий Иванович узнает о чудесных перспективах email-маркетинга и рассылает пачку из двадцати тысяч писем с однотипной рекламой своей студии.
  • Или же, Вася Попов, не пользующийся антивирусом, но любящий старые версии Total Comander, апдейтит свою домашнюю страничку по FTP. В один прекрасный момент, спящий ранее троян, похищает пароли к Васиному FTP (которые лежат незащищенные в папке Total Comander). На следующий день, Васина домашня страничка уже отсылает десятитысячное предложение о покупке виагры.
  • Или же, Петя Твердохлебов, который имеет рядом сайт на Друпале версии 5.0 и думает что обновления это «от лукавого», в очередной солнечный день ловит XSS уязвимость и начинает, сам не зная того, отсылать рекламу потенциальным покупателям penis-enlargment pills.


Что делать и как быть?
Total votes 50: ↑43 and ↓7+36
Comments38

Личный тайм-менеджмент

Reading time9 min
Views93K
Почитав недавний топик про лягушек я понял, что Хабрасообщество не очень хорошо ориентируется в вопросах тайм-менеджмента и многие никогда не занимались построением своей тайм-системы.

Поэтому я попробую исправить этот недочёт.

Под катом Вы не найдёте каких-то инновационных моделей управления временем. Это будет фундамент, основа, без которой нельзя обойтись людям, которые заботятся о своём будущем, о своём благосостоянии и личностном развитии.

Welcome!

Читать дальше →
Total votes 194: ↑177 and ↓17+160
Comments155

API – на Яндекс.Фотках

Reading time1 min
Views3.3K

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


С помощью API разработчики могут создать приложения и веб-сервисы, загружающие фотографии на сервис Яндекс.Фотки, создающие и редактирующие альбомы, изменяющие настройки доступа к фотографиям и многое другое. (Например, это API уже используют Мобильные Яндекс.Фотки или Яндекс.Фотки для iPhone/iPod touch)


Страница API Яндекс.Фоток расположена по адресу http://api.yandex.ru/fotki. Все вопросы о новой возможности можно задать в Клубе сервиса Яндекс.Фотки на Я.ру.


Иван Челюбеев

Total votes 43: ↑34 and ↓9+25
Comments14

Простые заметки о веб-разработке

Reading time5 min
Views1.5K
Давно мне хотелось написать статью про состояние дел на рынке и в студиях. Для этого я несколько последних месяцев записывал в Evernote все приходившие мысли на тему моего бизнеса в частности и бизнеса студий вообще. Таких заметок на полях накопилось много, но в итоге они оказались слишком разрозненными для статьи. Да и времени на писательство как не было, так и нет.

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

На проводимых нами мероприятиях по веб-разработке, в том числе на недавнем РИФоКИБе, были обсуждения многих вопросов по теме. Они добавили мыслей и тем для новых заметок, я буду их постепенно излагать здесь.

Простые заметки о веб-разработке
Total votes 67: ↑52 and ↓15+37
Comments45

Инфраструктура современного офиса — 3

Reading time6 min
Views9.9K
Что-то я затянул с очередной серией, но тому были причины: от кучи неотложных дел на работе, до раненого автомобиля :(
Ладно, в этот раз — организация внешних вводов, вопросы построения телефонии и некоторые аспекты построения Wi-fi. Как и в предыдущих сериях, я не претендую на глубину раскрытия техники, стремясь лишь показать основные варианты развития элементов инфраструктуры. Предыдущие серии про инфраструктуру здесь и здесь (а здесь — бонус трек про оборудование Allied Telesis).

Провайдерские вводы


Существует целый спектр возможных решений, каждое из которых следует принимать руководствуясь масштабом организации, бюджетом и внешними факторами. Рассмотрим основные по пунктам:
  1. Вы — небольшая компания (до десяти человек), заезжаете в подвал жилого дома или, пуще того, в квартиру на первом этаже жилого здания.
    В такой ситуации с выбором провайдера привередничать не приходится и надо рассчитывать на наличие в здании местного провайдера (если их несколько — вам сильно повезло, конкуренция повышает уровень сервиса). Можно пытаться экономить, оформляя интернет на физическое лицо, однако, в таком случае, стоит быть готовым к тому, что в прайм-тайм местечковый провайдер решит, например, «поменять сетевое оборудование», что приведет к неприятному простою в работе. Целесообразно в такой ситуации предусмотреть резерв хотя бы в виде мобильного интернета (Skylink, Yota, Edge/GPRS) — критически важное письмо в таком случае, пусть медленно, но доползёт. Телефония в такой ситуации, как правило, исполняется в виде «медно-волоконного канала» городского провайдера.
  2. Вы все еще небольшая компания, но сидите в гараже (бытовке, ларьке, домике на дереве, здании на территории промзоны).
    Все безрадостно — ваш единственный выход — радиоканал до ближайшей точки присутствия скоростного интернета, либо, если шансов добить по радио нету — интернет через сотовый телефон. Если шансы все же есть, запасайтесь дальнобойными направленными антеннами и шагайте в ближайшее место, где может быть интернет. В моей практике был случай, когда автосервис около года работал через стрим, который находился в двух километрах от. Проблемы в таком случае те же, что и в предыдущем (нестабильность местного кабельного провайдера), правда, в случае использования длинного Wi-Fi линка вы еще и от погоды зависеть будете. В сильный дождь или снегопад перебои — не редкость..
  3. Вы заезжаете в бизнес-центр.
    Все уже лучше, но не без специфики: как правило владельцы бизнес центров уже договорились с одним-двумя большими провайдерами, что ограничивает ваш выбор (притащить своего провайдера удастся только если вы — очень большая компания с серьезной арендной ставкой). Плюс ситуации в том, что канал организуют быстро, и, скорее всего без проблем. Явный минус — один — монополисты в здании тарифы могут воротить очень грустные.
  4. (моя ситуация) Вы заезжаете в отдельно стоящее здание.
    Геморрой страшный, но при должном подходе получится очень красиво :) Подробно об этом сценарии — чуть ниже.

Итак, отдельно стоящее здание. Учитывая, что вы — хозяин положения, при организации провайдерских вводов стоит учитывать следующее:
  • Отказоустойчивость (любой более-менее серьезный маршрутизатор умеет выбирать живой канал). По возможности закладывайте два независимых канала от независимых провайдеров;
  • Дороговизна (более серьезный провайдер будет просить более серьезных денег). При этом более дешевый провайдер будет, скорее всего, грешить всеми детскими болезнями домовых сетей — падения канала в течение дня, « плановые профилактические работы» в прайм-тайм и прочие прелести
  • Время подключения. Если в предыдущих сценариях вас скорее всего подключили бы в течение дня-двух, то построение индивидуального канала может стать вопросом нескольких месяцев (тут и согласования с городскими кабельными службами, и неповоротливость больших провайдеров, и проблемы со строителями..)

И все? А где же телефония и WiFi? В конце-концов и про вводы можно поподробнее..
Total votes 44: ↑40 and ↓4+36
Comments50

Элементарный Bash скрипт для резервного копирования данных

Reading time3 min
Views55K
Привет хабралюди, сейчас я расскажу как можно немного автоматизировать рутиную работу по подготовке бэкапов.

В данном случае, мы не будем использовать мощные программы, или даже целые системы для резервного копирования данных, ограничимся самым доступным что у нас есть. А именно — Bash скриптом.

Читать дальше →
Total votes 53: ↑43 and ↓10+33
Comments63

Наглядное объяснение финансового кризиса (теперь на русском!)

Reading time1 min
Views2.8K
image
Пост на Хабре с нашумевшей визуализацией кредитного кризиса от Джонатана Ярвиса собрал множество положительных откликов. Поэтому мы решили перевести это видео на русский язык и переозвучить его!

Немного предыстории… Это видео — часть дипломной работы по медиа-дизайну Джонатана Ярвиса (Media Design Program, the Art Center College of Design in Pasadena). Его целью было кратко и наглядно изложить основные причины, обстоятельства и предпосылки мирового финансового кризиса простыми и понятными словами.

По-моему, у него это получилось, причем не просто наглядно и доступно, но еще и красиво! Итак, давайте еще раз разберемся, почему же наступил кредитный кризис?

Читать дальше →
Total votes 147: ↑138 and ↓9+129
Comments92

Многоуровневое дерево с маркерами (только HTML, CSS, без Javascript)

Reading time5 min
Views24K
Многоуровневое дерево с маркерами (только HTML, CSS)До того как заняться верской гитарных аккордов (статьи 1,2,3) я столкнулся с необходимостью сделать человеку на сайте меню-дерево. Рисовать не хотелось вообще, поэтому я взял старый добрый HTML с CSS и начал делать это дерево, начал с простого одноуровневого, а позже сделал многоуровневое с маркерами, которое и представлю.

Позже это дерево дало мне плоды в виде habrahabr.ru/blogs/css/53792
Читать дальше →
Total votes 107: ↑105 and ↓2+103
Comments81

Range, TextRange и Selection

Reading time13 min
Views78K
Многим JavaScript-разработчикам приходилось сталкиваться с объектами, перечисленными в заголовке, например, при решении следующих задач:
— создание визуальных редакторов (wysiwyg),
— поиск в окне браузера,
— выставление BB-кода,
и т.д.

В этой статье автором предпринята попытка собрать перевод документации об этих объектах в одном месте + написать небольшие сопроводительные примеры. Перевод вольный, не дословный, так что если встретите неточность или корявую формулировку — пишите в комментариях.

В целом пост носит справочный характер, и, надеюсь, кому-то упростит разработку.

Читать дальше →
Total votes 96: ↑96 and ↓0+96
Comments28

Seaside 2.9: Частичные продолжения

Reading time10 min
Views1.6K
Некоторое время назад на хабре проскакивал топик про «континуации» от ХабраЮзера qmax. Он был весьма впечатлен идеей, а вот подробно рассказать не вышло. И вот недавно один из разработчиков Seaside, Джулиан Фитзелл написал потрясающую по своей доходчивости статью. С его разрешения я сделал ее перевод и хотел бы поделиться с хабрасообществом.

Сразу хотелось бы сказать о терминологии. В качестве перевода слова continuation я использую наиболее близкое по смыслу «продолжение». Общая же терминология статьи для неискушенного в Smalltalk разработчика может показаться непривычной. Так, вместо стека вызовов используется «цепь контекстов», а вместо потока — «процесс». Если у вас останутся вопросы после прочтения — смело задавайте их в комментариях. Спасибо.
читать полный текст статьи
Total votes 36: ↑31 and ↓5+26
Comments22

SoapClient: параллельные асинхронные запросы, реконнект, обработка тайм-аутов

Reading time3 min
Views8.1K
Dklab_SoapClient — это расширенная версия стандартного PHP-класса SoapClient, предназначенная для параллельного (асинхронного) удаленного вызова процедур в высоконагруженных проектах.

При помощи этой библиотеки вы можете, например, строить страницу вашего сайта из блоков, как из конструктора. Каждый блок запрашивается через SOAP отдельно и независимо от других, при этом все запросы происходят параллельно. Если один из блогов не уложился в отведенное ему время (тайм-аут), то его можно не отображать на странице.

По сравнению со встроенным в PHP SoapClient, поддерживаются дополнительные возможности:
  • Одновременное, параллельное выполнение запросов к нескольким удаленным процедурам — ключевая особенность библиотеки. Если страница на вашем сайте собирается из 5 удаленных блоков, каждый из которых генерируется по 100ms, их можно запустить параллельно и получить всю страницу целиком не за 500ms, а за те же самые 100ms.
  • Реконнект при невозможности установления связи. К сожалению, мир несовершенен, и из-за случайной потери пакетов первая попытка соединения с SOAP-сервером может закончиться тайм-аутом. Это особенно часто происходит, когда проект располагается в нескольких датацентрах. Dklab_SoapClient позволяет задать тайм-аут на время открытия соединения (например, 1 секунду) и, в случае неудачи, повторить попытку указанное число раз. На практике это снижает вероятность итогового сбоя в тысячи раз, т.к. реконнект почти всегда помогает при утере пакета.
  • Поддержка тайм-аута на получение данных. Если страница собирается из удаленных блоков, то в случае «подвисания» одного из них «зависает» и вся страница. В то же время, отсутствие одного из блоков при наличии остальных — не такая большая беда. Вы можете указать, сколько времени Dklab_SoapClient должен ждать ответа от удаленной процедуры; если время превышено, возникает исключение PHP, которое вы можете обработать по своему усмотрению, не прерывая загрузку остальных блоков.
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments29

Плагин загрузки картинок для TinyMCE

Reading time1 min
Views9.5K
Несколько дней назад я писал о выходе новой версии своего плагина для TinyMCE, многие уже успели его потестировать, за что им огромное спасибо, все критические баги были исправлены.
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments67

Марш против RDBMS или проекты распределенных хранилищ (key-value stores)

Reading time5 min
Views15K
candybar2Вот вы часто создаете проекты? И, наверное, везде применяете базу данных, в частности, MySQL (а кто-то и PostgreSQL). Но вот что интересно, по опыту да и просто после чтения описания различных архитектур видно, что далеко не везде в проекте нужны ключевые особенности баз данных, во многих случаях базу используют просто как некоторое хранилище обычных данных. Например, в системах кеширования базы обычно не применяются, более того, кеширование как раз используют для того, чтобы избежать лишних запросов. А что используют для кеширования наиболее часто? Memcached. А что это такое? Это распределенная система хранения данных на основе хеш-таблицы. В общих чертах, это просто хранилище пар ключ-значение, над которыми можно производить только основные операции — запись, чтение, удаление и проверку на присутствие. Да-да, нет никаких фильтров, выборок, сортировки, самый максимум — система тегов для выборки одним запросом всех связанных записей. И во многих случаях такого функционала вполне достаточно.
Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments31

50 монохромных образцов дизайна web-сайтов

Reading time1 min
Views16K
Выбор цвета является ключевым элементом для успеха любого дизайна. Он определяет атмосферу и задает настроение. Один из способов отображения цвета, использование только оттенков, который называется монохроматической цветовой схемой.

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

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

В этой статье мы рассмотрим 50 монохроматических вариантов дизайна, сайты разбиты на категории в зависимости от преобладающих цветов, которые они используют (все варианты кликабельны).

Монохромные варианты дизайна
Total votes 98: ↑77 and ↓21+56
Comments58

Чистый шаблонизатор — PURE

Reading time1 min
Views6.6K
Совсем недавно открыл для себя интересный шаблонизатор под названием PURE.

Им удобно пользоваться, у него хороший сайт, а также поддержка самых разных JavaScript-библиотек (Prototype, jQuery, MooTools, Sizzle, скоро Dojo).
пример использования
Total votes 32: ↑17 and ↓15+2
Comments42

JS Charts — генератор графиков и схем.

Reading time1 min
Views16K
image
JS Charts является бесплатным JavaScript-генератором графиков и схем, который требует минимум знаний программирования. С JS Charts рисование диаграмм становится простой и легкой задачей. Он не требует никаких дополнительных плагинов и серверных модулей. Просто подключите скрипты, подготовьте данные для схемы в XML или массиве JavaScript и ваша таблица готова.
Читать дальше →
Total votes 71: ↑66 and ↓5+61
Comments33

Ненужные отступы в списках

Reading time1 min
Views5.1K
Если элементы списка отобразить как inline – между ними появляются ненужные отступы.
Далее о том, откуда они берутся, и как это исправить.

1. Броузер рендерит не тот код который вы пишете, а тот, который получится в результате валидации вашего.
2. В каком-то доисторическом стандарте (html 3.2 кажется) было сказано, что тег LI закрывать не обязательно.

IE чтоб ему было удобнее рендерить приводит и закрытые и не закрытые теги LI к одному варианту, конечно же к не закрытому. (А что вы от него ждёте?) После закрывающего тега LI идёт перевод строки, он идентичен пробелу. Этот пробел и добавляется к тексту внутри LI. В нормальных броузерах этот пробел становится между тегами.

Проверить можно тут.

Читать дальше →
Total votes 74: ↑46 and ↓28+18
Comments66

Современная отладка JavaScript

Reading time12 min
Views26K
В связи с достаточно широким выбором неплохих отладчиков, JavaScript-программисты могут получить достаточно много пользы, изучая то как их можно использовать. Их пользовательские интерфейсы становятся все более совершенными, более стандартизированными между собой и более легкими в использовании, что делает их полезными как для экспертов так и новичков в отладке JS. В этой статье мы обсудим передовые методы отладки для диагностики и анализа ошибок, используя типичное веб-приложение.

В настоящее время средства отладки доступны для всех основных браузеров.
  • Firefox имеет хорошо известное расширение Firebug
  • IE8 выпускается со встроенными Developer Tools
  • Опера 9.5+ поддердивает отладчик Dragonfly
  • У Safari есть JS-отладчик Drosera и DOM-вьювер WebInspector. В более свежих версиях отладчик интегрирован в WebInspector.

На данный момент Firebug и Dragonfly наиболее стабильны. Утилиты IE8 иногда игнорируют контрольные точки, а во время написания этой статьи WebInspector имеет некоторые проблемы совмстимости с последними билдами Webkit.

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

Читать дальше →
Total votes 83: ↑77 and ↓6+71
Comments18

Information

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