
Aragaer
29.11.2018
05:42:39
и в этом месте рекурсия

Сергей
29.11.2018
05:43:38

Aragaer
29.11.2018
05:44:38
примерно то же, что и у тебя там

Tishka17
29.11.2018
05:51:08
Зачем класс метод и замыкание, когда можно объект просто?

Google

Сергей
29.11.2018
05:53:08

Tishka17
29.11.2018
05:55:06
Конечно, создать замыкание - намного читабельнее

Сергей
29.11.2018
05:57:29

Tishka17
29.11.2018
05:57:40
cls._code_str = code_str вот это вообще хорошо
Меняем не для инстанса, а для всего классе
Ты понимаешь же, что сейчас нельзя два декодера параллельно юзать?
У тебя какое-то замыкание и то не доделанное

фей
29.11.2018
05:59:39
Hello, World! Подскажите , плз, какой модуль импортировать, чтобы нарисовать, например, квадрат (или сетку) в квадрате?

Tishka17
29.11.2018
06:00:46
Тогда уж вот так:
def decode(code_str: str)-> list:
result_list=[]
def decode_process(decode_begin: str, code: str):
if not code:
result_list.append(decode_begin)
return
decode_process((lambda x, y: x + cls._decode_key.get(y))(decode_begin, code[0]), code[1:])
if len(code) > 1 and code[:2] in cls._decode_key:
decode_process((lambda x, y: x + cls._decode_key.get(y))(decode_begin, code[0:2]), code[2:])
decode_process('', code_str)
return result_list

Сергей
29.11.2018
06:02:15
cls._code_str = code_str вот это вообще хорошо
я в посте с кодом уже написал, что эта строка не нужна. Это было скорее по привычке, но не понадобилось. Зачем декодер вызывать паралельно? Пример - всего лишь концепт, там для оптимизации есть ресурсы. И замыкание в этом виде используется лишь для того, для чего используется

Tishka17
29.11.2018
06:03:34
Да я не в курсе зачем. Просто хранить что-то в классе бэд практис. Одновременно юзать класс и замыкание - тоже. Делай или класс и храни в объекте. Или делай функцию с замыканием. Одновременно у тебя все намешано
Замыкание у тебя не используется, ты хранишь все равно в классе список

Google

SetazeR
29.11.2018
06:04:52
Я что-то туплю и не въезжаю, про какое замыкание речь?
рекурсия?

Tishka17
29.11.2018
06:06:03

Сергей
29.11.2018
06:07:00

SetazeR
29.11.2018
06:07:07
всё равно не понял, ушёл в гугл образовывваться

Tishka17
29.11.2018
06:07:53

Сергей
29.11.2018
06:11:09
Решение в такой форме лишь потому, что по мере написания концепция менялась. Сначала это должен быть просто класс, потом подумал, что неудобно создавать класс ради всего 1 функции, переделал в классметод, потом понял, что с замыканием сделать проще. Из-за этого получился именно такой гибрид

Tishka17
29.11.2018
06:11:40
Ой да пожалуйста, просто так не делай больше и всё

Сергей
29.11.2018
06:12:02
обещаю :)


Iliya
29.11.2018
06:13:44
В общем у меня проблема, не моуг придумать решение
У меня в папке /db/Engine-logs/ лежат логи, в этой папке раз в три минуты создается папка с именем устройсва и временем, например DEV1-2018-11-28-13:57:01 или DEV2-2018-11-28-13:00:02 устройст которые генерят логи как видно два. В этих папках с именем устройства и временем складываются gzip архивы с именем op-engine.1.log.gz op-engine.2.log.gz и тд до op-engine.10.log.gz
Т.е. в каждой папке 10 gz архивов с логами.
Мне надо брать каждый лог, открывать что-то вроде gzip.open(file_gz, 'rb') и парсить лог из архиват, обрабатывать инфу. Обработку я сделал и все ок, просто вытянул файл и оттестил.
Но мне надо по кроду дергать скрипт, чтобы он например раз в 15 минут отрабатывал и парсил логи которые нагенерились за последее время.
Основная проблема, не знаю как правильно обратиться к архиву с логом при всех условиях описаных выше.
Кто-нибудь может что-то подсказать?
Основная непонятка, в том, чтобы правильно собрать путь к архиву, чтобы передать его в gzip.open()


Smirnov
29.11.2018
06:14:08
здравствуйте, не могу понять, как в sql запрос добавить переменную
я использую билиотеку pymysql
пишу типо такого

SetazeR
29.11.2018
06:15:36
стоп, декораторы - замыкания?
(но не наоборот)

Smirnov
29.11.2018
06:16:53
да фиг знает, я только недавно начал изучение, нашел в инете инфу. В пятницу нужно сдавать отчет, вот и не пойму.
сделал по аналогии и не фига не пашет

