Это копия, сохраненная 24 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/vladimir37/js-thread/blob/master/Wiki/tools.md
Инструмент для визуализации и экспериментов со связями между объектами в JavaScript:
http://www.objectplayground.com/
Конфа /pr/ в Slack:
https://slack-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
Добавь в книги по Node.js эти
Веб-разработка с применением Node и Express. Полноценное использование стека JavaScript https://www.ozon.ru/context/detail/id/137410108/
Изучаем Node.js https://www.ozon.ru/context/detail/id/22256395/
>>1099099
- ОГРОМНОЕ ТЕБЕ СПАСИБО, ТЫ ЛУЧШЕ ВСЕХ ДЕГЕНЕРАТОВ В /WEB ВМЕСТЕ ВЗЯТЫХ И ПОЛОВИНЫ МЕСТНЫХ, Я ПИШУ КАПСОМ ПОТОМУ ЧТО МОЯ БЛАГОДАРНОСТЬ РАВНА РАЗМЕРУ ЭТОГО ШРИФТА УМНЕЖУННОЙ НА 999999999999999999!!!!!!!!!!!
Все заработало, и да, все дело в размере картинки! И ДЖ работает, я тебе потом покажу что я сделаю с этим! Скоро, если все выйдет!
Блять, куда я тебе сука воткну реакт редакс в вордпресс и че там вообще знать очередной гвно жс фреймворк напоодобие ангуляра по отрисовке DOM.
ненавижу просто ненавижу. что мне теперь гостевуху на реакт дрисне делать!!
О, есть еще вопрос: что это и зачем:
div.addEventListener("mousemove", function (event) {
cursor.style.transform = `translate(${event.clientX + 2}px, ${event.clientY + 2}px)`;
});
cursor.addEventListener("mousemove", function (event) {
cursor.style.transform = `translate(${event.clientX + 2}px, ${event.clientY + 2}px)`;
})
Очевидно же. На JS он тебе не курсор поменял, а лишь симулировал поведение курсора. В реальности, у тебя там просто катается картинка за позицией курсора. С тем же успехом вместо курсора можно видос встаить, холст, и даже Аллаха. А этот код и отвечает, за то, чтобы картинка перемещалась на координаты курсора.
Это я понял, а что конкретный функции делают, зачем он что-то сдвигает на 2 пикселя? Я так понял, он это с Джиквери писал, я эту штуку еще не учил.
В этом коде нет jquery, это чистый js.
Сдвигает картинку, что не понятного. Сдвигает на позицию где находится курсор. 2px какая-та погрешность выверенная опытным путем, видимо чтобы не перекрывало. убери да проверь.
Там для даунов сделали установку облегчённую. Вообще без проблем встаёт.
Планирую сделать для своего обучения браузерную пошаговую онлайн игру человек на 30. JS+HTML. Она должна быть, понятное дело, одностраничным приложением. Не могу определиться, на чём писать сервер? Посоветуйте, где меньше всего ебли. Нужно ли использовать серверный рендеринг?
Насчет клиента, пакеты слать сокет ио или как?
Блять, вы заебали. В прошлым треде обоссали ангуляр и топили за реакт, теперь реакт не угодил. Мы не разбираемся во фронте и поэтому нам нужна помощь, и будет неплохо если нам пояснят за выбор фреймворка.
Vue же есть. Модно-молодёжно.
Реакт норм, не слушай школьников.
Ясен хуй реакт. Но вообще нахуй вам фронтер. В вуе несложно разобраться.
Естественно мое мнение нехуя не стоит ведь я не знаю ни одного фреймворка.
Джейкверислесарь порвался.
Приятно такое с утра прочитать. Надеюсь, у тебя всё получится и таки тут покажешь.
Как я и писал, на ЖС делать кастомное это сомнительная идея. У меня там +2px и body{overflow:hidden;} позволяют визуально спрятать многие косяки для примера по-быстрому. А если на совесть, то "по-быстрому" делать нельзя. Пришлось бы каждый подводный камешек отдельно обрабатывать. Я бы до сих пор тебе ответ писал.
export declare type MenuPositionX = 'before' | 'after';
-------
xPosition: MenuPositionX;
Тут как раз тот случай, когда не на совесть. а чисто по приколу чтоб быстро заработало - это упражнение для меня в перерывах между главами лернджаваскрипт. Может. еще день-два, потому что пришлось кое-что переделывать.
>написать классический хтмл, написать к нему цсс, а потом разбивать на компоненты
Это Angular.
React/redux никуда втыкать не надо, он работает сам по себе и взаимодействует с твоим бэкендом посредством ajax запросов, поэтому на бэкенде ты пилишь чисто api. Впрочем, если начальство или клиент требует воткнуть реакт именно в вп, то можешь смело в открытую ставить под сомнение их проджект менеджмент либо hr-политику и спросить зачем они пытаются приделать кабину пилота истребителя на москвич.
Играюсь тут с браузерами. Написал js скрипт-приветствие в форму, оно работает, лол. Это имеется в виду, когда говорится, что можно так украсть кукисы и прочие данные? Как можно запретить вводить скрипт в эштиэмэль формы?
Google xss
Чето ты мудришь, братишка. Все проще.
Просто пишешь JSX(сетя своим элементам правильный className) в компоненте и импортишь в нем свой css (советую накатить препроцессор, scss например, с ним еще и изоляцию стилей намного удобнее делать в реакте).
>scss
говно и нинужен, все что нужно(переменные, наследие) уже есть в нативе, если ты невротик и любишь собачку можешь пользовать лес
С совершенно уебщиным синтаксисом, нет циклов, и пишеться меньше кода. Стандарт цсс нинужен(если у вас более менее объемны проект).
Есть стилус от божественного светилы Холовуйчика.
>уебщиным синтаксисом
поехавший
>нет циклов
инфа сотка
>пишеться
нахуя я вообще отвечаю
>Стандарт цсс
вобрал в себя все самое лучшее и нужное, оставив сосать хуи недонадстроек хипсторам. та же сасня нагнулась и вернула скобочки с запятыми, ибо нехуй
Styled components, css modules, JSS.
Удобнее всего были css modules.
JSS кажется избыточным, но может помочь в случаях, когда нужно как-то реалтаймово комбинить куски стилей
Доброго времени суток многоуважаемые господа. Прошу прощения за последующую сумбурность письма, но в в деле программирования я ничего не понимаю. Собственно, излагаю:
Занимаюсь наглой рекламой путём добавления в друзья с нескольких аккаунтов к участникам групп конкурентов (продажи в моём городе). Чтобы не добавлять два раза одного человека с разных фейков, я заношу его страницу в закладки браузера.
ВНИМАНИЕ ВОПРОС: возможно ли сделать так, чтобы те, кого я добавил в закладки браузера не появлялись в списках участников групп? Ибо задолбался открывать одни те же страницы.
Браузер хром.
проще записывать имена текстом(типа виджета переводчика в лисе, попапится кнопка), и потом делать поиск из базы и бгкалар-ейлов иф мач
Вопрос касается Date.
Я так понял, это говнецо, берет текущую тайм зону, вычисляет UTC время поней, и сохраняет UTC время. Но не сохраняет временную зону.
И когда я вызываю тип ту стринг, эта сука, берет текущую временную зону, и преобразует сохраненное UTC время в нее. Это вообще законно?
Вопрос - какого хуя?
И что мне делать, чтобы отображать дату не по той зоне, что у меня, а по той в которой эта дата была получена?
Хорошо, нужно сохранять временную зону отдельно руками, а дальше как?
Как мне время то сдвинуть нахуй?
JS объект Date был переписан с такового у JAVA.
example.onclick = function() {
var audio = new Audio();
audio.src = 'click.mp3';
audio.autoplay = true;
}
Файл со звуком как-то кешируется хотя бы на время существования страницы или каждый раз заново загружается?
dateobj.toLocaleString('en-RU', {timeZone: 'Asia/Tokyo'})
Но в фф только с марта сего года обещали сделать (не пробовал, не знаю), так что есть http://momentjs.com/timezone
>не по той зоне, что у меня, а по той в которой эта дата была получена?
А как они могут различаться-то? В JSON'е же всё текстом приходит, там пиши чего хочешь.
Ну в браузере есть кэш, но я не знаю как он работает. Сколько файл весит? Если много, то ждать никто не будет, закроют страницу и всё.
Не, там длина меньше секунды, ну или около того. В общем, я думаю, все будет ок. Еще чуть-чуть :)
Только JS? Github pages заюзай. Или Heroku.
https://www.dropbox.com/s/yawhrtpul21livo/Feeding of The Fat.7z?dl=0
Там, конечно, ничего особенного, просто забавная штучка, но я хотел поделиться, потому что анон мне помог с курсором и я там менял курсор, хоть и без джиэса, а еще я полный нуб и для меня это ого-го достижение.
Поклацайте, посмотрите на реакцию чудика)
var unboundSlice = Array.prototype.slice;
var slice = Function.prototype.call.bind(unboundSlice);
Аноны, объясните пожалуиста как это работает, я не понимаю как тут два метода одновременно
>Array.prototype.slice.call
Слайс типа как вырезает аргументы, но через кол ему же не сообщается ничего. А под катом с этим кол байнд вообще пиздец...
Я кстати пока не начал реакт и редукс поэтому не понимаю зачем они вообще нужны, всё ведь и так хорошо работает. Пояснит кто?
проиграл
Знаешь, как это со стороны читается?
"блять как заебали со своим А ВИ ТАКИ ПРОБОВАЛИ НОРМАЛЬНУЮ ЕДУ А НЕ ГОВНО?"
Срсли, я бы не кукарекал про говно жс фреймворки, если бы работал с вордпрессом. Это же уже всё нахуй, выноси.
Ты скозал?
ебать какой же ты умный сука
Про Даннинга-Крюгера слышал? Каковы твои критерии слова "хорошо" перед словом "работает"?
Жигуль тоже отличная машина если в жизни ничего лучше не пробовал.
Люди-то может и живут, но вопрос в создании js-объекта. Ты не можешь у себя получить чужой объект, созданный кем-то далеко от тебя. Единственный способ — передать JSON'ом данные и реконструировать на своей стороне из этих данных (т.е. UTC timestamp'а в данном случае).
Не думаю, что объект даты где-то хранит данные о текущей таймзоне, и лишь при попытке отобразить или как-то использовать высчитывает нужную исходя из текущих времени и таймзоны хоста. Могу ошибаться, лень искать код имплементаций.
Регистрацию требует.
Лучше использовать открытую помойку
https://send.firefox.com/
Но вряд ли кто-то что-то будет загружать, у меня брат умер от этой хуйни.
Лучше использовать онлайн редакторы.
для простого
https://codepen.io/pen
https://repl.it/languages/nodejs
для сложного, можно загружать свои файлы
https://thimble.mozilla.org/ru
Чего пиздишь? Не требует, а предлагает. Скачал без регистрации.
проиграл с этого поделия хохла-наркомана
const { BlahIdent } = require("mymodule");
нафига в фигурные скобки брать? И пните в направление доков, где такие штуки расписаны.
Вот и научишься.
Нужен для управления состоянием. А как известно состояние самое большее зло в программировании.
Codepen.io попробуй, или repl.it, как советовали выше.
Анон, извини, но там ничего не выйдет. Я не могу туда загрузить ресурсы, по крайней мере бесплатно, только подключить ссылки, но мне некуда в онлайне выкладывать их. Так что можешь рискнуть с архивчиком, ну или просто забей, там ничего особенного.
Действительно. У меня просто рефлекс на попапы.
>>1100876
Можешь не заморачиваться. Просто на будущее.
Проиграл с "детальнише про хлебало".
Можно не создавать новый объект Аудио по каждому клику, а подключить в ХТМЛ, потом вызывать play().
>>1100889
В левом верхнем углу значок файла, по клику по нему "загрузить файл", вроде работает.
>>1100877
В этом случае require возвращает объект, деструктуризация берёт из него только свойство BlahIdent.
https://learn.javascript.ru/destructuring
Ты читать умеешь? Codepen.io, repl.it.
>"загрузить файл"
Они имеют в виду, что я сохраню себе на комп файл из их сервера, а не наоборот. Ну да ладно.
Проблема у них тут с переводом, согласен.
Там можно сразу несколько файлов в папке выбирать, если что.
Ого! Даже картинку вышло подгрузить, спасибо! Я так вижу, вся эта штука очень полезная, буду в ней разбираться.
оке, няш смари я тут уже почитал про память, ща я еще парсинг изучу и заибашу тебе аддончик за полтора рубля кароч по рукам, оке?
> var unboundSlice = Array.prototype.slice
оторванный от массива метод slice, который внутри полагается на this.
> var slice = Function.prototype.call.bind(unboundSlice)
Вариант slice, который принимает this первым аргументом (см Function.prototype.call)
>function drawCanvas() {
> var canvas = document.getElementById('test');
> canvas.width = window.innerWidth;
> canvas.height = window.innerHeight;
> var dtx = canvas.getContext('2d');
> var img = new Image();
> img.onload = function() {
> dtx.drawImage(img, 0, 0, canvas.width, >canvas.height);
> };
> img.src= 'img/bgimage.jpg';
> save();
>
> function BLIAD(){ (меня надо вызвать)
> тут еба алгоритм;
> }
>}
Функция drawCanvas вызывается onload, функция BLIAD в произвольный момент времени по клику.
Помогите пожалуйста!
В общем, есть строка. С помощью JSONparse формируются объекты. И в итоге получается что-то типа str.ex1.x
У меня ощущение что такого не может быть (получается, что x это "подсвойство" свойства ex1 объекта str), однако работает, хрен с ним.
Проблема вот в чём. Мне нужно последовательно перебрать свойства объекта str (там еще ex2,ex3,ex4...), и извлечь x из каждого. Это делается через for (key in obj). Таким образом можно получить свойства (т.е. ex1), но как можно получить x?
Ну, эм, во-первых, определи свою функцию вне drawCanvas'а (нахуя оно там вообще?), а во-вторых, напиши BLIAD() в теле функции-обработчика клика мыши для, собственно, вызова. В чём твоя проблема-то?
function extractXs (obj) {
var arr = [];
for (var key in obj) {
arr.push( obj[key].x );
}
return arr;
}
Получишь массив с иксами, если я правильно понял твою проблему.
Да, спасибо большое
Какое еще подствойство. obj[key] овзвращает объект, у которого запрашивают свойство x. Это совершенно два разных объекта.
Ньюкек, недавно прошёл курс джаваскрипта на кодакадеми(учу языки для себя и для автоматизации своих дел).
Пока гуглил про парсинг, заметил node.js. Это обязательно для парсинга, или можно с костылями в жопе и без доп библиотек(у того же ноде.жс сразу заметил вкусный request, который может очень понадобиться)?
Сразу ебошь на Nightmare или обмажься подвязками к Хрому через девтулз протокол.
А вообще, вот: https://github.com/dhamaniasad/HeadlessBrowsers
Похоже, что он только начинает и я решил не выёбываться.
>>1101164
[] и . это такие же операторы, которые возвращают какое-то значение.
Как 2 + 2 возвращает (позволяет себя заменить на) 4, так и {"x": 4}["x"] === 4 всегда.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Property_Accessors
У тебя в объекте содержится объект. Это не подсвойство, а две операции идущие подряд. Как в (2 + 4 - 5) плюс даст 6, потом минус даст 1, в итоге 1.
Так и str["ex1"].x
сначала str["ex1"] вернёт объект
потом ex1.x уже вернёт значение
function extractXs (obj) {
var arr = [];
var lookupKey = "x";
for (var key in obj) {
var innerObject = obj[key];
var wantedValue = innerObject[lookupKey];
arr.push( wantedValue );
}
return arr;
}
>Похоже, что он только начинает
В этом и соль. Надо показывать как правильно делать, а не как неправильно.
var по уму должен быть депрекейт.
>по уму должен быть депрекейт
только не за пределами фигурных, выглядит по уебански и смысла не несет
У меня есть сервак с Ubuntu 16.04, на котором папка с npm и Gulp лежит в /var/www/engine/, но я хочу перекинуть её, например, в папку /var/www/dev/. Я могу просто скопировать содержимое папки engine в папку dev?
Node.js среда исполнения Javascript. Еще там есть библиотеки для работы с файловой системой и тому подобное. Без ноды js можно запускать только в браузере. Есть еще Electron, среда для десктопных программ.
>Без ноды js можно запускать только в браузере.
Ну, учитывая мои задачи, я проходил курс только ради гугл скриптов для работы с гугл таблицами.
Проблема в том, что функция BLIAD тоже работает с канвасом и чтобы она что-нибудь делала с канвасом, сначала в ней опять надо создать объект канваса, впиздючить туда картинку, снова ее отрендорить и все остальное, что есть в функции drawCanvas. То есть по сути скопировать ее полностью, а это пиздец рак какой-то.
Так-то оно работало, если две независимые функции сделать.
из метода на массивах сделали standalone функцию
че?
любое var x в глобальном скоупе это global.x в отличии от let x в том же глобальном скоупе
>функция BLIAD тоже работает с канвасом
Так передай туда переменную с канвасом при вызове. И/или картинкой или что там тебе ещё нцжно. Или как глобальную её определи, чтобы обеим функциям была доступна.
Если у тебя твоя функция совсем никак не может работать, не имея всего предшествующего в зоне видимости (что было до этого в drawCanvas'е), то, быть может, и не нужно их разделять на две функции?
Как сделать чтобы всегда редактирование начиналось с первого элемента, т.е. что х в первый раз назначался нулем?
Как надо работает только с четными числами.
const addSpace = function(arr, num) {
for (let i = 0; i < num; i++) {
let x = (num + i) % arr.length;
arr[x] += ' ';
}
};
Пиздец. Иди учись формировать ТЗ.
Объясни что ты хочешь? Зачем тебе let x=какая то магия. Задай себе два вопроса что я хочу сделать и нахуя это делать.
Программирование это объяснение как что то делать. Причём так понятно, что даже бездушная машина поняла. А пока даже анончики не понимают.
Задача
Принимаем огромную строку и число.
Необходимо эту строку нашинковать на множество строк размеров в принимаемое число.
Слова пополам делить нельзя. Если ширины не хватает (от того, что следующее слово не вмешается) увеличиваем количество пробелов, начиная от первого промежутка между словами.
Функция что выше, выполняет часть работа, когда уже необходимо раскидать пробелы. Количество требуемых пробелов вычислено и я пытаюсь их рассовать вот таким некрасивым способом – добавляю к элементам массива (словам) пробелы.
В конце выполнения задачи я с помощью join растравляю по одному пробелу между словами в строках и \n между строками
Уже лёг в кровать, пишу с телефона. Завтра если не смогу решить кину нормальное условие с имеющимсяя кодом
Задача
Принимаем огромную строку и число.
Необходимо эту строку нашинковать на множество строк размеров в принимаемое число.
Слова пополам делить нельзя. Если ширины не хватает (от того, что следующее слово не вмешается) увеличиваем количество пробелов, начиная от первого промежутка между словами.
Функция что выше, выполняет часть работа, когда уже необходимо раскидать пробелы. Количество требуемых пробелов вычислено и я пытаюсь их рассовать вот таким некрасивым способом – добавляю к элементам массива (словам) пробелы.
В конце выполнения задачи я с помощью join растравляю по одному пробелу между словами в строках и \n между строками
Уже лёг в кровать, пишу с телефона. Завтра если не смогу решить кину нормальное условие с имеющимсяя кодом
Аутист шоле? Сплитишь строку регуляркой по пробелам/знакам припинания, получившийся массив мапишь, если длина меньше чем нужно юзаешь padEnd. Джойнишь массив. Done
Слава богу что к концу 2017ого года обработка строк входит в стандартный пакет почти любого языка. Гугли про slice, trim, pad. Join уже знаешь, хорошо.
Скачал вот этот парсер, просто сохранив его как страницу: http://convertjson.com/json-to-html-table.htm
и теперь при вводе JSON-таблицы - выводится таблица.
Она выводится в отдельном div.
Хочу добавить к каждой строке текстовое значение "addnode="
где это сделать, всё перерыл - не могу найти, настопиздело уже... Может глянете да подскажете?
Пойду спать...
Сделал вот так короче, в html-файле:
var csv = $.csv.fromObjects(outArray,options);
arr = csv.split("\r\n");
arr.forEach(function(item, i, arr) {
if(i!==0 && item!==""){arr = "addnode="+item;}
});
csv = arr.join("\r\n");
Теперь, когда заходишь в какой-нибудь qt-кошелёк какого-нибудь альткоина, и вводишь getpeerinfo,
можно скопипастить JSON-ответ сюда, и получить список addnode для файла config.conf
>Сплитишь строку регуляркой по пробелам/знакам припинания
Так ему же по длине нужно. Плюс, как я понял, в получившейся строке, содержащей несколько слов, нужно равномерно добавить пробелов между словами, пока не дойдёт до нужной длины. Таким образом, нет гарантий, что между первыми двумя и последними двумя будет равный промежуток (например, сделать строку "я был здесь" длиной в 14 символов.)
Так что его цикла, пускай и по-умному сделанного, таки не избежать, по-моему, потому что в ЖС'овской реплейсе нельзя указать, сколько первых совпадений заменять. А ещё non-capturing group нельзя сделать, вообще регулярки в ЖС убогие, как по мне.
(Например, на питоне можно было бы легко сделать через пару регулярок сделать — https://repl.it/repls/DarkslategreySingleTuna )
А можно разрезать на слова, замерить их длину и слеплять. Если с новым словом в строке будет больше символов чем надо, значит слово не добавляем, а ебашим пробелы. Едем дальше пока до конца массива слов не дойдём.
>Если с новым словом <...> а ебашим пробелы.
И куда мы ебашим пробелы, если до лимита не хватает, скажем, 3-х символов? Очевидно, надо ещё раз обходить строку, которую только что слепляли, по-другому-то никак. И вот именно это тот анон, собственно, и пытался сделать в своём цикле.
Вы чего наехали на меня? Я вас тоже не могу понять.
Теперь все разъяснится, вот оригинальный текст задания
>Your task in this Kata is to emulate text justification in monospace font. You will be given a single-lined text and the expected justification width. The longest word will never be greater than this width.
Here are the rules:
Use spaces to fill in the gaps between words.
Each line should contain as many words as possible.
Use '\n' to separate lines.
Gap between words can't differ by more than one space.
Lines should end with a word not a space.
'\n' is not included in the length of a line.
Large gaps go first, then smaller ones: 'Lorem---ipsum---dolor--sit--amet' (3, 3, 2, 2 spaces).
Last line should not be justified, use only one space between words.
Last line should not contain '\n'
Strings with one word do not need gaps ('somelongword\n').
Example with width=30:
(тут должен быть моноширинный шрифт)
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
Vestibulum sagittis dolor
mauris, at elementum ligula
tempor eget. In quis rhoncus
nunc, at aliquet orci. Fusce
at dolor sit amet felis
suscipit tristique. Nam a
imperdiet tellus. Nulla eu
vestibulum urna. Vivamus
tincidunt suscipit enim, nec
ultrices nisi volutpat ac.
Maecenas sit amet lacinia
arcu, non dictum justo. Donec
sed quam vel risus faucibus
euismod. Suspendisse rhoncus
rhoncus felis at fermentum.
Donec lorem magna, ultricies a
nunc sit amet, blandit
fringilla nunc. In vestibulum
velit ac felis rhoncus
pellentesque. Mauris at tellus
enim. Aliquam eleifend tempus
dapibus. Pellentesque commodo,
nisi sit amet hendrerit
fringilla, ante odio porta
lacus, ut elementum justo
nulla et dolor.
Also you can always take a look at how justification works in your text editor or directly in HTML (css: text-align: justify).
Вы чего наехали на меня? Я вас тоже не могу понять.
Теперь все разъяснится, вот оригинальный текст задания
>Your task in this Kata is to emulate text justification in monospace font. You will be given a single-lined text and the expected justification width. The longest word will never be greater than this width.
Here are the rules:
Use spaces to fill in the gaps between words.
Each line should contain as many words as possible.
Use '\n' to separate lines.
Gap between words can't differ by more than one space.
Lines should end with a word not a space.
'\n' is not included in the length of a line.
Large gaps go first, then smaller ones: 'Lorem---ipsum---dolor--sit--amet' (3, 3, 2, 2 spaces).
Last line should not be justified, use only one space between words.
Last line should not contain '\n'
Strings with one word do not need gaps ('somelongword\n').
Example with width=30:
(тут должен быть моноширинный шрифт)
Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
Vestibulum sagittis dolor
mauris, at elementum ligula
tempor eget. In quis rhoncus
nunc, at aliquet orci. Fusce
at dolor sit amet felis
suscipit tristique. Nam a
imperdiet tellus. Nulla eu
vestibulum urna. Vivamus
tincidunt suscipit enim, nec
ultrices nisi volutpat ac.
Maecenas sit amet lacinia
arcu, non dictum justo. Donec
sed quam vel risus faucibus
euismod. Suspendisse rhoncus
rhoncus felis at fermentum.
Donec lorem magna, ultricies a
nunc sit amet, blandit
fringilla nunc. In vestibulum
velit ac felis rhoncus
pellentesque. Mauris at tellus
enim. Aliquam eleifend tempus
dapibus. Pellentesque commodo,
nisi sit amet hendrerit
fringilla, ante odio porta
lacus, ut elementum justo
nulla et dolor.
Also you can always take a look at how justification works in your text editor or directly in HTML (css: text-align: justify).
А вот то, что я написал вчера.
С помощью 'but' я пытался остановить обработку, когда все будет кончено.
Таки я правильно понял, что сделать надо.
Попробуй сначала расписать пошагово, что ты хочешь, чтобы твой код делал, потому что, если честно, хуй поймёшь, перемудрил бы.
Что значит этот "but"? Два раза джоин в конце, это вообще как?
Ты в addSpaces передаёшь массив букв, как я могу видеть, так что прибавлять пробелы к элементам этого массива это какая-то глупость.
Ну и да, обратись-таки к slice'ам, а то строки 26-35 это какой-то ужас.
Например, как >>1101953 сказал, только не слепляй сразу строку из слов, а массив держи, по которому потом пройдёшься, добавляя пробелы через починеный addSpaces.
анон с решением на питоне
Кто для реакта ssr использует? Я расчитывал, что у меня страница на сервере сгенерится и клиент получит тупа html, но работает все тот же клиентский рендеринг, че бля за хуйня?
Ты утонул в лишних абстракциях.
>пок
это не /б аутист, тут люди учатся и помогают друг другу, иначе в чем суть этого тредика и всего пр, м?
Фронт обрабатывает вебпак. (src -> public). Все изменения в папке src перезагружают браузер.
На сервере, прям как наши деды использую шаблонизатор с серверной логикой и отдаю клиенту уже целую html страницу (начинаю с самого простого крч).
А теперь сама проблема: Нужно сделать так, что бы после изменений в файлах-шаблонизаторах (.pug), браузер тоже перезагружался.
Пытался использовать reload плагин для expressjs, но он перезагружает браузер только тогда, когда вношу изменения в серверных файлах (app.js и прочего дерьма, которое в него импортируется).
Помогите пожалуйста.
Ты ахуел наезжать, пидр? Хуй тебе за воротник, а не помочь. Мне просто компьютера на работе хватает, ебал я в рот жопу отсиживать, я на двач захожу отдохнуть. Сижу сру, и /pr листаю.
Фига у тебя деды молодые. Деды статические файлы раздавали и верстали таблицами. А почему тебя просто ф5 нажать не устроит?
Ну так я верстаю там, нужно сразу видеть результат. Хотя если не найду решения, то смирюсь и буду жать...
Передавать AJAX-запрос на сервер, проверять время изменения последнего файла, и узнав об этом на клиенте, выполнять "reload()".
Но вообще лучше F5.
>пок
к чему ты тут устраиваешь это перекидывание калом? ты из деревни или просто тупой? пиздуй на завод, не позорь нормальных анонов
Вот хороший вариант. Но оно того не стоит, это целый маленький проект. Лучше ф5,по затратам-эффективности.
>>1102196
Я тут столкнулся с другой проблемой, которая рано или поздно ко мне придет.
После билда в продакшен, вебкап ко всей статике в названия добавит хеш, а пути в файлах-шаблонизаторах останутся прежними.
Раньше, когда я занимался только фронтендом, html файл у меня генерировал вебпак и он сам менял все пути в html файле, когда происходил билд в продакшен.
Да я вообще не понимаю как происходит реальная разработка от начала и до конца...
Во всех видео-уроках показывают слишком поверхностно, то что и самому можно понять, прочитав доки...
гугли SSE
Ребята кто хочет побыть моим ментором по react redux буду платить битками цену обсудим моя телега @reactboi
>моя телега
>2017
>телега
Здрово, что ты предоставил свой номер телефона, выписку из ЖЕКа и анализ кала для того, чтоб обмениваться сообщениями в Интернете в 2017 году. Большинство твоих сверстников совсем немного опережают тебя по развитию, но не готовы к таким подвигам. Мама говорит, что ты герой и она права. Но всё таки попытайся найти другую площадку.
>2017 год
>регистрировать сим-карты на себя
>регистрировать аккаунты в сети на сим-карты привязанные к тебе
>поучать кого-то в интернете
Шёл бы ты отсюда, петушок.
>Сидят на мейлаче
>Кукарекают о анонимности в телеграмме.
https://www.youtube.com/watch?v=8cV4ZvHXQL4
сап, аноны.
Вобщем помогите дизайнеру которого заставили верстать сайт, суть проблемы такова у меня есть div.myclass в нем вложен ul в котором есть несколько li в которых вложены а в которых вложены span(и эту структуру изменить нельзя из-за плагина который ее создает), и мне нужно в эти спаны записать их порядковый номер в таком виде 01 02 03 04 05 06 07 08 09 10 11 и тд, при этом количество элементов может меняться, с меня как обычно слезное обещание выучить наконец таки джаваскрипт и джеквери
Паттерн невозбранно спизжен с руборда.
1) Поместить скрипт в папке с sublime_text.exe
2) Сделать бекап оригинального файла sublime_text.exe
3) `node app.js`
4) ???
5) PROFIT!
Ну например напишу:
<script>
"use strict";
num = 5;
</script>
И ошибку и напишет где. Если нету, то что делать?
>Держи в курсе
Кароче насмотрелся видосов, понял что технари тоже люди и им так же не хватает визуального отклика от сухого блядского моментально интепретируемого кода
так что собрал вот подборочку на которой все четко блядь видно сука, по шагам, чо куда кто и почему, просто кайф
http://esprima.org/demo/parse.html#
http://int3.github.io/metajs/ — вот эта прям оче полезная
http://latentflip.com/loupe
>технари
>JS
LOOOOOL
>так что собрал вот подборочку на которой все четко блядь видно сука, по шагам, чо куда кто и почему
Ненужно это все js программисту.
Элементарно, зарплата не оплачивает подобных умственных усилий.
не не, ты не понял, у меня есть верстка(и верстать более-менее научился, вот только скрипты для меня геморно даются), потом в нее добавляются с помощью плагина дополнительные html-элементы и мне уже в них нужно внести изменения
>Ненужно это все
а как иначе спокойно работать?
Как я могу ездить на автомобиле, не зная принципов работы его узлов и агрегатов? А что если на трассе что то случится, да даже если в городе встрять один хуй не приятно, а если с кем то, подвести людей, такая то ответственность не только за себя, но и за пассажиров и всех участников движения или ты хочешь сказать что я аутист и все задачи уже решены копируй@вставляй ! ?
let spans = document.querySelectorAll(".myclass span");
for (let I = 0; I < spans.length; I++) {
If (I < 10)
spans.innerHTML = "0" + String(I);
else
spans.innerHTML = String(I);
}
Как анон выше сделал?
><span_01>
Тогда единственный способ, по-моему удалять кодом имеющиеся спаны и херачить свои, модифицированные
>Тогда единственный способ
переписать плагин под изменившиеся задачи блять очевидно же, проще туда строчку дописать чем сикл гонять
Да нихрена не очевидно. Я не зна что за плагин это и можно ли вообще его изменять
а кто знает?
ты ж вебмастер ебта, если какая то хуевина выдает тебе штемель, значит ты обязан с ним совладать иначе я б тебя в тот же вечер суку на мороз с макбуком в сраке
А в русском var
Что за различия ?
Это что за таблица? Как ее открыть? Тоже хочу свою регулярку сделать, я решал задачи на регулярные, но на другом языке.
она уебанская братишь, парсит после загрузки, поэтому приходится отварачиваться на опасных тяжелых сайтах
word replace гуглить расширения
>я тупая пизда и не могу отличить ul от ol
а вообще
>navigation: (default false) If set to true, it will show a navigation bar made up of small circles.
соси члены лучше тупопездная библиотечка не имеет настроичик для цифирик((((
>95%
ну ты понел кек
>современных кредитовозках
тащемта и не ломаются первыет пару лет
>копируй@вставляй
а как тогда ощутить себя кодером лол!? ты же блять мартышка ебучая, нахуй так жить
>>1102951
>А макбук новый? Я б не против был.
больной ублюдок клава говно, в новых так просто пиздец, экран маленький, подключаешь к монику начинает кулек выть как сука, в рот ебал эти игрушки гейские, а с мороза так еще и холодный блядовина люменивая, толи дело вот мелокомякие, обтянули алькантарой, красавчики, но все равно говно без задач за сотню денег
Ты как подключил скрипт? Он после твоего фулпейджа идет? Если нет, сделай после.
Я спать, завтра в школу рано вставать
>больной ублюдок
Так я продать и нормальный, 15-ого года купить.
>тащемта и не ломаются первыет пару лет
Какая разница? Суть в другом была.
это жикверьная параша, я ее палкой потыкал и бросил впизду блядь
>>1102961
>15-ого года
последний боле-мене годный, но клава хуита и экранчик маленький, хотя для блокнота может и хватит
>>1102962
лол ты что шутешь что ли, жс это год тир язык, только в нем ты можешь почувствовать себя молодым современным специалистом а на чмом байтоебом, деды байты ебали и я ебать буду writeln suka, он растет он меняется, в нем нет рамок и нет границ, он вобрал в себя самое лучше и продолжает совершенствоваться руками огромного интернационального комунити — он тупо охуенен и в этом я убеждаюсь раз за разом
Это семантически плохая верстка. За такое в 2017 гугл применяет санкции. Какие точно не знаю
>но клава хуита
А мне наоборот нравится очень.
>и экранчик маленький
любитель 17" ноутов? Иначе странная претензия. Его ж нигде, кроме столе, на котором может стоять монитор, особо и не раскроешь.
>я ее палкой потыкал
Так ты можешь ссылку на фиддл свой дашь, чтобы местные починили?
>я убеждаюсь раз за разом
Я не понял, так это ты горе-дизайнер или нет?
>год тир язык
Картиночка с доказательством-то будет?
спан строчный элемент выделения моя ебать твоя рука, я сплю отхебись, суй его куда хочешь, другое дело у тебя есть артикл секшон хуекшон, просто надо помнить об этом и юзед вайзли сука
>Картиночка с доказательством-то будет?
Вечно кому-то что-то доказывают скрипт-киддисы, а мы пишем и радуемся.
>нравится очень
ты жрешь говно бро, начни со старой классики на резинках, что б кнопки были похожи на кнопки, в идеале потом скакнуть на топры или вишневые свичи по вкусу как по мне красные самый идеал для всего, печатаешь без напряга, только на красных мне не в падлу прожимать шифт когда надо лел
>любитель 17" ноутов?
топ кек фотка старая бзв
>Я не понял, так это ты горе-дизайнер или нет?
обижаешь братишка
я ж все подробнейше пояснил, какие еще картиночки то, вот через пару лет будешь кофеварку прогать, вспомнишь анона хуле
Вот именно. Списки для меню, а меню из блоков. Спаны туда не подходят, ни технически, ни семантически.
спасибо тебе огромное, анон! все работает!
>>1102948
>я тупая пизда и не могу отличить ul от ol
к чему это? не, рили интересно
>тупопездная библиотечка не имеет настроичик для цифирик((((
именно поэтому здесь все эти танцы с бубном и затевались
>>1102972
ты явно не знаком с продакшеном, тут как бы качество, семантичность и прочие полезные и интересные штуки о которых макеев постоянно речи талкает никому не нужны
п.с. ты когда-нибудь видел лендинг из одного джепега и кучи ссылок абсолютно спозиционированых на нем?
>>1102977
спасибо, кэп, я в курсе чем отличается джеквери от js
в пекло семантику!
>ты явно не знаком с продакшеном, тут как бы качество, семантичность и прочие полезные и интересные штуки о которых макеев постоянно речи талкает никому не нужны
Если сайт для себя, то нужно думать о семантике. Потому как продвигать будет легче.
Это нихуя не простецкая задача.
Я не сильно разбирался, но получилось такое:
https://codepen.io/anon/pen/qVvxWE
Надо добавить колбек afterRender и в нём насрать циферками.
и тебе огромное спасибо, анон! чую, вы в двоем спасли чью то задницу от увольнения
Ну и что именно делаете в двух словах.
Интересно какие навыки сколько стоят.
Если тебя, дезигнера, могли уволить за то, что ты не решаешь инженерные задачи по кастомизации хуёво сделанного стороннего плагина для Жиквери, то может мы лучше не будем им мешать?
Мы то тебя из любого дерьма постараемся вытащить, но ты к карме прислушайся.
>>1103019
В двух словах пишем сценарии. Несколько часов в день, несколько дней в неделю.
300к\сек в Тайланде. Можешь открыть ГОСТ со стоимостями навыков и проверить, долбоёб.
Хуже жаваскрипта только PHP.
нормально. охуенный язык.
че, куски говна, вывели список с циферками? молодцы, развиваетесь.
if (i < 10)
spans.innerHTML = '0' + i.toString();
else
spans.innerHTML = String(i);
заменяется одной строчкой
spans.innerHTML = ("00" + i).substr(-2);
css framework для реакта? Че несешь болезный? Если тебе дизайн без лишних страданий, то посмотри вот это
https://react.semantic-ui.com
или конкретизируй, что тебе именно, а то пиздец.
>>технари
>>JS
>LOOOOOL
В JS предостаточно чистых технарей, не связанных никак с дизайном и прочим html программированием.
ES6 хорош, можно писать также лаконично как на функциональных языках. Слабая типизация конечно не очень, но в целом язык отличный.
сага приклеилась
>называет анона долбоебом
>хотя сам пишет про необходимость говноконторке с эникей ДИЗХАЙХНЕРОМ завести ИНЖИНЕАРА
розовая поня дегенерат ебучий блядь, дизайнеров как грязи, если эта что то не может, за килограмм хлеба и лапши найдут другого, пошмышленней, рыночек решает, а твои маняпредставления — нет
Говорят что сам создатель редукса советует не начинать изучать редукс и пилить без него как ни в чем не бывало. До тех пор, пока не начинаешь реально упираться в потребность в этом самом редуксе.
>старой классики на резинках, <...> на топры или вишневые свичи
Извини, я что-то нихуя не понял.
>топ кек
Тогда я не понимаю претензии "экранчик маленький" конкретно к ноуту, если есть внешний монитор который можно к чем угодно подключить.
> какие еще картиночки то
Ну, со списком языков по god/good/shit tier'ам распределённым.
>В прошлым треде обоссали ангуляр и топили за реакт, теперь реакт не угодил.
Таки правильно сделали что обоссали ангуляр. Тут просто, это... а нахуя тебе реакт в имиджборде? Для фронтенда времен первой половины 2000-х? jQuery для интерактива тебе не там не будет уже хватать?
В таком случае, номера строк в двузначные числа влезать не будут. Нахуяришь шесть if/else if'ов?
>Извини, я что-то нихуя не понял.
тебе сюда https://www.reddit.com/r/MechanicalKeyboards но если коротко топра это клава за 20 тысяч русских рублей, чери - за 10
>если есть внешний монитор
я просто куплю системник, который будет дешевле и мощнее, кодить в кафе или на диване это хуита
>списком языков
ок, есть топ тир жс и отсталое говно для ребят в растянутых свитерах и очках без оправы
>механические клавы
Не, спасибо, я с ума от шума сойду через неделю. Ну и плюс ход и расположение клавиш и всё такое, когда пробовал — совсем не понравилось (наверняка частично дело привычки, конечно), так что уж лучше говноедом останусь, спасибо. Только не надо про шум клав новый макбуков, они говно.
>я просто куплю системник
Так в чём тогда смысл указывать на якобы недостатки конкретного ноута, если тебе просто ноутбуки нинужны?
>есть топ тир жс и отсталое говно
Ну так не интересно.
>шум клав новый макбуков
они не шумят родной, они по пизде лопаются сука, ход крошечный, пластика с хуй, только когда эта ебань отколется ты хуй топкейс клееный поменяешь, просто пойдешь за новым, а этот на детали за пару рублей дай б-г продашь
>в чём тогда смысл
писи мастерпис же, это как с FOSS ^_^ не могу удержаться когда вижу чужие страдания
Приветствую, аноны.
Есть вот такой вот портабельный порт-сканнер: http://www.andlabs.org/tools/jsrecon.html
Представляет из себя портативную страницу, работающую через WebSockets и XHR в браузере.
Моя задача проверить список рандомных IP с рандомными портами и вывести доступные - в лог.
Но при каждом вызове функции генерируется отдельные результаты, которые идут в div,
при этом в div результаты только последнего сканирования.
Я сделал так:
1. у меня заходит в textarea список:
addnode=107.185.205.40
addnode=58.218.204.206:86153
addnode=148.251.53.212
addnode=13.126.44.33
addnode=173.212.207.13:15165
addnode=5.189.152.63
addnode=85.25.117.71
2. Список парсится в массив. Регулярными выражениями извлякаются IP и порты.
Первый найденный порт если не указан - объявляется дефолтным, и вставляется рядом со всеми другими IP, в которых он не указан.
Дальше, идёт через foreach сканирование, но результаты выводятся только для последнего сканирования.
На выходе по-идее должен быть список доступных нод.
Как сделать???
>>я тупая пизда и не могу отличить ul от ol
>к чему это? не, рили интересно
а мне интересно сейчас интим услуги дизайнера сколько стоят? для начальника скидка или совсем бесплатно? зп по часам? на работу приходишь к обеду наверное
>>1103175
>че, куски говна, вывели список с циферками? молодцы, развиваетесь.
ДЫА))))
>они не шумят родной
Ты странный. Я указал на один яркий недостаток для меня в механике — шум, считая при этом клаву макбука очень удобной для себя. Очевидно, было бы довольно странно упрекать механику в шуме, если бы макбуки шумели точно так же. Новые вот как раз и шумят серьёзно, и именно поэтому я его упомянул. То, что у этой клавы есть другие недостатки, я и так в курсе.
>мастерпис
master race, может, а не пис?
я подумал мак шумит лол, устрос
ну хз звук то пиздатый, вот синии они щелкают и высверливают мозги, а красные просто кайфово лязгают, ну и капсами стучат об плейт стальной можно если ты неврастеник, но ведь можно и не стучать, там 45 грам на кнопке, клавиши просто плавают под пальчиками ммм кайф
а резинки(рабердом) или топры они соответственно еще тише
>master race
блять обосрался чурк сук)
>>1103297
ой нахуй иди братишк)
Всё, решил. Там в функции scan_ports() повторно объявляется ps_open_ports=[];
который уже был объявлен вверху скрипта var ps_open_ports=[];
Ты код-то покажи, ёба. Это твой сайт или не твой? Какой ещё text area, где что парсится? Где массив создаётся, откуды ты выход берёшь?
https://rabota.ua/cv/10889107
Небось дед-то ее хрилансит на коболе по одной бабкиной пенсии в день, вот и решила не отставать.
Охуенная бабка, пример для подражания.
>Ты код-то покажи.
Код в браузере смотри.
>Это твой сайт или не твой?
Сайт не мой, и это не сайт - это страничка c JS-кодом. Её можно скачать.
>Какой ещё text area, где что парсится?
textarea у меня тут, и да, она парсится.
>Где массив создаётся.
Там же, при парсинге...
Сначала я делаю так:
var textArea = document.getElementById("addnode_list").value;
var port = document.getElementById("default_port_for_nodes").value;
потом вот так:
var first_ip = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/; //one fists founded IP
var arrayip = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g; //all IP addresses in array
var ip_port = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,7}\b/g; //ip:ports in array
var first_port = /:\d{1,5}/; //first founded port in array
и вот так:
var ips = textArea.match(arrayip); //array with all ip addresses including that where port not specified
var ips_ports = textArea.match(ip_port); //array with ip:port where port is specified
var nodes = ips.concat(ips_ports); //array with ip + array with ip:port
После уже работаю с массивом nodes, извлекая ip и port - и вызывая функцию scan_ports() c этими параметрами.
>откуды ты выход берёшь?
я вижу этот выход где-то в функции results_ps(), но как его вытащить оттуда в виде трёх параметров через setinterval - вот это понять не могу...
Если поможешь переписать всё это под рандомный IP с рандомным портом и одиночным коллбеком, с тремя параметрами - запощу здесь готовое решение своё.
Суть его такова:
На входе - список криптовалютных нод, или список, содержащий IP с указанием дефолтного порта,
а на выходе - список нод у которых открыт порт.
>Ты код-то покажи.
Код в браузере смотри.
>Это твой сайт или не твой?
Сайт не мой, и это не сайт - это страничка c JS-кодом. Её можно скачать.
>Какой ещё text area, где что парсится?
textarea у меня тут, и да, она парсится.
>Где массив создаётся.
Там же, при парсинге...
Сначала я делаю так:
var textArea = document.getElementById("addnode_list").value;
var port = document.getElementById("default_port_for_nodes").value;
потом вот так:
var first_ip = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/; //one fists founded IP
var arrayip = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g; //all IP addresses in array
var ip_port = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,7}\b/g; //ip:ports in array
var first_port = /:\d{1,5}/; //first founded port in array
и вот так:
var ips = textArea.match(arrayip); //array with all ip addresses including that where port not specified
var ips_ports = textArea.match(ip_port); //array with ip:port where port is specified
var nodes = ips.concat(ips_ports); //array with ip + array with ip:port
После уже работаю с массивом nodes, извлекая ip и port - и вызывая функцию scan_ports() c этими параметрами.
>откуды ты выход берёшь?
я вижу этот выход где-то в функции results_ps(), но как его вытащить оттуда в виде трёх параметров через setinterval - вот это понять не могу...
Если поможешь переписать всё это под рандомный IP с рандомным портом и одиночным коллбеком, с тремя параметрами - запощу здесь готовое решение своё.
Суть его такова:
На входе - список криптовалютных нод, или список, содержащий IP с указанием дефолтного порта,
а на выходе - список нод у которых открыт порт.
Я сам вообще бутстрап не люблю, поэтому в сторону бутстрапа для реакта не смотрел даже, так что если тебе нужно, гугли сам. Это довольно удобно, как мне кажется, но опять же, что тебе удобно, то и юзай.
может принять одно из указанных значений, если указано другое, будет еггог. Это называется String literal type. Подробнее https://basarat.gitbooks.io/typescript/docs/types/literal-types.html
Допустим у меня есть промис, который я хочу выполнять в бесконечном цикле до определенного условия. Я могу это запилить только через цепочку then, соответственно с каждой итерацией цепочка будет увеличиваться и будет расти память. Короче, умеет ли жс в бесконечную асинхронщину?
Ладно, спасибо.
написать бесконечный асинхронный цикл с авайтом и транслировать его, чтобы посмотреть во что развернется, ты конечно не пробовал
>Код в браузере смотри.
Свой код, который должен формировать какй-то массив результатов.
То, что я вижу на сайте, это просто сущий пиздец, таймаут на таймауте, передача туда строки, вместо функции, постоянная работа над глобальными переменными, проверка стейта сокета/запроса, вместо эвент листенера...
Короче, мне кажется, тебе нужно сделать следующее:
Предположим, что у тебя есть список нод в виде (твои \t\t\t\t читать желания никакого нет, уж извини, там уж сам подгони под свою структуру данных)
>nodes = [{ip: '1.1.1.1', start_port: 1, end_port:500}, {...}]
Далее, для каждой ноды нужно сделать (именно глобальные переменные изменяй):
ip = node.ip
start_port = node.start_port
end_port = node.end_port
scan_ports_ws() // ну или scan_ports_xhr()
let count = end_port - start_port + 1
Далее, периодически проверяй, готов ли результат. Где-нибудь предварительно объяви
function isFinished(){
if (count == (ps_open_ports.length + ps_closed_ports.length + ps_timeout_ports.length)) {
fin();
} else {
setTimeout(isFinished, 1000);
}
}
А потом, после вызова scan_ports_xx(), сделай:
setTimeout(isFinished, 1000);
Будет каждую секунду проверять, все ли порт провелись. fin это твоя фунция, которая будет что-то с результатами делать и перевызывать процесс для следующей ноды.
Решение такое себе, костыльное, но на одном уровне с "либой".
По-хорошему, я бы тебе посоветовал прочитать страничку "more details" да реализовать эту хрень самому.
>Код в браузере смотри.
Свой код, который должен формировать какй-то массив результатов.
То, что я вижу на сайте, это просто сущий пиздец, таймаут на таймауте, передача туда строки, вместо функции, постоянная работа над глобальными переменными, проверка стейта сокета/запроса, вместо эвент листенера...
Короче, мне кажется, тебе нужно сделать следующее:
Предположим, что у тебя есть список нод в виде (твои \t\t\t\t читать желания никакого нет, уж извини, там уж сам подгони под свою структуру данных)
>nodes = [{ip: '1.1.1.1', start_port: 1, end_port:500}, {...}]
Далее, для каждой ноды нужно сделать (именно глобальные переменные изменяй):
ip = node.ip
start_port = node.start_port
end_port = node.end_port
scan_ports_ws() // ну или scan_ports_xhr()
let count = end_port - start_port + 1
Далее, периодически проверяй, готов ли результат. Где-нибудь предварительно объяви
function isFinished(){
if (count == (ps_open_ports.length + ps_closed_ports.length + ps_timeout_ports.length)) {
fin();
} else {
setTimeout(isFinished, 1000);
}
}
А потом, после вызова scan_ports_xx(), сделай:
setTimeout(isFinished, 1000);
Будет каждую секунду проверять, все ли порт провелись. fin это твоя фунция, которая будет что-то с результатами делать и перевызывать процесс для следующей ноды.
Решение такое себе, костыльное, но на одном уровне с "либой".
По-хорошему, я бы тебе посоветовал прочитать страничку "more details" да реализовать эту хрень самому.
Там сложна. Нечитаемая хуйня выходит.
>Вопрос по чистому js, я не про async/await сейчас.
Это чистый ЖС, это просто сахарок над промисами в генераторах. Генераторы выступают и как приёмник, и как источник данных.
http://exploringjs.com/es6/ch_promises.html
http://exploringjs.com/es6/ch_generators.html
http://exploringjs.com/es2016-es2017/ch_async-functions.html
Раушмайера почитай, например, если MDN уже читал. У него там много закидонов и абузов описано.
Ещё у Симпсона обязательно должно быть что-то просветляющее, но не гарантирую, так как сам никак не заставлю себя прочитать:
https://github.com/getify/You-Dont-Know-JS/tree/master/async & performance
Простейшая бесконечная асинхроншина в ЖС это setTimeout для вычислений или requestAnimationFraim для графики, который каждый раз вызывает сам себя.
let timer = setTimeout(printSec, 0, 1);
function printSec (second) {
console.log(second);
timer = setTimeout(printSec, 1e3, second + 1);
}
// будет бесконечно, в стеке и куче будет только одна функция, можно остановить через 30 сек. например
setTimeout(() => clearTimeout(timer), 30e3);
ЖС оптимизирован для простеньких сценариев на страничках. Да, ты обычно просто хочешь воспользоваться результатом результата и вызываешь пару раз .then(), он оптимален для такого. Если ты начинаешь его абузить для какой-то надуманной хуйни, то это уже твои проблемы.
Скорее всего, как я передаю секунды в примере, так же можно и промисы передавать, резолвить их руками, нормально поебаться. Мне лень сейчас проверять и биться об подводные камни. Скорее всего промисы даже потеряют ссылку после перезаписи таймера и будут очищены мусорщиком. Но это будет помойка, потому что промисы отрабатывают в микротасках, а таймеры в тиках лупа, на уровень выше.
Короче, разберись с инструментами и своей архитектурой для начала. А потом либо забивай гвозди молотком, либо хуярь микроскопом и не жалуйся.
>как работают всякие транспайлеры
Делают ебучий конечный автомат на свичах и глобальных состояних
https://babeljs.io/docs/plugins/transform-regenerator/
https://ru.wikipedia.org/wiki/Конечный_автомат
Про бесконечно там while true как можешь заметить.
накатил бабель кстати, теперь дрочить старый унылый стандарт вообще нет смысла, тут же листанул посмотрел че там на выходе, вздрогнул и обратно пишешь свой няшный питонообразный свежий кодик
>let t.h
После let должен быть идентификатор, в котором не может быть точки.
Идентификатор (типа имя переменной) это нижнее подчёркивание или юникод-буква (некоторые юникод-точки помечены соответствующе) первым символом, далее буквы, цифры, подчёркивания.
Русские буквы тоже будут работать, например. Проверь, но никогда так не делай.
let анон = "лев";
console.log(анон);
https://tc39.github.io/ecma262/#sec-names-and-keywords
>функции делают то как названы
переменная конКат это противокошки или что в ней?
Давай начнём с того, что ты будешь избегать любых сокращений. Даже если ты будешь печать большим пальцем ноги (попробуй), это всё равно займёт незначительную часть всей твоей работы. Пиши полно и ясно.
В именах функций первым должен идти глагол, описание действия. Не клокПринт, а принтКлок. В русском языке допустимо "часы печатать", но мы то по-английски пишем, у них порядок слов в грамматике, а не в экспрессии.
И если на странице ещё что-то будет выполняться, твои часы не будут рабоать, так как Интервал не гарантирует, что сработает по времени.
Когда Ивент-луп делает тик, он первым делом устанавливает переменную вроде каррентТайм, потом он сравнивает таймеры со временем в этой переменной, запускает коллбеки тех, которые меньше или равны. Если кто-то впендюрит в Луп коллбек, который работает больше секунды, то твой Интервал вызовется только после этого коллбека и часы начнут отставать соответствующе.
Тебе надо вызывать часы рекурсивно по таймауту, как >>1103577 . Оно тоже не гарантирует, но подводных камней станет меньше.
Новый нуфаг вкатился. Добрый день.
Сижу джва часа ломаю голову, что за ошибка со скобкой и почему консоле лог не выдаёт на пустую страницу эту песенку.
Помогите, пожалуйста. Всё перепроверил и нифига. Лиса 56, нотепад++ кода.
Блин, уже не знаю, что делать. Мб я настолько слепой, что не вижу ошибки?
И еще странное по кодировке, подключил, а всё равно черные хуйни вместо символов.
Заранее спасибо за ответы.
Когда код прячешь в комментарий, что ошибка со скобкой пропадает, само собой.
>Свой код, который должен формировать какй-то массив результатов.
Код почти такой как и тут:
https://42k5tcpg7bhjjaze.onion.to/getpeerinfo_to_addnode/ip-list_to_addnode-list.html
Здесь из textarea извлекаются IP и IP с портами. Если порт указан - он добавляется к ip где он не указан,
если IP не указан - первый найденный порт объявляется дефолтным и добавляется ко всем другим,
ноды с другими указанными портами - также остаются в списке.
Всё это идёт в массив и выводится в виде списка addnode= в div.
Но я решил продолжить парсинг массива, вызывая последовательно сканер портов.
У меня код по нескольким файлам разбросан и недопилен ещё, поэтому не заливал его никуда.
>Но я решил продолжить парсинг массива, вызывая последовательно сканер портов.
И вопрос в том, как через эти всякие глобальные переменные - вернуть результаты сканирования при каждом последующем вызове.
Я вижу, что функция проверки доступности порта check_ps_ws()
сравнивает время, как и функция сканирования множества IP например check_ns_xhr(),
последняя даже лучше, потому что там указывается один порт,
но когда они scan_ports() и scan_network() вызываются там объявляется снова массив результатов,
var ps_open_ports=[];
var ps_closed_ports=[];
var ps_timeout_ports=[];
и лог
document.getElementById('log')
к тому же в лог результаты идут вызовом отдельной функции results_ps()...
Возможно поэтому глобальные переменные и не обновляются.
Мне же надо что-то типа универсальной функции для проверки порта:
function scan_ip_port(ip, port){return result array;} и всё.
потому что в списке addnode, как ты можешь видеть по ссылке выше - находится и IP и порт.
>let анон = "лев";
мммаксимум ватничества, я вообще удивлен что еще нет чисто РУССКОГО языка программирования БЛД
>это противокошки или
конкатинация же ~_~
>избегать любых сокращений
ну эт тупо же, представь у тебя портанка на 20 знаков и ты ее будешь подпихивать дальше по коду во все функции, и читать заибешься и понимать труднее, лучше один раз сразу разобраться че это, зато потом понятно
>Не клокПринт, а принтКлок
тоже тупо сделоли, я смотрю на горб и понимаю чье это, смотрю в лево и понимюа что это, что легче глазами выцепить горб или хуню слева?
ну а про колбеки я знаю анон, сайты с визуализацией это очень наглядно мне показали, но да это часики и никаких ивентов больше нет, колорпикер вроде без колбеков, но я учту на будущее энивей санкс
сниси ишацкий уебанский нотпад
>я вообще удивлен что еще нет чисто РУССКОГО языка программирования БЛД
Ты слишком юн, коли так считаешь.
>fin это твоя фунция, которая будет что-то с результатами делать и перевызывать процесс для следующей ноды.
Смотри, аноним!
У меня есть три результата там, которые идут в лог. Это ps_open_ports, ps_closed_ports и ps_timeout_ports.
Я хотел бы хотел после объявления массива
var array_results = [];
вернуть их из функции fin() в виде массива - вот так:
array_results = [ps_open_ports[0], ps_closed_ports[0], ps_timeout_ports[0]];
//console.log(array_results); //их видно внутри функции fin();
return array_results;
Но...
setTimeout(isFinished, 1000); не возвращает значения, окромя каких-то цифр.
Поэтому я вставил повыше вот такую функцию:
function sleepFor( sleepDuration ){
var now = new Date().getTime();
while(new Date().getTime() < now + sleepDuration){ // do nothing
}
}
она работает вот так:
function myFunction() { //после sleepfor - обновлю массив
myArr = [1,1,1];
}
var myArr = [];
console.log("до setTimeout "+myArr); //ничего
setTimeout(isFinished, 1000);
console.log("после setTimeout "+myArr); //ничего
var myArr = [];
console.log("до sleepfor: "myArr); //ничего
sleepFor(1000);
myFunction();
console.log("после sleepfor"+myArr);//1,1,1 - массив поменялся.
Но всё-равно из функции fin() массив array_results как глобальная переменная - не обновляется даже с использованием sleepFor.
Если засунуть array_results = [1,1,1]; рядом возле fin(); внутри функции isFinished()
и вызывать isFinished после sleepFor - массив array_results всё-равно не обновляется.
Это видимо потому, что внутри функции isFinished она вызывает сама себя при помощи setTimeout, который не обновляет этот грёбанный массив.
И вообще, функция sleepFor , хоть позволяет другим функциям возвращать значения за пределы их,
но от неё виснет вкладка, пока весь скрипт не завершится.
Поэтому, как вернуть результаты сканирования - понять до сих пор не могу. На ум приходит спарсить div как-то через innerHTML.value,
но это надо делать для каждого элемента массива, после каждого конкретного вызова функции и не факт что получится ещё...
>fin это твоя фунция, которая будет что-то с результатами делать и перевызывать процесс для следующей ноды.
Смотри, аноним!
У меня есть три результата там, которые идут в лог. Это ps_open_ports, ps_closed_ports и ps_timeout_ports.
Я хотел бы хотел после объявления массива
var array_results = [];
вернуть их из функции fin() в виде массива - вот так:
array_results = [ps_open_ports[0], ps_closed_ports[0], ps_timeout_ports[0]];
//console.log(array_results); //их видно внутри функции fin();
return array_results;
Но...
setTimeout(isFinished, 1000); не возвращает значения, окромя каких-то цифр.
Поэтому я вставил повыше вот такую функцию:
function sleepFor( sleepDuration ){
var now = new Date().getTime();
while(new Date().getTime() < now + sleepDuration){ // do nothing
}
}
она работает вот так:
function myFunction() { //после sleepfor - обновлю массив
myArr = [1,1,1];
}
var myArr = [];
console.log("до setTimeout "+myArr); //ничего
setTimeout(isFinished, 1000);
console.log("после setTimeout "+myArr); //ничего
var myArr = [];
console.log("до sleepfor: "myArr); //ничего
sleepFor(1000);
myFunction();
console.log("после sleepfor"+myArr);//1,1,1 - массив поменялся.
Но всё-равно из функции fin() массив array_results как глобальная переменная - не обновляется даже с использованием sleepFor.
Если засунуть array_results = [1,1,1]; рядом возле fin(); внутри функции isFinished()
и вызывать isFinished после sleepFor - массив array_results всё-равно не обновляется.
Это видимо потому, что внутри функции isFinished она вызывает сама себя при помощи setTimeout, который не обновляет этот грёбанный массив.
И вообще, функция sleepFor , хоть позволяет другим функциям возвращать значения за пределы их,
но от неё виснет вкладка, пока весь скрипт не завершится.
Поэтому, как вернуть результаты сканирования - понять до сих пор не могу. На ум приходит спарсить div как-то через innerHTML.value,
но это надо делать для каждого элемента массива, после каждого конкретного вызова функции и не факт что получится ещё...
>объявляется снова массив результатов
Не совсем. Перезаписывается/обнуляется глобальная переменная, содержащая результаты. Доступ к этом массивам есть отовсюду. Там нет var (и не нужно) в коде функции scan_ports.
>Возможно поэтому глобальные переменные и не обновляются.
?? Всё должно обновляться, и всё обновляется.
Я уже сказал, как тебе нужно сделать:
1. Записать айпи/порт в глобальную переменную
2. Запустить scan_ports_ws()
3. Ждать, пока не завершится сканирование
4. Использовать результаты сканирования из трёх глобальных массивов ps_...._ports.
>как ты можешь видеть по ссылке выше
Не могу, я же законопослушиныйы гражданин и по луковке в поисках наркотиков не шляюсь.
>return result array;
Так просто ты не сделаешь, асинхронностоть жи. Нужны генераторы/промисы/await'ы. Вот как-то так, например: https://repl.it/repls/SarcasticOutgoingAfricanparadiseflycatcher
В приципе, слегка адаптировав условие на третьей строке и название массивов с портами можешь прямо этот код и попробовать применить.
А что ты вообще делаешь? А то вдруг я тут соучастником становлюсь.
>видимо потому, что внутри функции isFinished она вызывает сама себя при помощи setTimeout, который не обновляет этот грёбанный массив
Если вставить sleepfor вместо settimeout внутри isFinished - вообще всё зависает нафиг.
Поэтому как подключить твой "костыль" - ума не приложу. Костыль - не костыль, блядь.
Не пиши код с \t, ну не видишь, что ли, что не работает тут это?
>setTimeout(isFinished, 1000); не возвращает значения, окромя каких-то цифр.
Это просто "номер" таймера, по истечение которого будет вызвана функция isFinished.
>но от неё виснет вкладка, пока весь скрипт не завершится.
>Поэтому, как вернуть результаты сканирования - понять до сих пор не могу.
Тебе надо пойти почитать, что такое асинхронность (в JSе в частности) и как с этим работать. Коллбеки там, промисы и т.д. Без этого ты тут, увы, абсолютно ничего не поймёшь, потому что там весь код на этом построен. Никакой линейности (без сахарка типа await'а, как я показал выше), как ты хочешь, здесь не будет. Результаты готовы только тогда, когда вызывается fin().
имею в виду такого РУССКОГО что бы в каждой ссаной шараге после черепашки были наши, отечественные кресты со скрепами и покаянием безусловно
такой бонус носителям языка, несправедливость
на сололерне видел сопливый тред скандива, который думал что бест практис это лучшие упражнения
так вот и у меня цикли поперек встают, было бы куда пизже увидеть родные знакомые КУДА ДЛЯ ЧЕГО ПОТОМ ЕСЛИ сука
>слишком юн
пх
>3. Ждать, пока не завершится сканирование
Поправочка: ждать асинхронно, т.е. используя всё те же setTimeout'ы, которые бесконечно перезапускаются, пока некое условие завершения не будет выполнено.
Твой sleepFor блокирует всё к чертям, и браузер именно что не деает ничего, абсолютно ну, ладно, сравнивает два числа с максимальной скоростью, включая и проверку портов и вызовы функций по таймауту. Он занят твоим пустым циклом.
>Не совсем. Перезаписывается/обнуляется глобальная переменная, содержащая результаты. Доступ к этом массивам есть отовсюду. Там нет var (и не нужно) в коде функции scan_ports.
Если сделать
console.log("open ports:"+ps_open_ports+", closed ports:"+ps_closed_ports+", ps_timeout_ports: "+ps_timeout_ports);
внутри фукнции scan_ports эти значения - undefined.
Потому что из неё scan_ports_xhr() и scan_ports_ws() - вызываются через setTimeout.
А он - не возвращает var, только какое-то число похожее на время.
>?? Всё должно обновляться, и всё обновляется.
Они обновляются только внутри функций.
>Использовать результаты сканирования из трёх глобальных массивов ps_...._ports
Вот тут вот и трабла. Они выводятся как undefined.
>Не могу, я же законопослушиныйы гражданин и по луковке в поисках наркотиков не шляюсь.
Причём тут вещества, ИМХО TOR юзабельнее для серверов - просто чтоб не юзать DDNS.
>асинхронностоть жи. Нужны генераторы/промисы/await'ы. Вот как-то так, например: https://repl.it/repls/SarcasticOutgoingAfricanparadiseflycatcher
>В приципе, слегка адаптировав условие на третьей строке и название массивов с портами можешь прямо этот код и попробовать применить.
Вот тут уже вообще ничего непонятно.
>А что ты вообще делаешь? А то вдруг я тут соучастником становлюсь.
Ну смотри. Вот там в луке генерируется список нод для конфига различных альткоинов.
Список выглядит так:
addnode=IP:PORT
addnode=IP:PORT
addnode=IP:PORT
...
Этот список можно получить из пиров, если в кошельке рандомной монеты - ввести консольную команду getpeerinfo.
Но не каждый пир является доступной нодой.
Моя задача состоит в том, чтобы проверить порт-сканером - открыты ли порты дефолтные для ноды порты у пиров,
и если порты открыты - оставить пира как ноду в списке addnode.
Иначе - удалить, чтобы список не был длинный.
Ведь многие пиры в одноранговой сети, являющиеся на данный момент подключёнными к кошельку клиентами -
могут являться не только клиентами,
и не обязательно их удалять из списка addnode - просто потому что у них другой порт.
Их рандомные порты могут быть открыты в момент соединения и назначены в рандомном порядке на маршрутизаторах,
в то время как дефолтный порт - может быть проброшен во вне, и этот пир может являться полноценной нодой.
Поэтому в луке генерируется список addnode для всех найденных IP_порт , а также IP+дефолтный_для_ноды_порт.
Для чего всё это? А чтобы искать и генерировать списки годных addnode для монет у которых не работает peer exchange, например.
Вот здесь, например: https://bitnodes.earn.com/ я вижу кнопку CHECK NODE,
однако это только для биткоина (протокол наверное тоже имеет значение там),
и только одну ноду можно проверить.
А хотелось бы сразу пачку нод проверить, просто спарсив список addnode, и не просто где-то там на сайте (который может упасть),
а из-под портабельного скрипта в браузере.
Ничего криминального тут нет, а альткоинов - на самом деле очень много и все они однотипны.
Можешь посмотреть их список - тут: https://www.cryptopia.co.nz/CoinInfo
>Не совсем. Перезаписывается/обнуляется глобальная переменная, содержащая результаты. Доступ к этом массивам есть отовсюду. Там нет var (и не нужно) в коде функции scan_ports.
Если сделать
console.log("open ports:"+ps_open_ports+", closed ports:"+ps_closed_ports+", ps_timeout_ports: "+ps_timeout_ports);
внутри фукнции scan_ports эти значения - undefined.
Потому что из неё scan_ports_xhr() и scan_ports_ws() - вызываются через setTimeout.
А он - не возвращает var, только какое-то число похожее на время.
>?? Всё должно обновляться, и всё обновляется.
Они обновляются только внутри функций.
>Использовать результаты сканирования из трёх глобальных массивов ps_...._ports
Вот тут вот и трабла. Они выводятся как undefined.
>Не могу, я же законопослушиныйы гражданин и по луковке в поисках наркотиков не шляюсь.
Причём тут вещества, ИМХО TOR юзабельнее для серверов - просто чтоб не юзать DDNS.
>асинхронностоть жи. Нужны генераторы/промисы/await'ы. Вот как-то так, например: https://repl.it/repls/SarcasticOutgoingAfricanparadiseflycatcher
>В приципе, слегка адаптировав условие на третьей строке и название массивов с портами можешь прямо этот код и попробовать применить.
Вот тут уже вообще ничего непонятно.
>А что ты вообще делаешь? А то вдруг я тут соучастником становлюсь.
Ну смотри. Вот там в луке генерируется список нод для конфига различных альткоинов.
Список выглядит так:
addnode=IP:PORT
addnode=IP:PORT
addnode=IP:PORT
...
Этот список можно получить из пиров, если в кошельке рандомной монеты - ввести консольную команду getpeerinfo.
Но не каждый пир является доступной нодой.
Моя задача состоит в том, чтобы проверить порт-сканером - открыты ли порты дефолтные для ноды порты у пиров,
и если порты открыты - оставить пира как ноду в списке addnode.
Иначе - удалить, чтобы список не был длинный.
Ведь многие пиры в одноранговой сети, являющиеся на данный момент подключёнными к кошельку клиентами -
могут являться не только клиентами,
и не обязательно их удалять из списка addnode - просто потому что у них другой порт.
Их рандомные порты могут быть открыты в момент соединения и назначены в рандомном порядке на маршрутизаторах,
в то время как дефолтный порт - может быть проброшен во вне, и этот пир может являться полноценной нодой.
Поэтому в луке генерируется список addnode для всех найденных IP_порт , а также IP+дефолтный_для_ноды_порт.
Для чего всё это? А чтобы искать и генерировать списки годных addnode для монет у которых не работает peer exchange, например.
Вот здесь, например: https://bitnodes.earn.com/ я вижу кнопку CHECK NODE,
однако это только для биткоина (протокол наверное тоже имеет значение там),
и только одну ноду можно проверить.
А хотелось бы сразу пачку нод проверить, просто спарсив список addnode, и не просто где-то там на сайте (который может упасть),
а из-под портабельного скрипта в браузере.
Ничего криминального тут нет, а альткоинов - на самом деле очень много и все они однотипны.
Можешь посмотреть их список - тут: https://www.cryptopia.co.nz/CoinInfo
>Не пиши код с \t, ну не видишь, что ли, что не работает тут это?
Я просто вставляю символ табуляции, а оно заменяется на \t а потом исчезает у меня.
У тебя что не исчезает?? Обнови страницу.
>Тебе надо пойти почитать, что такое асинхронность (в JSе в частности) и как с этим работать.
>Коллбеки там, промисы и т.д. Без этого ты тут, увы, абсолютно ничего не поймёшь,
>потому что там весь код на этом построен. Никакой линейности (без сахарка типа await'а, как я показал выше),
>как ты хочешь, здесь не будет. Результаты готовы только тогда, когда вызывается fin().
Ладно, подзабью-ка я хуец на это дело, а то много непонятных слов.
Но всё-же может можно было бы как-то через JQuery какой-нибудь сделать всё это норм?
Поэтому просто оставлю здесь эту задачу в зависшем состоянии, вы же кодеры - хуле мне вам затирать тут про коллбэк из setTimeout ...
>такой бонус носителям языка
Ты не смыслишь в программировании, если так считаешь.
Естественные языки не пригодны для формального описания задач. Чем язык более язык аналитический, тем он удобнее.
Русский язык не аналитический.
Возможно, не интересовался.
>Не пиши код с \t, ну не видишь, что ли, что не работает тут это?
>Я просто вставляю символ табуляции, а оно заменяется на \t а потом исчезает у меня.
>У тебя что не исчезает?? Обнови страницу.
Почему бы не заменять символ табуляции на восемь неразрывных пробелов
почему именно на \t - оно же не отображается...
И вообще, для кодов можно было бы использовать тег <pre></pre>
разместив его в виде bb-кода c кнопкой в окне ввода.
про бонус я говорил за англичан, мы должны учить сначала их язык =культуру а уже потом язык кода сама же логика везде +- одинаковая и ее вид сути не поменяет, вон ромбики с параллелограммами раскидывать одинаково тяжело
почитал за 1с, это дно, очень обидно что суровая реальность все умудрится опошлить, но идея очень годная
>>1103792
пидорская хуита убрали лишние кнопки типа на стиле и при этом оставили ахирацкий спайс, л: логика
>Если сделать <...> внутри фукнции scan_ports
Подожди, ты нахуя scan_ports вообще трогаешь? Он же только читает данные из инпутов, обнуляет массивы результатов/окно вывода и запускает процесс. И вообще, где именно ты запускаешь свой код-то? Какую часть кода с сайта ты используешь? Может, все функции оттуда скопировал, а объявление переменных (строки 210-229) — нет?
Я именно поэтому и просил тебя несколько раз свой код показать.
>Вот тут вот и трабла. Они выводятся как undefined.
Не должны. Открой свой сайт, введи айпи-порты, запусти. Затем открой консоль в браузере и введи свой
>console.log("open ports:"+ps_open_ports+", closed ports:"+ps_closed_ports+", ps_timeout_ports: "+ps_timeout_ports);
Всё будет показано.
>Причём тут вещества
Да я пошутил же, ну чо ты.
>Ладно, подзабью-ка я хуец на это дело
Так быстро сдался. Ну ладно, как хочешь
>Но всё-же может можно было бы как-то через JQuery какой-нибудь сделать всё это норм?
Блин, ну я ж уже показывал, как всё нужно. И на коллбеках, и на промисах. Чистый жс, Никакх jquery (который так-то вообще для интерфейса). Не могу же я прям всё за тебя решить, не интересно так.
>>1103801
> мы должны учить сначала их язык
Зачем? Там 10 ключевых слов да и всё.
>Подожди, ты нахуя scan_ports вообще трогаешь?
Ну, чтобы показать тебе, что после вызова scan_ports_ws() строкой через setTimeout там,
Объявленный внутри функции массив с портами - не обновлется и не видно результатов сканирования в этом массиве - внутри этой функции scan_ports() .
>Он же только читает данные из инпутов, обнуляет массивы результатов/окно вывода и запускает процесс.
Так вот мне оттуда надо вернуть результаты сканирования и запхнуть их в глобальну переменную,
а потом уже её читать, и работать со всеми результатами.
>И вообще, где именно ты запускаешь свой код-то?
В браузере, где же ещё?.. Google Chrome. Скопировал страничку в html-файл, открыл при помощи Notepad++ и играюсь с кодом...
>Какую часть кода с сайта ты используешь?
Просто работаю с функциями scan_port(), scan_port_ws(), как ты описал,
и ещё пробовал засоывать IP, port в функцию scan_network().
>Может, все функции оттуда скопировал, а объявление переменных (строки 210-229) — нет?
Всё это есть там. Проблема в возврате результатов.
Вообще, в идеале было бы неплохо переписать всё это в виде одной функции, вроде:
var array_results = [];
function scan_ip_port(ip, port){
//долгая и нудная проверка порта
return array_results = [ip, ps_open_ports, ps_closed_ports, ps_timeout_ports];
}
//а потом уже, после всего этого - обрабатывать array_results;
//вида ["0"[192.168.0.1, 5555, 0, 1], "1"[10.0.0.2, 0, 0, 8080], "2" [100.05.00.0, 0, 80, 0]]
>Не должны.
>введи
>в браузере
>Затем
>Всё будет показано.
Вроде-бы нашёл решение, позволяющее извлечь данные из функции после вызова её через setTimeout.
Оно заключается в работе с переменной УЖЕ ПОСЛЕ всех её изменений, и вот, на мой взгляд это решение:
<script>
var secondsLeft = 10;
function deathCounter() {
if(secondsLeft>0) {
secondsLeft-- ; // note the -- here!
console.log('inside function: ' + secondsLeft); // and the log
setTimeout(deathCounter, 1000);
}
}
console.log('outside function: ' + secondsLeft);
setTimeout("deathCounter()",100);
setTimeout("console.log('outside function: ' + secondsLeft)",11000);
</script>
Но его ещё подключить надо правильно, бля...
>Да я пошутил же, ну чо ты.
чё-то было нисмишнооооо, забей.
>Так быстро сдался. Ну ладно, как хочешь
Быстро?!! Я уже три почти три дня проклацал с этой хренью!
>Блин, ну я ж уже показывал, как всё нужно. И на коллбеках, и на промисах.
Пробовал видать промисы выводя их в консоли - там такие полотна листинга, что яебу.
>на коллбеках
Тоже что-то нагуглил, попробовал, не получилось - да и удалил сразу.
>Не могу же я прям всё за тебя решить, не интересно так.
Вот же вы любите мозги впустую помахать. Ладно пойду инклюдить свою шнягу, может чё и получится.
Если получится и не забуду - то запощу тут лучок.
>Подожди, ты нахуя scan_ports вообще трогаешь?
Ну, чтобы показать тебе, что после вызова scan_ports_ws() строкой через setTimeout там,
Объявленный внутри функции массив с портами - не обновлется и не видно результатов сканирования в этом массиве - внутри этой функции scan_ports() .
>Он же только читает данные из инпутов, обнуляет массивы результатов/окно вывода и запускает процесс.
Так вот мне оттуда надо вернуть результаты сканирования и запхнуть их в глобальну переменную,
а потом уже её читать, и работать со всеми результатами.
>И вообще, где именно ты запускаешь свой код-то?
В браузере, где же ещё?.. Google Chrome. Скопировал страничку в html-файл, открыл при помощи Notepad++ и играюсь с кодом...
>Какую часть кода с сайта ты используешь?
Просто работаю с функциями scan_port(), scan_port_ws(), как ты описал,
и ещё пробовал засоывать IP, port в функцию scan_network().
>Может, все функции оттуда скопировал, а объявление переменных (строки 210-229) — нет?
Всё это есть там. Проблема в возврате результатов.
Вообще, в идеале было бы неплохо переписать всё это в виде одной функции, вроде:
var array_results = [];
function scan_ip_port(ip, port){
//долгая и нудная проверка порта
return array_results = [ip, ps_open_ports, ps_closed_ports, ps_timeout_ports];
}
//а потом уже, после всего этого - обрабатывать array_results;
//вида ["0"[192.168.0.1, 5555, 0, 1], "1"[10.0.0.2, 0, 0, 8080], "2" [100.05.00.0, 0, 80, 0]]
>Не должны.
>введи
>в браузере
>Затем
>Всё будет показано.
Вроде-бы нашёл решение, позволяющее извлечь данные из функции после вызова её через setTimeout.
Оно заключается в работе с переменной УЖЕ ПОСЛЕ всех её изменений, и вот, на мой взгляд это решение:
<script>
var secondsLeft = 10;
function deathCounter() {
if(secondsLeft>0) {
secondsLeft-- ; // note the -- here!
console.log('inside function: ' + secondsLeft); // and the log
setTimeout(deathCounter, 1000);
}
}
console.log('outside function: ' + secondsLeft);
setTimeout("deathCounter()",100);
setTimeout("console.log('outside function: ' + secondsLeft)",11000);
</script>
Но его ещё подключить надо правильно, бля...
>Да я пошутил же, ну чо ты.
чё-то было нисмишнооооо, забей.
>Так быстро сдался. Ну ладно, как хочешь
Быстро?!! Я уже три почти три дня проклацал с этой хренью!
>Блин, ну я ж уже показывал, как всё нужно. И на коллбеках, и на промисах.
Пробовал видать промисы выводя их в консоли - там такие полотна листинга, что яебу.
>на коллбеках
Тоже что-то нагуглил, попробовал, не получилось - да и удалил сразу.
>Не могу же я прям всё за тебя решить, не интересно так.
Вот же вы любите мозги впустую помахать. Ладно пойду инклюдить свою шнягу, может чё и получится.
Если получится и не забуду - то запощу тут лучок.
>Оно заключается в работе с переменной УЖЕ ПОСЛЕ всех её изменений
А что, ты изначально хотел узнать значение переменной до её изменений? Это как?
>в виде одной функции, вроде:
Без понимания промисов с async/await сахарком не перепишешь, говорю же. Потому что для старта подключения, функция, создающая вебсокет или xhr запрос, должна завершиться, чтобы браузер получил возможность, собственно, заняться этой фигнёй.
Гу, удачи, в общем.
Вообще, если у тебя есть файл (или модуль, или класс), который называется "клок", то функция в нём может называться просто "принт". Из контекста же очевидно, что она про "клок".
Если после того, как ты отбросил всё очевидное, у тебя всё равно получается 20 знаков, то, либо у тебя беда с архитектурой и слишком много контекстов приходится объяснять, либо пусть уже будет 20 знаков, чтоб не надо было разбираться, угадывать что-то.
>просто "принт". Из контекста же очевидно
А вот это л-логично, еще не дорос до модульности тащемта, однако так ведь нарваться на зарезервированное имя проще, та же Дата наверняка уже кем то занята или не?
хуеуп, назови блять функцию return и чо будет, я же не могу знать все зарезервированные имена, или могу, яж программист ебта!
Нифига не получилось с этими глобальными переменными,
но нашёл ещё такой порт-сканнер: https://defuse.ca/in-browser-port-scanning.htm
тут используется объект
var scanner = new PortScanner(ip, port);
и надо задавать какие-то коллбеки для него.
Как переделать его под проверку списка IP:port - тоже ума не приложу пока-что,
но он вызывается каждый раз отдельным объектом, и видно в консоли все данные про этот объект.
Вообще не проблема, тебе редактор сразу ругнется. Ну или рантайм. Локально можешь у себя называть как хочешь
1) В чём отличие ангулара 2 и ангулара 4?
2) Назовите пять причин, почему css препроцессоры не нужны.
3) Что вы знаете о c++ аддонах для ноды?
4) Чем ssh отличается от ssl?
5) Чем http отличается от http2?
6) Чем замыкания отличаются от размыканий?
7) Как выполнить XHR на ванильном JS?
8) Для чего в jQuery передавать window если он и так глобальный и зачем undefined?
9) Каким вы видите реакт через пять лет?
10) Как сделать неизменяемый объект?
11) Какой клиентский MVC-фреймворк посоветуете для браузерной игры?
12) Какой консольный редактор или IDE вы больше всего любите?
13) Почему Backbone не подходит для Twitter?
14) Читали ли вы исходники V8?
15) В чём преимущества и недостатки V8 перед Chakra?
И ещё что-то, уже не помню.
>9) Каким вы видите реакт через пять лет?
Это такой траллинг? Пост-ирония над мемом "кем вы видите себя через 5 лет?"
> Чем замыкания отличаются от размыканий
Ты, чисто случайно, не на электрика-монтажника собеседоваться ходил?
Не понял. Разъясни, если не трудно. код по книге обучающей забил.
>Backbone
на этой хуите вроде окромя яндекса не пишет
что за клованов ты посетил? пиздец каша из вопросов, вам шашечки или ехать блять
>я с нуля отсчитывал
[кек, )))] в 29 тоже, но чот я сомневаюсь что это зарешало, хотя ромбы, а может и вправду в этой мелочи дело
>в чём проблема
var ward = "b::r.,ea":
var cam: 99,-
wlule (Gaunt >o)(
В ТОМ ЧТО ТЫ АНОНИМНЫЙ ИШАК И ПИЗДОГЛАЗтебе уже дали ответ, не смотря на то что ты не предоставил интерактивный листинг
can:u)e.)nq(cuunc ; u
can:u)e.)nq(cuunc ; u
can:u)e.)nq("?ake
(mun:
Еблан, блять. Ливая с этого говняного треда.
Там идёт попытка загрузки картинки и не всегда корректные результаты.
Например некоторые порты, являющиеся закрытыми - порой отображаются, как открытые.
Вот туда бы websockets как-то прикрутить... Но с этим я уже врядли справлюсь...
мимо проходил
SAS1))))
Ну ему 14 лет. Всё нормально. А тебе 16 и ты уже весь крутой такой, взрослый, унижаешь его. Молодец. Так держать.
Из-за таких как ты в стране пиздец.
Что за менталитет такой свинский.
>1) В чём отличие ангулара 2 и ангулара 4?
Раньше пользователю приходили счета за свет за конпиляцию, теперь они будут приходить нам. Мы заботимся о пользователях.
>2) Назовите пять причин, почему css препроцессоры не нужны.
Не вижу смысла говорить о том, что не нужно.
>3) Что вы знаете о c++ аддонах для ноды?
Долго пишутся, быстро работают.
>4) Чем ssh отличается от ssl?
Уровнями.
>5) Чем http отличается от http2?
Возможностью жрать трафик клиента.
>6) Чем замыкания отличаются от размыканий?
Стоит пояснить про помыкания и примыкания.
>7) Как выполнить XHR на ванильном JS?
Скобочками.
>8) Для чего в jQuery передавать window если он и так глобальный и зачем undefined?
Это не резервированные ключевые слова.
>9) Каким вы видите реакт через пять лет?
Мёртвым.
>10) Как сделать неизменяемый объект?
Пойти к психологу, сказать: "Меня в детстве били родители и теперь я хочу всё контролировать, как они". Выслушать его рекомендации, забить на них, рекурсивно применить Обжект.фриз.
>11) Какой клиентский MVC-фреймворк посоветуете для браузерной игры?
СВГ + ВебГЛ
>12) Какой консольный редактор или IDE вы больше всего любите?
Вим, я не понял, как из него выйти, пришлось полюбить.
>13) Почему Backbone не подходит для Twitter?
Бекбон хочет готовые объекты, а Свиттер это лоскутное одеяло.
>14) Читали ли вы исходники V8?
Я предпочитаю Данцову.
>15) В чём преимущества и недостатки V8 перед Chakra?
Преимущества — В8 на хайпе, а Чакра от тырпрайз-инженегров. Недостатки — В8 на хайпе, а Чакра от тырпрайз-инженегров
>1) В чём отличие ангулара 2 и ангулара 4?
Раньше пользователю приходили счета за свет за конпиляцию, теперь они будут приходить нам. Мы заботимся о пользователях.
>2) Назовите пять причин, почему css препроцессоры не нужны.
Не вижу смысла говорить о том, что не нужно.
>3) Что вы знаете о c++ аддонах для ноды?
Долго пишутся, быстро работают.
>4) Чем ssh отличается от ssl?
Уровнями.
>5) Чем http отличается от http2?
Возможностью жрать трафик клиента.
>6) Чем замыкания отличаются от размыканий?
Стоит пояснить про помыкания и примыкания.
>7) Как выполнить XHR на ванильном JS?
Скобочками.
>8) Для чего в jQuery передавать window если он и так глобальный и зачем undefined?
Это не резервированные ключевые слова.
>9) Каким вы видите реакт через пять лет?
Мёртвым.
>10) Как сделать неизменяемый объект?
Пойти к психологу, сказать: "Меня в детстве били родители и теперь я хочу всё контролировать, как они". Выслушать его рекомендации, забить на них, рекурсивно применить Обжект.фриз.
>11) Какой клиентский MVC-фреймворк посоветуете для браузерной игры?
СВГ + ВебГЛ
>12) Какой консольный редактор или IDE вы больше всего любите?
Вим, я не понял, как из него выйти, пришлось полюбить.
>13) Почему Backbone не подходит для Twitter?
Бекбон хочет готовые объекты, а Свиттер это лоскутное одеяло.
>14) Читали ли вы исходники V8?
Я предпочитаю Данцову.
>15) В чём преимущества и недостатки V8 перед Chakra?
Преимущества — В8 на хайпе, а Чакра от тырпрайз-инженегров. Недостатки — В8 на хайпе, а Чакра от тырпрайз-инженегров
Пиздос.
Подпишусь на тред и буду помогать всем. Вам на зло нахуй.
Ньюфаги, у кого есть вопросы по жсу? Любые. Если смогу, помогу.
inb4: у меня тут проблема с либой, о которой знают 2 с половиной человека в мире, как её использовать?
>в стране пиздец
тому шо центр притяжения находится за океаном, чем больший ты специалист, тем глубже вовлечен в культуру и тем проще тебе переплыть и интегрироваться
родная же отчизна довольствуется оставшимся безынициативным биомусором без амбиций, со скотскими желаниями и потребностями
почитай диздок зарядья, все рыла нюйоркские, наши только говно убирали да цветы совали, потому что некому, кто может, тот уже там
так что ты не плачь дядь, уже 500 лет так было и так будет всегда
https://www.onlineocr.net/
вот этот боле-мене, остальные дно путают О с 0
https://finereaderonline.com/ru-ru/Tasks/Create
аби таки затащил шакаложипег без косяков
Суп, скриптач, поясните за xmlhttprequest.
Делаю так: jsfiddle.net/gvbL6zzd
Обычный http работает, локальные работают, а с SSL шлет нахер, даже заголовки не присылает. В чем могут быть подводные? Я только вкатываюсь.
>14) Читали ли вы исходники V8?
Конечно! Какой-то миллион строчек кода на крестах, хули не почитать то.
Дай человеку рыбу и он будет вонять рыбой, научи его рыбачить и он будет цеплять на крючек телочек
>>1104075
Веб позволяет запустить произвольный код из произвольного места. Чтоб от этого совсем не умереть, есть разные заголовки, которые должны отдать и сервер данных и сервер документа. Иначе браузер молча проигнорирует такие дырявые запросы в целях твоей безопасности.
https://ru.wikipedia.org/wiki/Межсайтовый_скриптинг
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
Естественно с шифрование на это дополнительные ограничения накладываются. Твой сертификат шифрования же не действует на сторонний сервер, который данные должен отдать.
У тебя HTTP и HTTPS на одном и том же домене?
Если HTTP на локальном, а HTTPS где-то далеко, то да, это CORS запрещает. Хотя я твой скрипт вообще запустить не смог. Сначала там в конце скобки не хватало, а потом просто ничего не происходило.
Под пивко потом Кокфорда посмотри, про то, как мы сделали хуйню для шары документов внезапно самой дырявой средой.
https://www.youtube.com/watch?v=HUXootHAnfk
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $($.attr(this, 'href')).offset().top
}, 900, 'easeOutQuart');
});
>Прокручивается нормально только если начинать >с самого верха страницы, если прокрутиться >ниже мышкой
фикс
Консоль открой и пиши туда "$($.attr(this, 'href')).offset().top"
Потом прокрути вниз страницу и снова напиши. Меняется?
Если нет, то возьми это число и поставь сюда
"scrollTop: число"
Будет кататься в одно и то же место или будет зависать от того, куда ты прокрутил?
А вообще нет, this будет то меняться.
Сделай так:
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
var scroll_to = $($.attr(this, 'href')).offset().top;
console.log('Scrolling to:' + scroll_to);
$('html, body').animate({
scrollTop: scroll_to
}, 900, 'easeOutQuart');
});
В консоль будет писать "Scrolling to:", оно одинаковое будет вне зависимости от положения прокрутки?
Зависит от того что означает "$.attr(this, 'href')"?
Что оно делает?
Я вообще в доке не вижу "$.attr" https://api.jquery.com/attr/
Тоже в спеку смотрю, аттр первым атрибутом только строку принимает, не понимают, как тут зис может сработать.
другой помогун
Ну в доках и "jquery.attr" нету.
Замени "$($.attr(this, 'href')).offset().top" на "$('#X').offset().top" (замени #X на любой элемент в центре страницы) и проверь будет ли оно к нему скроллить из любого положения?
Если да, то ты что-то напутал.
Сделай
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
var scroll_to = $('#X').offset().top;
console.log('Scrolling to:' + scroll_to);
$('html, body').animate({
scrollTop: scroll_to
}, 900, 'easeOutQuart');
});
Замени #X на своё. Всё равно 'Scrolling to:' будет меняться?
Scrolling to:635 insane-code.js:4:1
Scrolling to:114 insane-code.js:4:1
Scrolling to:407 insane-code.js:4:1
Тут может херь в том, что по докам в animate нужно первым аргументом впихивать CSS {property: value}, а тут получается функция scrollTop. Хуй пойми. Программирование ебаное.
Подожди, ты заменил #X на что-то другое и у тебя меняется? Оно не должно. Либо у тебя элемент путешествует по странице, либо ты хуйни натворил.
Покажи код, что и на что ты заменил? Может ты меня не так понял.
Покажи этот кусок кода с заменой своей.
$(document).on('click', 'a[href^="#"]', function (event) {
event.preventDefault();
var scroll_to = $('#navimain').offset().top;
console.log('Scrolling to:' + scroll_to);
$('html, body').animate({
scrollTop: scroll_to
}, 900, 'easeOutQuart');
});
#navimain - id контейнера, в который должны приехать.
setInterval(function(){
console.log('Offset: ' + $('#navimain').offset().top);
}, 100);
Начнёт флудить в консоль, крути рукой прокрутку. Меняются числа?
Если да, то у тебя где-то код меняет положение #navimain при прокрутке. Либо он CSSом меняется.
Числа меняются. Но они и должны менятся, т.к. метод offset().top возвращается кол-во пикселей от верха экрана до элемента, так же?
> одном и том же
Нет, я это по заголовкам определил. Собственно, я уже выяснил в чем проблема.
> скобку
Потерялась при копипасте.
> ничего не происходило
Собсна, респонс я передаю дальше на парсинг, все по классике. Проблема именно в объедке xmlhttprequest, а точнее, в его реализации на конечной платформе - не поддерживает TLS 1.2 и уже никогда не сможет. Лечится это только молотком.
>>1104089
>>1104109
>>1104110
Но в любом случае, спасибо, анонасы, буду кресты теперь ковырять, хуле.
Кстати эта хуйня работала вроде нормально, я правда сильно не тестил, но из различных положений скролило как надо. А почалося, когда в этот же контейнер с анкором впиздючил тег с видосом. Так что ебала может уходит корнями в ебучий браузер.
>Get the current coordinates of the first element, or set the coordinates of every element, in the set of matched elements, relative to the document.
В этом треде выполни:
setInterval(function(){
console.log('Offset: ' + $('#post-body-1104176').offset().top);
}, 100);
Не меняется. У тебя элемент скачет по странице при прокрутке.
Спасибо анон, все заработало после того, как убрал overflow-x: hidden у body. Хоть и не понял схуяле.
Вы нам не подходите. Нам нужен профессиональный Фронтенд-девелопер, а вы безынициативный верстальщик.
Каждый раз, когда что-то меняю, потом дрочу пару часов, чтобы снова заработало то, что перестало. Но мне кажется это из-за того, что опыта нихуя нет. Через годик-два на эту хуйню буду тратить раза в 2 меньше, лол. Пасиба еще раз, упиздючил с треда
он нам не подходит уже на 9 пункте, а то и раньше нам нужны профессионально выдроченные бесполые биороботы, что бы решали задачу и не думали ни о чем
>Если получится и не забуду - то запощу тут лучок.
>нашёл ещё такой порт-сканнер: https://defuse.ca/in-browser-port-scanning.htm
Вот что получилось: https://42k5tcpg7bhjjaze.onion.to/getpeerinfo_to_addnode/addnode_generator_and_port_checker.html
Но чё-то оно хреново работает. telnet показывает, что порты закрыты.
Может кто-нибудь из нормальных кодеров здесь на базе этого - что-то лучшее запилит.
>I
let concatiNation = ` ${h} ${m} ${s} `;
return concatiNation;
>II
return (`${h} ${m} ${s}`);
учитывая что переменные объявлены выше, в пределах экрана, но лично мне почему то больше нравится более говорящий вариант, а как по красоте положено?
Первый. Чтоб человек, читающий твой код, понимал по названиям переменных чё там происходит.
А могешь пояснить за section? Ща его надо использовать, а не div? Ну по моде типо.
Переменную стоит называть на один уровень абстракции выше, чем её содержимое. У тебя в переменной часы и минуты, какое для них обобщающее понятие? Это время. Если в переменной "красный", то обобщающее понятие (имя переменной) будет "цвет", нутыпонел. И не надо добавлять "стринг", потому что это очевидно из-за ёбаных кавычек в коде и к данным не имеет никакого отношения (если данные завтра станут объектом или числом, какого хуя ты должен менять их имена (понятия)?). Была такая "венгерская нотация", но быстро пришли к тому, что это глупость:
https://ru.wikipedia.org/wiki/Венгерская_нотация
Отстань ты уже от понятных только тебе в момент написания сокращений, нажми ещё несколько кнопок, это не долго.
Правильная функция должна быть атомарной, т.е. короткой и делать одно дело, возвращаемое ей значение должно быть очевидно из её имени, без дрочни с переменными.
Вооружившись этим, ты должен написать что-то типа:
function formatCurrentTime () {
const currentDate = new Date();
const hours = currentDate.getHours();
const minutes = currentDate.getMinutes();
const seconds = currentDate.getSeconds();
return `${hours} ${minutes} ${seconds}`;
}
тлдр: Там беда. Если есть время и силы, заморочься и используй, потом пригодится. Если нет, то сри дивами, Веб всё стерпит.
Пока ещё ни один браузер не сделал механизм оглавления на странице, чтоб все секционирующие элементы обрели смысл (ты можешь впиздолить h1 в h1, это будет валидно, они будут считаться равнозначными). Ни у кого даже в планах этого нет. К тому же мы имеем концепцию "Веба для авторов, а не программистов", читай "для говноляпоющих макак". Все конторы, у которых хватает ресурсов (гуглы, яндексы), будут парсить твою портянку на дивах как родную. Просто потому что у нас таких большинство.
Но секционирование уже кое-где кое-как реализуется. Например читалка скажет "навигация по (лейблРодительскойНоды)" и т.д. Плюс все поисковики, как верные гои, дрочат на всякие аксесабили, и если встретят у тебя верную разметку, то накинут тебе очков в позиции поиска.
Всё к тому же упирается в мудацкую спеку, которая использует "шуд" вместо "маст", позволяет вкладывать одно в другое и вообще боится хоть как-то косо посмотреть. Мы с тобой пока можем договориться так: если мы представим наш документ как книгу, то <артиклом> будет то, что содержит название нашей маленькой книги-документа или подразумевает в себе <h1> (явно оно указано или нет, но ты чётко сможешь этот заголовок назвать; "подразумевает" тут ключевое слово), секшенами станут те, кто подразумевает название глав или <h2>. В остальном ты всё так же можешь срать дивами, не забывая про нав, эсайд, хедеры-футеры и пр.
Если мы возьмём страницу Яндекс.маркета с телефонм, то article.h1, заголовок будет имя телефона section.h2, главы будут всякие комплексы характеристик (экран, батарея), aside будут аксессуары и т.д.
https://inclusive-components.design/#components
Можешь на вот это творчество обратить внимание. Далеко не лучший инженер и сомнительная дрысня, но заставляет погуглить и прикинуть.
const нахуя, когда тебе дали let который не выплывет в область видимости лишнюю?
>Переменную стоит называть на один уровень абстракции выше, чем её содержимое.
вот это в цитатник нахуй
>"венгерская нотация"
настолько натуральна и естесвенна что я тоже ее изобрел ^_^
>но быстро пришли к тому, что это глупость:
лел
>это не долго
это заебывает в персепктиве дальше, не смотря на автоподстановку, но я подумаю ведь конечная цель это все-таки навести порядок
>делать одно дело, возвращаемое ей значение должно быть очевидно из её имени
ну епт я сделял а анон меня зачепушил
>currentDate.getHours();
ох ебать ну и красотища, так очевидно, что даже немного стыдно
>const hours
ну я так и хотел, но тяга к минимализму таки зарешала. Кстати чому конст, там же дата меняется каждую секунду, или тут смысл именно переприсваивается ли сама переменная, типа const++ нельзя, а то что там внутри похуй
а если сайт йоба реакто-динмачиеский и подчистую на ясе типа твитора, это ж как изъебываться надо что б смочь в адекватную семантику
>или тут смысл именно переприсваивается ли сама переменная, типа const++ нельзя, а то что там внутри похуй
Да.
google chrome
Регулярками и подстроками как правило проще всего.
На Node.JS или где?
Если в нём, то вроде как jquery это умеет из коробки.
>var $ = require('jquery');
>var title = $(html).find('title').text();
>мелокобувенный пидар не знает как работает среда исполнения
гоните его, насмехайтесь над ним, бросайтесь в него камнями
>Что такое линтер
Это херовина которая сама проверяет твой код на ошибки. Например если ты объявил переменную и никогда её не использовал.
Есть jslint и jshint, один из них полное говно, но я не помню какое.
Их можно подключить к системе сборки, которая сама будет всё проверять при каждом изменении файла, например. Такая система сборки есть Grunt и ещё тонны других.
Воооот...
Благодарю за развернутый ответ!
Че машин лернинга родного на ноде нет(
это связано можешь с сингл тредом?
Этого не слушай. Сейчас вроде eslint везде по дефолту, ставь плагин на редактор и не парься с галпами и прочими скриптами
Спасибо, няш.
Есть всякая фигня:
https://tutorialzine.com/2017/04/10-machine-learning-examples-in-javascript
Вряд ли оно сильно будет развиваться. На какой-то конфе видел сравнение распознавалки лица с камеры на ЖС и на ВАСМе, в 10 раз разница в скорости, ЖС всего пару кадров в секунду выдавал.
Аноним, смотри что я нашёл: https://gist.github.com/Arahnoid/9925725
Здесь, походу дела, JavaScript открывает файл и работает с ним (читает и пишет в этот файл что-то там)...
Так вот, вопрос к вам... Можно ли сделать нечто наподобие гостевой книги, чата, или троллбокса какого-нибудь,
без всяких регистраций, серверных обвесов PHP, AJAX,
а просто на JS и возможно JQuery, с использованием различных функций HTML5 типа websockets и какого-нибудь метода вроде download?
Как я себе вижу это?
1. Размещается некий index.html с JS-кодом внутри - на сервере без PHP. Никакого AJAX там.
Пусть это будет обычный файловый сервер, в котором прямые ссылки на файлы html - интерпретируются браузером.
2. В папке /data/ рядом с ним создаётся некий файл chat_log.txt
3. Дальше идёт регулярное чтение и запись данных в файл скриптом. Может быть чтение некого зашифрованного файла admin.conf с паролем админа и правами 777.
4. Таким образом, два клиента открывшие html-файл в различных вкладках браузера - могут общаться между собой - просто печатая в форму различную хуету.
5. Админ может сделать бан посетителя по IP, если кто-то надоел, но для этого надо ввести пароль дешифрования файла админских настроек.
6. Все юзеры могли бы добавить всех юзеров в игнор, ну или что-то типа private message.
7. Chat_log мог бы быть ограничен десятком мегабайт - этого вполне достаточно для обычного текстового чата.
Подобное вообще реализуемо? Я раньше видел гостевые книги на файлах, но файлы там создавались средствами PHP,
и для юзания чата - надо было ставить полнофунциональный сервер.
Либо ты какую-то хуйню придумал, либо я ничего не понял.
Хочешь чат - бери Node.JS и на вебсокетах делай. Или на либе socket.io, там сразу поддержка комнат есть.
Вот какой-то простенький сервер в виде exe-файла https://www.codeproject.com/Articles/443660/Building-a-basic-HTML-client-server-application
но его скачать нельзя и вообще, быть может есть более годные решения...
Если тебе прям примеры нужны, гугли примеры чата на socket.io
Я хочу чтобы input формы отправлялся на сервер из которого загружена веб-страница,
а потом чтобы JS писал инфу из этого input'а в файл,
регулярно читая его и выводя результаты в div.
Никаких сокетов и соединений, просто форма либо отправлена, либо нет.
Файл с логом чата - должен быть на сервере, или же рядом с html-файлом,
так как если чат представляет из себя портабельную веб-страницу,
работающую в любом браузере - то очевидно то, что её можно сохранить и запустить у себя, локально.
Я понимаю, что данные формы, принимающиеся на сервере обрабатываются серверными программами, и языками типа PHP,
поэтому файл может изменяться уже такими скриптами,
но я полагаю, что файл мог бы создаваться и при помощи JS, ну или загружаться туда, на сервер и там обрабатываться JS-скриптом админа,
если админ запустил JS-код во вскладке своего браузера. Вот что у меня тут.
Ты чего-то не понимаешь в этом мире.
Нельзя просто так магически взять и жсом из браузера записать файл на каком-то компухтере в другой стране.
Тебе нужен веб сервер, который это делать будет.
Даже локально из браузера жс не может записать файл на диске.
Было бы охуенно еслиб ты открывал сайт с порнухой, а он тебе троян в загрузчик прописывал. Или считывал файл с твоими паролями от браузера.
Логично, анон.
Я просто, погромизд хуев, подзабыл фундаментальное - а именно то что JS исполняется на клиенте, и что это клиентский язык погромирования.
Видел бы ты моё удивление тому, почему же блять в 21-м веке,
при наличии функционала HTML5 для работы с файлами и сокетами
чаты обязательно требуют PHP или AJAX...
Но всё-же, насколько я понял, при наличие websocket's или всяких там socket.io,
JS может сделать из браузера сервер, функциями встроенными в браузер, и слушать его порты там.
Тогда, вполне возможно, моя задумка и может быть воплощена... Но я не шарю там нихуя...
Такие дела.
Он чего-то не понимает в этом мире.
Нельзя просто так магически взять и жсом из браузера записать файл на каком-то компухтере в другой стране.
Ему нужен веб сервер, который это делать будет.
Даже локально из браузера жс не может записать файл на диске.
Было бы охуенно еслиб он открывал сайт с порнухой, а он ему троян в загрузчик прописывал. Или считывал файл с его паролями от браузера.
>Было бы охуенно еслиб он открывал сайт с порнухой, а он ему троян в загрузчик прописывал. Или считывал файл с его паролями от браузера.
набери в адресной строке браузера "C:/" Но это раздел или логический диск, том.
Юзая hex-редакторы, можно было бы наверное не только просмотреть загрузчик, а также скачать файл,
но и создать файл из браузера... temp-файлы же создаются как-то браузером...
жс не может получить доступ к file:///C:/
Иногда всплывают уязвимости, после которых у людей пиздят пароли и кошельки от биткоинов, например https://habrahabr.ru/company/eset/blog/264619/
Но вообще нельзя так.
Что можно, так это показать диалоговое окно, в котором ты сам выберешь файл и дальше жс сможет его обрабатывать. Или сгенерировать файл и спросить у тебя куда его сохранить.
Но сам жс не может без проса читать всё подряд или писать.
Ну если серверные фичи типа пхо с аяксом встроены там в браузер,
и админы гугола спокойно листать мотреть порно-паки на диске, имея возможность одномоментно затерев его каким-нибудь вирусом типа PETYA.A
то их навернка можно было бы заюзать и для чатика, инициализируя функции всякие через JS, не?
Можно сделать чат чисто на клиенте + горящая база для бека.
Ну, тогда, можно было бы прописать исключение для этого файла - каким-нибудь user_script.js
или вообще запилить нечто типа p2p крипто-чата через браузер - в виде расширения, например uTox_extension.
Проприетарном.
Не-а. Нельзя. Расширения тоже не могут читать/писать локальные файлы.
Можно пилить костыль-сервер на компе, который поднимает локальный веб сервер и расширение уже общается с ним. И его надо будет устанавливать отдельно.
И это открывает охуенную дыру.
есть возможность сидеть 24\7 не могу никак вкатиться хотелосьбы получать от 300 рублей в месяц
Напиши стандартный Crud типа бложика или магазина с админкой или имиджбооды. Без фанатизма, просто чтобы работодатель видел что ты можешь в типичную архитектуру.
>Сейчас вроде
если не знаешь нахуй пишешь на умняке, а блядь?
кароче жейхинт единственный который работает(жейлинт хуита, но так же в топе), только вот подсунуть конфиг в глобале я ему так и не смог, а без него он ебет мозги за ес6
ну а ЕСлинк тупо наваливает кучу говна прямо в консольке под носом
Ну, TorChat есть же. https://habrahabr.ru/post/201696/
Там в статье написано вот что:
"Клиенты взаимодействуют напрямую через Tor, серверов в системе TorChat нет. "
И вместе с тем, тутже, ниже - написано следующее:
"Каждый пользователь имеет собственный hidden service с доменным именем вида abc.onion,
на котором он слушает порт 11009. "
Понятное дело, что слушать порт может серверная программа, привязанная к этому порту,
т. е. сервер коим по-сути hidden service TOR'a и является. А сам торчат уже как надстройка.
Поэтому юзеры и торчат там обторченные такие все, как торчки.
Не совсем понял что ты имеешь в виду и как это связано с чтением/записью локальных файлов, но в чате, что ты показал сервер поднимается скриптом на питоне https://github.com/prof7bit/TorChat/blob/torchat_py/torchat/src/tc_client.py
Который слушает порт и может писать/читать файлы, если ты про это. JS не может.
починил значит еслинт, педерасты на офпаге написали расширение конфиг файла жс вместо жсон, поменял все заработало, только толку с этой параши не больше чем от бравзера, к тому же не пашет с имбедид скриптами, такая ебань блядь, еще и без няшного интерактивчика в сточной канаве
Ага, ага, вижу какой-то tor_server...
config.get(TOR_CONFIG, "tor_server"),
config.getint(TOR_CONFIG, "tor_server_socks_port"))
А то я думал, что без сервера оно работает, и клиент слушает порт, как-бы являясь локальным сервером у себя там,
просто взаимодействуя с сетью тор на транспортном уровне без клиент-серверных изъебств:
interface = config.get("client", "listen_interface")
port = config.getint("client", "listen_port")
Но в любом случае, этот скрипт на питоне, даже если и поднимает локальный сервер, то по сути он и есть сервер - так как является серверной частью этого чата...
Ну саблайм мб да, там плагины полное говнище. Человеческие плагины, например как у vscode просто поставишь, они сразу начнут читать конфиг и подчеркивать красным именно в редакторе.
в московских университетах русский язык не учат уже?
>vscode
>кусок браузера для домохозяек
>время запуска больше чем у ОС ВИНДОУЗ ДЕСЯТЬ
ваше мнение очень важно для нас и да саблайм это не просто иде, еще и просто удобный темный блокнот для правки луашек конфигов ватников да и просто чтения ридми, и запускаться это должно как не трудно догадаться моментально
times in msec
clock self+sourced self: sourced script
clock elapsed: other lines
000.006 000.006: --- VIM STARTING ---
000.108 000.102: Allocated generic buffers
<...>
055.198 001.559: first screen update
055.200 000.002: --- VIM STARTED ---
Хули это говное ебаное не работает?
>Ньюфаги, у кого есть вопросы по жсу? Любые. Если смогу, помогу.
Анон выручай, на тэбэ вся надежда - как должна выглядеть регулярка которая бы скрывала нахуй все окраинские диалекты из моих интернетов?
Жди когда роскомнадзор введёт белые списки, тогда пару сайтов останется и все русские.
нормально, на следующих выходных потрахаитесь
>document.querySelectorAll('#fbox1, #fbox2, #fbox3').style.background = 'white';
хуле оно не работает блеадь? не цикл же его скармливать в самом то деле
for (const fbox of document.querySelectorAll('#fbox1, #fbox2, #fbox3')) {
fbox.style.background = 'white';
}
Спасибо :*
кому интересно самый ебатый снипет под жс это JS & Node snippets + поверх ES6 toolkit, но он сильно пидорский, тому шо крошечный попап пидорасит с его портянок, аж трисет
ну и еще глянул чо там у Еммета, так вот в нем и цеска и штмл есть, так что отдельно я бы ничего не ставил,
таки дела.
Заебал этот IE со своей неподдержкой хуйни вроде промисов, методов арреев и хуй ещё пойми ещё чего, с чем не справляется простой транспайл в es5. babel-polyfill всю хуйню решает, но бля, стоит ли?
Вариантов пока вижу 3:
> Послать в жопу IE и не ебаться
> Вручную всю хуйню тестить, искать косяки и ставить только нужные полифилы
> babel-polyfill и не ебаться
в каталог загружается только часть, полученная ajax'ом, а нужно релодить полностью. Как фиксить?
Сделал: отключил ajax cache
вместо унылого круга на двух точках
>ellipse(mouseX, mouseY, 80, 80);
заибаште мне кисть состоящую из.. ну я не знаю сколько там эта вебгл параша вытянет, ну пусть будет 36 точки
ну и что б пасНоиз и сайз = рандом дривен были
воот, ебаште граждане
Бамп
Однозначно стоит. Бьет никак. То есть отличие нативного метода и метода, реализованного через полифилл КРАЙНЕ МАЛА. Первое сделано в браузере на c++, второе - на js, но поверь, IE настолько говно что работать будет хуево при любом раскладе. Пользователи IE должны страдать. Им не привыкать. Так что подключай и все будет норм.
есть перехват $('.key').click(), со статическим контентом работает, если рендерю те же данные через реакт - обработки не происходит. прекрасно понимаю, что можно все то же самое сделать через обработчики реакта, но блин, все переписывать не хочется.
Как выдрать видео?
http://www.camwhoreshd.com/videos/198538/kati3kat-anal2-6c1440849861fb81/
сам спросил, сам ответил. нужно делегировать события статичным объектам DOM, в коих и генерятся данные
Спасибо огромное.
Promise.resolve(5) вроде просто возвращает промис в состоянии "выполнен", а число 5 передает в обработчик .then, которого вообще у этого промиса нет. Почему тогда в переменных появляются эти числа?
ты вообще понимаешь что Promise.resolve(5) возвращает объект, а не примитив?
type coercion?
Это пиздец тупо, но если очень надо, обработчики нужно назначать в ComponentDidUpdate/ComponentDidMount
await
>react?
>есть перехват $('.key').click(), со статическим контентом
Переписывай нахой! Реакт не должен работать с селекторами и реальным домом. Переназначай методы-обработчики в JSXe блядь, мудак! Ух поймаю такого на работе - пизды дам. Пиши блять, компоненты если их нет
брось заявку в друзья
preventEventBubbling: function(e) {
console.log('click on div - stopping propagation');
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
}
preventEventBubbling: function(e) {
console.log('click on div - stopping propagation');
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
}
1) Сервер генерирует первоначальный html, причём рендр реакта идёт синхронно, не работают всякие асинхронные запросы к API. Нужно отдельно загрузить что надо и передать например через пропы в рендр.
2) Так же надо вшить начальные параметры в сам html. Чтобы клент не перерендривал всё поновой. В этом хтмл так же указан бандл джиес со всей хуйнёй, который работает уже только у клиента. Клиент вызывает hydrate и всё, что происходит дальше делается на клиенте.
Как я понял, сервер нужен только при первом обращении. Так ли это? Или он и потом может что-то дорендривать и "помогать" клиенту?
redux ваш говно, тыща строк на мелкое изменение, какие-то константы, префиксы, вы ебанулись там?
полгода плевался редуксом, от количества boilerplate кода было ощущение, что попал в джаву6, в итоге на обычных ангуляровских сервисах пришлось писать
все изменилось месяц назад, когда наткнулся на Mobx, через 15 минут интегрировал его в проект и начал пользоваться
надо ли говорить, что небо и земля? что вам мешает использовать божественный mobx? мутабельна ряяяя, нифункциональна ряяяя
на днях надо было сделать функционал в реакт нативе, который видел первый раз (как и реакт), через час уже было пара рабочих, аккуратненьких сторов, которые дергались в разных частях проекта, как представлю, какие мучения пришлось испытать бы от редукса аж в дрожь бросает
Да. Сервер ноды нужен только чтобы отрендерить первый запрос сгенерировать HTML и запихать его в див и отдать клиенту. Дальше уже клиент получает JS бандл и гуляет по нему без участия сервера иногда лениво совершая XHR/Fetch потуги в сторону API. (За получение информации отвечает третий API сервер на базе чего угодно). Проблемы начинаются, сука там где те же асинхронные вызовы. Параметры авторизации типа JWT нужно хранить только в куках, чтобы сервак мог отрендерить отдельную страницу. Сколько мы уходили от кук к локалсторейджу? Вспомнил? Теперь забудь. Вообще один раз писал React SPA с SSR, больше не возьмусь. Подводных камней дохера. Были проблемы и с хранением данных и с асинхронными данными и с роутингом. Гугл нормально индексирует. Остальные пусть идут нахуй либо пусть рендерят страницы с перезагрузкой либо пусть платят по 150к$ за такую еблю. И то - я бы присмотрелся к Next.js
>Не осилил отгрызок функциональщины.
>Не нужно
Конечно.
Вызвать экшн, который пройдет через редьюсер и вернет новое состояние это много?
Просто не нужно хранить все в редаксе. А хранить только то - что входит в надмножество многих не связанных компонент. Если группа взаимосвязанных компонент живет спокойно и не имеет проблем извне. Не лучше ли использовать стейт, в крайнем случае создать родительский контейнер.
Забыл добавить, что 70% методов из жизненного цикла при написании изоморфного кода нельзя использовать.
Чтобы ты мог спокойно пользоваться async/await.
Сами генераторы тебе вряд ли ещё скоро понадобятся. А вот итераторы или асинки, на них основанные, обязательно. Так что неплохо бы по диагонали про генераторы прочитать, чтоб не быть баттхёртом.
Вопрос был не про это. Как они работают понятно. Как на них делать структуру ведущие себя как итераторы понятно. Вопрос нахуя оно может пригодится еще.
Нужно построить график математической функции. Пробовал в теге canvas, строя циклом линии от значения к значению, но смотрится стремно. Посоветуйте библиотеку или вариант решения
g -> js plot math function
самопал на канвасе:
http://matt.might.net/articles/rendering-mathematical-functions-in-javascript-with-canvas-html/
ебучая либа:
https://mauriciopoppe.github.io/function-plot/
>>1106454
http://exploringjs.com/es6/ch_generators.html
>Помогите
Очевидный charts.js
http://www.chartjs.org/samples/latest/charts/line/multi-axis.html
т.е. вместо жиквери можно тупо писать на реакте?
>Реакт использует ES6 классы, которые поддерживаются только в последних версиях браузеров.
Google babel typescript polyfill webpack
И тысячи других баззвордов.
посоветуйте плиз книжек где побольше практики
я уже погуглил. и где можно отбабелить реакт классы что-то не нашел. знаю как ес6 без реактов бабелить.
Если анон доставит гайд по тому как поставить нод+нпм под вин10 и чтобы ВСЕ рабоатло без дополнительных команд то было бы прекрасно.
Моя стори такова что получил задание опубликовать модуль и успешно все проебал из-за отсутствия документации, толи из-за собственной тупости. Теперь люто ненавижу опесорс, все эти нпм и прочую хуйню которая не стабильна, нужно делать все не так как в документации написано(а в видео все чуть иначе)
Нет. Там нужен сборщик как минимум, тупо не получится
Webpack
Ни разу в жизни не переустанавливал шиндус
>гуглил достаточно долго
просто ты тупой чартсжс висит в каждой подборочке лучших фремворков
>нод+нпм
хуйня, прокликиваешь инсталятор и все работает
у меня вот было откровение что ГИТ и ГИТХАБ это сука разные вещи и что они нужны ОБЕ блять, пидорской октокот об этом по пидорски умолчал деграданты с наклейками блять думают что все вокруг нахуй ванги сотого левела, ух аж тресет блять, юзабилити? нет не слышал
а еще жопу рвет конфигурирование глобал пакетов, вот это адовая хуйня, кешируемый джейсон, который подцепляет конфиг хуйня малафья в итоге работает только локально
>опесорс, которая не стабильна
проприетарная параша такая же, только ты еще бабло заносишь, а те три калеки попивая шампань со шлюхами ни разу не спешат фиксить твое дерьмо
в отличии от доброго няшного фоса, где если приспичит ты сам можешь все починить, ощутив себя совладельцем любимого програмного продукта и частью гигансткого комунти таких же отбитых задротов как и ты пожалуй только ради одной этой фичи уже стоит вкатываться в коддинг
на десятке сейчас максимум могут быть проблемы с нативными модулями (решается через npm install --global --production windows-build-tools) при установке нпм пакетов, еще насколько я помню нужен python 2.7 (но это не точно), пропиши пути в переменную окружения (path), в остальном даже n и nvm уже в WSL устанавливаются без проблем, поэтому можно даже обойтись без cygwin или git bash.
сам редко работаю из под винды и в основном запускаю проекты из докера, но это скорее по старой привычке
бэк, мобилки, десктоп
бытовая техника
>>1106703
Ну если публиковать модуль то нужно залогинится, что вовсе не очевидно, учитывая все параметры в пекедже, а во вторых могут быть проблемы что даже до этого недоходит из-за того что пакетный файл находится в аппдата который под правами админа. Не все кулхацкеры и привыкли обслуживать свою операционку и ЧИНИТЬ новый инструмент пред применением
>>1106735
Слишком толсто, рил
Вот думаешь правда всем нужно это знать и копаться в этом?
Кто хотел уже сидят на никсах и собирают ядро вечечрами, или и вовсе заделались системщиками
>если публиковать модуль то нужно залогинится, что вовсе не очевидно
ну блять а куда ты его собрался аплодить без логина то!?
на гитхабе еще ебей, там что бы репозиторий из соснольки создать нужно канаебится и все сука АПИ блядское подымать ради этого, хотя при первом же ините ты вводишь имя и почту пидоры с наклеичкими, хуле с них взять
>обслуживать свою операционку и ЧИНИТЬ новый инструмент
домохозяке печет лол
>>1106838
>Вот думаешь правда все
такое черное или белое? тебе 16?надеюсь что такиначе ну ты понел
я ебу где там логинится?
Может после нпм паблиш нужно?
по такой же логике я пытался залогиниться нпм логин усер пассворд, оказалось нужно просто нпм логин. Это все НЕ ДОКУМЕТИРОВАННАЯ хуйня, понимаешь? Т.е. не просто тупо сделано,а еще и нету инфы б этом там, где она должна быть.
> ой иди нахуй
нпм это лишь пакетный менеджер, ИНСТРУМЕНТ, в нем не нужно разбираться. Что бы забить гвоздь я не должен разбираться в молотках, а просто взять молоток и забить гвоздь, с нпм так не вйдет
Явно все сделано не очевидно, криво, с расчетом что нужно разбираться, гуглть и прочее, тут вопрос ЗАЧЕМ? Сделайте нормально. Это просто сырой продукт, недоделка. Представь себя функцией которая на вход принимает параметры и должна возвращать рабочий результат, если параметры не валидны то нужно помудохаться с написанием хендлера. Надеюсь аналогия ясна.
Допутим больше, что не так. И ты обосрался, пайтон вообще никоим боком тут не нужн.
>Что бы забить гвоздь я не должен разбираться в молотках
Мань плз количество типов молоткой больше чем извилин в твоей черепной коропкепро виды гвоздей их материалы вообще молчу
>ЗАЧЕМ
что бы подняться на уровень разработчиков очевидно, может ты и не напишешь второй нпм, но хотя бы будешь знать логику стоящую позади, ты ведь тупое говно хочешь стать лучше ? можешь не отвечать, я уже понял что нет
>не так
твой инфантильный подход
Где залогинится я имел ввиду на машине, через консоль, что бы запаблишить)
ЗАЧЕМ имелось ввиду коврятся во всей этой фигне если я хочу сайты,апы делать. НПМ пользуются разные девелоперы
>что бы запаблишить через консоль
читай аналогию с гитом, ковыряй апишник, это нихуя не дефолтное взаимодействие
>апы делать. НПМ пользуются разные девелоперы
/0
Что с гитом не так? У меня небыло такого что бы не мог легко и просто найти решение проблемы, доки там норм кмк.
Апы могут быть и веб-апы. или просто сайтики, собраные вебпаком, зачем тут "красноглазить" я хз
ИНБИФО: но пейн н гейн и проее в том же духе
поменял название переменной с топ на лимит и все стало ок. Ничего не понял.
>нельзя репу создать из под соснольки без ковыряния АПИ
git init
github и git это как бы не одно и то же, ты же сам даже писал, что откровение было. Очевидно, что для работы с github'ом нужно использовать его API, как иначе-то может быть? Это же и есть определение API.
>git init
ты ж уебок тредж читай, ну и дальше че блять, адд комит хуит пуш орижн мастер сука и ты обосрался —речь идет за комит на удаленный реп если ты блять еще не понял
мой батхерт в том что все топят за сосноль, при том успускают из виду что для создания ссаной репы им надо пиздовать на сайт и шаманить там, а после они такие распускают хвосты и такие git suka -m 'ebal-sih-urot' аштресет блять
>ты ж уебок тредж читай
А ты, хороший человек, дальше сообщение читай. github это СЕРВИС, ОТДЕЛЬНЫЙ, ХОСТИНГ ПРОСТО, как ты представляешь себе работу с сервисом БЕЗ АПИ, а?! Я могу на своей личной vps'ке удалённые репы деражть, никакой разницы не будет.
>СЕРВИС, ОТДЕЛЬНЫЙ, ХОСТИНГ ПРОСТО, как ты представляешь себе работу с сервисом БЕЗ АПИ
и это существо пару часов назад улюлокало за нпм
Я не знаю, кого ты существом назвал, но я про нпм ничего не писал и только 2 (уже 3) сообщения назад в беседу вступил. На всякий случай: нахуй пройди.
тлдр: аккуратней с var, оно устаревшее и с закидонами, пока лучше используй везде let вместо var, позже со всем этим цирком разберёшься
Когда ты объявляешь var в глобальной области (не в функции), то такое свойство создаётся в глобальной объекте.
в Ноде:
https://repl.it/repls/InsignificantUnusualSpringbok
в браузере:
https://codepen.io/anon/pen/ZvYKaO?editors=0010
В window уже есть куча свойств, многие из которых ридонли. Например, топ:
https://developer.mozilla.org/en-US/docs/Web/API/Window/top
ЖС по своим особенностям в развитии просто молча не даёт создавать уже имеющееся ридонли-свойство в глобале. За это мы его и любим.
Не знаю точно, как работает Жсфиддл. Скорее всего он выполняет весь твой ЖС в функции. И у него тогда проблем с var нет. Ты сам можешь так сделать:
;(function () {
// твой копрокод
}());
Или можешь использовать везде современный let вместо var и проблем не будет нигде.
Спасибо тебе большое
Два ассерта в chai этому.
Ну ответ такой себе. Ладно, благо я уже сделал то что надо. Все равно спасибо.
https://atom.io/packages/linter-eslint
команды, которые здесь описаны, они куда писаться должны ?
>атом
хуита
>eslint
хуита нода в терминале блять и то лучше подскзаывает
накатывай сабляйм и жсхинт, будет тебе счастье
Добавляется. Это с js fiddle что-то. Я тег <head> удалил, потому что он попросил
Ну или с моими руками.
ну и нахуй ты нам нерабочий код выкладываешь!?
найди нормальный хост для начала, прояви уважение к анону чмо блядь
пробуй, но не иби мозга анону
за линтеры я пояснял выше по треду, ориентируйся по краисвым картинкам
>почему
Потому что наследуется конструктор из React.Component класса. Откуда у тебя в классе this.setState, как ты думаешь, тупое ты чудовище?
не совсем. в самом теле класса доступ к this.props будет, а если у тебя есть конструктор и ты хочешь сделать this.state, или получить доступ к this в конструкторе - обязательно нужно делать супер(). зачем - хуй знает. так ес6 классы устроены
Ананасы, есть код, для плавного скроллинга страницы, когда сверху вниз делаю с помощью setInterval всё круто, работает, а когда снизу вверх, оно делается без повторений сразу за одну секунду прыгает наверх т.е. не плавно а скачком, а должно по 20пикселей тикать наверх, в чём проблема?
>timePassed = start - 20;
Вот строчка отвечающая за шаг, прикол в том что если я минус поменяю на плюс, всё работает, в смысле плавно идёт, а с минусом сразу пригыает. Помогите пожалуйста
>в ректе
На смену программистам на Жиквери пришли программисты на Реакте.
http://javascript.info/class-inheritance#super-internals-homeobject
>>1108177
Ты, если помощи хочешь и там больше пары строчек, будь добр скидывать минимально работающий прототип с разметкой и прочим. Всем лень додумывать.
>timePassed = start - 20;
Как достаточно открутишь, напиши там мне, чтоб я к биткам посерьёзней отнёсся.
https://codepen.io/anon/pen/KZdvvZ
Вот, сравни, где ты наебался. Вместо интервала я просто по таймауту как бы рекурсивно вызываю очередной шаг скролла. У тебя слишком много лишнего мусора в коде, чтобы было желание разбираться.
Отключил оные во всех браузерах, в сабляйме тоже выключил знатно наибавшись, т.к оверлай блядовый покзаывался когда крутишь чувствую себя прекрасно, всегда блять понятно когда дошел до низу, знать на какой я сейчас позиции, а нахера?
скролбар должен отмереть, как сучий шум прекрасного интерфейса
>У кого есть курсы по JS от HMTL academy?
Я слышал у безымянного клуба есть, но это не точно
432x360, 0:30
ууу сука как пиндосам все расписал подробно
Этот тред посвящён уже нахуй никому не нужному языку прошлого - JavaScript, который через пару лет будет похоронен WebAssembly. Благодаря своей кажущейся дебилам простоте, веб-макаки затащили его уже и на сервера, и в мобильные приложения, и на десктопы, и ещё хуй знает куда, что привело к экспоненциальному росту количества написанного говнокода. Благо синтаксис позволяет легко писать на нём говнокод любой степени ущербности, а производительность позволяет писать на нём даже анимашки для лендингов и интернет-магазинов. Впрочем, для уменьшения потока говнокода от веб-макак каждый день выпускается по 100500 JS-фреймворков, благодаря чему веб-макаки теперь в основном тратят своё время на чтение доков по этим фреймворкам, а не на написание говнокода.
JavaScript по праву является самым популярным в мире языком: ведь дебилов среди людей - абсолютное большинство. На каждом сайте пока ещё есть браузерный JavaScript, а от JavaScript на сервере все постепенно отказываются.
Часто задаваемые вопросы:
https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/vladimir37/js-thread/blob/master/Wiki/tools.md
Инструмент для визуализации и экспериментов со связями между объектами в JavaScript:
http://www.objectplayground.com/
Конфа /pr/ в Slack:
https://slack-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙТЕ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
нельзя просто так взять и не прикреплять уебанских смищних картиник
анон сделай так что бы все поняли блять у нас тут модно сука и молодежно
не тупи еба, давай пересоздавай, мухосранские шутеечки подзаебали, да
>мартыхан на пике: не мы такие, жизнь такая
я бы все унес все маркдавн на гитхабе, так и красивше(читай читабельнее) и актуализировать проще
Это копия, сохраненная 24 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.