Как стать автором
Обновить
33
0
Sam Protsenko @skb7

Пользователь

Отправить сообщение
> Подскажите мне хорошую IDE с хорошим отладчиком
Из тех, в которых я работал: KDevelop и QtCreator, всё что вы описали там есть
извините, но вы тут по незнанию столько чуши понаписывали, что даже не знаю как на всё это ответить.

COM-порт без рута никак? а как же правила udev?

только из консоли под рутом можно IDE запустить? а как же gsudo или там kdesudo?

программинг GPIO из юзерспейса — а вы точно уверены, что это не должен быть модуль ядра (драйвер). потому что обычные приложения таким не занимаются. а если и надо из userspace — то опять же, udev rules.

всё криво и через одно место — это где, в unix, да еще и в сравнении win? что-то мне подсказывает судя по таким высказываниям, что у вас понимание linux не просто плохое, а АБСОЛЮТНО нулевое.

> программинг в таком стиле вызывает раздражение, вместо удовольствия от хорошо сделанного дело
ну конечно, в ТАКОМ СТИЛЕ только раздражение и будет. попробуйте разобраться, как система устроена, и как делать то что вы хотите ПРАВИЛЬНО, а не так как вы привыкли в windows.

по аналогам программ, что вы спрашивали выше — опять же, где-то половину я могу назвать сходу, по функционалу не уступающие win программам. а значит это одно — вы даже не искали, просто ищите оправдания, чем вас linux не устраивает.
ia32-libs не нужно ставить. Как написано в описании пакета, это «Transitional package to migrate ia32-libs to multiarch». Если его ставить — он просто тянет кучу 32-битных библиотек. Лучше ставить только то, что действительно нужно.

По поводу 32-битного Qt4: вы наверное опять же ставите transition package (типа libqt4-core). Нужно ставить libqtcore4:i386, тогда всё ок (проверил у себя). Просто посмотрите вывод «aptitude search ~i^libqt | grep 4 | grep -vi transitional», чтобы понять, какие пакеты нужно ставить.
Кажется нашёл, похоже на кратеры:
galeneastro.livejournal.com/172522.html
Кто-нибудь знает, что это за круги в левой верхней части изображения (в полной версии)? 2 очень ровных круга. Следы падения метеоритов? Тогда что это за белые точки прямо в центре этих окружностей?
круглые штуки — цанговые панельки (SCSL), квадратные — зажимные (SCSM). в цанговых контакт с ножками плотнее, но вытаскивать труднее.
if [ $(date +%j) = 256 ]; then
printf "\033[01;31mLet\'s drink, comrads! \033[00m \n"
fi
if [ $(date +%j) = 256 ]; then
    printf "\033[01;31mLet\'s drink, comrads! \033[00m \n"
fi
Приятно видеть, что я не зря старался. А вообще перевод заглох по причине нехватки людей. Если у кого то есть желание помочь — было бы замечательно, с полным переводом этих уроков можно было бы надеятся на внедрение Qt в образовательный процесс. Вся инфраструктура уже готова (), все статусы «в процессе» на самом деле равнозначны «нет перевода», т.к. взявшиеся люди видимо «забили». Если кто-нибудь желает взяться за перевод — пишите в личку, может и я снова займусь.
Да, вы правы. На новых рисунках отчетливо видны необъединенные объекты. Видимо, придется делать двухпроходным алгоритмом со списком множеств эквивалентных объектов
Да, я могу объяснить. Вечером нарисую картинку, как всё происходит.
1. Соединяются объекты 2 и 3. Объект 3 станет объектом 2.
2. Соединяются объекты 3 и 5. Объект 5 станет объектом 2, т.к. объект 3 — уже имеет номер 2 (переименован в предыдущем шаге)

Код работает, я сейчас использую этот подход в реальном проекте (кстати, спасибо вам за отличную статью, очень своевременно для меня).

Ксати, что характерно, если не делать проверку

} else {
    if (*m_labels[bIndex] <= *m_labels[cIndex])
        *m_labels[cIndex] = *m_labels[bIndex];
    else
        *m_labels[bIndex] = *m_labels[cIndex];
    m_labels[index] = m_labels[bIndex];
}

а делать просто

} else {
    *m_labels[cIndex] = *m_labels[bIndex];
    m_labels[index] = m_labels[bIndex];
}

то выйдет криво (будет куча объектов вместо одного).
У меня получилось сделать однопроходный алгоритм (C++) без использования структур/множеств. Храню массив int* вместо int, и в случае, когда текущий пиксель объединяет 2 объекта (последний else у вас в коде), делаю так:

int **m_labels;

...

} else {
    if (*m_labels[bIndex] <= *m_labels[cIndex])
        *m_labels[cIndex] = *m_labels[bIndex];
    else
        *m_labels[bIndex] = *m_labels[cIndex];
    m_labels[index] = m_labels[bIndex];
}

т.е. изменяю значение указателя с бОльим номером объекта на значение объекта с меньшим номером, с которым происходит объединение. Таким образом остается один (общий) объект с меньшим номером. int* в качестве ячейки позволяет изменить номер объекта для всех пикселей этого объекта без дополнительного прохода по массиву рисунка.

Конечно, для такой реализации необходимо иметь матрицу указателей, но в моем случае массив рисунка для этих нужд я использовать не мог.
Как раз хотел написать. В ядре 2.6.38 этот патч уже есть, так что возожно стоит посоветовать обновиться до Ubuntu 11.04 (там используется это ядро). Проверяли на работе — ставили сборку KDevelop в 16 потоков, при этом можно было продолжать нормально работать.
Абсолютно верно. Да и виртуальные функции не добавят скорости, Pimpl в этом плане лучше. Я только понял, что имел ввиду Lokken — сбила с толку строка /* SomeImplementation.cpp /* — я подумал, что клиенту предоставляется также SomeImplementation, а он на самом деле используется только внутри someinterface.cpp.
> Чем Pimpl лучше нижеприведённого кода?
Ок, вы создали интерфейс для своего класса, но в заголовочном файле вашего класса SomeImplementation всё равно будут присутствовать детали реализации. Идея Pimpl состоит в том, чтобы убрать из интерфейса детали реализации; добавьте в ваш SomeImplementation приватные методы и поля данных — и ваш подход не даст тех плюсов, которые дает Pimpl — см. «Преимущества идиомы Pimpl».

> при добавлении или изменении метода приходится менять код аж в 4-х местах
На самом деле нет. Видимо, вы не до конца поняли, как применять Pimpl. Если вы добавляете приватный метод — вы добавляете его только в приватный класс. Если вы добавляете публичный метод — вы добавляете его только в основной класс.

> в классах с Pimpl приходится писать пользовательский конструктор копирования
Верно. Товарищ комментарием выше уже обратил на это внимание. Но тут есть и обратная сторона медали, см. про Copy-Swap.

> В статье также ни слова не сказано о том, что Pimpl может позволить избавиться от виртуальных функций
Вроде сказано, в пункте «Расширенные способы композиции»
Можно развернуть свой gitorious на сервере института (плюс открыть его наружу, если нужно) и избежать всех перечисленных проблем. Однобокости в обучении не будет, потому что распределенные VCS покрывают все возможности централизованных, но никак не наоборот. А привязка к конкретному продукту в практических работах неизбежна. Тут уж вы, как преподаватель, должны увидеть перспективы каждой VCS и выбрать наиболее перспективную для обучения.

Информация

В рейтинге
Не участвует
Откуда
Краматорск, Донецкая обл., Украина
Дата рождения
Зарегистрирован
Активность