Как стать автором
Обновить
42
0
Адяков Денис @dozent

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

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

Биометрические системы Apple и их безопасность

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

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

Биометрия не является полноценной заменой код-пароля, так как при работе с настройками безопасности и раз в 48 часов вам обязательно нужно его вводить. Тем не менее, она существенно упрощает жизнь. С другой стороны, в случае код-пароля единственным носителем этой информации является ваш головной мозг (да, да, автор не в курсе о существовании бумаги и ручки, всё так), откуда вытащить информацию, конечно, можно, но это очень сложно. Казалось бы, с биометрией всё точно также. Но нет. При определенном старании вы можете заполучить биометрию владельца незаметно для него: отпечаток пальца, параметры лица, ну и сетчатку глаза (это наиболее труднодоступная информация, но из головного мозга достать пароль всё ещё сложнее, не прибегая к известным методам).

Поэтому с помощью биометрии вы не можете получить доступ к тем же настройкам безопасности — вас в любом случае обяжут вводить пароль.

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

Читать далее
Всего голосов 36: ↑34 и ↓2+32
Комментарии0

Может ли модель поведенческих типов человека стать эффективным инструментом в работе? Опыт продакт-менеджера

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

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

Меня зовут Саша Гришин, я продакт-менеджер облачных баз данных в Selectel. Сегодня я расскажу про одну из таких попыток систематизации, которую я использую в работе, — модель DISC. Она мне нравится, потому что довольно проста, оперирует понятными параметрами и не требует дополнительного психологического образования.

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

Под катом расскажу, из чего состоит модель, как распознать тип человека в первые 10-15 минут общения и разберу применение модели на практике.
Читать дальше →
Всего голосов 61: ↑58 и ↓3+55
Комментарии11

CQRS. Факты и заблуждения

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

CQRS — это стиль архитектуры, в котором операции чтения отделены от операций записи. Подход сформулировал Грег Янг на основе принципа CQS, предложенного Бертраном Мейером. Чаще всего (но не всегда) CQRS реализуется в ограниченных контекстах (bounded context) приложений, проектируемых на основе DDD. Одна из естественных причин развития CQRS — не симметричное распределение нагрузки и сложности бизнес-логики на read и write — подсистемы Большинство бизнес-правил и сложных проверок находится во write — подсистеме. При этом читают данные зачастую в разы чаще, чем изменяют.

Не смотря на простоту концепции, детали реализации CQRS могут значительно отличаться. И это именно тот случай, когда дьявол кроется в деталях.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии108

Переход от монолита к микросервисам: история и практика

Время на прочтение17 мин
Количество просмотров22K
В этой статье я расскажу о том, как проект, в котором я работаю, превращался из большого монолита в набор микросервисов.

Проект начал свою историю довольно давно, в начале 2000. Первые версии были написаны на Visual Basic 6. С течением времени стало понятно, что разработку на этом языке в будущем будет сложно поддерживать, так как IDE и сам язык развиваются слабо. В конце 2000-х было решено переходить на более перспективный C#. Новая версия писалась параллельно с доработкой старой, постепенно все больше кода было на .NET. Backend на C# изначально ориентировался на сервисную архитектуру, однако при разработке использовались общие библиотеки с логикой, да и запускались сервисы в едином процессе. Получилось приложение, которое мы называли «сервисный монолит».

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

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


Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии3

Принципы SOLID в картинках

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


Если вы знакомы с объектно-ориентированным программированием, то наверняка слышали и о принципах SOLID. Эти пять правил разработки ПО задают траекторию, по которой нужно следовать, когда пишешь программы, чтобы их проще было масштабировать и поддерживать. Они получили известность благодаря программисту Роберту Мартину.

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

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

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

Ну, приступим.
Читать дальше →
Всего голосов 64: ↑59 и ↓5+54
Комментарии26

Как масштабироваться с 1 до 100 000 пользователей

Время на прочтение7 мин
Количество просмотров20K
Через такое прошли многие стартапы: каждый день регистрируются толпы новых пользователей, а команда разработчиков изо всех сил пытается поддержать работу сервиса.

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

Попытаемся отфильтровать информацию и записать основную формулу. Мы собираемся пошагово масштабировать наш новый сайт для обмена фотографиями Graminsta с 1 до 100 000 пользователей.

Запишем, какие конкретные действия необходимо сделать при увеличении аудитории до 10, 100, 1000, 10 000 и 100 000 человек.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии25

Основы масштабирования

Время на прочтение10 мин
Количество просмотров62K
Прочитав в этом блоге о балансировке на стороне клиента, решил опубликовать свою статью, в которой описаны основные принципы масштабирования для web-проектов. Надеюсь, хабралюдям будет интересно почитать.

Основы масштабирования



Масштабируемость — способность устройства увеличивать свои
возможности
путем наращивания числа функциональных блоков,
выполняющих одни и
те же задачи.
Глоссарий.ru

Обычно о масштабировании начинают думать тогда, когда один
сервер не справляется с возложенной на него работой. С чем именно он не
справляется? Работа любого web-сервера по большому счету сводится к основному
занятию компьютеров — обработке данных. Ответ на HTTP (или любой другой) запрос
подразумевает проведение некоторых операций над некими данными. Соответственно,
у нас есть две основные сущности — это данные (характеризуемые своим объемом) и
вычисления (характеризуемые сложностью). Сервер может не справляться со своей
работой по причине большого объема данных (они могут физически не помещаться на
сервере), либо по причине большой вычислительной нагрузки. Речь здесь идет,
конечно, о суммарной нагрузке — сложность обработки одного запроса может быть
невелика, но большое их количество может «завалить» сервер.

Читать дальше →
Всего голосов 68: ↑67 и ↓1+66
Комментарии49

Domain Driven Design на практике

Время на прочтение12 мин
Количество просмотров265K
Эванс написал хорошую книжку с хорошими идеями. Но этим идеям не хватает методологической основы. Опытным разработчикам и архитекторам на интуитивном уровне понятно, что надо быть как можно ближе к предметной области заказчика, что с заказчиком надо разговаривать. Но не понятно как оценить проект на соответствие Ubiquitous Language и реального языка заказчика? Как понять, что домен разделен на Bounded Context правильно? Как вообще определить используется DDD в проекте или нет?

Последний пункт особенно актуален. На одном из своих выступлений Грег Янг попросил поднять руки тех, кто практиукует DDD. А потом попросил опустить тех, кто создает классы с набором публичных геттеров и сеттеров, располагает логику в «сервисах» и «хелперах» и называет это DDD. По залу прошел смешок:)

Как же правильно структурировать бизнес-логику в DDD-стиле? Где хранить «поведение»: в сервисах, сущностях, extension-методах или везде по чуть-чуть? В статье я расскажу о том, как проектирую предметную область и какими правилами пользуюсь.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии18

Как стать долларовым миллионером за 30 лет, лежа на диване

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


На Хабре недавно вышел пост ״Новичкам фондового рынка: честные разговоры о трейдинге״. Этот пост, опубликованный в одном из самых читаемых блогов Хабра, вводит людей в заблуждение и создает у них ложное представление о том, что игра на бирже — хороший способ заработка. Это вынудило меня написать комментарий, постепенно переросший в целую статью, с детальным разбором того, почему трейдинг — это не способ разбогатеть, а способ потерять деньги, и о том, как на самом деле заработать на инвестициях.
Поехали!
Всего голосов 308: ↑291 и ↓17+274
Комментарии557

Переход с jQuery на Vue.js

Время на прочтение10 мин
Количество просмотров40K
Автор статьи, перевод которой мы публикуем сегодня, полагает, что в мире существует ещё много программистов, которые, когда им нужно разработать простое веб-приложение, обращаются к jQuery. Обычно это случается тогда, когда некую страницу нужно оснастить простыми интерактивными возможностями, но использование для этого какого-нибудь JavaScript-фреймворка кажется явным перебором. Ведь это — килобайты ненужного кода, шаблоны, инструменты для сборки проектов, средства для упаковки модулей… При этом подключить к странице jQuery, воспользовавшись CDN-ресурсом, проще простого.



В этом материале речь пойдёт о том, как перевести проект, созданный с использованием jQuery, на Vue.js. Этот проект будет создан на jQuery, а потом переработан с применением Vue. Автор материала хочет продемонстрировать всем желающим то, что использование Vue, даже в сравнительно небольших проектах, не обязательно означает чрезмерное увеличение размера кода таких проектов и большую дополнительную нагрузку на программиста. Это, наоборот, при практически тех же размерах вспомогательного кода, что и при использовании jQuery, позволяет повысить производительность труда и улучшить качество приложений.
Читать дальше →
Всего голосов 50: ↑48 и ↓2+46
Комментарии43

Angular 5

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

Введение


1 ноября 2017 года Google анонсировали мажорную версию Angular 5.0.0 под кодовым названием «пятиугольный пончик». Новая версия включает в себя новые функции и исправления ошибок, и в тоже время основной упор был снова сделан на то, чтобы уменьшить размер Angular, сделать его быстрым и простым в использовании. Полное описание всех изменений, включая критические, можно посмотреть в changelog файле официального репозитория Angular.


От переводчиков


Всем привет, с вами Максим Иванов и Дмитрий Сергиенков, и сегодня мы поговорим о вышедшей новой версии, кратко рассмотрим некоторые из наиболее важных изменений и вспомним историю Angular. Также для тех кто только начинает изучать этот фреймворк, мы рассмотрим примеры того, как быстро разворачивать приложение на Angular. Хотелось бы отметить, что вы можете присоединиться к отечественному сообществу Angular в Telegram, а также посещать Angular Meetup в Москве.

Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии38

Окружение для разработки веб-приложений на TypeScript и React: от 'hello world' до современного SPA. Часть 1

Время на прочтение14 мин
Количество просмотров36K
Цель данной статьи — вместе с читателем написать окружение для разработки современных веб-приложений, последовательно добавляя и настраивая необходимые инструменты и библиотеки. По аналогии с многочисленными starter-kit / boilerplate репозиториями, но наш, собственный.

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

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

image
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии11

Выбираем оптимальный процессор для ноутбуков диапазона 30-50 тыс рублей

Время на прочтение16 мин
Количество просмотров68K
Мы продолжаем «потрошить» ноутбуки с целью выбора оптимального CPU. В прошлой публикации мы сконцентрировались на бюджетных моделях. Теперь посмотрим, как обстоят дела у их более дорогих собратьев — стоимостью от 30 до 50 тыс. рублей. Под катом — обзор, анализ, сравнительные таблицы и обоснованные выводы.


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

Типичное использование Observable объектов в Angular 4

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

Представляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.



Подписка на параметр роутера и мапинг на другой Observable


Задача: При открытии страницы example.com/#/users/42, по userId получить данные пользователя.


Решение: При инициализации компоненты UserDetailsComponent мы подписываемся на параметры роутера. То есть если userId будет меняться — будер срабатывать наша подписка. Используя полученный userId, мы из сервиса userService получаем Observable с данными пользователя.


// UserDetailsComponent

ngOnInit() {
  this.route.params
    .pluck('userId') // получаем userId из параметров
    .switchMap(userId => this.userService.getData(userId))
    .subscribe(user => this.user = user);
}

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

Как я проходил собеседования на позицию Junior .Net Developer

Время на прочтение8 мин
Количество просмотров266K
Приветствую всех. Сегодня расскажу вам как я проходил собеседования в Москве на позицию .Net Developer. Усиленно готовился к собеседованиям месяц, целыми днями сидел и смотрел вопросы и пытался отвечать на них, а также читал книжки по С#. В статье привожу интересные задачки и вопросы, которые мне задавали в разных компаниях в Москве. Заранее скажу, что я попал в ту компанию, в которую хотел. Я прошел 4 собеседования в этой компании и меня наконец то взяли! Много статей было прочитано в частности здесь и надеюсь, что эту статью тоже будут читать начинающие Net разработчики и спрашивать все в комментариях.

Кому интересна тема прохождения собеседований, прошу под кат!
Читать дальше →
Всего голосов 64: ↑51 и ↓13+38
Комментарии158

Настройка среды разработки Webpack 3 + Angular 4: от сложного к простому

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

