Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Методы parseInt и parseFloat: особенности и альтернативы

28.03.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Для преобразования строки в число в JavaScript используются два метода: parseInt - для целых чисел и parseFloat для чисел с плавающей запятой. В официальной документации про parseInt сказано примерно следующее:


Метод parseInt возвращает целое значение, равное числу, содержащемуся в его параметре. Если параметр не может быть обработан как целое, возвращается NaN.


И почти то же самое про parseFloat:


Метод parseFloat возвращает числовое значение, содержащееся в его параметре. Если параметр не может быть обработан как число с плавающей точкой, возвращается значение NaN.


Вроде бы все логично и понятно. Еще небольшое отличие, что parseInt имеет второй параметр - основание системы счисления, в которой рассматривается конвертируемое число, к нему мы вернемся чуть позже. А теперь от красивой теории перейдем к суровой практике.

Читать статью целиком »
Просмотров: 13579 | Комментариев: 6

PCL's JS_Protect 1.0

27.01.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Небольшой класс на PHP для шифрования скриптов JavaScript. Изначально задумывался как дополнительная мера противодействия спамботам, но пока успешно работают более простые методы, и PCL's JS_Protect остался в качестве proof of concept. Класс позволяет шифровать исходные тексты скриптов JavaScript с целью затруднения их автоматического анализа. Любителей всякой малвары и шаровары сразу огорчу: JS_Protect легко снимается вручную при помощи Eval JavaScript Unpacker. Главный недостаток этой защиты в том, что зашифрованный скрипт очень сильно увеличивается в размерах.
  1. // Подключение модуля
  2. include "js_protect.php";
  3.  
  4. // Создание класса
  5. $js_protect = new JS_Protect;
  6.  
  7. // Исходный код скрипта для шифрования
  8. $js_protect->js_source=$code;
  9.  
  10. // Уровень вложенности шифровки. Рекомендуется 1, максимум 2
  11. $js_protect->code_level=1;
  12.  
  13. // Количество внутренних функций. Повышают надежность, но значительно
  14. // увеличивают размер получаемого кода
  15. $js_protect->func_level=rand(0,6);
  16.  
  17. // Выполнить URL-кодирование защищенного скрипта или нет
  18. $js_protect->enable_raw=false;
  19.  
  20. // Запуститиь процедуру шифрования
  21. echo $js_protect->protect();
Вложенность шифрования не рекомендуется выставлять более 2, потому что в этом случае размер скрипта вырастет до совсем недопустимых размеров. Опция "использовать внутренние функции" дает дополнительную защиту, но также увеличивает размер получаемого скрипта. Если эта опция не нужна, то установите значение func_level = 0. URL-кодирование также дает дополнительную защиту и скрывает обработанный текст, но при этом еще больше увеличивает размер.

Читать статью целиком »
Просмотров: 4089 | Комментариев: 2

Обработка колесика мыши на JavaScript

12.10.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Сейчас трудно представить мышь без хотя бы одного колесика. Оно используется для прокрутки страницы, для изменения масштаба каких-либо элементов, листания списков и других действий. В основном полная обработка колесика выполняется только в стационарных приложениях, а на сайтах дело ограничивается штатными средствами браузеров. Мы не будем отставать от прогресса, и сегодня разберем как грамотно обрабатывать колесико мыши в современных web-приложениях. Начинаем с теории.


Обработчик события - функция на JavaScript, которая назначается некоторой паре "объект страницы" + "название события". Когда для объекта происходит назначенное событие, выполняются все обработчики, назначенные этому объекту.


Вращение колесика мышки - это тоже событие, значит его тоже можно обработать. Но тут есть особенность: в разных браузерах событие вращения колесика обозначается по-разному. Причину этого я объяснить не могу, впрочем как и многие другие танцы с бубнами для достижения полноценной кроссбраузерности. Сперва напишем функции установки и отмены события для любого элемента страницы, причем сделаем их универсальными, они нам еще не раз пригодятся в будущем. В браузере Internet Explorer обработчики добавляются функцией attachEvent, а названия событий имеют вид 'on'+событие, например, 'onclick', 'onload', 'onmousewheel' и т.д. В браузерах на движке Gecko (Mozilla, Firefox), на движке WebKit (Chrome, Safari) и Opera обработчики добавляются функцией addEventListener, а названия событий никак не меняются, то есть 'scroll', 'keypress', 'mousewheel'. И отдельно в этом списке стоит имя события от колесика мышки для браузеров на движке Gecko, оно единственное и уникальное - 'DOMMouseScroll'. Теперь попробуем все эти данные собрать в кучу.

Читать статью целиком »
Просмотров: 21137 | Комментариев: 8

PCL's Floating Window 1.0.0

