LINUX.ORG.RU

Сообщения fat_angel

 

PyGObject 3 — кто-нибудь уже тыкал?

Форум — Development

Приветствую.

Кто-нибудь уже тыкал сие чудо, особенно в связке с 3-м пайтоном? Много ли приходится переписывать при портировании с pygtk2? Как с производительностью? Общие впечатления?

З.Ы. Для непосвященных: это то, во что переродилось pygtk.

З.З.Ы. Ебилда на просторах интернетов никому не попадалось?

fat_angel
()

[pygtk] При переопределении обработчика сигнала по умолчанию не передается ссылка на экземпляр класса

Форум — Development

Приветствую.

При написании виджета отображающего дерево директорий в файловой системе (основанного на gtk.TreeView) столкнулся со следующей проблемой. При переопределении сигнала row-expanded в мой новый обработчик не передается ссылка на экземляр класса (т.е. self):

TypeError: do_row_expanded() takes exactly 4 arguments (3 given)
Вот код
class DirectoryTree(gtk.TreeView):
    __gsignals__ = {
        "row-expanded": "override"
    }

    def __init__(self, default_path=None, show_hidden=False):
        model = gtk.TreeStore(str, str, str)
        super(DirectoryTree, self).__init__(model)
        self.__show_hidden = show_hidden
        self.__default_path = default_path
        
        column = gtk.TreeViewColumn()
        
        renderer = gtk.CellRendererPixbuf()
        column.pack_start(renderer, False)
        column.set_attributes(renderer, icon_name=1)
        renderer = gtk.CellRendererText()
        column.pack_start(renderer, True)
        column.set_attributes(renderer, text=2)
        
        self.set_headers_visible(False)
        self.append_column(column)

        self.__fill_model()
    
    def __fill_model(self, iter=None):
        model = self.get_model()
        if iter is None:
            path = "/"
        else:
            path = model.get_value(iter, 0)

        dircont = os.listdir(path)
        dircont.sort()
        for i in dircont:
            # Not show hidden items if we not want them
            if i.startswith(".") and not self.__show_hidden:
                continue
            abspath = os.path.join(path, i)
            if os.path.isdir(abspath):
                if abspath == os.environ.get("HOME"):
                    icon = "user-home"
                else:
                    icon = "folder"
                try:
                    os.listdir(abspath)
                except OSError:
                    icon = "error"
                newiter = model.append(iter, (abspath, icon, i))
                # Create fake subitem for lazy treeview
                if icon != "error":
                    model.append(newiter)
                gtk.main_iteration(False)

    def do_row_expanded(self, widget, iter, path):
        model = self.get_model()
        model.set_value(iter, 1, "folder-open")
        child = model.iter_children(iter)
        if model.get_value(child, 0) is None:
            self.__fill_model(iter)
            model.remove(child)
Причем если не мудрить с gobject'ом, а просто взять и присоединить обработчик с помощью connect(), то все работает. В чем проблема? Обработчик по умолчанию для данного сигнала нельзя переопределять?

И еще один вопрос по ходу. Насколько оправдано для виджетов такого рода использовать GIO? Если оправдано, то где можно посмотреть нормальных примеров использования GIO?

 

fat_angel
()

Статьи по перегонке сканов в электронные книги

Форум — Talks

Приветствую.

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

fat_angel
()

POSIX exit codes — где посмотреть?

Форум — Development

Приветствую.

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

Где бы посмотреть сводную табличку?

P.S. Возможно я как-то неправильно их обозвал — сильно не пинайте…

fat_angel
()

[pygtk] Динамическая генерация полей gtk.ListStore

Форум — Development

Приветствую.

Имеется список питоновских объектов с кучей полей внутри. Необходимо отобразить значения некоторых полей объектов из этого списка в gtk.TreeView.

В самом начале я создал наследника gtk.ListStore с первым полем содержащим мой пайтоноский объект и кучей дополнительных полей отражающих данные из полей этого объекта. Решение простое, но неэффективно и громоздкое — надо дублировать данные (соответственно растет объем занимаемой памяти), следить за тем чтоб в полях модели и полях объекта были одни и те же данные и т.д.

Сейчас у меня возникло желание генерировать часть полей, которые содержат данные из пайтоновского объекта, динамически. Соответственно возможно ли это и какие методы требуется переопределить в моем наследнике gtk.ListStore?

 

fat_angel
()

[Матан] Чего почитать?

Форум — Talks

Приветствую.

Решил освежить, систематизировать и углубить свои познания в математике. Чего посоветуете почитать?

Так как я решил систематизировать знания, то желательно чтобы повествование начиналось с основ и далее переходило на более сложные абстракции. Так же желательно чтоб язык повествования был более-менее живой и интересный.

 

fat_angel
()

Джону Лорду 70!

Форум — Talks

А старик все так же отжигает.

Для Ъ (© Wikipedia)

Джон Дуглас Лорд (англ. Jon Douglas Lord; 9 июня 1941, Лестер, Англия) — английский композитор и клавишник, один из самых влиятельных и лучших клавишников в рок-музыке.

Участник групп Artwoods, Flower Pot Men, Deep Purple, Paice, Ashton & Lord, Whitesnake. С 2002 года сосредоточился на сольной карьере.

Стиль игры Джона Лорда легко узнаваем, как из-за характерного звука Хаммонд-органа, часто используемого музыкантом для исполнения, так и из-за заметного влияния классических композиторов и джаза на произведения музыканта.

Для !Ъ:

Предлагаю забить на все и еще раз послушать что-нибудь из его восхитительных произведений.

Ах да, линукс здесь при том, что музыку Джона Лорда можно слушать в том числе и под этой ОС.

fat_angel
()

[Gentoo][Request] Разыскивается годный ман по настройке suspend

Форум — Linux-hardware

Приветствую.

Все таки решился настроить suspend на своем ThinkPad z61m (видео — 945й интел). Настроил ядро (sys-kernel/gentoo-sources-2.6.38-r6):

[*] Power Management support
[ ]   Power Management Debug Support
[*] Suspend to RAM and standby
[ ] Hibernation (aka 'suspend to disk')
[ ] Run-time PM core functionality
[*] ACPI (Advanced Configuration and Power Interface) Support  --->
[ ] SFI (Simple Firmware Interface) Support  --->
< > APM (Advanced Power Management) BIOS support  --->
    CPU Frequency scaling  --->
-*- CPU idle PM support
[*]   Cpuidle Driver for Intel Processors
Сразу оговорюсь, что меня интересует только suspend to ram, suspend to disk (aka hibernate) нафиг не нужен.

После этого поставил sys-power/pm-utils-1.4.1 и попробовал запустить pm-suspend. Что-то начало происходить, монитор погас (но подсветка не выключилась), загорелся светодиод спящего режима на панели лаптопа, вентилятор продолжил жужжать, сетевая продолжила мигать индикаторами.

Из сна лаптоп выходить отказался (если он вообще туда отходил) и пришлось сбрасывать через отключение питания. /var/log/pm-suspend.log гласил следующее:

Initial commandline parameters: 
Blacklisting 01grub.
Blacklisting 55NetworkManager.
Wed Jun  8 19:09:33 MSD 2011: Running hooks for suspend.
Running hook /usr/lib/pm-utils/sleep.d/00logging suspend suspend:
Linux arnor 2.6.38-gentoo-r6 #1 SMP PREEMPT Fri Jun 3 10:02:32 MSD 2011 i686 Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz GenuineIntel GNU/Linux
Module                  Size  Used by
pppoe                   5836  2 
pppox                   1182  1 pppoe
ppp_generic            15583  6 pppoe,pppox
slhc                    3437  1 ppp_generic
iptable_nat             2688  0 
nf_nat                 10264  1 iptable_nat
iptable_mangle          1040  0 
ipt_LOG                 5089  7 
ipt_REJECT              1485  1 
nf_conntrack_ipv4       7457  7 iptable_nat,nf_nat
nf_defrag_ipv4           831  1 nf_conntrack_ipv4
xt_state                 775  4 
xt_tcpudp               1599  6 
iptable_filter           924  1 
ipt_addrtype            1285  0 
xt_DSCP                 1367  0 
xt_dscp                 1043  0 
xt_string                847  0 
xt_owner                 731  0 
xt_NFQUEUE              1297  0 
xt_multiport            1146  1 
xt_mark                  701  0 
xt_iprange              1020  0 
xt_hashlimit            4785  0 
xt_conntrack            1899  0 
xt_connmark             1169  0 
nf_conntrack           38679  6 iptable_nat,nf_nat,nf_conntrack_ipv4,xt_state,xt_conntrack,xt_connmark
ip_tables               7802  3 iptable_nat,iptable_mangle,iptable_filter
x_tables                9011  20 iptable_nat,iptable_mangle,ipt_LOG,ipt_REJECT,xt_state,xt_tcpudp,iptable_filter,ipt_addrtype,xt_DSCP,xt_dscp,xt_string,xt_owner,xt_NFQUEUE,xt_multiport,xt_mark,xt_iprange,xt_hashlimit,xt_conntrack,xt_connmark,ip_tables
hdaps                   6444  0 
tp_smapi               12772  0 
thinkpad_ec             3895  2 hdaps,tp_smapi
irtty_sir               2421  0 
sir_dev                 6835  1 irtty_sir
nsc_ircc                9992  0 
irda                   70099  2 sir_dev,nsc_ircc
             total       used       free     shared    buffers     cached
Mem:       2062960     413092    1649868          0       5488     233356
-/+ buffers/cache:     174248    1888712
Swap:       257036          0     257036

/usr/lib/pm-utils/sleep.d/00logging suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/00powersave suspend suspend:
Blacklisting 01grub.
Blacklisting 55NetworkManager.

/usr/lib/pm-utils/sleep.d/00powersave suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/01grub suspend suspend:

/usr/lib/pm-utils/sleep.d/01grub suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/49bluetooth suspend suspend:

/usr/lib/pm-utils/sleep.d/49bluetooth suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend:

/usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/75modules suspend suspend:

/usr/lib/pm-utils/sleep.d/75modules suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/90clock suspend suspend:

/usr/lib/pm-utils/sleep.d/90clock suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/94cpufreq suspend suspend:

/usr/lib/pm-utils/sleep.d/94cpufreq suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/95led suspend suspend:

/usr/lib/pm-utils/sleep.d/95led suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler suspend suspend:
Kernel modesetting video driver detected, not using quirks.

/usr/lib/pm-utils/sleep.d/98video-quirk-db-handler suspend suspend: success.
Running hook /usr/lib/pm-utils/sleep.d/99video suspend suspend:
kernel.acpi_video_flags = 0

/usr/lib/pm-utils/sleep.d/99video suspend suspend: success.
Wed Jun  8 19:09:34 MSD 2011: performing suspend

Короче что за фигня и где почитать про настройку ядра и pm-utils для suspend'а?

Гугль помогает слабо, поскольку выдает только статьи, разной степени тухлости, относящиеся к tuxonice или user mode suspend, мне же хочется настроить стандартный саспенд из ядра.

 ,

fat_angel
()

[Дизайн интерфейсов] Как лучше организовать редактирование табличных данных?

Форум — Development

Приветствую.

Озадачился проблемой, какой способ редактирования табличных данных удобнее:

  • Редактирование непосредственно в таблице
  • Создание специальных форм для редактирования

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

Какой метод предпочитаете вы и почему?

fat_angel
()

[pygtk] Как работает glib.io_add_watch?

Форум — Development

Приветствую.

Захотел выводить содержимое лог-файлов по мере поступления данных в них. Решил использовать glib.io_add_watch(). Вот что получилось:

class LogBuffer(gtk.TextBuffer):
    def __init__(self):
        super(LogBuffer, self).__init__()

    def load_file(self, filename):
        self.delete(self.get_start_iter(), self.get_end_iter())
        fd = open(filename, 'rb')
        iter = self.get_start_iter()
        for i in fd:
            self.insert(iter, i)
        glib.io_add_watch(fd, glib.IO_IN, self.__on_file_change)

    def __on_file_change(self, fd, condition):
        iter = self.get_end_iter()
        for i in fd:
            self.insert(iter, i)
        return True
Засунул буфер в TextView, скормил ему /var/log/messages. При запуске постоянно дергается __on_file_change(), но данных для чтения само-собой нет. Причем дергается до такой степени постоянно, что даже интерфейс не перерисовывается.

Что за фигня?

 

fat_angel
()

[PyGTK] перерисовка gtk.IconView тормозит при загрузке thumbnail'ов

Форум — Development

Приветствую.

Решил вот улучшить свою поделку. Сейчас добавляю возможность выбора различных вариантов предпросмотра картинок. Столкнулся с той проблемой, что gtk.IconView тормозит при загрузке этого самого предпросмотра, если у него включено отображение текста (т.е. установлено свойство markup-column с помощью метода set_markup_column()). При этом не важно отображается текст снизу иконки или справа. Тормоза начинают быть особо ощутимыми на больших списках — 500-1000 элементов и более.

Опишу вкратце алгоритм. Сначала у меня происходит загрузка картинок из директории в gtk.ListStore с пустым изображением в методе set_work_dir() класса MainApp (https://bitbucket.org/fat_angel/pybackdrop/src/9857878c8837/pybackdrop.py). Затем эта модель присобачивается к виджету и начинается неторопливая загрузка thumbnails в методе load_thumbnails() того же класса.

Самое веселое начинается тогда когда мы выбираем в качестве виджета gtk.TreeView или отрубаем показ текста у gtk.IconView — тормоза исчезают! И загрузка ~700 thumbnail'ов происходит где-то за 5 секунд — на мой взгляд вполне приемлемо.

Так вот, как бороться с тормозами в gtk.IconView при загрузке thumbnails при включенном отображении текста?

 

fat_angel
()

[GTK][PyGTK] Как определить, что формат изображения поддерживается GdkPixbuf

Форум — Development

Приветствую.

Нужно из списка файлов вычленить все те, которые поддерживаются GdkPixbuf. Сейчас для этого используется функция gtk.gdk.get_file_info() (в сишной библиотеке это gdk_pixbuf_get_file_info()). Все работает неплохо, но построение списка (GtkListStore) из ~700 файлов занимает порядка 3-4 секунд и это еще без загрузки thumbnail'ов, в общем долго. Как я понял это связано с тем, что gtk.gdk.get_file_info() читает кусок каждого файла, что в принципе неплохо, так как при этом получается куча полезной информации вроде размеров картинки, но первоначальное построение списка хотелось бы ускорить.

Поэтому второй мыслью было получить список расширений поддерживаемых типов файлов, из функции gtk.gdk.pixbuf_get_formats() (gdk_pixbuf_get_formats()), и уже по ним отсеивать файлы. Казалось бы хорошо, но эта функция, как я понял, возвращает только информацию о форматах, поддержка которых вкомпилена в GTK. Кроме них же, еще есть возможность использования внешних загрузчиков. Например такие загрузчики предоставляет libopenraw и libwmf.

В общем как еще можно выполнить задачу поставленную в SUBJ?

 ,

fat_angel
()

Свободная классическая музыка в свободной доступе — оно существует?

Форум — Talks

Приветствую. Интересен сабж.

Не обязательно даже классическую, но обязательно симфоническую или оркестровую. http://www.jamendo.com/en/tag/orchestre конечно хорошо но уж очень мало.

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

fat_angel
()

[Request] Консольная адресная книжка (не abook)

Форум — Talks

Приветствую!

Нужна консольная адресная книга. abook конечно хорош, но в нем нет категорий контактов, а мне очень не хочется мешать данные о друзьях, родственниках и остальных. Поддержка юникода обязательна!

Можно конечно и гуевую, но только с минимумом зависимостей, желательно на GTK и только если ничего вменяемого консольного кроме abook нет.

 

fat_angel
()

[iptables] Блокирование исходящего траффика — насколько оправдано?

Форум — Admin

Приветствую.

Осваиваю премудрости iptables потихоньку. Стало интересно, чем можно объяснить (кроме паранойи конечно), рекомендации некоторых авторов, устанавливать для цепочки OUTPUT таблицы filter правило по умолчанию DROP и последующее разрешение определенных исходящих соединений. Какие типы атак возможны (если возможны конечно) при политике по умолчанию ACCEPT? Будем считать, что имеются 2 варианта:

  • Среднестатистический сервер-шлюз с веб-сервером, ftp-сервером, мускулем-постгресом, почтой и пр.
  • Девелоперский копьютер с тестовыми веб-сервером, базой данных и набором десктопно-девелоперских приложений, но не выполняющий функций шлюза-маршрутизатора.

Хомячковый десктоп с торрентами, браузерами и прочими почтами-асечками мне кажется даже не имеет смысла брать в рассмотрение.

 

fat_angel
()

Freelance — с чего начать?

Форум — Talks

Приветствую.

Ситуация следующая: 27 лет, девственник, бородат, хикки-задрот с нотками мизантропии в характере. Самообучаемость хорошая, читаю доку на английском, но к сожалению ленив. Учился на инженера-строителя, институт так и не закончил. Два года уже нигде не работаю и возвращаться в строительство нет никакого желания. До этого лет 5 работал по специальности.

Задача зарабатывать хотя бы на еду и оплату коммунальных услуг. Есть желание заниматься либо linux-эникеем, либо быдлокодингом. Но учитывая наш безумный рынок труда (где скоро высшее образование и опыт работы будет нужен даже для дворников), найти хоть какую-то работу по этим специальностям в моей деревне (см. профиль) очень проблематично. Предлагающим идти мести улицы или на завод сразу хочу напомнить о моем скверном задрото-мизантропном характере. Хотя эту возможность я все же рассматриваю как крайнее решение.

Как следствие всего выше перечисленного возникла мысль заняться фрилансом. Пока ориентировочно веб-девом. На данный момент я знаком на уровне чуть ниже среднего с пистоном (стандартная библиотека, PyGTK), а также знаком с синтаксисом и основными принципами жабы, пых-пыха, ANSI-C и SQL. Интересует следующее:

  • Какие именно стеки технологий мне сейчас стоит усиленно штудировать, чтоб как можно быстрее вклиниться в отрасль?
  • Чтоб такое навелосипедить или в каком проекте поучаствовать для красивой строчки в резюме?
  • Какие из существующих сайтов для фрилансеров наиболее вменяемые?
  • Как во фрилансе обстоят дела с кидаловом? Как с ним бороться?
  • Какие системы оплаты наиболее предпочтительны — пластик, веб/яндекс-деньги или что-то еще?

Расскажите свои истории успеха и «Истории Успеха»©®™ если таковые имеются.

fat_angel
()

Помогите опознать самолет.

Форум — Talks

Приветствую.

В некоторых фильмах и играх появляется самолет с поворачиваемыми винтами. Т.е. 2 винтовых двигателя расположены по краям крыльев и могут поворачиваться из горизонтального положения в вертикальное. Т.е. самолет вертикального взлета и посадки с винтовыми двигателями. Интересует имеется ли реальный прототип этих аппаратов и если да то какая это модель.

fat_angel
()

[Apache] Запретить доступ ко всем файлам кроме *.html

Форум — Admin

Приветствую.

Разбираюсь с настройкой апача. Заставляю его отдавать, установленную локально, документацию к программам. Столкнулся с такой задачей: как сделать так чтобы был доступ ко всем *.html файлам, но остальные файлы не были видны? Пробовал следующее:

<Directory "/usr/share/doc/some_dir">
    Allow from 192.168.1.0/8
    <Files "*">
         Deny from All
    </Files>
    <FilesMatch \.(html?)$>
         Allow from 192.168.1.0/8
    </FilesMatch>
</Directory>
но это не работает. Можно ли как то обойтись без перечисления всех файлов которые надо заблокировать?

 

fat_angel
()

Япония — к полярному лису присоединяются сородичи

Форум — Talks

Новое землетрясение. Магнитуда 7.4 балла. Готовятся к цунами, высота волны может достигать 1-го метра. АЭС вроде бы не пострадали.

Пруф http://www.reuters.com/article/2011/04/07/us-japan-quake-idUSTRE73642T20110407.

fat_angel
()

HTTP, EOF и чтение файлов

Форум — Development

Приветствую.

Сразу прошу прощения за столь дурацкий вопрос, но читать весь RFC пока выше моих возможностей.

Дело в следующем. При чтении с использованием пайтоновской urllib2 я время от времени получаю EOF еще не загрузив файл до конца. Вопрос такой — имеет ли смысл продолжать чтение используя текущее соединение или надо закрывать это и создавать новое соединение?

fat_angel
()

RSS подписка на новые темы