Evgen
В каждой шутке есть доля шутки
Тема все равно получилост интересно, я бы с интересом почитал статью, если решишься сделать
Shub
Ну или какую вы там предпочитаете терминологию
Alexandr
Да обычная херь типа UI - application - service - persistence
Я накалякал на коленке Лаунчер который качает \ чекает файлы, имеет гуй, обновляться самостоятельно и общается для этого с сервером тоже накаляканым на коленке. Вот тип такого по смыслу?
Shub
Тема все равно получилост интересно, я бы с интересом почитал статью, если решишься сделать
Я могу сделать хелло ворлд сервис с комментами, потому что статья будет реально пересказом документации. Тут нет какого-то прорыва, просто добрые люди в МС решили, что не надо делать асп специфик решения
Alexandr
Ну вообще кстати да! Я использовал жираф и авалонию!
Alexandr
сатурн хотя*, хотя едино
Alexandr
ну еще можно просто сокетом общаться
Shub
Я накалякал на коленке Лаунчер который качает \ чекает файлы, имеет гуй, обновляться самостоятельно и общается для этого с сервером тоже накаляканым на коленке. Вот тип такого по смыслу?
Ну смысл в приложении будет любой конечно, тут скорее тип приложения важен. Тк процессить веб запросы выглядит немножко иначе, чем процессить очереди. Но суть примерно та же. В современном мире задачу дизайна на себя берет фреймворк. Spring, Asp.net, django и т.п. Когда такого фреймворка нет (как например в F#) - у кодерков случается кризисный эпизод. Ну вот этот вот HostBuilder оказался чем-то вроде зверобоя
Mikhαil
Я бы тоже глянул с удовольствием
Alexandr
Блин забавно, я вот сейчас осознал что не понимаю как на базовом уровне работает веб-север, когда получает реквесты на юрл и тд
Alexandr
То есть я понимаю базово тцп-айпи
Alexandr
могу юзать сокеты и вебсокеты
Alexandr
Ля надо гуглануть
Alexandr
То есть там же тоже примитивный интерфейс лежит в основне, вроде тцпайпи, но я его не тыкал
Vasily
Если я правильно понял @nigurrath , то hostbuilder является аналогом ESB между отдельными модулями сервиса
Alexandr
Я ксати когда вкатывался в дотнет так и не понял как юзать логгер какой-нибудь, поэтому написал свой простенький 😆а потом понял что он у меня не умеет в многопоток сюк пришлось допиливать
Arthur
Или мб я тебя не так понимаю
Shub
Блин забавно, я вот сейчас осознал что не понимаю как на базовом уровне работает веб-север, когда получает реквесты на юрл и тд
Ну всего-то стоит запилить свой фреймворк поверх http. Мне помогло по крайней мере. Когда-то была только джанга и werkzeug, и спека на wsgi. И хотелось че-то полегче джанги. Я конечно зафейлил все в конце, но разобрался, как оно все устроено. Пока еще не нашел фреймворка, который бы функционировал по другим принципам
Vasily
Хостбилдер скорее как транспорт
Alexandr
Это вообще нормальная тема когда хочешь в чем-то разобраться - сделай это 😆
Alexandr
Хочешь разобраться в работе RISC-V процессоров? Напиши его эмулятор!
Arthur
Это вообще нормальная тема когда хочешь в чем-то разобраться - сделай это 😆
ага, а ещё реверсинжинирни и выучи исходники чего-либо похожего
Alexandr
Реверинжиниринг это бля на чем я живу изучая F#, потому что учебного пособия не то, что бы много для него
Arthur
а что ты на f# реверсинжиниришь ?
Alexandr
Я имею ввиду, когда нужно разобраться, как добиться опр. функционала
Shub
Так хостбилдер же просто конфижит приложение. Всегда его юзаю, как-то не вижу особой корреляции с архитектурой
И инжектит. Что требует классов, как минимум одного, для собственно твоего сервиса. Ты понимаешь, что этот сервис требует зависимости, которые можно заинжектить, в результате у тебя класс сервиса + Х классов зависимостей (в нашем случае их максимум два). Внутреннее устройство классов роли не играет, поэтому мы их можем реализовать в терминах чистых функций, для облегчения жизни
Ilya
Звучит как не особо хороший кейс
Зато разобрался, как логгер работает.
Alexandr
Находишь как это где-то реализовано и изучаешь как это было реализовано
Alexandr
так это не реверсинжиниринг тогда :)
ну возможно, для меня расковырять исходники хотя бы стд или другой либы или другой код и потом написать свое все реверс! в каком-то смысле
Alexandr
Звучит как не особо хороший кейс
ну там чето не особо внятное было когда искал, и я со стримами не был знаком, поэтому проще было написать самому, в процессе написания понял что таки от меня нужно было, лол
Alexandr
Ну, кстати, я до сих пор не уверен что логгер стандарт либы покажет мне номер строки и файл!
Vladislav
С одной стороны адаптив- граф вычислений
Ну у тебя получается что ноды будут пересчитываться самим адаптивом, где это ноды это граф вьюх
Shub
Кстати на этом хост билдере дофига всяких полезных методов, которые убирают бОльшую часть психотических стимптомов, типа парсинга CLI args на тысячи строк
Alexandr
Зачем ему это делать?
Потому что я хочу! Поэтому под мелочь использую свой, да :)
Shub
А в самом слое домена мы можем юзать крайне функциональные штуки. У нас пользуется популярностью TypeShape
Shub
Я не вижу смысла, если честно, тк сервисы стали крайне тривиальными и можно не бояться, что кто-то спутает айдишники
Ilya
Потому что я хочу! Поэтому под мелочь использую свой, да :)
Номер строки и файл чего именно ты хочешь?
Shub
Но вот юзают
Mikhαil
Потому что я хочу! Поэтому под мелочь использую свой, да :)
Ты ещё совсем зелень, да? Сори за нескромный вопрос
Alexandr
Там просто автоматиески с вызовом метода номер строки откуда вызов и имя файла из исходников где он произошел
Mark
извините кому больно стало
Ayrat
стектрейсы при знании символов указывают файл и строку
Ayrat
Он хочет.
Понял. Валидно
Alexandr
да это же маразм
да я уже видел, как нормальное логирование выглядит, это вкурсе)
Ilya
Юзкейс непонятен, если честно.
Ayrat
Логинг нонче стоит дороже чем сам хостинг апликейшна
Ayrat
то есть ты там крутишь своё барахло на 100 цпу и логирование рядом на сука 100 цпу
Alexandr
Тогда мне показалось это интересным
Mikhαil
Юзкейс непонятен, если честно.
Да какой юзкейс? Он писал какую-то небольшую утилиту и решил что будет удобно если будет номер строки
Alexandr
У меня еще слишком много логирования
Mark
а если эксепшна нет и надо по логам понять что пошло не так? и в таких случаях хочется быстро узнать в каком месте лог был вызван
Alexandr
В плане что нужно это сокращать, ну либо нормально разграничить инфо и дебаг
Mark
когда я легаси чинил, мне бы это очень помогло
Ayrat
и там к логированию индексы, поиски, бд, йоба объемы для истории, пиздануться. Помимо просто забора логов приложения (у приложения 1000 рпс допустим, на каждый реквест 10 лог евентов, лог сервер должен принимать 10000 рпс. Но конечно там буферят, но один хуй), надо еще их рассортировать, поиндексировать и параллельно обрабатывать запросы тех кто ищет логи
Ayrat
Это сразу чтобы любителей пологировать все на свете охолонить
Ayrat
Каждая лог строчка блять на вес золота
Alexandr
Не, про это я уже вкурсе
Alexandr
Что там террабайты логов уезжают
Ayrat
зависит от приложения)
понимаю. Но кейсов где надо логировать место вызова я еще не видел
Ayrat
есть же маразматики которые логируют ВХОД в функцию, аргументы, ВЫХОД
Ayrat
ну типа дебажат по логам
Shub
понимаю. Но кейсов где надо логировать место вызова я еще не видел
Серилог вполне себе может в контекст. Вплоть до метода
Alexandr
Вот у меня такое да, только без не всегда аргументы и выхода тоже нет! И из этого вторая проблема, большинство логов уровня info, и там 90% надо превращать в debug
Mark
то есть у меня был не хайлоад, логов было уж точно не на гигабайты зато был код, где было всё обмазано Action<>, Func<> всё вызывало друг друга юзался Task.Run() без трекинга таски встречались статические поля классов, которые правились всем подряд но это работало, почти всегда :)
Ilya
По идее атрибуты надо расставить просто. Есть же CallerFilePath и такое же про номер строки. Дороговато только будет.
Alexandr
Ага, вот эту штуку я и юзал
Alexandr
Но ниче, для некст фигни я планирую основательно запилить адекватное логирование с чем-нибудь нормальным без своей васянки