Задать вопрос
  • В чем различие полиморфизма и перегрузки?

    maaGames
    @maaGames
    Погроммирую программы
    Не слушай их ^^^, они вводят тебя в заблуждение.

    1. Перегрузка есть. Полиморфизмом и не пахнет.
    int Sum(int a, int b)
    { return a+b; }
    
    double Sum(double a, double b)
    { return a+b; }


    2. Полиморфизм есть. Пергрузкой и не пахнет
    class A
    {
      virtual ~A(){}
      virtual char* Name() { return "Class A"; }
    };
    
    class B
    {
     virtual char* Name() { return "Class B"; }
    };
    
    void main()
    {
        A* a1 = new A;
        A * a2 = new B;
    
       cout << a1->Name(); // Class A
       cout << a2->Name(); // Class B
    }
    Ответ написан
    6 комментариев
  • Как вызвать стандартную программу Windows "defrag" в коде C/C++?

    @vilgeforce
    Раздолбай и программист
    Полный путь попробуйте.
    Ответ написан
    Комментировать
  • Какие есть методы оптимизации размера программы (исполняемого кода)?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Начать можно с изучения опций компилятора - там должны быть режимы оптимизации под размер кода, но при этом будет страдать производительность.

    Дальше, компоновщик может выдать карту размещения ресурсов, где можно посмотреть размеры каждой процедуры.
    Ответ написан
    Комментировать
  • Как автоматически выполнять BASH скрипт при выключение?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Нескромный вопрос, вы пытались эту задачу решить самостоятельно?
    Какие решения пробовали, что получилось/не получилось?
    А то такое впечатление что вы перепутали вкладку тостера с вкладкой поисковика.
    Ответ написан
    Комментировать
  • Как автоматически создать файл со всеми возможными правами доступа в linux?

    @ldvldv
    #! /bin/bash
    
    let "i=0"
    echo $i
    while  [ $i -lt 512 ]
    do
    
    touch tmp
    chmod $(printf %o $i) tmp
    mv -- tmp "$(ls -l tmp | cut -d' ' -f1).txt"
    let "i=i+1"
    
    done
    Ответ написан
    24 комментария
  • Возможно ли у получателя определить «границы пакетов» TCP отправителя?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Scorpi и Павел Китьян нужно срочно начать читать замечательный учебник Снейдера - Эффективное программирование TCP/IP
    1004494083.jpg

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

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

    gbg
    @gbg
    Любые ответы на любые вопросы
    Я бы начал с изучения уже имеющихся вариантов (а их не один и не два, а как минимум, десяток), выявления их проблемных мест - с целью в своей версии не наступать на чужие грабли.

    И да, сразу браться за Cortex-a7 - это смелый шаг. Лучше бы начать с чего попроще и понизкочастотней - с AVR, PIC16 или STM8.
    Ответ написан
    1 комментарий
  • Почему неправильно работает цикл(язык С)?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    В буфере остается лишний 'Enter', далее срабатывает
    case '\n': case ' ':
            break;
    и вы оказываетесь снова на приглашении ввести код.
    Можете убедиться, дописав какое-нибудь сообщение перед break в этом case.
    Ответ написан
  • Как подключать с помощью директивы include?

    @hiloader
    Ваша проблема в том, что вы не компилируете и не линкуете модуль foo.cpp в свое приложение.
    add_executable(main main.cpp foo.cpp);
    Ответ написан
    5 комментариев
  • Как задать данные из некого конфига в скрипт?

    3vi1_0n3
    @3vi1_0n3
    В конфиге (script.cfg):
    Param1=Value1
    Param2=Value2


    В скрипте на баше:
    . script.cfg
    Ответ написан
    Комментировать
  • Как поменять время на freebsd сервере?

    fornit1917
    @fornit1917
    Актуальный tzdata надо собрать, в котором учтено, что у нас теперь зимнее время. itadept.ru/freebsd-timezone-update
    Ответ написан
    Комментировать
  • Что выведется на экран после выполнения этого фрагмента программы?

    mva
    @mva
    CEO, CTO, Lua/Gentoo/IPv6 Pioneer
    Не согласен с предыдущим оратором.
    Потому как вывод зависит от "ввода" :) Т.е от того, в какой кодировке слово "слово" записано в исходнике. Потому что, если это двухбайтная кодировка (юникод), то будет скопировано (следовательно, и выведено) только три БАЙТА (но не символа). Таким образом, это будет "с" и половинка от "л" (которая превратится в replacement символ) :)
    Ответ написан
    2 комментария
  • Как организовать динамический символьный массив в с++?

    @Espleth
    Можете использовать, как написали выше, векторы.
    Выглядит это так:
    #include <vector> //понадобится include
    vector<char> arr; //объявляем его. длину вводить не обязательно
    char c;
    cin >> c;
    arr.push_back(c); //вводим элементы
    int length = arr.size(); //количество символов

    Дальше работаем как с обычным массивом.
    Ответ написан
    2 комментария
  • Как настроить с нуля PXE-установку Linux?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    Ничего сложного, только описывать долго, постараюсь кратко с примерами.

    В конфиг DHCP добавляем настройку типа:
    #PXE boot for Server
    subnet XXX.XXX.6.0 netmask 255.255.255.XXX {
         range XXX.XXX.6.20 XXX.XXX.6.254;
         option routers XXX.XXX.6.1;
         option subnet-mask 255.255.255.XXX;
         option domain-name-servers  8.8.8.8;
            next-server XXX.XXX.6.10;  # TFTP server address
            filename "pxelinux.0";   # PXE boot loader filename
    }

    Ключевое это строки с передачей IP для сервера TFTP и имя файла загрузчика.

    Делаем каталог для будущих образов
    mkdir -p /usr/tftpboot/images
    mkdir /usr/tftpboot/pxelinux.cfg


    Устанавливаем tftp-hpa (легко найти для любой системы)
    В конфиге ставим флаги:
    "-p -s /usr/tftpboot -B 1024 --ipv4"

    Скачиваем свежий syslinux (например https://www.kernel.org/pub/linux/utils/boot/syslin...
    Свежие версии всегда можно найти тут www.syslinux.org/wiki/index.php/The_Syslinux_Project

    Разархивируем
    tar tar xjf syslinux-4.04.tar.bz2 -C /tmp
    копируем в /usr/tftpboot/ следующие файлы:
    chain.c32
    ldlinux.c32
    libcom32.c32
    libutil.c32
    memdisk
    menu.c32
    poweroff.c32
    pxelinux.0
    pxelinux.cfg
    reboot.c32
    vesamenu.c32


    Так же если планируем использовать кириллицу в меню скачаем шрифты, например эти
    ftp://ftp.itrc.hp.com/applications/experteventadmi...
    Кодировка меню должна быть в CP866 он же Russian(DOS)
    сконвертировать из koi8-r (тандартная кирилическая для фри) можно командой.
    iconv -f koi8-r -t CP866 defaultKoi8 -o default

    создаем папку с образами
    mkdir images
    В ней подпапки с нужными системами, в каждую подпапку кидаем нужные для загрузки систем файлы, вот пару примеров:

    Установка FreeBSD
    Скачиваем образы
    x32
    fetch mfsbsd.vx.sk/files/images/i386/9/mfsbsd-9.1-RELEAS...
    x64
    fetch mfsbsd.vx.sk/files/images/amd64/9/mfsbsd-9.1-RELEA...

    Установка Debian 7
    x32
    fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...
    fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...
    x64
    fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...
    fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...

    Установка CentOS
    x32
    fetch mirror.mirohost.net/centos/6.4/os/i386/images/pxeb...
    fetch mirror.mirohost.net/centos/6.4/os/i386/images/pxeb...
    x64
    fetch mirror.mirohost.net/centos/6.4/os/x86_64/images/px...
    fetch mirror.mirohost.net/centos/6.4/os/x86_64/images/px...

    Установка Kali
    x32
    fetch repo.kali.org/kali/dists/kali/main/installer-i386/...
    fetch repo.kali.org/kali/dists/kali/main/installer-i386/...
    x64
    fetch repo.kali.org/kali/dists/kali/main/installer-amd64...
    fetch repo.kali.org/kali/dists/kali/main/installer-amd64...

    Далее правим фаил конфига загрузчика:
    /usr/tftpboot/pxelinux.cfg/default (Ну или с привязкой к конкретным сервакам, тогда не default)
    Вот пример, пути править на свои:
    ui vesamenu.c32
    PROMPT 0
    MENU WIDTH 77
    MENU MARGIN 10
    MENU PASSWORDMARGIN 3
    MENU ROWS 12
    MENU TABMSGROW 18
    MENU CMDLINEROW 18
    MENU ENDROW 24
    MENU PASSWORDROW 11
    MENU TIMEOUTROW 60
    MENU AUTOBOOT Starting Local System in # seconds
    
    MENU PASSPROMPT Enter Password
    
    NOESCAPE 0
    ALLOWOPTIONS 0
    
    MENU COLOR SCREEN 44;30 #00FFFFFF #00000000
    MENU COLOR BORDER 44;30 #FFFFFFFF #FF000000
    MENU COLOR TITLE 1;44;30 #FFFFFFFF #FF000000
    
    MENU COLOR SCROLLBAR 44;30
    
    MENU COLOR HOTKEY 44;30 #FFFFFF00 #FF000000
    MENU COLOR UNSEL 44;30 #FFFFFFFF #FF000000
    MENU COLOR HOTSEL 1;30 #FFFFFFFF #FF333333
    MENU COLOR SEL 7;44;30 #FFFFFF00 #FF333333
    
    MENU COLOR CMDMARK 44;30
    MENU COLOR CMDLINE 44;30
    MENU COLOR TABMSG 44;30
    MENU COLOR DISABLED 44;30
    MENU COLOR HELP 44;30
    
    MENU COLOR PWDBORDER 44;30 #FF187CCA #FFFFFFFF
    MENU COLOR PWDHEADER 1;44;30 #FF187CCA #FFFFFFFF
    MENU COLOR PWDENTRY 5;44;30 #FF187CCA #FFFFFFFF
    
    menu background background.jpg
    FONT pxelinux.cfg/Cyr_a8x16.psf
    menu title RealWeb PXE boot menu (c)Rico-X
    
    LABEL bootlocal
       menu label ^Загрузка с локального диска
       kernel chain.c32
       append hd0 0
       timeout 150
     TEXT HELP
    Загрузка с первого локального жесткого диска,
    произойдет автоматически по ситечении таймера.
     ENDTEXT
    
    menu begin
    menu title FreeBSD 9.1
    
    label FreeBSD91p2x64
      menu label Установить FreeBSD-9.1 x64
      kernel memdisk
      initrd images/mfsbsd/mfsbsd-9.1-RELEASE-p2-amd64.img raw
     TEXT HELP
    После запуска параметры входа:
    имя root пароль mfsroot
    Для начала установки FreeBSD введите bsdinstall
     ENDTEXT
    
    label FreeBSD91p2x32
      menu label Установить FreeBSD-9.1 x32
      kernel memdisk
      initrd images/mfsbsd/mfsbsd-9.1-RELEASE-p2-i386.img raw
     TEXT HELP
    После запуска параметры входа:
    имя root пароль mfsroot
    Для начала установки FreeBSD введите bsdinstall
     ENDTEXT
    
    label < Назад
     menu exit
    
    menu end
    
    menu begin
    menu title Debian
    
    label Debian_7x64
      menu label ^Debian 7 wheezy x86_64 install
      kernel images/debian/linux7_64
      append priority=low vga=788 initrd=images/debian/initrd7_64.gz --
      TEXT HELP
    Устанавливает Debian 7 64 в ручном режиме.
      ENDTEXT
    
    label Debian_7x32
      menu label ^Debian 7 wheezy i386 install
      kernel images/debian/linux7_386
      append priority=low vga=788 initrd=images/debian/initrd7_386.gz --
      TEXT HELP
    Устанавливает Debian 7 32 в ручном режиме.
      ENDTEXT
    
    label < Назад
     menu exit
    
    menu end
    
    menu begin
    menu title CentOS
    
    label CentOS_6.4_x86_64
      menu label ^CentOS 6.4 x86_64 install
      kernel images/centos/amd64/vmlinuz
     APPEND initrd=images/centos/amd64/initrd.img method=http://mirror.mirohost.net/centos/6/os/x86_64/ devfs=nomount ksdevice=link ramdisk_size=100000
      TEXT HELP
    Устанавливает CentOS 6.4 x64 в ручном режиме.
    Для установки уиспользуется http://mirror.mirohost.net/centos/6/os/x86_64/
      ENDTEXT
    
    label CentOS_6.4_i386
      menu label ^CentOS 6.4 i386 install
      kernel images/centos/i386/vmlinuz
      APPEND initrd=images/centos/i386/initrd.img method=http://mirror.mirohost.net/centos/6/os/i386/ devfs=nomount ksdevice=link ramdisk_size=100000
      TEXT HELP
    Устанавливает CentOS 6.4 i386 в ручном режиме.
    Для установки уиспользуется http://mirror.mirohost.net/centos/6/os/i386/
      ENDTEXT
    
    label < Назад
     menu exit
    
    menu end
    
    #label Centos6_64
    #MENU LABEL CentOS 6 amd64
    # KERNEL /memdisk
    # APPEND iso
    # INITRD images/centos/CentOS-6.4-x86_64-netinstall.iso
    
    LABEL ProxMox
    MENU LABEL ProxMox3 install
        KERNEL images/proxmox/linux26
    #    APPEND ramdisk_size=102400 vga=791 video=vesafb:ywrap,mtrr splash=verbose url=http://195.114.6.10/images/proxmox/initrd.iso.img
        APPEND ramdisk_size=524288 vga=791 video=vesafb:ywrap,mtrr splash=verbose
        INITRD images/proxmox/initrd.iso.img
    
    menu begin
    menu title ^Kali ^Linux
    
    label KaliLinux_x64
      menu label ^Kali Linux x86_64
      kernel images/kalilinux/amd64/linux
      append priority=low vga=788 initrd=images/kalilinux/amd64/initrd.gz --
      TEXT HELP
    Дистрибьютив для пинтестирования,
    cодержит различные инструменты для проведения тестов.
    Русская документация http://ru.docs.kali.org/
      ENDTEXT
    
    label KaliLinux_x32
      menu label ^Kali Linux i386
      kernel images/kalilinux/i386/linux
      append priority=low vga=788 initrd=images/kalilinux/i386/initrd.gz --
      TEXT HELP
    Дистрибьютив для пинтестирования,
    cодержит различные инструменты для проведения тестов.
    Pусская документация http://ru.docs.kali.org/
      ENDTEXT
    
    label < Назад
     menu exit
    
    menu end
    
    LABEL Pmagic
    LINUX images/pmagic/bzImage
    append noapic initrd=images/pmagic/initrd.img root=/dev/ram0 init=/linuxrc ramdisk_size=100000
      TEXT HELP
    LiveCD дистрибьютив для восстановления и проверки систем.
      ENDTEXT
    
    label reboot
      menu label Reboot
      kernel reboot.c32
      TEXT HELP
    Перезагрузить компьютер
      ENDTEXT
    
    LABEL poweroff
     MENU LABEL Power off
     KERNEL poweroff.c32
      TEXT HELP
    Выключить компьютер
      ENDTEXT


    Для загрузки windows нужно использовать специально собранный образ WinPE, который будет монтировать нужные образы с сетевой шары, но описание сборки вменяемого образа займет еще страниц 5 и мне лень уже печатать.
    Ответ написан
    2 комментария
  • В чем ошибка при вычислении суммы последовательности чисел?

    @OvLab
    Судя по тому, что "int x;" должно быть "scanf("%d", &x);". Произведение будет всегда равно нулю, так как на него будет сначала умножаться, а уже потом выход из цикла.
    Ответ написан
    Комментировать
  • Как перенести папку /boot в отдельный раздель?

    ilyasus
    @ilyasus
    А скопировать содержимое директории /boot в новый раздел и прописать его в fstab не пробовали?
    Ответ написан
    1 комментарий
  • Как нужно изменить схему управления лампой через Arduino, чтобы транзистор открывался?

    @Catethysis
    IRFZ44N — хороший транзистор, но может быть ему недостаточно вашего напряжения, а 3.3 вольта уж точно мало. Возьмите какой-нибудь из серии IRL, я раньше часто использовал IRL2703 или IRL2705.
    Не забывайте смотреть на график №3 в даташитах, да и вообще на сам даташит.

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

    Я не использую ардуино (более того, я ардуинохейтер), но "тривиальная смена analogWrite(pinNumber, HIGH) и analogWrite(pinNumber, LOW) с частотой в 1000 мс" — разве это правильно? По-моему, в этом варианте нужно использовать digitalWrite.

    Дурацкая какая-то схема, что значит "0-60V+" и "0-60V-"? Это явно от недомыслия автора схемы. Вы не могли из-за этого случайно перепутать + и -?

    P.S. почитал сайт ergoz.ru, это просто насилие над мозгом. Нельзя обучаться по таким руководствам, разве что если себя не уважать, весь текст — дословный перевод с английского:
    * изобретение самодельных терминов, например "стягивающий резистор" или "ворота";
    * сплошные кальки с английского (например, "Arduino действительно пульсирует от 0 до 5V");
    * неверные объяснения процессов. "обязательно убедитесь, что подключаете диод правильно <...> иначе толку от него будет ноль, и может сделать даже хуже." Человек вообще не понимает о чём пишет.

    Найдите нормальный обучающий сайт, а лучше выбросьте эту ардуину в мусорное ведро.
    Ответ написан
    3 комментария
  • Как написать скрипт, который проконтролирует себя на предмет зависания/долгого выполнения?

    merryjane
    @merryjane
    Системный администратор
    Например на bash: скрипт watchdog раз в минуту запускается по крону и проверяет в процессах (ps aux + grep) мониторимый скрипт. Если все ок, выходит . Если не находит, то запускает.
    Если надо чтобы скрипт выполнялся не дольше определенного времени, можно запускаеть его через команду timeout в bash. Тогда timeout завершит исполнение скрипта по истечению указанного ему времени.
    Ответ написан
    8 комментариев
  • Как сделать нагревательный элемент из стекла?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Похоже, с физикой не просто плохо, а вообще - никак.

    По поводу того, что стекло - диэлектрик, и пропустить через него ток не выйдет, уже сказали. Но даже если пропустить его через какой-нибудь проводник (желательно, с большим удельным сопротивлением), наклеенный, обмотанный или просто приложенный к этому стеклу, то и тогда ответить на вопрос про 70° невозможно.

    Запомните такую вещь: мощность в 1 Вт, это, грубо говоря, возможность нагреть 1 грамм воды на 14° за 1 минуту.

    Однако, это не означает, что за следующую минуту можно нагреть ту же воду на следующие 14° и так далее, т.к. по мере нагрева, вода начинает отдавать тепло окружающей среде. С какой скоростью - зависит от площади всей конструкции, теплопроводности среды и разности температур. (Это - если совсем грубо, без учета инфракрасного излучения, возможного закипания воды и т.д.)

    Представьте себе дырявую бочку, к которой подключили шланг от водопровода. Давление воды в кране и начальный уровень воды в бочке известны, но сказать, достигнет ли (и если да, то через какое время) уровень воды в бочке 70см, невозможно, не учитывая всех дырок, через которые она будет выливаться. Ваши 1,68 Вт - это (условно) давление воды* в водопроводе. А все остальное - увы - неизвестно :)

    * - вообще-то, давление воды, это, на самом деле напряжение (В), а мощность (Вт) - это сколько воды сможет вылиться из крана, что, в свою очередь, зависит от диаметра трубы, т.е. сопротивления (Ом). Но для смысла задачи такое "упрощение" вполне приемлемо :)
    Ответ написан
    Комментировать