Pull to refresh
2
0
Send message

Плохо девелопмент

Level of difficultyEasy
Reading time6 min
Views11K

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

Некопипасть!
Total votes 21: ↑16 and ↓5+15
Comments40

Не Unity единым…

Level of difficultyEasy
Reading time15 min
Views39K

Игры бывают разные, большие и маленькие, триA и супер инди, в компаниях с сотнями разработчиков и что создаются самородками-одиночками. Редко их делают с нуля и пишут код только игры, чаще пишут игровые тулы, редактор и параллельно пишут саму игру. За всей этой многомиллиардной индустрией стоит код, много кода, очень много кода. Игровые движки и фреймворки – мощные инструменты, которые помогают разработчику творить его идеи и создавать увлекательные игровые миры. Это каркас, на котором строятся все игровые вселенные, они включают в себя сотни инструментов, библиотек и ресурсов, позволяя разработчикам превратить строчки кода в театр для одного зрителя.

Существует более сотни игровых движков, каждый из них содержит как минимум одну фичу которой нет ни в каком другом. Всех возможностей вместе нет ни в одном, и это прекрасно - иначе бы такой движок монополизировал рынок. Хм, Unreal5 ты ли это? Иногда полезно пробежать по release notes движка, чтобы оставаться в курсе последних новостей. Возможно вы разрабатываете свое решение и эта статья натолкнет вас на новые идеи. Готовы узнать что ваша любимая игры была сделана не на Unity, а на православном SDL?

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

История POSIX: путь к портируемому ПО

Reading time8 min
Views4K

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

Именно так произошло с Unix, который изначально был написан Кеном Томпсоном на языке ассемблера более пятидесяти лет назад. Первые версии Unix писались для платформы PDP-7, а для портирования его на PDP-11 нужно было переписывать код. Когда Дэннис Ритчи создал язык программирования C, и вместе с Томпсоном они переписали на нём основную часть кода Unix, внезапно оказалась возможной портируемость ПО. Тому были две главные причины. Во-первых, код, написанный на языке высокого уровня, не зависит от платформы, потому что компиляторы транслируют его в язык ассемблера целевой архитектуры. Это ещё важнее для целевых платформ на основе процессоров RISC, так как они требуют написания гораздо большего количества ассемблерных команд, чем процессоры CISC. Даже при портировании Unix на другую платформу основная сложность заключалась лишь в адаптации зависящих от архитектуры частей кода. С другой стороны, сама операционная система абстрагирует все особенности оборудования от пользовательской программы.

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

Читать далее
Total votes 23: ↑21 and ↓2+29
Comments5

Мультитул для разработчика электроники

Level of difficultyEasy
Reading time12 min
Views21K

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

Идея понятна - заменить генераторы частоты, терминалы RS-485 и CAN одним самодостаточным прибором. В этой статье расскажу о том, что за девайс я собрал.

Читать далее
Total votes 33: ↑31 and ↓2+41
Comments17

Просто о сложном: как я написал книгу по реверс-инжинирингу встраиваемых систем

Level of difficultyEasy
Reading time9 min
Views6.1K

Большую часть своей карьеры я руководил какими-то коллективами: брал себе стажеров, кого-то курировал, больше 10 лет преподавал в Бауманке. Мне всегда хотелось делиться своими знаниями. И в какой-то момент я понял, что у меня нет источника информации, который я могу дать человеку со словами: «На, прочитай, и на многие вопросы, которые тебя сейчас, в самом начале пути, мучают, ты получишь ответы — кратко, сжато и в доступном виде».

И тогда я подумал, что было бы неплохо написать книгу...

Читать далее
Total votes 30: ↑30 and ↓0+32
Comments12

Плохой тайм-менеджмент — официальный спонсор твоих выгораний

Level of difficultyEasy
Reading time7 min
Views43K

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

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

Читать далее
Total votes 45: ↑42 and ↓3+54
Comments45

Тестирование NAND и eMMC

Level of difficultyEasy
Reading time24 min
Views8.3K

Когда я плотно занимался аппаратным тестированием, в рамках разработки embedded-устройств, часто бывало так, что инженеры-разработчики и я оказывались в условиях жесткого ограничения в выборе возможных компонентов NAND или eMMC. И в этой связи очень часто возникала необходимость дополнительных проверок каждого из компонентов на долговечность и качество работы. Очень часто приходилось проверять чипы-кандидаты на общий ресурс записи/чтения, скорости операций и т. п. И мне пришла идея, почему бы не поделиться своим опытом с другими специалистами, перед которыми стоят аналогичные задачи. Я хотел бы рассказать в данной статье, что такое Flash-память, почему они выходят из строя и как я организовал тестирование, как через тестирование минимизировать риски при выборе устройства хранения для разрабатываемого устройства. 

Всем, кому интересна данная тема — приглашаю под кат.

Читать далее
Total votes 70: ↑70 and ↓0+86
Comments21

Погружение в матрицу: расширение RISC-V от T-Head

Reading time17 min
Views2.2K

Продолжим нашу «антологию матричных расширений» текстом про независимое матричное расширение RISC-V от компании T-Head. 

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

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

Начать погружение
Total votes 24: ↑24 and ↓0+31
Comments3

Китайские СВЧ подложки для печатных плат. Можно ли использовать? Мой опыт

Reading time3 min
Views3K

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

далее
Total votes 14: ↑14 and ↓0+17
Comments4

Устройство памяти процессов в ОС Linux. Сбор дампов при помощи гипервизора

Level of difficultyMedium
Reading time14 min
Views9.5K

Иногда для анализа ВПО или, например, для отладки какого-либо процесса может потребоваться дамп памяти процесса. Но как его собрать без отладчика? Постараемся ответить на этот вопрос в этой статье.

Задачи:

- Обозначить цель сбора дампа процесса.

- Описать структуру памяти процессов в Linux и отметить различия в старой и новой версиях ядра ОС

- Рассмотреть вариант снятия дампа памяти процесса внутри виртуальной машины на базе связки гипервизора Xen и фреймворка с открытым исходным кодом DRAKVUF.

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

Фен и нижний подогрев. Снятие/установка BGA без реболлинга

Reading time5 min
Views8.9K

Приветствую, Хабр!

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

Читать далее
Total votes 46: ↑45 and ↓1+68
Comments28

7 производителей печатных плат вместо JLCPCB. Где можно заказать платы в 2023 году

Level of difficultyEasy
Reading time6 min
Views71K

Привет, Хабр! Я – Дима, в компании отвечаю за закупку компонентов. Долгове время у нас было два поставщика печатных плат. Один из них вышеупомянутый JLCPCB. После того, как он ушел из России, пришла проблема откуда не ждали – второй поставщик начал подводить по срокам и отгружать откровенный брак. 

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

Для удобства в конце привожу сводную таблицу с кратким описанием преимуществ и недостатков производителей.

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

Фитнес-трекер для скейта

Reading time18 min
Views19K

Привет, Хабр!

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

Компоненты, схема, плата, производство в Китае и результаты, обо всём этом –– под катом.

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

Тактовая кнопка, как подключить правильно к "+" или "-"

Reading time5 min
Views23K

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

Читать далее
Total votes 20: ↑18 and ↓2+25
Comments74

Как я разрабатывал Российский планшет

Reading time8 min
Views51K
Доброго времени суток, друзья!



В этой статье не будет Arduino, Raspberry, Olimex, переноса внутренностей планшета в свой «кастомный» корпус из картона и пластыря и т.д. Только суровая разработка, только хардкор…
Читать дальше →
Total votes 105: ↑102 and ↓3+99
Comments164

Достучаться до небес, или FSM на шаблонах

Reading time13 min
Views15K

Здравствуйте! Меня зовут Александр, я работаю инженером-программистом микроконтроллеров.

Пишу на С/С++, причем предпочитаю плюсы, ибо верую в их эволюционную неизбежность в embedded.

Мир встроенного ПО, язык С++ динамично развиваются, поэтому разработчикам важно не отставать и поддерживать свои скиллы и наработки актуальными моменту.

Я стараюсь следовать этому очевидному посылу, благо небожители ведущие С++ программисты и консультанты щедро делятся своим опытом и идеями на разных площадках (например здесь, или здесь).

Некоторое время назад я посмотрел мощный доклад Сергея Федорова про построение конечного автомата с таблицей переходов на шаблонах.

Читать далее
Total votes 14: ↑11 and ↓3+14
Comments24

Как перестать писать прошивки для микроконтроллеров и начать жить

Reading time8 min
Views49K

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

Читать дальше →
Total votes 50: ↑46 and ↓4+42
Comments81

Information

Rating
4,245-th
Registered
Activity