Pull to refresh
27
0.2
Dmitry Rubinstein @Virviil

Software Developer

Send message

Обычно не использование фреймворка заканчивается изобретением своего собственного фреймворка, если проект разрастается. С которым в конце-концов так же приходится бороться.

Если учесть то, что стандарты веба никто толком не знает - получаются очень часто очень топорные решения. К примеру, видел тысячи проектов на Го, которые отдают в браузер и не удосужились сделать HEAD и OPTIONS роуты. Необходимость вручную думать про CSRF, XSS, правильные роуты в соответствии с REST (которые тоже никто не знает)... А во фреймворке это из коробки, он за тебя позаботился.

Из-за кажущейся свободы начинается полный зоопарк с http codes и error handling в API, структуры папок в которых надо вникать 2 недели после смены проекта, зоопарк решений для конфигурации.

То же самое относится к SQL - тысячи проектов с конкатенацией строк для запросов SQL, каша из функций, raw sql без какого-либо порядка в миграциях и дата-миграциях.

Дикий запад PHP в его худшие годы.

И ради чего? Чтобы "гипотетически" не сражаться с фреймворком, причем на том этапе где все и так начинают переписывать, рефакторить, разбивать на микросервисы?

Как golang попал у вас в список интерпретируемых языков для прототипирования?

  1. Не надо денормализовывать для GQL и натравливать дедубликатор - сервер то твой целиком, зачем делать лишние шаги - тебя никто не заставляет. Если у тебя отдельный черный ящик, который не знает о том, что ты используешь такой подход - тогда эти шаги нужны.

  2. Денормализует клиент и в случае с REST. Тут никакой разницы нету. Чтобы в UI отобразить. То есть "клиенту денормализация не уперлась" - я не могу себе представить такого кейса. Наоброт, в конце-концов клиенту нужна денормализцаия для отрисовки UI.

Для graphql есть некоторые решения которые делают подобное, например вот здесь: https://gajus.medium.com/reducing-graphql-response-size-by-a-lot-ff5ba9dcb60

А как задача с недублированием данных о городе решалась бы в REST подходе?

Стартапы в опыте работы настораживают эйчаров. Стартапы
— часто про хайп. И при этом они быстро закрываются. В итоге у вас в
списке прошлых мест работы могут быть поинты на хайповые темы по
полгода-год работы. Это настораживает эйчаров — кажется, что вас легко
могут переманить в другую компанию.

Как бы сказать помягче... Лично меня настораживают люди которые 5 лет сидят в энтерпрайзе на одной позиции.

Да, именно так.

На самом деле сравнение не корректно. И все результаты фактически вытекают из этого.

Более корректно было бы сравнить горутины с async кодом, в идеале - наверное на голом tokio

Замечу, что tokio умеет запускать рутины в разных «физических» тредах, поэтому io-bound-ность не обязательно

Расскажите - куда читать про то, как это делать правильно?

Будем честны: эта статья - просто маркетинговый булшит.

Из 6 «инструментов» 3 - это просто «а вот у нас в каждом облаке есть что-то для МЛ», а ещё 3 - проприетарщина или сама по себе, и гвоздями прибитая к конкретным облакам, то есть вендор-лок.

Кроме того, из статьи не очень понятно даже какие именно функции в структуре ML Ops выполняют перечисленные инструменты.

Первая статья этого автора довольно общая, но хотябы имеет смысл в контексте минимального описания и ознакомления с темой.

Ну вот по какой-то причине Phoenix вообще не упомянут в самой статье.

Не холивара ради, а только в качестве интереса: не могли бы вы привести несколько примеров таких «фишек», которые есть в PHP а не только в языке X, и заодно сам язык X

Что значит nullable?

В proto3 спецификации все поля - optional, то есть могут либо быть либо отсутствовать. Чем это отличается от nullable?

Так всетки, есть шанс появления FlipperPay, или это слишком невозможно реализовать?

Фишка Wasm в том, что в него компилируется все. Зачем учить ещё один язык, который к тому же компилируется только в Wasm, если можно писать на Go, Rust, Js, C?

И как этот язык может быть чьим-то конкурентом, если у него нету экосистемы?

Безусловной новинкой является язык Go. Включивший в свой синтаксис средства коммуникации между потоками/процессами

 % Create a process and invoke the function web:start_server(Port, MaxConnections)
 ServerProcess = spawn(web, start_server, [Port, MaxConnections]),

 % Create a remote process and invoke the function
 % web:start_server(Port, MaxConnections) on machine RemoteNode
 RemoteProcess = spawn(RemoteNode, web, start_server, [Port, MaxConnections]),

 % Send a message to ServerProcess (asynchronously). The message consists of a tuple
 % with the atom "pause" and the number "10".
 ServerProcess ! {pause, 10},

 % Receive messages sent to this process
 receive
         a_message -> do_something;
         {data, DataContent} -> handle(DataContent);
         {hello, Text} -> io:format("Got hello message: ~s", [Text]);
         {goodbye, Text} -> io:format("Got goodbye message: ~s", [Text])
 end.

Пример из Википедии синтакса Эрланга, появившегося в 1986 году. Обратите внимание на восклицательный знак и управляющую конструкцию receive.

Согласен. Python — это язык с самой ярковыраженной stackoverflow driven development необходимостью. На это есть несколько причин, основные:


  • Довольно дурацкая дока (особенно в библиотеках), постоянное отсутствие примеров
  • Постоянные **kwargs, в которых даже читая source code библиотек не всегда понятно что происходит
  • Каждый пишет как хочет, нет общих паттернов. Код DataScience и код Web Service и сопутствующие библиотеки отличаются по парадигмам и подходам, кроме того есть огромное количество разных покалений (вроде "как тут делать async до того как завезли async"), и все библиотеки на разных покалениях сидят.

В результате, единственный быстрый способ писать на Python — гуглить вопрос как есть и копипсатить со stackoverflow. Качество кода — соответствующее

Я правильно понял, что автор этой статьи считает что необходим WASM и Rust для того, чтобы запустить child process в ноде?

Т.е. кинуть в сумку килограмовый ноут, когда едешь на дачу и знаешь что надо будет поработать — это проблема?

Information

Rating
2,251-st
Location
Тель-Авив, Тель-Авив, Израиль
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
From 900,000 ₽