Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Захватывающая аркада-лабиринт по мотивам культовой игры восьмидесятых. Управляйте желтым человечком, ешьте кексы и постарайтесь не попадаться на глаза призракам.

Пикман

Аркады, На ловкость, 2D

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

HTML + Программист

С этим тегом используют

CSS Программирование Javascript Верстка IT Сайт Web IT юмор Юмор Картинка с текстом Работа Разработка Все
99 постов сначала свежее
imctobitch
imctobitch
1 месяц назад
Серия I'm CTO, bitch

PHP — это про крепкую мужскую любовь⁠⁠

😡 Телеграм-канал

I`m CTO bitch PHP Озвучка Бэтмен Джокер IT юмор Программист HTML Видео Telegram (ссылка)
11
13
ievolper
ievolper
1 месяц назад
ИТ-проекты пикабушников

Как стать «программистом» за две недели (или приключения профессиональной скрипачки в дебрях кода)⁠⁠

Пару недель назад я с дуба рухнула решила что хочу «попробовать в программирование» как говорится. И неважно что с нуля, и что по профессии «не положено» - я уже 30 лет как человек культуры, работаю в оркестрах...

Подобрала приложение для обучения «чайников» и вперёд.. Python, HTML, SQL, C++. Пробежалась «по верхам», вспомнила детство (были в школе уроки программирования, Basic и Pascal если не ошибаюсь).

Встал вопрос куда же дальше стоит углубляться, какой язык выбрать. Кстати вопрос актуален для сих пор - буду очень благодарна за советы!

А пока решила что мне интересно будет попробовать создать веб-страницу посвящённую предстоящим скачкам на нашем ипподроме. С помощью полученных знаний и ИИ накидала основной код (если что, здесь и далее терминология от балды, заранее приношу извинения программистам..).

Добавила фото, оформила разделы («списки») под скачки и навигацию по странице.

Потом решила что хорошо бы и под будущие результаты сделать «заготовку».

А ещё раздел под видео скачек.

Кстати на определённом этапе я вдруг задумалась что вообще понятия не имею что надо сделать чтобы страница оказалась непосредственно в интернете.. (До этого все изменения просматривала в том же приложении, где набирала код). И пришлось мне познать мир «доменов, хостинга, SSL-сертификатов».. 🙂 Спасибо терпеливым сотрудникам поддержки, смогли донести до меня всю необходимую информацию простым человеческим языком. ;)

После того как страница появилась в интернете в общем доступе, настало время «тестирования» ее моими друзьями и знакомыми. Мне было важно понять как она выглядит на разных устройствах. И тут поступило забавное замечание от одной знакомой программистки что «открывается сайт хорошо на всех устройствах, но вот при выводе на печать (!) страницы разбиваются».. А ведь я даже не задумывалась о такой функции, ведь никакой необходимости в ней вроде и нет.. И тут прям спортивный интерес появился, пришлось вновь «посоветоваться» с ИИ и решить эту «задачку». ;)

В общем сайт конечно ещё в разработке, информация обновляется по мере поступления (так называемые «записки» на скачки), видео из того что под рукой оказалось (2-ое, под названием «Приз Большой летний», искренне рекомендую к просмотру со звуком ;).

Буду рада всем посетителям, их оценкам и замечаниям. 🤗

Попробую выложить название сайта здесь, надеюсь это не запрещено..

www.lug-race.ru

Как стать «программистом» за две недели (или приключения профессиональной скрипачки в дебрях кода) Веб-разработка, HTML, Программист, Скрипач, Домашнее обучение, Длиннопост
Показать полностью 1
[моё] Веб-разработка HTML Программист Скрипач Домашнее обучение Длиннопост
42
140
user5270234
user5270234
1 месяц назад

Я сделал веб-игру про рисование песком с 200 000 физических песчинок⁠⁠

Игра в браузере: https://alexander-dudarev.itch.io/sand-art

Sand Art – это симулятор творческой физической песочницы, в которой я постарался сделать реалистичное моделирование до 200 000 частиц песка.

Я использовал технологии WebGL и пытался создать интуитивно понятное управление, чтобы создать увлекательный творческий процесс.

1/4

Ключевые функции:

- Реалистичная физика песка с 200 000 динамическими частицами, создающими впечатление подлинного песка.

- Многослойная система частиц обеспечивает естественное взаимодействие между песчинками.

- Оптимизированный рендеринг WebGL для обеспечения бесперебойной работы на всех устройствах.

- Набор инструментов для творчества. Разнообразные инструменты взаимодействия, позволяющие манипулировать вашим песочным творением. Художественная настройка 7 уникальных форм кисти для разнообразного художественного выражения. Регулируемые размеры кистей для создания мелких деталей или широких мазков. Полная цветовая гамма для создания ярких разноцветных композиций.

Игра идеально подходит для снятия стресса, творческого самовыражения, арт-терапии.

Буду рад получить фидбэк. Что улучшить, чего добавить?

Показать полностью 4
[моё] Игры Компьютерные игры Видеоигра Веб-разработка Мобильные игры Приложение Рисование Процесс рисования 2D HTML Javascript Web Программирование Программист Программа Песок Творчество Креатив Видео Без звука Короткие видео
28
Puwi
Puwi
8 месяцев назад

А ты в теме? Сколько нас...⁠⁠

А ты в теме? Сколько нас...
HTML Верстка Код Программирование Верстальщик Frontend Программист Создание сайта
19
2
user9404634
user9404634
11 месяцев назад
IT-юмор

Ветхий мем, но почему-то мне смешно до сих пор...⁠⁠

Ветхий мем, но почему-то мне смешно до сих пор... IT, IT юмор, Программирование, Программист, HTML
Показать полностью 1
IT IT юмор Программирование Программист HTML
13
tablepedia
11 месяцев назад

Динамика населения 10 стран мира с 1980 года (графики) на языке JavaScript⁠⁠

Посмотрите, пожалуйста, как я визуализировал динамику населения 10 стран мира (с 1980 года) на странице

http://tablepedia.com/junior3.html

Вся эта страница занимает 8 килобайт, язык программирования - JavaScript, языки разметки - SVG и HTML.

Ниже - ВЕСЬ код страницы:

<html>

<head>

<title>Visualization of user data #tablepedia #csv2svg #covidplot #virusplot http://tablepedia.com/junior3.html</title>

</head>

<body onload="PLOTbuild();">

<h1>Top 10 countries by population since 1980 (single HTML page with JS in 8 KB)</h1>

<script>

var h1 = 20; var h2 = 580; var v1 = 360; var v2 = 10;

var OXaxis=h1; var OYaxis=v1;

var fsize = "12"; var plotColor="red"

var elements = ['', '']; var sTemp="";

var ymin=[0, 981, 697, 227, 138, 147, 121, 81, 78, 73, 70];

var ymax=[0, 1412, 1375, 331, 149, 273, 212, 164, 210, 205, 128];

var x1=1980; var x2=2020;

var y1=60; var y2=210;

function PLOTbuild()

{

var targ = document.getElementById('target').value;

var tableStringsT = targ.split("\n"); var SIMPLEpoly = ''; var nTemp=0;

var ycol = document.getElementById("SM01").options.selectedIndex;

var ft1=fitRange1(ymin[ycol], ymax[ycol], 10);

var ft2=NUMBERseries(ft1);

var FromToX = "1980;1990;2000;2010;2020";

var OXscale = TEXTscale(FromToX, h1, h2);

var OYscale = TEXTscale(ft2, v1, v2);

var stringsOX = OXscale.split("\n"); var stringsOY = OYscale.split("\n");

for (var i = 1; i < tableStringsT.length-1; i = i + 1)

{

elements = tableStringsT[i].split("\t");

sTemp = elements[0] + ';' + elements[ycol];

SIMPLEpoly = SIMPLEpoly + convert2ValuesTo2Coordinates(sTemp, x1, x2, y1, y2, h1, h2, v1, v2) + '\n';

}

SIMPLEpoly = SIMPLEpoly.replace(/;/g, ',');

var sSVG = "<polyline fill='none' stroke='" + plotColor + "' stroke-width='1' points='";

sSVG = sSVG + SIMPLEpoly + "' />";

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='";

sSVG = sSVG + h1 + "," + OYaxis + " " + h2 + "," + OYaxis + "' />";

for (var i = 0; i < stringsOX.length; i++)

{

elements = stringsOX[i].split("\t");

var OXshift1 = OYaxis + 10; var OYshift1 = h1 + 20;

var nOXsh2 = parseFloat(elements[1]) - 4; var nOYsh3 = OYaxis + 18;

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='";

sSVG = sSVG + elements[1] + "," + OYaxis + " " + elements[1] + "," + OXshift1 + "' />";

sSVG = sSVG + "\n" + "<text x='" + nOXsh2 + "' y='" + nOYsh3 +

"' fill='black' font-family='Arial' font-size='" + fsize + "'>" + elements[2] + "</text>";

}

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='" + OXaxis + ",";

sSVG = sSVG + v1 + " " + OXaxis + "," + v2 + "' />";

for (var i = 0; i < stringsOY.length; i++)

{

elements = stringsOY[i].split("\t");

sTemp=elements[2];

if (i == (stringsOY.length-1)) sTemp=document.getElementById("SM01").options[ycol].text;

OXshift1 = v1 + 10; OYshift1 = OXaxis + 10;

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='" + OXaxis + ",";

sSVG = sSVG + elements[1] + " " + OYshift1 + "," + elements[1] + "' />";

sSVG = sSVG + "\n" + "<text x='" + OYshift1 + "' y='" + elements[1] + "' fill='" + plotColor +

"' font-family='Arial' font-size='" + fsize + "'>" + sTemp + "</text>";

}

document.getElementById('boldStuff').innerHTML = "<svg version='1.1' width='" + '700' + "' height='" + '400' + "' xmlns='http://www.w3.org/2000/svg'

xmlns:xlink='http://www.w3.org/1999/xlink'>" + sSVG + "\n" + "</svg>";

}

function TEXTscale(x1xN, min4, max4)

{

var pieces = x1xN.split(";");

var qx = pieces.length-1;

var sm3 = ""; var xAmong=0;

for (var i = 0; i < qx; i = i + 1)

{

xAmong = parseFloat(pieces[i]);

xx1=parseFloat(pieces[0]);

xx2=parseFloat(pieces[qx]);

part = (xAmong - xx1) / (xx2 - xx1); smart2=(max4 - min4) * part + min4;

smart2 = NUMBERfloat(smart2, 0.001);

sm3 = sm3 + xAmong + "\t" + smart2 + "\t" + xAmong + "\n";

}

coo = NUMBERfloat(max4, 0.0001);

sm3 = sm3 + xx2+"\t"+coo+"\t"+xx2;

return sm3;

}

function convert2ValuesTo2Coordinates(xy, x1, x2, y1, y2, xa41, xa42, ya41, ya42)

{

var srav = xy.split(";");

var gett = convert1ValueTo1Coordinate(x1, x2, xa41, xa42, srav[0]) + ";" + convert1ValueTo1Coordinate(y1, y2, ya41, ya42, srav[1]); return gett;

}

function convert1ValueTo1Coordinate(zx1, zx2, a1, a2, xVECTOR1)

{

return (a2-a1) * (xVECTOR1 - zx1) / (zx2 - zx1) + a1;

}

function NUMBERfloat(xbig, xsmall)

{

vmax = Math.floor(xbig / xsmall + 0.99) * xsmall; vmax = vmax.toFixed(10);

vmax = vmax * 1; return vmax;

}

function fitRange1(a, b, nLines)

{

var xr = Math.abs(b - a) / nLines;

var mimi = Math.abs(a / xr) / nLines * 5;

if (mimi < 1)

{

a = 0;

xr = Math.abs(b - a) / nLines;

}

var loga = Math.log10(xr);

var inta = Math.floor(loga);

var deca = Math.pow(10, inta);

var mi1 = Math.floor(a / deca);

var ma1 = Math.ceil(b / deca);

var iFlag = 0;

if ((ma1 - mi1) > (nLines * 2))

{

deca = deca * 5;

mi1 = Math.floor(a / deca);

ma1 = Math.ceil(b / deca);

iFlag = iFlag + 1;

}

if ((ma1 - mi1) > (nLines))

{

deca = deca * 2;

mi1 = Math.floor(a / deca);

ma1 = Math.ceil(b / deca);

iFlag = iFlag - 1;

}

var mi2 = mi1 * deca;

var ma2 = ma1 * deca;

var s4 = mi2.toString() + ";" + ma2.toString() + ";" + deca.toString();

return s4;

}

function NUMBERseries(fts)

{

var FromToStep = fts.split(";");

var sFrom = FromToStep[0]; y1 = parseFloat(sFrom);

var sTo = FromToStep[1]; y2 = parseFloat(sTo);

var sStep = FromToStep[2]; var vStep = parseFloat(sStep);

var rr = "";

for (var x = y1; x < y2; x = x + vStep)

{

rr = rr + NUMBERfloat(x, vStep)+ ";";

}

rr=rr+y2;

return rr;

}

</script>

<SELECT name="SM01" id="SM01" onchange="PLOTbuild()">

<OPTION SELECTED VALUE="0">SELECT COUNTRY</OPTION>

<OPTION VALUE="1">China</OPTION>

<OPTION VALUE="2">India</OPTION>

<OPTION VALUE="3">USA</OPTION>

<OPTION VALUE="4">Russia</OPTION>

<OPTION VALUE="5">Indonesia</OPTION>

<OPTION VALUE="6">Brazil</OPTION>

<OPTION VALUE="7">Bangladesh</OPTION>

<OPTION VALUE="8">Pakistan</OPTION>

<OPTION VALUE="9">Nigeria</OPTION>

<OPTION VALUE="10">Mexico</OPTION>

</SELECT>

<br>

<textarea class="input_type" id="target" name="target" cols="28" rows="28" wrap="off">

Year China India USA Russia Indonesia Brazil Bangladesh Pakistan Nigeria Mexico

2020 1412 1375 331 147 273 212 164 210 205 128

2018 1397 1351 327 147 266 210 161 201 196 124

2016 1379 1324 323 147 261 208 159 193 186 122

2014 1364 1294 319 146 254 205 157 186 178 120

2012 1351 1263 314 143 248 201 155 179 168 118

2010 1338 1231 309 143 242 197 152 171 159 116

2008 1325 1197 304 143 236 193 149 163 151 114

2006 1311 1162 299 143 230 189 145 157 143 112

2004 1296 1126 293 144 224 185 140 150 136 109

2002 1280 1089 288 145 218 181 135 143 129 106

2000 1263 1054 282 147 212 175 129 137 122 103

1998 1242 1018 276 148 206 171 125 132 115 100

1996 1218 983 269 148 200 165 120 126 109 97

1994 1192 946 263 148 194 159 117 120 101 93

1992 1165 910 257 149 188 155 112 114 93 89

1990 1135 874 250 148 182 150 106 108 88 86

1988 1102 838 244 147 176 144 101 101 86 82

1986 1067 802 240 144 170 139 95 95 84 79

1984 1037 767 236 142 163 133 90 89 81 76

1982 1009 733 232 140 155 127 86 83 77 73

1980 981 697 227 138 147 121 81 78 73 70

</textarea>

<b id="boldStuff" style="color:transparent;">SVG</b>

</body>

</html>

Показать полностью
Javascript HTML Svg Программирование Программист Население Страны Скрипт Тестирование Текст Длиннопост
4
tablepedia
11 месяцев назад

Визуализация графиков функций на языке JavaScript⁠⁠

Посмотрите, пожалуйста, как я визуализировал графики функций на странице

http://tablepedia.com/junior2.html

Вся эта страница занимает 8 килобайт, а язык программирования - JavaScript, также используются языки разметки SVG и HTML.

Ниже - ВЕСЬ код страницы:

<html>

<body onload="CARE(); PLOTbuild();">

<br>

<h2>Graphing calc</h2>

<br>

Xmin= <input id="xMin" value="0" type="text" size="10">

Xmax= <input id="xMax" value="10" type="text" size="10">

Xstep= <input id="xStep" value="1" type="text" size="10">

<br>

f(x)= <input id="tCare" value="x^2; sin(x); exp(x); log(x)" type="text" size="40">

<script>

var h1 = 20; var h2 = 580; var v1 = 360; var v2 = 10; var x1=0; var x2=0; var x3=0; var x4=0;

var y1=0; var y2=0; var y3=0; var OXaxis=0; var OYaxis=0;

var xcol=0; var ycol=1; var fsize = "12"; var plotColor="red"

var elements = ['', '']; var sTemp=""; var OXscale=""; var OYscale="";

function PLOTbuild()

{

OXaxis=0; OYaxis=0;

var FromToX = NUMBERseries(x1, x2, x3); OXscale = TEXTscale(FromToX, h1, h2);

var FromToY = NUMBERseries(y1, y2, y3); OYscale = TEXTscale(FromToY, v1, v2);

var targ = document.getElementById('target').value;

var stringsOX = OXscale.split("\n"); var stringsOY = OYscale.split("\n");

var tableStringsT = targ.split("\n"); var SIMPLEpoly = '';

for (var i = 1; i < tableStringsT.length-1; i = i + 1)

{

elements = tableStringsT[i].split("\t");

sTemp = elements[xcol] + ';' + elements[ycol];

SIMPLEpoly = SIMPLEpoly + convert2ValuesTo2Coordinates(sTemp, x1, x2, y1, y2, h1, h2, v1, v2) + '\n';

}

SIMPLEpoly = SIMPLEpoly.replace(/;/g, ',');

var sSVG = "<polyline fill='none' stroke='" + plotColor + "' stroke-width='1' points='";

sSVG = sSVG + SIMPLEpoly + "' />";

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='";

sSVG = sSVG + h1 + "," + OYaxis + " " + h2 + "," + OYaxis + "' />";

for (var i = 0; i < stringsOX.length; i++)

{

elements = stringsOX[i].split("\t");

var OXshift1 = OYaxis + 10; var OYshift1 = h1 + 20;

var nOXsh2 = parseFloat(elements[1]) - 4; var nOYsh3 = OYaxis + 18;

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='";

sSVG = sSVG + elements[1] + "," + OYaxis + " " + elements[1] + "," + OXshift1 + "' />";

sSVG = sSVG + "\n" + "<text x='" + nOXsh2 + "' y='" + nOYsh3 +

"' fill='black' font-family='Arial' font-size='" + fsize + "'>" + elements[2] + "</text>";

}

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='" + OXaxis + ",";

sSVG = sSVG + v1 + " " + OXaxis + "," + v2 + "' />";

for (var i = 0; i < stringsOY.length; i++)

{

elements = stringsOY[i].split("\t");

sTemp=elements[2];

if (i == (stringsOY.length-1)) sTemp=document.getElementById("SM01").options[ycol].text;

OXshift1 = v1 + 10; OYshift1 = OXaxis + 10;

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='" + OXaxis + ",";

sSVG = sSVG + elements[1] + " " + OYshift1 + "," + elements[1] + "' />";

sSVG = sSVG + "\n" + "<text x='" + OYshift1 + "' y='" + elements[1] + "' fill='" + plotColor +

"' font-family='Arial' font-size='" + fsize + "'>" + sTemp + "</text>";

}

document.getElementById('boldStuff').innerHTML = "<svg version='1.1' width='" + '700' + "' height='" + '400' + "' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>" + sSVG + "\n" + "</svg>";

}

function TEXTscale(x1xN, min4, max4)

{

var pieces = x1xN.split(";");

var qx = pieces.length-1;

var sm3 = ""; var smpp=0;

for (var i = 0; i < qx; i = i + 1)

{

smpp = parseFloat(pieces[i]); sm3 = sm3 + smpp; sm3 = sm3 + "\t";

xx1=parseFloat(pieces[0]);

xx2=parseFloat(pieces[qx]);

xAmong=smpp;

part = (xAmong - xx1) / (xx2 - xx1); smart2=(max4 - min4) * part + min4;

smart2 = NUMBERfloat(smart2, 0.001);

sm3 = sm3 + smart2;

sm3 = sm3 + "\t" + smpp + "\n";

if (smpp == 0)

{

if (OXaxis == 0) {OXaxis=smart2;} else {OYaxis=smart2;}

}

}

coo = NUMBERfloat(max4, 0.0001);

sm3 = sm3 + x2+"\t"+coo+"\t"+x2;

return sm3;

}

function convert2ValuesTo2Coordinates(xy, x1, x2, y1, y2, xa41, xa42, ya41, ya42)

{

var srav = xy.split(";");

var gett = convert1ValueTo1Coordinate(x1, x2, xa41, xa42, srav[0]) + ";" + convert1ValueTo1Coordinate(y1, y2, ya41, ya42, srav[1]); return gett;

}

function convert1ValueTo1Coordinate(zx1, zx2, a1, a2, xVECTOR1)

{

return (a2-a1) * (xVECTOR1 - zx1) / (zx2 - zx1) + a1;

}

function NUMBERfloat(xbig, xsmall)

{

vmax = Math.floor(xbig / xsmall + 0.99) * xsmall; vmax = vmax.toFixed(10);

vmax = vmax * 1; return vmax;

}

function NUMBERseries(f, t, vStep)

{

var s = "";

for (var x = f; x < t; x = x + vStep)

{

s = s + NUMBERfloat(x, vStep) + ";"

}

s=s+t; return s;

}

function CARE()

{

ycol = document.getElementById("SM01").options.selectedIndex;

var s = document.getElementById("target").value;

var arrayOfTableStrings = s.split("\n");

var midC = 0;

var minC = 0;

var maxC = 0;

for (var i = 1; i < arrayOfTableStrings.length - 1; i++)

{

STRINGelements = arrayOfTableStrings[i].split("\t");

midC = parseFloat(STRINGelements[ycol]);

if (maxC < midC)

maxC = midC;

if (minC > midC)

minC = midC;

}

a = NUMBERfloat(minC, 0.001);

b = NUMBERfloat(maxC, 0.001);

var xr = Math.abs(b - a) / 10;

var mimi = Math.abs(a / xr) / 10 * 5;

if (mimi < 1)

{

a = 0;

xr = Math.abs(b - a) / 10;

}

var loga = Math.log10(xr);

var inta = Math.floor(loga);

var deca = Math.pow(10, inta);

var mi1 = Math.floor(a / deca);

var ma1 = Math.ceil(b / deca);

var xMIN=document.getElementById('xMin').value;

x1=parseFloat(xMIN);

var xMAX=document.getElementById('xMax').value;

x2=parseFloat(xMAX);

var xStep=document.getElementById('xStep').value;

x3=parseFloat(xStep); if (x3 == 0) x3=x2-x1;

x4=x3/10;

y1 = NUMBERfloat(mi1 * deca, 0.001);

y2 = NUMBERfloat(ma1 * deca, 0.001);

y3=(y2-y1)/10;

var xtemp=0;

var textToSave = document.getElementById("tCare").value;

textToSave=textToSave.replace('log', 'Math.log');

textToSave=textToSave.replace('exp', 'Math.exp');

textToSave=textToSave.replace('sin', 'Math.sin');

textToSave=textToSave.replace('cos', 'Math.cos');

var tts= textToSave.split(";");

var s='';

var i=0;

var j=0;

for(i=x1; i<x2;i=i+x4){

s=s+NUMBERfloat(i, 0.001);

for(j=0; j<tts.length;j++){

xtemp=eval('x='+i+'; '+caretReplace(tts[j]))

s=s+'\t'+NUMBERfloat(xtemp, 0.001);

}

s=s+'\n';

if (i>=parseFloat(xMax))break;

}

document.getElementById("target").value = s;

}

var caretReplace = function(_s) {

if (_s.indexOf("^") > -1) {

var tab = [];

var powfunc="Math.pow";

var joker = "___joker___";

while (_s.indexOf("(") > -1) {

_s = _s.replace(/(\([^\(\)]*\))/g, function(m, t) {

tab.push(t);

return (joker + (tab.length - 1));

});

}

tab.push(_s);

_s = joker + (tab.length - 1);

while (_s.indexOf(joker) > -1) {

_s = _s.replace(new RegExp(joker + "(\\d+)", "g"), function(m, d) {

return tab[d].replace(/(\w*)\^(\w*)/g, powfunc+"($1,$2)");

});

}

}

return _s;

};

</script>

<SELECT name="SM01" id="SM01" onchange="CARE(); PLOTbuild()">

<OPTION SELECTED VALUE="0">SELECT YOUR FUNCTION</OPTION>

<OPTION VALUE="1">x^2</OPTION>

<OPTION VALUE="2">sin(x)</OPTION>

<OPTION VALUE="3">exp(x)</OPTION>

<OPTION VALUE="4">log(x)</OPTION>

</SELECT>

<br>

<textarea class="input_type" id="target" name="target" cols="28" rows="28" wrap="off"></textarea>

<b id="boldStuff" style="color:transparent;">SVG</b>

</body>

</html>

Показать полностью
[моё] Javascript HTML Svg Программирование Языки программирования IT Программист График Визуализация Визуализация данных Текст Длиннопост
5
tablepedia
11 месяцев назад

Визуализация таблицы на языке JavaScript⁠⁠

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

http://tablepedia.com/junior.html

Причём, вся эта страница занимает 8 килобайт, а языки программирования - JavaScript и SVG, а также HTML.

Ниже - ВЕСЬ код страницы:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Visualization of user data #tablepedia #csv2svg #covidplot #virusplot tablepedia.com</title>

</head>

<body onload="PLOTbuild()">

<h1>Visualization of user data (single HTML page with JS in 8 KB)</h1>

Xmin= <input id="xMin" value="0" type="text" size="10">

Xmax= <input id="xMax" value="160" type="text" size="10">

Xstep= <input id="xStep" value="10" type="text" size="10">

<input type="button" value=" PLOT USER DATA " onclick="PLOTbuild()">

<br>

Ymin= <input id="yMin" value="0" type="text" size="10">

Ymax= <input id="yMax" value="1600" type="text" size="10">

Ystep= <input id="yStep" value="200" type="text" size="10">

<script>

var horizontalRange = '20;580'; var verticalRange = '360;10';

var xcol=0; var ycol=1; var fsize = "12"; var plotColor="red"

var STRINGelements = ['', '']; var sTemp=0; var OXscale=""; var OYscale="";

function PLOTbuild()

{

var s0 = "<svg version='1.1' width='" + '700' + "' height='" + '400' + "' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>";

document.getElementById('boldStuff').innerHTML = s0 + SVGgenerate() + "\n" + "</svg>";

}

function SVGgenerate()

{

var xMIN=document.getElementById('xMin').value;

var x1=parseFloat(xMIN);

var xMAX=document.getElementById('xMax').value;

var x2=parseFloat(xMAX);

var xMM=xMIN+";"+xMAX;

var xStep=document.getElementById('xStep').value;

var x3=parseFloat(xStep); if (x3 == 0) x3=x2-x1;

var yMIN=document.getElementById('yMin').value;

var y1=parseFloat(yMIN);

var yMAX=document.getElementById('yMax').value;

var y2=parseFloat(yMAX);

var yMM=yMIN+";"+yMAX;

var yStep=document.getElementById('yStep').value;

var y3=parseFloat(yStep); if (y3 == 0) y3=y2-y1;

var FromToX = NUMBERseries(x1, x2, x3); OXscale = TEXTscale(FromToX, horizontalRange);

var FromToY = NUMBERseries(y1, y2, y3); OYscale = TEXTscale(FromToY, verticalRange);

var rangeXA4 = horizontalRange.split(";"); var axisOnOX = rangeXA4[0];

var rangeYA4 = verticalRange.split(";"); var axisOnOY = rangeYA4[0];

var targ = document.getElementById('target').value;

var tableStringsOX = OXscale.split("\n"); var tableStringsOY = OYscale.split("\n");

var tableStringsT = targ.split("\n"); var SIMPLEpoly = '';

for (var i = 1; i < tableStringsT.length-1; i = i + 1)

{

STRINGelements = tableStringsT[i].split("\t");

sTemp = STRINGelements[xcol] + ';' + STRINGelements[ycol];

SIMPLEpoly = SIMPLEpoly + convert2ValuesTo2Coordinates(sTemp, xMM, yMM, horizontalRange, verticalRange) + '\n';

}

SIMPLEpoly = SIMPLEpoly.replace(/;/g, ',');

var sSVG = "<polyline fill='none' stroke='" + plotColor + "' stroke-width='1' points='";

sSVG = sSVG + SIMPLEpoly + "' />";

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='";

sSVG = sSVG + rangeXA4[0] + "," + axisOnOY + " " + rangeXA4[1] + "," + axisOnOY + "' />";

for (var i = 0; i < tableStringsOX.length; i++)

{

STRINGelements = tableStringsOX[i].split("\t");

var OXshift1 = parseFloat(axisOnOY) + 10; var OXsh1 = OXshift1.toString();

var OYshift1 = parseFloat(axisOnOX) + 20; var nOYsh2 = parseFloat(axisOnOX) - 5; var OYsh1 = OYshift1.toString();

var nOXsh2 = parseFloat(STRINGelements[1]) - 4; var OXsh2 = nOXsh2.toString();

var nOYsh3 = parseFloat(OXsh1) + 8; var OYsh3 = nOYsh3.toString();

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='";

sSVG = sSVG + STRINGelements[1] + "," + axisOnOY + " " + STRINGelements[1] + "," + OXsh1 + "' />";

sSVG = sSVG + "\n" + "<text x='" + OXsh2 + "' y='" + OYsh3 +

"' fill='black' font-family='Arial' font-size='" + fsize + "'>" + STRINGelements[2] + "</text>";

}

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='" + axisOnOX + ",";

sSVG = sSVG + rangeYA4[0] + " " + axisOnOX + "," + rangeYA4[1] + "' />";

for (var i = 0; i < tableStringsOY.length; i++)

{

STRINGelements = tableStringsOY[i].split("\t");

OXshift1 = parseFloat(axisOnOY) + 10; OXsh1 = OXshift1.toString(); OYshift1 = parseFloat(axisOnOX) + 10;

OYsh1 = OYshift1.toString();

sSVG = sSVG + "\n" + "<polyline fill='none' stroke='#000000' stroke-width='0.5' points='" + axisOnOX + ",";

sSVG = sSVG + STRINGelements[1] + " " + OYsh1 + "," + STRINGelements[1] + "' />";

sSVG = sSVG + "\n" + "<text x='" + OYsh1 + "' y='" + STRINGelements[1] + "' fill='" + plotColor +

"' font-family='Arial' font-size='" + fsize + "'>" + STRINGelements[2] + "</text>";

}

return sSVG;

}

function TEXTscale(x1xN, min4max4)

{

var pieces = x1xN.split(";");

var pieces2 = min4max4.split(";");

var qx = pieces.length-1;

var sm3 = ""; var smpp=0;

for (var i = 0; i < qx; i = i + 1)

{

smpp = parseFloat(pieces[i]); sm3 = sm3 + smpp; sm3 = sm3 + "\t";

smart2 = findProportion(parseFloat(pieces[0]), parseFloat(pieces[qx]), smpp, parseFloat(pieces2[0]), parseFloat(pieces2[1]));

smart2 = NUMBERround(smart2, 3);

sm3 = sm3 + smart2;

sm3 = sm3 + "\t" + smpp + "\n";

}

coo = parseFloat(pieces2[1]);

coo = NUMBERround(coo, 4);

coo2 = parseFloat(pieces[qx]);

sm3 = sm3 + coo2+"\t"+coo+"\t"+coo2;

return sm3;

}

function convert2ValuesTo2Coordinates(xy, x, y, xa4, ya4)

{

var srav = xy.split(";");

var d0 = convert1ValueTo1Coordinate(x, xa4, srav[0]); var h0 = convert1ValueTo1Coordinate(y, ya4, srav[1]);

var gett = d0 + ";" + h0; return gett;

}

function convert1ValueTo1Coordinate(VECTOR1, VECTOR2, xVECTOR1)

{

var pieces = VECTOR1.split(";"); var pieces2 = VECTOR2.split(";");

var smart2 = findProportion(parseFloat(pieces[0]), parseFloat(pieces[1]), xVECTOR1, parseFloat(pieces2[0]), parseFloat(pieces2[1]));

return smart2;

}

function findProportion(x1, x2, xAmong, min4, max4)

{

var part = (xAmong - x1) / (x2 - x1); return (max4 - min4) * part + min4;

}

function NUMBERround(x, n)

{

if (isNaN(x) || isNaN(n)) return 0; var m = Math.pow(10, n); return Math.round(x * m) / m;

}

function NUMBERfloat(xbig, xsmall)

{

vmax = Math.floor(xbig / xsmall + 0.99) * xsmall; vmax = vmax.toFixed(10);

vmax = vmax * 1; smax = vmax.toString(); return smax;

}

function NUMBERseries(f, t, vStep)

{

var s = "";

for (var x = f; x < t; x = x + vStep)

{

s = s + NUMBERfloat(x, vStep) + ";"

}

s=s+t; return s;

}

</script>

<br>

<br>

USER DATA:

<br>

<textarea class="input_type" id="target" name="target" cols="28" rows="28" wrap="off">

X Y

159 1956

158 1934

157 1905

156 1883

155 1861

154 1839

153 1818

152 1797

151 1774

150 1749

149 1726

148 1707

147 1688

146 1671

145 1657

144 1634

143 1608

142 1581

141 1558

140 1537

139 1516

138 1497

137 1473

136 1441

135 1414

134 1393

133 1373

132 1356

131 1333

130 1307

129 1279

128 1250

127 1225

126 1200

125 1158

124 1133

123 1104

122 1070

121 1040

120 1013

119 988

118 966

117 939

116 891

115 869

114 843

113 825

112 788

111 760

110 735

109 702

108 671

107 640

106 610

105 583

104 558

103 530

102 502

101 466

100 432

99 399

98 368

97 338

96 312

95 278

94 246

93 217

92 190

91 165

90 143

89 125

88 105

87 86

86 69

85 55

84 46

83 35

82 27

81 20

80 14

79 9

78 6

77 5

0 0

</textarea>

<b id="boldStuff" style="color:transparent;">SVG</b>

</body>

</html>

Показать полностью
[моё] Javascript HTML Svg Визуализация Программирование Скрипт График Таблица Программист Текст Длиннопост
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии