[Проект] GW2 API

  1. Здравейте!

    Та говорих с вас след лекциите за следната идея за проект:

    Имало едно време...
    

    ... ММО игри и много от нас са ги играли.

    Една игра е Guild Wars 2.

    Guild Wars 2 (ArenaNet) има API, за което се разбира тук. (слагат си официално информацията в уикито)

    В момента е v1, но е в разработка v2.

    Идея за проект:

    1. Go Bindings за GW2 API-то.

    Но! API-то е сравнително малко. Даже е доста малко! Ще изиска 10-20 wrapper функции.

    2. Приложение на API-то за някаква цел.

    Например:

    Актуално извличане на данни от акционерната къща.

    Съветване за инвестиции.

    Пътеводител.

    Създаване на offline книга с рецепти.

    Timer за World Events.

    И т.н.

    Какво мислите? :)

    Поздрави!

  2. Здрасти,

    1. промени си името на темата на '[Проект] <името на проекта>' (без кавичките) - името ще може да си го смениш по нататък но да си личи от първите символи че темата е за проект.

    2. На мен ми харесва - няма го за go все още... май :)

    3. Препоръчвам ти да напишеш много малко от API-то(един, два call-а) и да покажеш информацията от него по избрания от теб начин за приложението и после да решиш кое колко е голямо. Не забравяй че ще искаме и тестове.

    п.п. Проекта не ти е одобрен но изглежда добре.

  3. Идеята ти ми харесва. Самата библиотека (колкото и малка да е тя) искам да е в отделно хранилище като напълно независим проект. Искам първо нея да изпипаш и чак след това да си харесаш какво точно приложение да направиш, което да я използва.

  4. Ами като за начало в github общо взето не е нужно да правиш нищо - можеш да го използваш като просто някакво публично репо, което да синхронизираш с локалното когато решиш.

    Инсталираш си git на компютъра (ще ти добави git команда в конзолата).

    Полезните команди, които сигурно ще ти потрябват са:

    • git clone https://github.com/yasvisu/gw2api.git
    • cd gw2api
    • while (thereIsMoreAwesomeStuffToDo)
      • Правиш промени по кода.
      • git add . или git add file1 file2 file3 - Добавя файловете, по които си писал (. е всичко)
      • git commit -m "Do awesome stuff" - Добавяш промените в локалното репо
      • git push - казваш промените да се обновят и в github

    Notes:

    • Общо взето това е всичко, което ти трябва.
    • Ако винаги искаш да commit-неш всичко което си правил вместо да правиш git add . можеш и директно да добавиш -a флаг при commit.
    • git push просто ще копира промените в github - не е нужно при всяка промяна да го update-ваш - ако искаш може, но не е задължително.
    • Тоест на теория би могъл и просто след всяка промяна да пишеш просто git commit -a -m "Awesome stuff"
    • В случай, че си забравил някаква малка дреболия при последния commit можеш да го оправиш и да commit-неш пак, като подаваш --amend - това ще добави и последните промени към последния commit (note: "сигурно ще трябва пак да си напишеш съобщението")

    Като цяло повечето неща, с които поне аз се сблъскам, които излизат от тези команди са ми нужни поради колаборативна работа с други хора - на теория пак можеш да използваш неща като правене на branching и merging, но когато работиш сам е по-удобно да си стоиш само в основния клон. git трябва да ти помага, а не да ти пречи - така че като за начало прави съвсем малко неща и си работи все едно го няма. Ако ти хрумне да правиш нещо по-интересно най-добре погледни в stackoverflow.

    Ако пък моите обяснения не ти изглеждат ясни - ето и линк към един tutorial.

  5. Ами като цяло git, python, ruby и предполагам golang се работи по-лесно с Linux, поне при мен. С Python-a нямаш напредстава колко проблеми си спестих като минах на Linux, основно свързани с настройки и инсталиране на библиотеки, свързване с github и т.н. Ето ти едно туториалче и от мен. Ето ти и как се настройва с някакъв tool под windows. Иначе моята работа с github е горе долу следната- правя промяна git status, виждам какво е променено, git add за промените и git commit. Все още винаги се чудя как да се измъкна от този git коментар, който трябва да го пишеш във vi. А да и след като си оправиш хранилището направи един .gitignore, за да не качваш всички глупости нагоре.

    Може да си вземеш студенско намаление тук

  6. Та GW2 API-то е готово от известно време вече.
    За проекта оттук нататък вижте flowchart-а.


    Планът!

    Да се напише програма, анализираща "акционерната къща" (TP-то) в играта. Една такава програма ще се нуждае от библиотека за достъп до GW2 API-то (готово). Също така ще има нужда от някакви методи за анализ на данните.

    Два метода:

    1. Анализ на дълбочина (Depth Analysis)
      • нужно е данните да се складират и допълват през определен интервал от време.
      • място за графики и прогнози.
    2. Анализ на трансформациите (Transformation Analysis)
      • взимат се актуални данни чрез API-то.
      • търсят се ценови данни за предмета и всичките му трансформации (какво произвежда предмета и какво се произвежда от него)
      • място за текущи съвети

    Между тези двете, тази дефиниция на проекта е почти програма "максимум" (като излкючим безкрайно много фийчъри). Каня се програма "минимум" да покрива зелените неща.

    Весели празници! :)

    Flowchart

    Легенда:
    готово- тъмнозелено
    лесно - светлозелено
    трудно - червено
    изпълнение - черните стрелки
    данни - сините стрелки

    Flow

  7. Дава грешка 403, сигурно трябва да share-неш експлицитно картинката със света от google service-а, в който е качена. Иначе, ако правилно разбирам само от текста какво искаш да направиш, идеята много ми харесва.

  8. Абе не съм сигурен, че нещата ми се изясниха особено след като видях картинката :smile:. Да разбирам, че в програма минимум (зелените неща) не включваш пазене на събраната историческа информация в база данни?

  9. Ок. Ако искаш, може да добавиш някакъв program-readable вариант на output-а (json/xml/csv), така че да можеш лесно да обработваш получените данни (пр. ръчно да ги набуташ в някаква база, чрез която после директно да правиш някакви исторически анализи).

Трябва да сте влезли в системата, за да може да отговаряте на теми.