Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 51 min 23 sec ago

Как пытались (пере)программировать мозги, и что из этого получилось? Часть 6: гипноз, психоз и коматоз на службе MKUltra

Sat, 04/27/2024 - 14:00

В прошлой части мы рассказали, как неудачная попойка офицеров ЦРУ и военных химиков в доме у озера с подмешиванием коллегам ЛСД привела к гибели одного из лучших сотрудников проекта MKUltra Фрэнка Олсона. Тогда историю удалось замять и заставить молчать и полицию, и ФБР, и родственников погибшего. Сидни Готтлиб не только не притормозил свои опасные эксперименты, но и решил в очередной раз расширить экспериментальную базу. Тем самым он нечаянно выпустил из бутылки джинна, который поспособствует грандиозным изменениям американского общества в 1960-е годы… В чём многие увидят опасный антиамериканский заговор КГБ! Но об этом чуть позже, а пока что посмотрим, как ЦРУ экспериментировали с гипнозом, нанимали врачей-психопатов и умудрились в итоге выпустить джинна из своих рук Читать дальше →

Процесс перехода с монолитиной архитектуры на микросервсную

Sat, 04/27/2024 - 14:00

Общий процесс перехода с монолитной архитектуры на микросервисную:

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

2. Определение границ сервисов: Идентифицируйте компоненты и функциональные области монолита, которые могут быть выделены в отдельные микросервисы. Определите границы сервисов на основе их независимости и частоты изменений.

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

4. Постепенное выделение сервисов: Выделяйте сервисы постепенно из монолита, начиная с наиболее критичных и независимых компонентов. Это позволит снизить риски и обеспечить плавный переход к новой архитектуре.

5. Реорганизация кода и данных: Перерабатывайте код и базу данных монолита, чтобы они могли работать с новой микросервисной архитектурой. Это может включать в себя разделение больших модулей на более мелкие, перераспределение функциональности между сервисами и переход к отдельным базам данных для каждого сервиса.

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

Читать далее

[Перевод] Путь к потрясающему CSS Easing с помощью новой функции linear()

Sat, 04/27/2024 - 13:53

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

Читать далее

Предложен новый тип аккумуляторов — натрий-ионный высокой емкости. Что это за технология и какие у нее преимущества?

Sat, 04/27/2024 - 13:34

Источник: theengineer

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

[Перевод] Применение чистой архитектуры в Go

Sat, 04/27/2024 - 13:01


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

На старте проекта приходится принимать множество решений. Большинство инженеров при этом рассматривают область применения проекта и решают, при помощи каких инструментов он будет реализовываться. Речь, в частности, о языках программирования, фреймворках, базах данных, внешних API, вариантах развёртывания. Принимая такие решения на самых ранних этапах, они замыкаются на этих инструментах, пронизывают ими всю базу кода, в результате чего её становится сложно менять и поддерживать.

Большинство этих инструментов – это частности, и выбор большинства из них (кроме языка программирования) можно на некоторое время отложить, пока проект не окрепнет. Поэтому на ранних этапах разработки проекта стоит уделить внимание не тому, при помощи каких инструментов пойдёт реализация. Лучше смоделировать предметную область проекта, а к вышеупомянутым инструментам подходить так, как следует — то есть, как к частностям. Разумеется, чтобы проект был реализован, с такими деталями тоже нужно определиться, но они могут оставаться в некоторой отдельной части кода, не относящейся к предметной области — там, где их будет легко менять, удалять или заменять по нашему усмотрению.

Для решения именно таких проблем с сильной связностью кода многоопытные инженеры создали ряд архитектурных паттернов. Таковы, в частности, чистая архитектура Роберта Мартина («дядюшки Боба»), гексагональная архитектура Алистера Кокбёрна и явная архитектура Герберто Грацы. Читать дальше →

Как построить убежище и (не)облажаться

Sat, 04/27/2024 - 13:00

Вселенная культовой игры Fallout получила очередное перерождение с выходом сериала от Amazon. Хотя фабула произведения (почти) и не пересекается с играми, главная сюжетная арка осталась прежней: сливки общества укрываются в убежищах от ядерного безобразия, а выйдя на поверхность, оказываются совершенно не готовы к царящей там анархии. Как построить качественный бункер и не облажаться, и что на самом деле случится с людьми и убежищем даже не за двести, а всего за два года изоляции? Под впечатлением от сериала вспоминаем самый масштабный эксперимент по созданию «прототипа убежища» и разбираемся, насколько обнадеживающими оказались его результаты. Спойлер — не очень.

Читать далее

Остаться в живых (keepalive) feat. HTTP/2, Go & gRPC-Go

Sat, 04/27/2024 - 12:59

Привет, Хабр!) Меня зовут Ильяс. В этой статье мы разберём известную идею — keepalive в межсервисном взаимодействии, которая спасла уже не одну компанию в трудное время :). Но чтобы добавить интереса, мы разберём, какие проблемы в keepalive принесли современные технологии (ведь что может пойти не так с этой простой идеей?). Поэтому в статье мы рассмотрим механизмы, которые позволяют проверять стабильность соединения между клиентом и сервером в случае, когда обычные TCP keepalive из-за сложности архитектуры не могут определить состояние сервера.

Остаться в живых

Википедии на искусственных языках

Sat, 04/27/2024 - 12:20

Разделы википедии есть на 355 языках (плюс несколько десятков в инкубаторе).

Есть крупные разделы с более чем миллионом статей, их чуть менее 20 (на английском, немецком, русском и так далее; парадоксальным образом на втором месте - википедия на себуанском, одном из языков филиппин, накачанная ботозаливками).

Есть мелкие, но важные (например, на идише, на африканских языках, или на башкирском).

А есть несколько разделов на искусственных языках. Сейчас их 9 (когда-то был еще один, на токипоне; но его закрыли очень давно).

Я попытался разобраться с каждым из них

Рекомпозиция в Compose: что не видно разработчику невооруженным глазом

Sat, 04/27/2024 - 11:29

Всем привет! Меня зовут Данила, я Android-разработчик в команде, которая занимается созданием супераппа WorksPad и почтового клиента RuPost Desktop.

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

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

Большинство поддержало меня в том, чтобы я переложил нашу встречу в формат статьи. Все что вы увидите ниже — и есть тот самый гайд. В нем я постараюсь простыми словами объяснить, как устроен процесс построения UI на Compose:

Читать далее

Эволюция разработки под Android

Sat, 04/27/2024 - 11:25

Отправной точкой истории разработки Android считается начало 2000-х, когда Энди Рубин, Рич Майнер, Ник Сирс, Крис Уайт основывают Android Inc. Уже в 2005 Google выкупает их, а в 2008 запускает свою ОС — Android. Первым смартфоном на её базе стал HTC Dream. Так началась история самой популярной ОС. Возможность реализовывать приложения на Java сделало данную ОС очень популярным среди разработчиков. Но сегодня приоритетным языком программирования для Android-разработки является Kotlin. Это лишь малая часть того, что поменялось с 2008. В данной статье представлена история разработки под Android. Остановлюсь на знаковых технологиях, библиотеках, архитектурах и т.д.

Читать далее

Who's online

There are currently 0 users and 1 guest online.