Преимущества/Недостатки Подверсии сервера меньше для сольного разработчика

В Lua:

function f()return 1+f()end f()

необходимо сделать что-то к результату рекурсивного вызова, или иначе оптимизация последнего вызова позволит ему циклично выполняться навсегда. Слабый для гольфа кода, но хороший иметь!

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

6
задан Joel Coehoorn 9 December 2011 в 19:02
поделиться

5 ответов

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

Что вам нужно, так это список в случайном порядке, который я бы реализовал с помощью следующего кода (псевдокод, поскольку это домашнее задание ):

dim n[10]                 // gives n[0] through n[9]
for each i in 0..9:
    n[i] = i              // initialize them to their indexes
nsize = 10                // starting pool size
do 10 times:
    i = rnd(nsize)        // give a number between 0 and nsize-1
    print n[i]
    nsize = nsize - 1     // these two lines effectively remove the used number
    n[i] = n[nsize]

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

Например, рассмотрите следующую лабораторную проверку:

<--------- n[x] ---------->
for x = 0 1 2 3 4 5 6 7 8 9  nsize  rnd(nsize)  output
---------------------------  -----  ----------  ------
        0 1 2 3 4 5 6 7 8 9     10           4       4
        0 1 2 3 9 5 6 7 8        9           7       7
        0 1 2 3 9 5 6 8          8           2       2
        0 1 8 3 9 5 6            7           6       6
        0 1 8 3 9 5              6           0       0
        5 1 8 3 9                5           2       8
        5 1 9 3                  4           1       1
        5 3 9                    3           0       5
        9 3                      2           1       3
        9                        1           0       9

Вы можете видеть, что пул уменьшается по мере вашего продвижения и, потому что вы ' Но я категорически не рекомендую использовать его более чем с одним разработчиком.

В книге SVN говорится:

Не соблазняйтесь простой идеей чтобы все ваши пользователи получили доступ к репозиторий напрямую через URL file: //. Даже если репозиторий легко доступен всем через сеть поделитесь, это плохая идея. Он удаляет любые уровни защиты между пользователи и репозиторий: пользователи могут случайно (или намеренно) повредить базу данных репозитория, это становится трудно взять репозиторий в автономном режиме для проверки или обновления, и это может привести к беспорядку проблемы с правами доступа к файлам (см. раздел под названием «Поддержка нескольких Методы доступа к репозиторию ».) Обратите внимание, что это также одна из причин, по которой мы предупреждать о доступе к репозиториям через svn + ssh: // URL - из ценной бумаги точка зрения, это фактически то же самое как локальные пользователи, получающие доступ через file: //, и может повлечь за собой все те же проблемы если администратор неосторожен.

(От: http://svnbook.red-bean.com/en/1.4/svn.serverconfig.choosing.html )

Установка svnserve isn Это не так сложно, и действительно стоит потратить час или два на настройку.

7
ответ дан 10 December 2019 в 02:48
поделиться

Очевидный недостаток: даже если вы используете RAID, поэтому у вас есть избыточность на дисках, если ваш компьютер будет потерян или украден, вы попадете под удар. Если у вас есть источник, размещенный где-то на сервере, то если либо сервер , либо ваш клиентский компьютер будет украден, у вас будет еще одна копия. (Конечно, если сервер украдут, вы потеряете историю и ветки, но это лучше, чем ничего.)

4
ответ дан 10 December 2019 в 02:48
поделиться

Я делаю это. Я использую общую папку SVN. Внутри этой папки находятся все мои репозитории Subversion для различных проектов.

Не было никаких проблем. Теперь я размещаю это на массиве RAID 5.

Я должен отметить, что делал это уже более 3 лет.

Я также установил это в корпоративной среде в течение последних 2 лет, где в репозитории было более 200 проверок, а размер превышал 200 МБ.

0
ответ дан 10 December 2019 в 02:48
поделиться

Раньше я запускал Linux-сервер только для размещения SVN-сервера (я почти всю свою разработку занимаюсь на Windows), но мне надоело, что он воет под моим столом, и я переключился на одиночный- пользовательский SVN, размещенный в Windows. У меня не было проблем (прикоснитесь к дереву), но я стараюсь часто создавать резервные копии всех своих репозиториев SVN, чтобы в лучшем случае я мог потерять работу на несколько дней. Нет необходимости в сложных процедурах резервного копирования, просто купите себе несколько штук флэш-памяти USB и просто скопируйте в них каталоги архива SVN.

0
ответ дан 10 December 2019 в 02:48
поделиться

Я предлагаю вам быть очень осторожными с разрешениями. Я обнаружил некоторые случайные проблемы в конфигурации соло-разработчика, поэтому, если что-то работает странно, сначала проверьте разрешения и заблокируйте статус репозитория. Если у вас, как и у меня, есть несколько несвязанных проектов, то я создаю каталог для каждого проекта, и в этот каталог я помещаю два подкаталога: SVN, который содержит репо для проекта, и «checkout», который содержит фактическую проверку. Я использую этот подход, потому что у меня есть автоматическое резервное копирование моего домашнего каталога, поэтому я могу создавать резервные копии как проекта, так и его репозитория. В качестве альтернативы,

-2
ответ дан 10 December 2019 в 02:48
поделиться
Другие вопросы по тегам:

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