Метка «С++»

Хабр глазами IТ-евангелистов / Хабрахабр
Читать полностью »

Почта Mail.ru научилась сортировать письма почти как Gmail — автоматически выбирать из потока «Входящих» письма категорий «Скидки», «Социальные сети», «Рассылки», говорится в сообщении компании.

Очень похожий функционал есть у Gmail — почта от Google тоже умеет самостоятельно разбивать письма на «Соцсети», «Промоакции», «Форумы» и «Оповещения». В Mail.ru, впрочем, видят существенное отличие от Gmail:

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

Привет!

Хочу рассказать о быстром частотном анализе текста на С++, практически без применения головы и алгоритмов.
Иногда такое задание часто дают на контрольной по программированию в каком-нибудь МИРЭА, или МИФИ.
Читать полностью »

image

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

SQLitePCL может быть использована для реализации локальной базы данных в приложениях для Windows, Windows Store, Windows Phone, Android (Xamarin) и iOS (Xamarin). Она бесплатна и ее код открыт для всех желающих.

Я проверила ее в действии, чем и хочу с вами поделиться.
Читать полностью »

Ох и давненько мы не радовали читателей чем-нибудь свеженьким — за это время накопилось много того, чем делиться хочется. И мы не будем себя в этом сдерживать!

Эта статья будет интересна скорее разработчикам, ну а также всем тем, кто неравнодушен к прекрасному, происходящему по ту сторону игр.

У нас много новостей: мы серьезно выросли за этот период и перешагнули отметку в 80 человек, захватили практически весь этаж в БЦ и по традиции дали нашим художникам возможность оформить новое пространство с присущим им вкусом:

image

Выпустили Cut The Rope “Time Travel” и Cut The Rope 2 c уже всемирно полюбившимися персонажами:

image

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

Сейчас у нас ведется разработка никак не связанных с Cut The Rope игр, которые свет увидит чуть позже (пока сохраним интригу).

За прошедший год мы существенно доработали и обкатали внутренний фреймворк, позволяющий писать весь игровой код на С++ и собирать билды сразу под iOS и Android. Также за прошедший год мы стали активно использовать возможности C++11, и, несмотря на очевидное количество legacy-кода в самом фреймворке, использование возможностей C++11 в проектном коде новых тайтлов становится нашим стандартом. Параллельно мы рассматриваем прочие средства разработки, например Unity. Однако, в нашем фреймворке есть ряд приимуществ, отказываться от которых так просто не хочется.Читать полностью »

В предыдущей статье я рассказал, как написать простой сервер для передачи одного файла по протоколам http и https. Прошло немного времени и я решил сделать из этого кода универсальную библиотеку для быстрого создания серверов.

Полный код библиотеки можно посмотреть на гитхабе, а если в двух словах, то я добавил немного «египетских скобок», новомодных лямбда-функций и шаблонов. На сегодняшний день результатом стала кроссплатформенная библиотека для создания асинхронных серверов, состоящая из 5 файлов с общим размером 22.5 килобайт. Версия библиотеки для Линукс состоит из одного файла размером 18 килобайт (517 строк кода).

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

Множественный выбор в QComboBox
Картинка для привлечения внимания
(возможно имеющая отношение к посту)

Иногда, довольно удобным бывает возможность множественного выбора в виджете QComboBox. В этом небольшом туториале будет показано, как это cделать.
Читать полностью »

Эта статья продолжает мои предыдущие:
Простейший кросcплатформенный сервер с поддержкой ssl
Кроссплатформенный https сервер с неблокирующими сокетами
Кроссплатформенный https сервер с неблокирующими сокетами. Часть 2
Кроссплатформенный https сервер с неблокирующими сокетами. Часть 3

В своих статьях я поэтапно расписываю процесс создания однопоточного кроссплатформенного сервера на неблокирующих сокетах.
Во всех предыдущих статьях, сервер принимал и отправлял сообщения только по ssl протоколу. В этой статье я опишу добавление в сервер поддержки обычного нешифрованного tcp протокола и научу сервер отправлять в браузер графический файл.
Но сначала немного пройдусь по комментариям к предыдущим статьям.
Читать полностью »

После нашей удачной первоапрельской шутки нас регулярно спрашивают, когда же мы выпустим C++ IDE. Понятно, что все, кто пишет под Linux, давно ждут такую среду разработки, да и альтернатива имеющимся в Windows и Mac OS никому не помешает.

C++ IDE — это отдельный продукт, она основана на платформе IntelliJ, как и прочие наши IDE. Поддержка C++ в ReSharper — это совершенно другая тема, и про нее мы отдельно напишем (не сегодня).

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

О вольностях в ссылках или простейший обмен сообщениямиОбмен сообщениями достаточно фундаментальная вещь в науке Computer Science. Будем рассматривать её в приближении к событийно-ориентированному программированию (event-driven). Терминология, возможности и реализации могут отличаться: события (events), сообщения (messages), сигналы/слоты (signals/slots) и callbacks. В целом суть, что с приходом события запускается ответная реакция.
Сама система обмена сообщениями в статье послужила демонстрацией вольной, но допустимой интерпретации ссылок/указателей, упрощающей код. Получившаяся система тривиальна и умеет только регистрировать обработчик на определённый код сообщения и посылать сообщения с таким кодом.
Допустим что обработчики нетривиальные, а сообщений немного. И что мы сами генерируем сообщения и они не приходят нам по сети, например. В таком случае хочется иметь что-то более удобное с явными объявлениями переменных в сообщении. Например, нечто подобное:

StringMessage* str_message = ...;
send(my_message);
...
void handle_message(const Message* message) {
	assert(message);
	const StringMessage* str_message = dynamic_cast<const StringMessage*>(message);
	assert(str_message);
	std::cout << str_message->message ...
}

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

void handle_message(const StringMessage& message) {
	...
}

Как осуществить задуманное и поддержать другие возможные классы сообщений?
Читать полностью »