Я вот тоже не понимаю зачем все эти библиотеки непонятные
Затем, что C# - строго-типизированный язык, ему нужны типы данных, и эти непонятные библиотеки уже всё для вас имплементируют, например, Chat или Message. Вы точно хотите это писать руками?
запустить это всё почти на любом самом дешёвом хостинге
Вы сравниваете тёплое (вебхуки vs long-polling) с мягким (количество кода).
Почему не вебхуки? Для них нужно светить задницей HTTP-сервером в интернет, либо завязываться на облако. А зачем мне этот ваш амазон, если с long-polling можно запустить бота хоть на тостере?
Видимо оскуднение притока новых пользователей очень быстро начало негативно отражаться на финансовых показателях.
Скорее просто достали калькулятор и посчитали, что на пиратов могут забить, потому что основной финансовый выхлоп у них с энтерпрайза, а не Иванов и Джонов.
Представьте что сообществу Хабра подарили велосипед. Только он не простой, а с палкой в колесе. Когда сообщество закономерно подумало: "что-то неприятно кататься, без палки-то лучше будет", - почесало репу и попробовало пофиксить велосипед для следующих коллег, пришла административная указка "сверху", мол, низя, палку верните, нам за неё денег заплатили.
а также дает возможность недорого заменить одну технологию доступа к БД на другую. Postgres можно заменить на MongoDb и спецификации в домене менять не придётся
Всё это замечательно выглядит, но ровно до тех пор, пока игрушечные примеры не поменяем на бизнес-логику чуть посложнее. Что, например, делать, если наша задача хорошо ложится на оконные функции или на какой-нибудь lateral join?
А, то есть я могу добавить в игрушку три в ряд пункт меню, который открывает вебапп электронного кошелька? И это спасёт меня от строгого взора регуляторов, ведь это "тупо вебапп, не прямая интеграция а костыль, который де юро с игрой никак не связан"?
Подайте идею российским банкам, а то их приложения турнули из магазинов, а они не знают, что достаточно просто сделать игрушку.
То, что вы видите, это не IL/промежуточный код, как утверждают комментаторы выше, а C#, сгенерированный из IL. Угловые скобочки в именах идентификаторов в C# невалидны, а в IL - вполне себе норм.
Зачем эти скобочки нужны? Просто позволяют отличить пользовательский код от кода, сгенерированного компилятором.
Очевидно ли для вас, что здесь есть developer exception page и аутентификация? Точнее, может быть есть, а может и нет. Что сначала выполнится CustomMiddleware, а уж потом "/"? Что если вам не нужно настраивать CORS, то .UseAuthentication() можно не указывать, но если написали .UseCors(), то будьте добры, укажите и аутентификацию.
Я соглашусь с вашим коллегой, на комментарий которого вы отвечаете, что C# в какой-то момент свернул не туда. Посмотрите на Minimal API и скажите честно: оно точно надо было? У кого-то attention span короче 10 строчек? app.UseEndpoints(e => {}); - это что вообще? Почему нужен какой-то костыль, чтобы вся эта автоматическая магия не сломалась?
Радует только то, что этим не заставляют пользоваться, можно всё выкинуть и вернуть старый-добрый Startup. Да, многословнее, зато весь пайплайн перед глазами.
Затем, что C# - строго-типизированный язык, ему нужны типы данных, и эти непонятные библиотеки уже всё для вас имплементируют, например, Chat или Message. Вы точно хотите это писать руками?
Так и на шарпе можно.
Вы сравниваете тёплое (вебхуки vs long-polling) с мягким (количество кода).
Почему не вебхуки? Для них нужно светить
задницейHTTP-сервером в интернет, либо завязываться на облако. А зачем мне этот ваш амазон, если с long-polling можно запустить бота хоть на тостере?Скорее просто достали калькулятор и посчитали, что на пиратов могут забить, потому что основной финансовый выхлоп у них с энтерпрайза, а не Иванов и Джонов.
Фиг с ним, с этим тестом.
Представьте что сообществу Хабра подарили велосипед. Только он не простой, а с палкой в колесе. Когда сообщество закономерно подумало: "что-то неприятно кататься, без палки-то лучше будет", - почесало репу и попробовало пофиксить велосипед для следующих коллег, пришла административная указка "сверху", мол, низя, палку верните, нам за неё денег заплатили.
Двачую -- текст слишком контрастен и выжигает глаза :(
dynamic - это не анонимные типы. Тезис вы не опровергли.
Всё это замечательно выглядит, но ровно до тех пор, пока игрушечные примеры не поменяем на бизнес-логику чуть посложнее. Что, например, делать, если наша задача хорошо ложится на оконные функции или на какой-нибудь lateral join?
"Never argue with a fool; onlookers may not be able to tell the difference."
Нет никакой разумной причины спорить с плоскоземельщиками.
Почитайте про угловое разрешение, например тут (Pixels Per Degree: It’s All About the Angle).
Полная скорость - это какая?
А, то есть я могу добавить в игрушку три в ряд пункт меню, который открывает вебапп электронного кошелька? И это спасёт меня от строгого взора регуляторов, ведь это "тупо вебапп, не прямая интеграция а костыль, который де юро с игрой никак не связан"?
Подайте идею российским банкам, а то их приложения турнули из магазинов, а они не знают, что достаточно просто сделать игрушку.
Это часть имени поля (
<>1__state
).То, что вы видите, это не IL/промежуточный код, как утверждают комментаторы выше, а C#, сгенерированный из IL. Угловые скобочки в именах идентификаторов в C# невалидны, а в IL - вполне себе норм.
Зачем эти скобочки нужны? Просто позволяют отличить пользовательский код от кода, сгенерированного компилятором.
В классическом, не Minimal, API вы описываете пайплайн от начала до конца, поэтому да?
Я имею в виду, я не вижу в этом вызове эндпоинтов, мы же передаём пустой делегат, правильно? А нет, оказывается, неправильно: это одно и то же:
Или нет? Почему нужен пустой делегат?
Давайте посмотрим на этот пайплайн:
Очевидно ли для вас, что здесь есть developer exception page и аутентификация? Точнее, может быть есть, а может и нет. Что сначала выполнится
CustomMiddleware
, а уж потом"/"
? Что если вам не нужно настраивать CORS, то.UseAuthentication()
можно не указывать, но если написали.UseCors()
, то будьте добры, укажите и аутентификацию.Принцип есть такой: явное лучше, чем неявное.
Я соглашусь с вашим коллегой, на комментарий которого вы отвечаете, что C# в какой-то момент свернул не туда. Посмотрите на Minimal API и скажите честно: оно точно надо было? У кого-то attention span короче 10 строчек?
app.UseEndpoints(e => {});
- это что вообще? Почему нужен какой-то костыль, чтобы вся эта автоматическая магия не сломалась?Радует только то, что этим не заставляют пользоваться, можно всё выкинуть и вернуть старый-добрый Startup. Да, многословнее, зато весь пайплайн перед глазами.
И Tailscale. Pick your poison, как говорится.
Тут недавно суд принял в качестве доказательства скриншот из бота по пробиву данных.
Да, конечно, она у вас на скриншоте:
Как вы сами и выяснили, приложения для одноразовых кодов существуют не только мобильные :)
Ожидание: Github начал требовать номер телефона, находим уязвимость в интерфейсе или API и пропускаем шаг привязки телефона.
Реальность: ну обязательная привязка необязательная, просто кликните кномпочку с фактором не про номер телефона
Как это не встретишь? Торчащая редиска без аутентификации - это уже классика. Вот первая попавшаяся статья для понимания масштабов проблемы: В зоне доступа: Group-IB обнаружила в России 7 500 незащищенных баз данных / Хабр (habr.com)