Search
Write a publication
Pull to refresh
-13
0

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

Send message

Анализируем требования рынка для data scientist

Reading time8 min
Views12K
В интернете много информации, что data sciencist должен знать и уметь. Но я решил, что становиться data sciencist надо сразу, поэтому мы выясним требования к специалистам при помощи анализа текста вакансий.


В первую очередь сформулируем задачу и разработаем план:

Задача:

Посмотреть все вакансии на рынке и узнать общие требования, указанные в них.
Читать дальше →

API hh.ru. Быстрый старт

Reading time4 min
Views76K

Полагаю, некоторые из вас знают, что у hh.ru есть открытый API (мы рассказывали о нем тут и тут), который используем не только мы, но и сторонние разработчики. С его помощью, например, можно очень детально анализировать рынок на больших объемах актуальных данных.

Я задумал серию из двух статей: в этой покажу, как можно быстро и просто начать использовать API, а в следующей сделаю небольшой проект, рекомендующий актуальные вакансии по вашему резюме.
Читать дальше →

Приложение на API hh.ru. Рекомендуем вакансии по вашему резюме

Reading time6 min
Views26K

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

Миграция на новую версию API

Reading time4 min
Views14K
Moving the Mote-Morris House: Leesburg, Florida

Подходит к концу время жизни первой версии нашего API. Для тех, кто еще не перевёл свои приложения на новую версию, мы подготовили руководство по миграции.

Самое, что вероятно бросается в глаза — в новой версии нет XML. Да, мы оставили только JSON, но этим всё не ограничивается.
Читать дальше →

GitHub запустил статический анализ кода на уязвимости

Reading time3 min
Views12K


После обширного тестирования GitHub открыл в открытом доступе функцию сканирования кода на уязвимости. Любой желающий может запустить сканер на собственном репозитории и найти уязвимости до того, как они пойдут в продакшн. Сканер действует для репозиториев на C, C++, C#, JavaScript, TypeScript, Python и Go.

Очередь задач в PostgreSQL

Reading time7 min
Views37K

Очередь слонов - pixabay.com


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


Как правило, используются готовые системы очередей сообщений (MQ — message queue), но иногда нужно организовать ad hoc очередь или какую-нибудь специализированную (например, очередь с приоритетом и отложенным перезапуском не обработанных из-за исключений задач). О создании таких очередей и пойдёт речь ниже.


Ограничения применимости


Предлагаемые решения предназначены для обработки потока однотипных задач. Они не подходят для организации pub/sub или обмена сообщениями между слабо связанными системами и компонентами.


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


Суть метода в пяти словах


select ... for update skip locked
Читать дальше →

Архитектура интерпрайз-приложений может быть другой

Reading time17 min
Views28K

image


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


Мне нравится перебирать архитектурные концепции. Всю жизнь я пытаюсь найти в области архитектуры и дизайна ПО что-то работающее и в то же время простое. Не требующее разрыва мозга для понимания и кардинальной смены парадигмы. Идей накопилось порядочно и я решил объединить лучшие из них в своём фреймворке — Reinforced.Tecture. Разработка таких штук даёт гигантское количество пищи для размышлений, я хочу ими поделиться.


Тексты про такие технические вещи обычно до ужаса нудные. Я честно постарался не нудить, поэтому мой текст получился слегка агрессивным. Если вам с этим норм и интересно почитать про архитектуры .NET-приложений — заходите.

Читать дальше →

Мне было стыдно за свой интерпрайз-код настолько, что я сделал свой велосипед. За него стыдно меньше

Reading time11 min
Views13K

image


Это продолжение текста про архитектуры интерпрайз-систем. Рассуждения это хорошо, но какой в них толк без практического применения. Я покажу свой фреймворк в деле.


Всё началось с того, что я рассказывал про проблематику проектирования приложений на .NET и ныл про нелёгкую жизнь в кровавом интерпрайзе. Затем я описал решение, которое сам придумал и реализовал — Reinforced.Tecture. То была теория, концептуальные рассуждения, визионёрство и снова нытьё. На этот раз о том, что на дворе 2020 год, а HKT в C# так и не завезли.


Сегодня я продемонстрирую свой подход в действии на примере простенького проекта и покажу профиты, которые он даёт: от сокращения количества кода до автоматизации тестирования и оригинального подхода к документации. Как советовал старина Торвальдс: "Болтовня ничего не стоит, покажите мне код".

