Рубрика «Программирование» - 906

Маскируем класс под граф Boost. Часть 2: Завершаем реализацию поддержки концепций
Пролог: Концепции Boost
Часть 1: Подключение ассоциированных типов без вмешательства в интерфейс исходного класса

Кратко напомню задачу. Есть двумерное игровое поле из клеток, часть из которых свободна, а часть занята. Требуется найти путь по свободным клеткам из одной позиции поля в другую. Алгоритм поиска пути реализован в Boost. Но он требует, чтобы наше поле подходило под определение графа. Точнее класс должен удовлетворять двум концепциям — boost::VertexListGraph и boost:: IncidenceGraph. При этом интерфейс игрового поля менять не хочется — для всего остального проекта это не граф и графом никогда не станет.

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

Если вы пользовались редактором исходного кода Geany, то наверняка сталкивались с плохо предсказуемым поведением стандартного автозакрытия скобок и кавычек. Если не пользовались — рекомендую попробовать.

Geany замечательный редактор, но на протяжении всей его истории автозакрытие работало так:

func())

или так:

func()
{
    }}

Настало время поставить крест на ручной расстановке скобочек. Встречайте, новый режим автозакрытия в Geany:

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

Замечательная новость от парней с Ижевска, совсем недавно началась рассылка устройств инвесторам с Kickstarter. Сегодня же новый Lightpack стал доступен в российском мазаине по цене 2999 р. Причем цена ниже международной, и в цену уже включена доставка EMS. Я писал обзор по прошлой ревизии устройства и со стороны пользователя различий там немного. Из нововведений это поддержка Android, но пока в тестовом режиме.
Lightpack поступил в продажу в России
Читать полностью »

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

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

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

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

В конце этой статьи будет ссылка на исходный код сервера, который я протестировал в Visual Studio 2012 (Windows 8 64bit), g++4.4 (Linux 32bit), g++4.6 (Linux 64bit). Сервер принимает соединения от любого количества клиентов и отправляет в ответ заголовки запроса.
Но начну я статью пожалуй, с ответов на некоторые комментарии к предыдущим.
Читать полностью »

image

О переводе

Это перевод 22-ой главы книги «The Passionate Programmer: Creating a Remarkable Career in Software Development». Её автор — Chad Fowler — талантливый Ruby-разработчик, известный докладчик на конференциях, посвящённых Ruby и IT в целом. Бывший саксофонист, а сейчас — CTO 6Wunderkinder.

Над главой работали…

shchemelevev перевод
@SavinaMarina проверка перевода
asheee редактирование перевода
shchemelevev вычитка
rb2 вычитка
asheee вычитка
Содержание

22. Помни, на кого работаешь

Легко сказать: «Проверь, совпадают ли цели, над достижением которых ты трудишься, и цели, стоящие перед бизнесом твоей компании». Но сделать это на порядок сложнее. Особенно если ты — глубоко зарытый в недрах организации программист, с трудом понимающий, чем занимается твоя компания.

В начале своей карьеры я работал над системой бухгалтерского учёта в организации, которая занималась грузоперевозками. Организация была огромна. Из-за сложнейшей внутренней иерархии я не мог разглядеть в своей работе ничего, что было бы хоть немного связано с доставкой грузов. Я не могу забыть те чувства отчуждённости и отстранённости, которые возникали у нашей команды на всех корпоративных праздниках, проводившихся под конец каждого квартала. Какое достижение мы праздновали? Что значили все те метрики?

К счастью, в те времена меня больше интересовало создание первоклассных систем, а кроме того, я много времени проводил за изучением исходного кода различных open-source продуктов (признаюсь, я всё ещё трачу много времени на эти вещи). Вряд ли я хоть немного задумывался об устройстве бизнеса грузоперевозок. Но если бы я и вправду захотел согласовать свою работу с потребностями организации, едва ли я знал бы, с чего стоит начинать.
Читать полностью »

Иногда я проверяю свою рабочую почту и вижу там сообщение «Анонс доклада: Вершиннная эллиптическая криптография в N-сторонних Бананотряховых[1] пространствах». Я смотрю аннотацию и там говорится что-нибудь типа «Хорошо известно, что 5-сторонний обмен секретами нелегален со времён Протестантской Реформации [Лютер1517]. Однако, используя новые результаты в области исполняющихся за полиномиальное время Бананотряховых проекций, мы показываем, как множество корреспондентов, притворяющихся друзьями (но являющихся противниками)[2], могут послать друг другу вплоть до 5 ехидных язвительных замечаний, устойчивых к атакам с использованием выбранным по Бананотряху открытого текста сообщения». Такое чувство, что началась середина трагичной, но вряд ли интересной оперы. По какой именно причине нас только что засунули в эллиптический мир? Кто именно такой этот Бананотрях, и почему нам не пофигу, какой он там открытый текст выберет? Если потому, что он похитил наши семьи, можно мне хотя бы обменяться сообщениями с похищенной роднёй, и если да, обязательно ли сообщения должны быть ехидными и язвительными?
Читать полностью »

Предыстория

Всё началось с того, что кто-то постоянно брал мой планшет, причём без моего ведома. Планшет ASUS VivoTab Smart с Windows 8 на борту. Было решено сделать на рабочем столе фейковый ярлык, запускающий скрипт, который сделает фотки с камеры, скриншот экрана, отправит всё это дело на мой e-mail, а потом, как ни в чем не бывало, запустит проводник.
Читать полностью »

Эта статья является продолжением статей:
Простейший кросcплатформенный сервер с поддержкой ssl
Кроссплатформенный https сервер с неблокирующими сокетами
В этих статьях я постепенно из простенького примера, входящего в состав OpenSSL стараюсь сделать полноценный однопоточный веб-сервер.
В предыдущей статье я «научил» сервер принимать соединение от одного клиента и отсылать обратно html страницу с заголовками запроса.
Сегодня я исправлю код сервера так, чтобы он мог обрабатывать соединения от произвольного количества клиентов в одном потоке.
Читать полностью »

Думаю, мало кто из готовящихся к своему первому интервью, при приеме на первую работу в должности (pre)junior программиста, ответит на этот вопрос отрицательно. Или хотя бы усомнится в положительном ответе. Конечно, такая простая структура данных с прямым доступом по индексу — никаких подвохов! Нет, в некоторых языках типа JavaScript или PHP массивы, конечно, реализованы очень интересно и по сути являются много большим чем просто массив. Но речь не об этом, а о «традиционной» реализации массивов в виде «сплошного участка памяти». В этом случае на основании индексов и размера одного элемента просто вычисляется адрес и осуществляется доступ к соответствующему значению. Что тут сложного? Читать полностью »


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