06.08.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Для очередного проекта мне понадобился скрипт для создания плавающего окна, которое можно перетаскивать по экрану мышкой. Готовые скрипты или не имели нужного мне функционала, или же были слишком громоздкие, а таскать за собой чужеродные фреймворки ради одной функции - слишком дорогое удовольствие. В результате нескольких часов работы появился скрипт PCL's Floating Window.

Описание и возможности PCL's Floating Window:
  • Кроссбраузерность. Скрипт протестирован и гарантированно работает в браузерах Internet Explorer 6.x-8.x и IE-based (Avant Browser, TheWorld, Maxthon и других), Gecko-based (Firefox, Mozilla, Netscape 8.x-9.x, K-Meleon и других), Opera 7.5-9.x, WebKit-based (Safari, Google Chrome, Iron и других). Поддерживаются различные типы DOCTYPE web-страниц.

  • Простое добавление скрипта на страницу, настройка и подключение к нужным плавающим элементам. Функции центрирования плавающих элементов в пределах видимой области экрана, их скрытия и отображения.

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

  • Корректное позиционирование нескольких плавающих элементов относительно друг друга, активный элемент всегда располагается поверх остальных. Корректное отображение взаимного перекрытия нескольких элементов.

  • Скрипт абсолютно бесплатный, единственным условием его использования является сохранение в исходном коде скрипта информации об авторе и ссылки на этот сайт. Категорически запрещается распространять скрипт PCL's Floating Window за деньги или иное вознаграждение, как отдельно, так и в качестве составной части других дистрибутивов!
Если в каком-нибудь из заявленных браузеров скрипт будет работать некорректно, то просьба сообщить в комментариях точную версию браузера и настройки подключения скрипта.

Читать статью целиком »
Просмотров: 5149 | Комментариев: 7

"Я знаю AJAX, ЧПУ, CMS и много других страшных слов"

28.03.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Немного перефразированную шутку из названия я часто вспоминаю, когда посещаю многие сайты, популярные и не очень. Web-мастера, начитавшись умных слов и получив в свое распоряжение готовые CMS сайтов и фреймворки, облегчающие разработку, начинают их активно использовать. И в результате очень часто в жертву приносится такая важная составляющая сайтов, как юзабилити. Если единственное, для чего вам нужен сайт - это завешать его порнушными баннерами и поп-апами в три слоя, разместить стыренный контент исключительно на платных файлообменниках, чтобы любыми средствами срубить бабла, то валите отсюда подальше, мне с такими мразями говорить не о чем. Эта статья для немногочисленных web-мастеров, которые стремятся к тому, чтобы на их сайт посетителям хотелось вернуться, чтобы от результатов их труда все получали только удовольствие. Я никого не хочу ни в чем убеждать, но если кто-нибудь после прочтения задумается, значит моя цель достигнута. Мало знать современные технологии, надо уметь их грамотно применять. Вполне возможно, что какие-то вещи будут для вас очевидными, просто наболело :)

В современном web-строительстве очень популярно использование так называемых ЧПУ - "человекопонятных УРЛ". Это красивые, интуитивно понятные ссылки, формируемые из названия раздела и статьи. Например:

http://www.site.ru/category/subcategory/article_name
При обращении к такой ссылке она разбирается средствами сервера на отдельные параметры и дальше обрабатывается как обычная ссылка. Один из основных принципов формирования ЧПУ заключается в том, что при обрезании ссылки до последнего слеша, посетитель должен попадать на вышестоящий раздел сайта. Это хорошо и правильно, но до тех пор, пока в ссылке не начинает присутствовать дата:

http://www.site.ru/2009/01/25/article_name
По логике вроде бы все правильно: дата добавления статьи, название статьи. При обрезании ссылки до дня получаем все статьи за день, до месяца - за месяц и т.д. Проблема в том, что такая система формирования ссылок хорошо подходит для новостных сайтов, но категорически не годится для основного контента порталов. Информация на новостных сайтах привязана ко дню, когда случилось это событие и после публикации на сайте вряд ли когда изменится. А в популярных портальных движках (названий не указываю, кому надо и так поймет) дата публикации обычно равна дате последнего редактирования статьи, и вот тут начинаются косяки. Реальный случай из жизни: на каком-нибудь сайте выложили какую-то нужную мне информацию. Я зашел на сайт, добавил ссылку в закладки браузера или послал ссылку товарищу в аську. На следующий день пользователь, разместивший статью, отредактировал ее. В результате дата изменилась, ссылка, соответственно, тоже, а сохраненная ранее ссылка становится недействительной. Приходится заново тратить время, искать нужную статью, что никак не добавляет положительного отношения к сайту. Аналогичная ситуация складывается, если идентификация в ЧПУ жестко завязана на полном названии статьи. Удобно? Нет.

Читать статью целиком »
Просмотров: 6241 | Комментариев: 9

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0053 сек.) / Память: 4.5 Mb
Наверх