Читать дальше →

Process Mining: знакомство

Reading time5 min
Views63K
Приветствую, Хабрахабр!

В этой статье я постараюсь приоткрыть завесу над интересной технологией из области управления бизнес-процессами (eng wiki BPM). Интеллектуальный анализ процессов (eng wiki Process Mining) фокусируется на обнаружении, анализе и оптимизации бизнес-процессов на основе данных из журналов событий (англ. event logs), представляя недостающее звено между классическим анализом бизнес-процессов с использованием их моделей и интеллектуальным анализом данных (eng wiki Data Mining).

Disclaimer
Статья подготовлена на основе материалов онлайн курса coursera Process Mining: Data Science in Action, являющихся собственностью Технического университета Эйндховена. Использование материалов статьи возможно только с разрешения авторов курса и с указанием ссылок на источник.



Рисунок 1. Позиционирование Process Mining.

Далее мы разовьем тему позиционирования, коснемся вариантов использования, поговорим об исходных данных и рассмотрим различные типы интеллектуального анализа процессов.
Читать дальше →

Если вместо оформления на работу предлагают открыть ИП

Reading time9 min
Views122K
Я сейчас в поисках работы программиста в Москве. И мне звонят некоторые кадровые агентства и интересуются есть ли у меня ИП, так как их клиент-работодатель вместо трудового договора с работниками заключает договоры оказания услуг или субподряда с ИП или ООО с одним учредителем, я их буду называть ИП в дальнейшем. ИП у меня нет, но есть не приносящее дохода ООО, где я веду бухучет самостоятельно. Поэтому и знаю, что это такое, какие именно налоги нужно платить и почему эта схема в России не законна и чем все это грозить горе-работнику, который на это согласился. Еще раз повторяю, я не юрист, а программист; то, что я опишу ниже, вполне могло устареть, измениться и т.п., и, если в комментариях укажут действующую норму, я не буду против.
Читать дальше →

Singleton (Одиночка) или статический класс?

Reading time6 min
Views197K
Статья будет полезна в первую очередь разработчикам, которые теряются на собеседованиях когда слышат вопрос «Назовите основные отличия синглтона от статического класса, и когда следует использовать один, а когда другой?». И безусловно будет полезна для тех разработчиков, которые при слове «паттерн» впадают в уныние или просят прекратить выражаться :)

Что такое статический класс?


Для начала вспомним что такое статический класс и для чего он нужен. В любом CLI-совместимом языке используется следующая парадигма инкапсуляции глобальных переменных: глобальных перменных нет. Все члены, в том числе и статические, могут быть объявлены только в рамках какого-либо класса, а сами классы могут (но не должны) быть сгруппированы в каком-либо пространстве имен. И если раньше приходилось иммитировать поведение статического класса с помощью закрытого конструктора, то в .NET Framework 2.0 была добавлена поддержка статических классов на уровне платформы. Основное отличие статического класса от обычного, нестатического, в том, что невозможно создать экземпляр этого класса с помощью оператора new. Статические классы по сути являются некой разновидностью простанства имен — только в отличие от последних предназначены для размещения статических переменных и методов а не типов.

Готовимся к собеседованию дальше?

Паттерн проектирования «Фасад» / «Facade»

Reading time5 min
Views87K
Почитать описание других паттернов.

Проблема


Минимизировать зависимость подсистем некоторой сложной системы и обмен информацией между ними.

Описание


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

Таким образом, минимизация зависимости подсистем, а также снижение объема передаваемой между ними информации — одна из основных задач проектирования.

Один из способов решения данной задачи — использование паттерна «Фасад».
Читать дальше →

Условное внедрение зависимостей в ASP.NET Core. Часть 1

Reading time5 min
Views16K
Иногда возникает необходимость иметь несколько вариантов реализации определенного интерфейса и, в зависимости от определенных условий, внедрять тот или иной сервис. В этой статье мы рассмотрим варианты такого внедрения в ASP.NET Core приложении, используя встроенный Dependency Injector (DI).

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

В IT растет цензура, а мы не замечаем — разрешают только улыбаться и молчать

Reading time8 min
Views126K

У меня есть две статьи-интервью вот с такими странными абзацами. За обоими кроются неприятные истории для меня и для людей, про которых я писал.

