LINUX.ORG.RU

Сообщения bigov

 

Настройка запуска Desktop - приложения

Привет всем!

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

Собираю простенькое графическое приложение, типа «HellowWord». Взять хотя-бы это для примера. Все собирается, нормально работает. Но только при запуске из терминала.

Thunar мой скомпилированный файл определяет только как «разделяемая библиотека», а нормальные (запускаемые) бинарники как «исполняемый». И ни из файлового менеджера ни при создании значка .desktop иксы «в упор не замечают» что мой файл тоже исполняемый. У меня xfdesktop в составе xfce4, хотя мне кажется это не принципиально. Как это лечится?

---

В общем, есть ответ. «Старое поведение» лечится опцией "-no-pie", но при этом уже не будет ASLR.

 , ,

bigov
()

Вимбо, или борьба с ньюансами

Привет всем! Вопрос гикам Vim.

почему в режиме Insert текстовый курсор после вставки фрагмента текста из общего буфера оказывается ПЕРЕД ПОСЛЕДНИМ вставленым символом/буквой а не в КОНЦЕ фрагмента?

Блин, погорячился, бывает - это был косяк сборки. Проверил на другой версии - все OK.

 

bigov
()

Защита локальной сети

Привет админам!

По служебной необходимости «рулю» небольшой локальной сеткой, хостов примерно 2К, не больше. Чтобы контролировать зловредную активность настроил фэйковый роутер (на виртуальной BSD), куда завернул все маршруты к подсетям, которых у меня нет и отлавливаю на нем IP адреса хостов, которые пытаются сканировать адресное пространство. В 90% случаев на таких хостах нахожу троянов. Простой и эффективный способ поддержания порядка в сети.

Знает кто-нибудь способ, как научить роутер не дропать пакеты к IP адресам неиспользуемых подсетей, а отвечать атакующему так, как будто все адреса в этих подсетях заняты хостами? Что-нибудь из серии PF или IPFW, без изобретения нового софта, чтобы еще усложнить жизнь зловредам.

 , ,

bigov
()

поддержка NPAPI-плагинов

Привет, народ! Производители браузеров бьются за безопасность и ломают рабочие инструменты администрирования.

Теперь вот с Явой засада. Firefox, Opera, Chromium перестали запускать ява-плагины, а у меня десяток виртуальных серверов только через явую на консоль пускают. Есть-ли у кого-нибудь опыт установки старых версий браузеров совместно со свежими или другие способы запуска ява-апплетов в Firefox-52 или Хромиум-57?

Все инструкции c сайтов java.com и icedtea.classpath.org проштудированы - нихрена не работает.

РЕШЕНО: Firefox-52 ESR. [ На долго ли хватит? :-D ]

 ,

bigov
()

Грабли с текстурой

Привет девелоперам, связанным с Опенгл. Кто-нибудь наступал на такие грабли, связанные с передачей UV координт текстуры целыми числами?

ДОБАВЛЕНО: невозможно вырезать текстурный фрагмент точно по границе между пикселями при использовании UV координат с типом GLubyte из текстурной карты 256x256 пикселей. Это связано с тем, что OpenGL при рендере картинки автоматически конвертирует такие координаты в тип GLfloat с вытекающими погрешностями: 1.0 / 255.0.

PPS: (подсказка) РАЗМЕР ТЕКСТУРНОЙ КАРТЫ ДОЛЖЕН БЫТЬ КРАТНЫМ РАЗМЕРНОСТИ ЧИСЕЛ ИСПОЛЬЗУЕМЫХ ДЛЯ АДРЕСАЦИИ.

 

bigov
()

РЕШЕНО. Указатели и приведения типов

Всем привет!

Вопрос по C++. Приведение типов вида (T*)val объявлено устаревшим. Для корректного приведения используется "..._cast". В случае c указателями работает reinterpret_cast<T*>(val) . Но в качественном исходном коде фрагментов с приведением типов (особенно reinterpret_cast) должно быть по возможности меньше. Как правильно передать данные для последнего атрибута в вызове функции glVertexAttribPointer из API OpenGL, который должен быть указателем? Из примера:

int offset = 5 * sizeof(float);

//1. работает / устаревший функционал
glVertexAttribPointer(attrib_idx, 3, GL_FLOAT, false, stride, (int*)offset);

//2. работает / плохой код
glVertexAttribPointer(attrib_idx, 3, GL_FLOAT, false, stride, reinterpret_cast<int*>(offset));

//3. НЕ РАБОТАЕТ
int * ptr_offset = &offset;
glVertexAttribPointer(attrib_idx, 3, GL_FLOAT, false, stride, ptr_offset);

Где в третьем варианте ошибка, как корректно сформировать значение для последнего параметра без приведения типа?

ОТВЕТ: без использования функции приведения типов reinterpret_cast (в явном или скрытом виде) не работает - связано в особенностями реализации API OpenGL.

 

bigov
()

автоматизация cmake

Привет всем!

Кто уверенно пользуется cmake, подскажите пожалуйста умеет ли оный автоматически собирать в переменную список сырцов в директории как make

NAMES = $(wildcard src/*.c)
или не умеет? Уже час курю маны, наверно не там где надо - не могу найти!

AUX_SOURCE_DIRECTORY - то?

Нашел, блин, на Стаковерфов:

file(GLOB NAMES "src/*.cpp")

 ,

bigov
()

Распределение трафика на шлюзе

Привет сообществу.

Вопрос к сетевым специалистам. Подскажите пожалуйста, какие сейчас используются средства для динамического управления трафиком на корпоративном шлюзе под Linux?

Сейчас у меня все работает на ipfw+DUMMYNET под FreeBSD. Получается вполне себе динамично и стабильно. Но вот появился второй канал наружу и теперь нужен poliсy-routing (по адресу отправителя пакетов).

Как вариант, рассматриваю iproute2 на Linux для реализации шлюза. Но пока останавливает большой объем документации и неудобоваримые конфиги. Для управления всем этим даже специальные скрипты пишутся типа htb.

Есть ли еще варианты по управлению трафиком на Linux шлюзе кроме iptables-iproute-tc? Или может на платформе BSD есть что-то аналогичное poliсy-routing?

 ,

bigov
()

Значок запуска

Привет всем!

Интересно, знает кто-нибудь способ создания многострочной команды в параметре «Exec» в файле значка запуска для рабочего стола (у меня Xfce 4.12)?

[Desktop Entry]
Version=1.0
Type=Application
Name=Old_server
Comment=192.168.1.1
Exec=/usr/bin/ssh 192.168.1.1 -p 1022 -l operator -c 3des-cbc -oKexAlgorithms=+diffie-hellman-group1-sha1
Icon=/home/operator/icons/server0.gif
Path=/home/operator
Terminal=true
StartupNotify=false

Ну, не люблю я строки длинее 80 символов в системных файлах. Типа, как в бородатом анекдоте про яйца "...не эстетичненько как-то, доктор.". Я посмотрел спецификацию на https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-..., но так и не нашел ответа, как перенести на вторую строку часть параметров.

 

bigov
()

vim - переменные окружения DOS

Привет всем.

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

Я «кропаю» мультиплатформенную софтину, основное окружение в Арчике - тут проблем нет, все гладко. А вот при компиляции в оффтопике, когда возникают шероховатости случается править код не меняя платформу, благо Vim прекрасно чувствует себя везде.

Чтобы не засорять ось, при запуске компилятора (mingw make gcc) я использую пакетный файл настройки окружения, в котором прописаны пути к библиотекам и бинарникам. Например «env.cmd»:

SET "_DEV=F:\cDev\"
SET "_LIBS=%_DEV%ext_libs"
SET "_MINGW=%_DEV%MinGW\i686-6.2.0-release-posix-dwarf-rt_v5-rev0\mingw32\"
SET "PATH=%_MINGW%bin;%_MINGW%opt\bin;%PATH%"

ВОПРОС: Кто-нибудь знает простой способ, как считать вимом переменные окружения из такого пакетного файла, чтобы настроить корректно сессию. Например типа (".vim" в папке проекта):

if match($OS, "Windows") > -1
	let g:syntastic_cpp_compiler=$_MINGW."/bin/c++.exe"
endif

Так не работает, потому что объявленные переменные живуют только во время компиляции и при запуске Вима Ось их уже не знает (дабы не засоряться).

 

bigov
()

ввод из консоли

Привет всем девелоперам!

Чего-то не могу найти в стандартой библиотеке C++ как перехватить из консоли введенный символ без последующего «\n» (нажатия Enter). Я в курсе, что есть кроссплатформенные либы для приема сканкодов от клавы и сам использую для этого SDL2. А без внешней либы не получится?

 

bigov
()

OpenGl и потоки

Привет, всем!

Вопрос к программистам C со стажем. Вот рекомендуемая архитектура OpenGL приложения (на базе SDL2):

while(loop)
{
  обработка событий окна();
  отрисовка_контента_3D();
  переключение_буфера_окна();
  асинхронный_обмен_данными();
}

Попытался отделить в два разных потока

  • обработчик событий окна (взаимодействие с пользователем),
  • отрисовку 3D-контента (GLSL программа, пересчет матрицы вида ... и переключение графичеких буферов окна).

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

Весь вечер терзал поисковики пытаясь понять что не так. В итоге пришел к выводу, что такой фокус невозможен. По крайней мере на SDL2. Мануал по библиотеке SFML на это даже явно указывает.

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

 , ,

bigov
()

не компилируется пример из Вики

Привет всем. Обращаюсь к матерым программистам C++.

Под gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 5.3.0 не могу скомпилировать пример, приведенный на странице Википедии Наблюдатель_(шаблон_проектирования)

из-за строки 18

    list<IObserver* const> _observers;

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

Пробовал разные варианты: и менял описания классов местами, и делал переменную указателем... не выходит «Цветок Каменный», блин!

Может кто знает, как пофиксить?

 ,

bigov
()

Открытые библиотеки классов C++

Собственно сабж. Есть в природе?

Я в курсе, что по теме есть принимаемые официально стандартные библиотеки. Кроме того, есть куева хуча девелоперов популярных наборов библиотек (boost, Qt, Gnome, SDL2, и т.д. и т.п.), но все они «рассыпаны тонким слоем» по сети.

Я в сях сравнительно недавно - около года. До этого считал только Пайтон единственным достойным занятием. Так вот, под Пайтоном есть общий объединенный ресурс со всевозможными (и невозможными) библиотеками, который (в числе прочих плюсов) и сделал этот язык мега-популярным.

Кроме открытых хостингов проектов (типа Гитхаба или Битбукета) кто-нибудь знает ссылки на похожие ресурсы (классов) С++?

В связи с чем вопрос? Очень простой ответ: да чтобы не изобретать велосипедов, или колес там... кому что больше нравится. Как там у Страуструпа:«изучайте чужой код».

Спасибо fluorite и Solace: отличные ответы и без холивара:

 

bigov
()

Раздел форума Vim, gvim

По-моему, пора вынести тему Вима из топиков в отдельный раздел ЛОРа. Посмотрите число постов по тегу: https://www.linux.org.ru/tag/vim

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

 ,

bigov
()

vim selectmode

Привет уважаемому сообществу LOR!

Давно «грызет» вопрос, который не дает покоя - обращаюсь к знатокам Вима.

Под MS-Win для выделения фрагмента текста повсеместно используется [Shift]+«Стрелки». Можно эту фичу включить и в Виме опцией «keymodel=startsel,stopsel». Или глобально при помощи «behave mswin» (не айс, ломает много настроек). Но после включения этой опции при переходе в «Визуальный режим» по [V] из «normal mode» эти самые «Стрелки» перестают управлять выделением текста (можно использовать только hjkl).

Собственно, вопрос: как оставить функционал «клавиш со стрелками» в визуальном режиме и добавить выделение с шифтом в режиме вставки?

РЕШЕНО: https://www.linux.org.ru/forum/general/12543213?cid=12543253 (комментарий)

 , ,

bigov
()

Vim. Назначение горячих клавиш кириллицей.

Привет всем!

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

Давно пишу программы только в Vim. Неутолимое желание текстовые файлы на русском языке тоже набирать в Vim все время спотыкается об элементарную проблему: Ctrl+S. Когда весь текст документа на русском, то во время набора для сохранения документа приходится либо переключать раскладку, либо переходить в командный режим. После 10 минут работы начинает злить.

Пробовал прибить Ctrl+ы по аналогии c

" варианты
" map ы s
" или
" imap <C-ы> <esc>:w<cr>i
" не работают

" Ctrl-S: сохранить изменения
imap <C-s> <esc>:w<cr>i
nmap <C-s> :w<cr>

не работает. Кто-нибудь в курсе?

 

bigov
()

Файлы СТАНДАРТНЫХ библиотек Си

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

Знакомлюсь с языком Си (GNU, ANSI ...) - типа «от азов». Изучил К&R, покурил разные маны и туторы. Нигде не встретил ответа на простой вопрос: как в конкретной операционной системе при сборке проекта и подключении стандартных Си библиотек находить названия файлов для линковки?

Например: в исходнике пишем инклуд на <math.h> а при сборке указываем библиотеку " -lm"! Почему не " -lmath"? Я конечно по форумам нашел, что оказывается файл библиотеки - «m.so»! А где это найти в системе? Где для хедеров стандартных библиотек «секретные» списки названий файлов для сборки?

Может я не так у Гугля спрашиваю, а то он меня все в разные мануалы тычет, где ничего про это не сказано.

==== ЕСТЬ ОТВЕТ ====

Для систем на платформе Linux:

1. Для стандартной библиотеки ищем в мануале по имени функции:

$ man sin | grep Link
       Link with -lm.
$ man cosf | grep Link
       Link with -lm.

2. Для расширений можно посмотреть командой:

$ pkg-config --cflags --libs freeglut
-lglut

В MS-Windows при использовании MinGW аналогично:

f:\cDev>pkg-config --cflags --libs libpng
-If:/cDev/mingw64/i686/include/libpng14  -Lf:/cDev/mingw64/i686/lib -lpng14

 

bigov
()

как работает bash?

Здравствуйте, кто знает, как еще bash ищет исполняемый файл команды кроме алисов и путей?

Суть проблемы - не запускается команда, присутствующая в каталоге, прописанном в $PATH. Баш упорно пытается запустить ее только из /usr/bin/ и «не желает замечать» в других каталогах. Вот пример:

$ nim
bash: /usr/bin/nim: Нет такого файла или каталога
$ nimfuck
bash: nimfuck: команда не найдена
$ alias -p
alias :q='exit'
alias ls='ls --color=auto'
alias p2='source /home/ib/.pyenv/p2/bin/activate'
alias p3='source /home/ib/.pyenv/p3/bin/activate'
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/home/ib/bin
$ ls /home/ib/bin/nim
/home/ib/bin/nim
$
$ /home/ib/bin/nim -v
Nim Compiler Version 0.11.3 (2015-06-16) [Linux: amd64]
Copyright (c) 2006-2015 by Andreas Rumpf

git hash: 116a60caebec32e4e20e9e4673ff90d2ae5c72f8
active boot switches: -d:release
$ nim -v
bash: /usr/bin/nim: Нет такого файла или каталога
$ 

Пытаюсь запустить скомпилированный из исходников nim, расположенный в домашней директории, а Баш (после удаления системного пакета nim) ищет его только на старом месте.

Конечно, можно через sudo прибить софтлинк в /usr/bin/nim. Но хочется понять суть.

 

bigov
()

Трехмерный объект в pyglet

Здравствуйте! Взываю к спецам по OpenGL. В частности к тем, у кого имеется опыт общения с pyglet - поможите сирым! Уже неделю курю маны по OpenGL (тяжко, не сишник я совсем), перечитал всю доку по pyglet - не могу устранить дефекты при рисовании простых кубиков с двумерной текстурой на гранях в пакетном режиме отрисовки: http://i57.fastpic.ru/big/2015/0327/91/feb1cb5fccfa89aec364c8cb3b540891.png

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

Может у кого есть ссылка в доку или хотя бы краткое изложение пути решения? А то в доке на pyglet этот вопрос не освещен вообще, а с первоисточником по OpenGL у меня пока напряженные отношения, а хочется все и сразу :-)

 ,

bigov
()

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