Форум сайта python.su
0
+ весь мир потихоньку переходит на utf-8Точно, кроме netbeans который по прежнему упорно дефолтно генерит под виндой cp1251
Прекрасно хочет.Ну да как обычно танец с бубнами, я тут вообще угарал когда поставил Lazarus - там дефолтно иероглифы выводит в меню.
Офлайн
0
Мой проект в процессе, не хватает времени, но пока сделал перевод документации Bottle подробности http://python.su/forum/viewtopic.php?id=7004
Офлайн
0
Идеологический вопрос:
Моя программа и как многие другие предполагаю последовательное выполнение алгоритма. В случае возникновения ситуации которая требует вмешательства пользователя, например ввод данных, программа останавливается, что-то происходит, и продолжается с того же места .
В случае web интерфейса логика получается несколько иная.
Лучше на конкретном примере:
Задача прочитать построчно файл, если строка > 50 символов, то нужно ее либо отредактировать до 50 символов либо разбить на 2 части (для простоты второй вариант опустим).
Как это будет выглядеть в классическом исполнении думаю понятно.
Вопрос в том как это сделать используя веб морду.
main_page: input type=“text” input type=“submit”
соответственно на main_page есть обработчик POST. По сути он и будет обрабатывать файл и если все хорошо, то в конце этой функции будет return “Done”
Но в процессе обработки возникла ситуация требующая вмешательства, нужно вызвать страницу-код обрабатывающий событие и вернутся обратно в main_page(POST).
Вот я не догоняю как все это реализовывать.
Офлайн
32
если обработка файлов занимает значительное время то я бы сделал отдельный процесс который занимается обработкой файлов, если нужно вмешательство то процесс останавливается и устанавливает флаг, клиент обращается к веб, тот смотрит что стоит флаг и выводит пост-морду. в html можно зашить автообновление.
если обработка быстрая то можно обрабатывать прямо при обращении клиента сохраняя промежуточный результат работы.
а по простому, процесс пробежал по всему файлу и потом вывалит все “проблемные” места в одну пост-морду
Офлайн
0
o7412369815963Спасибо, про пробежать по файлу думал, но есть зависимость между траблами, т.е. исправив один еще 10 отпадают, поэтому все вываливать не лучший вариант.
если обработка файлов занимает значительное время то я бы сделал отдельный процесс который занимается обработкой файлов, если нужно вмешательство то процесс останавливается и устанавливает флаг, клиент обращается к веб, тот смотрит что стоит флаг и выводит пост-морду. в html можно зашить автообновление.
если обработка быстрая то можно обрабатывать прямо при обращении клиента сохраняя промежуточный результат работы.
а по простому, процесс пробежал по всему файлу и потом вывалит все “проблемные” места в одну пост-морду
Офлайн
32
тут не читать, тут делать надо.
что-нибудь наподобие такого:
скрипт обработки файла:
for s in open('file','r').readlines():
if нужноВмешательство():
open('input','w').write(s)
while 1:
time.sleep(5)
if os.path.isfile('output'): break
s = open('output','r').read()
os.rmfile('output')@route('/')
def get():
if os.path.isfile('input'):
#Выводим форму для редактирования, текст из файла 'input'
return '<textarea>%s</textarea><input post />' % open('output','r').read()
@route('/', method='POST')
def post():
os.rmfile('input')
#делаем запись в файл output
open('output','w').write(request.POST['data'])Офлайн