Alexander Petrov

Jan 12 21:12
На мой взгляд, достаточно изменить заголовок вопроса на "Как сделать новогоднюю анимацию?" и он станет соответствовать формату SO.
 
Dec 9, 2024 03:22
Раньше никогда с таким не сталкивался. Но сейчас словил такой же артефакт как на первом скриншоте, при просмотре ютуба в браузере Tor. То есть видеопоток шёл через цепочку других машин. О чём это говорит? Может, более знающие люди подскажут.
 
Sep 13, 2024 17:08
А вообще, дотнет и винформы создавались ещё в прошлом веке... Тогда ещё не были так формализованы паттерны и методики хорошего проектирования.
Sep 13, 2024 17:08
То, что файл дизайнера может быть очень большим, не имеет значения: на сгенерированный код принято не обращать внимания. А в файле с кодом должны быть только привязки данных и вызовы сервисов. Надеюсь, вы не пишите бизнес-логику в баттонкликах?
 
Aug 19, 2024 21:51
Когда-то давным-давно вычисления с BCD были реализованы в железе. Не помогло.
Aug 19, 2024 21:51
Сейчас даже есть 8 и 4-битные форматы чисел с плавающей точкой. И для огромного количества применений их точности хватает.
Aug 19, 2024 21:51
В последние годы внезапно оказалось, что высокая точность нигде и никому не нужна. 64-битные вещественные числа практически нигде не используются. С лихвой достаточно 32 бит. Более того, в связи с развитием нейронных сетей возникла необходимость хранить огромные объёмы данных для них. И даже 32 бит оказалось слишком дорого. Вполне хватило бы 16 бит, но совсем чуть-чуть не хватает точности. Причём и её хватило бы, если пересчитать все накопленные массивы информации нейросеток, а на это нужны годы. В итоге, сейчас используются 19-битные процессоры (это не опечатка, именно девятнадцать).
 
Jul 29, 2024 14:43
security.stackexchange.com/a/44923 - вот, нашёл вполне рабочий пример.
Jul 29, 2024 14:43
Про опасность BinaryFormatter много говорят, но нигде нет примеров, чтобы на практике в этом убедиться. stackoverflow.com/a/67107584/5045688 - там по ссылке в видео показана работа эксплойта, но опять же, без исходного кода, как это было сделано.
 
Jul 29, 2024 08:20
Достаточно одного единственного файла .cs.
 
Mar 29, 2024 23:26
А по поводу двух высших образований... Есть мнение, что это является признаком глупости человека, который потратил несколько лет жизни на первое, чаще всего ненужное.
Mar 29, 2024 23:26
Правило про 50 очков было всегда. Именно столько нужно набрать, чтобы писать комментарии под чужими сообщениями. Под своими можете и без этого.
 
Feb 4, 2024 17:17
Не указана единица измерения. Очевидно, это не градусы цельсия.
 
Feb 2, 2024 11:12
По поводу ограничения срока - я бы поосторожничал вводить такую меру. Много ли у нас найдётся людей, согласных добровольно взвалить на себя такую ношу? Боюсь, как бы мы не остались в итоге через несколько лет совсем без модераторов. Или с модерами, набранными из абы кого. / Количество сроков я бы точно не стал ограничивать.
 
Jan 10, 2024 21:10
Я всегда говорил, что языки с динамической типизацией, со сборкой мусора и с виртуальными машинами - ошибка мироздания и не нужны. Но кто ж меня послушает?
(Почти) идеальный язык - Nemerle. Но опять же, кто о нём знает?.. А, да, ещё нужны Hallide и Dafny...
Увы, приходится жить с тем, что есть.
Jan 9, 2024 15:50
Книги Рихтера хороши, но они по .NET Framework. И поэтому частично устарели. В .NET Core было сделано очень много оптимизаций, в том числе и при работе с перечислениями и дженериками. Читайте статьи Тауба (Stephen Toub) на devblogs.microsoft.com.
Jan 9, 2024 15:50
В .NET7 не появились новые дженерики. Появились новые интерфейсы, которые действительно очень полезны и эффективны в некоторых случаях.
Jan 9, 2024 15:50
Перечисления (Enum) в дотнете не реализуют интерфейс IBinaryInteger. Поэтому странно, как вообще мог возникнуть этот вопрос. Посмотрите в документации, какие интерфейсы они реализуют, от этого и отталкивайтесь.
Jan 9, 2024 15:50
То есть вы взяли инструмент, не предназначенный для вашей задачи, и начали ныть, что сайто-кодеры плохие. Я вас правильно понял?
Jan 9, 2024 15:50
ClrHeapAllocationAnalyzer не обнаруживает в данном коде боксинга.
 
Dec 5, 2023 10:16
Почему работало в старой версии библиотеки и не работает в новой? Это необязательно означает, что в новой версии ошибка. Просто теперь данные и код располагаются в памяти иначе при компиляции, отсюда может возникнуть другое поведение в многопоточном/асинхронном коде, если где-то неправильная синхронизация.
Dec 5, 2023 10:13
Так, я не обратил внимание сразу, что метод NextRow() тоже публичный. Значит считывается не единственная строка, как я думал, а потенциально много. Тогда некоторый смысл есть. Но тут вопрос: тонны данных - это сколько? Если гигабайты, то это одно, а если всего несколько десятков строк по несколько килобайт - совсем другое.
Dec 5, 2023 10:11
Проблема устраняется элементарно, если использовать стандартный сценарий работы с БД: открываем соединение, читаем данные, заносим их в коллекцию, возвращаем эту коллекцию. Соединение и ридер при этом диспозятся. Всё, далее работаем с набором данных в оперативке.
Dec 5, 2023 10:11
Должны ли методы Read<T>, IsNull, IsEmpty быть публичными? Вызываются они где-то извне? Или достаточно публичного GetFields или ReadValues<T>?
Dec 5, 2023 10:11
Задавать хорошие вопросы - это искусство, согласен. Я тоже этого не умею.
Dec 5, 2023 10:11
зачем держать соединение вообще - Именно! Зачем вы держите соединение?
Dec 5, 2023 10:11
Не видя весь код я лишь могу продолжить гадать. Ошибка произошла в TrySetResult. Что это за метод, кем написанный: ваш собственный или из сторонней либы? Вроде как тут замешан TaskCompletionSource, но зачем - хз. Но явно заюзана ручная асинхронность.
Dec 5, 2023 10:11
Вообще я заметил, что людям главное увидеть тупой косяк, не относящийся к проблеме никаким образом и поставить крест на всем остальном. - но косяк же есть! Возможно, после его устранения проблема исчезнет. Сторонний наблюдатель не видит весь код, поэтому не может знать, что влияет.
Dec 5, 2023 10:11
"Можно ли пользоваться результатами при закрытом/уничтоженном соединении" , почему нет если это просто данные в оперативке - но данных нет в оперативке! Они вычитываются из ридера, из самой базы данных, а для этого должно быть открытое соединение.
Dec 5, 2023 10:11
_connectionInfo.GetConnection() - создает новое соединение - хорошо, принято.
Dec 5, 2023 10:11
По поводу NextRow(); - он критически важен: внутри него вызывается _reader.Read() - без него вообще ничего работать не будет.
Dec 5, 2023 10:11
Ну что там, есть подвижки?
Dec 5, 2023 10:11
Глянул тему на гитхабе. Ну, собственно, там те же претензии к коду.
Dec 5, 2023 10:11
Один участник проекта сообщил, что там были изменения с кэшированием - не выдумывайте. Это вы у себя кэшируете ридер. Он это и спрашивает: зачем вы это делаете?
Dec 5, 2023 10:11
Метод Query в блоке catch вернёт new SQLResult() - опять-таки, дальнейшая работа с этим экземпляром бессмысленна. Ведь _reader внутри будет равен null и обращение к любым методам должно бросать NRE.
Dec 5, 2023 10:11
_connectionInfo.GetConnection() создаёт новое соединение или берёт откуда-то уже готовое? Если последнее, все экземпляры SQLResult будут использовать одно и то же соединение и опция CommandBehavior.CloseConnection закроет это соединение, когда любой из них завершён. И работа остальных нарушится.
Dec 5, 2023 10:11
В общем, вопросов по коду много, даже при беглом осмотре. / Я бы посоветовал не держать соединение открытым долго. Подключились к БД, считали нужные данные в коллекции, закрыли соединение.
Dec 5, 2023 10:11
Проблема в вашем коде. Точка. По крайней мере одну логическую ошибку я вижу: метод NextRow возвращает булево значение, но оно не проверяется в месте вызова (в конструкторе SQLResult). Если этот метод вернул false, то дальнейшая работа с этим экземпляром SQLResult бессмысленна.
 
Nov 7, 2023 18:21
Я тоже изучал эту тему, читал документацию, книги и разные статьи, в том числе Рихтера и Тауба. В целом у меня сложилось впечатление, что некоторые авторы сами не до конца разбираются в тонких нюансах. Полагаю, что сборщик мусора не будет освобождать память даже в тех случаях, когда ему прямо приказано это сделать, если он видит, что памяти хватает. Эвристик там внутри достаточно.
Nov 7, 2023 18:21
Возможно, так. Но тут я не могу уверенно сказать. Подождём, может какой гуру объявится.
Nov 7, 2023 18:21
Если GC будет вызван извне метода Test, то сможет убрать list.. А когда он вызван внутри, то не может собрать list, но при этом проталкивает неубранный мусор выше в поколение. Вероятно, после этого list там и сидит.
Nov 7, 2023 18:21
ru.stackoverflow.com/a/592561/184217 - тут дополнительные советы.
Nov 7, 2023 18:21
По-моему, это нигде не документировано. Это из личного практического опыта. Сколько сам пытался также память очищать, сколько видел попытки других людей сделать аналогично - всегда безуспешно.
Nov 7, 2023 18:21
Во-вторых, для сборки LOH отдельные правила. См. GCSettings.LargeObjectHeapCompactionMode
Nov 7, 2023 18:21
Во-первых, GC не соберёт мусор, выделенный в этом же методе, в котором он вызван. То есть GC.Collect, вызванный внутри Test не уберёт list, созданный там же.
 
Oct 24, 2023 11:34
Я присоединюсь к комментаторам вышел: предварительная сортировка и двоичный поиск будет давать мгновенный результат. А чтобы не возиться с этим вручную взять sqlite с индексом на колонке. Вес этой СУБД незначителен по сравнению с весом файла.
 
Sep 13, 2023 11:58
файловая система быстрее - вовсе нет. В ряде случаев БД окажется быстрее. Вот, пример SQLite: 35% Faster Than The Filesystem
 
 
Jun 21, 2023 23:35
@rotabor оторвать друг от друга CLR и c# нельзя - уже есть Native AOT. Код C# компилируется напрямую в нативный код платформы, без промежуточного IL. Соответственно, CLR в его выполнении не участвует. Хотя, конечно, в нативный код при этом встраивается некий рантайм. Считать ли его вариантом CLR - не уверен.
Jun 21, 2023 23:32
По поводу выделения памяти. Она может быть выделена виртуально: всего лишь помечены значения в таблице виртуальных адресов. При этом в микросхемах памяти пространство не выделяется. И лишь при обращении к этим адресам будет что-то записано физически в микросхемах.