zzweb-панель

Шпаргалки по web-программированию

PHP, CSS, JavaScript, jQuery...


Шпаргалка по функциям, приемам и трюкам, которые мне понравились, которыми я пользуюсь в работе.

короткая ссылка
RSS


отдельные темы:
Ру Курепин
вернуться в «Куреплики»

НАЖМИТЕ, чтобы добавить следующую запись на страницу...
Есть такая библиотека и просто одна из лучших (быстрых) реализаций MD5 для JavaScript


· Ру ·
открыть открыть в новом окне      x 
Чтобы убрать из html нежелательные тэги, css, javascript и так далее, существуют разные готовые решения. Одно из них — htmlpurifier.org.

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


Если программист говорит, что SQLite — какая-то недоделанная фигня (а это встречается весьма часто), гоните его в шею. Он сам, скорее всего, недоделанная фигня. ;-)

SQLite, как и любой другой инструмент, надо использовать по назначению. Тогда ему просто цены нет!

Лично я использую sqlite наравне с другими БД уже много лет и не было случая, чтобы этот инструмент меня хоть раз подвел или не оправдал возложенных на него надежд.

Эту zz-ветку я посвящаю SQLite вообще и SQLite3 — в частности. В ней буду вести записи о специфических особенностях и маленьких хитростях, которые не всегда можно найти в официальной документации.
· Ру ·
открыть открыть в новом окне      x 
Чтобы клонировать элементы DOM, удобно пользоваться функцией jQuery clone

А чтобы клонировать обычный объект, можно воспользоваться парой встречных JSON-функций:



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



Как и почему этот плагин работает — доходчиво написано у его автора.

Мне это решение очень понравилось. В оригинальном виде я его не использую, но сделал на его основе нужны мне модули для javascript.
· Ру ·
открыть открыть в новом окне      x 
Пересмотрел туеву хучу разных решений для всплывающих подсказок. В результате остановился на jQuery Bubble Popup.

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

Да, чуть не забыл: оно бесплатное. :)
· Ру ·
открыть открыть в новом окне      x 
По умолчанию функция PHP json_encode строит json-структуру, кодируя unicode-символы в стиле \uXXXX.

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

Начиная с версии 5.4.0, в PHP появилась константа JSON_UNESCAPED_UNICODE, которую можно передать в качестве параметра фукнции json_encode, которая отменяет это кодирование.

Я не знаю, существуют ли какие-то минусы в отказе от кодирования Unicode, а плюсы могу перечислить:

  • читаемые человеческим глазом json-файлы;
  • уменьшение размера конечного json-файла;
  • увеличение скорости json-кодирования;
  • увеличение скорости json-декодирования.

Готовую информацию о скорости кодирования и декодирования мне найти не удалось, поэтому тесты проводил сам, собирая и разбирая отдельные главы произведения «Война и мир».

Синтетические тесты показали средний прирост в скорости работы json_encode — 30%, а json_decode — до 300%.

Разница, надо сказать, существенная.

Поэтому, в моих скриптах немедленно появилась собственная функция:



которую я стал вызывать вместо шатного json_encode. Чего и всем советую.
· Ру ·
открыть открыть в новом окне      x 
Замечательная функция PHP urlencode кодирует все, что только можно закодировать. Поэтому ей нельзя «скормить» полный URL (он будет поломан), ею кодируют только те части URL, которые относятся к параметрам.

И это очень неудобно в некоторых ситуациях. Например, при создании карты сайта (sitemap).

Меж тем, в Javascript есть функция encodeURI, которая сохраняет двоеточия, слеши, вопросительный знак и другие важные символы в некодированном состоянии.

Удивительно, что такой функции нет в PHP, но ее достаточно легко изобразить (следующий код не мой, найден где-то в Сети, но довольно прост и эффетивен):


· Ру ·
открыть открыть в новом окне      x 
Если вы не знаете, почему ваш сайт должен быстро загружаться, начните вашу жизнь web-разработчика с самого начала.

С остальными делюсь ссылкой на приятную мерялку скорости загрузки сайтов.

Поскольку все подобные измерения относительны, лучше сразу выбрать какую-то точку опоры. Например, Яндекс:

http://img.zzweb.ru/img/734103/Voila_Capture6.png


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

http://img.zzweb.ru/img/734103/Voila_Capture8.png


http://img.zzweb.ru/img/734103/Voila_Capture7.png


http://img.zzweb.ru/img/734103/Voila_Capture5.png

· Ру ·
открыть открыть в новом окне      x 
Много по-настоящему полезной информации:
· Ру ·
открыть открыть в новом окне      x 
Давно известно, что в js функция typeof возвращает что угодно, только не тип данных.

Ребята из JS Garden утверждают (и я с ними согласен), что достоверно получить тип можно только через Object.prototype.toString. Выглядит это примерно так:


· Ру ·
открыть открыть в новом окне      x 
JavaScript Гарден — интересности и полезности в javascript на русском языке.

Вступление, поясняющее суть проекта:

JavaScript Гарден это постоянно обновляющаяся и растущая документация по самым заковыристым темам языка JavaScript. В ней вы найдёте советы о том, как избежать распространённых ошибок и предсказать появление тех или иных багов. В документации подробно освещены проблемы оптимизации и нерекомендуемые практики с которыми, продираясь к глубинам языка, могут столкнуться даже просвещённые JavaScript-программисты.

JavaScript Гарден не имеет цели научить вас языку JavaScript. Вам понадобится реальный опыт работы с языком чтобы понимать темы, рассматриваемые в этом руководстве. Если вам требуется изучить основы языка, пожалуйста внимательно ознакомьтесь с замечательным руководством на сайте Mozilla Developer Network.

Все в сад!
· Ру ·
открыть открыть в новом окне      x 
В javascript есть очень элегантный оператор, который позволяет выполнить несколько дел в том месте, где по синтаксису положено только одно. Это обыкновенная запятая.

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

Подробнейшая статья с наглядными примерами тут.
· Ру ·
открыть открыть в новом окне      x 
Очень хорошая разжевывалка манеры поведения пресловутого 'this' в javascript.

Рекомендую каждому, кто не уверен в стопроцентном понимании правил возникновения значений этого магического слова в javascript.
· Ру ·
открыть открыть в новом окне      x 
Чтобы хранить и управлять данными в localStorage браузеров, достаточно базовых команд javascript. Однако, для удобства и скорости разработки я предпочитаю пользоваться готовыми библиотеками.

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

Кроме непосредственной работы с ячейками данных, jStorage уже включает в себя функции для «прослушивания» общих данных в соседних окнах и закладках браузеров. Это позволяет прозрачно для пользователя обновлять состояние корзин с покупками и различных настроек во всех открытых окнах сайта.

· Ру ·
открыть открыть в новом окне      x 
http://img.zzweb.ru/img/729100/Voila_Capture76.png

Решил в факультативном режиме поковырять node.js.

А тут я фиксирую то, что приметилось и что может пригодиться в будущем по этому интересному и перспективному механизму.
· Ру ·
открыть открыть в новом окне      x 
Кто-нибудь знает красивое решение для создания эффекта рваного края для картинки?

Что-то вроде такого края:

http://img.zzweb.ru/img/726834/torn-edge_21347711.jpg


Можно с использованием графики, но в идеале хотелось бы на чистом CSS.

Важна кроссбраузерность и легкость решения.

Поделитесь.
· Ру ·
открыть открыть в новом окне      x 
M$ наплодил столько уродливых осликов, что мы еще долго будем защищаться от надоедливого их преследования.

Вчера прикручивал к zzweb обыкновенные «хинты» на CSS3. Они должны показываться только при наведении мыши, а MSIE показывает их при загрузке страницы. Все сразу. И не гасит.

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

Я решил пойти своим путем…

В javacript страницы добавил следующую строку:

И все заработало как надо.

Поясню сей фокус. Только раненые в голову программисты могут написать браузер, для которого '\v' равно 'v'. И эти программисты писали MSIE до 8-й версии включительно.

Определив такой браузер, просто отнимаем класс hint от всех объектов, где должна быть всплывающая подсказка. Вот и вся хитрость. Разумеется, в этот кусок можно будет добавлять другие события, касающиеся только IE до 8-й версии. Ну а 9-я, хоть и не без греха, но все же тянет основные стандарты.

Да, я отнял подсказки у нескольких пользователей. Но! Если человек пользуется браузером MSIE до 9-й версии, значит ему уже терять нечего — он и так большой кусок Сети не видит. Чего уж там какие-то всплывающие подсказки.

Зато код чистый, хак короткий и, что немаловажно, не требует последующей поддержки/модификации. Правда, хак не сработает, если у пользователя отключен JS. Но MSIE с отключенным JS — это уже такая клиника, что никакими хаками не вылечить…
http://img.zzweb.ru/img/721602/ie-must-die.jpg
· Ру ·
открыть открыть в новом окне      x 
· показать следующие записи ·