Как написать на C++ компонент для Firefox, так, чтобы его потом можно было использовать из яваскриптового extension или даже из обычной веб-страницы.
А по другому как то можно?
2 мин
458Не, развернутый пост писать мне лениво. Итак, если вдруг кто-то что то увидит в моих размышлениях — плюсуйте, или минусуйте, (слова то какие страшные:). Собсно о чем я: вопрос: зачем мы уже пару десятков лет объясняем на разных языках различным процессорам КАК мы хотим выполнить задачу? Причем делаем это миллионы раз, объясняя тупым процессорам на множестве языков программирования ЧТО мы хотим в итоге получить. Причем одни и те же задачи решались уже миллионы раз.
Различные фреймворки конечно же решают общие задачи достаточно просто, но в итоге приходится одни и те же простейшие задачи решать снова и снова. А тогда нафига нам вообще компьютеры, если мы все делаем сами?.. Может пора научить эти устройства, которые мы приручили, самостоятельно принимать простые решения, а не объяснять им снова и снова что мы от них хотим? Вообще это скорее крик души, я честно говоря уже устал писать программы на традиционных языках программирования, снова и снова объясняя моему любимому ПК банальные вещи: smart pointers, ссылки, константные ссылки, указатели, виртуальные функции, стек/динамическая память. С чего вдруг мне обо всем этом заботиться?
Возьмем простую задачу: распарсить XML файл и вывести все имена тэгов на экран. Варианты решения: бесконечно много. Можно использовать множество языков программирования, можно на каждом из них написать совершенно разный код. Скорость работы этих решений: стесняюсь оценить,
может различаться на 1-2-10 порядков. А задача то ведь сверх простая, чтобы достичь максимальной эффективности нужно всего то правильно написать несколько строк(наверное, десятков строк) ассемблерного кода.
Но ведь дело даже не в этом. Сколько, продолжая тот же пример, написано XML парсеров? А ведь логика там одна и та же. И та же «грамматика», очень много общего. А почему бы не сказать нашей любимой платформе, что такое XML по сути. Чтобы он знал, что такое XML, с чем его едят, с чем не едят и т.д. И получив его на входе сам бы преобразовывал его к нужному выходу, получив задачу ЧТО нужно сделать и самостоятельно решая задачу КАК делать.
ЗЫ. XML приведен для очень грубого и простого примера, просьба XML в каментах не трогать:)
ЗЫЫ. Первый пост, не судите строго, я исправлюсь, может быть:)
Различные фреймворки конечно же решают общие задачи достаточно просто, но в итоге приходится одни и те же простейшие задачи решать снова и снова. А тогда нафига нам вообще компьютеры, если мы все делаем сами?.. Может пора научить эти устройства, которые мы приручили, самостоятельно принимать простые решения, а не объяснять им снова и снова что мы от них хотим? Вообще это скорее крик души, я честно говоря уже устал писать программы на традиционных языках программирования, снова и снова объясняя моему любимому ПК банальные вещи: smart pointers, ссылки, константные ссылки, указатели, виртуальные функции, стек/динамическая память. С чего вдруг мне обо всем этом заботиться?
Возьмем простую задачу: распарсить XML файл и вывести все имена тэгов на экран. Варианты решения: бесконечно много. Можно использовать множество языков программирования, можно на каждом из них написать совершенно разный код. Скорость работы этих решений: стесняюсь оценить,
может различаться на 1-2-10 порядков. А задача то ведь сверх простая, чтобы достичь максимальной эффективности нужно всего то правильно написать несколько строк(наверное, десятков строк) ассемблерного кода.
Но ведь дело даже не в этом. Сколько, продолжая тот же пример, написано XML парсеров? А ведь логика там одна и та же. И та же «грамматика», очень много общего. А почему бы не сказать нашей любимой платформе, что такое XML по сути. Чтобы он знал, что такое XML, с чем его едят, с чем не едят и т.д. И получив его на входе сам бы преобразовывал его к нужному выходу, получив задачу ЧТО нужно сделать и самостоятельно решая задачу КАК делать.
ЗЫ. XML приведен для очень грубого и простого примера, просьба XML в каментах не трогать:)
ЗЫЫ. Первый пост, не судите строго, я исправлюсь, может быть:)
Оптимизация производительности в C++ приложениях (Windows)
2 мин
3.4KВсе думаю уже знают, но все же. Иногда нужно оценить, сколько процессорного времени занимает выполнение тех или иных функций программы(преимущественно я говорю сейчас о C++). Ну и ниже привожу свой способ, простой, но вполне меня устраивает.
Можно проинструментировать код различными специальными инструментами(не пробовал, вроде DevPartner один из них, думаю их немало сейчас).
Функции привязанные к времени не очень то хорошо работают, в WinAPI или в каком либо другом API я их не нашел.
Две функции которые мне весьма пришлись по вкусу:
QueryPerformanceFrequency
QueryPerformanceCounter
Вообще, тут можно заканчивать чтение статьи, чуть погуглить и хватит:)
С помощью этой парочки функций можно получить довольно точные оценки времени работы программных вычислений.
Собственно, QueryPerformanceFrequency возвращает количество элементарных операций которые может выполнить ваш процессор за одну секунду.
QueryPerformanceCounter возвращает количество элементарных операций, которое он уже выполнил с момента запуска компьютера.
«GetTickCount» — вроде как альтернатива, но ее точности мне как то не хватило, либо меня не устроило ее поведение, которое не слишком то внятно описано в MSDN, скорее ее можно использовать только для UI-расчетов.
Вычислить, сколько cекунд занимает вызов какой либо функции (метода класса) DoWork() с использованием QueryPerformanceFrequency/QueryPerformanceCounter собственно весьма просто:
Грешный код конечно, я лишь показал идею, может вдруг кому и пригодится.
Вообще, QueryPerformanceCounter, это «ReaD Time Stamp Counter(RDTSC)» инструкция ассемблера(вру о5, название инструкции #0f, #31, хотя постесняюсь сказать, на каких процессорах она работает, за что прошу меня простить:)
ЗЫ. При оценке производительности и простейших тестах, коими я иногда пользуюсь, стоит обратить внимание и на компилятор, большинство вменяемых компиляторов блок кода типа
преобразуют так, что вообще ее не нужно будет считать во время выполнения, и y=sin(PI/4) будет просчитан на стадии компиляии.
Можно проинструментировать код различными специальными инструментами(не пробовал, вроде DevPartner один из них, думаю их немало сейчас).
Функции привязанные к времени не очень то хорошо работают, в WinAPI или в каком либо другом API я их не нашел.
Две функции которые мне весьма пришлись по вкусу:
QueryPerformanceFrequency
QueryPerformanceCounter
Вообще, тут можно заканчивать чтение статьи, чуть погуглить и хватит:)
С помощью этой парочки функций можно получить довольно точные оценки времени работы программных вычислений.
Собственно, QueryPerformanceFrequency возвращает количество элементарных операций которые может выполнить ваш процессор за одну секунду.
QueryPerformanceCounter возвращает количество элементарных операций, которое он уже выполнил с момента запуска компьютера.
«GetTickCount» — вроде как альтернатива, но ее точности мне как то не хватило, либо меня не устроило ее поведение, которое не слишком то внятно описано в MSDN, скорее ее можно использовать только для UI-расчетов.
Вычислить, сколько cекунд занимает вызов какой либо функции (метода класса) DoWork() с использованием QueryPerformanceFrequency/QueryPerformanceCounter собственно весьма просто:
LARGE_INTEGER performanceCounter; ::QueryPerformanceFrequency(&performanceCounter); LARGE_INTEGER performanceCounterStart; ::QueryPerformanceCounter(&performanceCounterStart); DoWork(); LARGE_INTEGER performanceCounterEnd; ::QueryPerformanceFrequency(&performanceCounterEnd); double timeElapsed = (double*)(performanceCounterEnd) - (double*)(performanceCounterEnd)
Грешный код конечно, я лишь показал идею, может вдруг кому и пригодится.
Вообще, QueryPerformanceCounter, это «ReaD Time Stamp Counter(RDTSC)» инструкция ассемблера(вру о5, название инструкции #0f, #31, хотя постесняюсь сказать, на каких процессорах она работает, за что прошу меня простить:)
ЗЫ. При оценке производительности и простейших тестах, коими я иногда пользуюсь, стоит обратить внимание и на компилятор, большинство вменяемых компиляторов блок кода типа
CalculateSinus (cobst Double &x) { return sin(x); } static const double x = PI / 4; double y = CalculateSinus(x)
преобразуют так, что вообще ее не нужно будет считать во время выполнения, и y=sin(PI/4) будет просчитан на стадии компиляии.
Переопределение стандартных типов в C++
1 мин
3.4KНередко программисты для удобства и краткости переопределяют простейшие типы данных, дают им другие имена. Чаще всего это делаетс примерно так:
typedef unsingned int uint32;
typedef signed int int32;
typedef unsigned char byte;
Ну и так далее. Выступлю с предложением: а почему бы не переопределить простейшие типы, написав для каждого типа свой класс? Расход памяти при хранении таких объектов увеличиться по идее не должен(ессно, виртуальные функции не используем). Например, пишем класс Double, примерно так:
Или например для типа char:
Таким образом, можно работать с простейшими типами как с объектами, повысить удобочитаемость кода, иметь больше контроля над тем что происходит в программе(например, для подсчета количества умножений, выполняемых над типом double достаточно поместить счетчик в перегруженный оператор).
Оверхеда по производительности/расходу памяти по идее быть не должно.
Пока не могу поделиться плюсами/минусами такого подхода, но постепенно внедряю его в свои C++ библиотеки.
typedef unsingned int uint32;
typedef signed int int32;
typedef unsigned char byte;
Ну и так далее. Выступлю с предложением: а почему бы не переопределить простейшие типы, написав для каждого типа свой класс? Расход памяти при хранении таких объектов увеличиться по идее не должен(ессно, виртуальные функции не используем). Например, пишем класс Double, примерно так:
class Double { public: Double(const Double& value); Double operator+(const Double &right) const; Double operator-(const Double &right) const; Bool IsPositiveInfinity(); Bool IsNegativeInfinity(); private: double _value; }
Или например для типа char:
class Char { public: Char(char value); Bool IsDecimalDigit() const; Bool IsLetter() const; Bool IsWhiteSpace() const; Bool operator==(const Char &other); Bool operator!=(const Char &other); private: char _value; };
Таким образом, можно работать с простейшими типами как с объектами, повысить удобочитаемость кода, иметь больше контроля над тем что происходит в программе(например, для подсчета количества умножений, выполняемых над типом double достаточно поместить счетчик в перегруженный оператор).
Оверхеда по производительности/расходу памяти по идее быть не должно.
Пока не могу поделиться плюсами/минусами такого подхода, но постепенно внедряю его в свои C++ библиотеки.
Reason — кроссплатформенный С++ фреймворк
2 мин
503Начну с описания проблемы. При написании приложений на С++ некоторую сложность для начинающих разработчиков может представлять отсутствие стандартных классов для работы со строками, файлами, коллекциями, сетью и выполнения других простых операций. Конечно, есть WinAPI, Standard Library, CRT, MFC, ATL, но они достаточно сложны в использованиии.
К примеру, в серьезных коммерческих проектах считывать файлы с помощью прямых вызовов функции WinAPI СreateFile/ReadFile/CloseFile без создания классовых оберток сложно, и вообщем то неправильно. Другой пример, работа со строками, СRT — неудобно: буферы, незащищенный код. std::string — довольно неполон: отсутствуют такие часто используемые операции как например trim, split. Поэтому многие разработчики в каждом новом проекте пишут собственные классы/обертки для выполнения простых операций.
К примеру, в серьезных коммерческих проектах считывать файлы с помощью прямых вызовов функции WinAPI СreateFile/ReadFile/CloseFile без создания классовых оберток сложно, и вообщем то неправильно. Другой пример, работа со строками, СRT — неудобно: буферы, незащищенный код. std::string — довольно неполон: отсутствуют такие часто используемые операции как например trim, split. Поэтому многие разработчики в каждом новом проекте пишут собственные классы/обертки для выполнения простых операций.
Программировать сложно или о вреде догматического мышления
5 мин
1.3KУ каждого явления существует «плохая» и «хорошая» сторона. При этом абсолютного зла не существует. Также как и абсолютного добра.
Догмой (применительно к разработке) является утверждение о том, что некоторая технология (или технологическое решение) является абсолютным добром, то есть обладает преимуществами, не имея недостатков.
Основная мысль этой статьи — подобное догматическое мышление весьма распространено в индустрии, но оно вредно и ведет к печальным результатам.
Начнем с того, что программирование — это плохо. Почему?
Догмой (применительно к разработке) является утверждение о том, что некоторая технология (или технологическое решение) является абсолютным добром, то есть обладает преимуществами, не имея недостатков.
Основная мысль этой статьи — подобное догматическое мышление весьма распространено в индустрии, но оно вредно и ведет к печальным результатам.
Начнем с того, что программирование — это плохо. Почему?
Что скрывает class Empty {}
3 мин
8.1KЭто заметка о методах, которые C++ создаёт автоматически, даже если вы их не создавали.
Для кого эта заметка? Надеюсь, что она будет интересна начинающим программистам на С++. А опытным программистам позволит лишний раз освежить и систематизировать свои знания.
Для кого эта заметка? Надеюсь, что она будет интересна начинающим программистам на С++. А опытным программистам позволит лишний раз освежить и систематизировать свои знания.
Итератор по кортежу (boost)
3 мин
1KИтератор по кортежу И так, нам нам нужно огранизованно пройтись по всем членам кортежа. Мне это понадобилось для сохранения в xml — файл конструкций типа std::vector<boost::tuple<...>>. Кстати, пишу я это в Qt.
Ну да ладно, к делу.
Ну да ладно, к делу.
Leechcraft 0.3.0
3 мин
1.4KЗдравствуй, %username%.
Сегодня я хочу рассказать тебе об одном своём проекте, который начался давным-давно с простого желания написать что-нибудь абстрактное, модульное и крутое.

Быстро пролетело чуть больше трех лет, и получился LeechCraft. LeechCraft — это модульный кроссплатформенный интернет-клиент. Модульный — все по-настоящему важное выполняется плагинами, а ядро программы только связывает их между собой, да показывает общий для них интерфейс. Кроссплатформенный? LeechCraft постоянно используется автором под Linux, запускается под Windows и, теоретически, может работать под Mac OS X. Однако, за неимением Мака работа под ним не была протестирована.
Сегодня я хочу рассказать тебе об одном своём проекте, который начался давным-давно с простого желания написать что-нибудь абстрактное, модульное и крутое.

Быстро пролетело чуть больше трех лет, и получился LeechCraft. LeechCraft — это модульный кроссплатформенный интернет-клиент. Модульный — все по-настоящему важное выполняется плагинами, а ядро программы только связывает их между собой, да показывает общий для них интерфейс. Кроссплатформенный? LeechCraft постоянно используется автором под Linux, запускается под Windows и, теоретически, может работать под Mac OS X. Однако, за неимением Мака работа под ним не была протестирована.
C++ — как латынь
1 мин
1.1KДля большинства программистов язык С++ — как латынь:
1. Очень многие современные языки от него произошли, но сейчас им мало кто пользуется.
2. Считается, что налатыни C++ можно написать что угодно. Это, наверное, так, но фразы получаются громоздкими.
3. Учеба в классическом университете подразумевает обязательное изучение C++. После учебы все равно мало кто его понимает.
4. Хорошо понимают в специальных учреждениях, где поддерживают старый софт. Читай «библиотека с манускриптами».
5. Библиотекари считают всех, кто не знает латыни, неучами.
Upd:
6. Латынь часто наделяют мистическими возможностями (см. Г. Поттер). C++ тоже.
Юмор, ага. :)
P.S. Язнаю знал, но теперь уже не люблю.
Upd2: Поместил в юмор. Ибо шутка же.
1. Очень многие современные языки от него произошли, но сейчас им мало кто пользуется.
2. Считается, что на
3. Учеба в классическом университете подразумевает обязательное изучение C++. После учебы все равно мало кто его понимает.
4. Хорошо понимают в специальных учреждениях, где поддерживают старый софт. Читай «библиотека с манускриптами».
5. Библиотекари считают всех, кто не знает латыни, неучами.
Upd:
6. Латынь часто наделяют мистическими возможностями (см. Г. Поттер). C++ тоже.
Юмор, ага. :)
P.S. Я
Upd2: Поместил в юмор. Ибо шутка же.
Немного Математики, Хабра и Марио или играемся с табулированием
1 мин
924Здравствуйте!
Возможности компилятора MSVC практически безграничны для творчества, поэтому я решил поэкспериментировать с табулированием и знаками "+"/"-". Пока создан только один экспонат, но я надеюсь развить эту мысль и сделать что-то грандиозное!
Возможности компилятора MSVC практически безграничны для творчества, поэтому я решил поэкспериментировать с табулированием и знаками "+"/"-". Пока создан только один экспонат, но я надеюсь развить эту мысль и сделать что-то грандиозное!
Google Go = Python и C++
1 мин
11K
Перевод
Google только что объявил выпуск нового языка с открытым исходным кодом
под названием Go. Компания говорит что, Go эксперементальный язык и
он объединяет производительность и безопасность компилируемых языков(как С++)
со скорость разработки динамических языков (как Python).
под названием Go. Компания говорит что, Go эксперементальный язык и
он объединяет производительность и безопасность компилируемых языков(как С++)
со скорость разработки динамических языков (как Python).
Hello World! как ему следует быть на C в Linux
3 мин
50KОчень многие начинающие программисты думают, что знают, как написать Hello World. Естественно, с этого примера ведь и начинается большинство учебников.
А давайте посмотрим, как это делается.
Обычно в учебнике по C эта программа выглядит примерно так:
А давайте посмотрим, как это делается.
Обычно в учебнике по C эта программа выглядит примерно так:
#include <stdio.h>
void main()
{
printf("Hello world\n");
}
Что такое Pimpl по версии Qt, и с чем его едят!
12 мин
37KВступление.
Часто в документации от Qt встречается термин Pimpl. Кроме того, те кто хоть немного копался в исходном коде Qt часто видел такие макросы как: Q_DECLARE_PRIVATE, Q_D. А также встречал так называемые приватные заголовочные файлы, название которых заканчивается на "_p.h".
В этой статье я попробую приоткрыть ширму за всей это структурой.
Pimpl, что это?
Pimpl — Pointer to private implementation. Это одно из названий паттерна программирования. Еще его называют чеширским котом — «Cheshire Cat» (это название мне больше нравится). В чем суть этого паттерна? Основная идея этого паттерна — это вынести все приватные члены класса и, в не которых случаях, функционала в приватный класс.
Отсюда название «чеширский кот» — видно только улыбку, а все остальное остается невидимым, но оно несомненно есть :-) Кто не помнит этого замечательного кота, может обратится к первоисточнику, к книге Льюиса Кэрролла «Алиса в стране чудес». Очень интересная книга, особенно если читать в оригинале.
Что это дает?
QST: QsT SQL Tools, инструментарий для Qt
11 мин
1.2KUPD
Данный блог появился благодаря advix. Этот человек дал инвайт за пост в песочнице, за что я ему искренне благодарен.
Добрый день, уважаемое хабрасообщество!
Хочу представить на ваш суд крохотную библиотеку под Qt, написанную, чтобы упростить программирование приложений баз данных. Используя ее, сделал одну базу данных на заказ, и хотя это была всего лишь курсовая работа, она помогла мне отточить и продумать многие моменты. Сейчас пишу другую базу данных, уже настоящую, для серьезной организации. Понемногу вношу в библиотеку новые возможности. Глядишь, когда-нибудь что-то хорошее получится.
Начиная с лета 2009 года, я активно изучаю Qt. И знаете, по-настоящему счастлив программировать в этой среде. Она решила все мои главные проблемы. Например, я не умел строить интерфейс программы, особенно меня раздражало, что каждый контрол в том же Builder нужно выравнивать, перетаскивать, подгонять размеры и положение. С Qt об этом можно забыть, – и заниматься исключительно эстетикой без всякой рутины. Кроме того, мне нравится STL за ее хитрый подход (хотя еще ее не знаю толком), и в Qt она есть, равно как и собственные контейнеры, – используй с удовольствием. И еще «Кьют» – очень продуманная библиотека, вся такая ООП-шная и технологичная. А я очень чту и уважаю ООП, равно как и паттерны проектирования…
В конце лета получаю заказ на базу данных. Вопрос, на чем писать, не стоит. Конечно, Qt! Практика поможет изучить то, что еще скрыто. Начинаю работать над приложением. Вроде бы формочки красивые получаются, код удобно писать, все есть… И должен бы радоваться, да вот получается лапша из SQL-С++ кода. Ошибкоопасная, в сопровождении трудная, на вид – убожество… Как потом людям в глаза смотреть и называть себя программистом?
Так родился проектик. Да, маленький проект, призванный ото всего этого безобразия избавить. Благо, тропинка проторена, и для всех языков программирования, для всех платформ уже есть подобные вещи. Ну и ладно, что есть. Хочу свою, тем более, под Qt ничего толкового не нашел.
Это инструментарий, а лучше сказать – библиотека, а еще лучше сказать – набор классов, который избавляет программиста от «SQL-лапши» в коде. Естественно, с помощью генерации запросов, но не простой, а через специальные DFD-описатели, что дает много-много полезных плюшек. Как-то: обращаемся к полям таблицы БД по именам, извлекаем любые данные, имеем разные DFD-описатели под разные запросы, работаем с моделями-представлениями, инкапсулируем все это в классы-хэндлеры, а те еще много чего умеют, поелику отнаследованы от AbstractModelHanlder…
Но – по порядку.
Данный блог появился благодаря advix. Этот человек дал инвайт за пост в песочнице, за что я ему искренне благодарен.
Добрый день, уважаемое хабрасообщество!
Хочу представить на ваш суд крохотную библиотеку под Qt, написанную, чтобы упростить программирование приложений баз данных. Используя ее, сделал одну базу данных на заказ, и хотя это была всего лишь курсовая работа, она помогла мне отточить и продумать многие моменты. Сейчас пишу другую базу данных, уже настоящую, для серьезной организации. Понемногу вношу в библиотеку новые возможности. Глядишь, когда-нибудь что-то хорошее получится.
Преамбула
Начиная с лета 2009 года, я активно изучаю Qt. И знаете, по-настоящему счастлив программировать в этой среде. Она решила все мои главные проблемы. Например, я не умел строить интерфейс программы, особенно меня раздражало, что каждый контрол в том же Builder нужно выравнивать, перетаскивать, подгонять размеры и положение. С Qt об этом можно забыть, – и заниматься исключительно эстетикой без всякой рутины. Кроме того, мне нравится STL за ее хитрый подход (хотя еще ее не знаю толком), и в Qt она есть, равно как и собственные контейнеры, – используй с удовольствием. И еще «Кьют» – очень продуманная библиотека, вся такая ООП-шная и технологичная. А я очень чту и уважаю ООП, равно как и паттерны проектирования…
В конце лета получаю заказ на базу данных. Вопрос, на чем писать, не стоит. Конечно, Qt! Практика поможет изучить то, что еще скрыто. Начинаю работать над приложением. Вроде бы формочки красивые получаются, код удобно писать, все есть… И должен бы радоваться, да вот получается лапша из SQL-С++ кода. Ошибкоопасная, в сопровождении трудная, на вид – убожество… Как потом людям в глаза смотреть и называть себя программистом?
Так родился проектик. Да, маленький проект, призванный ото всего этого безобразия избавить. Благо, тропинка проторена, и для всех языков программирования, для всех платформ уже есть подобные вещи. Ну и ладно, что есть. Хочу свою, тем более, под Qt ничего толкового не нашел.
QST: QsT SQL Tools
Это инструментарий, а лучше сказать – библиотека, а еще лучше сказать – набор классов, который избавляет программиста от «SQL-лапши» в коде. Естественно, с помощью генерации запросов, но не простой, а через специальные DFD-описатели, что дает много-много полезных плюшек. Как-то: обращаемся к полям таблицы БД по именам, извлекаем любые данные, имеем разные DFD-описатели под разные запросы, работаем с моделями-представлениями, инкапсулируем все это в классы-хэндлеры, а те еще много чего умеют, поелику отнаследованы от AbstractModelHanlder…
Но – по порядку.
Вызов функции с «неизвестным» именем на C++. Часть 1 — cdecl
4 мин
14KПостановка задачи
Что же я имел ввиду, когда написал «неизвестное» имя функции? А значит это то, что имя функции, её параметры и, в конце концов, соглашение вызова, становятся известными только во время выполнения программы. Займемся её вызовом! =)
Компилируем 64-битную версию Qt под windows
3 мин
22K
Туториал
Несколько событий в Delphi-блогосфере
1 мин
877Несколько новостей связанных с миром Delphi.
Стараниями Александра Божко, в интернете появился агрегатор русскоязычных новостей о Delphi. Сайт сделан по аналогии с известным западным порталом DelphiFeeds.com. В данный момент там собираются анонсы постов с 25 русскоязычных Delphi-блогов.
Адрес: DelphiFeeds.ru
Перевод статьи «Дженерики в Delphi 2009 для Win32» доступен в PDF файле. За вёрстку спасибо Андрею Тишкину.
Скачать можно здесь, либо на домашней странице Sébastien Doeraene (поиск по фразе «PDF form»).
Ну и, на сладкое, доступен перевод статьи Comparing C#, C++, and Delphi (Win32) Generics. Автор: Craig Stuntz.
Перевод выложен в TDelphi-блоге Алексея Тимохина: тынц.
DelphiFeeds.ru
Стараниями Александра Божко, в интернете появился агрегатор русскоязычных новостей о Delphi. Сайт сделан по аналогии с известным западным порталом DelphiFeeds.com. В данный момент там собираются анонсы постов с 25 русскоязычных Delphi-блогов.
Адрес: DelphiFeeds.ru
«Дженерики в Delphi 2009 для Win32» в виде PDF-ки
Перевод статьи «Дженерики в Delphi 2009 для Win32» доступен в PDF файле. За вёрстку спасибо Андрею Тишкину.
Скачать можно здесь, либо на домашней странице Sébastien Doeraene (поиск по фразе «PDF form»).
Сравнивая дженерики в C#, C++ и Delphi(Win32) (перевод)
Ну и, на сладкое, доступен перевод статьи Comparing C#, C++, and Delphi (Win32) Generics. Автор: Craig Stuntz.
Перевод выложен в TDelphi-блоге Алексея Тимохина: тынц.
Статический анализ Си++ кода и новый стандарт языка C++0x
18 мин
5.4KАннотация
Введение
1. auto
2. decltype
3. Ссылка на временный объект (R-value reference)
4. Правые угловые скобки
5. Лямбда-функции (Lambdas)
6. Suffix return type syntax
7. static_assert
8. nullptr
9. Новые стандартные классы
10. Новые направления в развитии статических анализаторов кода
Заключение
Библиографический список
В статье рассмотрены новые возможности языка Си++, описанные в стандарте C++0x и поддержанные в Visual Studio 2010. На примере PVS-Studio рассмотрено, как изменения языка отразятся на инструментах статического анализа кода.
Введение
1. auto
2. decltype
3. Ссылка на временный объект (R-value reference)
4. Правые угловые скобки
5. Лямбда-функции (Lambdas)
6. Suffix return type syntax
7. static_assert
8. nullptr
9. Новые стандартные классы
10. Новые направления в развитии статических анализаторов кода
Заключение
Библиографический список
Аннотация
В статье рассмотрены новые возможности языка Си++, описанные в стандарте C++0x и поддержанные в Visual Studio 2010. На примере PVS-Studio рассмотрено, как изменения языка отразятся на инструментах статического анализа кода.
PocoCapsule: делаем «Hello world» проще
7 мин
2.3K