Записки программиста Программирование и не только

10Фев/121

Получение произвольного бита из числа.

int bit = (c >> i) & 1

Где с - число, i - номер получаемого бита.

Метки записи: 1 комментарий
10Фев/120

Установка произвольного бита в числе.

b |= (1 << i);	// set
b &= ~(1 << i);	// clear

где b - число, а i - номер бита

Метки записи: Нет комментариев
7Фев/120

A Swarm of Nano Quadrotors

Стая мелких четырёхвинтокрыльников выполняют совместные учения.

Experiments performed with a team of nano quadrotors at the GRASP Lab, University of Pennsylvania. Vehicles developed by KMel Robotics. Special thanks to Professor Daniel Lee for his support.

Очень здорово.
Напомнило старый добрый HomeWorld :)

6Фев/120

Ледяной палец. BBC.

BBC: Frozen Planet, 'Brinicle' ice finger of death from Dan Droopy on Vimeo.

Коротко о физике процесса:
Под формирующимся на поверхности льдом собирается концентрированная солёная вода, которая имеет температуру сильно ниже нуля. Крепкий переохлажденный рассол, стекая вниз, в зоне контакта с обычной морской водой, намораживает трубу из пресного льда. Как только эта рассольная сосулька касается дна, всё живое в месте прикосновения оказывается вмороженным в ледяную гробницу.

Метки записи: Нет комментариев
3Фев/120

Pencil

Похожая на Dia утилита для создания диаграмм. Не так удобно, но примитивов побольше.
При этом дополнительно может использоваться для быстрой наброски интерфейсов.

Пробовал не плагин, а полноценную программу.
Работает, конечно, странно. То и дело теряется возможность добавлять новые элементы. Не умеет скреплять элементы между собой.
Но интересная.

Домашняя страница

3Фев/120

Слот. Поиск по QTreeWidget. Еще вариант.

Ищет по листьям. По первому столбцу.
Если дерево одноуровневое, то проверку на childCount можно убрать.

void MyClass::find(QString aFindString)
{
    QTreeWidgetItemIterator it(myTree);
    while (*it)
    {
        if (!(*it)->text(0).contains(aFindString, Qt::CaseInsensitive) && ((*it)->childCount() == 0))
        {
            (*it)->setHidden(true);
        }
        else
        {
            (*it)->setHidden(false);
        }
        ++it;
    }
}

Коннект идентичен.

QLineEdit *findEdit = new QLineEdit(this);
connect(findEdit,SIGNAL(textEdited(QString)),this,SLOT(find(QString)));

Должно работать гораздо быстрее первого варианта :)

Метки записи: , , Нет комментариев
27Янв/120

Слот. Поиск по QTreeWidget.

Поиск работает только в одноуровневом дереве по первому столбцу.

void MyClass::find(QString aFindString)
{
    int childCount = tree->invisibleRootItem()->childCount();
    if(aString != "")
    {
        QList <QTreeWidgetItem *> findList = tree->findItems(aFindString, Qt::MatchContains, 0);
        for(int i = 0; i < childCount; i++)
        {
            tree->invisibleRootItem()->child(i)->setHidden(true);
        }
        int findListSize = findList.size();
        for(int j = 0; j < findListSize; j++)
        {
            findList.at(j)->setHidden(false);
        }
    }
    else
    {
        for(int i = 0; i < childCount; i++)
        {
            tree->invisibleRootItem()->child(i)->setHidden(false);
        }
    }
}

Коннектим так:

QLineEdit *findEdit = new QLineEdit(this);
connect(findEdit,SIGNAL(textEdited(QString)),this,SLOT(find(QString)));
Метки записи: , , Нет комментариев
28Дек/110

Интерактивный курс по JavaScript

Отлично и интересно сделанный!
Буду изучать...

На английском Codecademy

Метки записи: Нет комментариев
28Дек/110

The Winapi (C Win32 API, No MFC) tutorial

Нашел тут очень приятные и легкие в понимании примеры для WinAPI
На английском.
The Winapi (C Win32 API, No MFC) tutorial

Метки записи: , Нет комментариев
28Окт/110

Левитация суперпроводника

Метки записи: Нет комментариев