LINUX.ORG.RU

Сообщения dnlfinder

 

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

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

#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'ов

Заранее прошу прощение за какие-то пробелы в знаниях по 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

Мне необходима консультация по установке компилятора 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 подписка на новые темы