Как стать автором
Обновить
-1
0

Пользователь

Отправить сообщение

Делаем маршрутизацию (роутинг) на OpenStreetMap. Введение

Время на прочтение9 мин
Количество просмотров13K

Хотелось бы поделиться опытом создания систем маршрутизации PostgreSQL/PgRouting на карте OpenStreetMap. Речь пойдет о разработке [коммерческих] решений со сложными требованиями, для более простых проектов, вероятно, достаточно обратиться к документации. Насколько мне известно, такие вещи, как полная поддержка односторонних дорог и направлений движения, быстрый роутинг на тысячах адресов (порядка секунд на обычном лаптопе, к примеру, Macbook Pro 13" 2013 года), создание дорожного графа с заданными свойствами, мета-оптимизация маршрутов вообще нигде и никак не рассматриваются. Как обычно, все данные и результаты доступны в моем GitHub репозитории OSM Routing Tricks, который я буду пополнять по мере публикаций.



Небольшой маршрут из 330 адресов на карте OpenStreetMap (время построения около 5 секунд на вышеупомянутом лаптопе). Можно ли за это же время построить маршрут, скажем, из 5000 точек? Да, можно, и об этом мы тоже поговорим (в следующих частях статьи).

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Монтируем FTP ресурс как локальную FS

Время на прочтение2 мин
Количество просмотров83K
Захотелось как-то исполнить команду find в ftp-пространстве, но любой нормальный ftp сервер этого не даст сделать, а решение ну очень хотелось найти.
Читать дальше →
Всего голосов 49: ↑37 и ↓12+25
Комментарии43

Блокчейн: революция, к которой мы не готовы

Время на прочтение5 мин
Количество просмотров23K
Представьте, что можно было бы заключить сделку с незнакомым человеком, даже не испытывая к нему доверия. Представьте, что можно было бы вложить деньги в банк, даже не испытывая к нему доверия. Представьте, что можно было бы рассчитывать на справедливость и законность действий государства, даже не испытывая к нему доверия.

Что бы тогда произошло?

Мир бы изменился.

И именно такие перспективы и обещает нам блокчейн.


В прессе сейчас только и разговоров, что о криптовалюте, в основе которой лежит именно блокчейн: по большей части это объясняется высокими ценами, волатильностью и скандальными историями о фиаско вроде тех, которые постигли Mt. Gox и The Silk Road.

Но то, что сейчас происходит, гораздо масштабнее, чем просто цифровая валюта.
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии25

VR/AR в браузере. Как быстро влиться и сделать свое первое приложение, используя WebVR API

Время на прочтение14 мин
Количество просмотров44K


Виртуальная и дополненные реальности активно развиваются и начинают предъявлять права на захват мира. Причем применение этих технологий разнообразно и не ограничивается только играми. А с появлением инструментов для работы с VR/AR технологиями в браузере интерес возрос еще больше. Уже сейчас можно экспериментировать и создавать MVP(Minimum Viable Product) веб-проекты с помощью JavaScript API, которое так и называется — WebVR. Давайте разбираться, что это и как с этим работать. И можно ли обойтись без этого самого WebVR API?
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии3

90 рекомендаций по стилю написания программ на C++

Время на прочтение20 мин
Количество просмотров413K
От переводчика. Искал в интернете простой и легко применимый гайдлайн по написанию программ на C++. Мне понравился один из вариантов, и я решил его перевести и опубликовать. Если хабрапользователи хорошо встретят этот топик, могу перевести и другие связанные документы, а также гайдлайны по написанию кода от других компаний.

1 Введение


Настоящий документ содержит рекомендации по написанию программ на языке C++.

Рекомендации основаны на установившихся стандартах, собранных из различных источников, личного опыта, частных требований и потребностей определённых проектов, а также почерпнутых из источников (см. ниже).

Но для появления ещё одного списка рекомендаций, помимо указанных источников, есть несколько причин. Основная причина — их излишняя обобщённость, поскольку зачастую требуется задать частные правила (в особенности правила именования). Данный документ содержит комментарии, что делает его более удобным в использовании при проведении ревизий кода, чем другие уже существующие документы. К тому же, рекомендации по программированию обычно вперемешку содержат описания проблем стиля и технических проблем, что не совсем удобно. Этот документ не содержит каких-либо технических рекомендаций по C++, делая упор на вопросах стиля.
Читать дальше →
Всего голосов 181: ↑137 и ↓44+93
Комментарии213

Не доверяйте SUDO, она может вас подвести

Время на прочтение7 мин
Количество просмотров46K

Всем доброго времени суток, в этой статье постараюсь описать некоторые способы обхода ограничений на исполнение команд в ОС Linux, советы по использованию которых можно часто встретить на различных форумах. Демонстрация будет проведена на примере задания Restricted shells с сайта Root-Me. Итак, начнём.
Читать дальше →
Всего голосов 99: ↑94 и ↓5+89
Комментарии8

Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск

Время на прочтение4 мин
Количество просмотров612K
Помните те времена, когда BIOS был 16-битным с адресным пространством в 1 Мб, а вся информация о загрузчиках писалась в MBR? На смену уже давно пришли более гибкие технологии: UEFI (замена BIOS), и GPT (замена MBR).

Предыстория: Понадобилось мне недавно на свой домашний десктоп поставить 2 системы, чтобы разграничить окружение. Kubuntu для разработки на Ruby on Rails (ибо работаю удаленно), и Windows для всяких игрушек в свободное время. Хочу заметить, что несколько лет назад это было достаточно просто: один раздел для винды и один раздел для линукса, загрузчик записывался в MBR. Однако, технологии не стоят на месте, и оказалось, что настройка dual boot'а теперь несколько изменилась.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии42

Объединяя C++ и Python. Тонкости Boost.Python. Часть первая

Время на прочтение10 мин
Количество просмотров149K
Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать дальше →
Всего голосов 64: ↑64 и ↓0+64
Комментарии8

Вышел GIMP 2.9.4

Время на прочтение10 мин
Количество просмотров31K

Отчёт о новых функциях свободного графического редактора


Мы только что выпустили вторую dev-версию GIMP в серии 2.9.x, ставшую результатом полугода работы. GIMP 2.9.4 представляет собой мощное обновление:

  • обновленный интерфейс;
  • серьёзные улучшения в управлении цветом;
  • готовый к использованию инструмент MyPaint Brush;
  • симметричное рисование;
  • сплит-превью для фильтров на GEGL.

Вдобавок, исправлены десятки багов и сделаны многочисленные мелкие улучшения в графическом редакторе.

GIMP 2.9.4 достаточно надёжен для использования в продакшне, но требуется ещё кое-что доделать. Поэтому выпуск стабильной версии 2.10 потребует некоторого времени. Пожалуйста, смотрите дорожную карту со списком основных изменений, которые готовятся в версии GIMP 2.10.
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии57

Игровые клавиатуры в фантазиях маркетологов и реальности

Время на прочтение5 мин
Количество просмотров43K
image
Хорошая клавиатура как Грааль — не обязана блестеть. Кадр из к/ф «Индиана Джонс и последний крестовый поход»

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

Игры на ПК были задолго до появления вменяемых компьютерных мышей и, думаю, многие играли в DOOM, Wolfenstein или Heretic на клавиатуре. С течением времени сформировался определенный статус-кво: разработчики продолжают экспериментировать с методами ввода, создают шлемы и очки виртуальной реальности, манипуляторы нового типа и прочее, но клавиатура до сих пор находится на пьедестале — в подавляющем большинстве игр без нее никуда.

В прошлый раз мы вскользь поговорили о геймерских мышках, а теперь я предлагаю вам рассмотреть геймерские клавиатуры.
Читать дальше →
Всего голосов 29: ↑22 и ↓7+15
Комментарии232

Как мы сделали чтение писем безопаснее: Content Security Policy в Яндекс.Почте

Время на прочтение8 мин
Количество просмотров50K
Одним из приоритетов для команды Яндекс.Почты всегда была и есть безопасность данных пользователя. Причем это касается не только хранения писем, но и безопасного доступа к ним. Еще в 2011 году мы стали пропускать все изображения в письмах через наши прокси-сервера, перекрыв один из каналов распространения вредоносного кода, а также кешировать их для экономии трафика и обеспечения большей приватности. В ноябре этого года мы внедрили шифрование при приеме и отправке почты, а также и перевели почту в режим HTTPS-only — теперь веб-интерфейс доступен только по безопасному протоколу.

А с недавних пор мы стали поддерживать новый механизм защиты данных пользователя – стандарт Content Security Policy. С его помощью можно запретить скриптам на странице подгружать какие-либо ресурсы с хостов, не указанных в белом списке.

Это пока довольно редкая штука (ни одна крупная известная нам почта этого ещё не применяет), и в этом посте мы поделимся опытом внедрения стандарта.

image
Читать дальше →
Всего голосов 79: ↑69 и ↓10+59
Комментарии26

Фильтр Блума

Время на прочтение3 мин
Количество просмотров62K
И снова здравствуйте! Сегодня я поведаю о фильтре Блума — структуре данных гениальной в своей простоте. По сути, этот фильтр реализует вероятностное множество всего с двумя операциями: добавление элемента к множеству и проверка принадлежности элемента множеству. Множество вероятностное потому, что последняя операция на вопрос «принадлежит ли этот элемент множеству?» даёт ответ не в форме «да/нет», а в форме «возможно/нет».

Как фильтр это делает?
Всего голосов 88: ↑85 и ↓3+82
Комментарии36

Как правильно сортировать контент на основе оценок пользователей

Время на прочтение5 мин
Количество просмотров92K


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →
Всего голосов 458: ↑423 и ↓35+388
Комментарии134

Подборка: Более 70 источников по машинному обучению для начинающих

Время на прочтение5 мин
Количество просмотров103K


Индикатор кулачкового аналогового компьютера / Wiki

В нашем блоге мы уже рассказывали о разработке системы квантовой связи и о том, как из простых студентов готовят продвинутых программистов. Сегодня мы решили вернуться к теме машинного обучения и привести адаптированную (источник) подборку полезных материалов.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии16

Рекламные сети 3.0: как разработчику перестать раздражать пользователей и при этом заработать больше

Время на прочтение12 мин
Количество просмотров36K
image
Широкий выбор мобильной рекламы: от мешающей до ужасающей. Во всяком случае до 2016 года.
Читать дальше →
Всего голосов 36: ↑30 и ↓6+24
Комментарии16

Улучшаем релевантность поиска в sphinxsearch

Время на прочтение4 мин
Количество просмотров58K
Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql — аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

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

Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

morphology

Позволяет задать морфологию слов, я использую только стемминг. Алгоритм стемминга с помощью набора правил для языка обрезает окончания и суффиксы. Стемминг не использует готовые базы слов, а основан на определенных правилах обрезания для языка, что делает его маленьким и быстрым, но это же и добавляет ему минусы так как он может совершать ошибки.

Пример нормализации слова стеммингом на русском.
Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии17

Парсинг формул в 50 строк на Python

Время на прочтение4 мин
Количество просмотров44K
Вдохновение — задача с собеседования Яндекса и статья «Парсинг формул в 40 строк».

Моей целью было посмотреть, как будет выглядеть «pythonic» решение этой задачи. Хотелось, чтобы решение было простым, код читаемым и разделённым. В итоге ещё получился и пример применения цепочки генераторов (generators pipeline).
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии9

Indoor-навигация: Большой обзор iBeacon Hardware

Время на прочтение14 мин
Количество просмотров24K


Мы подготовили перевод большого обзора маячков, работающих по технологии iBeacon, которая применяется и в проекте Navigine – системах для indoor-навигации. В Navigine для навигации внутри помещений мы используем различные технологические решения, однако iBeacon является одним из самых известных и популярных в консьюмерском секторе – поэтому начнем рассказ именно с него.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии14

Cloudready возвращает к жизни старые ПК при помощи Chromium OS

Время на прочтение1 мин
Количество просмотров26K


Компания Neverware разработала программный пакет, который позволяет превратить практически любой старый ПК в Chromebook или Chromebox. Все, что нужно для работы — подключить к порту флешку и подождать несколько минут, пока программное обеспечение установится.

Программное обеспечение получило название Cloudready, это облачная операционная система, которая базируется на Chromium OS. Облачная операционка разрабатывалась вместе с Google. Излишним будет говорить о том, что раз ОС облачная, то и нагрузку на локальное «железо» она оказывает не слишком сильную — в результате даже очень слабое железо можно использовать в качестве рабочего ПК. Главное условие — наличие Сети для работы Cloudready.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии33

Поисковые подсказки изнутри

Время на прочтение11 мин
Количество просмотров28K


Ночная зала. Тысячи таинственных ликов в темноте, подсвеченных голубоватым свечением мониторов. Оглушительный треск миллиона клавиш. Подобные выстрелам автомата удары по клавишам «Enter». Зловещее стрекотание сотен тысяч мышек… Так, наверняка, играло воображение каждого разработчика высоконагруженной системы. И если его вовремя не остановить, то может выйти целый триллер или фильм ужасов. Но в данной статье мы будем гораздо ближе к земле. Мы кратко рассмотрим известные подходы к решению задачи поисковых подсказок, как мы научились делать их полнотекстовыми, а также расскажем о парочке уловок, на которые мы пошли, чтобы придать им скорости, но при этом не научить жадности к ресурсам. В конце статьи вас ждёт бонус — небольшой рабочий пример.
Читать дальше →
Всего голосов 64: ↑60 и ↓4+56
Комментарии14
1
23 ...

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность