Pull to refresh
22
0.7
Максим @fshp

Scala developer

Send message

Структура драйвера Linux для одноплатного компьютера

Level of difficultyEasy
Reading time7 min
Views13K

Здраствуйте меня зовут Дмитрий. Недавно я написал статью как собрать прошивку для одноплатного компьютера Orange PI i96 с нуля. Если вы не читали то очень советую. И там я упоминал что для того чтобы собрать прошивку на новом ядре Linux, мне пришлось переписать драйверы с учетом архитектуры Device Tree, которую использует современное ядро. В этой статье я опишу как я это сделал.

Читать далее
Total votes 37: ↑36 and ↓1+35
Comments4

Пишем printf на языке ассемблера FASM

Level of difficultyHard
Reading time12 min
Views15K

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

Читать далее
Total votes 55: ↑54 and ↓1+53
Comments5

Дорожная карта для изучения Java

Level of difficultyEasy
Reading time7 min
Views48K

Java — настолько популярный и развитый язык, что контента на любую связанную с ним тему хоть отбавляй. Будь то технические разборы, обзоры популярных библиотек с открытым исходным кодом, статьи о поиске работы Java-программистом, сравнение с другими языками — всего не перечесть. Поиск по слову «java» в гугле выдал мне около 1,56,00,00,000 (?) результатов.

Читать далее
Total votes 24: ↑15 and ↓9+6
Comments43

Лучшие книги по Apache Kafka

Reading time15 min
Views26K

«Effective Kafka: A Hands-on Guide to Building Robust and Scalable Event-Driven Applications», «Kafka: The Definitive Guide» и другие издания.

В этой статье я расскажу, как изучал Apache Kafka и с какими трудностями столкнулся. Я очень надеюсь, что мои наблюдения помогут тем, кто ещё только приступает к знакомству с платформой. Здесь мы обсудим полезные ресурсы, в основном, книги, которые я прочитал, и мой опыт с платформой#nbsp;— до чтения книг и после.

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments3

Как войти в IT?

Reading time8 min
Views119K

Цель статьи помочь желающим войти в IT, либо показать, что оно им не нужно.

На фоне большого количества отрицательных отзывов об образовательных платформах, человек решил сменить профессию и часто всегда цель перейти в IT сферу. Ни для кого не секрет, что одна из причин такого явления — агрессивная реклама платформ, которые предоставляют различные курсы, после которых, по их заверениям человек получит профессию мечты с высокой оплатой труда.

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

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

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

Читать далее
Total votes 57: ↑46 and ↓11+35
Comments149

Как Activision Blizzard и Бобби Котик получили Infinity Ward и бренд Call Of Duty. Ретроспектива

Reading time6 min
Views4.3K

Пока под Бобби Котиком шатается стул, Activision Blizzard мотает в разные стороны, хочется вспомнить еще один интересный и неприятный эпизод, связанный с этой компанией. Это практически рейдерский захват студии Infinity Ward и их многообещающего дорогостоящего бренда Call of Duty.

Читать далее
Total votes 16: ↑13 and ↓3+10
Comments4

Переход с iptables на nftables. Краткий справочник

Reading time18 min
Views107K
image

В Debian теперь нет iptables. Во всяком случае, по умолчанию.

Узнал я об этом, когда на Debian 11 ввёл команду iptables и получил “command not found”. Сильно удивился и стал читать документацию. Оказалось, теперь нужно использовать nftables.

Хорошие новости: одна утилита nft заменяет четыре прежних — iptables, ip6tables, ebtables и arptables.

Плохие новости: документация (man nft) содержит больше 3 тысяч строк.

Чтобы вам не пришлось всё это читать, я написал небольшое руководство по переходу с iptables на nftables. Точнее, краткое практическое пособие по основам nftables. Без углубления в теорию и сложные места. С примерами.
Читать дальше →
Total votes 126: ↑126 and ↓0+126
Comments46

Тестирование псевдослучайной последовательностью

Reading time4 min
Views3.3K

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

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

Поэтому надо было подготовить простую программу (в смысле ПО) для испытаний. И встал вопрос, что выдавать в качестве «информации»? Решили все-таки не тривиальную «решетку» AA55, а псевдослучайную последовательность с помощью примитивного полинома Галуа.

Алгоритм там действительно очень простой:

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments5

Лучшее в мире видео-объяснение нейронных сетей, глубокого обучения, градиентного спуска и обратного распространения

Reading time1 min
Views56K
image

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

Из комментариев к прошлым публикациям мне стало понятно, что есть большое количество людей, кто не знает про канал, поэтому хочу поделиться четырьмя видео (+ русские субтитры и дубляж) и сэкономить время школьникам, родителям и учителям, чтобы они могли иметь быстрый доступ к самому интересному и качественному объяснению одной из самых важных тем современности.
Total votes 65: ↑61 and ↓4+57
Comments24

saneex.c: try/catch/finally на базе setjmp/longjmp (C99) быстрее стандартных исключений C++¹

Reading time19 min
Views12K

Пока писал эту сугубо техническую статью, Хабр успел превратиться в местное отделение ВОЗ и теперь мне даже стыдно ее публиковать… но в душе теплится надежда, что айтишники еще не разбежались и она найдет своего читателя. Или нет?




Меня всегда восхищала стандартная библиотека Си, да и сам Си — при всей своей минималистичности от них так и веет духом тех самых первых красноглазиков хакеров. В черновике первого официального стандарта (ANSI C, он же C89, он же ANS X3.159-1989, он же, позднее, C90 и IEC 9899:1990) определяется 145 функций и макросов, из них около 25 — это вариации (ввиду отсутствия в языке перегрузок), а 26 чисто математических. K&R во второй редакции² приводят 114 функций (плюс математические), считая остальные за экзотику. В черновике³ C11 функций уже 348, но больше сотни — математика, а еще штук 90 это «перегрузки». А теперь посмотрим на Boost, где одних только библиотек — 160. Чур меня…


И среди этой сотни-полутора функций всегда были: обработка сигналов, вариативные функции (которые до интерпретируемого PHP дошли 25 лет спустя, а в Delphi, бурно развивавшемся одно время, их нет до сих пор) и порядка 50 строковых функций вроде printf() (м-м-м… JavaScript), strftime() (…) и scanf() (дешевая альтернатива регуляркам).



А еще всегда были setjmp()/longjmp(), которые позволяют реализовать привычный по другим языкам механизм исключений, не выходя за рамки переносимого Си. Вот о них и поговорим — Quake World, стеки, регистры, ассемблеры и прочая матчасть, а вишенкой будет занятная статистика (спойлер: Visual Studio непостоянна, как мартовский заяц, а throw saneex.c в два раза быстрее всех).


Текста много, не порежьтесь!
Total votes 43: ↑42 and ↓1+41
Comments44

Вопросы к собеседованию Java-backend, Java core (60 вопросов)

Reading time17 min
Views242K
image

Добрый день! Представляю вашему вниманию список вопросов к собеседованию Java Backend, которые я оформлял на протяжении около 2х лет.

Вопросы разбиты по темам: core, collections, concurrency, io, exceptions, которые задают основные направления хода технического собеседования. Звездочками отмечен субъективный (с точки зрения автора) уровень сложности вопроса, в сноске спойлера — краткий ответ на вопрос. Ответ представляет для интервьювера правильное направления развития мысли кандидата.
Читать далее
Total votes 31: ↑23 and ↓8+15
Comments76

Флеш-ускорители PCI-E от 800GB до 6.4TB: от рассвета до жизни в обычном ПК/сервере

Reading time6 min
Views44K


Были времена, когда накопители на основе флэш-памяти стоили настолько дорого, что как накопители их даже никто и не рассматривал. Десятки тысяч долларов. Они позиционировались как нечто революционное, способное придать космическую скорость системам хранения данных. Прямо как Intel Optane в последнее время, но о нём пока не будем, пока ещё слишком дорог.

Наверное, тогда маркетологи и придумали такое название как Flash Accelerator (флеш-акселератор или флеш-ускоритель).

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

Мотивация


  • Хотелось ли вам за разумные деньги купить SSD размером в несколько терабайт?
  • Чтобы ресурс был на десятки петабайт?
  • Такой, что что бы вы ни делали, вы бы не смогли его исчерпать?
  • При этом с защитой по питанию и сделанный из самых качественных деталей и самой стойкой памяти?

Поехали!
Total votes 82: ↑80 and ↓2+78
Comments97

Советские супергерои, чешские козявки и австралийский клон

Reading time7 min
Views18K
В статье «Как фантаст Артур Кларк чуть не закрыл журнал «Техника — молодежи»» я пообещал как-нибудь в пятницу рассказать о том, как главный редактор «Веселых картинок» чуть не погорел на букашках — в самом прямом смысле слова.

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

image

У журнала есть четко фиксированный день рождения — 24 сентября 1956 года. В этот день увидел свет первый номер журнала «Веселые картинки» — первого советского журнала для дошкольников.

Счастливым (и многодетным) отцом было постановление партии и правительства «О развитии детской литературы и детской периодики», вышедшее в начале 1956 года. Через несколько месяцев после его появления количество детских журналов в стране удвоилось — уже в сентябре в компанию к «Мурзилке», «Пионеру» и «Костру» добавились «Юный техник», «Юный натуралист» и «Веселые картинки», выпустившие свои первые номера.
Читать дальше →
Total votes 133: ↑125 and ↓8+117
Comments96

Докер мертв

Reading time4 min
Views88K

Сказать, что для Docker'а 2017 год выдался тяжёлым, было бы преуменьшением. Не могу вспомнить ни одного столь раскрученного и хорошо обеспеченного деньгами стартапа из Долины, кроме Uber'а, который бы провёл 2017 год так же невнятно, как Docker. 2017 стал тем годом, когда Docker, великолепный образчик программного обеспечения, был полностью уничтожен плохим бизнес-управлением. Эта заметка — сторонний взгляд на то, как и где Docker пошёл не туда, и как попытки что-либо исправить оказались слишком слабыми и запоздалыми.


Читать дальше →
Total votes 114: ↑92 and ↓22+70
Comments282

Жадный гном: Как я писал аналитику рынка в Lineage 2

Reading time5 min
Views50K

Вот и наступила осенне-зимняя пора. За окном дожди и желания проводить время на открытом воздухе все меньше и меньше. И вот приходит мне сообщение от товарища "А давай поиграем в Lineage 2?". И опять я, поддавшись ностальгии, согласился. Выбрали мы свеженький сервер на ру-офе и создали персонажей.



 
В отличии от World of Warcraft в Lineage 2 совершенно другая система добычи игровой валюты. Нужно круглыми сутками охотиться на монстров с целью получения наживы. Для меня было даже открытием, что для некоторых людей RMT (Real money trading) является чем то вроде работы. Также, в игре присутствует экономика, которую формируют игроки. Иными словами, можно заработать на купи-продай или же покупать дешевые ресурсы, из них делать вещи и продавать с наценкой. Так как для нас игра остается чем то вроде отдыха именно такой способ получения игровой валюты был выбран нами.


Чтобы покупать и продавать предметы игрок должен находиться online (Скриншот сверху). Соответсвенно, кто-то хочет побыстрее продать (дешевле) а кто-то побыстрее купить (дороже). А что если разница продать — купить положительная? Как раз этот пример и будет рассмотрен в статье как итог.


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


Spoiler:
В статье будут использованы следующие технологии
Docker, DigitalOcean, NodeJs, Ktor, Prometheus, Grafana, Telegram bot notification

Читать дальше →
Total votes 53: ↑50 and ↓3+47
Comments58

Таиланд без стереотипов

Reading time5 min
Views43K


Я уже больше полутора лет (21 месяц, если быть точным) живу в Бангкоке, спасибо моим коллегам за точный расчёт, а так же идею и вступление к этому рассказу :) А рассказ будет о том как поменялась моя жизнь и что я о нового узнала о Таиланде.
Читать дальше →
Total votes 83: ↑67 and ↓16+51
Comments220

Как устроены технические индикаторы на фондовых рынках

Reading time5 min
Views24K
Любой кто когда-нибудь интересовался фондовыми или криптовалютными рынками видел эти дополнительные линии. И вы наверно слышали мнения от матерых трейдеров о том, что они не работают и как они не используют ничего. Но многим они очень помогают и мой торговый терминал, в который я лениво смотрю раз в день, выглядит примерно как на картинке ниже.

Как же все таки они устроены? И кому это может быть полезно? Вам определенно с этим следует ознакомиться, если:

  1. Вы ими пользуетесь в своей торговле
  2. Вы планируете написать торгового робота
  3. Вы хотите реализовать торговую стратегию сами

технические индикаторы
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments29

Начальник, что мне делать для того, чтобы получать больше денег

Reading time3 min
Views38K
Как часто вы слышали от своих подчиненных такой вопрос? Почему именно этот вопрос о повышении верный? Давайте разбираться вместе.

Представим себе программиста Ивана, который работает в компании какое-то время. По разным причинам так могло получиться, что у него уже давно не было повышения. А он его очень ждет. Ходить к менеджеру и просить повышения Ивану не хочется, не такой он человек, чтобы заводить разговор о повышении и выпрашивать, доказывать, что достоин повышения.
Читать дальше →
Total votes 67: ↑45 and ↓22+23
Comments287

Свои потоки ввода-вывода в C++ с помощью std::streambuf

Reading time16 min
Views82K
В статье на примерах объясняется, как реализовать поддержку потокового ввода-вывода из стандартной библиотеки (<iostream>) для своих классов.

В тексте статьи будет часто встречаться слово «поток», что означает именно поток ввода-вывода ((i/o)stream), но не поток выполнения (thread). Потоки выполнения в статье не рассматриваются.


Введение


Потоки из стандартной библиотеки — мощный инструмент. Аргументом функции можно указать поток, и это обеспечивает ее универсальность: она может работать как со стандартными файлами (fstream) и консолью (cin/cout), так и с сокетами и COM-портами, если найти соответствующую библиотеку.

Однако не всегда можно найти готовую библиотеку, где подходящий функционал уже реализован, может даже вы разрабатываете собственную библиотеку со своими классами. Тогда возникает задача реализации интерфейса потоков своими силами.
Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments9

Happstack Lite: Веб-фреймворк на Хаскеле

Reading time9 min
Views13K
image
Картинка для привлечения внимания, clckwrks — веб-фреймворк, тесно связанный с Happstack.

Happstack — веб-фреймворк с большими возможностями и богатым API, который развивался на протяжении последних семи лет, чтобы соответствовать нуждам повседневной веб-разработки. К сожалению, богатый и гибкий API может быть бесполезным и запутывающим, когда вам нужно что-то простое. Однако многие и не догадываются, что под крылом Happstack кроется очень элегантный и простой в использовании веб-фреймворк Happstack Lite.

Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments25

Information

Rating
1,461-st
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity