Это копия, сохраненная 20 сентября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Еще один: >>1431833 (OP)
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Для программирования на ХТМЛ https://codepen.io/pen/
Для Ноды с консолькой https://repl.it/languages/nodejs
Для фреймворков https://codesandbox.io/
Залить, задеплоить страничку, сервер, контейнер https://zeit.co/now
Аноны, хочу получить советов мудрых, высераю пару предложений и код на скриншоте, а получаю смехуёчки. Как быть?
Если рассчитываешь получить дельный ответ, формулируй правильно вопрос:
У меня есть проблема\задача (А) %текст-ошибки или задача%. Я пытался решить ее так %кусок-кода-опционально% (Б), у меня не вышло %текст-ошибки%. Я погуглил, почитал документацию и попробовал сделать так %кусок-кода-%(В), но получаю ошибку (Г).
Сделай песочницу по ссылкам выше для ясности и удобства. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем
ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
Ладно, короч. Есть функция test(); Эту функцию надо вызвать 3000 раз. Один вызов функции отъедает 30 минут реального времени (плюс минус). 3000 вызовов выкушают аккурат два месяца реального времени (с невозможностью побегать в cs 1.6, томущо функция знатно так проц использует).
Массив а[0..512][0..512] содержит единицы и нули.
Массив p[0..200][0..512] содержит единицы и нули.
Оба массива integer вместо boolean, томущо единицы-нули проще в строку объединять.
В функции запускается цикл n (200), внутри него еще один цикл i (100), внутри цикл x (512) и там внутри цикл y (512). Внутри цикла y считаем q:
Делаем конкатенацию 9 ячеек массива a в строку.
С помощью ParseInt, переводим двоичную строку в десятичное число.
Заполняем ячейку массива temp, с помощью массива p, используя полученное десятичное число в качестве индекса массива p. (щито это за хуита? Это клеточный автомат.)
Вся эта хуепиздотина использует integer для хранения, фактически, boolean значения. Посему несколько вопросов:
Можно ли это переписать под boolean, так чтобы можно было так же легко получить десятичное значение (посчитать q, вышеописанным способом).
Улучшит ли это производительность (если переписать под true/false)? На отъедаемую память глубоко поебать - ее хватает с избытком. А вот времени отъедает безобразно много.
А чем JS хуже языка_нейм? Преимущества вот я могу сходу найти:
1. Не надо дрочить IDE и каждый раз компилировать екзешник.
2. Нет ебистики с интерфейсом. Весь интерфейс делается на html+css, которые захочешь - не забудешь. Вывод в удобный canvas.
3. Результатами можно делиться складывая к себе на сайт и кидая ссылки читателям статьи. Ничего не качаешь - запустил в браузере и посмотрел как работает.
Я не против js (иначе я бы не был в этом треде). Но писать ебалу которая выполняется 30*2000 минут на js? Не уж то так хочется с оптимизацией ебаться?
крайние массивы
new Int8Array ( 512 )
так объявляй
быстрый рандом если вдруг тебя на большее потянет
let y = 512 ; a [ x ] = new Int8Array ( y );
while ( y ){ a [ x ][ y ] = 1.5 - Math . random (); y -- ;}
>Делаем конкатенацию 9 ячеек массива a в строку.
>С помощью ParseInt, переводим двоичную строку
это жопа, мб позже отпишу что можно вместо этого
>>48724
>А чем JS хуже языка_нейм?
Подозреваю есть язык где твоя задача решаеться 1-им встроенным методом =)
>Один вызов функции отъедает 30 минут
>3000 вызовов выкушают аккурат два месяца
с нной итерации он может ускориться на хуй его знает сколько быстрее, такой вот JS
>это жопа, мб позже отпишу что можно вместо этого
Товарищ шмыга предлагает портянку
q = a[xm][ym];
q = (q << 1) + a[x][ym];
q = (q << 1) + a[xp][ym];
q = (q << 1) + a[xm][y];
q = (q << 1) + a[x][y];
q = (q << 1) + a[xp][y];
q = (q << 1) + a[xm][yp];
q = (q << 1) + a[x][yp];
q = (q << 1) + a[xp][yp];
Пусть анон с исходником меряет. У меня countf нету.
PS мой хром портянку на порядок быстрее считает, чем строки.
>И всё же, как ответить на главный вопрос последнего десятилетия — Vue или React?
>
Количество вакансий сравни и все станет ясно, и если у тебя стоит реакт девелопер тул, то сам можешь увидеть какие сайты перешли на реакт
>>48739
https://pastebin.com/wAiNHgWc
таблица чтоб не ебаца со строкой
но думаю что товарищ шмыга былиже к истине
Какой учить в первую очередь ?, я понял что реакт, типа классика. Ангуляр джуну нахуй не нужен. Вью типа новомодная срань.
офк понятно что учить надо все, ибо фронт-энд
Реакт обвс.
Третьего дня, по совету эндциклопедии "юный оператор ЭВМ 1984", реализовал новый алгоритм — «Обход матрицы-3000 (раз)». Сразу же, задыхаясь от собственной гениальности, налепил циклов for и запустил скрипт. Время выполнения, моё почтение. Настоящими инженерами были советские программисты. Даже моя, привыкшая к O(n^4) алгоритмам, машина пентиум 4, отказывалась выполнять быстрее, чем за полчаса. Совместными с байтоебами усилиями забороли проблему. Ощущения — АТАС. С калькулятором мк-61 не идёт ни в какое сравнение. Кроме того, светлая иде приятно щипет глаза. Рефакторил весь день. Решительно готов к реализации более сложных вещец.
Многие хреньворкщики увидят тут нечитабельный ес3 код. Тупым хреньворкщикам невдомёк, что отсутствие бабеля и стремление к оптимизации и совместимости со старыми браузерами — это разные вещи.
Алгоритм отличный, всем рекомендую к ознакомлению.
Всё это, как водится, релейтед.
разобрался:
> package.json:
{
"name": "",
"version": "1.0.0",
"main": "",
"scripts": {
"prepare": "node install.js"
},
"dependencies": {},
"author": "me",
"private": "true",
"MODULES": {
"path/to/server": {
"packagename":"latest",
...
},
"path/to/web/client": {
...
},
...
}
}
> install.js:
p = {
"name":"app",
"version":"1.0.0",
"author":"me",
"private":"true"
}
join = require("path").join
fs = require("fs")
const child_process = require('child_process')
String.prototype.replaceAll = function(search, replace){
return this.split(search).join(replace);
}
m = require("./package.json").MODULES
var copy = original => JSON.parse(JSON.stringify(original));
for(k in m){
let dirname = join(__dirname,k)
let modules = m[k]
let appname = k.replaceAll("/","-").replaceAll("_","-")
let filename = join(dirname,"package.json")
p.dependencies = modules
p.name = appname
fs.writeFileSync(filename,JSON.stringify(p,null,2))
npm_install(dirname)
}
function npm_install(where)
{
child_process.execSync('npm install', { cwd: where, env: process.env, stdio: 'inherit' })
}
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
версия пакета не учитывается, но кому надо - сами допилят
разобрался:
> package.json:
{
"name": "",
"version": "1.0.0",
"main": "",
"scripts": {
"prepare": "node install.js"
},
"dependencies": {},
"author": "me",
"private": "true",
"MODULES": {
"path/to/server": {
"packagename":"latest",
...
},
"path/to/web/client": {
...
},
...
}
}
> install.js:
p = {
"name":"app",
"version":"1.0.0",
"author":"me",
"private":"true"
}
join = require("path").join
fs = require("fs")
const child_process = require('child_process')
String.prototype.replaceAll = function(search, replace){
return this.split(search).join(replace);
}
m = require("./package.json").MODULES
var copy = original => JSON.parse(JSON.stringify(original));
for(k in m){
let dirname = join(__dirname,k)
let modules = m[k]
let appname = k.replaceAll("/","-").replaceAll("_","-")
let filename = join(dirname,"package.json")
p.dependencies = modules
p.name = appname
fs.writeFileSync(filename,JSON.stringify(p,null,2))
npm_install(dirname)
}
function npm_install(where)
{
child_process.execSync('npm install', { cwd: where, env: process.env, stdio: 'inherit' })
}
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
версия пакета не учитывается, но кому надо - сами допилят
Тебе >>48739 тож самых вкусных тортиков!
Воспользовавшись портянкой с побитовыми сдвигами, получилось ускорить скрипт примерно в 8 раз!
Заменив все массив инт8эрреями, получилось еще примерно в два раза ускориться (правда люто начало хавоть памяти).
На трех картинках консоль:
1. Оригинал со строками;
2. Побитовый сдвиг;
3. Побитовый сдвиг + Int8Array;
Performance. В том же порядке: строки, сдвиг влево, Int8Array.
Ничего хорошего. Не вкатывайся сюда. Лучше вкатывайся в PHP - у них самые вкусные пряники.
Через месяц ? новый фрейм выйдет. Через 10 лет ? нихуя не изменится, может быть один фреймворк заменит другой. Через 30 - 50 лет ? Все перейдет / начнет перекатываться на единую платформу, где условно будет один язык ? или прогать будут мышкой ? Через 100 лет ? мировой кризис, войны, катастрофы, глобальное потепление, обвал криптовалют. Обществу снова нужны будут колхозы. придется вкатываться в агрохозяйство, комбайнеры, ботаников. Но это все в мире, в рашке, скорой уже на алголе будем писать.
Как через VK API:
1. Узнать количество сообщений в беседе
2. Узнать количество сообщений в беседе от определенного юзера
Ткните в нужный метод/цепочку методов пожалуйста, а то я прошерстил доки и не могу найти решение. Единственное, что вроде как подходит метод messages.getHistory, но с ключом сообщества при вызове возвращается Access Denied, что как я понимаю связано с ограничением vk api от 15 февраля. В общем, хелп пожалуйста
JavaScript тут при чем? Пиши в службу поддержки сайта, чей API хочешь использовать.
>проброс ошибки
по русски вывести ошибку.
происходит из ключевого "thow" что есть "бросать",
а ловишь ты исключение ( ошибку ) в "catch" что есть "ловить" =)
сам проверил, хуйня затея
Не она.
>да, ток хуй его нужно ли оно там )
Самое смешное, что у меня есть примерно такой же кусок кода, в том же файле, который делает примерно то же самое, только опять же через залупу (через строки).
Переделай
for (var i = 0; i < 512; i++) {
var q = ((i >> 4) & 1) * 8;
for (var j = 0; j < 9; j++) {
q += (1 >> j) & 1;
}
rule = r[q];
}
табы сожрали враги
мимо шмыга.
И индекс у rule тоже. Что неожиданно.
милионник?
let myarr = {
"One" : "odin",
"Two" : "dva",
};
console.log(myarr["Two"]);
>
dva
Пусть анон меняет. Шмыга пишет согласно остальному говнокоду.
Что однообразно - то не безобразно.
Объекты как ассоциативные массивы. На лерн.джаваскрипт про это писали
Dont break the web.
А что ты хотел? String? Отдельный typeof только у undefined есть.
Давай конкретнее, что сломается и почему?
Спасибо
Как-то делал. Скукотища.
А что вам так припекает от циклов? Думаете, запрятали их за тысячей проссанных одёжек и обёрток, и их нету? А хуй там, они никуда не денутся в принципе, только будут работать на порядок медленнее.
Думаю, что декларативный код попроще читается. Хотя бы создание цикла можно сделать через Array.from.
Речь не про родные конструкции языка, тут всё очевидно: форЕач всякий обычно лучше цикла. Но не всегда его можно применить. Другое дело, что это кукарекают хреньворкщики, которые про конструкции ES6 и функциональное программирование даже не слышали.
Ну вообще хреньворщики как раз чаще используют новые фичи языка. У них же всё равно бабель транспилирует код в ES5.
Фичи - это костыли хреньворка? Ну да, ну да. Только каким боком эти костыли стали новыми фичами языка?
Блядь, ну уже же обсуждали это: ни одна макака не сумела обосновать возгласы о хуёвости кода иначе, нежели как "Ко-ко-ко, ты хреньворки не используешь!!!". В данном конкретном случае квохтание было вокруг вложенного цикла, строившего таблицу, имитирующую арифмометр: мол, какой ужас, чистые циклы, без хреньворка, возмутительно!
Я могу обосновать не хуевость, но почему мне не хочется смотреть на этот код. Во-первых, в коде нет пробелов, пустых линий после блоков. Во-вторых, если уж упомянули создание массива, то я бы предпочел что-то типа
>const a = Array.from({length: 42}, () => Array.from({length: 42}, () => Math.round(Math.random())));
В-третьих, названия переменных либо из одного-двух символов не по конвенции, либо просто строчными, без каких-либо разделителей.
>вокруг вложенного цикла, строившего таблицу, имитирующую арифмометр: мол, какой ужас, чистые циклы, без хреньворка, возмутительно!
Кому это говно нужно? Неактуально уже с 19 века, долбоёб.
Тащемта, макаки это те, кто не может в современную разработку, манечка. Т.е. ты и есть та самая макака, причём наихудшая её разновидность - макака выёбистая.
Ничего полезного не сделал, но гонора будто ОС написал.
У обоих поделий один автор. Та же светлая иде, те же объявления через var, код, состоящий на 90% из вложенных циклов for, и так далее.
Ну и концепт один и тот же. Что мк-61, что симуляция "имитирующую арифмометр" - это один и тот же уровень работающего в НИИ за 30к скучающего лба с претензией на элитарность.
Мне неопходимо получать значение из функции, которая совершает GET запрос на сервер. Как блять в этом ЖэЭсЕ это возможно сделать?
Дада мне нужно именно вернуть такое значение, потому как дергать эту функцию из Java апплета (будь он неладен)
https://repl.it/repls/ConsiderateCuteMedian
>У обоих поделий один автор
Каким образом ты мог видеть, в чём пишет код автор эмулятора? Где ты хоть одно слово var увидел в коде? Где, за исключением формирования табличек (проход по столбикам во время прохода по строчкам, блядь), ты увидел вложенные циклы? Нашёл только в одном месте: функции шага работы калькулятора, потому что, блядь, калькулятор так устроен и за один шаг должен выполнить 23520 микрокоманд, каждые 42 прогоняя данные по шине.
> Что мк-61, что симуляция "имитирующую арифмометр"
Про арифмометр - это из того же самого эмулятора.
Ага, посмотрел сейчас. Действительно, код у калькуляторшизика неплохой, относительно того, что на том пике. Приношу извинения автору сего замечательного сайта.
Я бы тоже посмеялся над этим, но на самом деле это всё печально. Полазил по форуму javascript.ru - там каждый первый "страждущий" суёт свой жидокверный код на исправление. Жидоквер, по ходу, - праотец и патриарх JS-хреньворков и еблиотек.
Я понял что это старая библиотека, но на ней все старые сайты, если я вкачусь в шарагу, мне же придется её юзать ? На чем щас пишут вместо жк ?
new Promise(function(resolve, reject) {
setTimeout(() => {
throw new Error("Whoops!");
}, 1000);
}).catch(alert);
Как было сказано в главе, здесь присутствует "скрытый try..catch" вокруг кода функции. Поэтому обрабатываются все синхронные ошибки.
В данном примере ошибка генерируется не по ходу выполнения кода, а позже. Поэтому промис не может обработать её.
То есть позже? Разве промисы не ждут полного выполнения кода, дабы вернуть фуллфилд?
> То есть позже? Разве промисы не ждут полного выполнения кода, дабы вернуть фуллфилд?
Так оно и ждёт, целую секунду, потом вылетает ошибка. Меньше коснорылого жидовского мудака Кантора читай, умнее будешь.
Это вы обо мне тут срачь устроили?))) Можно я тож поучаствую?))) Ладно, давай разберем по частям, тобою написанное ))
>Во-первых, в коде нет пробелов
Томущо они там не нужны. Использовать пробелы или не использовать - лично дело каждого. На читаемость кода они никак не влияют (исключительно дело привычки). В то же время никакой функциональной нагрузки пробелы не несут. В связи с этим (мое мнение) лучше их не ставить за ненадобностью:
Во-первых, придется давить каждый раз лишнюю клавишу на клавиатуре и, копируя, участок строки в другую строку, каждый раз придется следить за тем, чтобы не захватить лишний пробел и нигде не получилось два идущих подряд пробела (мы же здесь с вами перфекционисты... или у кого-то носки под батареей валяются?)
Во-вторых, если писать дохуя математическое выражение в строку, да еще и внутри вложенных циклов - может появиться горизонтальная полоса прокрутки. Конечно, можно разбить строку на несколько строк. Но можно и удалить пробелы. Помню, говнокодил что-то в детстве и там горизонтальная прокрутка поперла. И че делать? Строки переносить? Нее. Удалить эти нахуй не нужные пробелы. Ctrl+H. Заменить что? "Пробел равно". На что? На "равно". Заменить что? "Плюс равно". На что? На "плюс". Вычистил в исходнике все пробелы вокруг скобочек, знаков арифметических операций и везде, где пробелы никак не влияют на функционал. Код стал более компактным, няшным и читаемость его никак не ухудшилась. Вместе с тем пропала необходимость давить лишнюю клавишу во время написания кода и следить за тем, чтобы нигде не проебать пробел или не поставить лишний (у меня носки под батареей не валяются). С тех пор пробелы не ставлю.
>пустых линий после блоков.
Вот это ты ко мне сейчас просто с нихуя доебался. Я поудалял пустые строки специально, чтобы скриншот простыней не выкладывать. IRL я всегда оставляю пустые строки. Пустые строки, в отличии от пробелов, таки влияют на читаемость кода.
В цикле "верхнего уровня" или в функции всегда оставляю две пустые строки после открывающей фигурной скобки и две после закрывающей. Это удобно, когда наполняешь цикл/функцию говнокодом или переписываешь куски говнокода - чтобы не путаться и не проебаться с количеством закрывающий скобок.
Сами же функции (или "глобальные" циклы) отделяю четырьмя пустыми строками сверху/снизу.
Все куски кода группирую и разделяю снизу и сверху двумя пустыми строками. Чтобы было сразу видно, где начинается кусок кода выполняющий одну хуйню, где он заканчивается и где начинается кусок кода выполняющий следующую хуйню.
Выражения опять же группирую и разделяю одной пустой строкой.
>Во-вторых, если уж упомянули создание массива, то я бы предпочел что-то типа
>>const a = Array.from({length: 42}, () => Array.from({length: 42}, () => Math.round(Math.random())));
Охуенно. Пишем статью в хаб "математика". Пихаем в код выражения, методы и функции существующие только в конкретном языке-нейм. Чтобы читатель, вместо чтения статьи, сидел разбирался во всей этой callback-ебанине. Или мне надо было переписать весь код, прежде чем сюда скриншот выкладывать?
>В-третьих, названия переменных либо из одного-двух символов не по конвенции
Название массива array сократил до символа a, опять же для скриншота, чтобы его горизонтально на весь экран не размазало.
Счетчики циклов у меня всегда однобуквенные. Букв в латинском алфавите хватает.
Переменные xp, xm, yp и ym объявляются и через три строки используются. По коду понятно, что эти переменные делаю (p - "plus 1", m - "minus 1"). Давать этим переменным длинные имена нецелесообразно - неоднократно используются в выражении и размажет, или горизонтально (если в одну строку писать выражение), или вертикально (если разбивать строку).
Переменная q у меня всегда зарезервирована под хуиту, которую посчитал, использовал, выбросил.
Имена переменных, которые используются в других частях кода, а также имена функций у меня более осмысленные. Для скриншота я их специально сделать менее осмысленными, чтобы по именам нельзя было понять, что делает этот код. Статья не дописана же - нахуя раньше времени палить.
>либо просто строчными, без каких-либо разделителей.
Вот тут единственная претензия по делу. Раньше использовал верблюжью нотацию. Потом че-т перестал.
Это вы обо мне тут срачь устроили?))) Можно я тож поучаствую?))) Ладно, давай разберем по частям, тобою написанное ))
>Во-первых, в коде нет пробелов
Томущо они там не нужны. Использовать пробелы или не использовать - лично дело каждого. На читаемость кода они никак не влияют (исключительно дело привычки). В то же время никакой функциональной нагрузки пробелы не несут. В связи с этим (мое мнение) лучше их не ставить за ненадобностью:
Во-первых, придется давить каждый раз лишнюю клавишу на клавиатуре и, копируя, участок строки в другую строку, каждый раз придется следить за тем, чтобы не захватить лишний пробел и нигде не получилось два идущих подряд пробела (мы же здесь с вами перфекционисты... или у кого-то носки под батареей валяются?)
Во-вторых, если писать дохуя математическое выражение в строку, да еще и внутри вложенных циклов - может появиться горизонтальная полоса прокрутки. Конечно, можно разбить строку на несколько строк. Но можно и удалить пробелы. Помню, говнокодил что-то в детстве и там горизонтальная прокрутка поперла. И че делать? Строки переносить? Нее. Удалить эти нахуй не нужные пробелы. Ctrl+H. Заменить что? "Пробел равно". На что? На "равно". Заменить что? "Плюс равно". На что? На "плюс". Вычистил в исходнике все пробелы вокруг скобочек, знаков арифметических операций и везде, где пробелы никак не влияют на функционал. Код стал более компактным, няшным и читаемость его никак не ухудшилась. Вместе с тем пропала необходимость давить лишнюю клавишу во время написания кода и следить за тем, чтобы нигде не проебать пробел или не поставить лишний (у меня носки под батареей не валяются). С тех пор пробелы не ставлю.
>пустых линий после блоков.
Вот это ты ко мне сейчас просто с нихуя доебался. Я поудалял пустые строки специально, чтобы скриншот простыней не выкладывать. IRL я всегда оставляю пустые строки. Пустые строки, в отличии от пробелов, таки влияют на читаемость кода.
В цикле "верхнего уровня" или в функции всегда оставляю две пустые строки после открывающей фигурной скобки и две после закрывающей. Это удобно, когда наполняешь цикл/функцию говнокодом или переписываешь куски говнокода - чтобы не путаться и не проебаться с количеством закрывающий скобок.
Сами же функции (или "глобальные" циклы) отделяю четырьмя пустыми строками сверху/снизу.
Все куски кода группирую и разделяю снизу и сверху двумя пустыми строками. Чтобы было сразу видно, где начинается кусок кода выполняющий одну хуйню, где он заканчивается и где начинается кусок кода выполняющий следующую хуйню.
Выражения опять же группирую и разделяю одной пустой строкой.
>Во-вторых, если уж упомянули создание массива, то я бы предпочел что-то типа
>>const a = Array.from({length: 42}, () => Array.from({length: 42}, () => Math.round(Math.random())));
Охуенно. Пишем статью в хаб "математика". Пихаем в код выражения, методы и функции существующие только в конкретном языке-нейм. Чтобы читатель, вместо чтения статьи, сидел разбирался во всей этой callback-ебанине. Или мне надо было переписать весь код, прежде чем сюда скриншот выкладывать?
>В-третьих, названия переменных либо из одного-двух символов не по конвенции
Название массива array сократил до символа a, опять же для скриншота, чтобы его горизонтально на весь экран не размазало.
Счетчики циклов у меня всегда однобуквенные. Букв в латинском алфавите хватает.
Переменные xp, xm, yp и ym объявляются и через три строки используются. По коду понятно, что эти переменные делаю (p - "plus 1", m - "minus 1"). Давать этим переменным длинные имена нецелесообразно - неоднократно используются в выражении и размажет, или горизонтально (если в одну строку писать выражение), или вертикально (если разбивать строку).
Переменная q у меня всегда зарезервирована под хуиту, которую посчитал, использовал, выбросил.
Имена переменных, которые используются в других частях кода, а также имена функций у меня более осмысленные. Для скриншота я их специально сделать менее осмысленными, чтобы по именам нельзя было понять, что делает этот код. Статья не дописана же - нахуя раньше времени палить.
>либо просто строчными, без каких-либо разделителей.
Вот тут единственная претензия по делу. Раньше использовал верблюжью нотацию. Потом че-т перестал.
> Это вы обо мне тут срачь устроили?)))
Да кому ты нужен, криворукий пидорас? Утопись в своём говнокоде.
> Использовать пробелы или не использовать - лично дело каждого.
Послать тебя нахуй с твоим говном - тоже личное дело каждого. Вот и иди.
Хуя у тебя пердак разворотило. Зашиться не пробовал?)))
>отделяю четырьмя пустыми строками сверху/снизу
>остальная куча выдуманных правил
Лул.
Я обычно пропускаю творения с такой разметкой, как и многие другие программеры. Отстутствие стандартного форматирования кода в 99% случаев говорит о низком уровне программиста.
Пиши по гайдлайнам и не выёбывайся. Если нет гайдов, то смотри как другие делают, кто в теме уже давно.
Апдейт:
Умение оформить код в общепринятом стиле является проявлением уважения к читающему\коллеге.
Хекслет
Фичи — новые вещи в ES6/7/8/9. При чем тут вообще фреймворки, я не понимаю что ты несёшь.
Общепринятого кем? Теми, кто по два пробела использует вместо табуляции? В рот я ебал такой "общепринятый стиль".
Нахуй вы вообще этот стиле-срачь решили устроить?
Насколько душным старым пердуном нужно быть чтобы табуляцию вместо пробелов использовать в почти 2k2o? Поставь нормальный редактор/ide чтобы он за тебя подставлял пробелы когда на tab нажимаешь.
Никем не общепринятого. Такие "общепринятые" нормы также предписывают не использовать русские слова в качестве идентификаторов. В рот ебать такие правила. Просто, блядь, в случае со стилем пробелов, табуляций и т. п. так намного читаемее - такое мнение выработано многолетней практикой тысяч программистов куда умнее тебя.
> Сгорел нахуй. Вошел в ваш ебаный ойти, на входе просили базовые знания жс, тестовое задание было на реакт, а на работе надо знать жс, реакт, редукс, реакт-редукс, редукс-формс, редукс-хуюкс и еще миллион библиотек.
А ты что хотел? Думал в сказку попасть?
Ебанутрия, я как раз на чистом ES6 пишу. Так при чём тут хреньворки? Изволил вскукарекнуть - отвечай.
Терпи, хреньворкщица, джуной будешь.
Блядь, я думал, что когда идешь на позицию фронтэнд разраба стажера, тебе не надо будет писать бэк. Я думал, если в описании вакансии требуется одно, то не будут требовать другое. Если бы мне сказали перед устройством, вот мол, твое первое задание будет вот это, то я бы нахуй туда не пошел. Маня, по делу может есть что сказать?
Так вот это кто кукарекнул?
> хреньворкщики, которые про конструкции ES6 и функциональное программирование даже не слышали.
Если ты не тот шизик, то не надо в диалог лезть. Мне нужны оправдания от этого шизика.
> Маня, по делу может есть что сказать?
Хех, ебать ты лошпек. Выкатывайся уже, дебс.
Думал, что реакт выучил и всё? Хуй там плавал, надо ещё выучить редукс, контекст, аполло, рекомпоуз, саги, санки для сайд-эффектов, хелмет, дропзоун, спринг, дауншифт, фаербейс. Это уже не говоря о классике типа имьютбл и рамда.
По поводу безумного кукарека о том, что пишущие на фреймворках не знают ES6, хотя они на 7+ давно пишут.
Ну вот ты же не знаешь.
В первую очередь разработчик должен уметь работать с гуглом и решать проблемы. То, что ты там задрочил одну технологию - никого не волнует, вкатывальщик.
Почему пхпшников ебут за фронт, а тебя, такого вайтишника, не должны ебать за бэк?
Какой программист станет использовать хреньворки, владея ES6? Разве только тот, который пишет на нём дичайший говнокод и без хреньворков ни с чем не справляется.
Вас не за, а в бэк и фронт ебут.
Калькулятор ?
Да.
>>49979
Даже не пытайтесь, я в этом стиле-сраче участвовать не буду. Вы в нем участвовали и наобщепринимали хуиты, я же не участвовал и пишу как мне удобнее - так, как меня еще дiды учили.
Я могу, например, очень удобно написать два слеша в начале строки, чтобы закомментировать участок кода, который мне временно не нужен. При этом вся хуита не съедет в сторону и не нарушится форматирование. Потом, когда мне этот кусок кода понадобится - я его могу быстро найти, томущо эти два слеша сразу в глаза бросаются.
К тому же я могу очень удобно выравнивать то, что мне надо, как вот тут >>48645 комментарии. При этом не засоряя файл лишними пробелами и лишними байтами. Лишними и бесполезными двумя байтами, там где можно использовать один.
Если вы хотите - засоряйте свои файлы бесполезными байтами, гоняйте бессмысленный трафик по сети, повышайте мировую энтропию. Только меня в эту содомию не втягивайте.
>слеша в начале строки, чтобы закомментировать участок кода
А там код? Я думал просто кто-то копипастой нечитаемой насрал.
SPA, SSR
Тебе как минимум три человека говорят, что ты уёбок, в т. ч. тот, который на хую вертел "общепринятые правила" мудаков, а ты всё ещё не веришь?
Блять, там же комментарии есть
Конфиг для сервера берется из файла config.ts, а там он получается из файла .env . Сука, ты никогда проектов на гитхабе не видел раньше?
Почему когда я добавляю значение к объекту я потом не вижу его через console.log, только через гетОвнДескриптор?
Да кстати два пробела вместо табуляции лютое хуесосство, таб куда удобнее
все сам допер энумерабл не стоял
Зачем ты меня сейчас пытаешься сделать "дартаньяном среди пидорасов"? Я тут ни в чью сторону не пердел, пока в мою не начали пердеть.
Двое из здешних обитателей помогли мне ускорить мой говнокод в 18 раз. У них тож пробелы вместо табуляций, но я в их сторону ни одного плохого слова не написал. Я им безмерно благодарен и выше пожелал им самых вкусных тортиков.
Срачь начался, когда кто-то начал меня хуесосить за то, что пробелы не ставлю согласно "общепринятому". Пошел гуглить ваше "общепринятое", а там пробелы вместо табуляций. Вот пробелы вместо табуляций я на хую вертел и в рот ебал. Есть удобные табуляции, которые для того и создавались - нахуя срать пробелами.
Щито не так? Есть подсветка синтаксиса, есть вкладки. Что еще надо?
Что тут думать? Если хочешь чтобы было достаточно интересно( а не засыпать за книгами) и были хорошие рабочие перспективы, то однозначно твой выбор должен пасть на Haskell. В меру дружелюбный язык для новичка. Зная Haskell в разы легче изучать целый ряд других языков программирования. Очень универсальный и востребованный. Популярность среди работодателей объясняется тем, что на хаскелле можно написать практически всё, то есть тебе не придётся изучать новый язык из-за неактуальность определённого языка в определённой сфере. Хаскелл является очень быстрым языком( уступает C и C++, но в отличии от них является безопасным, возможно даже самым безопасным). Хаскелл - язык будущего, так как он, в отличии от многих других популярных языков, имеет преимущество в параллельном и многопоточном программировании( считай, что чем больше ядер на компе, тем лучше хаскелл по сравнению с другими языками) и как понимаешь в будущем разрыв между хаскеллем и другими ЯП будет только увеличиваться. Да и вообще, не учить Haskell в 2016 - быть дауном
Все нормальные люди его используют или так только в книгах пишут, а в действительности не используют из-за старых бразуеров?
IRL совместимость - прошлый век. Все сейчас пишут под Хром (на движке которого работает Опера и твой мейлру-браузер). Хром совместим с Файерфоксом. Совместимостью с остальными (экзотическими) браузерами никто не заморачивается.
Я сам джавист, но мне последнее время скучно стало дома, решил попробовать посмотреть на javascript, но хочется не рабочих задач, а чисто для себя экспериментировать
>чтобы скриншот
>чтобы скриншот
ну есть жи пастебин
>В то же время никакой функциональной нагрузки пробелы не несут.
попробуй без regexp объяснить grepУ или sedУ что exampl != examplArr
а вот лишний пробел как раз проблем не вызывает, ну кроме моральных
>>50021
>гоняйте бессмысленный трафик по сети
говорит тип со скрином текста
Если сделать замену функции руками через консоль, то производительность не страдает. В чем причина и как фиксить?
Что нужно учить, чтобы вкатиться в бэк на Nodejs? Я так понял реакты и вуе тут не нужны?
Так и не понял в чем причина, но решил проблему путём предварительного создания функции в window через createElement('script').
>ну есть жи пастебин
>говорит тип со скрином текста
Не. Я старался максимально удобно оформить пост, чтобы получить максимальную отдачу.
Человек скролля тред, натыкается на пасту, первым делом читает ее по диагонали. Там какая-то муть: 3000 раз, циклы, массивы, единицы и нули, ParseInt в десятичное число, true/false. Скроллит дальше не перейдя по ссылке на пастебин - зачем туда ходить, если в пасте муть.
Если пост с картинкой - превьюха сразу привлекает внимание. Человек первым делом бегло смотрит на код на картинке. Дальше читает пасту. Опять смотрит на код на картинке уже более внимательно. Далее еще раз читает пасту, чтобы понять в чем суть проблемы. И потом пытается помочь решить проблему. Кроме того, с картинкой не надо бегать по вкладкам.
Если паста содержит больше одного абзаца - картинка обязательно должна быть, чтобы не было рефлекторного желания промотать пасту или прочитать ее по диагонали. Та мутная паста с картинкой 8 комментариев насобирала, не считая моего девятого.
Вот я сейчас сюда к посту прилеплю няшку жрущую конфеты и этот пост прочитает больше анонов. Без няшки пост тупо проскроллят, томущо не им адресовано.
Та не. Там просто перебор с макияжем и неудачный ракурс, а так тян норм я щитаю. Но такое кривое фото наверно ему именно этим фактом и приглянулось.
>Там просто перебор с макияжем и неудачный ракурс
Да ты охуел. Самые удачные ракурсы с этой хрюшкой - в полупрофиль. Если ты тут самый умный - покажи удачный ракурс с этой хрюшкой.
"Кривое" фото мне приглянулось сисечкой выглядывающей из-под рубашки.
Че-т не интересно как-то :(
Такой вопрос, аноны, нахуя мне использовать тайпскрипт, если существует эслинт? Нахуй он нужен? Тем более он медленный
>прилеплю няшку
это та правильно, но правильней ниже еще и ссылочку приложить, у тебя там не три строки было.
>И потом пытается помочь решить проблему.
переписав сначало код ( часть ) с картинки =)
Да эт ты правильно подметил. Че-т не подумал, что вручную придется набирать. Да и как-то, если честно, вообще не ожидал, что кто-то будет читать и помогать (если быть до конца честным, тот пост от скуки написал, томущо в /mov/ зобан получил и нечем было заняться).
Так тайпскрипт гибче, вроде бы. Там можно зажимать компонент в конкретные пропсы, и не давать передавать в компонент лишние.
>Есть удобные табуляции, которые для того и создавались - нахуя срать пробелами.
Потому что длина табуляции нихуя не детерминирована, дубина ты стоеросовая. В каждом сука редакторе, на каждом сука гитхабелабехуябе твой код может выглядеть по разному, а могло бы везде выглядеть одинаково, если бы ты не вертел на хуя свою единственную извилину.
Проорал че-т в голосяндру с этой претензии)))
Интересно, как ты живешь с тем, что на разных сайтах используются разные шрифты? Посоны, го не будем использовать нолики в коде, томущо гитхаб в них лепит всратые палочки.
Двачую бортюнь, понавыдумавают себе хуйни, я вообще по две табуляции всегда ставлю, и по три пустых строчки между блоками. Охуели вообще, мой код, как хочу так и пишу, я не на собеседовании в гугл.
Но это и в другую сторону работает. У меня табуляция на 4 пробела стоит, а у кого-то на 2\8\... И если эти люди откроют мои файлы, то у них будет привычное отображение, а если бы там были пробелы - пришлось бы форматировать для личного удобства
>а у кого-то на 2\8\...
Тебя действительно волнует что там у этих больных ублюдков показывается?
То есть одних больных ублюдков мы учитываем, а других нет. Классна
Интерфейсы.
Полез гуглить названия твоих переменных. По первой же ссылке в гугле дристанул жиденько с подливой)))
Эт знаешь, как. Сказали, мол, выравнивай пробелами. Сидишь такой, пробелами выравниваешь, че-т мало двух. Че-т хуево читается. Дай как я побольше буду ставить. Сюда десять пробелов, туда пятнадцать, а там трех хватит. Чтобы все выглядело няшненько и симпотичненько :3
Размер табуляции в notepad++ настраивается тупо в три клика.
Я в вскоде притиер поставил и не парюсь.
> редукс, контекст, аполло, рекомпоуз, саги, санки для сайд-эффектов, хелмет, дропзоун, спринг, дауншифт, фаербейс. Это уже не говоря о классике типа имьютбл и рамда.
Пока я читал это, открылись врата в ад.
Называешь огородом всё, что слишком сложно для тебя?
>идешь на позицию фронтэнд разраба стажера
>писать бэк
Не понял, это как? Ребята перепутали два слова?
А нахуя его учить? На кой хуй он мне вообще сдался? Я, может, в школе вообще папуасский учил, а из английского знаю только слово "fuck".
Ну это уже в сторону фулстака.
Бро, а где анимешные трапы?
Пошел нахуй, грязный пидор.
Очень часто документация только на английском, и чем выше уровень, тем этого больше. Без инглиша в сфере разработки можно быть либо макакой, либо вечным джуном разве что.
А он типизирован?
Сама ты джуна, билингвистичная причём. Ну и хули, что на английском, нахуй мне его знать? Есть автопереводчики, словари и т. п., чтобы понять, где косяки перевода, достаточно логики и уровня познаний языка школьника 9 класса. Зачем мне, инженеру по профессии, учить иностранные языки, я что, переводчик?
Или не пизди.
Да каким там джуном. Я когда шароебился в стажеры, так меня первым делом спрашивали про мой уровень Английского, им от B1 в девяносто процентов случаев нужен.
Английский на уровне свободного чтения документации, может иногда со словарём, необходим, подразумевается. Если ты этого не понимаешь, то видимо ни с чем современным плотно не работал, в доки постоянно надо лезть.
Особенно хорошо, если ты не только можешь читать, но и в состоянии сам документацию на грамотном английском составить, но это уже сильно выше уровень.
Джуну английский важнее. Сеньёр может плохо знать, ему квалификация нужна, оформление док можно всегда на джунов спихнуть.
А при чём тут код? Зачем мне тут иностранные языки?
> Переводчики будут замедлять скорость твоей работы.
Замедлять мою работу будет изучение неродного мне языка и попытка применять эти знания в узкоспециализированной области (и всё равно поправляться переводчиком и поисковиком).
> Да каким там джуном.
Ну и дебильное слово. На ум приходит тот школьник с флажком в жопе, причём неистово носящийся по помещению и извергающий поносный пердёж. Какие-то петушиные масти. Надо было устраиваться программистом, а не джуной-переводчицей.
> Если ты этого не понимаешь, то видимо ни с чем современным плотно не работал, в доки постоянно надо лезть.
Знаешь ли, не первый год в профессии. Ни разу мне не приходило в голову, что мне прямо-таки нужно повышать свои знания английского.
jQuery-макака не палится. Если врстать лендосы и прикручивать к ним карусельку много лет, то много английского и ума не надо.
В промышленной разработке никто не будет называть переменные на русском, хотя бы потому что придется свитчиться на другой язык каждый раз.
Будут использовать то, что им удобно, и даже ухом не поведут в сторону мартышек, визжащих: "Кукареку!!! Ни паанглиски!!! Нильзяяя!!!".
Насчёт переключения не переживай, это не проблематичнее, чем набрать один символ.
Что значит "будут"? Это не что-то эфемерное или воображаемое, тысячи компаний работают на СНГ рынке прямо сейчас. И сколько из них использует названия переменных на русском языке? Я ни одной не видел, а ты?
Я, по-твоему, не промышленной разработкой занимаюсь, сам для себя сижу где-то в норе и сайтики на JS клепаю?
Так точно.
1. $set устанавливает изменение до сохранения файла или что?
2. Случайная схема:
var personSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
age: Number,
stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
var storySchema = Schema({
author: { type: Schema.Types.ObjectId, ref: 'Person' },
title: String,
fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
var Story = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);
Как он у персоны связывает айди из story? Там где привязка указана в массиве stories? И что вообще значит этот обжектайди, на магию для связки похоже.
>Насчёт переключения не переживай, это не проблематичнее, чем набрать один символ.
Помню, к нам в офис SMO-шника посадили. Ну и там он че-т за каким-то хуем полез редактировать html-страничку, на которую весь трафик гнался. Подзывает меня к монитору, говорит, мол, че-т у меня вся страничка вхерилась. Стоял тупил в монитор немного, потом сообразил что надо думать как гуманитарий. Говорю ему, мол, у тебя в ахрефах буквочка а латинская?
Сидишь такой раскладку дрочишь постоянно. Привтыкал где-то переключить. Въебал киррилическую "c" вместо латинской. Нужное значение не записалось в переменную и попало в свежесозданную глобальную. В нужный момент времени, значение не использовалось, а использовался какой-то хлам, который был до этого в переменной. А потом на перекрестках в обе стороны зеленый горит, самолеты падают и кардиографы смертельную пиздецому показывают здоровому человеку. Охуенно! К нам JavaScripт вкатился долбоеб-гуманитарий из одинцебухгалтерии!
Щито ты тогда в этом треде забыл? Иди в свой похапе тред дальше еби свои деприкейтед функции.
>Щито ты тогда в этом треде забыл?
Сру на голову дебилам вроде тебя.
>похапе
А вот и дебилопроекции.
Если ты такой дебил, что можешь написать посреди кода одиночную букву "а" или "с", а потом думать, что это значит, то это только твои проблемы. Именно из-за вас, долбоёбов, все проблемы, связанные с информационными технологиями.
Еще и тесты приходится писать из-за таких дебилов, как он.
Какие одиночные буквы? Опять героина объелся? Дохуя ситуаций можно представить, где ты с раскладкой проебался.
Выше вон был пример ситуации с долбоебом, для которого нет разницы какую раскладку использовать в html-тегах.
Другой пример. Шестнадцатеричные числа. Скажем, достался тебе по наследству код, который рисует элементы интерфейса сайта через canvas. В коде цвет заливки задается не через RGB, а с помощью хешей (#FFA500). Чтобы не менять стилистику, тож используешь хеши. В коде в body.onload вызывается функция, которая рисует хуйню на сайте и заливает ее цветом. Где-нить в onclick вызывается та же функция, рисующая хуйню, но с указанным в переменной цветом. Сидишь такой пишешь:
цветХуйниНейм = "#00СС00";
Твоя IDE тебе синтаксис внутри строк нихуя не подсветила и не сообщила, что ты, пидорас, кириллицу в хеше использовал. Без задней мысли загружаешь .js на сервер. В течении месяца сыпятся на самое дно конверсии. Томущо canvas игнорирует твое говно, которое ты ему пытаешься скормить в ctx.fillStyle и без задней мысли (даже не ругнувшись в консоль) рисует красивыми черными буквочками номер телефона на таком же красивом черном фоне, по которому посетитель сайта должен позвонить, чтобы сделать заказ.
> может появиться горизонтальная полоса прокрутки. Конечно, можно разбить строку на несколько строк. Но можно и удалить пробелы. Помню, говнокодил что-то в детстве и там горизонтальная прокрутка поперла. И че делать? Строки переносить? Нее. Удалить эти нахуй не нужные пробелы.
Ебануться... Про линтеры слышал? Про IDE?
> Сами же функции (или "глобальные" циклы) отделяю четырьмя пустыми строками сверху/снизу.
Ебануться... Удалю лишний пробел, но ебану 4 пустые строки.
> Все куски кода группирую и разделяю снизу и сверху двумя пустыми строками. Чтобы было сразу видно, где начинается кусок кода выполняющий одну хуйню, где он заканчивается и где начинается кусок кода выполняющий следующую хуйню.
Ебануться... Про функции слышал?
Ебануться, какой же ты мудак. Никогда не занимайся этим профессионально, пожалуйста.
Ебал уебков, которые ебучую кириллицу суют в код. Как же больно с таким легаси работать, я заебался трахаться с кодировками
Твой высер в очередной раз подтверждает, что ты тупорылая криворукая макака. Я за многие годы даже не разу не задумался о такой проблеме, не говоря уже о том, чтобы столкнуться с нею, а дебильная обезьяна сразу придумала, что для неё будет актуально.
Какие кодировки, опущенец? Сегодня везде UTF-8. И хули ты вообще тут по-русски пишешь?
Интересно, а как ты не путаешь l, I и 1, O и 0, m и rn и т. п., которые в некоторых шрифтах вообще идентичны? Или всё-таки путаешь, а потом месяцами выискиваешь ошибку, как блох в шерсти сородича?
Так, блядь, "нормальные" шрифты и русские с латинскими буквы по-разному рисуют. Сравни, например: К и K.
И что а и с тоже по-разному выглядят? Может еще и между остальными языками отличаются, испанским там, французским? Вообще, кириллица в коде - это ненаглядно, рекомендую на эмоджи переходить, наркоман.
horizon
Нет, а и с специально для тебя, уёбка, оставят, чтобы ты ошибки делал и выискивал до самого конца твоего нелепого существования.
Дочитаешь жидёнка, станешь джуной, тоже почувствуешь себя сверхразумом и будешь такой замечательный, оптимизированный и читаемый код писать.
Пожалуй двачну реакторщиков на этот раз
Счёт: 1-1
>Там где привязка указана в массиве stories?
Да, можно одним запросом person получить все stories
Вроде через populate метод
Где ты такое непотребство увидел? Единственные данные внутри разметки - закодированные картинки. И где мешанина языков? Ключевые слова языка следует рассматривать подобно служебным математическим символам или элементам пунктуации, сам же код тогда получается на чистом русском.
Мы дизайнеры, творческие люди
раздевайся
Жаваскриптеры - элита.
Похапешники - уважаемые диды.
СЕОшники и СМОшники - тупые гуманитарии.
Дизайнеры - пидоры.
Программисты в другом офисе сидят.
>Как он у персоны связывает айди из story?
ref: 'Story'
>И что вообще значит этот обжектайди
Просто тип данных айди из монги, такой же как String или Date
Конечно, зай. Просто мы не палимся.
Ну давай, собери эмулятор, посмотрим, как это будет выглядеть.
но как мне перекладывать функции из чистого js так и не понял. Как это делать-то? Функции импортят дохуя либ из node_modules
ну это тоже самое что vue
Есть вопрос. Редактирую расширение и нужно чтобы по нажатию горячей клавиши нажималась на расширении кнопка.
В файле background.js по нажатию горячей клавиши код:
$('#patternButton').trigger('click');
После нажатия:
Error in event handler: ReferenceError: $ is not defined
Я так понял это из-за того, что background.js не видит объект? Как это исправить?
>Как это исправить?
Гугли апи расширений. Передавай мессенджем из контент-скрипта переменную с $('#patternButton') в бэкграунд-скрипт.
Это даже не PHP, там знак доллара предваряет имя переменной, а здесь вообще какая-то дичь.
>В общем говно весь этот ваш жс мерзостное и несусветное
>Васян назвал функцию $, значит язык - говно
?????
>в говноязыке позволено Васянам называть функцию $, значит язык - говно
Поправил этого олигофрена.
7 лет назад у меня люто полыхало, когда в подобных тредах, на любую самую простую задачу, советовали обмазаться jquery. Как выделить чекбокс на страничке? Используй jquery. Как добавить кнопочку? Используй jquery. Даже не представляешь, с каким сейчас удовольствием ссу им всем на голову.
>В общем говно весь этот ваш жс мерзостное и несусветное.
Еще один. Используй typescript и будет тебе счастье, и успокойся уже.
Да жикверистам уже все ссут на голову, даже в реале, там на конфочках всяких в перерывах на обсуждениях происходят ЖАРКИЕ СПОРЫ с их опусканием (сам лично видел уже не раз, пока свечки держал).
>typescript
Тоже говно.
Хотя на фоне жспараша/нодопараши/вас дебилов - выглядит не так уж и плохо.
>этого делает джаввскрипт
Ох уж эти дрожащие ручонки.
>это
Вовсе нет, не только это - все в совокупности.
Не в последнюю очередь - наличие таких умственно неполноценных пидоров как ты.
Самое смешное, что они открывают рот и просят ещё, и доля сцайтов с жидоквером и хреньворками только растёт.
Да пусть открываю. Вся эта их параша потихоньку уходит и слава Абу за это. В СВОЕ ВРЕМЯ СКОЛЬКО СУКА ОНИ МНЕ КРОВИ ВЫПИЛИ НА ЛЕГАСИ ЗАКАЗЧИКАХ ЭТИ ЕБУЧИЕ ГОВНОПОРТЯНКИ РАЗГРЕБАТЬ КИЛОМЕТРАМИ!!!!
>Вовсе нет, не только это - все в совокупности
А что привносит конкретно это звено, кукаретик? То что тебе вид знака доллара нравится, но это все тебе на зло его используют? Твои проблемы.
>Смотрите, пасаны, я инглиш знаю, помимо пхп! Жесть я крутой пхпешник, ведь другие-то не знают
Клизмофилия.
То есть функция. Спасибо что поправил. Я наверное когда писал вспомнил о бейсике.
>Я наверное когда писал вспомнил о бейсике.
Я тоже такие вещи путал, в первый месяц как в кодинг вкатился.
Функцию что ты реквестировал можно написать в 2.5 строчки самому, если тебе это так принципиально. Но это не имеет смысла, потому что это нормальный язык и здесь есть tempate literals.
Да. Третьего дня писал скрипт на говно-js и там нужно было вывести число, дополненное нулями слева. Так я накостылял это дело через ифы и конкатенацию строк, приколи. А в сишечке бы это сделал через формат %03d.
>Бог создал труд и обезьяну. Чтоб получился человек. "Буханку"же господь не трогал, Та сразу вышла хорошо.
const toXd = function ( int , x ){
return (
'00000000000000000000000'
. slice ( 0 , x )
. substring (
int
. toString ()
. length
) + int
)
}
toXd ( 5 , 3 ) //>005
toXd ( 6 , 5 ) //>00006
( 5 ). toFixed ( 2 ) //>5.00
Ну придумали же ideone, pastebin...
Ajax отдаёт нормально. Кто сталкивался?
Контент тайп?
Изменить его на текст?
А есть в формате json, то не стрингифицировать перед отправкой?
Хуй знает, заголовок по умолчанию, я ничего не менял
>Вызов revoke() удаляет все внутренние ссылки на оригинальный объект из прокси, так что между ними больше нет связи, и оригинальный объект теперь может быть очищен сборщиком мусора.
То есть оригинальный объект удаляется вовсе? Почему?
На С/С++, очевидно же! Причем работать надо обязательно с пятизначной зарплатой. Все остальное - макакинг.
Как ты его!
Слева сисадмин. Летит с секретаршей своего босса в командировку - устанавливать бухгалтершам 1C.
Справа элита. Программирует станок на ассемблере.
Одна тысяча долларов - это не "несколько". А именно столько получают сишники, не вкатившиеся в топ вакансии (их 90%).
Сам сервер уже получает в таком виде.
Fetch стандартный - из мануалов, без всяких дополнительных настроек
Я кажись таки въехал, как это работает.
а как сейчас собственно использовать ридакс с хуками, он же рассчитан на работу с классами, со стейтом?
есть какие-то невнятные ридакс хуки, но на сайте реакт-ридакс нет ничего толкового, а хороший туториал не находится
подскажите плз
по идее будет быстрее можно написать так что и медленне будет
>>48734
>3. Результатами можно делиться складывая к себе на сайт и кидая ссылки читателям статьи. Ничего не качаешь - запустил в браузере и посмотрел как работает.
можно даже сохранить этот пункт запуская через wasm =)
вот тебе сандбокс + компилер
https://wasdk.github.io/WasmFiddle/
на досуг
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly
Ты там уже место нагрел?
На порядок быстрее будет или там 10-20%?
Че-т лениво весь локалсторедж под файлы переписывать ради каких-то пары процентов.
function func (a, b) {
if (a < b ) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
}
а не так:
function func (a, b) {
if (a < b ) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
}
Потому что меньше символов, а следовательно, меньше занимает места?
Или кто-то считает, что так лучше читается? Или так вообще работает быстрее?
Дискас
function func (a, b) {
if (a < b ) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
}
а не так:
function func (a, b) {
if (a < b ) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
}
Потому что меньше символов, а следовательно, меньше занимает места?
Или кто-то считает, что так лучше читается? Или так вообще работает быстрее?
Дискас
А вот кешам процессора не поебать. А скорость то из-за этого тоже падает. Сравни Int8Array и Int32Array в этом задаче.
>А скорость то из-за этого тоже падает.
в итоге та на глаз вреравно неопределим что быстрей
или ты доебаца до int решил?
я хуй его как там меньше разряд делать, хай анон ищет
>в итоге та на глаз вреравно неопределим что быстрей
Eже мерял Int8Array vs Int32Array.
>ты доебаца до int решил
Ага, вот уж этот сишный инт ненавижу его. Лучше <stdint.h> подключить и использовать нормальноразмерные типы. Хотя в пределах x86 почти похуй
>Also скинь уже этот кусок на пастебин,
https://pastebin.com/eyW7Jsyp
>>52629
>у тебя тут почти все считай на С написано
Тут - да. В остальном говнокоде много работы с локальным хранилищем. Надо переписывать под работу с файлами. В С никогда с файлами дела не имел.
>хуй его знает, не проверишь, не узнаешь.
Может какой компилятор посоветуешь? Чтобы не качать 20 гигов визуал стидии.
>В остальном говнокоде
ну так wasm, сложнаИсчесления запускай в нем,
остально пусть в js будет.
если на нем прирост тебе покажеться маловат, тогда уже все перекатывай.
>компилятор
хуй его знает, gcc смотри
Ага, я кажись въехал. Это типа можно на C написать код, скомпилировать его в бинарник и встроить в веб страничку? Как компилировать и как встраивать?
по русски wasm это объекь js , из коробки блеать!
который запускает хитро-жопно-скомпилиный код
от с ++ \ с .
эдакий почти как addon nodejs ток для клиента ( в node есть он тоже )
вроде еще go научили в это компилица нахуя? незнаю
>Долго в него въезжать?
3 метода, 2 работают =)
со стороны js там все просто
Привет jseрам! Аноны, подскажите пожалуйста, как мне скрыть элемент на странице с помощью скрипта? Нужно мини-расширение сделать, а в js сам нулёвый начинающий java-прогер
да
можешь переключить
Text format
на
Code buffer
и результат ctrl+c\v прямо себе в код js
если у тебя дохуя С кода смотри Clang он вроде как дохуя под это дело ( LLVM ) заточен
Переход в одно из состояний осуществляется при помощи вызова служебных функций resolve() или reject() в функции, передаваемой в конструктор промиса.
Что значит выполнить промис? Исполнить функции, передаваемой в конструктор промиса?
Выполненный промис тоже возвращает промис и к нему можно применить метод then, так?
Что значить применить метод к промису? Раз промис это объект, то, получается мы применяем метод к этому самому объекту? Что значит вернуть промис - это вернуть объект с какими-то состояниями?
Кароче дохуя вопросов.
Вроде слегка понимаю, но в голове пока не щелкнул тумблер, чтобы я все понимал на уровне спинного мозга.
1. Возможно, для понимания лучше использовать термин Future, а не Promise. Он как бы намекает, что деньги сегодня, а товар - завтра.
2. Future - это монада. Если ты поймёшь, что такое монада, вещи типа Future/Promise будут понятны сами-собой.
Если коротко, монада - это особый контейнер для одного элемента. Который может быть пустым или полным. И с которым можно делать определённые стандартные действия.
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
Там, правда, не совсем джаваскрипт. Но, если захочешь - разберёшься.
Получил фигню:
var wasmCode = new Uint8Array([числа]);
А запустить-то как эту фигню из js кода?
Пробовал после этой фигни написать:
var wasmModule = new WebAssembly.Module(wasmCode);
var wasmInstance = new WebAssembly.Instance(wasmModule, wasmImports);
log(wasmInstance.exports.main());
Ругается, что у меня wasmImports is not defined.
промис залупа которая хочет от тебя функцию, в первый аргумент которой он нагло засунет свою функцию ( как и во второй ), а потом эта сука хочет чтоб ты эти аргументы еще и сам вызывал, каждая из которых как бы говорит промису что мол все сделано, а он просто емитит их в своих методах ( тхен и катч )
как только ты вызвал в нутри функции которую передал промису
resolve ("хуй моржа")
он ( промис ) вызовет функцю которую ты передал в его then
а в аргумент положит "хуй моржа"
а режект то-же самое только какбе красиво для ошибок
можешь ебашить все и ошибки в resolve,
а там дальше уже походу разбираться
но только ошибки который ты проебал будут всеравно в catch
таким-же макаром. и вообще можешь обозвать их как хочешь
Я когда-то делал свой фьючер. На джаве.
С некоторыми специфическими особенностями.
Просто для понимания.
Но, тебе не надо (пока или даже вообще) понимать, как они устроены.
Тебе надо понять, как этим пользоваться. Понять паттерн.
Вообще, понимание монадических паттернов - очень полезно для программирования в современном мире.
Вот это можешь посмотреть:
https://hackernoon.com/functional-javascript-functors-monads-and-promises-679ce2ab8abe
И вообще полезно понимание ФП-подходов.
Тот же реакт весь на этом построен.
Читни JavaScript Allonge, например.
Uncaught TypeError: WebAssembly.Instance(): Imports argument must be present and must be an object
at init (draw.js:10711)
at index.html:13
init @ draw.js:10711
(anonymous) @ index.html:13
Ага, я кажись въезжать начал.
чтобы код можно было читать
хром его будет выплевывать нахуй, после перезапуска
если для себя, злую рекламу проще руками удалить или скриптом в консоль
Math . floor ( 1.1 ); //> 1
Math . floor (-1.1 ); //> -2
( 1.1 | 0 ); //> 1
(-1.1 | 0 ); //> -1
Че-т какой-то пердолинг со старту получается.
Компилирую пикрелейтед. Тупо функция заполняет одномерный массив нулями и единицами. Длину массива берем из аргумента, переданного в функцию. Функция возвращает этот массив.
Запускаю console.log(wasmInstance.exports.test(10));
Получаю:
draw.js:10835 Uncaught TypeError: WebAssembly.Instance(): Import #0 module="env" error: module is not an object or function
Если убрать rand и вместо него вбить обычную единицу:
wasm-a88ef276-0:28 Uncaught RuntimeError: memory access out of bounds
at wasm-function[0]:47
Если q не передавать аргументом, а объявить прям в теле функции, вместо массива в консоль прилетает:
-48
elem . style . display = 'none';
или
elem . remove ()
caм elem искать через
elem = document . querySelector('.id')
elem = document . getElementById ("id")
и т.д
или
в отладчике ишешь в DOM
можно ctrl+shift+c курсором на нужную тебе хуйню
( неточно попадет )
и в DOM в контекстном ( правый клик )
copy > Copy JS path
и у тебя в буфере функция находящаяя elem
> одну галочку
это какую?
>perdoling.PNG
тут самое интересно начинаеться, вернуть ты можешь только примитив, массив в С это прмитивы стояшие рядом в памяти.
возвращая ты условно передаешь ссылку на первый елемент массива.
нужно из js получить памяти объект
var mem = new WebAssembly.Memory({initial:1, maximum:9});
и сделать себе жээсное предсталение его
lol = new Uint8Array(mem.buffer)
и в js уже в lol смотреть
Это я должен купить подписку за 25 бачей, а потом отвалить еще 100$ чтоб мой говнокод проверили?
Лох - это судьба.
Хитрый план:
В одном треде рассказываем про зарплаты в 200-300 штук в реале - в 2-3-4 раза меньше у большинства.
В другом - постим рекламу курсов, где всего за каких-то сраных $100 вас научат этому колдунству.
Не забывая приговаривать, что рынок перегрет, на всех не хватит, надо поспешить.
>принято
>занимает места?
>работает быстрее?
да похуй
это же js
главное незабудь поставить
jquery
ember
reakt
redakt
redis
morkov
vue
d3
angular
и будет точно все хорошо
поменять css стиль элемента очевидно же
display:none (не занимает места)
или
opacity:0 (занимает место но невидимо)
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setProperty
если бы все бараны делали возвращение промиса из асинхронной функции в своих либах промисы для обычного человека вообще были бы не нужны с async await
но вот те кто сделали sqlite либу для ноды/реакта/экспо например этим не озаботились...
я в итоге сам не понимаю как работает что я пишу
Ты чего так подгораешь-то
Среди многочисленных слоев Шаданакара есть многомерный мир, где пребывают человеческие монады - неделимые и бессмертные духовные единицы, высшие Я людей. Творимые Богом и только Богом, а некоторые (немногие) таинственно рождаемые Им, они входят в Шаданакар, облекаясь наитончайшей материей, - ее правильнее было бы назвать энергией: это - субстанция, пронизывающая весь Шаданакар; каждый индивидуальный дух, вступая в нашу брамфатуру, неизбежно ею облекается. Мир, в котором пребывают наши монады, носит имя Ирольн.
Творческий труд, ведущий к просветлению Вселенной, - задача каждой монады, кроме демонических; среди же людей демонических монад нет. Человеческие монады осуществляют этот труд в низших мирах, подлежащих их просветляющему творчеству, создавая там для себя материальные облачения и через эти облачения воздействуя на среду соответствующих слоев.
Прежде всего монада создает шельт из материальности пятимерных пространств, затем - астральное тело из материальности четырехмерных. Оба эти облачения часто объединяются в нашем представлении под словом "душа". Шельт - материальное вместилище монады со всеми ее божественными свойствами и ее ближайшее орудие. Не сама монада, остающаяся в пятимерном Ирольне, но именно шельт является тем "я", которое начинает свое странствие по низшим слоям. Шельт творится самою монадою; в творении же астрального тела принимает участие великая стихиаль - Мать-Земля.
Шизик, ты? На месте?
>Чому хром в его html не запускает wasm?
Окей, хрому нужен сервер.
Вопрос про js обвязку в силе.
Чтот заинтересовало
Какого оратора посоветуешь?
https://www.youtube.com/results?search_query=монада+программирование
Attempted import error: 'compose' is not exported from '../hoc-helpers'
Где я проебываюсь с импортами? Пробовал выносить compose из фигурных скобок в отдельный импорт и тогда приложение запускается но уже в браузере пишет что не удалось достать compose
>Если коротко, монада - это особый контейнер для одного элемента. Который может быть пустым или полным. И с которым можно делать определённые стандартные действия.
В контексте промиса что есть что?
Что есть контейнер, а что элемент?
Вообще, если непредвзято прочитать твоё определение, то это просто определение простой переменной лол.
Переменная это монада?
мне кажется что в импорте надо писать полный путь к файлу а не к папке с файлами
а в фигурных скобках пишут когда импортируют специфическую функцию из файла (в файле может быть несколько экспортов, или в старой системе так можно выделить отдельные функции из объекта module.exports)
короче пиши import compose from '../hoc-helpers/compose'
Сделал так. И все равно в браузере пишет
Attempted import error: 'compose' is not exported from '../hoc-helpers'.
Ну это https://pastebin.com/rUSEh2aT отрабатывает у меня за 30сек в лисе, за 90 в хроме, и за 20 в нативном кланге но он у меня древний так что...
он должен экспортироваться из hoc-helpers/compose а не из hoc-helpers
она твою ссылку на папку hoc-helpers видит как попытку импортировать из несуществующего файла hoc-helpers.js
Блин и как лучше написать это тогда?
Попробовал вот так
import compose from '../hoc-helpers/compose';
И все равно не хочет. Убпал дефолтный экспорт оттуда поставив экспорт перед const и все равно пидрила не хочет работать.
>>52765
>Выполненный промис тоже возвращает промис и к нему можно применить метод then, так?
>>Что значит вернуть промис - это вернуть объект с какими-то состояниями?
new Promise ( func0 , func1 )
. then ( func2 )
. then ( func3 )
. then ( func4 )
. catch ( funcE )
func0 работает сразу
func1 поймает ошибки из func0 только
funcE поймает ошибки из func0-4, func1 будет проигнорирован
func3-4 ( чайник ) для них нужно вернуть промис в funcПреведущий
>вернуть промис
просто же
return new Promise
...
а вот так работает?
что-то мне сдается у тебя проект не понимает es6 модули, нода без афайк бабеля их не понимает
Ту же самую ошибку пишет. Странно. А так схуяль он не понимает es6 если через create-react-app создавал приложение.
Какой fetch?
>>52996
https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm
>Emscripten requires a large variety of JavaScript "glue" code to handle memory allocation, memory leaks, and a host of other problems
это метод какого то класса
берет как параметры сурс, таргет, задержку, префикс, форс и суффикс
использует устаревший апи xmlhttprequest и вообще устаревшую нотацию
открывает им сурс с учётом форса, в зависимости от ответа и с учётом суффикса и префикса меняет на странице элемент с айди таргет
перед тем как все это сделать он морозится на время задержки
все собственно
>>52765
Да, промис - это способ превратить вложенные коллбеки в плоскую цепочку. И асинхронный код становится очень похожим на синхронный, только в каждой строке добавляются скобки и then.
И, важнейший момент - если где-то в цепочке произошёл фейл, остальная цепочка _не_ выполняется.
Собственно, это и есть монадический паттерн, если угодно.
В случае промиса - будет вызван catch(), если он определён.
Вообще, все эти функторы и монады - это инверсия управления.
Вместо команд и проверок - ты пишешь цепочку преобразований значений.
Вас послушать так у вас всё - монада и maybe, и either, и массив, и список, и небо и даже Allah. Это не добавляет понятности пока ты по этим монадам не угарел.
>>52884
>>52940
Промис - контейнер.
То, что внутри - элемент, очевидно же.
Как я уже написал выше - смысл в инверсии управления.
Например, у тебя есть массив arr = [1, 2, 3] и ты хочешь удвоить каждое число с помощью функции double(x).
В императивном коде ты в цикле проходишь по массиву, вызываешь для каждого функцию double и добавляешь в новый массив. В функциональном - arr.map(double).
Map - это функтор.
В случае промиса - см. коммент выше и >>52993
В общем случае - вместо того, чтобы вызывать a.doSomethig ты делаешь aMonad.map(doSomething). Подразумевается, что монада (с упакованным в неё a) у тебя откуда-то появилась.
map - это then.
На выходе map будет новая монада - содержащая результат применения функции к a.
Секс в том, что если контейнер пустой, то ничего не произойдёт, функция doSomething вызвана не будет. И будет возвращена _пустая_ монада. Если есть вызовы дальше по цепочке - они тоже отработают в холостую.
Как-то так.
Разумеется, это простейшее применение этого паттерна. Более хитрые - см. в текстах по ссылкам ниже и в гугле.
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
https://dev.to/joelnet/functional-javascript---functors-monads-and-promises-1pol
И, конечно же:
https://leanpub.com/javascriptallongesix/read
(pdf можно взять там же, по ссылке buy. Минимальная цена - free)
>>52884
>>52940
Промис - контейнер.
То, что внутри - элемент, очевидно же.
Как я уже написал выше - смысл в инверсии управления.
Например, у тебя есть массив arr = [1, 2, 3] и ты хочешь удвоить каждое число с помощью функции double(x).
В императивном коде ты в цикле проходишь по массиву, вызываешь для каждого функцию double и добавляешь в новый массив. В функциональном - arr.map(double).
Map - это функтор.
В случае промиса - см. коммент выше и >>52993
В общем случае - вместо того, чтобы вызывать a.doSomethig ты делаешь aMonad.map(doSomething). Подразумевается, что монада (с упакованным в неё a) у тебя откуда-то появилась.
map - это then.
На выходе map будет новая монада - содержащая результат применения функции к a.
Секс в том, что если контейнер пустой, то ничего не произойдёт, функция doSomething вызвана не будет. И будет возвращена _пустая_ монада. Если есть вызовы дальше по цепочке - они тоже отработают в холостую.
Как-то так.
Разумеется, это простейшее применение этого паттерна. Более хитрые - см. в текстах по ссылкам ниже и в гугле.
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
https://dev.to/joelnet/functional-javascript---functors-monads-and-promises-1pol
И, конечно же:
https://leanpub.com/javascriptallongesix/read
(pdf можно взять там же, по ссылке buy. Минимальная цена - free)
>Map - это функтор
>map - это then
сколько ты тут наворотил
нет чтобы просто сказать "использование функции как аргумента"
теперь внимание вопрос, а если мы обойдемся без лямбд, т.е. без then и без коллбэков
если мы будем тупо писать императивный код с await
const res = await myPromise;
и далее пошли юзать res
можно даже в императивном цикле сделать десять запросов подряд лол
let res
for (let i = 0; i < 10; i++) {
res = await myPromise;
//еще что-нибудь с ним делаем
}
ну и где твоя монада с эндофункторами теперь
>а, промис - это способ превратить вложенные коллбеки в плоскую цепочку. И асинхронный код становится очень похожим на синхронный, только в каждой строке добавляются скобки и then.
Извини, братишка, но твой ответ ни о чем не говорит. Ты написал в стиле что вижу, то пою. Все это и так написано в любом мануале про промисы по первому запросу в гугле.
>Собственно, это и есть монадический паттерн, если угодно.
А, ну теперь все понятно стало
Вообще, использовать блокирующие вызовы с фьючерами - это верх ебанизма.
Когда это вынужденная мера - то хуй с ним.
Но, когда это на регулярной основе - это идиотизм, т.к. все профиты фьючеров сливаются в унитаз.
Насчет инверсии управления понял, спасибо
Сам ты блокирующий. Это полноценный асинхронный код. Пока ты в одной функции ждёшь результат, ты можешь исполнять другую.
Собственно у тебя только две возможности, когда нужен результат какой-то функции. Или вызвать коллбэк, в котором результат будет обрабатываться, или ждать результат и обрабатывать дальше.
Если тебе нужен один результат один раз, то второй подход удобнее почти всегда.
не более блокирующий чем then или коллбэк
только то что выносится в лямбду тут прямо той же функции где был асинхронный вызов пишется
это просто другой стиль записи
>у тебя только две возможности
Только реализовать их можно очень по-разному.
Про FRP почитай, например.
У маннинга есть книжка, где подробно разжёвывают.
Или можно Rx - там в несколько упрощённом виде.
И, если хочешь, можешь думать, что then - это такой колбек.
>получить рандом в С
Джон фон Нейман, придумавший клеточные автоматы, которые мы тут пытаемся оптимизировать, как-то изрек: "Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin." ("Кто пытается арифметическими методами генерировать случайные числа, тот, конечно, живет во грехе.")
Насколько я понял, wasm-компилятор (https://wasdk.github.io/WasmFiddle/) не позволяет подключать библиотечные файлы (#include). Без них, на чистом C, не получить источник энтропии и не сгенерировать случайное число.
Можно наверн попробовать рандом где-нить снаружи генерировать, передавать его внутрь wasm-функции и там делать че-нить типа пикрелейтеда.
>>52962
>30сек в лисе, за 90 в хроме, и за 20 в нативном кланге
У меня все вычисления в лисе считаются. Вот эти скрины >>48947 оттуда. В лисе есть удобная кнопочка "Остановить это", которую в любой момент (перед сном, например) можно нажать, сохранить результаты вычислений и перезапустить скрипт (чтобы лечь дрыхнуть, а оно себе всю ночь дальше считает). Гугл Хром наглухо виснет, без возможности что-то сделать. Приходится тушить его через диспетчер задач.
Щито за кланг - я хз. Гуглил тут wasm и, насколько я понял, он весь свой код исполняет на виртуальной машине. Код, выполняющийся на виртуальной машине, не может работать быстрее машинного кода. Стало быть, лучший вариант - на ссях все написать.
>const int RAND_MID = RAND_MAX / 2;
>int8_t Math_random() {
> return rand() >= RAND_MID;
>}
Не лучше, вместо операции деления, сделать rand()&1, чтобы получить последний бит случайного числа?
>Щито за кланг - я хз.
Ну приехали ёбабоба. Есть gcc и clang, вижак мы игнорируем, он не пацанский и вобще не так крут
gcc 18 сек
clang 24 сек
wasm 30 сек
Есть ли смысл переписывать всё на Си - смотри сам.
+ надо иметь ввиду, что компиляторы у меня старые, бенчить я не умею, так что оно может и побыстрее быть irl. А опыта с wasm у меня вообще целое утро. Так что...
>Не лучше, вместо операции деления, сделать rand()&1, чтобы получить последний бит случайного числа?
Что первое в голову пришло, то и написал. По перфомансу разницы нет.
>js это компилируемый язык, потому что перед выполнением он компилируется в понятный движку вид
Вы что блять мне посоветовали?
А вот если бы он компилировался в непонятный движку вид, тогда бы он был некомпилируемый.
И что не так? Какой нибудь v8 (на котором хром, nodejs и еще куча всего работает) компилирует js
> but despite the fact that JavaScript falls under the general category of "dynamic" or "interpreted" languages, it is in fact a compiled language. It is not compiled well in advance, as are many traditionally-compiled languages, nor are the results of compilation portable among various distributed systems.
>But, nevertheless, the JavaScript engine performs many of the same steps, albeit in more sophisticated ways than we may commonly be aware, of any traditional language-compiler.
А как мне ещё эту ахинею понимать? Так любой язык програмирования можно компилируемым назвать. Такими темпами можно .doc файл с прон-историями назвать компилируемым языком програмирования, а хули, он ведь тоже перед самым запуском парсится и токенизируется.
V8’s Ignition bytecode compiler takes the abstract syntax tree (AST) produced by the parser as input and produces a stream of bytecode (BytecodeArray) along with associated meta-data which enables the Ignition interpreter to execute the JavaScript source.
https://v8.dev/blog/background-compilation
Скомпилировал код >>52962.
Закомментировал только вывод элемента массива, чтобы консоль на засиралась. Получил 86 секунд. Че-т у меня JS в два раза быстрее работает. И эт не учитывая, что в JS-коде у меня там еще внутре (на каждой итерации цикла n) монструозная функция "countf", которая повторно весь массив прочесывает и считает сумму. И в подвале функции test еще и запись-перезапись в local storage.
test.exe: http://www.girlshare.ro/3769770911.5
15 получилось. Ладно, завтрева буду всю хуиту переписывать.
С новым годом.
название книги верно (:
Проблемы жс - не в типизации.
TypeScript, кстати, лютая хуета, вреда от него больше чем пользы.
Есть Flow - от него толку больше.
Если выбирать между шарпом и жс - то, выбор однозначен - жс.
Шарп - проприетарная хуета без будущего. От создателей дельфи, лол.
Почему хуйня без будущего?
Ну и какой вред от Тайпскрипта, довен?
Пост из прошлого, теперь всё по-другому
rth
Ленинград
Это копия, сохраненная 20 сентября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.