Читать далее

Полиморфные аллокаторы C++17

Reading time9 min
Views16K
Уже совсем скоро в OTUS стартует новый поток курса «C++ Developer. Professional». В преддверии старта курса наш эксперт Александр Ключев подготовил интересный материал про полиморфные аллокаторы. Передаем слово Александру:





В данной статье, хотелось бы показать простые примеры работы с компонентами из нэймспэйса pmr и основные идеи лежащие в основе полиморфных аллокаторов.

Основная идея полиморфных аллокаторов, введенных в c++17, — в улучшении стандартных аллокаторов, реализованных на основе статического полиморфизма или иными словами темплейтов. Их гораздо проще использовать, чем стандартные аллокаторы, кроме того, они позволяют сохранять тип контейнера при использовании разных аллокаторов и, следовательно, менять аллокаторы в рантайме.
Читать дальше →

Как мы внедрили скрытие аккаунтов в Telegram или #ДуровДобавьДвойноеДно

Reading time8 min
Views220K

Если анимация не воспроизводится, смотрите её здесь.

Здравствуйте, Павел Дуров! Мы надеемся, что Вы нашли время ознакомиться с данным открытым письмом. Мы разработали решение для Telegram-клиента, которое позволяет скрывать аккаунты и открывать их только через уникальный код-пароль (см. анимированное превью). Нет никаких следов присутствия скрытых аккаунтов. Невозможно узнать, есть ли в мессенджере скрытые аккаунты и какое их количество. Решение именуется как «Двойное дно».

Все нюансы были тщательно нами продуманы, а сам Telegram-клиент с точки зрения интерфейса и пользовательского опыта никак не изменился. Практически никаких доработок со стороны команды Telegram не требуется. «Двойное дно» сделано полностью «под ключ», Вам нужно лишь принять наш «Pull Request» в Вашем репозитории. Перед тем как отправить «Pull Request», мы возьмем несколько дней на сбор обратной связи от пользователей, чтобы исправить мелкие недочеты. Для ознакомления Вы можете установить нашу сборку через TestFlight, а если под рукой нет iOS-устройства, то посмотреть видео. Исходный код сборки доступен на GitHub.
Читать дальше →

Telegram как очередной рубеж новой информационной эры

Reading time7 min
Views9.5K

«Кто владеет информацией — тот владеет миром»
Натан Ротшильд




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

Почему М-теория — главный кандидат на Теорию всего

Reading time3 min
Views41K

Мать всех теорий струн прошла проверку, которую пока не смогла пройти ни одна из теорий квантовой гравитации



М-теория сводит в единую математическую структуру все пять непротиворечивых версий теории струн (а также описание частиц под названием супергравитация). В различных физических условиях она выглядит как каждая из этих теорий.

Сложно быть «теорией всего». У ТВ есть сложная задача – впихнуть гравитацию в квантовые законы природы таким образом, чтобы на крупных масштабах гравитация выглядела, как кривизна ткани пространства-времени, которую Альберт Эйнштейн описывал в своей общей теории относительности. Каким-то образом кривизна пространства-времени возникает как общий знаменатель квантующихся единиц гравитационной энергии – частиц, известных, как гравитоны. Но наивные попытки подсчитать взаимодействие гравитонов приводят к бессмысленным бесконечностям, что говорит о необходимости более глубокого понимания гравитации.
Читать дальше →

Парсеры Пратта для чайников

Reading time8 min
Views8.9K

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


Картину портят выражения: постфиксные, инфиксные и прочие. Проблема: вы не можете понять, какого типа выражение вы обрабатываете до тех пор, пока не разберёте его первую половину. Зачастую для вас также важны приоритет операции и её ассоциативность, чтобы построенное AST имело правильную структуру.


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


Читать дальше →

Selenium для Python. Глава 1. Установка

Reading time5 min
Views504K
Представляю перевод неофициальной документации Selenium для Python.
Перевод сделан с разрешения автора Baiju Muthukadan.
Оригинал можно найти здесь.

Предисловие от автора статьи


Selenium WebDriver – это программная библиотека для управления браузерами. WebDriver представляет собой драйверы для различных браузеров и клиентские библиотеки на разных языках программирования, предназначенные для управления этими драйверами.
Читать дальше →

Information

Rating
10,367-th
Registered
Activity