Имя: Пароль:
IT
Веб-мастеринг
на чем писать сетевой сервис с размещением на хостинге?
0 p-soft
 
10.03.23
01:41
по примеру облака, простой сервис-посредник для обмена данными мобилы с компом?
скопились тут мелкие задачки..
61 Fragster
 
гуру
10.03.23
14:06
(58) большая часть висит на ИО + блокировках СУБД, о чем я тебе пишу в (47), Асмодей в (51)
затраты процессора на пхп и на го будут сравнимы (да, на ПХП цпу в разы больше, но в общей доле запроса это такой минимум, что им можно пренебречь). при этом от ошибок проектирования с бесконечным ростом какого-нибудь массива у тебя весь сервис твой не накроется в реальной работе за часы.
62 Garykom
 
гуру
10.03.23
14:18
63 Garykom
 
гуру
10.03.23
14:19
Имхо Go это (на данный момент времени) наилучший язык для написания бэкендов
Как 1С наилучшая платформа для ваяния учетных систем
64 Fragster
 
гуру
10.03.23
14:24
(62) https://i.imgur.com/YL4UlMp.png и чо? типа да, там дальнше идет график для 5000 одновременных запросов и там типа го всех делает. но в тесте у них числодробилка, что на интерпретируемых языках (т.е. все, кроме го) делать странно (хотя тут в пхп 8.х уже будет идти с предкомпиляцией, если правильно приготовить, и станет прям в разы быстрее).

а вообще статья про блокирующие операции и вычисление хэшей, а не про запросы к субд и реальность. А в реальности стэйтфулнесс сервисов на го, ноде и яве часто стреляет в ногу как-раз утечками (от кривого проектирования).
65 Garykom
 
гуру
10.03.23
15:54
(64) самый хитрый? выше и ниже посмотри
да в одном случае php оказался почти как go
но во всех прочих неа
66 Garykom
 
гуру
10.03.23
15:56
(65)+ причем оказался на уровне чисто потому что данная функция на С реализована в PHP
если взять какой алгоритм на языке PHP и там будет совсем плохо
67 Грю
 
10.03.23
16:50
(11) Нода хороша тем, что простой и понятный язык, который к тому же единственный подходящий как для фронта так и для бэка.
Мускуль хорош тем, что очень популярный и тоже простой. По нему много документации, и людей, способных помочь советом.
А что еще надо?
68 Грю
 
10.03.23
16:53
Если спрашивашь чем хорош гитхаб - то бесплатностью и надежностью. Одним словом - беззаботностью. Один раз закинул туда файл, и забыл про него. Он там будет вечно, ничего с ним не станет если забудешь заплатить или если мелкие провайдеры начнут закрываться из-за всяких кризисов и прочего.
69 Garykom
 
гуру
10.03.23
16:56
70 Fragster
 
гуру
10.03.23
17:07
(69) зато он обсыпан сахаром прикольным. а если ты думаешь, что с go get ситуация не как с npm install, то ты несколько ошибаешься
71 Грю
 
10.03.23
17:07
(21) PHP не рекомендую, если его еще не знаешь. Иначе придется изучать с нуля язык, который теряет популярность, и который не очень хороший сам по себе в принципе. Нет смысла тратить на это ресурсы. В то время как JS пригождается постоянно, даже в 1С используется, и по быстродействию хороший, и по удобству.
72 arsik
 
гуру
10.03.23
17:10
(71) JS - это для фронта, те люди, что пилят на нем бэк сумашедшие.
73 Грю
 
10.03.23
17:13
(69) 1. Приводить ссылку на хабр в качестве аргумента - позорно для программиста.
2. Там какой-то неудачник ругает язык программирования только потому, что ему попалась плохая библиотека. Это очень глупо.
3. Он использовал бабел вместо вебпака, за что и поплатился, потому что не высокого ума.

Не стоит доверять таким статьям, рассчитанным на ламеров.
74 Грю
 
10.03.23
17:16
(72) JS - это просто С-подобный язык. У него нет каких-то особенностей, делающих его языком только для фронта.
75 p-soft
 
10.03.23
17:23
(73) статья - перевод. там чувак стебется над библиотекой, в реальности, все что он пишет - шутка. но весело, да)
76 Garykom
 
гуру
10.03.23
17:25
(75) то что пишет нихрена не шутка
ибо зависимости в nodejs это пипец какой то
77 Garykom
 
гуру
10.03.23
17:26
js и nodejs прекрасная штука
но бибилиотеки это ужас

в итоге нормальный проект надо с нуля писать, самому а не завязываться на левые сторонние либы
78 Грю
 
10.03.23
17:42
(75) Ну тем более.
79 Грю
 
10.03.23
17:45
(77) Бред какой-то. Плохие библиотеки - это не свойство Node.js. Это явление есть во всех ЯП. Говорить что JS плохой, потому что на нем кто-то написал плохую библиотеку - это значит признать что других недостатков у JS нет, раз пришлось выискивать такие нелепые.
80 magicSan
 
10.03.23
19:13
(77) да, по этому только хард только пхп
81 Asmody
 
10.03.23
21:52
Что вы заладили "php, node, go"?
В мире столько прекрасных языков, пиши - не хочу.
clojure, elixir, nim, scala, rust.
Да тот же питон, в конце концов! Вот уж где точно есть вообще ФФФсё!
82 NorthWind
 
10.03.23
21:54
(0) питончик
83 Локи-13
 
10.03.23
22:04
тут питон однозначно.
под него даже шаред-хостинг можно взять
84 Грю
 
10.03.23
22:16
(0) рекомендую питон
85 p-soft
 
10.03.23
22:28
про питон услышал, всем спасибо. буду долго думать)
86 Грю
 
10.03.23
22:29
(85) Про питон это был прикол! :)))
87 Волшебник
 
модератор
10.03.23
22:30
(81) Питон портит мозг. Запишите там.
88 p-soft
 
10.03.23
22:32
да все, протокол составлен
89 Asmody
 
10.03.23
22:37
(87) если быстро и немного, то нормально.
но после php и 1С хуже не уже не станет
90 H A D G E H O G s
 
10.03.23
23:17
(0) 1С.
Потом перепишешь на что-то другое, если будет желание.
91 ProgAL
 
10.03.23
23:20
https://ztv.su/. 2гбт озу, 26 гбт диск, 200р.
92 H A D G E H O G s
 
10.03.23
23:21
(0) Ты потратишь на порядок больше человеко-часов (xxx руб/час) чем аренда Windows сервер под 1С + лицензии 1С.
93 p-soft
 
10.03.23
23:23
(90) на 1с все что надо есть. но держать мелкий сервис на 1с избыточно. у меня в принципе, есть микросервис на дельфях, под винду,  но хостить делфи тоже не хочется
94 p-soft
 
10.03.23
23:24
(92) ну справедливо, надо считать
95 Злопчинский
 
10.03.23
23:24
(93) сделай отправку через телеграм/ботов
?
96 ДедМорроз
 
10.03.23
23:25
У php есть только одно преимущество - это встраиваемость в apache web сервер и возможность нативно формирвать web-страницы.
В остальном,он ничуть не лучше.

Опять же,какой бы язык вы не выбрали,все библиотеки для взаимодействия со внешним миром будут написаны или на Си или на другом компиллируемом языке.
Так что сравнивать производительность очень сложно.
97 Злопчинский
 
10.03.23
23:27
98 p-soft
 
10.03.23
23:29
(95) мне сервис нужен. вот столкнулся с задачей перекидывать задание с тсд на комп при отсутствии управляющего сервера. сейчас использую эл.почту. но настраивать это муторно юзеру - плохой вариант

и чем дальше я ковыряю тему, тем чаще прихожу к мысли, что развивать то что я делаю на 1с не перспективно.
мобильное приложение уже "уперлось" в нюансы. да, начинать быстро, отлаживать бизнес-логику совсем красота.
но дальше тупик
99 p-soft
 
10.03.23
23:31
(98) возможно, то что я хочу укладывается в концепцию шины данных
100 Злопчинский
 
10.03.23
23:32
(98) и какие нюансы?
101 H A D G E H O G s
 
10.03.23
23:33
(98) Как ты со своего сервера будешь на комп клиента перекладывать?
102 Злопчинский
 
10.03.23
23:34
(99) ну, будет еще один слой передаст
103 H A D G E H O G s
 
10.03.23
23:34
(98) Регламентное задание будет просить у сервера, есть для него чего? Чтобы сервер у клиента не разворачивать?
104 p-soft
 
10.03.23
23:34
(100) самый основной - сложно монетизировать свою поделку, в классическом смысле.
105 Злопчинский
 
10.03.23
23:36
(104) и что, ты всю логику складских процессов хочешь на ТСД-андроиде реализовать или в облачном сервисе?
106 p-soft
 
10.03.23
23:36
(101) ну так же, как и с почтой, только клиенту будет символьный ключ выдаваться, вместо необходимости настраивать аккаунт
107 Грю
 
10.03.23
23:36
Задача простая, запросов мало, нагрузка на сервер никакущая. Тут нет смысла выбирать инструмент по быстродействию. Есть смысл выбирать только по опыту и приятности. Есди есть опыт в каком-то языке кроме 1С, то бери его однозначно. Если нет, то про JS я уже писал. Но в нем почти у любого есть опыт, так что еще один аргумент в пользу JS.
108 p-soft
 
10.03.23
23:37
(105) приложение придется переписать, и надо уже сейчас. бекэнд на 1с так и останется - это основа идеологии
109 Злопчинский
 
10.03.23
23:38
на твоем месте я бы НА ДАННОМ ЭТАПЕ - забил бы на проблемы отсутсвия связи с основным сервером-поставщиком данных.
считаем что связь есть всегда. на ТСД рисуем сообщение "связь ёк, повторить попытку обмена данными" в слчае трабла и всё.
110 p-soft
 
10.03.23
23:39
(107) ну да. но это текущие задачи. а мысли бродят..)
111 Злопчинский
 
10.03.23
23:39
(108) и чо переписывать? нет связи - процесс стоит. всё.
и все вопросы порешаются со связью очень быстро.
112 p-soft
 
10.03.23
23:40
(109) у моей проги два режима работы: интегрированный, по нему вопросов нет и без привязки к учетной системе
113 Злопчинский
 
10.03.23
23:43
(112) что значит "без привязки к учетной системе"? поставщиком и получателем данных с ТСД кто будет? вообще никто?!
114 p-soft
 
10.03.23
23:44
(112) я сейчас в плотную занялся продвижением мобильной части. собственно, отсюда и вопросы. тема хороша, вопросы закрывает, но рынку нет дела до моих мыслей)
115 p-soft
 
10.03.23
23:48
(113) без привязки - это значит что системы напрямую не связаны. сейчас я только позволяю получить данные с тсд: простая обработка лезет на почту и выводит содержимое задания юзеру. это можно скопировать и загрузить средствами учетной системы.
все бесплатно и достаточно быстро
116 Злопчинский
 
10.03.23
23:51
117 p-soft
 
10.03.23
23:53
(116) именно. только медленно и печально.
118 Злопчинский
 
10.03.23
23:54
(117) ну так любая универсальная система будет медленной и печальной.
119 Злопчинский
 
10.03.23
23:55
а в ином случае ты вывалишься с того рынка, на который нацеливался.
120 p-soft
 
10.03.23
23:57
(118) я не про работу программы)
у моей проги есть фичи, которые надо научиться продавать)
121 p-soft
 
10.03.23
23:59
интересно, сколько времени займет переучивание на java?))
122 Злопчинский
 
11.03.23
00:06
(120) какие фичи? растяни баян, открой дверь в новы чудный мир.. что такого что прямо вот надо научиться продавать...
я - очередной Ипшник с магазином на 100 квадартов. что за фичи ты хочешь мне продать?
123 Злопчинский
 
11.03.23
00:06
(121) Брось бяку, брось!
124 p-soft
 
11.03.23
00:13
(122) это надо показывать. как можно рассказать, что удобно, быстро и денег не просит?)
125 p-soft
 
11.03.23
00:17
(123) вот и придется бяку переписывать(
126 Злопчинский
 
11.03.23
00:18
(124) ты не можешь свою фичу рассказать собственнику за 30-50 слов?
127 Злопчинский
 
11.03.23
00:18
(124) если денег не просит, то что ты собрался монетизировать?
128 p-soft
 
11.03.23
00:20
(126) пока нет, сижу вот слова подбираю. каждый хочет видеть что то свое, возьми угадай.
129 p-soft
 
11.03.23
00:21
(127) не просит после того как. а дальше надо придумать как сделать чтобы не просило - намекало. а сейчас тупо не просит(
130 Злопчинский
 
11.03.23
00:26
я бы на данный момент тупо сосредоточился на связке твоего МиМиМишного решения с 1С и простым каналом обмена. без всякой шины данных. КИС отдает данные в том формате КОТОРЫЙ когда-то потом будет на выходе ШД (то что забирает/получает ТДС), а ТСД принимает этот формат и отдает в том формате, который будет на стороне КИС (то что забирает/получает КИС), типа эмулируя наличие ШД.
131 Злопчинский
 
11.03.23
00:26
будет этот канал обмена емайлом или фтпшным сервером - пофиг.
132 H A D G E H O G s
 
11.03.23
00:28
(121) Полгода минимум
133 Злопчинский
 
11.03.23
00:28
(130) ..то есть то что у тебя есть сейчас. Догони это до продуктива, который продается практически из коробки и/или с минимальными настройками.
делать суперкомбайн сразу - бяка будет. или не бяка но долго.
134 p-soft
 
11.03.23
00:37
(130) это я прошел год назад, сейчас все отлажено и работает.
говорю же - вопросы маркетинга
(133) этим и занимаюсь.
135 Злопчинский
 
11.03.23
00:41
(134) ну и ок. ваяй дальше.
136 p-soft
 
11.03.23
00:42
(132) это только на привыкание к инструменту. в том что есть сейчас логики очень много получилось. я рефакторинг не сильно глобальный две недели делал. но сейчас смотрю как это все выглядит.. может для 1с это и норма, но продавать это нельзя. поэтому прога только бесплатная.
137 p-soft
 
11.03.23
00:44
(136) поэтому и речь про сервисы..
138 NorthWind
 
11.03.23
12:46
(98) тут есть нюанс... Кое-кто из конечных юзеров может отказаться работать с продуктом при наличии облачного компонента, который они не контролируют.
139 p-soft
 
11.03.23
12:52
(138) для этих у меня есть платное решение, работающее в локалке.
но народ избалованный, зажратый, а надо всем угодить))
140 Garykom
 
гуру
11.03.23
13:25
(0) держи мой старый лисапед

package main

import (
    //    "database/sql"
    "encoding/json"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/gorilla/mux"
    //"github.com/jmoiron/sqlx"
    "log"
    //"math/rand"
    "net/http"
    //b "rest/entities"
    //"strconv"
    "bufio"
    "github.com/sethvargo/go-password/password"
    "io/ioutil"
    "os"
    "path/filepath"
)

type ID struct {
    ID string `db:"id"`
}

func getSolt(long, digits, symbols int, noUpper, allowRepeat bool) string {
    // Generate a password that is 64 characters long with 10 digits, 10 symbols,
    // allowing upper and lower case letters, disallowing repeat characters.
    result, err := password.Generate(long, digits, symbols, noUpper, allowRepeat)
    if err != nil {
        fmt.Println(err)
    }
    return result
}

func ReadLines(path string) ([]string, error) {
    file, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    var lines []string
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        lines = append(lines, scanner.Text())
    }
    return lines, scanner.Err()
}

func WriteLines(lines []string, path string) error {
    file, err := os.Create(path)
    if err != nil {
        return err
    }
    defer file.Close()

    w := bufio.NewWriter(file)
    for _, line := range lines {
        fmt.Fprintln(w, line)
    }
    return w.Flush()
}

func getDir() string {
    ex, err := os.Executable()
    if err != nil {
        fmt.Println(err)
    }
    exPath := filepath.Dir(ex)
    //fmt.Println(exPath)
    return exPath
}

func getNewID(w http.ResponseWriter, r *http.Request) {
    var id ID
    id.ID = getSolt(10, 5, 0, true, true)
    fmt.Println("NewID: " + id.ID)

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(id)
}

func setFile(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id := params["id"]
    fileType := params["file"]

    dirname := getDir()
    filename := dirname + "/" + id + "_" + fileType
    fmt.Println("Set file: " + filename)
    var lines []string

    bData, err := ioutil.ReadAll(r.Body)
    if err != nil {
        fmt.Println(err)
    }

    jsonData := string(bData)
    //fmt.Println("jsonData:")
    //fmt.Println(jsonData)

    lines = append(lines, string(jsonData))
    err = WriteLines(lines, filename)
    if err != nil {
        fmt.Println(err)
    }

}

func getFile(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id := params["id"]
    fileType := params["file"]

    dirname := getDir()
    filename := dirname + "/" + id + "_" + fileType
    fmt.Println("Get file: " + filename)

    lines, err := ReadLines(filename)
    if err != nil {
        fmt.Println(err)
    }

    w.Header().Set("Content-Type", "application/json")
    for _, value := range lines {
        w.Write([]byte(value))
    }
}

func main() {
    r := mux.NewRouter()

    r.HandleFunc("/getnewid", getNewID).Methods("GET")
    r.HandleFunc("/users/{id}/files/{file}", setFile).Methods("POST")
    r.HandleFunc("/users/{id}/files/{file}", getFile).Methods("GET")

    log.Fatal(http.ListenAndServe(":1717", r))
}


Сначала получаем новый id
GET http://1cvpn.ru:1717/getnewid

Затем можно заливать файлы
POST http://1cvpn.ru:1717/users/{id}/files/{file}

И аналогично скачивать
GET http://1cvpn.ru:1717/users/{id}/files/{file}

вот залитый файл например
http://1cvpn.ru:1717/users/433zboc6d6/files/goods
141 Garykom
 
гуру
11.03.23
13:38
(140)+ писалось специально для поднятия сервиса обмена между МП 1С и конфой на компе
аля ТСД инвентаризации/сканирования
142 p-soft
 
11.03.23
13:43
(141) вот-вот, спасибо. а на чем это?
у меня такое же на дельфях есть, под винду в виде сервиса.
правда я через свою шнягу еще и напрямую в таблицы 1с77 писал, помимо обмена файлами) у меня резервирование удаленное для филиалов было сделано)
143 Garykom
 
гуру
11.03.23
13:48
(142) Golang
144 Garykom
 
гуру
11.03.23
13:50
(143)+ можно винда, линукс, мак, андроид и т.д.
и даже роутер openwrt/keenetic/microtik, короче любой с entware/opkg
145 Garykom
 
гуру
11.03.23
13:52
(142) >через свою шнягу еще и напрямую в таблицы 1с77

я на го делал веб-сервис для работы с 1С 7.7 через ole
146 p-soft
 
11.03.23
13:52
(145) да, были времена интересных решений)
147 Garykom
 
гуру
11.03.23
13:54
сейчас вот хочу наваять http-сервис аля прокси для хранилища конфигураций 1С
чтобы комменты контролировал и т.д.
чтобы можно было разными версиями платформы/конфигуратора 1С подключаться
и даже EDT использовать нативно при разработке с хранилищем вместо гит
148 Garykom
 
гуру
11.03.23
13:56
(147)+ аналог https://infostart.ru/1c/articles/1769327/ но на Golang без iis и даже без апача
149 novichok79
 
11.03.23
18:41
Golang, я прочел книжку "golang для профи", нарейсал пет проект и свичнулся в это ваше настоящее программирование. для сетевых приложений с кучей пользователей - гошечка с ее горутинками и толковой стандартной библиотекой самое оно.
150 Кирпич
 
12.03.23
17:39
Зачем чего то, на чем то писать. Запусти на VPS готовый брокер сообщений. NATS какой нибудь. И извращайся сколько душеньке угодно.
151 Garykom
 
гуру
12.03.23
17:58
(150) они все неудобные и сложные
я пробовал NATS и оказалось хрень еще та
152 Garykom
 
гуру
12.03.23
18:01
в итоге пришел к минималистическому решению (140)
работает по http rest api
тупо запись-чтение файликов (json) в разрезе уникальных id
id - могут обозначать что угодно, хоть сервер, хоть клиента, хоть пару узлов и т.д.
имена файлов тоже сам как надо

в реальном решении понятно надо допилить удаление устаревших файлов и/или команды для их удаления
но это не обязательно
153 p-soft
 
12.03.23
18:15
(151) есть еще один фактор - это не твой сервис, ты им не управляешь на достаточном уровне.
154 Кирпич
 
12.03.23
19:03
(151) уж NATS то чем тебе не угодил. куда проще то.
155 Грю
 
13.03.23
04:00
Зачем еще VPS? Есть готовые сервисы, вот например, можно бесплатно: https://www.cloudamqp.com/

Для обмена данными само то.
156 Кирпич
 
13.03.23
08:47
(155) там цены конские
157 Грю
 
13.03.23
17:23
(156) ХЗ, я не особо смотрел условия, пользовался бесплатным тарифом, мне хватало для тестирования. Может и для ТС пойдет.
158 p-soft
 
13.03.23
17:30
(157) тс согласен максимум на хостинг, сервис он хочет иметь свой.
я временно закрыл вопрос одним из предложенных вариантов, уже все работает.
посмотрю как пойдет и чуть позже буду нормально делать.
всем спасибо!
159 Грю
 
14.03.23
16:13
(158) И что выбрал по итогу?
160 p-soft
 
14.03.23
16:33
(159)  как описано в (28). это бесплатная часть проекта, посмотрю во что выльется, там уже решу на чем писать и где размещать. и надо ли это мне