Pull to refresh
11
0
Send message
Ну тут в основном работа по фронтенду. От социальной сети нам надо только название этой сети и ид пользователя внутри нее. В целом регистрация остается той же, кроме добавки двух дополнительных полей в базу данных.

Для разворачивания проекта нужно только поправить конфиги и тот путь, который много где повторяется. Да, это небольшой косяк. И еще установить модули из require. Всё это в сумме не должно занять больше часа. Трудности могут возникнуть только у человека, далекого от программирования (но я писал, что готов помочь тем, кому интересно этим заняться)
Я изначально не планировал интеграцию с соцсетями, как и привязку по номеру телефона, потому что это противоречит политике приватности пользователей на сайте. Но могу сказать что это у меня заняло бы не больше половины рабочего дня.
Я соглашусь с Вами, что разворачивание чата под свой сервер будет требовать множественные правки. Но я вообще когда писал этот чат, не думал, что буду выкладывать исходники. Для движка конечно слабовато. Но это и не движок. Это просто сайт, который я собрал на коленке под свой сервер. А сейчас я надеюсь, что кто-нибудь оценит как там всё устроенно, и продолжит работу над ним. Ведь несмотря на недостатки кода, чат получился весьма качественным и многофункциональным.
Там только обработка хттп запросов и сообщений от клиентского сокета. Конечно отсутствие комментариев не позволяет интерпретировать код мгновенно в своей голове, но если вы захотите внести какие-либо правки, вы легко разберетесь.
Это мелочи. Вы видите недостатки, они есть. Но они везде будут. Но это не значит что код плохой. Он простой и понятный, оптимизированный. От того что вы вынесете несколько часто упоминаемых переменных, код не особо изменится.
Это мало, даже наизусть можно выучить и читать как стихотворение. Мне наоборот нравится такая компактность, когда всё в одном файле и нет такого, что один код ссылается на другой, тот на третий, третий на четвертый и т.д. (как в битриксе, например). Поэтому в нём легко разобраться даже новичку — абсолютно все функции сервера под рукой и в одном месте.
В основной комнате есть небольшая документалочка по форматированию сообщений. А так мне кажется, интерфейс интуитивно понятен. Подробное описание всех фич есть тут.

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

Код сервера не очень большой и я не вижу ничего плохого чтобы держать его отдельно (возможно имеет смысл вынести только конфиги). Вообще меня больше смущает клиентская часть.
Что именно Вам не нравится? Оформление? Код?
Я прекрасно понимаю что такое гитхаб — я не умственно отсталый.
Прошу прощения за такую подачу материала. Как я уже сказал, я только недавно начал свою работу с гитхабом и не сразу разобрался, как добавить каталог.
Теперь я оформил репозиторий как надо.
Ну я чисто на интерес делал. Вообще не вижу необходимости использовать програмные модули для бд. вообще не понимаю, какой в них смысл (кроме того что легко перенести на другую бд). мне кажется писать запрос на прямую — очень удобно, если вы знаете язык SQL, и еще это более гибко. Я достаточно давно занимаюсь веб-программированием, но к общению с БД через посредника так и не привык.
>Mattermost, ejabberd
Если честно, первый раз слышу.

Вообще в посте есть ссылка на вики-статью. Если вам правда интересно, там всё написано.
Я обещаю потом поправить. Хотя в принципе не думаю, что такая подача отпугнет тех, кто заинтересовался проектом.
Прошу прощения, что не оформил гитхаб как следует. На самом деле я не так давно им пользуюсь, и не разобрался, как загрузить всю структуру каталога сразу.
Выкладываю свой код тетраскопа для Go
package main

import (
    "image"
    "image/color"
    "image/draw"
    "image/png"
    "os"
     "strings"
    "strconv"
    //"fmt"
)

func ConvertToColor(s string) (r string) {
    r = s
    if len(s)<6 {
        r = s+strings.Repeat("0", 6-len(s))
    } else if len(s)>6 {
        r = string(s[0:6])
    }
    return r
}

func ParseHexColorFast(s string) (c color.RGBA) {
    c.A = 0xff

    if s[0] != '#' {
        return c
    }

    hexToByte := func(b byte) byte {
        switch {
        case b >= '0' && b <= '9':
            return b - '0'
        case b >= 'a' && b <= 'f':
            return b - 'a' + 10
        case b >= 'A' && b <= 'F':
            return b - 'A' + 10
        }
        return 0
    }
    c.R = hexToByte(s[1])<<4 + hexToByte(s[2])
    c.G = hexToByte(s[3])<<4 + hexToByte(s[4])
    c.B = hexToByte(s[5])<<4 + hexToByte(s[6])
    return
}

func main() {
    
    R:=1024
    D:=R*2    
    new_png_file := "tetrascope.png"
    
    myimage := image.NewRGBA(image.Rect(0, 0, D, D))
    bgcolor := color.RGBA{0, 0, 0, 0}
    draw.Draw(myimage, myimage.Bounds(), &image.Uniform{bgcolor}, image.ZP, draw.Src)

    for x:=0; x<R; x++ {
        for y:=0; y<R; y++ {
            x1 := R-x-1
            x2 := R+x-1
            y1 := R-y-1
            y2 := R+y-1
            if x*x+y*y <= R*R {
                var c int64;                
                c = int64(x*x+y*y);
                col := "#"+ConvertToColor(strconv.FormatInt(c, 16))
                //fmt.Println(col, x, y)
                color := ParseHexColorFast(col)
                pixel1 := image.Rect(x1, y1, x1+1, y1+1)
                pixel2 := image.Rect(x1, y2, x1+1, y2+1)
                pixel3 := image.Rect(x2, y1, x2+1, y1+1)
                pixel4 := image.Rect(x2, y2, x2+1, y2+1)
                draw.Draw(myimage, pixel1, &image.Uniform{color}, image.ZP, draw.Src)
                draw.Draw(myimage, pixel2, &image.Uniform{color}, image.ZP, draw.Src)
                draw.Draw(myimage, pixel3, &image.Uniform{color}, image.ZP, draw.Src)
                draw.Draw(myimage, pixel4, &image.Uniform{color}, image.ZP, draw.Src)
            }
        }   
    }

    myfile, err := os.Create(new_png_file)     // ... now lets save imag
    if err != nil {
        panic(err)
    }
    png.Encode(myfile, myimage)   // output file /tmp/two_rectangles.png
}

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

Information

Rating
Does not participate
Registered
Activity