• Изучение С++ и STL. Какую литературу читать?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    C++. Стандартная библиотека. Николай Джосъютис. на озоне. Очень рекомендую, но читается весьма тяжело. Чтобы материал закреплялся чаще пропускайте прочитанное из этой книги через свои пальцы. Другими словами ЧАЩЕ пишите код
    Ответ написан
    Комментировать
  • Какую выбрать test managment систему?

    EvilsInterrupt
    @EvilsInterrupt Автор вопроса
    System programming, Reversing Engineering, C++
    Спасибо за Ваш ответ!
    п.1 По поводу OnTestPad , я его смотрел в свое время, но увидев в примерах что нету Pass/Fail и отмел сразу же ) К примеру testpad-outline-editor. Имею ввиду зеленый/красный прямо в списке, чтобы можно было сразу же понять какой не пройден без просмотра детализации кейса
    п.2 Про Zephyr. У меня нету четкого понимания как им пользоваться! Действительно ли там можно отметить Pass/Fail? Я не увидел важной для меня строчки: Версия плана и возможности ссылки на него.

    А чем пользуетесь Вы?
    Ответ написан
  • Исполнение скомпилированной программы в python-скрипте

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Вот куски кода из моего скрипта для Python 3.3:
    def _run_process(self, args):
    		proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    		stdoutBin = proc.stdout.read()
    		stderrBin = proc.stderr.read()
    		proc.stdout.close()
    		proc.stderr.close()
    		proc.wait()
    		self._toolResult['retcode'] = proc.returncode
    		self._toolResult['stdout'] = stdoutBin.decode('ascii')
    		self._toolResult['stderr'] = stderrBin.decode('ascii')
    Ответ написан
    Комментировать
  • Какие могут быть практические рекомендации по переезду разработчика на постоянную работу из региона в Москву?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Тут все как в переходе на FreeBSD или Linux. Да, просто берешь и переходишь.

    Я в 2007-м переехал так из глубинки(Татарстан):
    1) На старте было 27.000 руб
    2) Нашел через интернет человека которым был нужен программист за 35. 000 руб в в то время (Декабрь 2007)
    3) По чистой случайности именно он и предложил место для жилья. За 10.000 руб. в месяц.

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

    В Москве ща можно найти, уверенно причем, 1-комн квартиру без хозяев за 25 и того с тебя будет 12.5 в месяц. Я к тому что нужно будет поискать компаньона чтобы на двоих платить! Ну на проезд в метро 1200 это 60 поездок, где-то 1.000 интернет и где-то 5-6.000 руб на покушать. И того готовь 12.5 + 1.200 + 1.000 + 6.000 руб. это из расчета на месяц, но лучше накопи 40-50 чтобы на 2 месяца уверенным быть.

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

    Да. По опыту скажу, первые 5-6 месяцев всех "понаехали" тянет обратно домой. Поэтому будь готов психологически, что придется окрепнуть морально ;)

    Также, забыл сказать, если переедешь, первое время билет не важно какой должен быть с собою. В течении 90 дней любой билет ЖД-поезда будет служить тебе временной регистрацией. Другими словами, если домой не поехал, а 90 дней проходят, иди и купи за 500-600 до какого-нибудь Владимира главное из него до Москвы, а в кассе на вопрос: "А туда как?", так и отвечай что кто-нибудь докинет, походу дела придумаешь.
    Ответ написан
  • Как определить вид хеша?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Ув. Автор, то что Вы спрашиваете это из разряда "как получилась цифра 5?" может быть умножением 1 на 5, а может быть сложение 4 + 1, а может быть делением 10 на 2. Вы бы точнее сформулировали Вашу проблему
    Ответ написан
    2 комментария
  • Как правильно выносить код в разные файлы?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    А для чего нужно разбивать на несколько DLL ? Может просто переоформить код,т.е провести рефакторинг и оставить все как есть в рамках одной DLL?

    Я бы Вам посоветовал Пока "жить" в рамках одной DLL и провести рефакторинг, тогда внешняя программа что использует вашу DLL послужит хорошим тестовым стендом и провести проверочное тестирование после рефакторинга будет значительно проще! Вторым этапом, если Вы все же решите разбить на несколько DLL Вам будет значительно проще,т.к. понятный код и он протестирован!

    Разбивается путем мышления и задавание себе вопросов.
    Каждый модуль обязан отвечать утвердительно на вопрос "Он действительно решает только одну задачу?". При этом надо понимать не примитивные задачи "чтение из файла" или "подсчитать энтропию", под "одной задачей" понимает один пункт взятый с уровня абстракции.

    Пример:
    Уровень 1: Чтение настроек
    Под-уровень 1: Формирование имени файла с настройками
    Под-уровень 2: Открытие и чтение из файла с настойками
    Под-уровень 3: Задание глобального объекта конфигуратор соглассно прочитанным настройками
    и т.д. и т.п.

    В любом случае идеальных методик по разбиению нет! Вас никто не научит программировать, это процесс итеративный, сегодня лучше чем вчера, а завтра будет еще лучше чем сегодня ;)
    Ответ написан
    Комментировать
  • Перспективы C++ разработчика

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Узнавайте что конкретно Вы хотите! Узнавайте это ни у кого-нибудь а задавая вопросы самому себе! Это как спросить у админа : "А стоит ли изучать security level при использовании FreeBSD?" ответ админа прост до безумия: "А почему возник такой вопрос?". Вот и Ваши про стоит или нет! Всегда нужно отталкиваться от чего-то конкретного! Некоторые думают что так они заработаю кучу бабла, а кто-то думает что он засядет и напишет лучшую программу мира и получит "перфект и уважуху", кто-то еще что-то думает. Определитесь точнее Что именно Вы хотите получить и к чему именно лежит душа?
    Ответ написан
    Комментировать
  • Как вы структурируете свой процесс обучения?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Не скажу что гуру. Наоборот, мне есть чему научиться. Однако заметил, что чем больше практики, а не чтения книг, тем больше усваивается материала. Моя рекомендация проста: "Пусть любое знание, которое Вы изучаете попадает в Ваш мозг через пальцы, т.е. попытки программирования с применением того что еще только только изучаете". Практику можно взять откуда угодно. Рефакторинг, ответ на вопрос на форуме, написание новой тулзы для себя или друга или просто незнакомого человека в интернет. Если Вам что-то нужно, то беритесь и делайте, а рядом кладите с собою справочники и книги по тому что Вы пытаетесь применить. Да, это не последовательное изучение. Но минус последовательного в том, что Ваш мозг может забыть уйму того что освоил до момента практического применения. Но когда Вы применяет, пусть даже с ошибками или не так концептуально как стоило бы, то Вы получаете реальные и боевые навыки
    Ответ написан
    Комментировать
  • Что сначала начать изучать, язык С или сразу взяться за С++?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Начните с того к чему лежит душа и при этом не понятно почему к этому что-то лежит душа!
    Ответ написан
    Комментировать
  • Какие книги читать и изучать, чтобы стать настоящим программистом, а не кодером?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    На мой взгляд Ничего специально читать не надо! Программист характеризуется не знанием большого количества технологий и языков, а умением разобраться и решить за приемлемый срок. Очень часто бизнес ставит новые задачи и на скрам-митингах идут обсуждения как бы решить очередную задачу и кому лучше поручить. Так вот, как правило кто-то справляется быстрее, а кто-то медленнее. Все дело в том, что тот кто справляется быстрее зачастую знает не больше чем второй, просто он имеет своего рода универсальный подход к решению задач. Мой Вам совет: развивайте этот самый универсальный подход. Учитесь самому Важному навыку программиста "уметь решать задачи". Разные люди по разному подходят к этому! На страницах одной из классических книг "Искуство программирования под Unix" Роб Пайк сказал про своего коллегку Кернигана "Будучи хорошим программистом я с удивлением обнаружил что очень многому научился у него! Очень часто там где казалось что без отладчика не обойтись ему удавалось выяснить причину ошибки без отладки". Это один из примеров того каким должен программер, а их этих примеров массы!
    Ответ написан
  • С чего лучше начать изучение языка С ?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    А для чего Вам изучать С, если Вы точно знаете что перейдете на жабу или на плюсы?
    Ответ написан
    Комментировать
  • Прошу пояснить когда нужно писать python-модуль на чистом си, вместо использования ctypes?

    EvilsInterrupt
    @EvilsInterrupt Автор вопроса
    System programming, Reversing Engineering, C++
    Да, именно про ctypes задал вопрос.

    Я отлично осведомлен о наличии функций на Py_*.

    Попытаюсь другими словами. Когда нам надо что-то использовать, то что недоступно в питоне. К примеру большой код библиотеки написанной на C++ силами компании где работаем, то мы можем это сделать двумя способами:
    1) Написать чистый модуль с использованием языка программирования С
    2) Написать dll, где функции будут либо по cdecl, либо по stdcall, а далее написать модуль на Python с использованием модуля ctypes

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

    Вот и возникает вопрос: Приведите пример ситуации когда второй способ либо не возможен или слишком затруднителен и поэтому нужно использовать первый.

    Надеюсь сейчас понятней вопрос.

    P.S.:
    Минусовать не зачем! Если не поняли вопроса, задайте уточняющий. В противном случае подобное поведение ставит Вас на уровень придурка. Мы все чего-то можем не знать и это вполне естественно, для этого и существует возможность общения с другими специалистами.
    Ответ написан
  • С++. Создание и инициализация произвольного std контейнера через template?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1) Или мне кажется или на самом деле вы пытаетесь сделать контейнеро-независимый код? Если да, то выбросьте эту затею из головы
    2) Как-то не по-английски: «ContainerMake». Мои варианты 1) ContainerMaker или 2) makeContainer
    Ответ написан
    5 комментариев
  • Как познать C++?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    На мой взгляд автору надо найти в круге своих знакомых того кто очень хорошо программирует на С++. Как правило если этот гуру умеет хорошо и лаконично высказать свою мысль, то и посоветовать может то что действительно имеет ценность! Ведь не даром же говорят: «Самый лучший дистрибутив Linux тот, который стоит у вашего ближайшего знакомого шарящего в нем».
    Среди бывших и текущих коллег у меня есть довольно серьезные знатоки С++, читая код которых уже учишься многому без каких-либо книг. А если при этом и вопрос спрашиваешь, то получаешь достаточно серьезное и обоснованное мнение.

    Магия: Чтение кода написанный хорошим программером + общение + непрерывная практика.
    Ответ написан
    Комментировать
  • Как бороться с вымогателями, шифрующими документы?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Увы. Но Антивирусная сторона это «догоняющая» сторона. Она не может лечить от того что еще нету. Она конечно пытается предсказать путем выявления общих черт, но эта эвристика ломается путем вставки любой нестандартной логики, а вирус-мейкеры это умеют.
    Как уже писали: своевременный бэкап это самое верное средство спасения. Более-того, если пользователь при хорошей машинке имеет возможность поставить VirtualBox и поставить туда систему, которую ему бэкапить куда проще!
    Ответ написан
  • Как понять, что делает один процесс с другим процессом?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Если на скорую руку, то виртуалка(vmware,virtual box) и win32apioverride. Эта тулза ни что иное как API-монитор(халявный и с достаточно серьезным функционалом).Если этот способ не прокатил, то значит виртуалка + WinDbg(для ускорения работы virtualkd). В WinDbg есть расширение являющейся API монитором(!load logexts)
    Ответ написан
    Комментировать
  • Научить племянника (10 лет) программированию

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Уважаемый топик-автор:
    Отстаньте от ребенка! Дайте ему возможность развиваться!!! Да, играя в игрушки, пусть и компьютерные он развивается.

    >>В своё время, мы с одноклассником самостоятельно
    У каждого свои игры! Вам вот нравится «играться» с компами, а кто-то смотрит на Вас и думает «Что этот придурковатый ботаник вообще делает?»

    Мой бывший коллега отличный программист и умеет написать статический распаковщик для почти любого современного протектора исполняемых файлов. Когда просил совета у него по какой-либо ситуации: «Ты что в игры вообще не играл? Это же...». Он достаточно увлеченный играми человек, но при этом является очень сильным системным программистом.

    Резюме: Не лишайте ребенка детства! А если хотите сделать что-то полезное для него, то лучше сводите раз в день в спортивную секцию(бокс, футбол или еще чего-нибудь).
    Ответ написан
    3 комментария
  • Что конкретно может дать программисту знание языка Lisp?

    EvilsInterrupt
    @EvilsInterrupt Автор вопроса
    System programming, Reversing Engineering, C++
    2 Alukardd:
    Согласен, но мой уровень английского позволяет читать только уточняющие данные по API, а не свободное чтение той или иной литературы. Пока читаю перевод на русский язык замечательной книги Practical Common Lisp. Но и там ответа не вижу!
    Ответ написан
  • Систему лингвистического перевода (RU-EN, EN-RU)?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Не совсем понял суть вопроса, но может быть PeEdit чем-то поможет?
    Ответ написан
    Комментировать
  • Какие способы нумерации версий существуют?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Не скажу что гуру, но возможно и мой взгляд на версирование поможет чем-то.

    Версирование ПО помогает:

    1) Маркетингу
    2) Саппорту
    3) Разработчику
    4) Тестировщику

    п.1. Маркетолог может сказать «Ув. пользователь мы выпустили новую мажорную версию, в этой версии продукта много багфиксов и много вкусных фич.».
    п.2. Специалист саппорта может иметь возможность отвечать более предметно на проблемы, к примеру «По лиц.политике одна мажорная версия действительна в течении… месяцев, Ваша версия устарела. Вам стоит связаться с отделом продаж для Обновления» или «Мы не можем воспроизвести Вашу ситуацию какая версия продукта у Вас стоит?»
    п.3 Разработчик увидев задачу в баг-трекере может сказать «Я чего-то не пойму, для stable-ветки комиты есть, баг исправлен. В какой конкретно версии это воспроизводится?»
    п.4. Тестировщик также как и разработчик может утверждать «Я протестировал фикс баги на новой версии…, а также версии… проблема не воспроизводится, баг пофикшен»

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

    Из этого вытекают след. вопросы:
    1) Какова судьба софта проданного покупателю?
    2) Нужно ли хранить историю билдов и версий софта или достаточно иметь один stable-разлив?
    3) Как Вы хотите сообщать тех.специалистам о том что Ваша программа изменилась координально и возможно она не совместима с форматами пред. версий или же она просто получила доп. баг-фиксы и несколько новых фич?
    4) Хотите ли вы говорить покупателям что Вы реально круто поработали и им пора бы заплатить денег Вам чтобы Вашу работу оценить?

    Как правило, видя изменение мажорной версии многие спецы задаются вопросами:
    1) Совместима ли новая версия с прежними форматами?
    2) Изменился ли GUI и нужно ли обновлять инструкции использования в корпоративной документации нашей компании?
    3) Надо ли проводить приемочное испытание?

    И ряд. др. важных вопросов

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