Иногда хочется решить задачу просто потому что решение легко проверить, прям сразу для множество вариантов. Взяли список из 25 элементов, отсортировали его, и применили искомую функцию 25 раз, профит. Плюс задачка напоминает обложку тетрадки по арифметике за пятый класс, там где табличка произведений, ну та где находим пятый столбец и седьмой ряд и на пересечений их будет произведение. Там же в табличке видно что 6x6 - это квадрат, а 9x4 это совсем не квадрат (скорее ближе к прямоугольнику) хотя площадь у них равная. Так вот, "литкод" хочет чтобы мы нашли n-ый элемент в данной табличке по возрастанию.
Разработка
Новости
Универсальный Автономный Модуль в Unity
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/79f/1a8/304/79f1a8304a7b00b8d343a2577049995f.png)
Один из секретов быстрой и качественной разработки это унификация. В этой статье мы рассмотрим пример реализации Универсального Автономного Модуля UAM (Universal Autonomous Module).
В прошлой статье мы уже говорили о концепции модульной архитектуры, если вы еще не знакомы, то переходите по ссылке Модульная архитектура в Unity. Та концепция хоть и имела кучу плюсов, но не подходила ко всем типам проектов/жанрам. Сегодня же мы рассмотрим более распространенный и универсальный подход к реализации модулей. Подобные модули в Unity сообществе иногда называют более обобщенно - ассетами, в статье не будет использоваться такое обобщение.
Однажды заказчик (издатель) выдал нам техническое задание на разработку модуля, который должен легко интегрироваться в любой проект, всех студий издателя. Но не будем вдаваться в подробности этого конкретного модуля. Представьте что вам досталась такая задача. Что бы вы делали? Таким модулем может быть что-то часто встречающееся в приложениях. Например внутриигровой магазин или еще что либо. В статье будет взят за пример реализация лидерборда для мобилок и планшетов.
Цель ясна, осталось расписать задачи и реализовать модуль.
Задачи или же критерии модуля получились следующие:
1) Модуль должен быть универсальным. То есть подходить к любому проекту.
2) Модуль должен быть автономным. Должен работать не требуя дополнительных пакетов. Он должен самостоятельно функционировать, если его интегрировать в пустой проект.
3) Так как модуль полностью автономный, он имеет свою вьюшку, свой контент: окна, кнопки, звуки итп. Поэтому при необходимости должен легко редактироваться, и не иметь в дальнейшем проблем при обновлении версии модуля.
Прогулка по мостам Кёнигсберга с ORtools
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/f07/3ac/556/f073ac5563b750f576bce2d16cc2587b.png)
В одни из выходных дней впервые удалось выбраться в Калининград. Я уделил немало внимания исследованию уровня жизни и благополучия края, в основном, ориентируясь на стоимость покупки/аренды жилья, цены в ресторанах и заработок таксистов. Данные достаточно доступные и позволяют сформировать общее представление о положении дел в городе/области.
Помимо экономической составляющей, конечно, старался погрузиться в культурный/исторический аспект жизни города. За короткий промежуток времени достаточно сложно проникнуться всеми особенностями, однако в Калининграде я бы выделил верное следование ограничениям скорости! Благодаря этому, возникает ощущение безопасности, замедления времени и спокойствия.
История города богатая, и в этом мешке событий я нашел кое-что интересное для себя. Речь пойдет о задаче семи пешеходных мостов Кёнигсберга. В свое время Эйлер в процессе размышлений над решением этой задачи положил начало теории графов. В статье рассмотрим задачу с позиции задачи линейного программирования и подтвердим результаты трехсотлетней давности с помощью Python и OR-Tools.
Parallel Stream — не панацея или используй с умом (tutorial для начинающих)
Данная статья может быть интересна тем, кто только изучает Stream API, либо набирает практический опыт их использования. В ней раскрывается функционал, плюсы и минусы использования Parallel Stream, но не касаемся использования последовательных Stream API в целом.
Параллельные потоки стали мощной функцией в Java 8 и более поздних версиях, предлагая разработчикам возможность без особых усилий выполнять операции сбора данных параллельно. Используя возможности многопоточности современных компьютеров, параллельные потоки могут значительно повысить производительность вашего кода. В этой статье мы рассмотрим несколько примеров использования параллельных потоков, подчеркнув их преимущества в различных сценариях.
Истории
Простая проверка на компетентность программиста
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/093/7e3/1b8/0937e31b89ab725d35fa0b847e2d16c4.png)
Мы все знаем, что работа программиста зачастую заключается в модификации уже существующих программ (исходного кода) для исправления какого-то их некорректного поведения в некоторых ситуациях или для реализации новой функциональности для пользователей. В любом случае тот, кто считает себя хорошим программистом, должен быть готов что-то изменить или дополнить в своей или даже в чужой программе самым эффективным способом.
Мне кажется, у меня получилось придумать интересную задачу для проверки такой способности у программистов. Мне кажется, ничего подобного я никогда не видел, или, по крайней мере прямо сейчас не помню, может кто-то напомнит.
А еще мне кажется, что описанная далее задача была бы хорошей проверкой даже для искусственного интеллекта, чтобы проверить насколько он, собственно, интеллект в области способностей к программированию. Интересно возьмется ли кто-нибудь сформулировать такую задачу для ИИ. Возможно ли это?
RuGPT3. Исследование вариантов циклическим перебором
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w780/getpro/habr/upload_files/4ee/b3c/b44/4eeb3cb444e3b8533f62e9557bbccdb2.jpg)
RuGPT3 - коллекция моделей от Сбер
Проводим автоматическое тестирование циклическим перебором вариантов
Работаем в Colab, тестируем Small, Mediub, Large.
Параметры генерации совершенно неоптимизированы - это первый заход, чтобы посмотреть исходную ситуацию и сравнивать по мере улучшения.
Алгоритм тестирования
полный последовательный перебор
10 вопросов
3 модели: Small, Medium, Large
Несколько наборов параметров внутри каждой модели
Реплики сохраняем в гугл-таблице
Неравный бой — Tinkoff эквайринг. Рекуррентные платежи
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/e90/269/7ee/e902697ee4071fbabf8424968a505260.png)
Цель данной статьи:
1. Помочь разработчикам в интеграции
2. Привлечь внимание команды Tinkoff на проблемы связанные с эксплуатацией их API
GitHub: переименование множества файлов в репозитории
В статье я рассказываю, как в репозитории веб-сервиса «GitHub» можно переименовать сразу множество файлов одним коммитом.
У меня небольшой учебный репозиторий, с которым я работаю через веб-интерфейс. Через веб-интерфейс можно переименовывать файлы по одиночке, но иногда появляется необходимость переименовать сразу много файлов по одному и тому же принципу. Операция переименования состоит из нескольких этапов: клонирование репозитория на свой компьютер, написание скрипта для переименования множества файлов и запуск переименования, создание коммита и отправка изменений в оригинальный репозиторий на «GitHub».
По ходу дела я касаюсь работы с «Git» из командной строки, немного разбираю настройку Git-репозитория, пишу скрипт на языке PowerShell, работаю с регулярными выражениями и создаю гранулированный токен доступа в «GitHub».
Генерация и валидация чисел по алгоритму Луна
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/22b/3d4/beb/22b3d4beb6581f7022ea4f9d14ec4bcc.png)
Алгоритм Луна (Luhn algorithm) - это процесс вычисления контрольной цифры для числа в соответствии со стандартом ISO/IEC 7812. Процесс предназначен, в первую очередь, для выявления ошибок, вызванных с непреднамеренным искажением данных. Например, при ручном вводе номера карты или любого другого числа.
Разберём как он работает и рассмотрим инструмент для формирования номеров по алгоритму.
FaceAuth или как с легкостью встроить FaceID в любое .NET приложение
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/47d/b93/ca8/47db93ca87e3a0b9ec1ce905691f0b56.png)
В программировании есть много разных способов аутентификации и каждая из них имеет как свои плюсы, так и минусы. В этой статье я хотел бы сделать обзор библиотеки, позволяющей с легкостью добавить аутентификацию лица в ваше .NET приложение.
<h2><font color="#9cc2ce">Пару слов обо мне</font></h2>
Меня зовут Салахетдинов Орхан, и я — .NET-разработчик. Люблю изучать что-то новое в сфере программирования (и не только) и хочу внести свою лепту в развитие open-source. Еще хотел бы добавить, что это моя первая статья, я бы хотел написать еще одну (возможно, и несколько) статей про системы распознавания лиц и как они работают на простом языке. Если будет хороший актив и фидбек, то почему бы и нет? Судите, как хотите, так как я рад любому фидбеку, исключение — тотальная аннигиляция поста (опционально) :)
<h2><font color="#9cc2ce">С чего все началось?</font></h2>
Не так давно, буквально несколько месяцев назад, мне стала любопытна тема computer vision и ее часть — face recognition. Мне всегда нравилась функция FaceID от Apple, так как она очень удобная и практичная, и я подумал: есть ли такая библиотека для платформы .NET? К сожалению, после недолгого ресерчинга я так и не нашел чего-то похожего для .NET. В итоге я решил создать свою библиотеку аутентификации лица. Цель данной библиотеки — прежде всего пиар показать .NET- (и не только) разработчикам, как легко можно использовать Face Authentication в своих проектах.
Угроза DoS — обсуждаем уязвимости протокола ICMP
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w780/getpro/habr/upload_files/02b/531/706/02b5317060c0e63a79e1fc4d4aa4891e.jpg)
Так, одно из слабых его мест — механизм перенаправления. С его помощью злоумышленники могут управлять маршрутизацией трафика. Разберём, в чем тут дело и как этому можно противодействовать.
Волновой алгоритм
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/getpro/habr/upload_files/699/b4d/2d3/699b4d2d30ae3a9c61103f1ace8b532b.gif)
Волновой алгоритм — алгоритм поиска пути, алгоритм поиска кратчайшего пути. Принадлежит к алгоритмам, основанным на методах поиска в ширину.
Статистика за июнь по QA вакансиям на HeadHunter
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/a6c/330/833/a6c330833295401599296bb3a394a810.png)
Раз в месяц я и команда вручную собираем статистику по вакансиям тестировщиков на HeadHunter.
Мы не делаем выводы, а оставим тут сухие цифры. Много или мало сейчас открытых вакансий и что с рынком — пусть каждый интерпретирует по-своему.
Сегодня статистика за июнь 2023г.
Как сделать Telegram-бота для проверки аптайма своего сервиса на Python (ч.2 алертинг)
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w780/getpro/habr/upload_files/5f9/7cd/54f/5f97cd54fdded2462ff2878867802137.jpg)
Всем привет, в предыдущей статье я начал описывать мой опыт разработки Python телеграм-бота для проверки работоспособности и мониторинга моего сервиса, расположенного на удаленом сервере. Если в двух словах, то когда делаешь какой-нибудь пет-проект, да и в некоторых рабочих задачах, бывает хочется иметь всю текущую информацию по состоянию системы под рукой (особенно мне нравится возможность видеть все и управлять через телеграм бота), при этом не хочется тратить на разработку много времени.
В предыдущей части мы рассматривали способ получить мгновенные метрики по запросу. В этой части мы будем делать простой алертинг, то есть получение сообщения в боте, когда в системе начались сбои. А в следующей третьей части разберем еще случай сбора аналитики и получения онлайн графиков.
Общество полной справедливости и неравенства
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w780/getpro/habr/upload_files/941/c96/d4b/941c96d4b9c1f7c1e82a50c03058d728.jpg)
Американские психологи однажды провели потрясающе простой эксперимент.
Человеку дается сто долларов и говорится, что неплохо было бы поделиться ими еще с одним человеком. Второй участник не присутствует ни до, ни во время, ни после эксперимента, то есть может попросту не существовать. Сто долларов между тем совершенно реальны (святым американцы не шутят). В среднем испытуемый отдает из упавшего с неба стольника 25 долларов. Конечно, встречаются жадины, оставляющие все себе, альтруисты, отдающие все до последнего цента, эгалитаристы, делящие все пополам, но средняя цифра именно такова: три четверти себе, четверть – другому. (Наш фирменный главбух, любезная Анна Анатольевна, ни секунды не думая, сказала, что отдала бы половину. Думаю, в бухгалтерии у нас все в порядке).
Затем эксперимент немного усложняется. Второй участник становится реальным и может заблокировать сделку, если посчитает, что его сильно обделили. В этом случае и первый участник ничего не получит. Тут отсечение идет примерно по 20 долларам – если предлагают меньше, то не доставайся же ты никому!
С этими цифрами удивительно перекликаются другие, из уже личного опыта. У меня есть давний приятель, который сразу после школы подался в таксисты и таксует уже лет 25. Он как-то заехал с проблемой со своим навигатором и рассказал между прочим, как устроена служба такси в наших широтах (дело было как раз перед уберизацией всей страны). Понятно, что никаких таксопарков давно не существует, а все фирмы, предоставляющие такие услуги, – обычные колл-центры, с которыми сотрудничают вольнонаемные водители на своих авто. По словам Андрея, фирмы, которые берут за диспетчерские услуги 25% от цены поездки, жадины и захребетники (там были немного другие слова, я адаптировал), а которые 20% – нормальные ребята и именно с такими он и сотрудничает.
Аудит пользователей AD с помощью Powershell
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/5d8/32d/2e8/5d832d2e8bf644634f5aa28c684bffff.png)
Домен Active Directory может содержать в себе сотни и даже тысячи учетных записей и для управления всеми этими аккаунтами администратору требуется значительное количество времени. Даже, если у нас уже все аккаунты разнесены по группам, ко всем группам применены политики и настроены права доступа, все равно могут возникнуть ситуации, когда по тем или иным причинам нам необходимо найти полную информацию о пользователе.
Для решения этих задач нам может помочь PowerShell, инструмент, который помимо прочего, позволяет легко проводить аудит учетных записей пользователей Active Directory. Для этих целей мы будем использовать один из самых популярных командлетов Active Directory PowerShell - Get-ADUser. С помощью этого командлета мы можем получить как указанный пользовательский объект, так и выполнить настраиваемый поиск для получения нескольких пользовательских объектов.
The Game is On: поиск и закрытие уязвимостей на НТО
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w780/getpro/habr/upload_files/dc6/c15/908/dc6c159087c0874dd6a98a6462e612a8.jpg)
Привет! В прошлый раз я рассказывал про содержательную форензику на НТО по информационной безопасности. В этот раз хотел бы поговорить о новом и еще более интересном формате, встретившемся на этом соревновании – поиске и закрытии уязвимостей!
Устраивайтесь поудобнее и готовьтесь к путешествию…
Анонимная сеть в 200 строк кода на Go
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w1560/getpro/habr/upload_files/658/95c/f58/65895cf58cd976a49d779c4a9bdf4580.png)
Реализации анонимных сетей всегда стремятся быть как можно проще, доступнее для понимания, как на теоретическом, так и на программном уровнях. Такие условия становятся необходимыми вследствие одного из основных принципов построения безопасных программ — чем проще объяснить, тем легче доказать. Но к сожалению теория часто может расходиться с практикой, и то, что легко объяснить в теории, может быть проблематично объяснять на коде.
Вследствие этого, можно сказать just-for-fun, у меня появился вопрос: можно ли реализовать анонимную сеть настолько малую, чтобы её программный код смог понять даже начинающий программист за короткое время?
Верификация e-mail по протоколу smtp. Узнаем, что почта есть и ждёт писем при помощи python
![](https://webcf.waybackmachine.org/web/20230702092045im_/https://habrastorage.org/r/w780/getpro/habr/upload_files/32c/3c3/9c7/32c3c39c7b205ddfbb4456bfd2190614.jpg)
Пригодится для решения задач по организации рассылок, а также как средство предварительной проверки эл. почты при регистрации.
Это пересказ довольно старой статьи (2015 г) некоего Скотта Бради. Автор предупреждает, что попытка реализовать предложенный подход в промышленных масштабах приведёт вас в списки спмеров, и вообще всё это крайне ненадежно и сомнительно. И вообще больше с целью познакомиться с процессом, что собственно предлагаю и сделать.