do not import flask
На время блокирующих операций типа чтения бд чтоб код не тормозился
Но при этом ни одна ормка не работает во всю силу, какой-то обомрамс получается
Nikita
люди подскажите бесплатный vpn на печку пожалуйста
do not import flask
Был же торнадо раньше тяжкий и балдежный, а сейчас одно пуссигейство осталось
Nikita
пк
do not import flask
люди подскажите бесплатный vpn на печку пожалуйста
Смотря сколько бесплатных ништяков тебе требуется
Nikita
Смотря сколько бесплатных ништяков тебе требуется
мне тупо запустить протестить telegram бота
Nikita
а деплоить каждый раз его не оч
do not import flask
Так лол, для таких целей и tunnelbear сгодится
do not import flask
Не мучайся ни с какими strong Swan 'ами
Ладно
Народ, помогите! Я хочу создать голосового ассистента(по типу Алисы). Есть примеры кодов или какие-то статьи по этой теме?
Ладно
Спасибо
Aleksey
мне тупо запустить протестить telegram бота
https://github.com/hwdsl2/setup-ipsec-vpn/tree/609f24257d5f9ca342182a4b2e119ea7736f6263
Aleksey
вот тема
Nikita
спасибо
Tishka17
Не мучайся ни с какими strong Swan 'ами
А что не так? Один из лучших бесплатных
do not import flask
Скачать бинарник и нажать установить, либо ебаться, хоть и минимально с установкой
Tishka17
Ну можно конечно openvpn, но для него надо ещё клиенты искать
Tishka17
мне тупо запустить протестить telegram бота
А. Тогда ssh туннель просто подними через сервер
Aleksey
https://github.com/hwdsl2/setup-ipsec-vpn/tree/609f24257d5f9ca342182a4b2e119ea7736f6263
посоны это в одину команду поднимет и настраивает все че надо
Anonymous
объясните пожалуйста, почему ничего не выводится? def decorator(): def wrapper(): print("Code before performance") show() print("Code after performance") return wrapper def show(): print("I am simple Function") decorator()
do not import flask
А. Тогда ssh туннель просто подними через сервер
А последующее создание сертификатов и прочее
Anonymous
так я же в конце написал "decorator()", это разве не вызывает ничего?
do not import flask
Каких сертификатов?
Там же IKEv2 юзается, а оно всегда требует сертификатов
Anonymous
decorator()()
спасибо!!!
Tishka17
Там же IKEv2 юзается, а оно всегда требует сертификатов
Ну вообще нет. Там же есть вариант с общим ключём
Серый
Привет. Есть ли возможность перейти к определенной строке большого файла (seek по new_lines) без прохода циклом по файлу и без кеширования файла используя linecache?
Anonymous
а как так
Anonymous
оно же просто повторно вызывает decorator? нет?
Tishka17
а как я могу вызвать функцию wrapper, кроме способа decorator()()?
Ну или прям внутри декоратора вызвать
Aragaer
оно же просто повторно вызывает decorator? нет?
нет, оно вызывает первый раз decorator, а второй раз его результат
Anonymous
понять как работают декораторы
Aragaer
декораторы обычно принимают аргумент
Aragaer
твой декоратор не принимает аргумента
Серый
нет, seek может выставить позицию в файле, но для этого надо знать длины строк
Длина строк неизвестна заранее, к сожалению. Есть файлик jsonl на гигабайт, и я пытаюсь сделать метод для его чтения по offset
Anonymous
ну вот какой он сейчас def decorator(func): def wrapper(): print("Code before performance") func() print("Code after performance") return wrapper def show(): print("I am simple Function") # decorator()() x = decorator(show) x()
Aragaer
если offset это позиция в байтах, то seek
Aragaer
у тебя есть функция show, а x это она же, завернутая в декоратор
Tishka17
Давай я попробую: 1. Когда ты пишешь @dec def x():... Это примерно то же самое что def f():... x=dec(f)
Tishka17
2. Когда ты в декораторе возвращаешь функцию она используется вместо оригинальной
Tishka17
3. Когда у тебя декоратор имеет вид def dec(f): ... return otherfunc @dec def x():... Как мы видели выше это эквивалентно x=otherfunc Поэтому когда ты вызываешь x() на самом деле просто вызывается otherfunc()
Tishka17
4. Так как обычно эту otherfunc создают внутри декоратора, она имеет доступ ко всему что в нем есть. В частности к оригинальной функции, так как она передается аргументом в декоратор
Tishka17
Tishka17
Видишь, х перестал быть функцией. В него записалось то, что вернцл декоратор
Tishka17
Соответственно, чтобы х был функцией, декоратор должен вернуть функцию
Tishka17
Он может вернуть ту же самую функцию. Но тогда они и работать будет как раньше
Tishka17
Чтобы при вызове х делалось что-то другое, декоратор должен вернуть другую функцию
Tishka17
Ну и наконец чтобы эта функция была не одна и та же постоянно, а как-то учитывала то, что мы передали, то мы создаём ее прям внутри при каждом вызове декоратора
Aragaer
но ты можешь сделать @decorator def show(): ...
Серый
если offset это позиция в байтах, то seek
Нет, по линиям offset, если бы мог отдавать по позиции в байтах можно было бы и так отдать, да)
Aragaer
тогда будет по-другому
Aragaer
если через @, то внутрь декоратора попадет show как написано, а потом результат декоратора (завернутая функция) будет присвоена в show (то есть функция будет заменена на завернутую)
Tishka17
Блин. В отрыве от контекста не очень. Надо будет переписать
Aragaer
Нет, по линиям offset, если бы мог отдавать по позиции в байтах можно было бы и так отдать, да)
ну вот в итоге надо взять файл и бежать по символам переноса строк. Я не знаю, как это "правильно" оптимизировать в питоне, на си я бы смаппил файл на память, а потом пробежался простым memchr
Aragaer
и я знаю, что при этом реально память не будет забиваться, потому что все подгруженные страницы могут быть (и будут) безболезненно выгружены операционкой
Aragaer
ну да, и вот по ней потом find-ом бегать
Anonymous
https://docs.python.org/3.7/library/mmap.html
а без декораторов можно пережить?
Tishka17
а без декораторов можно пережить?
Казалось бы как связан mmap и декораторы
Anonymous
я случайно именно это переслал))
Tishka17
Короче, декораторы ты можешь не делать, но понимать как они работают должен
Tishka17
Особенно ту часть, где decorator()()
Anonymous
Особенно ту часть, где decorator()()
мне кажется, что это работает так-же как у массивов типа: print( l[3][0])
Tishka17
Похоже, да