Имя: Пароль:
IT
Жизнь форума
А не запилить ли API, пока #сидимдома?
0 Asmody
 
03.04.20
13:12
1. свой вариант 39% (9)
2. golang + gin 22% (5)
3. да ну его нафиг 13% (3)
4. elixir + phoenix 9% (2)
5. php + lumen 9% (2)
6. typescript + hapi.js 4% (1)
7. python + flask 4% (1)
Всего мнений: 23

Раз пошла такое #сидимдома, напишу-ка я новое API для форума, чтобы по моде, со всеми плюшками.
Есть вот такой набросок "плана работ": https://app.swaggerhub.com/apis/Asmody/mista/2.0
Это, конечно, не последний вариант, но с чего-то надо начинать.
Я планирую это всё как-нибудь реализовать почти "в прямом эфире". Стримов не обещаю, но скринкасты буду делать и выкладывать.

Дополнительные вводные:
а) данные берем из существующей БД, но изменения структуры под запретом; (это чтоб всякие "миграции" сразу исключить)
б) исходный двиг не используется;
в) запускаться это всё должно в docker;
г) ХЗ...

Осталось решить главный вопрос: на чём пилить?
У меня такие основные варианты:
1) elixir + phoenix
+++ - ФП со всеми "плюшками"; язык странный, но приятный; бешенная производительность BEAM и OTP;
--- - ФП со всеми "заморочками"; на elixir я не писал ничего сложнее "Hello, World", ну и немного подковыривал чужой код;

2) typescript + hapi.js
+++ - нода она и в Африке нода: стильно, модно, асинхронно; TypeScript более-менее адекватная версия js; документации дофига;
--- - нода, будь она неладна, со всей её инфраструктурой пакетов; документация устаревает через полчаса после написания; язык с концепцией "проще - значит неправильно" (это про js, но и ts там рядом проходил);

3) golang + gin
+++ - один бинарник; быстрый компилятор; ну и вообще - самый писк и струя;
--- - я не большой поклонник go; странные заморочки с внешними библиотеками, "вендеринг" и все такое; последний раз я шупал go года 2 назад, сейчас там, говорят, всё по другому;

ну и чтоб было:
4) python + flask
5) php + lumen
на эти пункты я не буду +++ и --- писать, мне они не очень интересны в плане саморазвития.

Java/C# не рассматриваю принципиально - не того уровня проект, чтоб так заморачиваться.
Не считаю себя мегапрофи ни в одном из предложенных вариантов, будет повод подтянуться.
В общем, какой вариант к вечеру наберет больше голосов, на том и будем писать.
1 shuhard
 
03.04.20
13:19
(0) таки

php + lumen
2 Hillsnake
 
03.04.20
13:20
конечно же питон, этож модно сковородно. !!

python + flask
3 ДенисЧ
 
03.04.20
13:22
Я был бы против ноды и питона на сервере.
Остальные страшные слова мне не знакомы.
4 Cyberhawk
 
03.04.20
13:23
А какая разница потребителю этого АПИ, на чем он будет реализован?
5 Капюшон
 
03.04.20
13:26
Всё что не Java это полное фуфло.

свой вариант
6 Garykom
 
гуру
03.04.20
13:26
Только gin лишнее!
Хватит:
    "encoding/json"
    _ "github.com/go-sql-driver/mysql"
    "github.com/gorilla/mux"
    "github.com/jmoiron/sqlx"
    "net/http"

golang + gin
7 ДенисЧ
 
03.04.20
13:27
(4) А как же причастность?
8 Garykom
 
гуру
03.04.20
13:33
Имхо выиграет пункт 7.
9 Hillsnake
 
03.04.20
13:37
(5) джава твоя фуфло древнее. не зря котлин придумали.
10 Garykom
 
гуру
03.04.20
13:39
(0) Замечание по API:
1. Почему только GET и POST, где PUT и DELETE ?
2. Права нужны чтобы DELETE не все могли
3. Оно аля REST(ful) или ну так вышло
4. Авторизация через OAuth 2.0 когда будет?
5. Хочу встроенную систему управления видимостью, т.е. можно юзера отправить в собственный теневой бан
11 Garikk
 
03.04.20
13:44
(6) ...вот за такие ссылки на гитхаб, гошников надо по голове кувалдой бить...

с чем я сталкивался:
1) вот у тебя по ссылке mux последний коммит 3 months... а мы помнится заюзали такую либу в проекте... сейчас там last commit 1,5 years ago
2) разработчик либы устал-ухожуй...все..всем спасибо у всех всё развалилось
3) у провайдера или у РНК чето вклинило и всё, все релизы и ci/cd по пи..де
12 Garikk
 
03.04.20
13:45
(11) *РКН конечно, очепятка
13 arsik
 
гуру
03.04.20
13:56
Для бэка я бы наверно go взял.
Быстрый, сетевой, многопоточный, кросскомпиляция.

golang + gin
14 Волшебник
 
модератор
03.04.20
14:01
Да-да! И чтобы там можно было грабить корованы!
15 pavig
 
03.04.20
14:02
(3)
Почему против Питона?
16 ДенисЧ
 
03.04.20
14:06
(15) Притормознут. И с многопоточностью заморочки. Фласк - он однозадачный, так что руками придётся...
17 mikecool
 
03.04.20
14:07
- А не спеть ли мне песню?
- А не спеть!
18 Garikk
 
03.04.20
14:10
(16) а зачем на форуме многозадачность?
19 Garikk
 
03.04.20
14:11
99% запросов к апи на форуме, это тупой селект в базу, дайбог с парой джойнов.. там нечего параллелить
20 DEVIce
 
03.04.20
14:12
На Фузине же..., ну.
21 Asmody
 
03.04.20
14:16
(10) Основные операции "получить" и "добавить". "изменить" и "удалить" для обычного пользователя не предусмотрено, а админский контекст я оставил "за скобками".
22 ДенисЧ
 
03.04.20
14:18
(18) А ты прикинь, сколько одновременных запросов будет
23 Asmody
 
03.04.20
14:18
(19) Тупой-то он тупой, но наша развесистая лапша из параметров, настроек, прав и др. заставляет порой поломать голову в сочинении запроса.
24 ДенисЧ
 
03.04.20
14:18
(21) То есть редактирования своих сообщений не будет...
25 antgrom
 
03.04.20
14:19
(0) только Java

свой вариант
26 antgrom
 
03.04.20
14:20
(15)  ты неправ. "Пайтен"

)
27 eklmn
 
гуру
03.04.20
14:22
Для общего кругозора и саморазвития самое оно.

git будет?

typescript + hapi.js
28 Garykom
 
гуру
03.04.20
14:23
(11)
1. Подсунь нужную версию вручную
2. Бывает, это риск использования любого не встроенного, на Java и на NodeJS тоже самое
3. Рассказать тебе про свой DNS?
29 Garykom
 
гуру
03.04.20
14:26
(21) Админы от не админов по сути только правами отличаются.
Они видят больше и могут больше - есть смысл все в одном апи делать.
И уже правами разруливать.

Например можно на своих ветках разрешать удалять свои сообщения и даже ветки сносить оффтопике чтобы хлама поменьше было.
Понятно что ветки полезные лучше оставлять но это уже право админа вернуть и приколотить ветку отняв права на нее у создателя.
30 Звездочёт
 
03.04.20
14:28
(0) форум можно сделать и на 1С :)

свой вариант
31 Волшебник
 
модератор
03.04.20
14:35
(30) Где же столько лицензий взять?
32 Garykom
 
гуру
03.04.20
14:38
(31) На мобильной версии можно - там если монетизации нет то бесплатно
33 Garykom
 
гуру
03.04.20
14:39
(32)+ Мобильная версия работает под win на x86
34 Garykom
 
гуру
03.04.20
14:40
Кстати да. А есть же уже МП 1С клиента Миста?
35 Garykom
 
гуру
03.04.20
14:40
(34)+ Просто почему бы не сделать некую импортозамещение slack ?
36 mdao
 
03.04.20
14:42
предлагаю такую идею,) офиц.группа в vk , при добавлении темы/поста на форуме оно уходит в vk группу

свой вариант
37 Звездочёт
 
03.04.20
14:43
(31) я имел ввиду на http-сервисах :) они не лицензируются.
38 Oftan_Idy
 
03.04.20
14:52
Все тлен

да ну его нафиг
39 dezss
 
03.04.20
15:48
(25) Вот согласен)))

свой вариант
40 Asmody
 
03.04.20
16:21
(37) под 1С сильно могучий сервер нужно, серверную лицензию нужно, дорого, однако
41 Asmody
 
03.04.20
16:22
(36) ага, и бота в телеграм.
Нафиг
42 Asmody
 
03.04.20
16:23
(29) если операции нет, то её и нет. Нафига городить права?
43 Asmody
 
03.04.20
16:24
Я забыл проголосовать

elixir + phoenix
44 pechkin
 
03.04.20
16:31
А будет ли вам доступен cross-origin?
45 vde69
 
03.04.20
16:46
только не флеш...

даешь аякс в массы :)

свой вариант
46 Сияющий в темноте
 
04.04.20
23:32
я бы сначала посмотрел,что без проблем можно на сервак поставить.

(28) когда google начали банить большинство сайтов полегло из-за того,что скрипты напрямую с гугля тянуло.
опять же,если ссылка куда-то,то там может оказаться все,что угодно-аккаунты гита тоже ломают.
47 Конструктор1С
 
05.04.20
05:21
(0) лучше сделай человечачью подстветку синтаксиса 1с

свой вариант
48 Конструктор1С
 
05.04.20
05:24
И вообще идеально было бы, если бы можно было одним списком увидеть ответы на свои сообщения в разных темах
49 rphosts
 
05.04.20
06:44
(0) если времени есть - пили на чём-то модном чем не владеешь (заодно и немного прокачаешься в теме), если времени не особо - пиши на том чем владеешь в совершенстве.
50 rphosts
 
05.04.20
06:46
я-б пошёл хапнуть джина, пожалуй

golang + gin
51 rphosts
 
05.04.20
06:47
(30) делал лет 5 назад чатик (с шифрованием, длекджеком и дамами)... не-не-не
52 jbond
 
05.04.20
08:00
Только Enterprise Java Beans! Только хардкор!
53 Asmody
 
05.04.20
11:49
(48) я не представляю зачем такая херь может понадобиться
54 ДенисЧ
 
05.04.20
11:58
(53) У тебя фантазия слабая...
55 Конструктор1С
 
05.04.20
17:20
(53) чтобы можно было по-быстрому просмотреть цепочку беседы и ответить ответивним. Сейчас для этого приходится нырять в каждую из тем. По-моему "мне ответили" стандартная функция для многих форумов
56 Dzenn
 
гуру
05.04.20
18:25
Ключевой вопрос - Зачем? И с какой целью? Какую проблему решит новый API?

да ну его нафиг
57 ДенисЧ
 
05.04.20
18:29
(56) А почему нет, если время есть?
58 dmitryds
 
05.04.20
18:44
NodeJS

свой вариант
59 dmitryds
 
05.04.20
18:44
(56) +1

да ну его нафиг
60 MadHead
 
05.04.20
20:46
Rust + actix
Scala + play

свой вариант
61 Asmody
 
05.04.20
22:33
(58) хоть бы не палился
62 Asmody
 
05.04.20
22:36
(60) rust я как-то воспринимаю как системный язык. это как на С веб-прилодения писать. можно, но зачем?
а scala... у меня не настолько мощный компьютер, чтобы комфортно программировать на scala. ну не хватает ей core7 + 32Гб
63 Сияющий в темноте
 
05.04.20
23:21
(62) на Си пишется все,что угодно,особенно,если хочется скорости выполнения.
ну и многопоточность без проблем с общей памятью и стстемными семаформами.
а если копнуть в сторону подписок на завершение,то такое можно сделать,чего другим языкам и не снилось.
главное,ошибок в коде не делать,а то,порой,стний экран и все...
64 MadHead
 
06.04.20
00:03
(62) Rust - это не С. Производительность сравнимая, но синтаксис более модный и молодежный. На сколько понимаю цель не просто написать API, но и получить полезный и интересный опыт.
Scala на любителя, но мне нравится. На счет нехватки мощности ПК не понятно. Приведите пример что конретно тормозит? Единственное, что видел как Idea может напряч железо при редактировании SBT файлов, меня - это не сильно беспокоит, но наверняка можно и отключить.
65 MadHead
 
06.04.20
00:04
(62) https://actix.rs/ все красиво и лакончино.
66 MadHead
 
06.04.20
00:05
(62) И для понимания зачем страдать с Rust, если можно проще и быстрее навоять на чем-то другом быстрее. https://www.techempower.com/benchmarks/
67 quest
 
06.04.20
08:05
Для тренировки и разбирательств -  проекта самое то

elixir + phoenix
68 ischamael
 
06.04.20
10:57
Поддерживаю golang, с vendoring и modules разберешься.
Для серверной части go подходит.
Goland IDE шустрый - лицензии на stepick выдают.
69 ischamael
 
06.04.20
11:07
gin - martini-like api, чтобы это не значило!

golang + gin
70 GANR
 
06.04.20
13:34
.

golang + gin
71 Fragster
 
гуру
06.04.20
13:38
хз, что там у вас в планах, но очень нужна oauth2 авторизация, чтобы к сисечному конкурсу можно было запилить нормальное приложение, для участников, для жюри, для голосующих
72 Fragster
 
гуру
06.04.20
13:39
хотя, конечно, если вы готовы логин и пароль вводить на boobzle.mista.ru, то можно и как в (0) оставить
73 ДенисЧ
 
06.04.20
13:45
С этим oauth2 весь мир сошёл с ума...
Был в одной конторке - у них там даже корпоративный b24 на двухфакторной авторизации... И это при том, что мордой в чистый интернет он не смотрел...
74 Fragster
 
гуру
06.04.20
14:23
(73) двухфакторная авторизация тут вообще не причем
75 ДенисЧ
 
06.04.20
14:26
(74) Один овосчЪ.
76 dmitryds
 
06.04.20
14:32
(61) у меня сейчас весь софт на ноде.
Сначала так же относился, пока не попробовал и не проверил в действии (до этого кроме 1С было: Java, php, C#)
77 Fragster
 
гуру
06.04.20
14:41
(76) ну, написать то, что не течет и не падает на ноде сильно сложнее, чем на том же 1с, или тем более похапэ (который отработал и издох)
78 Asmody
 
06.04.20
15:42
(76) [у меня сейчас весь софт на ноде] - и что, ни один из предложенных вариантов не подошёл?
79 dmitryds
 
06.04.20
16:20
(78) о каких вариантах речь?
80 Fragster
 
гуру
06.04.20
17:04
забыл сунуть. люмен - это ж кагбэ ларавель?

php + lumen
81 vfire1000
 
12.05.20
13:02
(0) что по итогу?
82 Serginio1
 
12.05.20
14:23
C# не рассматриваю принципиально - не того уровня проект, чтоб так заморачиваться.
А я бы заморочился и еще на Blazor на вэбассембли. Правда сейчас пока как интерпритатор кода, но к ноябрю обещают AOT
https://metanit.com/sharp/blazor/1.1.php