R и контроль версий для аналитика данных соло

Вы можете попробовать использовать свойство HttpResponse.Cache, если это поможет:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(false);
Response.Cache.VaryByParams["Category"] = true;

if (Response.Cache.VaryByParams["Category"])
{
//…
}

Или может блокировать кэширование страницы в целом с помощью HttpResponse.CacheControl, но ее устарело в пользу кэша свойство выше:

Response.CacheControl = “No-Cache”;

ИЛИ вы действительно можете сходить с ума и сделать все это вручную:

Response.ClearHeaders();
Response.AppendHeader(“Cache-Control”, “no-cache”); //HTTP 1.1
Response.AppendHeader(“Cache-Control”, “private”); // HTTP 1.1
Response.AppendHeader(“Cache-Control”, “no-store”); // HTTP 1.1
Response.AppendHeader(“Cache-Control”, “must-revalidate”); // HTTP 1.1
Response.AppendHeader(“Cache-Control”, “max-stale=0″); // HTTP 1.1
Response.AppendHeader(“Cache-Control”, “post-check=0″); // HTTP 1.1
Response.AppendHeader(“Cache-Control”, “pre-check=0″); // HTTP 1.1
Response.AppendHeader(“Pragma”, “no-cache”); // HTTP 1.1
Response.AppendHeader(“Keep-Alive”, “timeout=3, max=993″); // HTTP 1.1
Response.AppendHeader(“Expires”, “Mon, 26 Jul 1997 05:00:00 GMT”); // HTTP 1.1

Ссылка

147
задан Jeromy Anglim 26 April 2010 в 13:03
поделиться

10 ответов

Я считаю, что ответ на ваш вопрос - однозначное «да» - преимущества управления файлами с помощью системы контроля версий намного перевешивают затраты на внедрение такой системы.

Я постараюсь подробно ответить на некоторые из поднятых вами вопросов:

  • Резервное копирование: У меня уже есть резервная система.

Да, и я тоже. Тем не менее, есть некоторые вопросы, которые следует рассмотреть относительно уместности использования универсальной системы резервного копирования для адекватного отслеживания важных и активных файлов, относящихся к вашей работе. Что касается производительности:

  • С какой периодичностью ваша система резервного копирования делает моментальные снимки?
  • Сколько времени нужно, чтобы создать снимок?
  • Должен ли он создавать образ всего вашего жесткого диска при создании снимка, или его можно легко попросить создать резервную копию двух файлов, только что получивших критические обновления?
  • Может ли ваша система резервного копирования показать вам с большой точностью, что изменились ли в ваших текстовых файлах от одной резервной копии к другой?

И самое главное:

  • В скольких местах сохраняются резервные копии? Находятся ли они в том же физическом месте, что и ваш компьютер?
  • Насколько легко восстановить данную версию одного файла из системы резервного копирования?

Например, у вас есть Mac и используйте Time Machine для резервного копирования на другой жесткий диск. вбиваю мой компьютер. Time Machine отлично подходит для восстановления лишнего файла или восстановления моей системы, если что-то пойдет не так. Однако у него просто нет того, что нужно, чтобы доверять мою важную работу:

  • При резервном копировании Time Machine должна создать образ всего жесткого диска, что занимает значительное количество времени.Если я продолжу работать, нет гарантии, что мой файл будет сохранен в том состоянии, в котором он был, когда я инициировал резервное копирование. Я также могу подойти к другому моменту, который хотел бы сохранить до завершения первого резервного копирования.

  • Жесткий диск, на котором сохраняются мои резервные копии Time Machine, расположен на моем компьютере, что делает мои данные уязвимыми для кражи, пожара и других катастроф.

С помощью системы контроля версий, такой как Git, я могу инициировать резервное копирование определенных файлов без дополнительных усилий, чем при запросе сохранения в текстовом редакторе, и файл мгновенно отображается и сохраняется. Кроме того, Git распространяется, поэтому на каждом компьютере, на котором я работаю, есть полная копия репозитория.

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

  • Разветвление и перемотка: Я никогда не чувствовал необходимости в этом, но вижу, как это может быть полезно (например, вы готовите несколько журнальных статей на основе одного и того же набора данных; вы готовите отчет который обновляется ежемесячно и т. д.)

Как солист, я тоже не сильно раскошеливался. Однако время, которое я сэкономил, имея возможность перемотки назад, в одиночку окупило мои инвестиции в изучение системы контроля версий много-много раз. Вы говорите, что никогда не испытывали потребности в этом - но действительно ли перемотка любого файла в вашей текущей системе резервного копирования была безболезненным и осуществимым вариантом?

Иногда отчет выглядел лучше 45 минут, час или два дня назад.

  • Совместная работа: Большую часть времени я анализирую данные сам, поэтому не получил бы преимуществ совместной системы контроля версий.

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

  • Пора оценить и изучить систему контроля версий

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

Выберите популярную систему и действуйте!

  • Возможное увеличение сложности по сравнению с моей текущей системой управления файлами

У вас есть одна папка, скажем Projects , которая содержит все папки и файлы, связанные с вашей деятельностью по анализу данных? Если это так, то установка на него управления версиями увеличит сложность вашей файловой системы ровно на 0 . Если ваши проекты разбросаны по вашему компьютеру, вам следует централизовать их, прежде чем применять контроль версий, и это приведет к уменьшению сложности управления вашими файлами - поэтому у нас есть папка Documents после всего.

  1. Стоит ли контроль версий усилий?

Да! Он дает вам огромную кнопку отмены и позволяет легко переносить работу с машины на машину, не беспокоясь о таких вещах, как потеря USB-накопителя.

2 Каковы основные плюсы и минусы внедрения контроля версий?

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

3 Какова хорошая стратегия для начала работы с контролем версий для анализа данных с помощью R (например, примеры, идеи рабочего процесса, программное обеспечение, ссылки на руководства)?

Храните файлы, которые генерируют данные или отчеты, под контролем версий, быть селективный. Если вы используете что-то вроде Sweave , храните ваши файлы .Rnw , а не файлы .tex , созданные из них. Сохраните необработанные данные, если их будет сложно получить повторно. Если возможно, напишите и сохраните сценарий, который собирает ваши данные, и другой сценарий, который очищает или изменяет их, а не хранит изменения в необработанных данных.

Что касается изучения системы контроля версий, я настоятельно рекомендую Git и это руководство к нему.

На этих веб-сайтах также есть несколько полезных советов и приемов, связанных с выполнением определенных действий с Git:

83
ответ дан 23 November 2019 в 22:26
поделиться

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

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

Если это так, я бы рекомендовал использовать систему контроля версий. Научиться этому несложно.

7
ответ дан 23 November 2019 в 22:26
поделиться

Стоит ли управление версиями затраченных усилий?

большое ДА.

Каковы основные плюсы и минусы внедрения контроля версий?

Плюсы: вы можете отслеживать, что делали раньше. Особенно полезно для латекса, так как вам может понадобиться старый абзац, который вы удалили! Когда ваш компьютер выходит из строя или вы работаете над новым, ваши данные восстанавливаются на лету.

минусы: нужно сделать некоторые настройки.

Какова хорошая стратегия для начала работы с контролем версий для анализа данных с помощью R (например, примеры, идеи рабочих процессов, программное обеспечение, ссылки на руководства)?

Просто начните ее использовать. Я использую черепаховый SVN в Windows в качестве клиентского инструмента, и у моего отдела есть svn-сервер, я помещаю туда весь свой код и данные (да, вы также помещаете туда свои данные!).

6
ответ дан 23 November 2019 в 22:26
поделиться

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

Преимущества;

  • записывайте свои исследования, а также делайте их резервные копии, (теги)
  • это позволяет вам пробовать разные идеи и возвращаться, если они не работают (ветвление)
  • Вы можете поделиться своими работают с другими людьми, и они могут поделиться своими изменениями с вами (я знаю, что вы не указали это, но это здорово)
  • Большинство систем контроля версий позволяют легко создать сжатый пакет для всех файлов под контролем в определенный момент, например, когда вы отправляете статью для публикации, это может помочь, когда другие рецензируют ваши статьи. (вы можете сделать это вручную, но зачем создавать эти процессы, когда это делает только система контроля версий)

Что касается наборов инструментов, я использую Git вместе с StatEt и ] Eclipse , который работает хорошо, хотя вам, конечно, не обязательно использовать Eclipse. Есть несколько подключаемых модулей Git для Eclipse , но я обычно использую параметры командной строки.

5
ответ дан 23 November 2019 в 22:26
поделиться

Я также занимаюсь написанием сценариев в одиночку и считаю, что это упрощает работу, а не усложняет ее. Резервное копирование интегрировано в рабочий процесс кодирования и не требует отдельного набора процедур файловой системы. Время, необходимое для изучения основ любой системы контроля версий, определенно будет потрачено не зря.

4
ответ дан 23 November 2019 в 22:26
поделиться

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

Если вы хотите где-то опубликовать свои результаты, у вас всегда должна быть возможность восстановить статус ваших скриптов в тот момент, когда вы их создали. Предположим, один из рецензентов обнаружил ошибку в одном из ваших скриптов: как узнать, какие результаты будут выполнены, а какие нет?

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

7
ответ дан 23 November 2019 в 22:26
поделиться

Я провожу экономические исследования, используя R и LaTeX, и всегда ставлю свою работу под контроль версий. Это похоже на неограниченную отмену. Попробуйте Bazaar, он один из самых простых в изучении и использовании, а если вы работаете в Windows, он имеет графический пользовательский интерфейс (TortoiseBZR).

Да, контроль версий дает дополнительные преимущества при работе с другими, но даже в сольных проектах это имеет смысл.

17
ответ дан 23 November 2019 в 22:26
поделиться

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

9
ответ дан 23 November 2019 в 22:26
поделиться

Контроль версий для самостоятельной разработки (любого типа) действительно интересен для:

  • изучения истории и сравнения текущей работы с прошлыми коммитами
  • ветвления и пробования разных версий для одного и того же набора файлов

Если вы не видите, что используете одну из этих двух основных функций управления версиями, простой инструмент резервного копирования может оказаться всем, что вам нужно.
Если вам действительно нужны эти функции, вы также получите резервную копию (например, с помощью git bundle )

4
ответ дан 23 November 2019 в 22:26
поделиться

Я девять лет проработал в аналитическом магазине и внедрил там идею контроля версий для наших аналитических проектов. Разумеется, я очень верю в контроль версий. Однако я бы сделал следующие замечания.

  1. Контроль версий может быть неуместен, если вы проводите анализ для возможного использования в суде. Не думаю, что это относится к вам, но наши клиенты очень нервничали бы, если бы знали, что каждая версия каждого сценария, который мы когда-либо создавали, может быть обнаружена. Мы использовали контроль версий для модулей кода, которые повторно использовались в нескольких заданиях, но не использовали контроль версий для кода конкретного задания по этой причине.
  2. Мы обнаружили, что наибольшую пользу контроль версий приносит при хранении готовых модулей кода, которые повторно используются в нескольких проектах. Например, у вас может быть особый любимый способ обработки определенных экстрактов Census PUMS. Организуйте этот код в каталог и поместите его в VCS. Затем вы сможете проверять его в каждом новом проекте каждый раз, когда он вам понадобится. Может быть даже полезно создать специальные ветки определенного кода для определенного проекта, если вы выполняете специальную обработку определенного общего набора данных для этого проекта. Затем, когда вы закончите работу над проектом, решите, сколько из вашего специального кода нужно слить обратно в основную ветку.
  3. Не помещайте обработанные данные в систему контроля версий. Только код. Нашей целью всегда было иметь полный набор сценариев, чтобы мы могли удалить все наши внутренние обработанные данные, нажать кнопку и получить все цифры для отчета заново. Только так можно быть уверенным, что в ваших данных не живут старые ошибки".
  4. Чтобы убедиться, что ваши результаты действительно полностью воспроизводимы, недостаточно просто хранить код в VCS. Очень важно тщательно отслеживать, какая версия каких модулей была использована для создания того или иного результата.
  5. Что касается программного обеспечения, то мне очень повезло с Subversion. Она проста в настройке и администрировании. Я понимаю привлекательность новомодных распределенных VCS, таких как git и mercurial, но я не уверен, что у них есть какие-то сильные преимущества, если вы работаете в одиночку. С другой стороны, я не знаю никаких отрицательных сторон их использования - я просто не работал с ними в аналитической среде.
23
ответ дан 23 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

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