Search
Write a publication
Pull to refresh
48
0
Send message

Краш-репорты в *nix: backtrace, SEGFAULT (и reinterpret_cast)

Reading time5 min
Views5.4K
Привет, уважаемый хабраюзер!

Все разработчики программ рано или поздно сталкиваются с проблемой падения программы у пользователя. Но далеко не все при этом могут получить доступ к конкретному компу, на котором что-то идёт не так, запустить там gdb и повторить падение. И даже получить информацию от пользователя бывает крайне сложно: в багтрекер (или техподдержку) приходит сообщение а-ля «программа падает, что делать?», а вот технической информации, так важной для разработчика, пользователь не прилагает к своему сообщению. Да ещё и не каждый напишет об этом! Просто перестанет пользоваться программой — и всё.

Некоторые ОС предлагают отправить краш-репорт разработчикам. Но! Разработчикам ОС, а не Вам, то есть совсем не тем людям, которым это действительно нужно! И тут на помощь приходят собственные краш-репорты, которая Ваша программа должна бы отправить на Ваш сервер. Но как их сделать? Как правильно обработать SEGFAULT и при этом отправить вразумительную информацию разработчику?
Читать дальше →

Linux + 2 ISP. И доступность внутреннего сервера через обоих провайдеров

Reading time5 min
Views15K
Есть замечательная статья, в которой рассказывается, как это делается на Cisco. Но мы не хотим тратить $100500 на приобретение штампованных оттисков «Cisco Systems» на корпусе маршрутизатора.

Описание проблемы

Итак, суть проблемы: имеется два NAT через двух разных провайдеров, локальная сеть, в которой есть сервер и который должен быть публичным и доступным через оба NAT. У провайдеров разные приоритеты: сначала задействуется первый, потом второй.

Если пакет вошёл через первого провайдера, он NAT-ится на наш сервер, обрабатывается, образуется ответный пакет, который выходит через первого провайдера и уходит туда, откуда пришёл первый пакет. Хорошо.

Если пакет вошёл через второго провайдера, он NAT-ится на наш сервер, обрабатывается, образуется ответный пакет, который выходит через первого провайдера… а почему? Потому, что сначала в Linux происходит маршрутизация, а потом уже SNAT. Итак, при маршрутизации пакету назначается следующий узел — шлюз первого провайдера (по умолчанию). Потом происходит отслеживание соединения — conntrack замечает, что этот пакет является ответом на другой, и заменяет адрес отправителя адресом, который выдал нам второй провайдер. А потом пакет направляется через интерфейс первого провайдера на его шлюз. Как правило, провайдер блокирует пакеты, адресом отправителя которых указан адрес не из их подсети. Плохо.

Читать дальше →

Изучить Github за 15 минут

Reading time1 min
Views127K
TryGit — интерактивный обучающий курс по Github в стиле Codecademy. Курс состоит из 25 мини-уроков, которые знакомят пользователя с базовыми понятиями и основными командами git, при этом ученик своими руками вводит команды в консоль, смотрит результат и читает сопровождающие надписи с объяснением происходящего.



Вот таким в будущем должно стать обучение в школах!

Конечно, 15-минутное введение не заменит полноценного учебника. Для обучения можно рекомендовать бесплатную книгу Pro Git и видеокурс Getting Git.

Первая опытно-промышленная партия отечественных мультиклеточных процессоров MCp

Reading time2 min
Views7.8K
Я понимаю, конечно, что Сколково, гос-корпорации, непонятное название, много псевдонаучного PR по поводу этих самых клеток и прочие негативные коннотации имеют место быть, но партия процессоров изготовлена. Их даже можно потрогать руками и посетовать на кривые ножки :) в новости на картинке не фотошоп — на сайте разработчиков и в прокремлёвской газете (не, ну мне самому стыдно, однако… против факта не попрёшь).

Погордиться отечественной электроникой

Однострочники на С++

