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

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

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

Как ядро управляет памятью

Время на прочтение8 мин
Количество просмотров45K
Ранее мы увидели как организована виртуальная память процесса. Теперь рассмотрим механизмы, благодаря которым ядро управляет памятью. Обратимся к нашей программе:

image
Читать дальше →
Всего голосов 41: ↑36 и ↓5+31
Комментарии6

Документирование по ГОСТ 34* — это просто

Время на прочтение12 мин
Количество просмотров481K
Сегодня мы поговорим об отечественных стандартах на проектную документацию. Как эти стандарты работают на практике, чем они плохи и чем хороши. При разработке документации для государственных и серьезных частных заказчиков у нас обычно нет выбора — в требования по документированию ТЗ вписано соблюдение стандартов. На практике мне приходилось сталкиваться с различными примерами недопонимания структуры стандартов, того, что должно быть в документах и зачем эти документы нужны. В итоге из-под пера техписателей, аналитиков и специалистов выходят порой такие перлы, что непонятно, в каком состоянии сознания они писались. А ведь на самом деле все достаточно просто. Поиск по Хабру не вернул ссылок на более-менее целостный материал на данную тему, потому предлагаю закрасить этот досадный пробел.
Читать дальше →
Всего голосов 64: ↑60 и ↓4+56
Комментарии43

Тепловизор: смотрим на мир глазами Хищника

Время на прочтение4 мин
Количество просмотров234K
Давно хотел дорваться до тепловизора — у меня в профиле наверное год висело объявление. Наконец, тепловизор удалось найти — и тем что удалось снять и рассказом о том, как они работают — хочу поделиться.

Температуру объектов можно определять потому что количество испускаемого объектами ИК света в первую очередь зависит от температуры и уже меньше — от материала (emissivity, в правильных пирометрах и практических всех тепловизорах можно настраивать поправку на emissivity, чтобы получать достаточно точную температуру.).

С ростом температуры — излучение становится более коротковолновым, с 700-800 градусов уже захватывая область видимого света. На этом принципе работают как тепловизоры, так и пирометры (инфракрасные термометры) и датчики движения.

Тепловизоры, как и многие интересные вещи в этом мире — изначально придуманы для военных. Любые теплые предметы неизбежно светятся в ИК свете (и днем и ночью), воздух свободно пропускает ИК-свет в диапазоне 7-14мкм и наконец — туман, пыль — гораздо меньше задерживает ИК свет, т.е в условиях плохой видимости видно может быть гораздо дальше.
Читать дальше →
Всего голосов 148: ↑144 и ↓4+140
Комментарии111

Региональный малый и средний бизнес в ИТ — 2

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

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


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

Итак, третья группа региональных субъектов среднего бизнеса (малых здесь уже нет) достаточно разношерстна, как по составу, так и по своей деятельности, но в то же время имеет и объединяющие групповые признаки.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии0

Инициализация в С++ действительно безумна. Лучше начинать с Си

Время на прочтение17 мин
Количество просмотров98K
Недавно мне напомнили, почему я считаю плохой идеей давать новичкам C++. Это плохая идея, потому что в C++ реальный бардак — хотя и красивый, но извращённый, трагический и удивительный бардак. Несмотря на нынешнее состояние сообщества, эта статья не направлена против современного C++. Скорее она частично продолжает статью Саймона Брэнда «Инициализация в C++ безумна», а частично — это послание каждому студенту, который хочет начать своё образование, глядя в бездну.

Типичные возражения студентов, когда им говорят об изучении C:

  • «Кто-то его ещё использует?»
  • «Это глупо»
  • «Почему мы изучаем C?»
  • «Мы должны учить что-то лучшее, например, C++» (смех в зале)
Всего голосов 83: ↑79 и ↓4+75
Комментарии183

Перегрузка в C++. Часть III. Перегрузка операторов new/delete

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

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Эта статья посвящена перегрузке операторов new/delete. Это третья статья из серии, первая, посвященная перегрузке функций и шаблонов, находится здесь, вторая, посвященная перегрузке операторов, находится здесь. Статья завершает цикл из трех статей, посвященный перегрузке в C++.

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

Как Греф с программистами боролся

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

Наверное многие помнят скандальное заявление Грефа о том, что Сбербанку программисты не нужны: "У нас огромное количество программистов, с которыми мы боремся". Давайте проанализируем откуда такие заявления взялись и чем все это закончилось.


Читать дальше →
Всего голосов 138: ↑123 и ↓15+149
Комментарии281

Вероятно, хватит рекомендовать «Чистый код»

Время на прочтение13 мин
Количество просмотров186K
Возможно, мы никогда не сможем прийти к эмпирическому определению «хорошего кода» или «чистого кода». Это означает, что мнение одного человека о мнении другого человека о «чистом коде» обязательно очень субъективно. Я не могу рассматривать книгу Роберта Мартина «Чистый код» 2008 года с чужой точки зрения, только со своей.

Тем не менее, для меня главная проблема этой книги заключается в том, что многие примеры кода в ней просто ужасны.
Читать дальше →
Всего голосов 128: ↑118 и ↓10+137
Комментарии427

Сравнение мозга с нейронной сетью

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


Можно встретить много критических замечаний о том, что биологический мозг или биологические нейронные сети работают совершенно не так как ныне популярные компьютерные нейронные сети. К подобным замечаниям прибегают различные специалисты, как со стороны биологов, нейрофизиологов так и со стороны специалистов по компьютерным наукам и машинному обучению, но при этом очень мало конкретных замечаний и предложений. В этой статье мы попытаемся провести анализ этой проблемы и выявить частные различия между работой биологической и компьютерной нейронной сетью, и предложить пути улучшения компьютерных нейронных сетей которые приблизят их работу к биологическому аналогу.
Всего голосов 32: ↑30 и ↓2+34
Комментарии179

Простейшая командная строка на NASM и QEMU

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

image


Итак, сразу к делу. Писать будем под Linux, на NASM и с использованием QEMU. Установить это легко, так что пропустим этот шаг.


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

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

Рецепты для ELFов

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

image


На русском языке довольно мало информации про то, как работать с ELF-файлами (Executable and Linkable Format — основной формат исполняемых файлов Linux и многих Unix-систем). Не претендуем на полное покрытие всех возможных сценариев работы с эльфами, но надеемся, что информация будет полезна в виде справочника и сборника рецептов для программистов и реверс-инженеров.


Подразумевается, что читатель на базовом уровне знаком с форматом ELF (в противном случае рекомендуем цикл статей Executable and Linkable Format 101).


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

Поработаем с эльфами
Всего голосов 23: ↑23 и ↓0+23
Комментарии19

Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования

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

Дисклеймер:


Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
Читать дальше →
Всего голосов 155: ↑150 и ↓5+191
Комментарии342

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

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


Пару дней назад я опубликовал и потом внезапно убрал в черновики статью о плане написать про создание своей ОС для архитектуры ARM. Я сделал это, потому что получил много интересных отзывов как на Хабре, так и в G+.

Сегодня я попробую подойти к вопросу с другой стороны, я буду рассказывать о том, как программировать микроконтроллеры ARM на нарастающих по сложности примерах, пока мы не напишем свою ОС или пока мне не надоест. А может, мы перепрыгнем на ковыряние в Contiki, TinyOS, ChibiOS или FreeRTOS, кто знает, их там столько много разных и интересных (а у TinyOS еще и свой язык программирования!).

Итак, почему ARM? Возиться с 8-битными микроконтроллерами хотя и интересно, но скоро надоедает. Кроме того, средства разработки под ARM обкатаны долгим опытом и намного приятнее в работе. При этом, начать мигать светодиодами на каком-то «evaluation board» так же просто, как и на Arduino.

Читать дальше →
Всего голосов 129: ↑124 и ↓5+119
Комментарии66

Руководство новичка по эксплуатации компоновщика

Время на прочтение32 мин
Количество просмотров209K
David Drysdale, Beginner's guide to linkers (http://www.lurklurk.org/linkers/linkers.html).

Цель данной статьи — помочь C и C++ программистам понять сущность того, чем занимается компоновщик. За последние несколько лет я объяснил это большому количеству коллег и наконец решил, что настало время перенести этот материал на бумагу, чтоб он стал более доступным (и чтоб мне не пришлось объяснять его снова). [Обновление в марте 2009: добавлена дополнительная информация об особенностях компоновки в Windows, а также более подробно расписано правило одного определения (one-definition rule).

Типичным примером того, почему ко мне обращались за помощью, служит следующая ошибка компоновки:
g++ -o test1 test1a.o test1b.o
test1a.o(.text+0x18): In function `main':
: undefined reference to `findmax(int, int)'
collect2: ld returned 1 exit status

Если Ваша реакция — 'наверняка забыл extern «C»', то Вы скорее всего знаете всё, что приведено в этой статье.
Читать дальше →
Всего голосов 194: ↑193 и ↓1+192
Комментарии38

NETMAP (от Luigi Rizzo). Простой и удобный opensource фреймворк для обработки трафика на скоростях 10Gbit/s или 14 Mpps

Время на прочтение22 мин
Количество просмотров48K
Пропускная способность каналов связи непрерывно возрастает, если ещё пару лет назад сервер с каналом 10Gbit/s был привилегией лишь немногих, то теперь на рынке появились предложения, доступные для маленьких и средних компаний. В то же время, стек протоколов TCP/IP разрабатывался во времена, когда о скоростях порядка 10Gbit/s можно было только мечтать. Вследствие этого, в коде большинства современных операционных систем общего назначения имеется множество оверхедов, впустую съедающих ресурсы. В этих условиях, возрастает важность задач высокопроизводительной обработки сетевых потоков.

Статья сделана на основе моего доклада на Highload++ 2012 и предназначена для быстрого введения в удобный и очень эффективный opensource framework, который включен в HEAD/STABLE FreeBSD, называется NETMAP и позволяет работать с пакетами на скоростях 1-10Gbit/s без использования специализированного железа в обычных *nix операционных системах.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии13

Преобразователи Time-To-Digital (TDC): что это такое и как они реализованы в FPGA

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

На рисунке — первый в мире спутник квантовой связи «Мо-Цзы», который запустили из Китая в 2016 году, в нем летает TDC, реализованная в FPGA.

Объяснить своей девушке (или парню), что такое ADC и DAC, и в каких домашних приборах они используются, может каждый человек, называющий себя инженером. А вот что такое TDC, и почему у нас дома их нет, зачастую можно узнать только после свадьбы.

TDC — это time-to-digital converter. По-русски говоря: времяизмерительная система.

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

В этой хабрастатье приводится детальное описание простенькой времяизмерительной системы на FPGA Cyclone IV. Статья будет полезна не только для расширения кругозора, но и с методической точки зрения, поскольку реализация системы нетривиальная.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии11

Тюнинг переходных отверстий печатных плат

Время на прочтение10 мин
Количество просмотров48K
Давайте поговорим про проектирование переходных отверстий — для серьёзной электроники их качество очень важно. В начале статьи я осветил факторы, влияющие на целостность сигнала, а потом показал примеры расчёта и тюнинга импеданса одиночных и дифференциальных переходных отверстий.


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

Реверс-инжиниринг лазерного датчика расстояния

Время на прочтение11 мин
Количество просмотров41K
image
Однажды ко мне попал нерабочий лазерный датчик расстояния Keyence LK-G407. Мало того, что он был нерабочий, так его еще и нельзя было использовать без специального управляющего блока. Но ведь у датчика такие интересные характеристики: измерение расстояния с точностью до единиц микрон, и скорость работы — 50 килоизмерений/с. Так что, чтобы запустить его, придется заметно поковыряться в самом датчике, заодно и ценный опыт получить.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии22

Принцип единственной ответственности: глубокое погружение

Время на прочтение17 мин
Количество просмотров50K
Про принцип единственной ответственности (The Single Responsibility Principle, SRP) уже было написано множество статей. В большинстве из них даётся лишь поверхностное его описание мало чем отличающееся от информации в википедии. А те немногие статьи что затрагивают ключевые особенности SRP делают это вскользь, не акцентируя на них внимания и не развивая тему дальше.

Эта статья — попытка дать более глубокое объяснение принципу единственной ответственности, а также показать как его всё таки можно применять на практике. Кому интересно — добро пожаловать под кат.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+34
Комментарии106

Про котиков, собак, машинное обучение и deep learning

Время на прочтение15 мин
Количество просмотров83K
image
«В 1997 году Deep Blue обыграл в шахматы Каспарова.
В 2011 Watson обставил чемпионов Jeopardy.
Сможет ли ваш алгоритм в 2013 году отличить Бобика от Пушистика?»


Эта картинка и предисловие — из челленджа на Kaggle, который проходил осенью прошлого года. Забегая вперед, на последний вопрос вполне можно ответить «да» — десятка лидеров справилась с заданием на 98.8%, что на удивление впечатляет.

И все-таки — откуда вообще берется такая постановка вопроса? Почему задачи на классификацию, которые легко решает четырехлетний ребенок, долгое время были (и до сих пор остаются) не по зубам программам? Почему распознавать предметы окружающего мира сложнее, чем играть в шахматы? Что такое deep learning и почему в публикациях о нем с пугающим постоянством фигурируют котики? Давайте поговорим об этом.
По заветам издателей Стивена Хокинга - без формул
Всего голосов 101: ↑98 и ↓3+95
Комментарии49

Информация

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