Задать вопрос
  • Стоит ли переводиться на заочку?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    У меня о заочке самые теплые воспоминания... С учебой, правда, это никак не связано, мы просто учиилсь вместе с Ней :)
    На заочку идут обычно те, кому нужны не знания, а корки. Это понимают все - и студенты и преподы, поэтому знаний (в большинстве случаев) Вы там не получите. Большинство предметов мы пролетали со свистом - женщинам-преподам дарили тортики, мужикам - спасибо, которое булькает... Некоторые правда - преподы старой закалки - не выпускали нас, пока не вбивали в наши головы полагающийся минимум знаний :)
    Заочка - это сессии (в другое время обычно никто ничего не делает, хотя по идее должен :) ). Сессия длится от двадцати до сорока дней, за это время проходят экзамены по предметам, которые были на прошлой сессии и установочные лекции с выдачей заданий на следующую.
    Расписание занятий и обьем нагрузки практически исключает возможность работы в это время, поэтому заранее согласуйте этот вопрос на работе. Формально - работодатель обязан Вам предоставить неоплачиваемый учебный отпуск, фактически - как договоритесь, где-то его дают, где-то люди идут в обычный отпуск и т.д. Сессия раз в полгода, как обычно - в начале года (зимняя) и летом (летняя).
    Ответ написан
    2 комментария
  • Почему не удаётся освободить память в деструкторе?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Проблема вот в этой строчке:
    int get_num_from_BigInteger(BigInteger big_int){

    Тут у вас идет передача по значению. У вас создается новая BigInteger переменная, со значением переданной. Поскольку вы конструктор копирования нигде не определили, компилятор сделал его вам сам, и там он тупо копирует все данные класса, включая указатель arr.
    В итоге у вас получается два экземпляра класса, в каждом из которых указатель на один и тот же массив. Потом каждый из двух экземпляров в деструкторе вызовет free для одного и того же указатенля, вот и получается двойной free и креш.

    Вам надо руководствоватся правилом трех(пяти). Доопределите конструктор копирования. Вообще, вам бы стоило его запретить (= delete;), ибо копировать такие большие числа - это плохо. А в функции ваши передавайте BigInteger по константной ссылке.

    Ну и в других функциях та же самая поблема.

    И еще, в C++ не стоит использовать malloc/free, используйте new/delete. А еще лучше, используйте std::vector.
    Ответ написан
    Комментировать
  • Как принимать деньги от физиков и передавать их другим людям онлайн без юрлица или ИП?

    vabka
    @vabka Куратор тега Веб-разработка
    1. Юридическое лицо обязательно придется завести

    2. Налоговая в любом случае увидит тут признаки дохода и ты будешь обязан взимать НДФЛ с исполнителей, как налоговый агент.
    Вот и требование отчитываться в налоговую.
    Вот тебе, получается, нужно узнавать полные данные и ИНН исполнителей.
    Вот и закон о персональных данных кокетливо машет рукой, а РКН ждёт от тебя стопку бумаг о том, как ты с этими ПД работаешь и как защищаешь. Очень возможно, что придётся ещё потратиться, чтобы всем требованиям соответствовать.

    3. А ещё тут очень легко можно попасть на отмывание денег. Возможно, для того что ты хочешь сделать, нужно ещё получать лицензию. Стоит проконсультироваться с юристом по поводу того, какой у тебя ОКВЭД тут будет.

    4. Учитывая это - я хз как ты собираешься не получать с этого прибыль. Ибо только на то чтобы запустить такой сервис и чтобы он работал придется немало денег вложить и регулярно тратить.

    Без юридического лица можно попробовать крипту, но тут тоже есть нюансы, начиная опять же с комиссий(говорят есть варианты с небольшой комиссией) и волатильности (по идее есть стейблкоины, но и они умеют обваливаться), заканчивая серым статусом, зато всего остального получится избежать.
    Ответ написан
    14 комментариев
  • Почему системник бьет током?

    vxblog
    @vxblog
    Инженер-программист
    Образование электрических зарядов на корпусе никак не связано с силой затяжки болтов.

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

    К сожалению, люди зачастую уверяют, что у них розетки с заземлением. А потом выясняется, что в саму розетку заведены только два провода - ноль и фаза. Без заземления.
    Ответ написан
    4 комментария
  • Какой стандарт C++ изучать?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    С. Прата подходит только для самого начала. 2012й год, стандарт C++11 вполне подходит чтобы начать.
    Дальше Прата рассматривать уже незачем. В стандарт нужно вникать самостоятельно, а не через книги.

    Смысла сначала разбираться с последними стандартами особого нет. Код C++ пишется на разных стандартах даже в рамках одного проекта. Редко получается найти достаточно большой коллектив людей, которые один стандарт знают достаточно хорошо. Поэтому люди пишут каждый в своем стиле и со своим знанием.
    И в таком коде надо уметь разбираться. Между стандартами много отличий как в синтаксисе, так и в поведении одного и того же кода. Это надо очень хорошо знать.

    Для систематизации своих знаний очень важно понимать то, почему в следующем стандарте были сделаны именно такие изменения. Поэтому очень важно разбираться по порядку их выхода.
    cfront, C++2.0 и C++98 сегодня иррелевантны. C++03 неактуален из-за изменений в C++11.
    C++11 является самой базой понимания современного C++. С ним нужно разобраться буквально до самых мелочей.
    C++14 является очень важным шагом вперед и его тоже нужно изучить. Важнее всего отличия поведения кода между C++11 и С++14.
    C++17 является радикальным. Помимо прочего в нем оговорен отказ от обратной совместимости стандартов. В нем же сделано больше всего изменений, влияющих на поведение кода. Разница поведения кода до 17-го и после него под час радикальна.

    C++20 сосредоточен на метапрограммировании и времени компиляции, но и других изменений в нем тоже хватает. Отличия от C++17 и более ранних весьма существенны. Но продуктового кода на нем сейчас крайне мало и его еще пару лет можно не брать во внимание.
    C++23 и C++26 пока можно не брать, они даже на уровне трансляторов все еще плохо поддерживаются.

    Из полезного стоит больше всего внимания уделить рабочей версии стандарта: eelis.net/c++draft
    А для быстрого ориентирования очень полезна выжимка изменений в стандартах: https://github.com/AnthonyCalandra/modern-cpp-features

    И самое главное. Не думай что у тебя получится все понять сразу. Люди на этот процесс кладут десятки лет своей рабочей жизни. Тебе их не перепрыгнуть. Но бежать впереди основной серой массы слабоквалифицированных кадров у тебя получится с успехом. И спустя твои десятки лет тебя тоже будут уважать за знания и навыки.
    Ответ написан
    Комментировать
  • Может ли операционная система быть UEFI-приложением?

    15432
    @15432
    Системный программист ^_^
    Конечно можно, по факту это и происходит в ПК - UEFI запускает приложение-загрузчик операционной системы. От вашего запроса отличается только тем, что ресурсы лежат в виде отдельных файлов на диске. Запакуй всё в один исполняемый файл, который сразу раскидает ось по оперативки - вот вам и приложение-операционка
    Ответ написан
    Комментировать
  • Windows 7. Где могут прятаться 35 ГБ?

    hint000
    @hint000
    у админа три руки
    Подавляющее большинство файлов занимают на диске больше места, чем их размер. Потому что место в файловой системе выделяется кластерами. Файл может занимать 1 целый кластер и ещё 1 байт, а ему выделено уже два кластера - в один он не поместился, а часть кластера выделить нельзя.
    Чем больше мелких файлов, тем больше потери.

    А кроме этих простых и понятных потерь ещё есть:
    https://ru.wikipedia.org/wiki/Альтернативные_поток...
    Ответ написан
    5 комментариев
  • Откуда появляется это странное число?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Читайте код внимательно:
    Ввод:
    for (int i=0; i<x; i++){

    Вывод:
    for (int i = 0; i <= x; i++){

    У вас там <= в конце. Из-за этого идет обращение к элементу по индексу x, за границей массива. И оттуда выводится какой-то мусор - это и есть ваше странное число.
    Ответ написан
    Комментировать
  • Что именно дают миллиарды транзисторов в процессоре для работы программы?

    15432
    @15432
    Системный программист ^_^
    1) Больше фич. Всякие AVX, MMX, а также умная конвейеризация, Hyper-Threading, спекулятивное исполнение, предсказание веток - при правильном применении сильно ускоряет вычисление
    2) Больше ядер. В один кристалл всё больше процессорных ядер запихивают, можно распараллелить задачи, тоже получим прирост в скорости работы
    3) Больше кэш-памяти. Та самая SRAM, которая входит в процессор и тоже состоит из транзисторов. Сильно ускоряет работу с памятью и задержки выполнения инструкций
    4) Больше контроллеров. В процы сейчас встраивают всё, что попало - шины данных, контроллер DRAM, PCIE, северный мост, отдельное ядро сопроцессора (Intel ME, AMD PSP), GPU и даже NPU где-то добавляют. Тоже считается за "больше транзисторов".
    Ответ написан
    4 комментария
  • Почему не запускается Docker на гостевом аккаунте Windows?

    @dronmaxman
    VoIP Administrator
    https://docs.docker.com/desktop/install/windows-in...

    If your administrator account is different to your user account, you must add the user to the docker-users group:

    Run Computer Management as an administrator.
    Navigate to Local Users and Groups > Groups > docker-users.
    Right-click to add the user to the group.
    Sign out and sign back in for the changes to take effect.
    Ответ написан
    5 комментариев
  • Каков принцип взаимодействия stream с программой?

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

    Это целый набор шаблонных классов, которые переопределяют операции побитового сдвига, поэтому у вас в программе используются << и >>. Под капотом это все доходит до системных вызовов, которые пишут или читают данные в системные потоки (pipe). Там тупо команды "запиши вот эти байты" и "отдай мне вот в этот буфер максимум столько-то байт".

    Система, насколько я знаю, для каждого pipe'а поддерживает какой-нибудь кольцевой буфер в который процессы могут писать и читать оттуда, через системные вызовы выше.

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

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

    1. C++ - это не единственный способ хорошо понять, как работает компьютер. Раз уж это первый язык, то я бы смотрел сразу в сторону Rust, тк он также сразу учит тебя тому, как можно управлять памятью.

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

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

    4. Если хочешь начать карьеру с C++, то тут мастхев будет диплом какого-нибудь хорошего вуза, чтобы тебя рассматривали всерьёз. (тоесть закладывай ещё +3 года после окончания колледжа).
    Хотя опять же - начинать карьеру с C++ сейчас - это крайней сомнительный выбор, если не геймдев, конечно.
    Для джуна в принципе разницы нет - на любом стеке тебе будет крайне тяжело найти первую работу.
    Для опытного аналогично, но наоборот - на любом стеке, если он не совсем мёртвый, найти работу будет вполне реально. (в худшем случае пара месяцев на поиск наиболее вкусного предложения).
    Сам в вполне успешно получал оффер на такую экзотику, как F#, а сейчас вообще пишу на Rust.
    Ответ написан
    5 комментариев
  • Как разумно поставить себе начало в программировании (C++ и C#)?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    C++ является одним из сложных ЯП... блабла...Я осознаю, что для меня это слишком серьёзное и тяжелое начало

    Я разобрался как работает стек и как адресуется память в пятом классе без интернета и практически без документации. Была какая-то книжка по С++, которую просто перечитал раза 3-4, пока не понял смысл.

    На протяжении обучения в школе я размышлял о начале изучения языка программирования.

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


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

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

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

    А про трудоустройство начинай думать, когда при прочтении описания вакансии ты считаешь, что 50-60% ты знаешь.
    Ответ написан
    12 комментариев
  • Зачем использовать кучу если есть стек? а так же где применяются указатели и ссылки?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Проблема стека в том, что там лежат только локальные данные, которые исчезнут вместе с выходом из функции. Кроме того, обычно размер всех переменных на стеке известен во время компиляции. Некоторые языки умеют выделять на стеке массивы переменной длины, но даже не все C++ компиляторы так умеют. В самом стандарте языка c++ - таких масивов нет. Поэтому стек часто не подходит.

    Помимо стека и кучи, есть еще глобальные переменные - но там проблема в том, что все они жестко определены во время компиляции.

    Т.е. если вам нужны данные доступные вне какой-то функции, да еще их точный размер и/или количество неизвестно на этапе компиляции - вам нужно что-то кроме стека и глобальных переменных. Это и есть куча.
    Ответ написан
    4 комментария
  • Почему экраны имеют разрешения не кратны степени 2? Почему 1080, а 1024, если вместо умножения на 1080, можно сдвинуть 10 байт?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Типа так сложно сделать 76 лишних пикселей?

    Производители дисплеев не производят отдельные дисплеи, это невыгодно.
    Вместо этого они оперируют понятием mother glass:
    mother-glass.jpg
    И уже эта стеклянная подложка нарезается на отдельные экраны, которые необходимы заказчику.

    Размеры "материнского стекла" более-менее стандартизированы в зависимости от поколения. Известны их размеры и диагональ (примерно от 50 см до 5 м).

    Это позволяет в т.ч. и заказчику расчитать сколько нужных ему дисплеев поместится на одном листе и подогнать размеры так, чтобы из одной большой матрицы получить максимум готовых изделий, минимизировав "обрезки".
    Ответ написан
    Комментировать
  • Размещать ли связанный сайт на поддомене, как QNA Habr?

    opium
    @opium
    Просто люблю качественно работать
    Зависит от вашего сеоплана, от него и надо толкаться
    Тостер один из самых грешных примеров так как он был и в директории основного сайта и на отдельном домене и теперь на субдомене, это называется горе от ума, тостеру понятное дело только плохо и до какого нибудь стековерфлоу ему надо набрать популярность в тысячи раз
    Ответ написан
    1 комментарий
  • Как настроить сервер для отладки вебхуков (webhooks) на локальной машине??

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Сбилдить .NET приложение в докере.
    2. Развернуть докер контейнер на сервере.
    3. Развернуть nginx (тоже можно в контейнере) на сервере.
    4. Настроить nginx, который будет проксировать трафик в п2:
    4.1. Запретить все.
    4.2. Разрешить :80 и :443 порты.
    4.3. Пробросить с п4.2 на внешний порт контейнера п2.
    4.4. Настроить SSL Let's Encrypt (при необходимости).

    По сути, можно взять любое руководство настройки докера и nginx, без привязки к .NET.

    UPD на основе данных из комментариев, конфиги будут выглядеть примерно так, dockerfile (поправить под свое приложение):
    # Образ asp.net.
    FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    # Компилируем приложение из /src.
    FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
    WORKDIR /src
    
    # Копируем файл проекта и восстанавливаем зависимости.
    COPY ["Project.csproj", "."]
    RUN dotnet restore
    
    # Копируем оставшиеся файлы и компилируем приложение.
    COPY . .
    RUN dotnet build -c Release -o /app/build
    
    # Публикуем приложение.
    FROM build AS publish
    RUN dotnet publish -c Release -o /app/publish
    
    # Создание итогового образа.
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "App.dll"]

    nginx (поправить под свое приложение):
    # http.
    server {
        listen 80;
        listen [::]:80;
        # Домены для обслуживания.
        server_name domain.ru www.domain.ru;
    
        # 301 редирект http->https.
        return 301 https://$host$request_uri;
    }
    
    # https.
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        # Домены для обслуживания.
        server_name domain.ru www.domain.ru;
    
        # Пути до letsencrypt сертификатов.
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256";
    
        location / {
            # Адрес, по которому доступно приложение на локалке сервера (localhost не указывать, а указывать имя контейнера (project в моем случае)).
            proxy_pass http://project:80;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    P.S. рекомендую освоить Docker Compose, чтобы было меньше возьни с разворачиванием и общением между контейнерами.
    Ответ написан
    8 комментариев
  • Зачем нужны DTO, когда есть типы и интерфейсы в языках программирования?

    mayton2019
    @mayton2019
    Bigdata Engineer
    DTO объекты часто пересекают границы Языков (Java/JavaScript/GWT) и сетевых протоколов (Rest/Graphql/SOAP/Avro).

    И эти объекты могут нести на себе семантику только чистых данных. Вы не сможете через сеть
    из Java в C# например передать интерфейс или объект с методами.

    И многие фреймворки искусственно ограничивают DTO как раз для того чтобы эти объекты однозначно
    декодировались всеми сторонами-участниками протокола взаимодействия. А фреймворки - обычно
    предоставляют средства кросс-компилляции этих DTO.
    Ответ написан
    Комментировать
  • Как правильно организовать выборку зашифрованных данных PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Никак.

    Ловите своих DBA, архитектора, безопасников, начальство и совместно вникаете, существует ли вообще вектор атаки, от которого вы так пытаетесь защититься.
    Один постоянный универсальный ключ шифрования зашитый в приложении и открыто передающийся по сети - это больше профанация чем безопасность. И хорошо ещё, если ключ не сохраняется в логах базы вовсе в открытом виде.

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

    Единственное возможное исключение: если ваша функция шифрования обязуется быть immutable в терминах postgresql, т.е. на один и тот же ключ и исходные данные генерировать всегда один и тот же бинарно идентичный результат. Тогда делаете индекс по parent_iin и ищете по условию where parent_iin = функция_шифрования(данные, ключ) то есть по зашифрованному представлению данных.
    Ответ написан
    Комментировать