Задать вопрос
  • Как восстановить каталог с git репозиторием на ext4 (в linux)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сделай снова git clone с remote.
    Ответ написан
    Комментировать
  • Что делать, если начальство запрещает публиковать код на github?


    1. Как тогда другие программисты имеют свое портфолио?

    Свои проекты и вклад в проекты с открытым исходным кодом - это вариант раз.
    Или не имеют - это вариант два.

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

    2. Что именно нужно публиковать на гитхаб? Весь проект или именно то, что внес лично я?

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


    3. Я правильно понял, что у меня не остается выбора как делать свои личные проекты и загружать их на GitHub?

    Повторюсь, что ты можешь и не делать их вообще.
    У большинства разработчиков - гитхаб это просто помойка, в которой ничего интересного нет.


    4. Тогда что если я делаю игру с другом? Как в будущем работодатель поймет что именно из проекта сделал я?

    Работодатель не будет это смотреть скорее всего.
    Ну и ты можешь на словах описать, что делал - автор же в коммитах написан.

    Часть проекта ценности вообще иметь не будет

    5. Что будет если загрузить на гитхаб проект, ну или ту часть, которую делал я, наперекор начальству, и скрыть его от посторонних, а потом перед собеседованиям открыть?

    Читай п2. Тебе скорее всего отказ дадут, тк никому не нужен разраб, который сливает защищённый код.
    Ответ написан
    2 комментария
  • Откуда взялся const?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    const char* взялся вот отсюда: "Hello world". Это строковая константа в коде. Ее программа менять никак не может. Компилятор ее засовывает в read only секцию исполняемого файла.
    Ответ написан
    Комментировать
  • C выдаёт ошибку при попытке сравнить 2 int?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Отключити оптимизацию и соберите проект в режиме Debug.

    У вас там Undefined Behavior и, очевидно, проблемы работы с памятью. Ошибку вы замечаете не там, где она, собственно, происходит.

    Сразу вижу проблему вот тут:
    strcat(result, alph[mod]);

    Тут вы приписываете строку с адресом alph[mod] к строке по адресу result. Обратите внимание, не строку, начинающуюся с позиции mod в массиве alph, а строку с адресом вроде кода символа 'F'.

    Ну и, вряд ли вы хотите часть строки alph скопировать в result. Плюс у вас в alph[] нет места под терминирущий 0, поэтому strcat вызовет переполнение буфера. Вам там надо дописывать один символ в конец result. Библиотечных функций именно для этого нет. Заведите счетчик количества символов в ответе и тупо переписывайте значение result[cnt].
    Ответ написан
    2 комментария
  • Как выбрать монитор для программиста?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Flicker Free.
    - Вместо IPS > VA матрицу (посмотрите глазами на оба, сразу поймете в чем разница).
    - Не менее 24 дюймов (желательно больше, чтобы был именно широким) и разрешение 2/4к.
    Из вашего личного опыта, при работе к какими мониторами у вас напрягались глаза, а с какими нет?

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

    @dronmaxman
    VoIP Administrator
    AS ("автономная система") не привязана к адресу, соответственно можно договориться с провайдером и настроить пиринг (подключение) на другой локации.

    Другой вопрос, если IP адреса из этой AS необходимы на обоих локациях (адресе1 и адресе2).
    Тогда да, тебе нужен тунель (VPN или GRE или VxLAN или QinQ или ISP privacy vlan) между локациями поверх интернета.

    QinQ или ISP privacy vlan - наверное самый простой вариант в реализации с твоей стороны, надо задать вопрос провайдеру предоставляет ли он такую услугу (протащить через свою сеть нужных тебе vlan)
    Ответ написан
    Комментировать
  • Как передать пул белых IP-адресов через интернет с разными провайдерами?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Автономная система не привязана к провайдеру и может быть перенаправлена к любому провайдеру (и соответственно к вам через другого провайдера) анонсом соответствующих BGP маршрутов https://datatracker.ietf.org/doc/html/rfc7705
    Ответ написан
    Комментировать
  • Стоит ли читать лутца в 2023?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Лучше Лутца ещё ничего не написали. Да и Python за годы с последнего издания сильно не поменялся.
    Ответ написан
    Комментировать
  • Как проанализировать ошибку в установке ssl соединения?

    paran0id
    @paran0id Куратор тега Linux
    Умный, но ленивый
    openssl s_client -connect securepayments.sberbank.ru:443

    в половине случаев получаем:
    $ openssl s_client -connect securepayments.sberbank.ru:443
    CONNECTED(00000003)
    write:errno=104
    ---
    no peer certificate available
    ---
    No client certificate CA names sent
    ---
    SSL handshake has read 0 bytes and written 338 bytes
    Verification: OK
    ---
    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    Early data was not sent
    Verify return code: 0 (ok)
    ---


    во второй половине - Verify return code: 19 (self-signed certificate in certificate chain), что означает отсутствие корневого сертификата

    такое впечатление, что там балансировщик кидает то на хороший сервер, то на плохой
    Ответ написан
    2 комментария
  • Задания с CodeForces. Вариант решения есть, но не подходит для всех тестов. Может неправильно понял реализацию решения?

    Alexandroppolus
    @Alexandroppolus
    кодир
    тебе надо отдельно рассмотреть D > 0 и D < 0, потому что в первом кейсе сначала едем вверх по 3 этажа и потом чуть вниз по 2, а во втором - сначала вниз по 2 этажа, потом чуть вверх по 3

    далее, в первом случае могут быть 3 кейса, по остатку от деления D на 3. Если 0, то "-2" не понадобится, если 1, то можно будет обойтись одним нажатием на "-2", иначе двумя. Для D<0 - аналогично.

    и всё можно решить формулами, без цикла, за O(1)
    Ответ написан
    5 комментариев
  • Как на одном IP-адресе прикрутить несколько доменов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SRV вам тут не поможет, браузеры с SRV-записями не работают.
    Вам нужно в DNS сделать CNAME-запись для admin.qwerty.ru на qwerty.ru, на сайте добавить admin.qwerty.ru как псевдоним и сделать перенаправление с этого адреса на qwerty.ru:8006.
    Ответ написан
    Комментировать
  • Как исправить данную оишбку?

    @dima20155
    you don't choose c++. It chooses you
    Проблема в операторе []
    А именно в условии
    while (current->next != NULL)
    Должно быть
    while (current != NULL)

    Также у вас данный оператор не возвращает ничего в случае, индекс больше, чем количество элементов в листе, а также не проверяет условие по типу:
    index < size

    Помимо этого у вас ещё много проблем в коде, но если вы начинающий, то что же, учитесь, все впереди. Попробуйти найти себе человека, который сможет скорректировать/отревьюить ваш код, потому в текущем виде он весьма плохо может работать, из-за сырых указателей, таких же сырых выделений памяти, отсутствия её освобождения, непонятно зачем наличие оператора [] у linked list (в стандартной библиотеки их нет не случайно и нужна веская причина чтобы пользоваться оператором [] в linked list )
    Ответ написан
    1 комментарий
  • Как пишется ПО для дронов или БПЛА и что почитать чтобы это узнать?

    0. Направление не новое и хорошо изученное.

    1. Зависит от того, какое именно ПО.
    Что-то пишется на Си, что-то на языках высокого уровня, а что-то реализуется на уровне железа (плис/fpga/asic)
    Для моделирования каких-то процессов может использоваться уже упомянутый матлаб, например.

    2. Изучать нужно теорию управления и физику, тк по сути всё управление моторами базируется на ней - а это по сути основная и единственная задача, как удержать дрон в воздухе, не сталкиваться с препятствиями при движении, а в случае отсутствия движения - оставаться на месте.
    По разработке - собственно Си для микроконтроллеров и verilog для железа. По хорошему ещё электронщиком нужно быть.
    Не сильно от обычной embedded разработки отличается, выходит.

    А на высоком уровне - там уже на конкретную задачу нужно смотреть. Где-то может даже ML и компьютерное зрение понадобится.
    Получается тоже не так уж много отличий от обычной разработки.
    Ответ написан
    Комментировать
  • Генератор случайных чисел ИНОГДА (очень редко!) возвращает NaN?

    adeshere
    @adeshere Автор вопроса
    РАН, Фортран, временные ряды
    Спустя полтора года, завеса тайны все-таки начала спадать!
    Во-первых, благодаря вот этому совету Дмитрия Чернова, баг удалось локализовать. А именно, Дмитрий предположил, что проблему надо искать в контексте x87 FPU, и что добавление
    пары asm- команд
    Прямую вставку asm- команд в код мой фортран-компилятор не умеет, но все необходимое делает ключ Qfp-stack-check
    в подозрительных местах приведет к вылету программы по Access Violation именно в том месте, где что-то пошло не так. А не спустя какое-то время, когда я снова полезу в FPU и получу Nan, например, в ГСЧ. Эта идея сработала, и я получил Access Violation в совершенно безопасной (как мне казалось)
    функции
    SUBROUTINE SCREEN_PUTL0_TIME(TEXT)
    USE ABD_INC;  USE HEADERS
    character, intent(in) :: text*(*)
    integer*4, save :: isw=0
    c
    c     При самом первом вызове таймера isw=0, функция вернет 0
    c     При последующих (isw=1) - вернет интервал от момента инициализации
    t=timer_mm(5,isw) 
    isw=1
    if (t < $Screen_counter_time) return
    c    В крайнем  случае (если в момент начала внешнего цикла таймер уже
    c    инициализирован) функция первый раз напечатает % сразу при старте,
    c    а не через $Screen_counter_time после запуска цикла
    c   
       call screen_putl0(text)
       t=timer_mm(5,0)         ! Реинициализация таймера после печати строки
    end

    Эта функция печатает на экран % выполнения (он передается в строке TEXT), но с интервалом не менее $Screen_counter_time. Для проверки времени, прошедшего с прошлой печати, вызывается самодельный таймер t=timer_mm(5,isw) Первый параметр функции - это номер таймера (их там у меня целый массив для разных нужд). А второй параметр работает так: если isw=0, то таймер засекает время, а в остальных случаях возвращает число секунд, прошедших с момента инициализации счетчика. Ну вот так было когда-то сделано, чтобы обойтись одной функцией вместо двух....
    Таким образом, когда я дергаю инициализацию таймера, то его возвращаемое значение меня не интересует. Именно это и происходит в предпоследней строке кода выше:
    t=timer_mm(5,0)
    Результат выполнения функции как бы присваивается переменной t, но больше она нигде не используется . Как оказалось, именно здесь и была зарыта собака.

    А дальше уже было проще. В коде под спойлером у меня есть вызов функции типа real*4, от которого мне был нужен только побочный эффект (инициализация таймера), а вот возвращаемое значение функции нигде не используется. В принципе,
    это легально
    По идее, компилятор в такой ситуации должен после вызова функции восстановить стек x87 FPU, а возвращаемое значение никуда не копировать. В других местах кода у меня есть аналогичные вызовы (когда возвращаемое значение не используется), и это не приводит к каким-то багам. Ну и язык официально нигде не требует, чтобы возвращаемое значение функции обязательно было куда-то использовано ;-)

    Но как оказалось, именно это и провоцировало проблему. Этот фрагмент библиотеки у меня состоит из кучи очень небольших (5-10 строк) взаимосвязанных функций с частично повторяющимся кодом. Оптимизатор делал из них жуткое спагетти, дробя эти функции на еще более мелкие фрагменты и инлайня их направо и налево. И, видимо, где-то в ходе этих оптимизаций он "забывал" восстановить (очистить?) стек FPU.

    В общем, для исправления бага оказалось достаточно заменить локальную переменную t на глобальную. Про нее оптимизатор не знает - будет ли она нужна, или нет. Поэтому он просто вынужден извлекать из сопроцессора результат FP-вычисления, чтобы запихнуть его в это место ;-)

    Огромное спасибо Дмитрию, который сначала выдвинул правильную версию происхождения бага, а потом помог его точно локализовать и убрать! Тестовая программа работает уже час и пока ни одного Nan-а не появилось. ;-)
    Ответ написан
    Комментировать
  • В чем суть приватных IP адресов, если можно выдавать любые IP и затем их Натить?

    @Drno
    Когда тебе понадобится зайти на белый IP из этой подсети, ты на него не попадешь, т.к. он будет искаться в первую очередь у тебя в локалке
    Ответ написан
    1 комментарий
  • Как правильно структурировать проект C?

    @tin_vsl
    Senior Developer
    Скорее всего вам нужно перечислять файлы в другом порядке, чтобы они собирались в правильном порядке и их содержимое было видно там, где будет использоваться.

    Для первого варианта, думаю так:
    add_library(dbc printer.c library.c library.h)
    Ответ написан
    Комментировать
  • Почему -Wconversion разрешает передачу integer literal в char параметр?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Ну вообще, char - integral type. Поэтому передавать туда числовую константу можно - это никакой не варнинг. Компилятор сам понимает, что она должна быть типа char и даже проверяет на переполнение и выдает warning, если что.
    Ответ написан
    2 комментария
  • Почему free() выводит ошибку?

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

    Вижу сразу ошибку в delete_node: Если вершина в списке всего одна, произойдет фингя: this_list->last не обновится, да и next_node->prev несуществующее будет переписано.
    Ответ написан
    2 комментария
  • Есть ли название у подобного подхода?

    What is an early return?
    An early return, or “return early” is an approach to keep readability in functions and methods.

    It is always considered a wise choice to return early if simple conditions apply that can be checked at the beginning of a method.
    https://dev.to/jpswade/return-early-12o5
    Ответ написан
    1 комментарий
  • Как на компьютере с Windows XP открыть шару с сервера 2019?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Видимо политики нового домена разрешают другой набор шифров и сервер и клиенты не могут договориться между собой.
    Вообще такие вещи по логам evetnvwr диагностируются.
    Ответ написан
    2 комментария