cygwin ssh никакая шпаклевка да?

Ваша BillBundle идея выглядит хорошо для меня. Вы говорите, что вам приходилось многократно писать код:

Billbundle billBundle = new BillBundle();
billBundle.setFives(fives);
billBundle.setTens(tens);
billBundle.setTwenties(twenties);
billBundle.setFifties(fifties);
depositCash(billBundle);

Но действительно ли вы действительно или просто думаете, что можете?

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

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

Это гораздо лучше, чем обойти 4 параметра повсеместно по двум причинам:

  1. Гораздо меньше возможностей все испортить - каждая функция, которая принимает 4 параметра счета и передает у них в другом месте есть шанс передать их в неправильном порядке или в неправильных положениях параметров. Это особенно проблематично, поскольку фактические значения имеют один и тот же тип (т.е. int), и многие аргументы используют этот тип для совершенно разных вещей.

  2. Гораздо меньше кода на самом деле зависит от типов счетов, которые вы поддерживаете. Допустим, ваша страна переключается на монету в 5 долларов, или вы просто не хотите, чтобы они были в машинах больше ... сколько кода нужно изменить, чтобы избавиться от пятерок? Вам нужно будет изменить код, который подсчитывает счета, и все остальные вещи, которые на самом деле заботятся о суммах каждого счета, но вам не нужно менять код, который просто пропускает эти счета. Они могут просто обойти оригинал BillBundle и не беспокоиться об этом.

Одно изменение, которое я бы предложил, - сделать ваш BillBundle неизменным. Тогда вам не нужно беспокоиться о том, чтобы кто-нибудь изменил его, когда вы передаете его.

Что-то вроде:

class BillBundle
{
    public final int fives;
    public final int tens;
    public final int twenties;
    public final int fifties;

    public BillBundle(int fives, int tens, int twenties, int fifties)
    {
       this.fives = fives;
       this.tens = tens;
       this.twenties = twenties;
       this.fifties = fifties;
    }
}

Я предупрежу вас, что большинство Java-программистов предпочитают методы getter вместо открытых полей final, но для этого нет веских причин.

9
задан Dave Jarvis 28 June 2011 в 09:51
поделиться

3 ответа

Шпаклевка использует свой собственный .ppk формат для файлов ключей, и ssh Cygwin, вероятно, не может считать их правильно.

Решение: преобразуйте .ppk файл в формат ключа OpenSSH с puttygen.exe.

19
ответ дан 4 December 2019 в 07:35
поделиться

Если можно войти в систему со шпаклевкой, нет никакой потребности "раздражать сетевых администраторов". Просто генерируйте новый ключ с cygwin, затем войдите в систему со шпаклевкой и поместите Ваш новый открытый ключ в Ваш .ssh/authorized_keys файл. Необходимо теперь смочь войти в систему с ssh cygwin.

Править:

Между прочим, верный способ "взбесить" любого администратора состоит в том, чтобы использовать незашифрованные ключи.

2
ответ дан 4 December 2019 в 07:35
поделиться

Необходимо заставить "puttygen.exe" от веб-страницы шпаклевки http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html преобразовывать ключ к формату OpenSSH. Затем это должно просто работать.

6
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

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