Ответы пользователя по тегу Программирование
  • Что бы вы хотели узнать о D?

    @egorinsk
    Полезен был бы пример реализации на D чего-то полезного, какого-нибудь приложения или игры. Или, был бы полезен хороший обзор имеющихся на этом языке приккладных библиотек. Можно ли к MySQL или Mongo подсоединиться из D?
    Ответ написан
  • Как придти к автоматическому тестированию?

    @egorinsk
    К сожалению, про тестирование и TDD много пишут всякие теоретики и любители написать 3 абстрактных класса ради вычисления факториала. Особенно плохо совместим TDD с активным рефакторингом.

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

    Пример правильного модульного тестирования:

    Например, есть функция решения квадратного. ур: x1, x2 = solveQuadEq(a, b, c );
    Пишем к ней тест:

    a, b, с = 1, 2, 3;
    x1, x2 = solveQuadEq(a, b, c);
    test::assertFloatEqual(a * x1 * x1 + b * x1 + c);
    test::assertFloatEqual(a * x2 * x2 + b * x2 + c);

    (Заметьте, результат проверяется подстановкой корней в уравнение назад, а не решением уравнения). И так несколько раз с разными a, b,c.

    Имеет смысл применять модульное тестирование, например, для проверки модуля извлечения номеров телефонов из текста или модуля OCR.

    Тестировать «тонкие» и «глупые» контроллеры и вьюхи — ровно столько же смысла, сколько тестировать работу функции printf(). То есть никакого.

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

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

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

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

    @egorinsk
    Самая лучшая, подробная и полная книга (я бы сказал, энциклопедия) про программирование — это, несомненно, «искусство программирования для ЭВМ» Дональда Кнута. Не знаю ни одной более качественной и тщательной работы.

    Хотя, у меня все никак не найдется времени ее прочитат хотя бы по диагонали.
    Ответ написан
    1 комментарий
  • Список (база) улиц Москвы и других крупных городов

    @egorinsk
    Есть официальный список под названием КЛАДР, выпускается госструктурами, скачивается бесплатно, БД в формате FoxPro (допотопная досовская СУБД) открывается либо OpenOffice, либо в PHP через какое-то расширение, которого нет под Windows и котрое надо руками компилировать.
    Ответ написан
    Комментировать
  • Замеры производительности программ, функций и модулей - какие handbook`и можно почитать?

    @egorinsk
    Производительность — число выполненных операцией за единицу времени. Берете свою программу, и считаете, за сколько времени она сделает операцию x раз (x должно быть большим для точности измерений), потом делите одно число на другое.

    Почитать для начала можно статью: habrahabr.ru/post/143468/
    Ответ написан
    2 комментария
  • А как вы разделяете важность TODO в коде?

    @egorinsk
    Если у вас так много TODO, может стоит лучше провести неделю закрытия туду вместо их категоризации?
    Ответ написан
    3 комментария
  • Реализация std::vector?

    @egorinsk
    > Интересует больше не сам вектор, а тысячи нюансов, которые возникают при написании большинства контейнеров

    По моему, это описывается в какой-то статье или книжке Бьерна Страуструпа (вот не помню в какой :) ). Именно все эти виды операторов. То, что вы знаете про различия между константным и неконстантным оператором, вселяет надежду, что у вас это получится.

    Также (если вы вдруг не видели). можете почитать известный C++ FAQ, там что-то упоминается про операторы: www.parashift.com/c++-faq-lite/

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

    Что касается «грамотного стиля написания», тут наверно важна в первую очередь понятность, читаемость человеком и правильные имена идентификаторов.
    Ответ написан
    Комментировать
  • Алгоритм работы работы индекса с использованием wildcards?

    @egorinsk
    Что за ИДЕ? Эклипс вроде бы ищет тупо перебором файлов, а если у вас много памяти, эти файлы постепенно оседают в кеше и поиск фактически ведется в памяти.

    Другие ИДЕ могут создавать для этого индексы. Индексы бывают разные. Самый примитивный индекс — когда исходный код разбивается на слова, но он не позволяет искать по кусочкам слов или маске.

    Понятно, что, к примеру, гугловцев такой примитивный подход не устроил. Потому, когда они делали в google code поиск по регулярным выражениям, они придумали свой алгоритм построения индекса: один из вариантов построения триграмного индекса для поиска по регулярным выражениям: swtch.com/~rsc/regexp/regexp4.html Можете почитать, если интересно.
    Ответ написан
    1 комментарий
  • Смена места жительства. Перепрофилирование. Удаленная работа. С чего начать?

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

    Node.js имеет как преимущества, в виде приятного языка в основе, так и недостатки — отсутствие некоторых библиотек.

    Может, вам стоит себя попробовать в программировании игровых продуктов, типа всяких серверных модулей для браузерных игр? Там как раз node.js может пригодиться (хотя Си++/Java конечно гораздо лучше подошли бы). Или вот вам советуют, приложения под айфон/андроид — хороших специалистов мало, а востребованность есть.
    Ответ написан
    3 комментария
  • xdebug бесконечный trace

    @egorinsk
    Напишите, с какими опциями настроен xdebug и каким образом с ним взаимодейтвует IDE. Так трудно сказать. По идее, xdebug можно настроить так, чтобы трейс делалася только при наличии определенного параметра в query string.
    Ответ написан
    Комментировать
  • Какая структура должна быть у расширяемых данных?

    @egorinsk
    Речь о CMS? О чем? Вы куда-то потеряли вводную часть вопроса.
    Ответ написан
  • Помогите отладить автоконвертер видео на bash плиз

    @egorinsk
    Bash-скрипт в 99% случаев должен начинаться с set -e. Странно, что никто не замечает таких вопиющих ошибок.
    Ответ написан
    Комментировать
  • Программа как иерархия папок?

    @egorinsk
    В языках типа Java и так файлы разнесены по директориям. Права доступа можно задавать аннотациями в файлах. Можете к ним написать такую оболочку, но я сомневаюсь, что это имеет какой-то смысл.
    Ответ написан
    Комментировать