• По какой причине UdpClient.Send() иногда кидает исключение?

    @Sumor
    Размер UDP данных не может превышать 65507 байт: 65535 байт на пакет, из них 20 байт заголовок IP, 8 байт заголовок UDP.
    У вас верхний предел 100000. Поэтому как только случайное число становится больше 65507 возникает ошибка.
    Ответ написан
  • Почему UdpClient.Reсeive() не теряет пакеты?

    @Sumor
    У UdpClient есть буфер, в который складываются полученные данные.
    Размер его доступен (get set) в свойстве ReceiveBufferSize.
    Если данные приходят, а вы их не прочитали, то данные по кругу затираются - то есть происходит потеря пакетов.
    Ответ написан
  • Как реализовать случайные числа в большом диапазоне на js?

    @Sumor
    2^256 это примерно 78 десятичных знаков
    Берёте криптоалгоритм на 256 бит: можно AES, а можно и SHA256 (вам же не расшифровывать). Берёте инициализирующее значение - считаете значение - вот вам 256 почти случайных бит. Прибавляете к инициализирующему значению какое-либо другое - получаете следующее, и тд
    Ответ написан
    Комментировать
  • Как добавить grammar файл в готовый exe-файл?

    @Sumor
    у Grammar есть конструктор, принимающий Stream.
    Соответственно, вы ресурс представляете в виде Stream (например, через GetManifestResourceStream) и подставляете в конструктор.
    Ответ написан
    7 комментариев
  • Как создать публичный сертификат RSA?

    @Sumor
    Ну если вы хотите просто поиграться, то просто возводите ваше "сообщение", которое должно быть меньше чем модуль, в степень экспоненты по модулю и получаете зашифрованный текст. Только шифрование, в случае использования модуля до 2^32, будет хуже чем простая замена на int. И вы не сможете передать сообщения, которые располагаются от модуля до int.MaxInt.
    Есть несколько библиотек в открытом доступе для работы с RSA на node.js. Например, https://github.com/rzcoder/node-rsa
    Ответ написан
    Комментировать
  • Есть идеи как можно оптимизировать алгоритм по комбинаторике?

    @Sumor
    Всё сводится к классическим задачам оптимизации. Скорее всего ваша задача очень похожа на задачу об укладке рюкзака.
    Решается, скорее всего, динамическим программированием или ветвями и границами.
    Ответ написан
    1 комментарий
  • Как реализовать отрисовку префиксного дерева?

    @Sumor
    Ищите что-то с названием OrgChart.
    Например, на WinForms
    https://documentation.devexpress.com/WindowsForms/...
    или на WPF
    https://www.grapecity.com/en/controls/wpf/orgchart
    Ответ написан
    Комментировать
  • Не получается на c# .NET 2.0 отправить get запрос, в чем ошибка?

    @Sumor
    req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;

    Поддержки этого нет в Windows XP.
    Для получения полной ошибки не забывайте обрамлять try-catch и выводить полный текст сообщения, который и подскажет вам причину ошибки.
    Ответ написан
    7 комментариев
  • В чем нарисовать и сохранить в файл график без сильной привязки к GUI?

    @Sumor
    Можно в консоль подтянуть wpf классы и сделать через WritableBitmap по точкам или DrawinImage по линиям. Сохранить можно хоть в png, хоть в jpg.
    Можно в консоль подтянуть Winforms классы и сделать через Bitmap по точкам.

    Можно воспользоваться библиотечками, например Magick.NET.
    Ответ написан
    Комментировать
  • Как задать Кодировку в T-Sql?

    @Sumor
    В MS SQL Server чуть-чуть отличается синтаксис
    CREATE DATABASE kurs 
    COLLATE utf8_general_ci

    Не помню только есть ли utf8_general_ci в sql server.
    Unicode встроен по-умолчанию в SqlServer в виде типов nchar nvarchar, поэтому кодировки имеет смысл указывать, если предполагается использовать char varchar.
    Для русского языка обычно используется cyrillic_general_ci_as.
    Ответ написан
    Комментировать
  • Как прочитать этот хеш? И что это за хеш?

    @Sumor
    Это Base64. Декодируете - получаете 512 бит хеша
    Ответ написан
  • Как обработать выборку из базы построчно?

    @Sumor
    Хоть так
    using(var reader = sqliteCommand.ExecuteReader())
    {
      while(reader.Read())
      {
        // вызов вашего метода для конкретной строчки
      }
    }

    Хоть так
    using(var reader = sqliteCommand.ExecuteReader())
    {
      // вызов вашего метода для reader, где вы будете сами перебирать строчки  
    }


    А если хотите поиграться с делегатами (если у вас, например, несколько вариантов обработки методами всей базы)
    Тогда передаёте хоть банальный Action (в том числе и в виде лямбда выражения) в функцию считывания и...

    void Do()
    {
      DoSmthWithDB((Action<DataReader>)((reader) => {Console.WriteLine(reader[0].ToString());}));
    }
    
    void DoSmthWithDB(Action<DataReader> myAction)
    {
    ...
    // Создание команды к БД
    ...
    using(var reader = sqliteCommand.ExecuteReader())
    {
      while(reader.Read())
      {
        myAction(reader); // Action<DataReader> переданный в виде параметра
      }
    }
    }
    Ответ написан
    Комментировать
  • Почему не работает UPDATE c#?

    @Sumor
    Возможно требуется точка с запятой в конце выражения?
    Ответ написан
  • Чем конвертировать sql в xls без поднятия сервера?

    @Sumor
    Я так понимаю - у вас файл со строками вида (INSERT INTO ...).
    Лучше, конечно, выполнить его на той БД, из которой вы её создали и от туда импортировать.
    Есть промежуточные варианты, но они могут не сработать по тем или иным причинам. Всё зависит от того что у вас есть.
    Вот вам пища для размышлений:
    Файлы Excel и CSV имеют свои odbc драйвера. Можно создать файл xls (xslx или csv). Затем подключить его к любому средству для выполнения запросов к БД, поддерживающему ODBC. И в этом средстве выполнить ваш файл со строчками INSERT. Необходимо только его преобразовать, чтобы он выполнялся (имена таблиц, колонок и т.д.).
    Средство импорта/экспорта MSSQL может подключиться к ODBC источнику, в том числе и к xls или csv файлу, и туда выполнить запрос.
    Современные версии Excel имеют в своём составе продвинутые средства работы с БД. Можно из него подключиться к файлу как к источнику данных и выполнить ваш SQL-файл в том или ином виде.

    Все варианты, кроме выполнения на БД, скорее всего потребуют определённой подготовки/переформатирования исходного файла.
    Ответ написан
    Комментировать
  • PHP to CSV. Крогозябры при открытие файла в excel в кодировки UTF-8. Что делать?

    @Sumor
    В старых экселях была галочка "подтверждать преобразование при открытии". После её включения, при открытии csv файла появлялся диалог открытия с выбором параметров, в том числе и кодировки.
    В новых версиях можно воспользоваться "Мастером импорта текста" https://support.office.com/ru-ru/article/мастер-им...
    Ответ написан
  • Клиент-серверное приложение UDP Socket?

    @Sumor
    UDP и TCP это разные протоколы над протоколом IP.
    TCP устанавливает соединение и ведёт "разговор" между клиентом и сервером в рамках установленного соединения, пока кому-нибудь из них не надоест. В простейшем случае устанавливается соединение, клиент посылает запрос, сервер отправляет ответ. Размер полученных и отправляемых данных не ограничивается размером пакета. Пакетов может быть много, также может быть много запросов-ответов в рамках одного соединения. Доставку всех пакетов TCP гарантирует. В том смысле, если соединение есть, то отправленные вам данные будут доставлены.
    UDP по сути просто отправка данных на какой-то адрес. Обработали его там или не обработали - для того, чтобы вам это узнать нужна дополнительная синхронизация. Размер передаваемых данных определяется размером пакета - максимум MTU, для Ethernet это 1500 байт. Может быть больше или меньше. Есть возможность отправить и больше данных, но они будут разбиты по частям и какие-то из них могут не дойти.
    Аналогия примерно такая: TCP - телефон: соединение устанавливается, дальше идёт разговор между собеседниками. UDP - радиообмен: нажали PTT, говорите, но вы не знаете находится ли ваш абонент в зоне действия радио и услышит ли вас.

    Для реализации и клиента и сервера UDP на C# можно использовать класс UDPClient. Он один и на сервер и на клиент. Для приёма сообщений сервер открывает порт на чтение. Размер принимаемых данных ограничен приёмным буфером. Если данные приходят, а вы их не успеваете обрабатывать - они затираются.
    UDP используют для передачи данных, для которых критично время получения, но не критичен сам факт получения.
    Для понимания того как ходят пакеты и устанавливается соединение используйте Wireshark или подобные программы.
    Ответ написан
    Комментировать
  • Что за кодировка текста?

    @Sumor
    Это обычные символы из UTF-8, набранные в xml/html. 1048 - десятичный код символа "И", соответствует x0418 - шестнадцатеричному и т.д.

    https://www.w3schools.com/charsets/ref_utf_cyrillic.asp
    Ответ написан
    3 комментария
  • Задача на нахождение среднего числа,как решить?

    @Sumor
    В вашей задаче может быть всего три ответа: a, b или c.
    Соответственно напишите всего одно условие для ответа a, одно условие для ответа b, и одно условие для ответа c. Больше вам ничего не нужно.
    Хотите сэкономить - напишите одно условие для a, второе для b, а всё что пройдёт дальше - будет вариант c.
    Ответ написан
    Комментировать
  • Как найти середину площади сложной фигуры?

    @Sumor
    Для решения задачи вы должны уметь находить:
    Sобщ - площадь всей фигуры.
    SL(x) - площадь фигуры, расположенной слева от линии x
    Функция SL(x) неубывающая, непрерывная, слева от фигуры равна 0, справа от фигуры равна Sобщ.
    Из этого следует, что существует такое значение xс, при котором SL(xс) = 0.5 Sобщ
    Аналитически его можно найти только для определённых случаев.
    Можно найти численными методами - в несколько этапов: берём x1, считаем SL(x1), если больше 0.5 Sобщ, сдвигаемся влево, если меньше - вправо и тд, пока не приблизимся к нужной нам точности.
    Ответ написан
    Комментировать
  • Как определить, попадает ли точка в заштрихованную область?

    @Sumor
    Круг:
    (x - x0)^2+(y-y0)^2 < R^2 - множество точек внутри круга
    (x - x0)^2+(y-y0)^2 > R^2 - множество точек вне круга
    R - радиус круга, x0, y0 - координаты центра

    Эллипс:
    ((x - x0)/a)^2+((y-y0)/b)^2 < 1 - множество точек внутри эллипса
    ((x - x0)/a)^2+((y-y0)/b)^2 > 1 - множество точек вне эллипса
    a, b - радиусы эллипса

    Прямые:
    x < 0 - множество точек левее оси 0Y
    x > 0 - множество точек правее оси 0Y
    y < 0 - множество точек ниже оси 0X
    y > 0 - множество точек выше оси 0X
    ax+by < c множество точек ниже прямой, заданной уравнением ax+by = с
    ax+by > c множество точек выше прямой, заданной уравнением ax+by = с

    Для вашей задачи:
    1. Находите нужные коэффициенты для всех прямых и кривых.
    2. Выясняете для каждого уравнения знак, который получается при попадании точки в заштрихованной области
    3. Создаёте набор тестов для точки.

    Например для зоны B:
    Точка должна быть внутри круга, вне эллипса и выше прямой, то есть должны выполняться следующие неравенства (коэффициенты a, b x0, y0 для каждого неравенства свои):
    (x - x0)^2+(y-y0)^2 < R^2
    ((x - x0)/a)^2+((y-y0)/b)^2 > 1
    ax+by > c
    Дальше для тестовой точки проверяете неравенства, и если они все правильные - точка принадлежит заштрихованной области.
    Ответ написан
    Комментировать