24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Посоны, а поясните по хардкору, почему эта функция через раз срабатывает?
В html подключаю draw3.js и в body-script вызываю функцию init(). В draw3.js только эта функция. Сам файл test.png - белый квадрат хуевича. Консоль лог выдает то 0, 0, 0, 0 то 255, 255, 255, 255. Вот F5 жму, рефрешу страничку и то нолики, то 255. Шозанахуй?
>>1082902 Сценарячую! Почему мы даём какому-то экспорту привилегии? Надо, чтоб было несколько дефолтов и рандомом решалось, какой импортировать. Равные возможности, яй!
Есть map, внутри него еще map. Между мапами нужно использовать функцию OnClick. В результате происходит срабатываний столько сколько позиций в первом мапе. Как сделать?
И еще, как Акардеону внутри Акардеона задать функцию при открытии?
Сука, объясните за эвенты. Как мне триггерить эвенты не на все элементы полученные через map, а на только те на которые я кликаю бля. Как мне забиндить блядский OnClick
я старый динозавр вылез и пещеры, смотрю - react. ну с redux все понятно, все очень круто - тут вопросов нет. и можно использовать отдельно от реакта. зачем тогда он нужен, в чем прикол писать js и html одном файле в 2к17?
>>1083205 Все наоборот, реакт охуенная штука, а редух мутная. Помню я в 2005-м делал один огромный объект-помойку и писал туда всю хуйню, а потом из него же доставал где кому что надо, суть та же.
>>1083286 Значит пишешь в контору, где хочешь работать, и спрашиваешь, какие обезьянки у них в почёте. Если грят, что React-обезьянки - значит, становишься React-обезьянкой. Не надо учить всё подряд просто для того, чтобы пройти любое собеседование на изичах. Учи что-то конкретное. То, что нравится. А если контора хочет, чтобы ты знал и Vue, и Lodash, и React и Angular и умел со всем этим работать - шли нахуй, ибо ничего хорошего ты там не напишешь. У нормальных контор должен быть 1 любимый фреймворк на бэкенде и 2, максимум 3 - на фронте. И то, под каждый фреймворк зачастую нанимают по одному специалисту, а не одного на все 3. Исключение - желание сэкономить на тебе бабло. Но начать можешь с Реакта. Он сейчас наиболее востребован.
>>1083430 ну почему сразу тупой? я же сказал,что я не понимаю нечего в js я даже про JavaScript Sandbox ничего не знал. Написал код в консоли браузера. Получилось. у тебя плохой день был или что? почему вы все тут такие злые
>>1083431 Потому, что если ты учишься программированию, то должен знать, что для любого языка есть "песочница", в которой быстро можно что-то накидать. Чтобы попробовать C#, не обязательно ставить Visual Studio. Мы не злые
>>1083432 Так получилось,что я обходил всегда js стороной и изучал другие языки. Увидел,что на одном из it курсов,чтобы на него приняли нужно решить такую задачку. Мне стало интересно и я решил разобраться,т.к я понял,что идет работа с массивами,но полностью понять как работает код мне не удалось из-за незнания js опять же.Просто решил узнать
>>1083439 я не хотел записываться, я просто решил узнать ответ. Понимаю частично,что в коде делается,а полностью понять не смог. Стало интересно. И если честно,то двач я сразу отодвинул на последний план,т.к. уже знал,что меня там могут встретить с такими вопросами слишком великодушно.
>>1083443 Тебя "великодушно" встретят везде, где бы ты не задал вопрос на подобие "вот я листик сфоткал, сделайте за меня". Задавай конкретные вопросы - что непонятно, чего ты ждёшь от кода, что предполагает твой алгоритм, а что получается вместо, etc.
лол угу. в общем, в новой вкладке нажми в хроме ф12, перейди в "консоль", перепиши туда свой код и посмотри как он работает, и потом снова спроси, если что-то не понятно
>>1083453 Въезжать в логику твоего приложения по рандомным кускам кода это такое себе удовольствие. Втыкай консол.лог на каждом шагу и смотри на каком шаге приходит не то что надо. Что пришло от сервера, что ты записал в стейт, что попало в компонент, и так далее. Если ты не понимаешь о чем речь зачем взялся за фреймворк не понимая основ.
>>1083469 Мы на личности переходим и мне надо съязвить что ты такой выебистый только в школе пока на тебя не поссат альфачи или мы всё таки останемся цивилизованными людьми и вернёмся к обсуждению проблемы при том что весь код, который нужен чтобы понять что происходит я предоставил?
Запрашиваешь, Получаешь ответ, мапишь, вытаскиваешь что тебе нужно, рендеришь. Привязываешь рендер к кнопке. Последняя часть не работает. Я спрашиваю хули не работает. Что сложного блять посмотреть и ответить если ты ебаный эксперт местный.
>>1083479 Что конкретно ты не понимаешь и тебе нужно узнать? Есть функция, я хочу чтобы она выполнялась по клику кнопки и выводила мне список. Она не выводит список.
>>1083483 >Она не выводит список. Она хотя бы вызывается? handleClick этот, вызывается? search_by_author вызывается? Я не ебу, как там чё в реакте, но кажется мне, что функция с первого пика ретёрнит titleList вникуда (нахуй он на отступ меньше остального? Я сначала вообще подумал, что вне коллбэка/промиса), а нажатие по кнопке пытается отрендерить то, что возвращает search_by_author, то есть нихуя.
>>1083493 Да. Всё вызывается. Console.log показывает что repsonse пришел и всё внутри есть. Нет только рендера.
>что функция с первого пика ретёрнит titleList вникуда
Вот я тоже не ебу. Может быть я как-то не правильно в jsx вызвал эту функцию.
>(нахуй он на отступ меньше остального? Я сначала вообще подумал, что вне коллбэка/промиса)
Как я понял отступы не особо там влияют. Что без return что с return нихуя не рендерит.
Если я убираю return titleList. Он мне пишет что я его нигде не использую. Собственно в моём понимании я должен вернуть titleList и отрендерить его в html.
То что функция работает показывает Author, который возвращается не пустым.
>>1083500 >Вот я тоже не ебу. Ну так иди доки с примерами почитай, наверняка же это ультрапопулярное действие. В стейт кто будет этот titleList пихать, а?
https://jsfiddle.net/zbhn1w6u/2/ Вот, блин, две секунды в бинге (в бинге, мать твою, даже не в гугле!) + абсолютное незнание react'а — готово.
>Как я понял отступы не особо там влияют. Не влияют, как и эти уебанские скобочки у return'а, только зачем?
>>1083555 Проблема не во вкатышах, а в ёбаных вакансиях, где фреймворк-нейм и зарплатка рядом стоят. А вкатыш типа поступает рационально, идёт по короткому пути. Тут был программист на Реакте, который массив не мог отсортировать.
>>1083621 блядь это совсем надо быть ебанутым, чтобы в нашествии полоумных шизиков с дебильными вопросами в тред объяснять вакансиями. иди на хуй просто чмо ебаное и друзей своих дебилов уноси
У тебя не может быть запросов в рендере. Рендер — это просто проекция существующего стейта на вью. Разгребай лапшу. Рендер должен быть чистой предсказуемой функцией.
Что лучше, хранить ссылку на объект DOM в замыкании, либо хранить id объекта DOM в замыкании, и потом искать его по document.getElementById? Предполагаю, в первом случае я ем память, во втором - процессор.
Анон, смотри какую фигню наговнокодил. Это расширение для браузера, которое "шифрует" сообщения и пока работает только в TextArea на бордах (лень было проверять на других ресурсах). Еще он работает на Хромопере, лень было проверять на других хромиумах. Спасибо за внимание.
>>1083874 Сказал же, перепечатай заново строку "if(frm1.vib[0].cheсked){".
А затем можно сравнить "cheсked".charCodeAt(0) и "cheсked".charCodeAt(3) Оба по идее должны указыват на букву "c", однако код у них, почему-то, разный. Догадаешься, почему?
>>1082836 (OP) Двачик, нашёл вакансию, но в ней есть такое требование Web sockets Circular JS. В гуле вообще не нашёл никакого Circular, может быть кто-то знает что это?
>>1084237 >>1084238 Может, более опытный анон пояснит, нахуй это нужно, но в общем виде циркулярка - это короткозамкнутый объект, когда проперти объекта ссылается на этот же объект.
Пример: var o = {} o.p = o
Хоп-хей, ла-ла-лей, теперча в p у нас циркулярочка.
>>1084246 Погугли socketio circular, мож что полезного извлечешь, у них объект насквозь в циркулярке. ХЗ что конкретно твой потенциальный работодатель имел в виду.
Как сделать простую проверку чтобы если был undefined то присваивался пустой список? А то получаю что при поиске нету внутренних мета данных и всё идёт попизде. Нужно чтобы если кто-то прокатился еблом по клаве вместо ошибки нихуя не вывело.
Но при поиске может найти хуйню где нет body, а я вытаскиваю именно его. Очевидно что получаю undefine. Как мне просто проигнорировать, если в нём нет body?
у меня завтра техническое собеседование по скайпу. на должность мидла(2к$). до этого уже давали тестовое, сделал на "крепкую пятерку" по их словам. и был разговор 20 минут с эйчаром. чувствую себя дерьмово. какой же ето стресс пздц.
>>1084267 поделюсь офк https://jsfiddle.net/45tjrvnm 1. надо сделать шобы переменная status работала 2. реализовать таймер который в конце будет вызывать колбек onFinish и передавать туда {$endTime:new Date()} 3. сделать так шобы это работало без тормозов при большом кол-ве таймеров на странице
есть еще по второму ангулару на сеньера из другой конторы его я тоже сделал и прошел. кидать?
Эйчар, небось, 25-летняя ТП с гуманитарным псевдообразованием?
Интересно, с каким уровнем квалификации можно писать в резюме "эйчары идут нахуй" таким образом, чтобы данная запись не повлияла на возможность трудоустройства?
>>1084363 -> >>1084415 и плюс потом ещё отфильтровать нужно будет, так как map не может изменять количество элементов. >[1,2,3,4,5].map(e => e > 3 && e).filter(e => !!e) // [4,5]
>>1084389 Интересно, если я сделаю приложуху, которая после сдачи кала, оригинала паспорта и норм ГТО позволит такую крутую и инновационную вещь, как... наберите воздуха... готовы?.. обмениваться сообщениями в Интернете в 2017, я смогу Пашку переплюнуть по унижению говноедов?
Мне нужен аналог https://www.npmjs.com/package/voronoi с поддержкой произвольных функций расстояния. Что-нибудь такое в природе существует, или пилить самому?
>>1084602 >он же программировать не умеет абсолютно
Умею, но не на реакте и не на js. Я понимаю что я должен сделать с логической точки зрения, но я не ебу как на скрипте это написать. Поэтому и спрашиваю тут.
>>1082836 (OP) Анчоус, помоги. Как запилить такой самодостаточный компонент на реакте? (Ну или просто хтмл) У меня содержимое таблицы постоянно проваливается под днище и скроллится или вообще все или ничего
>>1084925 JS, сэр. Впрочем, не очень понятно, первое или второе тебя смущает, но вот тут все правила неявной конверсии при сравнениях http://es5.github.io/#x11.9.3
1. true == "1", применяем правило 6 2. 1 == "1", применяем правило 4 3. 1 == 1 Готово.
Сдела то же самое с первый, на третьем шаге будет 1 == NaN, что, очевидно, false.
>>1082836 (OP) Проганы, есть задача. 1. Есть такой сайт BrainwalletX на JS. 2. Есть ссылка на закачку его в zip: https://github.com/brainwalletX/brainwalletX.github.io/archive/master.zip 3. Есть index.html, который можно открыть во вкладке браузера, после розархивации. 4. Есть много монет, выпадающих из списка. 5. Эти монеты и их параметры - перечислены в index.html в списке <ul class="dropdown-menu dropdown-menu-two-column"> 6. Когда выбираешь монету, скрипт brainwallet.js вгружает эти параметры на данных монеты, выбранной из списка, и на основе данных, содержащихся в качестве параметров в этом списке. 7. Так же само работает и Sign с Verify. 8. Но на вкладке Сhains независимо от выбранной монеты, Armory и Electrum генерируют адреса биткоина. Т. е. Armory и Electrum не подхватывают данные, содержащиеся в списке. Какая функция это делает в файле brainwallet.js - не пойму, по всей видимости это функция function crChange().
Короче, надо переписать всё это чтоб загружались данные из списка и добавить внутри кода ещё одно поле RANDOM SEED. Пусть это будет строка с 256-битным значением, которые может указать в виде hex-строки любой пользователь. И sercet exponent является изначальное значение hash(passphase), но с дополнительным XOR на эту строку.
>>1084997 Цимес даже не в этом. Я такую задачку видел в одной комп. игре на тему кодинга. В итре где нет ни одной строчки кода, а все алгоритмы изображены в виде конвейера и кубиков со всякими операторами, методами, функциями и т.д.
>>1085022 Если ты школьник <8 класса, то ещё простительно. Если старше, то уже как-то несолидно не смочь решить такую задачу, имея безграничное количество туториалов, подсказок и примеров. Более того, что на самом деле плохо (ну не понял формулу там или не совсем понимаешь, как работает та или иная штука, мало ли, это фигня), так это то, что ты даже сформулировать проблему толком не можешь. "Не получается! Не могу! Не понимаю!", прям как блондинка. Что именно не получается? два числа сложить или умножить? Понять, как вызвать функцию изнутри её самой же? Как отановиться? Что? А ведь если бы ты смог это сформулировать, то даже сюда писать не пришлось бы, потому что первой строкой в гугле решилась бы твоя проблема.
>>1084980 там функция function crChange() внутри brainwallet.js вызывается вот так: $('#crCurrency ul li a').on('click', crChange); а эта строка входит в функцию $(document).ready( function() { ... });
и всё это внутри функции (function($){ ... })(jQuery);
т. е. в brainwallet.js эти параметры передаются через JQuery, а в armory.js - голый JS. Как передать туда эти параметры - понять не могу.
вопросы по фреймворкам ангулару(инжектейбл, зоны, скоуп, перформанс, как реализовано отслеживание изменений и т.д.) вопросы по event loop-у(куда же без него) и setTimeout ну и еще куча всего. почти час говорили
В решенный вариант не подсматривал, но чет не понял, первая задача решалась так просто, в одном из шагов не возвращался промис? Точно это исходное задание? Ничего ж допиливать не пришлось. Вторая задач была в Codewars.
Так тебя на позицию мидла взяли? Фронтендером будешь, на энгьюлэ пилить прожекты? Если не секрет, назови вилку зарплат, на которую ты претендовал. Ну и расскажи, о чем еще болтали с тимлидом плес.
>>1084980 >>1085046 Короче, сам разобрался. Надо просто через файл brainwallet.js - передать эти параметры во все функции, вызываемые из armory.js и electrum.js
Вопрос по JS. var ololo = new Date( (текущий timestamp) x 1000 ); ololo.getHours() - выводит часы, с учётом системных часов (переводит в мой часовой пояс). Так и должно быть?
делаю что-то типа ТУ-ДУ приложения с базой данных на firebase есть компонент View, который загружает эту базу данных, кидает в стейт компонента и рендерит в список
как лучше сделать, оставить так и просто рендерить <View /> в главном файле или сохранять базу в главный файл, а потом через props кидать в компонент View? ну, типа, рендерить вот так: <View huy={pizda} />
>>1085074 >в одном из шагов не возвращался промис да >Так тебя на позицию мидла взяли еще неизвестно >Фронтендером будешь, на энгьюлэ пилить прожекты хз что ето "Фронтендером". проекты у них на ангуларе и реакте. верстать не надо я 2к$ хочу
>>1085206 >Помоги с тупняком. нужно запрос сделать, но он выглядит как query=song+year я же передаю его в виде содержимого инпута как ${query}
Эту хуйню пофиксил. Как две query сделать через OR, если api не позволяет. Делать через url(query1) || url(query2) мне кажется не даст нужного результата.
>>1084980 Кто-нибудь из программистов может подсказать, как здесь сделать нажатой кнопку compressed в зависимости от параметра gen_compressed (true или fasle)???
Вижу класс .addClass('active') но он не работает! Может ещё что-то прописать надо?
>>1085381 Во-первых, везде пишут об этом, во-вторых, работы почти что нет, особенно если сравнивать с прошлым годом. Сейчас все, кто вкатываются во фронт, всё равно будут обречены на вкатывание в другие области. Я бы советовал вкатиться в мобильную разработку, если уж на то пошло. Ну, или же изучать нейронные сети и всё, что с этим связано. Только не говори мне, что фронт не умирает и в ближайшем будущем будут рабочие места
>>1085384 я работал удаленно на одну контору, а потом неожиданно в важный момент ливнул. перекрыл все контакты, ну типично. через полтора года на меня накатило как-то ночью, что я так хуево с хорошими людьми поступил. сел и написал им письмо с извинениями. мол, я на самом деле наркоман, не смог побороть зависимость, скатился в говно. стыдно пиздец. они утром пишут, типа а работать-то ты можешь? давай к нам обратно. после этого захожу на двач и читаю твою хуйню и еще много такой же хуйни от других даунов. это каким образом фронт умирает, если там такая нехватка специалистов, что они кидал-нариков обратно на работу готовы взять? ссу+сру тебе в рот
cv -> тестовое задание -> интервью с hr -> тех. интервью -> интервью с менеджером (я тут)-> тех. интервью со специалистом клиента -> интервью с клиентом -> интервью с директором
Добрый вечер господа, подскажите мимокрокодилу как мне вставить в жиквери вот это в параметре data у меня на фронт приходит {title: "тест", text: "тест", name: "васян", email: "", image: null}
я пишу вот так, сам блок выполняется проверял через console.log(data) success: function (data) { $("#post").html(data); }, но на странице нихуя не появляется. ЧЯДНТ?
>>1085326 Сам разрулил, короче. Там надо обозвать лейблы другими именами и присвоить им классы так: $('#gen_comp [name=comp]').addClass('btn btn-default active'); //активная кнопка $('#gen_comp [name=uncomp]').addClass('btn btn-default'); //не активная кнопка Иначе, класс присваивается input'у - это видно в исходном коде в Chrome. Скоро в /cc запощу исправленный brainwalletX.
Что, неужели всем так лень помочь, это же строка кода наверняка. Вот есть дохуя коментов, в в диве с айди post через форму асинхронно создается новый комент и возвращается в виде как я писал, как мне его добавить к уже существующим?
>>1082836 (OP) Ребзя, посоветуйте как лучше всего реализовать мультиязнычность на сайте с Node.js? Как это правильно называется? И мб есть уже какой-то готовый пакет хороший?
>>1085873 Я не понимаю, что гуглить, жс вообще не знаю, еле нагуглил как сделать так, чтобы форма отправлялась асинхронно и результат приходил нормальный, а дальше хз как. >>1085875 Уже больше похоже, теперь у меня в хтмле {"title":"тест","text":"ee","name":"васян","email":"","image":null
С этим уже можно работать, это не из-за того оно так выглядит, что я в апи обрабатываю это, то есть у меня же уже json приходит?
>>1085882 Имеется ввиду, чтобы когда у человека стоит английский язык в браузере, то оно отдавало страницу на английском, а когда русский - то русском.
>>1085883 Нет, это не JSON, а JavaScript-объект. Ты не сможешь запарсить его с помощью JSON.parse(data). А вот то, что получается в результате JSON.stringify(data) - уже JSON.
>>1085890 рак это ты ебаный дебил и подобные тебе дауны которые срут в тред своими даунскими вопросами. и дебилы кто вам помогает. сука пиздец уебаны лень документацию просто открыть блядь прочитать что функция делает как работает, какие параметры принимает, что делает надо со своим тупорылым вопросом обязательно насрать блядь в тред "ну я же не знаю не понимаю пок пок пок". хуесосы говножоры и те кто такую хуйню спрашивают и те кто тебе отвечают поощряя это говно уебаны
>>1085893 найс комунити, пидорашка дикая У тебя бы столько же времени заняло пояснить и кинуть парой ссылок в него, о которых ты говоришь. Откуда ты знаешь, какой там у него бекграунд? Уебан.
>>1085883 >Я не понимаю, что гуглить Потому что ты либо тупой, либо нет желания даже пытаться что-то гуглить. Вот ты пробовал? Вряд ли, "я не знаю, что гуглить", и всё. Да хоть что-то погугли, блядь, перелопать примеры этого jquery post'а, уж хоть кто-то, да пробовал отображать приходящий с сервера json на странице. И ведь там абсолютно плевать, post это, get или вообще из консольки ты переменную отобразить хочешь. Ты не понимая вообще ничего пытаешься что-то сделать, не желая хоть немного прочитать про то, что используешь. Нет, по сниппетам со стака можно много чего сделать, но не когда ты тупой, и пытаешься в js-объект вставить как html.
У меня уже давно появилась теория, почему в тредах почти никогда не бывает действительно сложных вопросов, только общие вопросы/советы по фреймворкам и вот такое вот примитивное дерьмо. Потому что те, кто пишут что-то сложное, могут погуглить и подумать сами, особенно когда начнут писать сюда вопрос, додумывать уточнения, предполагать допольнительные вопросы, продумывать на них ответы и вуаля, сам себе решил проблему, удалив неотправленное сообщение. Ну либо-таки запостит пару очень специфичных нишевых вопросов, никто не ответит и всё, больше не будет писать, так как смысла мало. Неопытные, но-таки разумные (типа >>1084980), всё же постят, но спустя короткое время сами решат, потому что они, сюрприз-сюрприз, не ждут сидят ответа на вопрос, в отличие от некоторых.
Котаны, подскажите что делать. Надо чтоб из ебаного ничего плааавно один за другим на страничке возникали элементы, дивы, например. Я делал через setTimeOut(), но оно работало не так как я хотел: сначала все время что есть в таймеер ничего не происходило, а потом они все появлялись сразу. Я погуглил и уже знаю, что таймер отдается, так сказать, на аутсорс в API, потом функция попадает в очередь и ждет когда стек станет пуст и только тогда все это гавно выполняется. Как тогда решить вот это дело?
1-3: Как надо 4: Как я понял из видео что работает хуета с таймаутами.
Аноны, может кто знает какой инструментарий для сканирования qr кода? пишу для себя приложение на ангуляре 4. попробовал заюзать библиотеку angular2-qrscanner, но трабла в том что, если приложение открывать с мобилы, он запускае фронталку, а не основную камеру. может еще что есть подобное?
Сложно гуглить такое общее слово, к тому же это только в браузерах сделано, так что знающие, подкиньте ссылочек на эту хрень (в частности, нахуя оно нужно такое), и как она умудряется работать вообще, пожалуйста. >name.toSource() >// "(new String(""))" Там какие-то проксификаторы, что ли?
В общем, такой страный немного реквест. Так вышло что устроился работать react макакой, всё пиздец легко, уже второй год работаю. И вдруг так почитал про xss атаки, про всю эту хуйню с глубинным устройством dom, js и всего такого и чёт пиздец интересно стало как всё это устроено на глубоком уровне.
Собственно вопрос, есть ли какие-нибудь хорошие источники по такой теме? Не всмысле xss а устройства всего. Может быть даже история развития.
>>1086065 А почему будет бесить? По-моему весьма удобно, когда англоязычный юзер заходя на сайт сразу попадает на английскую версию. В чём лично для тебя проявляется неудобство?
>>1086558 а, зависимость. на хуй знает. сложно это очень. сложнее чем проходить собеседовании накуренным. собеседование то я прошел, а вот курить не могу перестать.
>>1086579 Американец и русский получают одинаковую ссылку. Американец говорит: "Хорошая статья". Русский говорит: "Устаревшая хуйня и половина не переведена", и выкидывает американца за борт. Консистентненько всё должно быть, без сюрпризов. другой анон
>>1086579 Одна ссылка должна вести на один и тот же документ (по крайней мере, в один и тот же момент времени). Я в принципе не очень люблю когда, за меня слишком много решают, как мне будет лучше, ведь обычно наши мнение расходятся.
Развёрнуто дополню >>1086629: >В чём лично для тебя проявляется неудобство? В том, что я не могу быть уверен, что мне подсунули именно то, что я просил. Есть перевод? Замечательно, добавьте ссылочку.
>когда англоязычный юзер заходя на сайт сразу попадает на английскую версию. А я вот русскоязычный юзер, но попадаю на китайскую версию, потому что из компьютерного клуба тут зашёл. Стим так делает, например. И вот нахуя оно мне надо такое? Да и на русские сайты мне бы хотелось в оригинале заходить (система на английском), и при этом на английские — тоже. Гугл вот когда-то в своих ветках обсуждений переводил все посты на русский мне зачем-то, заставляя иногда задумываться, что за дауны так коряво пишут.
Представь, что википедия показывала бы страницу только на твоём языке, откатываясь на ангилйский (или следующий другой по цепочке) лишь при отсутствии статьи на этом языке. Ужас же был бы.
Короче, если в двух словах: подобная "интернационализация" не даёт выбора и сбивает с толку, потому как обычно эти горедизайнеры забывают и о кнопке принудительной смены языка. Да и не знаешь, перевод это или вообще язык версию сайта отдельная команда ведёт и статьи примерно похожи, но написаны каждая с нуля, просто на ту же тему и примерно с теми же источниками.
Есть поддомен, есть топ-левел домен — пользуйтесь!
Ребят, есть вопрос по event лиснерам. Вот есть у меня попап, когда он открывается - на document вешается event listener на keydown, чтобы отлавливать нажатие ESC и закрывать попап, вот когда я внутри такого попапа открываю еще один и нажимаю ESC - закрываются оба. Есть возможность закрывать по-одному? e.stopPropagation() не помогает, есть еще какие-то варианты? Юзаю react.
}); }); и элементы таблицы, которые я хочу скрыть/открыть <td id="block1_5000" style="display: none;">тест</td> Это всё делается в зависимости от числа, которое ввёл в инпут с ид data_v-gwert
Но оно не работает:С Ошибок валидатор не выдал. ЧЯДНТ?
>>1086670 >>1086672 Идентификаторы открытых попапов храни в массиве стейтеа приложения. По нажатию клавиши диспатч экшоны по обработке сего массива и соответственно, последовательно закрывай модалки. Это ж реакт, епта.
>>1086788 Спасибо, но не пойдет, я либу компонентов пилю, они из коробки должны уже этот функционал уметь. Я распетлял через вешание лиснеров на сами попапы и фокус их во время willUpdate.
>>1086789 $(document).ready(function() { $('#data_v-gwert').on('input',function(){ if($(this).val() <= 5000){ $("#block1_5000").css ("display", "block"); $("#block2_5000").css ("display", "block"); $("#block3_5000").css ("display", "block"); $("#block4_5000").css ("display", "block"); } else { $("#block1_5000").css ("display", "none"); $("#block2_5000").css ("display", "none"); $("#block3_5000").css ("display", "none"); $("#block4_5000").css ("display", "none"); } }); }); да если интересно кому, частично задачу решил, но проблема в том, что он работает только при вводе в инпут, а у меня значение этого инпута берется сложением двух других в динамической таблице :С
>>1086852 Я правильно понимаю что в других языках вместо хуйнинейм.js надо пердолиться и самому писать все велики либо же хуйнянейм зашита в стандартную либу?
>>1085027 Ну, анон, ничего страшного, и не из таких тормозов кодеров выращивали при должном упорстве. П.С.: Сам когда-то не понимал в упор как быстрая сортировка работает. Вертел ее туда-сюда неделю с разными массивами, пока не разобрался во всех мелочах.
>>1087227 Так в статье же подробно рассказывается, что за алгоритм. С картинками, графиками, гифками и исходниками на JS. Алгоритм перемешивает элементы в массиве. Он тупо пиздец простой: делим массив на две части и в новом массиве чередуем элементы из первой части и из второй. Элементы в массив: 1, 2, 3, 4, 5, 6, 7, 8 Разделили на две части: 1, 2, 3, 4 и 5, 6, 7, 8 Чередуем: 5, 1, 6, 2, 7, 3, 8, 4
>>1087237 Ну и там весь прикол в том, что если так "перемешивать" массив - через несколько итераций все элементы возвращаются в исходной положение: 1, 2, 3, 4, 5, 6, 7, 8 5, 1, 6, 2, 7, 3, 8, 4 7, 5, 3, 1, 8, 6, 4, 2 8, 7, 6, 5, 4, 3, 2, 1 <- в обратном порядке 4, 8, 3, 7, 2, 6, 1, 5 2, 4, 6, 8, 1, 3, 5, 7 1, 2, 3, 4, 5, 6, 7, 8 <- вернулись в исходное состояние
Двачик, выручай. Есть какой-то объект, который я прохожу в цикле for in. И есть строковое представление ключей элемента, к которому я хочу получить доступ. Как мне сложить объект и строку, чтобы обратиться к какому-то элементу? Подробнее - https://repl.it/Nkfp
Как можно реализовать сортировку товаров по параметрам на клиенте?
Данные приходят на клиент и хранятся в переменной в виде JavaScript-объекта. Далее, слева у меня есть различные чекбоксы, слайдеры и пр., которое я могу крутить и регулировать параметры необходимых мне данных. Я создал новый JS-объект:
let filters = {};
Каждый раз, когда я кручу какой-то ползунок или нажимаю какой-то чекбокс, этот объект пополняется правилами. Если я отрегулировал ползунок ценника, то появятся два элемента с ключами "price_min": n и "price_max": n.
Теперь, как мне выбрать все элементы из JS-объекта, где значение ключа price => "price_min" && price <= "price_max"? Я бы мог, конечно, написать такое ручками и определить это через if else, но у меня таких ползунков дохуя. Писать по if else на каждый случай жизни - заебусь, да и мусорного кода дохуя получится.
Может, сталкивался кто с таким? Подскажите хотя бы, как эту тему правильно гуглить, пушо запрос how to filter object in json упорно тычет меня носом в Array.prototype.filter и парочку тупых вопросов на StackOverflow.
>>1086065 >Неопытные, но-таки разумные (типа >>1084980), всё же постят, но спустя короткое время сами решат, потому что они, сюрприз-сюрприз, не ждут сидят ответа на вопрос, в отличие от некоторых. Уже решил.
>>1087381 Рендер товаров организуй по правилам. const filtered = data; if (filters.checkbox) { filtered = filtered.filter(item => item.rule); } render(filtered) То есть если фильтры пустые - отрендерится дата, если нет, то отфильтрованные.
>>1087381 А почему бы не хранить "отображаемые" товары в виде массива, который и будешь фильтровать тем самым filter'ом? Вроде бы, так обычно это всё и делается, да и судя по описанию проблемы, JS-объект тебе только мешает.
>>1087477 Какие сложные слова, я до такого еще не дошёл. Надо разобраться, спасибо. Правильно ли я понимаю, что ты это >Однако, не забудь, что obj.array[2] в данном случае у тебя не ссылка, а копия, потому что элемент примитивный. к тому, что obj.currentItem = 100500; не изменит array[2] на 100500? Если да, то это я понимаю. Суть задачи вообще какая: есть объект, который содержит элемент, значение которого - массив имён файлов. И один элемент этого массива нужно вынести в отдельный ключ объекта. Писать каждый раз array[2], когда нужно обратиться к этому конкретному файлу не хочу, потому что вдруг добавится в начало массива еще один элемент и array[2] будет иметь не то значение, куда нужно. Поэтому решил вынести это в отдельный ключ объекта, чтобы если что - нужно было заменить всего одну строку. То есть менять я ничего не собираюсь, по хорошему там вообще не var, а const скорее.
Пацаны, ку! Может ли жс в сокеты? Че гуглить, а то нашел только сокет ио какой-то но там нода-хуеда.
Сабж вот в чем. У меня есть приложуха на одном компе, а мне нужно чтоб !БРАУЗЕР! отослал запрос с помощью жса к этой приложухе. Приложуха не постоянно в аптайме.
>>1087569 так там фреймворк состоит из двух частей, фронт и бек. И это просто обертка вокруг нативной реализации и там и там. По идее неважно как бек их у себя делает, в браузер оно все приходит более менее одинаково (заголовки разве что может будут другие).
Анон, а если Кантора сделал, но ничего еще руками не писал, и слегка местами каша в голове - че делать? Читать Фленегана? Ебануть курс на Хекслете? Че та написать попробовать? А может уже можно реакт читать? Хочу побыстрее вкатиться
Анон, читаю Выразительный JavaScript сейчас, и дохуя чего кажется сложным. Задачи, начиная с глубокого сравнения вообще не понимаю, даже с решением. Из бэкграунда - курс по Питону на Степик. Эта книга/язык и вправду такие сложные, или я безнадежен?
Сап, как запретить воспроизведение двух видео одновременно (embed с ютуба) на своем сайте? Если одно воспроизводится, второе возвращается к 00:00? Встраивается видео через iframe.
Реквестирую ресурсы и литературу по изучению NodeJS. Сам фронтендщик, хочу вкатиться в бэк-енд, и чтобы дополнительно прокачать навыки асинхронной ебли выбрал Node.JS. Беда в том,что одного чтения документации мне точно не хватит, так как я еле-еле представляю для чего нужны сессии и чем вообще вы бэкендеры занимаетесь. Так что, желательно, нужен прямо для чайников ман, где дядя все покажет и расскажет на живых примерах.
>>1088033 Оказалось гораздо лучше иметь сортировку по фичам и компонентам, чем разбросанную по кучам папок логику controllers/views/... или javascripts/html/css
Братишки, я тут потихоньку, пилю имиджборду свою, уже создавал тред, но моча потер. Вот вам исходники, можете проверить, усе анонимно. Пишу в свободное время, хочу приблизить к функционала двоща.
>>1088130 там какая-то свалка на фоне и написано в коде "You need to enable JavaScript to run this app." хотя JavaScript у меня включён для этой страницы и в браузере в общем.
>>1087838 Тебе нужны курсы не по языкам, а по основам программирования. Очень много зависит от практики. Теория без практики почти не усваивается. В голове просто каша образовывается. Нужно много практиковаться.
>>1088027 Крутая программа обучения https://goo.gl/keMtwT стоит всего 24$ (~1500 руб.) в месяц, первые курсы бесплатные, практика прямо в браузере, помощь менторов, и много других плюшек. По ассинхронности там несколько курсов в программе.
Анон, подскажи, я не js прогер, накатал скрипт в Tampermonkey для одного сайта, он как-то вообще нагружает сайт(сервер)? Не очень просто понимаю работает js и обращается ли он к серверу или к сайту как к уже загруженным данным. Суть: сайт периодически рефрешится, скрипт быстро перекрашивает нужный текст. Ну а сайт банит за большое кол-во запросов. Код - https://jsfiddle.net/r6xzrozd/
Двач, а вот я сортирую массив, в котором есть названия и на латинице, и на кириллице. Так вот, .sort() возвращает мне массив значений, где сперва идут отсортированные значения на латинице, а потом только идёт список отсортированных значений на кириллице. Как это поменять? Хочу, чтобы сперва были отсортированные значения на кириллице, а затем только на латинице.
Иными словами, ты хочешь отсортировать свой массив так, чтобы он имел порядок не [1, 2, 3, 150, 151, 152], а [150, 151, 152, 1, 2, 3]. Подумой, как бы ты смог получить такой массив с числами из перемешанного, а потом уже на строки это переложи.
Здравствуйте , меня зовут Алеша, такой вопрос. С помощью этой штуки можно ли в браузере делать мышкой выделение текста в pdf документе и сделать проверку например выделил слово и автоматически произошла проверка, есть ли данное слово в базе?? Нужно для того, чтобы можно было отдавать перевод данного слова на другой язык и запускать audio file с произношением
>>1088709 > Как ты мог бы заметить, текст там рендерится в обычный хтмл с кучей div'ов. Не изучал эту технологию подробно, но разве там пдфка рендерится не в 2D canvas?
>>1088744 Блин, да открой ты пример по ссылке на онлайн демо из гитахаба и посмотри инспектором на html. Я вот именно это и сделал, например, перед ответом тебе/ему. Текст в канвас это, по-моему, немного извращенство (но тут могу ошибаться).
А как можно пройтись по двумерному массиву не двойным циклом, а то выглядит он 2к17 уебищно. При этом мне еще и получить координаты ключи индексы нужных значений.
>>1089068 Поставил убунту месяц назад и сам недавно через это прошел, пришлось немного повозиться чтобы установить последний, хотя это довольно просто. Тем не менее, вот что я тебе скажут, добрый мой совет, ставь винду, в линуксе в реальности надо чаще ебаться со всякой хуйней, ни фига он не удобней для вебдева, все это сказки.
>>1089084 Быстро же ты сдался. Сдашься один раз, будешь сдаваться всегда. Пока ты встретил небольшую трудность и сдался, что будет когда трудность будет сложнее?!
>>1089084 Не винда это гавно для макак, и нода тоже гавно, раз не ставится на православную Убунты с пол пинка. Буду дальше заниматься Питоном, там такой херни нет
>>1082836 (OP) нихуя не понимаю этих замыканий и их смысл. проще ебаного кормана почитать и порешать задачки на алгоритмы чем понять эту злоебучую, мудренную залупень. 5 источников прочел - не могу понять, господи какое же убожество, мудрено так нахуя делать, суки ебучие, ненавижу, ненавижу блядей, шизофреническая хуета эти ваши замыкания, господи нахуя так уебишно делать, сука просто убожество, фу нахуй, фу бльдь, блюю нахуй.
Может ты ставишь из стандартных репозиториев убунты, там всегда старые версии. Такую команду не прописывал? apt install nodejs или apt-get install nodejs
>>1089093 Что мудреного в том, что в функции можно использовать не только аргументы, но и переменные вне ее тела? Как вообще без этого можно что-то на JS написать?
>>1089093 У каждой функции есть объект scope, в который записываются локальные переменные. Если локальной переменной с таким именем нет в scope этой функции, то функция берет объект scope высшей функции из call stack'а и пытается найти перменную с таким именем там, и так далее до глобального scope'а. реализация кстати ебанутая
объект scope для конкретной функции создается в момент вызова этой функции. будет 10 вызовов этой функции - будет создано 10 разный скоупов.
вложенность достигается стеком.
для каждого вызова какой либо функции, текущий стек копируется, в него добавляется scope текущего вызова функции. в теле этой функции текущим стеком будет являться копия предыдущего текущего стека + scope текущего вызова. короче вот написал хуйню, если даже так будет непонятно, то ливайте из профессии https://pastebin.com/r8NPPyz3
>>1089478 а как блять вообще this относится к замыканиям? ты что ебанутый?
у this есть наследование прототипов, которое работает по принципу скоупов, но речь то идет про замыкания так что ты долбоеб.
так же, в контексте нет упоминания о чисто функциональных приложениях, речь о понимании функционального подхода, так что ты соснул в двойне. никто не говорит писать чисто так, или чисто вот так. но знать это надо, потому что некоторые вещи делаются так, а некоторые вот так. но вообще я делал такую хуйню может тебе понравится http://jsbin.com/rebazi/8/edit?js,output
>>1089478 Сколько хочешь. This же для разработчиков библиотек-структур данных. В своем коде this нужен только если ООП головного мозга накрыл полностью.
>но вообще я делал такую хуйню может тебе понравится http://jsbin.com/rebazi/8/edit?js,output >var >push >unshift >pop >миллионы мутаций >еще что-то пиздит про функциональный подход
>>1089525 я называю вещи своими именами. вы ждете что я вас хвалить буду, за то что вы порете хуйню и в развитии стоите на месте?
когда я делал хуйню и мне говорили что я делаю хуйню, я был благодарен тем людям. а щас блять куда не плюнь везде дебилы, вам же даже объяснять часто бесполезно
>>1089530 >я называю вещи своими именами Ты самоутверждаешься за счет незнакомых людей. И провоцируешь их на агрессию к себе. Вон один уже со Свифта бугуртит, кек.
>вы ждете что я вас хвалить буду Я от тебя ничего не жду, я вообще тебя не знаю. Вряд тут кто-то ожидает похвалы от рандомного НЕБОЖИТЕЛЯ.
>когда я делал хуйню и мне говорили что я делаю хуйню, я был благодарен тем людям Вот сейчас ты делаешь хуйню — скатываешь тред в токсичное говно. От таких людей для комьюнити больше вреда, чем пользы, даже если они хорошо программируют и дают советы по делы.
>>1089535 даже будучи ios-пидором, я шарю в жс лучше тебя
>>1089534 самоутверждаюсь ебана бля ага да. я два года назад высрал это чудо вечер, просто у меня што то щелкнуло и я захотел эту поеботу сделать и сделал. http://jsbin.com/wakuru/2/edit?js мне блять не нужно самоутверждение, я себя объективно оцениваю. я просто зашел напомнить долбоебам что ихнее место на параше
>>1082836 (OP) ЖСыны, что надо чтоб зашифровать и расшифровать алгоритмом AES файл в браузере - при помощи другого ключевого файла, как в openssl? Я вижу всякие библиотеки AES на JS, но они только с паролем работают.
>>1089572 ты любой файл можешь представить в виде строки. а любой пароль это строка. соответственно, используя библиотеку АЕС ты можешь использовать любой файл как пароль, если конечно там нет ограничения на количество символов
>>1089573 Ну вот в обычном openssl, по команде openssl enc -help видно следующее: -kfile passphrase is the first line of the file argument
Это значит, что из ключевого файла берётся первая строка. Что с ней дальше происходит - понятия не имею, может хеш какой-нибудь от неё берётся в качестве ключа, или сама она в виде пароля представляется.
В общем, надо в форму вгрузить два файла - один файл открытый, например музыка, другой файл - ключевой, и это бинарник, содержащий 32 байта (256 бит) - ну потому что 256 бит AES. Шифровать хочу алгоритмом aes-256-cbc без -salt, чтобы побитово сравнить с файлом закриптованным с помощью openssl, но как я уже понял, если не указывать параметр -salt в коммандной строке openssl - всё-равно он его посолит. Но мне интересна сама реализация. Ведь если я буду читать файл в байтовый массив, и оперировать уже блоками по 256-бит, то что я нагорожу в своём быдлокоде будет не очень быстрым, и может ещё и буфер переполнить, и быть может заюзать какой-нибудь curl, и забросить сам openssl в виде exe-шников в папку с html, где форма эта?
>>1089582 >aes-256-cbc >если не указывать параметр -salt в коммандной строке openssl - всё-равно он его посолит Page 2 - Method #2, the UNIX Command Line https://www.macobserver.com/tmo/article/how-to-strongly-encrypt-a-file-for-free-in-os-x зашифрованный файл начинается с Salted_ и даже если не указать параметр -salt, всё-равно два зашифрованных файла - отличаются. Можно ли вообще закинуть exe-шник openssl в какую-нибудь папку, и вызывать его из JS, ну чтобы зашировать с его помощью файл, и вернуть его в виде ссылки? Можно ли представить файл как поток данных, а потом зашифровать поток через openssl, и вернуть зашифрованный поток, ну чтобы вообще не сохранять файлы там, где хостится JS c этим openssl?
Перерыл пол рунета, но не нашёл ничего более годного чем это https://etherhack.co.uk/symmetric/aes/aes.html Просто hex в hex шифрует и расшифровывает. Но цифертекст тут каждый раз разный, что говорит о смене вектора инициализации. Но как вытащить оттуда JS - ума не приложу.
Попробовал зашифровать hex-строку через CryptoJS, в итоге получил шифртекст намного большей длины:
Я знаю, что AES - алгоритм блочного шифрования, и он имеет свой размер блока. Если я ввожу 256-бит в виде HEX'a, то наверняка я должен был бы получить 256-бит шифротекста. Такая длиная строка цифертекста говорит об избыточных вычислениях, и большом енкрипт-файле в перспективе.
Там используется wordarray, и чтоб получить hex из base64 мне пришлось переводить его в строку. hex = cipherData.toString(); hex = CryptoJS.enc.Base64.parse(hex); document.write("cipherHex: "+hex+"<br>");
Ну и как читать файл в hex, а уж тем более в base64 - в душе не ебу.
>>1089733 Зачем ты мне предлагаешь выбор из двух хуевых крайностей? Демократию еще приплел откуда-то.
Я считаю, что хорошему специалисту не обязательно быть полным мудаком и называть всех вокруг дебилами. Это приносит больше вреда, чем пользы. И действительно крутым ребятам (Абрамов, Ситник и т.д.) их скиллы почему-то не мешают вести себя нормально.
Как правильно написать строку вида var name = array[5]; Если учесть, что array может оказаться пустым или вообще null? Тернарный оператор юзать? Типа (array != null && array[5]) ? name = array[5] : undefined; или что-то вроде?
>>1082836 (OP) >>1089758 Шо ни у кого нет AES для файлов на JS что-ли, блядь? Мне его что кривыми руками с отрозшими ногтями, тыкая пальцами в кнопки - самому быдлокодить?
1) undefined никто не присваивает, это вроде как канон. Присваивают null
2) Если array[5] не определен, то сработает второе условие, присвоится undefined. С-но, твой код избыточен. То же самое про проверку на длину. Она не нужна.
3) Самое главное. Он содержит баги. Если у тебя 0 в array 5, то сработает undefined. Руки отрывать за это.
Читал Кантора. Читал про реакт Стоянова и еще по мелочи немного. Еще осилил курс Programming languages от Дэна Гроссмана, но там не совсем про js, а скорее общие принципы. Читал SICP, но страниц сто прочел и отложил пока. Позже вернусь.
Сейчас тимлид хвалит меня за дотошность и ругает за хуевые архитектурные решения. В большинстве случаев он оказывается прав, и аргументированно показывает, что я сделал хуйню. Что бы почитать такого, чтобы перестать быть макакой, а стать нормальным программистом-архитектором, способным спроектировать и реализовать сложную структуру?
>>1089946 > 1) undefined никто не присваивает, это вроде как канон. Присваивают null мне похуй. я просто показываю возможность установки дефолтного значения.
> 2) Если array[5] не определен, то сработает второе условие, присвоится undefined. С-но, твой код избыточен. То же самое про проверку на длину. Она не нужна.
она нужна, потому что вместо undefined я должен вернуть дефолтное значение.
>3) Самое главное. Он содержит баги. Если у тебя 0 в array 5, то сработает undefined. Руки отрывать за это. это не баг, а тест на дегенератов. с одной стороны ты заметил недостаток, с другой ты не понял, что этот недостаток легко фикситься.
>0) твой код плохо читается че блять. перепиши мой код на if else, и подумай еще раз. a && b сложно для него ну пиздец.
вот блять специально для тебя правлю код var array = [0, 1, 2, 3, 4, 5]; var defaultValue = 1; [defaultValue, array[5]][Array.isArray(array) && array.length > 5 && isFinite(array[5]) | 0];
>>1089825 Тред не читал let name = array[5] ? : array[5] : 'Anonymous' Но вообще это какой-то хуевый код, когда приходится тащить именно пятый элемент и непонятно есть он нет. Еще можно использовать деструктуризацию, типа let [birthdate, first_name = 'Anon'] = array Если у тебя идет имя вторым элементом, например. Анон - дефолтное если его нет. Так по хипстеркси.
>>1089969 вот написал вариант для школьников, которым СЛОЖНО, РУКИ ОБЛОМАТЬ, ну короче которые еще не созрели для нормального кода: var unwrap = (optional, defaultValue) => optional !== undefined && optional !== null ? optional : defaultValue; var array = [1, 2, 3, 4, 5]; unwrap(array[5], "пусто");
>>1089969 >это не баг, а тест на дегенератов. Именно, вот мы тебя и выявили.
>>1089977 И снова ты свой тест провалил! Вся заварушка началась как раз из-за того, что array может быть не определён и попытка его индексировать вызвала бы ошибку, а ты вот прямо array[5] и хуяришь в функцию. Какой уже смысл там что-то проверять-то.
>>1089940 Ты, кстати, не из тайпскрипта или чего подобного вылез? Нахуя, блядь, проверять, что это Array и что у него есть длина и она больше 5? Ничего этого в условиях не было, можешь у него вообще там обычный объект с цифровым ключом, который он случайно array'ем назвал.
>>1090001 Внезпно кстати, у всех строк есть прототип String, у которого есть метод length, так что строка может быть с длиной и больше пяти. Парам па пам, вью!
>>1090058 Строка. Под капотом интерпретатор попытается преобразовать массив к числу методом valueOf, но так как у массива он возвращает сам массив, а не примитив, то интерпретатор обратится к toString, соответственно произойдет конкатенация числа и строкового представления массива.
>>1090066 Примеры есть, и немало. >>1090067 Что значит "с последним значением"? У тебя отдельно приводится к строке число, отдельно массив, затем они конкатенируются. Например, массив [1,2,3] сначала приведется к строке "1,2,3". Затем к этой строке приклеивается приведенное к строке число, например "5" и получается "1,2,3" + "5" // "1,2,35" Все правильно.
Вопрос повторяется из треда в тред. Ребята, вот исчерпывающий алгоритм.
Желающим вкатиться джуном, имея нестандартные статы (седой олдфаг, синдром Аспергера, маргинальная биография, проживание в глубокой мухосрани и все прочее в таком же духе), нужно сделать так:
1) Два-три месяца вложиться по максимуму.
2) Нанять ментора, который поможет подтянуть пробелы в знаниях и найти работу. Сайтов, предлагающих подобные услуги, довольно много.
Принцип касается не только js, и даже не только программирования. Он универсален.
>>1090142 Хотите мнение? Вы задумали в принципе далеко не самую умную затею. На моих глазах около десятка парней в возрасте за 30, как и Вы, пытались начать все с нуля, освоить программирование, получить хорошую работу с хорошей ЗП и в перспективе уехать за рубеж. Знаете скольким это удалось? Никому! Основная причина - очень высокий порог вхождения при низкой усвояемости нового материала после 30-и, попросту говоря - не осилили. Даже если и осилите, дальше что? Все двери перед Вами распахнутся? Да не тут-то было! Сегодня типлиды кругом 25-30 лет, 30+ уже ПМ. Дядя, ты куда прешь?!(с) Даже многие программисты с хорошим бэкграундом, которые уехали за рубеж после 30-и в итоге там переучивались в водителей погрузчиков, т.к. по специальности устроиться не смогли.
Возможно Вы уникум и у Вас все получится, буду за Вас искренне рад, но статистика вещь упрямая.
В таком возрасте если и начинать все с нуля, то нужно выбирать не инструмент а направление деятельности в котором хотите развиваться, изучать предметную область, затем уже и об инструментах можно подумать, точнее они сами к Вам придут.
Но если у Вас идея фикс, то что могу посоветовать... да ничего не могу посоветовать, т.к. особых предпочтений Вы так и не высказали и с предметной областью как понимаю не определились. Из всех перечисленных технологий, можно только с уверенностью сказать что Java и через 10 и через 20 лет будет на плаву, т.к. это в первую очередь крупный ентерпрайз, там все относительно статично. Но не завоете ли Вы волком через полгода клепая в эклипсе очередной 100500-й класс?
>>1090150 Среди этих 30 летних были молодые и шутливые, слушающие яниксов, стригущиеся в барбершопах и вот это все. Или это все было прям совсем мужичье которому уже нихуя в жизни не интересно?
>>1090157 Какая разница-то?.. Количество ключевых слов в том же JS давно вышло за все мыслимые пределы (а в вакансиях требуют ещё и серверные языки, при этом з/п часто как за один), и как огромный снежный ком — растёт и растёт.
Блядь, как же у меня полыхало сегодня с вашего зоопарка. Возникла примитивнейшая задача - автоматизировать заполнение формочек на сайте. А сайт на реакте... Полез в код страницы - там адский нечитаемый пиздец. Проебался хуй знает знает сколько времени, пытаясь найти где у этого говна начала, а где конец, пока не убедился что вся внутренная логика через хуй проссышь какую жопу завернута в замыкания, и до скоупа в котором она живет мне тупо не добраться. Хуй с ним, прокликаю по кнопочкам, да захуярю что нужно в value нужных инпутов... Да вот только этот реакт работает со своим виртуальным домом, на то что реально нарисовано на странице он хуй ложил. Ладно, захуюрю ему чейдж эвентов... на которые ему тоже совершенно похуй - эвенты в нём тоже свои. Пришлось дрочиться подбирая такой порядок эвентов и ввода данных при котором он воспринимал это как реальный ввод. Для textarea, например, вышло фокус\установка значения\инпут\блюр. Строго, блядь, в этом порядке. Шаг в сторону - и нихуя уже не сработает. Для других инпутов уже другой, блядь, порядок эвентов. И закончилось всё это тем что последнему особо злоебучему импуту пришлось даже кейкоды засылать. Что, к слову, нихуя не кросбраузерно, и рабочее решение нашлось далеко не сразу. В итоге на юзерскрипт из какой-то сраной сотни срочек ушла вся ёбаная ночь, до сих пор еще задница не остыла.
И это при этом что я далеко не жс-хейтер, скорей наоборт - постоянно его использую, и считаю отличным языком. Но, блядь, не в вебе. Там ад израиль.
Это паста? Мы говорим немного о разном. С тем, что мозги после 30 работают хуже, никто не спорит. Пик интеллектуальной формы человека -- 22 года. Мнение основано на наблюдениях за взлетом топ-шахматистов.
Понятно, что если начал в 30, то Кармаком ты вряд ли станешь. Но не так уж и сложно стать середнякаом, зарабатывать пару тысяч грина в месяц и жить на каких-нибудь теплых островах Тихого океана. И эта жизнь будет гораздо счастливее жизни большинства людей.
Мой совет был направлен в сторону тех людей, у кого с мозгами все хорошо, но которым отказывают в работе по формальным критериям.
> многие программисты с хорошим бэкграундом, которые уехали за рубеж после 30-и в итоге там переучивались в водителей погрузчиков
Что это вообще за хуйня? Программист с хорошим бэкграундом может работать удаленно.
>>1090066 Конечно можно. Все зависит от тебя. Почитай https://joisadler.me/posts/ чувак пока не устроился, но очень сильно прокачался. Другие уже устроились на работу, но блогов не ведут.
Нахуя уезжать -- давай не будем это здесь обсуждать, хорошо? Чтобы избежать оффтопика и потенциальных срачей на темы, не имеющие отношения к программированию.
Важно иметь достаточную профессиональную квалификацию, для того чтобы был выбор, уехать или оставаться. И очень плохо, когда такого выбора нет.
>>1090142 1) Кому нужно, мы все уже здесь. 2) Лучший путь обучения - самообразование + практика. Ни одного раза какой-либо старый/молодой долбаеб мне не объяснил лучше, чем написано в книге или документации.
>>1090066 Вкатился в 27, уже год работаю JS/HTML/PHP/NGINX/APACHE/VMware макакой. Потихоньку жалею и учу Python, чтобы свалить из этого ада с легаси говном на PHP5.2, где все перемешанно, где переменные именуют одной буквой. Лучше бы я вагоны разгружал, чесслово. Но у меня бекграунд был математический, прошлая профа - исследователь в НИИ. Из программирования, в школе BASIC (GOTO пацан, дада). В универе решал всем неосиляторам лабы по дискретке на паскале, стеки/очереди/кучи там. всякие. Так что я тот еще мамкин умница. На все обучение HTML/CSS/JS/PHP ушло 2 месяца.
>>1082836 (OP) Кто-нибудь может написать нечто подобное для файлов >>1089833 но без Web Cryptography API, или же подключить его в виде JS-файлов, наверняка оно есть в JS. Только я вижу там в исходном коде используется AES-128, а надо AES-256-CBC, чтобы размер блока и длина ключа была 256 бит.
>>1090309>>1090318>>1090313>>1090324>>1090327 Короче, после всего этого - в голову приходит то, что проще всего было бы как-то подключать обычный exe-шник: запустив для шифрования его при помощи ссылки в html например командой "openssl enc -aes-256-cbc -salt -in secret.txt -out secret.enc -k password", и после выполнения шифрования на сервере - просто выдать ссылку на файл: как вот тут вот, когда файл шифруется: >>1089833 (там ссылка появляется). Но тогда, эта хрень не будет пахать в линупсах, маках, юнихах и андройдах всяких, если она вообще будет пахать.
Как это сделать - непонятно, там вроде-бы надо прописывать полные пути, а относительные не канают, а хочется портабельную шифровалку файлов в браузере 256-битным ключём (32 байта), ну чтоб носить её можно было от браузера к браузеру - в виде zip-архива с js-файлами и html-страницей, подключающей их, ну и чтобы расшифровывать можно было этой шнягой. Можно поставить ограничение на размер шифруемого-дешифруемого файла, потому что я вижу там base64 юзается во многих всяких CryptoJS, где AES есть, как тут например, когда в hex переводится файл: http://tomeko.net/online_tools/file_to_hex.php?lang=en но лучше было бы представить читаемый файл в виде потока, и шифровать уже поток неограниченной битности, просто зациклив шифрование последовательно-подающихся блоков инфы а вот уже выходные данные - писать в файлы неограниченного размера, не обязательно сохраняя в на сервере, а отдавая, например его - по мере закачки исходного файла.
Ну и конечно же не обязательно чтобы был сервер - ещё лучше чтобы можно было из папки открыть html, вгрузить туда зашифрованный файл, ввести пароль, получить с него ключ, и по мере загрузки, скачивать расшифрованный файл.
Не нашёл ничего подобного в Инете, поэтому я и тут.
>>1090346 >Ты хочешь написать шифровальщик без сервера? Взломать шифровальщик всё-равно что взломать алгоритм шифрования. Более того, если нет сервера, то и передавать на сервер ничего не надо, а значит и перехватить нифига нельзя. Как подключать? Ну я не знаю, вот так как-то что-ли: https://stackoverflow.com/questions/4252913/open-an-exe-file-through-a-link-in-a-html-file Хотя, конечно лучше было бы юзать какие-то JS-крипторы, представляя файл как поток данных. Есть же видео-трансляции зашифрованные, в том же скайпе, например. Там файлы не юзаются - там видеопотоки.
>>1090415 Собсно да - уточнил в википедии. >Mega шифрует весь контент прямо в браузере с помощью алгоритма AES >шифрование происходит на стороне клиента при помощи javascript Ну вот и сходи посмотри на их код.
>>1090423 >Так они тебе его и показали. Браузерный жабаскрипт. Берешь и читаешь, даже спрашивать не надо.
Я думаю что он и должен быть не сильно обфусцирован - это же их киллер фича, то что кто угодно омжет убедится в надёжности шифрования. А с обфусцированным кодом теряется весь смысл.
>>1090415 >Я бы посмотрел в сторону меги, как там реализовано. >Ну вот и сходи посмотри на их код. Там неведомое творится в коде. Во-первых нельзя глянуть - правый клик не работает. Во-вторых регистрация надо, в третьих дофига скриптов всяких подключено. >>1090417 >Mega шифрует весь контент прямо в браузере с помощью алгоритма A AES'ы бывают разные. AES-128-CTR, например. Мне же надо AES-256-CBC, как в openssl. Единственное что нашёл, рабочее в браузере - так это вот: https://gist.github.com/rootsher/c0377faeb89cae491358 А вот проверка дешифрования - в посте (первый ответ): http://www.itgo.me/a/6204436090760439940/decrypting-aes-256-cbc-salted-ciphertext-with-javascript Только там надо содержимое зашифрованного файла преобразовать в base64-строку для дешифрования.
Как же юзать всё это добро? 1. С гитхаба (ссылка выше) - копируется код, сохраняется в СryptoJS.js 2. Создаётся некий файл index.html рядом, а внутри помещается код: <script src="Crypto.JS"></script> <script> var dec = CryptoJS.AES.decrypt("U2FsdGVkX1/oA4O+uXXBXAjAenRJwpUV4UqQp4aYCpk=", "password"); var plaintext = CryptoJS.enc.Latin1.stringify(dec); document.write(plaintext); //Message </script> 3. Открыв его в браузере - можно видеть исходный Message. 4. Ну а дальше уже это всё портабельно, и можно это всё таскать на какой-нибудь флешке, например.
Можно ещё вот так делать: var cipherData = CryptoJS.AES.encrypt(word_array, key, { iv: iv }); //где key и iv - 16-ти байтные значения ключа и вектора инициализации. Но здесь уже размер блока я вижу 128 байт. Если длину ключа увеличить до 256 бит - размер блока всё-равно 128 бит. К тому же шифровать можно только строки в base64, и текст. Выше - дешифрование идёт паролем, и это - посоленный файл (Salted_).
Нахрена мне это всё вообще? А хочу использовать для шифрования и дешифрования ключевой файл с 256-битным ключём, который можно указать в случае использования openssl параметром -kfile Это уж точно не пароль, и не всегда его данные могут быть представлены в виде символов, хотя если набрать в консоли "openssl enc -help" видно что первая строка ключевого файла используется - именно как пароль.
>>1090424 >Браузерный жабаскрипт. Берешь и читаешь, даже спрашивать не надо. >>1090441 >Там неведомое творится в коде. Во-первых нельзя глянуть - правый клик не работает. >Во-вторых регистрация надо, в третьих дофига скриптов всяких подключено.
Что и требовалось доказать. Хлеб свой они никому не отдадут без боя.
>>1090451 Я не могу? У вот тут отлично документированный сорец, даже, блядь, с комментариями. В то время как у тебя правый клик не работает. Ни и о чем тут дальше говорить можно?
>>1090447 Да блядь, что вы мне эти коды ебучие в браузерах тычите, я не спец нихуя их ещё инклюдить надо правильно. Ещё дали бы мануал описания самого стандарта AES, чтобы самому исходник на его основе писать... Я же хочу всё и сразу - а именно поточное шифрование на лету четырёх-терабайтного бекапа жесткого диска, а не какие-то пиздюрки по 1 МБайт, да ещё и на JS, и ещё и в браузере - ну чтобы вы все вообще охуели.
>>1090441 Кстати, это: >1. С гитхаба (https://gist.github.com/rootsher/c0377faeb89cae491358) - копируется код, сохраняется в СryptoJS.js >2. Создаётся некий файл index.html рядом, а внутри помещается код: ><script src="Crypto.JS"></script> не работает, проверил. У меня немного другой Crypto.JS и он нормально инклюдится. Вот, собственно и js и index.html http://rgho.st/8WvsljSjJ Но тут только строки в base64 енкрипт и декрипт.
>Винраром шифруй. >WinRAR uses AES-256 in CTR Дай командную строку что-ли, для aes-256-CBC у винрара, да ещё и чтобы можно было ключ и вектор инициализации в виде бит пихнуть туда. Ну и конечно же портабельность у винрара не ахти.
>>1090453 Говоришь так, как будто с меги мне качается encrypted file, а потом расшифровывается у меня же браузером.
>>1090460 Этот сорец и те функции что там - вообще ну ни прям ни о чём мне не говорят. Непонятно что туда заходит, буфер или поток, или байты, или массив бля. Вывести же нельзя это и пощупать, так сказать...
>>1090473 Вчера всю ночь рыл интернет, наткнулся на очередной CryptoJS-master, там внутри какой-то bower.json, батники, и ни одного index.html. Ещё видел .coffee файлы - и ни один JS в папке lib не инклюдится. Пишет require undefined.
>>1090482 Любой каприз за ваши деньги. Пиши чёткое ТЗ - получишь ценник. Или по твоему я должен подорваться, и из доброты душевной тебе что-то пилить начать?
>>1090479 >Ты не поверишь... Там Web Cryptography API случайно не надо? Потому что на компе у меня открывает ссылку вот это и шифрует нормально в браузере >>1089833 но оно ж не портабельное нифига, раз там надо Web Cryptography API. На ноуте не открывается, и я так подозреваю, что если вытащить с меги скрипты эти с АЭС, они тоже не будут работать на голом JS. Где-нибудь в коде, за может закрасться какое-нибудь:
// Check that web crypto is even available if (!window.crypto || !window.crypto.subtle) { alert("Your current browser does not support the Web Cryptography API! This page will not work."); return; }
>>1090486 Если уж за деньги, то проще их направить куда-то в сторону "AES 256 Hardware Encryption". Пикрелейтед. Но я ж вам хочу мозги поебать чуток, быдлокодингом. Портабельность такой железяки - самое то, но эта железяка портабельная до поры до времени - т. е. пока она не накроется медным тазом. А вот исходник можно на торренты залить и сделать всеобщим достоянием, если не стандартом.
>>1090498 Лучше, конечно. В качестве бюджетного решния можно даже взять обычную флешку, и засунуть на неё gpg с парой батников.
Но и у нас найдутся занятия получше, чем пилить законченные решения для какого-то мимохуя закатившегося поебать нам мозг.
Здесь тебе могут подсказать в какую сторону самому копать(например ткнуть в сорец меги). Но никто ничего для тебя делать не будет, уж точно не за сотни нихуя.
>>1090509 >взять обычную флешку, и засунуть на неё gpg с парой батников И обычный openssl тоже бы сошёл. Ладно, вали. Тащем-та я хотел запхнуть aes-256 в этот brainwallet >>1087382 Ну, чтоб шифровать файлы всякие sha-256 хешем от приватного ключа - в качестве ключа шифрования, и чтоб можно было, введя пароль - скачать ключевой файл с 32-мя байтами внутри, имея в дальнейшем возможность использовать его для шифрования-дешифрования файлов, с помощью openssl, указав его параметром -kfile А то ну что ж это такое - криптовалюты есть, а криптования инфы нет, только цифровая подпись по ECDSA. Я где-то ещё слышал есть ECC, но там инфу точками на эллиптической кривой представляют, а они в два раза больше исходного сообщения, так как имеют две коррдинаты.
>>1090298 Сейчас бы на дваче с анонами попиздеть. Себя посамовнушать. Классика. >>1090295 Два месяца. Чисто основы PHP/HTML/CSS/JS. Без препроцессоров, фреймворков, серверов, гитов, ES6 и прочей хуйни которая пришла уже на работе. Из бекграунда была только дискретка в вузе лабы на паскале и сданые кандидатские минимумы по английскому.
ALARM ПУЗЫРЬ ЛОПНУЛ ALARM Зарплаты программистам резко подешевели. Выкатывайтесь быстрее, иначе хуй куда устроитесь, ща будет наплыв бывших программистов на всякие стройки и заводы. АКЦИИ КРУПНЕЙШИХ IT КОМПАНИЙ СТРЕМИТЕЛЬНО ПАДАЮТ, НЕ ВЕРИТЕ ПОСМОТРИТЕ САМИ
УЧАСТВУЕШЬ В КОНТЕСТЕ НА HACKERRANK @ 5 часов решал задачу уровня HARD, вьебал там рекурсию Первый кейс выполняется! Замечательно, отправляешь свой код @ Abort Called, FAQ говорит что у тебя обучение по ресурсам. @ ... Не больно то и хотелось. ?Пидоры*
>>1090805 Не надо нифига уже. Я сам нашёл вот это: https://tutorialzine.com/2013/11/javascript-file-encrypter Скачал, работает. Но там кнопок дофига и интерфейс меняется, надо делать пару телодвижений. Работает без Web Cryptography API, правда там используется HTML5 FileReader API Зашифрованный файл содержит в себе base64 начинается с "U2FsdGVkX1" и это "Salted__" в обычном тексте, так что думаю не проблема будет записать в него исходный код без base64. Ну и расшифровать его с помощью openssl тоже думаю можно будет, ведь файл шифруется паролем. К тому же, поскольку 32 байта в первой строке ключевого файла, openssl использует как пароль, я думаю его можно просто вот так взять, спарсить и указать в виде пароля. Но дело в том, что код зашифрованных файлов отличается, поскольку они salted, криптор его солит как-бы, каждый раз с новой солью, а хотелось бы указать ключ и вектор в виде байт, и сформировать его из ключа, например ключ - сами байты, вектор инициализации - хеш их.
В общем, буду перепиливать, если конечно - не заебёт, и впадло не станет.
>>1090816 Вижу там тоже лимит на 1 мегабайт, и если попытаться вгрузить файл побольше - вылазит окно. Там прямо так и пишется, что браузер может зависнуть, потому что шифрование идёт прямо в браузере. С использованием FileReader API в виде объекта: var reader = new FileReader(); Там в статье, написано вот что: The way around this would be to use the File System API and to write the actual binary data there, but it is supported only in Chrome for now. Но у меня и в мазиле это работает.
В общем, зашифровал паролем password файл sercret.txt с текстом "secret секрет" - получил на выходе файл secret.txt.encrypted с текстом U2FsdGVkX189UYsc7z4Ps2FPDSiOGW30MmD4afrLq9CI52QeQMbejwR/hh6PSFye4vxyLu2vsG1hyZy43OOvLQLxVMs0BZuNu5ka8mFJuOA=
Решил избавится от base64... Прописал в файле script.js вместо этого: a.attr('href', 'data:application/octet-stream,' + encrypted); вот это: a.attr('href', 'data:application/octet-stream;base64,' + encrypted);
После повторного шифрования того же sercret.txt получил другой secret.txt.encrypted с тектом "Salted__ҐL-хwжЇ®дтnћ$U>Пr#1tЭnІїТhнИU‹f" Затем решил декриптнуть его но уже с помощью openssl: >openssl enc -d -aes-256-cbc -in secret.txt.encrypted > secret.txt -k password В итоге, получил на выходе файл secret.txt с текстом: "data:text/plain;base64,c2VjcmV0INGB0LXQutGA0LXRgg==" Скопировал из него вот эту вот хуйню: "c2VjcmV0INGB0LXQutGA0LXRgg==" и понёс её сюда: http://www.motobit.com/util/base64-decoder-encoder.asp не забыв ткнуть radio там - в decode и вижу "secret Ñекрет"... Этот криптор два раза в base кодирует бинарную инфу, поэтоу и избыточность тут нехилая. Такие дела...
>>1090994 будем учить C на самом деле ничего, топовые конторы сделают на нем какую нибудь йобу, а макаки как писали на жквери так и будут дальше писать
>>1090899 Короче, просто скачал этот криптор, запхнул в папку с брайнваллетом, и подключил его фреймом. Смотрите что получилось: http://rgho.st/7vlks4Rgh
>>1090994 С++ стоило бы знать уже сегодня, для понимания работы движков, модулей Ноды, ВебГЛ, ВебВР и прочего. И сколько процентов знают-могут? Байтоёб лает, караван ПХП-ЖиКвери идёт.
Вот вроде бы довольно простая херня, но въехать не могу. Анон, что можно почитать на тему...хуй знает, как это назвать, жизненного цикла страницы? У меня на странице есть форма, мне нужно перехватить её событие submit. Вопрос: как это сделать? Нет, я понимаю, что form.addEventListener("submit", function () {}); но куда мне это писать? Просто в JS или это нужно обернуть в DOMContentLoaded?
Вот, например, один и тот же код. ========== <div id="test">Hello</div> <script> console.log(document.getElementById("test")); </script> ========== и ========== <script> console.log(document.getElementById("test")); </script> <div id="test">Hello</div> ==========
Первый работает нормально, второй отдаёт null. В принципе это логично, потому что во втором случае скрипт срабатывает до "добавления в DOM узла #test" (не уверен, что правильно формулирую). Но при этом если второй обернуть в DOMContentLoaded, то всё будет ок, что, в принципе, тоже довольно логично.
Так что делать в этой ситуации? Если я обращаюсь к какому-либо элементу на странице, то мне обязательно нужно оборачивать это в DOMContentLoaded чтобы случайно не обратиться к тому узлу, которого в DOM еще нет? А с хера ли его не будет, если с другой стороны, зачем мне подключать скрипт НЕ в конце страницы, а в начале? Или всё равно стоит предусмотреть? Или не стоит? А еще какие-то async есть, с ними, по идее, без оборачивания в DOMContentLoaded всё будет совсем плохо?
Короче, билять, если я обращаюсь к элементу вёрстки, который в вёрстке, а не динамически скриптами генерируется, мне оборачивать обращение в DOMContentLoaded или нет?
>>1091121 Если ты делаешь какой-то утилитарный скрипт, которым будут пользоваться ширнармассы, то тебе стоит предусмотреть вообще всё. Даже точку с запятой в начале файла. Вряд ли это твой случай. Если скрипт специфичный для твоей странички, тогда не трать времени на такие заморочки. Подключай всё в конце Боди.
Скоро это кончится и мы будем префетчить асинхронные модули по ХТТП2, вот тогда и заморочишься.
Отцы, подскажите новичку, как заставить ангуляр (который 1.x.x) отображать на странице шаблоны по велению сервера на ноде? (Да, ng способен и сам заниматься роутингом и отображать через ng-view шаблоны, но я хочу именно через ноду с его экспрессом.)
Этот тред посвящён главному языку будущего - 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/ для серверного кода.