LINUX.ORG.RU

Сообщения makoven

 

Как отключить -webkit-префиксы в webkitgtk браузерах?

Форум — Development

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

Открыл для себя целую кучу маленьких браузеров на webkitgkt2/3. Приятно иногда запустить оконце без лишних декораций и скриптов через какой-нибудь surf

Да вот беда - некоторые сайты (в основном мои) отображаются некорректно из-за того, что я в не пишу вендор-префиксы для новых CSS3-свойств

Вохможно ли как-то попросить webkitgtk не использовать эти префиксы?

 , , , ,

makoven
()

Два философских вопроса по malloc/free

Форум — Development

Здравствуйте. За месяц читания чужого Си-кода (и писания своего), меня не покидают два концептуальных вопроса про кучу

  1. Много где вижу конструкцию
    if(pth != NULL) free(pth);
    
    Несмотря на то, что в мане написано If ptr is NULL, no operation is performed. Откуда такое недоверие к манам?
  2. Каждый раз когда делаю malloc/free для локальных переменных (особенно если в цикле), в одном месте появляется неприятный зуд на тему «Память же фрагментируется. Нельзя часто выделять освобождать. Особенно много маленьких кусочков.» Оправдан ли этот зуд или все там норм с кучей?

 , , ,

makoven
()

pthreads, С11 threads, musl и зависимые от glibc либы

Форум — Development

Здравствуйте. Это будет сумбурный вопрос. И такое же изложение. Простите

Я не разбираюсь в потоках. Внезапно понадобились. Ознакомился поверхностно. Есть pthreads и C11 threads. C11 конечно звучит более модно интересно. Но glibc их не умеет. Зато их умеет musl.

Ок. Предположим, я компилирую свой код с musl. Но мне так-же хочется использовать hiredis, у которого в зависимостях glibc..

И вот тут я поломался. Знаний мало. Нет полной картины что будет в этой ситуации. Подскажите, будте так любезны.

Что будет если я компиляю свой код с musl и подключаю либы у которых glibc в зависимостях?

 , , ,

makoven
()

Archlinux, i am disappoint

Форум — Admin

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

Есть один wi-fi роутер. Решил я замерить скорость его wi-fi.

- Запустил «iperf3 -s -i 1» на своем арчике. Запустил Magic iperf на мобиле - 3.5 Мб/с

- iperf сервер на мобиле, клиент на арче - 14 килобит..

Что-то здесь явно не так.

- Переключился с арча в винду, скачал cygwin-сборку iperf, клиент на мобиле - 120 Мб/с

- Сервер на мобиле, клиент на винде - 120 Мб/c

Что-то явно не так с арчем. Что это может быть? Что можно проверить?

 , ,

makoven
()

Есть ли SOC с поддержкой VPU в линукс?

Форум — Linux-hardware

Здравствуйте. Подскажите какую ARM-платку купить, чтобы в ней под линуксом нормально работало видеоускорение?

 , ,

makoven
()

Как «отпочковать» откно от терминала, который его породил?

Форум — Desktop

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

Запускаю bash в gnome-terminal или с другого компа по ssh, пишу в баше «DISPLAY=:0 leafpad &». Открывается окно блокнота. Закрываю терминал - исчезает и блокнот

Подскажите пожалуйста как сделать чтобы блокнот не исчезал?

 , ,

makoven
()

Как красиво присвоить строковое поле?

Форум — Development

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

Пусть есть структура foo с полем char s[8]

Чтобы присвоить полю значение надо написать аж 2(!) строки )

memset(foo.s, 0, sizeof(foo.s));
memcpy(foo.s, mystring, strlen(mystring));

Может есть способ поэлегантнее?

 

makoven
()

Есть ли замена Macromedia Flash?

Форум — Development

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

Висит у нас в офисе один телевизор. Хочется чтобы он показывал нечто анимационное. Движущиеся картинки, текст и т.д. Hdmi-кабель тянуть к нему лень, а вот приклеить сзади какую-нибудь распбери - милое дело

Вопрос лишь за софтом. Конечно, первое что приходит на ум - браузер во весь экран. Но, при всей моей любви к вебу, анимацию с помощью html/css/svg/webgl делать неудобно. Да и тормозить будет.

Идеально бы подошел флешплееер, но вы сами понимаете.. Да и среды разработки под линукс для swf нет.

Может есть что-то похожее в мире опенсорса? Рассмотрю любые варианты: от специальных языков до специализированных редакторов

 , ,

makoven
()

Декларации типов остаются в библиотеках?

Форум — Development

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

Подскажите, пожалуйста. Такой странный вопрос. Вот наопределял я структуры и enum-ы в файле, скомпилировал в .so или в .a. Эти определения где-то сохранились в либе?

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

И вообще, какие еще символы в либах сохраняются кроме определений функций и глобальных переменных?

 ,

makoven
()

Как задать «полупрозрачную» структуру не повторяясь?

Форум — Development

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

Положим, есть интерфейс, описанный в foo.h:

typedef struct foo_obj_tag foo_obj;

bool foo_do_something(foo_obj *foo);
...

И есть две отдельные реализации этого интерфейса, в файлах bar.c и baz.c:

/* bar.c */
#include "foo.h"
struct foo_obj_tag {
  int clear;
  char *clear2;
  int opaq_bar;
}
/* baz.c */
#include "foo.h"
struct foo_obj_tag {
  int clear;
  double opaq_baz;
}

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

struct foo_obj_tag {
  int clear;
}

Как бы и тортик съесть и вишенкой не подавиться?) И определить структуру с прозрачными полями в заголовочном файле, и специфически «расширить» эту структуру в файлах-реализациях?

 , ,

makoven
()

Окно хромиума в гноме само возвращается в границы экрана

Форум — Desktop

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

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

Пока сидел на Awesome проблем не было. А в гноме окно с видео вечно норовит вернуться в границы экрана. Это происходит в тот момент, когда переключаюсь на другое окно. Но не каждый раз (закономерность так и не уловил)

Подскажите как сделать, чтобы окно не возвращалась в границы рабочего стола?

 ,

makoven
()

Как пользоваться динамическими библиотеками?

Форум — Development

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

Прочитал ман по dlfcn.h, dlopen. Так и не понял, возможно ли просто сдедать dlopen(какие_то_флаги) и пользоваться функциями из либы? Или обязательно надо заводить ссылку ка каждую функцию и инициализировать ее через dlsym?

 , ,

makoven
()

Почему все критикуют dbus?

Форум — Desktop

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

Почитал на лоре обсуждения про dbus. И почти в каждом встречаются люди, заявляющие, что протокол и сама технология ужасны

Читаю спеки, ничего жасного не вижу, но вижу очень крутую штуку с RMI, сериализацией, броадкастингом, и интроспекцией

 , ,

makoven
()

Как перевести линукс в текстовый режим?

Форум — Desktop

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

Пытаюсь завести виртуалку с линуксом с отображением через curses. Поначалу все идет хорошо, systemd показывает лог загрузки, но потом внезапно в центре экрана появляется «1024 x 768 Graphical Mode» и больше ничего не видать

Команда systemctl disable graphical.target не помогла.

Что еще можно следать, чтобы видеокарта не переходила в графический режим?

 , , ,

makoven
()

Есть ли сигнал, уведомляющий о разорванном соединении?

Форум — Development

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

Есть один одна прокси-програмка (из fcgi в tcp). Сначала она слушает fcgi-сокет, устанавливает на нем соединение, подключается по TCP к другому сокету и читает из него в блокирующем режиме.

Но вот беда, браузеры не любят долгих соединений и через пару минут fcgi-соединение обрывается. Но узнать я об этом не могу, т.к. занят чтением из TCP.

Можно ли поймать сигнал о разрыве fcgi-соединения или еще как-то решить проблему, не прибегая к таймаутам и epoll'ам?

 , ,

makoven
()

Когда хочешь помигать лампочкой с двух выключателей

Форум — Development

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

КДПВ

Есть RS232-модуль с тремя реле (назовем его «Лампочки»). На Лампочки можно послать команды «on 1» (включить первую лампу), «off 2»,.., «state» (получить состояние всех ламп). Так-же на модуле есть 3 физические кнопки (это важно).

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

На сервере 3 блокирующих процесса (на картинке обозначены синими квадратами с цифрами):

1. Ждет fcgi-запросов от nginx. Если запрос быстрый (сменить имя лампочки, получить состояние из redis), то выполняет. Если запрос медленный (послать команду на Лампочки), то добавляет команду в redis-список

2. Ждет появление команды в списке (redis BRPOP, с таймаутом в 1 секунду), выполняет, результат публикует событие в редисовый pub/sub, снова ждет. Так-же периодически запрашивает состояние Лампочек, и если оно изменилось (понмните про физические кнопки?), обновляет данные в redis и публикует об этом в pub/sub.

3. Сначала слушает fcgi. Установив постоянное соединение, подписывается на redis-рассылку (изменение состояния, имени лампы), проксирует эти события на клиенты в формате EventSource. Этот процесс нужен чтобы все веб-клиенты оперативно получали обновления. Например, один клиент поменял имя лампочки, сообщил об этом в Pub/Sub, все остальные тут-же об этом узнали и запросили новые данные.

Если вы дочитали до сюда, то вам скорее всего нечем заняться в данный момент и вы с удовольствием поразмышляете над следующим вопросом:

Вопрос. Очевидно, схема переусложнена. Вот все говорят «выбирай инструмент под задачу». Здесь мы выясняем истину, какой инструмент идеально подойдет под эту задачу и как бы он эту задачу упростил (учитывая, что процесс №2 может, вместе с Лампочками быть на другом устройстве, соединяясь с остальным бэкендом по сети).

Использованные инструменты: c (ioclt, fcntl), lua, redis, hiredis, libfcgi, nginx, yajl

Бонусный вопрос: как обозвать процессы 1, 2 и 3? У меня никаких идей

 , , , ,

makoven
()

Nginx и много неразрывных fastcgi-подключений.

Форум — Admin

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

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

Допустим, что на бэкенде у меня fastcgi-сервер, к которому из браузера можно обратиться по адресу server.com/api/events/.

Но страничек, желающих постоянное соединение, несколько. Как сделать, чтобы несколько клиентов, обращаясь по одному урлу, проксирующему к fastcgi, смогли установить несколько соединений одновременно?

 , , ,

makoven
()

Как побороть " address already in use"

Форум — Development

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

Есть сферический код TCP-сервера на луа:

local socket = require("socket")
local server = assert(socket.tcp())

assert(server:bind("127.0.0.1", 9970))

-- Опции
assert(server:setoption("keepalive", false))
assert(server:setoption("reuseaddr", false))
assert(server:setoption("tcp-nodelay", true))
assert(server:setoption("linger", {on=false, timeout=1}))

assert(server:listen(0))

local con = assert(server:accept())
assert(con:send("HELLO!!!\n"))
assert(con:receive("*a"))

Подключаюсь к нему с помощью

nc localhost 9970 -v

Если развывать соединение, нажимая Ctrl+C в терминале с nc, то всё норм.

Если же разрывать соединение нажимая Ctrl+C в терминале с сервером, то его последующий запуск вываливается с ошибкой «address already in use» в строке с bind. Через минуту-две запускается нормально

Как побороть «address already in use»? Может подкрутить какие-то опции?

PS: сишников скастовал, потомучто только они разбираются в подобной низкоуровневой магии )

 , , ,

makoven
()

Блютус-донгл не видится в настройках пока не перезапустишь гном

Форум — Desktop

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

Собственно, Арчлинукс, последний гном. Открываю настройки гнома, втыкаю блютус-свисток - ничего не происходит. «Блютус не найден».

Жму ALT+CTRL+BACKSPACE, вываливаюсь в консоль, затем startx, блютус в настройках появился.

содержимое .xinitrc: dbus-launch gnome-session

Как сделать чтобы блютус появлялся без перезапуска гнома, может кто знает?..

 ,

makoven
()

Про матрицы, мегапиксели и обман

Форум — Talks

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

Есть одно устройство с 1/3" Progressive CMOS матрицей с разрешением 2048x1536 точек. Было интересно прочитать про 1/3" (т.н. кроп-фактор), построчную/чресстрочную развертку и прочие фотографские штучки.

За кадром остался лишь один вопрос. А есть ли возможность достоверно узнать, действительно на этой матрице 2048x1536 точек или ушлые китайцы делают програмное масштабирование картинки ради маркетинга?

 , ,

makoven
()

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