Pull to refresh

Для пилотов ВВС США разработали умную систему оптимизации расписаний экипажей

Reading time 3 min
Views 1.2K
Artificial Intelligence Transport

Министерство ВВС США совместно с Массачусетским технологическим институтом разработало для своих пилотов инструмент оптимизации AI Accelerator, который помогает составлять расписание для экипажей грузовых рейсов C-17.

Читать далее
Total votes 15: ↑15 and ↓0 +15
Comments 2

В рамках сокращения расходов Google предписала сотрудникам делить рабочие места с коллегами

Reading time 2 min
Views 3K
Personnel Management *IT-companies

Корпорация Google попросила сотрудников своего облачного подразделения делить рабочие места с коллегами, начиная со второго квартала 2023 года. Таким образом компания стремится сократить расходы, ссылаясь на более эффективное использование недвижимости.

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 19

11 flash-компонентов для построения графиков для rich web

Reading time 1 min
Views 1.6K
Website development *
Если вы занимаетесь разработкой интерфейсов, то наверняка сталкивались с необходимостью разместить на страницах вашего проекта график или диаграмму того или иного содержания и вида: в одном случае это мог быть график суточного отсева спам-сообщений, в другом – “живая” диаграмма, отображающая количество комментариев к вашей статье.
Читать дальше →
Total votes 22: ↑16 and ↓6 +10
Comments 8

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

Reading time 6 min
Views 6.2K
Lumber room
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'а обновлять изображение. В моём случае это необходимо когда пользователь голосует и надо обновить распределение голосов на графике.

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

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

Оптимизируем рабочий график.

Reading time 1 min
Views 596
Self Promo
Для начала немного предыстории.
Наша компания является сервисной, в первую очередь мы заботимся о клиентах и их проблемах.
Это конечно замечательно отражается на наших с клиентами партнерских отношениях, постоянно кто-то звонит/пишет/приезжает из клиентов и ребята тратят все время на новые заказы от клиентов, мелкие доработки или просто дебаггинг.

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

На днях в голову пришла мысль, как можно данную ситуацию исправить, не вкладываясь в увеличение штата и не изменяя ориентацию компании.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 51

Open Flash Chart — построение «чартов» или бесплатное решение «Активного графика» на PHP+ActionScript3

Reading time 3 min
Views 2.4K
Lumber room
На статью натолкнула соседний топик про pChart — pChart — строим графики и диаграммы на PHP
Сразу опишу со своей стороны минусы:
1) Он не активный — тоесть не кликабельный
2) У некоторых как говорится «дизайн желает лучшего»
3) Меньше нагрузка на сервер (график строится на клиентской части)
4) Так как индексации нету, график всегда в РеалТайме

Минусы ActionScript3 графика:
1) Нельзя сделать snapshot (грубо говоря состояние графика, 2-3-4 часа назад или чтоб уменьшить нагрузку на сервере сделать импорт графика в image)


Вот пример не «кликабельного» графика на примере pChart:
pChart
А вот пример Open Flash Chart'a:

Живой пример — Индексация WMZ кошелька (для тех кому интересен как это было реализовано, будет описано если этот топик прокатит. У меня в написании статьей почти 0-лвл :) )

Читать дальше →
Total votes 26: ↑16 and ↓10 +6
Comments 10

Рисуем pie график

Reading time 3 min
Views 7.3K
.NET *
Как-то понадобилось добавить в проект симпатичный 3-d pie график.
Пока толпа решала на какой компонент потратить денежку, нарисовал вот такой вот график:

image

Кому надо, делюсь кодом прототипа, он минимален:

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

Firefox 4.0 перенесли на 2011 год

Reading time 1 min
Views 375
Firefox
Дедлайны для финальных релизов Firefox 3.6 и 4.0 немного смещены. И не в ту сторону, в какую нам бы хотелось.

По новому плану, релиз Firefox 3.6 перенесли на I кв. 2010 года, хотя раньше планировалось закончить работу в декабре.

Четвёртый релиз тоже стал немного дальше. Если раньше цель стояла чётко до конца 2010 года, то в новом графике присутствует уже расплывчатая формулировка «в конце 2010 или начале 2011 года». По опыту мы знаем, что опережение графика вряд ли состоится, так что раньше 2011 года ждать Firefox 4.0, наверное, не стоит. Однако, бета-версия по-прежнему запланирована на лето.

В наши дни конкуренция браузеров стала настолько плотной, что каждый месяц задержки уже даёт фору конкурентам. Opera и Chrome публикуют по несколько релизов в год, не говоря уже о IE, который тоже пока не торопится уйти со сцены.
Total votes 32: ↑19 and ↓13 +6
Comments 19

14 величайших стартап провалов

Reading time 1 min
Views 1.1K
Lumber room
Translation
image

Мы тут перевели очень интересный график о компаниях, которые потерпели крах в своём бизнесе с большими потерями капитала. Многим будет интересно почитать коротко и дальше самостоятельно исследовать историю этих проектов и компаний. Возможно, их история поможет вам избежать некоторых ошибок. В списке присутствуют очень интересные и актуальные до сих пор проекты.
График под катом, наслаждайтесь! :)
Читать дальше →
Total votes 49: ↑36 and ↓13 +23
Comments 34

История интернета на одном графике

Reading time 1 min
Views 659
Lumber room
Ниже кликабельная мини-версия, открывающая оригинальный график размером 700 на 4625 пикселей.
Перевод оригинальной картинки осуществил snarker, за что ему большое спасибо!

MBA Online
Via: MBA Online
Total votes 129: ↑83 and ↓46 +37
Comments 65

Экспорт графика в Microsoft Excel

Reading time 7 min
Views 9K
SharePoint *
Tutorial
Sandbox
Доброго времени суток, уважаемые Хабровчане.

Я — начинающий разработчик SharePoint, и сегодня хотелось бы рассказать о решении одной интересной задачи. Нужно было сделать веб-часть для SharePoint, которая должна обрабатывать таблицу с данными, выводить график на экран, а так же уметь экспортировать таблицу и график в Microsoft Excel. Под катом мой способ решения, отрывки кода веб-части и ссылка на проект.
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Comments 0

Mozilla предлагает изменить график выхода браузеров

Reading time 1 min
Views 1.3K
Browsers
image
Как известно, Mozilla Foundation выпускает новые версии своего браузера Firefox каждые шесть недель. Это обстоятельство в конце июля явилось причиной некоторого напряжения между некоторыми крупными игроками корпоративного рынка и Mozilla, которая приняла решение прекратить поддержку стремительно устаревающей четвертой версии браузера в угоду эффективности разработки новых версий. Тогда же руководство фонда фактически высказалось в том смысле, что корпоративный рынок для них неинтересен и долгосрочная поддержка браузера для таких корпораций как IBM должна стать проблемой самих корпораций.

Теперь же фонд Mozilla пересмотрел свои планы. Руководство предложило выпускать определенные версии Firefox в рамках Extended Support Release (ESR) каждые тридцать недель, что в пять раз медленнее обычных «пользовательских» браузеров и что должно удовлетворить основные пожелания корпоративного рынка, соотносящего график выпуска своего программного обеспечения с графиком релиза Firefox. Выпущенные ESR-версии Firefox будут поддерживаться фондом еще 42 недели.

Официальный документ Mozilla с предложением находится здесь

[Источник]
Total votes 61: ↑50 and ↓11 +39
Comments 56

Визуализация данных

Reading time 1 min
Views 13K
Web design *
Привет!

Ребята с ресурса Data Visualization собрали несколько очень интересных решений для представления данных:



Datavisualization.ch Selected Tools

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

Datavisualization.ch является одним из ведущих ресурсов в интернете, рассказывающих о визуализации данных и инфографике. На сайте обсуждаются и исследуются интересные и инновационные идеи в этих областях.
Total votes 79: ↑76 and ↓3 +73
Comments 6

Создание графиков с помощью pChart. Данные из MySQL

Reading time 3 min
Views 39K
Website development *PHP *
Sandbox
Здравствуйте Хабрачитатели! В этом посте я хотел рассказать вам о построении графиков с помощью pChart. Сложного в нем ничего нет, но стандартно(позже, на сайте девелопера нашел и MySQL инфу) он берет данные из файла. Мне это никак не подходило под свои нужны, и я начал ковыряться в скрипте. Результат ниже.

Итак, что нам понадобится:
1. php-модуль GD(для апаче естественно).
2. Скачать библиотеку pChart 1.27.

Чтобы долго все это дело не описывать, я сразу дам готовый скрипт для построения графиков, данные берутся из БД.
Читать дальше →
Total votes 15: ↑8 and ↓7 +1
Comments 16

Считаем ширину экранов у посетителей сайта

Reading time 3 min
Views 61K
Web design *

Вступление


Недавно обсуждал с девушкой-дизайнером, под какие же размеры экрана стóит рисовать сайты. Аргументы наши были, мягко говоря, необоснованными:
— У меня сайт на домашнем компьютере слишком широкий, надо сделать под широкий экран.
— Надо делать под маленькие экраны. Куча народа лезет в Интернет с мобильных устройств. Больших мониторов нет почти ни у кого.
— Да куча народу с такими мониторами! У всех моих знакомых мониторы большие.
— Да у тебя знакомые — дизайнеры да фотографы. А у народа таких мониторов нет!

Понятно, что нужны были более веские аргументы — пора обратиться к статистике.


Подсчёт



Существует некоторое количество сайтов, предоставляющих доступ к собранным данным о своих посетителях. Один из таких сайтов — бывший SpyLog, а ныне — Openstat, выдающий и отчёт о разрешающей способности экранов. Данные там, на первый взгляд, не очень полезны: знание того, что самое популярное разрешение — 1366×768 — встречается у 19 процентов посетителей, мне мало поможет. Но мы можем получить эти данные в виде отдельного файла, который можем обработать. Доступны 4 формата — PDF, XLS и два текстовых: CSV и Tab separated, названный здесь tsv, который мы и возьмём.

Что и как считаем
Total votes 23: ↑21 and ↓2 +19
Comments 23

pChart — строим графики и диаграммы на PHP. Практика

Reading time 2 min
Views 64K
Website development *PHP *Data visualization *
Всем привет!
По наводке из статьи «pChart — строим графики и диаграммы на PHP» реализовал у себя построение графиков. Вот так выглядит:

Примеры это, конечно, хорошо, но практическая реализация может помочь в понимании. Моё применение под катом.
Читать дальше →
Total votes 12: ↑8 and ↓4 +4
Comments 6

Быстрый вывод графиков в Матлабе

Reading time 2 min
Views 9.1K
Programming *System Analysis and Design *Data visualization *
Sandbox
Автор хочет поделится своим опытом организации быстрой перерисовки графиков (точнее сказать, изображений,) в Матлабе на примере организации радиолокационного индикатора кругового обзора
Читать дальше →
Total votes 35: ↑27 and ↓8 +19
Comments 7

Анимированные графики в R (и немного про бифуркацию, хаос и аттракторы)

Reading time 4 min
Views 19K
Programming *Data Mining *Algorithms *Mathematics *R *
Однажды для презентации мне понадобились анимированные графики. С графиками, собственно, проблем не возникло, а для их анимации пришлось воспользоваться еще одним пакетом animation, который можно установить из CRAN.
Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Comments 24
1