Под программным переключением я подразумеваю возможность задать положение кнопки из программы. Т. е. в кнопке должен быть какой-нибудь минимальный привод.
Для этой задачи, я бы рекомендовал определить интерфейс сервиса, и отдать его программистам использующим сервис. А реализацию этого интерфейса поручить другому программисту.
Определяем интерфейс сервиса:
public class MyServerException extends RuntimeException {
// ...
}
public interface PhotoInfo {
// ...
}
public interface MyServerSession {
void login(String username, char[] password) throws MyServerException;
boolean isLoggedIn();
List<PhotoInfo> getUserPhotos(int userId) throws MyServerException;
void uploadPhoto(Bitmap photo, int userId) throws MyServerException;
}
Дублирование кода — не происходит.
Параллельная работа как минимум двух программистов — происходит.
Протокол взаимодействия с сервером — сокрыт от всей системы.
Возможность независимо юнит-тестировать обе части системы — в наличии.
Самодокументирующийся код — очень похоже.
Ваше «не бояться каждый день» это «потребность в безопасности» — второй уровень потребностей по модели Маслоу. Безопасность можно достичь только с помощью социальных институтов (родовая община, дружина, братки, менты, регулярная армия, совбез оон). Строительство таких институтов — политическая деятельность.
Так что выбор невелик. Терпите коррупцию и произвол, уходите в юрисдикцию других стран, или занимайтесь политикой и развивайте российское общество.
Действия любой власти описываются законами социологии и политологии. Учите матчасть и вперед. Можно начинать с простенького FDTD_Russian.pdf. (От диктатуры к демократии).
Приятно читать такие статьи. Кратко, но достаточно подробно.
Мне лично не хватило строчки как запускать такие тесты. Но это легко находится на главной странице летюза:
Спасибо за статью и задание. Всегда полезно лишний раз проверить свою квалификацию. bitbucket.org/ssoldatenko/wavetesttask
Сделал на java + swing. MVC, но Controller не выделен в отдельный класс, вместо него onMouseCliecked() и onTimerTick()
Использовал массив, волну рисовал целиком (в невидимой левой части), сдвигал — System.arraycopy()
«заработало» через 1.5 часа. На приведение в порядок и заливку в онлайн еще чуть больше 2х часов.
Регулируется ресайзом окна, и параметрами коммандной строки.
В суммировании ряда вам важнее будет задать правильный интерфейс.
// 1
int summarize(int[] values);
// 2
int summarize(List<Integer> values);
Более эффективный интерфейс — первый. (И вот у вас уже известно сколько элементов).
Но второй вариант может быть обусловлен каким-то внешним требованием. Тогда:
int summarize(List<Integer> values) {
Integer[] a = values.toArray(new Integer[values.size()]);
return summarize(a);
}
int summarize(Integer[] values) {
int[] a = new int[values.length];
for (int i = 0; i < values.length; i++) {
a[i] = values[i];
}
return summarize(a);
}
int summarize(int[] values) {
// Тут ваш суперскоростной код
}
И вот у вас снова массив примитивов, а первые два метода во-первых достаточно простые и прямолинейные чтобы не быть источниками багов и скорость их выполнения целиком на совести компилятора (и jit-компилятора).
Если пишете «числодробилку» — используйте массивы примитивов.
Если НЕ пишете «числодробилку» используйте штатные SDK-шные коллекции.
Не занимайтесь преждевременной оптимизацией.
Если вы не знаете сколько будет элементов — используйте штатные коллекции.
В «числодробилках» необходимо знать «сколько будет элементов» чтобы построить эффективный алгоритм.
Все остальное — «преждевременная оптимизация».
Определяем интерфейс сервиса:
Реализацию поручаем другому программисту.
Дублирование кода — не происходит.
Параллельная работа как минимум двух программистов — происходит.
Протокол взаимодействия с сервером — сокрыт от всей системы.
Возможность независимо юнит-тестировать обе части системы — в наличии.
Самодокументирующийся код — очень похоже.
И раскрашено здорово.
Так что выбор невелик. Терпите коррупцию и произвол, уходите в юрисдикцию других стран, или занимайтесь политикой и развивайте российское общество.
www.tinygreenpc.com/microsvr.aspx
Мне лично не хватило строчки как запускать такие тесты. Но это легко находится на главной странице летюза:
Спасибо
bitbucket.org/ssoldatenko/wavetesttask
Сделал на java + swing. MVC, но Controller не выделен в отдельный класс, вместо него onMouseCliecked() и onTimerTick()
Использовал массив, волну рисовал целиком (в невидимой левой части), сдвигал — System.arraycopy()
«заработало» через 1.5 часа. На приведение в порядок и заливку в онлайн еще чуть больше 2х часов.
Регулируется ресайзом окна, и параметрами коммандной строки.
Более эффективный интерфейс — первый. (И вот у вас уже известно сколько элементов).
Но второй вариант может быть обусловлен каким-то внешним требованием. Тогда:
И вот у вас снова массив примитивов, а первые два метода во-первых достаточно простые и прямолинейные чтобы не быть источниками багов и скорость их выполнения целиком на совести компилятора (и jit-компилятора).
Если пишете «числодробилку» — используйте массивы примитивов.
Если НЕ пишете «числодробилку» используйте штатные SDK-шные коллекции.
Не занимайтесь преждевременной оптимизацией.
В «числодробилках» необходимо знать «сколько будет элементов» чтобы построить эффективный алгоритм.
Все остальное — «преждевременная оптимизация».