В этой статья мы рассмотри пример реализации кастомных пинов для карты xamarin. Пины будут обладать тем видом, который вам нужен. Так же мы рассмотрим часть кода xamarin.maps, отвечающий за создание, отрисовку и отображение пинов.
Новости
Шахматы на C++
Не так давно я захотел написать свой шахматный движок. На удивление в Интернете нашлось не так много хороших статей на эту тему. Были статьи с довольно слабыми программами, многие из которых даже умудрялись пропускать некоторые важные правила. А были статьи с хорошими программами (некоторые из них были даже чуть лучше чем получилось у меня в итоге), но там авторы рассказывали лишь основные идеи, пропуская подробности, из-за чего написать что-то свое по таким статьям было проблематично. Поэтому после написания своей программы, я решил написать статью, дабы облегчить жизнь интересующимся в данной теме. Я не претендую на лучшую шахматную программу или на чистейший код, но эта статья будет хорошим и легким началом для тех, кто хочет написать что-то свое.
Как написать «Змейку» в четыре переменные?
Пишем классическую «Змейку», как на КДПВ, в четыре переменные. По словам автора, «Можно написать и с двумя, но зачем осложнять себе жизнь?» К старту курса по разработке на С++ приглашаем под кат.
Реальная виртуальная реальность. Контролируемые галлюцинации
Области виртуальной реальности и метавселенных переживают невероятный хайп, начавшийся в 2021 году. Технологические гиганты пустились в гонку за создание лучшей метавселенной и лучших VR-девайсов. И текущий вид шлемов виртуальной реальности пока вызывает немало вопросов: они громоздкие и неудобные, в них потеет лицо и они вызывают укачивание у некоторых людей и быстрое наступление усталости у большинства. Да и сама виртуальная реальность часто вызывает вопросы, ведь графика в ней значительно уступает обычным видеоиграм и реальность включает в себя не только визуальные образы. А тут еще Илон Маск в Твиттере написал, что ходить с телевизором на лице - не самая лучшая идея. Конечно, он это писал, намекая, что его проект Neuralink сможет перевернуть игру и погружать людей в виртуальную реальность намного более удобным способом. Только вот есть одна проблема - для этого придется вживлять в мозг электроды через отверстие в черепе. По-моему, так себе перспектива. И я начал размышлять об альтернативных возможностях погружения виртуальную реальность, более удобных и безопасных для здоровья. Итак, наш сегодняшний герой - управляемые галлюцинации.
Я нанял AI иллюстратора в свой стартап
Это очередной пост с красивыми картиночками из DALL-E
Мы нашли им применение, использовав в мобильном приложении своего стартапа, вместо найма живого иллюстратора, и это сработало.
Личный опыт: переезд на собственное хранилище репозиториев в GitLab CE
На связи Саша Хрущев, технический директор IT-компании WINFOX. Рассказываю, как мы быстренько развернули свое независимое локальное хранилище репозиториев в GitLab CE, сколько времени это заняло и какие особенности вам нужно учитывать при переезде, чтобы все прошло гладко.
Tkinter, раскрытие потенциала. + Игра на рабочем столе
Tkinter - это та библиотека, с которой на начальных этапах изучения языка python знакомились все, но обходили стороной по разным причинам. Сейчас я предлагаю вернуться назад, немного поностальгировать и открыть для себя в разы больше фич библиотеки.
ВАЖНО! Tkinter - не лучшее решение для создания больших приложений. И по большей части эта статья нацелена на начинающих программистов, которые уже имеют представление о библиотеке и хотят рыть дальше.
Если вы плохо знакомы с Tkinter, вот прекрасный курс, рекомендую >>>
Создаём своё объектное хранилище за чаc
Привет! Меня зовут Артем Гаврилов и я работаю в Tarantool. Сегодня я расскажу, как быстро создать объектное хранилище на основе платформы in-memory вычислений Tarantool и распределённой файловой системы IPFS (InterPlanetary File System).
Мы рассмотрим пример шардирования стороннего приложения с помощью Tarantool и сделаем MVP объектного хранилища с отказоустойчивостью на уровне ЦОДа, в то время как более простые решения отказоустойчивы только на уровне нескольких серверов.
Тем, кто знаком с IPFS, вероятно, будет интересно читать начиная с раздела «С чем мы столкнёмся».
«Золотой стандарт» или что умеют современные Deception-решения: развертывание, реалистичность, обнаружение. Часть 2
В предыдущей статье мы рассказали о разновидностях ловушек и приманок. Итак, когда приманки готовы, осталась самая малость - разложить их по нужным хостам. Тут в дело вступает другой критерий выбора Deception-решения, а именно, каким способом доставляются приманки на хосты.
Python WebAssembly PyScript и хостинг вебсайта на Azure Static с помощью visual studio code
Привет
Сегодня мы создадим небольшое приложение .py и загрузим его в Azure.
Требования: учетная запись Azure + желание узнавать новое и экспериментировать. Также нужен VSCode (бесплатная IDE).
Когда мы закончим, мы получим...
Динамический импорт модулей в Python
Давайте представим ситуацию, когда вам нужно установить на все виртуальные машины (агенты сервера сборки) определенный пакет Python. Но вы не можете изменить образ агента, а загрузка, к примеру из pypi.org или github.com непроверенных пакетов, ограничена. Как тут не вспомнить последние новости про вредоносные изменения в пакете nmp или более свежую информацию про PyPi.
Python использует подход под названием EAFP — Easier to ask for forgiveness, than permission (легче попросить прощения, чем разрешения). Это значит, что проще предположить, что что-то существует (к примеру, словарь в словаре, или в нашем случае модуль в системе) или получить ошибку в противном случае.
Этот подход, развитый в PEP-0302, позволяет делать хук импорта модулей, что в итоге приводит нас к возможности написания следующего кода:
Алгоритм обучения CBOW архитектуры для векторизации слов
В этой статье подробно разбирается алгоритм обучения архитектуры CBOW (Continuous Bag of Words), которая появилась в 2013 году и дала сильный толчок в решении задачи векторного представления слов, т.к. в первый раз на практике использовался подход на основе нейронных сетей. Архитектура CBOW не столь требовательна к наличию GPU и вполне может обучаться на ЦП (хотя и более медленно). Большие готовые модели, обученные на википедии или новостных сводках, вполне могут работать на 4-х ядерном процессоре, показывая приемлемое время отклика.
Дроны на «Северстали» или как мы цифровизовали маркшейдинг
Когда любишь свою работу, идея по ее улучшению может прийти в голову в любой момент. Так и произошло в 2016 году, когда я увидел обычный бытовой дрон, который соседи по даче купили своему ребенку. Я попробовал поуправлять квадрокоптером на участке, а он в какой-то момент улетел за сарай, где в узком проходе между забором лежали доски. С той точки, где я находился, их было не видно, но дрон их снял на камеру с отличным качеством. И вдруг я понял: коптеры можно использовать для осмотра и съемки труднодоступных конструкций на территории предприятия!
Меня зовут Горбунов Михаил, я — главный инженер центра «Домнаремонт», который входит в дивизион «Северсталь». Сегодня я расскажу о применении беспилотников для сбора информации и контроля некоторых видов работ на комбинате.
Проверяем, есть ли у нативной JavaScript‑функции манкипатч
Как можно понять, была ли переопределена нативная JavaScript‑функция? Никак — или не совсем надежно. Способы есть, но полностью доверять им нельзя.
OAuth в iOS
В большинстве случаев мобильное приложение должно уметь авторизовывать пользователя для доступа к данным, и зачастую это должно происходить с помощью сторонних сервисов. В таких случаях используется OAuth2.0 — протокол, позволяющий авторизоваться в другом сервисе без необходимости передавать логин и пароль в приложение и давать ограниченный набор доступов к ресурсам сервиса.
В мобильных приложениях используется Authorization Code Flow with Proof Key for Code Exchange (PKCE). Подробнее о выборе flow читайте в нашей предыдущей статье. Эта статья является продолжением.
Сегодня мы рассмотрим вариант реализации OAuth-авторизации с помощью библиотеки AppAuth-iOS. Она одна из самых популярных и довольна проста в использовании. Весь код из статьи доступен в Github.
Data Science Pet Projects. FAQ
Привет! Меня зовут Клоков Алексей, сегодня поговорим о пет-проектах по анализу данных. Идея написать эту статью родилась после многочисленных вопросов о личных проектах в сообществе Open Data Science (ODS). Это моя третья статья на Хабре, до этого делал разбор алгоритма SVM и рассказывал о крутом NLP курсе от ребят из DeepPavlov. Итак, дадим определение пет-проекта и разберем частые вопросы:
Data science pet project – это внерабочая активность, целью которой является решение некоторой задачи с помощью обработки данных, улучшающая ваши профессиональные навыки
- Зачем делать пет-проекты?
- Из каких этапов может состоять разработка пет-проекта?
- Как выбрать тему и найти данные?
- Где найти вычислительные ресурсы?
- Как завернуть работающие алгоритмы в минимальный прод?
- Как оформить презентабельный вид проекта?
- Как и зачем искать коллабораторов?
- Когда проходит ODS pet project хакатон?
- Где посмотреть примеры пет-проектов и истории участников ODS?
Нагрузочное тестирование: что? где? когда?
После весны 2020 года слово “тестирование” приобрело некоторые неожиданные значения и неоднозначные коннотации — пожалуй, везде, кроме IT. В нашей сфере без него никуда — и так было всегда.
Видов тестирования ПО — множество: модульное, функциональное, А/В-тестирование, интеграционное, нагрузочное и т д. И на наш взгляд, как раз последнее является как самым важным, так и наиболее сложным. Ведь если ошибки, которые могут быть выявлены с помощью A/B-тестов, модульных, функциональных и интеграционных тестов, проявляются практически сразу после “выкатки” новой версии приложения, то проблемы, на выявление которых нацелено нагрузочное тестирование, — “спящие”. И обнаруживаются они только тогда, когда на новую версию вашего сайта или приложения придет реальный пользовательский трафик, с которым не справится “софтверная” часть проекта (база данных, application-сервер) или “железно-инфраструктурная” (нехватка оперативной памяти в кластере, большая нагрузка на дисковую подсистему при операциях чтения-записи).
В этой статье расскажем и покажем, как мы проводим, кажется, эталонное нагрузочное тестирование — в плане полноты покрытия и полноты же получаемого в итоге отчёта. Наши наработки вполне воспроизводимы, так что вы можете воспользоваться ими для улучшения работы собственного проекта.
Эскалация привилегий при помощи polkit: как заполучить root-доступ в Linux, воспользовавшись семилетним багом
polkit – это системный сервис, по умолчанию устанавливаемый во многих дистрибутивах Linux. Он используется демоном systemd, поэтому в любом дистрибутиве Linux, где применяется system, также используется polkit. Автор этой статьи, входя в состав a GitHub Security Lab, работает над улучшением безопасности опенсорсного софта; он ищет уязвимости и докладывает о них. Именно он однажды нашел уязвимость в polkit, позволяющую злоумышленнику увеличить его привилегии. Раскрытие уязвимости было скоординировано с командой по поддержке polkit, а также с командой по обеспечению безопасности в компании Red Hat. О раскрытии этой уязвимости было объявлено публично, патч для нее был выпущен 3 июня 2021 года, и ей был присвоен код CVE-2021-3560.
Эта уязвимость позволяет непривилегированному пользователю, работающему на локальном ПК, получить root-доступ к командной оболочке системы. Такой эксплойт несложно осуществить при помощи нескольких стандартных инструментов командной строки, как показано в этом коротком видео. В данном посте будет объяснено, как устроен этот эксплойт, а также показано, где именно в исходном коде находится этот баг.
История уязвимости CVE-2021-3560 и какие дистрибутивы она затронула
Рассматриваемый баг достаточно старый. Он вкрался в код более восьми лет назад в коммите bfa5036 и впервые мог использоваться в версии 0.113 программы polkit. Однако, во многих популярных дистрибутивах Linux эта уязвимая версия не использовалась до относительно недавнего времени.
Немного специфической историей этот баг обладает в Debian и его производных (например, в Ubuntu), так как Debian использует форк polkit, в котором есть своя особенная схема нумерации версий. В форке Debian этот баг появился в коммите f81d021 и впервые попал в дистрибутив в версии 0.105-26. В стабильном релизе Debian 10 (“buster”) используется версия 0.105-25, таким образом, уязвимости в нем нет. Но некоторые производные Debian, в том числе, Ubuntu, основаны на нестабильной версии Debian, а она уязвима.
CVE 2022-0847: Исследование уязвимости Dirty Pipe
Предисловие
Данная статья является переводом англоязычного исследования, посвященного
разбору уязвимости Dirty Pipe и непосредственно эксплоита, позволяющего ею
воспользоваться для локального повышения привилегий.
Введение
Уязвимость Dirty Pipe была обнаружена в ядре Linux исследователем Максом
Келлерманном(Max Kellermann) и описана им здесь. Несмотря на то, что статья
Келлерманна - отличный ресурс, содержащий всю необходимую информацию для
понимания ошибки ядра, все таки она предполагает некоторое знакомство с ядром
Linux.
Проблема с использованием тега img и picture в Safari
Данная статья описывает баг и его решения в контексте ReactJS + Server-Side Rendering, но это также актуально для всех фреймворков большой тройки так и для чистого JS.
При разработке сайта мы столкнулись с проблемой, что при использовании тега <img> на некоторых страницах Safari загружал изображение несколько раз вместо одного. Для отображения картинок мы использовали тег <img>
с атрибутом srcset
, что бы показывать картинки разного разрешения для экранов с высоким ppi.