Pull to refresh
0
0

Backend

Send message

Никто (почти) не знает, что такое авторизация

Reading time5 min
Views91K

За время работы архитектором в проектах внедрения IdM я проанализировал десятки реализаций механизмов авторизации как во внутренних решениях компаний, так и в коммерческих продуктах, и могу утверждать, что практически везде при наличии относительно сложных требований они сделаны не правильно или, как минимум, не оптимально. Причиной, на мой взгляд, является низкое внимание и заказчика и разработчиков к данному аспекту на начальных этапах и недостаточная оценка влияния требований. Это косвенно подтверждает повсеместное неправильное использование термина: когда я вижу словосочетание «двухфакторная авторизация», у меня начинаются боли чуть ниже спины. Ради интереса мы проанализировали первые 100 статей на Хабре в выдаче по запросу «авторизация», результат получился неутешительный, боли было много:
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments110

nomoregoogle.com — свежий сборник альтернатив сервисам технологического гиганта

Reading time2 min
Views38K


Доминация Google в ряде сегментов совокупно с политикой компании стали вызывать так много вопросов в последние годы, что практически на всех тематических форумах и площадках пользователи начали активно делиться своим «Google-free» опытом — информацией о попытках частично или полностью избавиться от сервисов компании в повседневном обиходе.

Дошло вплоть до того, что активист Pieter @levelsio Levels создали целый сайт — nomoregoogle.com, который представляет перечень сервисов компании Google с перечислением достойных, по мнению составителей списка, альтернатив. Цель очевидна — вырваться из экосистемы технологического гиганта, которая, будто черная дыра, засасывает в себя не только пользователей, но даже соседей по цеху (в начале прошлой неделе мы писали о слухах про отказ EdgeHTML, а к концу недели эту информацию официально подтвердили в Microsoft: даже несгибаемые «майки» переходят на Chromium в своем браузере по умолчанию, что пугает).
Читать дальше →
Total votes 83: ↑79 and ↓4+75
Comments89

Архитектура REST

Reading time4 min
Views900K

Введение


В русскоязычной части Интернета присутствует большое количество статей, посвященных веб-службам на основе SOAP и XML-RPC, но почему-то почти ничего нет про вполне заслуживающую внимания (но менее распространенную) архитектуру RESТ.

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

Читать дальше →
Total votes 85: ↑78 and ↓7+71
Comments75

Телекоммуникации стадиона «Екатеринбург Арена»: 20 километров толстенного кабеля

Reading time5 min
Views20K


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

В случае Центрального стадиона в Екатеринбурге коаксиала было много. Очень много.

По всему объекту стоят ТВ-боксы. Приходят телевизионщики, открывают бокс, а там оптические соединения и триаксиал — они втыкаются и передают свой контент на передвижную станцию. Передвижная станция — это машина с дуплексной спутниковой связью где-то за пределами чаши стадиона. Приезжает, на периметре раскрывается, оттуда выходят парни, например, с «Матч ТВ», подключаются к ТВ-боксу, и футбол летит по воздуху ко всем телевизорам страны. Есть аппаратная, которая может перенаправлять это в конференц-зал, пресс-центр. Жилы по всему стадиону, там просто бешеное количество кабельной массы.
Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments27

Зачем при наличии электропитания нужен старый добрый угольный котёл в вагоне

Reading time5 min
Views119K


Это преобразователь питания пассажирского вагона дальнего следования. В современном вагоне электричество нужно почти для всего, начиная от 5 Вольт в розетках USB, 220 В в розетках для пассажиров в каждом купе и на микроволновке у проводника, 110 В для системы управления. И ещё не считая таких мелочей, как насосы, водонагреватели, кондиционеры, обеззараживатели и моторы дверей.

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

И при этом всём даже на самые современные вагоны продолжают ставить угольные котлы.
Читать дальше →
Total votes 215: ↑214 and ↓1+213
Comments552

Проектирование RESTful API с помощью Python и Flask

Reading time15 min
Views274K
В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

Что такое REST?


Характеристика системы REST определяется шестью правилами дизайна:

  • Клиент-Сервер: Должно быть разделение между сервером, который предлагает сервис и клиентом, который использует ее.
  • Stateless: Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для выполнения запроса. Другими словами, сервер не обязан сохранять информацию о состоянии клиента.
  • Кэширование: В каждом запросе клиента должно явно содержаться указание о возможности кэширования ответа и получения ответа из существующего кэша.
  • Уровневая система: Клиент может взаимодействовать не напрямую с сервером, а с произвольным количеством промежуточных узлов. При этом клиент может не знать о существовании промежуточных узлов, за исключением случаев передачи конфиденциальной информации.
  • Унификация: Унифицированный программный интерфейс сервера.
  • Код по запросу: Сервера могут поставлять исполняемый код или скрипты для выполнения их на стороне клиентов.

Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments32

Вентиляция санузла с умом

Reading time3 min
Views75K
Заходя в свой квартирный санузел, в очередной раз с досадой замечаю гул включившейся вентиляции, в самом факте вентиляции не вижу ничего плохого, но вот вопрос удобности и функциональности работы вентиляции в санузле мне не нравится. Дело в том что вентилятор принудительной вентиляции у меня в квартире (наверное у многих так) подключен параллельно с выключателем света и работает только тогда когда включен свет. В связи со сложившимися обстоятельствами и наличием возможности — решил изменить сиё положение вещей, и создать автоматизированную систему вентиляции санузла. Так как вентиляция должна работать, но мешать не должна, решил делать так.

Предварительная идея


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

В качестве контроллера взял Ардуино Нано, самый простой датчик света и реле — все это добро можно с легкостью купить на сумму до 500 рублей у китайцев на Али или прочих сайтах по электронике. Так же нужен блока питания.


Читать дальше →
Total votes 47: ↑40 and ↓7+33
Comments268

Проектирование простых приложений в Flask

Reading time11 min
Views52K
Данная статья, размещенная в репозитории Flask на GitHub, является плодом коллективного творчества небезразличных программистов, а изначальный её автор — Brice Leroy. Она представляет собой достаточно полезный для начинающих материал по Flask. Лично для меня он стал ответом на многие простые вопросы, основным из которых был «как структурировать проект».

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

Описанный пример протестирован на Python 3.5, Flask 0.10, Flask-SQLAlchemy 2.1, Flask-WTF 0.9.

Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments11

Готовый шаблон сайта с регистрацией, юзерами и админами на Flask с базами SQL или MongoDB

Reading time3 min
Views50K
flask

Бывает, приходится делать сайты на flask, у которых есть пользователи и админы. Чисто для себя решил как-то это стандартизировать и, главное, не терять время, когда такая задача появляется. Цель — в несколько команд получить рабочий сайт у которого есть:

  • Регистрация
  • Email подтверждение
  • Авторизация
  • Выход (logout)
  • Администраторы и роли администраторов
  • Административная, пользовательская и публичная часть сайта
  • Возможность юзера менять пароль
  • Восстановление пароля
  • Локализация для иностранных языков
Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments10

Встраиваем Touch ID в iOS приложение

Reading time8 min
Views30K


Вступление


Начиная с iOS 8 Apple открывает доступ к возможности использования технологии Touch ID (аутентификации с помощью сканера отпечатков пальцев, встроенного в iPhone 5s) в сторонних приложениях. В связи с этим я хотел бы поделиться с вами подробной информацией о том, что же именно стало доступно разработчикам, как это встроить в свое приложение, каким поведением это обладает, а также поделиться удобной «оберткой», которая реализует наиболее, на мой взгляд, вероятный сценарий использования Touch ID.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments21

Эффективная оценка медианы

Reading time5 min
Views33K
Итак, у Вас есть какой-то поток данных. Большой такой поток. Или уже готовый набор. И хочется определить какие-то его характеристики. Алгоритм определения минимального и максимального значения могут придумать даже не программисты. Вычисление среднего уже чуть сложнее, но тоже не представляет никаких трудностей — знай подсчитывай себе сумму да инкрементируй счетчик на каждое новое значение. Среднеквадратичное отклонение — все то же самое, только числа другие. А как насчет медианы?

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

Строго говоря, из определения следует, что для вычисления точного значения медианы нам нужно хранить всю выборку, иначе нет никаких гарантий, что мы насчитали именно то, что хотели. Но для непрерывных и больших потоков данных точное значение все равно не имеет большого смысла — сейчас оно одно, а через новых 100 отсчетов — уже другое. Поэтому эффективный метод оценки медианы, который не будет требовать много памяти и ресурсов CPU, и будет давать точность порядка одного процента или лучше — как раз то что нужно.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments22

Python: Работа с базой данных, часть 1/2: Используем DB-API

Reading time6 min
Views520K
часть 1/2: Используем DB-API часть 2/2: Используем ORM
Python DB-API – это не конкретная библиотека, а набор правил, которым подчиняются отдельные модули, реализующие работу с конкретными базами данных. Отдельные нюансы реализации для разных баз могут отличаться, но общие принципы позволяют использовать один и тот же подход при работе с разными базами данных.

В статье рассмотрены основные методы DB-API, позволяющие полноценно работать с базой данных. Полный список можете найти по ссылкам в конец статьи.

Требуемый уровень подготовки: базовое понимание синтаксиса SQL и Python.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments38

История мобильного интернета: 1991 – наши дни

Reading time6 min
Views63K
image
Источник

Хотя плавный процесс эволюции мобильного интернета растянулся на десятилетия (и продолжается по сей день), мобильный доступ к данным стал стремительно менять нашу жизнь уже в начале и середине 2000-х годов, когда распространялись сети третьего поколения.
Пока телефоны становились всё меньше и производительнее, интернет адаптировался к мобильным платформам, росла скорость передачи данных (сети 4G улучшили пропускную способность примерно в десять раз по сравнению с 3G), мобильная связь становилась вездесущей.

Сегодня мы расскажем историю легендарного технологического рывка в телекоме: переход технологии от лабораторных стендов к массовому распространению по всему миру.
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments23

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Reading time20 min
Views314K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

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

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

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Total votes 335: ↑318 and ↓17+301
Comments244

Почему физики всё ещё используют Fortran

Reading time8 min
Views78K
Не знаю, как будет выглядеть язык программирования в 2000-м году, но я знаю, что называться он будет FORTRAN.
— Чарльз Энтони Ричард Хоар, ок. 1982

В индустрии Fortran сегодня используется редко – в одном из списков популярных языков он оказался на 28-м месте. Но Fortran всё ещё главный язык для крупномасштабных симуляций физических систем – то есть для таких вещей, как астрофизическое моделирование звёзд и галактик (напр. Flash), крупномасштабной молекулярной динамики, коды подсчёта электронных структур (SIESTA), климатические модели, и т.п. В области высокопроизводительных вычислений, подмножеством которых являются крупномасштабные числовые симуляции, сегодня используются лишь два языка – C/C++ и «современный Fortran» (Fortran 90/95/03/08). Популярные библиотеки Open MPI для распараллеливания кода были разработаны для двух этих языков. В общем, если вам нужен быстрый код, работающий на нескольких процессорах, у вас есть только два варианта. В современном Fortran есть такая особенность, как "coarray", позволяющая прямо в языке работать с параллельным программированием. Coarray появились в расширении Fortran 95, а затем были включены в Fortran 2008.

Активное использование Fortran физиками часто приводит в замешательство специалистов по информатике и других не связанных с этой областью людей, которым кажется, что Fortran – исторический анахронизм.
Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments125

«Календарь тестировщика» за март. Протестируй безопасность

Reading time8 min
Views16K
Продолжаем цикл статьей «Календарь тестировщика», в этом месяце поговорим о тестировании безопасности. Многие не знают с чего начать и пугаются сложностей. Иван Румак, тестировщик безопасности веб-приложений в Контуре, поделился основами в поиске уязвимостей. Новички найдут в статье базовые знания, а опытным тестировщикам будет полезен раздел про обход защиты от CSRF.

В прошлом году Иван занял 4 место в программе поиска уязвимостей Mail.ru и вошел в призовые топ-100 соревнования Hack The World 2017.

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



Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments4

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

Reading time4 min
Views27K


Приветствую, Хабр! Есть очень много вопросов, на которые нельзя ответить однозначно, но ответ нужен. Мне, например, каждый день задают вопрос, сколько стоит корпус вот для такого вот устройства. При всей очевидности вопроса сходу сказать не получается. Нужно считать.

В качестве ответа предлагаю эту статью. Прочитав ее, вы сможете самостоятельно за пару минут прикинуть, сколько будет стоить корпус для вашего продукта и какую технологию выбрать, чтобы его цена была для вашего бизнеса выгодной. Разумеется, цифры очень условные и идут из совокупного опыта за те года, которые мы в Формлабе занимаемся корпусам.
Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments100

Слушайте! 50 лучших подкастов для разработчиков

Reading time12 min
Views19K
Развиваться, узнавать о технологиях и быть в курсе последних подходов – для ITшника особенно важно. Читать книгу не всегда удобно, смотреть видео-обзоры любят не все и времени много занимает.

Держите 50 IT-подкастов о технологических новинках в сфере ИБ, облачных технологий, IoT, тестирования и управления проектами. Все подкасты на английском языке, для прослушивания нужно знать его на уровне upper intermediate и выше.


Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments6

Люди не хотят чего-то действительно нового — они хотят привычное, но сделанное иначе

Reading time4 min
Views16K

От переводчика: это довольно старая статья 2015 года, однако, на мой скромный вкус, она по-прежнему актуальна, как и многие другие материалы от Нира Эяля.
Если ваш новый продукт или сервис не набирает популярность, спросите себя: как найти мой ролл «Калифорния»?
Должен признать, что бенто-ланч едва ли является источником серьёзных бизнес-уроков. Однако, давайте взглянем на ролл «Калифорния» — понимание влияния этого знакового блюда японской кухни может помочь привести ваш продукт к успеху и избежать провала.
Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments40

Yargy-парсер и библиотека Natasha. Извлечения структурированной информации из текстов на русском языке

Reading time12 min
Views83K
В 2020 году библиотека Natasha значительно обновилась, на Хабре опубликована статья про актуальную версию. Чтобы использовать инструменты, описанные в этом тексте, установите старую версию библиотеки pip install natasha<1 yargy<0.13.

Раздел про Yargy-парсер актуален и сейчас.


Есть стандартная задача извлечения именованных сущностей из текста (NER). На входе текст, на выходе структурированные, нормализованные объекты, например, с именами, адресами, датами:



Задача старая и хорошо изученная, для английского языка существует масса коммерческих и открытых решений: Spacy, Stanford NER, OpenNLP, NLTK, MITIE, Google Natural Language API, ParallelDots, Aylien, Rosette, TextRazor. Для русского тоже есть хорошие решения, но они в основном закрытые: DaData, Pullenti, Abbyy Infoextractor, Dictum, Eureka, Promt, RCO, AOT, Ahunter. Из открытого мне известен только Томита-парсер и свежий Deepmipt NER.

Я занимаюсь анализом данных, задача обработки текстов одна из самых частых. На практике оказывается, что, например, извлечь имена из русского текста совсем непросто. Есть готовое решение в Томита-парсере, но там неудобная интеграция с Python. Недавно появилось решение от ребят из iPavlov, но там имена не приводятся к нормальной форме. Для извлечения, например, адресов («ул. 8 Марта, д.4», «Ленинский проезд, 15») открытых решений мне не известно, есть pypostal, но он чтобы парсить адреса, а не искать их в тексте. C нестандартными задачами типа извлечения ссылок на нормативные акты («ст. 11 ГК РФ», «п. 1 ст. 6 Закона № 122-ФЗ») вообще непонятно, что делать.

Год назад Дима Веселов начал проект Natasha. С тех пор код был значительно доработан. Natasha была использована в нескольких крупных проектах. Сейчас мы готовы рассказать о ней пользователям Хабра.
Natasha — это аналог Томита-парсера для Python (Yargy-парсер) плюс набор готовых правил для извлечения имён, адресов, дат, сумм денег и других сущностей.
В статье показано, как использовать готовые правила из Natasha и, самое главное, как добавлять свои с помощью Yargy-парсера.
Читать дальше →
Total votes 87: ↑86 and ↓1+85
Comments33

Information

Rating
Does not participate
Registered
Activity