Пособеседовался в одной компании. Все очень понравилось, не большая, динамичная, открытая.
Собеседующие готовы в десны расцеловать, режим свободный, можно из дому, корпоративного духа нет, с зарплатой не жмутся. HR-ника с цепи не спускали
Позиция DevOp/Backend Lead в любом удобном для меня соотношении.
Но, млин, NodeJS. Уверяют, что проблем с ним не будет, типа с моим опытом это то что надо. "Привнесешь идеи чоткой разработки" ...
Меня, любителя единопокрашенных заборов и прочих упорядоченных штук (типизированых языков) это гнетёт. Погуглил по теме "cons pros NodeJS" легче не стало.
С другой стороны, уж очень мне место понравилось, по опыту работы с такого общения получалось долговременное продуктивное сотрудничество. Противоположность надутым мутным политиканам старых уютных углов.
Хотя предложений работы много, приглашают поговорить на следующий день все. Все 3 места куда я подался . Да, знаю, мало, но не любитель я по собеседованиям ходить.
Можно сконцентрироваться на DevOp, но, тоже, не правильная тактика. Тем более что позиционирую себя как 2-в-1-м. Типа проблемы с разных углов вижу.
Как оно, удастся сжиться-слюбиться с NodeJS и привнести туда порядок? Или нет?
Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением?
В принципе в мир чистого веба я пришел относительно недавно и есть привычка работать по самым слабым своим направлениям.
Я в голове прокручивал, куда бы дальше, Golang или Scala+Akka а тут такое.
И все это в городе есть. Тот же Morgan Stanley где пишешь 2 строчки на той же Java/Scala и потом 2 дня разрешение на коммит выбиваешь. Где все покрашено единообразно, с корпоративной речевкой и работа только с 9-17 с галстуком и скорпионами в банке.
К постоянному обучению склонен и учиться мне нравится.
Под NodeJS не писал совсем, JS в глаза видел. Практически любое собеседование где могли бы потребовать писать JS код на бумажке, я бы не прошел. Это, ес-но, я не скрывал.
V_>К постоянному обучению склонен и учиться мне нравится.
V_>Под NodeJS не писал совсем, JS в глаза видел. Практически любое собеседование где могли бы потребовать писать JS код на бумажке, я бы не прошел. Это, ес-но, я не скрывал.
использовать ТайпСкрипт, траспайлить его в ЕС5, и будет тебе счастье
V_>>Под NodeJS не писал совсем, JS в глаза видел. Практически любое собеседование где могли бы потребовать писать JS код на бумажке, я бы не прошел. Это, ес-но, я не скрывал.
AC>использовать ТайпСкрипт, траспайлить его в ЕС5, и будет тебе счастье
Сколько же мути сейчас в вебе развелось... Костыль на костыле кругом.
Здравствуйте, Дэйв, Вы писали:
Д>Я всегда считал Node.js весьма странным поделием. Сервер, event loop — ок, но почему на JavaScript???
потому, что религия гласит — fullstack, аминь
Здравствуйте, Vetal_ca, Вы писали:
V_>Но, млин, NodeJS. Уверяют, что проблем с ним не будет, типа с моим опытом это то что надо. "Привнесешь идеи чоткой разработки" ... V_>Меня, любителя единопокрашенных заборов и прочих упорядоченных штук (типизированых языков) это гнетёт. Погуглил по теме "cons pros NodeJS" легче не стало.
Я перешел с C++ на ноду очень легко. Если отбросить религиозные убеждения, то ничего страшного в жаваскрипте нет.
Ну чисто технически JS наверное один из самых простых языков. Какой нибудь WebStorm будет выдавать подсказки близкие к типизированным языкам, плюс есть всякие TypeScript. С другой стороны автоматическое выведение типов/дженерики в C++/C#/Java. Мне кажется в этом плане языки идут на встречу друг другу и каких-то проблем у тебя быть не должно. Новый взгляд будет точно. Какое притупление всё же больше не от языка зависит, а от того, что да как пишешь. ИМХО, если всё нравиться, то другая технология не должна быть проблемой.
Здравствуйте, Vetal_ca, Вы писали:
V_>Под NodeJS не писал совсем, JS в глаза видел. Практически любое собеседование где могли бы потребовать писать JS код на бумажке, я бы не прошел. Это, ес-но, я не скрывал.
Будет трудно, особенно с дебагом
Можно предложить им Edge.js, если C# захочется
.
Пессимисты говорят, что хуже быть не может,
а оптимисты всегда уверены, что — может!
Здравствуйте, Vetal_ca, Вы писали:
V_>К постоянному обучению склонен и учиться мне нравится.
Мало того, что место понравилось, так еще готовы брать с нуля на хорошую должность с возможностью обучения популярной и, что немаловажно, высокооплачиваемой и востребованной платформы. JS можно проклинать сколько угодно, но он уже как C++ — есть на всех платформах, что дает перспективы. Если потом на клиент влезешь, будет у тебя Full-Stack. Если React, то потом React Native. Знаю нескольких людей, ушедших в Ноду из Шарпов — никто не просится обратно. Так что, я бы считал Node.js плюсом, а не минусом. На другие собесы лучше сходить — чтобы спокойнее было
Здравствуйте, MxMsk, Вы писали:
MM>Знаю нескольких людей, ушедших в Ноду из Шарпов — никто не просится обратно. Так что, я бы считал Node.js плюсом, а не минусом.
Можно ли через Node.js (и JS вообще) переехать в Штаты по H1B (или другую развитую страну)? Какой для этого минимум?
13.04.2017 6:51, "Дэйв" пишет:
> Я всегда считал Node.js весьма странным поделием. Сервер, event loop — > ок, но почему на JavaScript???
+1 Писать сервер на JS — на мой взгляд на редкость дебильная идея.
Но как известно "если что-нибудь может быть написано на JS — оно будет написано на JS.
Здравствуйте, De-Bill, Вы писали:
DB>Если отбросить убеждения, то можно писать и на 1C, и на PHP.
Безусловно, но на ноде есть много свежих и интересных (тм) проектов, в отличие от.
Здравствуйте, Submitter, Вы писали:
S>Можно ли через Node.js (и JS вообще) переехать в Штаты по H1B (или другую развитую страну)? Какой для этого минимум?
К сожалению, тут я ничего сказать не могу.
Здравствуйте, Submitter, Вы писали:
S>Можно ли через Node.js (и JS вообще) переехать в Штаты по H1B (или другую развитую страну)? Какой для этого минимум?
А в чем проблема ? Как мне показалось, всяким там амазонам вообще по барабану, на чем ты пишешь.
Здравствуйте, Vetal_ca, Вы писали:
V_>Пособеседовался в одной компании. Все очень понравилось, не большая, динамичная, открытая.
Стартап?
V_>Но, млин, NodeJS. Уверяют, что проблем с ним не будет, типа с моим опытом это то что надо. "Привнесешь идеи чоткой разработки" ...
Не получится, культуру поменять сложнее всего.
V_>Меня, любителя единопокрашенных заборов и прочих упорядоченных штук (типизированых языков) это гнетёт. Погуглил по теме "cons pros NodeJS" легче не стало.
Не переживай, для таких как ты есть typescript.
V_>Как оно, удастся сжиться-слюбиться с NodeJS и привнести туда порядок? Или нет?
Человек такая скотина, ко всему привыкает.
V_>Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением?
Однозначно.
Я бы на твоем месте переживал по поводу других вещей.
1) Если это стартап, то его положение (финансовое и рыночное) крайне нестабильное. Ты можешь потратить свое время проработав в компании, название которой через год все забудут.
2) В NodeJS вполне возможно придется больше бороться с неработающими зависимостями, багами в окружающих продуктах, леворезьбовыми СУБД и прочим шлаком, который плодится с огромной скоростью. Вполне может оказаться что большую часть времени ты потратишь на приобретение навыка установки и настройки какойнить dzhopadb версии 1.53453.454857, который станет не актуальным в версии 1.63433.5656
Во-первых, спасибо за возможность заглянуть под крышку черепной коробки одного из JS-любителей.
m2l>Ну чисто технически JS наверное один из самых простых языков. Какой нибудь WebStorm будет выдавать подсказки близкие к типизированным языкам, плюс есть всякие TypeScript. С другой стороны автоматическое выведение типов/дженерики в C++/C#/Java. Мне кажется в этом плане языки идут на встречу друг другу и каких-то проблем у тебя быть не должно. Новый взгляд будет точно. Какое притупление всё же больше не от языка зависит, а от того, что да как пишешь. ИМХО, если всё нравиться, то другая технология не должна быть проблемой.
Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования. Всем, регулярно читающим этот раздел, они конечно же известны, но я все же напомню:
1) Напишите реализацию quicksort
2) Обойдите дерево в ширину.
3) Реализуйте паттер Visitor.
4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов.
...
6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
Здравствуйте, gandjustas, Вы писали:
G>Не переживай, для таких как ты есть typescript.
"Слышь, Бивис, а как во всех нормальных языках сделано? Сперва пишется тип, а потом переменная? Слева направо, тут же не арабы, да? Гыгыгы, а мы сделаем наоборот! NotInventedHere!"
Здравствуйте, Олег К., Вы писали:
V_>>>Под NodeJS не писал совсем, JS в глаза видел. Практически любое собеседование где могли бы потребовать писать JS код на бумажке, я бы не прошел. Это, ес-но, я не скрывал.
AC>>использовать ТайпСкрипт, траспайлить его в ЕС5, и будет тебе счастье
ОК>Сколько же мути сейчас в вебе развелось... Костыль на костыле кругом.
Здравствуйте, Submitter, Вы писали:
S>Здравствуйте, MxMsk, Вы писали:
MM>>Знаю нескольких людей, ушедших в Ноду из Шарпов — никто не просится обратно. Так что, я бы считал Node.js плюсом, а не минусом.
S>Можно ли через Node.js (и JS вообще) переехать в Штаты по H1B (или другую развитую страну)? Какой для этого минимум?
одна из самых популярных технологий, но с H1B это лоторея конечно
SA>Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования. Всем, регулярно читающим этот раздел, они конечно же известны, но я все же напомню: SA>1) Напишите реализацию quicksort
банально.
SA>2) Обойдите дерево в ширину.
банально.
SA>3) Реализуйте паттер Visitor.
банально.
SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов.
язык динамический, заводи себе атрибуты на здоровье.
вообще не понимаю подколок из раздела реализуйте квиксорт на джаваскрипте. Да хоть на псевдокоде.
Что в самом деле является проблемой в голом джаваскрипте — отсутствие типизации (следствие, нет интерфейсов), отсутствие линкера, нет возможности автоматического рефакторинга, если программист неопытный, код очень быстро превращается в кашу.
Частично эти проблемы решаются "надстройкой" в виде Typescript или компиляцией из Java, например GWT
Здравствуйте, StandAlone, Вы писали:
SA>Здравствуйте, gandjustas, Вы писали:
G>>Не переживай, для таких как ты есть typescript.
SA>"Слышь, Бивис, а как во всех нормальных языках сделано? Сперва пишется тип, а потом переменная? Слева направо, тут же не арабы, да? Гыгыгы, а мы сделаем наоборот! NotInventedHere!"
Ты же понимаешь, что это тупость?
В TS мощный вывод типов, поэтому в 80% случаев типы писать не надо. А если тип слева, то что? auto как в некоторых уродских языках?
Здравствуйте, AndyCyp, Вы писали:
AC>банально. AC>банально. AC>банально.
Хорошо. Допишите, пожалуйста, пословицу: "Языком молоть — не ..."
AC>язык динамический, заводи себе атрибуты на здоровье.
Скажите, Вы сисадмин или менеджер проекта?
AC>... код очень быстро превращается в кашу.
Да у любого, у любого он превращается в кашу. Я уже тут неоднократно тыкал в примеры замечательных реализаций на ДжаваСкрипте, типа Q или, не к ночи будь помянут, ExtJs Collection.
Каждый, каждый раз JS-любители начинали косить под делюдей с особенностями умственного развития и начинали тягуче-слюняво "Ну и чёёё, а я вот на квикбейсике\си\1с\пхп\абап и не такое видел....".
Наконец-то найдено хоть одно хорошее качество JS! Бывает кал еще и более едкий!
AC>Частично эти проблемы решаются "надстройкой" в виде Typescript или компиляцией из Java, например GWT
Нет, если б Вы были сисадмин, Вы бы наверняка хоть краем уха бы видели, что получается после "компиляций из", например после ангуляровских компиляций... Следовательно, Вы — прораб менеджер проекта.
Чтож, в таком случае Вы все правильно делаете.
Объяснить рабочим, почему они копают котлован пластиковыми совочками для уборки кошачьего говна вместо экскаватора — это великое искусство.
Человек 100, но не превратившийся (пока) в болото корпорацию
G>Не получится, культуру поменять сложнее всего.
Не менять, так влиять
G>Не переживай, для таких как ты есть typescript.
Надо будет посмотреть внимательнее
V_>>Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением? G>Однозначно.
Однозначно, что? или ?. Или все вместе? Это самый важный пункт и возможная коллизия со стратегией развития.
G>1) Если это стартап, то его положение (финансовое и рыночное) крайне нестабильное. Ты можешь потратить свое время проработав в компании, название которой через год все забудут.
Я в какой-то момент ушел в стартапы и осознанно забил на стабильность. Полностью, хоть завтра повалится. Выбор в сторону востребованности и мобильности.
Еще ни разу не пожалел, ибо получил гораздо большую job security за счет востребованности. Развитие идет гораздо быстрее. К повышенным оборотам мозги привыкают. Как, впрочем, и к пониженным.
В ущерб корпоративным навыкам и возможностю стать большим и жирным боссом в старой и гнилой корпорации. Нету митингов где можно поспать с открытыми глазами
По жизни я пока совсем не устал, скорее, наоборот. С каждой новой полученной технологией мысль, "Ну вот, теперь жизнь по-настоящему начинается"
В общем, хорошо прислушался в своё ко внутреннему 'я', получил карт-бланш на эксперименты от семьи. И с тех пор все замечательно, как с работой так и с деньгами.
Далее, если контора рассыпалась по несвязанным со мной обстоятельствам, то это идеальный случай. Можно на анемплоймент. Как раз разгрести накопившиеся внутренние задолженности по внутренним проектам. Волонтер на домашний и аффилиированный бизнес
Вообще, не честно, требовать одновременно имени, интересности, гибкости и стабильности (= фиг уволишь). Это нереалистично. И чисто во вред "высиживать" в неправильном месте, для себя во вред.
G>2) В NodeJS вполне возможно придется больше бороться с неработающими зависимостями, багами в окружающих продуктах, леворезьбовыми СУБД и прочим шлаком, который плодится с огромной скоростью. Вполне может оказаться что большую часть времени ты потратишь на приобретение навыка установки и настройки какойнить dzhopadb версии 1.53453.454857, который станет не актуальным в версии 1.63433.5656
Тут навыки DevOp и докера сгодятся. По крайней мере, чистота свежих контейнеров, контролируемость и повторяемость (из git) будут кстати.
Элементарно. В современных реалиях это все решается следующим образом:
SA>1) Напишите реализацию quicksort
Попросить бекенд отсортировать за тебя! Фронтэнд должен заботитьсы об эффективности, ибо он выполняется на крайне малопроизводительных ресурсах. Потому сортировка, даже если это 10 элементов — должна выполняться на бекэнде. Там сервер мощный, не то что мобила на 2 гигагерца и 4 гига памяти.
SA>2) Обойдите дерево в ширину.
Попросить бекэнд прислать Json с порядком обхода. Это слишком большая логика для клиента, трудозатраты на написание такого сложного алгоритма — полгода. Хотя нет, нужно еще 6 лет в институте выучиться .
SA>3) Реализуйте паттер Visitor.
Зачем? Для всего есть react (если он еще не устарел). Если этого нет в react — значит бэкэнд плохо сделал свою работу.
SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов.
Какую иерархию? Это все на бекэнде. Задача фронтэнда — на каждый чих послать запрос к серверу и отрисовать результат. Состояние фронтэнда тоже должен хранить бекэнд. И даже контролы рендерить тоже желательно бекэнд. Виртуал дом и тому подобное — ресурсы сервера нужно чем то занять. SA>... SA>6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
За год можно написать. Если выделить в помощники 5 человек.
И вообще. Я хренею с современного джаваскрипта. Почему то в современных реалиях даже для сеньер фронтэнд разработчиков на нем невозможно сделать то, что без проблем делалось 10 лет назад на том же джаваскрипте. Раньше там был функционал словарей, и можно было без проблем удалять дупликаты. И это было встроено в язык. В современном джаваскрипте почему то для этого нужен алгоритм с квадратичной сложностью с пробеганием по массиву. Сколько ни собеседовал фронтэндеров, ни один не ответил что такое Dictionary, Map, ассоциативный массив. Кроме тех, кто хотят от 300 тыщ. Кто хотят 150 — те про такое не слышали.
Почему то раньше на фронтэнде можно было без проблем парсить любой json. Да что json, даже xml можно было. Сейчас какого то черта фронтэнд не в состоянии распарсить тот json, который автоматом генерится. Мне казалось, что если в json нет элемента, то с точки зрения логики можно при парсинге сделать, чтобы его значение интерпретировалось как null. В современном javascript обязательно указывать имя элемента и null. Поменять адрес сервера — это тоже какого то черта работа на несколько часов. Раньше можно было это в одну константу вынести, сейчас почему то нужно во много мест лезть. И тоже не понимаю. 10 лет назад все странички прекрасно получались от сервера. Я ни черта не понимаю, какого черта для странички, которую я вместе с вспоминанием верстки сделаю за неделю, сейчас обязательно поднимать nodejs на одном сервере, сервер статики на другом, делать кроссдоменные запросы на третий бекэнд сервер, делать это 3 месяца и один черт если серверу стало плохо, то обработки ошибок тоже нет, пользователь видит белый экран, все просто повисло. И еще почему то это новое работает только на последней версии браузера, и только одного!
Здравствуйте, Vetal_ca, Вы писали:
V_>>>Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением? G>>Однозначно. V_>Однозначно, что?
Однозначно будет и то и другое.
Здравствуйте, AndyCyp, Вы писали:
V_>>К постоянному обучению склонен и учиться мне нравится.
V_>>Под NodeJS не писал совсем, JS в глаза видел. Практически любое собеседование где могли бы потребовать писать JS код на бумажке, я бы не прошел. Это, ес-но, я не скрывал.
AC>использовать ТайпСкрипт, траспайлить его в ЕС5, и будет тебе счастье
если человек не знает js и не любит js, использование typescript строго противопоказано.
Получится поделие типа webForms — вроде бы веб, но такое говно...
Здравствуйте, StandAlone, Вы писали:
SA>Хорошо. Допишите, пожалуйста, пословицу: "Языком молоть — не ..."
ну, скажем, за 100 долл в час я готов. Пэйпал прислать?
SA>Скажите, Вы сисадмин или менеджер проекта?
Програмист я. Последние 3 года занимаюсь 80% JS и 20% Java. До этого C# и С++, 12 лет.
SA>Да у любого, у любого он превращается в кашу. Я уже тут неоднократно тыкал в примеры замечательных реализаций на ДжаваСкрипте, типа Q или, не к ночи будь помянут, ExtJs Collection.
ExtJS древний фреймворк, вы бы еще привели в пример телерик какой нибудь. Вы вообще видели чего нибудь
Чтобы код не превращался в кашу, требуется разделение логики на слои и модули с четко определенными связями между ними.
Сортировка на фронт энде 100000000 объектов не должна совершаться. Следует понимать различие задач фронт энд и бак энд
SA>Нет, если б Вы были сисадмин, Вы бы наверняка хоть краем уха бы видели, что получается после "компиляций из", например после ангуляровских компиляций... Следовательно, Вы — прораб менеджер проекта.
Интересные выводы.
Из компиляций GWT получается исполняемый код для браузера — генеренный JS стоит воспринимать именно так. Хочешь дебажить — есть соурс мап.
Не стоит путать Ангуляр компиляцию, изменяющую дом, с транспайлингом.
SA>Объяснить рабочим, почему они копают котлован пластиковыми совочками для уборки кошачьего говна вместо экскаватора — это великое искусство.
Зато посмотрите сколько за это платят бабла. И, кстати, частично потому что грамотное применение Js требует опыта и дисципины, а красивый быстрый фронд энд хотят все
Здравствуйте, Vetal_ca, Вы писали:
V_>>>Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением? G>>Однозначно.
Здравствуйте, Vetal_ca, Вы писали:
V_>Пособеседовался в одной компании. Все очень понравилось, не большая, динамичная, открытая.
V_>Под NodeJS не писал совсем, JS в глаза видел. Практически любое собеседование где могли бы потребовать писать JS код на бумажке, я бы не прошел. Это, ес-но, я не скрывал.
Вопросы (логические):
1. Зачем стартапу (нет пережитков старины) именно NodeJS?
2. Зачем на эту должность нанимать вас, когда нудистов (а тем более джаваскриптистов) вокруг, как говна за баней?
Здравствуйте, StandAlone, Вы писали:
SA>Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования. Всем, регулярно читающим этот раздел, они конечно же известны, но я все же напомню: SA>1) Напишите реализацию quicksort SA>2) Обойдите дерево в ширину. SA>3) Реализуйте паттер Visitor. SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов. SA>... SA>6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
Программирование и задачи на интервью не пересекаются даже в геометрии Лобачевского.
Здравствуйте, mgu, Вы писали:
mgu>1. Зачем стартапу (нет пережитков старины) именно NodeJS?
См. п 2
т.к.
нудистов вокруг, как говна за баней
и легче было набрать существенную команду. Продукты заметные есть и приносят доходы.
Работая в стартапах я сам видел как джависты и прочие более охотно идут в более занудные крупные конторы. Ибо семья, ипотека, долги, предубеждения и прочее.
mgu>2. Зачем на эту должность нанимать вас, когда нудистов (а тем более джаваскриптистов) вокруг, как говна за баней?
Сказали что просто с JS (JQuery и прочий frontend) на серверную часть не берут. Нужен опыт в распределенном бэкенде, пусть и без JS. Это паралеллизация, pipelining, sharding, AMQP и прочее
Еще народ специалиируеся или чисто в программировании или чисто в DevOp. Чтобы сразу 2 это редко. Им очень нужно, чтобы с 2-х сторон проблему понимал и координировал.
Здравствуйте, elmal, Вы писали:
E>Попросить бекенд отсортировать за тебя! Фронтэнд должен заботитьсы об эффективности, ибо он выполняется на крайне малопроизводительных ресурсах. Потому сортировка, даже если это 10 элементов — должна выполняться на бекэнде. Там сервер мощный, не то что мобила на 2 гигагерца и 4 гига памяти.
Вопрос, где должна производиться сортировка, далеко не тривиальный и зависит от конкретных задач. Даже у мощных серверов проблемы с масштабируемостью. А так как информацию на переднем крае потребляет живой человек, то нет смысла передавать на веб-страницу/форму более тысячи элементов данных. Соответственно, качество сортировки такого небольшого объёма не имеет большого значения.
E>И вообще. Я хренею с современного джаваскрипта. Почему то в современных реалиях даже для сеньер фронтэнд разработчиков на нем невозможно сделать то, что без проблем делалось 10 лет назад на том же джаваскрипте. Раньше там был функционал словарей, и можно было без проблем удалять дупликаты. И это было встроено в язык.
Так и сейчас есть: все объекты -- это ассоциативные массивы, т. е. добавить дубликат невозможно, только переписать.
E>В современном джаваскрипте почему то для этого нужен алгоритм с квадратичной сложностью с пробеганием по массиву. Сколько ни собеседовал фронтэндеров, ни один не ответил что такое Dictionary, Map, ассоциативный массив. Кроме тех, кто хотят от 300 тыщ. Кто хотят 150 — те про такое не слышали.
ПризнАюсь, что я лично все эти термины узнал спустя лет 10 после их активного использования на практике. Спросите тех, кто хочет 40 тысяч (студентов) -- они бойко ответят на подобные вопросы.
E>И еще почему то это новое работает только на последней версии браузера, и только одного!
Вот это действительно вопрос вопросов: то есть на клиентов конторам попросту плевать, сайты клепаются только для отчётности в локальной сети, процессы uber alles.
Здравствуйте, mgu, Вы писали:
mgu>Вопрос, где должна производиться сортировка, далеко не тривиальный и зависит от конкретных задач. Даже у мощных серверов проблемы с масштабируемостью. А так как информацию на переднем крае потребляет живой человек, то нет смысла передавать на веб-страницу/форму более тысячи элементов данных. Соответственно, качество сортировки такого небольшого объёма не имеет большого значения.
Это понятно. Проблема в том, что типичный фронтэнд разработчик отсортировать что либо не в состоянии. Если готовый контрол не имеет функции сортировки, то все, задача нерешаемая. Про топологическую сортировку я вообще молчу.
mgu>Так и сейчас есть: все объекты -- это ассоциативные массивы, т. е. добавить дубликат невозможно, только переписать.
Мне вот тоже так казалось. Но какого то черта типичный фронтэндер об этом не знает.
mgu>ПризнАюсь, что я лично все эти термины узнал спустя лет 10 после их активного использования на практике. Спросите тех, кто хочет 40 тысяч (студентов) -- они бойко ответят на подобные вопросы.
К сожалению ни черта. Кто хочет 40 тысяч, те ранее работали курьерами и в макдональдсе, а книжку прочитать еще не успели, да и книжка эта была вида пишем hello world за 24 часа. Да и если у них диплом какого либо КтИУ ИТМО — тоже самое, про такую структуру данных, как дерево, они какого то черта не слышали. И к тому же я вопрос формулирую не что такое хешмап, а по другому. Например с бэкэнда пришла информация о пользователях в виде название организации, инн, выручка. Могут быть дубликаты по названию и инн. Ибо задача достаточно часто реально встречается на практике. Рассказать (не написать на бумажке!!!!) как они будут эти дубликаты отсеивать. Вот реально нерешаемая задача на фронтэнде, не в состоянии ее решить 90 процентов!
Здравствуйте, StandAlone, Вы писали:
SA>Здравствуйте, gandjustas, Вы писали:
G>>Не переживай, для таких как ты есть typescript.
SA>"Слышь, Бивис, а как во всех нормальных языках сделано? Сперва пишется тип, а потом переменная? Слева направо, тут же не арабы, да? Гыгыгы, а мы сделаем наоборот! NotInventedHere!"
"Наоборот" вообще-то не менее почтенно (Pascal со всеми потомками вплоть до Ada), используется массово сейчас (новые языки вроде Swift, Go...) и имеет ряд существенных преимуществ — например, вместо сишных typedef void (*func1_t)(int) начинают писаться конструкции, которые можно понять без выворачивания наизнанку.
Так что переучивайтесь.
Здравствуйте, elmal, Вы писали:
E>И вообще. Я хренею с современного джаваскрипта. Почему то в современных реалиях даже для сеньер фронтэнд разработчиков на нем невозможно сделать то, что без проблем делалось 10 лет назад на том же джаваскрипте.
[...]
Плач замечательный, но это явно не проблема языка.
14.04.2017 9:59, netch80 пишет: > Здравствуйте, elmal, Вы писали: > > E>И вообще. Я хренею с современного джаваскрипта. Почему то в > современных реалиях даже для сеньер фронтэнд разработчиков на нем > невозможно сделать то, что без проблем делалось 10 лет назад на том же > джаваскрипте. > [...] > > Плач замечательный, но это явно не проблема языка.
Но это явно проблема. Реальная трудоемкость (человеко/часов) разработки
обычного Web-интерфейса CRUD и т.п. после того, как генерация DHTML
страниц на сервере была объявлена моветоном, возросла в РАЗЫ. И
обусловлено это в первую очередь именно калечностью языка, стандартно
понимаемого браузерами (т.е. JS). Именно из-за этого возникла
совершенно, извините за выражение, но по другому не скажешь — мудацкая
система с "компиляцией" ("транспиляцией") кода, исполняемого в браузере
из чего-нибудь, на чём хоть как-то можно писать большие проекты, весь
этот grunt, webpack и прочие nodejs костыли.
Да, при чётком разделении фронта и бэка страницы выходят более
красивыми/динамичными, и есть другие преимущества. Но стоимость этой
красоты в реале достаточно высока.
Здравствуйте, StandAlone, Вы писали:
SA>Здравствуйте, John1979, Вы писали:
J>>Я перешел с C++ на ноду очень легко. Если отбросить религиозные убеждения, то ничего страшного в жаваскрипте нет.
SA>Как и в Quick Basic. Хотя, пожалуй, я несправедлив к бейсику.
Ви таки не поверите, но был у меня один проект с Quick Basic — писал на асме модуль для ускорения работы с VESA-графикой.
Здравствуйте, StandAlone, Вы писали:
SA>Во-первых, спасибо за возможность заглянуть под крышку черепной коробки одного из JS-любителей.
HolyWar это конечно весело, но тут такое дело, я процентов 80 кода пишу на C/C++/C#. Да, в некоторых проектах есть фронтенд HTML/JS, но не более.
SA>Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования. Всем, регулярно читающим этот раздел, они конечно же известны, но я все же напомню: SA>1) Напишите реализацию quicksort SA>2) Обойдите дерево в ширину.
Я может чего-то не знаю в JS, в силу того, что это не мой основной язык, но всё же, где тут подводный камень? Просто ХЗ, но вроде во всех императивных языках примерно одно и тоже. Синтаксические конструкции и символы операторов только немного разные вроде.... Такчто, если тебе сильно хочеться, давай свои реализации, я попробую их как-нибудь "оджаваскриптить" SA>3) Реализуйте паттер Visitor.
В JS и ООП то довольно сильно сбоку, вот так бросаться на амбразуру с паттерном Visitor немного не дальновидно... Как-бы голову надо включать и использовать к задачам подходящие инструменты и паттерны. И у меня встречный вопрос — а что был реально рабочий код существующий программы, где у тебя этот паттерн позволил уменьшить её структурную сложность? На каком языке, что за проект? Сколько таких прицедентов было, каждый день пишешь? SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов.
В нормальных проектах этим занимаеться C#/Java на бэкенде. Я вот так даже и представить себе не могу куда между DOM/AJAX можно приткнуть такую хрень и нафига. Что она там делать будет? SA>... SA>6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
Попробуй написать ObservableCollection на C++ без сторонних библиотек и кроссплатформенно. Причём в JS тьма либ/фрейморков её заменяющих, те же angular/React/тысячи-этой-новомодной-хрени, а вот в плюсах вроде особо нет. Так что сделаешь общественно полезное дело.
SA>Ждем-с
Было забавно, но не думаю, что будет конструктивно.
Здравствуйте, elmal, Вы писали:
E>И вообще. Я хренею с современного джаваскрипта. Почему то в современных реалиях даже для сеньер фронтэнд разработчиков на нем невозможно сделать то, что без проблем делалось 10 лет назад на том же джаваскрипте.
Справедливости ради, десктоп этот рак тоже не обошел стороной. Ну или мне в последнее время с проектами не везет. То, что раньше делалось силами одного кодера за неделю, сейчас делается тремя за две, и чтобы использовалось не меньше 20 сторонних пакетов. Иначе все скажут, что не круто.
Впрочем, в вебе реально всё еще хуже
Здравствуйте, Vetal_ca, Вы писали:
mgu>>2. Зачем на эту должность нанимать вас, когда нудистов (а тем более джаваскриптистов) вокруг, как говна за баней?
V_>Сказали что просто с JS (JQuery и прочий frontend) на серверную часть не берут. Нужен опыт в распределенном бэкенде, пусть и без JS. Это паралеллизация, pipelining, sharding, AMQP и прочее
Да, тогда резонно, а синтаксис языка -- это мелочи.
Здравствуйте, elmal, Вы писали:
E>Это понятно. Проблема в том, что типичный фронтэнд разработчик отсортировать что либо не в состоянии. Если готовый контрол не имеет функции сортировки, то все, задача нерешаемая.
До меня, кажется, только сейчас дошло, почему в современных переднеконцовых проектах так много термопар из чугунных библиотек с гламурными элементами управления -- где-то есть функция сортировки, а где-то сортирная функция...
E>К сожалению ни черта. Кто хочет 40 тысяч, те ранее работали курьерами и в макдональдсе, а книжку прочитать еще не успели, да и книжка эта была вида пишем hello world за 24 часа. Да и если у них диплом какого либо КтИУ ИТМО — тоже самое, про такую структуру данных, как дерево, они какого то черта не слышали. И к тому же я вопрос формулирую не что такое хешмап, а по другому. Например с бэкэнда пришла информация о пользователях в виде название организации, инн, выручка. Могут быть дубликаты по названию и инн. Ибо задача достаточно часто реально встречается на практике. Рассказать (не написать на бумажке!!!!) как они будут эти дубликаты отсеивать. Вот реально нерешаемая задача на фронтэнде, не в состоянии ее решить 90 процентов!
Какой кошмар! Понятно, что по-хорошему нужно устранять причину на сервере, но реально до тех разработчиков не достучаться: они целыми днями интервьюируют кандидатов с вопросами из книги "hello world за 24 часа".
Здравствуйте, hrensgory, Вы писали:
H>Но это явно проблема. Реальная трудоемкость (человеко/часов) разработки H>обычного Web-интерфейса CRUD и т.п. после того, как генерация DHTML H>страниц на сервере была объявлена моветоном, возросла в РАЗЫ.
Ну и объём передаваемых данных возрос не по-детски.
H>И обусловлено это в первую очередь именно калечностью языка, стандартно H>понимаемого браузерами (т.е. JS).
Проблема не в языке, а в его применятелях не по назначению. Это всё равно как на легковой машине перевозить холодильник и хаять её низкую грузоподъёмность.
Здравствуйте, Kesular, Вы писали:
K>Справедливости ради, десктоп этот рак тоже не обошел стороной. Ну или мне в последнее время с проектами не везет. То, что раньше делалось силами одного кодера за неделю, сейчас делается тремя за две, и чтобы использовалось не меньше 20 сторонних пакетов. Иначе все скажут, что не круто.
Для троих кодировщиков уже требуются ведущий, менеджер и политрук срам-мастер. Так что получается уже 6 голов.
K>Впрочем, в вебе реально всё еще хуже
Хе-хе, в Джаве раздел с include скоро по количеству строк превысит собственно код.
Здравствуйте, mgu, Вы писали:
mgu>Для троих кодировщиков уже требуются ведущий, менеджер и политрук срам-мастер. Так что получается уже 6 голов.
Вот потому и плодятся конторы, в которых к горизонтальной координации просто принуждают.
Зато если кто вработался в это — можно ограничивать одним начальником любого вида на 10-30 человек.
mgu>Хе-хе, в Джаве раздел с include скоро по количеству строк превысит собственно код.
5 лет пишу на node.js, до этого больше 8 лет писал C# и пару лет на Java. Node нравится, JavaScript/TypeScript нравится. Зная довольно глубоко как язык так и экосистему, я искренне не понимаю глубины ненависти к JavaScript со стороны некоторой части разработчиков.
> Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением?
Для меня было "плюсом для мозгов и новым взглядом на вещи". Если изучения нового в целом боли и мучений не вызывает, то тут думаю проблем не будет.
А у меня противоположный опыт. Ключевой момент по моему мнению, это не ждать от JavaScript того чего там нет и не было, того что хорошо работает в типизированных языках, по той причине что они типизированы. Нужно просто перестроиться и использовать сильные стороны отсутствия строгой типизации.
Здравствуйте, Lazy Bear, Вы писали:
LB>Здравствуйте, Vetal_ca, Вы писали:
V_>>>>Будет ли это плюсом для мозгов и новым взглядом на веши? Или только притуплением, болью и мучением? G>>>Однозначно. LB>Имхо JS после типизированных языков это АДЪ.
Есть TypeScript — вполне себе типизированный javascript.
Здравствуйте, StandAlone, Вы писали:
SA>Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования. Всем, регулярно читающим этот раздел, они конечно же известны, но я все же напомню: SA>1) Напишите реализацию quicksort
думаешь там что-то удивительное будет?
/*
* Алгоритм быстрой сортировки
*
* @param data Array
* @param compare function(a, b) - возвращает 0 если a=b, -1 если a<b и 1 если a>b (необязательная)
* @param change function(a, i, j) - меняет местами i-й и j-й элементы массива а (необязательная)
*
*/
function qsort(data, compare, change) {
var a = data,
f_compare = compare,
f_change = change;
if (!a instanceof Array) { // Данные не являются массивом
return undefined;
};
if (f_compare == undefined) { // Будем использовать простую функцию (для чисел)
f_compare = function(a, b) {return ((a == b) ? 0 : ((a > b) ? 1 : -1));};
};
if (f_change == undefined) { // Будем использовать простую смены (для чисел)
f_change = function(a, i, j) {var c = a[i];a[i] = a[j];a[j] = c;};
};
var qs = function (l, r) {
var i = l,
j = r,
x = a[l+r>>1];
//x = a[Math.floor(Math.random()*(r-l+1))+l];
// x = a[l]; // Если нет желания использовать объект Math
while(i <= j) {
while(f_compare(a[i], x) == -1) {i++;}
while(f_compare(a[j], x) == 1) {j--;}
if(i <= j) {f_change(a, i++, j--);}
};
if(l < j) {qs(l, j);}
if(i < r) {qs(i, r);}
};
qs(0, a.length-1);
};
//BFS
Tree.prototype.traverse = function (callback) {
var queue=[this];
var n;
while(queue.length>0) {
n = queue.shift();
callback(n.value);
if (!n.children) {
continue;
}
for (var i = 0; i< n.children.length; i++) {
queue.push(n.children[i]);
}
}
};
SA>3) Реализуйте паттер Visitor.
Vistor в JS не нужен
SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов.
Мы все еще про "одну из типичных задач программирования" ? На других языках подобного извращения в реальных проектах не встречал. SA>6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
Вот пример https://github.com/knockout/knockout/tree/master/src/subscribables
Много кода, но не смертельно.
Но лучше посмотри как устроен Angular и Angular2. Там two-way databinding работает с обычными js-объектами и там не сильно нужны приседания с Observable_что_то_там
Вообще в JS не принято много писать. Обычно все что надо можно найти в npm\bower\тупо в интернетах.
Здравствуйте, Au, Вы писали:
Au>Здравствуйте, AndyCyp, Вы писали:
AC>>использовать ТайпСкрипт, траспайлить его в ЕС5, и будет тебе счастье
Au>Зачем в ES5? Можно и в ES6 с CommonJs модулями.
я имел ввиду клиента. JS на сервере — изврат, задачи у языка другие. Нода на сервере скорее нужна для сервер сайд рендеринга страниц.
Здравствуйте, senglory, Вы писали:
S>конечно, ничего страшного. Случилось что-то невнятное внутри ангуляра какого или ReactJS — и все, затрахаешься понимать где у него ошибка.
какая связь между проблемами в твоем любимом говнофреймворке с яваскриптом в целом и node.js в частности ?
btw я немного писал на Angular 1.x, чуть больше на React и сейчас у меня шабашка на Angular 2
несмотря на то, что такую проблему, в теории, получить можно, на практике разработчик всегда знает где он накосячил.
Здравствуйте, senglory, Вы писали:
S>конечно, ничего страшного. Случилось что-то невнятное внутри ангуляра какого или ReactJS — и все, затрахаешься понимать где у него ошибка.
и чем это будет отличаться от такой же ситуации в любом другом языке? Код и Ангулара и Реакта — имеется, дебажь сам — если на стаковерфолу забанили
S>>конечно, ничего страшного. Случилось что-то невнятное внутри ангуляра какого или ReactJS — и все, затрахаешься понимать где у него ошибка. J>какая связь между проблемами в твоем любимом говнофреймворке с яваскриптом в целом и node.js в частности ?
J>btw я немного писал на Angular 1.x, чуть больше на React и сейчас у меня шабашка на Angular 2 J>несмотря на то, что такую проблему, в теории, получить можно, на практике разработчик всегда знает где он накосячил.
Разработчик — который из? Я собираю проект, где задействованы помимо ангуляра 2 (как выяснилось, RC4 и RC5 мягко говоря, сильно отличаются, вплоть до несовместимости) еще 2 компонента от 2 разных девелоперов. И от кого добиваться внятной диагностики, а не этой херни со скриншота без малейшего указания на строку, где оно упало и на чем именно?
G>Я бы на твоем месте переживал по поводу других вещей. G>2) В NodeJS вполне возможно придется больше бороться с неработающими зависимостями, багами в окружающих продуктах, леворезьбовыми СУБД и прочим шлаком, который плодится с огромной скоростью. Вполне может оказаться что большую часть времени ты потратишь на приобретение навыка установки и настройки какойнить dzhopadb версии 1.53453.454857, который станет не актуальным в версии 1.63433.5656
Вот это в точку! Почему разработчики всего этого говна под названием JS не сделали его в удобоваримом (хотя бы менее фекальном) виде, чтобы не приходилось таким траходромом заниматься и впустую тратить время жизни?
Au>я искренне не понимаю глубины ненависти к JavaScript
Тогда скажите, какие эмоции должна вызывать такая хрень, не указывающая ни на единое место в моем коде и, следовательно, в моей зоне ответственности? В C# и даже в С++ я имею возможность осмысленно дебагать проблему с гораздо меньшим выносом мозга.
Здравствуйте, senglory, Вы писали:
G>>Я бы на твоем месте переживал по поводу других вещей. G>>2) В NodeJS вполне возможно придется больше бороться с неработающими зависимостями, багами в окружающих продуктах, леворезьбовыми СУБД и прочим шлаком, который плодится с огромной скоростью. Вполне может оказаться что большую часть времени ты потратишь на приобретение навыка установки и настройки какойнить dzhopadb версии 1.53453.454857, который станет не актуальным в версии 1.63433.5656
S>Вот это в точку! Почему разработчики всего этого говна под названием JS не сделали его в удобоваримом (хотя бы менее фекальном) виде, чтобы не приходилось таким траходромом заниматься и впустую тратить время жизни?
Речь не про язык, а про окружающие продукты и фреймворки. В языке как раз более-менее нормально.
Здравствуйте, senglory, Вы писали:
S>Разработчик — который из? Я собираю проект, где задействованы помимо ангуляра 2 (как выяснилось, RC4 и RC5 мягко говоря, сильно отличаются, вплоть до несовместимости) еще 2 компонента от 2 разных девелоперов.
от того, кто автор проекта, который смешал этот коктейль, это-же очевидно.
S>>Разработчик — который из? Я собираю проект, где задействованы помимо ангуляра 2 (как выяснилось, RC4 и RC5 мягко говоря, сильно отличаются, вплоть до несовместимости) еще 2 компонента от 2 разных девелоперов.
J>от того, кто автор проекта, который смешал этот коктейль, это-же очевидно.
Почему же в С++ и в C# таких адовых проблем с элементарными шагами не было у меня никогда ,а тут грабля на грабле, и к тому же pluralsight ни разу не помогает это фекальные массы привести в божеский вид?
Здравствуйте, Vetal_ca, Вы писали:
V_>Пособеседовался в одной компании. Все очень понравилось, не большая, динамичная, открытая.
я стишок вот сочинил. сам
мама, я полюбил javascript
мама, я полюбил javascript
J2EE нафиг из резюме
я больше не хочу компилить
я не могу видеть ant
я крещусь вспоминая tomcat
а с maven deploy занимает полчаса
поэтому я полюбил javascript
Олдскулы скажут, что я дал слабину
Практически продал родную страну
У меня лишь колбэки и я без классов пишу
Я гляжу, как сокращается код
Я не валял дурака
5 лет в офисе от звонка до звонка
Но мне не вытравить из себя чужака
Мама, я полюбил javascript
Мама, я полюбил javascript
Мама, я полюбил javascript
Мама, позвони всем моим друзьям
Скажи им — за веб платят не зря
Вот она — ясность как в си
Всего лишь две скобки и ты создал массив
Мне уже не нужен autocomplete
Мама, я полюбил javascript
Скажи бывшим коллегам, что теперь я большой
Скажи PM, что он болен душой
Я мог бы быть обычным разрабом
Но я упустил эту роль
Зашел в обфускированный ace
Гляжу в логи, но я не вижу stacktrace
Скажи в блоге, что на серверах стоит бес —
Демон nodejs
Мама, я полюбил javascript
Мама, я полюбил javascript
Мама, уничтожь доки по ООП
Мне хватает просто объектов и полей
get-еры, set-еры это фигня
я не переоределял их никогда
public и private абсурдны как вид
Мама, я полюбил javascript
Здравствуйте, senglory, Вы писали:
Au>>я искренне не понимаю глубины ненависти к JavaScript
S>Тогда скажите, какие эмоции должна вызывать такая хрень, не указывающая ни на единое место в моем коде и, следовательно, в моей зоне ответственности? В C# и даже в С++ я имею возможность осмысленно дебагать проблему с гораздо меньшим выносом мозга.
Сочувствую, но JavaScript как язык тут не причем. Тут проблема в конкретной используемой библиотеке System.js, которая кстати никогда не была эталоном хорошей библиотеки.
Здравствуйте, StandAlone, Вы писали:
SA>1) Напишите реализацию quicksort SA>2) Обойдите дерево в ширину. SA>3) Реализуйте паттер Visitor. SA>4) Реализуйте иерархию слоя доступа к данным с элементами AOP, а именно наложением инвариантов посредством атрибутов. SA>... SA>6) Хорошо, напишите хоть что-нибудь размером хотя бы с ObservableCollection. И не забудьте прикрыть локтями ребра...
Я портировал кое какие вещи с дотнета, и все вышеперечисленное реализовал. Код почти один в один как в шарпе, но если писать сразу, без портирования, он будет заметно короче — там где AOP и визитор, например.
Единственная проблема это эвенты для коллекции, тут я взял готовый эмиттер, либа примерно в сотню-две строк, что бы сэмулировать шарповские эвенты.
После перевода этого на тайпскрипт с его дженериками разница с шарпом снизилась до смешного.
Здравствуйте, anton_t, Вы писали:
_>Вы явно не большой спец в Java. Названия методов в Java положено с маленькой буквы делать. _>И код не валидный. Аннотации над return-ом нельзя ставить.
Здравствуйте, senglory, Вы писали:
S>Тогда скажите, какие эмоции должна вызывать такая хрень, не указывающая ни на единое место в моем коде и, следовательно, в моей зоне ответственности? В C# и даже в С++ я имею возможность осмысленно дебагать проблему с гораздо меньшим выносом мозга.
При чем здесь js? Ты проект организовал таким вот образом. У меня в этих же самых ZONE указаны файлы и номера строк.
Аналогично в c++ можно сварганить проект таким образом, что будет вылетать какой нибудь access violation с указанием адреса. И что?
S>>Тогда скажите, какие эмоции должна вызывать такая хрень, не указывающая ни на единое место в моем коде и, следовательно, в моей зоне ответственности? В C# и даже в С++ я имею возможность осмысленно дебагать проблему с гораздо меньшим выносом мозга.
I>При чем здесь js? Ты проект организовал таким вот образом. У меня в этих же самых ZONE указаны файлы и номера строк. I>Аналогично в c++ можно сварганить проект таким образом, что будет вылетать какой нибудь access violation с указанием адреса. И что?
И то, что по моим наблюдениям произвольно взятый с целью познакомиться с технологией проект на C# с Codeproject берется, собирается и без видимых ошибок запускается в 8 случаях из 10. А с JS такое проходит хорошо если в 3 из 10. Или в наполнении Codeproject тоже я виноват?
Здравствуйте, senglory, Вы писали:
I>>При чем здесь js? Ты проект организовал таким вот образом. У меня в этих же самых ZONE указаны файлы и номера строк. I>>Аналогично в c++ можно сварганить проект таким образом, что будет вылетать какой нибудь access violation с указанием адреса. И что?
S>И то, что по моим наблюдениям произвольно взятый с целью познакомиться с технологией проект на C# с Codeproject берется, собирается и без видимых ошибок запускается в 8 случаях из 10. А с JS такое проходит хорошо если в 3 из 10. Или в наполнении Codeproject тоже я виноват?
И что с того ? С++ как технология которой скоро 40 лет. Тебя ничего здесь не смущает ? Почему JS, который по факту гораздо моложе, а применяться по-взрослому начал вообще вчера, должен соответствовать твоим ожиданиям ?
I>>>При чем здесь js? Ты проект организовал таким вот образом. У меня в этих же самых ZONE указаны файлы и номера строк. I>>>Аналогично в c++ можно сварганить проект таким образом, что будет вылетать какой нибудь access violation с указанием адреса. И что?
S>>И то, что по моим наблюдениям произвольно взятый с целью познакомиться с технологией проект на C# с Codeproject берется, собирается и без видимых ошибок запускается в 8 случаях из 10. А с JS такое проходит хорошо если в 3 из 10. Или в наполнении Codeproject тоже я виноват?
I>И что с того ? С++ как технология которой скоро 40 лет. Тебя ничего здесь не смущает ? Почему JS, который по факту гораздо моложе, а применяться по-взрослому начал вообще вчера, должен соответствовать твоим ожиданиям ?
Здравствуйте, senglory, Вы писали:
S>>>И то, что по моим наблюдениям произвольно взятый с целью познакомиться с технологией проект на C# с Codeproject берется, собирается и без видимых ошибок запускается в 8 случаях из 10. А с JS такое проходит хорошо если в 3 из 10. Или в наполнении Codeproject тоже я виноват?
I>>И что с того ? С++ как технология которой скоро 40 лет. Тебя ничего здесь не смущает ? Почему JS, который по факту гораздо моложе, а применяться по-взрослому начал вообще вчера, должен соответствовать твоим ожиданиям ?
S>Я в последнем посте помянул C#, если ты не видел.
JS по факту начал внятно применяться после 2005го, когда Гугл публично показал мастер-класс. SPA, хотя были запатентованы в 2002 или 2003м, массово начали применяться где то после 2010.
С# — почти вся инфрастуруктура для отладки той же наследована целиком и полностью от Visual Studio, которой сто лет в обед.
Здравствуйте, Ikemefula, Вы писали:
I>И что с того ? С++ как технология которой скоро 40 лет. Тебя ничего здесь не смущает ? Почему JS, который по факту гораздо моложе, а применяться по-взрослому начал вообще вчера, должен соответствовать твоим ожиданиям ?
ErrorignoreYes
Re: Проблемы с сайтом vk.com (ВКонтакте) в браузерах Mozilla
JavaScript error: str is undefined
JavaScript error: Mutations are not initialized
Сегодня появились такие ошибки в ВК , использую обозреватель Палмун, порядка 20 разных браузеров на разных компьютерах , и везде вылезли эти ошибки .
Теперь нельзя написать в диалоги вк, просмотреть диалоги , остальное работает.
Открываем консоль, видим что валится emoji.js:1129, смотрим этот код.
И испытываем истинное наслаждение от знаменитого качества прославленных разработчиков сайта-идеала для апологетов JS
setStickersKeywords: function(keywords, update) {
if (!keywords) {
return false;
}
window.stickersKeywords = {};
var el = ce('div');
var sep = '\n';
var acc = [];
var str = '';
keywords.forEach(function(item) {
var words = item.words || [];
var user = item.user_stickers || [];
var promo = item.promoted_stickers || [];
var res = user.concat(promo.map(function(id) {
return -id;
}));
words.forEach(function(word) {
str += sep + word;
acc.push(res);
});
});
val(el, str);
str = el.textContent || el.innerText;
str.slice(sep.length).split(sep).forEach(function(word, i) {
window.stickersKeywords[word] = acc[i];
});
if (!Emoji.stickers[-1]) {
var recent = ls.get('recent_stickers');
if (recent) {
Emoji.stickers[-1] = recent;
}
}
if (update) {
ls.set('stickers_keywords', {time: vkNow(), keywords: keywords});
Emoji.updateStickersHints(true);
}
}
Предвосхищая твой вопрос, Ikemfula "А чё не так-то, што случаицца", отвечу сразу.
С этим кодом все так. Он прекрасен. Он совершенен в своей форме свернутой на донышке унитаза вонючей личинки. Так же как твоя реализация Визитора или событий через браузерную очередь событий от UI.
Здравствуйте, StandAlone, Вы писали:
SA>Открываем консоль, видим что валится emoji.js:1129, смотрим этот код. SA>И испытываем истинное наслаждение от знаменитого качества прославленных разработчиков сайта-идеала для апологетов JS
И давно vk стал идеалом для апологетов JS ? Ты андройдом пользуешься ? Если так, то ты почти каждый день пользуешь софт, который писан на жеэсе и даже не подозреваешь этого.
SA>Предвосхищая твой вопрос, Ikemfula "А чё не так-то, што случаицца", отвечу сразу. SA>С этим кодом все так. Он прекрасен. Он совершенен в своей форме свернутой на донышке унитаза вонючей личинки. Так же как твоя реализация Визитора или событий через браузерную очередь событий от UI.
С жеэсом только одна проблема — его слишком много и повсюду, потому возникает ощущение, что глючит именно он. Хоть что нибудь, да будет глючить.
Здравствуйте, gandjustas, Вы писали:
SA>>Опишите, пожалуйста, как бы Вы решали с использованием JavaScript одну из типичных задач программирования.
G>думаешь там что-то удивительное будет?
... G>Вообще в JS не принято много писать. Обычно все что надо можно найти в npm\bower\тупо в интернетах.
Здравствуйте, elmal, Вы писали:
E>Попросить бекенд отсортировать за тебя! Фронтэнд должен заботитьсы об эффективности, ибо он выполняется на крайне малопроизводительных ресурсах.
Это с одной стороны. А с другой — у фронта свой собственный девайс, а бэку надо обслуживать всех. И когда на бек, внезапно, начинают ходить, нет, не миллионы и прочие АЭС, а хотя бы десяток пользователей в секунду, то, внезапно, у любителей переваливать все задачи на бэк начинаются серьезные проблемы. Вот прям сейчас с очередным таким проектом разгребаюсь.
E> Потому сортировка, даже если это 10 элементов — должна выполняться на бекэнде. Там сервер мощный, не то что мобила на 2 гигагерца и 4 гига памяти.
Уже на десятке-другом одновременных пользователей на каждого из них приходится меньше ресурсов, чем даже на кетайском андроедофоне. С другой стороны, отдельные любители ангуляров умудряются добиться конкретных тормозов в банальном интернет-магазине на полноценном Core M, а на смарте таким суперсайтом пользоваться просто невозможно.
Вобщем, все как обычно — крайности в инженерном деле не работают. И, кстати, к вопросу о full stack из соседнего топика.
Здравствуйте, StandAlone, Вы писали:
SA>3) Реализуйте паттер Visitor.
В динамических языках полностью бессмысленный паттерн. Смысл визитора — динамическая диспетчеризация по типу вне собственно типов-аргументов. В JS можно извне подвесить любому прототипу любой метод, так что визитор не нужен.
Здравствуйте, sharpman, Вы писали:
S>Ты учитель информатики в школе?
Нет, просто человек принципиально не разбирающийся в технологиях фронта. Сам таким был. В результате — прям по Пруткову, "узкий специалист подобен флюсу ...".
Здравствуйте, Kesular, Вы писали:
K>Один тимлид и/или архитектор, один старший программист и один "просто программист". И я не преувеличиваю, сам видел такие примеры в реальности.
И что с ними не так? По сути три разработчика, просто разного уровня. К ним еще, обычно, полагается PM и product owner. Совершенно типовая структура, применяемая в куче вполне успешных софтовых компаний.
Здравствуйте, Vetal_ca, Вы писали:
V_>Пособеседовался в одной компании. Все очень понравилось, не большая, динамичная, открытая.
Тут и дальше по ссылкам в блог есть хорошее описание проблем Node.js.
Главное понять, что в некоторых случаях node.js будет выбором похуже чем другие системы.
Всё нужно применять с умом.
Здравствуйте, StandAlone, Вы писали:
SA>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>> В JS можно извне подвесить любому прототипу любой метод, так что визитор не нужен.
SA>=== SA>
1 prototype — нативное свойство. Свойства, особенно нативные, удалить не получится. Потому выделенные строчки ничего не меняют.
2 Теперь, если ты в консоли укажешь вот такое A.prototype.constructor === a.constructor, то увидишь true. Почему так ? Это ожидаемое поведение, как и должно быть. А вот a.constructor === B даёт true тебе кажется странным. Объяснение простое — ты сам перезаписал прототип A.
Если это трудно понять, то достаточно вывести console.dir(C.prototype.constructor) где C новая функция, ничем не запомоеная. С.prototype.constructor === C !
Теперь если сделать c = new C() то экземпляр C получит в качестве значения constructor именно C.prototype.constructor.
Надо ли объяснять, что в твоём случае с А ровно так же, только ты запомоил прототип и указал там B. Т.е. всё просто — именно прототип определяет объект. Собственно это следует из того факта, что JS это прототипное ООП.
В сумме получается так — для тебя в новинку это самое прототипное ООП, но ты продолжаешь его насиловать и ждёшь, что оно станет привычной тебе симуловской разновидностью.
Поведение мало того, что логичное, еще и очень полезное. Позволяет инструментировать конструктор, но при этом инструментирование нисколько не засоряет иерархию наследования. Т.е. если ты влупишь instanceOf, всё будет как и должно быть в симуловском варианте.
Здравствуйте, mgu, Вы писали:
K>>Справедливости ради, десктоп этот рак тоже не обошел стороной. Ну или мне в последнее время с проектами не везет. То, что раньше делалось силами одного кодера за неделю, сейчас делается тремя за две, и чтобы использовалось не меньше 20 сторонних пакетов. Иначе все скажут, что не круто.
mgu>Для троих кодировщиков уже требуются ведущий, менеджер и политрук срам-мастер. Так что получается уже 6 голов.
И это правильно. Всё как и везде. Ремонт в квартире доверь исполнителям, что бы никто их не контролировал, не руководил и убедись.
Если ремонт делается силами одного человека, то строитель, бригадир и прораб это один человек и это просто роли, которые этот человек совмещает.
Если ремонт посложнее и строителей несколько, то самый минимум — выделяется бригадир и он же выполняет роль прораба.
Если ремонт еще сложнее, то бригадир уже не справится и роль прораба лучше доверить отдельному человеку.
При этом с заказчиком коммуницируют все еще бригадир и/или прораб.
А если ремонт еще сложнее, то коммуникацию с заказчиком лучше доверить отдельному человеку.
В разработке все идет примерно к такой же модели. Для троих кодировщиков нужен ведущий(бригадир), менеджер(прораб) и коммуникатор, частный случай которого есть скрам-мастер. В идеальном случае роли могут быть распределены между троими кодерами. Но в большинстве случаев это уже не так.
Вобщем если у тебя таки есть сомнения, запусти в свою квартиру несколько стройбанов, из тех что подешевле, и проверь.
Здравствуйте, Ikemefula, Вы писали:
I>И это правильно. Всё как и везде. Ремонт в квартире доверь исполнителям, что бы никто их не контролировал, не руководил и убедись.
Интересное сравнение.
I>В разработке все идет примерно к такой же модели. Для троих кодировщиков нужен ведущий(бригадир), менеджер(прораб) и коммуникатор, частный случай которого есть скрам-мастер. В идеальном случае роли могут быть распределены между троими кодерами. Но в большинстве случаев это уже не так.
Коммуникатор -- это, скорее, продукт-говнер. Я при всей своей фантазии не могу себе представить личность, которая каждое утро допрашивает строителей по поводу того, что им мешало танцевать.
I>Вобщем если у тебя таки есть сомнения, запусти в свою квартиру несколько стройбанов, из тех что подешевле, и проверь.
Плавали, знаем. Если кратко, то кадры решают всё. А уж как они садятся, не имеет значения.
Здравствуйте, mgu, Вы писали:
I>>В разработке все идет примерно к такой же модели. Для троих кодировщиков нужен ведущий(бригадир), менеджер(прораб) и коммуникатор, частный случай которого есть скрам-мастер. В идеальном случае роли могут быть распределены между троими кодерами. Но в большинстве случаев это уже не так.
mgu>Коммуникатор -- это, скорее, продукт-говнер. Я при всей своей фантазии не могу себе представить личность, которая каждое утро допрашивает строителей по поводу того, что им мешало танцевать.
Коммуникатор нужен не для контроля исполнителей. Для этого у них бригадир-тимлид. Коммуникатор говорит с заказчиком, что бы у заказчика была полная информация о состоянии дел и что бы у заказчика узнавать все необходимые требования, уточнения и тд.
Здравствуйте, Ikemefula, Вы писали:
I>Коммуникатор нужен не для контроля исполнителей. Для этого у них бригадир-тимлид. Коммуникатор говорит с заказчиком, что бы у заказчика была полная информация о состоянии дел и что бы у заказчика узнавать все необходимые требования, уточнения и тд.
Так и я о том же:
Владелец продукта (Product Owner) — представляет интересы конечных пользователей и других заинтересованных в продукте сторон.
Здравствуйте, mgu, Вы писали:
I>>Коммуникатор нужен не для контроля исполнителей. Для этого у них бригадир-тимлид. Коммуникатор говорит с заказчиком, что бы у заказчика была полная информация о состоянии дел и что бы у заказчика узнавать все необходимые требования, уточнения и тд.
mgu>Так и я о том же:
mgu>
mgu>Владелец продукта (Product Owner) — представляет интересы конечных пользователей и других заинтересованных в продукте сторон.
Ты совсем о другом.
Представь себе, отдел маркетинга-менеджмента человек надцать, занимаются самыми разными вещами. Продукт овнер отвечает конкретно за продукт. Кроме продукта есть еще масса вещей — реклама та же, сопутствующие сервисы, другие продукты, пакеты всевозможные.
И команда — человек надцать.
Каким образом договорятся надцать технарей и надцать маркетологов? Напрямую — никак. Потому от команды идет свой предствитель, от маркетологов идет свой.
Преставитель маркетологов — продукт-овнер. А у тебя с ног на уши поставлено, продукт-овнер ажно частью команды стал.