21 марта 2016 г.

CLang API: связь с реальным миром (clang-3.7)

Попробуем теперь использовать получившуюся программу рисования диаграммы наследования с реальным кодом, т.е. взятым из реального мира. Вопрос в том, какой именно код взять? Лучший кандидат для проверки - наша программа рисования, testclang.cpp! Что может быть реальнее? :)

10 февраля 2016 г.

CLang API: рисуем диаграмму наследования (clang-3.7)

Попробуем использовать CLang API для чего-нибудь полезного, например, для рисования диаграммы наследования.

В Clang API уже есть подобный функционал - функция CXXRecordDecl::viewInheritance(). Функция viewInheritance рисует диаграмму наследования для заданного класса используя библиотеку GraphViz. Но делает она это не совсем так, как мне бы хотелось. Поэтому я попробую написать свою собственную процедуру рисования диаграммы наследования, используя программу dot из пакета GraphViz.

3 февраля 2016 г.

CLang API: обход AST (clang-3.7)

Попробуем теперь реализовать обход AST встроенными методами (по мотивам статьи "How to write RecursiveASTVisitor based ASTFrontendActions"). На мой взгляд, реализация этой задачи стала намного проще по сравнению с версией 2.8.

20 января 2016 г.

CLang API: минимальный проект (clang-3.7)

После долгого перерыва я решил вернуться к попыткам использования clang API по нескольким причинам. Во-первых, clang API за это время продвинулся довольно далеко и стал "мощнее", так что хочется попробовать новые версии. Во-вторых, в старых статьях используется более ранние версии clang, а мне регулярно задают вопросы типа "почему у меня не компилируется/линкуется", поэтому хочется и обновить свои знания и добавить статьям актуальности. В-третьих, за пять лет внятных примеров с использованием clang так и не появилось, надо исправить такую несправедливость. Ну и в конце концов меня не оставляет надежда реализовать одну идею со статическим анализом кода, о которой, может быть, напишу позже.

Итак, попробуем написать и собрать минимальный проект для clang API на платформе Linux, используя последнюю стабильную версию llvm и clang. На момент написания статьи это версия 3.7.0.

23 августа 2013 г.

Цитата: Купер

Примечательная статья на Хабре про то, как дети не умеют пользоваться компьютерами, и про то, что это (почему-то) должно нас беспокоить. Это крик души человека, которого достали тупые пользователи, не умеющие настроить браузер для работы через прокси-сервер, а он один тут в белой тунике стоит. Напоминает анекдот про сантехника — "Учись! А то так и будешь всю жизнь ключи подавать."

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

Ну что ж, удачи им всем! Главное — не бояться тунику запачкать.

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

Алан Купер, "Психбольница в руках пациентов"

14 августа 2013 г.

Оптимизация Ubuntu под VirtualBox

Статья на askubuntu.com о том, как повысить производительность Ubuntu при работе в VirtualBox.

How to improve performance of VirtualBox when UNITY_LOW_GFX_MODE is not working?

11 июня 2013 г.

Десять очень полезных возможностей C++11

Хорошая статья на Хабре: Десять возможностей C++11, которые должен использовать каждый C++ разработчик. Название, правда, слегка преувеличенное, хотя менее полезной статья от этого не становится.

В статье обсуждаются такие возможности как:

  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Сам лично я стал постоянно иcпользовать auto, лямбды, static_assert и begin/end. Скажу честно, не понимаю, как жил без них раньше.

2 апреля 2013 г.

++RPi_Owners_Counter

Ну вот, и я стал одним из счастливых обладателей маленького компьютера с малинкой. Ждать пришлось долго, и я уже даже начал терять надежду, когда он (она/оно) всё-таки пришёл. Так что теперь радости моей нет конца :)

Вот он, мой Raspberry Pi Model B 512MB:

В фирменном глянцевом чёрном корпусе он смотрится очень круто:

Я специально заказывал Raspberry Pi, чтобы сделать из него медиаплеер. Уже установил на него OpenELEC с помощью BerryBoot. Смотрю фильмы и фотографии, слушаю музыку... :)

Из минусов - мой Toshiba Regza отказался работать с библиотекой libCEC, максимум, что позволяет - это включать себя и автоматически переключаться на вход HDMI при включении Raspberry Pi. Но я особо не горюю, потому что для Android и iOS есть классные приложения XBMC Official Remote, у которых функциональность получше будет, чем у обычного пульта ДУ от телевизора.

Откорректировал свои наполеоновские планы по захвату мира - собираюсь адаптировать свое приложение Вконтакте, чтобы интегрировать его в XBMC как обычный плагин. Откуда теперь взять свободное время, вот вопрос?

ЗЫ. Про credit-card-size - это, конечно, враньё. Чуть побольше будет.

ЗЫ2. Кстати, сразу профит. С первого апреля провайдер dom.ru перестал транслировать телеканал Дождь по своим кабельным сетям. А для XBMC есть плагин, который тянет канал из интернета - у меня в телевизоре Дождь всё ещё идёт.

5 июня 2012 г.

String Similarity

Очень долго долбался с задачей "String Similarity" с сайта InterviewStreet. И так, и эдак ковырял, но удавалось уложиться только в 8 тестов из 10.

А на самом деле оказалось, что нужно просто применить Z-функцию. Мда, пошел читать букварь... Кстати, не могу найти английское название Z-функции. Если кто знает, напишите, плз.

З.Ы. На Хабре можно почитать хороший разбор алгоритмов поиска подстрок.

23 апреля 2012 г.

Цитата: Линдхольм

Взято отсюда. На языке оригинала цитата звучит лучше, чем в переводе, поэтому оставляю как есть.

Most companies (including web startups) are looking to “wow” with their products, when in reality what they should be looking for is an ‘of course’ reaction from their users.

Christian Lindholm,
Chief Innovation Officer at Fjord

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