Как стать автором
Обновить
7
0
Алексей Радионов @pretorean

Программист

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

Обработка Segmentation Fault в C++

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

Вводная


C++ является «небезопасным» («unmanaged») языком, поэтому программы могут «вылетать» — аварийно завершать работу без сохранения данных пользователя, сообщения об ошибке и т.п. — стоит только, например, залезть в не инициализированную память. Например:
void fall()
{
  char * s = "short_text";
  sprintf(s,"This is very long text");
}

или
void fall()
{
  int * pointer = NULL;
  *pointer = 13;
}


Всем было бы лучше, если бы мы могли «отловить» падение программы — точно так же, как в java ловим исключения — и выполнить хоть что-то перед тем, как программа упадет (сохранить документ пользователя, вывести диалог с сообщением об ошибке и т.п.)

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

Читать дальше →
Всего голосов 67: ↑60 и ↓7+53
Комментарии59

Взгляд изнутри: светодиодные лампочки

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


Предисловие


В последнее время был поднят ажиотаж вокруг светодиодных ламп, которые должны заменить собой обычные лампы Ильича. И как поведал главный нанотехнолог России, такие лампы скоро поступят в продажу в Москве и Санкт-Петербурге. Конечно, всё было обставлено с пафосом: первым оценил новинку В.В.Путин. Мне удалось достать лампочку от «Оптогана» одним из первых, к тому же в руках у меня оказались ещё одна лампочка российского производства («СветаLED» или «SvetaLED»), правда побитая жизнью, но рабочая, и китайский NoName, которую с лёгкостью можно купить на ebay или dealextreme.com.
Читать дальше →
Всего голосов 542: ↑537 и ↓5+532
Комментарии202

Развертывание биллинга для небольшой сети с нуля

Время на прочтение11 мин
Количество просмотров62K
Предыстория:
Некие хорошие люди решили начинать провайдерский бизнес. Растянули и разварили оптику в небольшом районе, поставили ящички, засунули туда минимальные свичи, с помощью которых можно организовать VLAN-Per-User, закупили небольшой, для начала, канал у ближайшего магистрала. Встал у них вопрос о том, чем же считать пользователям трафик/денежки и нарезать скоростя.
Общая схема сети должна выглядеть следующим образом:



Кому интересно, далее под катом очень много букв и картинок.
Читать дальше →
Всего голосов 94: ↑88 и ↓6+82
Комментарии29

Признаки плохого программиста

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

Неспособность рассуждать о коде


«Рассуждать о коде» значит понимать порядок исполнения инструкций («исполнять программу в голове»), зная, каково предназначение кода.

Симптомы

  • Наличие «волшебного», «вуду» кода или кода, который не имеет никакого отношения к целям программы, но всё равно тщательно поддерживается (например, инициализация переменных, которые никогда не используются, вызов функций, не имеющих отношения к цели, создание выходных данных, которые не используются, и т.д.).
  • Многократные вызовы идемпотентных функций (например, вызов save() по нескольку раз, «чтобы уж точно»).
  • Исправление ошибок написанием избыточного кода, который замещает данные, полученные при исполнении неисправного кода.
  • «Йо-йо код», который конвертирует значения в различные представления, а потом конвертирует их обратно ровно в то же представление, с которого начинали (например, преобразование десятичного числа в строку, а потом обратно в десятичное число, или padding строчки с последующим trim'ом).
  • «Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).

Читать дальше →
Всего голосов 374: ↑297 и ↓77+220
Комментарии260

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Время на прочтение5 мин
Количество просмотров173K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

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

Читать дальше →
Всего голосов 385: ↑339 и ↓46+293
Комментарии186

Dlink DIR-320 для организации резервного канала

Время на прочтение7 мин
Количество просмотров32K
Вы же знаете, как это иногда бывает: погружённый в фантастический мир новых знаний, вы сидите, расслабившись, перед мануалом, и тут влетает некий истеричный субъект, мечет гром, молнии и икру. Когда удастся погасить взрыв эмоций, ситуация начнёт проясняться.
Итак, суть проблемы: есть некий компьютер/терминал в труднодоступном месте, до которого организован не очень стабильный канал связи. Если связи нет в нужный момент, этот терминал становится местом локального смерча, в вихре которого носятся все от мала до велика.
Суть задачи: организовать резервный канал связи с автопереключением на него, в случае падения основного и назад, когда основной поднимется.
Резервный канал на DLink DIR-320
В этой публикации я опишу своё решение на приснопамятном DLink DIR-320.
Я потратил много времени на тщетные поиски сначала способов и реализаций, потом прошивок и скриптов, прежде чем пришёл к ответу. Надеюсь эта информация окажется полезной.
Читать дальше →
Всего голосов 82: ↑75 и ↓7+68
Комментарии49

Рецепт приготовления Xubuntu, или нетбук для супруги

Время на прочтение3 мин
Количество просмотров63K
С момента написания статьи вышли новые версии Xubuntu. Статья устарела. Писал, в основном, для собственной памяти и актуальность поддерживаю там где удобнее. Актуальный вариант и продолжение темы смотрите в блоге.

Читать дальше →
Всего голосов 125: ↑89 и ↓36+53
Комментарии78

Приучаем винтажные американские часы кормиться от нашей сети

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

Вместо предисловия




Кто не мечтал о таких часах после просмотра любимого фильма GTD-шников, может дальше не читать. А остальным я расскажу как заполучить себе такие часы и заставить их работать.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии41

Неравномерно идущие часы

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

Идея этих часов состоит в том, что стрелки на них двигаются неравномерно, то ускоряясь, то отставая, но тем не менее, в среднем, часы показывают правильное время. Сейчас расскажу, как такие сделать.
Читать дальше →
Всего голосов 250: ↑241 и ↓9+232
Комментарии120

Dart — путь к мировому господству за 24 час… месяца

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

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

Сразу после анонса Dart получил просто шквал критики: скудность синтаксиса, непонятная позиция и переспективы на рынке, слабо развитые средства разработки. Разве это когда-нибудь станет языком #1 для Web и вытеснет JavaScript? Знаете, станет, и вот почему…

1. Chrome уже обогнал Firefox в некоторых странах(UK), через полгода обгонит суммарно, а потом вытеснит совсем: к сожалению новый цикл разработки не пошёл Firefox на пользу: плагины не успевают обновлятся, жалуются на схему как системные администраторы, так и разработчики, а стабильность и прожорливость ресурсов — пока на старом уровне. Internet Explorer так же продолжает терять рынок. В ближайшем будущем на десктопе будет доминирование IE & WebKit(Chrome & Safari).



На мобильных устройствах, которые растут куда быстрее, WebKit уже #1 с практически полным покрытием рынка смартфонов и таблеток: Android/iOS/BlackBerry/Bada/WebOS/Symbian. Именно здесь сейчас протекают самые интересные инновации пользовательских интерфейсов.

Но, как мы помним, в основной ветке WebKit используется не V8 от Google, а JavaScriptCore/SquirellFish. Я думаю, что Google попытаются перенести V8 в проект WebKit — таким образом Google может получить ~50% рынка десктопов и 90% рынка мобильных устройств, которые из коробки смогут поддерживать Dart.

Читать дальше →
Всего голосов 136: ↑106 и ↓30+76
Комментарии164

Jelastic — distributed Java Hosting Cloud Platform in ServInt and HostEurope

Время на прочтение3 мин
Количество просмотров1.5K
Рад поделиться новостями, про очередные достижения в проекте Jelastic — Java Hosting Cloud Platfrom. Теперь Jelastic доступен в датацентре на территории США. Это одно из последних наиболее важных для нас событий. Наш новый партнер это компания ServInt Corporation. Официальный пресс-релиз по этому поводу можно прочитать на их сайте. Теперь мы официально запущенны в 2-х территориально разделенных датацентрах. Первый это HostEurope (на территории Германии), второй это ServInt (на территории северной Америки). Мы очень рады тому, что теперь у наших пользователей имеется возможность разворачивания своих приложений на разных континентах, поближе к своим клиентам. Почему мы сотрудничаем именно с HostEurope и ServInt?
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии9

Принципы партнёрства в стартапе MyClasses.org — история, манящая в Доминикану

Время на прочтение9 мин
Количество просмотров1.6K
В этом посте я расскажу реальную историю о том как четыре человека (экспат-проказник, москвич, лимитчик да косолапый мишка) договорились о принципах партнёрства, закрепили эти договорённости простым письмом по электронной почте и, доверившись друг другу, за 9 месяцев географически-распределённой работы приблизились к своей мечте о независимости. Лично у меня эта мечта зародилась давно, но окончательно сформулировалась после прочтения «Четырёхчасовой рабочей недели» Тима Ферриса: идея о том, что надо создавать продукт, а не просто работать за зарплату, стала просто навязчивой.

Немного предыстории. Три года назад я поставил крест на своём предыдущем двухгодичном самоокупаемом, но слабо растущем проекте и начал регистрировать домены для нового: MyClasses.org — сеть локальных справочников (уровня города) о всевозможных курсах и уроках. На сайтах организуется процесс общения между школами, учителями и учениками. Этакая смесь Yellow pages + CMS + CRM + Feedback/Review + Social network. Локально-глобального масштаба.

Logo of MyClasses.org
Регистрировал домены я много, увлечённо и постоянно. Домейнерство, не в прямом смысле этого слова, — моя слабость — появилась идея и бац! — надо срочно зарегистрировать домен! Потом ажиотаж проходит, и появляется понимание что ни сил, ни времени, ни достаточных перспектив нет. Но домены остаются. Иногда их удавалось продать (3 раза по запросу, сам никогда не выставляю на продажу, лучшая сделка — $2.200, всего на $3.000 — не разбогатеешь). Но в этот раз всё было не так.

Очередная авантюра подкупала целым набором благоприятных факторов:
Читать дальше →
Всего голосов 103: ↑89 и ↓14+75
Комментарии80

DSL для XML в C++

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

Что имеем


Начну с того, что расскажу немного о проекте, в котором работаю и как там все пишется. Может не у одних нас так…

Проект представляет из себя CRM систему, разрабатываемую специально для клиентов одного сегмента бизнеса. Проекту лет 6 и команда разработчиков состоит из 10 человек. Язык: C++ и PL/SQL.

Наша система исползует Plain Old XML, так уж повелось. И на используемые XML нет схем, по большей части. Что тут говорить, если юнит тесты прививаются здесь только второй год и менеджер до сих пор упрекает за время, потраченное на их написание. Да ладно…

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

Как и многие, я думаю, мы многое делаем неоптимально и не лучшим образом. Главное делаем. Пример с XML не исключение.
Читать дальше →
Всего голосов 36: ↑31 и ↓5+26
Комментарии27

mutex,spinlock,buslock. Накладные расходы

Время на прочтение3 мин
Количество просмотров16K
В поисках оптимального механизма синхронизации, я часто сталкивался с постами типа mutex vs…, но большой ясности в своей карте этих механизмов так и не получил. Поэтому решил написать небольшой тест, сравнивающий накладные расходы на разные типы блокирующих механизмов. Пожалуй, можно сказать, что тест измеряет латентность механизмов блокировки. Суть его в том, что некоторое количество нитей конкурируют за ресурс. Ресурс —
volatile unsigned long int incremented;
«Полезная» работа — выполнить BIG_NUMBER инкрементов.
Цель теста — оценить затраты на синхронизацию, то бишь построить графики зависимость временных затрат от количества конкурирующих нитей для разных механизмов синхронизации.
Пучки нитей (1..N штук) выполняют одинаковое количество инкрементов, синхронизируясь разными способами.

Далее о структуре теста и результатах.
Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии75

Confetti — простая и быстрая конфигурация Вашего проекта

Время на прочтение5 мин
Количество просмотров1.1K
Если Вы пишете проект чуть более среднего, то как правило сталкиваетесь с настройками и конфигурированием. Есть не мало решений на С/С++, хочу рассказать еще про одно довольно-таки простое и красивое решение от Компании mail@Ru, которое я использовал в своем проекте

Сам я пользовался разными парсерами конфига, в последних проектах использовал re2c (конфиг был похож на конфиг nginx). У re2c есть даже немного общего с Конфети — это кодогенерация:
никаких настроечных файлов и структур кодить не надо, все за вас сделает Маг Confetty.

К сожалению, документации ни какой, иначе не было бы этой статьи. Интересующим, милости просим…
Читать дальше →
Всего голосов 14: ↑8 и ↓6+2
Комментарии4

Стоит ли быть «успешным»?

Время на прочтение6 мин
Количество просмотров48K
Как надоели эти тематические статьи о повышении результативности, мотивации и прочей чепухе. Зачем люди их пишут? Чтобы помочь тем, кто запутался в себе? Для тех, кому тяжело сосредоточиться? Вряд-ли это так.

Современная жизнь диктует нам, что все нужно делать быстро, добиваться максимальной эффективности. Непременно нужно быть очень успешным. Нужно двигаться к цели, каждый день, каждый час, ежеминутно. Оставив все лишнее, бросить все силы на достижение результата. Иначе нет смысла жить.
Читать дальше →
Всего голосов 325: ↑293 и ↓32+261
Комментарии253

Автоматизация магазина или как конкурировать с супермаркетами

Время на прочтение4 мин
Количество просмотров93K
image
В один прекрасный день появилась идея автоматизации своего небольшого магазина. Причин было несколько: во-первых, продавцы всю смену стоят на ногах, что не комфортно; во-вторых, когда человек ходит сам, он не может обвинить продавца в качестве принесенного товара, тут он сам смотрит, выбирает и кладет в корзину, соответственно может положить не только то, за чем пришел; в-третьих, нужно было избавиться от больших очередей.
В этом посте постараюсь поделиться опытом организации.
Читать дальше →
Всего голосов 181: ↑179 и ↓2+177
Комментарии195

Читаем QR код

Время на прочтение5 мин
Количество просмотров1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Всего голосов 623: ↑614 и ↓9+605
Комментарии109
12 ...
25

Информация

В рейтинге
Не участвует
Откуда
Волгодонск, Ростовская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность