Pull to refresh
124
0
Роман @rrromka

User

Send message

Фантастические книги, которые вы могли пропустить в 2020 году

Reading time7 min
Views66K

Что делать, когда хочется писать о книгах, но рубеж года уже пройден, а 2021 пока не радует новинками? Можно еще раз вспомнить достойные фантастические романы, которые вышли на русском в 2020, и заслуживают внимания, хотя их авторы, по крайней мере пока, не могут похвастаться большой популярностью в России. Поэтому хочу рассказать о нескольких фантастических книгах прошлого года, которые произвели на меня хорошее впечатление. 

Буду рад, если в комментариях поделитесь своими фантастическими находками.

Читать далее
Total votes 39: ↑36 and ↓3+51
Comments63

История AltaVista и сохранение прошлого Интернета

Reading time8 min
Views13K


Четверть века назад как своеобразный эксперимент возник один из первых крупных поисковых движков, задумывавшийся как публичный тест основного продукта производителя серверов. В этом тесте мог принять участие любой пользователь с подключением к вебу. На то время эксперимент оказался настолько удачным, что этого никто и представить не мог. Однако проблема заключалась в том, что по сути своей это был эксперимент, который никогда не позиционировался как бизнес. Поэтому со временем эту инновацию неизбежно превзойдут другие, более подходящие компании, а данная передовая идея со временем станет частью прошлого. Но никто не собирался превращать в музейный экспонат инновации Интернета 1995 и 1996 годов: время не стояло на месте, как и веб-сайты, какими бы важными они ни были. Однако было бы здорово, если бы кто-то смог это сделать. В своей статье я пишу об AltaVista, Digital Equipment Corporation, веб-доменах и о том, как важная история может стать основой глупой маркетинговой схемы какой-то случайной компании.
Читать дальше →
Total votes 27: ↑26 and ↓1+37
Comments12

Практический взгляд на хранение в Kafka

Reading time8 min
Views38K


Kafka повсюду. Где есть микросервисы и распределенные вычисления, а они сейчас популярны, там почти наверняка есть и Kafka. В статье я попытаюсь объяснить, как в Kafka работает механизм хранения.

Читать дальше →
Total votes 23: ↑22 and ↓1+33
Comments3

Как избежать гниения ПО

Reading time6 min
Views48K

Недавно я наткнулся на историю столь же удивительную, сколь и ужасную:

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

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

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



Ещё одна программа, занимающаяся переводом прибыли, должна была уведомлять пользователей, что их вкладов недостаточно для прогнозирования дохода. Заметив, что из первой программы из-за её вылета нет выходных данных, она восприняла эту ситуацию как «все вклады равны 0». Разумеется, она должна была вести себя совершенно иначе. Но никто не знал, что она будет действовать так, поскольку первая программа никогда не вылетала.



Я получил от ИТ-директора неожиданное текстовое сообщение. «Простите за беспокойство, у нас огромная проблема. s1X. Можете прилететь сегодня во второй половине дня?» В их терминологии S1X обозначает «хуже, чем уровень серьёзности 1, потому что проблема распространилась на несвязанные с ней части бизнеса».

К счастью, все пенсии были спасены и история окончилась хэппи-эндом. Но нам вряд ли покажется нормальным, что критически важные финансовые системы зависят от древнего ПО, в котором не разбирается никто из ныне живущих людей.
Читать дальше →
Total votes 42: ↑38 and ↓4+51
Comments57

Как древние шумеры повлияли на значение скорости света, и почему Великая Французская Революция не смогла им помешать

Reading time8 min
Views42K

Из учебников физики нам известно, что скорость света в вакууме равна 299792458 метрам в секунду. Вы никогда не задумывались, почему такая фундаментальная физическая константа как скорость света имеет такое странное значение? Почему она равна приблизительно тремстам миллионам метров в секунду? Почему ни больше и ни меньше? В чем сакральный смысл этого числа?

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

