Задать вопрос
  • Нужно ли высшее образование C#-программисту в Майкрософт?

    @Mirkss
    всякое бывало)
    Все ок, отличные планы, предыдущий комментарий про 10 лет - не совсем правильный)

    Варианты отъезда в Европу есть, некоторые требуют денег, некоторые времени и/или всяких скиллов типа опыта, образования etc (пишу по своему опыту - 10 лет прожил там), голубая карточка не единственный способ, хотя для айтишников комфортный, кто спорит)

    Помню, при собеседовании в европейский ДЕЛЛ никто у меня особо не интересовался образованием, но умения и опыт были важны (включая знание хотя бы иностранных языков), так что нарабатывайте.

    Ну и понятно, что МС (и ДЕЛЛом, и Гуглом)) рынок труда не ограничивается, если что умеете - можно найти много вариантов устроиться, хоть программером, хоть инженером, причем не обязательно ориентироваться на Чехию и т.п. страны (ну разве что у вас свои причины думать именно о них) - немцы хорошо берут наших инженеров, например (и отлично платят), хотя для работы там свои тонкости - они обожают бумажки - дипломы и сертификаты об окончании чего-то)

    Английский для айти-компаний очень важен, немецкий тоже хорош.

    Вы можете столкнуться с ситуацией, что гиганту будет пофигу ваше незнание местного языка, если у вас свободный технический английский + А1-А2 разговорный.

    Спрашивайте если что)
    Ответ написан
    Комментировать
  • Как называется данная программа?

    @evgeniy_lm
    Данная программа ни как не называется. 100% эта фигня написана для курсового на Delphi. Я писал подобную лет 10 назад. Могу и вам написать если че
    Ответ написан
    Комментировать
  • Как называется данная программа?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Чей-то типичный курсач на делфи 7 по теме базы данных
    Ответ написан
    Комментировать
  • Как называется данная программа?

    Adamos
    @Adamos
    Какой-то самопис на Дельфи, судя по иконке.
    Судя по ней же, широко программа не распространялась, используется в каком-то узком кругу ограниченных сотрудников.
    Ответ написан
    2 комментария
  • Что читать программисту, чтобы улучшить серьезную алгоритмическую базу, необходимую в корпоративном секторе?

    @Robotex
    Пробуй уже сейчас работать. Фриланс, для себя что-то пиши. Можно прочитать кучу книг, но ничему так и не научиться.
    Я, когда год проработал программистом со второго по третий курс, и сейчас, проработав 2 месяца будучи на пятом, научился гораздо большему, чем за все время универа.
    Ответ написан
    3 комментария
  • Что читать программисту, чтобы улучшить серьезную алгоритмическую базу, необходимую в корпоративном секторе?

    sintez
    @sintez
    Я на третьем курсе устроился стажером в достаточно немаленькую компанию. Это было очень полезно. На ходу и осваивал новые технологии и участвовал в реальных проектах и еще и денежку платили. Так что, советую посмотреть в эту сторону.
    Ответ написан
    Комментировать
  • Что читать программисту, чтобы улучшить серьезную алгоритмическую базу, необходимую в корпоративном секторе?

    @Scioner
    Нормально программирую

    и
    самые лучшие книги можете посоветовать по части основных алгоритмов

    Простите, пожалуйста, вызывает улыбку :)

    Вам выше очень верно посоветовали. Устраивайтесь на работу сейчас. Пусть даже за копейки. Книги вам помогут, но только в случае наличия опыта. Иначе, сколько бы вы ни читали, сколько бы ни учились, когда будете устраиваться — будет реакция только а ля: «гыгыгы. студентик». В этом нет ничего зазорного, но программист теоретик без опыта представляет из себя намного меньшую ценность, чем программист, прочитавшей полкнижки, да и ту — только про синтаксис, но отбарабанивший пять лет на соответствующей должности.

    Вам сейчас надо почитать «литературу по теме», но вы не знаете по какой именно теме. В этом загвоздка.
    Ответ написан
    2 комментария
  • Что читать программисту, чтобы улучшить серьезную алгоритмическую базу, необходимую в корпоративном секторе?

    @Yakhnev
    Кормен. Алгоритмы. Построение и анализ
    С. Макконнелл.Совершенный код.
    Бентли. Жемчужины программирования
    Таненбаум. Компьютерные сети
    Ответ написан
    Комментировать
  • Перебор Элементов списка в Python?

    @fireSparrow
    По вашему вопросу уже ответили, а я хочу сказать, что в современном питоне решать такие задачи явным циклом не рекомендуется, для этого есть списковые включения.

    Благодаря им ту же задачу можно решить гораздо изящнее:
    arr = [1, 2, 3]
    arr = [2*i for i in arr]
    print(arr)


    Так и писать код проще, и тот, кто потом его будет читать сразу понимает, что здесь происходит, и выполняться это будет быстрее.
    Ответ написан
    Комментировать
  • Есть ли смысл использовать Pool на одноядерном процессоре?

    @lega
    Есть ли смысл использовать Pool на одноядерном процессоре?
    Есть, процессы можно добавлять пока CPU потребляет менее 100% (либо пока не упрется в io/сеть/диск)
    Ответ написан
    Комментировать
  • Есть ли смысл использовать Pool на одноядерном процессоре?

    @Fixid
    Имеет смысл только если каждый поток почти не потребляет ресурсы и вы хотите утилизировать весь CPU
    Ответ написан
    Комментировать
  • Как правильно использовать MVC паттерн в сетевой игре?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    И где тогда хранить логику с определением типа объекта

    В классе реализующем Factory/Builder шаблон
    Объект1 создатьОбъект1(СостояниеОбъект1 состояние)

    вот таких методов в контроллере точно быть не должно
    Ответ написан
    7 комментариев
  • Не могу "выдрать" данные из программы. Что делать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Никак.
    Данные могут храниться в виде разных переменных, и вычисляться перед выводом.
    Данные могут храниться в относительных координатах и уточняться перед выводом.
    Данные могут храниться в более детальном виде (float), и при выводе округляться.

    Данные могут храниться как угодно, и не понимая ассемблера, найти через Артмани будет крайне сложно.
    Тем более, что при каждом запуске смещение в памяти может меняться.
    "недалеко от данных направления" может быть, а может не быть. Не с той стороны заходите.

    Выходы:
    1. Можете ковырять дальше, надеясь на удачу и интуицию, может и найдете.
    2. Найти вообще кардинально другой вариант, понять откуда данные взялись в программе и брать их в первоисточнике, а не из памяти программы.
    Ответ написан
    7 комментариев
  • Как в Dictionary получить элемент по типу?

    freeExec
    @freeExec
    Участник OpenStreetMap
    public Component GetComponent<T>()
    {
          // РАБОТАЕТ
          return Components[typeof(T)];
    }
    Ответ написан
    1 комментарий
  • Как найти частичное совпадение строк?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    Без дополнительных библиотек и с использованием расстояния Дамерау-Левенштейна можно примерно так:
    import re
    
    
    def get_substrings(string):
        """Функция разбивки на слова"""
        return re.split('\W+', string)
    
    
    def get_distance(s1, s2):
        """Расстояние Дамерау-Левенштейна"""
        d, len_s1, len_s2 = {}, len(s1), len(s2)
        for i in range(-1, len_s1 + 1):
            d[(i, -1)] = i + 1
        for j in range(-1, len_s2 + 1):
            d[(-1, j)] = j + 1
        for i in range(len_s1):
            for j in range(len_s2):
                if s1[i] == s2[j]:
                    cost = 0
                else:
                    cost = 1
                d[(i, j)] = min(
                    d[(i - 1, j)] + 1,
                    d[(i, j - 1)] + 1,
                    d[(i - 1, j - 1)] + cost)
                if i and j and s1[i] == s2[j - 1] and s1[i - 1] == s2[j]:
                    d[(i, j)] = min(d[(i, j)], d[i - 2, j - 2] + cost)
        return(d[len_s1 - 1, len_s2 - 1])
    
    
    def check_substring(search_request, original_text, max_distance):
        """Проверка нечёткого вхождения одного набора слов в другой"""
        substring_list_1 = get_substrings(search_request)
        substring_list_2 = get_substrings(original_text)
    
        not_found_count = len(substring_list_1)
    
        for substring_1 in substring_list_1:
            for substring_2 in substring_list_2:
                if get_distance(substring_1, substring_2) <= max_distance:
                    not_found_count -= 1
    
        if not not_found_count:
            return True
    
    
    search_request = 'трубок использовали для прожигания'
    original_text = 'трубок использовали для прожигания стальковша.Замена воронки 18м 8сл. Разлита полностью'
    
    result = check_substring(search_request, original_text, max_distance=2)
    
    print(result)  # True если найдено, иначе None


    Можете доработать под свои задачи. Но учтите, нахождение расстояния Дамерау-Левенштейна в принципе ресурсоёмкая операция, тем более с реализацией на чистом Python. Например, искать вхождение подстроки в нескольких мегабайтах текста -- может быть довольно долго.

    Чтобы ускорить нахождение расстояния ДЛ, можно использовать реализацию для Python на языке Си: https://github.com/gfairchild/pyxDamerauLevenshtein

    Так же существуют менее точные, но более быстрые алгоритмы сравнения двух строк:
    https://habr.com/ru/post/114997/
    В PyPI и на GitHub должны быть библиотеки с готовыми реализациями наиболее востребованных из них.
    Ответ написан
    7 комментариев
  • Почему не работает http сервер без вывода консоли?

    devg
    @devg
    I am Yenior software developer
    Вы используете CGIHTTPRequestHandler, но скрипт в режиме CGI использует вывод в консоль для ответа сервера. То есть в этом режиме без консоли сервер работать не будет.
    Ответ написан
    2 комментария
  • Почему не восстанавливается соединение с сервером после долгого разрыва?

    @Meonn
    Возможно у тебя переполняется буффер из-за рекуррентного вызова connectToServer()
    def connectToServer ():
        ....
        except:
            print("error occured")
            ServerSock.close()
            time.sleep(5)
            connectToServer()


    Попробуй так:
    def connectToServer ():
        print("Server: connecting")
        global ServerSock
        connected = False
        while not connected:
            try:
                ServerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                ServerSock.settimeout(10)
                ServerSock.connect((ServerHost, ServerPort))
                ServerSock.settimeout(10)
                print("Server: connected")
                connected = True
            except:
                print("error occured")
                ServerSock.close()
                time.sleep(5)
    Ответ написан
    Комментировать
  • Как правильно информировать о процессе выполнения задачи?

    @Sumor
    Практическое руководство. Фоновое выполнение операции

    Для выполнения продолжительной задачи нужно использовать BackgroundWorker.
    В событии DoWork описываете вашу длительную работу.
    В процессе работы (в обработчике DoWork) вызываете метод ReportProgress, чтобы сообщить в основную программу о состоянии обработки. В основную программу приходит событие ProgressChanged.
    Периодически отслеживаете не пытается ли кто остановить вашу работу через CancellationPending.

    Для запуска работы используете метод RunWorkerAsync. Через событие ProgressChanged отслеживаете прогресс и обновляете прогрессбар. По событию RunWorkerCompleted узнаёте о завершении или прерывании работы.
    Ответ написан
    1 комментарий
  • Как создать динамический массив из объектов класса?

    @mink_h Автор вопроса
    И так, нашел несколько способов:

    1. Если компилятор поддерживает стандарт C++ 2011
    Test *objPtr = new Test[COUNT_OBJ] {5, 6, 7, 8};

    2. Реализация того, что было сказано GavriKos
    Test *objPtr = (Test*)calloc(COUNT_OBJ, sizeof(Test));
    memset(objPtr, 0, COUNT_OBJ * sizeof(Test));
    for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i].put_k(i + 5);

    Этот вариант нужно использовать с осторожностью, т.к. память выделяется но не вызываются конструктор и деструктор объекта.

    3. Вариант, представленный Rsa97 в комментариях
    Test **objPtr = new Test*[COUNT_OBJ];
    for (int i = 0; i < COUNT_OBJ; ++i) objPtr[i] = new Test(i + 5);

    4. На мой взгляд, самая удачная реализация с использованием Placement new. На данный способ указал Игорь Иванов
    Test *objPtr = static_cast<Test*>(operator new[] (COUNT_OBJ * sizeof(Test)));
    for (int i = 0; i < COUNT_OBJ; ++i) new (objPtr + i) Test(i + 5);
    Ответ написан
    1 комментарий
  • Git. Случайно удалил локальный файл, как восстановить?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Если состояние такое:
    $ git status
    
    On branch master
    Changes not staged for commit:
      (use "git add/rm <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
    	deleted:    myfile


    То файл можно восстановить вот так:

    git checkout myfile

    Чтобы восстановить файл из конкретного коммита или ветки, можно сделать вот так:

    git checkout abcde myfile # abcde — хеш коммита
    # или
    git checkout feature3 myfile # feature3 — имя ветки
    Ответ написан
    2 комментария