LINUX.ORG.RU

Сообщения mikron

 

Свой тип данных через дескрипторы Python (генерация тестовых данных)

Доброго времени суток,

Для нужд тестирования потребовалось соорудить генератор данных, беглый поиск подходящего готового решения не выявил, а потому начал клепать свой велик.

Общая идея такая:

class Entity:
    # Общие полезности

    def get_insert_statement(self):
        template = 'INSERT INTO {TABLE} ({FIELDS}) VALUES ({VALUES});'

        fields = [f for f in dir(self) if f.startswith('f_')]
        values = []
        for field in fields:
            if isinstance(getattr(self, field), VarcharField):
                values.append('\'' + getattr(self, field) + '\'')

        return template.format(**{'TABLE': self.table,
                                  'FIELDS': ','.join([f[2:] for f in fields]),
                                  'VALUES': ','.join(values)})


class VarcharField:
    def __init__(self, init_value=None):
        self._data = init_value

    def __get__(self, instance, owner):
        return self._data

    def __set__(self, instance, value):
        self._data = str(value)


class Employee(Entity):
    table = 'EMPLOYEE'
    f_employee_id = VarcharField()

if __name__ == '__main__':
    
    emp = Employee()
    emp.f_employee_id = '12345'
    
    print(emp.get_insert_statement())

Столкнулся с тем, что isinstance(getattr(self, field), VarcharField) работает не так как ожидал, а именно тип поля равен типу возвращаемого __get__ значения, а не типу-дескриптору. По сути все данные будут представленны строками(в том числе числа и даты), свои же типы нужны для правильной обвязки значений в выходных форматах.

Хотелось бы получить совет - какие еще возможны подходы(попробовал тип-класс с get/set методами - довольно громоздко использовать, также рассматриваю вариант генерить имена полей с префиксом отражающим тип, например f_v[archar]_employee_id)

P.S. Готовые ORM не брал, так как все они предназначены скорее именно для работы с БД, мне же нужно именно генерировать наборы данных(в том числе и не корректных, типа строк в числовом типе) с дальнейшей сериализацией в тектовые файлы/sql/бинарные форматы.

 

mikron
()

Помогите найти cap_mkdb

Здравствуйте,

есть некий сервак с NAS4Free на борту, возникла необходимость локализовать консоль(криво отображаются русские имена файлов в Samba шаре, в конфиге самбы unix charset = UTF-8), я с FreeBSD знаком мало, а ситуация из разряда «помоги, тыжпрограммист». В общем нашел пару инструкций на просторах сети, в них правится /etc/login.conf и после этого необходимо вызвать cap_mkdb, но этой программы я не смог найти. ЧЯДНТ? Помогите советом.

Дополнение, файла /etc/login.conf.db нет в системе, значит ли это что настройки читаются напрямую из /etc/login.conf?

 

mikron
()

Сайзеры в wxPython

Никогда раньше не программировал GUI, а тут вот понадобилось наговнокодить небольшой редактор табличных данных. Непродолжительное гугление привело к выбору wxPython, но вот возникла проблема, при открытии файла создаю закладку на Notebook, на нее сайзер, на него сетку(Grid) с ключом wx.EXPAND. Но сетка не ресайзится по размеру окна, то есть если я запускаю приложение, открываю файл, потом разворачиваю окно на весь экран и сетка остается того же размера что и была. Как сделать так чтоб размер сетки менялся при изменении размеров окна?

import wx
import wx.grid as grid_

class MyFrame(wx.Frame):
    def __init__(self, parent=None, id=wx.ID_ANY, pos=wx.DefaultPosition, title='Editor'):
        wx.Frame.__init__(self, parent, id, title, pos, (600,600))

        # Menu
        menuBar = wx.MenuBar()
        menu = wx.Menu()
        m_eopen = menu.Append(wx.ID_ANY, "&Open file")
        m_exit = menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Close window and exit program.")
        menuBar.Append(menu, "&File")
        self.SetMenuBar(menuBar)
        self.Bind(wx.EVT_MENU, self.OnOpen, m_eopen)
        self.Bind(wx.EVT_MENU, self.OnClose, m_exit)
        # Notebook
        self.notebook = wx.Notebook( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0 )

    def OnOpen(self, event):
        dirname = " "
        dlg = wx.FileDialog(self, "Choose a file to open", dirname, " ", "*.*", wx.OPEN)
        if dlg.ShowModal() == wx.ID_OK:
            filename = dlg.GetFilename()
            dirname = dlg.GetDirectory()

            # Create new tab
            tab_panel = wx.Panel( self.notebook, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
            self.notebook.AddPage( tab_panel, filename, False )
            extract_tab = wx.Panel( tab_panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )

            # Create Grid
            data_grid = grid_.Grid( tab_panel, wx.ID_ANY, wx.DefaultPosition, tab_panel.GetSize(), wx.HSCROLL|wx.VSCROLL )
            data_grid.CreateGrid( 5, 100)


            grid_sizer = wx.BoxSizer( wx.HORIZONTAL )
            grid_sizer.Add(data_grid, 1 , wx.EXPAND |wx.ALL)
            grid_sizer.FitInside(extract_tab)
            extract_tab.SetSizer(grid_sizer)
            extract_tab.Layout()

    def OnClose(self, event):
        dlg = wx.MessageDialog(self,
            "Do you really want to close this application?",
            "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION)
        if dlg.ShowModal() == wx.ID_OK:
            self.Destroy()

 ,

mikron
()

Умножение float на числа кратные 10 в Python

Уважаемые лоровцы, подскажите причину такого поведения в Python 2.7:

>>> -100900.96 * 100
-10090096.0
>>> -1009.96 * 100
-100996.0
>>> -10090.96 * 100
-1009095.9999999999

и как быть, если необходимо из float -1009.96 получить int -100996

 ,

mikron
()

ksh, строки, bad substitution

Привет.Опыта в написании скриптов не имею,но вот возникла необходимость переименовать файлы в каталоге,для этих целей такой скрипт:

#!/bin/ksh
for i in  *.ext
do
ii=`basename $i .ext`
echo $ii
ii=${ii//,/}
ii=${ii:0:21}
echo $ii
cat $i > $ii
done
exit 1

в общем надо убрать знаки препинания, расширение и обрезать имя до нужной длинны.Получаю ./script/test.sh[7]: ii=${ii//,/}: bad substitution

mikron
()

Irrlicht в eclipse помогите скомпилить hello world

пытаюсь собрать из примеров Irrlicht «Hello World» в eclipse, вывод консоли вот такой:

make all Building target: 111 Invoking: GCC C++ Linker g++ -L"/home/a/workspace/irrlichtTest/lib" -o"111" ./main.o -l"/home/a/irrlicht-1.7.2/lib/Linux/libIrrlicht.a" /usr/bin/ld: cannot find -l/home/a/irrlicht-1.7.2/lib/Linux/libIrrlicht.a collect2: выполнение ld завершилось с кодом возврата 1 make: *** [111] Ошибка 1

Путь до библиотеки правильный, она там есть, почему ее не видит линковщик?

mikron
()

Обновление arch

Доброго времени суток,я знаю что вопрос который я задам довольно расплывчатый,но тем немение прошу подсказать мне.У меня стоит ArchLinux,который я последний раз обновлял года 1,5-2 назад(я имею ввиду полное обновление системы.Сейчас вот хочу снова обновиться,но опасаюсь что все полетит к чертям.Подскажите к чему стоит приготовиться после обновления?pacman предлагает заменить следующее:

pacman -Syu

:: Синхронизируются базы данных пакетов...

core не устарел

extra не устарел

community не устарел

testing не устарел

:: Запускается полное обновление системы...

предупреждение: fluxbox: пропуск обновления пакета (1.1.1-1 => 1.3.2-1)

:: Заменить heimdal на core/krb5? [Y/n]

предупреждение: hsqldb-java: установленная версия (1.8.1.2-1) новее, чем

в extra (1.8.0.10-1)

:: Заменить iwlwifi-3945-ucode на core/linux-firmware? [Y/n]

:: Заменить iwlwifi-4965-ucode на core/linux-firmware? [Y/n]

:: Заменить iwlwifi-5000-ucode на core/linux-firmware? [Y/n]

:: Заменить kernel26 на core/linux? [Y/n]

:: Заменить kernel26-firmware на core/linux-firmware? [Y/n] q

:: Заменить kernel26-headers на core/linux-headers? [Y/n] n

:: Заменить libdjvu на extra/djvulibre? [Y/n]

:: Заменить libelf на extra/elfutils? [Y/n]

:: Заменить libjpeg на extra/libjpeg-turbo? [Y/n]

:: Заменить libsigc++2.0 на extra/libsigc++? [Y/n]

:: Заменить mailx на core/heirloom-mailx? [Y/n]

:: Заменить openoffice-base на extra/libreoffice-common? [Y/n]

:: Заменить openoffice-ru на extra/libreoffice-ru? [Y/n]

:: Заменить perlxml на extra/perl-xml-parser? [Y/n]

:: Заменить pkgconfig на core/pkg-config? [Y/n]

:: Заменить procinfo на core/procinfo-ng? [Y/n]

:: Заменить pycairo на extra/python2-cairo? [Y/n]

:: Заменить pygobject на extra/python2-gobject2? [Y/n]

:: Заменить util-linux-ng на core/util-linux? [Y/n]

:: Заменить virtualbox-ose на community/virtualbox? [Y/n]

и выдает еще кучу сообщений о не совместимости программ,типа «Gvim не совместим с vim Удалить vim[y/N]»(кстати с чего это они не совместимы?мне нужно и то и другое) и т.п.

Как подготовиться к обновлению,чтоб уменьшить возможные негативные последствия?

mikron
()

Форматирование флешки Silicon Power

Проблема в следующем,есть флешка упомянутой фирмы на 8гб. Я ее отформатировал в fat32 средствами linux (создал новый раздел с помощью fdisk,потом mkfs.vfat на этот раздел).после этого fdisk - l показывал нормальную таблицу разделов,флешку можно было использовать на компьютерах под lin и win,но флешку не определяли dvd-проигрыватель и проигрыватель в машине.После этого я отформатировал ее под win,теперь флешку видно на проигрывателях и в винде,а вот под linux она не монтируется. fdisk пишет вот это:

Диск /dev/sdb: 8011 МБ, 8011120640 байт
247 heads, 62 sectors/track, 1021 cylinders
Units = цилиндры of 15314 * 512 = 7840768 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6f20736b

Это не похоже на таблицу разделов
Возможно, вы выбрали неверное устройство.

Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 ? 50813 125353 570754815+ 72 Неизвестный
Раздел 1 имеет различные физические/логические начала (не-Linux?): физ=(357, 116, 40) логич=(50812, 15, 11)
Раздел 1 имеет различные физические/логические окончания: физ=(357, 32, 45) логич=(125352, 80, 51)
Раздел 1 не заканчивается на границе цилиндра.
/dev/sdb2 ? 11016 137438 968014120 65 Novell Netware 386
Раздел 2 имеет различные физические/логические начала (не-Linux?): физ=(288, 115, 43) логич=(11015, 93, 47)
Раздел 2 имеет различные физические/логические окончания: физ=(367, 114, 50) логич=(137437, 121, 42)
Раздел 2 не заканчивается на границе цилиндра.
/dev/sdb3 ? 122103 248525 968014096 79 Неизвестный
Раздел 3 имеет различные физические/логические начала (не-Linux?): физ=(366, 32, 33) логич=(122102, 184, 30)
Раздел 3 имеет различные физические/логические окончания: физ=(357, 32, 43) логич=(248524, 211, 39)
Раздел 3 не заканчивается на границе цилиндра.
/dev/sdb4 ? 188435 188438 27749+ d Неизвестный
Раздел 4 имеет различные физические/логические начала (не-Linux?): физ=(372, 97, 50) логич=(188434, 46, 25)
Раздел 4 имеет различные физические/логические окончания: физ=(0, 10, 0) логич=(188437, 200, 33)
Раздел 4 не заканчивается на границе цилиндра.

Пункты таблицы разделов расположены не в дисковом порядке

в чем проблема?

mikron
()

как подпилить стиль gtk

Такая проблема,поменял тему GTK (поставил NewSlikness-round).После этого в FF шрифт в меню стал очень-очень бледный,неактивный пункты серые и хорошо видны,а вот активные вообще не разобрать. в остальных приложениях фон меню черный и там это выглядит нормально,собственно в теме так и задумано.Но в FF своя тема - Full Flat.Как это можно исправить? И еще кое-что,в меню неактивные пункты отображаются выдавленным шрифтом,что выглядит отвратно.Где это можно изменить?

mikron
()

Arch и шрифты

Такая проблема.Х не видят шрифты.Например terminus, который я прописал для xterm. В соответствии с арчвики настроил HAL, но и xorg.conf тоже есть и в нем прописаны пути к шрифтам(все лежат в /usr/share/fonts).Но Х их не цепляют. Если сделать в консоли xset +fp /usr/share/fonts/local и xset fp rehash то они сразу цепляются,но только до перезапуска иксов.Не хочу прописывать эти команды куда-нибудь вроде .xsessions. Как сделать так,чтоб они автоматом находились? И почему игнорятся пути из xorg.conf?

mikron
()

Загрузка текста в Sonata

Собственно сабж работает,но не так как надо.От текста загружается только несколько первых строчек,потом стоит троеточие в квадратных скобках и ... все.В файлах сохраняется тоже самое.Как заставить сонату загружать полный текст? Версия 1.5.3

mikron
()

Проблема с двойной загрузкой на ноутбуке

На ноуте samsung R710 стоит Archlinux и винда второй системой.Пользуюсь в основном линуксом,если загружать винду,то первый раз загружается до логотипа и ... перезагружается ноут,по второму разу загрузка идет нормально,только уже предлагает выбрать обычную загрузку,безопасный режим и т.п., т.к. предыдущий раз загрузка была неудачной.Если после этого перегрузиться и в загрузчике выбрать линукс - то же самое происходит,начинает грузиться,перегружается ноут,по второму разу все нормально проходит.Из-за чего это может происходить?Загрузчик grub.Раньше стояли слака и винда(Загрузчик lilo),было тоже самое.

mikron
()

mkvmerge не распознает .avi mencoder'a

Перекодировал mencoder'ом dvd такой командой:

mencoder -aspect 16:9 -sws 1 -vf softskip,pullup,scale=-2:576,crop=1024:416:0:80,harddup -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=3665:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo -nosound -of rawvideo -o source.avi dvd://01 -dvd-device source

получил файл source.avi, после этого пытаюсь его собрать в mkvmerge, на что получаю ошибку что файл 'source.avi' неизвестного типа,хотя в списке поддерживаемых есть.Что я не так сделал?

mikron
()

Как отформатировать флешку в NTFS

Делаю так

fdisk /dev/sdb - удаляю все разделы,создаю один новый - тип 87 (NTFS)

mkfs.ntfs /dev/sdb - создается файловая система,все нормально,после этого могу примонтировать диск.

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

mikron
()

VtM - Bloodlines под wine

Установил англ. версию игры(с пиратки).Шрифты выше чем отведенное под них место в строке(то есть заглавная Т выглядит просто палкой вертикальной - не видно верхней перекладины),соответственно текст довольно сложно читать.Это только в роликах,когда титры сверху всплывают и в меню настроек игры.В диалогах вроде нормально.Патч 1.2 стоит.Кто-нибудь может мне подсказать решение этой проблемы? И еще при запуске в главном меню фона не видно.На wineHQ написано что надо в реестр пару ключей добавить,я добавил но ничего не изменилось.Есть мысли?

mikron
()

kconf_update

У меня стоит slackware 12.2,fluxbox и amarok.Во время старта амарока стартует некто "kconf_update" и благополучно зависает.Пока его руками не убью амарок не стартует.Так вот,кто это и как бы сделать так,чтоб он не запускался и не насиловал мой мозг?

mikron
()

Не определяется сетевая карта на ноуте

Поставил Debian 5, ядро 2.6.26, в выводе ifconfig -a только lo и wlan0. lspci пишет про карту следующее "Marvell Technology Group Ltd. 88E8055 PCI-E Gigabit Ethernet Controller (rev 13)". Ноут Samsung R710 FS05RU. До этого стояла слака,там все сразу после установки подцепилось и проблем не было. Что сделать чтобы дебиан увидел карту и дал мне eth0?

mikron
()

помогите настроить интернет.

Проблема заключается в следующем.Имею Slackware 12.2,KDE,адсл-модем Zyxel настроенный бриджем.Какое-то время назад настроил инет с помощью pppoe,все работало хорошо,еще позхавчера выходил в инет,все было нормально.Сегодня включил комп,вбил pppoe-start,соединение установилось,но ни с чем не могу соеденится.Не припоминаю чтоб я что-то менял в настройках,Рядом стоит машина с виндой,с нее все нормально работает,а вот из под линукса - нет.В какую сторону копать,подскажите...

mikron
()

Хочу поставить Slackware на ноут.

Недавно приобрел ноутбук Samsung f710-fs05(http://www.samsung.ru/products/computers/notebooks/standart/r710-fs05/?tab=sp... желанием поставить на него linux,при этом хотелось бы поставить Slackware,т.к. ставил уже на десктопе - понравилась(по сравнению с убунтой и федорой).В связи с этим вопрос,на что стоит рассчитывать "искаропки",какие железки поднимутся сами,а что придется прикручивать самому(хотелось бы в итоге получить работающим все,кроме,пожалуй,модема).

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

Попробовал загрузится с livecd Slax и Knoppix.Под кнопиксом lspci ничего не определил,разрешение меньше возможного и не меняется,в общем что-то не так.А вот слакс показал себя лучше,вот такой вывод у lspci: 00:00.0 Host bridge: Intel Corporation Cantiga Memory Controller Hub(rev 07) 00:01.0 PCI bridge: Intel Corporation Cantiga PCI Express Graphics Port (rev 07) 00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03) 00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03) 00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03) 00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03) 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03) 00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03) 00:1c.2 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 (rev 03) 00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03) 00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03) 00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03) 00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03) 00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93) 00:1f.0 ISA bridge: Intel Corporation ICH9M LPC Interface Controller (rev 03) 00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03) 00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03) 01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0649 (rev a1) 02:00.0 Ethernet controller: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01) 06:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8055 PCI-E Gigabit Ethernet Controller (rev 13)

mikron
()

Как запустить Fluxbox.

Помогите разобраться пожалуйста.Я установил Slackware 12,из оконных менеджеров из дистрибутива оставил только twm.Потом из исходников установил Fluxbox.Но не знаю как его теперь запустить.при startx запускаются иксы с twm(наверное,так как на экране эмулятор крнсоли без рамки и курсор в виде Х,если в этой консоли написать startfluxbox то выдает несколько ошибок чтения каких-то параметров из ~/.fluxbox/init и зависает).Куда и что надо прописать чтобы стартовал Fluxbox?Linux можно сказать поставил первый раз и не все еще понимаю.

>>>

mikron
()

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