Как стать автором
Обновить
28
0
Nashev @Nashev

Delphi

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

Как и зачем мы делали распознавание достопримечательностей в Облаке Mail.ru

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


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

Одной из целей Облака Mail.ru является обеспечение наиболее удобного доступа и поиска по своему фото и видеоархиву. Для этого мы — команда машинного зрения Mail.ru — создали и внедрили системы «умной» обработки фотографий: поиск по объектам, сценам, лицам и др. Еще одной такой яркой технологией является распознавание достопримечательностей. И сегодня я расскажу про то, как с помощью Deep Learning мы решили эту задачу.
Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии6

Как сделать из сайта приложение и выложить его в Google Play за несколько часов. Часть 1/2: Progressive Web App

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


Наверное, все близкие к веб-разработке люди уже наслышаны о Progressive Web App. Ещё бы! Эта технология практически уравняла веб и мобильную разработку с точки зрения распространения продуктов и вовлечённости пользователей.

Да, современный фронтенд, написанный, например, на React, работает как приложение. Но вот только скачивается это приложение в браузер и запускается из него. В этом и заключается огромный гандикап, который всегда имела мобильная разработка. Давайте подумаем, чем с точки зрения обычного пользователя, «приложение» отличается от «сайта». Сразу в голову приходит, что приложение в телефоне, а сайт на компьютере. Но ведь есть мобильный браузер, так что сайт и в телефоне тоже. Тогда остаётся 3 существенных отличия:
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии31

Автоматика из ДНК и белков: что у нее общего с электроникой?

Время на прочтение7 мин
Количество просмотров19K
(ответ биолога на статью «Вы неправильно пишете животных»)

image

В каждой клетке есть тысячи генов. Никогда не бывает так, чтобы они все работали одновременно. Клетки мышц, печени и мозга несут одинаковый набор генов. Они такие разные, потому что в них работают разные гены. Все клетки умеют включать и выключать отдельные гены в ответ на разные внешние воздействия. То есть система, которая управляет активностью генов — это такая система автоматического управления. Ученые хотят понимать, как такая автоматика работает, чтобы уметь ее чинить и взламывать. Например, в клетках человека есть система из примерно трехсот генов и белков, которая управляет делением клетки. Когда она ломается и клетка начинает все время делиться, возникает рак.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии31

Data science и качественный код

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

Обычно модели машинного обучения строят в jupyter-ноутбуках, код которых выглядит, мягко говоря, не очень — длинные простыни из лапши выражений и вызовов "на коленке" написанных функций. Понятно, что такой код почти невозможно поддерживать, поэтому каждый проект переписывается чуть ли не с нуля. А о внедрении этого кода в production даже подумать страшно.


Поэтому сегодня представляем на ваш строгий суд превью python'овской библиотеки по работе с датасетами и data science моделями. С ее помощью ваш код на python'е может выглядеть так:


my_dataset.
    load('/some/path').
    normalize().
    resize(shape=(256, 256, 256)).
    random_rotate(angle=(-30, 30)).
    random_crop(shape=(64, 64, 64))

for i in range(MAX_ITER):
    batch = my_dataset.next_batch(BATCH_SIZE, shuffle=True)
    # обучаем модель, подавая ей батчи с данными    

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


Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии13

Где смерть Кащеева?

Время на прочтение7 мин
Количество просмотров32K
Привет ребят, давайте для начала проверим вашу память. Итак:
«На море на океане есть остров, на том острове дуб стоит, под дубом сундук зарыт, в сундуке — заяц, в зайце — утка, в утке — яйцо» в яйце игла — смерть Кощея!

А теперь, внимание, вопрос — как это формализовать?
Как приатачить к яйцу иголку и какова временная сложность детача смертии моей. Как перенести сказку в быль, как это выглядит на B-деревьях и почему на самом деле нет разницы между 2D и 1D.
А было все так: давным давно, в неком царстве, некотором государстве, на одном сервисе с шейрингом геолокации очень захотелось Иванушке Дурачку на уровне ЧПУ разделить Москву(/RU/MOW/) и Область(/RU/MOS/). И вообще навести порядок, чтобы все лежало по полочкам красиво и по алфавиту. Но не получалось ему сокровища свои посчитать, и аккуратно разложить. А Василису, хоть и дурак, к сбережениям не пускал.
Но решение было найдено.
Совсем недалеко над каким-то златом успешно чах Чахлик, еще и смерть он свою прятал по науке.
И если задача определения региональной (точнее полигональной) принадлежности некой иголки к некому сундуку выходит за рамки данной статьи, то нам ничто не мешает погрузиться в глубины зайца и посмотреть как он устроен на табличном уровне.
PS: и не спрашивайте почему зайца.
Читать дальше →
Всего голосов 26: ↑20 и ↓6+14
Комментарии8

Путь верстальщика: с нуля до сеньора

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

Здравствуйте, меня зовут Александр Зеленин, и я веб-разработчик.
Многократно я слышал мнение, что верстка — удел начинающих frontend’еров. Хотя фактически это важнейшая часть любого (почти) веб-проекта. Это то, что пользователи видят в первую очередь. На текущий момент качественная вёрстка (особенно проектирование блоков) в крупном проекте требует большого количества различных навыков.


В данной статье представляю схему развития верстальщика


image
[большая по клику]
Само собой, это не всеобъемлющая и единственно верная схема. Есть ещё целая гора связанных навыков, релевантных технологий и так далее. Градация является субъективной.

Описание пути код катом
Всего голосов 47: ↑34 и ↓13+21
Комментарии173

CubeDB: минималистичное хранилище счётчиков с многомерными ключами

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


Привет, Хабр! Меня зовут Дима Станко, я работаю в BI-команде Badoo в лондонском офисе. Так уж сложилось в нашей компании, что мы стараемся проводить как можно больше измерений активности пользователей. Это необходимо многим специалистам: разработчики тестируют работоспособность кода, коллеги из продуктовых команд убеждаются в гениальности своих идей, админы – в том, что энтропия восторжествует не этой ночью, а коллеги из отдела антиспама – что добро как раз побеждает зло в вечной и эпической схватке.


Обо всём этом мы писали много раз и будем писать ещё, поскольку считаем, что наступать на грабли и не рассказывать о них другим – нехорошо.

Всего голосов 52: ↑50 и ↓2+48
Комментарии22

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

Время на прочтение10 мин
Количество просмотров89K
Ксения Каланова, выпускница нашего курса по копирайтингу и маркетолог в MERA, написала колонку для блога Нетологии о том, как заставить текст звучать «по-английски», даже когда до уровня Advanced еще далеко.

Вся моя жизнь связана с английским языком: школьные олимпиады, подготовка к вступительным экзаменам в вуз, пять лет на переводческом факультете, лето в США и путешествия по миру. В студенческие годы я работала письменным переводчиком, а сразу после выпуска — устным.

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

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



В этой статье я поделюсь секретами, как заставить текст звучать «по-английски», если вы не носитель языка. Для этого расскажу о 5 основных ошибках, которые мешают написать нормальный англоязычный текст.
Читать дальше →
Всего голосов 115: ↑107 и ↓8+99
Комментарии63

Расстановка полей и отступов в CSS

Время на прочтение4 мин
Количество просмотров156K
Box Model

В этой статье я хотел бы рассказать, как правильно расставлять поля (padding) и отступы (margin) в CSS.

Читать дальше →
Всего голосов 42: ↑33 и ↓9+24
Комментарии42

Специально для Хабра: интервью с Аланом Кеем

Время на прочтение32 мин
Количество просмотров25K
«К счастью или несчастью я научился хорошо читать в три года. Поэтому я успел прочитать около 150 книг до первого класса. Я всегда знал, когда учителя несли чушь.» — Алан Кей



Всем привет.
Раздобыл я, значит, е-мэйл Алана Кея. И задумал я задумку, пообщаться с этим легендарным пионером ИТ. Ну а чтоб накрутить важности и значимости, предложил я Алану Кею интервью от лица всего ИТ-сообщества российского. Он согласился. (И теперь Алан Кей знает, что Хабр — это круто!)

Напомню заслуги Алана
  • Работал в легендарном Xerox PARC, Atari, Apple, Disney, HP.
  • Предложил концепцию Dynabook (в 1968 году), которая определила концептуальную базу для ноутбука, планшетного компьютера и электронной книги.
  • Один из «отцов-основателей» объектно-ориентированного программирования (SmallTalk, 1969).
  • Участвовал в создании первого персонального компьютера Xerox Alto (1973).
  • Инициатор полезной движухи «Каждому ребенку по ноутбуку».
  • в 2001 году, он основал исследовательский Институт Viewpoints, некоммерческую организацию посвящённую детям, обучению и передовым разработкам программного обеспечения.
  • В 2006 бросил дерзкий вызов индустрии — заявил о возможности создания операционной системы с графическим интерфейсом из 20.000 строчек кода.
  • В 2016 присоединился к Y Combinator.


У меня была пара недель чтобы дотянуться до самых «передовых» ИТ-людей рунета. Это оказался довольно веселый и интересный квест. И своеобразный тест на свой/чужой, на знание истории ИТ, на адекватность, на связность ИТ-сообщества, на способность коммуницировать (у меня минус три френда в фейсбуке), на способность организаций/сообществ выступить как единое целое. Огромное спасибо тем, кто этот «тест» прошел.

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

За перевод особое спасибо Данилу Корневу, Александру Козлову и Сергею Даньшину. Если у вас есть рекомендации, как перевести какой-то смысловой блок лучше — пишите в личку.
Всего голосов 47: ↑46 и ↓1+45
Комментарии28

Алан Кей: Будущее «чтения» зависит от будущего «обучения сложным для понимания вещей»

Время на прочтение27 мин
Количество просмотров17K
«A change in perspective is worth 80 IQ points»
— Alan Kay

Алан Кей — крутой мужик, мы его на Хабре поздравляли с днюхой.

Напомню заслуги Алана.

  • Работал в легендарном Xerox PARC, Atari, Apple, Disney, HP.
  • Предложил концепцию Dynabook (в 1968 году), которая определила концептуальную базу для ноутбука, планшетного компьютера и электронной книги.
  • Один из «отцов-основателей» объектно-ориентированного программирования (SmallTalk, 1969).
  • Участвовал в создании первого персонального компьютера Xerox Alto (1973).
  • Инициатор полезной движухи «Каждому ребенку по ноутбуку».
  • в 2001 году, он основал исследовательский Институт Viewpoints, некоммерческую организацию посвящённую детям, обучению и передовым разработкам программного обеспечения.
  • В 2006 бросил дерзкий вызов индустрии — заявил о возможности создания операционной системы с графическим интерфейсом из 20.000 строчек кода.
  • В 2016 присоединился к Y Combinator.

Решили мы перевести его самую концептуальную статью и тут бац, оказывается, что в оригинальной статье нет куска текста. Написали мы в Viewpoints Research Institute, мол, опечатка у вас. Ответила нам Kim Rose, все объяснила, исправила и благославила.

Всего голосов 36: ↑36 и ↓0+36
Комментарии5

Как перейти от КЛАДР к ФИАС и ничего себе не сломать

Время на прочтение7 мин
Количество просмотров110K
ГНИВЦ ФНС сообщает, что с начала 2018 года КЛАДР перестанет существовать и скачать его будет нельзя.

Дисклеймер:
Если вы совсем не поняли, что означают эти наборы букв, ничего страшного. Ниже мы расскажем о реалиях работы с адресами в России. Если вам это неинтересно, почитайте про топографические каламбуры.

Правильные адреса нужны компаниям, которые любят своих клиентов. Знакомые банки, страховые и интернет-магазины, которые сейчас используют справочник КЛАДР, спрашивают нас, что же делать дальше. Поэтому мы запарились и написали пошаговое руководство по переходу с одних букв на другие от КЛАДР к ФИАС.


Поехали!
Всего голосов 24: ↑24 и ↓0+24
Комментарии26

Обзор способов и протоколов аутентификации в веб-приложениях

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


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.

Однако в современных системах существуют и более сложные схемы аутентификации и авторизации, о которых я расскажу далее. Но начнем с простого и понятного.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии20

Настройка SSL для TomCat

Время на прочтение6 мин
Количество просмотров83K
Пару недель назад столкнулся с проблемой — стоит TomCat на сервере(windows 2008), ставлен не мной, мало того, я даже не видел как его ставили. Нужно сделать авторизацию по SSL протоколу. Раньше никогда не настраивал веб-сервера ни на винде ни на никсах, а решать нужно в кратчайшие сроки — 3 дня. Решил спросить у гугла с яндексом и нашел куче статей как сделать SSL шифрование канала и одну малопонятную о «двухфазной авторизации». Мучался все 3 дня и на исходе срока получил решение (как всегда светлая идея пришла с великого бодуна). Теперь подробнее:
как устанавливать TomCat описывать не буду, т.к. таких статей валом.
Для начала создаём хранилище (keystore) с ключом:
Наберем в коммандной строке следующий код:

>keytool -genkey -alias tomcat -keyalg RSA -keystore mystore -validity 999 -keysize 512

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

Осторожно: HSTS

Время на прочтение3 мин
Количество просмотров96K
Про HSTS на Хабре уже писали, этот механизм включен в генераторе конфигов для веб-серверов от Mozilla. Написать этот пост я решил за один день столкнувшись с недоступность сразу двух крупных сайтов из-за HSTS.

TL;DR
Тщательно проверяйте работу сайта по TLS перед включением HSTS, особенно если это большой портал с кучей субдоменов и управляемый разными людьми.

Что такое HSTS?


HSTS (HTTP Strict Transport Security) — это механизм защиты от даунгрейд-атак на TLS, указывающий браузеру всегда использовать TLS для сайтов с соответствующими политиками. Стандарт описан в RFC6797, а политики бывают двух видов:

Динамические


Политика применяется из HTTP-заголовка Strict-Transport-Security при первом заходе на сайт по HTTPS, в нём указан срок действия и применимость к субдоменам:

Strict-Transport-Security: max-age=15768000; includeSubDomains;

Статические


Статические политики захардкожены в браузер и для некоторых сайтов включает привязку к вышестоящему CA, выпустевшему сертификат (например: google.com, paypal.com или torproject.org). Причем она может действовать только когда сайт открыт через TLS, разрешая незащищённое соединение, но блокируя MitM с подменой сертификата.

Список из Chromium используют все популярные браузеры (Firefox, Safari и IE 11+Edge) и добавить в него сайт может любой желающий, если веб-сервер отдаёт заголовок Strict-Transport-Security со сроком действия от двух лет и ключевым словом preload в конце:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии16

Обработка строк в Java. Часть I: String, StringBuffer, StringBuilder

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

Вступление


Что вы знаете о обработке строк в Java? Как много этих знаний и насколько они углублены и актуальны? Давайте попробуем вместе со мной разобрать все вопросы, связанные с этой важной, фундаментальной и часто используемой частью языка. Наш маленький гайд будет разбит на две публикации:

  1. String, StringBuffer, StringBuilder (реализация строк)
  2. Pattern, Matcher (регулярные выражения)

Реализация строк на Java представлена тремя основными классами: String, StringBuffer, StringBuilder. Давайте поговорим о них.
Читать дальше →
Всего голосов 30: ↑21 и ↓9+12
Комментарии68

Квинтовый круг: Говорим о музыке простыми словами

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


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

Впервые квартово-квинтовый круг был описан в книге «Идея грамматики мусикийской» от 1679 года русско-украинского композитора Николая Дилецкого.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии60

Почему некоторые ноты гармонично звучат вместе

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


Вы никогда не задумывались, почему некоторые ноты больше подходят друг другу, чем другие? Как связаны между собой частоты их волн? Почему ноты одной тональности звучат «хорошо»? Почему «хорошо» звучат ноты в составе аккорда?
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии65

Эгоцентрический веб

Время на прочтение4 мин
Количество просмотров14K
Представьте себе интернет, в котором абсолютно всё вращается вокруг одного конкретного человека. И этот человек — вы.

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

Эти сайты в один прекрасный день говорят: «Нам тяжко от вашего наплыва, мы больше не разрешаем пользоваться нашим API сторонним программам. Используйте нашу единственно верную программу для доступа с мобильника (разумеется, с назойливой рекламой и собственным видением термина „удобство“).»

Давайте пофантазируем, каким может стать интернет, если мы перевернём всё с ног на голову.
Читать дальше →
Всего голосов 73: ↑54 и ↓19+35
Комментарии117

Find.By — finding & verifying locators

Время на прочтение1 мин
Количество просмотров5.8K
Начну эту статью с того, что я работаю QA Automationg и того, что я люблю автоматизировать все рутинные действия. Так вот в последнее время для меня таковым стало написание, редактирование и проверка локаторов к элементам на странице.

Обычно это процесс выглядит так: я пишу xpath выражение в chrome или firepath, потом копирую его и добавляю атрибут к элементу в C# коде. Но локаторы часто нужно исправлять или просто проверить, на какой элемент он указывает. И даже такое просто изменение предиката как [@id='myId'] на [contains(@id = 'Id')] заканчивается падением теста во время выполнения потому, что я написал '=' вместо ',' и поленился проверить изменения. В общем, слишком много действий с копированием, вставкой, переключений между окнами и тому подобного для такой простой задачи. Решил я написать плагин для ReSharper, который бы по Alt+Enter подсвечивал мой элемент в браузере.
Посмотреть плагин
Всего голосов 15: ↑14 и ↓1+13
Комментарии4

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность