LINUX.ORG.RU

Избранные сообщения splinter

plibsys — кросс-платформенная системная библиотека на C

 , , ,

Группа Open Source

Недавно ко мне обратились с вопросом, не хочу ли я написать новость об одной из разрабатываемых библиотек (plibsys). В принципе, я не против, поэтому эксклюзивно для LOR.

Что такое plibsys?

plibsys — это кросс-платформенная системная библиотека, написанная на чистом C. Основной упор был изначально сделан на портируемость и поддержку широкого спектра компиляторов. Для достижения этих целей у библиотеки отсутствуют (небольшим исключением является SCO OpenServer 5 ввиду отсутствия на ней потоков) какие-либо зависимости — используются только те вызовы, которые доступны в целевой ОС. Также никакого ассемблера и использования прочих недокументированных возможностей. Для сборки нужен только рабочий компилятор и CMake.

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

  • Платформо-независимые типы данных
  • Потоки и средства синхронизации: мьютексы, условные переменные, блокировки чтения-записи, спинлоки, атомарные операции
  • Межпроцессное взаимодействие: семафоры, разделяемая память, кольцевой буфер
  • Сокеты (UDP, TCP) с поддержкой IPv4 и IPv6
  • Хэш-функции: MD5, SHA-1, SHA-2, SHA-3, GOST (R 34.11-94)
  • Бинарные деревья: несбалансированное, красно-черное, АВЛ
  • Загрузка разделяемых библиотек
  • Работа с памятью: mmap, установка собственного аллокатора
  • Замер времени исполнения (по возможности — в высоком разрешении)
  • Базовая работа с файлами и директориями
  • Парсер файлов INI
  • Макросы для определения архитектуры ЦПУ, ОС и компилятора
  • Различные вспомогательные структуры данных типа связанного списка, хэш-таблицы, обработка строк

На все есть документация.

( читать дальше... )

>>> Подробности (github.com)

HardCode
()

Веселая музычка из /dev/urandom

 , ,

cat /dev/urandom | hexdump -v -e '/1 "%u\n"' | awk '{ split("0,2,4,5,7,9,11,12",a,","); for (i = 0; i < 1; i+= 0.0001) printf("%08X\n", 100*sin(1382*exp((a[$1 % 8]/12)*log(2))*i)) }' | xxd -r -p | aplay -c 2 -f S32_LE -r 16000

Source: http://blog.robertelder.org/bash-one-liner-compose-music/

Oxdeadbeef
()

В Slackware прекращена поддержка x86_32 (На самом деле нет)

 

Тихо и незаметно, никому ничего не сказав и никак не прокомментировав свои действия, Патрик прекратил поддержку x86.

В Changelog остались только x86_64, S/390 и ARM.

Changelog

Перемещено JB из slackware

slamd64
()

RTL8723BE в Slax

 , ,

Подскажите как прикрутить беспроводной адаптер на чипе RTL8723BE в Slackware 14.1 (ядро 3.12.36 pae) ? Нет тырнета.

sholmes
()

Программирование на С

Здравствуйте мои дорогие любители погромирования. Прочитал K&R «Язык программирования Си». Теперь нужна книга, которая расскажет как правильно писать код на С, общепринятые приёмы и стандартные алгоритмы решения типичных задач. Цель: пишу быдлокод для МК и хочу повысить свой скилл.

Перемещено mono из talks

ramon13666
()

Зацените самодельную игрушку.

http://dagoneev.no-ip.biz/game

1) Рождаешься с 10`000 руб.
2) Выстрел - рубль. Попал в другого: +70, ему: -70. Дошло до 0 - нищеброд, денег нет на стрельбу, катайся или F5.
3) Цифровые клавиши:

1 - режим стрельбы пулями (обычный)
2 - режим кидания цементом

Выстрел цементом стоит 20 руб, если цемент никуда не прилип или попал на другой танк - бабло не списывается.
Цемент (серый) налипает на другой цемент и на титан (чёрный) (по углам экрана найдёте).
Титан добавлен на карту как первая опора для цемента. Он не разрушаем.
В танки стрелять цементом нет смысла.
Кирпичики других интересных цветов - разрушаются, но никак не вовлечены в игру.

4) Титан не разрушаем, цемент - 1 выстрел на кирпич (как обычно).
5) Нет индикации выбранного режима. Для уверенности жмите повторно 1 или 2.
6) В верхней строчке: глобальные координаты X Y, (=кошелёк), юзеров онлайн
7) другие клавиши:

shift (держать) - не поворачивать дуло на поворотах.

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

Перемещено beastie из talks

kiverattes
()

Посоветуйте годной научной фантастики

 ,

Сабж. Прочитал «Древний» Тармашева. Прочитал «Эпоху мертвых» Круза. Очень понравилось.

И вообще, есть же классика научной фантастики. Посоветуйте.

ekzotech
()

0 A.D. собирает финансы

 , , ,

Группа Игры

Разработчики широкоизвестной трёхмерной стратегии реального времени «0.A.D.» запустили кампанию по сбору средств на развитие игры. В планах решение проблем с производительностью, обновление графики, добавление поддержки кампаний, развитие мультиплеера.

По завершении кампании игра получит все собраные средства, даже если не достигнет основной цели ($160000).

>>> Подробности (indiegogo.com)

O02eg
()

микроконтроллеры, прошу краткий ликбез

 , ,

Появилось желание на досуге собрать небольшой механизм с парой десятков сенсоров и несколькими функциональными частями, к примеру электродвигателями. Планируется передавать информацию между механизмом и PC - от датчиков в одну сторону, а для упраления механизмом в обратную. То есть особых вычислительных мощностей на контроллере механизма не нужно, основная логика будет расчитываться на PC. Главный критерий - простота - от сборки и пайки до прошивки и увязки с датчиками. Что сейчас в моде? Может стоит взять какую нибудь готовую плату? В общем любые советы по теме приветствуются.

pseudo-cat
()

Игра на месяцы/года

Друзья. Есть проблемка: люблю играть. Я хочу вообще забить на win-платформу. Поэтому такой вопрос: есть ли какая-то игра, способная увлечь (пере-)прохождением (самой себя) на долгие месяцы? Киберспорт включается. Скажем, КС подходит, но хотелось бы что-то более, ээ, сюжетное.

P.S. Пробовал adom. Понравилось, но увлекло всего на пару месяцев. Хотелось бы что-то более стратегическое, т.к. я фанат СК2.

UPD: Не троллинга ради. Я просто свято верю в опен-сурс, но. UPD2: Но хочу того, чего, видимо, просто нет.

UPD3: Блин, котаны! Вот в Q3 я играю с 2005ого года, например. И не надоело, вот еще бы одну такую! Только более, гхм, стратегию/рпг.

coderage
()

Литература по архитектуре микроконтроллеров

 ,

Буду разбираться с STM32F4-DISCOVERY, ищу литературу по архитектуре микроконтроллеров, что-нибудь общее, базовое, чтобы иметь понятие о структуре микроконтроллеров, регистрах, памяти и прочем. В общем, нужно понять, как работает микроконтроллер. Литературу советуйте и для новичков, и более продвинутую, если можно. В сети пока что нашёл только книги Гурова: http://rutracker.org/forum/viewtopic.php?t=2732279

mentalmenza
()

Что делать, если запретять торренты?

 , ,

Наткнулся на сообщение о том, что с 1 августа могут заблочить торренты и прочие ништяки. Тут (3dnews.ru) горячие подробности.

Помимо очевидного решения закинуть всё нужное на харды и хранить в сухом, тёмном и прохладном месте - что дальше делать? Новую убунточку через торренты будет «нискачать»?

ekzotech
()

Достойный торрент трекер

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

avertex
()

Порекомендуйте софтину, позволяющую начертить квартиру (не sweethome)

Люди добрые, порекомендуйте софтинку, позволяющую начертить внятный и удобоваримый план своей будущей уютной студии.

Что надо: двухмерный план с проставленными размерами. По сути - электронная копия бумажной экспликации.

vsn
()

Резервный DC на linux

Добрый ночер! Есть ЦО и дочки. Есть большие дочки, где куплен WS2008R2, а есть «дочурки», куда он не помещается в бюджет, но шлюз там таки стоит и шлюз работает на Бубунтах. Везде авторизация в домен, подняты ВПНы. Нужно на бубунтах поднять сервер авторизации, что бы он засасывал (вовремя, на лету) пользователей AD и местные тачки маленькх дочурок логинились с него, а уже политики брали с WS2008R2. Задача: инет упал, а авторизация и локаль продолжают исправно работать. Решал ли кто-нибудь подобную задачу? Как? Грабли?

karcun
()

Qt, QLabel with QPixmap, как сделать autoscaling?

 autoscalling, qlabel, ,

Положил на главную форму QGridLayout (сделал CentralWidget-ом), внутрь - QLabel, пихаю в нее QPixel так:

ui->lbl_firstImage->setPixmap(this->firstImage);

Хочется, чтобы при растяжении (сужении) формы растягивалось (и сжималось) само изображение.

вот так не подходит:

ui->lbl_firstImage->setScaledContents(true);
ui->lbl_firstImage->setPixmap(this->firstImage);

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

Как сделать адекватный autoscalling?

UPD: нашел, как выставить scalled содержимое - помог пример. Теперь задача усложнилась. У меня на самом деле не одна QLabel, а три. И вот такой код:

void MainWindow::resizeEvent(QResizeEvent *ev)
{
    if (!this->firstImage.isNull())
        ui->lbl_firstImage->setPixmap(this->firstImage.scaled(ui->lbl_firstImage->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
    if (!this->secondImage.isNull())
        ui->lbl_secondImage->setPixmap(this->secondImage.scaled(ui->lbl_secondImage->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));
    if (!this->splittedImage.isNull())
        ui->lbl_splittedImage->setPixmap(this->splittedImage.scaled(ui->lbl_splittedImage->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));

}

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

bvn13
()

Ищу желающих и могущих помочь проекту

 , , ,

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

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

Чтобы не засорять, подробное описание проекта, обоснование его (не?)нужности и текущих проблем/круга задач выложил тут: http://openpsy.ru/developer-help-request

Заодно можно посмотреть, что уже имеется.

Спасибо за внимание, жду хоть каких-нибудь отзывов!

ASGAlex
()

посоветуйти музыку

 

Собственно, посоветуйте нечто спокойное медитативно-классическое, под которое приятно трассировать пп.
Что-то типа такого: http://www.jamendo.com/en/artist/337307/sydney-poma

Линукс при том, что он будет работать на том, что я трассирую.

AiFiLTr0
()

Портирование ядра. Написал драйвер UART как корректно его подключить.

 spmu8000, ,

Здравствуйте. Я пытаюсь портировать ядро линукс на процессор SPMP8000 (основан на arm926). Я написал свой драйвер ЮАРТ (пока сильно упрощенный вариант). Вот код драйвера:

#include <linux/console.h>
#include <linux/serial_core.h>
#include <asm/io.h>
#include <mach/serial.h>

#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/sched.h>
#include <linux/smp.h>
#include <linux/termios.h>
#include <linux/amba/bus.h>
#include <linux/amba/serial.h>
#include <linux/io.h>
#include <mach/platform.h>
#include <mach/hardware.h>
#include <asm/irq.h>
#include <asm/mach-types.h>
#include <asm/setup.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
#include <asm/mach/irq.h>
#include <asm/mach/map.h>
#include <asm/mach/time.h>




//запись символа в юарт0
static void putc(int c)
{
        int timeout=4000;

        if (UART0_STATUS1 & 0x1E) return;
        while (timeout > 0) {
                if ((UART0_STATUS2 & 0x10) && ((UART0_STATUS3 & 4) == 0)) {
                        UART0_DATA = c;
                        break;
                }
                timeout--;
        }
}

// функция printk в  ЮАРТ
static void sanoprintk(struct console *co, const char *s, u_int count){
    int i;
        /* Пишем каждый символ */
        for (i = 0; i < count; i++, s++) {
                if (*s == '\n'){
                        putc('\r');
                }
                putc(*s);
        }
}


static int __init sano_console_setup(struct console *co, char *options)
{
        return 0;
}


/* Заполняем структуру консоли */

static struct console sano_uart_console = {
            .name   = "ttyS",                /* Имя консоли */
            .write  = sanoprintk, /* Как делать printk в консоли */
//          .device = uart_console_device,    /* Предоставлена ядром serial */
            .setup  = sano_console_setup,
            .flags  = CON_PRINTBUFFER,        /* Флаг по умолчанию */
            .index  = -1,                     /* Инициализация в неправильное значение */
};
//register_console(&sano_uart_console);


/* Инициализация консоли */

static int __init sano_uart_console_init(void)
{
/* Регистрация этой консоли */
register_console(&sano_uart_console);
return 0;
}

console_initcall(sano_uart_console_init); /* Метка инициализации консоли */

В Makefile arch части добавил obj-y += serial.o, ядро собирается и драйвер в его добавляется, но вывод сообщений в ЮАРТ не происходит.

Однако если я в файде /init/main.c добавляю свою функцию sanoprintk , а так же заполняю и инициализирую структуру static struct console sano_uart_console прямо в начале функции start_kernel, то вывод в юарт работает так как надо. Выглядит это примерно так

#ifdef STANDALONE_DEBUG
#define putstr printf
#else

static void sanoprintk(struct console *co, const char *s, u_int count);

#include <mach/uncompress.h>
#endif

static void sanoprintk(struct console *co, const char *s, u_int count){
    int i;
        /* Пишем каждый символ */
        for (i = 0; i < count; i++, s++) {
                if (*s == '\n'){
                        putc('\r');
                }
                putc(*s);
        }
}

asmlinkage void __init start_kernel(void)
{
/* Параметры каждого из поддерживаемых портов USB_UART */
        /* Заполняем структуру консоли */

static struct console sano_uart_console = {
          .name   = "ttyS",                /* Имя консоли */
          .write  = sanoprintk, /* Как делать printk в консоли */
          .flags  = CON_PRINTBUFFER,        /* Флаг по умолчанию */
          .index  = -1,                     /* Инициализация в неправильное значение */
};
register_console(&sano_uart_console);

Однако, это крайне не верное решение. Подскажите пожалуйста как подключить драйвер вынесенный в отдельный файл arch части ядра.

Sanoend
()

Взбесился cron

Здравствуйте, уважаемые

С кроном какой-то шайтан, а может я на старости лет ебанулся

Вот запись:

0 1 2-31 * 6 /скриптец

Я жду, что он будет выполнятся раз в неделю (в час ночи, со 2 по 31-е число)

Хер там! исполняется КАЖДЫЙ ДЕНЬ что за херня? у меня уже кроме мата слов не осталось.

Alphaer
()