@CSharpChatЭта группа больше не существует

Страница 1157 из 1888
Andrey
01.06.2017
08:26:40
а что с ним не так
Полная обратная совместимость. Я бы предпочёл, когда на мажорных версиях её ломают.

Nikita
01.06.2017
08:26:47
зачем

они в нетстандарт пихают только то, что туда целесообразно пихать

Andrey
01.06.2017
08:27:31
они в нетстандарт пихают только то, что туда целесообразно пихать
Ну это сейчас, а через год может оказаться, что там хрень находится.

Google
Andrey
01.06.2017
08:27:49
Мир меняется и полная обратная совместимость - это боль во многом.

Nikita
01.06.2017
08:27:58
у нетстандарта смысл в том, чтобы там был только базовый платформонезависимый хлам

Nikita
01.06.2017
08:28:40
а назови мне ошибки в "десктопном" фреймворке

которые нельзя исправить, не поломав совместимость

Andrey
01.06.2017
08:29:23
а назови мне ошибки в "десктопном" фреймворке
Не могу, я не так хорошо его знаю, но могу показать ошибки в джаве, которые сохраняют совместимость до конца времён.

Nikita
01.06.2017
08:29:33
так то жаба

они вообще странные

Andrey
01.06.2017
08:29:47
Ну да, а MS не могут ошибаться, верно?)

Nikita
01.06.2017
08:29:56
особо не замечены

Andrey
01.06.2017
08:30:42
Хочешь заметить?)

Я думаю, что тогда уже поздно окажется.

Nikita
01.06.2017
08:30:57
ну как бы есть история успеха

Google
Nikita
01.06.2017
08:31:03
начиная с 2002-го года

Slava
01.06.2017
08:31:10
особо не замечены
а как же Сильверлайт какой-нибудь?

Nikita
01.06.2017
08:31:12
когда обратную совместимость не ломали и всё ок

Slava
01.06.2017
08:31:13
не сказал бы, что саксес стори с ним

Nikita
01.06.2017
08:31:32
а какие твои претензии к сильверлайту и чем он тебе мешает сейчас писать шарпокод?

Andrey
01.06.2017
08:31:37
начиная с 2002-го года
Да, поэтому нужно выкинуть почти всю платформу, чтобы сделать её кроссплатформенной. Ошибок не было.

Лицемерие.

Nikita
01.06.2017
08:31:57
ошибок не было

Slava
01.06.2017
08:31:58
я не про шарпокод, а про "MS особо не замечены в ошибках"

Andrey
01.06.2017
08:31:59
Ладно, не почти всю, но выкидывать пришлось.

Nikita
01.06.2017
08:32:04
платформа изначально привязана к винде

и сделана для винды

единственный способ сделать кроссплатформу - исключить из API штуки, которые не живут без винды

при этом ты хоть сейчас можешь взять либу из начала нулевых

и перекомпилить её под .NET Standard

Andrey
01.06.2017
08:33:08
и сделана для винды
Поэтому в .net standard 2 появились ещё вещи, которые до этого были только для винды. А сейчас они чего не работают, если они не привязаны к винде?

Nikita
01.06.2017
08:33:25
какие, например? COM interop?

Andrey
01.06.2017
08:36:35
какие, например? COM interop?
Давай простейший пример: у RSACryptoServiceProvider во фреймворке есть методы FromXmlString и ToXmlString, а в коре нет. Тоже привязка к винде?

Да, проблем нет написать экстеншен метод, но почему этого метода нет в коре?

А если они не хотят иметь этот метод в библиотеке, то что это как не косяк?

Google
Andrey
01.06.2017
08:38:09
какие, например? COM interop?
И этот класс написать - раз плюнуть, но его нет.

public static class RsaCryptoServiceProviderExtensions { public static void FromXmlString(this RSACryptoServiceProvider rsa, string xmlString) { var parameters = new RSAParameters(); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlString); if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue")) { foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes) { switch (node.Name) { case "Modulus": parameters.Modulus = Convert.FromBase64String(node.InnerText); break; case "Exponent": parameters.Exponent = Convert.FromBase64String(node.InnerText); break; case "P": parameters.P = Convert.FromBase64String(node.InnerText); break; case "Q": parameters.Q = Convert.FromBase64String(node.InnerText); break; case "DP": parameters.DP = Convert.FromBase64String(node.InnerText); break; case "DQ": parameters.DQ = Convert.FromBase64String(node.InnerText); break; case "InverseQ": parameters.InverseQ = Convert.FromBase64String(node.InnerText); break; case "D": parameters.D = Convert.FromBase64String(node.InnerText); break; } } } else { throw new Exception("Invalid XML RSA key."); } rsa.ImportParameters(parameters); } public static string ToXmlString(this RSACryptoServiceProvider rsa) { var parameters = rsa.ExportParameters(true); return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>", Convert.ToBase64String(parameters.Modulus), Convert.ToBase64String(parameters.Exponent), Convert.ToBase64String(parameters.P), Convert.ToBase64String(parameters.Q), Convert.ToBase64String(parameters.DP), Convert.ToBase64String(parameters.DQ), Convert.ToBase64String(parameters.InverseQ), Convert.ToBase64String(parameters.D)); } }

Лолитка
01.06.2017
08:49:41
Кор молодой, гарячий

Не выглядит как жёсткий факап

Летучая
01.06.2017
09:05:58
public static class RsaCryptoServiceProviderExtensions { public static void FromXmlString(this RSACryptoServiceProvider rsa, string xmlString) { var parameters = new RSAParameters(); var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlString); if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue")) { foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes) { switch (node.Name) { case "Modulus": parameters.Modulus = Convert.FromBase64String(node.InnerText); break; case "Exponent": parameters.Exponent = Convert.FromBase64String(node.InnerText); break; case "P": parameters.P = Convert.FromBase64String(node.InnerText); break; case "Q": parameters.Q = Convert.FromBase64String(node.InnerText); break; case "DP": parameters.DP = Convert.FromBase64String(node.InnerText); break; case "DQ": parameters.DQ = Convert.FromBase64String(node.InnerText); break; case "InverseQ": parameters.InverseQ = Convert.FromBase64String(node.InnerText); break; case "D": parameters.D = Convert.FromBase64String(node.InnerText); break; } } } else { throw new Exception("Invalid XML RSA key."); } rsa.ImportParameters(parameters); } public static string ToXmlString(this RSACryptoServiceProvider rsa) { var parameters = rsa.ExportParameters(true); return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>", Convert.ToBase64String(parameters.Modulus), Convert.ToBase64String(parameters.Exponent), Convert.ToBase64String(parameters.P), Convert.ToBase64String(parameters.Q), Convert.ToBase64String(parameters.DP), Convert.ToBase64String(parameters.DQ), Convert.ToBase64String(parameters.InverseQ), Convert.ToBase64String(parameters.D)); } }
Оч коричневый код

Vasily
01.06.2017
09:07:58
Эххх... опять виндохейтеры подтянулись

Вот шо меня в таких людях забавляет, так это привычка ругать

Впрочем, сами они это называют объективной критикой

Хотя сейчас, с текущим зоопарком технологий и языков, можно писать на чем душа пожелает

Anatoly
01.06.2017
09:09:37
Но если что-то не обсирать то становится скучно

Vasily
01.06.2017
09:09:47
Но нет, будут оправдания, что злые капиталисты заставляют писать на богомерзком дотнете этц.

Anatoly
01.06.2017
09:09:49
кто-то неправ в интернете

Vasily
01.06.2017
09:09:51
СТРАДАНИЯ

Технология - всего лишь инструмент решения задач.

Лолитка
01.06.2017
09:11:00
Я твою фамилию ща прочитал как шарпенко и орнул

Vasily
01.06.2017
09:11:17
Так меня тоже называли когда-то

Andrey
01.06.2017
09:11:50
Оч коричневый код
Возможно, но он простой и понятный. Большего и не надо.

