Search
Write a publication
Pull to refresh
-5
@cosmolevread⁠-⁠only

User

Send message

Научная фантастика в ЕКА

Level of difficultyEasy
Reading time15 min
Views3.4K

 После публикации статьи об использовании научной фантастики в Национальном управлении по аэронавтике и исследованию космического пространства (NASA) мне стало интересно, а существует ли нечто подобное в Европейском космическом агентстве? Оказалось, специалисты европейской аэрокосмической отрасли, как и их коллеги американцы, регулярно и успешно перечитывают научную фантастику.

Читать далее

Немодальное окно коммита в IntelliJ IDEA: шаг вперёд или спорное нововведение?

Level of difficultyEasy
Reading time4 min
Views8.7K

В свежих обновлениях IntelliJ IDEA разработчики JetBrains внедрили немодальное окно коммита, отказавшись от классического модального диалога. Команда Spring АйО не обошла стороной активное обсуждение среди пользователей, которые разделились на два лагеря: одни приветствуют нововведение, другие считают его неудобным. Разберёмся, какие плюсы и минусы выявили пользователи и что по этому поводу думают представители JetBrains.

Читать далее

Serverless-трекер поездов метро

Level of difficultyMedium
Reading time13 min
Views4.2K

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

График поездов метро Нью-Йорка можно посмотреть на mta-trmnl.pages.dev. Исходный код моего проекта выложен на GitHub: фронтенд, бэкенд.

▍ Я безголовый


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

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

Дикая Java

Level of difficultyMedium
Reading time5 min
Views20K

«Безопасный язык» говорили они, «четкая спецификация» говорили они, «Java не даст вам выстрелить себе в ногу» и прочее и прочее. Реальность же оказалась куда веселее официальной документации.

«Ибо JVM темна и полна ужасов». (ц)

Погрузиться

Стримы в Java: Как перестать бояться и полюбить filter-map-reduce

Level of difficultyEasy
Reading time9 min
Views9.2K

Когда-то я считал, что священный грааль итераций — это старый добрый цикл for. Да, тот самый, с индексами, который шагал по массивам как бравый солдат по полю. Я обожал мои циклы и охотно избегал всего, что могло их заменить. Но потом появился он — Stream API. Новомодный, загадочный, пугающий, словно неведомый зверь из функционального леса. И вот я, стоя по колено в коде, задумался: "Как перестать бояться и полюбить filter-map-reduce?"

Читать далее

Почему JWT — не панацея: разбор проблем сессий и безопасности

Level of difficultyMedium
Reading time6 min
Views26K

JWT для сессий: удобство или головная боль?

JSON Web Token (JWT) приобрёл популярность как удобный способ аутентификации и передачи данных между клиентом и сервером. Его ценят за простоту, stateless-подход и гибкость. Однако большинство гайдов рассказывают только о плюсах, забывая о недостатках.

В этой статье мы разберём основные проблемы использования JWT для хранения пользовательских сессий и обсудим более надёжные альтернативы.

Читать далее

Как создать скрипт-beautifier в Ghidra на Python?

Level of difficultyMedium
Reading time11 min
Views1.5K

Приветствую, дорогой читатель. Хочу представить вашему вниманию пример, как можно упростить себе жизнь при исследовании кода программ, используя скриптинг в Ghidra.

Если вы уже имели опыт работы с дизассемблером, то заметили, что читать его вывод не так легко, если целью является понять более высокие абстракции, заложенные в нём. Возможно, вы даже пытались декомпилировать его в псевдокод, но работать с переменными типа local_1-999 – то ещё удовольствие. Да, можно щёлкнуть на каждую из них и присвоить имя на основе логики. А что, если у вас 2000 строк и более?

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

Все манипуляции были проделаны на версии 11.1.2. Чтобы попасть в список доступных скриптов, откройте меню Window → Script Manager и там же создайте новый скрипт, нажав в правом верхнем углу кнопку Create New Script и выбрав язык Python.