Reading time2 min
Views62K
image
На хабе появилось несколько топиков об «однострочниках» на разных языках, которые решали простые задачи. Я решил опубликовать несколько алгоритмов на языке C/С++.
Итак, поехали!
Читать дальше →

Как работает усилитель звуковой частоты

Reading time7 min
Views232K

Введение


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

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

Самостоятельное изучение схемотехники. Синтез автоматов на триггерах. Часть 1

Reading time3 min
Views30K
Здравствуйте.
В продолжение тематики самостоятельного изучения схемотехники предлагаю вашему вниманию статью, связанную с синтезом автоматов на триггерах.
А начинается все так:


Читать дальше →

Самостоятельное изучение схемотехники. Основные понятия. Часть 1

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

image
Читать дальше →

Как сделать программу нетерпеливой?

Reading time1 min
Views11K


Программы, которые были написаны в прошлых лекциях курса «Сетевое программирование в UNIX», обладали бесконечным запасом терпения, то есть беспрекословно ждали, пока не поступят данные для обработки. В новой лекции вы узнаете, как ограничить терпение программы определенными временными рамками.
Читать дальше →

Приложение Mamba Hiring: IT-специалистов надо искать IT-методами

Reading time2 min
Views27K
Несколько месяцев назад «Мамба» запустила приложение Mamba Hiring для поиска разработчиков в социальной сети Facebook. Несколько тысяч человек прошли тест, и лучшие программисты из них сейчас работают на благо российского лидера индустрии знакомств.

Как показывает практика, поиск IT-специалистов стандартными методами не приносит хороших результатов. Гениальные интернет-разработчики заметно отличаются от остальных специалистов: для них особенно важно, чтобы работа была максимально комфортной и приносила удовольствие. Они не размещают резюме на стандартных ресурсах поиска работы, не занимаются «селфпиаром» на рынке. Чтобы отыскать подобного сотрудника, нужно его заинтересовать еще до приглашения на собеседование.

Читать дальше →

Разработка и применение модуля PAM для аутентификации в Astra Linux с использованием Рутокен ЭЦП и Рутокен S

Reading time13 min
Views52K


В этой статье мне бы хотелось рассказать о том, как приложения в Linux могут использовать систему Подключаемых Модулей Безопасности (Pluggable Authentication Modules) для прозрачной аутентификации пользователей. Мы немного покопаемся в истории развития механизмов аутентификации в Linux, разберемся с системой настроек PAM и разберем исходный код модуля аутентификации pam_p11, который позволяет проводить аутентификацию пользователей по смарт-картам.
В конце статьи мы рассмотрим на практике настройку и работу модуля аутентификации в сертифицированном по 3 классу защищенности СВТ и 2 уровню контроля отсутствия недекларированных возможностей дистрибутиве Astra Linux для аутентификации по USB-токенам Рутокен ЭЦП и Рутокен S. Учитывая то, что Рутокен S имеет сертификаты ФСТЭК по НДВ 3, а Рутокен ЭЦП по НДВ 4, это решение может применяться в информационных системах, обрабатывающих конфиденциальную информацию, вплоть до информации с грифом «С».
Читать дальше →

Алгоритм Хаффмана на пальцах

Reading time5 min
Views539K
Вы вероятно слышали о Дэвиде Хаффмане и его популярном алгоритме сжатия. Если нет, то поищите информацию в интернете — в этой статье я не буду вас грузить историей или математикой. Сегодня я хочу просто попытаться показать вам практический пример применения алгоритма к символьной строке.
Разархивировать текст статьи

Как и зачем мерить FLOPSы

