Визуализация данных о просмотре статей на тему «Работая в подборе кадров, все хуже понимаю молодёжь» (16.07.2024-21.07.2024)
Спойлер: визуализация находится по адресу http://tablepedia.com/dataviz-2024_07_21.htm
16 июля 2024 года пользователем Aplos была опубликована статья «Работая в подборе кадров, все хуже понимаю молодёжь» по адресу Работая в подборе кадров, все хуже понимаю молодёжь
Она собрала за 5 дней свыше 100 тысяч просмотров, а ответные 9 статей собрали от 160 тыс. до 851 тыс. просмотров.
Примечательно, что во всех этих статьях присутствует хэштег https://pikabu.ru/tag/Отдел кадров
Теперь показываю визуализацию данных о о просмотре статей на тему «Работая в подборе кадров, все хуже понимаю молодёжь» (16.07.2024-21.07.2024) по адресу http://tablepedia.com/dataviz-2024_07_21.htm
Если перейдёте на данную страницу, то там есть ссылки на вышеупомянутые статьи.
Для запуска этой страницы (если вы её скачали) на компьютере необходимы библиотеки (то есть файлы) jquery-3.7.1.js и raphael.min.js.
Можно скачать архив с этой страницей и нужными библиотеками по адресу:
Визуализация данных по адресу http://tablepedia.com/dataviz-2024_07_21.htm
Визуализация данных о просмотре статей о доносах, жалобах, стукачах и ябедах (12.07.2024-19.07.2024)
Спойлер: визуализация находится по адресу http://tablepedia.com/dataviz-2024_07_19.htm
12 июня 2024 года пользователем Aplos была опубликована статья "Про стукачей" по адресу https://pikabu.ru/story/pro_stukachey_11588637
Она собрала за неделю свыше 800 тысяч просмотров.
В ответ на эту статью были опубликованы как минимум 6 статей, каждая из которых собрала больше 100 тысяч просмотров (тут имеются в виду в том числе ответы на ответные статьи).
Меня заинтересовал вопрос о хэштегах, которыми отмечены данные статьи.
Вот они:
Парадоксом является то, что ни одна из топовых статей, в заголовке которой написано "Про стукачей" не имеет хэштега "Стукач". Статьи с хэштегом "Стукач" есть, но ни одна из них не набрала и 50 тысяч просмотров за последние 3 месяца. Так что желательно в статье (которую вы пишете) проставлять хэштеги, соответствующие как словам из заголовка, так и смыслу статьи.
Теперь показываю визуализацию данных о просмотре статей о доносах, жалобах, стукачах и ябедах (12.07.2024-19.07.2024) по адресу http://tablepedia.com/dataviz-2024_07_19.htm
Если перейдёте на данную страницу, то там есть ссылки на вышеупомянутые статьи.
Для запуска этой страницы (если вы её скачали) на компьютере необходимы библиотеки (то есть файлы) jquery-3.7.1.js и raphael.min.js.
Можно скачать архив с этой страницей и нужными библиотеками по адресу:
Визуализация данных по адресу http://tablepedia.com/dataviz-2024_07_19.htm
Как выбрать квартиру и ни в чем не прогадать. Наглядное пособие
Не зря говорят, что лучше один раз увидеть, чем сто раз услышать. Так что приглашаем прогуляться по проекту Level Селигерская и собственными глазами посмотреть на благоустройство дворов и редкие форматы квартир.
В конце экскурсии вас ждет подарок от застройщика, не пропустите!
Level Селигерская расположен в южной части района Западное Дегунино, в пешей доступности от станций метро и в окружении пяти парковых зон.
Развитая инфраструктура подойдет и молодежи, и семьям с детьми, и пожилым людям. А редкие форматы квартир — на три стороны света, с угловым остеклением и большим окном в ванной — удивят даже самых требовательных жильцов.
Специально для пикабушников застройщик Level Group дарит промокод на скидку 1%! Все подробности смотрите здесь.
Выбирайте квартиру мечты в Level Селигерская и наслаждайтесь комфортом на новом уровне.
Реклама ООО СЗ «Селигерский»
Убийство айтишника
В далекие времена, когда интернет был по карточкам, попалась мне в гостях у приятеля книжка о HTML. Так меня это дело увлекло, что я все свободное время посвящал написанию СВОЕГО (как гордо звучит, для 13летнего балбеса) сайта анекдотов. Про всякие PROMTы тогда даже не слышали, поэтому все ручками, даже цвета шрифтов. Просил хорошо рисующего одноклассника наваять мне картинок для разделов, искал где бы все это отсканировать (А для богом спасаемого Ульяновска 2000го года это было прям задачей). И вот, когда осталось совсем чутка, до того чтоб сказать "Я сделаль!", прихожу я из школы и узнаю, что любимый татенька форматнул к хуям комп, со всеми моими стараниями. Рожающая 10 часов женщина ощутила лишь 1% моей боли! Так во мне убился весь интерес и я вернцлся к старым добрым игрушкам.
Как знать, может быть сейчас бы я не за станком работал, а за клавой сутулился, зарабатывая деньги)))
Динамика населения 10 стран мира с 1980 года (графики) на языке JavaScript
Посмотрите, пожалуйста, как я визуализировал динамику населения 10 стран мира (с 1980 года) на странице
Вся эта страница занимает 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
Посмотрите, пожалуйста, как я визуализировал графики функций на странице
Вся эта страница занимает 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
Посмотрите, пожалуйста, как я визуализировал таблицу в виде графика на странице
Причём, вся эта страница занимает 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>
Думаете, что бы такое посмотреть вечером? Есть ответ
Типичная ситуация: надо выбрать фильм на вечер, вы крутите один трейлер за другим, потом все это надоедает, вы бросаете это дело и идете листать ленту. То есть смотрите короткие видео, но в них чего-то не хватает.
Сокращайте ненужные усилия и получайте больше радости: листайте ленту с короткими видео, в которых всего достаточно. Такие водятся на NUUM — свежей платформе для видео, стримов и трансляций. Смотрим, снимаем и зарабатываем!
Реклама ООО «Джумс Проекты», ИНН: 7709484636