Задать вопрос
  • Не могу найти синоним к слову логирование?

    ammet
    @ammet
    Ruby on Rails developer
    Протоколирование вполне подоходит.
    Ответ написан
    2 комментария
  • Не могу найти синоним к слову логирование?

    Properrr
    @Properrr
    Журналирование
    Ответ написан
    Комментировать
  • С чего стоит начать веб-программисту?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Конечно же, начать надо с вопроса на тостере!
    <input type="checkbox" checked> Выполнено
    Потом воспользоваться поиском по тостеру и в гугле.
    Ответ написан
    Комментировать
  • Вы в браузере набрали адрес сайта, нажали Enter. Расскажите максимально подробно о технических процессах происходящих далее?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Действительно, уважаемый. Это слишком. Вряд ли я затрону все тонкости, но попробую наметить примерный путь:

    0) Пользователь вбивает в адресную строку браузера адрес сайта (нажимая клавиши на клавиатуре, которые замыкают определённую дорожку в матрице, по которой происходит определение нажатой клавиши, что через шину USB в какой-то момент передастся OS, где это поймает HID-драйвер и вызовет определённое прерывание, что OS передаст как событие/или_ещё_как в программу, которая вызовет соотвествующую функцию из API менеджера окон, которая изменит содержимое строки и в результате когда-то будет перерисован UI-элемент, а если нажат был Enter, то начнётся следующее).
    1) Браузер вытащит из input'а строку с запросом и посмотрит, похоже ли это на адрес. Если да, то добавит недостающие уточнения (например, http или file протокол, порт и подобные довольно стандартные вещи). Если нет - то скорее всего создаст запрос в поисковую систему, установленную по умолчанию (я более не буду опускаться до таких бессмысленных деталей, как вызовы API-функций, иначе я буду набирать это сообщение ОЧЕНЬ долго). В любом случае на выходе мы по сути получим URL, который надо загрузить. Протокол file:// мы рассматривать не будем, ftp далеко не везде есть, https:// на не хватит вечности, так что остановимся на http, который по сути есть tcp/ip по умолчанию на 80 порту с определённым форматом общения.
    2) Окей, url есть. Теперь нам нужен адрес, к которому обращаться. Так как http это tcp/ip - нам нужен ip адрес. Здесь нам помогают dns-сервера. Обычно, нормальный провайдер устанавливает у себя кэш-сервера dns, которые не обращаются по стопицот раз за vk.com к ответственному серверу com-зоны. Давайте не будем отвлекаться на то, как происходит там общение, если что - вот (вики тем хороша, что часто содержит внизу релевантные ссылки). Скажу лишь то, что на выходе мы получаем ip адрес(а).
    3) Имея адрес мы можем запросить страницу. Собственно, всё что после первого слэша - это как-бы параметры для http-сервера: какую именно страницу запрашивать, он всё же не телепат. Конечно, можно было бы немного схитрить и отправить читать про tcp/ip, но ведь существует и shared-hosting. Ограничемся лишь его упоминанием. Собственно, по полученному адресу отправляется GET запрос, который и обрабатывает сервер, находящийся по полученному IP-адресу.
    4) Сервер же, получив адрес, начинает распарсивать строку, медленно вытягивая нужные данные из баз-данных и настроек, выполняются сотни скриптов, иногда делается ещё не одна сотня различных запросов на другие сервера (здесь и разного вида метрики и разного вида HADOOP и т.д.). Пройдя сквозь скрипты и темплейторы в самом конце мы получаем html-страницу, готовую к употреблению. Её-то сервер и отправит в ответе (после заголовков, конечно).
    5) Вот и началось самое интересное. Получив html страницу браузер начинает жутко надругаться над CPU, HDD и GPU, попутно сжирая тонны RAM и мусоря в swap. Виной всему нереальные для полного соблюдения стандарты от небезызвестной w3c.org. Для облегчения многие делают костыли, вроде webkit, а некоторые и вовсе забивают на него и пилят свой стандарт с преферансом и картёжницами (впрочем, в последнее время становиться лучше). Здесь снова начинаются сотни вызовов API ОС, windows manager'а и прочих библиотек, вроде boost, qt или libpng. В ходе работы в RAM строится макет, по которому потом строится нечто вроде PDF (тоже сильно векторный), что, потом, обрабатываясь быстрыми шейдерами на GPU, выдаётся на экран. Опять же, многое пропущено, но вряд ли кому-либо, кроме парня в свитере с оленями, действительно интересно, как работает GDI, DirectX или OpenGL.
    6) Ах да, мы же забыли про тысячи js-скриптов, миллионы картинок и анимации с котиками, а также о таких дополнительных плюшках, как flash-player или java-weblets. В кратце, что js, то и flash и java - это виртуалка, со специальной архитектурой. Они, виртуалки, конечно разные (хотя flash и js довольно похожи, ещё бы - ECMAScript один и тот же). JS - самый интегрированный внутрь браузера, он же и самый медленный чисто визуально (ибо последние два имеют доступ к быстрому GPU), хотя самый быстрый в попугаях. Второй постепенно вымирает и представляет из себя, так же как и третий специальную shared-библиотеку, о которой браузер как-нибудь узнал и которой скармливает специальное содержимое помечанное специальным тегом html. Третий уже почти умер и встречается лишь изредка или в каком-нибудь энтерпрайзед со страшным legacy-базой. Ну здесь из сылок разве только гугл. Ибо сколько всего - даже не сообразишь. Да и вообще, эта тема ещё скучнее GDI, DirectX и OpenGL и к свитеру с оленями требуются ещё очки с толстенными стёклами, дающие стопицот к терпению и задроству над матаном. Если в кратце, то в случае JS, всё что было загружено в память и не думает выгружаться и формирует этакое дерево - DOM, над которым с помощью специального API и происходят модификации. При этом, перед тем как исполниться, весь JS-код компилируется, в нативный для VM байт-код. То же самое в общем-то и со вторым и третьим, разве только они не имеют доступа к DOM и организовать его - дело тех ещё костылей. Ах да, забыл ещё про Silverlight (или как оно там пишется), который сдох, не успев родиться. Так же как и Java, жив в серьёзном энтерпрайзе, не поскупившийся не "дешёвую" поддержку MS.
    7) Ну... А дальше пользователь нажимает на нужную гиперссылку и всё по новой.

    За кадром остались такие костыли, как ajax, websockets и прочая асинхронная ересь. С ней всё в миллионы раз сложнее. И к очкам со свитером потребуется ещё и... а чёрт их знает, что они там ещё носят. Ну да ладно, я искренне завидую тем парням (и девушкам), которые разбираются во всей этой машине. Целиком. Ибо это лишь верхушка айсберга. Разбавленная не лучшей памятью и ужасным гуглом.

    P.S. Не бейте сильно за грамматические и синтаксические ошибки. Спеллчекер приказал долго жить, да и 5 утра как никак.

    UPDATE
    На хабр выложили неплохой перевод дающий некоторое представление, как браузер ругается над памятью и процессором. Хотя и весьма поверхностное,
    Ответ написан
    26 комментариев
  • Как написать самый простой цикл на bash?

    tmin10
    @tmin10
    может запустить так будет проще: ./script || ./script ?
    Ответ написан
    Комментировать
  • Альтернатива notepad++ или в чём вести разработку?

    shiza36
    @shiza36
    Sublime text 2-3
    На него ставлю плагины: emmet, СSScomb, sftp, autosave. В браузер ставлю livereload.
    Profit!

    Пробовал ещё WebStorm, но sublime берет скоростью и простотой.
    Ответ написан
    2 комментария
  • Как установить Arch Linux?

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

    @vehsakul
    Увеличение скорости разработки может произойти банально за счет того, что не нужно ничего компилировать. Количество набираемого кода тоже будет меньше. Легче экспериментировать с чем-либо. Производительность важна далеко не везде и, там где она не важна, Python может существенно упростить жизнь.
    Ответ написан
    Комментировать
  • Как узнать включает или нет изображение №1 объект с изображения №2 с помощью OpenCV?

    Zenker
    @Zenker
    Я правильно понимаю, что вы рассчитываете расстояния между дескрипторами и ищите наиболее похожие точки на образце и текущем изображении? Если так, то при таком подходе не учитывается взаимное расположение точек, поэтому едва ли можно судить о наличии объекта на изображении. Я сам с OpenCV знаком мало, поэтому постараюсь в общих чертах описать возможный способ решения:

    1) С помощью детекторов локальных особенностей (SIFT/SURF/ORB итд.) находите особые точки на образце и изображении

    2) Для найденных точек рассчитываете в их окрестностях значения дескрипторов. Дескриптор — это многомерный вектор(по сути набор чисел), характеризующий точку. Чем больше похожи два дескриптора(меньше расстояние между ними), тем более вероятно, что речь идет об одной и той же точке на образце и текущем изображении.

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

    4) Самый важный этап. Ложные соответствия обычно хорошо фильтруются алгоритмом RANSAC. Суть тут вот в чем: алгоритм пытается по вышенайденным точкам найти преобразование, которое позволило бы наилучшим образом сопоставить два изображения. Если такое преобразование находится и достаточно большое количество точек подтверждает эту модель(такие точки называют инлайнами), то скорее всего объект на изображении присутствует.

    Конкретно в OpenCV есть функция FindHomography, только нужно с ней разобраться. Если я правильно понял, srcPoints и dstPoints — массивы особых точек на образце и изображении, где элементы с одинаковыми индексами — это и есть пары сопоставленных точек. Возвращает матрицу преобразования H, но как сигнализируется об успешности ее поиска — нужно разобраться. Возможно, нагуглить какую-нибудь другую реализацию. Я бы попробовал оценить результат по доле инлайнов в общем количестве точек.
    Поподробнее про RANSAC и подобную задачу в целом можно почитать тут: engineering.purdue.edu/kak/courses-i-teach/ECE661.08/solution/hw4_s1.pdf
    Ответ написан
    2 комментария
  • Тема для диплома?

    djmorgan
    @djmorgan
    Если есть познания в электронике то можно сделать неплохую связку. К примеру микроконтроллеры + Вебморда + лазерно- оптическое устройство. Полет фантазии открывается огромный…
    Ответ написан
    Комментировать
  • Bluetooth на ухе - это вредно?

    @bondbig
    100% людей, пользующихся гарнитурами bluetooth, умрут.
    Ответ написан
    1 комментарий
  • Конвертация djvu в epub. Чем?

    nekotwi
    @nekotwi
    Программист
    DjVu это ГРАФИЧЕСКИЙ формат. в нем есть поддержка текстового слоя, но он не отображается и нужен чтобы иметь возможность скопировать текст. DjVu можно перегнать в pdf (для никсов есть скрипт djvu2pdf), при этом изображения страниц конвертируются в формат графики используемой в pdf и сохраняются в pdf со страницами-картинками.
    Epub — контейнер, содержащий в первую очередь текст в виде html-страниц. Благодаря этому он поддерживает сложную верстку, графику, но при этом можно менять шрифты и их размер, а так же разбивка на страницы не является фиксированой. По стандарту epub может содержать и pdf, но по сути это имеет смысл когда книга собирается из нескольких кусков(скажем, несколько глав в pdf'ах и остальные в html).
    Т.к. все электронные книги поддерживающие ePub поддерживают и pdf (т.к. для отображения ePub сейчас во всех читалках используется Adobe Reader Mobile 9 SDK) то смысла конвертировать pdf в ePub нет.
    Ответ написан
    Комментировать