Ответы пользователя по тегу Программирование
  • На какие журналы подписаться С, С++ программисту?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Как Вы видете Ваше руководство заинтересовано в том, чтобы подчиненные развивались. Выбейте из них курсы обучения по тем дырам в знаниях, которые у Вас есть. Если нету, то составьте список того что еще не знаете и можете найти эксперта в этих знаниях и его услуги оплатить. Это куда выгоднее чем покупка журналов с мыслью "Авось что-то полезное будет в них". У Вас же уже есть один очень важный журнал "ГУГЛ" он знает почти все и этого достаточно
    Ответ написан
    4 комментария
  • С чего начать изучать программирование законченному гуманитарию?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Гумманитарию?
    0. Самым главным навыком ЛЮБОГО программиста это "Уметь читать по-английски". Даже использование гугла не так важно, как чтение на Шекспир-Language.
    1. Прочесть самой первой первой книгу, но не про программирование, а про компьютеры. Лучше Эндрю Таненбаума об этом никто не напишет. Читай, читай, читай и пока не вкуришь лучше за программирование не садиться. У любого программиста зашит в коже ответ на вопрос "Какие задачи можно решить с помощью компьютера, а какие невозможно?". Чтобы этот ответ был понятен нужно знать о том как работает вычислительная система в принципе, хотя бы на "сумбурно"
    2. Затем берите книгу по Python. Язык достаточно дружелюбен к новичкам и быстрый старт обеспечен. Решайте свои задачи, не заботясь о качестве. Просто решайте!
    3. После получения конкретного опыта решения задач. Читайте Стива МакКонела про его Совершенный код.
    4. Снова решайте задачи, но уже пытайтесь не только свои, но и вливаться в проекты с открытым исходным кодом
    5. Далее про модульное тестирование, рефакторинг и др.
    6. Только после того как в принципе будет понятно, что такое разработка нужно углубляться в дебри. В дебри под названием : алгоритмы и структуры данных. Изучать про сложности.

    P.S.:
    Не слушайте "умников" про алгоритмы сразу. Почему? Потому что пока у Вас не загорятся глаза "Да, черт побери! Это точно мое" не имеет смысла зарываться. Только когда прет и горят глаза, только в таком состоянии можно одолеть груду сложных и запутанных кодов.

    #define true false // счастливой ночи брат
    Ответ написан
    6 комментариев
  • Где найти сообщество по интересам?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Frosty 87: А Вы не пробовали приобщить хоть кого-то из своего окружения к чему-то к чему хотели бы приобщить? Можно же научить, рассказать, попробовать вместе запилить! То что кто-то не программист это не плохо, может он хороший организатор и тогда "привет стартап". Может кто-то хочет научиться программированию, но не понимает с какого краю подступиться?

    Но прежде всего нужно спросить себя : "Какое именно сообщество я ищу? Для чего? Чего конкретно мне не хватает?"

    Есть такая поговорка : "Меняйся сам, изменится мир".
    Ответ написан
    Комментировать
  • Как реализовать проверку целостности программы?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Если бы все было так просто, то не было бы столько предолжений защит ПО типа Enigma, Themida и др. Если хотите окунуться с головой в эту область, то рекомендую проследовать на форум Wasm.ru и читать до просветления.

    В целом решение "на коленке":
    1. Подсчитать от куска кода хэш во время накладывания защиты и считать это эталонным хэшем. Подсчитывать в момент выполнения и сравнивать с эталонной.
    2. Во время выполнения получать контекст, брать значения отладочных регистров и xor-ить с кодом. Если кто-то поставил бряк, то значит в отладочном регистре будет значение указателя, тем самым не нулевое значений, то попортит код.
    3. Поиск окон с названием от regmon, ollydbg и др.
    4. Все значимые строковые константы шифровать на этапе защиты и во время работы расшифровывать
    5. Занулять описатели секций, т.е. массив из структур IMAGE_SECTION_HEADER находящийся в PE-заголовке
    6. В заголовке найти DataDirectory[DEBUG_DIR_INDEX] и поставить на область в вашем приложение, в этой области сгенерировать мусор

    Но повторюсь, это "на коленке"
    Ответ написан
    5 комментариев
  • Что такое замещение в ООП?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Возможно Вы об этом:

    class Фигура:
      virtual void нарисоватьСебя() = 0;
    
    class Круг : public Фигура:
      virtual void нарисоватьСебя() {
      // код рисующий круг
      }
    
    class Квадрат : public Фигура:
      virtual void нарисоватьСебя() {
      // код рисующий квадрат
      }


    У Вас есть множество фигур, но каждая выглядит по своему. Тем не менее каждую можно нарисовать. Получается, что изучая множество объектов, вы выделяете общие для всех свойства и действия и формируете "Абстракцию", в данном примере "Фигура". Когда Вы обобщили и сформулировали абстракцию в коде, настает время описать детали о Круге и Квадрате. Когда Вы пишите нарисоватьСебя() для квадрата , то Вы замещаете код написанный в "Фигуре". Таким образом Вы переходите от общего к частному.
    Ответ написан
    2 комментария
  • Зачем у программиста на столе второй монитор установлен вертикально?

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

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. Спать больше. Не менее 7 часов в сутки. Т.е. ложиться не позже 1:00 и вставать не раньше 8:00
    2. За каждую сделанную задачу надо себя вознаграждать из списка "действия и вещи что меня радуют", к примеру любите кушать мороженное записывайте в список, любите в ванной лежать, туда же и т.д. и т.п. Как только начинаете делать задачу, сразу договоритесь с самим собою: "как завершу задачу, сразу "возьму пряник""
    3. Чаще смотреть позитивные вещи, не связанные с работой воообще!!!
    4. Учиться по мимо работы и другим полезным вещам, к примеру тайм-менджменту, улучшение английского и др.
    5. По утрам отжиматься, зарядку

    вообщем много чего!
    Ответ написан
    2 комментария
  • Что должно уметь удобное python приложение для бекапа веб-приложений?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    А Вы спросите себя: "Если я завтра приду и сервер где работало приложение вдруг приказал долго жить, то какие данные мне нужны для БЫСТРОГО восстановление работы приложения?". Как только сможете перечислить, сразу же поймете ответ на свой вопрос ;)
    Ответ написан
    1 комментарий
  • Какие существуют современные аналоги "Искусства программирования" Дональда Кнута?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Осилите Кнута, осилите в дальнейшем все что ни попадется на глаза. Уверяю, строчка в резюме "Осилил Кнута" может сослужить Вам очень хорошую службу!
    Ответ написан
    5 комментариев
  • Чем лучше всего визуализировать граф в С++/CLI?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Оформить в виде консольной утиллиты, выводить в STDOUT и подавать в python-Скрипт использующий matplotlib. К примеру
    Ответ написан
    Комментировать
  • Что такое машина Тьюринга и какое отношение она имеет к программированию?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Странно что Вы вообще к компьютеру не докапываетесь. Ведь по сути любое вычислительное устройство это 2 инструкции. Одна из них NOT , а другая либо AND либо OR. Вот на этих двух NAND или NOR строится ВСЕ вычислительные устройства!
    Ответ написан
    4 комментария
  • Какие знания и умения будут полезны для работы с чужим кодом?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Не скажу, что очень большой знаток и умелец.
    Поясню только свой опыт.
    1. Пока работает код как надо - НЕ ТРОГАЙ его. Другими словами не обязательно что-то изменять. Вместо изменения можно написать обертки, другими словами вспомнить что существует паттерн проектирования Фасад.
    2. Если же трогать нужно и в унаследованном коде бага - НАПИШИТЕ ТЕСТЫ. Не стоит на себя надеяться. Не надо из себя строить рэмбо. Подумайте как вы проверите результат своей работы после изменения? Другими словами, починив одно легко сломать что-то другое.
    3. п.1 и п.2 со временем дают набор оберток и набор тестов, которые позволят Вам планировать работы по рефакторингу. Да, его надо бросаться делать не сразу, а только после серьезного набора тестов и оберток из вами написанного кода.
    4. Чаще спрашивайте у заказчика о том, все ли фичи нужны или какие-то уже не приносят дохода? Другими словами : нет кода - нет багов и нет проблем с поддержкой!
    Ответ написан
    Комментировать
  • Какую библиотеку C/C++ выбрать для рисования графиков функции?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Tufitko
    Вам уже Армянское Радио советовал про Unix-way. Можно поступить немножко по-другому. Вы пишите консольную программу, печатающую на stdout в виде csv-формата. Далее с помощью python-а и библиотеки к нему matplotlib.org/ получаете более дешевый в разработке и в тоже время кросс-платформенный вариант ;)
    Ответ написан
    Комментировать
  • Математика и программирование - так ли это нужно?

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

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Если Вы воообще никогда ничего не программировали. Даже for, while мудренно для Вас, то рекомендую освоить книгу:
    "Освойте самостоятельно C++ за 21 день", Дж. Либерти.

    Послее надо будет "освежить" знания и поставить мышление на "программерские рельсы" и для этого рекомендую прочесть Лафоре, "Объектно ориентированное Программирование в C++".

    После этих двух книг рекомендую прочесть:
    Вайсфельд М. , "Объектно-ориентированное мышление", Библиотека программиста, 2014

    На мой взгляд. Если Вы будете знать C++ в остальных языках разобраться точно сможете!
    Ответ написан
    4 комментария
  • Блоговедение или программирование?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Денис Каракчиев Могу ошибаться, поэтому выскажу всего лишь свое мнение, которое может быть ошибочным.

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

    Блог вести надо, по след. причинами:
    1. Помогаете другим
    2. Получаете критику "Да ктож так пишет-то? Надо ...." и через аргументированную критику учитесь тому, что в книгах едва ли пишут!
    3. Пиаритесь. Кто-то решив свою задачу, может порекомендовать Вас своему руководству в качестве нового сотрудника "А давайте-ка попробуем его в нашу компанию позвать?"
    4. Это Ваш собственный справочник. Написанный тем человеком, который лучше всех Вас понимает! И тем языком и речевыми оборотами, которые Вы лучше понимаете. При этом следует учесть "Вы сейчас" != "Вы вчера".

    Программирование это процесс мышления, очень часто приходится принимать различные решения . Примеры: "А что если если я объект std::string передам в виде... ?" или "Насколько Важно здесь поставить ... ?" и др. Все это может быть основано на Вашем же опыте изложенном в блоге! Отсюда п.5.

    5. Блог это Ваш описанный опыт.
    Ответ написан
    1 комментарий
  • Куда разместить методы?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Следуйте принципу наименьшего удивления. Другими словами, найдите 3-4 программистов, которых Вы чье мнение цените и уважаете и спросите "Где бы ты искал в проекте класса описывающий приложение , но чье состояние читается из базы данных?". Если у 2 программеров мнение будет похожим, вероятно и Вы в будущем будете искать там же!
    А вообще оба метода, на мой взгляд, относятся к уровню представления данных, т.е. в паттерне MVC это часть "Модель". Мне кажется следует поступить так:
    * Эти два метода нужно расположить в одном классе. Но не в Возможные
    * Сообразить интерфейс с этими двумя методами, от него породить потомок , имеющийся DB . Это чтобы не привязывать к конкретному месту расположения, вдруг в след раз не DB будет, а Cloud или еще что-то.
    Ответ написан
    Комментировать
  • Как развить мышление для программирования?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Мне кажется у Вас проблема в другом. То что скажу это лишь мое мнение и оно может быть не верным, но тем не менее рекомендую подумать над моими словами.

    Ваша проблема в непонимании того, что Вы хотите достичь?

    Понимаете, есть разные цели: программировать, чтобы решать задачи и программировать, чтобы программы работали еще быстрее. Это абсолютно разные цели!

    Задайте себе как можно больше вопросов и поймите, что на самом деле Вы хотите достичь? Какую конкретно цель Вы преследуете?
    Ответ написан
    Комментировать
  • Какие книги почитать для развития навыков программирования?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Я бы порекомендовал почитать следующее:
    1. Б.Мейер, Почувствуй класс
    2. Стив Макконнелл, Совершенный код
    3. Мартин, Чистый код
    4. Кент Бек, Разработка через тестирование
    5. Фаулер М. Рефакторинг. Улучшение существующего кода
    6. Шаблоны тестирования xUnit. Рефакторинг кода тестов
    Ответ написан
    Комментировать
  • Какую книгу по программированию выбрать?

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