Для написания своего поискового мне как-то понадобилось узнать диапазон символов кириллицы в unicode.. сделать это было довольно легко, т.к. в интернете много уже готовых алгоритмов и примеров регулярных выражений для обработки кириллицы...
Но мне стало интересно, а почему бы не использовать все буквенные символы unicode?
Недолго думая, направился на сайт unicode.org, где нашел базу данных unicode.. в этом скопище файликов, записанных в формате csv собрана информация обо всех символах unicode: тип символа, параметры отображения и другие свойства..
упорядочив все символы по классам назначения, я решил их представить в удобном для себя (и возможно, для кого-то еще) виде.. и сделал небольшой такой конструктор, который вы видите ниже..
пометьте необходимые классы символов unicode и скрипт напишет соответствующий диапазон символов, который можно использовать в регулярных выражениях.. сечас к примеру указаны все текстовые символы: классы Lu, Ll -- буквы в верхнем и нижнем регистре, класс Lt -- заглавные буквы и класс Lo -- символы иероглифов..
читать далее »
25.07.11 21:26 Фракталы
Однажды в субботнее летнее утро мне страсть как захотелось порисовать фракталы :-)
нет, серьезно.. я давно слышал о таких математических изысках, но сам никогда не вникал в их суть..
Фракталы -- это фигура, части которой подобны самой себе.. и по сути все вокруг нас является фрактальными структурами: галактики, речные системы, строение дерева, кровеносная система и т.д. фракталы являются одной из фундаментальных составляющих нашего мира.. а о них вот мало кто слышал.. за более подробной информацией обращаемся к вики..
и вот значит, фракталы.. к слову сказать, термин фрактал ввел в 1975 сотрудник IBM Бенуа Мандельброт.. если честно, меня поражает компания IBM, которая за свои долгие годы чем только не занималась.. тут и филология, и экономика, и математика, и теория чисел, и физика, и химия.. а многие привыкли считать, что IBM занимается лишь компьютерными технологиями..
так вот.. фракталы.. математики заметили, что если производить итерации в ряду Zn = Zn-12 + C, где Z и C комплексные числа, то при некоторых Z0 и C значение Zn (при n → ∞) стремится к определенному значению.. в остальных же случаях Zn стремится к бесконечности.. причем, где-то быстрее где-то медленнее..
на этом принципе и строится мой алгоритм построения фрактала: для каждой точки плоскости делаем оценку сходимости ряда Zn.. в качестве Z0 берем относительные координаты плоскости и делаем итерации, пока ряд не расходится или не сходится, и в зависимости от этого закрашиваем текущую точку плоскости красным цветом.. чем быстрее ряд расходится тем менее яркая точка.. если же ряд сходится, то цвет точки ярко-красный..
в случае фракталов Мандельброта и Жюлиа используется соотношение Zn = Zn-12 + C, но я решил обобщить построение фракталов и взял общий случай Zn = Zn-1K + C, где K - любое рациональное число..
Для построения фракталов можете воспользоваться ссылочками ниже .. или же можете вручную изменить настройки построения в форме внизу старницы и нажать кнопку Обновить картинку (или же нажать клавишу Enter, находясь в любом из полей ввода)..
Внимание: построение объектов занимает некоторое время.. поэтому если браузер вылетит с ошибкой, что скрипт не отвечает, жмите кнопку Продолжить.. через некоторое время увидите результат.. :-)
► Первоначальное изображение
► Увеличение нижней правой ветви в 2 раза
► Увеличение нижней правой ветви в 3 раза
► Увеличение нижней правой ветви в 6 раз
► Увеличение нижней правой ветви в 12 раз
► Увеличение нижней правой ветви в 24 раза
и так до бесконечности.. разве не удивительно?.. и кто говорит, что математика не прекрасна?.. :-)
теперь давайте поэкспериментируем со степенью инкремента и величиной дополнения:
► 3 снежинки
► запутавшееся Сердечко
► неведомая штука
► воронки
► еще воронки
► еще снежинки
► пентаграммка
► паутинка
► квадратус
в целом никакой магии в построении нет, степень инкремента определяет симметрию фрактала (дробные степени дают довольно забавную разорванную картинку).. величина дополнения определет распределение точек фрактала по плоскости: чем меньше дополнение, тем более плотным получается фрактал; чем больше дополнение, тем более разреженным становится фрактал..
21.07.11 22:16 Синглтоны Javascript
О том, как создавать в javascript объекты, написано довольно много:
http://habrahabr.ru/blogs/javascript/48542/
http://habrahabr.ru/blogs/webdev/38642/
потому я не буду пересказывать здесь все заезженные способы, а лишь покажу собственную технику создания объектов-одиночек (синглтонов)..
итак, нам нужен объект, имеющий публичные и приватные свойства и методы.. так создадим таковой, используя замыкания:
var instance = (function(){
var public = {}, draw, some;
draw = public.draw = function(){
// делаем что-нибудь..
};
some = function(){
// делаем что-нибудь
};
return public;
})();
...
instance.draw();
здесь создается объект instance, у которого есть приватный метод some() и публичный метод draw()..
как видно, нет ничего сложного в объялении свойств и методов: и публичные, и приватные свойства и методы объявляются внутри функции-обертки..
разница лишь в том, что публичные свойства и методы мы дублируем в переменную public, которая будет отдана объекту..
некоторые спросят: а зачем вообще нужны синглтоны, зачем нужна инкапсуляция?
понимание необходимости рассмотрим на бытовом примере..
например, нужен онлайн-калькулятор чего-нибудь, калькулятор должен:
-- считать что-нибудь,
-- хранить промежочные значения чего-нибудь,
-- хранить параметры отображения, настройки и т.п. служебную информацию..
если подумать логически.. ведь будет очень удобно, если все данные (свойства) будут хранится в одном месте (объекте), и будет не менее удобно, если весь функционал (методы) будут хранится там же.. содержание данных и функционала в одном объекте улучшает понимание и упрощает разработку модели.. и к тому же это не засоряет глобальный name space..
итак, что нужно для создания объекта?.. очевидно, класс, фабрика объектов.. а сколько объектов класса у нас в принципе будет? очевидно, только один -- ведь зачем нам 10 калькуляторов на странице?.. тогда очевидно, что паттерн программирования синглтон тут окажется как никак кстати.. :-)
инкапсуляция (сокрытие) данных нам тоже очень пригодится, чтобы сторонние скрипты не имели доступа к служебной информации и данным нашего калькулятора..
читать далее »
24.06.11 22:33 Общение
А по сути, если подумать, что же влияет на общение двух людей?
В первую очередь, это контекст общения, ситуация, положение.
Например, покупатель - продавец в магазине, учитель - ученик в школе, начальник - сотрудник на работе, автоинспектор - водитель на дороге, девушка - юноша на вечеринке, друг - друг при дружбе.
Заметьте, что в контексте общения можно всегда выделить роли, которые участники применяют в процессе общения.. измените контекст общения и роли участников также изменятся: сегодня Алиса и Борис общаются как продавец и покупатель, а через год могут общаться уже как муж и жена..
Во вторую очередь, на общение влияет история самого общения, сама сущность общения.
Например, можно даже не знать как зовут продавца в магазине, но если вы месяц покупаете у него каждый день булочки, то он начинает по другому к вам относиться - чувствуется какая-то доброта и тепло..
В третью очередь, на общение влияет общность интересов, увлечений, мировоззрения.. или страхов, комплексов..
Этот фактор влияет обычно при личном, более близком общении с человеком.. чем больше точек соприкосновения, тем больше человек открыт собеседнику, больше увлечен в это общение..
Нередко люди порицают других, что те не могут поддержать беседу, не могут связать и двух слов..
Но по сути, каждый человек может сказать что-то новое.. хотя бы из своего опыта..
Открытость в общении, умение поддержать разговор зависит от настроения собеседника, от того знакома и интересна ли тема разговора.. от целей, которые преследует собеседник по отношению к вам.. в конце концов, от симпатии, которую испытывает к вам собеседник..
Например, если юноша не особо приятен внешне, то девушка скорее всего будет с неохотой поддерживать беседу..
или наоборот.. если девушка привлекательна, а юноша преследует цель завоевать ее (хотя бы на ночь), то он будет такую лапшу на уши вешать, что потом разгребай хоть вилами.. =)
И в заключение, надо отметить, что в каждом случае перечисленные факторы располагаются в своей последовательности, в каждом случае факторы имеют свой приоритет и значимость..
читать далее »
03.04.11 19:41 Угадай цвет!..
Чем может занятся на досуге программист? конечно же написанием никому ненужного кода.. =)
Главное, чтобы это приносило удовольствие ему самому..
Вот так же и я.. от нечего делать решил написать мини-игрушку: Угадай цвет.. цвет карты, выбранной случайным образом.. предположите, какого цвета может быть случайная карта.. и нажмите на Красная или Черная.. и посмотрите угадали ли вы.. =)
читать далее »