Как стать автором
Обновить
-23
0

Пользователь

Отправить сообщение

Запускаем лабораторные работы «Школы синтеза цифровых схем» на FPGA плате Марсоход3GW2

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.6K

Вероятно вы слышали о "Школе синтеза цифровых схем". Здесь учат цифровой логике и программированию ПЛИС. Каждый желающий может записаться на курсы школы и пройти обучение. Филиалы школы есть во многих городах.

Школа готовит программу лабораторных работ для изучения FPGA. Они опубликованы на Github: https://github.com/yuri-panchul/basics-graphics-music

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

Мы сделали форк этих лаб https://github.com/marsohod4you/basics-graphics-music и адаптировали лабораторные работы на нашу плату Марсоход3GW2.

Дальше я немного расскажу о некоторых учебных работах.

Читать далее
Всего голосов 21: ↑20 и ↓1+26
Комментарии8

Дэвид Харрис, автор «Цифровой схемотехники и архитектуры компьютера», ответил на вопросы про его следущую книгу и вообще

Время на прочтение13 мин
Количество просмотров10K

Встретился на ланч с Дэвидом Харрисом, автором (вместе с Сарой Харрис) популярного учебника «Цифровая Схемотехника и Архитектура Компьютера», который за последние 10 лет помог закрыть монументальную дыру в техническом образовании десятков вузов России и Украины. До этого учебника во многих вузах сразу после триггеров шло программирование микроконтроллеров, то есть раньше у многих студентов вообще не возникала база для проектирования современных чипов по маршруту RTL‑to‑GDSII, технологии, которая за последние 30 лет привела нас к смартфонам, быстрому интернету и ускорителям ИИ.

Учебник Дэвида активно используется на Школе Синтеза Цифровых Схем, которую поддерживают 24 российских и 1 белорусский университет. Регистрация на новый сезон Школы только что открылась.

Читать далее
Всего голосов 43: ↑40 и ↓3+46
Комментарии22

Программирование на C в Linux на примере создания командной оболочки: часть 2

Уровень сложностиСредний
Время на прочтение55 мин
Количество просмотров7.3K

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

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

Да-да, мы превратим наш велосипед в мопед! Я вынес из прошлой статьи итоги, и попытался решить все проблемы и замечания. Продолжаем погружение в пучины разработки под Linux!

Читать далее
Всего голосов 25: ↑24 и ↓1+33
Комментарии12

Что должен знать каждый разработчик о вычислениях на GPU

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров13K

Большинство программистов отлично разбираются в работе процессоров и последовательном программировании, поскольку с самого начала пишут код для CPU. Однако многие из них меньше знают о том, как устроены графические процессоры (GPU) и в чем заключается их уникальность. За последнее десятилетие GPU стали чрезвычайно важны благодаря широкому применению в глубоком обучении, и сегодня каждому разработчику необходимо обладать базовыми знаниями о том, как они работают. Цель этой статьи — дать вам это понимание. 

Читать далее
Всего голосов 36: ↑34 и ↓2+42
Комментарии6

big Big FLOAT! Произвольная точность: сравниваем opensource-программы для научных и математических вычислений

Уровень сложностиСредний
Время на прочтение42 мин
Количество просмотров6.3K


При проведении научных или математических исследований часто оказывается, что решить аналитически (символьно, с помощью формул) невозможно или очень сложно. И в этом случае мы решаем задачу численно. Для численного решения точность имеет решающее значение.

Аппаратной точности чисел с плавающей запятой (поддерживаемых современными CPU) в 32, 64 и 80 бит может не хватить. И даже чисел четверной точности может не хватить при многочисленных итерациях, в каждой из которой может происходить потеря точности. Если операции неэлементарны, то мы не сможем применить алгоритмы коррекции ошибок по типу алгоритма Кэхэна.

В этих случаях нам приходят на помощь вещественные числа произвольной точности. В статье мы рассмотрим несколько бесплатных программ с их поддержкой и сравним их.
Каждая программа считает по-своему...
Всего голосов 57: ↑56 и ↓1+76
Комментарии73

Ассемблер для программистов на языках высокого уровня: условные конструкции

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров11K

В предыдущей статье мы познакомились с основами синтаксиса языка ассемблера и смогли создать программу на основе всего двух команд. Впечатляющий результат!

На этом уроке мы изучим новые команды и воспользуемся этими знаниями, чтобы перенести на язык ассемблера первую конструкцию высокого уровня: условные конструкции.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+54
Комментарии11

Python: как переменные работают на самом деле? Погружаемся в байткод и C

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров14K

Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же автор серии видео про его устройство.

Сегодня я хочу рассказать, как на самом деле работают переменные в CPython.

Под катом куча кишков питона и видео на 46 минут с дополнительными кишками питона (ни один настоящий питон не пострадал при написании данной статьи).

Читать далее
Всего голосов 42: ↑41 и ↓1+55
Комментарии6

Ассемблер для программистов на языках высокого уровня: Hello World

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров22K

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

Рассмотрим следующий код:

section .data
  msg db "Hello, World!"

section .text
  global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, msg
  mov rdx, 13
  syscall

  mov rax, 60
  mov rdi, 0
  syscall

К счастью, по второй строке мы можем понять, что он делает.

Здесь нет ничего привычного нам: мы не видим ни условных операторов, ни циклов, нет никакого способа создавать функции… Да даже у переменных нет имён!

С чего же вообще начать?

Это небольшое введение предназначено для того, чтобы познакомить имеющих опыт в программировании с миром ассемблера. Мы обсудим основы языка и сопоставим их с конструкциями высокоуровневого программирования.

Завершив прочтение этого руководства, вы сможете ориентироваться в ассемблерном коде, будете знать, где искать информацию, и даже сможете самостоятельно писать простые программы.
Читать дальше →
Всего голосов 61: ↑57 и ↓4+69
Комментарии41

Python Clean Code: Stop Writing Bad Code — Lessons from Uncle Bob

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.5K

Are you tired of writing messy and unorganized code that leads to frustration and bugs? You can transform your code from a confusing mess into something crystal clear with a few simple changes. In this article, we'll explore key principles from the book "Clean Code" by Robert C. Martin, also known as Uncle Bob, and apply them to Python. Whether you're a web developer, software engineer, data analyst, or data scientist, these principles will help you write clean, readable, and maintainable Python code.

Read more
Всего голосов 5: ↑4 и ↓1+3
Комментарии3

Windows: достучаться до железа

Время на прочтение11 мин
Количество просмотров56K

Меня всегда интересовало низкоуровневое программирование – общаться напрямую с оборудованием, жонглировать регистрами, детально разбираться как что устроено... Увы, современные операционные системы максимально изолируют железо от пользователя, и просто так в физическую память или регистры устройств что-то записать нельзя. Точнее я так думал, а на самом деле оказалось, что чуть ли не каждый производитель железа так делает!

Читать далее
Всего голосов 132: ↑131 и ↓1+173
Комментарии90

Почему я предпочитаю исключения, а не значения ошибок

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров23K

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

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

Давайте рассмотрим пример, в котором применено защищённое от ошибок целочисленное деление:

int safeDiv(int a, int b) {
   if (b == 0)
      throw Div0(); // Исключения передаются особым образом
   return a / b; // Теперь-то всё абсолютно безопасно, ведь так?
}

Новые языки программирования склонны применять сообщения об ошибках в функциональном стиле и кодировать ошибки в возвращаемый тип. Например, Go кодирует ошибку в возвращаемый тип при помощи кортежа (res, err), а Rust возвращает Result<T, E> — тип-сумму результата и ошибки.
Читать дальше →
Всего голосов 64: ↑56 и ↓8+66
Комментарии213

Сказ о том, как я за год решил более 600 leetcode задач

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров97K

Всем салют!

Хочу рассказать вам историю о том, как я начинал с уровня — «не могу решить даже 1 easy задачу из 10» до уровня — «могу решить каждую вторую medium задачу» и прошел несколько coding сессий в таких компаниях как Meta, Booking, Careem, Avito...

Читать далее
Всего голосов 121: ↑112 и ↓9+129
Комментарии407

Дышать, а не задыхаться

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров21K

Привет, Хабр! Меня зовут Влада и я обожаю работать с людьми. Попав волею судеб IT сферу, я поняла, что хоть в IT очень много зависит от командного взаимодействия, большая часть тусовки нацеливается на хард, а не софт. Поэтому статьи тут я хочу посвящать софтам.

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

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

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

То, что напишу ниже, ненаучно (хотя и достаточно сильно перекликается с теорией Павлова, да‑да, тем самым, который про собак и условные рефлексы писал), но обкатываю на окружающих людях и себе — очень помогает исправить ситуацию. Теория не моя, но автор дал добро на то, чтобы пустить её в мир. Для тех, кто любит кратко — переходите к блоку «Итог», а всех остальных приглашаю погрузиться в мою историю и подробное объяснение мат.части.

Читать далее
Всего голосов 46: ↑37 и ↓9+37
Комментарии37

Почему ты не можешь просто начать меньше есть, чтобы снизить вес? 3 главные причины

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров23K

“Все решено, завтра начинаю меньше есть!”

Если с этого обычно начинается твое стремление к лучшей фигуре и здоровому телу, то я буду тем тренером, который остановит тебя от этого.

“Да просто жрать надо меньше” — самая простая и распространенная рекомендация, которой в какой-то момент хочется просто взять и начать следовать.

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

Читать далее
Всего голосов 59: ↑42 и ↓17+38
Комментарии191

Unix на работе. Часть вторая, программная

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров14K

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

Из первых рук и на основе многолетней практики.

Читать далее
Всего голосов 34: ↑30 и ↓4+38
Комментарии96

Спидран карьеры software-архитектора

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров10K
О software-архитекторах сейчас не говорит только ленивый. По мере усложнения структуры современных приложений команды разработки все больше нуждаются в «дирижере» для своего «оркестра», в специалисте, который предсказывает, какими нефункциональными требованиями будет обладать система и как довести ее до нужных характеристик.



Однако у рядового разработчика вопросов о сути работы «софтварных» архитекторов нередко остается больше, чем ответов:

Чем именно архитектор занимается? Какими навыками должен обладать? Да и как им вообще можно стать?

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

Чтобы узнать, как этот «путь» выглядит в архитектуре ПО, мы пообщались с Анной Мелеховой (AnnaTref), Software Architect & Software Development Group Manager в KasperskyOS — собственной микроядерной операционной системе «Лаборатории Касперского». Мы пройдем путь героя вместе: посмотрим на основные карьерные треки, выявим их особенности и выясним, каких драконов надо победить. Поехали!

Читать дальше →
Всего голосов 34: ↑29 и ↓5+27
Комментарии8

Real-time-распознавание лиц: методы обучения быстрых и точных моделей для работы на мобильных девайсах

Время на прочтение13 мин
Количество просмотров3.1K

Привет, Хабр! Меня зовут Вадим Селютин, я старший исследователь в компании VisionLabs. Наши решения по распознаванию лиц можно встретить в офисных центрах, московском метро и кассах самообслуживания супермаркетов. Во всех этих кейсах мы используем нейросети, которые адаптируем специально для мобильных устройств.

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

Читать далее
Всего голосов 12: ↑11 и ↓1+15
Комментарии5

Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров13K

Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.

Давайте разберем, как можно уменьшить размер бинарников еще больше!

Читать далее
Всего голосов 40: ↑38 и ↓2+47
Комментарии25

Как в разы увеличить дальность приема WiFi / BT при помощи паяльника

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров52K

Ну или точнее при помощи двух паяльников. Несколько простых и эффективных решений, подходящих для компактных модулей с чип антенной.

Читать далее
Всего голосов 108: ↑107 и ↓1+128
Комментарии134

Корутины? Простейшая имплементация на C, protothread и Arduino

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров7.8K

*иногда хочется уйти от управляемых будней

Корутины — это функции, которые могут приостанавливать своё выполнение и возобновлять его позже, сохраняя своё состояние между вызовами. Это позволяет выполнять несколько задач одновременно без необходимости создания отдельных потоков или процессов.

Читать далее
Всего голосов 14: ↑13 и ↓1+17
Комментарии17
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность