Задать вопрос
  • Как правильно писать юнит-тест для класса работающего с файлом?

    @egorinsk
    > + ко всему меня еще смущает работа с файлами тем что это похоже на «интеграционный» тип тестирования, а этим не должен заниматься юнит-тест.

    Юнит-тесту никто не запрещает прочитать файл в память до тестирования и отдавать тестируемому коду уже набор байт из памяти или что он там принимает на вход. Если ваш код требует на вход объект StreamPtr_t (какое странное название), то сделайте специально для тестов простейший MemoryStreamReader на 20 строчек.

    Если боитесь, что файл может прочитаться неправильно (хотя вряд ли такое возможно) и сломать вам тест, сделайте подсчет какой-нибудь контрольной суммы.

    А специально превращать файлы в портянки вроде "\xff" смахивает на извращение.
    Ответ написан
  • Помощь с программированием на Си

    @egorinsk
    Я думаю, что вам просто нужна другая книга по Си, более подробная и терпеливая.

    Насчет указателей — а вы почитайте, как работает процессор, как устроена оперативная память (RAM), и как в ней хранятся байты, числа и строки. Указатель — это просто адрес ячейки в памяти, и разобравшись с устройством памяти, вам надеюсь, все станет понятно. Язык Си находится на очень близком к железу (CPU и RAM) уровню.

    Хотя, если ваша цель Objective-C, наверно, указатели не так и важны.
    Ответ написан
    Комментировать
  • Как бы вам было удобно логиниться и регистрироваться в телевизоре?

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

    @egorinsk
    > Сниффер корпоративный

    Желаю вам благополучно провалиться с этой бессмысленной затеей.
    Ответ написан
    Комментировать
  • Как бороться с хакерами на сервере?

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

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

    Кстати, еще бекдор может быть скрыт, например, в теме для вордпресса или плагине — бывают и такие случаи.

    > так как админ не мог предоставить даже IP адреса, говорит в логах сервера ничего нет, где в http логах искать непонятно

    Скорее всего, он просто недостаточно квалифицирован для этой задачи.

    Также, для борьбы с уязвимостями в веб-скриптах можно попробовать применить на сервере разные ограничения вроде safe_mode, disable_functions, но это все костыли, по-хорошему надо не устанавливать сомнительные open source скрипты в открыто доступную папку.

    >. IP этот сервера в нидерландах, скорее всего там у него прокси или вообще какой нибудь backtrack установлен. Сервер этот в публичных прокси-листах не нашел, думаю собственный. И на этом я уткнулся в стену, и теперь не могу предположить что делать дальше.

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

    @egorinsk
    На торрент-трекерах и файлах с пиратскими файлами можно искать раздачи и кряки с комментариями «не качайте там вирус». Также, вирусы можно легко найти в Гугле, набрав «скачать флеш плеер» (именно так, по-русски) и выбрав неофициальный сайт. Или набрав «скачать темы для вконтакте».

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

    Где скачать спам? Проще всего регистрироваться под своим емайлом на большом числе сомнительных сайтов, вроде группонов, досок объявлений, и т.д. Правда, придется немного подождать, прежде чем пойдет поток писем.

    Ну а проверять антивирус этим тестовым кодом — смешно. Настоящие вирусы не имеют постоянной сигнатуры и их нельзя так просто обнаружить.
    Ответ написан
    1 комментарий
  • Правильно организованный выбор языка для сайта

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

    @egorinsk
    > Нужно соорудить красивый (полупрозрачный, рассчитанный на жесты, динамический, быстрый и т.п.) интерфейс поверх видео.

    Для начала, вам нужен Фотошоп и хороший дизайнер к нему.
    Ответ написан
  • Javascript bundler?

    @egorinsk
    echo "(function() {" > file.js
    cat *.js >> file.js
    echo "})()" >> file.js

    Держите! Руби не требуется! Если поколдовать с sed, то будет еще и минификация лишних пробелов!
    Ответ написан
    Комментировать
  • Посоветуйте тяжелую CMS на PHP

    @egorinsk
    Друпал + любые плагины к нему
    Ответ написан
    Комментировать
  • Sublime раздражающие обрамления

    @egorinsk
    Скорее всего, это ошибки и нарушения стиля кодирования (лишняя запятая в массиве, нет скобок в вызове конструктора), которые подсвечивает плагин SublimeLinter (если он у вас установлен).Чтобы прочесть текст ошибки, поставьте курсор внутрь прямоугольника. Чтобы просмотреть полный список, нажмите ctrl + Shift + P и введите linter show error. Чтобы от них избавиться, удалите плагин или исправьте их.

    Этот плагин (использующий внутри jshint) — очень полезная вещь, но чтобы получить больше выгоды, вам надо его настроить: по умолчанию, он реагирует только на самые грубые ошибки, а например, опечатки в имени переменной, легко пропускает. Советую вам не удалять плагин, а открыть страницу jshint, почитать про опции проверки, открыть настройки linter и включить все опции по максимуму.

    После этого ваш код станет куда как качественнее и выбудете тратить меньше времени на отладку.

    Кстати, плагин может работать в 2 режимах: постоянно проверять по мере ввода (сильно ест процессор, так как запускает на каждую букву по процессу node.exe) и проверять только при сохранении.
    Ответ написан
    2 комментария
  • Что использовать для кеширования?

    @egorinsk
    А чем memcache не подходит? Не знаю, как с репликацией, но он масштабируется на большое число серверов.
    Ответ написан
  • Автоматические субтитры к видео (английский язык)?

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

    @egorinsk
    > Алгоритм должен быть как можно более оптимальным в плане скорости, т.к. номеров очень много и всё должно работать быстро.

    Используйте Си/Java/.NET или откажитесь от слова «быстро», ни Питон, ни PHP так же быстро это не сделают. Сколько миллионов номеров надо обрабатывать в секунду? Откуда они приходят?
    Ответ написан
    Комментировать
  • Coda 2 не подсвечивает PHP если после "<?" нет пробела

    @egorinsk
    Почему бы не перейти на модное сейчас написание длинного открывающего тега [?php? Не думаю, что производители редакторов будут ориентироваться на ваш уникальный стиль написания кода, и вы будете сталкиваться с аналогичными проблемами.
    Ответ написан
    4 комментария
  • В чем плюс HTML5 тегов?

    @egorinsk
    Сейчас от этого только минусы: необходимость добавлять яваскрипт-код для совместимости со старыми ИЕ. Я бы использовал дивы, пока HTML 5 не станет лучше поддерживаться.
    Ответ написан
  • Cloudflare капча

    @egorinsk
    Может быть, у вас нетипичный user-Agent у браузера?

    Также, Линукс никак не значит, что вы защищены от вирусов. Например, у вас может стоять вредоносное кроссплатформенное расширение к Firefox или Chrome (Хром позволяет выполнять расширения даже после закрытия всех окон, что особенно удобно) и делать грязные дела.
    Ответ написан
    Комментировать
  • Область видимости переменных JavaScript?

    @egorinsk
    > Почему текущий метод возвращает undifined?

    Потому, что $.ajax (точнее, XmlHttpRequest) только лишь запускает отправку запроса и сразу же возвращает управление, она не ждет, пока он завершится. И return срабатывает раньше, чем вызовется функция onDone, потому там undefined. Логично же?

    > Понимаю, что что-то не так с областью видимости переменных, но как сделать чтобы метод вернул мне значение data в случае успешного получения данных от скрипта?

    Никак. Научитесь мыслить асинхронно: не «метод делает запрос и возвращает данные», а «метод отправляет запрос и когда-нибудь потом вызовет функцию onDone».
    Ответ написан
    Комментировать
  • Как эффективно переучиться на веб-разработчика?

    @egorinsk
    Вообще, не увлекайтесь спецификациями. Марк Цукерберг как-то без них обошелся. Google тоже не следует строгим стандартам.

    Если вы хотите «эффективно» изучить матеиал, тогда вы должны читать статьи «для чайников» (которые вы с вашим опытом, наверняка освоите за кратчайшее время). HTML/CSS так устроены, что даже если вы сделаете 100 ошибок на странице, он все равно как-нибудь да отобразится. Ну если вы хотите более солидные знания, то параллельно смотрите непонятные моменты в спецификациях, это в общем-то полезно. А сэкономленное время посвятите практике. Она тут очень важна.

    Вот, что стоит изучить (в любом порядке):

    1) Начните с основ HTTP (только ради бога, не читайте спецификацию целиком, хватит общего представления о методах запросов, заголовках и теле запроса, кодах ответа 403/404/500/200/300)
    2) Изучите основы HTML (есть раздел на сайте htmlbook). SGML вам хватит в том объеме, в котором он упоминается в спецификации HTML. PCDATA не упоминается в ней и потому знать про отличия от CDATA вам не нужно (ну если так хотите узнать, найдите спецификацию SGML и почитайте).

    Обратите внимание, в некоторых (некачественных) статьях вы можете увидеть штуки вроде [br /] — самозакрывающиеся теги. Это ошибочный синтаксис, который употребляют авторы, путающие HTML и XHTML. В HTML такого синтаксиса нет (хотя в силу своей толерантности к ошибкам в HTML такой код как-то работает).

    3) Изучите CSS и позиционирование элементов. Вот хороший учебник, разъясняющий тонкости всяких флоатов: softwaremaniacs.org/blog/category/primer/ А спецификацию CSS2.1, думаю, вы нагуглите сами, она довольно понятно написана.

    4) Изучите яваскрипт (да, включая замыкания и прототипы) и DOM. Обратите внимание, jQuery — лишь обертка над DOM и не зная DOM, вы не сможете нормально пользоваться jQuery, вы лишь научитесь копипастить скрипты из интернета, не понимая, как они работают. После этого можете изучать jQuery, заодно советую заглянуть в исходный код, а не только читать документацию.

    5) Изучите один из серверных языков, хотя бы основы

    6) Изучите основы SQL

    7) Начинайте что-нибудь делать, так как в этот момент у вас будет очень много теоретических знаний и очень мало практических. Можете сделать простое веб-приложение, можете улучшить какое-нибудь существующее.

    8) Изучите ООП

    9) Изучите какой-нибудь серверный MVC-фреймворк

    В общем, я думаю, стоит изучить базовые технологии, и приобретать практические навыки, а дальше неизвестно, понадобится ли вам HAML или что-то еще. Большинство упомянутых вами технологий изучать необязательно. Изучать надо то, что вам нужно для решения задачи, а не все подряд (иначе на это могут уйти года).

    > А есть ещё и XHTML, который тоже имеет свои отличия…

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

    > Клиентская разработка нынче редко обходится без всяких шаблонизаторов типа HAML/SASS

    Вы еще Coffescript забыли упомянуть. Это очень спорные вещи, есть мнения как за, так и против. Но в любом случае, согласитесь, как-то странно изучать SASS, не изучив вначале CSS, верно? Начинающему это не нужно.

    > а для эффективной серверной разработки всё и того сложнее: фреймворки, ORM, continuous integration, очереди задач и прочая-прочая.

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

    По вопросу, где брать информацию: авторитетные источники (для поиска ответа во всех подробностях) — это спецификации W3C, официальная документация фреймворков, неофициальные источники вроде htmlbook, stackoverflow или Хабра — для того, чтобы быстро получить представление о тех или иных возможностях HTML. Еще можете какую-нибудь книгу почитать, только не старую.
    Ответ написан
    5 комментариев
  • Семантический поиск информации о компании

    @egorinsk
    Составьте ручками. Компаний же не так много?
    Ответ написан