LINUX.ORG.RU

Сообщения reprimand

 

Форумы с кармой и прочей гадостью

Начитавшись ЛОР-овских нытиков в толксах и linux-org-ru может создаваться впечатление, что, мол, «тут всё так плохо» и «модераторы несправедливы».

Давеча пришлось по разными причинам иметь дело с одинм форумом + хабрахабром + одной площадкой, схожей по методу общения на dou.ua.

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

1) ЛОР - прекрасный форум. Несмотря на обилие троллей и употребляющих вещества, получить ответ по делу вполне себе реально, а трешак оперативно удаляют модераторы.
2) Если ты не с толпой - тебя заминусят на самое дно, и не важно, что ты просто выражаешь своё мнение (пусть даже аргументированное и в очень вежливой форме)
3) Такие (заминусенные) посты обычно отображаются бледным шрифтом, благодаря чему у новых читателей заранее складывается предвзятое мнение.
4) Эти тупицы (лайкоботы) не в состоянии написать пост и вступить в дискуссию - им гораздо проще поставить "-" и уйти.

Названия форумов и сервисов называть не буду во избежание лютого срача.

Народ! Давайте жить дружно! (с)

Мне также интересен ваш опыт на таких форумах.

 

reprimand
()

Подскажие материалы о работе дискового реширования

Собственно, интересует как работает дисковый кеш на онтопике в деталях, а именно:

1) До какого предела можно заполнить дисковый кеш? Имеется ввиду сколько максимум свободной памяти он может занять?
2) Как часто или по каким критериям dirty pages синхронизируются с диском?
3) Происходит ли кеширование при операциях, не связанных с непосредственным вводом-выводом? Имеются ввиду не read()/write(), а open(), access(), stat().
4) Остаются ли данные в кеше после того, как выполнен write(), и данные УЖЕ записаны на физический диск?

Как известно, вызов write() на файловом дескрипторе, который открыт без опции O_SYNC приводит в первую очередь к копированию буффера в пространство ядра (в кеш) дабы вернуть управление софту так быстро как это возможно (тут мы не рассматриваем случаи когда происходит активная запись, кеш заполнен, и потому положительный эффект от такого механизма нивелируется). Вопрос в том, остаются ли данные в кеше после того, как они фактически сброшены на диск?

5) Аналогичный вопрос, происходит ли кеширование при O_SYNC? А при O_DIRECT? А при O_SYNC | O_DIRECT ?
6) Как вытеснить имеющийся кеш без применения всяких там «echo 3 > /proc/sys/vm/drop_caches». Слышал истории о том, мол, что кеш в современных ОС сделан умно, и потому чтение раз в пару часов к маленькому файлу не приводит к тому, что этот файл попадает в кеш. Собственно, интересует как вытесняется кеш чтением и записью в теории и на практике.


Через гугл инфы достаточно получить не удалось, мб. я не так искал?

 , , ,

reprimand
()

Как скрыть поля структуры в интерфейсе?

ЯП: C99

Пытаюсь запилить shared library. Что имеется:

Файл lib.h (он же интерфейс):

typedef struct mystruct mystruct;

mystruct foo();

Файл lib.c (он же реализация):
#include "lib.h"

struct mystruct {
    float float_val;
    short short_val;
}

mystruct foo() {
    mystruct = {.float_val = 1.1};
    return mystruct;
}


Компилится нормально:
gcc -c lib.c -o lib.o -fPIC
gcc -shared -o lib.so lib.o


Проблема, естественно, состоит в том, что использовать хидер (он же интерфейс) практически невозможно, т.к. размера структуры мы не знаем, и, соответственно, юзер свою прогу с использованием либы скомпилить не сможет:
#include "lib.h"

int main() {
    // ...

    mystruct a = foo(); // вот тут плюнет "error: variable ‘a’ has initializer but incomplete type"
    // затем "invalid use of incomplete typedef ‘mystruct’"
    // а затем "storage size of ‘a’ isn’t known"

    // ...
    return 0;
}


Задача:
1) Юзер имеет только интерфейс. Использует только его и shared object.
2) Юзер не имеет доступа к полям структуры. Т.е. mystruct.float_val = 99.99; выполнить нельзя.

ЛОР, подскажи, пожалуйста.

Может внутрь хидера зашибенить какое-то говно типа
struct blablabla {
    char[sizeof(needed_structure)];
};
?

UPD: Решение - opaque pointer. Возвращать структуру а не указатель на неё - моветон. Если так и делать, то лучше открыть структуру вместо велосипедирования.

 ,

reprimand
()

Как юзать газовую печь?

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

Сразу говорю, что гугл не помог, хотя гуглил по-всякому.

Есть газовая печь. Представляет собой прямоугольный параллелепипед высотой от пола до середины стены. Верхняя часть печи уже чем нижняя. Выглядит примерно так (схематично):

   ____________
   |          |
   |          |
   |          |
   |          |
   |          |
   |          |
  _|          |_
 |              |
 |              |
 |              |
 |    ------    |
 |    |    |  1 |
 |    ------    |
 |              |
 |    ------    |
 |    ------    |
------------------


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

ЛОР, подскажи, всё ли я правильно делаю?

1) Открываю первый кран
2) Открываю верхнюю дверку
3) Зажигаю газетку
4) Открываю второй кран (он ближе к грелке) и подношу газетку к грелке из которой немного начал валить газ.
5) Немного приоткрываю нижнюю дверку (всего на пару градусов)
6) Оставляю верхнюю дверку открытой тоже всего на пару градусов

Огонь красного цвета. Помимо шума газа слышно гудение.
Если открываю верхнюю дверку градусов эдак на 30, огонь становится синим, гудение пропадает.

Собственно, как правильно топить печь?

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

 

reprimand
()

Как использовать второстепенный шрифт, если глифов для текущего нет?

Есть OTF шрифт, в котором некоторые глифы отсутствуют. При попытке использования этих соответствующих символов вижу квадраты в любом текстовом редакторе.

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

 

reprimand
()

Каталог образцов текста определенного типа

Привет всем!

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

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

Такие тексты, кстати, очень часто проскакивают в толксах, где автор вбрасывает кусок посреди словесного поноса потока сознания, и без дополнительных объяснений сложно понять о чём вообще идет речь.

Спасибо большое!

 

reprimand
()

Можно ли почистить андроид таким образом, чтобы не носить шапочку из фольги?

Сегодня приехал андроид телефон (oukitel k10000) из китая. ОС там стоит версии 5.1. Последний раз андроидом пользовался еще во времена 2.2, и ихние «нововведения» меня, мягко говоря, повергли в шок.

С ужасом осознал, что мне страшно подключать его к wifi и вставлять SIM карту, ни о каком подключении реального google аккаунта и речи быть не может.

ЛОР, знаешь ли ты

1) как полностью отключить ЛЮБУЮ отправку персональных данных, статистики, и прочей инфы гуглу и их «партнерам». Если что - все существующие настройки я уже облазил и где нужно опции выставил.
2) исходя из п.1 - как удалить google apps. В интернете рекомендуют их просто отключить, но некоторые приложения (например wireless update) отключить не удается
3) программу для звонков, смс, телефонной книги. Я не хочу никаких синхронизаций, календарей, и прочего дерьма. Никто не должен узнать номера в моей SIM карте
4) просмотрщик роликов на youtube. Стандартный входит в google apps

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

З.Ы. Стоковый браузер просит геоданные и доступ к телефонной книге. Они упоролись там полностью. Как нынче браузер на ведре модный?
З.Ы.2. Телефон нужен для звонков, смс, просмотра изображений, использования карт (osmand). Если что-то еще и буду юзать, то только из f-droid.

 ,

reprimand
()

Чем провижинить FreeBSD?

Есть смысл использовать готовые утилиты для этого? Если да, по почему и какие?

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

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

 , provisioning

reprimand
()

implicit declaration of function, ЯННП

простой код, ничего сложного

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

int main() {
	while(printf("nanosleep happens\n")) {
		usleep(1000000);
	}
}
компилим
$ c89 nanosleep.c
$
окей. Компилим иначе
$ c99 nanosleep.c
nanosleep.c: In function ‘main’:
nanosleep.c:7:3: warning: implicit declaration of function ‘usleep’ [-Wimplicit-function-declaration]
   usleep(1000000);
   ^
$
Казалось бы, уже почти год работаю, а тут какая-то хрень ввела меня в ступор...

Не могу понять почему идет ругань на отсутствующее объявление нужной функции, я же подключил unistd.h. Что изменилось при смене стандарта?

 

reprimand
()