Чтобы понять это, давайте представим себе, инопланетянина, изучающего людскую цивилизацию. Он узнает, что для измерения времени мы используем единицы, равные времени полного обращения нашей планеты вокруг собственной оси, деленное на некоторое число. Если мы поделим время полного обращения Земли на двадцать четыре, то получим час. Если час мы поделим на шестьдесят, то получим минуту. А если и минуту мы поделим на шестьдесят, то получим секунду. И при этом именно секунда выбрана в качестве основной единицы в международной системе стандартных единиц. Что за бессмыслица? - подумает инопланетянин.

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

Читать далее
Total votes 95: ↑88 and ↓7+114
Comments308

Аппаратный взлом жёсткого диска

Reading time14 min
Views127K

Жёсткие диски: если вы читаете эту статью, то с большой вероятностью у вас есть одно или несколько таких устройств. Они довольно просты и, по сути, представляют собой набор 512-байтных секторов, пронумерованных возрастающими адресами, также называемыми LBA (Logical Block Address). Компьютер, к которому подключен жёсткий диск (hard drive, HD), может считывать и записывать данные в эти сектора. Обычно используется файловая система, абстрагирующая все эти сектора до файлов и папок.

Неспециалисту может показаться, что оборудование HD должно быть довольно простым: достаточно всего лишь устройства, подключаемого к порту SATA, которое может позиционировать свои головки чтения/записи и считывать или записывать данные на пластины. Однако их работа намного сложнее: разве жёсткие диски не занимаются обработкой сбойных блоки и атрибутов SMART, и не имеют кэша, с которым тоже каким-то образом нужно работать?

Всё это подразумевает, что в жёстком диске есть что-то умное, а умность устройства подразумевает возможность его взлома. Меня всегда интересовали возможности взлома, поэтому я решил узнать, как жёсткие диски работают на немеханическом уровне. Подобные исследования уже проводились с разными видами оборудования, от PCI-карт расширения и встроенных контроллеров до ноутбуков и даже клавиатур Apple. Обычно исследования проводились для того, чтобы доказать, что возможность взлома этих устройств может привести к компрометации ПО, поэтому я захотел воспользоваться тем же подходом: создавая этот хак, я стремился создать жёсткий диск, способный обходить программную защиту.
Total votes 93: ↑92 and ↓1+127
Comments41

Вышла книга «Олимпиадное программирование»

Reading time6 min
Views21K
В издательстве “ДМК Пресс” вышла книга “Олимпиадное программирование” с подзаголовком “Изучение и улучшение алгоритмов на соревнованиях”. Она стала глотком свежего воздуха для всех, кто интересуется, готовит и готовится к участию, или только планирует в будущем, в таком интеллектуальном виде деятельности, как различные мероприятия спортивного программирования. В России с ними знакомы недостаточно.

Российское издание книги “Guide to Competitive Programming” (издательство Springer International Publishing AG)вышло при поддержке Центра развития ИТ-образования МФТИ и его руководителя Алексея Малеева, Mail.Ru Group, а также проекта Moscow Workshops ICPC.


Читать дальше →
Total votes 16: ↑14 and ↓2+21
Comments17

Движок, который смог: как Chromium удалось захватить 90% рынка браузеров

Reading time14 min
Views61K

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

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

У веб-сообщества есть достаточно причин опасаться отсутствия браузерного разнообразия. После того, как Internet Explorer захватил в начале 2000-х долю 90% от рынка браузеров, для выпуска нового браузера его разработчикам потребовалась добрая половина десятилетия. В тот период развитие веба остановилось, и начали возникать проблемы с безопасностью. Из-за этого веб стал хуже, поэтому мы часто стремимся к тому, чтобы браузеры конкурировали, а не монополизировали веб.
Читать дальше →
Total votes 64: ↑58 and ↓6+72
Comments121

Германия, или Туда и Обратно — 1

Reading time14 min
Views67K
Почти два года назад, под Новый год, у меня зазвонил телефон.

После пары дежурных фраз «как сам, как дети» меня позвали работать в Германию.



Я крепко призадумался.

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

Итак, под бой курантов мы с супругой приняли решение: «Ехать!»

Кто хочет прочитать про мой увлекательный, но весьма субъективный опыт переезда в Германию — добро пожаловать под кат.
Читать дальше →
Total votes 118: ↑114 and ↓4+145
Comments728

Фольклор программистов и инженеров (часть 1)

Reading time29 min
Views73K


Это подборка историй из интернета о том, как у багов иногда бывают совершенно невероятные проявления. Возможно, вам тоже есть что рассказать.
Total votes 103: ↑95 and ↓8+107
Comments247

USB-флешки: заряжать нельзя игнорировать

Reading time6 min
Views238K


В интернете прошла смута под названием «зачем заряжать флешку». На первый взгляд смешно, но предлагаю еще раз подумать и разобраться в вопросе. После прочтения этой статьи вы тоже начнете заряжать свои флешки.
Читать дальше →
Total votes 179: ↑171 and ↓8+215
Comments282

Почему TPU так хорошо подходят для глубинного обучения?

Reading time5 min
Views45K

Тензорный процессор третьего поколения

Тензорный процессор Google — интегральная схема специального назначения (ASIC), разработанная с нуля компанией Google для выполнения задач по машинному обучению. Он работает в нескольких основных продуктах Google, включая Translate, Photos, Search Assistant и Gmail. Облачный TPU обеспечивает преимущества, связанные с масштабируемостью и лёгкостью использования, всем разработчикам и специалистам по изучению данных, запускающим передовые модели машинного обучения в облаке Google. На конференции Google Next ‘18 мы объявили о том, что Cloud TPU v2 теперь доступен для всех пользователей, включая бесплатные пробные учётные записи, а Cloud TPU v3 доступен для альфа-тестирования.
Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments31

Язык программирования karasic

Reading time8 min
Views52K

Привет, друг.


Как известно, каждый уважаемый кодер рано или поздно пишет свой логер, парсер json и язык программирования. Поскольку первое и второе мы уже написали, то нам ничего не остаётся, как представить наши наработки по новому инновационному языку программирования karasic.


Читать дальше →
Total votes 153: ↑146 and ↓7+189
Comments110

Когда я слышу слова «нейросеть восстановила», я лезу проверять бэкапы

Reading time11 min
Views82K
Кроме того что я айтишник, я ещё и историк техники, и именно этим обусловлена моя реакция на новости об очередных достижениях в области цифровых технологий. Месяц назад я принял решение начать писать книжку для людей далёких от IT и близких к историческим исследованиям и источникам («Цифровое источниковедение — специфические проблемы» — пишется на сайтах книжных черновиков ), в которой расскажу им о том, чем для них обернулось развитие цифровых технологий.

Через пару дней после этого по интернету пронеслась новость « «Прибытие поезда» улучшили с помощью нейросетей — фильм 1896 года теперь можно посмотреть в 4K и 60 кадрах в секунду », и это хороший повод рассказать айтишникам о том же самом.

Исходного фильма «Прибытие поезда» у меня нет, поэтому в качестве тестовых образцов я использовал современные фотографии (уменьшенные или обесцвеченные) + фото из 1930-х (предположительно)

Когда я слышу слова «нейросеть восстановила», я лезу проверять бэкапы
Читать дальше →
Total votes 168: ↑166 and ↓2+232
Comments259

ZIO & Cats Effect: удачный союз

Reading time18 min
Views11K
Cats Effect стал своего рода «Reactive Streams» для функционального Scala-мира, позволив объединить всю разнообразную экосистему библиотек вместе.

Многие отличные библиотеки: http4s, fs2, doobie — реализуются только на базе тайп классов из Cats Effect. А библиотеки типа ZIO и Monix, уже в свою очередь, предоставляют инстансы этих тайп классов для своих типов эффектов. Несмотря на некоторые проблемы, которые будут исправлены в версии 3.0, Cats Effect помогает многим опенсорс контрибьюторам органично поддерживать всю функциональную экосистему языка Scala. Разработчики, которые используют Cats Effect, сталкиваются с трудным выбором: какую реализацию эффектов использовать для своих приложений.

