Редактирование: GitHub

Перейти к: навигация, поиск

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
Данная страница посвящена текущим проектам НОЦ «Газпромнефть-Политех» и методологии разработки программного обеспечения.
+
Централизованный аккаунт: [https://github.com/gpn-polytech @gpn-polytech]
  
== Централизованный репозиторий ==
+
По адресу почты  '''@spbstu.ru''' можно оформить [https://education.github.com/pack студенческий аккаунт].
  
На сайте '''[https://github.com GitHub]''' создан общий аккаунт для размещения ПО, разрабатываемого в НОЦ «Газпромнефть-Политех». Каждому проекту может быть создан свой приватный '''[https://ru.wikipedia.org/wiki/Git git]'''-репозиторий для сохранения исходных кодов, библиотек, документации и прочих файлов.
+
Приложение: [https://desktop.github.com GitHub Desktop].
 
 
Такое решение преследует несколько целей. Во-первых, обеспечить сохранность ключевых версий ПО (как минимум, передаваемых заказчикам). Во-вторых, упростить взаимодействие и передачу программ между сотрудниками НОЦ. Нередко получается, что при передаче исходных кодов забывают удалить ненужные файлы (экспериментальные), указать файлы с входных данных, описать необходимые библиотеки и зависимости или ключи сборки. В-третьих, сформировать внутри НОЦ понимание того, какие проекты сейчас разрабатываются и на какой стадии они находятся. Также репозитории можно использовать в демонстративных целях.
 
 
 
Дополнительно репозитории могут хранить литературу и отчётные документы по проекту, списки известных ошибок и предлагаемых изменений, визуализацию результатов.
 
 
 
=== Как подключиться ===
 
 
 
Общий пользователь НОЦ: [https://github.com/gpn-polytech @gpn-polytech]
 
 
 
Подключение к приватным репозиториям требует аккаунт на '''[https://github.com/join GitHub]'''. Регистрация полностью бесплатна (дополнительно существуют платные тарифы). По адресу почты в домене '''@spbstu.ru''' легко оформить [https://education.github.com/pack студенческий аккаунт], предоставляющий больше возможностей для личного использования.
 
 
 
Для работы можно использовать любую программу, поддерживающую '''git''', в том числе консольную или встроенную в текстовый редактор. Бесплатное приложение  [https://desktop.github.com GitHub Desktop] предоставляет простой в использовании графический интерфейс с достаточно широким функционалом.
 
 
 
За настройкой репозиториев обращайтесь к [[Старобинский Егор|Егору Старобинскому]].
 
 
 
=== Ограничения ===
 
 
 
Рекомендуется хранить в каждом репозитории не более 1 Гб данных.
 
Вес отдельного файла не может превышать 100 Мб.
 
 
 
Подробнее:
 
* [https://help.github.com/articles/what-is-my-disk-quota/ Conditions for large files]
 
* [https://help.github.com/articles/conditions-for-large-files/ What is my disk quota?]
 
  
 
== Участники ==
 
== Участники ==
Строка 54: Строка 31:
  
 
'''Ответственный''': [[Старобинский Егор]]
 
'''Ответственный''': [[Старобинский Егор]]
 
== Системы контроля версий ==
 
 
Использование систем контроля версий позволяет упростить процесс разработки ПО, с одной стороны раздельно сохраняя модификации файлов, а с другой — обеспечивая разработчика инструментом объединения различных модификаций в единую версию. Примерами таких систем являются '''[https://git-scm.com Git]''', '''[https://subversion.apache.org Subversion]''' ('''svn'''), '''[https://www.mercurial-scm.org Mercurial]'''.
 
 
Для сохранения изменений достаточно выбрать модифицированные файлы (все или часть) и написать короткое сообщение с описанием сделанных изменений ('''commit'''). Этот подход преследует две цели. Во-первых, требуемую версию программы проще будет найти по комиту, если потребуется вернуться на несколько итераций назад (или даже на год назад). Во-вторых, так стимулируют разработчика сохранять изменения не скопом, а по категориям изменений: если была исправлена ошибка в программе, обновлена документация и добавлена новая функция, логично создать три раздельных комита.
 
 
Если требуется проверить какую-то идею или же разные разработчики одновременно правят одни и те же файлы, удобно создать параллельные ветки и вести работу независимо от основной версии программы. Затем, после завершения и проверки внесённых изменений, объединить (слить) ветки в одну. Процедура объединения может потребовать небольшого вмешательства человека, особенно если один и тот же фрагмент кода претерпел разные изменения между ветками.
 
 
Чтобы вернуться (откатиться) к более ранним версиям разрабатываемой программы, достаточно найти нужный комит.
 
 
Использование '''git'''-систем особенно удобно при разработке открытого ПО, так как существует большой набор бесплатных (для открытых лицензий) инструментов для '''[https://ru.m.wikipedia.org/wiki/Непрерывная_интеграция непрерывной интеграции]''' ('''Continuous Integration''').
 
  
 
== Сборка программ ==
 
== Сборка программ ==
Строка 73: Строка 38:
 
=== Автоматическая сборка ===
 
=== Автоматическая сборка ===
  
Как на '''Unix'''-системах, так и на '''Windows''' возможно использование '''Make'''-файлов ('''[https://en.m.wikipedia.org/wiki/Make_(software) Makefile]''') — мощного инструмента автоматизации и настройки сборки. На '''Linux''' и '''macOS''' сборка с '''Makefile''' может быть осуществлена программой '''make''' или '''gmake''', на '''Windows''' — программой '''[https://msdn.microsoft.com/en-us/library/dd9y37ha.aspx nmake]''', идущей в комплекте с '''Visual C++ Build Tools''' и '''Visual Studio'''. Существует также специальная утилита '''[https://cmake.org CMake]''', позволяющая сгенерировать '''Makefile''' под целевую платформу автоматически (на основе конфигурационных файлов).
+
Как на '''Unix'''-системах, так и на '''Windows''' возможно использование '''Make'''-файлов ('''[https://en.m.wikipedia.org/wiki/Make_(software) Makefile]''') — мощного инструмента автоматизации и настройки сборки. На '''Linux''' и '''macOS''' сборка с '''Makefile''' может быть осуществлена программой '''make''' или '''gmake''', на '''Windows''' — программой '''nmake''', идущей в комплекте с '''Visual Build Tools''' и '''Visual Studio'''.
  
 
=== C/C++ ===
 
=== C/C++ ===
 
При сборке лучше явно задавать требуемый уровень оптимизации. Для отладочных сборок это обычно '''O0''' (без оптимизаций), для релизных — '''O3''' или '''Ox''' (максимальная оптимизация скорости).
 
При сборке лучше явно задавать требуемый уровень оптимизации. Для отладочных сборок это обычно '''O0''' (без оптимизаций), для релизных — '''O3''' или '''Ox''' (максимальная оптимизация скорости).
Директивы препроцессора позволяют разграничить функционал для разных типов сборки (например, добавлять вывод тестовой информации), а также автоматически дополнять программу информацией об условиях сборки (время, компилятор, сборочная платформа, целевая платформа и пр.).
 
  
 
=== Python ===
 
=== Python ===
Строка 122: Строка 86:
 
По умолчанию '''doxygen''' поддерживает '''C++''', '''Python''' и другие языки ([http://www.stack.nl/~dimitri/doxygen/manual/features.html список возможностей]).
 
По умолчанию '''doxygen''' поддерживает '''C++''', '''Python''' и другие языки ([http://www.stack.nl/~dimitri/doxygen/manual/features.html список возможностей]).
 
Также есть [http://www.stack.nl/~dimitri/doxygen/helpers.html ряд расширений], добавляющих поддержку '''Matlab''', позволяющих интегрировать '''doxygen''' в '''Visual Studio''' и др.
 
Также есть [http://www.stack.nl/~dimitri/doxygen/helpers.html ряд расширений], добавляющих поддержку '''Matlab''', позволяющих интегрировать '''doxygen''' в '''Visual Studio''' и др.
 
== Примеры ==
 
 
=== Gitignore ===
 
 
В файле '''.gitignore''' указываются файлы и папки в '''git'''-репозитории, появление и изменения которых не нужно отслеживать. Например, исполнительные файлы и различные временные файлы, генерируемые при сборке, по ряду причин не принято загружать в репозиторий.
 
 
[https://github.com/github/gitignore Шаблоны '''gitignore''' для разных языков программирования]
 
 
=== Makefile ===
 
 
'''Make'''-файлы для '''Window''' и '''Unix''' имеют [https://cognitivewaves.wordpress.com/makefiles-windows/ существенные различия]. Выбор, какой '''Makefile''' использовать при сборке, обычно делается с помощью ключа '''-f'''.
 
 
[Пример для '''Windows'''] (zip)
 
 
[Пример для '''Unix'''] (zip)
 
 
=== NSIS ===
 
 
[https://nsis.sourceforge.io/Category:Code_Examples Примеры на сайте '''NSIS''']
 
 
[Пример для NSIS2] (zip)
 
 
=== Doxygen ===
 
Все настройки указываются в текстовом файле конфигураций. Для старта генерации достаточно при запуске '''doxygen''' в качестве аргумента указать путь до конфигурационного файла. При использовании графического интерфейса конфигурации можно сохранять и загружать из текстового файла.
 
 
Пользователям '''Unix'''-систем нужно быть внимательными с выбором кодировок: по умолчанию лучше использовать кодировку '''utf-8''', однако при генерации '''rtf'''-документа кодировка как конфигурационного файла, так и выходных файлов должна быть '''cp-1251'''.
 
 
[http://mech.spbstu.ru/images/2/27/Doxygen.zip Пример для '''C++''' и '''Python'''] (zip)
 
 
=== Catch2 ===
 
На языках, не гарантирующих коммутативность алгебраических действий, могут быть сложности в тестах при сравнении чисел. '''C++''' относится к таким языкам, поэтому для проверки равенства двух чисел корректнее сравнивать модуль их разницы с другим числом, близким к нулю.
 
 
[https://github.com/catchorg/Catch2/blob/master/docs/tutorial.md Примеры на странице '''Catch2''']
 
 
[http://mech.spbstu.ru/images/c/cc/Catch.zip Пример для '''C++'''] (zip)
 
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)
Источник — «http://tm.spbstu.ru/GitHub»