Рубрика «c++» - 221

Shareaza — свободный файлообменный клиент и менеджер закачек для Windows с поддержкой протоколов Gnutella, Gnutella2, eDonkey2000, BitTorrent, DC++, FTP и HTTP. Умеет работать с magnet-, ED2K-, piolet- и Gnutella-ссылками, а также со стандартными HTTP- и FTP-ссылками. Переведён на 27 языков.

© Wikipedia

Итак я решил делать случайно-последовательную загрузку в клиенте Shareaza.

Посмотрел код на сайте. http://sourceforge.net/p/shareaza/code/9293/tree/trunk/shareaza/DownloadTransfer.cpp#l375 Судя по всему именно здесь и происходит вся магия. Но до модификаций нужно скомпилировать и установить Shareaza. Об этом и пост.
Читать полностью »

Использовать шаблонные шаблонные параметры С++ довольно сложно. Хочу продемонстрировать силу boost::mpl и показать трюк, позволяющий описывать шаблоны, полностью отказавшись от шаблонных шаблонных параметров.
Продемонстрирую проблему. Есть класс, принимающий тип объекта и тип контейнера для этого объекта.

template <typename T, typename Container>
struct A
{
  typedef Container<T> type;
};

Так писать нельзя, вы должны использовать шаблонные шаблонные параметры, чтобы указать, что Container сам по себе является шаблоном.
Читать полностью »

pointres, gnd

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

Проверить ваш код?
Мы, разработчики анализатора кода PVS-Studio, следим за тем, как более опытные заграничные компании продают свои решения. Про какие-то подходы к продажам мы знаем наверняка, о каких-то можем лишь догадываться. Что-то пытаемся перенять у них, а что-то перенять не можем.

Например, помимо стандартных групп диагностик вроде General Analysis, 64-bit analysis или Optimization у нас в PVS-Studio есть группа под названием Customer's Specific. Туда попадают диагностики, которые нужны нашим клиентам, но которые не подходят под прочие группы диагностик. Выражаясь более художественно можно сказать так. Группа диагностик Customer's Specific является эрогенной зонной нашего продукта. Если ее потрогать (добавить туда какую-то диагностику), то клиенту станет очень приятно. Естественно такой подход к развитию продукта и продаже надо применять очень осторожно, так как конечный клиент не обладает полным видением продукта и не имеет представления о том, куда продукт развивается.

Еще нам нравится, как работает предпродажная команда в компании Coverity. Мы конечно не уверены в этом на 100%, но нам кажется, что они работают примерно так. Если появляется потенциальный клиент, то к нему вылетает спецназ на вертолете, который на месте настраивает окружение, запускает анализатор, внимательно работает со списком диагностических сообщений и т.п. В завершении всего этого для потенциального клиента делается ПРЕЗЕНТАЦИЯ (!), в которой клиенту рассказывают про ошибки, найденные в его проекте, и говорят, что нужно делать, чтобы их не было (купить инструмент, ага). Почему они так делают? Хороший вопрос! Наверное, они считают, что разработчик инструмента может намного более качественно им пользоваться. У него больше опыта, он легче определяет ложные срабатывания и умеет их отсеивать, у него набит глаз на реальные ошибки и он их не пропустит. Это значит, что потенциальные клиенты получат намного больше ярких впечатлений от первого знакомства с продуктом, чем если бы они сами потыкали в нём кнопки.

И мы подумали – а что если нам действовать также как Coverity? К сожалению, спецназ на вертолете мы пока выслать не можем. Но что если мы попробуем проверить код потенциальных клиентов и сами найдем реальные программные ошибки в их проектах? Да еще и сделаем презентацию ну или хотя бы отчет о найденных проблемах? Наверняка тогда больше потенциальных пользователей захочет купить наш инструмент! Но, естественно, никто нам чужой код на сторону не даст, поэтому решили попробовать проверять код потенциальных клиентов в удаленном режиме, подключаясь к их компьютерам из своего офиса. Кому такое интересно – читаем далее.

Читать полностью »

Введение

Эта статья дает представление о работе внешних компонент в системе «1С: Предприятие».
Будет показан процесс разработки внешней компоненты для системы «1С: Предприятие» версии 8.2, работающей под управлением ОС семейства Windows с файловым вариантом работы. Такой вариант работы используется в большинстве решений, предназначенных для предприятий малого бизнеса. ВК будет реализована на языке программирования C++.
Читать полностью »

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

Я расскажу о следующем:

  • что такое перекрестные ссылки;
  • чем опасны безымянные shared_ptr;
  • какие опасности подстерегают при использовании shared_ptr в многопоточной среде;
  • о чем важно помнить, создавая свою собственную освобождающую функцию для shared_ptr;
  • какие существуют особенности использования шаблона enable_shared_from_this.

Читать полностью »

Boost and PVS-Studio

Мы уже давно хотели проверить библиотеку Boost. У нас не было уверенности, что результатов проверки хватит на статью. Однако, желание не пропадало. Два раза мы пытались сделать это, но отступали, не разобравшись, как заменить вызов компилятора на вызов PVS-Studio.exe. Теперь мы вооружились новым инструментарием, и третья попытка оказалась удачной. Итак, возможно ли найти в Boost ошибки?

Читать полностью »

Добрый день.

В ходе разработки своего проекта под Android, столкнулся с задачей делать обновление (update) большого количества строк в SQLite базе, прямо на устройстве.

Изначальное решение в лоб дало жутко медленные результаты, т.к. обновлять предстояло более 40 000 строк. О том, как я улучшал производительности данных обновлений строк в базе, и пойдёт рассказ.
Читать полностью »

Парсер CSS для .NET, написанный на C# (зачёркнуто) регулярных выражениях Понадобилось мне однажды распарсить CSS, чтобы вынуть @import, url(). Но для .NET были только разной степени кривоты поделки. Лучшей библиотекой была ExCSS, но она загибалась на таких тривиальных вещах, как медиа-запросы. Поэтому я решил заполнить пробел.

Были варианты: расковырять Chrome, расковырять Firefox, расковырять левую библиотеку. Нужно было гарантированное качество и регулярное обновление, поэтому последний вариант отпадал. В Chrome парсинг CSS и HTML генерировался на основе грамматик, и беглое изучение разнообразия инструментов для .NET повергло в уныние, что уж говорить о совместимости инструментов, поэтому Chrome отпал. Остался Firefox с вручную написанными парсерами.

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

Я вижу косые взгляды. У кого-то уже тянется рука набирать 03…

Читать полностью »

Постоянно программируя на C++/Qt, я заметил, что было бы удобнее хранить где-нибудь свои отрывки кода и иметь к ним быстрый доступ. Конечно же, я принялся искать и нашёл множество готовых программ-органайзеров и сайтов. Я перепробовал их, но меня всё это не устроило.

Хотелось именно быстрого доступа — а значит по глобальным хоткеям. Чтобы нажал — ввёл слова в поиск — получил код. Но такими функциями обладали всего две программы, а они были платными и не кроссплатформенными.

Поэтому я взялся написать свою программу на Qt. Она оказалась настолько удобной, что я уже не представляю свой кодинг без неё и конечно же решил её опубликовать — вдруг кому ещё пригодится? Под катом расскажу о проблемах и задачах, которые пришлось решить, выложу свой опыт, а также обзор самой программы и её исходного кода.
Сверхбыстрое копирование\вставка фрагментов кода
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js