Pull to refresh
1
0

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

Send message

Найти за полсекунды: сравниваем похожие фотографии

Reading time 10 min
Views 23K

Привет, меня зовут Петр и я работаю в Badoo в команде биллинга. В этой статье я хочу поделиться своим опытом работы над пет-проектом по созданию хранилища фотографий с возможностью поиска дубликатов. Я расскажу, с каким багажом я вошел в этот проект, в чем заключалась задача и как её решал. В конце поделюсь результатами и почему я считаю, что это один из лучших проектов, которым я занимался. 

Однажды мои знакомые попросили сделать им хранилище изображений для их проекта по модерации внешних ресурсов. Условия: срок хранения до трех лет, фотографии при этом присылаются неравномерно, в среднем поток — 150.000 картинок в сутки.

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

Читать далее
Total votes 54: ↑53 and ↓1 +52
Comments 7

Использование геолокационных данных в машинном обучении: основные методы

Reading time 10 min
Views 6.6K

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

Читать далее
Total votes 6: ↑5 and ↓1 +4
Comments 0

Как создавать красивые карты с помощью Python

Reading time 4 min
Views 22K
Мне всегда нравились карты городов, и несколько недель назад я решил создать свою собственную, художественную версию. Немного погуглив, я обнаружил крутое руководство, написанное Фрэнком Себальосом. Оно увлекательно и полезно, но я предпочитаю более подробные/реалистичные карты-схемы. Из-за этого я решил создать свою собственную версию карт. Итак, давайте посмотрим, как мы можем создавать красивые карты с помощью Python и данных OpenStreetMap.

Приятного чтения!
Total votes 27: ↑24 and ↓3 +21
Comments 11

Использование ArcGIS API for Python в Jupyter Notebook

Reading time 6 min
Views 20K


Всем привет! Это блог компании "Техносерв". В процессе производства на проектах, которые мы выполняем, рождаются интересные технологические кейсы. Их скопилось такое количество, что мы решили начать делиться ими с миром. И да, это наша первая публикация.


Честь начать блог выпала мне, и я пишу о том, что мне близко и любимо: о геоинформационных технологиях. Я работаю в департаменте Больших Данных, где занимаюсь разработкой высоконагруженных геоинформационных систем и сервисов на базе движков для распределенных вычислений. О высоких материях мы еще поговорим, а сегодня плавно начнем погружение в ГИС.


Все чаще и чаще у аналитиков данных (или как еще их называют — Data Scientist) появляется потребность в визуализации данных на карте. Какой инструмент сейчас считается наиболее удобным для работы аналитика? Конечно же, тетрадки! До последнего времени возможностей по визуализации геоданных было не так много. Можно было делать статические растры в matplotlib, иногда можно было добавлять даже базовые карты. Интересной оказалась библиотека для работы с Leaflet, где можно открывать geojson-файлы. Сегодня же я хочу рассказать об ArcGIS API for Python от компании Esri.


Эта статья будет полезна как аналитикам, желающим изучить примеры работы с ГИС, так и картографам и ГИС-специалистам, которым интересно попробовать себя в написании кода.


Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Comments 7

Как визуализируют своевременность данных в Airbnb

Reading time 7 min
Views 2.8K

Команды Airbnb собрались вместе, чтобы за год создать SLA Tracker – визуальный аналитический инструмент, помогающий формировать культуру своевременности данных. Этот информационный продукт позволил нам разрешить и систематизировать следующие вопросы своевременности набора: когда считать, что набор опоздал, какие данные часто опаздывают и по какой причине набор опоздал?

Трекер – важная часть усилий в достижении высокого качества данных, и, чтобы создать его, потребовалось преодолеть многие технические, организационные проблемы и проблемы продукта. Здесь остановимся на дизайне: расскажем, как проектировали и создавали визуализацию о своевременности данных.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 0

Продвинутый уровень визуализации данных для Data Science на Python

Reading time 7 min
Views 47K
Как сделать крутые, полностью интерактивные графики с помощью одной строки Python

image

Когнитивное искажение о невозвратных затратах (sunk cost fallacy) является одним из многих вредных когнитивных предубеждений, жертвой которых становятся люди. Это относится к нашей тенденции продолжать посвящать время и ресурсы проигранному делу, потому что мы уже потратили — утонули — так много времени в погоне. Заблуждение о заниженной стоимости применимо к тому, чтобы оставаться на плохой работе дольше, чем мы должны, рабски работать над проектом, даже когда ясно, что он не будет работать, и да, продолжать использовать утомительную, устаревшую библиотеку построения графиков — matplotlib — когда существуют более эффективные, интерактивные и более привлекательные альтернативы.

За последние несколько месяцев я понял, что единственная причина, по которой я использую matplotlib, — это сотни часов, которые я потратил на изучение сложного синтаксиса. Эти сложности приводят к часам разочарования, выясняя на StackOverflow, как форматировать даты или добавить вторую ось Y. К счастью, это прекрасное время для построения графиков в Python, и после изучения вариантов, явным победителем — с точки зрения простоты использования, документации и функциональности — является библиотека plotly. В этой статье мы погрузимся прямо в plotly, изучая, как создавать лучшие графики за меньшее время — часто с помощью одной строки кода.
Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Comments 10

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

Reading time 9 min
Views 12K

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



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

Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 4

Умирает ли RuTracker? Анализируем раздачи

Reading time 14 min
Views 235K

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


Сегодня побеждает тот, кто принимает решения, основываясь на объективных данных. Навыки аналитика как никогда актуальны, а наличие под рукой необходимых для этого инструментов позволяет всегда быть на шаг впереди. Это и является подспорьем появления данной статьи.


У вас есть свой бизнес? Или может… хотя, не важно. Сам процесс добычи данных бесконечен и увлекателен. И даже просто хорошо покопавшись в интернете можно найти себе поле для деятельности.


Вот, что мы имеем сегодня – Неофициальная XML-база раздач сайта RuTracker.ORG. База обновляется раз в полгода и содержит в себе информацию о всех раздачах за историю существования данного торрент-трекера.


Что она может рассказать владельцам рутрекера? А непосредственным пособникам пиратства в интернете? Или обычному юзеру, увлекающемуся аниме, например?

Читать дальше →
Total votes 191: ↑187 and ↓4 +183
Comments 296

21 извлеченный урок за 21 год программирования

Reading time 7 min
Views 47K


Доброго времени суток, друзья!

7 апреля 2020 года. Сегодня для меня очень важный день. Сегодня исполняется ровно 21 год с того момента, как я начал писать код (делать это профессионально, зарабатывать этим себе на хлеб).

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

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

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

Карьера разработчика — увлекательное путешествие по освоению удивительного искусства. На этом пути вас ждет множество вызовов, в одних случаях вы будете правы, в других — будете ошибаться. Эта статья посвящена урокам, которые я извлек за довольно продолжительный период. Надеюсь, она пойдет вам на пользу.
Читать дальше →
Total votes 69: ↑55 and ↓14 +41
Comments 76

Новое достижение в криптографии — факторизация 795-битного числа RSA

Reading time 4 min
Views 10K
2 декабря 2019 года в рассылке по теории чисел nmbrthry@listserv.nodak.edu сообщили о факторизации числа RSA-240 (240 десятичных знаков, 795 бит). Это новое достижение в криптографии и теории чисел и очередное выполненное задание из списка RSA Factoring Challenge.

Вот число и его множители:

RSA-240 = 124620366781718784065835044608106590434820374651678805754818788883289666801188210855036039570272508747509864768438458621054865537970253930571891217684318286362846948405301614416430468066875699415246993185704183030512549594371372159029236099
= 509435952285839914555051023580843714132648382024111473186660296521821206469746700620316443478873837606252372049619334517
* 244624208838318150567813139024002896653802092578931401452041221336558477095178155258218897735030590669041302045908071447

Исходя из текущего тренда можно примерно представить, когда будут взломаны RSA-1024 (309 десятичных знаков) и RSA-2048 (617 знаков).
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 7

Как проверить навыки программирования на Python? Задачи от Яндекса

Reading time 9 min
Views 63K

Хакатон в Школе бэкенд-разработки

В 2019 году нам потребовалось автоматизированно проверить умение писать Python-код у сотен разработчиков. Так мы отбирали будущих студентов для Школы бэкенд-разработки. Это не то же самое, что предложить решить задачу на листе бумаги, как на собеседовании. С другой стороны, мы также не могли переиспользовать условия задач, уже подготовленные для наших соревнований по программированию. Дело в том, что соревнования с целью определить лучших из лучших — это одно, а отбор специалистов с небольшим опытом в школу — совсем другое. Нам требовались задачи, по решению которых было бы видно, обладает ли разработчик базовыми навыками написания кода и умением грамотно использовать память и время. Вот какие условия мы составили.
Читать дальше →
Total votes 21: ↑18 and ↓3 +15
Comments 22

4 релиза Maltego. Принципы работы и возможности

Reading time 4 min
Views 67K
При просмотре профилей пользователей соцсетей, невольно задаешься вопросом, а сколько информации лежит в открытых источниках? Понятно, что много. Но как это посчитать? И у кого еще, кроме спецслужб и корпораций уровня Google или Microsoft, есть ресурсы и механизмы, чтобы это систематизировать? Создатели ПО Maltego уверяют — у любого. В этой статье я разберу практические примеры, пробегусь по функционалу и принципам работы этого инструмента.



Рассматривать мы будем именно коммерческий релиз. Потому что Free версия — это хорошо, но посмотреть возможности, которые можно получить только за немалую копеечку от сторонних компаний, вроде Social Links, гораздо интереснее.

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

Итак, дамы и господа, приступим.
Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 0

Как упростить жизнь с помощью закона Парето

Reading time 4 min
Views 13K


Не все задачи одинаково полезны


О законе Парето я узнал на занятиях по экономике.

Этот закон утверждает, что 20% усилий дают 80% результата.

Преподаватель дал нам примеры, которые помогли разобраться, что имеется в виду:

  1. Всего 20% богатейших людей контролируют 80% мирового дохода.
  2. На 20% пациентов приходятся 80% расходов на здравоохранение.
  3. В эпидемиологии 20% инфицированных — причина 80% случаев заражения.
  4. Среди преступников 20% ответственны за 80% преступлений.
  5. Около 80% продаж компании приходятся на 20% клиентов.

Меня впечатлило, что такая простая формулировка может нести в себе такой глубокий смысл.

Впервые я увидел этот принцип в действии в первые же несколько месяцев на работе. Заметив, что мне тяжело дается расстановка приоритетов в отношении времени и внимания, мой менеджер предложил сосредоточиться на пяти самых крупных торговых партнерах (всего я отвечал за 35) и временно отложить остальных — эти пять партнеров обеспечивали около 75–80% моих продаж.

С тех пор прошло много времени. Я проанализировал множество случаев из своей жизни, в которых этот закон работает — например:

  1. Лишь несколько выполняемых на работе задач оказывают максимальное влияние на продуктивность.
  2. Большую часть уходящих на еду денег я трачу в нескольких конкретных ресторанах.
  3. Анализируя временны́е затраты, я вижу, что бо́льшая часть времени уходит на несколько конкретных занятий. (Например, на просмотр комедийных шоу на Ютубе и Нетфликсе.)
  4. Я общаюсь немного, но из уделяемого общению времени 80% приходятся на 20% людей.
  5. У меня есть 5-6 костюмов, но в большинстве случаев я ношу один-два.

Переведено в Alconost
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 6

Будущее мобайла — не приложения, а браузеры

Reading time 5 min
Views 21K


В дискуссиях о будущем мобайла постоянно звучит тезис о том, что «в конце концов останутся только мобильные приложения под iOS или Android». Старший менеджер по продукту в Intercom Хью Даркин решил с этим поспорить. Он считает: у многих, кто говорит об этом, есть личная заинтересованность в выживании нативных мобильных приложений.

Статья переведена компанией-локализатором Alconost

Заявления о том, что будущее принадлежит нативным мобильным приложениям, игнорируют тот факт, что браузеры и веб быстро становятся мобильной операционной системой будущего, а нативные приложения медленно вымирают.
Читать дальше →
Total votes 34: ↑26 and ↓8 +18
Comments 75

Хватит всё подряд называть ИИ

Reading time 5 min
Views 20K
Хорошая новость в том, что я обнаружил много проблем. Плохая новость в том, что вы одна из них.

Большинство менеджеров и маркетологов называют искусственным интеллектом всё подряд: пылесосы, игрушечных роботов-трансформеров и даже подбор мобильных тарифов. Это в тренде и хорошо продаётся, только одна проблема — даже учёные не рискуют говорить, что создали ИИ.

Решили разобраться в определениях: можем ли мы вообще говорить об искусственном интеллекте, чем он отличается от машинного обучения и справедливо ли презрительно поднимать брови, когда мы видим очередную рекламу с ИИ.
Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Comments 47

Чтобы пацанам было не стыдно показать

Reading time 3 min
Views 106K
Я стар и уже глуп, а у вас всё впереди, уважаемый программист. Но позвольте дать вам один совет, который наверняка поможет в вашей карьере – если, конечно, вы планируете остаться программистом.

Советы типа «писать красивый код», «хорошо комментировать свои доработки», «изучать современные фреймворки» — очень полезные, но, увы, второстепенные. Они идут прицепом к главному качеству программиста, которое надо в себе развивать.

Вот это главное качество: пытливый ум.
Читать дальше →
Total votes 315: ↑291 and ↓24 +267
Comments 172

Уходя уходи: почему не стоит принимать контроффер

Reading time 6 min
Views 165K
Привет, Хабр! Меня зовут Женя Остроумова, и я рекрутёр_ка. Сегодня поговорим с вами про контрофферы.


Читать дальше →
Total votes 223: ↑183 and ↓40 +143
Comments 703

Битва двух якодзун, или Cassandra vs HBase. Опыт команды Сбербанка

Reading time 17 min
Views 12K
Это даже не шутка, похоже, что именно эта картинка наиболее точно отражает суть этих БД, и в конце будет понятно почему:



Согласно DB-Engines Ranking, две самых популярных NoSQL колоночных базы — это Cassandra (далее CS) и HBase (HB).



Волею судеб наша команда управления загрузки данных в Сбербанке уже давно и плотно работает с HB. За это время мы достаточно хорошо изучили её сильные и слабые стороны и научились её готовить. Однако наличие альтернативы в виде CS все время заставляло немного терзать себя сомнениями: а правильный ли выбор мы сделали? Тем более, что результаты сравнения, выполненного DataStax, говорили, что CS легко побеждает HB практически с разгромным счетом. С другой стороны, DataStax — заинтересованное лицо, и верить на слово тут не стоит. Также смущало достаточно малое количество информации об условиях тестирования, поэтому мы решили выяснить самостоятельно, кто же является королем BigData NoSql, и полученные результаты оказались весьма интересны.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 135

Всё, что вы хотели знать о МАС адресе

Reading time 9 min
Views 208K

Всем известно, что это шесть байт, обычно отображаемых в шестнадцатеричном формате, присвоены сетевой карте на заводе, и на первый взгляд случайны. Некоторые знают, что первые три байта адреса – это идентификатор производителя, а остальные три байта им назначаются. Известно также, что можно поставить себе произвольный адрес. Многие слышали и про "рандомные адреса" в Wi-Fi.


Разберемся, что это такое.


МАС адрес (media access control address) – уникальный идентификатор, назначенный сетевому адаптеру, применяется в сетях стандартов IEEE 802, в основном Ethernet, Wi-Fi и Bluetooth. Официально он называется «идентификатором типа EUI-48». Из названия очевидно, что адрес имеет длину в 48 бит, т.е. 6 байт. Общепринятого стандарта на написание адреса нет (в противоположность IPv4 адресу, где октеты всегда разделяют точками).Обычно он записывается как шесть шестнадцатеричных чисел, разделенных двоеточием: 00:AB:CD:EF:11:22, хотя некоторые производители оборудования предпочитают запись вида 00-AB-CD-EF-11-22 и даже 00ab.cdef.1122.

Читать дальше →
Total votes 111: ↑110 and ↓1 +109
Comments 74

10 признаков того, что хороший программист из вас не получится

Reading time 11 min
Views 329K
Привет, Хабр! Представляю вашему вниманию перевод статьи «10 Signs You Will Suck at Programming» автора Jonathan Bluks.



Очень часто на Reddit или Quora я вижу вопросы вида «Как понять, смогу ли я стать успешным программистом?» (На самом деле, эта статья является расширенным продолжением моего недавнего ответа на Quora.) Когда кто-то задумывается о смене карьеры или интересуется разработкой и хочет знать, что для этого требуется, неизбежно возникает этот самый вопрос.

Вообще, я думаю, что это главный барьер в умах людей, которые не получали фундаментального образования по программированию. Думать, что программист из вас так себе, совершенно естественно, и это мешает вам взяться за новое дело. Это как мечтать стать актером, но сомневаться, что вы вообще умеете играть.

Будучи преподавателем на курсе «Full-stack Web-development», я работал со многими программистами-новичками. Хорошая новость в том, что мне редко встречались студенты, которые вообще не могли научиться программировать. Я считаю, что умение программировать — такой же базовый навык, как умение читать, писать и считать. Это под силу любому, так как это одна из способностей человека, но этому действительно надо учиться.

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

Этот список поможет вам понять, сможете ли вы стать хорошим программистом, а также что делать, если вы решите это изменить.
Читать дальше →
Total votes 162: ↑139 and ↓23 +116
Comments 518

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity