LINUX.ORG.RU

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

Посоветуйте wireless network adapter со свободным драйвером

Форум — Linux-hardware

Имеется «Realtek Semiconductor Co., Ltd. RTL8723AE PCIe Wireless Network Adapter», но к нему всегда нужно прикручивать проприетарщину, иначе не работает.

Слышал про некий Atheros ar***, как он?

В перспективе поставить что-нибудь из линейки Trisquel/Parabola

 , ,

butylka
()

C++ изнутри

Форум — Development

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

 

l4gfcm
()

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

Форум — Development

Хотел распарсить сайт cian.ru. А там все имена классов в основном как будто сгенерированные, никакого смысла нету в их именах. Смотрится как будто хеш-суммы. Это что за подход, какую методологию он использует? Фото

 , , , ,

Deleted
()

E501 line to long в spacemacs

Форум — Development

Никак не вкурю кто в слое python в spacemacs отвечает за flycheck и как этому кому-то сказать, что у нас тут своя атмосфера и мы используем 100 символов, вместо 80.

 , ,

zloelamo
()

Как вы называете переменные и не только?

Форум — General

Привет

Есть ли у вас правила именования переменных и не только для следующих кейсов?

Case 1. Предположим есть некие объекты. Есть функция, которая должна что-то сделать с объектом, например вызываем её вот так: fn(obj). Как понять, аргумент функции - сам объект, указатель на объект, или индекс объекта в каком-то массиве? А как на счет массива индексов? Я понимаю, что можно посмотреть объявление obj (в тех языках, где оно есть), но если это посредине кода, то хочется как-то понять из имени: облегчило бы чтение кода. Думал про obj/iObj/pObj или obj/obj_i/obj_ptr, но может есть лучшие идеи?

Case 2. Функция-член класса. Как по имени различить локальные переменные, глобальные переменные, переменные-члены класса?

Case 3. У вас есть правила именования, которые бы по имени позволяли различать переменную, тип, класс, функциу, макрос и т. п? Я пока переменные называю с маленькой буквы, функции - с большой, макросы - все большие, а вот типы/классы пока называют TType и CClass, но у многих это вызывает отвращение. Варианты получше есть?

 ,

Kroz
()

Вопросы по C, и вообще.

Форум — Development

Будем считать что я пишу прикладные программки.

  1. Как лучше обрабатывать malloc == NULL? Игнорировать или кидаться аbort() не хочется, но обработать нужно, обрабатывать каждый вызов?
  2. Писать свои строки или есть библиотека? Строки хранить как utf8 или utf32?
  3. Динамические массивы, писать свои, есть готовые? Как находить оптимальный размер для увеличение массива при расширении, нужно ли вообще заранее выделять память?
  4. Куда лучше выводить ошибку? Можно в консоль, но на винде не прокатит вроде, плюс ничего не видно.
  5. Нормальная ли идея: Есть много строк по 3-16 символов, сделать MyMemAllocate который при выделении (64 > X) байт, выделяет память в уже аллоцированном буфере на пару мегабайт к примеру... А при MyMemRealloc(X > 64) перемещает память из этого буфера в системную кучу. Перед данными хранить байт отвечающий за тип кучи.
  6. Когда структуру нужно передавать через стек а когда по указателю?
  7. на x86_64 быстрее uint32_t или uint64_t?
  8. for(...;i != len;...) vs for(...;i < len;...)
  9. Всегда ли ((unsigned)0-1) == ((unsigned)0-1)?
  10. На чем быстро рисовать графику (картиночки, кнопочки)? SDL2 говорят медленный.
  11. Есть много текста, с разным шрифтом, разным размером. Как лучше такое рисовать? (ttf), нарисовать алфавит для каждого {размер+шрифт}, или нарисовать алфавит с очень большим размером а потом сжимать для буков меньшего размера? Рендерит кто нибудь TTF на видеокарте кстати?
  12. Есть много объектов с одинаковыми и неизвестными именами, делать отдельную структуру (в виде чего?) где будут храниться эти имена дабы не занимать память одинаковыми строками?
  13. Как лучше хранить значения key:value что бы быстро с ними работать?
    1. если значений мало,
    2. если значений много.
  14. Можно ли как то поставить обработчик на изменение участка памяти? Костыль, но нужно. (Win/Linux хотя бы)
  15. Актуальна ли для современных систем фрагментация кучи?
  16. Какие библиотеки есть для многопоточного? Что можно почитать? SDL_Thread тоже медленный?
  17. Вот допустим решил я распарсить INI файл, как лучше его читать? По линиям? Сразу весь? Проецировать?
  18. Библиотека для RegExp?
  19. Какие флаги для строгости компилятора юзать стоит? Я использую: -std=c89 -Wall -pedantic

