Тёмный
IT Chat
IT Chat
IT Chat
Подписаться
Programmers always chat next to the coffee machine. Exactly the same is here.
Specflow Alternatives. ChatGpt + SpecFlow
23:55
7 месяцев назад
CSharp Nullable types
18:27
2 года назад
Комментарии
@BYGUR
@BYGUR Месяц назад
Эта самая компания не знает, что кром "О большого" существует еще и "о малое", а также Ω, ω и Θ и θ. И они любят оценивать в т.ч. "О большое снизу". Гуманитарии, которые начитались про матан на хабре и довольные собой дрючат выпускников технических вузов.
@itchatter
@itchatter 2 дня назад
Просто оставлю это здесь: habr.com/ru/articles/204580/ :-)
@andrewsaveliev1578
@andrewsaveliev1578 Месяц назад
Подскажите пожалуйста начал изучать Джаваскрипт учу уже где то пол года ) Думаю может я не то направление выбрал и Думаю может лучше перейти на изучение Раста . Мне 35 лет как думаете что будет лучше для меня в будущей перспективе??) Спасибо за ответ
@itchatter
@itchatter 2 дня назад
Джаваскрипт - хорош для изучения тем что про него очень много информации. И результаты видны сразу. Раст - это уже специфический язык если кратко - "реинкарнация" C++. Какой язык изучать - сильно зависит от того, какие результаты хочется получить. Из того что очень долго остается востребованным и скорее всего еще долго будет - SQL. (А учитывая что всякие GPT очень хорошо умеют его анализировать, то изучать просто). Итого, без деталей очень сложно что-то посоветовать.
@user-dv2et9ij3z
@user-dv2et9ij3z Месяц назад
Radix Sort для слабаков
@semen083
@semen083 Месяц назад
Отработает ли ConcurencyDbException если запустить конкурентное обновление не в рамках одного процесса, а в рамках двух? Например одновременно запустить 2 инстанса приложения?
@duckmanllxo6a
@duckmanllxo6a Месяц назад
Чем контекст от совокупности признаков отличается? Получаются те же самые "слои" в ML.
@serhio0326
@serhio0326 Месяц назад
Intern внутри использует lock - так что для многопоточки не самый лучший вариант, лучше свой кеш строк реализовать
@itchatter
@itchatter 2 дня назад
Я бы рассматривал Intern как очень системную функцию для оптимизации затрат на память чего то "статического". Чего-то, что не будет меняться во время жизни приложения. А, например, для загрузки каких-нибудь однородных огромных таблиц действительно лучше реализовать свой кэш. Особенно в случае, когда когда набор строк которые хочется "закэшировать" меняется в зависимости от данных.
@whoammiwho6172
@whoammiwho6172 2 месяца назад
По настоящему проблемно слушать таких людей. Проблема не в том, что они плохо рассказывают что-то правильно или не неправильно. НЕТ! Они слишком умны и прогоняют всё через то, что они знают, как они думают. Исконно верно с их точки зрения. Но проблема не в языке как языке. Язык это инструмент и тот с которым ты лучше управляешься с всеми шероховатостями и есть Профессионализм(ОПЫТ :). Я прекрасно понимаю опыт этих дедов программирования, кто обязан был копаться в системах зараждающимися и допиливаемых ими же. Где сегодня мы просто используем то, что есть. Нельзя отрицать тот факт, что мы не готовы отказаться от того в чем заинтересованны были раньше наши деды. И чем заинтересованны мы. Поэтому, когда интерес будет сконцентрирован на стороне большинства. Будь то правые или левые. Значит Тем путём мы и пойдём. Поэтому я не согласен с тем, что бери обязательно вот этот язык или другой. Не! делай чё по кайфу - остальное призма. Всем piece ) Да и вообще вибирать инстумент не зная для чего он это глупо. Нужно понять чё ты хочешь делать, а потом уже брать набор инструментов. Все равно ты будешь брать готовый каркас приложения то есть(фреймворк). Чтобы собрать в итоге приложение. Чтобы это не было будь-то: игра сайт приложение или OC хз, что тебе интересно. А может ты чувак увлекающийся VR/Ar и (n)G сетями.
@itchatter
@itchatter 2 дня назад
Это практически философская дилемма - использовать что-то сложное но круто подходящее или же что-то более просто, что сможет понять большее количество людей. Например, кто-то, не очень разбирающийся в хитросплетениях языка программирования может хорошо чувствовать связь приложения и бизнеса. И в этом случае сможет предложить не прогибать программу под требования и поменять требования так чтобы и бизнесу хорошо и можно было легко реализовать. Я придерживаюсь такого подхода в котором важны коммуникации. А для улучшения коммуникаций надо использовать в команде язык понятный в команде. И находить баланс между языком команды и языком "принятым" для конкретной задачи.
@imsomewhere1734
@imsomewhere1734 2 месяца назад
На самом деле системное программирование точно не для всех. Если не понимаешь модель памяти, не понимаешь многопоточность и асинхронность, или уже прости Высший Разум, руки кривые - то Rust даст только еще одного потенциального вредителя.
@itchatter
@itchatter 2 дня назад
Согласен. А с другой стороны то, что нужно знать для системного программирования конечно. Модели памяти уже устоялись и описаны многократно и т.п. Тут уж кому как нравится. Кто-то любит оптимизировать одну функцию по году выжимая доли процентов ускорения и байты памяти экономии а кто-то требует новых задач, как только старые заработали хотя бы в виде прототипа.
@ramilnuftiev8637
@ramilnuftiev8637 3 месяца назад
Большое спасибо, очень полезное видео. Как сделать в Efcore for update skip locked? и есть ли nuget расширение для PostgreSql?
@nastyrcii
@nastyrcii 4 месяца назад
Спасибо вам большое за видео, очень помогли!
@itchatter
@itchatter 2 дня назад
Готовлю онлайн демо. :-) будет тут: dimonsmart.github.io/Demo/
@Pentatonic_Hardcore
@Pentatonic_Hardcore 5 месяцев назад
Спасибо огромное за пояснение. Именно по незнанию об интернированни строк провалил собеседование в одну говнокомпанию.
@qewsux
@qewsux 6 месяцев назад
Большое спасибо за видео!
@scriptboris
@scriptboris 6 месяцев назад
Звук - ужас Оператор - ужас
@itchatter
@itchatter 6 месяцев назад
Спасибо что заметили :-) Работаем над этим.
@Wtf95
@Wtf95 6 месяцев назад
Дмитрий большой спец, Приятная подача идеи и огромный опыт. Спасибо!
@itchatter
@itchatter 6 месяцев назад
Дмитрий крут!
@dmitry_shinelev
@dmitry_shinelev 6 месяцев назад
Спасибо за ознакомительный ролик. Быстро, чётко и по существу!
@itchatter
@itchatter 6 месяцев назад
Мы рады что вам нравятся наши ролики. Будем стараться делать ещё. Кстати, интересно услышать мнение о использовании мигратора. Что понравилось, что нет. Чем пользовались раньше.
@dmitry_shinelev
@dmitry_shinelev 6 месяцев назад
@@itchatter так случилось, что на текущем проекте, куда я попал используется данный мигратор, мне нужно было с ним ознакомиться. В целом, оказалось достаточно удобно. До этого работал с Entity Framework, если говорить про .net стек. Когда работал с Java то использовал Liquibase.
@ez5201
@ez5201 6 месяцев назад
До чего интересно слушать по-настоящему знающих людей! Спасибо!
@z3tzilla
@z3tzilla 7 месяцев назад
Мне довелось поработать со SpecFlow и походить по граблям... Все те проблемы, о которых ты говоришь, я встречал. Гигантских размеров байндинги, несоответствие названий функций тексту, который ей соответствует, гигантские файлы с тестами. В основном это связано с тем, что за все части отвечали программисты, в том числе за сами шаги, которые в итоге превращались в названия функций. 13:40 -- обычно в таком сценарии у нас начиналось с того, что у программиста спрашивали, какие шаги есть и как писать, то есть уже нарушена ответственность. Идея с тем, что оригинальный текст преобразуется в вызовы функций -- огонь. У OpenAI есть возможность вместе с контекстом передать список функций с параметрами чтобы тот преобразовал текст в набор вызовов функций.
@itchatter
@itchatter 7 месяцев назад
SpecFlow - это отличный пример как довольно привлекательная идея полностью портится реализацией...
@itchatter
@itchatter 9 месяцев назад
Я думал что сортировка временем это шутка пока не прочитал этот твит::» I just solved a modal stacking z-index issue by setting the z-index to the amount of time a user has spent on the page using the JS performance interface... thus every new modal opened has a higher z-index.« оригинал: x.com/alexjgarrett/status/1711855242290077701?s=46&t=pSUUZwB1G2U9ZdLF7-sH7Q
@user-np8nj6me7v
@user-np8nj6me7v 11 месяцев назад
ты посмотри как что этот айтишник говорит. оказывается люди не идеальны и склонны совершать ошибки, так он договорится до первородного греха и ада для грешников
@Gigasharik5
@Gigasharik5 11 месяцев назад
И где его программа зрения общего назначения? Его сайт не работает, он тг канал может какой-то ведёт?
@user-nh4ik4vy7d
@user-nh4ik4vy7d 11 месяцев назад
прятные мужички
@user-lp3ke5bg2u
@user-lp3ke5bg2u Год назад
Зачем rust? Язык D чем не устроил?
@OttoGebb
@OttoGebb Год назад
На практике фича Down у миграций мне ни разу не пригодилась. Лучше от её поддержки совсем отказаться, и никогда не тратить время на написание метода Down. В противном случае наступит момент, когда очередная миграция меняет данные необратимым образом, написать её откат будет физически невозможно.
@itchatter
@itchatter Год назад
Я пользовался down миграцией при отладке когда в котором миграция не только менялся таблички но и перекладывала данные. Для отладки было удобно. В реальности код который делает миграцию вниз обычно не тестируется вообще и присутствует для вида. Поэтому полностью согласен что лучше вообще отказаться от метода down чем узнать что он не работает в тот единственный момент когда он реально понадобится.
@City__Walker
@City__Walker Год назад
А я вот поздно начал( пришлось JS) боюсь что до Раста физически не доберусь да и Российский HR своеобразен и предвзят(глубокий старик 44)
@itchatter
@itchatter Год назад
Что мне нравится в IT, так это возможность почувствовать себя джуном в новой технологии даже будучи сеньором в любой другой. Очень классно наблюдать как круто могут общаться люди студенты и "глубокие старики" и как они реально могут многому друг у друга научится.
@ArchibaldPirantelov
@ArchibaldPirantelov Год назад
Отлично видео! У меня тоже начинает появляться ощущение, что чем больше я погружаюсь в C++, тем меньше я знаю о нём и понимаю его.🙂🙂🙂 Хотя я ещё в самом начале на пути к коммерческой разработке.
@itchatter
@itchatter Год назад
C++ - был отличный язык ... для своего времени. Не останавливайся на нём.
@ArchibaldPirantelov
@ArchibaldPirantelov Год назад
@@itchatter, а что посоветуете такое же хардкорное и интересное, в то же время актуальное?🙃😉
@itchatter
@itchatter Год назад
Любопытная постановка вопроса. Всё зависит от того что понимается под хардкорностью и зачем она нужна. Если мы говорим о близости языка к машинному коду и о возможностях низкоуровневых оптимизаций то Assemler и C. Но тут надо понимать что возможность написать что-то очень быстрое это не тоже самое что написать что-то быстро. Чем выше абстракции, тем больше накладные расходы. Но что лучше, программа которая работает неоптимально но сегодня или супер оптимизированная и очень быстрая но очень сильно не сегодня. Про абстракции рекомендую: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Fu67U2px2Jo.html Если же мы говорим о возможностях кратко выражать сложные мысли то тут надо смотреть в сторону dsl и далее. Про DSL сильно рекомендую сайт tomassetti.me/ и пару видео на нашем канале ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-YSh6q5XWGy0.html и ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-YSh6q5XWGy0.html
@VitekXP
@VitekXP 6 месяцев назад
​@@itchatterC++ был отличный язык? Серьезно? Айфон был хорошим телефоном, а бананы вкусным фруктом... 😅
@itchatter
@itchatter 6 месяцев назад
Разверни мысль, пожалуйста. Про C++ да. Для того времени, когда все только прекратили массово пользоваться ассемблерами и когда вообще было не совсем понятно что такое программирование С++ был лучиком света. Сейчас его значение сильно уменьшилось., появились стройные и более структурированные альтернативы.
@user-dx2iw1hm3d
@user-dx2iw1hm3d Год назад
тут разве не О(1), если за константу брать наибольшее из чисел в массиве?
@itchatter
@itchatter Год назад
Хорошее наблюдение. И, кстати, очень похоже что да, но! Чтобы найти это самое большое число все равно надо будет перебрать все элементы, а это опять n.
@BYGUR
@BYGUR Месяц назад
О(1) не зависит от набора данных. Если "константа зависит от содержимого массива", то это уже не константа.
@Kolodan
@Kolodan 8 дней назад
Так когда мы считаем O от чего-то, то мы выкидываем все константы и все, что очень быстро отрабатывает. В данном случае скорость перебора массива явно быстрее, чем sleер с минимальным значением. Значит, самое длинное время - при самом большом элементе. Или я вообще ничего не понял и написал херню)))
@TOK32
@TOK32 Год назад
👍
@itchatter
@itchatter Год назад
Семёну и нам приятно! Спасибо!
@TheInspctrcat
@TheInspctrcat Год назад
Охуенно!
@phyllobolus
@phyllobolus Год назад
Сортировка за линейное время существует, это сортировка подсчётом. Кроме того, хоть в этом алгоритме на первый взгляд и O(n) шагов, не у всех из этих шагов одинаковое время выполнения, и, вообще говоря, правильная оценка работы алгоритма это должна учитывать. Далее, какая-то часть библиотеки языка или даже операционная система должна эти таймеры в правильном порядке выполнить, а для этого значения нужно ... отсортировать, ба-думтс. Троллинг был бы удачнее, если бы вы рассказали про т.н. галактические алгоритмы.
@itchatter
@itchatter Год назад
Спасибо за содержательный комментарий. Кстати, если присмотреться то сортировка таймером и сортировка подсчетом идейно очень близки. Но с таймером гораздо веселее :-).
@itchatter
@itchatter Год назад
Примером сортировки таймером может быть, например, сортировка вагонов по номерам на горке. Спускаем вагон с горки через время равное номеру вагона в минутах. В результате получаем упорядоченный состав за n минут.
@phyllobolus
@phyllobolus Год назад
@@itchatter за какое время вы выбираете нужный вагон? Мне кажется, вы получили сортировку пузырьком.
@phyllobolus
@phyllobolus Год назад
@@itchatter да, я тоже сначала хотел написать, что это сортировка подсчётом, пока не подумал про сложность работы шедулера...
@antonrrtyq
@antonrrtyq Год назад
мне больше нравится таймер ))0)0)
@Tosha.V
@Tosha.V Год назад
крутяк)
@itchatter
@itchatter Год назад
Спасибо!
@alexfilus
@alexfilus Год назад
Это кстати проблема Dungeon AI. Штука прикольная и иногда выдаёт удивительные вещи, но за 3-5 ходов теряет контекст
@user-be9rc4yz8r
@user-be9rc4yz8r Год назад
Тоже отличный видос! Я на днях сделал бегалку в консоли, ну с помощью рэйкастинга и как раз хотел сделать генератор лабиринтов. И вот щас сделал его уже по прошлому вашему видосу, работает отлично. Но часто бывает что закрывает там игрока от карты стенами или всякое такое, так что как раз попробую сделать чтоб проверяло, можно ли там такую карту пройти, и если нет, то заново ее генерировать. Правда пока не знаю как это всё реализовать, но подумаю😁
@itchatter
@itchatter Год назад
Здравствуйте. Очень интересно что имеется ввиду под "закрывает игрока", т.к. алгоритм из предыдущего примера всегда генерирует проходимый лабиринт. И было бы интересно посмотреть на то что у вас получается. Кидайте ссылки на ваши эксперименты сюда. Думаю это многим будет интересно.
@user-be9rc4yz8r
@user-be9rc4yz8r Год назад
@@itchatter всё, я понял в чем проблема, то ли вы не сказали в прошлом видео, то ли я прослушал. Ну в общем проблема в том, что когда у нас строится стена, полосочкой так бежит в какую - то сторону, то при столкновении с другой стеной, эта стена должна закончиться. Вот, я этого не сделал в начале, ну и простой пример закрытия игрока в таком случае, это допустим с клетки 2,2 стенка идет влево, а с клетки 4,2 стенка идет вверх. Таким образом получится, что клетка 1,1 будет изолированной.
@itchatter
@itchatter Год назад
@@user-be9rc4yz8r ​ Отлично что получилось разобраться. Возможно этот комментарий поможет тем кто будет строить лабиринты позднее.
@user-be9rc4yz8r
@user-be9rc4yz8r Год назад
Вау, отличный видос. Причем попался мне под руку как раз тогда, когда мне именно это и нужно было. Супер, спасибо!
@itchatter
@itchatter Год назад
Спасибо! Очень приятно получать такие отзывы!
@Larni_Frey
@Larni_Frey Год назад
Здравствуйте! Есть ли пример, на Гите или у вас лично, реализации данной функции на c#, например с помощью массива или ещё чего :)
@itchatter
@itchatter Год назад
github.com/DimonSmart/MazeGenerator/ Тут и генератор лабиринта и поиск пути в лабиринте. Можно использовать для своих разработок
@Larni_Frey
@Larni_Frey Год назад
@@itchatter Огромное спасибо, изучу )
@user-dj4sk6uo7p
@user-dj4sk6uo7p Год назад
Интересно было послушать подход!
@itchatter
@itchatter Год назад
Спасибо. Продолжение следует. В следующей задаче будем искать путь в лабиринте.
@staruyflorr1793
@staruyflorr1793 Год назад
Учу язык Rust в течении полу месяца, но столкнулся с проблемой что вакансий в моей стране мало и нету компаний которые взяли бы Джуна, требуются в основном опытные Senior программисты, и не знаю что буду делать позже когда обучусь базовыми знаниями и как искать первую работу с маленьким опытом на данном языке.Бывали моменты когда была мысль учить другой язык, но мне понравился именно Rust.В будущих перспективах собирался пойти работать где-то за границей но уже с хорошим опытом. Дайте пожалуйста пару советов.
@itchatter
@itchatter Год назад
Джунам сейчас вообще большая проблема найти работу. Раст в России почти не используют, и не будут. Идет уплощение структуры рынка, и продвинутые технологии там не нужны. Учите более популярный язык, шанс будет выше
@nikita-ku2ed
@nikita-ku2ed 8 месяцев назад
Крути опыт
@johnsnow2810
@johnsnow2810 Год назад
Спасибо, отличное объяснение. Не хватает только демонстрации того как отработали решения с повторами и хинтами. Я имею в виду не бенчмарк, а суммы товаров при параллельном запуске.
@itchatter
@itchatter Год назад
В примере мы увеличивали число ста разных товаров на единичку. А проверяли сумму позже, чтобы убедиться что всё обновилось корректно.
@itchatter
@itchatter Год назад
// Политика повторов через Polly readonly RetryPolicy _concurrencyExceptionRetryPolicy = Policy .Handle<DbUpdateConcurrencyException>() .Retry( retryCount: 100, onRetry: (exceptiona, b) => { Interlocked.Increment(ref RetryCounter); }); // Обновление с использованием политики _concurrencyExceptionRetryPolicy.Execute(() => { using var db = GetDbContext(); var company = GetRandomSKU(); var value = db.WarehousesWithConcurrencyCheck .First(i => i.SKU == company); value.Amount++; db.SaveChanges(); }); // И проверка сумм примерно так public void ShowResultWithoutConcurrencyCheck() { var db = GetDbContext(); var value = db.Warehouses.Select(i => i.Amount).Sum(); Console.WriteLine($"A:{value}"); if (value != 100) Console.WriteLine("Error!!!!"); } P.S. Код не выкладывал - он не красивый и мне за него чуток стыдно :-)
@andreibenkov4339
@andreibenkov4339 Год назад
Спасибо. Хорошо и доступно объяснил.
@ictcorp
@ictcorp Год назад
Хорошо рассказал, доступно. Спасибо
@user-re7ze9db5i
@user-re7ze9db5i Год назад
Контекст - величина, состоящая из совокупности возбужденных подсознанием образов и уверенности в целесообразности этих образов в ситуации, связанных косвенными признаками с образом, который есть в текущем языковом оперировании. (Так как языки могут быть какие угодно, и контекст так же далжен присутствовать). Контекст для кого-то может быть уловим, для кого-то же нет. Зависит от объема совпадения образов у носителей языка. Другими словами, я хочу сказать, что электрик, не имеющий возможность отойти от места, прося подать "ленту" кого-то спонтанного, может спровоцировать у последнего процесс поиска образов в подсознании, и в зависимости от того, был ли найден образ, соответствующий этой ситуации или нет - вызовет чувство уверенности в выбранном нейронами образе из облака образов, или нет, что приведет к тому, что последний мало понимает о чём идет речь (минимальный контекст). Противоположная ситуация: Электрик просит своего помошника, с каоторым работает на каждом объекте уже год, подать "ленту", вследствии чего, последний с большей вероятностью взравным всплеском внимания по нейронным облакам найдет в памяти образы, способные совпасть с данной ситуацией, вследствии чего, почувствует отклик понимания происходящего (максимальный контекст)
@user-cc7fp1dz3g
@user-cc7fp1dz3g Год назад
Спасибо огромное за данный ролик!!! Перечитал Рихтера - но и там такого толком нету разъяснения. А тут за пару минут больше и гораздо лучше все понятно))))
@itchatter
@itchatter Год назад
Спасибо за комментарий. Мы стараемся.
@mapuaptu
@mapuaptu Год назад
Саша мог бы ты сделать то же самое только в JS? Спс
@AlexanderGranin
@AlexanderGranin Год назад
Мог бы, конечно. И даже проще, чем в С++. Только сейчас как-то не до того... Но вообще было бы неплохо, конечно
@avikbox
@avikbox Год назад
@@AlexanderGranin есть класная книга Функциональное программирование на JavaScript(Луис Атенсио). Там про монады, реактивность.. но почти нету про архитектуру. Поэтому было бы круто почитать про функциональную архитектуру на JS/TS ! В Новосибирск не вернёшься?)
@AlexanderGranin
@AlexanderGranin Год назад
@@avikbox Ну в JS свои авторы, наверное, есть... В Новосибирск не вернусь в ближайшие годы, угу
@stanislavsetevoy3332
@stanislavsetevoy3332 Год назад
Гранин в гостях у Гранина.
@AlexanderGranin
@AlexanderGranin Год назад
😆 У Димы я в гостях, у Димы! Я когда уехал из Новосибирска, он стал единоличным владельцем подкаста. Правда, он не соглашается с этим 😄
@harutgh5203
@harutgh5203 Год назад
Крутой чувак
@Dadaleha
@Dadaleha 2 года назад
Какая плавная, выразительная, точная литературная речь у собеседника!
@itchatter
@itchatter 2 года назад
Да, Дмитрий молодец!
@seoonlyRU
@seoonlyRU 2 года назад
лайк от кодера-легенды СЕООНЛИ ( ну его и так все знают и любят)
@mazalovo7040
@mazalovo7040 2 года назад
чУдно! Прекрасный язык, нет слов-паразитов, очень приятно слушать. Жалко, что такой молодежи в стране очень мало.
@itchatter
@itchatter 2 года назад
Да, Екатерина прекрасна!
@user-yr8rz5fn2q
@user-yr8rz5fn2q 2 года назад
Что за "Белевский из коробки"?
@itchatter
@itchatter 2 года назад
Отвечает Александр Гранин: а я не помню вообще... Может, у ребят спросить.
@user-yr8rz5fn2q
@user-yr8rz5fn2q 2 года назад
@@itchatter Когда новые ролики будут? И в тиктоке тоже ждём. Очень не хватает СТРИМОВ с автором.
@igornikitine6020
@igornikitine6020 2 года назад
Прикольно, когда человек с нарушенной логикой мышления, рассуждает о проблемах с программированием несуществующего ИИ 🙈🙊🙉
@MIIIG
@MIIIG 2 года назад
Хорошее видео, в итоге потопили JS