Задать вопрос
  • Нужен ли Вам сервис для поиска битых ссылок на сайте?

    @egorinsk
    Кстати, кому нужен такой сервис бесплатно и сейчас, советую посмотреть на утилиту skipfish от Google. Она не только ищет битые ссылки, но и ищет уязвимости, а также одновременно проводит стресс-тест приложения. Что может быть лучше?
    Ответ написан
    Комментировать
  • Как автоматически (CLI) полностью имитировать сессию пользователя?

    @egorinsk
    С этим беда, все плохо, всюду люди пишут что-то свое, например, на основе Selenium. Если у вас много пользователей, вам проще наладить обратную связь и мониторинг ошибок, пусть они бесплатно вам все тестируют и сообщают о проблемах.
    Ответ написан
    Комментировать
  • Каким должен быть CTO в веб-стартапе?

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

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

    Замечание про новомодные архитектуры крайне важно — 90% разработчиков, получив возможность принимать решения и делать все чистого листа вам таких планов понастроят, что вы за 10 лет все это не реализуете. Если, услышав о вашей идее, у человека загораются глаза, и он начинает вам генерировать поток идей, пожеланий и дополнений — гоните его прочь. Если он разбрасывается баззвордами вроде «а вот здесь мы используем веб-сокеты, локалсторедж и очередь заданий на NoSQL» — гоните его прочь. И, кстати, в ИЕ нормально не работают ни сокеты, ни локалсторедж.

    А, еще вам нужен дизайнер. Никто не захочет платить за пользование некрасивым или неюзабельным сайтом.

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

    Судя по тому, что вы пишете про сложный интерфейс и большую базу данных, вы тоже неверно расставляете приоритеты. У стартапа нет ни времени, ни ресурсов на разработку большой и тщательно спроектированной базы данных и сложных интерфейсов. Представьте, что вашу идею уже вовсю реализуют конкуренты и через месяц запускают бета-версию? Хороший, офанатевший разработчик за месяц в одно лицо сделает работающий прототип чего угодно, на пару с фанатом-дизайнером — еще и красивый прототип.

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

    Более того, сомневаюсь, что ваша идея чего-то стоит. Если это не клон успешного западного сервиса, это, скорее всего, бесперспективно. Каждый раз, когда на Хабре очередной стартап описывает свою «гениальную» идею, хочется закрыть ладонь лицом в жесте отчаяния.

    Если уместно в такой ситуации давать советы, то советую вам оставить вашу затею и заняться производством чего-нибудь другого, например пряничных котиков. Или хороших пирожных — в наши дни так трудно найти вкусное пирожное, с бисквитом в основе, с оригинальной кулинарной идеей, но при этом не перегруженное кремом и сливками, и без шоколада (не люблю шоколад). Мне кажется, это очень перспективная ниша.
    Ответ написан
    4 комментария
  • Баг в IE - вырезаются символы из пароля?

    @egorinsk
    Прокси-сервер/фаерволл/антивирус отключили при тестировании? Часто корпоративные/проприетарные файерволлы нарушают стандарты и режут заголовки только в путь.
    Ответ написан
  • Как перенаправить звук системы в микрофон?

    @egorinsk
    Вы имеете в виду, чтобы воспроизводимый звук появился на микрофонном разъеме? Такие трюки (переназначение) не все карточки позволяют. Или вы хотите записать воспроизводимый звук? Это другая вещь — надо записывать сигнал не со входа, а с выхода микшера.
    Ответ написан
    Комментировать
  • Как сделать скриншот страницы средствами браузера?

    @egorinsk
    В Хроме есть какой-то метод, чтобы получить скриншот страницы. В ИЕ, наверно, нужен ActiveX какой-нибудь.
    Ответ написан
    Комментировать
  • Как придти к автоматическому тестированию?

    @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 комментария
  • Как правильно написать API сервиса?

    @egorinsk
    Дублировать модели нельзя по определению. У вас изменилась структура данных в хранилище (например, в БД), а вы работаете с новой таблицей при помощи старого кода?

    Выход только один — сделать API из как можно более простого и тонкого слоя контроллеров, и при изменении моделей править их. Можно подумать над генерацией АПИ автоматически, например, на основе описания (имя функции АПИ — задействованные модели — передаваемые поля и их преобразование), если это возможно. Из этого же описания можно при особо удачном раскладе генерировать документацию на АПИ.
    Ответ написан
  • Какую литературу по технологиям HTML5, в разрезе разработки многопользовательских браузерных игр, вы могли бы посоветовать?

    @egorinsk
    AppEngine/GWT — имхо, лучший способ разобраться — прочесть мануал от Гугла по этим технологиям. Естественно, для GWT надо знать Java.

    Вообще, мне кажется, что HTML5 — хрень, которая не годится для разработчик массовых сложных браузерных игр. 1) Он не кроссбраузерен, нельзя играть в ИЕ (а у многих офисных сотружников именно ИЕ) 2) Он тормозит. Возьмите какую-нибудь ферму на флеше, с кучей графики и анимаций (которые тормозят даже на флеше) и попробуйте повторить на HTML 5, хорошо если вообще что-то работать будет.
    Ответ написан
    2 комментария
  • Какие есть варианты реализации autocomplete по адресам и местам в россии кроме Google?

    @egorinsk
    Яндекс-карты поддерживает геокодирование.
    Ответ написан
    Комментировать
  • Куда пойти учиться? (заочно, Москва)

    @egorinsk
    Не тратьте время и деньги. Вас ничему полезному не научат, а деньги вы выкинете. Для сисадминов есть свои сертификаты, погуглите, может они вам пригодятся больше. Также, для сисадмина важен список девайсов/систем, с которыми он умеет работать и настраивать. Если вам кажется, что выне растете профессионально на работе, то лучше поменять работу, чем тратиться на бесполезное обучение.
    Ответ написан
    1 комментарий
  • Как победить Wine?

    @egorinsk
    У Wine есть переменная окружения WINEPREFIX (или как-то так), может в ней дело? Не в тот каталог указывает?
    Ответ написан
  • Как ввязаться в большой opensource-проект?

    @egorinsk
    Я советую для изучения Chrome/Chromium. Почему? Потому, что у него грамотно организованный код и есть design documents — описание архитектуры и устройства отдельных компонент. вот, смотрите: www.chromium.org/developers/design-documents/. Также, там применяется много технических хитростей.

    Если вам, к примеру, интересно узнать, как работает композитинг (и аппаратное ускорение рендеринга), вы просто читаете соответствующий диздок и смотрите упомянутые там классы.

    Если вам вообще интересна не какая-то часть продукта, а общее устройство — ищите главный файл приложения и функцию main() и вперед… несколько дней, проведенных в изучении путей вызова функций помогут вам составить представление о работе ПО.

    Естественно, по ходу разбирания в коде вам могут понадобиться мануалы, например заглядывать в MSDN для подробностей функий WinAPI, документацию внешних библиотек, возможно, еще что-то. Если речь о С++ (а в Хроме он используется), вам также полезно укрепить знания этого языка, пролистав Страуструпа и почитывая C++ FAQ (я не помню ссылки, найдите сами в Гугле, но любой уважающий себя С++ разработчик должен знать то, что там написано, так как С++ на редкость богат возможностями выстрелить себе в ногу).

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

    Ок, допустим Хром вам неинтересен, вы хотите залезть в ядро Линукса. Опять же, гуглите диздоки и все, что на них похоже, например, во многих проектах это называется Hacker's manual/hackers reference — там обычно описывается общая структура проекта и какой модуль за что отвечает.

    Говоря кратко, ядро Линукса состоит из отдельных подсистем, каждая из которых управляет набором таблиц и списков (таблица процессов, список открытых файлов, список страниц памяти). Изучать его проще всего, взяв системный вызов, например fopen() или kill() или fork() и посмотрев, какой код вызывается в ходе его выполнения. Обычно это проверки прав пользоателя, проверка состояния процеса, вызов хуков, и, наконец, самое главное — модификация каких-нибудь таблиц, например добавление сигнала в очередь процесса.

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

    Но и как в случае с хромом, потратив определенное время на изучение кода и документации, понимание его устройства придет само собой.

    Вот, например, сходу нагуглилось: tldp.org/LDP/tlk/tlk.html (старый документ), www.kernel.org/doc/htmldocs/kernel-hacking.html (не очень старый). Также, в дереве исходников ядра есть папка с говорящим названием documentation, также там разбросаны файлы readme.
    Ответ написан
    1 комментарий
  • Вопрос к экзамену: "Что такое сервер ЗА и ПРОТИВ?"

    @egorinsk
    Очевидно, в вопросе спрашиваются что такое сервер, а также преимущества и недостатки использования сервера (в сравнении например с персональным компьютером): ЗА — то, что он круглосуточно доступен и имеет резервирование по питанию, ПРОТИВ — то, что сложен в установке и настройке, зачастую не имеет клавиатуры и монитора, непонятно как им вообще пользоваться.
    Ответ написан
    4 комментария
  • Почему хром жрёт место?!

    @egorinsk
    Кривокодеры из Гугла наверно сидят на терабайтных дисках и место не считают.

    Я лично считаю, разработчики должны использовать компьютеры с наименьшей конфигурацией из тех, которыми пользуются конечные юзеры.
    Ответ написан
    1 комментарий
  • Существует ли закон, ограничивающий портирование не моего приложения, мною, на другую мобильную ОС?

    @egorinsk
    Закон об авторском праве. Что касается прав на интерфейс и принципы взаимодействия, в разных странах это решается по-разному. В США, например, есть прецеденты, когда копирование интерфйеса (с целью выпуска конкруирующего ПО с аналогичным интерфейсом) считалось нарушением, и есть, когда не считалось.

    Информация, хранящаяся в программе также может охраняться законом об охране БД.

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

    @egorinsk
    > как исправить?

    Перейти на Windows XP? Примонтировано несколько дисков в NTFS, ничего не тормозит.
    Ответ написан
  • Как использовать кодо-хостинги по назначению размещая CSS/JS?

    @egorinsk
    То ли на гитхабе, то ли на гуглокоде можно получать ссылки на raw-файл.
    Ответ написан
  • Какой вариант логики запросов правилен?

    @egorinsk
    Только второй вариант. Не слушайте теоретиков. MySQL все эти джойны и аггрегацию никак не соптимизирует.
    Ответ написан
    Комментировать