LINUX.ORG.RU

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

Магия энергосбережения в ядре.

Форум — General

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

Собранное ядро, в котором я выключил все, что мне не надо ( в том числе _все_ опции мониторинга и дебага )! прожило на 2 часа больше в режиме читалки, чем стоковое дебиановское, а добавление MuQSS дало еще пол часа и увеличило экономию под нагрузкой. А шедулер noop или deadline и на стоковом ядре экономит на ssd энергию(но на hdd - наоборот)...

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

P.S. в лолксах - потому что предчувствую приход маководов с их экономным уберзондом.

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

 , , , ,

timdorohin
()

Новенький thinkpad x220

Галерея — Рабочие места

Ну точнее как новенький... восстановленный!

Я очень долго выбирал себе ноутбук для поездок и для того чтобы брать с собой на работу и в институт - большой ноутбук выглядел слишком хрупким - жалко было брать с собой. Выбирал месяца с ноября. Пересмотрел практически всё, что было в магазинах и инете, но безрезультатно - слишком грустные машинки за печальные цены.

Купил acer travelmate b117. Там хороший корпус был, отличные шарниры и клава неплохая для своей цены. НОО производительность... бррр вспоминаю тот селерон... мурашки по спине. Проект компиллировался минут 5, хотя на рабочем ноуте - меньше минутки. О приятном просмотре ютуба и фуллхд видео и речи идти не могло. Но зарядку держал обещанные 10 часов без проблем и пассивное охлаждение. Сдал обратно в магазин.

Очень хотелось купить синкпад, но не хотелось рисковать и заказывать кота в мешке с ебая. НО один анон, спасибо ему огромное! Посоветовал одну прекрасную московскую фирму, восстанавливающую синкпады и продающую их: smartbooks.org (не сочтите за рекламу). Я очень долго сомневался, но всё же договорился с продавцом(по почте он действительно показал себя прошаренным в своей теме и вообще) и заказал x220 с i5. Встретился у них в офисе(как вошёл туда - прям в рай попал - все вокруг в этих прекрасных ноутбуках =D). Там произошла интересная история и в итоге я вышел оттуда с практически новым синкпадом с отличной батарейкой и в идеальном корпусе и с прекрасным настроением.

Хар-ки:

  • i7-2620 (который оказался даже шустрее моего i5-4200 и потребляет без нагрузки практически ничего)
  • TN матрица
  • 4гига оперативы
  • 320гб 7200рпм
  • сканер отпечатков пальцев и USB3.0
  • 58Ватт реальная ёмкость батареи. 46 циклов отработано.

Корпус просто в идеальнейшем состоянии - ни одной царапинки, ни одной потёртости - всё прекрасно. Я был просто шокирован - это же вобще офигенно! За такие мелкие деньги! Оказалось, что все детали официальные - они заказывают напрямую из китая со складов Леново, а не китайских левых магазинов.

Внутри тоже красота - вентилятор и платы чистейшие. Прямо магия какая-то.

Как-то так. Пользуюсь им уже 5 дней. Кайфую. Смог на арчике снизить потребление в идле в консольке до 4.9ватт. При работ же в i3wm + фирефоксе + emacs примерно 6.5 - 8 ватт. Вчера проработал честные 7 часов на заряде 90%.

Как-то так. До сих пор не могу поверить, что удалось таки его купить.

ещё фоты

>>> Просмотр (2048x1536, 2681 Kb)

 , ,

SL_RU
()

Обновление средств для настройки внешнего вида Qt 5

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

Qt5 Configuration Tool — небольшая утилита, предназначенная для настройки внешнего вида приложений на базе Qt 5.

В версии 0.28 добавлена поддержка Qt 5.8 и проведена доработка, связанная с вынесением части кода в отдельный стиль-обёртку. Это позволяет избежать проблем с некоторыми приложениями, использующими собственные настройки внешнего вида.

Одновременно обновлён набор плагинов Qt5Gtk2 0.4, добавляющий интеграцию с GTK+ 2.0. В новой версии добавлена поддержка Qt 5.8. Следует также отметить, что аналогичные изменения проведены и в репозитории модуля qtstyleplugins, который теперь может полностью заменить Qt5Gtk2.

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

 , ,

anonymous
()

0 A.D. Portable

Форум — Games

Все знают, что игрушка 0 A.D. есть в репозитариях убунты. А есть ли способ скачать одной папкой? На сайте их не такого, только инструкция как стянуть с репозитариев. А мне нужно ее положить на отдельном разделе.

 ,

abbat81
()

Код Presto (Opera) на GitHub

Форум — Talks

Похоже, утекло.

https://github.com/prestocore/browser

 , ,

post-factum
()

С++ разработчик на удаленную основу/оплата от 100 тыс.руб.

Форум — Job

Мы - узкоспециализированная компания по разработке сложного программного обеспечения для зарубежных заказчиков. Требуются: Глубокие знания С++ Опыт системной разработки как минимум под одну из ОС Linux/Windows/OS X Понимание принципов многопоточного и сетевого программирования Понимание принципов ООП, паттернов проектирования и рефакторинга Опыт разработки с использованием библиотек Qt, STL, boost и т.д Опыт разработки баз данных Приветствуется знание алгоритмов и структур данных Плюсом будет знание Python Условия: Работа удаленная Готовы обсудить варианты с частичной занятостью Почасовая ставка от 600 рублей в час. Очень сильная команда разработки с опытом работы в Яндекс Гарантируем быстрый рост в сфере разработки системного ПО Дружеская позитивная атмосфера :)

Ждем Ваше резюме на lina@mediterra-soft.com

 , , ,

Mediterra-soft
()

Как в терминале переставить курсор в начало строки?

Форум — Desktop

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

 

cr0
()

конвертация LaTeX MSWord

Форум — Desktop

Оставлю тут для поисковиков.

Потребовалось мне отправить статейку в местечковый журнал. Спасибо грязным фидошникам из 90-х, производственный отдел издательства «Наука» хочет рукопись в формате MSWord. Писать формулы в ворде - что писать говном на заборе: можно, но противно.

Заинтересовался современным состоянием конвертации из LaTeX в Word. Опробовал проприетарный TeX2Word и Tex4ht в варианте oolatex. Был приятно удивлен результатами. Получил редактируемые формулы вменяемого вида. Да, с многострочными формулами есть проблемы, но решаемые. \begin{aligned} надо забыть. \left.\left. всякая хрень с дробями \right)\right] может глючить. В целом результат приемлемый, руками править, как при переходе с 12-го на 14-й шрифт.

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

 , ,

tereshchenko
()

Компания «Новые облачные технологии» разместила в открытом доступе набор из девяти шрифтов

Новости — Linux в России
Группа Linux в России

Компания «Новые облачные технологии» сообщает о размещении в открытом доступе шрифтов собственный разработки. Набор носит название XO Fonts и состоит из девяти шрифтов и двадцати четырёх начертаний.

«Мы решили амбициозную задачу: добились одинакового отображения наших шрифтов на любых платформах. Шрифты „XO Fonts“ обеспечивают идентичное отображение документов на любом устройстве. С помощью „XO Fonts“, мы планируем заменить наиболее употребляемые в государственных организациях и крупных компаниях шрифты, например, такие как: Arial, Times New Roman, Calibri, Courier New, Tahoma и другие. Все разработанные нами шрифты кириллические. Дополнительно мы включаем в них символы республик Российской Федерации и стран СНГ. Мы приняли решение поделится своей разработкой с сообществом и надеемся, что это поспособствует развитию гибкости норм в использовании шрифтов в России и за ее пределами» — комментирует генеральный директор компании Дмитрий Комиссаров.

Разработка пакета велась в сотрудничестве с известным дизайнером шрифтов Владимиром Чуфаровским и московской студией Letter Head.

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

Пакет XO Fonts разработан для работы на локальных и международных рынках. Набор шрифтов содержит символы республик РФ (татарского, башкирского алфавитов), стран СНГ (казахского алфавита) и иностранные символы (такие как 1252-western или 1254-turkish).

Набор совместим с GNU/Linux, Windows, macOS, Android, iOS, Tizen.

Шрифты от компании «Новые облачные технологии» распространяются под открытой лицензией и доступны для использования сторонними разработчиками бесплатно.

Скачать

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

 ,

anonymous
()

Получение stdin/stdout дочернего процесса

Форум — Development

Пытаюсь используя Си сделать fork, execl и получить stdin/stdout дочернего процесса. Нужно что бы для дочернего процесса это работало без лишних телодвижений с его стороны (т.е. ему не нужно знать что он на самом деле пишет в pipe). К примеру printf(«QWERTY») — он думает что пишет в stdout, а на самом деле пишет в канал. С кодом это станет яснее =)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char *argv[])
{
    int fd[2];
    int pid;

    char data[] = "QWERTY";

    pipe(fd);

    if((pid = fork()) == 0) {
        close(0);
        dup(fd[0]);

        close(1);
        dup(fd[1]);

        close(fd[0]);
        close(fd[1]);
        execl("/home/<user>/test", "/home/<user>/test", NULL);

        exit(EXIT_FAILURE);
    } else {
        write(fd[1], data, 6);
        close(fd[1]);

        char buf[1024];
        read(fd[0], buf, 1024);
        close(fd[0]);

        printf("[%d] Output: \n%s\n", getpid(), buf);
    }

    return 0;
}

В ветке для дочернего процесса я закрываю stdin/out, dup берет их (уже свободные и минимальные) файловые дескрипторы и заставляет их указывать на in/out пайпа.

В ветке родителя я просто хочу сначала писать данные в stdin дочернего процесса (которые у меня fd[1]) и потом получить уже обработанные данные из stdout (который fd[0]).

Если просто читать, но не писать данные дочернему процессу, то все работает нормально. Я могу к примеру запустить «ls» и получить список директорий, не важно :). Проблемы возникают когда нужно отправить порцию данных, а потом получить эти данные уже обработанными.

Если исполнить этот код, то QWERTY попадает обратно ко мне. Т.е. я отправил, а потом я же и получил :(. Оно и не удивительно, это же pipe. Мне надо как-то это исправить, данные должны попадать к test'у.

test -> просто ещё одна программа на Си. Берет одну строку что приходит на stdin и пишет её в файл, всё.

После запуска кода должен появится файл с текстом QWERTY, а ко мне обратно должен вернуться текст «wrote» из test'а.

Я понимаю что сложно объяснил.

 , ,

fexunexu
()

Синтаксический анализ на конечных автоматах

Форум — Development

Добрый день!

Помогите пожалуйста разобраться с конечными автоматами. Нужно сделать разбор текста формата json. Да, знаю, есть инструменты flex и bison, которые могут делать парсеры по описанию грамматики, но мне нужно разобраться как реализовать конечный автомат на C++ без применения этих инструментов. Я нарисовал следующую диаграмму состояний: здесь. Такой автомат не может работать с вложенными конструкциями: объектами и массивами, только с последовательностью пар «name»:value.

Вопросы в следующем:

1. Допустим такой автомат будет переключаться из состояния в состояние по мере чтения символов, но как на практике можно это использовать? Была идея при переходе в нужные состояния генерировать события: например перешли в состояние ожидания кавычки, сработал обработчик и записал положение начала строки, считали другую кавычку - другой обработчик, записали конец строки. Все бы хорошо, но значения могут быть строками (в кавычках), числами и литералами (без кавычек), и не получается единообразно получать начала и концы строк. Или может нужно как-то по-другому перерисовать диаграмму? Вообще как применяются конечные автоматы на практике в плане архитектуры?

2. Я читал, что для обработки вложенных конструкций применяются Магазинные автоматы. Как можно нарисовать диаграмму такого автомата? Что должно храниться в стеке? Как реализовать в плане архитектуры такой автомат? Когда считывается фигурная скобка, по идее, нужно сохранить в стек текущее состояние. Какой состояние будет при этом у нового автомата? Init? Хорошо, а когда будет закрывающая скобка, нужно вернуть из стека прежнее состояние. А какое оно должно быть? Мы сохраняли состояние ожидания фигурной скобки. Куда дальше переходить из этого состояния? Ведь на этом уровне автомат не должен знать что там внутри скобок.

А какая должна быть архитектура? Как представить автомат? В виде класса? Что пихать в стек? В общем, много вопросов. Подскажите пожалуйста как решаются подобные задачи с конечными автоматами.

 ,

silart
()

vulkan что почитать

Форум — Development

Сабж. Хочется влиться в современную разработку, т.к. с OpenGL имел (и имею) дело давно и со старым, сейчас всё иначе, хочется с чего-то начать.

 , ,

peregrine
()

.h или .hpp?

Форум — Development

А вы какое расширение используете для заголовочных файлов C++?

По идее, .hpp правильнее, так как .h это всё-таки сишный заголовок и, соответственно, у них могут быть различия.

 , ,

Falcon-peregrinus
()

32 и 64-битные сборки программы MapTour под Linux, Raspberry Pi

Новости — Проприетарное ПО
Группа Проприетарное ПО

Вышли Linux и Raspberry Pi сборки программы MapTour — GPS навигация для туристов.

До этого существовали сборки только под Android, Win32, WinCE

Функционал программы:

  • определение местоположения по GPS;
  • визуализация более десятка карт на уровнях 1–23;
  • ручное построение маршрута;
  • расчет относительной и абсолютной дистанций текущего местоположения по отношению к маршруту (далее — раскадровка маршрута);
  • поддержка типов путевых точек;
  • визуальное и голосовое ведение по маршруту;
  • запись трека;
  • загрузка/выгрузка маршрута/трека в/из файла;
  • GPS-мониторинг трекеров системы GPSM;
  • мультиязычность (en, ua, ru);
  • регулировка яркости карты;
  • поиск координат по наименованию;
  • постоянная визуализация обьектов, найденных по наименованию;
  • автоматическое построение маршрута;
  • визуализация наблюдаемых трекеров в раскадровке маршрута;
  • прогноз погоды;
  • геофотографии;
  • статистика текущего перемещения;
  • поиск координат по адресу;
  • маркеры;
  • навигация на точку;
  • визуализация внешних карт в формате sqlite или директории тайлов в формате OSGeo, Slippy;
  • визуализация внешних безконечно больших растровых изображений: чертежи, схемы, планы;
  • визуализация слоёв (NEW).

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

 , , maptour, ,

edoroe
()

AMD CodeXL 2.0 — отладчик/профилировщик для GPU/CPU

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

Новая версия утилиты от AMD для оценки производительности и отладки различных API на CPU/GPU:

  • OpenGL/OpenCL/Vulkan/DirectX12;
  • opensource;
  • поддержка Windows/Linux (deb/rpm/tar.gz в секции релизов на github);
  • кросс-платформенная удалённая оценка производительности(Win>Lin и наоборот);
  • режим анализа шейдеров для архитектуры(AMD'шных чипов).

Отладка OpenCL в настоящий момент работает только на AMD, UI написан на Qt (судя по возможности интеграции в VisualStudio — часть ещё и на .Net), а код backend'ов на чистом C++.

Багов пока много - из тех, что заметил - rpm инсталятор не корректно обрабатывает зависимости(на suse/42), Qt/OpenGL не заработал, а на glxgears/встроенном примере чайника выдал лишь glx функции без GL (под windows список GL функций был). часть багов, похоже, для платформ не от AMD (nvidia в моём случае, возможно из-за драйвера с GLVND). в общем, новость получилась больше о том, что утилита вышла, чем о том, что ею можно сразу пользоваться;)

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

 , , , ,

azazello
()

Правильная сборка .deb пакета

Форум — General

Добрый день. Я задался таким вопросом - как правильно собрать для Debian Jessie .deb пакет с некоторой прогой?

В случае, если проги в репозиториях debian принципиально нет, как я понимаю, есть два варианта развития событий: либо я подготавливаю полноценную «дебианизацию» в соответствии с инструкцией по созданию пакетов Debian, либо использую checkinstall. Вопрос: Если речь идёт только о личном использовании, то есть ли смысл идти длинным путём (дебианизация), или checkinstall является оптимальным решением? Как я понимаю, checkinstall позволит создать .deb пакет из уже собранной программы и заполнить всю ту информацию в пакете, которая должна там быть, в то время как для полноценной дебианизации придётся писать много разного в том числе и для сборки, а значительная часть информации не попадёт в .deb пакет, т.е. окажется для меня ненужной.

Если пакет есть в репозиториях debian, но мне нужна более новая версия, то имеет ли смысл брать готовый каталог debian и адаптировать под новую версию, или лучше самому (возможно) наложить патчи из debian, а потом собрать и заcheckinstall'ить? Заранее спасибо.

 , , , ,

Norong
()

Написал небольшую книгу для C/C++ программистов

Новости — Документация
Группа Документация

Здравствуйте. Меня зовут Андрей Карпов. Сфера моих интересов - язык C/C++ и продвижение методологии статического анализа кода. На протяжении пяти лет я являюсь Microsoft MVP в номинации Visual C++. Основная цель моих статей и работы, сделать код программ немножко безопасней и качественней. Буду рад, если эта мини-книга научит вас писать более надежный код и предостережет от некоторых типовых ошибок. Немало полезного здесь можно будет почерпнуть и тем, кто занимается написанием стандартов кодирования для своих компаний.

Немного истории. Не так давно я создал ресурс, на котором делился различными полезными советами по программированию на языке С++. Ресурс не собрал ожидаемое количество подписчиков, поэтому я не вижу смысла приводить здесь на него ссылку. Сайт просуществует какое-то время, после чего уйдет в небытие. А вот советы достойны сохранения. Поэтому я доработал, пополнил эти советы и объединил их в единый текст. Желаю приятного чтения.

UPD: PDF-версия: https://yadi.sk/i/RCHauHFBr2cSs

P.S. Пользуясь случаем приглашаю всех желающих последовать за мной в Twitter: @Code_Analysis.

>>> Главный вопрос программирования, рефакторинга и всего такого

 , , , ,

Andrey_Karpov_2009
()

Скорости разработки и исполнения, не достижимые на С

Форум — Development

В одном из соседних топиков дали ссылку на хабровскую статью http://habrahabr.ru/post/182428/ c таким вот незатейливым названием.

Статья развесистая, заумная, там и дизассемблированный код, и какие-то адовые формулы, видно что автор подошел к делу основательно, язык С окончательно разгромлен, вот цитата из заключения:

Я показал, как с помощью C++–шаблонов реализовать вычисления и кросс-аппаратную оптимизацию во время компиляции для получения ускорения в 3.5-5.3 раза для реальной задачи. Нет таких оптимизаций в C, которые бы нельзя было применить в C++, т.к. имеется почти полная обратная совместимость. А вот в C – единственная альтернатива C++–шаблонам для подобных оптимизаций – это писать десятки, сотни и тысячи функций – вот уж где действительно copy-paste.

По большому счету, можно было бы пожать плечами и пройти дальше, я помню статьи приблизительно такого же накала вроде «как я вызываю виртуальные функции в 5 раз быстрее чем обычные», «наследование, инкапсуляция, полиморфизм - нереально быстрая разработка и последние гвозди в крышку гроба С» и т.п.

Но автор пишет «Вычисление факториала нам понадобит_ь_ся», с мягким знаком, я сам не заметил как глаза налились кровью, как скачал его код и стал разбираться.

Для тех кому лень читать статью суть такова:

Есть массив структур, автор хочет без индексов, последовательным перебором, быстро выбирать из него записи по каким-то критериям (фильтрам). Организация данных немного странная, ему в каментах сказали что можно бы «Сменить AoS на SoA» (Array of Structures на Structure of Arrays), но это осталось без ответа. Ну, хорошо, допустим что данные есть только в таком виде.

Да, все считается в один поток, на CPU.

Фильтры задаются в виде каких-то границ, в которых должно быть значение, и флага, нужно ли применять фильтр к этому полю.

Неоптимизированный вариант выглядит так: for по всем элементам, внутри цикла смотрим для каждой записи, нужно ли фильтровать по этому полю, и если да, то уже дальше проверяем попадает ли значение в диапазон.

Оптимизированный вариант: берем фильтр, анализируем его, и на основании анализа флагов запускаем циклы по всем записям. Для каждого набора флагов цикл свой. Внутри цикла уже не пересматриваем каждый раз флаги фильтра а просто смотрим, попадает ли нужное значение в диапазон.

Дальше автор приступает к селективности. В этом месте начинается магия с факториалами, формулами, в такие моменты хочется пропустить этот кусок текста и написать «В кои-то веки толковая статья про C++ в которой на живом примере показан нетривиальный способ использования шаблонов. Автор молодец.»

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

Ну и приводит решение с оптимизацией шаблонами. Там не очень большой файл, но когда я попробовал собрать (gcc 4.7.2) - изумился. Он собирается _несколько минут_ (да!). Интересно, как народ с этим работает? Используют pch? В общем, пришлось вынести код search в отдельную единицу трансляции.

Еще странный момент - он измеряет время вызовов функций clock()-ом. У меня он давал какие-то совсем дискретные значения, заменил на gettimeofday().

Мое решение - генератор кода на С (автор в каментах напирает на то что у него решение исключительно на С++, хорошо, пусть будет только С) здесь

Генератор очень простой - он проходит все возможные комбинации флагов фильтров (2**5) и для каждой комбинации делает свой for. То есть фактически то же самое что и в статье, но прямо в лоб

Итог, повторюсь, такой: решение «на С» почти такое же по скорости как и «на С++» (на единицы процентов быстрее). Скорость разработки - ну-у, даже у меня, не очень быстрого разумом, на это ушло всего часа 4

P.S. procoder99, можешь не возбуждаться, это на самом деле тонкий троллинг сишников (единицы процентов за 4 часа, ха-ха), я знаю как на С++ сделать быстрее

 ,

Deleted
()

инкрементальная сборка и отладка

Форум — Development

Привык я с давних времен программирования под венду, что при изменении одной строчки в одном исходном файле, пересборка и запуск происходит мгновенно. Сейчас отлаживаю одну софтинку в QtCreator, так у меня на каждое мелкое изменение и перезапуск происходит пересборка(возможно и не полная, но очень долго) проекта. Я уже замучился при изменении одной переменной ждать старта отладки по 2 минуты.

Подскажите что делать и как жить? может на clang надо как-то переводить сборку или в gcc\gdb какие ключи есть?

Сейчас(в данный момент) QtCreator запущен в венде с GCC MinGW, но в линуксе дома та же ситуация. Поэтому назвать проблему вендоспецифичной нельзя.

 , ,

Loki13
()

Как собирать boost

Форум — Development

Приветствую. Как собирается boost в Linux?
Пытаюсь вот так:

./b2 toolset=gcc --build-type=complete address-model=64 -j4 --stagedir=/usr/local/lib64/boost

Но при таком варианте ошибки:
error: Cannot use --layout=system with --build-type complete.
error: Please use either --layout=versioned or --layout=tagged
error: if you wish to build multiple variants.
error: Note that --layout=system is used by default on Unix starting with Boost 1.40.

Как собственно собрать? (прощу не кидать документацию с boost.org, так как у меня плохо с английскими языком. :) )
Заранее спасибо!

 , , ,

continue
()