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

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

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

Предотвращение крашей в медиаконтейнерах

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

Данная статья предназначена для тех, кто заинтересован в сохранении воспроизводимости своих записей на случай внезапного системного сбоя. Далее будут описаны харатктерные особенности целых и поврежденных файлов, записанных в нескольких наиболее известных форматах как MP4, MOV, MKV, FLV, рассмотрены особенности изменений в структуре файлов при различных условиях записи.

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии5

ОС с нуля: Глава 1, Часть 1 — Загрузчик

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

Хай Хабр! Это серия статей по написанию моей ОС с нуля. Я лютый фанат ретропрограммирования, поэтому я мгновенно забуду про существование EDК. Просьба не писать комменты по типу "BIOS давно устарела где UEFI?". Пишу это просто чтобы было, что почитать вечером и порелаксить. Спасибо.

Читать
Всего голосов 24: ↑23 и ↓1+26
Комментарии59

Продление жизни временных значений в С++: рецепты и подводные камни

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

Прочитав эту статью вы узнаете:

1. Способы, которыми можно продлить время жизни временного объекта в С++.

2. Рекомендации и подводные камни этого механизма, с которыми может столкнуться С++ программист, и с которыми сталкивался на работе я.

Информация из статьи может быть полезна как новичкам, так и профессионалам.

Если заинтересовало, то самое время налить чая, и погнали разбираться где тут референсы висят.

Чай готов, начинаем погружение
Всего голосов 33: ↑31 и ↓2+37
Комментарии11

Как разрабатываются и производятся процессоры: основы архитектуры компьютеров

Время на прочтение9 мин
Количество просмотров59K
image

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

В этой серии мы расскажем о компьютерной архитектуре, проектировании процессорных плат, VLSI (very-large-scale integration), производстве чипов и тенденциях будущего в области вычислительной техники. Если вам было интересно разобраться в подробностях работы процессоров, то начинать изучение лучше с этой серии статей.

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

Программы, например, операционная система или игра, сами по себе являются последовательностями инструкций, которые должен выполнять ЦП. Эти инструкции загружаются из памяти и в простом процессоре выполняются одна за другой, пока программа не завершится. Разработчики программного обеспечения пишут программы на высокоуровневых языках, например, на C++ или на Python, но процессор не может их понимать. Он понимает только единицы и нули, поэтому нам нужно каким-то образом представить код в этом формате.
Читать дальше →
Всего голосов 57: ↑54 и ↓3+51
Комментарии18

Разглядывая JTAG: *.bsdl своими руками

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

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

Написать *.bsdl в блокноте
Всего голосов 36: ↑36 и ↓0+36
Комментарии5

Часть 4: Всё-таки запускаем Linux на RocketChip RISC-V

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

На картинке Linux kernel шлёт вам привет через GPIO.


В этой части истории с портированием RISC-V RocketChip на китайскую плату с Cyclone IV мы всё-таки запустим Linux, а также научимся сами конфигурировать IP Core контроллера памяти и чуть подредактируем dts-описание аппаратуры. Эта статья является продолжением третьей части, но, в отличие от изрядно разросшейся предыдущей, она будет довольно короткой.

Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии3

U-boot. Процедура инициализации по шагам

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

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

Читать далее
Всего голосов 10: ↑9 и ↓1+13
Комментарии8

ARM-ы для самых маленьких: тонкости компиляции и компоновщик

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

Продолжая серию статей про разработку с нуля для ARM, сегодня я затрону тему написания скриптов компоновщика для GNU ld. Эта тема может пригодиться не только тем, кто работает со встраиваемыми системами, но и тем, кто хочет лучше понять строение исполняемых файлов. Хотя примеры так или иначе основаны на тулчейне arm-none-eabi, суть компоновки та же и у компоновщика Visual Studio, например.

Предыдущие статьи:


Примеры кода из статьи: https://github.com/farcaller/arm-demos

Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии16

Начинающие программисты боятся темноты

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

Не могу больше. Это не моё. Я не тяну. Всю ночь не спал, ворочался, вставал, курил, читал, пытался смотреть телевизор, снова ложился… Ненавижу.

Всех, кто пишет эти радужные истории «войти в айти». Тех, кому я заплатил за курсы по программированию. «Друзей» и «советчиков», которые сказали: смело бросай свою старую, нелюбимую работу, и иди в программисты. Если бы вы только знали, о чём говорите…

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

Я один в темноте.

Читать далее
Всего голосов 179: ↑148 и ↓31+150
Комментарии301

Мои главные принципы работы после 20 лет опыта в программировании

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

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

Читать далее
Всего голосов 41: ↑32 и ↓9+28
Комментарии73

Руководство по FFmpeg libav

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

Долго искал книгу, в которой было бы разжёвано, как использовать FFmpeg-подобную библиотеку, известную как libav (название расшифровывается как library audio video). Обнаружил учебник «Как написать видеоплеер и уложиться в менее чем тысячу строк». К сожалению, информация там устаревшая, так что пришлось создавать мануал своими силами.

Большая часть кода будет на C, однако не волнуйтесь: Вы легко всё поймёте и сможете применить на любимом языке. У FFmpeg libav уйма привязок ко многим языкам (в том числе и к Python и к Go). Но даже если Ваш язык прямой совместимости не имеет, всё равно можно привязаться через ffi (вот пример с Lua).

Начнём с краткого экскурса о том, что такое видео, аудио, кодеки и контейнеры. Затем перейдем к ускоренному курсу, посвященному использованию командной строки FFmpeg, и, наконец, напишем код. Не стесняйтесь переходить сразу в раздел «Тернистый путь изучения FFmpeg libav».

Есть мнение (и не только моё), что потоковое интернет-видео уже приняло эстафету от традиционного телевидения. Как бы то ни было, FFmpeg libav точно достоин изучения.

Оглавление


Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии13

Передача видео с глубоководного робота

Время на прочтение28 мин
Количество просмотров16K
Хочу поделиться с сообществом опытом разработки программного обеспечения для просмотра и записи видео-сигнала передаваемого с глубоководного робота Moby Dick. Разработка проводилась по заказу лаборатории подводной робототехники The Whale. Проект был призван обеспечить:
— работу с любыми IP-камерами поддерживающими протокол RTSP;
— просмотр и запись видео от нескольких IP-камер;
— просмотр и запись стерео-видео от двух выделенных IP-камер;
— запись видео с экрана;
— комфортный просмотр видео при кратковременном падении скорости передачи данных.


Глубоководный робот Moby Dick проекта 1-0-1 десантированый с борта трансрейдера ВКС России «Лунная радуга» исследует океан Европы (в представлении художника, коллаж)

Если вас не пугают мегатонны кода добро пожаловать под кат.

Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии141

Кунг-фу стиля Linux: простые конвейеры

Время на прочтение9 мин
Количество просмотров13K
В былые времена компьютеры делали по одному делу за раз. В буквальном смысле. В компьютер загружали перфокарты, или перфоленту, или что-нибудь другое, и нажимали на кнопку. Компьютер читал программу, выполнял её и выдавал результаты. Потом он «засыпал», пребывая в таком состоянии до тех пор, пока ему не дадут новых входных данных.



Проблема тут в том, что компьютеры, особенно — тогда, были дорогим удовольствием. И, в случае с обработкой типичной программы, компьютеры тратят много времени, ожидая чего-то вроде помещения в них следующей перфокарты, или момента, когда магнитная лента дойдёт до нужного места. В таких случаях компьютер, фигурально выражаясь, в нетерпении стучит ногами, ожидая следующего события.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+31
Комментарии8

Проблемные аспекты программирования на С++

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

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



Читать дальше →
Всего голосов 18: ↑6 и ↓12-6
Комментарии26

Дорожная карта по изучению C++

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

Привет!

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

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

Читать далее
Всего голосов 58: ↑54 и ↓4+65
Комментарии75

Мы нанимаем только сеньоров

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

We don’t hire junior developers or interns…if you don’t get a puppy, you don’t have to clean up its messes.

~Netflix

В наши дни одна из самых больших проблем для IT специалиста - начать профессиональную карьеру. Многие из нас прошли путь "первого трудоустройства" и не знаю как вы, а мне довелось услышать такую фразу от рекрутера: "вот когда ты будешь сеньор с зарплатой от $1000 тогда и приходи".

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

Читать далее
Всего голосов 33: ↑24 и ↓9+26
Комментарии201

Книга «Экстремальный Cи. Параллелизм, ООП и продвинутые возможности»

Время на прочтение9 мин
Количество просмотров10K
image Привет, Хаброжители! Для того чтобы овладеть языком C, знания одного лишь синтаксиса недостаточно. Специалист в области разработки должен обладать четким, научным пониманием принципов и методик. Книга «Экстремальный Cи» научит вас пользоваться продвинутыми низкоуровневыми возможностями языка для создания эффективных систем, чтобы вы смогли стать экспертом в программировании на Cи.

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

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

Камран Амини научит вас думать, сомневаться и экспериментировать. Эта книга просто необходима для всех, кто хочет поднять знания Cи на новый уровень.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+9
Комментарии13

Гонка итераций

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

Выдался у меня как-то на работе хороший год. Я сделал пару серьёзных проектов, за что получил существенную прибавку к окладу. Естественно, я захотел этот опыт повторить. Пришёл к директору и говорю – хочу +30%, готов стараться от всей души.

Тот почему-то обрадовался. Давай, говорит, всё-превсё автоматизируем в течение года, и будет тебе прибавка. Чтобы понять, кто такое «всё-превсё», мы собрали совещание всех отделов. Люди с радостью притащили хотелки, мы из сгруппировали в 13 проектов.

Увидев предстоящий объём работы, я, конечно, приуныл. А директор – наоборот. Когда все отделы ушли с совещания, он сказал: я тебе помогу. Ну, думаю, поможешь ты мне. Уже помог, спасибо.

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

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

Где сядешь — там и слезешь. Тенденциозные вопросы программистам и их последствия

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

Когда будут устранены все проблемы в программе?

Как нам удалось это сделать?

Когда ты уже сделаешь задачу?

Вы будете на нас тренироваться?

Почему программа постоянно тормозит?

Когда вы начнёте нормально работать?

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

Но важно не содержание ответов, а само их наличие. Вопросы, как вы поняли, весьма тенденциозные.

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

6 способов снизить когнитивную нагрузку от интерфейса

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

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

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

В этой статье мы рассмотрим 6 способов снизить когнитивную нагрузку в UX-проекте.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии3

Информация

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