Современное front-end-приложение на Angular должно включать в себя следующие характеристики:

  • Возможность использования типизированного JS — Typescript
  • Обеспечение удобства и производительности разработки с помощью HMR (hot module replacement);
  • Модульность приложений и возможность отложенной загрузки модулей (Lazy Loading);
  • AoT — режим (ahead-of-time), повышающий производительность приложения.

Существует много вариантов сборки, решающих эти задачи (angular cli, A2 seed и т. д.). Обычно они имеют сложную структуру, плохо настраиваются/расширяются и представляют собой монолит, который невозможно изменить.

В статье я расскажу, как совместить Angular 2+ с webpack и разобраться со всеми этапами сборки/разработки.

Вы удивитесь, как это просто.
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии23

Эти токсичные, токсичные собеседования

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


Всё началось, когда автор Ruby on Rails признался миру:

Всего голосов 205: ↑197 и ↓8+189
Комментарии734

Как я использую git

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

Intro


Основам git мне пришлось научиться на своем первом месте работы (около трех лет назад).
С тех пор я считал, что для полноценной работы нужно запомнить всего-лишь несколько команд:


  • git add <path>
  • git commit
  • git checkout <path/branch>
  • git checkout -b <new branch>

И дополнительно:


  • git push/pull
  • git merge <branch>
  • git rebase master (а что, можно еще и на другие ветки ребейзить? О_о)

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

Читать дальше →
Всего голосов 117: ↑106 и ↓11+95
Комментарии195

Как фрилансеру открыть фирму в Латвии и какие преимущества это дает

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

1. Введение


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



Я тоже довольно долго изучал эти вопросы. Российское законодательство по этим вопросам сильно зарегулировано, и все эти законы и правила причиняют массу проблем фрилансерам, работающим на зарубежный рынок. В итоге я принял решение перевести свой «бизнес» в другую юрисдикцию. Изучив все возможные варианты, я выбрал такой путь — зарегистрировать фирму ООО в Латвии, и принимать платежи от заказчиков на эту фирму. То есть просто переместить свой бизнес из России в Латвию.

Я уже год работаю в таком формате, я сталкивался с разными проблемами и оценил плюсы и минусы. В итоге я решил, что в сумме я выиграл от такого решения. В комментариях к статьям о фрилансе я периодически читаю вопросы типа «как работать на заказчиков из США», «Как платить налоги на платежи с Upwork-а», и поэтому я решил поделится своим опытом, тем более что подобных статей я еще нигде не видел.
Читать дальше →
Всего голосов 137: ↑132 и ↓5+127
Комментарии194

Человек, получивший обновление иммунной системы для борьбы с раком

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

Уильям Людвиг [William Ludwig] в 2010-м был 64-летним тюремным надзирателем на пенсии, и жил в Бриджтоне, Нью-Джерси, когда он получил почти безнадёжный прогноз в связи с раком. У Ракового центра имени Абрамсона в Пенсильванском университете закончились варианты химиотерапии, и Людвига исключили практически из всех клинических испытаний, поскольку у него было сразу три вида рака – лейкемия, лимфома и сквамозноклеточная карцинома (рак кожи). В данном позднее интервью учёные Карл Джун описал состояние Людвига как «практически мёртвый».

Элисон Лорен [Alison Loren], онколог из Пенсильвании, заботилась о Людвиге пять мучительных лет. Если химиотерапия сразу неэффективна, то каждый новый цикл даёт всё меньше результатов, и, по её словам, она становится всё более токсичной. В случае Людвига токсичные побочные эффекты сводили на нет любой прогресс в борьбе с раковыми клетками.

Химиотерапия подавляла иммунную систему Людвига, поскольку B-лимфоциты, клетки иммунной системы, были именно теми клетками, на которые была нацелена химиотерапия. Они были поражены раком, бесконтрольно распространявшимся в костном мозге. В его правом глазу разыгралась инфекция от старого вируса ветрянки. Рак стал мобильным, или, как говорят врачи, «подвижным», добираясь до самых дальних мест в его теле. Лорен считала, что рак кожи Людвига выглядел так, будто распространился через метастазы от его костей.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии131
1
23 ...

Информация

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