LINUX.ORG.RU

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

Retargetable C complier конечно, крут, а новее есть?

Форум — Development

Захотелось мне почитать про устройство и жизнь простого советского человека небольшого Си-компилятора. В качестве подопытного я выбрал Tiny C Compiler от Fabrice Bellard.

В качестве учебного пособия, для общего ознакомления с сабжем DELIRIUM посоветовал Retargetable C compiler Design and Implementation, но чёй-то от книги несёт нафталином... поновее ничего не написано? Книгу дракона не предлагать :-)

 , , ,

Twissel ()

Алгоритм генерации игрового мира (дорОги)

Форум — Development

Пишем с детишками игру «Поездка». Там ездит машина.

В настоящий момент, игровая карта — это одномерный массив плиток разных типов (под каждый тип своя картинка). Можно и в двумерный превратить легко — у них есть «х» и «у» координаты.

Но, что-то очень лениво писать еще и конструктор карт. Вчера погуглил и нашлось куча вариантов, но всё что я нашел — это про ландшафты, острова, вобщем про природные неровности.

А надо чтобы в первую очередь генерировались дороги. Вот это я найти не смог.

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

На картинке пример генерации с помощью алгоритма «Diamond-Square», так, для прикола, чтобы тестировать покатушки было не скучно: https://pic4a.ru/88/N_F.png

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

Да и машинка не проста — у неё переключаются скорости, есть нейтралочка, тормоз, разгон, инерция (что и видно на скрине по значению спидометра, чтобы сделать скрин газ я отпустил). Предполагается добавить в игру: умный рендер объектов (не дёргаем тех, кто не попал в вьюпорт), коллизии со слоем подстилки (по песку ехать труднее), другие автомобили с туповатым ИИ, коллизии с этими авто и прочими объектами типа дом, забор.

Заранее большой сяп тем кто откликнется и поможет!

 , ,

deep-purple ()

Cпомпилировать boost asio без линковки к -lboost_system

Форум — Development

Задача состоит именно в том чтобы использовать boost.asio и не линковать к boost_system. Так как библиотка boost состоит из хидеров то я по идее могу подключив сорсы не делать линковку. Прав ли я? И если да то какие сорсы нужно подключить? Заранее спасибо.

 , , ,

ECLIPSE ()

На YouTube выложены доклады с С++ конференции CoreHard Spring 2018

Форум — Development

Евгений Охотников. 25 лет истории C++, пролетевшей на моих глазах

Автор доклада познакомился с C++ в 1991-ом году, а с 1992-го года C++ является для докладчика основным языком разработки. Что происходило с языком за это время? Как и почему он стал популярным? Как начался застой в развитии C++? Как C++ потерял свою популярность? Есть ли место для C++ в современном мире? Попробуем поговорить об этом опираясь на 25-летний опыт программирования на C++.

Вадим Винник. Обработка коллекций: единая суть и множество проявлений

Обработка коллекций: единая суть и множество проявлений

Nicolai Josuttis. Beware of C++17

The devil is in the detail. This also applies to C++17. We get new cool features, but we also get new things to care for and remember. This talk discusses some of the cool features when they may lead to surprises.

Сергей Соложенцев. Фича-компонентный подход при разработке игр

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

Андрей Якимов. Перехват функций под Windows в приложениях с помощью

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

Андрей Карпушин. C++ для web с помощью Emscripten

В докладе я расскажу о своем практическом опыте компиляции и использовании C++ на веб страницах, о том что нужно сделать, чтобы портировать приложение на С++ под веб, об ограничениях с этим связанных, об интеграции С++ кода с JavaScript и другими элементами веб страницы.

Василий Немков. Ядро мультикриптовалютного кошелька Multy

3,5 блокчейна в 2 мегабайта: как, зачем и почему. Особенности разработки кросс-платформенных решений для блокчейна.

Александр Маркевич. From C++ to Objective-C

В этом докладе я хочу рассказать о том, что Obj-C/C++ — это расширение существующих C/C++. В данном докладе будут рассмотрены особенности языка, будет рассказано про управление памятью (retain/release vs. ARC vs. shared_ptr/unique_ptr), про Swift и почему он лучше или хуже Obj-C/C++.

Михаил Матросов. Многогранный С++ на практике

В С++ существует множество способов решения одной и той же задачи. Мы возьмём реальную задачу из моей практики и исследуем ряд инструментов С++ для её решения: контейнеры STL, boost.range, C++20 ranges, coroutines. Мы сравним решения с точки зрения их интерфейсов и производительности, а также увидим, как одно решение может быть легко получено из другого, если код правильно организован. В процессе мы посмотрим на возможности С++17: constexpr if, selection statements with initializer, std::not_fn, и т.д. Особое внимание будет уделено стандартным алгоритмам (моей любимой теме).

Павел Беликов. Как работает анализ Data Flow в статическом анализаторе кода

Анализ Data Flow (потоков данных) - технология анализа исходного кода программ, широко используемая в различных development tools: компиляторах, линтерах, IDE. Мы поговорим о нём на примере разработки статического анализатора. Рассмотрим классификацию и различные виды Data Flow анализа, смежные технологии, взаимодополняющие друг друга и проблемы, возникающие при его разработке, и сюрпризы, которые нам преподносит C++, когда мы пытаемся его проанализировать. В ходе доклада мы разберём несколько ошибок, найденных в реальных проектах с помощью этой технологии.

Александр Зайцев. Инструменты профайлинга С++ кода

Так бывает, что иногда ваше приложение начинает долго выполнять казалось бы обыденные задачи и потреблять большое количество оперативной памяти. А вы как разработчик и понятия не имеете, почему же так происходит (но вам интересно). В ходе доклада поговорим о средствах, которые могут нам понять причины странного поведения наших программ. Если не боитесь таких слов как Valgrind, gprof, gperftools и многих других - добро пожаловать!

Александр Чуприна. Настройка окружения для кросскомпиляции на основе docker'a

Как быстро и легко настраивать/обновлять окружения для кросскомпиляции проектов под различные платформы(на основе docker), как быстро переключаться между ними, как используя эти кирпичики организовать CI и тестирование(на основе GitLab и Docker).

Алексей Ткаченко. Кодогенерация C++ кроссплатформенно

В докладе будет рассмотрена генерация кода при компиляции различных языковых конструкций, как простых, так и сложных, на различных платформах, как общераспространённых x86/x64, так и тех, которым уделяется меньше внимания: ARM, AVR. Также будут встречаться примеры для совсем экзотических процессоров вроде PowerPC и даже MicroBlaze. Основной упор будет делаться не на обработку данных, а именно на сопоставление различных конструкций кода с инструкциями целевых платформ.

Дискуссии:

 , ,

HardCpp ()

Что происходит?

Форум — Talks

Чистил флешку, посмотрел в дампе — а там единицы О_о

Проверил, а оказалось, что и правда, у меня /dev/zero возвращает единицы.

λ ~/ dd if=/dev/zero count=1 
11111111111111111111111111111111111111111111111111111111111111111+0 записей получено
1+0 записей отправлено
 скопировано 512 байт (512 B), 5,5668e-05 c, 9,2 MB/c

Что происходит?

 

Deleted ()

Миграция на FreeBSD

Форум — Desktop

Всем доброго дня.

В какой-то момент я решил мигрировать с Manjaro Linux на FreeBSD 11.1. Очень жду выхода релиза, а всё по одной причине:

Есть флешка eMMC (не сильно разбираюсь, но на ней написано UHS-I, Class 10, SDXC) на 64 Гб. Вроде в 11.1 как раз должны прикрутить поддержку таких флешек. И вот ОС я хочу установить на эту флешку.

Прошу совета у тех, кто сталкивался с FreeBSD плотнее:
- Надо ли создавать на флешке GPT-разметку, если буду ставиться на ZFS?
- Может ли оно ставиться/грузиться с UEFI?
- Есть ли смысл глядеть на TrueOS? Какие плюсы по сравнению с FreeBSD?
- Есть ли в портах/репозиториях такие вещи как: LibreSSL, OpenNTPD, fetchmail, procmail, tilde/jed, mutt/NeoMutt, abook, calcurse, OpenJDK, компилятор Rust, Tcl/Tk, sqlite3, PostgreSQL, Metasploit, dvtm, gnupg2, Mono, FreeCAD, LibreCAD, BRL-CAD, OpenSCAD, Inkscape, GIMP, ELinks, mpv, LibreOffice?
- Устраивает ли поддержка UTF-8 в консоли, или косячная?
- Есть ли поддержка AMD KVM (забыл, как оно правильно называется), qemu, libvirt?

P. S.: Нет, мне не лень искать ответы и хэндбук я читал (и не только его), но очень хочу услышать советы/мнение реальных пользователей. Буду рад любым рекомендациям по адаптации в новой среде.

 

NIR ()

freebsd и wifi

Форум — Linux-hardware

Добрый вечер Олл!

Такой вопрос настраиваю вифи на старом компе с FreeBsd , всё сделал как в мануале (так думаю) но инет появляется только если я ручками набью это : wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf

Я где-то накосячил ? или можно ли как то процесс автоматизировать чтобы ручками не набивать .

з.ы. как вы поняли я новичёк.

 

lmx2315 ()

Распознавание символов TeX

Форум — Science & Engineering

Возможно, баян, но почему я раньше не знал?? Раньше гуглил, а только что обнаружил вот это http://detexify.kirelabs.org/classify.html Возможно, кому-то окажется полезным.

 ,

WerNA ()

Глупые вопросы по CMake

Форум — Development

Сразу скажу - с CMake ранее не работал, а встретиться пришлось (в учебных целях).

Суть: есть несколько лаб в универе с общими зависимостями (курс OpenGL), которые не хотелось бы раскидывать по нескольким git-репозиториям; есть CLion с его CMake.

В какую сторону копать (ключевые слова для поиска) если у меня будет

/lab1/всё по lab1
/lab2/всё по lab2
...

Что мне потребуется (как описывать CMakeLists.txt), чтобы получить отдельные бинари для каждой лабы, но при этом упростить себе компиляцию (Shift-F10, а дальше пусть CMake разбирается, что изменилось и надо пересобрать). И возможно ли это?

P.S. С каким скором можно создавать теги? думал, что тег «clion» существует, а его нет.

 ,

Deleted ()

Как готовить pekwm

Галерея — Скриншоты

PekWM — малоизвестный, но сравнимый по фичастости с openbox-ом менеджер окон. А в некоторых вещах — и опережающий openbox. Возможности:

  • Possibility to group windows in a single frame
  • Configurable keygrabber that supports keychains
  • Configurable mouse actions
  • Configurable root- and window-menus and keybindings for all menus
  • Dynamic menus that regenerate on every view from a script output
  • Multi-screen support both via RandR and Xinerama
  • Configurable window placement
  • Theming support with images, shaping and configurable buttons.
  • Autoproperties (Automatic properties such as a window's sticky state, etc.)

На ЛОРе кто-то жаловался: «у pekwm настолько невменяемый дефолт, что сколько ни брался настраивать, не осилил».

( Но всё можно настроить )

Итого, на скриншоте:

  • pekwm с допиленной темой XFCE4.
  • Показана возможность pekwm объединять в один фрейм несколько окон.
  • pekwm-menu отображает динамическое меню по спеке freedesktop.
  • Боковая и нижняя панель — waterline.
  • ШГ — куда ж без него.

>>> Просмотр (1366x768, 449 Kb)

 ,

Deleted ()

Qt и глобальный перехват событий иксов

Форум — Development

Я тут работаю над самодельной экранной клавиатурой и для некоторой логики мне требуется следить за всеми нажатиям и отпусканиями клавиш - как виртуальными, так и хардварными. Само моё приложение написано на Qt.

Делаю так:

Display *display = QX11Info::display();
XSelectInput(display, DefaultRootWindow(display), KeyPressMask | KeyReleaseMask);
QApplication::instance()->installNativeEventFilter(this);
...
bool KeyboardWidget::nativeEventFilter(const QByteArray &eventType, void *message, long *) {
	xcb_generic_event_t *ev = static_cast<xcb_generic_event_t*>(message);
	switch (ev->response_type & ~0x80) {
		case XCB_KEY_PRESS: {
			xcb_key_press_event_t *key_press_event = reinterpret_cast<xcb_key_press_event_t*>(ev);
			keyEventReceived(key_press_event->detail, true);
			break;
		}
		case XCB_KEY_RELEASE: {
			xcb_key_release_event_t *key_release_event = reinterpret_cast<xcb_key_release_event_t*>(ev);
			keyEventReceived(key_release_event->detail, false);
			break;
		}
	}
	return false;
}

Пока окно приложения имело фокус, приём клавиатурных событий исправно работал (ещё бы он не работал), но как только я сделал так, чтобы окно фокус не получало (setWindowFlags(Qt::WindowStaysOnTopHint | Qt::ToolTip | Qt::FramelessWindowHint)), всё работать перестало. То есть по факту события глобально не ловятся. Что делать?

 ,

KivApple ()

unDE 0.1.0.: Оригинальный файловый менеджер, просмотрщик текстов и изображений

Галерея — Скриншоты

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

Рад представить вашему вниманию первую публичную версию проекта unDE!

На скриншоте мы видим как выглядит корневая директория в этом необычном файловом менеджере.

На самом деле по этому изображению можно очень много рассказать о файловой системе.

Например, директория bin вся покрыта квадратиками голубого, зелёного и жёлтого цветов. Из этого можно заключить что там есть только файлы и их размеры преимущественно 1Кб-1Мб.

Директория etc уже повеселее там много других директорий, а не только файлов, но все они преимущественно мелкие, все элементы в основном зелёного цвета, а значит имеют размер около 1Кб.

Ну и напоследок совсем интересная директория proc. Все файлы на ней нулевого размера, и здесь содержится много директорий с одинаковой структурой.

Больше букв: http://unde.sourceforge.net/ru/ch24.html

Видео с процессом работы в файловом менеджере: https://youtu.be/29zuxU9eyXo (есть субтитры)

>>> Просмотр (1076x1191, 57 Kb)

 , ,

unDEFER ()

Обсуждение DeaDBeeF

Форум — Multimedia

Доступны исходники deadbeef 0.7.0 beta1

скачать: https://sourceforge.net/projects/deadbeef/files/deadbeef-0.7.0-beta1.tar.bz2/...

ChangeLog есть внутри, а также в репозитории на github: https://github.com/Alexey-Yakovenko/deadbeef/blob/0.7/ChangeLog

В ближайшее время будет beta2, постараюсь успеть сделать к нему бинарные сборки.

2mods: Новую тему пришлось создать, т.к. старая почему-то уползла в архив. Возможно ли как-то предотвратить это в будущем?

 ,

waker ()

True Python way

Форум — Development

Привет! Синтаксис и основы языка я знаю, вопрос вот в чем: как и что есть в мире питона для комфортной работы? Какие приняты стандарты? Например, использование pyvenv, pip и т.д

Что надо знать и какие приятные мелочи есть еще?

 

aarexer ()

XeLaTex + рамки по госту

Форум — Desktop

Да, грабли снова. Раньше делал курсовые через LaTeX + eskdx (получалось неплохо) и все были довольны. Новый преподаватель «попросил» обязательно Times New Roman => перешел на xelatex.

Со шрифтами нормально (хоть лог и ругается, но компилит), а вот с рамками беда. В eskdx меня устраивало, вот только к xelatex я прикрутить их не могу.

Есть истории успеха с xelatex и рамках по госту? Да, можно нарисовать самому, но если со 2-й страницы ещё ладно, то как оформить первую не представляю (где большая рамка).

 , , ,

NoobeR ()

Защита от случайного выдёргивания запущенной с флешки системы

Форум — General

Привет всем, кто запускает Linux с флешки!

Вы наверняка попадали в ситуации, когда кто-то задевал флешку, с которой работает система, или подключал рядом с USB-жёстким диском требовательный к питанию смартфон, в результате чего устройство на долю секунды теряло питание, сбрасывалось и переподключалось. Система оказывалась в дико неприятном состоянии, в котором вот оно, корневое устройство, но ни одна команда, кроме тех, которые ещё лежат в кэше, не работает, и даже Alt+SysRq+S,U не поможет предотвратить потерю данных: устройство, на которое можно было бы сбросить кэш, уже отключено, и убедить ядро обратиться к другому невозможно. Фрустрации добавляло ещё и то, что Windows To Go с этим прекрасно справляется, зависая, пока флешку не вставят обратно (с выключением по минутному таймауту).

Оказывается, в Linux это тоже просто обойти. Достаточно создать при помощи dmsetup логический диск в режиме linear и при помощи правил udev делать ему suspend, если устройство было удалено, и создавать ему новую таблицу и делать resume, когда устройство с тем же UUID вставят обратно. На всякий случай, memlockd позволяет удержать в кэше бинарники udev, dmsetup, busybox и blockdev, на которых всё работает. Готовые скрипты (в расчёте на initramfs-tools) лежат на https://github.com/aitap/switchblock/. Адаптировать на другие initramfs должно быть несложно, потому что это всего лишь правило udev + вызываемые из него файлы.

Если кому-то будет интересно, готов принять pull request'ы со скриптами сбора пакетов.

 , ,

AITap ()

Нужна помощь по интерпретатору bash

Форум — Development

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

 

Alexeyy95 ()

Веселая музычка из /dev/urandom

Форум — Development
cat /dev/urandom | hexdump -v -e '/1 "%u\n"' | awk '{ split("0,2,4,5,7,9,11,12",a,","); for (i = 0; i < 1; i+= 0.0001) printf("%08X\n", 100*sin(1382*exp((a[$1 % 8]/12)*log(2))*i)) }' | xxd -r -p | aplay -c 2 -f S32_LE -r 16000

Source: http://blog.robertelder.org/bash-one-liner-compose-music/

 , ,

Oxdeadbeef ()

KolibriOS — пример российской нано-ОС

Галерея — Скриншоты

В связи с новостями о всяких там Haiku, Minix и прочими Plan 9, которые по сути не несут ничего революционного, решил освежить в памяти столь необычную ОС, написанную полностью на Ассемблере.

Базовый дистрибутив занимает объём одной дискеты 1,44 МБ, в который входит собственно сама ОС с графическим интерфейсом, текстовые и табличные редакторы, куча казуальных игрушек, демок, плеерков, редакторов и пр. Есть CD-образ объёмом 5 МБ, в котором ещё больше программ, тем, обоев и пр. Я же в основной образ добавил ещё и рекомендованные на сайте программы и запилил свой образ объёмом 50 МБ, в состав которого входят портированные Doom и Quake. Кому интересно, образ я выложил тут.

Последняя ночная автосборка 0.7.7+ датируется 10 декабря 2012 г., хоть последнего выпуска уже не было несколько лет.

Итак, обо всём по порядку. Сразу хочу сказать — весь софт, кроме 3D, запускается ещё до окончания щелчка мыши! Такого я ещё никогда не видел.

P.S. По-своему системка очень интересная, оригинальная, реактивная, своего рода замена Express Gate. Отлично запускается на VirtualBox и реальном железе, в игрульках есть звук, в интернет-приложениях сеть с интернетом. Полный Open Source. Вердикт — жить! Для десктопа — готово!

>>> Просмотр (1024x768, 28 Kb)

 

vilisvir ()

Как общаться с женщиной

Форум — Talks

Линуксоид-«пикапер» советует как общаться с женщиной :]

Вот так:

<?php
$alfavit = explode(" ", "а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я");
$simbol = explode (" ",". , ... ! ?");
$ns = rand(3,300);
$arr = array();

for ($i = 0; $i < $ns; $i++) {
$arr[] = $alfavit[rand(0,32)];
}

for ($i = 0; $i < count($arr)/8; $i++) {
$n = rand (1,2);
if ($n>1)$arr[] = $simbol[rand(0,4)]." ";
}

for ($i = 0; $i <count($arr)/2;$i++) {
$n = rand (1,2);
if ($n>1)$arr[] = " ".$alfavit[rand(0,32)];
}
shuffle($arr);
$message = implode("", $arr);
echo $message;
?>
А вообще мне просто делать нечего.

 

raycast ()