- PVSM.RU - https://www.pvsm.ru -
Здравствуй!
Многие команды разработчиков участвую в конкурсах и акселераторах. Выигрывают призы или получают финансирование.
Что делать, если вы не успели сесть в проходящий поезд?
Есть несколько вариантов. Один из них это начать свой проект и ждать когда он взлетит, при этом тратить время на создание кода и рекламу проекта в конкурсах, акселераторах, переговорах с инвесторами. В случае успеха надо находить специалистов поднимать инфраструктуру. Ряд виртуальных или реальных серверов для сайта, программистов, базы данных, клиентов. В итоге, многие проекты так и не взлетев попадают на GitHub и другие подобные ресурсы.
Можно просмотреть список удачных проектов, за которые уже сегодня платят деньги, выбрать тот который более интересен лично вам и начать получать за свою работу, пусть и не большую но компенсацию.
Вот полный список проектов:
tip4commit.com/projects [1]
Вот дополнительный:
prime4commit.com/projects/ [2]
Например выберем проект OpenBazaar. Он может пригодиться в каждом магазине. За него неплохо платят. Серверная часть там на python. Проект находится на ранней стадии, группа программистов ещё формируется и только выходит из альфы.
Смотрим на детали процесса генерации кода, прямо на сервере интеграции:
travis-ci.org/OpenBazaar/OpenBazaar/builds/36072087 [3]
Замечаем что проект использует тесты на стиль кода и покрытие. Можем сразу же посмотреть статистику:
coveralls.io/builds/1249548 [4]
Видим, что простой работы по созданию строк коментариев, правок стилей до сих пор достаточно. И цена такой работы не маленькая.
Иногда это 1$ за 1 исправленную строку кода.
tip4commit.com/github/OpenBazaar/OpenBazaar [5]
Чтож ознакомимся с содержанием требований к коду, который претендует стать частью проекта:
github.com/OpenBazaar/OpenBazaar/blob/master/CONTRIBUTING.md [6]
Всё довольно реально. Но бизнеса для большой компании в этом нет. Так как цена за один патч всё таки довольно маленькая, если сравнивать с зарплатой программиста в крупной и средней компании. На патч требуется немного времени, но до его принятия может пройти несколько часов, а порой и дней.
Для Python можно использовать инструмент статистического анализа Pylint. Использовать его легко. Надо просто набрать:
pylint <имя вашего модуля>.py
И мы сразу видим строчки на которые стоит обратить внимание для исправления ошибок, правки стиля и т.д.
Так же можно использовать примеры из этого пакета для автоматического парсинга кода и дополнения. Таким способом, можно написать скрипт, который будет самостоятельно добавлять параметры в комментарии для тестов покрытия, и другие серийные правки. Вот примеры таких скриптов раз [7], два [8], три [9].
В целом можно даже организовать рабочую группу программистов. Взять бесплатно вирутальный сервер: cloud.lab.fi-ware.org [10]
Это Европейский проект от компании Telefonica. Мне спокойно давали IP адреса бесплатно в этом облаке.
На первое время это достаточно хорошее решение. В последствии можно переехать на что то более независимое.
Начать можно с бесплатных инструментов для анализа кода: pmccabe, тесты памяти (DUMA/DML/VALGRIND). Для python это pylint.
В википедии есть целые статьи [11] по подобным инструментам [12].
Если со временем накопятся инструменты для работы — тесты, компиляторы, скрипты, инструменты статического и динамического анализа кода, лицензии на платные сервисы Coverity, Klocwork, можно посмотреть и в сторону PVS-Studio. Всё это можно хранить на таком облачном сервере.
Детали работы с GitHub и практически используемых команд git, не раз [13] и не два [14] были описаны на хабр:
git clone git://github.com:username/OpenBazaar.git
cd OpenBazaar
git remote add upstream git://github.com/OpenBazaar/OpenBazaar.git
git fetch upstream
git checkout -b feature #Создаёт новую ветвь, названную «feature» и делает её активной
Вот, теперь творите добро (и пусть оно будет выражаться в коммитах).
git push origin feature #Загружает изменения в текущей ветви в origin в ветвь feature
git clone git://github.com:username/OpenBazaar.git
cd OpenBazaar
git remote add upstream git://github.com/OpenBazaar/OpenBazaar.git
git fetch upstream
git checkout feature
git rebase -i master
= squash = — В этом месте откроется окно с текстовым файлом. Если заменить первое слово в строке на squash, то после записи файла патч этой строки объединится с предыдущим (если там нет squash). Таким образом несколько патчей можно соединить в один.
git push -f origin feature
git checkout master
git remote add upstream git://github.com/OpenBazaar/OpenBazaar.git
git pull --rebase upstream master
git checkout feature
git rebase master
= fix any conflicts = — Открыть файлы о которых говорит git в текстовом редакторе. Найти строку '<<<' и объединить части из 2 файлов в один.
git push -f origin feature
После этого на репозитории автоматически запускается тест (сейчас это компиляция с установкой зависимостей и проверка стиля кода, а хотелось бы добавить статический и динамический анализ и автоматическое дополнение комментариев описанием аргументов и возвращаемых значений).
MinecraftForge
github.com/MinecraftForge/MinecraftForge [17]
github.com/overviewer/Minecraft-Overviewer [18]
github.com/RoyalDev/RoyalCommands [19]
ufoai.org/wiki/News [20]
Miner
github.com/luke-jr/bfgminer [21]
github.com/CoiniumServ/CoiniumServ [22]
github.com/selaux/miner-dashboard [23]
github.com/forrestv/p2pool [24]
github.com/darkwallet/darkwallet [25]
prime4commit.com/projects/21 [26]
Android wallet
github.com/mycelium-com/wallet [27]
Tox
github.com/Astonex/Antox [28]
github.com/irungentoo/toxcore [29]
OT
github.com/Open-Transactions/opentxs [30]
Твистер под Android
github.com/miguelfreitas/twister-webview-app [31]
github.com/miguelfreitas/twister-core [32]
github.com/miguelfreitas/twister-html [33]
raspberrypi
github.com/xbmc/xbmc [34]
Navigation
github.com/osmandapp/Osmand [35]
Python
github.com/numpy/numpy [36]
github.com/scipy/scipy [37]
Вот пример перечисления средств за найденные статическим анализатором кода ошибки:
tip4commit.com/projects/728/tips [38]
Большое спасибо всем за внимание.
Ссылка на код гитхаб: github.com/OpenBazaar/OpenBazaar [39]
Автор: ignat99
Источник [40]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/70323
Ссылки в тексте:
[1] tip4commit.com/projects: https://tip4commit.com/projects
[2] prime4commit.com/projects/: http://prime4commit.com/projects/
[3] travis-ci.org/OpenBazaar/OpenBazaar/builds/36072087: https://travis-ci.org/OpenBazaar/OpenBazaar/builds/36072087
[4] coveralls.io/builds/1249548: https://coveralls.io/builds/1249548
[5] tip4commit.com/github/OpenBazaar/OpenBazaar: https://tip4commit.com/github/OpenBazaar/OpenBazaar
[6] github.com/OpenBazaar/OpenBazaar/blob/master/CONTRIBUTING.md: https://github.com/OpenBazaar/OpenBazaar/blob/master/CONTRIBUTING.md
[7] раз: https://bitbucket.org/logilab/pylint/src/1314a9bf883d4c08407e92327dcedea61e483626/examples/custom.py
[8] два: https://bitbucket.org/logilab/pylint/src/1314a9bf883d4c08407e92327dcedea61e483626/checkers/logging.py
[9] три: https://bitbucket.org/logilab/pylint/src/1314a9bf883d4c08407e92327dcedea61e483626/test/unittest_checker_logging.py
[10] cloud.lab.fi-ware.org: http://cloud.lab.fi-ware.org
[11] статьи: http://en.wikipedia.org/wiki/Dynamic_program_analysis
[12] инструментам: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
[13] раз: http://habrahabr.ru/post/125999/
[14] два: http://habrahabr.ru/post/233719/
[15] github.com/libre-mesh: https://github.com/libre-mesh
[16] www.libre-mesh.org/: http://www.libre-mesh.org/
[17] github.com/MinecraftForge/MinecraftForge: https://github.com/MinecraftForge/MinecraftForge
[18] github.com/overviewer/Minecraft-Overviewer: https://github.com/overviewer/Minecraft-Overviewer
[19] github.com/RoyalDev/RoyalCommands: https://github.com/RoyalDev/RoyalCommands
[20] ufoai.org/wiki/News: http://ufoai.org/wiki/News
[21] github.com/luke-jr/bfgminer: https://github.com/luke-jr/bfgminer
[22] github.com/CoiniumServ/CoiniumServ: https://github.com/CoiniumServ/CoiniumServ
[23] github.com/selaux/miner-dashboard: https://github.com/selaux/miner-dashboard
[24] github.com/forrestv/p2pool: https://github.com/forrestv/p2pool
[25] github.com/darkwallet/darkwallet: https://github.com/darkwallet/darkwallet
[26] prime4commit.com/projects/21: http://prime4commit.com/projects/21
[27] github.com/mycelium-com/wallet: https://github.com/mycelium-com/wallet
[28] github.com/Astonex/Antox: https://github.com/Astonex/Antox
[29] github.com/irungentoo/toxcore: https://github.com/irungentoo/toxcore
[30] github.com/Open-Transactions/opentxs: https://github.com/Open-Transactions/opentxs
[31] github.com/miguelfreitas/twister-webview-app: https://github.com/miguelfreitas/twister-webview-app
[32] github.com/miguelfreitas/twister-core: https://github.com/miguelfreitas/twister-core
[33] github.com/miguelfreitas/twister-html: https://github.com/miguelfreitas/twister-html
[34] github.com/xbmc/xbmc: https://github.com/xbmc/xbmc
[35] github.com/osmandapp/Osmand: https://github.com/osmandapp/Osmand
[36] github.com/numpy/numpy: https://github.com/numpy/numpy
[37] github.com/scipy/scipy: https://github.com/scipy/scipy
[38] tip4commit.com/projects/728/tips: https://tip4commit.com/projects/728/tips
[39] github.com/OpenBazaar/OpenBazaar: https://github.com/OpenBazaar/OpenBazaar
[40] Источник: http://habrahabr.ru/post/237977/
Нажмите здесь для печати.