Ну или можно книжку где это расписанно.

 ,

linuhs_user
()

Qt Linux memory leaks

Форум — Development

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

Имеется программа, написанная на Qt (С++), которая парсит входящие файлы и запихивает их в базу данных. Проблема заключается в том, что по каким-то непонятным причинам обьект, хранящий результат, не удаляется. А самое интересное заключается в том, что проблема происходит исключительно на линуксе (fedora).

Немного дополнительной информации:
1. Обработка каждого файла происходит в разных потоках. Создание нового потока реализовано в таком виде:

            QThread *_t = new QThread();

            QObject::connect(_t, SIGNAL(started()), task.data(), SLOT(run()), Qt::DirectConnection);
            QObject::connect(task.data(), SIGNAL(finished()), this, SLOT(taskFinished()));
            QObject::connect(_t, SIGNAL(finished()), _t, SLOT(quit()));
            QObject::connect(_t, SIGNAL(finished()), _t, SLOT(deleteLater()));
            QObject::connect(task.data(), SIGNAL(finished()), _t, SLOT(quit()));

            _t->start();
2. Расширение файла - CSV. Обработка файла осуществляется этой библиотекой
3. Обработанные данные кладутся в
    struct LineParseResult { QString article, brand, price, stock, multiplicity, __article, price_id; QByteArray key; };
    typedef QList<LineParseResult> PResult;
4. После того, как файл обработался и ParserTask заканчивает свою работу - эмитится сигнал finished(). Мы его ловим и получаем объект ParserTask'a:
        auto _task = qobject_cast<ParserTask *>(QObject::sender());
после чего ищем его в списке тасков, которые работают на данный момент и очищаем. Список выглядит таким образом:
QList<QSharedPointer<ParserTask>> m_currentRunningTasks;
и очистка памяти осуществляется таким образом:
                auto task = m_currentRunningTasks.takeAt(i);
                task.clear();
4. Платформо-зависимого кода в программе не имеется, за исключением того, что присутствует в самом Qt'e

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

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

Что это может быть и как с этим бороться?

 , ,

Flassie
()

Нужен альтернативный аллокатор для контейнеров

Форум — Development

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

Есть ли какие-нибудь готовые аллокаторы для таких случаев? Или надо писать свой велосипед?

 

pathfinder
()

Новый стандарт языка C: C18

Новости — Разработка
Группа Разработка

Международная Организация по Стандартизации (ISO) опубликовала новый международный стандарт языка программирования C: ISO/IEC 9899:2018, его также называют C17 и C18.

Новый стандарт не вносит никаких новых возможностей, а лишь исправляет дефекты, сообщенные для C11. Значение макроса __STDC_VERSION__ увеличено до 201710L.

Поддержка C18 у GCC появилась, начиная с 8 версии, а у LLVM Clang — с 6.0. Чтобы указать во время компиляции использование стандарта C18 у GCC и LLVM Clang используются флаги -std=c17 и -std=gnu17. В GCC можно также указать новый стандарт флагами -std=c18 и -std=gnu18.

Последний черновик стандарта

Статья на en.wikipedia.org

>>> Подробности

 , c18, ,

neon1ks
()

Одноплатник C.H.I.P. больше не продается. Компания NTC — банкрот!

Новости — Hardware and Drivers
Группа Hardware and Drivers

Закрылась кампания Next Thing Co (NTC), выпустившая первый в мире 9-долларовый компьютер на полностью открытом железе и операционной системе.

После нескольких лет успешной работы и выпуска сотен тысяч одноплатников C.H.I.P. и C.H.I.P. Pro, а так же портативных компьютеров Pocket C.H.I.P., компания NTC объявила себя банкротом.

Надо сказать, что для многих это оказалось внезапной новостью. Как показывают комментарии на Kickstarter, некоторые до сих пор так и не получили свой экземпляр C.H.I.P. (к счастью, таких людей менее 1% и скорее всего это проблема на стороне сервисов доставки).

Закрыт официальный сайт и вики с документацией, на которой были сотни страниц необходимой для разработки информации: инженерные схемы, спецификации, чертежи, описание функционала, рецепты по применению и различные howto. Это был настоящий кладезь знаний, качественная и подробная документация. Зачем было так делать — остается вопросом, ведь сотни тысяч владельцев C.H.I.P. все еще активно используют его.

Новость на LOR об этом компьютере (2015 год):

CHIP — первый в мире 9-долларовый компьютер

Сайт сообщества C.H.I.P., на котором люди восстановили большую часть документации (к сожалению, красивых картинок и схем, как было в оригинальной вики — не найдено, но вроде самое главное на месте):

http://www.chip-community.org/index.php/Main_Page

Из официальных сайтов открывается блог NTC, но ни одна из внутренних ссылок блога не открывается.

http://blog.nextthing.co/

Подводя итоги, хотелось бы сказать, что все это выглядит очень странно. Кампания Next Thing Co была просто ошеломительной, одной из самых мощных и успешных кампаний за всю историю Kickstarter. NTC активно общалась с коммьюнити разработчиков и пользователей на протяжении 3х лет, и вела отличный канал на Youtube, на котором делилась информацией о стадиях разработки и применения C.H.I.P. Помимо этого, C.H.I.P. неплохо продавался, и первые партии (после партии для бэкеров) разлетелись действительно быстро. Это печальная новость — одноплатник за свои деньги был очень хорош.

 , , , ,

anonymous
()

Как настроить bridge для KVM из IPIP туннеля?

Форум — Admin

Здравствуйте! Пытаюсь уже 2 дня настроить правильно бридж из IPIP Туннеля, но ничего не выходит, прошу вашей помощи. Есть сервер в хезнере, туда прокинут IPIP Туннель с передачей белого IP адреса. На этом сервер стоит Proxmox. Конфиг сети хезнера: auto tun0 iface tun0 inet static address MY_PUBLIC_IP (Перекинутый IP от первого ЦОД) netmask 255.255.255.248 pointopoint 10.9.1.1 mtu 1350 pre-up /sbin/ip tunnel add tun0 mode ipip remote IP_1_ЦОД local IP_ХЕЗНЕР dev eno1 post-up /sbin/ip ru add from MY_PUBLIC_IP lookup 17 priority 17 post-up /sbin/ip ro add default via 10.9.1.1 dev tun0 src MY_PUBLIC_IP table 17 mtu 1350 advmss 1310 pre-down /sbin/ip ro del default via 10.9.1.1 dev tun0 src MY_PUBLIC_IP table 17 mtu 1350 advmss 1310 pre-down /sbin/ip ru del from MY_PUBLIC_IP lookup 17 priority 17 post-down /sbin/ip tunnel del tun0 Хочу настроить бридж, чтобы я смог использовать допустим MY_PUBLIC_IP/29 на новосозданных VPS, которые проброшены роутингом с первого сервера. Как это правильно организовать в proxmox?

 , , ,

bits16
()

Голосование по второй бета-версии Revised 7 Report on Algorithmic Language Scheme (Large Language)

Новости — Конференции и встречи
Группа Конференции и встречи

Открыто голосование по содержанию второй (из восьми) бета-редакции алгоритмического языка Scheme R7RS-large (Tangerine Edition), а также сбор предложений по третьей бета-редакции (Orange Edition).

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

Семейство Lisp - второе по длительности применения семейство языков (после Фортрана), основанное Джоном Маккарти в качестве инструмента написания искусственного интеллекта. Одним из активных участников разработки специализированных компьютеров для интерпретации Lisp был Ричард Столлман, впоследствии основатель Фонда Свободного Программного Обеспечения. Как следствие, одним из основных инструментов при разработке на Scheme является Emacs (+Geiser, Scheme-Complete, company-mode). Предполагается, что в какой-то момент Scheme будет внутренним языком Emacs, вместо Emacs Lisp. (Уже сейчас можно посмотреть на EdWin.)

Scheme — это Lisp, ориентированный на лёгкость портирования, функциональный подход и внедрение лучших практик теории языков программирования.

Scheme развивается двумя путями. Индивидуальные расширения формулируются согласно процессу, сходному с RFC, и называются SRFI, (Scheme Request For Implementation). В отведённые сроки выходят объединённые редакции «стандартного отчёта», формулирующие, что из себя представляет scheme «в целом». Последним завершённым изданием является Revised 7 Report on Algorithmic Language Scheme (small language), а последним экспериментальным изданием является R7RS-large Red Edition. Предполагается, что до выхода окончательной редакции R7RS-large выйдет семь или восемь промежуточных редакций, и в данный момент рассматриваются редакция 2 (Tangerine), ставящая своей целью формализовать структуры данных, коллекции и numerics и редакция 3, нацеленная на новые фичи.

Заинтересованным специалистам предлагается изучить дискуссионный материал и проголосовать согласно собственному видению вопроса, представившись перед этим заранее в scheme-reports-wg2@googlegroups.com

Вопросы, по которым предлагается голосование:

  • Строковая библиотека
  • Ассоциативные массивы
  • Регулярные выражения
  • Генераторы/Аккумуляторы
  • Целочисленные операции
  • Битовые операции
  • Математические операции с fixpoint
  • Математические операции с floating point
  • Битовые вектора
  • Гомогенные вектора
  • Форматирование
  • Большие числа
  • Дроби
  • Точные числа

Вопросы, которые предлагается рассмотреть в третьем издании:

  • Случайные числа
  • Простые числа
  • Целочисленные множества
  • Дискрептивная статистика
  • Диапазоны
  • Битовые вектора
  • Байтовые строки
  • Перечисления
  • Комбинаторика и перестановки

>>> Подробности

 , , , ,

anonymous
()

VPS провайдеры

Форум — Admin

Добрый вечер. Может кто подскажет где лучше покупать VPS сервера таких стран как - Netherland, Spain, USA, Germany? Дело в том что нужны IP которые небылибы или хотябы с небольшой вероятностю были использованые для prоxy или vpn. Tеперь покупаю VPS у Leaseweb и OVH, но обычно провайдеры proxy или vpn тоже здесь покупают и если зайти на https://www.ipqualityscore.com/free-ip-lookup-proxy-vpn-test/lookup/ то сразу видно что IP уже был использован для етих целей :-(

P.S. по идее, самому нужны свежее IP для ВПН. Но мне не для того чтобы порнушку смотреть, а для работы с ebay и paypal, а долбаный paypal очень смотрит на IP score

 , ,

nsimanskij
()

Как можно затюнинговать этот участок кода?

Форум — Development

Я не програмист и С знаю достаточно плохо, но вот тут хочеться разобраться и попытаться оптимизировать этот участок. Это код из gstreamer, который участвует в перегоне RGB в UYV http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/gst/videoconvert/...

#define SCALE    (8)
#define SCALE_F  ((float) (1 << SCALE))

static void
videoconvert_convert_matrix8 (VideoConvert * convert, gpointer pixels)
{
  int i;
  int r, g, b;
  int y, u, v;
  guint8 *p = pixels;

  for (i = 0; i < convert->width; i++) {
    r = p[i * 4 + 1];
    g = p[i * 4 + 2];
    b = p[i * 4 + 3];

    y = (convert->cmatrix[0][0] * r + convert->cmatrix[0][1] * g +
        convert->cmatrix[0][2] * b + convert->cmatrix[0][3]) >> SCALE;
    u = (convert->cmatrix[1][0] * r + convert->cmatrix[1][1] * g +
        convert->cmatrix[1][2] * b + convert->cmatrix[1][3]) >> SCALE;
    v = (convert->cmatrix[2][0] * r + convert->cmatrix[2][1] * g +
        convert->cmatrix[2][2] * b + convert->cmatrix[2][3]) >> SCALE;

    p[i * 4 + 1] = CLAMP (y, 0, 255);
    p[i * 4 + 2] = CLAMP (u, 0, 255);
    p[i * 4 + 3] = CLAMP (v, 0, 255);
  }
}

При записи скринкаста в фуллхд videoconvert_convert_matrix8 жрет нереально много времени. Может чей-то опытый глаз поможет, хоть напрвит в сторону чего тут можно оптимизировать. например i * 4 повторяеться 6 раз, хотя понимаю что оно то почти и не дает нагрузку.

 , , ,

Novell-ch
()

Видео докладов с C++ CoreHard Autumn 2018

Форум — Development

На канале сообщества CoreHard появились видеозаписи докладов с прошедшей в начале ноября в Минске конференции C++ CoreHard Autumn 2018.

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

Text Formatting For a Future Range-Based Standard Library - Arno Schödl
Concurrency and Parallelism in C++17 and C++20/23 - Rainer Grimm
Что должен знать каждый C++ программист или Как проводить собеседование - Игорь Садченко и Ко
Информационная безопасность и разработка ПО - Евгений Рыжков
Что не умеет оптимизировать компилятор - Александр Зайцев
Метаклассы: воплощаем мечты в реальность - Сергей Садовников
Asynchronous programming with ranges - Ivan Čukić
Обучаем на Python, применяем на C++ - Павел Филонов
Создание пакетов для открытых библиотек через conan.io - Константин Ивлев
Полезный constexpr - Антон Полухин
Кодогенерация C++ кроссплатформенно. Продолжение - Алексей Ткаченко
Обработка списков на C++ в функциональном стиле - Вадим Винник
Заглядываем под капот «Поясов по C++» - Илья Шишков
Ускорение сборки C++ проектов, способы и последствия - Александр Жоров
C++ CoreHard Autumn 2018. Знай свое «железо»: иерархия памяти - Александр Титов
Actors vs CSP vs Tasks vs ... - Евгений Охотников
Debug C++ Without Running - Anastasia Kazakova

Слайды докладов можно найти здесь

 

eao197
()

Vifm 0.10

Новости — Open Source
Vifm 0.10
Группа Open Source

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

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

( Основные изменения )

>>> Скриншоты

>>> Ссылки для загрузки

>>> Подробности

 , , ,

xaizek
()

MindForger 1.48

Новости — Open Source
Группа Open Source

MindForger – это инструмент для редактирования и хранения идей, заметок, планов и любых текстов в формате Markdown. MindForger – это нечто большее, чем просто блокнот – это редактор, который работает как человеческий мозг: накапливает знания, распознаёт их, создаёт ассоциации и гибкие связи между ними и, наконец, позволяет их забывать.

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

>>> Подробности (сайт с описанием и скриншотами)

 , ,

env
()

Автор популярного расширения для Emacs — Magit собирает пожертвования для full-time работы над ним в 2018 году

Новости — Open Source
Группа Open Source

Magit — это интерфейс к распределённой системе управления версиями Git, разработанный в качестве дополнения для популярного текстового редактора GNU Emacs.

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

Для пользователей, которые предпочитают vi-подобную систему комбинаций клавиш доступно расширение evil-magit для интеграции magit c системой Evil (Extensible VI Layer for Emacs) и пакет дополнений Spacemacs.

Если до 1 октября кампания на Kickstarter соберёт 55000 CHF (швейцарский франк), то автор проведёт 2018 год работая над Magit full-time.

На данный момент собрано около 30000 CHF.

>>> Сайт Magit

>>> Репозиторий Magit

>>> Подробности

 , ,

Singularity
()

Проект Krita начал сбор средств на исправление ошибок

Новости — Мультимедиа
Группа Мультимедиа

Команда разработчиков ПО для цифрового рисования Krita объявила сбор средств на финансирование работ по исправлению ошибок и «полировке» интерфейса. На этот раз решили отказаться от платформы Kickstarter, поскольку не определена конечная сумма. Вместо этого пожертвования принимаются напрямую на сайте проекта. Взносы можно осуществлять с банковской карты, через PayPal и Bitcoin. Предполагается, что потребуется около 3500 евро в месяц.

Каждый пожертвовавший может проголосовать за определённую область, в которой команде нужно приложить усилия. За пожертвование более 50 евро полагается благодарность в виде набора кистей от Ramon Miranda's Digital Atelier и более двух часов учебного видео по их созданию и использованию.

>>> Подробности

 , ,

MageasteR
()

Релиз OmniOS Community Edition r151028

Новости — Open Source
Группа Open Source

OmniOS позиционирует себя как минималистическая Open Source Enterprise Server OS. Основана на коде illumos (развитие проекта OpenSolaris). Поддерживает ZFS, DTrace, Crossbow, SMF, Bhyve, KVM и Linux zone. Работа исключительно из командной строки. Гном и даже X Window не поддерживаются.

Что нового:

  • Production-ready Bhyve гипервизор.

    Обеспечивает потрясающую скорость работы сетевой и дисковой подсистем, по сравнению с kvm hypervisor, так как не использует qemu emulation для этих сервисов, а поставляется с супероптимизированными native drivers.

  • Branded zones для bhyve и KVM виртуальных машин. Гарантируют strong isolation от глобальной зоны. Обеспечивают защиту даже от hyper-threading атак таких как L1TF and Portsmash, обеспечивают настройки распределения ресурсов cpu, памяти, дисков и сети для каждой vm.
  • В ZFS добавлена возможность параллельного монтирования файловых систем, что для систем с очень большим число fs существенно увеличило скорость загрузки.
  • для разработчиков поставляется gcc8, Python 3.5, Perl 5.28.

>>> Подробности

 

Bobby_
()