LINUX.ORG.RU

Сообщения dnlfinder

 

Запись и чтение массива типа unsigned char в/из файл(а)

Форум — Development

У меня имеется массив

#define BUF_SIZE 4096
static unsigned char my_buffer[BUF_SIZE];

Запись данных различного типа (!), т.е. int, long int, float, double, в данный массив я произвожу используя функцию. Т.е. для каждого данного я знаю смещение (some_offset) и знаю его порядок следования.

...
memcpy(&my_buffer[some_offset], some_value_ptr, size);
...

Теперь я хочу сохранить данный массив в файл (т.е. полностью записать my_buffer в файл), ну и в какой-то определённый момент прочитать (т.е. восстановить из файла my_buffer). С тем же порядком и смщением.

Каким образом мне лучше хранить это в файле, как записывать и считывать. Можно какой-нибудь простой пример? И как я могу выборочно записать некоторый offset + size. Т.е. для определённого типа данных?

 

dnlfinder
()

Проблема с import в python при написании unittest'ов

Форум — Development

Заранее прошу прощение за какие-то пробелы в знаниях по Python. Мне достался в “наследство” некоторый немалый по размерам проект. Я не могу оценить качество кода в нём (хотя пишу уже на python около 3х месяцев) и насколько он соответствует pythonic way, но это и не суть сейчас. Структура папок проекта примерно такая (не ругайте сильно если что не так):

projectname
—somefolder1
—somefolder2
——somesubfolder
———__init__.py
———module1.py
———module2.py
—tests
——testsomesubfolder1
———__init__.py
———recipy1.py
—project.py
Я использую среду разработки PyCharm. Для запуска у меня создана конфигурация python в которой задано:

Script: D:\project\projectname\project.py … Working directory: D:\project\projectname

Я хочу покрыть некоторые части этого проекта unittest'ами. Например, мне необходимо написать тест в recipy1.py для некоторого класса из somefolder1/somesubfolder/module1.py Как мне правильно сделать import для module1 в recipy1:

# recipy1.py
# как написать import для module1?
import unittest
    class Test1(unittest.TestCase):
        def test_testtest(self):
            self.assertEquals(100,100)
        def test_fakeclass(self):
            obj = module1.SomeClass( 10 )
            self.assertEquals(10, obj.GetValue() )
    if __name__ == '__main__':
        unittest.main()

чтобы у меня в recipy1.py был доступен некоторый класс SomeClass из module1.py:

# module1.py
class SomeClass():
        def __init__(self, value):
            self.value = value
        def GetValue(self):
            return self.value

Вообще правильно ли я делаю, что пишу тесты в отдельной папке? Во многих статья и литературе это видел? Имеет ли значение Working directory, указанная в конфигурации python для запуска проекта (запуска project.py). Какой Working directory мне необхождимо указать для тестов?

 

dnlfinder
()

Консультация по установке компилятора gcc из исходников под Linux

Форум — Development

Мне необходима консультация по установке компилятора gcc из исходников (tar'ника, скаченного из официального репозитория). Читал мануалы (официальные), просто статьи и т.д. Наверное руки кривые. Я понимаю, что сейчас многие скажут что из исходников собирать - куча проблем, ставь нормально с помощью PM и т.д. Но задача именно собрать из исходников компилятор gcc определённой версии под ОС Linux. Просто у меня задача в будущем будет стоять, собрать под определенную специфичную архитектуру и для этого я решил начать с простого. Просто попробовать собрать под обычным Linux, нужную мне версию gcc. Допустим такой case: Есть операционная система Ubuntu 11.10 установленная на вирутальную машину. Есть уже текущая версия gcc 4.6.1, вот что выведено в терминале, если запросить информацию gcc

gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
Тут всё банально и просто. Теперь у меня такая задача. Я скачал с офф ftp сервера, gcc версии 4.1.1: http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/ файл gcc-4.1.1.tar.bz2 Распаковываю архив и вот что мне делать дальше, чтобы собрать под Ubuntu этот компилятор gcc 4.1.1, ну и чтобы он соответственно правильно работал? По идее надо делать стандартное:
./configure
make
make install (это как я понимаю не обязательно)
но я пробовал так устанавливать, пробовал флаги устанавливать в итоге компиляция заканчивалась ошибкам, причём различными. Снова читал http://gcc.gnu.org/install/ но видимо у меня очень плохо с англ и я не всё улавливаю. Вот поэтому я и пишу данный вопрос, хочу услышать как правильно это делать и желательно услышать от того, у кого это извращение (я думаю так многие считают) получилось успешно. Видимо нужно в configure определить как-то правильно флаги. Я думаю в этом ошибка + и конечно же мои кривые руки. Например, из языков мне нужен C, C++ и возможно Fortran, такие ЯП: как java, ada - не нужны, поэтому я думаю в ./configure можно эту указать. Надеюсь ответы будут без жесткого троллинга. Просто реальна нужна консультация (если лень писать, можно кинуть ссылку на manual, только на русском, англ я перевожу средне, могу какую-то неточность, из-за которой потом ничего не скомпилиться не уловить при чтении/переводе). Спасибо.

dnlfinder
()

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