Важное ограничение: Ghidra использует внутреннюю реализацию языка Python версии 2.7.

Читать далее

Перепрограммируем заводской датчик CO2 Zigbee от компании Tuya

Level of difficultyEasy
Reading time3 min
Views16K

Предыдущий проект о перепрограммировании заводского термостата вызвал достаточно большой интерес у сообщества (ссылка будет в конце статьи). И вот поступило предложение проверить, можно ли таким же образом избавиться от спама на датчике CO2.

Читать далее

Исповедь хакера: как работает финансовый рынок?

Level of difficultyEasy
Reading time21 min
Views27K

Это статья - еще один изумруд из недр интернет андеграунда. Гарантирую, что вы найдете в ней что-то интересное. Возможно, мысли автора выражены в несколько экспрессивной и утрированной форме, но учитывая такие исторические события как Азиатский финансовый кризис и Кризис 2008 года, рынок действительно напоминает сюрреалистическую зарисовку. И наше время определенно в этом плане выглядит еще более сюрреалистичным. Тот же Трампкоин, который все обсуждали несколько недель назад, откровенные манипляции с DOGE Илоном Маском, поэтому его экспрессивность понять можно, но мат я убрал)

Читать далее

Майнинг отопление загородного дома. Криптокотел. Опыт использования

Level of difficultyMedium
Reading time7 min
Views29K

Как я превратил майнинг в источник тепла: котел, который зарабатывает деньги

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

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

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

Читать далее

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

Reading time12 min
Views33K

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

Читать далее

Использование оверлейных сетей для обхода NAT

Reading time15 min
Views16K

У меня, как и у многих посетителей Хабра есть raspberry pi. А ещё, почти честные сто мегабит от провайдера домашнего интернета. Идея о маленьком домашнем сервере от такой комбинации появляется сама по себе. Но сервер он ведь на то и сервер, чтобы работал независимо от факта нахождения пользователя в физической доступности. В связи с этим, возникает вопрос, как подключаться к такому серверу удалённо? Обычно провайдеры домашнего интернета прячут своих пользователей за NAT, так как IPv4 на всех не напасёшься. Мой провайдер исключением не является. Внешний статический IP он так же не предоставляет (по крайней мере, такой услуги в ЛК я не нашёл), да и совершенно ни к чему выставлять шлюз в локальную домашнюю сеть во внешний интернет. Shodan, ботнеты, сканеры и краулеры никто не отменял. Раньше для подобной задачи решение было очевидным – виртуальная частная сеть. Однако сейчас, с учётом нарушения сетевого коннекта по определённым протоколам, хочется иметь как минимум резервный удалённый канал связи. Да, нарушение коннекта по привычным для данной задачи протоколам неполное: можно отыскать протокол, который не забанен, можно поиграть с настройками, тем не менее хочется иметь возможность сделать это удалённо. Мой взгляд упал на нестандартные средства решения этой задачи.

Читать далее

Баг в дизайне коллекций

Level of difficultyEasy
Reading time4 min
Views2.9K

В этой статье речь пойдёт о фреймворке коллекций в Java. Относительно недавно (в 3 кв. 2023 года) эта библиотека вновь слегка обновилась. Я ознакомился с обновлениями, и скажу, что они меня разочаровали.

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

Итак случившееся обновление - добавление последовательных версий интерфейсов в коллекции, а именно SequencedCollection, SequencedSet и SequencedMap. Такие последовательные коллекции ещё во времена Рапиры, кажется, называли кортежами.

Читать далее

Еще один монитор CO2 без датчика CO2

Reading time5 min
Views34K

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

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

Под катом небольшой рассказ про все эти датчики и пара советов, как не промахнуться.

Читать далее

Катастрофа в российской зоне проекта NTPPool.org

Level of difficultyEasy
Reading time4 min
Views93K

