Habrahabr лучшее

Лучшие публикации за последние 24 часа
Подписка на Лента Habrahabr лучшее Habrahabr лучшее
В мире наступили восьмидесятые. IBM захватывал рынок профессиональных компьютеров своими PC и PC XT — родоначальниками всех современных настольных компьютеров. Джобс одну за другой выпускал новые модели Apple. Commodore 64 и ZX Spectrum гремели по миру. А в это время в советском блоке продолжали выпускаться Ascota 170 — механические компьютеры родом из начала пятидесятых. Почему-то, в рунете (да и в остальном интернете тоже) мало говорят об этих удивительных машинах, едва ли не единственных серийно (больше трёхсот тысяч с 1955 до 1983 годов) выпускавшихся Тьюринг-полных механических компьютерах. Я и сам о них узнал только тогда, когда Аскота случайно попала мне в руки.
Надеюсь, моя статья сможет изменить это.


Моя Аскота закончила считать квадратный корень из 2.
Читать дальше →
Почти все любители видеоигр определённого возраста знакомы с игровыми картриджами и их принципом работы: ты вставляешь картридж в консоль, включает её и начинаешь игру. Менее известны картриджи, которые не были такими простыми, в том числе и подмножество устройств, предназначенное для вставки в них других картриджей. Давайте рассмотрим три примера подобных промежуточных устройств: узнаем, зачем создатели таких картриджей вообще заморачивались добавлением лишнего разъёма под картридж, как такие картриджи использованные подключенные к ним игры, и какие преимущества давала эта уникальная конструкция самим игрокам.

Game Genie
Game Genie был, вероятно, одним из первых устройств для читерства в видеоиграх, с которым сталкивался обычный игрок на домашней консоли. Это хитрое устройство располагалось между Nintendo Entertainment System (NES) и стандартными игровыми картриджами, и давало игрокам возможность настраивать уровни сложности, перемещаться вперёд по игре или просто экспериментировать.

Для детей в 90-х Game Genie казался настоящим волшебством. Сначала вы вставляли один из игровых картриджей в Game Genie. Затем, не без усилий (потому что вставлялся он довольно трудно), вы подключали конструкцию из Game Genie и игры к консоли и включали её. Но вместо обычного запуска игры появлялся загадочный экран, просивший вводить бессмысленные пароли1. Каждый пароль влиял на игру по-своему, и ни в одной игре пароли не повторялись.

Так как же Game Genie («игровой джинн») выполнял желания игроков? Версии Game Genie существовали для NES, Super NES и Game Boy, а также для Sega Genesis и Game Gear. Они перехватывали обмен данными между консолью и игровым картриджем. Внутренняя работа игровой консоли управлялась битами и байтами, поэтому возможность перезаписи данных, передаваемых из картриджа в консоль, позволяла Game Genie выполнять невероятно мощные трюки.
Читать дальше →


Виталий Брагилевский (@_bravit) пока что еще преподает в ЮФУ курсы по Haskell и теории алгоритмов. Также, дает выездные курсы в других городах, является редактором и переводчиком множества книг о Haskell и функциональном программировании, состоит в комитетах Haskell 2020 и компилятора GHC и активно выступает на конференциях. К примеру, он прочитает краткий курс компиляторостроения на Haskell на функциональной конференции FPURE в Казани.

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

Serverless ― это не про физическое отсутствие серверов. Это не «убийца» контейнеров и не мимолетный тренд. Это новый подход к построению систем в облаке. В сегодняшней статье коснемся архитектуры Serverless-приложений, посмотрим, какую роль играет провайдер Serverless-услуги и open-source проекты. В конце поговорим о вопросах применения Serverless.
Читать дальше →
TL;DR. В статье рассказывается об обратной разработке клиента Dropbox, взломе механизмов обфускации и декомпиляции клиента на Python, а также изменении программы для активации функций отладки, которые скрыты в обычном режиме. Если вас интересует только соответствующий код и инструкции, пролистайте до конца. На момент написания статьи код совместим с последними версиями Dropbox, основанными на интерпретаторе CPython 3.6.

Введение
Dropbox очаровал меня сразу с момента своего появления. Концепция по-прежнему обманчиво проста. Вот папка. Кладёшь туда файлы. Он синхронизируется. Переходишь к другому устройству. Он опять синхронизируется. Папка и файлы теперь появились и там!

Объём скрытой фоновой работы на самом деле поражает. Во-первых, никуда не исчезают все проблемы, с которыми приходится иметь дело при создании и обслуживании кросс-платформенного приложения для основных десктопных операционных систем (OS X, Linux, Windows). Добавьте к этому поддержку различных веб-браузеров, различных мобильных операционных систем. И мы говорим только о клиентской части. Меня интересует также бэкенд Dropbox, который позволил достичь такой масштабируемости и низкой задержки с безумно тяжёлой рабочей нагрузкой, которую создают полмиллиарда пользователей.
Читать дальше →
Автор материала, перевод которого мы сегодня публикуем, говорит, что C++, в его современном виде, если сравнивать его с тем, чем был этот язык несколько лет назад, значительно изменился в лучшую сторону. Конечно, эти изменения произошли далеко не сразу. Например, в былые времена C++ не хватало динамичности. Непросто было найти человека, который мог бы сказать, что он питает к этому языку нежные чувства. Всё изменилось тогда, когда те, кто отвечает за стандартизацию языка, решили дать ход новшествам. В 2011 году C++ стал динамическим языком, языком, который постоянно развивается и вызывает у программистов куда больше положительных эмоций.

Не стоит думать, что язык стал проще. Его всё ещё можно назвать одним из самых сложных широко используемых языков программирования, если не самым сложным. Но современный C++ стал гораздо дружелюбнее, чем раньше.



Сегодня мы поговорим о некоторых новых возможностях языка (начиная с C++ 11, которому, кстати, уже 8 лет), знать о которых будет полезно любому программисту.
Читать дальше →


Мне всегда было интересно, как устроен Хабр изнутри, как построен workflow, как выстроены коммуникации, какие применяются стандарты и как тут вообще пишут код. К счастью, такая возможность у меня появилась, ведь недавно я стал частью хабракоманды. На примере небольшого рефакторинга мобильной версии попробую ответить на вопрос: каково это — работать тут фронтом. В программе: Node, Vue, Vuex и SSR под соусом из заметок о личном опыте в Хабре. Читать дальше →
Есть такие области знания, которые «аршином общим не измерить...». В принципе, в моей «домашней» области, коллоидной химии, под такое направление можно спокойно помещать любое фундаментальное понятие, будь-то адсорбция (с адсорбентами) или адгезия (с клеями). Честно говоря, мысль написать про клей у меня не возникала. Но когда читатели в каждой теме, связанной с полимерами начинают просить рассказать про клеи — об этом поневоле задумаешся (ну и хочется конечно же отпарировать на «все надо клеить суперклеем»). Адгезия и клеи — очень обширная тема, поэтому я все-таки решил за нее взяться, но разбить повествование на несколько частей. Сегодня первая часть — вводно-информационная. Чтобы узнать за счет чего клей клеит, какие бывают клеи и какой клей лучше подходит для склеивания _____ (вписать нужное), традиционно идем под кат (и кладем в закладки).

Читать дальше →
Не знаю, как вы, а я люблю учиться у людей. Не только у тех, про которых пишут в книжках. И не столько у тех, которые эти книжки пишут. У живых людей, работающих рядом со мной.

Прелесть в том, что живые люди сами не пытаются тебя учить. Не проводят семинаров, тренингов, не берут с тебя денег. Они просто делают свою работу, как умеют. Что-то у них получается, бывают и провалы, и срывы, и ругань с матами. Но у каждого можно чему-то научиться, даже если в целом о человеке мнение складывается негативное.

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

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

В комментариях велели картинку для привлечения внимания вставить. Исполняю.



Сейчас она работает директором проектного департамента одного из крупнейших и известнейших предприятий Челябинска. А я сижу и пишу про нее статью. Читать дальше →


Думаю, многие читатели хаба по android-разработке слышали, что Java позволяет в рантайме через ClassLoader модифицировать dex уже установленного приложения. С помощью этого можно в рантайме подгружать скомпилированный код и использовать его. Но Google к таким махинациям относится, мягко говоря, не слишком лояльно и банит уличённые в подобном приложения.

Однако есть альтернативные способы загрузки и выполнения скриптов на мобильном устройстве. За подробностями под кат!
Читать дальше →


Взгляните на экран. Что вы видите? Страницу веб-сайта с текстом и картинками, верно? Но, а если копнуть глубже? Все эти разные по смысловой нагрузке и способу подачи элементы состоят из цифровых визуальных «атомов», называемых пикселями. Чем больше пикселей — тем лучше, за исключением некоторых инди-игр. Пиксели, как и любой «атом» во Вселенной, обладает своими определенными свойствами и ограничениями. По крайней мере так было раньше. Сегодня мы познакомимся с исследованием, в котором описывается метод создания нового типа пикселей, в сотни раз меньше и лучше нынешних. Как именно ученым это удалось, какими удивительными характеристиками обладают новые пиксели и смогли бы такие пиксели помочь нам разобрать происходящее во тьме третьей серии восьмого сезона «Игры престолов»? Ответы будем искать в докладе исследовательской группы. Поехали. Читать дальше →

Паттерн HOC (Higher Order Component) очень популярен у React-разработчиков. А вот Vue-разработчики его как-то обходят стороной. Очень зря. Попробуем разобраться в этом.

Читать дальше →


Разбирая одну олимпиадную задачу мы отправимся по петляющим коридорам генерации лабиринтов и их прохождения, а также увидим, что на языке Julia простота реализаций алгоритмов граничит с их псевдокодом.

Читать дальше →

Объектно-ориентированное программирование — чрезвычайно плохая идея, которая могла возникнуть только в Калифорнии.

— Эдсгер Вибе Дейкстра
Возможно, это только мои ощущения, но объектно-ориентированное программирование кажется стандартной, самой распространённой парадигмой проектирования ПО. Именно его обычно преподают студентам, объясняют в онлайн-туториалах и, по какой-то причине, спонтанно применяют даже тогда, когда не собирались этого делать.

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

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


По мере того, как внутренняя часть Луны охлаждается, за последние несколько сотен миллионов лет она сжалась на 50 метров, а на ее поверхности появились новые складки, рвы, канавы и разломы.
Читать дальше →

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


Хочу рассказать о статье "I/O Is Faster Than the CPU – Let’s Partition Resources
and Eliminate (Most) OS Abstractions"
, опубликованной на личной странице одного из разработчиков ScyllaDB, Pekka Enberg. О ней узнал из видео.


С докладом по этой статье авторы должны были выступать на HOTOS17 (Hot Topics in Operating Systems) воркшопе 12 -15 мая 2019. Насколько понял там обсуждают наработки на ранних этапах их жизни.


Моя статья носит новостной характер с целью возбудить пытливые умы на обдумывание этой темы и размышления в комментариях.

Читать дальше →

Кадр из фильма Мстители: Война бесконечности

По сообщению пользователя dobrovolskiy 15 мая 2019 года в результате человеческой ошибки Яндекс удалил часть виртуальных машин в своем облаке.

Пользователь получил письмо от техподдержки Яндекса с таким текстом:
Сегодня мы проводили технические работы в Яндекс.Облаке. К сожалению, из-за человеческого фактора были удалены виртуальные машины пользователей в зоне ru-central1-c, которые хоть раз находились в статусе SUSPENDED. Мы сразу заметили ошибку и остановили удаление. Увы, некоторые ВМ и их boot-диски были удалены.
В результате пользователем были полностью потеряны некоторые продакшн-сервера. Бекапы у пострадавшего были, но часть данных всё равно утрачена безвозвратно. Обычно Яндекс компенсирует даун-тайм своих сервисов, согласно своей политике, но кто компенсирует потерю данных?
Читать дальше →

Рис. 1. – Внешний вид 4-х ступенчатого термоакустического двигателя с бегущей волной

В предыдущих статьях я писал о том, как построить двигатель Стирлинга без поршней, то есть о том, как построить кольцевой термоакустический двигатель с бегущей волной 1 статья, 2 статья, 3 статья.
Читать дальше →
Зачем хранить все данные в памяти?

Для хранения данных сайта или бекэнда первым желанием большинства здравомыслящих людей будет SQL база данных. 


Но иногда в голову приходит мысль что модель данных не подходит для SQL: например, при построении поиска или социального графа нужен поиск по сложным связям между объектами. 


Хуже всего ситуация, когда работаете в команде, и коллега не умеет строить быстрые запросы. Сколько времени вы потратили на решение проблем N+1 и на построение дополнительных индексов, чтобы SELECT на главной странице отрабатывал за разумное время?


Другим популярным подходом является NoSQL. Несколько лет назад был большой хайп вокруг этой темы — для любого удобного случая разворачивали MongoDB и радовались ответам в виде json-документов (кстати, сколько костылей пришлось вставить из-за циклических ссылок в документах?).


Почему бы не попробовать хранить все данные в памяти приложения, периодически сохраняя в произвольное хранилище (файл, удаленная база данных)? 

Читать дальше →

Страницы

Последние публикации

Новые комментарии