SetazeR
29.11.2018
06:17:42
@Tishka17

Iliya
29.11.2018
06:19:13

Google

Tishka17
29.11.2018
06:20:30

SetazeR
29.11.2018
06:20:57
декораторы - частный случай замыканий?
синтаксис похож

Tishka17
29.11.2018
06:21:11
При создании декоратора замыкание юзают, да

SetazeR
29.11.2018
06:22:23
почитал, стало примерно понятно что за зверь, но пока не совсем ясен реальный юзкейс
типа смотришь на задачу и понимаешь - вот тут нужно юзать замыкание

Сергей
29.11.2018
06:24:06
Кто-нибудь может что-то подсказать?
Основная непонятка, в том, чтобы правильно собрать путь к архиву, чтобы передать его в gzip.open()
Вам нужно хранить (например) в файле 2 значения: папку с последними архивами, что вы обработали, имя последнего архива в этот папке.
При старте этот файл программой читается. Потом в список помещаются имена папок, которые на диске (с помощью стандартной функции). Список сортируется. Если последний обработанный архив - последний в папке, то берется следующая папка, если не последний, то та, на которой вы закончили. Далее создается список файлов в ней и обрабатывается, начиная с первого в первом случае, описанном выше или со следующего - во втором случае. Дошли до конца списка, записали имя последней обработанной папки и архива в файл и завершились

Tishka17
29.11.2018
06:28:17

Iliya
29.11.2018
06:28:26

Tishka17
29.11.2018
06:30:02
Ещё вариант - каррирование

SetazeR
29.11.2018
06:34:13
это что, из области функционального программинга?

Tishka17
29.11.2018
06:34:56
Это когда из функции 2х переменных надо сделать функцию одной, например

SetazeR
29.11.2018
06:35:34
такой пример видел
у тебя там куча функций с функциями как аргументами
я к такому кунг-фу не привык
or rather python-fu

Iliya
29.11.2018
06:37:49

Tishka17
29.11.2018
06:38:19
Помню в школе спросил у преподавательницы как в паскале передать одну функцию в другую. Кажется мне не ответили :(

Google

SetazeR
29.11.2018
06:38:50
С тех пор ты вырос и показал им всем! :D

Сергей
29.11.2018
06:43:00

Tishka17
29.11.2018
06:43:44

Сергей
29.11.2018
06:45:59
Мне недавно пришлось помочь написать пару лаб на нём (лет 5 назад много писал), после питона - это какой то кошмар (в плане синтаксиса). Но за вечер вспомнил

Mr
29.11.2018
06:47:25
конечно хотелось бы чтоб кто-то тыкнул на ошибку в моем коде, ибо у меня от него уже рвотные позывы))

Сергей
29.11.2018
06:49:26

Admin
ERROR: S client not available

Mr
29.11.2018
06:49:49

M
29.11.2018
06:50:46

Tishka17
29.11.2018
06:51:06
Ты ещё спроси зачем в каждой строке temp1

Mr
29.11.2018
06:51:16

M
29.11.2018
06:51:27
Это же список.

SetazeR
29.11.2018
06:51:27
Тереееесно

Mr
29.11.2018
06:51:42

Tishka17
29.11.2018
06:51:43
Я в этих temp1 уже глаза сломал

Mr
29.11.2018
06:51:53
я тоже.
это уже в рамках отчаяния)

Tishka17
29.11.2018
06:52:09

SetazeR
29.11.2018
06:52:39

Google

Mr
29.11.2018
06:53:18
мне щас абсолютно насрать насколько плох сам код, оптимизацией займусь позже
а вот где ошибка понять бы хотелось определенно

Tishka17
29.11.2018
06:53:45

SetazeR
29.11.2018
06:54:16
В смысле?
ну я почитал пример для твоего датакласс парсера
и нашёл там подобное в @датакласс

Tishka17
29.11.2018
06:54:46
https://habr.com/post/415829/

Mr
29.11.2018
06:57:25

SetazeR
29.11.2018
06:57:35
то-то я у тебя не нашёл определения

Tishka17
29.11.2018
07:03:33

Aragaer
29.11.2018
07:03:59
не, не 10 27
потому что 20 и 30 не годятся

Mr
29.11.2018
07:04:33

Aragaer
29.11.2018
07:04:35
а, там английский текст к тому же

Tishka17
29.11.2018
07:04:46
Кстати, а почему result.append(temp1+temp2), а два аппенда?

Aragaer
29.11.2018
07:05:03
справа, где 11+1, не должно быть ветки на 1+1+1
потому что уже взяли 11
и его уже не дробим

Tishka17
29.11.2018
07:05:13