Летучая
01.06.2017
09:12:01
Любитель копипасты в треде

Лолитка
01.06.2017
09:12:25
Не самая годная метрика кода)

Google
Vasily
01.06.2017
09:13:29
Метрики кода - вообще странная штука

Я видел говнокод, который успешно продавался, и видел вылизанный код, который никак не могли зарелизить

Andrey
01.06.2017
09:14:11
Не самая годная метрика кода)
Что? Простота и понятность?

Лолитка
01.06.2017
09:15:03
Без всего остального)

Индусский код тоже простой и понятный, например

Andrey
01.06.2017
09:15:55
Индусский код тоже простой и понятный, например
Нет, 5 километров индусского кода не понятны.

Admin
ERROR: S client not available

Aleksander
01.06.2017
09:16:08
Вообще, по сравнению с оригинальным кодом .NET фреймворка, этот код очень даже хорошо смотрится

http://www.dotnetframework.org/default.aspx/4@0/4@0/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/clr/src/BCL/System/Security/Cryptography/rsa@cs/1305376/rsa@cs

Andrey
01.06.2017
09:18:15
Да блин, я смотрел код .net core. Вот переименование типов у меня студию сломало. Зачем так делать?

Vasily
01.06.2017
09:21:35
Иногда обратная совместимость влечет за собой очень большой оверхед по поддержке

Nikita
01.06.2017
09:40:36
старый фреймворк - толстый монолит, в котором всё-всё-всё

потому что делался для времён, когда у людей интернета не было

а теперь всё раскидано по модулям в нугете

Andrey
01.06.2017
09:41:48
а теперь всё раскидано по модулям в нугете
И в каком модуле эти методы находятся? А то я не сумел найти.

Nikita
01.06.2017
09:42:18
кому-нибудь будут нужны - запилит и зальёт на нугет

теперь это так работает

BTW, я вот конкретно сейчас натолкнулся на пример наркомании

в эппловкой таблице кодов символов они идут так: 1 2 3 4 6 5 = 9 7 - 8 0

Google
Nikita
01.06.2017
09:43:17
кому это вообще в голову могло прийти

ну вот кому

почему 6 перед 5, а 9 перед 7?

Timur
01.06.2017
09:46:00
Тут мс уговаривает всех на Линукс и ажуре переходить. Мол, 2017 сиквел - бох

Nikita
01.06.2017
09:46:15
а почему на линукс

Gid
01.06.2017
09:46:26
Уже допилили скл на линух?

Timur
01.06.2017
09:46:28
Зонтики дарят за это :)

Friedrich
01.06.2017
09:46:35
Java 9 опять
А пруф есть? Хочу почитать.

Timur
01.06.2017
09:46:38
Говорят, да

Nikita
01.06.2017
09:47:16
https://www.linux.org.ru/images/8818/original.jpg

И сбылось ведь

разве что с KDE ошибся

Ilya
01.06.2017
09:52:34
Vasily
01.06.2017
09:53:32
Xaml в линукс пойдет?

Потом будут с пеной у рта доказывать, что мс к этому отношения не имеет

Andrey
01.06.2017
10:17:51
Всем привет. Есть вопросик, по фабрике. Суть такая - из сокета приходит массив байтов(udp data). 7-ой байт - команда, на основании команды я могу определить наследника для конструирования. Другое дело, что наследников будет 35-40...Switch на 40 строк плохая идея по-моему, что посоветуете? public static PacketBase FromByteArray(byte[] dataBuffer) { Command cmd = (Command) dataBuffer[6]; //here we must create instance based on cmd }

Blue Screen of Death
01.06.2017
10:20:50
паттерн "команда" посоветуем

Andrey
01.06.2017
10:21:49
Я наверное неясно выразился, в данном случае команда - это байт в udp пакете, который определяет что за пакет нужно сформировать и что будет делать устройство. Для удобства обернул его в enum

Страница 1157 из 1888

Эта группа больше не существует Эта группа больше не существует