Pull to refresh
55
0
Сергей @yse

Программист

Send message

Смарт-поинтеры и RAII на службе программиста

Reading time4 min
Views10K
Исторически так сложилось, что руководство желает, чтобы задача была выполнена быстро. Для этого программисты сохраняют красоту и чистоту кода. Этот пост появился как напоминание о редкоиспользуемых нововведениях в C++11 – смарт-поинтерах, позволяющих указывать функтор для освобождения ресурсов.
Для примера возьмем файловый поток FILE из stdio.h, который любят за простоту и скорость, попробуем добавить ему красоту и базовую гарантию при исключениях:
unique_ptr<FILE, decltype(&fclose)> my_file(fopen("test.txt", "w"), &fclose);
if(my_file)
  fwrite("test", 4, 1, my_file.get());

В результате код зависит только STL и требует небольшой модификации обращений к файлу, пишется быстро, выглядит современно. Вот так получился RAII в чистом виде.
Как это работает?
Total votes 20: ↑17 and ↓3+14
Comments8

Интервью с Бьерном Страуструпом о языке C++

Reading time12 min
Views83K
image
Считанные часы остались до Нового 2014-го года, в котором в числе прочего всем нам был обещан новый стандарт C++14. Однако он будет не большим самостоятельным обновлением, а лишь доработкой C++11, багфиксом, который придаст текущей версии языка завершенный вид. На этом фоне Уильям Вонг (англ. William Wong) от ресурса electronicdesign.com взял интервью у Бьерна Страуструпа (дат. Bjarne Stroustrup), создателя C++. Беседа затронула несколько тем: от истории разработки C++ и особенностей стандарта C++11 до проблемы обучения этому языку программирования.

Некоторые термины и понятия из этого интервью мне раньше встречались исключительно в английском варианте (например, словечко embedded в контексте IT), и мне не всегда удавалось найти общепринятый перевод, в котором я не был бы уверен сам. В этих и других неоднозначных случаях я указывал английский вариант термина в скобках либо вовсе оставлял его непереведенным.

Читать дальше →
Total votes 95: ↑92 and ↓3+89
Comments137

Уже скоро новое рабство: теперь с витаминами и минералами

Reading time5 min
Views76K
image

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

Законы, постановления и статистика — все строилось на этом предположении; но чем дальше, тем больше то, чем люди занимались расходилось с тем, что понималось под этой анахроничной рубрикой из 50-х. У меня есть опыт объяснения представителям пограничной службы того, что моя «работа» состоит в заключении контрактов в стране А для клиента в стране B, а также в написании книг и продаже приложений. Повторять не советую.
Читать дальше →
Total votes 70: ↑46 and ↓24+22
Comments41

Kingston MobileLite Wireless — обзор чудо-гибрида

Reading time3 min
Views46K
Что обьявляется главным козырем андроидов в спорах за мировое господство, когда речь заходит о памяти устройств? Разумеется, поддержка карт памяти, и этого не отнять. Ну конечно, яблоки стали побольше, даже по 128 гигабайт, но цена за такие девайсы существенно превышает стоимость карточки microSD соответствующего объема. И что же делать? Без боя сдаваться зеленым человечкам? Безропотно признавать, что Apple наживается на несчастных фанатах бренда? Не совсем, есть пара вариантов, вроде Camera Connection Kit, но они специализированные, а есть гаджет попроще, неуникальный, но достойный внимания. Под катом — краткая история о Kingston MobileLite Wireless — устройстве, с помощью которого контент может попадать на смартфон (андроид или яблоко) и копироваться со смартфона на карту памяти или флешку.Сразу отмечу, что это чудо умеет еще и подкармливать смартфон от встроенной батарейки, правда не очень мощной — всего 1800 мАч.Kingston Mobile Lite Wireless
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments18

Безопасен ли Telegram? Или как я искал закладку в MTProto

Reading time4 min
Views332K
Telegram — мессенджер для смартфонов позиционирующий себя как безопасный, защищающий не только от злоумышленников, но и от гос. структур вроде АНБ. Для достижения этой безопасности Telegram использует собственную разработку — криптографический протокол MTProto, в надежности которого сомневаются многие, сомневаюсь и я.
Читать дальше →
Total votes 412: ↑401 and ↓11+390
Comments174

C++ трюки и советы из Boost на каждый день

Reading time3 min
Views42K

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

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

Что вас ждёт под катом:

  • Избегаем вызовов макросов вместо функций, на примере max/min.
  • Вызываем оптимальную функцию, на примере std::swap и её специализации в разных пространствах имен.
  • Ускоряем вставку в std::vector.
  • Деструкторы в C++11.

Читать дальше →
Total votes 49: ↑40 and ↓9+31
Comments15

Зачем и какая нужна лицензия?

Reading time6 min
Views25K


Я хочу рассказать о том, какие типы лицензий для своего софта предлагает Intel, какие сложности с ними возникают, и высказать своё личное мнение по этому поводу.
Читать дальше →
Total votes 29: ↑24 and ↓5+19
Comments5

Майнинг и как он работает: матчасть

Reading time6 min
Views559K

Привет, %username%!
Я расскажу и покажу как работает основа генерации денег в криптовалютах — майнинг. Как создается первый блок, новые блоки и как появляются деньги из ниоткуда.
Чтобы было проще понять, мы напишем свой импровизированный майнер для импровизированной криптовалюты HabraCoin.
Читать дальше →
Total votes 274: ↑252 and ↓22+230
Comments482

Continuous Integration вместе с buildbot: а зачем?

Reading time2 min
Views10K

В прошлом посте я хотел познакомить хабражителей с buildbot'ом. Но тема была мной раскрыта не до конца.
Сегодня я постараюсь немного наверстать упущенное.
Читать дальше →
Total votes 34: ↑20 and ↓14+6
Comments6

Использование квадродеревьев при расчёте пробок 2ГИС

Reading time6 min
Views22K
Даже не являясь навигатором, 2ГИС собирает и показывает информацию о пробках. Во-первых, это необходимо для построения оптимальных маршрутов, а во-вторых — такие данные очень нужны пользователям в больших городах.

В 2ГИС сервис пробок появился в сентябре 2011 года и сегодня работает в пяти городах (Новосибирск, Санкт-Петербург, Красноярск, Уфа, Казань). В планах на ближайшее будущее — запустить пробки во всех городах-миллионниках.

Под катом история про то, с какими проблемами мы столкнулись и как их решили.

Читать дальше →
Total votes 56: ↑53 and ↓3+50
Comments20

2000 человек, 3K проектов в год: что такое PPM, и зачем это нужно вам

Reading time9 min
Views37K
image
Пример ресурсного плана, где мы видим распределение сотрудников по задачам на несколько месяцев вперёд. У одного из них будет перегрузка через 3 месяца.

Одна из главных проблем руководителя — это получение актуальной информации о ходе проектов, за результаты которых он отвечает. По моей практике, до внедрения PPM руководители тратят очень много времени просто на то, чтобы проверить, что всё везде идёт по плану. Грубо говоря, 60% рабочего времени может уходить просто на то, чтобы понять, что все справляются, и вмешиваться не надо. С другой стороны, после внедрения PPM всю эту работу делать уже не надо – она делается автоматически системой. А вам только приходят алерты для ситуаций, в которых требуется внимание. Получается удобный и очень практичный инструмент управления по исключениям.

Ниже — короткий ликбез про то, что это вообще такое, когда и для чего внедряется, как суровая российская реальность меняет процессы и несколько советов из практики. И рассказы про 4 самых интересных внедрения из моей практики.
Читать дальше →
Total votes 38: ↑32 and ↓6+26
Comments36

Математический фокус для MP3, JPEG и Гомера Симпсона

Reading time6 min
Views109K
Девять лет назад я посещал курс физики в колледже, и мой профессор рассказал одну вещь, которая поразила меня. Я думаю, не будет преувеличением сказать, что это одно из наиболее широко используемых математических открытий — от оптики до квантовой физики, радиоастрономии, сжатия MP3 и JPEG, рентгеновской кристаллографии, распознавания голоса и МРТ. Этот математический инструмент называется преобразование Фурье, в честь французского физика и математика 18-го века Жозефа Фурье. Им пользовались даже Джеймс Уотсон и Фрэнсис Крик, чтобы декодировать структуру двойной спирали ДНК из рентгенограмм, произведенных Розалиндой Франклин. (Крик был экспертом по преобразованиям Фурье, он в шутку назвал свою книгу «Преобразования Фурье для орнитологов», чтобы объяснить суть Уотсону, заядлому любителю птиц).
Читать дальше →
Total votes 159: ↑145 and ↓14+131
Comments35

Рейтинг постов хаба

Reading time35 min
Views55K

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

Решил посмотреть лучшие посты своего любимого хаба и с ужасом обнаружил, что такой фичи нет.

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

Читать дальше →
Total votes 132: ↑131 and ↓1+130
Comments35

Ежедневная работа с Git

Reading time40 min
Views876K
Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
  • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
  • будет ли менеджер и заказчик удовлетворён этим процессом?
  • будет ли легко работать разработчикам?
  • смогут ли новички быстро включиться в процесс?
  • можно ли процесс относительно легко и быстро изменить?


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

Далее очень много букв случайным образом превратились в пост.
Total votes 200: ↑194 and ↓6+188
Comments44

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?
Total votes 203: ↑192 and ↓11+181
Comments188

Пишем красивый идиоматический Python

Reading time4 min
Views112K

Иногда сложно найти в Сети правильные, а главное актуальные «best practices» для языка. Документация, конечно же, содержит всю необходимую информацию, но отсеять нужную вещь в абзацах подробного (на то она и документация) описания довольно сложно. Но недавно мне улыбнулся поиск Google, и я наткнулся на очень полезные «паттерны» языка Python от одного из core разработчиков — Raymond Hettinger.

Примечание: Все рекомендации даны в нескольких вариантах: сначала идут самые «плохие» варианты, а дальше предлагается лучшая альтернатива. Актуально для версии языка 2.7, отличия для версии 3.3 читайте в примечаниях к конкретному «паттерну».
Читать дальше →
Total votes 125: ↑99 and ↓26+73
Comments71

Эссе на тему «Как стать программистом?»

Reading time5 min
Views124K
Вместо вступления

После открытия публичного доступа к Q&A разделу Хабрахабра появилось множество вопросов по теме «Как стать программистом?». Бесспорно, прекрасно то, что так много людей хотят избрать для себя эту интересную профессию. Многих интересует конкретное направление (web, game development) или язык (PHP, Java, C#, JavaScript, Ruby). Выработать универсальную инструкцию достаточно сложно, если не сказать невозможно. Поделиться с вами своими мыслями по этому вопросу я бы и хотел сегодня.
Читать дальше →
Total votes 41: ↑23 and ↓18+5
Comments38

Промежуточные итоги биржевого стартапа

Reading time6 min
Views27K
Биржа, как стартап. Звучит довольно необычно. Сразу в голову лезет огромное количество юридических моментов, регуляторских замутов и т.д. Казалось бы, просто так не начать.

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

Историю развития такого противостояния/дополнения можно долго расписывать. Но мы остановимся на одном из крайних событий этого фронта: криптовалюты. И даже еще сузим повествование: криптовалютные биржи.

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

Читать дальше →
Total votes 53: ↑45 and ↓8+37
Comments24

Правильные способы исключения файлов в Git

Reading time1 min
Views207K
Иногда встречаю в файле .gitignore то, чего там быть никак не должно. Например, папка .idea, в которой лежат конфиги известных IDE от JetBrains. Это часть вашего рабочего окружения и она никаким боком не относится к проекту и репозиторию. Если над проектом работает несколько человек и каждый из них добавит конфиги своего окружения в .gitignore, то он превратится в нечитаемую помойку.

В этом топике я расскажу о правильных способах исключения файлов и о том когда какой способ использовать.
Читать дальше →
Total votes 98: ↑74 and ↓24+50
Comments68

Введение в OpenSceneGraph

Reading time7 min
Views41K
OpenSceneGraph — это кроссплатформенная библиотека с открытыми исходниками для разработки высокопроизводительных 3D-приложений. Это не игровой движок, связывающий пользователя по рукам и ногам заложенными в него ограничениями, а именно библиотека — набор полезных модулей, которые отлично работают как поодиночке, так и в сборке.



Ядро OpenSceneGraph, собственно граф сцены, — довольно тонкая обёртка вокруг OpenGL, позволяющая задавать иерархию объектов и выполнять над ними любые желаемые преобразования:
  • изменять характеристики узлов (двигать объекты в пространстве, назначать им материалы, свойства освещённости, шейдеры и прочие режимы и атрибуты OpenGL);
  • перестраивать дерево любым желаемым образом (создавать и удалять объекты, перелинковывать их к другим узлам графа);
  • делать обход графа, выполняя для каждого их узлов какие-либо действия;
  • ну и конечно рендерить сцену при помощи OpenGL.

Читать дальше →
Total votes 62: ↑61 and ↓1+60
Comments14

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity