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

Комплект компилятора Microsoft C/C++ 7.0 с Windows SDK с документацией весил 18 кг и занимал коробку длиной 60 см

Время на прочтение 1 мин
Количество просмотров 3.6K
Управление разработкой *История IT IT-компании Подготовка технической документации *


До появления интернета или начала его широкого применения во всем мире программное обеспечение для разработчиков включало множество печатных руководств и инструкций от производителей, помимо простого комплекта дискет или компакт-дисков и ссылок, где можно скачать нужные руководства. Тогда была эра печатной документации на тысячах страниц, что приводило к очень «тяжёлым» выпускам программного обеспечения. Команда разработчиков документации для Windows решила спросить архивариуса Microsoft Эми Стивенсон о том, какой программный продукт был самым большим.
Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 5

Google рассказала об итогах внедрения в платформу Android 13 поддержки разработки на Rust

Время на прочтение 2 мин
Количество просмотров 2.2K
Программирование *Совершенный код *Разработка под Android *C *Rust *

Инженеры Google поделились первыми итогами внедрения в платформу Android поддержки разработки на языке Rust. По их словам, около 21% от добавленного нового компилируемого кода написано на Rust, а 79% — на C/C++. 

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

Начался приём заявок на конкурс цифровых портфолио «Талант НТО»

Время на прочтение 2 мин
Количество просмотров 235
Учебный процесс в IT Конференции IT-компании

Национальная технологическая инициатива (НТИ) открыла приём заявок на конкурс цифровых портфолио «Талант НТО». Победители и призёры конкурса получат до 10 дополнительных баллов к ЕГЭ при поступлении в ведущие вузы России, сообщило агентство ТАСС со ссылкой на пресс-службу Кружкового движения НТИ. До 15 апреля 2023 года школьники могут загрузить на платформу результаты участия в различных олимпиадах, хакатонах, технологических соревнованиях и конкурсах, проектных школах и онлайн-курсах.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 0

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

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


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

Практика работы со временем в разных часовых поясах в unix-like системах

Время на прочтение 4 мин
Количество просмотров 3.7K
C++ *
Из песочницы
Если ваше приложение зависит не только от локального времени, но и от его представлении в других часовых поясах, вы наверняка сталкивались со сложностью представления времени в разных временных зонах. Не сталкивались? Значит вы не портировали своё приложение в мир Unix.

Действительно, в ОС Windows для работы с временными зонами программисту предоставляется удобный набор специализированных функций WinAPI. Примером могут служить структура TIME_ZONE_INFORMATION и функция GetTimeZoneInformation к ней в придачу.

Но что делать, если вам необходимо знать смещение относительно UTC+0, правила перехода на «летнее время», учитывать при этом високосные годы с високосными секундами и прочую специфическую информацию для какого-нибудь региона, да всё это в unix-подобных операционных системах? Статья посвящена практике работы со всем этим барахлом на языке C/C++.
Читать дальше →
Всего голосов 20: ↑18 и ↓2 +16
Комментарии 1

Релиз NetBeans IDE 7.2 Beta

Время на прочтение 2 мин
Количество просмотров 3.2K
Разработка веб-сайтов *


Сегодня всех любителей IDE NetBeans порадовали новым релизом, содержащим довольно много интересных и очень полезных новшеств.

Пока новая версия IDE в состоянии Beta (релизную обещают в июне), но, как говорят сами разработчики, зачем ждать, если новыми возможностями можно воспользоваться уже сегодня?

Наиболее значимые изменения включают в себя поддержку различных PHP фреймворков, улучшенную поддержку Groovy, интеграцию Scene Builder в JavaFX, а также множество других улучшений в Java EE, Maven, C/C+ + и платформы NetBeans. Назовем наиболее интересные из них.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 29

Асинхронные запросы к MySQL на API (libmysqlclient)

Время на прочтение 3 мин
Количество просмотров 6.1K
MySQL *C++ *C *
Так получается, что сейчас тружусь над планировщиком для MySQL соединений. И тут недавно пришлось покапаться в документации/блогах и т.д. И вот решил поделиться с сообществом как реализовать асинхронные запросы к MySQL серверу на С++ используя API и библиотеку libmysqlclient.

Читать дальше →
Всего голосов 24: ↑21 и ↓3 +18
Комментарии 46

Релиз NetBeans IDE 7.2

Время на прочтение 1 мин
Количество просмотров 7.6K
Разработка веб-сайтов *


Хорошая новость для всех Java, C/C++ и PHP — разработчиков: вчера, 25 Июля 2012, состоялся релиз очередной версии IDE NetBeans 7.2!

Наиболее значимые изменения:

  • Улучшена производительность
  • Интеграция FindBugs
  • Интеграция JavaFX Scene Builder
  • Различные улучшения в редакторе Java
  • Расширение возможностей Java EE
  • Поддержка PHP 5.4 и пр.
  • Обновлена поддержка Groovy и Grails Support
  • Поддержка TestNG
  • UPD: Поддержка аннотаций в PHP
  • Поддержка PHP-фреймворков Symfony2, Doctrine2 и ApiGen


Более подробно об изменениях можно почитать здесь.

Ссылка на страницу загрузки.
Читать дальше →
Всего голосов 29: ↑22 и ↓7 +15
Комментарии 46

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

Время на прочтение 32 мин
Количество просмотров 192K
Программирование *
Из песочницы
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

О модульности, хорошей архитектуре, внедрении зависимостей в С/C++ и разноцветных кружочках

Время на прочтение 18 мин
Количество просмотров 41K
Программирование *C++ *C *
Не в совокупности ищи единства, но более – в единообразии разделения.
Козьма Прутков


Немного воды вначале


Нельзя не заметить, что аспектно-ориентированное программирование с каждым годом берет новые рубежи популярности. На хабре было уже несколько статей посвященных этому вопросу, от Java до PHP. Пришло время обратить свой взор на С/C++. Теперь я в первом же абзаце признаюсь, что речь пойдет не об «настоящих аспектах», но о чем-то, близко с ними связанном. Также рассуждение будет вестись в контексте embedded-проектов, хотя описываемые методы могут применяться где угодно, но именно embedded, это та область, где эффект будет максимально ощутимым. Еще я буду использовать слова «хидер» и «дефайн» для обозначения, соответственно, «заголовочного файла» и «макроопределения». Сухой и академичный язык это хорошо, но в данном случае, мне кажется, все будет проще понять, если пользоваться устоявшимися англицизмами.
Читать дальше →
Всего голосов 46: ↑44 и ↓2 +42
Комментарии 35

Третья проверка кода проекта Chromium с помощью анализатора PVS-Studio

Время на прочтение 19 мин
Количество просмотров 34K
Блог компании PVS-Studio C++ *Google Chrome
Браузер Chromium очень быстро развивается. Например, когда в 2011 году мы впервые проверили этот проект (solution), он состоял из 473 проектов. Сейчас, он состоит уже из 1169 проектов. Нам было интересно, смогли ли разработчики Google сохранить высочайшее качество кода, при такой скорости развития Chromium. Да, смогли.
Читать дальше →
Всего голосов 143: ↑132 и ↓11 +121
Комментарии 58

Обновился Google Testing Framework

Время на прочтение 1 мин
Количество просмотров 5K
Тестирование IT-систем *C++ *
Recovery mode
На днях обновился Google Testing Framework до версии 1.7.0.
В новой версии:
* Новая функция: death-тесты поддерживаются на OpenBSD и в IOS Simulator;
* Новая функция: Test :: RecordProperty () теперь может быть использована за пределами тестового метода;
* Новые возможности: — gtest_list_tests теперь печатает параметры-типы и параметры-значения для каждого теста;
* Улучшение: указатели char и массивы символов теперь обрабатываются корректно;
* Улучшение: отчеты об отказах в XML файлах теперь содержат номер строки и файл;
* «Potentially breaking change»: RUN_ALL_TESTS () теперь реализована в виде функцим вместо макроса для того, чтобы лучше работать с Clang;
* Исправления совместимости с C++ 11 и различных платформ;
* и другое.

Оригинал здесь.
Всего голосов 17: ↑11 и ↓6 +5
Комментарии 0

Конечный автомат (он же машина состояний) на чистом С

Время на прочтение 5 мин
Количество просмотров 122K
Алгоритмы *C *
Из песочницы
Почти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память и вообще какала бабочками.
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).

Собственно через регулярные выражения я к ним и пришёл.
Читать дальше →
Всего голосов 51: ↑48 и ↓3 +45
Комментарии 50

Использование альтернативного аллокатора памяти в проекте на C/C++

Время на прочтение 4 мин
Количество просмотров 17K
Программирование *C++ *C *
Из песочницы
Эта статья написана прежде всего для программистов C/C++, использующих в своей работе Visual Studio 2013. Поскольку я, как говорится, totally windows guy, то я не могу оценить полезность этой статьи для программистов, не использующих эту среду в своей работе. Итак.

Не секрет, что стандартный аллокатор new/delete/malloc/free в языке C/C++ не блещет быстродействием. Конечно, всё зависит от реализации, но, если говорить об оной от компании Microsoft, то это факт. Кроме того, стандартная реализация аллокатора обладает еще одним фатальным недостатком — фрагментацией памяти. Если в вашей программе происходят частые выделения/освобождения памяти, вы можете обнаружить, что спустя несколько часов работы ваша программа упала по причине нехватки памяти, хотя свободной памяти еще достаточно — просто в результате фрагментации в пуле аллокатора не осталось свободного участка достаточного размера. (Это, кстати, абсолютно реальный случай, который произошел на одном из проектов, в котором я принимал непосредственное участие.)
И что же делать?
Всего голосов 27: ↑20 и ↓7 +13
Комментарии 40

PVS-Studio: новый триальный режим

Время на прочтение 5 мин
Количество просмотров 12K
Блог компании PVS-Studio
PVS-Studio
Мы временами экспериментируем с триальным режимом, чтобы знакомство с анализатором PVS-Studio проходило как можно эффективней. Сейчас мы вновь поменяли формат триальной версии. Эта заметка должна ответить на все вопросы, которое могут возникнуть у разработчиков, пожелавших познакомиться с нашим инструментом. Фактически эта статья является ответом на вопрос «можно ли попробовать демонстрационную версию и какие в ней ограничения?».
Читать дальше →
Всего голосов 34: ↑23 и ↓11 +12
Комментарии 62

Мы закрываем проект CppCat

Время на прочтение 6 мин
Количество просмотров 48K
Блог компании PVS-Studio C++ *Visual Studio *C *Разработка под Windows *
CppCat RIP

Чуть больше года назад, мы решили провести эксперимент и выпустить альтернативу статического анализатора кода PVS-Studio для маленьких команд и индивидуальных разработчиков. Так появился очень недорогой анализатор под названием CppCat. Сейчас можно подвести итоги этого эксперимента и признать, что он оказался неудачным. За срок чуть более года он принёс приблизительно столько денег, сколько было потрачено на его разработку, продвижение и поддержку. Таким образом проект убыточен. Ведь потраченное время (самый ценный ресурс) мы могли бы использовать для совершенствования PVS-Studio. Мы вынуждены закрыть проект CppCat и сосредоточиться на PVS-Studio. Надеюсь, читателям будет интересен чужой опыт в реализации новой бизнес идеи. Негативный опыт — это тоже полезный опыт.
Читать дальше →
Всего голосов 131: ↑100 и ↓31 +69
Комментарии 169

PVS-Studio — приглашаем послушать и посмотреть

Время на прочтение 1 мин
Количество просмотров 4.3K
Блог компании PVS-Studio
PVS-Studio PHDays, SDCast
Так получилось, что на днях Андрей Карпов принял участие в Positive Hack Days и выступил там с докладом. А Евгений Рыжков стал гостем SDCast'а, и в результате чего получился 40-минутный подкаст. В обоих случаях речь идёт о статическом анализе кода вообще, и анализаторе PVS-Studio в частности. Если Вам интересна эта тематика, то приглашаю под habracut, где можно узнать чуть больше деталей и увидеть ссылки на эти материалы.
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 2

Идеальный путь внедрения статического анализатора кода

Время на прочтение 20 мин
Количество просмотров 6.7K
Блог компании PVS-Studio Разработка веб-сайтов *C++ *C *Разработка под Windows *
Apple II emulator for Windows
Одной из основных сложностей при использовании инструментов статического анализа является работа с ложными срабатываниями. Существует множество способов устранить ложные срабатывания, используя настройки анализатора или изменяя код. Я взял маленький проект Apple II emulator for Windows и покажу, как можно на практике работать с отчётом статического анализатора PVS-Studio. Покажу на примерах, как править ошибки и подавлять ложные срабатывания.
Читать дальше →
Всего голосов 24: ↑17 и ↓7 +10
Комментарии 16

Управление памятью: Взгляд изнутри

Время на прочтение 26 мин
Количество просмотров 65K
C++ *Системное программирование *
Перевод

Доброго времени суток!
Хочу представить вашему вниманию перевод статьи Джонатана Барлетта (Jonathan Bartlett), который является техническим директором в компании New Medio. Статья была опубликована 16 ноября 2004 года на сайте ibm.com и посвящена методам управления памятью. Хотя возраст статьи достаточно высок (по меркам IT), информация в ней является фундаментальной и описывает подходы к распределению памяти, их сильные и слабые стороны. Всё это сопровождается «самопальными» реализациями, для лучшего усвоения материала.

Аннотация от автора
Решения, компромиссы и реализации динамического распределения памяти
Получите представление о методах управления памятью, которые доступны Linux разработчикам. Данные методы не ограничиваются языком C, они также применяются и в других языках программирования. Эта статья даёт подробное описание как происходит управление памятью, на примерах ручного подхода (manually), полуавтоматического (semi-manually) с использованием подсчёта ссылок (referencing count) или пула (pooling) и автоматического при помощи сборщика мусора (garbage collection).

Читать далее...
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 3

Intel® Tamper Protection Toolkit — обфусцирующий компилятор и средства проверки целостности кода

Время на прочтение 15 мин
Количество просмотров 10K
Блог компании Intel Программирование *C++ *Компиляторы *C *

Совсем недавно компания Intel выпустила очень интересный набор инструментов для разработчиков программного обеспечения, позволяющий добавить защиту программного кода от взлома и существенно усложнить жизнь взломщикам программ. Этот набор включает в себя обфусцирующий компилятор, средство для создания файла подписи, используемого для проверки целостности загружаемых динамических библиотек, а также библиотеку функций проверки целостности и дополнительные полезные инструменты. Intel® Tamper Protection Toolkit beta можно совершенно бесплатно скачать на сайте Intel.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 17