26 Отредактировано ssd (10-01-2009 00:35:07)

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Стоило только чуть чуть отвлечься и столько пропустил smile Книжки сейчас выкачаю, задачку решу. (спецально пролистал мимо предложеные варианты ответов)
А моя задачка тоже не очень сложна и, главное, масштабируется по сложности. Но она больше не на Питон, а именно на Gtk. Итак:
Есть файл /var/lib/dpkg/status. Необходимо его запарсить и показать в окошке: (по мере увеличения сложности)
1) список приложений
2) список приложений и все параметры текущего в списке
3) список приложений и, в отдельном скроллирующемся окошке, список приложений, от которых оно зависит
4) список приложений и, в отдельном окне, список приложений, от которых оно зависит и список приложений, котороые от него зависят.
5) все как в п.4, но с возможностью изменения текущего приложения списка путем указания одного из приложений, зависящих/зависимых с позиционированием списка приложений.

Вот как-то так. Получится вьювер приложений(пакетов) и их зависимостей. Можно еще добавить в список приложений объем каждого и возможность сортировки списка как по имени, так и по размеру. Можно добавить везде к наименованию пакета количество пакетов от которых он зависит/количество зависимых от него пакетов - например в скобках. И т.д.

Nokia N800/Diablo_2008.43-7 + 4Gb Transced SDHC6 + 1Gb AData Speedy SD Duo / Philips Xenium 9@9d
DLink DUB-104 + 32Gb Transcend JetFlash + A4Tech KL-5UP / ACorp ADSL W422G
VITA BREVIS

27 Отредактировано TWINc (10-01-2009 11:56:05)

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

ssd, http://maemo.org/downloads/product/OS2008/packageview/ Лучше уж таймер нормальный сделать, а то EggTimer - унылое говно!
Wall, Я пока понаблюдаю smile

28

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Этот тред не для делания таймеров, он для обучения программированию на питоне для таблетки.
Странно, что эта простая истина никак не проникнет в умы окружающих. Я что-то не так объяснил?

770/800/810/900

29

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Wall, лол. Все хотят задание вот я и предложил таймер. Это куда полезней просматривалки пакетов.

30

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Про задачу ранжирования файлов по размеру. Решаю. Получил словарь, где ключи - полный путь до файла, а значения - имя файла с размером. Встал вопрос, что делать, если есть файлы с одинаковым именем/размером? Или это на усмотрение программиста? wink

Не мотай на ус то, что вешают на уши.
Nokia N810 + SE M600i

31

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Наверное надо, чтобы ключ был действительно полным путем до файла - вместе с его именем. Кстати, в моем решении из файлов с одинаковым размером выведется тот, у которого имя с последнего символа в алфавите сортировки.

N800 N900

32

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Я предлагаю подумать попутно над тем фактом, что файлов может быть очень много. Скажем, если искать от корня файловой системы. А количество файлов, которые нас интересуют задано заранее.

770/800/810/900

33

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Так ведь пока их все не переберешь, не узнаешь - какие самые большие. Или не так?

N800 N900

34

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

torovec пишет:

Получил словарь, где ключи - полный путь до файла, а значения - имя файла с размером. Встал вопрос, что делать, если есть файлы с одинаковым именем/размером? Или это на усмотрение программиста? wink

Нет не на усмотрение программиста. Это описано в условии. Если они попадают в нашу выборку - выводить. Если у них пути разные, то это для нас пока разные файлы. Про линки поговорим позже.

770/800/810/900

35

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

И еще может быть бесконечная вложенность...

36

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Тоже попозже.

770/800/810/900

37 Отредактировано torovec (10-01-2009 20:39:43)

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Наверно я неудачно выбрал "кошку", на которой тренеруюсь. Т.е. папку, которую парсю. smile Там встречаются файлы с одинаковыми именами. Вот и задумался.

Естественно, что ключи - полный путь до файла, включая имя файла. Только это гарантирует уникальность.

Не мотай на ус то, что вешают на уши.
Nokia N810 + SE M600i

38

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

mosfet пишет:

Так ведь пока их все не переберешь, не узнаешь - какие самые большие. Или не так?

Конечно. Но может быть собирать их в одну кучу для того, чтобы узнать какие из них самые большие - это не самый оптимальный путь?

770/800/810/900

39

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

torovec пишет:

Наверно я неудачно выбрал "кошку", на которой тренеруюсь. Т.е. папку, которую парсю. smile Там встречаются файлы с одинаковыми именами. Вот и задумался.

ну, они же не в одной папке, поэтому для нас они разные.

770/800/810/900

40

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

TWINc пишет:

ssd, http://maemo.org/downloads/product/OS2008/packageview/ Лучше уж таймер нормальный сделать, а то EggTimer - унылое говно!
Wall, Я пока понаблюдаю smile

PackageView не показывает наглядно связи пакетов, так что тестовая задачка имеет хоть какой-то призрачный смысл. Но в целом, согласен - есть прорва идей программ получше предложеной. Просто моя задачка именно для освоения средств программирования оконного интерфейса.

Nokia N800/Diablo_2008.43-7 + 4Gb Transced SDHC6 + 1Gb AData Speedy SD Duo / Philips Xenium 9@9d
DLink DUB-104 + 32Gb Transcend JetFlash + A4Tech KL-5UP / ACorp ADSL W422G
VITA BREVIS

41

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Ничччо не понимаю! Это у меня руки кривые или я такой тупой, что глазам поверит не могу...
У меня нет в доступе десктопа с линухом. Соответственно программировать собираюсь на таблетке. Вопрос: на таблетке есть среда программирования? Интеллектуальная оконная среда, в которой можно набирать код, вызывать справку по языку, отлаживать и т.д. ...
Я попытался поставить Скратчбокс (при помощи скрипта с maemo.org) но он меня обматерил что проц не i386. Попробовал поставить SDK в расчете на то, что он с собой принесет как-нибудь IDE - обматерил что нет Скратчбокса.
Где прокол?!

Nokia N800/Diablo_2008.43-7 + 4Gb Transced SDHC6 + 1Gb AData Speedy SD Duo / Philips Xenium 9@9d
DLink DUB-104 + 32Gb Transcend JetFlash + A4Tech KL-5UP / ACorp ADSL W422G
VITA BREVIS

42

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Кодить на питоне можно и под виндой

43

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

ssd, ближайшее по запросу - редактор SciTE. Есть подсветка синтаксиса, может запускать выполнение скрипта, в xterm.
Интелектуального ничего не видел.

P.S. Какая помощь, если даже man'ов под maemo нет...

Не мотай на ус то, что вешают на уши.
Nokia N810 + SE M600i

44

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

ssd пишет:

Вопрос: на таблетке есть среда программирования? Интеллектуальная оконная среда, в которой можно набирать код, вызывать справку по языку, отлаживать и т.д. ...

Я бы не рекомендовал смешивать изучения языка программирования с изучением среды. Если у вас есть уже среда - ставьте и программируйте. Как тут уже сказали, Питон и под виндой работает. Правда дальше, скорее всего, появиться неободимость пользовать специфические linux и maemo API и тогда все равно нужно будет перелазить на таблетку, так что рекомендую либо линух, либо таблетку.

Все, что вам будет нужно на первых порах - редактор. Если vi и командная строка вызывает у вас отвращение, то просто возьмите какой-нибудь редактор для maemo, их по-моему много. Делается это так: идете на garage.maemo.org и в строке поиска набираете 'editor'. Получите и SciTe и PyGtkEditor и другие.

Есть еще вариант - программировать на десктопе, а запускать на таблетке. Не очень удобно отлаживаться, но программировать на порядок удобнее.

Я делаю это обычно либо под линухом, либо зашедши по ssh с десктопа на таблетку. В браузере смотрю документацию. В качестве редактора либо vim, либо emacs.

770/800/810/900

45

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Достаточно скачать maemo SDK в vmware образе с http://maemovmware.garage.maemo.org/ и бесплатный vmware player. Там всё есть - и среда и документация.

N800 N900

46

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

mosfet, этот позор работает через жопу. я так и не смог под ним написать символы " ' без какого то дополнительного утф8 мусора.

47

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Кто тут хотел оптимизации:
(безо всяких проверок, только алгоритм)

Инициализируется список нужной длины. Файл с размером больше 0-го элемента заносится в нулевую позицию, затем список сортируется, всё повторяется.
Т.о. мелкий нулевой элемент приносится в жертву. Перед выводом на экран переворачивается.

Оптимизация в том, что работа ведется со списком заранее заданной длины, он не наращивается в процессе.

#!/usr/bin/env python2.5
# -*-coding: utf-8 -*-

import sys
import os

MAXFILES = 5
BASEDIR = '.'

filelist = []
for i in range(MAXFILES):    # 0 1 2 3 4
   filelist.append( (0, None) )

def processDirectory(args, dirname, filenames):
   for file in filenames:
      fullpath = dirname + '/' + file
      if os.path.isfile(fullpath):
         filesize = os.path.getsize(fullpath)
         if filesize > filelist[0][0]:
            filelist[0] = (filesize, fullpath)
            filelist.sort()

os.path.walk(BASEDIR, processDirectory, None)

filelist.reverse()
for i in range(MAXFILES):
   print '%10d\t%s' % filelist[i]
N800 N900

48

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Уже лучше.

Очередные пожелания:
1. Вернуть обработку параметров командной строки. Использование OptionParser приветствуется. Про OptionParser читать здесь: http://www.python.org/doc/2.5/lib/module-optparse.html

2. Вот это нужно упростить:

filelist = []
for i in range(MAXFILES):    # 0 1 2 3 4
   filelist.append( (0, None) )

3. Вот это тоже:

filelist.reverse()
for i in range(MAXFILES):
   print '%10d\t%s' % filelist[i]

Подсказки:
http://www.python.org/doc/2.5/tut/node7 … 0000000000
http://www.python.org/doc/2.5/tut/node5 … 0000000000

770/800/810/900

49

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

filelist = MAXFILES * [(0, None)]

for i in reversed( range(MAXFILES) ):

Ы?

N800 N900

50 Отредактировано alex2ndr (11-01-2009 23:02:15)

Re: Рекомендованные (знатоками) книги/ресурсы для новичков

Вот и мое рещение подоспело - критикуйте wink

#!/usr/bin/env python2.5
# -*-coding: utf-8 -*-

import os, sys
# Проверяем наличие 1-го аргумента
if len(sys.argv) < 2 : 
    print'Day argum 1'
    sys.exit()

pathtodir = str(sys.argv[1])
# проверяем истинность первого аргум
if not os.path.isdir(pathtodir):
    print 'Eto ne directory'
    sys.exit()
# Добавляем слэк к пути если его нет изначально
elif pathtodir[-1] != '/': pathtodir = pathtodir + '/'

# Проверяем наличие 2-го аргумента
if len(sys.argv) < 3 : 
    print'day argum 2'
    sys.exit()

# проверяем истинность второго аргум
if not sys.argv[2].isdigit():
    print 'Eto ne integer'
    sys.exit()
else: maxfilecont = int(sys.argv[2])

filelist = []
# Получаем листинг нужной папки
listingdir = os.listdir(pathtodir)
for i in range(0,len(listingdir)):
    #Получаем полный путь а не относительный
    listingdir[i] = pathtodir + listingdir[i]
    #Проверяем файл или папка - если файл то записываем в наш список кортеж из 
    #размера файла и пути к нему
    if os.path.isfile(listingdir[i]):
        filelist.append( (int(os.path.getsize(listingdir[i])), (listingdir[i])) )

#Сортируем
filelist.sort()
filelist.reverse()

#Проверяем что больше - файлов в списке или желаемое число
#т к мы не можем вывести напечать больше файлов чем есть в каталоге
if (len(filelist) < maxfilecont): maxfilecont = len(filelist)
#Выводим на печать наш список кортежей (размер , путь)
for i in range(0,maxfilecont):
    print "%d        %s" % (filelist[i])

Я еще подумаю - может выложу еще какую нить оптимизацию

ЗЫ Над надписями в файле(типа Eto ne directory) не морочился - за это не ругать smile

Nokia N800 OS 5.2008.43-7 / Nokia 3110 Classic / Debian 5.0.0 Lenny