Задать вопрос
  • Как выполнить код от имени другого пользователя для Linux?

    SagePtr
    @SagePtr
    Еда - это святое
    Подозреваю, что сделать это можно так, как это делается в разных апачах - форкается процесс, затем у дочернего процесса меняется группа и юзер. Несколько юзеров - несколько форков.
    Ответ написан
    Комментировать
  • Мой exe файл некорректно передаётся, что делать?

    Vindicar
    @Vindicar
    RTFM!
    что значит "текстовый файл передаётся нормально"? Ты первые 2048 байт при приёме выбрасываешь же.
    Ответ написан
    2 комментария
  • Как объединить последовательные числа в диапазоны?

    hint000
    @hint000
    у админа три руки
    для вас и для собственной разминки написал такой однострочник:
    awk 'BEGIN{f=0;}{c=$0;if(f==0){f=1;b=c;a=b};if(c-b>1){if(a==b)print a",";else print a"-"b",";a=c;}b=c;next}END{b=c;if(a==b)print a;else print a"-"b;}' | xargs echo

    если скормить ему ваши числа (вот как у вас, по одному числу в строке), то выводит:
    1-5, 9, 12-14
    Ответ написан
    1 комментарий
  • Почему send позволяет отправлять little-endian данные?

    Понятие big endian и little endian есть у многобайтных типов фиксированной длины (обычно целочисленных) в адресном пространстве. В сети нет адресации данных, поэтому нет понятия big endian и little endian, есть понятие прямого и обратного сетевого порядка байт.
    Функции send/recv оперируют не с многобайтными целыми числами, а с буфером памяти произвольной длины и ничего не знают о том, какие именно данные в этих буферах находятся и о представлении хранящихся в них целочисленных данных, если таковые там есть. Поэтому данные по сети будут отправлены в том порядке, в котором они находятся в адресном пространстве в отправляемом буфере.

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

    P.S. а вообще у вас там лишний бекслеш перед H в текстовой константе.
    Ответ написан
    Комментировать
  • Уязвимости типа переполнение буфера?

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

    Однако, такие приемы работали до того, как появились технологии защиты стека, неисполняемой памяти и рандомизации размещения в адресном пространстве. Сейчас для эксплуатации переполнений стека на практике обычно требуются приемы ROP (return oriented programming), т.е. ваши знания очень сильно устарели.

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

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

    Nipheris
    @Nipheris Куратор тега C++
    Как сделать переход с C++ Builder как можно менее безболезненным!

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

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

    IDE станет для вас лишь одним из инструментов и вас этот вопрос будет волновать в последнюю очередь.
    Ответ написан
    Комментировать
  • Стоит ли пробовать работать удаленно, не имея приличного опыта?

    Atanvar
    @Atanvar
    Frontend developer
    Пробуй, от того что ты попробуешь мир не сломается.
    Ответ написан
    Комментировать
  • Как задать настройки файла vimrc для входа через sudo?

    /etc/vimrc
    /root/.vimrc
    Ответ написан
    Комментировать
  • Как распарсить IP-адрес в bash?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    как то так:
    % echo "192.168.20.10" |awk -F. '{print $4"."$3"."$2"."$1}'
    10.20.168.192
    Ответ написан
    Комментировать
  • Что использовать при разработке графического редактора на С++/Qt?

    bogolt
    @bogolt
    По-моему Qt хороший выбор для подобной программы. И не думаю, что вам имеет смысл отказываться от QGraphicsScene только потому что иначе задача вам кажется слишком простой. Я скорее предположу, что на каком-то этапе работы возможностей QGraphicsScene может не хватить для поставленных задач ( я однажды столкнулся с подобной проблемой, у ее дедушки в Qt3 ), и вот тогда действительно придется весь код писать ручками. Но изобретать себе работу, отказываясь от уже существующих классов - имхо неправильно.
    Поймите меня правильно - научится создавать подобные классы самому - полезное умение. Но если вы вначале научитесь использовать существующие, то затем, когда решитесь создать нечто свое уже будете обладать опытом использования этих классов, а так же примерным пониманием того что в них хорошо, а что не очень.
    На мой взгляд выбранная вами задача не настолько простая как может показаться, хотя это конечно сильно зависит от количества фич которые вы хотите реализовать. Но тем не менее я бы предположил вам вначале создать работающую программу, реализовав таким образом свою цель, а уже потом если сохранится желание переписывать внутренности на собственные графические контейнеры.
    Ответ написан
    Комментировать
  • Что почитать про оперативную память с точки зрения разработчика железа?

    @HallEffect
    Не уверен, что по вашему вопросу, но, возможно, будет полезно Что каждый программист должен знать о памяти
    Ответ написан
    Комментировать
  • Что почитать по алгоритмам решения электрических схем?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Начните отсюда, чтоб проверить, не пропадет ли интерес так же быстро, как и возник: Тыц Тыдыц

    Если не пропадет, смотрите исходники KiCad.
    Ответ написан
    3 комментария
  • Kак сортировать стрoку, которая содержит 0 и 1?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Я, наверное, чего-то недопонял, но почему просто не подсчитать количество 1 и 0 в строке и не вывести потом сразу сначала все 0, а потом 1.
    Ответ написан
    1 комментарий
  • Как убрать insert в терминале OSX?

    Rpsl
    @Rpsl
    Кратко о себе
    man vim -)

    а вообще нажмите ESC, потом вводите :wq и далее ENTER
    Ответ написан
    2 комментария
  • Какие существуют способы защиты стилей CSS?

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

    Торжественно клянусь ничего не красть.

    И еще - если школьник может обойти простейшие способы скрытия кода, то он уже заслуживает уважения. Вы-то конечно учились исключительно открыв стандарт html и читая его, так?
    Ответ написан
    9 комментариев
  • Какие существуют способы защиты стилей CSS?

    opium
    @opium
    Просто люблю качественно работать
    мне кажется мания величия затмила ваш мозг глупейшими проблемами, вместо того чтобы код красиво оформить и выкладывать на гитхаб и делиться им, вы решили его зачем то прятать, просто задумайтесь, что хорошего вы сделали в жизни и почему не выкладываете его на гитхаб?
    Ответ написан
    11 комментариев
  • Какой выбрать дистрибутив линукса "чтоб ездить", а не курить форумы и "допиливать"?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    > экран по win-L лочится через раз, кликаешь на другое окно, ура - залочилось
    Потому что раскладка в другом окне английская. А по русской не лочится, ога. Второй хоткей навесь.

    > намертво и неожиданно виснет, иногда позволяя в течение нескольких секунд поводить липнущим курсором мыши, замена видюшных драйверов не помогла
    Дай ка угадаю - intel hd sandy bridge?

    > прописываем команду в автозапуск, но почему-то она не запускается
    Жму на газ а машина не едет. (то ли не завел, то ли заправить забыл, то ли машины нет, то ли жму на тормоз). Где у вас там автостарт-то? Правильный - /etc/rc.local, еси чо. И там $PATH отличается от того, который у вас в .bashrc прописан. Ну это не говоря о том, что можно написать правильный init-скрипт.

    > тачпадный курсор мыши скачет по экрану как ненормальный
    Чувствительность на скорость движения и длительность касания не снизил? Или помыть забыл?

    > поднять VNC- сервер - проблема, а клиент так и не научился просовывать русские буковки через клипбоард и отваливается каждые пять минут
    apt-get install vino remmina
    Дальше гуетыканием всё заводится.
    Впрочем, если vnc сервер нужен независимый от запущенных иксов (винда и макось без иксов аще так не умеют) - то да, придется написать скрипт в 10 строчек, 1 из которых шабанг, а 7 - запуск нужных приложений.

    > Mint не hibernate-ит систему если батарея пуста, при том даже не пищит: проморгал - грузись с нуля
    всё больше и больше убеждаюсь в том, что у вас толи sandy bridge, то ли ivy bridge

    > Дебиан в упор отказывается видеть мой WiFi, остальные дистрибутивы видят
    Вы наверное в курсе, что в Дебиан из коробки не допускаются несвободные программы и фирмварь (драйвера), подключили репы с несвободным фирмварем и поставили нужный?

    > SL минут пять свопится после пробуждения, после firefox приходится прибивать и запускать заново, скайп на него так и не встал, курение форумов не помогло
    яннп

    Но да, в целом вы правы - проблем в пингвинах полно и сравнение с жигулями правильное. Правда, я бы сравнивал с Subaru impreza wrx или мустангами, которые ездит как говно с завода, но если в них покопаться - то потом на других машинах ездить не станешь.
    Что, впрочем, не отменяет того, что все ваши "проблемы" навскидку решаются примерно за одну минуту, кроме аппаратных проблем с неудачной серией бриджей у Intel, для которых они года два как не могут написать нормальные драйвера под acpi/видео.

    На какие-то странные форумы ходите, господа. В IRC мы в своё время такие проблемы сотнями за день щелкали.
    Ну а самым подходящим дистрибутивом для вас должен стать Ubuntu 12.04 без мерзкого Unity, с православным Gnome Classic + compiz режиме.
    Ответ написан
    7 комментариев
  • Почему происходит утечка памяти?

    @encyclopedist
    Согласно стандарту, порядок вычислений может быть разным, в том числе таким:
    tmp1 = new int(42);
    tmp2 = seed();
    tmp3 = std::shared_ptr<int>(tmp1);
    foo(tmp3, tmp2);

    В таком случае, если seed бросает исключение, возникает утечка памяти.
    Именно для избежания этой проблемы в стандарте предусмотрена вспомогательная функция make_shared. Исправленный вариант вашего кода будет выглядеть так:
    foo(std::make_shared<int>(42), seed());
    Помимо безопасности, также можно получить повышение производительности, поскольку make_shared может сделать одно выделение памяти вместо двух.
    Доп ссылки:
    herbsutter.com/2013/05/29/gotw-89-solution-smart-p...
    stackoverflow.com/questions/20895648/difference-in...

    Update
    Насчёт порядка вычислений стандарт говорит следующее:
    [intro.execution] Paragraph 15:
    When calling a function (whether or not the function is inline), every value computation and side effect associated with any argument expression, or with the postfix expression designating the called function, is sequenced before execution of every expression or statement in the body of the called function. [ Note: Value computations and side effects associated with different argument expressions are unsequenced. — end note ] Every evaluation in the calling function (including other function calls) that is not otherwise specifically sequenced before or after the execution of the body of the called function is indeterminately sequenced with respect to the execution of the called function.

    Таким образом, вычисление этих tmp1 и tmp2 в нашем случае является неупорядоченным (unsequenced).
    Ответ написан
    3 комментария
  • Явное скрытие (hide) функции базового класса в C++

    mmmaaak
    @mmmaaak
    как насчет PIMPL паттерна?
    Ответ написан
    Комментировать