• Как починить sshd из-за ошибки libssl.so.10?

    @res2001
    Скорее всего файл библиотеки битый.
    Другой вариант - проблемы с компоновщиком. Но т.к. вы ставили бинарный пакет, то это вряд ли.
    Можно попробовать заменить файл библиотеки с работающей ОСи. Версия библиотеки должна быть такой же.
    Или скачать вручную пакет правильной версии, распаковать его и заменить библиотеку.
  • Как программа может установится без админских прав?

    @res2001
    Это просто криворукие разрабы. В инсталяторе предусмотрели вариант установки в профиль пользователя, а в деинсталляторе - нет. Точнее, наверное предусмотрели, но забыли, что админские права для этого не нужны. Как-то так по моему.
    А может это сделано намеренно - установить может, а удалить нет :-) Стоит посмотреть, может там в комплекте идет какой-нибудь троянчик.
  • Программирования учат или применяют?

    @res2001
    Alexey, В начале ты не в состоянии что-то грамотно выбрать, потому что ни черта не знаешь ни в IT ни про себя. Ты даже не знаешь, что тебе будет интересно через пол года.
  • Какие ограничения/возможности функции main?

    @res2001
    Deita,
    Больше с прицелом на JavaScript смотрю и Node.JS...

    Все же вам хочется в веб. Но тогда нафига вам Си?
    Начинайте сразу с PHP или JavaScript. Если вы видите себя в вебе, то С/С++ будет лишней тратой времени. PHP и JavaScript в разы легче С++ и нет динамической памяти и указателей, без которых в Си делать не чего.
    Склоняете к реализации...

    Я вообще ни к чему не склоняю. Мне лично все равно что вы будете учить.
    Вы спрашиваете, я отвечаю к я это вижу. Только и всего.
    я из под стола пешком...

    Откуда угодно можно пересаживаться куда угодно. Не имеет значения.
    Если вы уже для себя решили изучать Си - изучайте, хороший язык. Сам его использую регулярно.
    Лично я начинал в учебном заведении с паскаля, как и многие другие. Просто потому, что паскаль являлся стандартом для начала обучения программированию в то время и везде на первом курсе давали его. После паскаля было много чего другого. Питона тогда в помине не было, поэтому с него начать я не мог. С чего сейчас начинают учить программистов в хороших ВУЗах, я не в курсе.
    изучение какого либо языка ассемблера, поможет лучше понять Си

    Ассемблеров много, потому что много архитектур процессоров. Ассемблер жестко привязан к конкретной архитектуре процессора. Для x86/x64 есть несколько вариантов синтаксиса ассемблера, но в целом они похожи друг на друга. Если очень хочется ассемблера то изучайте ассемблер для вашего домашнего компа, так по крайней мере не будет проблемы - где запустить мою ассемблерную программу. Наверняка у вас x86_64 с виндой, вот и берите соответствующий вариант ассемблера.
    Ассемблер поможет лучше понять некоторые темы в Си, например указатели. Но это самый сложный вариант изучения темы. Она не настолько сложна, чтоб для ее понимания изучать другой ЯП.
    Больше ассемблер поможет понять то, как работает процессор и оборудование.
    Если вы хотите в дальнейшем уйти в веб, то изучение Си и тем более ассемблера будет лишь тратой времени. В вебе вы почти наверняка никогда не будете иметь дело с железом напрямую и даже средства ОС будете использовать через прослойки.
  • Какие ограничения/возможности функции main?

    @res2001
    Deita, С89 - в мусор. С11 - актуальный, минимум С99.

    С++ - да другой язык, само собой. Но если убрать классы, ссылки, шаблоны, STL - останется практически Си - синтаксис, указатели, макросы, стандартная сишная библиотека. Можно писать программы на С++ не используя вышеперечисленных фич языка и используя функции из стандартной библиотеки Си.
    Даже без вышеперечисленного в С++ все равно останутся некоторые тонкости, отличающие его от Си, но сейчас это вам не важно.
    С++ просто из-за того, что Си - это легко.

    После Си вы не поймете ООП, просто потому что в Си ООП нет. А эта технология разработки используется в огромном количестве языков (в т.ч. в питоне). В С++ ООП есть.
    Вот после того как разберетесь с плюсами, все остальные языки вам покажутся легкими для освоения.
    После Си - скорее всего нет, т.к. многих концепций в Си просто нет (ООП, ссылки, лямбды, ...).

    На ассемблере можно написать все что угодно. Но этого никто не делает, т.к. это трудоемко. В основном сейчас ассемблер используют для каких-то низкоуровневых манипуляций с состоянием процессора и т.п. системных/железных вещей, которых не сделать ни в Си ни где-то еще. Обычно на ассемблере реализуют какой-то очень ограниченный функционал, затем используют этот скомпилированный код как функцию в Си или в С++.
  • Avr-gcc почему не работает обращение к полям структуры по индексу в цикле?

    @res2001
    Не использовал avr-gcc. Интересно, что за баг такой. Подпишусь.
    На вид все нормально.
    Глаз режет только i ++ через пробел, но это не ошибка.
    Я бы посмотрел ассемблерный код на выходе. Вероятно компилятор решил что-то выкинуть.
  • Как запустить два SSH туннеля из одного bat файла и убрать предупреждение о rdp сертификатах?

    @res2001
    winser, Если в сертификате зафиксировано доменное имя сервера или IP адрес и это не 127.0.0.1, то возможно избавиться совсем от предупреждения пользователя не получится. Если нет, то адрес по которому вы ходите на сервер не играет роли.
    Правда я не уверен, что в сертификатах для RDP практикуют привязку к адресу и вообще, что она проверяется.

    Если у вас на серверах развернута полноценная PKI со своим центром сертификации, то вам сертификат сервера не нужно устанавливать. Нужно установить сертификат центра сертификации. Могут быть промежуточные центры сертификации, тогда надо установить всю цепочку сертификатов центров сертификации.
    Если на серверах самоподписанный сертификат (такой используется по умолчанию), то просто ставите сертификат сервера и все. Возможно придется поиграть с тем, в какой контейнер поставить сертификат, чтоб клиент RDP его успешно нашел.
  • Какие ограничения/возможности функции main?

    @res2001
    Deita, С питона можно было бы начать, для изучения азов программирования. Он достаточно прост.
    Дальше можно переключиться на что угодно, что больше по душе или остаться изучать питон глубже.
    JavaScript - такое себе предложение, только если вы планируете связать свою дальнейшую карьеру с вебом.
    Паскаль - стар. Хотя до сих пор жив Дельфи и его бесплатный аналог Lazarus, но там ObjectPascal. В качестве первого языка, наверное, можно использовать. Но в дальнейшем надо будет изучать что-то другое, т.к. Дельфи и Лазарус сейчас мало котируются на рынке.

    Но это не важно. Просто с Си потратите чуть больше времени на понимание указателей, работы с динамической памятью, массивами и строками.

    Сам по себе Си язык маленький и достаточно простой (кроме некоторых вышеперечисленных не очевидных вещей). Так что стоит сразу ориентироваться на С++.
    На чистом Си сейчас мало работы, в основном востребован С++. Иногда в проектах на С++ используется чистый Си для каких-то узких задач. Так что стоит заходить именно на плюсы, а Си подтянете, если будет необходимость. Перейти с плюсов на Си не сложно.
    Начните с покупки толстой книги для начинающих. Прата "Язык Программирования C++" подойдет, смотрите издание по свежее. Есть и несколько других не плохих книг для старта. Но это только начало :)
  • Как запустить два SSH туннеля из одного bat файла и убрать предупреждение о rdp сертификатах?

    @res2001
    winser,
    А сертификатами для rdp что делать

    Сертификаты можно предварительно установить пользователю в систему. Сделайте их доступными для скачивания и дайте пользователю URLы и инструкцию по установке.
    В винде есть утилита командной строки certutil, которую можно использовать для "автоматической" установки сертификата. Но сертификат все равно нужно сначала скачать (или предоставить вместе с батником). Не уверен, что certutil доступна во всех версиях винды, надо проверять. По аргументам то же не подскажу, гуглите (certutil /?).
    Сертификат может быть не один, если используется цепочка сертификатов, то надо предоставить все сертификаты в цепочке, вплоть до корневого центра сертификации. В этом случае устанавливать сертификаты надо в разные контейнеры.
    И кстати certutil можно не вызывать каждый раз при старте mstsс, установить сертификаты достаточно один раз. Собственно так же как и cmdkey - она сохраняет учетные данные во встроенное хранилище винды и дальше можно уже не вызывать cmdkey.

    /noConsentPrompt - это не о том (mstsc /?).
  • Как запустить два SSH туннеля из одного bat файла и убрать предупреждение о rdp сертификатах?

    @res2001
    winser, В команде start первый параметр - название окна, запускаемой программы.
    Используйте ее так:
    start "" ssh ...
    Но у вас не одна команда ssh, а конвейер, так что start нужно добавлять к каждой команде конвейера (к cmdkey, не нужно - она выполняется быстро). На самом деле конвейер тут то же не нужен, просто запишите все команды последовательно, так проще:
    start "SSH1" ssh -L 9088:192.168.0.89:3389 user1@192.168.0.89
    cmdkey /generic:termsrv/127.0.0.1 /user:user1 /pass:123456
    start "" mstsc /v:127.0.0.1:9088
    ...


    UPD: Хотя заголовок - не обязательный параметр start, так что это можно пропустить. Но про конвейер все верно написал.
  • Какие ограничения/возможности функции main?

    @res2001
    Deita, Вы как-то все пытаетесь усложнить. На самом деле все проще. Воспринимайте код буквально. Не нужно строить догадок. Для простоты пока считайте, что все что написано в исходном коде именно так и исполняется. Есть некоторые "тонкие" не явные моменты, но ваш вопрос не об этом.

    Изменяет содержимое переменной только оператор присваивания, если его нет (х+2) - содержимое переменной (х) не меняется.
    Переменные аргументы функции в этом плане немного отличаются от обычных переменных. Первичная инициализация аргументов происходит параметром, заданным при вызове функции. При этом явного оператора присваивания нет.
  • Корректно ли в C++ называть стек статической памятью?

    @res2001
    В программе может быть несколько потоков, у каждого потока свой стек. При старте программы стартует только один главный поток, память для него выделяется загрузчиком ОС. Память для стеков других потоков выделяется при создании соответствующего потока уже во время выполнения программы.

    https://en.cppreference.com/w/cpp/language/storage...
    Поскольку на стеке хранятся переменные с автоматической длительностью хранения, то стек стоит считать автоматической памятью. Но это немного другой взгляд на сегменты памяти.

    Подобная терминология может вводить в заблуждение. И стек и .bss и .data и .rodata и даже .text могут физически находится на одной и той же плашке (или микросхеме) памяти.

    Эти термины относятся к ЯП и к тому как компилятор работает с переменными (т.е. какие инструкции генерирует для доступа к переменным), размещенными в том или ином сегменте памяти.

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

    @res2001
    aryzhanki, У меня аналогично.
    Нажмите на ссылку ниже "Подробнее", там будет статья от микрософта на эту тему. Похоже требуется дополнительная настройка, чтоб это работало. Я пока не вникал.
    В статье указано, что применимо только для Windows Server. Это как-то смущает, у меня Вин11. Толи косяк у микрософта, то ли просто статью не обновили до Вин11.
  • Как правильно организовать таблицы?

    @res2001
    Михаил Смирнов, В общем случае это создает дополнительные проблемы и дополнительный код на вышестоящем уровне. С этим вы уже столкнулись, но еще, похоже, не успели окунуться в проблему сполна.
    Это может быть оправдано, только если за год в этой таблице накапливаются миллиарды записей и весят они под несколько десятков/сотен гигабайт. Тогда разные таблицы средствами СУБД можно разнести на разные физические диски. Но и тут есть другие технологии решения проблемы, ниже уже писали. Т.е. подобное усложнение структуры базы и кода можно применять с какой-то целью, а не просто так, потому что хочется. Само по себе это действие не может быть целью.
  • Как правильно организовать таблицы?

    @res2001
    Чем вызвана подобная организация таблиц?
    Что бы так делать, нужны очень веские причины, которые бы перевешивали все возникающие проблемы.
  • Хочу понимать биты/байты и их друзей. Литература?

    @res2001
    Вы же как-то освоили в школе сложение десятичных чисел.
    С двоичными еще проще - тут цифр не десять, а две. Правила, по которым выполняются элементарные арифметические действия, те же.
    Вообще в любом учебнике по информатике это должно быть описано. Да и в интернете полно материалов на эту тему.

    Возможно вам и не нужно вникать в биты. Все зависит от задачи, которую вы ставите перед собой. Из вопроса это не ясно.

    Вот с шестнадцатеричной системой счисления гораздо сложнее - там цифр 16, но правила те же. А еще кое-где применяют 36ричную систему, сам видел.
  • Почему при подключении по ssh с ключем требует пароль?

    @res2001
    winser, На ключ при генерации то же можно повесить пароль. Тогда пароль будет запрашиваться, но уже от ключа.
  • Как настроить VPN на удаленном рабочем столе при подключении через RDP?

    @res2001
    Возможно ТСу как раз и нужен режим default route. Так что сразу выключать не стоит, нужно разобраться в хотелках.
    Даниил Сидоров Поведение при подключении ВПН вполне адекватное при включенном режиме default route.
    Вам нужно понять для чего вам ВПН.
    Если вы планируете выходить через ВПН в интернет, то default route должен быть включен, но в этом случае вам придется смириться с отваливанием RDP соединения. Вновь подключиться к RDP вы сможете только через ВПН.
    Если выход в инет через ВПН не планируется, то необходимости в default route нет, настройку нужно выключить. Проблема с отваливанием RDP соединения отпадет.
  • Как создать массив из типов данных в си?

    @res2001
    Nulltiton, А почему не через _Generic?
    #define GET_TYPE_SIZE(type)    _Generic((type), char: 1, short: 2, int: 4, ...)
    main() {
       printf("%zu\n", GET_TYPE_SIZE(int));
       
    }

    Более универсальный вариант - в _Generic макросе возвращать индекс типа, а не размер. Массив размеров держать отдельно и использовать индекс, возвращаемый макросом, для доступа к нужному элементу.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин,
    Есть скрипты разные - это один из них был.

    Поэтому я и просил показать конфиг openvpn сервера.
    Скрипты пишутся под какую-то типовую конфигурацию сети. Конфигураций разных может быть масса. И как правило вы точно не знаете под какую конкретно конфигурацию написан скрипт. Ваша конфигурация не выглядит типовой.

    По мимо поднятия NAT надо добавить маршрут на ноуте, я писал где-то выше. Без этого работать то же не будет. Стоит начать с маршрута, т.к. это можно легко сделать.

    Даже если все настроено правильно и должно работать, фаерволы могут блокировать трафик. Причем фаервол на любом промежуточном узле. Вам надо в iptables разрешить трафик между адерсами openvpn сети и адресами gitlab сети. И на вашем ноуте то же не помешает проверить фаервол.