Почему в cmake всё так сложно?

внутри обычного Makefile я могу просто написать

cc -std=c99 file.c -o program -lasound
либо
cc -std=c99 file.c -o program `pkg-config --libs alsa`


что нужно сделать в таком случае для cmake?

текущее содержимое CMakeLists.txt
cmake_minimum_required(VERSION 3.2)
project(program C)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")

set(SOURCE_FILES
    file.c)

add_executable(program ${SOURCE_FILES})

Возникает желание выбросить на помойку этот cmake... документация в стиле «хрен поймешь без бутылки», вот так сразу ее не взять чтобы «прочитал -> сразу понял -> используешь». Туториалы не объясняют что к чему.

ЛОР, помоги.


З.Ы. program и file.c - нарочно измененные имена. Добавление -lasound после -std=c99 не приводит к какому-либо результату.

 

reprimand
()

Максимально возможный объем памяти для mlock?

Сабж. Сколько максимум памяти можно пометить mlock()-ом?

Гуглеж наводит на способ узнать текущее значение лимита для пользователя через ulimit -l, который выводит 64. Но 64 чего? Не нашел ответа на этот вопрос, и не похоже что это реальная цифра.

getrlimit(RLIMIT_MEMLOCK ...) выдает 65536. Это оно или я что-то пропустил? Больше памяти я не могу получить без рут прав и setrlimit?

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

 

reprimand
()

Подскажите по hash алгоритмам

1) Нужен быстрый алгоритм создания хеш сумм.
2) Как узнать информацию о предельном объеме данных, при которых использование хешсуммы уже не безопасно или не актуально? Имеется ввиду, что md5 на 2 гб файле уже не особо имеет смысл, а вот несколько хешсум на частях этого файла (как в торрент файлах) имеет. Вот я и хочу узнать размер этих частей.

UPD: Решение тут - Подскажите по hash алгоритмам (комментарий)

 

reprimand
()

Срабатывание клавиш после отпускания кнопок

Использую Ctrl+Shift для переключения раскладок. Да-да, я старпер, знаю.

В убунтах и linux mint Ctrl+Shift работает после отпускания кнопок (либо использования третей клавиши). Однако на новой работе корпоративным стандартом является Debian, где это не работет.

Тема, судя по гуглежу, довольно старая, однако имеющиеся ответы и решения довольно старые. Пропатчить? Рехнулись, какие патчи? 2016 год на дворе, юзер френдли модер линукс же. К тому же там патчи для старого Xorg.

Собственно, что мне нужно сделать для debian stable? В арче есть просто отдельным пакетом пропатченый Xorg, а в убунте - из коробки.

Варианты изменения комбинаций клавиш не предлагать.

 ,

reprimand
()

Ищу софтину для сравнения базовой системы с изменениями

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

Нужен софт, который отслеживает изменения файловой системы по сравнению с базовой системы.

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

Ну, конечно, я могу сделать git init в корне, но это может иметь свои странные последствия, ибо git не для того предназначен.

 

reprimand
()

Отрецензируйте, пожалуйста, код

Как кто-то говорил на ЛОР-е, настоящий программист должен сделать 3 вещи:

1) Написать helloworld
2) Написать калькулятор
3) Написать аудиоплеер

Собственно, первые 2 пункта уже имеются. А тема это о калькуляторе. Писался он ради развлечения и повышения собственных навыков GUIстроения. Ссылка: https://github.com/xdevelnet/n0calc

Язык: c99 (с возможность легко переписать на c89)
Тулкит: GTK3

Хочу послушать любые замечания по стилю, логике, наличию или отсутствию говнокода, etc.

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

P.S. «поревьюйте» - я правильно написал?

 ,

reprimand
()

Есть ли корретный способ определить ВСЕ аудиоисточники?

Имеем карту m-audio delta 2496

Далее я буду показывать только интересующую меня карту, всякие там подключенные веб камеры, hdmi на nvidia, встроенный ALC887 я выбросил из вывода.
Смотрим раз:

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: M2496 [M Audio Audiophile 24/96], device 0: ICE1712 multi [ICE1712 multi]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
Два:
$ cat /proc/asound/pcm
00-00: ICE1712 multi : ICE1712 multi : playback 1 : capture 1
Pulseaudio тоже определяет только один стерео вход (2 канала), хотя выходов он видит много и дает возможность «якобы» поставить surround 5.1 (хотя эти выходы являются каналами аппаратного digital mixer-а, сама карта имеет 2 PCM моно выхода.)

Окей. Запускаем jack, и...
http://i.imgur.com/coc58Ur.png

12 доступных каналов захвата! 12, Карл! И аппаратный микшер работает!

Я усердно гуглил о вопросе показа «доступных источников записи в alsa». Правда.

Вопрос: что такое умеет jack, что не умеют другие? Как «предложить» pulseaudio увидеть в дополнение к capture_1/capture_2 (микрофон) хотя-бы каналы capture_11/capture_12?

P.S. В дополнение хочу спросить независимо от основного вопроса специалистов по pulseaudio 2 вопроса:

1) Можно ли эмулировать аудиоустройство на основе имеющихся неиспользованых каналов карты? Абстрагируемся от моей уберкарты, пусть у нас обычный intel hda (alc888 какой-нибудь, неважно). Нужно 2 виртуальных стереодевайса, которые будут использовать 4 канала реальной карты.
2) Что за тупняк с частотой дискретизации у pulseaudio? Какую по умолчанию он выбирает? Если приложения используют разные (44.1k и 48k), то почему он не выполняет передискретизации?

 ,

reprimand
()

Есть ли вменяемые доки и/или туториалы по gtk3?

Официальный тутор уже прочитал и немало так потыкал на практике. Остались лишь (на ихнем сайте) api docs. При попытке запилить поле с текстом используя лишь api docs оказался в большой жопе. Т.е. поле-то запилить просто, а вот получить данные (или засунуть данные в него) не так тривиально.

Гуглёж обычно приводит на туториалы по gtk2, коий считается «устаревшим, без поддержки hidpi, wayland, whatever...», либо там используется python/rust/another_weird_language.

P.S. Qt не предлагать, в плюсы не умею, только лишь C

 

reprimand
()

Libreoffice полностью непригоден для работы с форматом doc

Прям только что прислали документ ~ 90 страниц. Естественно, в doc, ни о каких odf никто не слышал. Открываю. Вижу, что форматирование поехало, а именно - главы находятся не в начале страницы. Сижу правлю. Потом, соответственно, правлю страницы в оглавлении.
Сохраняю. Затем (зная старые проделки этого злосчастного ПО) открываю проверить... теперь всё форматирование очередной раз съехало!

Надоело. Реально надоело. Мне уже начхать на «свободный софт» и «блаблабла», мне работу делать надо.

Где те аналитики, которые кричали и спорили со мной в новостях о libreoffice? Где те, кто спрашивают готов ли linux к десктопу? Специфический софт, да? Офиса нормального нет, твою ж дивизию!!

У меня 2 вопроса:

1) Что делать?
2) Как продолжать работать?

P.S.
libreoffice из реп последнего linux mint

Решение:
1) Libreoffice полностью непригоден для работы с форматом doc (комментарий)
2) Поставить MS Office
3) WPS office хоть и странный, но открывает нормально (если перед этим его с помощью LO не сохранять).

Рекомендую вариант №3 (если уж жрать проприетарщину, то не в таких количествах)

 , ,

reprimand
()

Nvidia 3d vision есть у кого?

Собираюсь купить nvidia 3d «вижон». Усердно гуглил, и, среди расплывчатой инфы понял, что с ним ситуация такая:

1) С одним только блобом без стороннего ПО всё работает только лишь для quadro карт (там какие-то специфические карты, я таких даже не видел, мой gtx 560 к ним не относится) и при добавлении спец. опции в xorg.conf.
2) Есть какой-то модуль для ведра ядра, и он якобы даже работает.

Соответственно, меня интересует 2-й вариант. Кто-то использовал его? Как программы/игры с ним работают?

P.S. Монитор Asus VG248QE

 ,

reprimand
()

Как объяснить результаты memtest?

Заметил, что многие программы сами по себе падают. Без причины.
Решил провести memtest и получил следующее: http://i.imgur.com/1UArTci.jpg

2 планки по 4гб. Если быть точным - 8191 Мб (судя по самому memtest-у), а в таблице с найденными ошибками указаны смещения далеко за это значение. Как такое понять? Ошибки ли это? Может стоит одну планку вытащить и проверить? Либо поменять их местами/засунуть в другие слоты?

Что делать?

 ,

reprimand
()

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