Как стать автором
Обновить
7
0
Mac9 @Mac9

Пользователь

Отправить сообщение

Создание серии картинок с изображениями их порядковых номеров

Время на прочтение4 мин
Количество просмотров1.4K
В подведомственном мне компьютерном клубе, в качестве оболочки (альтернативного рабочего стола) используется RunPad Shell. Недавно вышла его новая версия в которой наконец-то появилась давно запрошенная фича: обработка переменных окружения в пути к файлу заставки.

Я давно хотел поставить на каждом компьютере заставку с его номером, но не хотел настраивать каждый комп по отдельности. А сейчас можно одним ударом прописать всем путь «J:\_rs\scrsvr\%rs_machine%.jpg» и дело за малым — нарисовать картинки.

Но каким образом можно получить набор картинок с изображениями их порядковых номеров?
Вот об этом и поговорим
Всего голосов 17: ↑16 и ↓1+15
Комментарии6

2Гига.Выпуск #22: С техническим уклоном

Время на прочтение1 мин
Количество просмотров682
2ГигаУчастники:
Евгений Жарков
Владимир Юнев
Гость:
Денис Гладких
 

Содержание: Длительность: ~70 минут
Подкаст на RPOD, POD.FM
Всего голосов 35: ↑25 и ↓10+15
Комментарии8

8 правил вирусного маркетинга

Время на прочтение2 мин
Количество просмотров577
1. Идея должна быть достойна того, чтобы стать вирусом. Если она не стоит того, чтобы о ней говорили, то никто и не будет о ней говорить.

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

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

Читать дальше или сразу бросать плюшки
Всего голосов 11: ↑6 и ↓5+1
Комментарии9

SMS Уведомления + Логирование событий в Google Calendar на PHP

Время на прочтение2 мин
Количество просмотров2.6K
Навеяло: Чудеса автоматизации или как отправляют SMS настоящие гики.
Если люди делают такие изощрения — значит сильно надо.

За пару часов был разработан класс для добавления в Google Calendar событий. А уже календарь гугла станет нам слать СМСки.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии18

Кадрирование картинок с использованием JQuery

Время на прочтение1 мин
Количество просмотров1.5K
Кадрирование фотографий сейчас востребовано, потому что любое сообщество подразумевает общение живых людей. А общатся с собеседником проще «зная его в лицо».

У меня были свои требования к контролу который будет производить кадрирование. Поискав идеальное готовое решение я его не нашел и решил написать свой.

Требования такие:
1. Иконки за которые надо тянуть, чтоб изменить блок, должны быть большие.
2. Часть изображения которое вырежется должна быть оригинальная, а то что образается полупрозрачно прикрыто.

Вид кадрирования

Скрипт использует библиотеку JQuery. Сам контрол сделан как плагин к JQuery.
Можете посмотреть ПРИМЕР в работе, там же подробнее о плагине.

Интерфейс плагина следующий:

// Создает в указанном блочном элементе структуру элемента управления кадрирования
$(element).CropImageCreate(src, src_width, src_height, min_width, min_height, proportion, options);

// Возвращает данные о кадрированном изображении в виде объекта {src, left, top, width, height}
$(element).CropImageGetData());

P. S. Из готовых скриптов которые я нашел на мой взгляд лучший — imgAreaSelect.
Всего голосов 25: ↑22 и ↓3+19
Комментарии14

Гимн для дизайнеров

Время на прочтение2 мин
Количество просмотров1.3K
Я уверен, что любому дизайнеру знакома история, связанная с утверждением дизайна (сайта, плаката, неважно…), когда заказчик (ну или скажем шеф) не может утвердить конечный вариант, и собирает массу народа «обсуждать дизайн» (нужно заметить, что большая часть собравшихся совершенно не разбирается в дизайне). К чему это я?

В свое время Сергей Михалков написал замечательную басню СЛОН-ЖИВОПИСЕЦ. Сие произведение рекомендую распечатать и использовать в качестве гимна всем дизайнерам и вменяемым менеджерам работающими с заказчиком.
Читать дальше →
Всего голосов 55: ↑52 и ↓3+49
Комментарии25

Современная теория и практика веб-дизайна

Время на прочтение6 мин
Количество просмотров3.1K
Далее распологается текст первого раздела моей дипломной работы «Юзабилити в web 2.0», написанием которой я сейчас занимаюсь. В данном разделе рассказывается о зарождении web-дизайна и приходе в эту области знаний и опыта HCI (human-computer-iteraction), как следствие, появлении юзабилити. И в конце информация о тенденциях в современном развитии веба.
приступить к прочтению
Всего голосов 7: ↑7 и ↓0+7
Комментарии27

Введение в SVG и пример — pie chart

Время на прочтение6 мин
Количество просмотров6.6K
SVG (scalable vector graphics) это векторный формат графики подобно EPS, анимации и интерактива с пользователем, разрабатываемый в W3C. Внутри файл не бинарный а обычный XML, описывающий объекты, их эффекты и поведение. Векторная графика в общем нужна при изменении размера изображения без потери качества, например в полиграфии. В web я это вижу в резиновых сайтах, где размеры блоков установлены в %, размер шрифтов в em, а лого — в SVG. Пересели на более хороший монитор — всё изменилось пропорционально. Практические примеры — иконки, графики, карты, логотипы, интерфейсы. Ниже я привожу пример такого Pie-chart'а.


Интеграция

HTML — Inline
Поскольку SVG по сути XML, то его можно сразу inline-стилем описывать в XHTML-структуре. Однако как я уже убедился, XHTML1.1 doctype подразумевает что MIME документа уже не text-plain. А «ослик» IE6 не понимает XHTML в принципе, с другой стороны Firefox использует два парсера, и если MIME не application/xhtml+xml, то inline SVG не будет распознан. Это палка с двумя концами — IE и FF.
/>
Второй способ и наиболее практичный — ссылаться на существующий файл через object-тэг. Для
уменьшения траффика, файл можно сжать и получить SVGZ архив.
CSS и Javascipt
Как вы увидите ниже — поскольку SVG очень тесно связан с HTML/XML, то естественно что на графические объекты можно не только описывать при помощи CSS, но и писать Javascript-функции на всевозможные onclick и тп. event'ы (отсюда и интерактивность). />
Конвертирование и редакторы
Конвертировать SVG можно и в png/jpeg, но для этого фактически надо проделать работу обработчика. В PHP этим занимается PEAR XML_svg2image библиотека. Ещё есть сервис по конвертированию растрового изображения в векторный (правда там EPS). Из редакторов — есть Inkscape и Adobe Illustrator, Corel Draw.

Графика

Примитивы

Всякое рисование начинается с определения пространства (двумерного), разделения на координаты (в единицах с плавающей точкой или процентах) и введения примитивных конструкций:
  • line — прямая линия. x1, y1, x2, y2 — координаты
  • polyline — ломанная линия. points — перечисление координат точек
  • rect — прямоугольник. x,y, width, height, rx, ry — верхний левый угол, размеры, радиусы углов
  • polygone — многоугольник. Похож на polyline. points — координаты точек
  • circle — круг. cx, cy, r — координаты центра и радиус
  • ellipse. cx, cy, rx, ry — координаты центра и радиусы
  • text — текстовая надпись. Очень неудобная, потому что без переноса строк и с абсолютным позиционированием. x,y, font-family, font-size
  • tspan — может описывать слова внутри text-элемента. Например сдвигать или раскрашивать
  • tref — повторное использование text-элемента с указанным id
    Простой текст
    <tref xlink:href="#myText" x="50" y="50">
textPath — текст на path-кривой, связанный по id/>
<textPath xlink:href="#myPath" startOffset="50%">Водка Vinogradoff
image — растровое изображение
<image image-rendering="optimizeSpeed" xlink:href"background.jpg" width="100%" height="100%" preserveAspectRatio="xMidYMid slice" filter="url(#blurpane)"/>
Параметры и стили
Как и в html, одни линии мало кому нужны — их надо закрашивать, указывать цвета, и всё это делается параметрами
  • fill, fill-rule — заливка. Например «none»,blue, indigo.
  • stroke, stroke-linecap, stroke-linejoin, stroke-dasharray, stroke-dashoffset, stroke-width — граница, аналог border. Вместе stroke-width.
  • font-family, font-size, font-style, font-weight — шрифты для text-элементов
  • text-anchor
Для заливки используются тэги:
  • pattern
  • linearGradient
  • radialGradient
Эти параметры можно все объединить в один аналог CSS и записать в inline-стиле:
style="stroke-width:1; stroke:blue; fill:none"
Группы и кривые Безье
Элементы можно и нужно группировать друг в друга. Кроме того что tspan устанавливаетсявнутрь text-элемента, группирование происходи благодаря элементу.Кривые Безье это плавные переходные линии, задающиеся по точкам. В SVG для этого существует элемент path, у которого подобно ломанной линии указываются координаты. Рядом с координатами могут стоять буквы, обозначающие свойства линии. Большие буквы говорят об абсолютном позиционировании, маленькие об относительном
  • M — начало кривой (x,y)
  • Z — конец кривой (без координат)
  • L -прямая линия (x,y)
  • H — горизонтальная линия
  • V — вертикальная линия
  • Q — квадратичная кривая по одной точке
  • T — продолжение кривой с отражением предыдущей точки — упрощает рисование повторяющихся ритмов
  • С — собственно кривая Безье третьего порядка по двум точкам
  • S — упрощённая версия C
  • A — эллиптическая кривая (радиусы, поворот)

Трансформации и возможности

Объекты в SVG пожно искажать, крутить и перемещать при помощи фильтров, которые указываются в качестве параметров:
  • translate — перенос объекта
  • rotate -вращение
  • scale — масштабирование
  • scewX, scewY — искажение
  • matrix — смешанная трансформация
SVG поддерживает фильтры с эффектами освещения. А кроме статичных изображени есть возможность, анимации и интерактивности с пользователем. Например тетрис или нашумевший Microsoft Table и Silverlight реализован программно в SVG, причём при большом желании — заработало и видео (формата Ogg Theora=SVGT). Конечно последние возможности ещё не реализованы во всех браузерах, но первооткрыватели типа Opera имеются.


Тортовый график на SVG и PHP/DB

Несомненно Google API — очень удобная штука. Но не стоит забывать что всё-таки это внешний сервис, пусть и надёжный. Коммерческие разработки не любят рисковать, поэтому генерация графиков всё-таки должно быть локальным (если они не статические).Генерировать изображение я буду с помощью php, на основе полученных из
БД данных для отображения результатов опроса (poll). Поскольку GD-библиотека хоть и понимает размер SWF,
генерирует только бинарные файлы. Поэтому генерировать прийдётся XML:header("Content-Type: image/svg+xml"); Посмотрим к чему надо стремится (пока без крутой анимации)… Начнём с резинового расположения двух эллипсов? Сектора видимо идут в порядке убывания по часовой стрелке, что-бы уменьшить количество градиента на мелких участках. Цвет сектора видимо расчитывается пропорционально числу кусочков — тут то и возникает проблема. Как оказывается, сектор нельзя просто-так залить с двумя линиями и существующим эллипсом — фигура должна быть точно очерчена, поэтому надо рисовать всё по отдельности при помощи path, а ellipse нам не понадобится.
Тригонометрия цвета
Для вычисления в цикле координат path-элемента необходимо вспомнить немного математики. Поскольку окружность — частный случай эллипса то в формулах есть много схожего, что нам очень пригодится: x=cos(angle)*radius; y=sin(angle)*radius; //circle
x=cos(angle)*rx; y=sin(angle)*ry; //ellipse

Для эллипса же радиус просто заменяется на большую и малую полуось соответсвенно. Дальше создаём цикл, где вычисляем процентное распределение данных, градус длясектора с path. Вчисляем координаты для арки, для этого используем «сдвиг градуса» что-бы отрисовка всех секторов шла вплотную.RGB куб, можно по разному резать, делать проекции и вводить свои системы
координат типа CMYK и HSL. Разные оттенки выбранной оранжевой заливки получаются при разбиении отрезка между выбранной точкой-цветом и вершиной белого цвета (255,255,255). if ($intTotalValue) // если сумма значений голосования больше нуля то можно делить и рисовать
foreach((array) $Data as $key=>$recEntry){
$Data[$key]->percent=$recEntry->value/$intTotalValue;
$Data[$key]->color[0]=round($graph->fill[0]+($key/count($Data)*(255-$graph->fill[0])));
$Data[$key]->color[1]=round($graph->fill[1]+($key/count($Data)*(255-$graph->fill[1])));
$Data[$key]->color[2]=round($graph->fill[2]+($key/count($Data)*(255-$graph->fill[2])));

$Data[$key]->degree=360*$Data[$key]->percent;
$Data[$key]->start['x']=$graph->cx+round(cos(deg2rad($intDegreeShift)) * $graph->rx,3);
$Data[$key]->start['y']=$graph->cy+round(sin(deg2rad($intDegreeShift)) * $graph->ry,3);
$Data[$key]->end['x']=$graph->cx+round(cos(deg2rad($intDegreeShift+$Data[$key]->degree)) * $graph->rx,3);
$Data[$key]->end['y']=$graph->cy+round(sin(deg2rad($intDegreeShift+$Data[$key]->degree)) * $graph->ry,3);
$intDegreeShift+=$Data[$key]->degree; //increase degree shift

$boolIsLargeArc=$Data[$key]->degrees>180? 1 : 0;
echo "\n".'/>';
}
Если посмотреть на график внимательно, то видно что объёмность делается
при помощи градиента, который в SVG мы сначала зальём в качестве фона,
а поверх будем накладывать уже конкретные цвета сектора с прозрачностью:

/>
/>
/>

Основные проблемы

Но проблема остаётся и с закрашиванием пограничных секторов — закрашивать переднюю область поверх градиента надо только у тех областей, которые до половины торта идут. К этому этапу картинка выглядит так:graph_limit_problem_416
Абсолютный текст
Кроме того вопрос возникает как располагать текстовые описания секторов? Google попросту ведёт линии с середин секторов, даже если текст не умещается в одну строчку. В SVG позиционировать текст надо от верхнего левого угла — что уже проблема, поскольку ширины мы не знаем. Выхода два — отказаться от относительного позиционирования текста и сделать выноски цветом, либо использовать текст с фиксированной шириной (monospace, Courier) и на этой основе расчитывать длину в пикселях и положение на лету. Благо я наткнулся на параметр text-anchor:end, который странным образом развернул текст как надо.

Интерактивность и будущее

Благодаря интеграции с javascript'ом, можно соответсвенно в реальном времени при помощи AJAX'а обновлять изображение. В моём случае это необходимо когда пользователь голосует и надо обновить распределение голосов на графике.

Читайте также:

Оригинал статьи с иллюстрациями и пример использования
Всего голосов 20: ↑18 и ↓2+16
Комментарии2

Веб-дизайн тренды 2011

Время на прочтение6 мин
Количество просмотров13K
Между дизайном и разработкой существует тонкая грань, которая, с переходом в новое десятилетие, становится всё более размытой. Достаточно ли просто нарисовать красивый макет в Фотошопе? Может быть пять лет назад этого и было достаточно. В наши дни среднестатистический пользователь интернета требует большего. Весь лоск сайта со временем надоедает, если в нем нет никакой сути. Если ваша единственная цель поразить дизайнерское сообщество вашими яркими работами долго на плаву вы не продержитесь. 2011 год характеризуется не красотой, а функциональностью. А теперь собственно тренды нового года и ближайшей декады: виртуальная реальность, постоянная связь и интерактивный дизайн.

Как остаться релевантным дизайнером в 2011? Главная цель дизайнера не ослепить, а завлечь. Любой дизайнер может получить «охи» и «ахи», которые легко забываются. Величайший дизайнер способен создать среду, которая чарует и пленяет пользователя так, что он даже и не думает о том, чтобы искать кнопку «назад». Несколько элементов собраны воедино, чтобы создать прекрасный мир в котором есть все: гармония цвета, интуитивный дизайн, легко доступная информация и быстрый отклик. Кроме того, никогда нельзя недооценивать силу простоты. Конечно это всегда было так, но в 2011 вы не только под всепрощающей эгидой десктопов и лэптов. Сейчас ваш дизайн должен справлятся с нетбуками, смартфонами и таблетками. Вы готовы?

Взглянем на ТОП 11 трендов в 2011 году.

Читать дальше →
Всего голосов 141: ↑119 и ↓22+97
Комментарии92

Паттерны проектирования (design patterns) — agilepod #13

Время на прочтение1 мин
Количество просмотров8.4K
Шаблоны (паттерны) проектирования – это то, что знают архитекторы. На тренинги по “ШП” отправляют старших разработчиков. Нужно ли это простому труженнику села? Какой секрет в этом скрыт? Или секрета там нет?

* Что такое паттерны и зачем они нам
* Каталоги паттернов: GoF, PoEAA, IP и др.
* Секретная структура любого каталога
* Почему нужно изучать паттерны
* Развитие командной культуры и профессиональной интуиции
* С чего начинать?

Упоминалось:
Шаблоны уровня архитектуры (хотя бы я бы с этим поспорил, так как классикой является Бушман)
Шаблоны проектирования уровня классов и взаимодействий (банды четырёх)
О том же, но вариант попроще (переосмысленная переделка)
Шаблоны низкого уровня, уровня написания строчек кода и «кодо-стиля»
Всего голосов 39: ↑32 и ↓7+25
Комментарии14

Какие этапы прописывать в договоре

Время на прочтение7 мин
Количество просмотров13K
В прошлых заметках и комментариях к ним я рекомендовал разбивать работу с заказчиком на этапы, каждый этап сдавать и получать за него деньги. Коллеги стали спрашивать, какие этапы можно выделить при создании сайта, и я решил написать об этом подробнее.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии103

Типографика в движении

Время на прочтение2 мин
Количество просмотров6.1K
Чтобы не нарушать пятничной расслабленности, позволил себе немного развлечься просмотром видеороликов, непосредственно связанных с типографикой.

Пока что удалось обнаружить два вида интересных с точки зрения типографики видеороликов:
  • титры в кино (movie title sequence),
  • кинетическая типографика (kinetic typography).
Под хабракатом приведу несколько роликов-иллюстраций и дам ссылки на дальнейшее копательство в YouTube.

Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии20

Смена оформления сайта в зависимости от времени суток.

Время на прочтение1 мин
Количество просмотров12K
Подобное конечно не новинка, и технически совершенно не сложно, но возможно кому то это покажется интересным и нужным.
Сразу отмечу, что меня побудил написать пост этот блог.

Многие видели в сети и писали скрипты, которые здороваются с посетителем по разному, в зависимости от времени суток («доброе утро», «добрый день», «привет тебе, человек с бессонницей»). Но можно пойти дальше, меняя оформление сайта, путём переключателя CSS.

Читать дальше →
Всего голосов 31: ↑25 и ↓6+19
Комментарии75

FeedJournal: Убей дерево — сделай газету из любимых RSS.

Время на прочтение1 мин
Количество просмотров790


Когда-нибудь хотелось распечатать все свои избранные RSS-ленты и читать их, как газету? FeedJournal — сервис, который теперь позволит вам сделать это. <br / >
Веб-разработчики могут также добавить виджет на свои сайты, который позволит посетителям видеть их содержимое, как газету.
Источник
Всего голосов 47: ↑42 и ↓5+37
Комментарии36

Чёрточки: только ли тире, минус и дефис?

Время на прочтение4 мин
Количество просмотров179K
Однажды вечером я почувствовал, что пришло время расширить 97‐ й параграф «Ководства» Артемия Лебедева.

На клавиатуре одна чёрточка, она обычно правее нуля и повыше букв «З» и «Х». Неосведомлённые люди называют её попеременно то дефисом, то минусом, то тире. Лебедев объясняет нам, что это четыре (учитывая две разновидности тире) различных символа. На самом деле их как минимум девять, и об этом я и расскажу вам сейчас.

Читать дальше →
Всего голосов 311: ↑288 и ↓23+265
Комментарии208

Информация

В рейтинге
Не участвует
Откуда
Луцк, Волынская обл., Украина
Дата рождения
Зарегистрирован
Активность