На сегодня есть три альтернативы:

  • Cats IO, ссылочная реализация;
  • Monix, тип данных Task и связанная с ним реактивность в коде;
  • ZIO, тип данных ZIO и его прицел на многопоточность.

В этом посте я постараюсь доказать вам, что для создания своего приложения с использованием Cats Effect, ZIO — хороший выбор с дизайн решениями и возможностями, довольно сильно отличающимися от ссылочной реализации в Cats IO.
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments2

Функциональное программирование: дурацкая игрушка, которая убивает производительность труда. Часть 1

Reading time10 min
Views87K
Возможно, вы уже слышали о так называемом «функциональном» программировании. Возможно, вы даже подумываете о том, что вам стоит его как-нибудь попробовать.

Ни в коем случае этого не делайте!



Функциональное программирование полно недочётов, оно не подходит для реальных проектов. Его применение приведёт к резкому падению производительности труда. Почему это так? Давайте выясним.

▍→ Часть 2
Читать дальше →
Total votes 168: ↑100 and ↓68+32
Comments403

«Сгоревшие» сотрудники: есть ли выход?

Reading time18 min
Views161K
Ты работаешь в хорошей компании. Вокруг тебя крутые профессионалы, получаешь достойную зарплату, каждый день делаешь важные и нужные вещи. Илон Маск запускает спутники, Сергей Семёнович улучшает и без того лучший город Земли. Погода отличная, солнце светит, деревья цветут — живи да радуйся!

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

Что же делать? Как работать с Игнатом? Добро пожаловать под кат!


Total votes 224: ↑210 and ↓14+196
Comments400

ServiceLoader: встроенный DI-фреймворк, о котором вы, возможно, никогда не слышали

Reading time5 min
Views11K
Салют, друзья. Уже в эту пятницу пройдет первое занятие в новой группе курса «Разработчик Java». Именно этому курсу и будет посвящена текущая публикация.



Многие из java-разработчиков для внедрения зависимостей используют Spring. Некоторые, возможно, пробовали Google Guice или даже OSGi Services. Но многие не знают, что в Java уже есть встроенный DI. Думаете это появилось в Java 11 или 12? Нет, он доступен с Java 6.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments5

Советские мечты о будущем

Reading time9 min
Views93K


Помните очаровательного котика, которые чихал в заставке советского мультфильма? Мы помним, и нашли его — вместе с ворохом другой рисованной фантастики. В детстве она пугала и обескураживала, поскольку поднимала серьезные, взрослые темы. Настала пора пересмотреть старые мультфильмы, чтобы узнать, о каком будущем мечтали в той стране.
Total votes 138: ↑136 and ↓2+134
Comments144

Дюк, вынеси мусор! — 2. Serial GC и Parallel GC

Reading time11 min
Views128K
Heap


В предыдущей статье мы познакомились с терминологией и основными идеями, лежащими в основе сборщиков мусора Java HotSpot VM и многих других виртуальных машин. Теперь мы, наконец, можем взять в руки лопату и приступить к разгребанию нашей кучи. Сегодня у нас на обзоре две лопаты два сборщика мусора, используемые огромным количеством Java-программ, зачастую даже не подозревающих об этом. Это Serial GC и Parallel GC. Их популярность объясняется просто — данные сборщики выбираются виртуальной машиной по умолчанию для большинства аппаратных конфигураций.

Используемые в этих сборщиках подходы к работе с кучей в том или ином виде применяются в более продвинутых реализациях, поэтому на данном этапе нам будет очень важно разобраться с заложенными в них идеями и возможностями.
Интересно, хочу разобраться
Total votes 36: ↑36 and ↓0+36
Comments22

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity