Метка «c++» - 72

Рождение и развитие Unix
Томпсон (сидит) и Ритчи работают на PDP-11, 1972 год.

Период 1968-69 гг. был достаточно неопределенным для Bell Labs: проект операционной системы с разделением времени Multics (Multiplexed Information and Computing Service), разрабатываемый с 1964 года для дорогой 36-битной ЭВМ GE-645, не имел четких перспектив и целей, а лишь разрастался в размерах и сложности, всё ясней был виден его предполагаемый провал. В конце концов, American Telephone & Telegraph вышла из проекта, в который за пять лет были вложены миллионы долларов.

Однако, некоторые из инженеров, работавших над Multics — Кен Томпсон, Деннис Ритчи, Малкольм Дуглас Макилрой, Джозеф Оссанна — ощущали необходимость в продолжении работы над подобным проектом, и не хотели терять ту уютную рабочую атмосферу, которая успела сформироваться. Поэтому во время 1969 года они начали искать альтернативу Multics: Оссанна, Томпсон, Ритчи пытались протолкнуть покупку машины средней мощности, для которой группа обещала написать операционную систему. Предлагаемые ЭВМ DEC PDP-10 и Sigma 7 не были приобретены, и хотя несколько раз ситуация была на грани получения нужного оборудования, было вполне очевидно, что команда просит слишком крупную сумму для проекта с расплывчатым планом, тем более, что после провала Multics операционные системы стали не настолько привлекательной сферой. Поэтому Томпсон (в основном это была его задумка), Кэнэдэй и Ритчи (привнесший идею файлов-устройств) разработали на обычных черных учебных досках и бумагах устройство файловой системы, которая позже стала сердцем Unix.Читать полностью »

Долгожданные итоги конкурса сил Android и iOS developer-ов на место в Dream-Team команде ZeptoLab, наконец, подведены. За эти полгода мы что обещали – сделали: подросли в 2 раза и концептуально оформили нашу обитель:
image

Как это было Читать полностью »

imageПоследние 5-7 лет мы все наблюдаем явление, которое аналитики называют консьюмеризацией ИТ. Не вдаваясь в историю и подробности этого явления, характерного не только ИТ-отрасли, стоит отметить главное – именно «консьюмеры» сегодня создают львиную долю пресловутой добавленной стоимости – иногда своим большим числом, иногда – способностью и желанием переплачивать за новинки и вообще интересные идеи.
Операционная система Windows, получившая тотальное распространение на волне консьюмеризации середины девяностых годов, планомерно развивалась до середины «нулевых», когда персонализация вычислений получила новый мощный толчок – настоящую мобильность и доступность.
Читать полностью »

Введение

Не раз сталкивался в своей практике с компонентными моделями, которые как-то, хоть и отдаленно, а некоторые и весьма сильно напоминают реализацию MS COM'а. Многие компании имеют в своем арсенале подобные вещи, используемые в разработке продуктов компании. В некоторых компаниях это «допиленная» реализация MS COM'а для собственных нужд, в некоторых своя, написанная с нуля и, конечно же, кроссплатформенная, так как кроссплатформенность -это, пожалуй, один из самых весомых аргументов перед начальством на выделение ресурсов, когда кто-то решил написать что-то подобное, а писать подобные вещи всегда интереснее, чем повседневную логику и т.д. Так же и сам написал под нужды одного из проектов некоторую модель, смотрящую одним глазом на — MS COM. Нужды проекта привели к реализации модели, которая могла существовать только в рамках одного процесса и все компоненты могли жить в динамических библиотеках (dll/so) так же как и COM InProc сервера. Как некоторая переработка и выделение только самого необходимого для обеспечения компонентности было опубликовано в моей предыдущей статье Попытка написания своей компонентной модели на C++.
Реализовав пару подобных InProc моделей появилось желание написать нечто, что переступает границу процесса, т.е. модель с использованием IPC, к тому же в комментариях к предыдущей статье именно этого и хотели видеть другие участники.
Немного забегая вперед, скажу, что статья не является описанием некоторой законченной компонентной модели с поддержкой IPC/RPC, а всего лишь описывает некоторую идею реализации Proxy/Stub'ов. Самого же IPC в приведенной реализации не будет, тесты будут проведены в рамках одного процесса. Идея доведена до момента, когда вызов Proxy формирует некоторый буфер для отправки в другой процесс, а Stub на основе буфера вызывает соответствующий метод реализации. Если проложить некоторый транспорт для передачи этого самого буфера, то уже получится законченная модель.
Вся реализация построена на шаблонах и макросах. Да, макросах! Макросы — это зло, но в данном случае некоторые вещи без них не получатся.
Итак, господа эстеты, если Вам все же интересно и вы не испытываете большой неприязни к шаблонам и дурно пахнущим макросам, то Читать полностью »

Добрый день, уважаемыее. Представляю вашему вниманию свой небольшой проект – сетевой 2D-шутер на C#. Несмотря на то, что визуальная составляющая весьма простая – в наш век уже никого не заинтересуешь 2D-играми, некоторые архитектурные решения могут заинтересовать людей, собирающихся написать свою игру. В статье я расскажу о вариантах реализации ключевых моментов игры.
Читать полностью »

Привет, уважаемый читатель!

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

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

Паттерн Singleton появился, пожалуй, как только появились статичные объекты. В Smalltalk-80 так был сделан ChangeSet, а чуть в самых разных библиотеках стали появляться сессии, статусы и тому подобные объекты, которых объединяло одно — они должны были быть одни-единственные на всю программу.

В 1994 году вышла известная книга «Паттерны проектирования», представив публике, среди 22-х прочих, и нашего героя, которого теперь назвали Singleton. Была там и его реализация на C++, вот такая:
Читать полностью »

Transport Tycoon Deluxe / Emscripten ч. 2Transport Tycoon (Транспортный магнат) — изрядно древняя, но до сих пор доставляющая, особенно маньякам, игра в жанре экономической RTS. /.../

Также существует OpenTTD, открытый продукт маньяццтва unixоидов, вследствие чего от игры можно не отвлекаться даже в сортире и метро, установив её на коммуникатор или КПК. © lurkmore
Читать полностью »

Недавно мой студент и я пытались понять одну тонкость в стандарте C. Самый простой способ прояснить подобные вопросы — это узнать, учли ли её разработчики компиляторов, то есть написать код и посмотреть, что с ним будут делать разные компиляторы.

Я написал такую функцию:

int foo (char x) {
  char y = x;
  return ++x > y;
}

Так как ++x увеличивает на 1 значение x, очевидно, что функция должна возвращать "1" для большинства значений x. Вопрос состоит в том, что она вернет для значения CHAR_MAX?

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

Автор: Alexander Sandler, оригинал статьи (27 мая 2009)

Введение

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


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