Вы видите копию треда, сохраненную 7 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/xxxwww/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/xxxwww/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/xxxwww/js-thread/blob/master/Wiki/tools.md
JS-конфа в телеграме:
https://telegram.me/jsthread
Конфа /pr/ в Slack:
https://invite-me-to-2chpr.herokuapp.com/
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
CRM
На каждый чих куча бойлерплейта.
что тебе не нравится?
рельсодауны сосут за 1к бачей макс, когда жс боги ебашут от души за 3-4к бакинских в месяц
тянки текут от упоминания твой зп
Ты че, ретард? Там одной строчкой любой модуль подключается. Проще вебпака сборщик придумать сложно
))))))))))))))))))))
то чувство когда вкатился месяц назад в жс и смотришь на всех как долбаебов))))
мань, наклепай ка формочек, шоб красиво было
про жаву в факе видел, не тыкайте плз
понял, может подскажешь ресурсов по типу learn.javascript.ru , только для изучения С?
да, и собственно, почему начал изучение именно веба - в математике старше 11 класса полный ноль, или это не столь важно?
http://kozlovdenis.ru/corp#calendar
только там сервер на рельсах, а я на ноде, я что то вообще не могу прикинуть с какой стороны подступиться, даже если я буду jade вьюху генерировать по post запросу для следующего месяца, ( там же отдельный роут стоит /calendar ) как я понял, как мне тогда сгенерировать текущий месяц, что то два дня уже вообще ничего в голову не идет
в смысле там отрисовывается на данный месяц при get запросе, а потом еще POST'ом дергается на следующий/предыдущий и я хз как это на сервере сделать, подсобите хули
==========================
Есть сайт по грузоперевозкам, на котором добавили новый функционал, формы время исполнения заказа.
Выглядит это следюущим образом. Я открываю 30 заказов, выставляю свое предложение, и в новые формы, должен внести минимальное и максимальное время груза в пути.После этого разместить свой заказ.
Например, если из А в Б 600 километров, то в форму один нужно поставить цифру 2, в форму 2, цифру 3( так как в днеь машина проезжает в среднем 500 км). Если дистанция 1600, то цифры вставлять надо 4-5.
Нужен простой скрипт или расширение, которое берет дистанцию (значение легко парсится), делит на 500, и ZNACHeNIe цифру вставляет в форму 1, а в форму 2, ZNACHeNIe + 1
Так как за раз открыаю по 30-100 заказов, нужно чтобы на каждой странице только на этом сайте, без ошибок значения вставлялись в форму. А Мне нужно было выставить только стоимость заказа, свой комментарий, и нажать кнопку опубликовать.
Стоимость если низкая, то обсжудается. Но насколько я понимаю, тут работу спецу на полчаса. Ибо значения форм и дистанции легко парсятся в DOM дереве, я просто не умею создавать расширения.
=======================
если ты джун а ты джун раз только ванилу осилил едва ли тебя допустят писать SPA, ближайший год ты будешь верстать лендинги, а верстатьт их на угловом это как пытаться выебать телку в ноздрю
нет ты не понял или я есть роут /corp в нем хеш #calendar он на текущий месяц отдает разметку, чтоб переключить на следующий, надо послать post с месяцем на /calendar я спрашиваю: как мне все это сделать на jade
я вообще бекендер, хочу быть фулстак господином, и упражняться я буду на своих проектах.
не меняет того что я сказал, если будешь пилить SPA то react/angular/vue любой бери, они делают одно и то же
если будешь писать что то мелкое жкверя незаменима
Можешь сразу браться за Ангуляр, всё понятно будет раз бэкендер, на Жквери просто глянь в общих чертах, там ничего сложного нет.
Сам фулстак, в Ангуляр вкатился быстро, но вообще от ЖС блюю, конечно, очень неприятный язык.
Html сверстаешь табами, данные по праздникам получишь по аяксу, можно еще зашить прямо в html-ноду аттрибутом.
поддвачну адеквата
Тащемта, жквери намного проще жс. Зная жс, тебе вообще не придется что-то учить и понимать в нем
Вопрос такой: можно ли сделать так, чтобы парсер работал через прокси Tor, который 127.0.0.1:9150 ?
> Но насколько я понимаю, тут работу спецу на полчаса.
Нищая скупая пидорашка, пшёл вон из треда.
> Это же просто гиперуёбищно с точки зрения безопасности
С точки зрения безопасности у тебя бэк не должен отдавать секретные сведения.
Допустим ты написал роутинг на клиенте. Что мешает потенциальному злоумышленнику правильно сформировать запрос посмотрев логику раз она вся голой жопой на клиенте и открыть нужный роут?
Ребята, а здесь разве не напрямую человек state изменяет?
Правильно было бы var cForms = Object.assign({}, state.contactsForms, update);
Или я ошибаюсь?
Трепещите, JS - смерды.
CORS, аутентификация, авторизация. Ты совсем даун?
Ты идиот?
> Это же просто гиперуёбищно с точки зрения безопасности.
Ну покажи дыры в безопасности у gmail, например
Да пиздос
Да. Все рендерится на фронтенде в таком случае. Данные в json с сервера передаются.
Можно конечно их рендерить и на ноде и выдавать готовую верстку, но это редко когда нужно
В тренде Идей 003 мало чего под фронт есть
ЖСа хватит он и на фронтенде и на бекенде используется (node.js)
Нет ты не понял. Пусть он хоть код модифицирует. Сервер сам не должен отдавать данные не тем юзерам. Если юзер имеет доступ к данным, то он и так может их получить . Уж если угнали куки или логин с паролем, то тут уж ничего не поделаешь.
бампну вопрос
Вздумал я запилить велосипед микроскопический CMS в целях ликбеза. Может, послужит в качестве скелета для будущих проектов.
Поставил цель сделать решение максимально гибким и тут же встрял на первом шагу - обработчике роутов.
В идеале я хотел бы иметь возможность добавлять в рантайме новые роуты и навешивать к ним дополнительные обработчики (пример юзкейса - запрос записи в блоге проходит через цепочку хендлеров и возвращает клиенту объект, например, содержащий информацию об авторе записи, дате создания и тело сообщения. Затем, при желании, добавить на тот же роут обработчик, который внесет в возвращаемый объект дополнительную информацию о кол-ве прочтений, рейтинге статьи и проч.).
Эдакий скетч решения представлен на пикрилейтед.
Работает это следующим образом:
в app.js есть дефолтный роут, который перехватывает все обращения, начинающиеся с /api/ и передает их обработчику в route-handler.js,
в route-handler.js вызывается функция processReq, которая в зависимости от метода (GET/POST/PUT...) выдергивает из расширяемого объекта verbHandlers массив объектов, содержащих хендлеры, определяет по урлу, подходят ли они к данному запросу и, если роутматчинг выполнен, обработчикам передаются аргументы на выполнение.
Результат выполнения обработчиков записывается в res.locals по рекомендации доков Express и возвращается клиенту.
А теперь вопрос - насколько такой подход уебищен и вырвиглазен?
Знаю, что в случае с экспрессом, по-грамотному, необходимо использовать middleware-подход. Но с миддлварями я не понял, как динамически их подгружать, а те решения, что мелькают на stackoverflow, по сути своей, предлагают так же пушить новые обработчики в стек Express.
Короче, буду рад советам мудрым.
Понимаешь, что это для проектов больших? Для маленьких в принципе тоже ничего сложного, но ты охуел. Еще недавно нужно было писать галп таски и вручную писать код, а сейчас десять строчек лень что ли и пяток npm i? А если больше, так у тебя и так все сложно, ты хочешь моднейшие технологии одним кликом. Ну тогда есть йобаман.
У меня печет с подобных тредов. Какие же ебаные ньюфаги собираются, которые варятся в своем дерьме, нервничают, что мало выучили. Заводы стоят, макак не хватает. Вашего ебаного галпа и ангуляра жс хватит для 50% вакансий. Рекрутеры звонят, просят порекомендовать хотя бы джуниора. Тянку проще вытащить на свидание, чем фронтендера на собеседование. Зная только ангуляр и реакт, заикнулся о переходе в другую компанию, с ходу 40к прибавили, потому что в нашу дыру уже год ищут хуесоса, который готов писать на жс и не хипстерскую хуету.
Что же вы так аутируете? Ну сделай ТУДУ этого хватит. Фантазии хоть отбавляй у всех, покажи что просто владеешь навыками и прочитал документацию от корки до корки, знаешь какие-то конструкции (80% из которых опять же будут накручены в любом туду хэллоуворлде) и если что будешь знать что гуглить если у тебя значки :: < или эштиэмэль в коде, что бы не пугался.
> CMS
> На ноде
Блядь, какая же хуита. Ладно на клиенте, можно с говном смириться и писать на coffee, но сейчас на сервере много где есть нормальная асинхронщина, нет, надо жрать это дерьмо и на сервере.
Я про программирование, а не дизайн.
>надо жрать это дерьмо и на сервере
Надо полагать, движки Ghost, Keystone, Apostrophe, Pencilblue и иже с ними - дерьмо?
Automattic, наверное, тоже дерьмо, ибо планировали перевести кодовую базу на ноду.
>клиенте, можно с говном смириться и писать на coffee
Можно писать на CoffeeScript и в 2016, но зачем, если есть es6?
И все-таки, если оставить хейтерство в стороне, я хотел бы разобраться с хендлерами роутов. Такой подход, как у меня. допустимо использовать для динамической загрузки новых роутов и обработчиков к ним?
Или есть более элегантный способ решить задачу?
> Ты про package.json знаешь хоть что-нибудь? Пздц, откуда вы такие вылазиете
Знаю, чувак. Но у меня проблемка. Собираюсь галпом, и в галпфайле есть таска watch, которая юзает модуль browserify-hmr. Этот hmr у меня естественно в devDependencies.
В продакшне же они не ставятся. Вот и прошу совета у добрых людей, как лучше сделать.
Не, это всего лишь тренд. Писать изоморфный код тяжелее.
Уебищен он частично.
1. Внутри объекта лежит URL, он должен быть на уровне конфигурации выше, чтобы экономить время того разраба, который будет палить конфигурацию (слишком долго).
2. Насколько я понял, у тебя каждый раз пробегает по всем обработчикам что ли? Поправь, если ошибаюсь.
>2. Насколько я понял, у тебя каждый раз пробегает по всем обработчикам что ли? Поправь, если ошибаюсь.
Все верно. Я осознаю, что это пиздец - с ростом количества обработчиков сервер будет подолгу тупить, перебирая их и находя нужные. Конечно, это просто скелет, не для высокой нагрузки, но тем не менее.
>1. Внутри объекта лежит URL, он должен быть на уровне конфигурации выше, чтобы экономить время того разраба, который будет палить конфигурацию (слишком долго).
Второй вариант, о котором я думал, несколько мене гибкий, но более читаемый - назначить несколько дефолтных роутов, а в объекты, содержащие хендлеры - включать не урл, а условный алиас, например {matchGroup: 'category-lookup'}.
Выглядить это будет примерно так:
app.all('/api/category/:id', catHandler), где catHandler будет точно так же пробегать по массиву хенделеров, но искать обработчики не по урл, а по соответствующему алиасу.
Но это все сорта одного говна.
Как, сохранив универсальность (т.е. не хардкодить роуты и хендлеры к ним в сам движок), грамотно составить расширяемую систему обработки запросов? Можно ткнуть меня в гитхаб какого-нибудь проекта, использующего подобный подход?
Или, быть может, какой-нибудь фреймворк уже содержит такую реализацию (расширяемость роутов и цепочки хендлеров)?
>Конечно, это просто скелет, не для высокой нагрузки, но тем не менее.
Так вынеси в конфигурацию URL, тип запроса и функцию/название функции. Тогда это будет обрабатываться в 1 операцию.
Что-то типа:
handlers = [
['get', '/', 'index']
];
А затем что-то типа controllers = {
index: function (req, res) {
//...
}
}
Ну, и вызывать соотв.
> и иже с ними - дерьмо?
Да.
>>872717
> если есть es6?
Ой, добавили модули и стрелочные функции в говно, теперь это говно с сахаром!
>>872745
Или что?
Алзо, твой подход вырвиглазен и на сервере будет хуёво поддерживать. На клиенте еще относительно размера приложения сгодится.
Хочешь CMS - пили на модули, ядро, middleware, расширения с роутингом, базой. Если используешь REST подход, тогда модульность очень важна. Иначе все превратится в кашу и будешь 5-6 раз переписывать ядро, как это в Drupal делают который год.
>Алзо, твой подход вырвиглазен и на сервере будет хуёво поддерживать.
Мудила, его подход позволяет развязать сущности. Реализация говно, это да, но сам принцип - держать контроллеры, конфигурацию и инициализацию отдельно - не только легко и удобно поддерживать, а еще и горизонтально масштабируется.
>> cms
>> для высокой нагрузки
>Ты себе хорошо её задачи вообще представляешь?
Cms это отдельная подсистема проекта, она может быть как в хайлоаде, так и в чем угодно еще.
Переосмыслил то, что ты сказал - результат на пике.
В общем, при таком подходе перебор осуществляется только по массиву роутов, что с точки зрения быстродействия - оптимальный подход, нежели перебирать массив хендлеров.
И, хотя объекты, хранящие обработчики и роуты, теперь явно разделены, в общем и целом код, как мне кажется, стал говнистее.
>>872790
>пили на модули, ядро, middleware, расширения с роутингом, базой
Так ведь я и хочу так сделать. Приведенный код выше - лишь набросок обработки запросов / роутинг.
Подразумевается, что verbRoutes и controllers - расширяемые объекты, вынесены в отдельный модуль и в процессе работы сервера могут изменяться.
>>872791
В контексте моей задачи - это обертка на CRUD'ом, если совсем уж упростить.
В целях быстрой разработки типовых проектов (блоги, статейники и проч.) хочу создать максимально простое и гибкое решение. Просто фана ради, говорю же, НЕ хайлоад, об это речи даже не шло.
>в общем и целом код, как мне кажется, стал говнистее.
Без конфигурации этот код был бы в разы хуже.
>В общем, при таком подходе перебор осуществляется только по массиву роутов, что с точки зрения быстродействия - оптимальный подход, нежели перебирать массив хендлеров.
Ты можешь обращаться к объекту, а не к массиву.
Слишком сложная структура данных для простого действия - маппинга контроллеров на url.
Олсо, есть еще подход, если ты не собираешься передавать код кому-то, то convention over configuration тебе поможет.
> for (const handler of handlers) {
app[handler[0]](handler[1], controllers[handler[2]]);
}
>
Пофиксил.
>
Если ты здесь, отзовись!
cъеби в /фг, пидор
Спасибо за рекомендации. И про CoC прочитал.
Алсо, анон, ты можешь вполне резонно обвинить меня в непроходимой тупости, но каcательно твоей реализации, если в цепочке миддлварей "index" или "addSomething" добавился новый обработчик, как экспресс будет отправлять результат? Будь то res.send, res.json или res.render.
Говоря проще, как в цепочке обработчиков задать последний обработчик, который и будет отправлять результирующие данные?
Для статичной конфигурации актуален такой код:
app.get('/route', [arrayOfMidwares], (req, res) => { res.json(res.locals); });
Будет ли такой код справедлив и для динамически изменяемого массива arrayOfMidwares? Что-то мне подсказывает, что нет.
что есть что:
cursor = первый понедельник данного месяца, для ноября это 31 октября дальше в while цикле cursor инкрементится на 1 день, и проверяется условие http://momentjs.com/docs/#/query/is-same/
по идее цикл должен останавливаться на последнем воскресении данного месяца, для ноября это 4 декабря, там в консоли справа видно, что он показывает false и пиздует дальше
WHY SO ?
atom гитхабовский, шторм мой комплюктер не вывозит
>если в цепочке миддлварей "index" или "addSomething" добавился новый обработчик, как экспресс будет отправлять результат?
Цепочки миддлварей обрабатываются ДО контроллеров. Контроллер это последняя миддлваря, в которой не вызывается next().
>Будет ли такой код справедлив и для динамически изменяемого массива arrayOfMidwares?
Я не понял, зачем ты так делаешь, но вся динамика должна заканчиваться на моменте до начала инициализации.
я еблан, он по миллисекундам сравнивает, дочитал доку которую сам же скинул
Если тебе надо кастомно проводить реквест через миддлварю, в зависимости от url, то это надо зашивать в конфигурацию.
А если, не дай Босх, мы захотим в процессе рантайма создать новые роуты и добавить/удалить обработчики к ним?
Можно, конечно, сослаться на проблему в логике и сказать, что делать так не стоит, но вот если такой юзкейс приведу - используется конфигурация в несколько инстансов ноды позади nginx для балансировки нагрузки. Таким образом, если мы хотим внести изменения в роуты и обработчики, нам придется выполнить процедуры по обновлению роутов/хендлеров и перезапускать ноды.
Так наверняка и делают, но проще, когда есть хотлоад сделать это несложно, но это другой вопрос модулей и в запущенных инстансах сразу отражаются изменения.
>>872912
>то это надо зашивать в конфигурацию
ПЕЧАЛЬНО, ведь теряется гибкость решения.
Почему контекст теряется в том месте?
она бы и "давала ссылку" если бы было
this.getBoilTime = function ....
а там
function getBoilTime
>Таким образом, если мы хотим внести изменения в роуты и обработчики, нам придется выполнить процедуры по обновлению роутов/хендлеров и перезапускать ноды.
Ну, да, ты делаешь пуш в репозиторий, а потом делаешь пулл на сервере и ребут. Не надо маяться хуйней, плиз, это не кейс. Перезапустить сервера не так долго, чтобы это стало проблемой.
>ПЕЧАЛЬНО, ведь теряется гибкость решения.
Нихуя не печально, сделай хук, чтобы после пула сразу был релоад инстансов.
У тебя что, 1000 инстансов что ли?
Понимаю. Просто все время, как читаю ljs.ru считал, что при создании объекта с помощью new все this получают ссылку на объект. А оказалось хуем по губам, вот жеж открытие то блять.
Внезапно подумал, что у тебя, видимо, и правда очень большой проект. Можно попробовать посылать ноде сигналы, чтобы прочла особый формат обновления конфига, зарегала контроллеры и добавила в существующий конфиг изменения. Будет то же самое, но с возможностью динамически обновлять конфиг.
>добавила в существующий конфиг изменения
При условии, что у каждого инстанса ноды свой конфиг, конечно.
Есть вариант не заморачиваться и собирать галпом, т.к. вебпак я в рот ебал за его замороченность, но хочется всё сделать по уму и красоте.
Анон, посоветуй что или подкинь ссылачей на толковые шаблоны.
Алсо, буду очень признателен, если кто сможет пояснить как работает система подгрузки стилей в компонентах. По моим догадкам подгружаются только те файлы, которые используют компоненты в данный момент. Но я в этом не уверен и хотелось бы раскурить эту тему поглубже. Да и вообще тему модуль лоадеров.
Стою на асфальте я в лыжи обутый...
Методы класса в js задаются через прототип, в таком случае они действительно получают нужный тебе this.
Когда ты объявляешь функцию через function и не присваиваешь ее в переменную, как в твоем случае, функция по-умолчанию получает либо глобальный контекст, либо undefined в strict режиме. А вообще, используй class и не еби мозги
В данный момент, большинство сборщиков делают один большой bandle.js и дергают из него модули по необходимости, т.е. подгружаются один хрен все модули, это обусловлено тем, что http не умеет в параллельную загрузку.
Webpack умеет в ленивую загрузку, если хочешь по красоте - используй его.
Окей. А конкретно за systemjs не пояснишь? Почему-то же появился как логичная замена вебпаку да и сами гугловцы советуют его.
>большинство сборщиков делают один большой bandle.js
Та же шляпа и со стилями. Кто-то просто по-старинке подключает один минифицированный файл, но в чём-то же есть прикол инджекта их прямо в компоненты. Хотелось бы понять в чём именно профит и как это работает в рантайме.
>Хотелось бы понять в чём именно профит и как это работает в рантайме.
В http1 лучше делать минифицированные файлы. Загрузка по требованию это для мобил, чтобы экономить траффик.
цикл
Сам студент одного недотопвузика, недопогроммист. Особо еще ничего не понимаю, но так вот.
Есть программа, которая может написать скрипт запросом? Ну по типу того же харкача:
1 раз в n секунд обновить страницу
2 сохранить посты/файлы постов (опционально можно было бы как-то реализовать поиск нового треда, его открытие и скачивание не тамбнейлов, а самих файлов, но как сделать пока хз)
3 goto 1
Есть идейка просто реализовать подобное записью кликов мышкой и спецпрограммой для загрузки сайта, но так можно пропустить посты и закачиваются только тамбнейлы, плюс костыли и комп по факту неактивен
асимптотически одинаково
перемудрил чота ты
ну я глянул свойства объекта Request:
там только
req.baseUrl
req.originalUrl
req.route
но это все куда пришел запрос, то есть на /hui
а мне надо узнать откуда /vagina || /asshole
и это инфа лежит в req.get('referrer') правда вместе с хостом и проч. ебатенью
сейчас вот так работает, пока, просто должен быть путь попроще
// http://localhost:3000/hui => [ 'http:', '', 'localhost:3000', 'hui' ] => // hui
const from = req.get('referrer').split('/').slice(-1).toString();
там один хуй лежит http://localhost:3000/butthole
и мне так и так придется его преобразовывать т.к. мне надо знать именно /butthole или /cunt
алсо в доках вот так http://expressjs.com/en/api.html#req.acceptsLanguages
энивей спасибо анон, я просто думал что для такого уже есть метод у Request и я его просто не знаю
нет, я тот гений, что переносит этот сайт
http://kozlovdenis.ru/
на ноду
и там для календаря разные ивенты:
корпоративы http://kozlovdenis.ru/corp#calendar
или
свадьбы http://kozlovdenis.ru/wedding#calendar
и мне надо узнать какой тип данных отдавать и для этого /calendar должен узнать откуда пришел запрос
http://kozlovdenis.ru/corp
или
http://kozlovdenis.ru/wedding
а че не так то ? В смысле я знаю что эту инфу проще в запрос включить на клиенте, но я планирую клиент тоже переписать на что то помоднее jquery
тамада же, это его хлеб чем больше всякого говна тем паче
зачем вообще переносить сайт-визитку тамады на ноду блять? ты бы еще на хачкеле его написал, борщеед блять.
Будет асинхронный сайт тамады. Я бы над оптимизацией подумал прогрузки всего этого говна, очень долго и микролаги
блять а как вообще ты получил такую задачу как перенос этой хуиты на ноду? ты как-то тамаду этого уговорил или че
алсо
>на джангу слишком скучно, т.к. всю ее вызубрил
что же ты с такими адскими познаниями занимаешься модернизацией сайта тамады? он твой друг?
чето тебя не очень смешные вещи веселят
ну тогда сделай на фласке, один хуй там прослойка как и express
родина может спать спокойно
Функция, по всей видимости должна выдать проихведение чисел из всех массивов, которые находятся внутри массива-аргумента.
Вместо console.log тебе нужно умножать
первый день знаком с программированием?
Он в конце пишет что такой способ наследования используется редко. Т.е не шибко задрачиваться этой хуйней?
напрямую
А нахуй там нода? wordpress - красный максимум в качестве бека для подобного говнеца, ну и реверс-прокси nginx
Да
Особенно >>872832 анон помог.
Я вот поразмыслил немного на досуге, и решил пересесть со стула Express на Koa.
Там как-то логичнее реализовано подключение мидлварей, плюс Коа следит за изменениями в цепочке мидлварей искаропки.
В итоге обернул код по подключению/отключению обработчиков в единый класс, требования к конфигурации роутов оставил пока прежней, но это можно изменить.
На выходе имеем динамический роутинг в рантайме, модульность и, надеюсь, читаемость.
Сорри за офтоп. Есть одна минска команда, занимающаяся разработкой стартапов (преимущественно) для иностранных заказчиков, используя моднейшие технологии: риакт, ангулар2, ноджс на сервере и т.д. Ищем фронтенд джуниора на полный рабочий день. Варианты с удаленкой не рассматриваются. По всем интересующим вопросам пишите на
- jN*OsjobminskANUSg"%GmailPUNCTUM*-Ycom
- telegram @hitler_hitler
Алсо работникам выдают корпоративные макбуки/мини
> Или, быть может, какой-нибудь фреймворк уже содержит такую реализацию (расширяемость роутов и цепочки хендлеров)?
http://doc.akka.io/docs/akka-http/current/scala/http/routing-dsl/index.html
Сделай такое же дерево хендлеров, в жс поделии это будет всяко проще чем сделано в хайлоад-реалтайм-стриминг акке со статической типизацией.
Найс выборка.
В Акке красиво, конечно, сделали.
Приятная глазу древовидная структура вида
роут -> метод -> цепочка контроллеров.
Сейчас в моем варианте конфиг обработчиков импортируется по такой структуре:
метод -> роут -> цепочка контроллеров/генераторов
Причем в конец цепочки всегда пушится финальный контроллер, ответственный за отправку данных, а новые в рантайме аншифтятся в эту цепочку.
Сама цепочка передается экземпляру koa через koa-compose.
Можно удалить цепочку контроллеров для определенного роута, в этом случае, на самом деле, останется только один контроллер (например, для редиректа) бля, только не учел, если по этому роуту снова возникнет желание затолкать контроллеры.
На первый взгляд работает.
Почему все угорели по иммутабельности?
Идея, что все данные надо хранить в одном месте мне ясна.
Но нахрена при каждом измении 1 на 0 пересоздавать всю структуру и запускать все редьюсеры?
Это как если бы для каждого изменения переменной в программе она бы переинициализировалась и целиком пересоздавала весь свой memory footprint.
Не понимаю выгоды.
https://stackoverflow.com/questions/34385243/why-is-immutability-so-importantor-needed-in-javascript
Здесь пытаются доходчиво объяснить, но некоторые моменты спорны.
Например, тот же "Performance improving" в языке, который изначально предусматривает мутабельность.
Это как чистые функции в реакте - они, бесспорно, ведут себя предсказуемо и имеют более читаемый код, но относительно их быстродействия ожидания сильно преувеличены.
Facebook обещает, что, дескать, когда-нибудь, быть может даже в обозримом будущем, все будет заточено под чистые функции и иммутабельность, и вот тогда-то вы и почувствуете нихуевый перформанс бустинг.
А в чем проблема? Из белорусской мухосрани съехать в Минск вполне хорошее решение.
Да и тут много вообще анонов не из России, а вообще с СНГ.
да даже и для анонов из россии. это же как минимум прикольный жизненный ивент. вот ты борщеед без шансов найти работу, а тут зовут свои же двачеры, да еще с такими технологиями работать! будь я после школы и живи в рашке, согласился бы хоть и на татарстан(не знаю, где это, но видел прикольную картинку с дельфином).
Спасибо, многие вопросы отпали. Короче, очередная смена парадигм...
К слову, какой-то философ выдвигал идею, что вселенная тоже иммутабельна и по сути, дискретна во времени - пересоздается с изменениями в каждый момент времени.
Только начинающих в ангуляр2, но имеющий опыт работы на фронте в 2 года берёте? :3
Вопщем всем добрый день. Помогите кто может, пожалуйста. Суть - через JS нужно заполнить родительский div дочерними div'ами, у которых уже прописаны свойства. Должно получиться аля тетрадь в клеточку. Вижу два варианта. Количество блоков произвольно по высоте и ширине. К примеру делим ширину экрана на первые два числа (1920/19), получаем число, это число блоков по ширине, и заполняем ими главный блок. По высоте от начала экрана и до конца. Второй вариант тупо заполнить родительский блок заранее заданным количеством мелких блоков. И вот главный вопрос - ка должен выглядеть код для всего этого безобразия?
Если честно, таблицы не рассматривал, просто потому что давно ими не пользовался. Допустим. Но вопрос тогда - как создать и задать нужное кол-во столбцов и строк?
Вебпаканы, поясните, Webpack 2 уже готов к применению в продакшене? И есть ли у него еще какие-то киллер-фичи, кроме три-шейкинга?
@
fdsfsd
Я в JS нуб. Рисовать только умею, да простенькую хрень на html+css написать могу.
> Но вопрос тогда - как создать и задать нужное кол-во столбцов и строк?
http://jquery-docs.ru/manipulation/append/
https://learn.javascript.ru/while-for
Что учить react или angular?
Ну вот серьезно каково ваше мнение? Гребаный гугл обновит ангуляр уже в марте 2017. А потом каждые 6 месяцев. Фейсбук вообще не чешется но все и так понимают что реакт будет обновляться.
Что лучше? Что лучше для поиска работы? Что лучше/легче учить? Что блять правильнее?
от 2 ангуляра ты ахуеешь чуть более чем полностью, реак только вьюха, хочешь быстрые бабки, учи первый ангуляр, будешь поддерживать legacy
Тогда уж советуй просто ангуляр1.
То что
>реак только вьюха
не делает его простым в освоении. Говнокод хуячить, конечно, на чем угодно можно, но если делать все красиво, правильно и как надо, то реакт очень не простая библиотека.
>>874267
Чего бояться то? Новый ангуляр это просто улучшенная и обновленная версия 2. Радоваться надо, что фреймворк улучшается! А то что боишься изменений, то может тебе лучше не в веб вкатываться, а во что-нибудь другое?
а до этого еще год(или больше) нихуя не читал по жс
а тут открыл ес6 че-то и прихуел
во-первых как настроить ебучий сублайм переходить на функции объявленные через стрелочку?
во-вторых хули пастебин не подсвечивает синтаксис http://pastebin.com/pK6FAXnf ?
в-третьих это годнота я гарантирую это. собираюсь обмазываться генераторами и промисами по полной
Классно у них там, уютно
> во-первых как настроить ебучий сублайм переходить на функции объявленные через стрелочку?
Ват
> во-вторых хули пастебин не подсвечивает синтаксис http://pastebin.com/pK6FAXnf ?
Подсвечивает же
> в-третьих это годнота я гарантирую это. собираюсь обмазываться генераторами и промисами по полной
Промисами нужно было несколько лет назад еще обмазаться. Ты на колбэках писал, что ли?
>ват
>findSuspiciousThreads = (threads) =>
вот так если объявить функцию на нее не будет работать go to definition из места где она используется
>подсвечивает же
let игнорит например
>на колбэках писал
на промисах офк но без генераторов
>генераторы
>yield
>function
Ну пиздите из питона, ну пиздите нормально, yield from (уж не говоря про await), async function.
Но нет, мыж жопаскриписты, нам надо все запутать, как можно более нечитабельно и неочевидно все сделать...
И вот там в файле https://github.com/olegpolyakov/angular2do/blob/v0.5/app/app.component.ts
использованы directives в @Component, но сейчас мне это возвращает ошибку, видимо приложение устарело за полгода и свойство directives уже удалено, так как теперь будет выглядеть передача директив?
Без них я получаю ошибку в браузере:
у меня баребух
че делать пацантре
Всё, разобрался, оказалось теперь достаточно вынести подключение компонентов в app.module и подключить в @ngModule как declarations
Вот к примеру стандартный пример Todo на Angular2 - я хочу переносить данные между сессиями, как лучше хранить данные?
ты хочешь к бд подключиться из браузера
ну блять, как думаешь, вэри бэд практис это или на пол шишечки?
Хм, я не совсем тогда понимаю концепцию ангуляра, пишут же, что это MVC. Тогда чем занимается Model? Хранит данные во время одной сессии/отправляет данные на node/php?
Может кто-нибудь по хардкору пояснить, в каких связках использовать Angular2 и в чем его назначение? Вот к примеру всякие react/JSrender и тд - я c ними толком не знакомился, но по тому, что я слышал - это шаблонизаторы.
бля даж хз че те ответить,какой-то ты даун без элементарных знаний. иди гугл дрочи, тебе рано с людьми разговаривать
Каких элементарных знаний? Я node сделал несколько тасков по парсингу магазинов и миграции данных между api, включая несколько проектов на sailsjs.
Может тебе не хватает элементарных знаний раз ты не можешь в двух словах сделать обзор на ангуляр.
> ангуляра, пишут же, что это MVC. Тогда чем занимается Model?
MVC это не о том "куда пихать шаблоны, а где соединяться с БД", MVC это о разделении ответственностей, разделении данных и представления. Модель это не обязательно БД, поэтому видимо тот анон и пишет про отутствие у тебя элементарных знаний.
а ты дружелюбный
Для IE8 пишешь что ли?
Найс с твоей мамкой был, за 8 месяцев до твоего рождения.
А кривой пиздинг синтаксиса генераторов очевиден.
Почему бы тебе в detectButthurt проверяющие функции не вызывать так:
return f1() || f2() || f3()
Or же ленивый, не будет вычислять остальное, если где-то уже true. Оптимизация.
You're no fun anymore
Ну, по мне так
dogsOut(thread.comments) не хуже читается, чем dogsOut
а уж синтаксис
let имяПеременной = имяПеременной();
красоты точно не добавляет.
Но тебе виднее, тыж творец.
>dogsOut(thread.comments) не хуже читается, чем dogsOut
ну ты до конца-то пиши. полностью это будет так:
return subjContainsKw || capsOn || dogsOut;
vs
return expr.test(thread.subject.toLowerCase()) || checkCaps(thread.comment) || countDogs(thread.comment) > 0;
ну даже не знаю
не хочется каждый раз галпфайл ваять
>>874680
а есть что-нибудь такое, что мне не надо будет устанавливать в систему; что-нибудь без гуев
Вообще можно и даже не считается чем то плохим. Но надо смотреть каждый случай.
И да, я видел проект где можно дергать напрямую из бд что захочется.
все равно ставит пробел между yield и звездочкой при форматировании
html=document.body.innerHTML.replace(/а/,"б");
document.body.innerHTML=html;
Сама программа: http://ideone.com/GXAPfl
на кого собеседовался?
1. Как используя mongojs и ангуляр-1/express добавлять новую коллекцию при нажатии submit button?
2. Как получить доступ к этим коллекциям и распарсить их вместе с данными с помощью ng-repeat?
пиздос, я бы походу не прошел.
Хотя в целом понял что делает прога. Либо бы сократил ее, убрав промис (зачем он вообще тут?).
Да там реально элементарно, просто мы тупим. должно быть на джуна, нахуй мидлу такую херь подсовывать
Задачка годная, спору нет. Просто у меня пробелы в знаниях синтаксиса жс, те же промисы мельком прочитал пол года назад и забыл. А так вполне себе ок, одобряю.
Ебать, как же у меня горит. И такое спрашивают в крупной московской фирме? Почему мне в средне-фирме не ДС\2 просили на доске алгоритм обхода дерева в глубину написать и набросать хэш таблицу.
если для тебя FizzBuzz сложно, то лучше действительно выпились
Не знаю, зачем спрашивать обход дерева в вебе. Они бы ещё попросили компилятор для простого языка написать. Скорее всего это была паршивая конторка, где все видам кодеров тестируются по одной методичке.
На самом деле обход дерева не сложная хуйня, но в вебе рили бесполезная.
Ты не понимаешь базовых приципов построения приложения
Твой запрос начинается с кнопки, то есть ангулара -> его принимает экспресс, валидирует его Можешь ли ты создавать коллекцию? Можешь ли ты брать с неё данные? Можешь ли ты писать в неё данные? и делает нужные запросы в базу -> монго. Просто база, ей вообще всё равно кто и что с ней делает, её задача исполнять нужные запросы
Допустим, я студентота, вкатываюсь в жс (ангуляры 1-2), пилю пет проекты, мечтаю о 300к/с.
И тут мне друг предлагает пойти пхп кодером в одну вебстудию за 20к в месяц, плюс премии.
Стоит ли соглашаться? С пыхой я уже работал и вернуться в нее не составит особых проблем, но есть несколько камней.
1) Время, которого и так немного из-за универа и всякой хуйни типо лаб на жабе.
2) Пхп вряд ли мне в будущем поможет перекатиться на ангуляр господина 300к/с.
Или я не правильно рассуждаю и надо соглашаться на такую подработку?
Допишу.
Официального опыта пока нет, но пилил пару приложений за которые все то стыдно фрилансом, как раз на пхп. А тут официальная вакансия и деньги все таки. Ну и опыт работы со всеми вытекающими.
>>874965
Ну так как-то не очень корректно сравнивать. Всё-таки ты можешь быть как пыхарем, так и ангуларщиком в пределах одной вакансии. Одно другому не мешает, более того - дополняет.
Ты хочешь только фронтендщиком быть или фулстак-господином?
Да, ты прав, что можно иметь в рукаве пхп/ангуляр стак и с ним тоже, наверняка, есть работа.
И многие мечтают даже о вакансии пхп кодера.
Но тогда времени не будет хватать для изучения жс, ангуляра и всего прочего.
А вообще в планах еще expressjs для общего развития посмотреть.
Не знаю, как нагуглить, с помощью чего и как это делается, неужели с джаваскриптом. Сам учил пхп и базы данных, только немного касался джаваскрипта.
Это достаточно сложная задача, чтоб запилить её вообще без знаний верстки и жс.
Самый простой путь для тебя это просто нарисовать два вида "лепестков", открытые и закрытые. И просто менять их жс'ом при клике
>Ты не понимаешь базовых приципов построения приложения
Ок, есть толковая литература по архитектуре mean приложений с примерами?
Дело же не в mean. У тебя нет представления о работе интернета и общения клиента с сервером. Почитай про http, сессии и авторизацию. Mean это стек, он за такое пояснять не будет, он представляет собой просто шаблон из инструментов для построения клиент-серверного приложения
Разве fancybox не берет это на себя? Там же вроде указываешь атрибут, а скрипт подгружает по требованию
Че то я затупил пиздец, у фансибокса же просто пишется ссылку на картинку, а он ее не грузит заранее, а именно после клика. Чет я прогнал пиздец.
хз как но верстать это будет
Внимание, вопрос. Как сделать так, чтобы на клик реагировала только часть картинки без альфа канала >>875008? Каждый сегмент же это прямоугольная картинка, но по факту мне нужно реагировать только на его "треугольную" часть.
Слушай, может попробуешь всё это отрисовать через svg или canvas, и тогда легче будет выловить нужную область?
>крупной московской компании
>checkingNum
Что-то у них как-то печально с английским у девов для большой московской компании.
У body нет ничго что называлось бы main1. Возможно вы имели в виду:
>; main1.appendChild(div)
повёлся на nmp. Сделал проэкт на реакте через это заклинание
npm install -g create-react-app
create-react-app hello-world
cd hello-world
npm start
иии собно хуле,миллиард папок, еще срань какаято,хуй пойми где что и зачем
поясните плз или дайте ссылку на гайдик какой-то ибо нихуя не нагуглил
пиздец блять все разобрался
оказывается когда берёшь элемент getElementsByName
то их там типо дохуя
а когда просто id берешь то он там типо один и всё норм
Тебе туда вообще смотреть не нужно. Просто пили свое приложение
А на листике надо было решить? или на компьютере с дебагером?)
const mySchema = Schema{
image: {type: String, default: 'http://url.jpg' }
}
Не работает то есть в html'е стоит <img src=""> , зато если вручную вбить то все ок. И это не только с картинкой, вообще по дефолту ничего не ставится. В чем загвоздка?
сегодняшняя версия es6 дрочильни
http://pastebin.com/ThNcMa3K
на этот раз с монго
завтра порефакторю,после завтра вторую часть запилю
спасибо. чес гря не знаю, что посоветовать. я мало читал, что конкретно не помню и не дочитал ни одной книжки до конца. из good parts может половину осилил.
алсо, хочешь верь,а хочешь нет, но я писал все в жопу укуренный, а сегодня еще и подвыпивший.
поэтому завтра рефакторинг!
во первых use strict нахуй не сдался там.
на template literals ты явно хуй положил?
замени underscore на lodash, и если уж используешь только _.filter, то можно импортнуть только его from 'lodash.filter'
а вообще молодец, я нихуя не умею :(
Хочу вам рассказать о моей истории, она печальна и от итога хочется только плакать. Её можно пропустить, самое интересное про джаву в конце.
Я 5 лет отучился на юриста в гавноиституте, на 5ом курсе типа стажером в 2011 работал за 10тыщ р. Получив диплом я просто не знал что делать и пошел в армию. Там было по началу не очень, но потом норм. Вышел и пошел работать монтажником в Билайн, туда позвали друзья. Потом все крымнаш и Билайн сразу подразвалился, после чего я лишился работы. Решил пойти по специальности и начать с низов. Устроился в суд. Проработав почти 2 года предложили стать помощником судьи, но я не решился и свалил. Сейчас работаю за 30 тыщ (скоро будет 35) и мне это немного не нравится. Я считаю себя не плохим специалистом, что доказывает мою профессиональность на нынешнем месте, где начальник, который выступает экспертом на телевидении, дает мне вести дела своей жены и тёщи. Ну потолок в этой фирме 45-50. При этом мешать с говном будут. Юриспруденция это вилы пацаны. Серьезно, гнилая система. Что суды, что юристы - паразиты системы. Нет правды в ней. Нет силы.
А теперь о джаве. Я смотрел вакансии разных специалистов и программисты не плохо получают. Решил начать изучать. Полез на двач, наткнулся на эту тему, месяца два назад. Но долго я тут не тусил и пошел на ютуб. Там попытался пройти 2 видеокурса, но у меня не получилось даже настроить джаву, что бы проходить уроки. Уже как две недели копаюсь и пытаюсь создать свой сайт для старта бизнеса. В итоге дошел до уроков html5. Залез на сайт с работой и опять там нужна джава, в вакансиях html.
Вопросы. Реально мне в 28 лет, переучиться на программиста? Можно тут найти наставника, который за скромную 1000р будет мне говорить что изучить и отвечать на вопросы? Вёрстка сайтов самое простое?
>2k16
>Путать Джаву и Джаваскрипт.
Классика.
Первое что ты должен был усвоить - это то, что это разные языки. Вроде уже не школьник, человек с образованием. Видимо, тебе трудно будет. Можешь, конечно, попробовать, если есть желание, время и упорство, но не факт, что у тебя что-то получится.
Насколько плохо оставлять ассерты в продакшн коде?
Смысл в том, что ассерты у меня используются в цепочке верификации введенных данных (например, до передачи их функциям по работе с БД). Сама цепочка заключена в конструкцию try/catch с последующей обработкой эксепшонов, т.е. стектрейс у меня не вываливается в stdout, а месседж из эксепшона возвращается клиенту с описанием ошибки.
Достоинством такого подхода я вижу превосходную читаемость, отсутствие внешних зависимостей и конструкций вида if-else-then/switch.
В прошлый раз анон сказал, что в продакшне нужно отдельные хендлеры вешать для верификации данных и обработки ошибок. Но чем такой вариант не подходит для использования в продакшне?
Если ты не тролль, то учти что время указанное в оп посте при таких дебильных вопросах да еще и в 28 лет можешь смело умножать на три. Итого к 30 может быть ты и станешь джуном. Хуйня полная. Советую тебе лучше гастером в европу валить, может и осядешь там где нибудь.
Придумай что-то по проще, зачем страдать хуетой.
Открою секрет, пользователей тошнит от сложного, пусть даже "красивого" дезайна. Чем проще и понятнее интерфейс, тем меньше тошноты испытывает юзер.
Просто нужно понимать, ты делаешь сайт для детей или взрослых людей. Если детей, то анимации и свистоперделки оправданы, а если для взрослой аудитории, то это дерьмо будет только вызывать раздражение.
К тому же учти, что есть большой класс пользователей, у которых по дефолту js отключен и у тебя сайт не будет у них работать. Всегда нужно дублировать функционал и тестировать работу сайта без js и с ним.
> есть большой класс пользователей, у которых по дефолту js отключен
Пользователя ie6 что-ли?
>Всегда нужно
Не всегда, только если сайт информационный и не подразумевает сложных взаимодействий.
>есть большой класс пользователей, у которых по дефолту js отключен
Таких даже не 5% (95% людей — быдло, ко-ко-ко), а каких-то 0.5%. Максимум. Надо быть поехавшим, чтобы по дефолту отключать js в браузере.
>Всегда нужно дублировать функционал и тестировать работу сайта без js и с ним.
как там в 2005?
По второй половине, той, что снизу, ты неправ, Федя. У инстанса (rabbit) свойство "eats" не меняется после изменения оного у родителя.
А вообще, неплохо тебе почитать вдогонку про ключевое слово new в JS.
Объекты копируется по ссылке.
В первом случае ты перезаписал ссылку в одном месте, но ссылка в __proto__ объекта осталось.
А во втором случае ты делал операции по ссылке.
Блядь, проебался, беру свои слова взад.
Изменял свойство как:
Rabbit.prototype = {eats: false}
Но рекомендую всё же прочитать что такое операции по ссылке и копирование по ссылке.
>>875518
>>875518
Ага, спасибо. Почитаю, просто немного запутано получилось.
Получается, что объект жив пока на него есть ссылка. Т.е фактически роли не играет кто его создал, важно чтоб на него кто-то ссылался. И если даже родитель, изменит свое свойство, то сам объект жив в другой ссылке. Ну а изменения этого объекта, это изменение, т.е работа с самим объектом? Правильно понимаю?
Что там сложного то? Прототипы это та же самая ооп параша, только без ебалы вроде private, protected, virtual, sealed и прочего.
Я не из тех анонов, что пидорят JS за его архитектуру, и понятно, что вышеприведенный пример - одно из свойств языка, но, блядь, у этой хуйни есть полезный/жизненный use case?
Разве инстансу не должно быть поебать на родительский объект, как бы последнего не содомизировали? Разве инстанс при new не должен создавать изолированную копию всех свойств?
Должен. JS говно, смирись.
>Правильно понимаю?
Почти, но не совсем. Никакого такого родителя так-то нету по факту.
Это нужно понимать по-другому ИМХО:
prototype = это свойство функции в котором лежит объект и при создании объекта с ключевым словом new в его (новосозданого объекта) уже не скрытое свойство __proto__ попадёт ссылка на объект которые лежит в prototype. А правила для работы с объектами везде одинаковые, всё остальное верно
>Разве инстансу не должно быть поебать на родительский объект, как бы последнего не содомизировали? Разве инстанс при new не должен создавать изолированную копию всех свойств?
Нет.
В скриптоте вообще строго не должно быть по факту все ООП поеботы. Вот этот весь синтаксический сахар ввиде индусского ооп в ES6/TypeScript сделать во-первых:
1. Для того чтобы индуссам было понятно.
2. Огромные проекты требует тупого и примитивного ООП которые должно быть вшито в язык. Чтобы обезьяны могли поддерживать.
А так нахуй не надо.
всей ООП, сделано
Все всосал. Спасибо за помощь. Бля как-то ООП в функциональном стиле проще, что ли. Ну я уже привык, каждая тема это вызов для человека который никогда программированием не занимался.
Вот в CL отличная идея ООП, но clos веб обезьяны не осилят.
Если тебе нужно понять попсовое (Джава, крестовое) ООП, то JS в этом тебе не поможет, это так, на всякий случай.
Я понимаю, что ты знаешь что-то очень важное, но мне бы пока к этой хуйне привыкнуть)
Все, что нужно в языке это объекты (которые в суть хэш-таблицы). По литералу {} должен был создаваться нулевой объект с прототипом null.
Прототип должен бы был устанавливаться установкой все того же __proto__, который был неперечисляемым по умолчанию, а еще лучше чтобы это был символ (жаль что символы ввели так поздно, на них вообще стоило бы изначально повесить всю метаинформацию, которая сейчас устанавливается через отдельные методы).
Ну и функции, которые объекты первого порядка.
Ибо как сложность, как я вижу уже много лет, у всех этих неосоиляторов, помимо привычек, на первых парах осложняется еще и скрытой магией, с динамическим созданием объекта и линковкой с prototype хранящимся в конструкторе).
Много лишнего. Еще больше лишнего продолжают тазщить и теперь, по инерции.
Почему при использовании Object.freeze() свойство через prototype остается доступным для изменения?
Да ладно, прям сложности. У поца появился вопрос, пацанре с двача всегда помогут. Поц сказал, что всосал с проглотом. Проблемы нет, все норм, пусть расширяет сознание.
Очевидно потому, что ты ничего не понимаешь в объектной системе языка и плохо читаешь маны?
Объект, к которму ты применяеш фриз и объект хранящийся в prototype это два разных объекта, и дескрипторы у них разные, и один вообще может быть просто объектом, а другой быть callable, например. И еще много чего может. Хочешь заморозить всю цепочку - так морозь всю цепочку.
>Почему я ударил в морду Пете, а у Васи и Коли не появился синяк?
Применительно все к этому же примеру:
function Rabbit() {}
Rabbit.prototype = {eats: true};
var rabbit = new Rabbit();
//Въебем фриз на родительскую функцию и на инстанс, шоб наверняка
Object.freeze(Rabbit);
Object.freeze(rabbit);
Rabbit.prototype.eats = 1;
//и на выходе поимеем измененное свойство
console.dir(rabbit.eats);
>Еще больше лишнего продолжают тазщить и теперь, по инерции.
Преувеличиваешь.
Если вкатывальщик с this и прототипном ООП разберётся, то всё остальное хуйня в принципе.
Язык минималистичный даже с новыми фичами. Один из немногих очень минималистичных попсовых языков, за что я его собственно и люблю. Просто некоторые костыли так часто писались что его пришлось добавить в стандартную либу (А вообще даже либой назвать её тяжело).
А вообще несмотря на все его недостатки. Я уже за год работы с браузером 2Д графикой использую чистый JS безовсякого говна типа жиквери используется лишь йоба либы для серьёзной математики типа phaser.
На JS я могу выразить то что думаю достаточно быстро, на Java у меня такого не было.
В том то и дело, что без new и class{} его минималистичность только выиграла бы.
Прототипы и конструкторы и this никуда бы не делось. Но не было бы этого разъебенства, когда объект можно запилисть через Object.create а потом приминить к нему функцию, выполянющюю роль констркутора. Или создать class{} но внезапно чтобы запилить свойства, ане методы в прототип нужно возвращаться все к тому же class.prototype
Или пилить функции конструкторы со свойством хранящим ссылку на прототип.
Много вариантов это всегда плохо.
В том, что описал я есть все. Из него можно было бы слепить повер все это, под задачу проекта. А когда это конструкции языка, будут вечные холивары - о том, как правильнее.
Ну может быть, но меня доставляет с помощью делать некоторые фичи, тот же односвязный список:
var numbers = new Cons(1, new Cons(2, new Cons(3, new Cons(4, new Cons(5, null)))));
*С помощью new, блять, вынужден писать быстро на ходу.
Сделал бы лучше
cons(1, cons(2, cons(3, cons(4, cons(5, null)))))
Или ещё лучше
Cons.fromArray([1, 2, 3, 4, 5])
Которые внутри делают всё те же new Cons.
Удобнее же, читабельнее.
бампс
Охуенный ответ, а теперь пиздуй собирать портфель. Завтра к 8 утра в школу вставать.
Не проецируй, мань.
Нашёл бля чё спросить сука. Ты ещё попроси перечислить системные методы vue.js или ещо какую хуйню
ну саре, надеялся, что тут не только вкатывающиеся аноны
а то мне кажется я хуетой занимаюсь выкладывая сорсы сюда и это никому не надо
сегодня ниче не рефакторил. подрубил вк апи и теперь бугуртарий ретранслирует бугурты и бэ в вк сообщество. ток у них ограничение окаывается на 50 постов в сутки
Анон, как ты запускаешь свою программу чтобы она непрерывно транслировала?
Все давно на async-await перешли, нахуй ты ебёшь эти корутины на генераторах из 2015?
Полное описание задачи
Клиент делает GET запрос с параметром Query: ?fullname в виде Имя Отчество Фамилия (или Имя Фамилия или Фамилия), ваша задача сделать вывести инициалы в таком виде: Фамилия И. О. ( или Фамилия И.).
Результат нужно вывести в виде строки, при неверных входных данных нужно вывести слово Invalid fullname.
1) Разбиваешь запрос на массив. Первый элемент - имя, второй фамилия.
Если через тире значит третий тоже фамилия.
2) Выводишь как тебе нужно.
хз насколько ты следишь за историей моих постов, но я челик который год долбил дурь и играл в дотан, не писав и строчки кода. тут вышел из анабиоза узнал, что в жс завезли каких-то фич. ну и написал этот бугуртарий чтобы часть из них заценить. разумеется все эти дни я продолжал адски угорать, например, и поверхностно осилил только немного текстов про генераторы. вон даже темплейт литералс для меня стали сюрпризом.
поясняй почему async-await сосут у ко и генераторов.
быстрофикс
Если 3 элимента в массиве - выводишь фамилию, потом первые буквы
Если 2 элемента выводишь фамилию и первую букву имени
Если цифры или символы то выводишь ошибку (это проверяется регуляркой)
Ну, да, так этап верификации у меня - это звено в цепочке промисов. Предрекаю лучи поноса в свой адрес, но я использовал ассерты для формальной проверки введенных данных в формах на входе изоморфно, лол, на клиенте тоже были ассерты через Chai, пиздец, да? и проверки целостности результатов выборки из БД на выходе (это потому, что у меня in-memory store с персистентностью, поэтому не факт, что БД не развалилась к хуям.
Благодарю. Пошёл пробовать.
Вот так:
Hamburger.allowedSizes = {
Hamburger.SIZE_SMALL: 123
}
Hamburger.allowedSizes = {
Hamburger.SIZE_SMALL: 123
}
Hamburger.allowedSizes.Hamburger.SIZE_SMALL // 123
Hamburger.allowedSizes = {
SIZE_SMALL: 123
}
Hamburger.allowedSizes.SIZE_SMALL // 123
> Hamburger.allowedSizes = {
> Hamburger.SIZE_SMALL: 123
> }
> Hamburger.allowedSizes['Hamburger.SIZE_SMALL'] // 123
fastfix
>>875882
Ты издеваешься, да?
Hamburger.allowedToppings = {
Hamburger.TOPPING_MAYO: 123
};
SyntaxError: Unexpected token .
http://ideone.com/qpKFUB
Да то же самое только чуточку лучше, потому что вместо yield более осмысленное для асинхронщины await, и не надо вызывать co или там Promise.coroutine, а просто ключевое слово async вместо этого.
да я как раз заканчивал читать https://www.sitepoint.com/simplifying-asynchronous-coding-es7-async-functions/
ну ничего перепишу благо у меня там 200 строк с копейками,а узнать что такое генераторы все равно было полезно.спасибо за наводку бро
Точка часть синтаксиса, такие ключи нужно оборачивать в кавычки
Или в 2016 всем нужны фуллстаки?
последние полтора года работал исключительно как жс кодер с ангуларом. и так все жсеры в фирме. отдельно было подразделение верстал со своим тимлидом и т.д. очень удобно. сидишь и делаешь задачи вместо еботни с версткой(будь она проклята). вообще не верстаю уже много лет занимаясь исключительно жсом и счатслив охуенно по этому поводу. не представляю сколько всего нужно сейчас знать верстальщику учитывая все эти пре-процессоры, хтмл5, мобильные клиенты и т.п. должно быть сегодня времена когда проблемы были уровня сделать костыль для старых ослов, вспоминаются олдфагами верстки как неплохие.
На твоем пике фрагмент кода тестирования?
Смотрю, используется фантом прямо из ноды, создается страница и инжектятся каштмоные скрипты.
Верстка то не пугает. Просто я бэкэндщик, но у меня в душе немного засел мамкин ололо-дезигнер. Сейчас пробую мобайл, но там ПОВОРОТ ЭКРАНА БАТАРЕЯ КОСТЫЛЬ ЧЕРЕЗ КОСТЫЛЬ АПИ. Вот и есть мысли перекатиться в чистый фронт, без серверки. Ток вакансий по такому мало даже в моем дс-2
Почему так распространено мнение, что верстала = дизайнер? Дизайнер это дизайнер, он в фотошопе сидит, а не в редакторе
Рашкореалии же, "Рога и копыта" часто ищут себе дизайнера и версталу в одном лице.
Ну в копыторогах тебе и не дадут дизайнить, ты там будешь рисовать фантазии пропитого деда, играть со шрифтами и делать #ffffff чуть белее
Понимаешь, дело в том, что мы тут в восточной Европе - ебаные дикари, которые всегда отстают от западных тенденций на три-четыре года. А сегодня (2016 год) если ты веб (web) дизайнер, который не может в вёрстку и хорошее понимание аксессабилити - ты хуй в говне никому не нужный. Да ив фотошопе никто сайты не делает уже лет десять наверное, такие дела.
Хендлер завраплен в Guard() с использованием этого пакета?
https://www.npmjs.com/package/guard-promise
А, нет, скорее всего что-то свое?
как узнать, на чем это все писалось?
ext->angular->backbone
К сожалению разработчик пидорасина самый настоящий. Он не просто код обновил, он его в одну строку написал. Так что хреново получается. Что в блокноте, что в Notepad++ он выдает его одной блять массивной строкой.
да, злостный пидор. ну раз одна строка, значит проверь 321 символ и 453. я думаю надо их поменять местами и все заработает.
const guard = require('async-middleware').wrap;
>>876139
Это просто для удобства. Я пишу сообщение и жму отправить, потом ввожу капчу сразу с десятка борд/тредов и оно отправляется сразу во все.
Мне это нужно для популяризации незаслуженно обделённого вниманием сётакона с тентаклями в бордосфере.
> ты борщеед?
Да, бросил последнюю работу 2 года назад. Обратно кодить за деньги пока не особо тянет. Думаю пойти баристой или закладочником, лол.
Больше, но меньше 30.
>пробовал перезагрузить компьютер?
Не смешная шутка. Вообще фишка с выключением по времени и в одну строку код написать, это пришло после обновления плагина. Автор просит якобы теперь заплатить за фулл версию.
http://ideone.com/sEtpWq
В скрипте просто
window.onLoad = function(){
alert('a');
}
Работает во всех браузерах, кроме хрома. Т.е. в хроме алерт всплывает до загрузки самой странички.
че это за чекер то сказал бы хоть блять
как ты хочешь чтобы тебе помогали если ты даже название плагина не сказал даун
Мамаша твоя не осилила тебя уму-разуму научить, быдло ебаное
Джаваскрипт твой это ебаный рак индустрии, надеюсь все кто на нем пишут попадут в ад
нихуясе ты умный
Твоя боль лишь радует нас.
Потому что onload это подгрузка данных и только. Мб алерт в хроме до рендера, собственно, содержимого, в остальных оно отрисовывается, хотя и там и там формально все загружено. Различия в реализации, хуе-мое. DOMContentLoaded попробуй, плюс еще в жиквери есть тоже функция своя для отслеживания полной загрузки и отрисовки.
У меня в Chromium 54 всё загружается до запуска скрипта судя по тому что работает вот это:
window.onload = function(){
document.getElementById('changable').textContent = "Nah, fuck this shit";
alert('a');
}
Может просто рендериться не успевает, но документ к моменту запуска уже загружен и DOM дерево готово, раз его можно дёргать.
HTML такой же, только у тега p стоит id="changable"
>>876334
Что-то такое я предполагал
Нихуя себе школие у тебя бомбануло. А ну брысь в раби, питухон, жаба, похапэ тред, откуда тебя там выблядовало.
server.js...
app.use('/static', express.static(__dirname + '/static/'));
dist/
--server.js
--static/
----client.js
> Почему это не работает?
Потому что:
app.use(express.static(__dirname + '/static/'));
Так сложно заглянуть в доку? Она же, блять, на русском даже
http://expressjs.com/ru/starter/static-files.html
Ты кароч неправ. Думаешь я не читал это? Я уже все пути перепробовал. Там какая то хрень с упаковкой вебпаком экспресса, как сервер паковать? Хотя бы минифицировать.
> Там какая то хрень с упаковкой вебпаком экспресса, как сервер паковать? Хотя бы минифицировать.
З А Ч Е М ?
Я видел как в некоторых boilerplates пакуют сервер. Лучше один файл на прод выкладывать чем кучу.
парни есть альтернативы на русском у кантора?
Ничего не могу с собой поделать трудно читать его
https://github.com/Vladimir37/diege_blog
https://github.com/Vladimir37/Hanako
Вопрос - с точки зрения повышения скиллов, по данным сорцам можно учиться / вдохновляться / заимствовать в своих разработках?
Просто хочу понять, насколько качественен код того анона. Наверняка же его поделия обсуждались, и не раз, но я проебал их мимо своих глаз.
То есть интересует своего рода кодревью в двух словах, буквально.
Поглядел сейчас. Блог - пиздец говнокод, борда вроде по-лучше, но все равно говно.
синьер-помидор
примеры говнокода из борды?
> по данным сорцам можно учиться / вдохновляться / заимствовать в своих разработках?
Нет, на node.js максимум только деньги можно пилить, не больше. Люди, пишушие на этом говне для себя - дауны ебаные, которые на Аде никогда мк не программировали.
> Установите MySQL и выполните следующие команды для создания двух необходимых таблиц
С блога который раз проигрываю.
>Люди, пишушие на этом говне для себя - дауны ебаные.
Я АСУшник, пишу на JS "джаст фо фан".
Использовал ноду в различных приложениях, в т.ч. для вызова WinAPI через FFI, для опроса различных девайсов по COM-порту, для работы по USB (запись/чтение в девайс). Сейчас небольшое приложение на ноде накатал для контроля технологических параметров для одного испытательного стенда гидравлического оборудования.
Во всех случаях на JS кодинг доставлял удовольствие.
Бесспорно, все вышеперечисленное можно было сделать и на других языках, и, возможно, результирующие программы были бы на них лучше по каким-то критериям, но ведь тред посвящен JS. Посему, отзываться от людах, пишущих на JS, как о "даунах ебаных" здесь, по меньшей мере, неуместно. Меньше хейта, мэн.
Хотя для говноедов-байтослесарей-асушников может быть все не так и плохо, им и говно конфеткой кажется
Короче такая байда только если использовать алерт. Если без него - все работает как надо. Странно это все.
Поддвачну. Самому приходится писать в том числе на ЖС. Неприятные ощущения не пропадают.
alert и promt останавливают выполнение js
>>876545
Вот у автора в коде борды встречается такая строчка ( https://github.com/Vladimir37/Hanako/blob/master/app/app.js#L17 ):
setInterval(unban, 86400000);
очевидно, что в раз в сутки в функции проверяются баны, и если срок их действия вышел, посетитель разбанивается.
Есть ли смысл в таких действиях (циклическая перепроверка бана), если при попытке запостить в тред, в коде того же движка перепроверяется наличие бана ( https://github.com/Vladimir37/Hanako/blob/master/app/assist/post_processing.js#L56 )?
Жс-мирок - это элитные экстремальные технологии для бывших лиспохаскеров.
Я пишу на ноде, потому что ненавижу программировать что-либо, кроме reaktor, и потому хочу закончить как можно быстрее.
Это божественно. Только let'ы немного смазывают общую картину.
Это тот самый мультипостер для борд?
Есть шанс того, что ты выложишь код на жидхуб?
> технологии для бывших лиспохаскеров
Не оправдывай своё говнокодерство мифическим элитным мирком, которого нет, тем более бывших лисперов не бывает. Перекатываются, а уж тем более на такую говнину, лишь те, кто не осилил работать свой головой на себя либо у них выбора не осталось.
Алзо пиздец у меня от этого говнокода в глазах закололо.
Отсутствие комментариев через полгода превращают js и php говнину в неподдерживаемый кал.
Даже в исходниках openssl на чистом С разобраться проще без комментариев, имея багаж знаний в математике, чем во внутренностях очередного говнофреймворка.
Отсуствие типизации или хотя бы выведения типов заставляет держать в голове кучу лишнего говна. Есть jsdoc, но он не всегда хорош.
Удваиваю, уважаю лисп, но блюю от жса.
Часто слышу, что "жс-это современный лисп и т.д.", но это нихуя не так. Такое могут сказать только люди, которые на Лиспе не писали ну или просто дауны. И если уж на то пошло, ЖС имеет отношение к Лиспу такое же, как любой другой динамический язык.
> Только let'ы немного смазывают общую картину.
В смысле, что лучше было сonst? Я использую const только для глобальных связываний, а внутри функций лень думать о (им)мутабельности параменных.
Моё мнение - что компилятор сам прекрасно вычисляет что меняется а что нет при приведении кода к SSA, а ради читабельности внутри функций оно не настолько критично.
> ты выложишь код на жидхуб?
Да, вброшу куда-нибудь сюда ссылку.
>>876634
Я так тоже говорил 10 лет назад, когда программирование для меня было развлечением, а не инструментом.
Просто я тогда не знал настоящих развлечений, не было полноценных источников кайфа, не с чем было сравнить.
> не было полноценных источников кайфа
Так ты героинщик? Так бы и писал сразу, а то я все на вы и на вы.
> Я так тоже говорил 10 лет назад, когда программирование для меня было развлечением
Если я в 37 лет начну относиться к этому хоть как-нибудь серьёзно, лучше пойду из окна выброшусь.
>Я так тоже говорил 10 лет назад, когда программирование для меня было развлечением, а не инструментом.
Где-то я это уже слышал. В Го-треде любят повторять эту фразу, когда оправдываются.
это какое-то соревнование в тупизне?
Серверный метод match реакт-роутера возвращает какую-то хуйню, из которой можно вытащить список компонентов для рендеринга, но выходит как-то черезжопно. Как бы мне изящно определить, какие данные я должен засунуть в store? Не проверять же компоненты через instanceof.
это организовать в принципе?
Если в 37 лет ты все еще будешь программить на дядю, то да, выброситься в окно для тебя лучший вариант
Не ответят тебе нихуя. Выше я спрашивал про упаковку сервера, меня проигнорили. На каком то этапе тред перестает отвечать.
а ведь ехидный колобок прав
Во-первых, у меня не особо много времени, чтобы разбираться во фреймворках. Во-вторых, не берусь за фреймворки без фундаментального понимания JS. Я один разработчик в большом проекте, и PHP и JS - я заебусь один со всем этим разбираться.
Очевидный Qt очевиден. Там возможны вставки и на JS.
Unity3d + скрипты на их внутреннем диалекте жс.
ачто такое редьюсер? и фолдер?
> Во-первых, у меня не особо много времени, чтобы разбираться во фреймворках.
Через год
> Я один разработчик в двух больших проектах, бля нахуя я это написал, блядь это ж давно реализовали. Опа, какой мудак это писал. Сука ну за що
Очевидный ThreeJS очевиден.
1.html
1.js
2.html
2.js
Допустим на первой странице я что-то делал и хочу скопировать инфу (например значение переменной А) на вторую странице и работать с этой инфой во втором js файле. Я знаю что так можно сделать если использовать один (общий) js файл. А если их два?
Короче говоря: Как проще всего скрыть пост со словом "стикер" с помощью JS-юзерскрипта? Куклу не люблю.
Kuukez.
Я так тоже когда-то пытался строить, но если проект большой, то это адский пиздец просто.
Если тебе нужна индексация поисковиков, то это делается на стороне сервера, а не клиента. На стороне клиента это делается примерно так, как ты описал, да
https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
ПКМ по элементу -> Block Element
Я хочу скрывать посты с этой дрянью, а не сами стикеры. Находить такие посты можно по слову "стикер", содержащемся в них.
в архиве - минимальная конфигурация и описание проблемы в problem_description.txt
http://rgho.st/6BMwtTPy8
минификация, использование в будущих проектах с многочисленным роутингом/restful api
Ты знаешь для чего нужна минификация?
> использование в будущих проектах с многочисленным роутингом/restful api
А причем тут сборка? Как она способствует этому?
кто то же делает это. почему ты считаешь что упаковка не имеет место быть
http://jlongster.com/Backend-Apps-with-Webpack--Part-I
> почему ты считаешь что упаковка не имеет место быть
Потому что я не вижу для этого ни одной причины. Мне кажется, что сборкой бэкенда в один минифицированный файл будет заниматься только тот, кто вообще не понимает что такое сборка и для чего она нужна
А я не вижу ни одной причины чтобы не собирать сервер. если ты не хочешь мне помочь то зачем пишешь?
Я просто решил намекнуть тебе, что ты занимаешься полнейшей хуйней и лучше бы тебе сконцентрироваться на самом приложении и его работе, а не несколько дней носиться с минификацией бэкенда. Ну тебе, наверное, виднее
может ты и прав..
Прикручивать линты, смотреть на их подкрашивания, постоянно переключаться между разными вариантами (let и const), писать на два символа больше - это всё слишком большой напряг для такой лютой хуйни. Ящитаю, необъяснимое желание для локальных переменных нахуярить const всегда когда возможно - это признак аутизма.
Спуфить необходимые для этого события триггеры, очевидно же. Если речь о времени, то:
https://github.com/vesln/timekeeper
Есть один чувак прошаренный. Короче он говорит, что просто коммьюнити больное, поэтому и лепят везде тройное равно, пишут const и т.д. Ну и еще он говорил, что чем ближе люди к tc39 - тем чаще в их коде let.
>лепят везде тройное равно
Если бы двойное равно не работало через жопу, не лепили бы. Ты только посмотри на эту хуйню http://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison и, заодно, посмотри во что раскрывается ToNumber и ToPrimitive. Не удивительно, что большая часть js-программистов не хочет держать в голове все эти охуительные правила и каждый раз вычислять в голове безопасно ли в данном случае использовать ==, а просто используют === всегда.
Джейчую этого. AirBnb, например, тоже рикамендуют использовать тройное равно.
https://github.com/airbnb/javascript#comparison-operators--equality
Они недостаточно ортодоксальны для секты, тащемта, они допускают использование летов (при этом рекомендуют отказаться от var'ов вовсе).
Я категорически с этим не согласен - нужны только консты, при этом без фанатизма - мутабельности объектов и массивов вполне достаточно, чтобы писать без код без мозгоебли и при необходимости обновлять рефы.
Но это, конечно, вкусовщина.
Да мне похер кто и почему сколько равно лепит - я передал слова чувака, а не пришел тут холивары разводить у вас и без этого тред в последнее время скатился в какую-то жопу.
>Есть один чувак прошаренный
>я передал слова чувака
Но кто этот чувак? не гомофоб ли это Резиг часом?
>они допускают использование летов
>%variable_name% is never reassigned. Use 'const' instead. (prefer-const)
И это не предупреждение, а полноценная ошибка. Но я так-то свой конфиг экстенджу от бнбшного и уже привык. Минимальные поправки я конечно сделал, как-то: "no-nested-ternary": 0, "no-plusplus": 0 (вообще дичь), "arrow-parens": 0 и другие мелочи.
Не, эт снг-шный задрот, недавно не ебаном был с подачей мол он объяснять не умеет, куда ему курсы вести да на конфах выступать
>"no-plusplus": 0 (вообще дичь)
Меня здесь пидорили как-то за участок кода с такими вот унарными операциями. Подозреваю, что дело в читаемости. Сдается мне, охуевшие от многочасовой рутинной работы глаза легче найдут код вида
varName = varName + 1;
нежели varName ++;
react, можно разобраться за два-три вечера, если есть опыт.
> пидорили как-то за участок кода с такими вот унарными операциями
Больше борщехлебов слушай.
Беда с ними в том, что результат зависит от порядка (префикс\постфикс) и может привести к путанице. А выигрыша они никакого не дают, кроме краткости. Но на набор\чтение пары лишних слов ты потратишь меньше времени, чем на обмозговывание того, что там возвращается, а что в скоупе останется. Следовательно, к хуям плюсплюсы.
>>877155
Лучше слушать выебшиков с их уникальным бескомпромиссным видением прекрасного.
Нахуя тебе пару лишних клавиш нажимать, не для того тебя мамочка растила.
Честно, я не люблю судить о людях по их внешнему виду, но этого горбатого дрища слушать не хочется. И выступает он, если судить по тому видео, что было в посте, хуево.
>>877152
Проблема возникает не когда у varName++ на отдельной строке, а когда начинают писать конструкция вида varName1 = fn(varName1, varName2++).
>а когда начинают писать конструкция вида varName1 = fn(varName1, varName2++).
это уже не люди это звери нахуй
Это те, кто лифтят монадические кластеры метапарадигм в анафорических лямбдах. И кушают мамкин борщ, конечно же.
Не работает.
Ты блять мразь ёбаная и сын собачий, этот ёбаный кусок говна не делает вообще блять ничего.
Вы видите копию треда, сохраненную 7 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.