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

Пикабомбер

Аркады, Пиксельная, 2D

Играть

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

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

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

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

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

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

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

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

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

Программирование IT HTML IT юмор Frontend CSS Юмор Картинка с текстом Работа Разработка Все
204 поста сначала свежее
AlexeyPerfilev
AlexeyPerfilev
11 месяцев назад

Vue.js: Почему этот фреймворк рвёт всех⁠⁠

Привет, Пикабушники! Сегодня хочу рассказать вам, почему Vue.js — это просто бомба среди фронтенд-фреймворков. Если вы еще не пробовали, то вот вам причины, почему стоит:

  1. Проще некуда Vue настолько прост, что даже ваша бабушка сможет в нем разобраться (ну ладно, может не совсем). Но серьезно, его синтаксис настолько интуитивный, что вы начнете писать код почти сразу.

  2. Гибкий, как гимнастка на Олимпиаде Хотите маленький виджет? Пожалуйста! Нужно огромное приложение? Да без проблем! Vue подстроится под любые ваши хотелки.

  3. Быстрый, как Усэйн Болт Vue такой шустрый, что вашему приложению позавидует даже Flash. Виртуальный DOM и умная система отслеживания изменений делают его молниеносным.

  4. Документация - просто сказка Официальная документация Vue настолько хороша, что ее можно читать вместо сказки на ночь. Всё разложено по полочкам, с примерами и объяснениями.

  5. Комьюнити - огонь Вокруг Vue собралось столько крутых разработчиков, что любой вопрос решается быстрее, чем вы успеете сказать "Спасибо".

  6. Дружит со всеми Vue легко вписывается в существующие проекты. Хотите добавить его к своему древнему сайту на jQuery? Да пожалуйста!

В общем, друзья, если вы еще не попробовали Vue, то самое время начать. Это как попробовать борщ после овсянки - вы поймете, что жили не той жизнью!

P.S. Если кто-то скажет, что React или Angular лучше, можете смело кидать в них помидорами. Vue - он как Чак Норрис в мире фронтенда, только лучше! 😎

Кто уже юзает Vue? Делитесь впечатлениями в комментах!

Показать полностью
[моё] Frontend Vue Javascript Web Программирование Веб-разработка Web-программирование IT Программист Текст
20
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
1
Sintoniart
Sintoniart
11 месяцев назад

Алгоритмы создания растений в генеративном искусстве⁠⁠

Алгоритмы создания растений в генеративном искусстве Современное искусство, Искусство, Графика, Digital, Дизайн, Программирование, Программист, Javascript, Компьютерная графика, Растения, Природа, Цветы, Рисунок, Дизайнер, Видео, Без звука, Длиннопост

Elsif - «For Algernon». Книга Дэниела Киза «Цветы для Элджернона» вдохновила китайско-канадскую художницу на создание своего проекта, картины которого напоминают акриловую живопись.

Ykxotkx - «Flower Arrangement». Японский кодер впервые представил свой монохромный проект на выставке Art Basel Miami 2022.

Nat Sarkissian - «Bardez». Американский художник армянского происхождения вспоминает свои корни, ведь Bardez по-армянски означает «сад» или «рай».

Leonardo Solaas - «Botanical Ghosts». Аргентинский самоучка создал проект, который генерирует бесконечное сотворение листвы и растений (так что мы не можем увидеть конечный результат), алгоритм в разных картинах никогда не повторяет себя.

Показать полностью 1 4
Современное искусство Искусство Графика Digital Дизайн Программирование Программист Javascript Компьютерная графика Растения Природа Цветы Рисунок Дизайнер Видео Без звука Длиннопост
0
5
Sintoniart
Sintoniart
11 месяцев назад

Коллаж из кода⁠⁠

Коллаж из кода Дизайн, Компьютерная графика, Искусство, Digital, Графика, Javascript, Программирование, Программист, Дизайнер, Коллаж, Пейзаж, Природа, Тайвань, Азия, Длиннопост

«Collage» - генеративный проект трех художников из Тайваня: Цзиньяо Линя (Jinyao Lin), И-Вэнь Линя (Yi-Wen LIN) и Алуань Вана (Aluan Wang). Отталкиваясь от традиций оформления японской бумаги «вагами», они сгенерировали авторские паттерны, а затем соединили свои стили в «коллажах», созданных кодом.

В проекте 7 различных «сцен»: Горы, Волны, Озеро, Хризантемы, Лотосы, Шестиугольники и Четырехугольники. В каждом коллаже при его возникновении код выбирает паттерн одного из художников в качестве основной цветовой темы, в то время как узор двух других художников преобразуется в оттенки серого.

И в самом коде художники тоже использовали метод коллажа, соединив библиотеку JavaScript - p5.js - и фреймворк VanillaJS.

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

Коллаж из кода Дизайн, Компьютерная графика, Искусство, Digital, Графика, Javascript, Программирование, Программист, Дизайнер, Коллаж, Пейзаж, Природа, Тайвань, Азия, Длиннопост
Коллаж из кода Дизайн, Компьютерная графика, Искусство, Digital, Графика, Javascript, Программирование, Программист, Дизайнер, Коллаж, Пейзаж, Природа, Тайвань, Азия, Длиннопост
Коллаж из кода Дизайн, Компьютерная графика, Искусство, Digital, Графика, Javascript, Программирование, Программист, Дизайнер, Коллаж, Пейзаж, Природа, Тайвань, Азия, Длиннопост
Коллаж из кода Дизайн, Компьютерная графика, Искусство, Digital, Графика, Javascript, Программирование, Программист, Дизайнер, Коллаж, Пейзаж, Природа, Тайвань, Азия, Длиннопост
Показать полностью 5
Дизайн Компьютерная графика Искусство Digital Графика Javascript Программирование Программист Дизайнер Коллаж Пейзаж Природа Тайвань Азия Длиннопост
0
4
Sintoniart
Sintoniart
11 месяцев назад

"Annihilate This Week" в p5.js⁠⁠

"Annihilate This Week" в p5.js Digital, Искусство, Графика, Дизайн, Javascript, Компьютерная графика, Современное искусство, Программирование, Программист, Дизайнер, Длиннопост

Некоторые итерации проекта "Annihilate This Week" Алессандро Фьоре, генеративного художника, работающего под псевдонимом Whitekross. Код написан на языке JavaScript с использованием библиотеки p5.js.

"Annihilate This Week" в p5.js Digital, Искусство, Графика, Дизайн, Javascript, Компьютерная графика, Современное искусство, Программирование, Программист, Дизайнер, Длиннопост
"Annihilate This Week" в p5.js Digital, Искусство, Графика, Дизайн, Javascript, Компьютерная графика, Современное искусство, Программирование, Программист, Дизайнер, Длиннопост
"Annihilate This Week" в p5.js Digital, Искусство, Графика, Дизайн, Javascript, Компьютерная графика, Современное искусство, Программирование, Программист, Дизайнер, Длиннопост
"Annihilate This Week" в p5.js Digital, Искусство, Графика, Дизайн, Javascript, Компьютерная графика, Современное искусство, Программирование, Программист, Дизайнер, Длиннопост
Показать полностью 5
Digital Искусство Графика Дизайн Javascript Компьютерная графика Современное искусство Программирование Программист Дизайнер Длиннопост
0

Продвиньте ваш пост

Перейти
Партнёрский материал Реклама
specials
specials

Нужно больше внимания к постам? Есть способ!⁠⁠

Иногда даже самый интересный материал теряется в потоке новых записей. Если ваш пост остался незамеченным, измените ситуацию. Для этого на Пикабу есть продвижение.

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

Продвинуть пост

Продвижение Посты на Пикабу Текст
7
crazyzubr
11 месяцев назад
Лига программистов
Серия История с Java...script

Продолжение истории с java...script⁠⁠

Может кому-то покажется неочевидным, но я в течение всего периода работы в вышеупомянутой компании (да и сейчас, кстати, тоже) пытался понять: почему все-таки была сделана пауза после произнесенного "Javа"? И почему все же добавлено "...script" после паузы, если проекты были именно на Java? А проект был не один. Новый сайт провайдера тоже был начат на Java, а именно по технологии JSP (Java Server Pages); его мне тоже передали.