Привет, Хабр! Своим первым постом на площадке я хочу привлечь внимание к катастрофе, сложившейся на данный момент в RU-зоне проекта NTPPool.org. Я думаю, что проект в представлении не нуждается, тем не менее, для тех, кто никогда о нём не слышал - во многом благодаря ему все ваши компьютеры, смартфоны, серверы и прочие гаджеты имеют точное время.

Читать далее

Заточка кухонных ножей мусатом

Level of difficultyEasy
Reading time9 min
Views82K

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

Читать далее

Grafana Stack: закрываем все современные потребности Observability

Reading time6 min
Views8.1K

Ни одна система не может функционировать без сбоев, всегда могут возникнуть ситуации, когда в работе софта возникают проблемы. И здесь важное значение имеет observability — понятие, включающее в себя мониторинг и наблюдаемость. С помощью мониторинга мы можем определить, когда возникла проблема, а наблюдаемость позволяет нам понять, почему она возникла.

В этой статье мы поговорим о том, как можно реализовать observability с помощью сервисов стека Grafana.

Читать далее

Null-безопасность в Java: когда нули тоже имеют значение

Reading time5 min
Views2.7K

В компании “Свой Банк” мы активно развиваем лучшие практики и стандарты в Backend-разработке. Но, прежде чем выработать хотя бы одну практику, необходимо изучить материалы, разобраться в теме и выработать подходящий вариант. Поэтому в данной статье затронем основные понятия и концепции работы null-безопасности в объектно-ориентированном языке программирования Java.

Что такое Null-безопасность и Nullability

Nullability — это концепция, которая описывает, может ли переменная или выражение содержать значение `null`. Несмотря на свою кажущуюся простоту, работа с `null` часто становится причиной сложных ошибок, таких как `NullPointerException` (NPE). Из-за этого возникла концепция null-безопасности, целью которой является защита кода от ошибок, связанных с `null`.

Null-безопасность означает, что в коде либо отсутствуют `null`-значения, либо они обрабатываются явно и безопасно. В Java существуют разные подходы к обеспечению `null`-безопасности, которые позволяют управлять возможностью появления `null` в коде и минимизировать риски, связанные с их использованием.

Итого Nullability - это способность объекта быть `null`.

Null-безопасность - это свойство языка программирования безопасно работать с `null`.

Читать далее

Курсы врут? Уникальные торговые предложения

Level of difficultyEasy
Reading time11 min
Views9.1K

Купи курс, и тебя обманут, а я расскажу, как. Но самое главное — раскрою секрет, как сделать так, чтобы больше никогда не было проблем с курсами или их отделами продаж!

В мире бизнесов есть термин УТП (USP) — расшифровывается как «уникальное торговое предложение». И это один из главных засранцев, которые заставляют тебя покупать бесполезные курсы, игнорируя здравый смысл, потребности и ценность предложений. Заходя на лендинг какого‑нибудь продукта, мы сразу видим под шапкой и названием кучу УТП, которые разработали маркетологи. Все они разные. Есть для вашего удобства, для выгоды и даже решающие ваши страхи и проблемы. Они направлены на разные сегменты клиентов, но 90% из них — это словоблудие, за которым ничего не стоит. Давай разберем мой топ самых мерзких и даже опасных УТП.

Читать далее

Создаем свою библиотеку на C++ с тестированием, CMake и блекджеком: часть 2

Level of difficultyMedium
Reading time30 min
Views8.4K

В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в нескольких своих проектах однообразный код, который приходилось каждый раз перемещать. Да и хотя бы как упаковать свои идеи и знания в удобный и доступный формат, которым можно будет поделиться с сообществом.

Если вы ловили себя на мысли: «А почему мне бы не создать свою полноценную библиотеку?», то я рекомендую прочитать вам мою статью.

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

Некоторые из вас могут подумать, что мы изобретаем велосипед. А я в ответ спрошу — сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?

Добро пожаловать во вторую, скорее всего финальную часть статьи! Здесь мы окончательно допишем код, исправим некоторые ошибки.

Читать далее

Information

Rating
Does not participate
Registered
Activity