• Нужно ли знать +- ассемблер, чтобы изучать C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Всем программистам стоит пройти хотя бы ознакомительный курс ассемблера. Особенно тем, кто пишет на отсносительно близких к железу языках, вроде Си.

    Это здорово вправляет мозги. Появляется понимание, а как вообще компьютер работает. Это не необходимое знание, конечно, но лишним оно не будет точно.
    Ответ написан
    Комментировать
  • Как сделать несколько переменных по запросу?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Есть два способа:
    Через конструктор с params

    public class Test 
        {
            public Test(params string[] elements) {
                foreach(var element in elements)
                    AddElement(element);
            }   
            private List<string> _elements = new List<string>();
    
            public void AddElement(string x)
            {
                string AddElement = x;
                _elements.Add(AddElement);
                Console.WriteLine($"Элемент <{AddElement}> добавлен.");
                Console.WriteLine($"Стэк: {String.Join("; ", _elements)}");
                Console.WriteLine();
            }
    }


    var x = new Test("a", "b", "c");

    Через Collection Initializer

    public class Test 
        {
            private List<string> _elements = new List<string>();
            // Для Collection Initializer нужен публичный метод Add
            public void Add(string element) => AddElement(element); 
            public void AddElement(string x)
            {
                string AddElement = x;
                _elements.Add(AddElement);
                Console.WriteLine($"Элемент <{AddElement}> добавлен.");
                Console.WriteLine($"Стэк: {String.Join("; ", _elements)}");
                Console.WriteLine();
            }
    }


    var x = new Test { "a", "b", "c" };
    Ответ написан
    1 комментарий
  • Какой есть алгоритм для нахождения тенденции к уменьшению или увеличению значений в массиве?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Линейная регрессия
    Ответ написан
    Комментировать
  • Как удалить содержимое БД Mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Самое простое - сделать бэкап только структуры, без данных (mysqldump --no-data, https://dev.mysql.com/doc/refman/8.0/en/mysqldump....), удалить БД, восстановить. Само собой, не забыть забэкапить процедуры/триггеры/прочее.
    Ответ написан
    Комментировать
  • Можно ли предсказать коэффициент?

    Zoominger
    @Zoominger
    System Integrator
    Нет.
    Но можно примерно: вы всегда проиграете.
    Ответ написан
    5 комментариев
  • ASP.NET WebAPI. Как сделать обертку для ControllerBase.BadRequest без внедрения зависимостей?

    petermzg
    @petermzg
    Самый лучший программист
    Добавьте Exception Filter в конвейер вызова. И бросайте Custom Exception, который фильтр перехватит и вернет нужный вам результат
    Ответ написан
    Комментировать
  • Почему говорят вызываем метод на классе, а не метод класса?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Всегда говорили "метод класса"
    Ответ написан
  • Ошибка при запуске pgAdmin4 PostgreSQL, что с этим делать?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Четвёртая версия - редкостная хрень, а у вас ещё и винда. Юзайте третью или какой-нибудь нормальный клиент. Ну или прямо из консоли сделайте, что вам там нужно.
    Ответ написан
    1 комментарий
  • Как настроить docker?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист
    Нужно копировать не только ShoppingCart.API, но и проекты, от которых он зависит
    Ответ написан
    4 комментария
  • Маркетинговые ходы вокруг языка Ассемблер?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Потому что программу на Си можно просто пересобрать.

    А программу на ассемблере переписать.
    Ответ написан
    Комментировать
  • Запрос mysql, что не так?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Синтаксис:
    SELECT * FROM `advert` WHERE `active` = '1' AND `type` = '1' ORDER BY `price`;


    проверяем: SQL online
    Ответ написан
    Комментировать
  • Почему в tarantool\redis хранимые процедуры если не на SQL, то на Lua?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Потому что интерпретатор Lua очень маленький и нетребовательный к ресурсам, но при этом обладает JIT-компилятором и высокой производительностью, а также встраивается намного проще, чем интерпретатор любого другого языка.
    Ответ написан
    9 комментариев
  • Как решить проблему, при которой код выдает 24,33 CS1026: ) 24,63 CS1002:; 24,63 1513: } 30,3 CS1022:?

    GavriKos
    @GavriKos Куратор тега Unity
    Instantiate(slotButton; inventory.slots[i].transform);
    Точка с запятой в качестве разделителя.
    Ответ написан
    Комментировать
  • С чего начать обучение ребенка 10 лет спортивному программированию?

    оставь ребенка в покое, нефиг собственные комплексы реализовывать.
    Ответ написан
    Комментировать
  • Как возвести в степень значение biginteger на biginteger?

    @cicatrix
    было бы большой ошибкой думать
    Никто в реальных реализациях такой фигнёй не занимается. Ты постигаешь основы криптографии, но забыл изучить раздел "модульная арифметика".
    https://ru.wikipedia.org/wiki/Возведение_в_степень...
    Само число ведь не нужно. Нужен остаток от деления по модулю.
    В противном случае тебе нужно будет реализовать класс, куда будут упаковываться числа нужной битности для 1024 бит тебе потребуется 16 long-ов. Ну и дальше - реализовать арифметику.
    Ответ написан
    Комментировать
  • Как соединить HTML и C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    1. При помощи XAML тоже можно создать очень качественный UI. При этом xaml даже более гибкий чем html.
    Посмотрите, как выглядят приложения на Avalonia, к примеру:
    windows-rider.png
    2. Да, можно. Есть Electron.NET и Blazor Desktop
    Ещё вы можете взять имеющуюся бизнес-логику и засунуть её в asp net, а дальше делать на любом языке UI
    Ответ написан
    3 комментария
  • Прошу помощи. В каком направлении мне двигаться?

    Tanner
    @Tanner
    Огромный человекоподобный боевой робот
    Для начала, мне непонятно, почему все части вашей программы, которые вполне могут выполняться синхронно, работают в потоках. Есть часть программы, которая выиграла бы от многопоточности − сканирование портов, где логично было бы создать по потоку на каждый порт (если портов слишком много, то создать пул потоков, определить стратегию переиспользования потоков, в общем, тут большой простор для творчества), но у вас порты сканируются в одном потоке, последовательно.

    Но давайте притворимся, что так и надо, и поговорим о других проблемах вашего кода.
    • Не стоит использовать глобальные переменные в программах длиннее одного экрана. Вместо global лучше объявить глобальный объект и спрятать flag в него:
      class PortScanner:
          
          def __init__(self):
              self.flag = 0
              
          def animate_menu_up(self):
              print("\n")
              ...
              self.flag = 1


    • Код инициализации программы тоже лучше перенести в __init__() глобального объекта. И основной цикл вынести в отдельный метод, например, run(). Тогда на нижнем уровне у нас останется что-то вроде:
      import ...
      
      class PortScanner:
          ...
      
      if __name__ == '__main__':
          main_obj = PortScanner()
          main_obj.run()

      этот идиоматичный код позволит импортировать класс PortScanner в другой скрипт, а также обеспечит плюсик на собеседовании/ревью,
    • приучайтесь использовать докстринги вместо комментариев:
      def animate_menu_up():
          """ Создание красивого меню (вверх). """

    • лишний цикл while True: в select_mode(),
    • слишком много магии. По мере роста программы становится всё тяжелее держать и сопоставлять в голове всякие абстрактные значения. Вот литералы, которые, по моему мнению, стоило бы определить как константы − или в «шапке» скрипта, или как атрибуты класса:
      MF_INITIAL = 0
      MF_MENU_CENTER = 1
      MF_MENU_DOWN = 2
      MF_SELECT = 3
      
      SCREEN_WIDTH = 50
      ALL_PORTS = [22, 80, 7777, 2516]
      SOCK_TIMEOUT = 0.5
      ANIM_SYMBOL = '~'
      ANIM_DELAY = 0.02

    • такие вещи очень больно стреляют в ногу и почти гарантированно проваливают собеседования:
      except RuntimeError:
          continue
      если вы действительно хотите продолжить выполнение программы после такой ошибки (что в обычных обстоятельствах бессмысленно и опасно), то позаботьтесь хотя бы о правильной индикации:
      import traceback
      ...
      except RuntimeError:
          traceback.print_exc(file=sys.stdout)
          continue

    • раз уж мы задержались здесь, давайте сделаем диспетчер более идиоматичным:
      while True:
          try:
              {
                  MF_MENU_CENTER: th_three.start,
                  MF_MENU_DOWN: th_two.start,
                  MF_SELECT: select_mode,
              }[flag]()
          except RuntimeError:
              traceback.print_exc(file=sys.stdout)
              continue
      Такой наивный подход выводит много шелухи на экран, но это не важно. Важно то, что такой код проще читать и дорабатывать, чем цепочку if...elif...else.

    • Работа со строками тоже напрашивается на улучшения:
      1. нет смысла разбивать строки на списки, к символам в строке можно обращаться так же, как к элементам списка − по индексу и с помощью срезов,
      2. не нужно копировать строки,
      3. не нужно печатать всю строку с начала, это делает анимацию неровной − конец строки печатается медленнее, чем начало. Достаточно допечатать один символ в строке.
      Например:
      def animate_menu_center():
          """ Создание анимации центрального меню. """
          # настройки для анимации
          output_strings = [
              '[1] scan all ports',
              '[2] scan enter port',
              '[3] exit',
              'SCANNER V1.0',
          ]
      
          # анимация названия
          for output_string in output_strings:
              print('\r\t\t', end='')
              for ch in output_string:
                  print(ch, end='')
                  time.sleep(ANIM_DELAY)
              # last string?
              if output_string != output_strings[-1]:
                  # new line
                  print()
      
          print('', flush=True)
          flag = MF_MENU_DOWN
      (Я убрал цвета для простоты.)
    • юзабилити сильно страдает из-за отсутствия нормальной функции выхода из приложения,
    • не оставляйте закомментированный код в файле, который отдаёте на ревью, это минус. Вместо этого напишите комментарий с пометкой “TODO”, например:
      # TODO: реализовать режим '2' (скан произвольного списка портов)
      Это однозначно плюс − показывает, что вы умеете работать в команде и пользоваться системами контроля версий.

    Вроде бы наиболее серьёзные проблемы я перечислил. Выложу более полный вариант кода в комментариях.
    Ответ написан
    1 комментарий
  • Как реализовать метод?

    edward_freedom
    @edward_freedom
    У тебя переменная текст так же типа object, а у него есть метод ToString.
    https://professorweb.ru/my/csharp/charp_theory/lev...
    Если ты хочешь расширить на любой обьект свой метод, то используй extension. Сделай паблик класс и статическую функцию, где первый параметр будет this и тип расширяемого обьекта
    Ответ написан
  • Как сократить время выполнения SQL запроса?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Сконвертировать поле meta_value в integer и проиндексировать
    Ответ написан
    3 комментария
  • Как создать объект из строки параметров?

    edward_freedom
    @edward_freedom
    Можно конечно. Количество значений должно идти подряд и соответствовать числу свойств в классе.
    var data = "0, 1.1, 1.2, 1.3, name, true";
                var myClass = MyClass.Parse(data);
                MyClass.SeeChanges(myClass);


    public class MyClass
        {
            private int Id { get; set; }
    
            private double X { get; set; }
    
            private double Y { get; set; }
    
            private double Z { get; set; }
    
            private string Name { get; set; }
    
            private bool Active { get; set; }
    
            public static MyClass Parse(string data)
            {
                var myClass = new MyClass();
                var properties = data.Split(',');
    
                var props = myClass.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public
           |                                                BindingFlags.Instance | BindingFlags.Static);
                for (int i = 0; i < props.Length; i++)
                {
                    var prop = props[i];
                    var type = prop.PropertyType;
                    prop.SetValue(myClass, Convert.ChangeType(properties[i], type, CultureInfo.InvariantCulture));
                }
                return myClass;
            }
    
            public static void SeeChanges(MyClass myClass)
            {
                var props = myClass.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public
          |                                                 BindingFlags.Instance | BindingFlags.Static);
                foreach (var prop in props)
                {
                    Debug.WriteLine("{0} = {1}", prop.Name, prop.GetValue(myClass, null));
                }
    
            }
        }
    Ответ написан
    1 комментарий