
b0g3r
15.07.2017
18:36:10
мне кажется, что любой человек знакомый с переводом и IT знает про gettext и poedit

Magic
15.07.2017
18:36:11
опять же, gettext не умеет в json который удобен.
А gettext не знаю. назовем это классикой, но это на мой взгляд немного пережиток прошлого
конечно, и я знаю, и олег, уверен знает
Но мой выбор пал не в его сторону

Google

Magic
15.07.2017
18:36:51
и кстати очень много проектов файлы в json/yaml хранят
достаточно открыть гитхаб

b0g3r
15.07.2017
18:37:41
ладно-ладно, я шучу)

Magic
15.07.2017
18:38:21
что за запрос?

b0g3r
15.07.2017
18:38:29
gettext
но там наверняка много служебной мишуры

Magic
15.07.2017
18:40:58
ну не знаю
Все же я за json
его удобнее редактировать

Oleg
15.07.2017
18:43:01

Magic
15.07.2017
18:44:23
YAML лучше.
Мне не удобен для автоматической правки
Это надо парсить потом выстраивать снова. А тут ты получаешь объект, ну или массив
и рулишь ключами

Google

b0g3r
15.07.2017
18:46:50
так ямл та же структура почти
жсон тоже парсить нужно

Alex
15.07.2017
18:47:11

Magic
15.07.2017
18:47:36
gettext
Кстати еще одно почему я использую свое решение - потому что файл локали сам строится исходя из строк используемых в проекте. почти на лету выходит. а с .po мне надо вычленять каждое, писать отдельно и тд. Не знаю, мне удобно мое решение)
Хотя когда я делал программу под windows делал все же через gettext

Alex
15.07.2017
18:47:37
Ну и + комменты можно писать ?

b0g3r
15.07.2017
18:47:54

Magic
15.07.2017
18:47:56

b0g3r
15.07.2017
18:48:27
наверное я чего-то не понимаю :)

Magic
15.07.2017
18:49:06
наверное я чего-то не понимаю :)
если это про json то json из строки декодируется в объект/массив
А YAML именно парсить надо. Делать это в моих условиях было не самым простым вариантом, именно по этому остановился на json

b0g3r
15.07.2017
18:51:13
так наверняка в твоем языке написан уже парсер из ямла (и жсон он всё таки парсит)
но чего я, учить что ли буду
жсон так жсон

Magic
15.07.2017
18:52:23
в одном проекте заказном мне вообще пришлось сделать локализацию через базу данных, клиенты хотели видеть количество просмотров той или иной строки)
так что все, мне кажется, в рамках своей задачи надо использовать

b0g3r
15.07.2017
19:14:03
демка правда упала(
http://bitnami-pootle-a59e.cloudapp.net/ вот нашел живую (лол, судя по всему это локализация приложения для геев...)

Magic
15.07.2017
20:10:57

Google

Magic
15.07.2017
20:11:28

b0g3r
15.07.2017
20:20:56
guyzapp
и на строки перевода посмотри :)

Скрудж
15.07.2017
20:37:30
Гайс, а как распределять задания между нодами? Хранить на главном сервере информацию о загрузке каждой ноды? Перед отправкой теста на ноду, запрашивать у каждой загруженность? Создать очередь заданий для каждой ноды на главном сервере?

Дмитрий
15.07.2017
20:38:21
rabbitmq например

Скрудж
15.07.2017
20:39:12

Magic
15.07.2017
20:39:27
нет

Дмитрий
15.07.2017
20:39:28
Нафига?)

Magic
15.07.2017
20:39:31
как раз тут не нужно
используй gearman или rabbitmq

Скрудж
15.07.2017
20:39:43

Rocket
15.07.2017
20:45:05

Скрудж
15.07.2017
20:45:34
Zmq с брокером.
ну ебана, я же не прошу готовое решение, а прошу указать способ распределения

Rocket
15.07.2017
20:54:54

Скрудж
15.07.2017
20:55:18

stonepig
15.07.2017
21:55:02

Скрудж
15.07.2017
21:58:01

Sergey❄️
15.07.2017
22:00:44
Да что уж, Valve 13 лет ( не беру в счёт source 1 )

Скрудж
15.07.2017
22:01:06
рокстар тоже? Спойлер: нет

Google

Sergey❄️
15.07.2017
22:01:26

Скрудж
15.07.2017
22:02:08

Sergey❄️
15.07.2017
22:02:43
>советуют взять готовое
>Не ебите мозг
:)

Magic
15.07.2017
22:09:11

stonepig
15.07.2017
23:38:33

Дмитрий
16.07.2017
05:03:38
Какой агрессивный любитель костылей, однако

Zaur
16.07.2017
05:29:57


AbduCOM
16.07.2017
05:35:45
Ребята, какие ограничения есть на запросы (например: resolve_username, channel_info, send_msg) в Телеграм CLI? И как ловить респонсы правильно?
Похоже я превышал лимит и сейчас получаю:
Traceback (most recent call last):
File "/home/user/www/pytg/test.py", line 112, in <module>
main() # executing main function.
File "/home/user/www/pytg/test.py", line 29, in main
receiver.message(example_function(sender)) # now it will call the example_function and yield the new messages.
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/utils.py", line 29, in start
cr = func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/receiver.py", line 212, in message
function.send(message)
File "/home/user/www/pytg/test.py", line 75, in example_function
results = sender.resolve_username(msg.text[1:])
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/sender.py", line 632, in command_alias
return self.execute_function(command_name, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/sender.py", line 322, in execute_function
result = self._do_send(request, answer_timeout=self.default_answer_timeout, retry_connect=retry_connect)
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/sender.py", line 529, in _do_send
raise NoResponse(command)
pytg.exceptions.NoResponse: [disable_preview] resolve_username betteren
Ребята :(


Дмитрий
16.07.2017
05:51:32
Ребята, какие ограничения есть на запросы (например: resolve_username, channel_info, send_msg) в Телеграм CLI? И как ловить респонсы правильно?
Похоже я превышал лимит и сейчас получаю:
Traceback (most recent call last):
File "/home/user/www/pytg/test.py", line 112, in <module>
main() # executing main function.
File "/home/user/www/pytg/test.py", line 29, in main
receiver.message(example_function(sender)) # now it will call the example_function and yield the new messages.
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/utils.py", line 29, in start
cr = func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/receiver.py", line 212, in message
function.send(message)
File "/home/user/www/pytg/test.py", line 75, in example_function
results = sender.resolve_username(msg.text[1:])
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/sender.py", line 632, in command_alias
return self.execute_function(command_name, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/sender.py", line 322, in execute_function
result = self._do_send(request, answer_timeout=self.default_answer_timeout, retry_connect=retry_connect)
File "/usr/local/lib/python2.7/dist-packages/pytg-0.4.10-py2.7.egg/pytg/sender.py", line 529, in _do_send
raise NoResponse(command)
pytg.exceptions.NoResponse: [disable_preview] resolve_username betteren
Ну если ты дёргал сразу пачку запросов за раз, то сервер тебя просто погасил на период от пары секунд до пары суток


AbduCOM
16.07.2017
05:55:35

Дмитрий
16.07.2017
05:55:58
Второе
У меня жс, поэтому конкретно подсказать не могу, но ошибку тебе прислать должны

Dmitry
16.07.2017
06:26:29

Vasiliy
16.07.2017
06:34:41
поделитесь секретом, как кто делает степы в опросах и как динамически создаете анкетирование?
я сейчас делаю через switch, но это хардкод
шаги в Enum храню, а степы у клиента в модели

Дмитрий
16.07.2017
06:38:37
Модель анкеты можно в json описать

Google

Vasiliy
16.07.2017
06:40:10
как динамически делать анкетирование? Я нарисовал себе схему примерную, может кто че лучше посоветует.
Типа есть таблица Question с полями
step(id) question field
где степ(ид) это номер шага
question - сам вопрос
field - поле которое будет в сообщение админу писаться, типа
step(id) - 0
question - Введите номер телефона
field - тел:
ответы сохраняются в отдельной таблице answer типа
chat_id, field, answer
как последний степ наступает, из таблицы answer берется вся выборка по chat_id, компануется стринга по филдам и ответам и отправляется админу, таблица ответов по этому чат айди чистится
при каждом степе в answer добавляется строка
норм или дичь?
масштабировать можно в случае если появятся еще анкеты, тогда в question надо вбить отдельно id анкетирования, и отдельно степы для каждого вида анкеты и по id анкетирования делать выборку

Дмитрий
16.07.2017
06:44:46
Если анкета одна — то это оверкилл, если не одна, то номер анкеты сразу надо)

Sergey
16.07.2017
06:44:49

Vasiliy
16.07.2017
06:45:10
ну ансверы привязываются к чатид
вопрос еще вот такой, что если ветвление опроса будет, то есть если я ответил нет, то шаг 4, если да то шаг 7 например

Sergey
16.07.2017
06:46:18
ну ансверы привязываются к чатид
Ну ты это делаешь как я понял после опроса а вдруг в это же время другой тоже захочет опрос пройти а у тебя step 1 допустим уже ?

Vasiliy
16.07.2017
06:46:48

Sergey❄️
16.07.2017
06:46:58
Раз в 10 секунд дёргал смену имени, вроде ок
Ниже что- то не хочу опускать

Дмитрий
16.07.2017
06:47:31
Я раз в 4 себе никнейм менял
Раз в 2 уже начинали меня оттормаживать

Magic
16.07.2017
06:47:42

Sergey
16.07.2017
06:48:11

Magic
16.07.2017
06:48:19
Detail json
Стейт хранить тут не придется
Просто бери первый вопрос у которого ответ null