В один из дней "босс" (так называли того самого главного директора в компании) пришел ко мне и говорит: "Добавь новый сертификат на тестовый сайт". Я думаю это была одна из проверок того насколько я разобрался с этим проектом. Сертификат, то есть по сути картинка в pdf, в блок на сайте я добавил, это ведь было простое копирование элемента в шаблоне и дополнительно загрузка файла по scp на сервер. Основная сложность была только в том, что я еще не деплоил ни разу сайт, но в этом мне по скайпу помог прежний программист. Отсюда я делал вывод, что раз он проверяет мою способность менять что-либо на тестовом сайте, значит до сих пор думает что я умею в Java. Вот только позднее выяснилось (и "босс" об этом, конечно не сказал), что новый сайт теперь делает другой программист на аутсорсе. Должно быть делал его на удаленке, в офис он по крайней мере никогда не приходил. Забавно, что новая версия была сделана на PHP (а если быть точнее CRM битрикс).

Второй Java-проект (тот который я переписал на PHP) был призван выводить операторам номера должников. Основная его фича заключалась в том, чтобы показывать каждому оператору свой набор абонентов. Соответственно будет ошибкой показывать двум операторам одного клиента. Ну, и тех клиентов, с которыми состоялся разговор тоже не следует отображать. Оператор видел список, звонил по порядку и проставлял статусы. С этим и происходила беда, иногда операторам выпадали номера, по которым уже звонили недавно. Причем могли выпасть другому оператору в тот же день. Эта проблему, как я понял на тот момент, заключалась как раз в сервере tomcat6, а именно был какой-то баг с потоками.

Код проекта архивировался, этот архив скармливался томкету, он его компилировал и запускал. То что он делал внутри себя с запросами я выяснить был не в состоянии. Поэтому сначала была попытка обновить tomcat до седьмой версии.

После обновления наступило "затишье", операторы перестали жаловаться. Точнее раньше приходил их старший менеджер и сообщал о проблеме (но что именно не так и какие действия совершались она сама не могла поведать). Но как оказалось это было случайностью. Или может просто рестарт приложения "чинил" временно проблему, а рестарт после обновления тоже происходил, что логично. Только не мог же я рестартовать приложение как магическое решение. Да и не факт, что это железно могло помочь.

Как-то в очередной раз пришла старшая оператор и прямо-таки психнула. По сути она опять ничего мне толком не сказала, но когда я сказал что быстро починить не удастся, то пообещала, что так мне это с рук не сойдет. До нее был другой менеджер, который тоже приходил с проблемами, но так как от меня толку не было, то через неделю он уволился. По крайней мере вижу свою вину в этом, потому что кого-кого, а менеджеров "босс" прессовал за любую мелочь. То есть раз я не мог помочь ему, он не мог решить проблему, и под давлением "босса" пришлось уволиться.

После того как проект был переписан произошла какая-то дичь. Проблемы с потоками и выводом повторных абонентов по идее не должно быть. И все же меня вызвали "на ковер" к "боссу", и там уже была эта "мадам". Она указала перстом на меня и говорит "его спрашивайте". А "босс" такой - "так это ты во всем виноват?". Максимально непонятно что у них там происходило до того как я вошел, и какая проблема случилась, но естественно я подумал что где-то допустил ошибку.

Загвоздка в том, что впоследствии я ее не нашел. Для выяснения ходил в офис к девочкам-операторам, смотрел как у них всех отображается, как все работает, перепроверял код и не нашел ошибок. Неделю я все это выяснял, и за это время не изменил ни строчки кода в этом проекте. Как назло все работало и никаких багов не было. Параллельно я уже начал искать новую работу, и получается эта неделя была последней. Всего в этой компании мне довелось проработать четыре месяца.

После ухода из той компании провайдера я заходил периодически на страницу проекта, чтобы проверить не поменялось ли чего. Через три месяца обнаружил, что код обратно вернулся на Java-версию. Это было очевидно, потому что изначально сайт был по SPA-технологии, то есть после выполнения запроса обновление страницы было без перезагрузки этой самой страницы. Я же переписал на PHP по технологии SSR, только в некоторых местах был добавлен AJAX. Страница входа точно была с перезагрузкой, даже если просто выводилась ошибка входа. Кроме того, закрыли доступ или удалили аккаунт и я больше не мог входить внутрь ЛК оператора.

Как вишенка на торте выкладываю переписку (с вырезанными персональными данными) с java-программистом, когда передавался проект, чтобы можно было погрузиться в атмосферу тех событий.

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