Reading time8 min
Views139K
image Как известно, FLOPS – это единица измерения вычислительной мощности компьютеров в (попугаях) операциях с плавающей точкой, которой часто пользуются, чтобы померить у кого больше. Особенно важно померяться FLOPS’ами в мире Top500 суперкомпьютеров, чтобы выяснить, кто же среди них самый-самый. Однако, предмет измерения должен иметь хоть какое-нибудь применение на практике, иначе какой смысл его замерять и сравнивать. Поэтому для выяснения возможностей супер- и просто компьютеров существуют чуть более приближенные к реальным вычислительным задачам бенчмарки, например, SPEC: SPECint и SPECfp. И, тем не менее, FLOPS активно используется в оценках производительности и публикуется в отчетах. Для его измерения давно уже использовали тест Linpack, а сейчас применяют открытый стандартный бенчмарк из LAPACK. Что эти измерения дают разработчикам высокопроизводительных и научных приложений? Можно ли легко оценить производительность реализации своего алгоритма в FLOPSaх? Будут ли измерения и сравнения корректными? Обо всем этом мы поговорим ниже.
Читать дальше →

Сервис определения направления ТВ-тарелки на спутник или Dishpointer по-русски

Reading time4 min
Views218K
С наступлением летних каникул, для многих жителей крупных городов, жизнь постепенно переезжает за город. Одним из IT-атрибутов загородной жизни является наличие спутникового телевидения. Кто-то пытается самостоятельно установить и настроить антенну по аналогии с соседскими, кто-то прибегает к услугам установщиков, кто-то рассчитывает параметры установки линейкой на гуглокартах.

Для тех, кто пытается самостоятельно установить и настроить спутниковое ТВ я хочу представить сервис Geonames.ru, помогающий определить, в какую сторону направлять спутниковую тарелку.

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

image

В процессе разработки выяснилось, что аналогичные сервисы уже существуют за рубежом, самым популярным из которых является Dishpointer.com, которым пользуются, в том числе, и установщики. Я постарался сделать свой сервис ориентированным на русскоязычных и менее технически подготовленных пользователей, фактически — для домохозяек.

Далее я расскажу каким образом в сервисе рассчитываются необходимые параметры и с какими трудностями пришлось столкнуться в процессе разработки.
Читать дальше →

Обработка сообщений в ОСРВ на примере FreeRTOS

Reading time5 min
Views12K
Лого_FreeRTOS Здравствуйте. Данная статья описывает одну из возможных реализаций паттерна Handler для FreeRTOS, предназначенного для обмена сообщениями между потоками. Статья предназначена в первую очередь для людей, использующих операционные системы в проектах для микроконтроллеров, энтузиастов DIY и людей изучающий ОСРВ и микроконтроллеры.
Предполагается, что читатель знаком с основными терминами, относящимися к ОСРВ, такими как очередь и поток. Более подробно ознакомиться с FreeRTOS можно в постах qdx FreeRTOS: введение и FreeRTOS: межпроцессное взаимодействие.
Те, кто участвовал а проектах для микроконтроллеров, используя FreeRTOS, возможно, сталкивался с тем, что стандартный API достаточно скуден, что приводит к необходимости написания дополнительного кода, который во многом повторяется. В моем случае ощущался недостаток инструментов для взаимодействия между потоками, а именно отсутствие унифицированной системы обмена сообщениями. Обычно для обмена инфомацией между потоками и синхронизации используются те или иные формы очередей. При этом тип информации, содержащейся в очереди, каждый раз разный, что снижает возможность повторного использования кода.
Использование унифицированной формы сообщения часто позволяет объединить несколько потоков в один Worker Thread, который обрабатывает полученные сообщения в порядке очереди.
Читать дальше →

Сети для самых маленьких. Часть четвертая. STP

Reading time22 min
Views623K
I think that I shall never see
A graph more lovely than a tree.
A tree whose crucial propertyеу
Is loop-free connectivity.
A tree that must be sure to span
So packets can reach every LAN.
First, the root must be selected.
By ID, it is elected.
Least-cost paths from root are traced.
In the tree, these paths are placed.
A mesh is made by folks like me,
Then bridges find a spanning tree.

— Radia Joy Perlman

Все выпуски


6. Сети для самых маленьких. Часть шестая. Динамическая маршрутизация
5. Сети для самых маленьких: Часть пятая. NAT и ACL
4. Сети для самых маленьких: Часть четвёртая. STP
3. Сети для самых маленьких: Часть третья. Статическая маршрутизация
2. Сети для самых маленьких. Часть вторая. Коммутация
1. Сети для самых маленьких. Часть первая. Подключение к оборудованию cisco
0. Сети для самых маленьких. Часть нулевая. Планирование

В прошлом выпуске мы остановились на статической маршрутизации. Теперь надо сделать шаг в сторону и обсудить вопрос стабильности нашей сети.
Однажды, когда вы — единственный сетевой админ фирмы “Лифт ми Ап” — отпросились на полдня раньше, вдруг упала связь с серверами, и директора не получили несколько важных писем. После короткой, но ощутимой взбучки вы идёте разбираться, в чём дело, а оказалось, по чьей-то неосторожности выпал из разъёма единственный кабель, ведущий к коммутатору в серверной. Небольшая проблема, которую вы могли исправить за две минуты, и даже вообще избежать, существенно сказалась на вашем доходе в этом месяце и возможностях роста.

Итак, сегодня обсуждаем:

  • проблему широковещательного шторма
  • работу и настройку протокола STP и его модификаций (RSTP, MSTP, PVST, PVST+)
  • технологию агрегации интерфейсов и перераспределения нагрузки между ними
  • некоторые вопросы стабильности и безопасности
  • как изменить схему существующей сети, чтобы всем было хорошо



Читать дальше →

Нейронные сети для чайников. Сеть Кохонена

Reading time3 min
Views349K
В статье Нейросети для чайников. Начало автор Paul_Smith доступно показал насколько просто создать нейронную сеть для распознования картинок. Но есть одно но — то что он описал нейронной сетью не является. Перед его следующей статьей хочу рассказать вам как решить ту же задачу, но с использованием нейронной сети Кохонена.

Итак, распознавать мы будем цифры, написанные белым по черному, такие как эти:
image image image image image image
Читать дальше →

Работающий трансформатор с деревянным сердечником, или простая грозозащита для компьютеров и телевизоров

Reading time10 min
Views98K
У великого русского поэта Тютчева не было компьютера и сети, иначе он бы не писал: «Люблю грозу в начале мая». В последние годы актуальность грозозащит стала поменьше — оптика, беспроводные технологии, но все же все же.
Если к вам в квартиру заходит кабель, и этот кабель — не оптический, гроза представляет угрозу для вашего оборудования.

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

Многозадачность в микроконтроллерах на основе продолжений

Reading time8 min
Views27K
Программисты C и так не избалованы возможностями языка, а разработчики встроенных систем на микроконтроллерах ограничены еще больше, зачастую их программы работают на голом железе, без поддержки ОС.
Возможность использования в С сопрограмм, генераторов, кооперативной многозадачности часто может сильно упростить программу и сэкономить силы, но эти возможности языка не очевидны и многие про них не знают.
Продолжения (contionuation) позволяют запомнить состояние выполнения программного потока (функции), и вернуться к этому месту в дальнейшем.
Используя продолжения, мы можем получить сопрограммы (coroutine), а это уже практически готовые генераторы, итераторы и кооперативная многозадачность.
Читать дальше →

Расставим точки над структурами C/C++

Reading time4 min
Views282K
Недавно познакомился со структурами C/C++ — struct. Господи, да «что же с ними знакомиться» скажете вы? Тем самым вы допустите сразу 2 ошибки: во-первых я не Господи, а во вторых я тоже думал что структуры — они и в Африке структуры. А вот как оказалось и — нет. Я расскажу о нескольких жизненно-важных подробностях, которые кого-нибудь из читателей избавят от часовой отладки…


Читать дальше →

Information

Rating
9,257-th
Registered
Activity