[Проект(и)]Go Imports Upgrade, Hot code reload, DVKS, Go Change Tracer

  1. Имам няколко идеи за проект. Накарая ще се спра над една, но на първо време искам да попитам кои от изброените са изобщо подходящи. Ще допълня описанията, ако не са изчерпателни.

    1. Go imports upgrade:

    По настоящем go import прави следното:

    INPUT:

    import (
        "fmt"
        "github.com/gorilla/mux"
        "io/ioutil"
    
        "code.fmi.com/x/config"
        opentracing "github.com/opentracing/opentracing-go"
        "net/url"
    
        uuid "github.com/satori/go.uuid"
    
    
        "code.fmi.com/x/config"
    
        "crypto/sha1"
    )
    

    OUTPUT:

    import (
        "fmt"
        "io/ioutil"
    
        "github.com/gorilla/mux"
    
        "net/url"
    
        "code.fmi.com/x/config"
        opentracing "github.com/opentracing/opentracing-go"
    
        uuid "github.com/satori/go.uuid"
    
        "code.fmi.com/x/config"
    
        "crypto/sha1"
    )
    

    PROJECT IDEA:

    import (
        "fmt"
        "net/url"
        "io/ioutil"
        "crypto/sha1"
    
        "github.com/gorilla/mux"
        uuid "github.com/satori/go.uuid"
        opentracing "github.com/opentracing/opentracing-go"
    
        "code.fmi.com/x/config"
        "code.fmi.com/x/config"
    )
    

    2. Hot code Reload

    При запеметяване на файл от някакъв проект, да се презареди самия проект. Това означава да се компилира с новите промените и да пусне наново.

    3. Distributed Кey Value Store

    Дистрибутиран Key-Value store, който менажира записи с формат:

    key:blob_value
    

    4. Go Change Tracer

    За множество от променени файлове F, да се върне множество от директории D, където всеки член да D отговаря на слените условия:

    • поддиректория на текущата working directory
    • съдържа поне един файл *_test.go, който има depedency(транзитивно или директно) от пакети, съдържащи файл от множеството F

    F може да е изхода от git diff --name-only

    Може да се направи кеш на изхода, ако няма промени.

  2. Мнението ми набързо:

    1. Първо пусни тикет в https://github.com/golang/go/issues . Второ на мен ми се вижда малко главно като код. Навярно ще ти отнеме много повече време да разбереш как работи goimports и след което ще трябва да напишеш няколко реда в които правиш някакво сортиране.

    2. Има множество такива примерно rerun - иначе като сложност долу горе от това нагоре.

    3. Това навярно ще е интересен проект, но ще трябва да го доразвиеш като идея и навярно ще ти кажем че има 10 такива разработки след като направим няколко google търсения

    4. Бих предпочел ако не зависи от git а има възможност за поне повече cvs-та, но иначе на мен ми харесва като идея и би било полезно. Не знам дали има нещо подобно. Също така не знам колко ще е трудно и завъртяно.

    Пояснявам че това че вече има имплементирано нещо което ти си описал не означава че не може да го правиш. Казвам го за да знаеш, да потърсиш и да видиш какво и как правят. Може би тяхната имплементация ще ти върши работа и на теб за нуждите които имаш. При което може да решиш да правиш нещо друго което ти искаш, но все още не имплементирано подходящо от други.

  3. Distributed Key Value Store

    Fт доста време насам си търся повод да разгледам Dynamo paper-a. ще базирам проекта си на него.

    Тъй като става дума за дистрибитирана система, за външния свят тя ще има следния интерфейс

    • Get( key ) - достъпва стойност по ключ
    • Set( key, value ) - съхранява стойността за ключ и в паметта и в
    • Delete( key ) - изтрива запис със ключ

    Вътрешно вече ще задълбая по моментите с репликация, load balancing и прочие

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