Pull to refresh
-1
0
Send message

Разбираемся с прямым и обратным порядком байтов

Reading time11 min
Views204K
Перевод статьи Халида Азада — Understanding Big and Little Endian Byte Order

Проблемы с порядком байтов очень расстраивают, и я хочу избавить Вас от горя, которое довелось испытать мне. Вот ключевые тезы:
  • Проблема: Компьютеры, как и люди, говорят на разных языках. Одни записывают данные “слева направо” другие “справа налево”. При этом каждое устройство отлично считывает собственные данные — проблемы начинаются, когда один компьютер сохраняет данные, а другой пытается эти данные считать.
  • Решение: Принять некий общий формат (например, весь сетевой трафик передается в едином формате). Или всегда добавлять заголовок, описывающий формат хранения данных. Если считанный заголовок имеет обратный порядок, значит данные сохранены в другом формате и должны быть переконвертированы.

Читать дальше →
Total votes 71: ↑55 and ↓16+39
Comments32

Снятся ли венд-машинам электрожуки?

Reading time16 min
Views3.2K

Некоторое время назад  в МИЭТ прошёл инженерный хакатон YADRO SoC Design Challenge. Данная статья посвящена треку функциональной верификации, для которого я делал задание. Пройдёмся по тому, что такое верификация и как провести хакатон по этому направлению среди тех, кто никогда с ней не сталкивался. Немного скажу и про сложности, с которыми мы столкнулись и результаты проведения хакатона.
Приятного чтения!
Total votes 17: ↑17 and ↓0+17
Comments0

Кунг-фу стиля Linux: глобальный поиск и замена строк с помощью ripgrep

Reading time6 min
Views13K
Даже те, кто пользуется Linux лишь от случая к случаю, вероятно, знают о том, как работать с grep. При этом не нужно быть экспертом в сфере регулярных выражений для того чтобы без особых сложностей пользоваться grep для поиска в файлах строк, соответствующих простым последовательностям символов или сложным шаблонам. Конечно, grep — это отличный инструмент для поиска информации. Но что если нужно что-то найти, а потом — заменить это на что-то другое? Например, может быть, нужно изменить все найденные слова HackADay на Hackaday. Тут можно применить sed, но этой утилитой пользоваться довольно сложно. Для решения этой задачи можно было бы воспользоваться awk. Но, учитывая то, что речь идёт о языке программирования, использовать его для решения столь простой и распространённой задачи — это, пожалуй, чересчур. Именно идея, заключающаяся в простом решении вышеописанной задачи, и лежит в основе утилиты ripgrep (соответствующая ей команда выглядит как rg). С помощью rg можно решать те же задачи, что решает grep, но при этом — пользоваться более современными регулярными выражениями и, кроме того, не только искать строки, но и выполнять их замену.


Читать дальше →
Total votes 20: ↑17 and ↓3+25
Comments7

YandexGPT в Браузере: как мы учили модель суммаризировать статьи

Reading time7 min
Views30K
Неделю назад на сайте 300.ya.ru мы продемонстрировали возможности языковой модели YandexGPT применительно к задаче суммаризации текстов. С тех пор многое изменилось: мы обучили новую, более качественную модель, в пересказах которой в 4 раза меньше ошибок. А сегодня мы внедрили её в Яндекс Браузер. Может показаться, что мы просто взяли ту же модель, о которой уже рассказывали сообществу на примере Алисы, и прикрутили к ней кнопку в Браузере. Но не всё так просто. Да, наша базовая модель уже понимала, что такое суммаризация в общих чертах. Но для нас было важно добиться результата в нужной нам форме и с предсказуемым качеством. И вот тут-то начинаются нюансы.

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



Читать дальше →
Total votes 34: ↑32 and ↓2+43
Comments51

Obsidian + Dataview: Задачи

Level of difficultyMedium
Reading time5 min
Views29K

В прошлой статье Obsidian + Dataview: Таблицы я рассказал про установку плагина Dataview, формирование таблиц с его помощью и разобрал 4 кейса его использования.

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

Сегодня хотелось бы остановиться на задачах, тем более что Dataview позволяет сделать из Обсидиана полноценный task/todo-менеджер с календарём и прочими приятностями.

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

Obsidian + Tasks — Периодические задачи, запросы, кастомные статусы и прочие удобности

Level of difficultyMedium
Reading time4 min
Views29K

Очень мощный плагин для работы с задачами в Обсидиане.
Возможности плагина:

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

Что такое игра? Как ее написать?

Level of difficultyEasy
Reading time14 min
Views13K

Статья - рефлексия на тему игр как обучения, а игра в ней - результат этой рефлексии. В статье так же расскажу наиболее простой способ написания игры (на HTML5), инструменты и современные подходы. Для разработки нужны минимум блокнот и браузер, никакого дополнительного ПО. Запускаться игра будет в HTML, на любом устройстве с браузером (вплоть до телевизора).

Статью написал в рамках подготовки к пятничному игровому джему (GMTK Game Jam 2023). Никогда в них не участвовал, решил проверить, что успею запилить хоть что-то за пару дней и по-рефлексировать на тему. Поболейте за меня или сами поучаствуйте. Написанная в статье игра - не для джема, а для статьи, ссылка в конце. Игра из джема уже готова, можно ознакомится тут.

Читать далее
Total votes 11: ↑5 and ↓6+3
Comments14

Все, что вы хотели узнать про области видимости в Python, но стеснялись спросить

Reading time4 min
Views75K
В преддверии старта нового потока по курсу «Разработчик Python», решили поговорить про области видимости в Python. Что из этого вышло? — Читайте в материале ниже.




Сегодня мы будем говорить о важных теоретических основах, которые необходимо понимать и помнить, чтобы писать грамотный, читаемый и красивый код. Мы будем вести речь об областях видимости переменных. Эта статья будет полезна не только новичкам, но и опытным программистам, которые пришли в Python из другого языка и хотят разобраться с его механиками работы.
Читать дальше →
Total votes 13: ↑7 and ↓6+4
Comments19

Почему гибридная архитектура – это будущее?

Reading time6 min
Views22K

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

Для ИТ-специалистов важно поддерживать актуальность данных и оперативно решать поступающие в хелпдеск запросы, выполнять SLA. Для ИТ-директоров нужны достоверные данные для принятия правильных управленческих решений, распределения бюджета на оборудование и ПО. 

В статье рассмотрим достоинства и недостатки каждого из типов архитектур и объясним, почему конвергентная ИТ-архитектура станет лучшим выбором.

Читать далее
Total votes 15: ↑11 and ↓4+15
Comments8

Yaml vs. Json — что круче?

Reading time4 min
Views40K
image

Всем привет!

Сегодня поговорим об интересном (и таинственном для фронтов) формате YAML. Он считается одним из наиболее популярных форматов для файлов конфигураций.

Файлы с расширением .yaml или .yml вы можете встретить довольно часто, например .travis.yml (для Travis Build), .gitlab-ci.yml (для git lab CI) и др.
И тогда возникают резонные вопросы: что это за формат и чем он отличается от JSON-а?

Цель этой статьи — познакомить вас со структурой YAML, помочь понимать, читать и изменять YAML-файлы. Для тех, кто уже знаком с форматом — напомнить про некоторые его особенности. И сравнить YAML с JSON.
Читать дальше →
Total votes 15: ↑13 and ↓2+15
Comments79

Исчерпывающее руководство Getting Things Done (GTD) метода с примерами

Reading time10 min
Views114K
В данной статье вы узнаете о методе, помогающем привести в порядок все ваши дела от самых крупных и важных, до тех, что еще только появились в голове.

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

Я подробно разберу на практике все шаги Getting Things Done метода и вы получите четкую инструкцию к действию (Как привести дела в порядок). Вы сможете не только эффективно организовать свои дела, но и найти больше возможностей для создания новых идей, применяя данную инструкцию на практике.


Читать дальше →
Total votes 12: ↑10 and ↓2+12
Comments19

Часть 1. Управление знаниями в Obsidian. Обработка информации. Рабочий процесс. Источники информации. Работа с заметками

Level of difficultyHard
Reading time40 min
Views219K

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

Начнём долгий путь
Total votes 34: ↑31 and ↓3+37
Comments77

Осваивают ли LLM модели мира, или лишь поверхностную статистику?

Level of difficultyMedium
Reading time15 min
Views29K

Большие языковые модели (Large Language Model, LLM) сейчас у всех на слуху. Они привлекают внимание общественности своей, казалось бы, впечатляющей возможностью — составлять осмысленные тексты в ответ на запрос пользователя (иногда такие запросы называют «приглашениями», а так же — «промптами» или «промтами» — от английского «prompt»). Эти системы представляют собой тщательно сконструированные комбинации из исключительно простых алгоритмов, огромных объёмов данных и грандиозных вычислительных мощностей. LLM учатся, бесчисленное множество раз играя сами с собой в игру «угадай следующее слово». В каждом раунде такой игры модель смотрит на часть предложения и пытается угадать, или предсказать, следующее слово. Если слово угадано — модель обновляет параметры для того чтобы подкрепить свою уверенность; в противном случае модель учится на своей ошибке для того чтобы в следующий раз её догадка была бы точнее.

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

Как эти модели достигли таких результатов? Они всего лишь запоминают обучающие данные и потом их воспроизводят, или они схватывают правила английской грамматики и усваивают синтаксис языка C? Создают ли они нечто вроде внутренней модели мира — доступной для понимания модели процесса, выдающего некие последовательности данных?

Читать далее
Total votes 28: ↑27 and ↓1+41
Comments41

Makefile для самых маленьких

Reading time4 min
Views763K
Не очень строгий перевод материала mrbook.org/tutorials/make Мне в свое время очень не хватило подобной методички для понимания базовых вещей о make. Думаю, будет хоть кому-нибудь интересно. Хотя эта технология и отмирает, но все равно используется в очень многих проектах. Кармы на хаб «Переводы» не хватило, как только появится возможность — добавлю и туда. Добавил в Переводы. Если есть ошибки в оформлении, то прошу указать на них. Буду исправлять.

Статья будет интересная прежде всего изучающим программирование на C/C++ в UNIX-подобных системах от самых корней, без использования IDE.

Компилировать проект ручками — занятие весьма утомительное, особенно когда исходных файлов становится больше одного, и для каждого из них надо каждый раз набивать команды компиляции и линковки. Но не все так плохо. Сейчас мы будем учиться создавать и использовать Мейкфайлы. Makefile — это набор инструкций для программы make, которая помогает собирать программный проект буквально в одно касание.
Читать дальше →
Total votes 89: ↑77 and ↓12+65
Comments33

Некоторые приемы YAML

Reading time3 min
Views79K
В этом посте я расскажу про не очень известные особенности языка YAML.

Пролог


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

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

Парсинг JSON — это минное поле

Reading time25 min
Views158K
image

JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.

Читать дальше →
Total votes 170: ↑164 and ↓6+158
Comments60

Как освоить Vim?

Reading time6 min
Views99K
Осваивать Vim — это, пожалуй, страшно. Или, точнее, очень страшно. Речь идёт об изучении совершенно необычного подхода к редактированию кода, не говоря уже о работе с простым текстом. Многие несправедливо обвиняют тех, кто выбирает Vim, в том, что они впустую тратят время.

Я со всей уверенностью могу заявить о том, что Vim позволил мне повысить эффективность в деле написания программ. Работать стало удобнее (ниже я расскажу об этом более подробно). Я никому не хочу навязывать Vim, но очень рекомендую освоить этот редактор всем, кто занимается программированием, работает в сфере Data Science, в общем — тем, кто так или иначе пишет и редактирует некий код.



Если вам очень хочется узнать о том, стоит ли вам использовать Vim, и о том, кто и для чего им реально пользуется — взгляните на этот материал (кстати, не позвольте его названию, «Не пользуйтесь Vim», ввести себя в заблуждение). Ещё можете посмотреть это видео, которое, кстати, подготовил сам Люк Смит.

А теперь, учитывая всё вышесказанное, предлагаю поговорить о том, что такое, на самом деле, Vim!
Читать дальше →
Total votes 44: ↑39 and ↓5+51
Comments370

Кросс-компиляция под RISC-V для самых маленьких

Level of difficultyEasy
Reading time6 min
Views7.9K

Архитектура RISC-V корнями уходит к началу 1980-х годов, группа под руководством Дэвида Паттерсона в стенах университета Беркли разработала архитектуры RISC-I и RISC-II. Долгое время архитектуре приходилось существовать в тени лицензируемых ARM и MIPS ядер. Архитектура RISC-V появилась в 2010 году, и поддерживается Linux Foundation. Отметка в 10 миллиардов произведенных ядер была преодолена за 12 лет. 

Сейчас RISC-V может сыграть большую роль в становлении российской микроэлектроники. Компании CloudBEAR и Syntacore  работают над процессорами собственной микроархитектуры, совместимыми с системой команд RISC-V. Архитектура RISC-V позволяет нашим разработчикам создавать энергоэффективные процессоры сравнимого с мировым уровня и сохранять программную совместимость со всеми программами, созданными для экосистемы RISC-V во всем мире.

В данной статье мы попробуем на примере RISC-V платы MangoPi разобраться, как выполняется кросс-компиляция под RISC-V.

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

Пока смерть не разлучит нас или всё о static в C++

Reading time8 min
Views192K


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

Читать дальше →
Total votes 9: ↑7 and ↓2+7
Comments23

Ассемблер RISC-V для начинающих

Reading time12 min
Views41K

Если вы не знаете ни одного ассемблера, или, возможно, не имеете большого опыта кодинга как такового, то ассемблер RISC-V может быть одним из лучших вариантов для того, чтобы погрузиться в эту тему. Конечно, материалов по ассемблеру x86 гораздо больше. Больше людей, которые могут в этом помочь. Но x86 - это чудовище, имеющее более 1500 различных инструкций.

Архитектура RISC-V, напротив, придумана специально для того, чтобы быть простой в изучении и вместе с тем, практически эффективна для реализации высокопроизводительных микропроцессоров.

Если вам необходим хороший старт, и вы не знаете ничего о микропроцессорах, вы можете прочесть мою статью "Как работает современный микропроцессор?" (How Does a Modern Microprocessor Work?).

Если вы хотите чего-нибудь простого и весёлого, можете начать с различных игр, в основе которых лежит программирование на ассемблере: Learn Assembly Programming the Fun Way.

Другим может понравиться ретропроцессор, такой, как 6502, использовавшийся в Commodore 64. Но проблема в том, что он окончательно устарел. При его разработке не учитывались реалии сегодняшнего дня.

Большой плюс RISC-V состоит в том, что он обладает современным и простым набором команд, спроектированным с учётом современных требований, таких как медленный доступ к памяти, использование предсказателя переходов, суперскалярного out-of-order выполнения команд и т.д.

Если вам интересно всё это, прочтите: Why Is Apple’s M1 Chip So Fast?

Перед тем, как мы начнём, можете распечатать это: James Zhu RISC-V Reference.

Читать далее
Total votes 35: ↑34 and ↓1+50
Comments33

Information

Rating
5,940-th
Registered
Activity