Как я настраиваю локальное зеркало CPAN?

Сообщение об ошибке:

Ошибка

: нет соответствующей функции для вызова QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int))

Важной частью этого является упоминание " неразрешенный перегруженный тип функции ". Компилятор не знает, имеете ли вы QSpinBox::valueChanged(int) или QSpinBox::valueChanged(QString).

Существует несколько способов разрешения перегрузки:

  • Предоставить подходящий шаблонный параметр к connect()

    QObject::connect<void(QSpinBox::*)(int)>(spinBox, &QSpinBox::valueChanged,
                                             slider,  &QSlider::setValue);
    
    Это заставляет connect() разрешить &QSpinBox::valueChanged перегрузку, которая принимает int. Если у вас есть нерешенные перегрузки для аргумента slot, вам нужно будет предоставить второй аргумент шаблона connect(). К сожалению, нет синтаксиса, чтобы попросить, чтобы первый был выведен, поэтому вам нужно будет предоставить оба. Это может помочь второй подход:
  • Использовать временную переменную правильного типа

    void(QSpinBox::*signal)(int) = &QSpinBox::valueChanged;
    QObject::connect(spinBox, signal,
                     slider,  &QSlider::setValue);
    
    Назначение signal выберет желаемую перегрузку, и теперь это может быть успешно заменяется в шаблоне. Это работает одинаково с аргументом «slot», и в этом случае я считаю его менее громоздким.
  • Использовать преобразование

    Здесь мы можем избежать static_cast, так как это просто принуждение, а не устранение защиты языка. Я использую что-то вроде:
    // Also useful for making the second and
    // third arguments of ?: operator agree.
    template<typename T, typename U> T&& coerce(U&& u) { return u; }
    
    Это позволяет нам писать
    QObject::connect(spinBox, coerce<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
                     slider, &QSlider::setValue);
    
8
задан 5 revs, 3 users 67% 9 November 2010 в 19:35
поделиться

7 ответов

Это могло быть полезно: http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN

8
ответ дан 5 December 2019 в 04:32
поделиться

CPAN:: Мини-способ пойти. После того как Вы зеркально отразили CPAN локально, Вы захотите установить свой зеркальный URL в CPAN.pm или CPANPLUS к локальному каталогу с помощью "файла": URL как это:

file:///path/to/my/cpan/mirror

Если Вы хотели бы, чтобы Ваше зеркало имело копии версий разработки распределения CPAN, можно использовать CPAN:: Мини-:: Devel.

Обновление:

"Что я должен зеркально отразить CPAN?" FAQ, данный в другом ответе, для зеркального отражения всех CPAN, обычно для обеспечения другого общедоступного зеркала. Это включает старые, устаревшие версии дистрибутивов. CPAN:: Мини-просто зеркально отражает последние версии. Это намного меньше, и для большинства пользователей обычно, какие люди использовали бы для локального или разъединенного (ноутбук) доступ к CPAN.

25
ответ дан 5 December 2019 в 04:32
поделиться

Помимо других ответов, проверьте CPAN Leon:: Мини-:: Веб-сервер, который дает Вам Поисковый интерфейс CPAN Вашей локальной копии CPAN.

Если Вы хотите сделать более необычные вещи, посмотрите мой разговор "о MyCPAN". Можно ввести собственные частные модули в частный CPAN с CPAN:: Мини-:: Введите, например.

8
ответ дан 5 December 2019 в 04:32
поделиться

CPAN:: Мини-прекрасен. По умолчанию это сохраняет только последнюю версию распределения, не каждую версию, как CPAN делает.

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

5
ответ дан 5 December 2019 в 04:32
поделиться

Randal Schwartz написал статью о зеркальном отражении CPAN, который я нашел довольно полезными: http://www.stonehenge.com/merlyn/LinuxMag/col43.html

3
ответ дан 5 December 2019 в 04:32
поделиться

Попробуйте CPAN:: мини-.

3
ответ дан 5 December 2019 в 04:32
поделиться

Наиболее вероятный сценарий для выполнения зеркала CPAN - то, так, чтобы Ваша сеть 50 машин могла все быть обновлена от него локально, вместо того, чтобы поразить сеть 50 раз.

Я утверждал бы, что использование CPAN традиционным способом является плохим способом усовершенствовать сеть серверов.

Я выполняю сеть машин Redhat. Я упаковываю все модули CPAN, предназначенные для использования в производстве в RPMs (главным образом использующий cpanflute2 инструмент от об/мин:: Specfile), и развертывают их тот путь, таким образом, гарантируя надлежащее отслеживание зависимости, которое Вы действительно не получаете от самого CPAN никаким нормальным способом.

2
ответ дан 5 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: