
مـِّﮧْٰٖـہنَْٰـُہتـٰٰٰٖٖٖۧـ๋͜ہظـِّﮧْٰٖـہر ««☻
24.07.2018
23:47:45
Hi guys
How can i get user username from user id
Example : I send to bot user id
Bot send me user username from id


Eugene
25.07.2018
00:13:38
Как правильно реализовывать вынос строк в шаблоны? Допустим, для мультиязычности. У меня есть модуль tools с плюшками, юзаемыми в проекте. Рядом лежат файлы для языков с константами, типа HELLO = "Привет". В tools есть функция get_message, принимающая условное название-константу строки, область видимости и язык.
Пока я вижу следующий вариант -- методы классов возвращают, например tools.get_message("HELLO", {}, "ru"). Далее функция get_message через getattr пытается получить эту константу из файла и через format_map() форматирует ее с областью видимости, переданной функции.
Но это похоже на изврат, есть какие-то ещё альтернативные и логичные варианты? А если мне в этой строке нужно выполнить функцию?
Желательно, чтобы это работало быстро, а не как Template.
При этом меня интересует не сам перевод, коим занимается gettext, а именно подход к хранению и обработке таких строковых данных.
Вопрос непонятный. gettext решает все проблемы уже давно. Строки собираются из файлов при помощи утилиты командной строки xgettext
Да и вариаций на ее тему написано 100500
К чему изобретать велосипед с квадратными колесами?


madmonday.ru
25.07.2018
00:15:35

Eugene
25.07.2018
00:17:34

Google

madmonday.ru
25.07.2018
00:18:14

Eugene
25.07.2018
00:18:37
да
можно не переводить po файл, тогда вызовы gettext будут возвращать исходные строки

madmonday.ru
25.07.2018
00:19:52
да
Он умеет выполнять функцию внутри строки? А вставлять локальные переменные и глобальные константы в строку?

Eugene
25.07.2018
00:21:47
На тему интерполяции можно еще посмотреть как в django реализован объект gettext_lazy

madmonday.ru
25.07.2018
00:23:57

Stanislav
25.07.2018
00:24:50
Это как рендерить шаблоны питоном не используя шаблонизатор

Eugene
25.07.2018
00:27:28
Проблема с велосипедами, что каждый думает: мой случай особенный и простой. Сам сделаю простое быстрое решение, так как надо поддерживать лишь 1% от возможностей gettext
В итоге, быстро просто и красиво не получается, требования растут, велосипед обрастает треугольными и пятиугольными колесами
Через 1-2 года, в проекте какое-то уродливое чудище без доков, любое копание в котором приводит к рвотному рефлексу даже у автора


Denis
25.07.2018
00:31:45
Как правильно реализовывать вынос строк в шаблоны? Допустим, для мультиязычности. У меня есть модуль tools с плюшками, юзаемыми в проекте. Рядом лежат файлы для языков с константами, типа HELLO = "Привет". В tools есть функция get_message, принимающая условное название-константу строки, область видимости и язык.
Пока я вижу следующий вариант -- методы классов возвращают, например tools.get_message("HELLO", {}, "ru"). Далее функция get_message через getattr пытается получить эту константу из файла и через format_map() форматирует ее с областью видимости, переданной функции.
Но это похоже на изврат, есть какие-то ещё альтернативные и логичные варианты? А если мне в этой строке нужно выполнить функцию?
Желательно, чтобы это работало быстро, а не как Template.
При этом меня интересует не сам перевод, коим занимается gettext, а именно подход к хранению и обработке таких строковых данных.
Сделать constants.py или constants.json и хранить все константы там не подходит?


madmonday.ru
25.07.2018
00:32:27

Google

Denis
25.07.2018
00:32:44
Это вопрос был
Непонятно, в чем проблема в уже описанном решении

madmonday.ru
25.07.2018
00:33:11

Denis
25.07.2018
00:34:15
Если нужно хранить переводы, то да. Если просто набор строк на одном языке, gettext это оверкилл
Скорее всего, вместе с переводом строк вылезут другие проблемы, вроде форматирования чисел, зависящего от локали, разных правил для множественного числа
gettext это решать умеет
https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/Plural-forms.html

madmonday.ru
25.07.2018
00:39:58
import constants
constants.HELLO.format_map(locals())
или
import tools
tools.get_constant("HELLO", locals())
?

Denis
25.07.2018
00:41:02
Передавать куда-то locals() это обычно плохая идея


Маришка
25.07.2018
00:42:36
Как правильно реализовывать вынос строк в шаблоны? Допустим, для мультиязычности. У меня есть модуль tools с плюшками, юзаемыми в проекте. Рядом лежат файлы для языков с константами, типа HELLO = "Привет". В tools есть функция get_message, принимающая условное название-константу строки, область видимости и язык.
Пока я вижу следующий вариант -- методы классов возвращают, например tools.get_message("HELLO", {}, "ru"). Далее функция get_message через getattr пытается получить эту константу из файла и через format_map() форматирует ее с областью видимости, переданной функции.
Но это похоже на изврат, есть какие-то ещё альтернативные и логичные варианты? А если мне в этой строке нужно выполнить функцию?
Желательно, чтобы это работало быстро, а не как Template.
При этом меня интересует не сам перевод, коим занимается gettext, а именно подход к хранению и обработке таких строковых данных.
Взять gettext или babel.
То что ты описал является стандартной хренью для i18n и l10n


madmonday.ru
25.07.2018
00:43:50

Маришка
25.07.2018
00:44:21
So what ?
Впили сейчас что бы потом не делать свой велосипед из говна

Denis
25.07.2018
00:45:58
Почему?
Потом захочется переименовать переменную, но это будет нельзя сделать. Либо что-то поменяется в той строке, а где-то случайно оказалась такая переменная, поэтому подставляться будет не то, что хотелось. Лучше явно передавать словарь
Поддерживал я как-то сайт на джанге, где в шаблон было принято передавать locals(). Это было больно

madmonday.ru
25.07.2018
00:48:23


Eugene
25.07.2018
00:48:36
Мне выше говорят что этот вариант говно и нужно во что бы то ни стало использовать gettext.
Потому что по опыту: из всего количества программистов, с которыми приходилось сталкиваться, написать свой велосипед может 1 человек на 1,000,000.
У всех остальных получается такое говно, что gettext на его фоне будет просто недостижимым идеалом архитектуры. Но благодаря эфекту Даннинга-Крюгера (если не путаю), каждый изобретатель говно-велосипеда в начале пути заявлет: «До меня были тупые динозавры, я сделаю лучше».
Всегда я это слышу и всегда в итоге получается большая вонючая куча говна
это не в обиду вам
просто потом лежат кучи такого legacy, без доков, без тестов
изначальный автор чаще всего где-то уже в другом месте изобретает новые велосипеды
а другим приодится переписывать все на gettext или латать унылый велосипед до бесконечности

Google

Eugene
25.07.2018
00:50:15
плюс, когда до перевода дело дойдет, вы не сможете использовать ни один из великолепных инструментов для перевода .po файлов
и что - городить еще один велосипед?

Stanislav
25.07.2018
01:04:59

Eugene
25.07.2018
01:14:48

Бензофуран
25.07.2018
01:32:04


Eugene
25.07.2018
02:31:07
зачем обсуждать такие банальные вещи?

Ruslan
25.07.2018
02:53:08
Пните) ЧЯДНТ, забыл основы) мне надо чтобы пулы пополняли общий массив
from multiprocessing import Pool
def f(args):
class1, i = args
class1.add(i)
class myClass:
def __init__(self): self.myArray = []
def add(self, data): self.myArray.append(data)
def show(self): print(self.myArray)
if __name__ == '__main__':
class1 = myClass()
pool = Pool(processes=4)
pool.map(f, ((class1, i) for i in range(16)))
class1.show()

Andy
25.07.2018
02:56:30
если я правильно понимаю работу с тредами, то в треды уходит запикленый объект твоего класса, там в него добавляется что-то, ну и он там в треде и остается

Ruslan
25.07.2018
02:57:24
https://stackoverflow.com/a/17242221/8475363

Andy
25.07.2018
03:11:36

Ruslan
25.07.2018
03:25:44

Andy
25.07.2018
03:26:32
исчерпывающе
ну там кладут в очередь, и вытаскивают значения из нее в процессах, а если я тебя правильно понял, ты хотел, класть в очередь в разных процессе

Google

Denis
25.07.2018
03:30:47
Помогите абитуриенту
Куда поступать ? В Мск в средний вуз с неоч сильным образованием или в своем городе но образование получше?))

Pachvarsh
25.07.2018
03:31:48
сейчас бы в универы поступать

Denis
25.07.2018
03:32:09
Мне просто 18

Pachvarsh
25.07.2018
03:32:44
ну если ты решил стать погромистом, сперва поработай джуном, а там посмотришь нужно оно тебе вообще или нет
знаю уйму людей протерявших 5 лет в универе и не юзающих этот опыт, я в их числе

Eugene
25.07.2018
03:33:35

Denis
25.07.2018
03:33:53
Я работал плюс минус,все норм,мне нравится
ну если ты решил стать погромистом, сперва поработай джуном, а там посмотришь нужно оно тебе вообще или нет

Admin
ERROR: S client not available

Pachvarsh
25.07.2018
03:34:24

Denis
25.07.2018
03:34:37
Я хочу ИИ делать,поэтому нужна математика,а её самому,кажется ,сложно получить
Да прогерам и математикам диплом не важен

Pachvarsh
25.07.2018
03:35:02
ИТ в россеюшке прийдет конец ИМХО, это вопрос времени

Eugene
25.07.2018
03:35:20

Denis
25.07.2018
03:35:44
Потому что баллы ЕГЭ не позволяет ,деньги тоже ,чтобы платно
ИТ мб,но я за математикой для программиста
ИТ в россеюшке прийдет конец ИМХО, это вопрос времени

Ymka
25.07.2018
03:36:08
кстати, где можно найти работу в Питере джуном, кроме hh?
Шад?

Google

Ymka
25.07.2018
03:37:10
Да прогерам и математикам диплом не важен

Eugene
25.07.2018
03:37:13
Потерянного времени не бывает, лишней бумажки тоже

Denis
25.07.2018
03:38:21
Все изучил и поспрашивал
Я думаю, надо изучить отзывы о тех вузах, в которые собираешься поступать. Поспрашивать студентов, возможно, в своем городе проще это сделать
Потерянного времени не бывает, лишней бумажки тоже
Говорят матем( а это самое главное) и там и там норм,но в моем городе посильнее.И программа в моем мне ближе намного( математика и комп. Науки) а в Мск вузе ( прикладная математика )что чуть-чуть не то,но доучить можно
Шад топ,я туда собираюсь потом
Шад?

Eugene
25.07.2018
03:41:12

Josh
25.07.2018
03:42:00

Denis
25.07.2018
03:42:40
Да,это очевидно,я просто пытаюсь больше узнать,чтобы проанализировать
Ну, тогда сложно что-то советовать. Думаю, окончательный выбор должен сделать сам

Eugene
25.07.2018
03:42:46
Потому что мы, как люди посторонние, не можем знать все факторы. Каково тебе жить с родителями/жить отдельно, например, и т.д. и т.п.
Я, например, однозначно не хотел жить с родителями, поэтому после школы сразу уехал

Josh
25.07.2018
03:43:01
хотя то, что выбрал тормознутый питон на бек куда более весомая ошибка в жизни

Eugene
25.07.2018
03:43:24
Куда бы деться от учителей в жизни? Каждый второй пытается учить )

Denis
25.07.2018
03:43:45
Я и не буду с ними жить )

Egor
25.07.2018
03:44:02
Тормознутый? Ахахах

Denis
25.07.2018
03:44:10
Гоу рулит ?))
хотя то, что выбрал тормознутый питон на бек куда более весомая ошибка в жизни

Eugene
25.07.2018
03:44:39

Denis
25.07.2018
03:45:05