Задать вопрос
  • Почему в контейнере alpine:latest программа на Го ведет себя по другому чем в golang:1.15?

    @basrach
    Кажется нужно указать флаг -a, т.е. go build -a ....
    Насколько я понимаю вместе с флагом CGO_ENABLED=0 это заставляет что-то вроде "вкомпиливать" некоторые используемые std либы в бинарник. Без этого runtime рассчитывает на компоненты ОС, которых в alpine либо нет, либо они другие.
    Ответ написан
  • Как ограничить консольное приложение не блокировать базу данных?

    @basrach
    Квантировать. Также как и делает операционная система с процессами. Процессов много, а центральный процессор один. ОС просто даёт маленький интервал времени каждому процессу, все выполняются по очереди и все счастливы.
    Самый простой способ - разбить весь массив на пачки по 100 (10, 1000), между обработкой пачки делать тупо Thread.Sleep(300 или меньше), давая тем самым обработать запросы серверу. Параметры подобрать экспериментально.
    Ответ написан
    Комментировать
  • Как обфусцировать код в dll?

    @basrach
    при декомпиляции выдавало ошибку

    Это невозможно. IL, который содержится в .dll, за исключениям синтаксического сахара, практически 1 в 1 соответствует языковым конструкциям C#. В IL сохраняется практически вся необходимая информация об исходном коде. И это не спроста - она нужна CRL, иначе рантайм не сможет выполнить код.
    Можно только до некоторой степени затруднить реверс инжиниринг, запутав поток выполнения, или заменив все имена классов, методов и т.д на рандомные строки. Но спасет это только от школьников, для достаточно квалифицированного специалиста это прибавит час-два работы и всего.
    Ответ написан
    Комментировать
  • Зачем оператор new в C#?

    @basrach
    Оператор new создаёт экземпляр типа.

    В данном случае тип (класс) Random. Чтобы создать объект (т.е. экземпляр) этого типа, нужно к этому типу применить оператор new.
    Вызов конструктора и инициализация полей объекта происходит после создания экземпляра. C# позволяет при создании экземпляра типа указать "функцию" - конструктор (у типа их может быть несколько) - чтобы инициализировать созданный объект сразу же после создания.

    Зачем вообще нужен экземпляр типа? Опять же на примере вашего кода - вы хотите использовать метод Next для получения следующего случайного числа. Алгоритм расчета псевдослучайного числа всегда работает с использованием какого-то начального значения, при создании экземпляра типа это значение инициализируется и хранится в конкретно этом экземпляре типа.

    Ссылки по теме.
    https://docs.microsoft.com/en-us/dotnet/csharp/lan...
    https://docs.microsoft.com/en-us/dotnet/csharp/lan...
    Ответ написан
    1 комментарий
  • Как организовать архитектуру Go микросервиса?

    @basrach
    Было удобно
    это зависит только то прямых рук. Можно до корки вызубрить всяких дядей бобов, эриков эвансев и пр., но реализовать так, что кровь из глаз будет течь.

    Определено точно можно сказать, что в go не нужно строить дизайн сервиса так же как в RR, Java или .Net. Лучше всего понять как должно быть устроено go приложение - это поизучать известные проекты, например: https://github.com/gomods/athens , https://github.com/google/exposure-notifications-server
    Ответ написан
    Комментировать
  • Реализация post запроса к vk api?

    @basrach
    import (
    ...
        "net/http"
        "net/url"
        "strings"
    ...
    )
    
    func main() {
    ...
            data := url.Values{}
    	data.Add("user_ids", id)
    	data.Add("fields", "about")
    	data.Add("fields", "activities")
    	data.Add("fields", "books")
    
    	resp, err := http.Post("https://api.vk.com/method/users.get", "POST", strings.NewReader(data.Encode()))
    ...
    }
    Ответ написан
    Комментировать
  • Как через LINQ вывести из базы данных вместо Id имя пользователя?

    @basrach
    Я не проверял, но должно быть как-то так:
    var transactionList =
    		from transaction in _context.Transactions
    		from destinationUser in _context.Users
    		from destinationUserWallet in destinationUser.Wallets where destinationUserWallet.Id == transaction.DestinationWalletId
    		from sourceUser in _context.Users
    		from sourceUserWallet in sourceUser.Wallets where sourceUserWallet.Id == transaction.SourceWalletId		
    		where destinationUser.Id == User || sourceUser.Id == User
    		select new 
    		{ 
    			sourceUserName = sourceUser.Name, 
    			destinationUserName	= destinationUser.Name, 
    			transaction
    		};
    Ответ написан
    Комментировать
  • C#. Свой прокси сервер с авторизацией. Есть ли простые решения?

    @basrach
    А зачем вам здесь C#?
    Достаточно будет взять nginx и указать ему в качестве upstream "user:pass@host:port".
    Ответ написан
    Комментировать
  • Что лучше для работы с файлами QT или C#?

    @basrach
    > Что лучше для работы с файлами
    Лучше то, в чем у вас больше опыта, и на чем написано большинство "рядом работающих" проектов. Если всё остальное написано на Qt, то определенно не стоит писать чтение файлов на C#, и наоборот.

    > В чем может быть причина?
    Причина может быть в кривой реализации на C#. Чтение файлов в любом языке полагается на механизмы ОС, разницы в 6 раз быть не может если измерять только чтение как таковое. Либо вы мерили что-то не то, либо одно из двух.

    > Перечислите пожалуйста достоинства и недостатки обоих.
    Является ли достоинством или недостатком та или иная фича зависит от того, с какой точки зрения посмотреть.
    Ответ написан
    Комментировать
  • Напомните сервисы которые резолвят адреса вида 145.2.3.4-bla-bla.com в IP 145.2.3.4?

    @basrach Автор вопроса
    Нашел таки: xip.io, nip.io, sslip.io
    Ответ написан
    Комментировать
  • Что означает данная строка?

    @basrach
    Строка static ConvertedString(); означает объявление статического конструктора. По всей видимости он пустой, либо определен где-то еще (если такое возможно в C++\CLI).

    Строки:
    private:
          ConvertedString(const wchar_t const * data, int ActualLength) :
          char_data(data),
          length(ActualLength)
          {
             ...
          }

    Обычный конструктор с модификатором доступа private
    Ответ написан
    Комментировать
  • Как преобразовать в linq?

    @basrach
    public int[,] GetIntValue(ValueClass[,] values)
    {
    	return values.Cast<ValueClass>()
    		.Select((x, i) => new { x?.Value, i })
    		.Aggregate(
    			new int[values.GetLength(0), values.GetLength(1)],
    			(accum, item) =>
    			{
    				accum[item.i / values.GetLength(1), item.i % values.GetLength(1)] = item.Value.GetValueOrDefault();
    				return accum;
    			});
    }
    Ответ написан
    Комментировать
  • Как ускорить заполнение массива?

    @basrach
    Попинать системник.
    Ответ написан
    Комментировать
  • Почему не работает Property injection в ASP.NET Core MVC через Autofac?

    @basrach
    .RegisterType().As().PropertiesAutowired()

    Этим самым вы сказали, что хотите чтобы Autofac, при создании экземпляра класса Lol произвел инъекцию во всего его (объекта Lol) публичные свойства. Чтобы работал ваш пример, нужно сделать тоже самое но для типа UniversityController.
    А вообще лучше не использовать инъекцию через свойства. Никогда.
    Ответ написан
    Комментировать
  • Жизненноважный вопрос. Забудется ли в армии программирование?

    @basrach
    Как говорится, опыт не пропьешь. Но вот только его и не пропьешь. Если вы пока только изучаете, но пока не практикуете, то можно смело идти армию, терять по сути нечего.
    Ответ написан
    Комментировать
  • Каким образом делается взаимодействие с hardware в микросервисной архитектуре и Docker-контейнерах?

    @basrach
    COM, USB, принтеры и какие-то специфичные железяки для терминалов - та часть, где код должен быть по определению железо-зависимым. Контейнеры же про диаметрально противоположное, про абстракцию от железа и окружения. Т.е. писать софт для специфичной железяки и запускать его в контейнере, это как в истории про микроскоп и гвозди.
    Вы сделали правильный вывод. Нужно выносить в контейнеры только логику независящую от какого-либо железа или оборудования. А сервисы, взаимодействующие с железом, разворачивать там где и железо.
    Ответ написан
    Комментировать
  • LINQ to SQL и Enum?

    @basrach
    'Edm.Int32'

    Очевидно что стандартный enum невозможно конвертировать в какой-то там 'Edm.Int32'. Об этом среда вам и говорит. Если вообще проблема в этой строке.
    Но так как объявления классов вы не привели, вполне может быть что и SomeProperty имеет у вас этот странный тип, в который linq не может автоматом замапить значение из БД.


    Вспомнил, edm = Entity Data Model.
    У вас какая-то древняя версия EF? Похоже на баг ранних версия EF. Попробуйте заменить
    Error = ErrorLine.None
    на
    Error = (ErrorLine)1 // то значение, которое имеет None
    Ответ написан
    Комментировать
  • Как узнать на что жалуется asp.net iis приложение?

    @basrach
    Классика. А ля "диагноз по фото 16x16px".
    Ошибка в методе RP.WebUI.Arm1Search.SetDataSet(DataSet ds) +16 инструкций от начала метода. Написано же.
    Ответ написан
    Комментировать
  • Как в sql server выбрать элементы ,в которых есть 3 и более гласных букв?

    @basrach
    DECLARE @teachers TABLE ([LastName] NVARCHAR(255) NOT NULL);
    INSERT INTO @teachers
    VALUES
    (N'Холстинин'),
    (N'Пирожков'),
    (N'Пугачева'),
    (N'Цой');
    
    DECLARE @vowels TABLE ([Letter] NCHAR(1) NOT NULL);
    INSERT INTO @vowels VALUES
    (N'а'),
    (N'о'),
    (N'и'),
    (N'е'),
    (N'ё'),
    (N'э'),
    (N'ы'),
    (N'у'),
    (N'ю'),
    (N'я');
    
    SELECT [t].[LastName]
    FROM @teachers [t]
    CROSS JOIN @vowels [v]
    GROUP BY [t].[LastName]
    HAVING SUM(LEN([t].[LastName]) - LEN(REPLACE([t].[LastName], [v].[Letter], ''))) > 3;
    Ответ написан
    Комментировать
  • ASP.NET Core как вывести текущих пользователей?

    @basrach
    1) Обработчик всех запросов на уровне Middleware.
    2) Обработчик всех запросов по сессиям.

    А иначе и нельзя. Авторизован пользователь или нет проверяется путем проверки его кук. Сервер не хранит куки всех авторизованных пользователях и соответственно информации нужной вам у сервер нет. Если вам такие данные нужны, то необходимо самостоятельно реализовать сбор и хранение результатов авторизации пользователей. А при помощи чего это можно сделать вам уже подсказали.
    Ответ написан
    Комментировать