Форум сайта python.su
+ весь мир потихоньку переходит на utf-8Точно, кроме netbeans который по прежнему упорно дефолтно генерит под виндой cp1251
Прекрасно хочет.Ну да как обычно танец с бубнами, я тут вообще угарал когда поставил Lazarus - там дефолтно иероглифы выводит в меню.
Офлайн
Мой проект в процессе, не хватает времени, но пока сделал перевод документации Bottle подробности http://python.su/forum/viewtopic.php?id=7004
Офлайн
Идеологический вопрос:
Моя программа и как многие другие предполагаю последовательное выполнение алгоритма. В случае возникновения ситуации которая требует вмешательства пользователя, например ввод данных, программа останавливается, что-то происходит, и продолжается с того же места .
В случае web интерфейса логика получается несколько иная.
Лучше на конкретном примере:
Задача прочитать построчно файл, если строка > 50 символов, то нужно ее либо отредактировать до 50 символов либо разбить на 2 части (для простоты второй вариант опустим).
Как это будет выглядеть в классическом исполнении думаю понятно.
Вопрос в том как это сделать используя веб морду.
main_page: input type=“text” input type=“submit”
соответственно на main_page есть обработчик POST. По сути он и будет обрабатывать файл и если все хорошо, то в конце этой функции будет return “Done”
Но в процессе обработки возникла ситуация требующая вмешательства, нужно вызвать страницу-код обрабатывающий событие и вернутся обратно в main_page(POST).
Вот я не догоняю как все это реализовывать.
Офлайн
если обработка файлов занимает значительное время то я бы сделал отдельный процесс который занимается обработкой файлов, если нужно вмешательство то процесс останавливается и устанавливает флаг, клиент обращается к веб, тот смотрит что стоит флаг и выводит пост-морду. в html можно зашить автообновление.
если обработка быстрая то можно обрабатывать прямо при обращении клиента сохраняя промежуточный результат работы.
а по простому, процесс пробежал по всему файлу и потом вывалит все “проблемные” места в одну пост-морду
Офлайн
o7412369815963Спасибо, про пробежать по файлу думал, но есть зависимость между траблами, т.е. исправив один еще 10 отпадают, поэтому все вываливать не лучший вариант.
если обработка файлов занимает значительное время то я бы сделал отдельный процесс который занимается обработкой файлов, если нужно вмешательство то процесс останавливается и устанавливает флаг, клиент обращается к веб, тот смотрит что стоит флаг и выводит пост-морду. в html можно зашить автообновление.
если обработка быстрая то можно обрабатывать прямо при обращении клиента сохраняя промежуточный результат работы.
а по простому, процесс пробежал по всему файлу и потом вывалит все “проблемные” места в одну пост-морду
Офлайн
тут не читать, тут делать надо.
что-нибудь наподобие такого:
скрипт обработки файла:
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'])
Офлайн