За годы прошедшие с их появления в Java8 у меня набралась коллекция полезных решений и шаблонов, которые я переносил из проекта в проект, и которые в стандартной версии так и не были осуществлены. Недавно я решил собрать все вместе в небольшом проекте с открытым кодом. В первом релизе проекта расширения охватывают следующие аспекты:
Читать далееНашу собственную Галактику — Млечный путь — нам со стороны никак не увидеть, и с этим уж ничего не поделаешь. Но мы можем смотреть на другие галактики — более или менее похожие на наш звездный город, и делать косвенные выводы о его устройстве. Благо, подходящих для такого изучения, вокруг нас галактик предостаточно.
Читать далееПрезентация Apple близко, 7 мая ждём новые iPad, а пока изучаем бета-версии, новинки от Beats, отчёты о финансовых результатах и слухи о будущем. Какова судьба CarPlay на Mercedes, какие новшества ждать в iPadOS 18 для европейских пользователей, а что случится с Календарём? Эти и другие события, а также интересные новости из App Store – в этом выпуске, погнали к новостям!
Перейти к новостямВ статье я хочу рассказать об одной очень интересной теории разработки документации на системы и программы. Её авторы утверждают, что создали ни много ни мало «Великую Единую Теорию Документации» (The Grand Unified Theory of Documentation). Мы привыкли с опаской относиться к заявлениям о том, что кто-то обнаружил сокровенную истину и раскрыл её профессиональному сообществу. В теории изложены идеи и правила, которые мы встречаем в разных методиках разработки документации и сами применяем на практике.
Основная ценность этой теории не в том, что она раскрывает некое сокровенное секретное знание, а в аккуратной систематизации этого самого знания и в полезных советах по разработке каждого типа документа. Не скажу, что я на 100% согласен со всеми правилами, изложенными в теории, но в ней есть много полезных и рациональных мыслей. В любом случае, она стоит того, чтобы с ней ознакомиться.
Читать далееПривет! В этой заметке покажу, как можно использовать функцию inject на сто процентов.
Обычно ведь как: если функцией inject и пользуются, то только для того, чтобы заменить инжект через конструктор. Удобно, конечно. Но что, если я скажу, что это не всё, на что способна функция inject? Давайте посмотрим на паре примеров, как ещё её можно использовать.
Читать далееПеред прочтением данной статьи настоятельно рекомендую ознакомиться с 1 частью
Введение
Данная статья является продолжением статьи про поднятие киберполигона AITU Military CTF, в этой части мы рассмотрим глобальные изменения касающиеся инфраструктуры, такие как настройка сети ESXI, создание централизованного Firewall и мониторинг.
Я решил написать эту статью так как очень мало подобных статей на тему постройки киберполигона, в последнее время в нашей стране начали часто проводится полигоны и в этой статье мы рассмотрим все тонкости настройки инфраструктуры в условиях ограниченности ресурсов.
Читать далееВ рамках данной статьи обратим внимание на проблему внедрения закладных устройств для несанкционированного доступа к информации. Целью данного данной статьи ставится «Изучение радиомониторинга для выявления закладных устройств». Для достижения поставленной цели необходимо решить задачи:
1) Изучить современные методы радиомониторинга для выявления закладных устройств.
2) Провести практическое тестирование радиомониторинга на реальном объекте.
Читать далееВам нравятся старые Legend of Zelda времён SNES и GBA? Может быть, вам пришлась по вкусу Dark Souls? А, возможно, вы ещё и фанат Quake? Но что объединяет все эти игры? Для меня это в первую очередь дизайн уровней. Головоломки, удобные шорткаты и нелинейность исследования - вот то, что делает карту игры частью общего игрового процесса и вдыхает жизнь в процесс исследования мира.
В наше время расцвета жанра rogue-lite вопрос генерации игровых уровней актуален как никогда. Однако по-настоящему интересные уровни в жанре - большая редкость, я бы даже сказал, феноменальная. Чаще всего уровни представляют собой просто наборы заранее заготовленных комнат-коробок, случайным образом приставленных друг к другу, без какой-либо логичной высокоуровневой картины. Но, всё же, я знаю одну игру, которая взяла принципиально другой подход: Unexplored. На мой взгляд, она пересмотрела устоявшийся стереотип об ограничениях левелдизайна в рогаликах. Всё, что для этого понадобилось - циклическая генерация подземелий (Cyclic dungeon generation).
К сожалению, описаний этого алгоритма в Сети мною было найдено всего лишь два, одно из которых слишком поверхностно, а другое ссылается на отсутствующие в свободном доступе инструменты. Попытка самостоятельно повторить алгоритм без таких инструментов приводит к ряду любопытных задачек.
Каких же?Недавно я увидел новость о появлении на GitHub фальшивых репозиториев, которые обманом заставляют жертв скачивать вредонос, угрожающий безопасности их криптоактивов. Вредонос называется Keyzetsu Clipper, и в тот момент мне очень захотелось узнать, как работают настоящие вирусы. До этого у меня только был опыт учатсия в разных CTF. И тут я понял, что пришло время испытать свои силы на реальном примере.
В данной статье я провел полный анализ и реверс Keyzetsu Clipper, начиная от распаковки и расшифровки до анализа функций персистенца, коммуникации и замены кошельков.
Читать далееСравниваем между собой качество 6 различных токенайзеров, включая новейший OpenAi Large|Small и E5 от Microsoft на задаче векторного поиска:
Ищем ответ на вопрос: В чем сила? в сборнике афоризмов и цитат.
Рассматриваются модели
text-embedding-ada-002
text-embedding-3-large
text-embedding-3-small
intfloat/multilingual-e5-large
ai-forever/ruBert-large
ai-forever/sbert_large_mt_nlu_ru
P.S. Бонусом сравнение как влияет токенайзер на качество задачи по классификации текста (30 классов).
Читать далееКаждый раз, когда появляются новые, нетипичные для нашей обыденной деятельности задачи, мы начинаем общаться со специалистами по их решению. И каждый раз это общение начинается с непонимания или недопонимания. Нам кажется, что мы недооценили сложность проблемы, что нам не хватает каких-то фундаментальных доступных знаний, однако, этому узкому кругу профессионалов, которые, при всем их дружелюбии, не спешат снизойти до нашего уровня.
Ситуация выглядит зеркально, когда обращаются к нам. Нам непонятно, почему эти неглупые и технически грамотные люди нуждаются в подробном объяснении элементарных вещей и задают детские вопросы.
Проходит время, и всё становится ясно. Мы приобрели новые знания? Нет, скорее, освоили терминологию. Любой круг специалистов создаёт собственный язык. Не для изоляции от непосвящённых, не из щегольства – так проще и удобнее. Специалист пользуется массой стандартных решений, верность которых когда-то была раз и навсегда ему доказана, не задумываясь об их неочевидности для других. Цель данного словаря – облегчить освоение терминологии, связанной с числовым программным управлением станками (ЧПУ).
Читать далееЛюди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.
Может показаться, что на самом деле просто не было существенного прогресса с 60х годов, так как Дейкстра предоставил почти асимптотически оптимальный алгоритм решения задачи. На самом деле нет, прогресс был и придумали много чего интересного, хоть и действительно с того времени фокус сместился на другие задачи. Приглашаю под кат если интересно узнать что такого напридумывали, что используется в современных логистических системах, почему меня огорчает отсутствие учёта флага единства в HOMM3 при расчёте пути, ну и наконец, что за мужики на картинке выше рядом с Дейкстрой?
Читать далееТвои глаза болят и чешутся чаще, чем тебе хотелось бы брать больничные перед релизами? Тогда это устройство для тебя. Помимо этого, ты на время станешь киберпанком (почти).
Применять после консультации с вашим рипером (врачом).
Face CoolerЯ люблю проводить численные эксперименты. Процессор должен думать, а не простаивать. Напомню, что нетривиальные нули Зета функции Римана, расположенные симметрично относительно оси X, имеют вещественную часть равную -1/2 (что не доказано, может быть, у вас получится?), а мнимая часть у первых нулей равна (+/-, так как они расположены симметрично): 14.13, 21.02, 25.01, 30.42, 32.93...
Поиграем с этим.
Читать далееВ этой статье я расскажу про тех людей или те профессии, которые участвуют в предпродакшене, продакшене и постпродакшене. Понятно, что все зависит от целей и возможностей. Для хакатона будет достаточно программиста, дизайнера и чувака, который делает всё. Для создания GTA 6 потребуются десятки тысяч сотрудников - от уборщиц до инвесторов. Да, уборщицы тоже влияют на процесс разработки и вообще на процесс работы. Вы даже можете почувствовать это на себе. Когда вы приходите в чистый, свежий кабинет, вам намного комфортнее (я молчу, если вы работаете на не любой работе, это другое). Так вот. Я расскажу, какие есть роли и обязанности у каждого участника разработки игр. А выбирать, кто будет входить в вашу команду, решать только вам.
Читать далееВ статье описывается механизм создания собственного модифицированного варианта монады IO в Haskell, с ограничениями операций ввода-вывода.
Хорошим тоном организации структуры любой программы на Haskell считается разделение кода на блоки, выполняющие IO операции ввода-вывода и блоки, полностью состоящие из чистых функций, т.е. функций, не выполняющих IO операций, а лишь принимающие на вход некоторые данные и возвращающие их в преобразованном виде. Такого рода чистые блоки по сути представляют из себя функции в математическом смысле слова, принимающие аргумент и возвращающие значение функции, и напоминают программы зари компьютерной эры, когда данные с перфокарт загружались в программу в самом начале её работы, после чего некоторое время обрабатывались, и по итогу работы программы выводила на печать итоговый результат расчётов, при этом в ходе работы программы не предполагалось никакого интерактивного взаимодействия с ней.
Чтобы добавить в программу интерактивность, но при этом максимально сохранить математическую целостность функций, применяется примерно такой подход:
Читать далееВольный пересказ выступления главы компании Mobileye профессора Amnon Shashua на пресс конференции в 2023 году.
Читать далее