LINUX.ORG.RU

Сообщения deadplace

 

где на вашем форуме кнопка делете?

Где эта кнопка?

 

deadplace ()

Мои поздравления den73

Как-то было время, когда den73 штурмовал рассылку sbcl странными баг-репортами, хотя какие-то действительно имели право на существование. В новом релизе закрыли один из таких багов, найденый Денисом аж в 2016.

https://bugs.launchpad.net/sbcl/ bug/1583753

Мои поздравления!

 

deadplace ()

Что можно делать на ЛОРе?

Зачем-то захожу сюда по инерции, а что тут можно делать не пойму?

 

deadplace ()

Мысли про оскорбления

Шел мимо и набрёл сюда:

Является ли слово нецензурным?

Там кому-то снесли сообщение «за оскорбление». Вот оно:

А прикинь, если жирный ублюдок перевернёт деградирующую индустрию, выпустив ниибический вин? anonymous (23.03.20 09:38:27)

Я бесконечно далек от индустрии игр, но мне ясно как божий день, что «жирный ублюдок» — это Габен. А раз даже мне из этого ясно, что это Габен, то это и не оскорбление, а такая вещь как дисфемизм. Да и вряд ли это могло быть для Габена оскорбительным, так как он русского не знает и на лор не ходит. Не льстите себе. Так что прошу модераторов запомнить это слово и указывать причины удаления корректнее. Спасибо!

P.S. Ни на что не жалуюсь

 

deadplace ()

Лавсан, как ты продвигаешь свои коммон лисп разработки?

Вот сделал ты что-то гениальное, добавил в quicklisp, а как люди об этом узнают? Куда писать, чтобы об этом гениальном узнали другие?

 

deadplace ()

Предложение как поднять посещаемость

Думаю, не для кого не секрет, что формат форума изжил себя ещё до эпохи веб 2.0. Для поднятия посещаемости и притока новой крови предлагаю переоборудовать лор в имиджборду. Чуток ослабить модерирование. Разрешить мат в /b/. Негры, вайп Поттерингом. Представили? Думаю с теми, кто уже тут давно, + новыми пользователями мы порвем двощ.

 

deadplace ()

Коммон лисп. Multiple dispatch как в Julia

Привет. В Julia при определении функции наподобие такой

f(x :: T) where T <: Number = 2x

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

А в common lisp

(defun f (x) (declare (type number x)) (* 2 x))

Компилятор создаст 1 функцию с наименее специфичным кодом, которая будет работать с любым числом

Как можно эмулировать поведение джулии с заранее известным множеством типов?

UPD: название треда вышло дурацким

 

deadplace ()

Немного исправленный квейк 2

У меня вейленд без xwayland, и мне захотелось поиграть в quake2. Для начала нашел единственный работающий порт (games/quake2lnx) — тот вариант, что лежит на сайте icculus.org.

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

Я взял и выпилил все лишнее, а часть работающую на sdl 1.2 перевел на sdl2. В итоге на вейланде игра заработала. Олсо, теперь она компиляется более-менее без варнингов на clang и gcc.

Код q2 — просто ад, куча выходов за пределы массива, куча глобал стейта, размазанного по коду итд. Обнаружил сдедующие проблемы:

1) В софтварном рендерере падение при отрисовке прозрачных поверхностей (не пофиксил, просто выключил).

2) Там же баги при отрисовке, когда камера под водой (пофиксил).

3) Там же иногда баги, связанные, что кординаты спроецированного на экран объекта выходят за пределы экрана (не пофиксил).

4) Падение при выводе звука, если вывод графона притормаживает (пробовал запускать через remmina).

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

https://github.com/shamazmazum/quake2sdl

Устанавливаете, а потом ставите оригинальный pak0.pak в /usr/local/share/quake2/baseq2 (или /usr/share/quake2/baseq2, смотря куда ставили игру) При компиляции с -DRETEX=ON ставите другие паки отсюда http://icculus.org/quake2/files/. При компиляции с -DQMAX=ON ставите maxpak.pak в /usr/local/lib/quake2sdl/baseq2

Для FreeBSD есть порт https://github.com/shamazmazum/freebsd-ports/tree/master/games/quake2sdl (скопируйте в /usr/ports/games)

 

deadplace ()

Про новую фичу

Про статистику в профиле имею мнение.

Иной вот зашел и подумал, зачем она тут? Это же не дейтинг, чтобы знать, как часто человек заходит, чьи страницы смотрит. С одной стороны хорошо, что авторы форум не забывают, а с другой — ну ведь явно лишняя фича, не так ли? И тут вам приходит ассоциация с гитхабом. Ну правильно, прямо как на гитхабе видно кто сколько сообщений «накоммитил». Выходит, лор это у нас не только российский стековерфлоу, но и российский гитхаб. Здорово же? Нет, не здорово. Любому же понятно, что лор ни с одним, ни с другим не имеет ничего общего. Зачем тогда копировать оттуда элементы интерфейса? Разумеется, куда лучше (и проще) было бы запилить возможность постить картинки (тупо по url), но тогда понтов было бы меньше, и никто бы не сказал, что лор — это русский гитхаб

 

deadplace ()

Хочу тоже поделиться своим поделием: аудио компрессор!

На волне метапрога, уверен, эта тема останется почти незамеченной, но! Представляю вашему вниманию лосслесс компрессор аудио, работающий на технологии вейвлет-сжатия, лол. Написан на необычном, так любимом всеми common lisp.

Вот ссылка:

https://github.com/shamazmazum/wavelet-audio

Там ещё можно сгенерировать документацию через codex, но codex, похоже, теперь сломан. Для работы нужна моя версия trivial-bit-streams (просто положите её в local-projects), всё лень послать ловсану патчи.

https://github.com/shamazmazum/trivial-bit-streams

Ещё нужен easy-audio, но эту штуку я вроде добавлял в quicklisp

Можно сжимать и расжимать несжатые wav файлы так:

(wavelet-audio:encode-wavelet-audio "~/file.wav" "~/file.wa")
(wavelet-audio:decode-wavelet-audio "~/file.wa" "~/file.wav")

Самое интересное, на мой взгляд, Принцип работы кодирования:

  1. Делим входные данные на блоки по wavelet-audio:*block-size* семплов (4096 по умолчанию).
  2. Проводим декорреляцию каналов (пока тестил только с 2 каналами), используя вейвлет Хаара.
  3. Для каждого канала проводим полное DWT с биортогональным (4,2) вейвлетом (использую тот, который при нужной нормализации дает целочисленные коэффициенты). ЕМНИП, это CDF-вейвлет.
  4. Каждый получившийся subband кодирую адаптивным кодом Райса, в котором параметр кода выбирается на основе бегущего среднего.
  5. Пишу на диск первое значение параметра кода, и получившиеся коды Райса.

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

Жмёт примерно на 2-4% хуже flac (итого типично сжатие на 25-40%).

Вопрос для тех, кто шарит в вейвлетах

Я использую отражение сигнала от краёв, чтобы преобразовать сэмплы, лежащие на краях блока. Это дает непрерывный сигнал, но с разрывной первой производной. Соответственно, у краевых вейвлетов 1 исчезающий момент. Можно ли как-то сделать 4 исчезающих момента, как и у основных, «внутренних» вейвлетов? Смотрел абсолютно везде, но не нашел ответа. Читал статью про CDV вейвлеты, но это не из той оперы, оказалось

 , , ,

deadplace ()

Про джулию, кстати

Правильно ли я понял, что в джулии есть броадкаст, но нет ничего похожего на концепцию ранга из J.

Чтобы было понятно, что такое ранг, продемонстрирую на следующем примере.

  a =: 3 3 $ i. 9
  a
0 1 2
3 4 5
6 7 8

  (+/"1) a
3 12 21

  (+/"2) a
9 12 15

Когда +/ действует с рангом 1, он применяется к каждой строке матрицы отдельно, т.е. элементы в каждой строке складываются (0+1+2, 3+4+5, 6+7+8). Когда +/ действует с рангом 2, он применяется ко всей матрице, т.е. складываются уже вектора 0 1 2 + 3 4 5 + 6 7 8.

В джулии, как я понял, broadcast применяет функцию тупо ко всем скалярам. Это, я считаю, большая недоработка

 

deadplace ()

А почему вместо юзернейма написано Deleted?

Как это можно было сломать, в компиляторе С

Какое-то новое изменение? Пардон, если дубль

 

deadplace ()

Ну и как вам живется на Ryzen?

Привет. Хочу спросить владельцев ранних райзенов. Вот у меня Ryzen 5 1600X. Сижу под оффтопиком (не том, который от билли, а том, в который поддержка Ryzen была завезена раньше линукса, ну вы поняли).

Так вот, система зависает рандомно (от нагрузки не зависит) примерно раз в день-два. А такая же система под FX 6300 работает как часы. Могу цомпилять или играть — всё будет работать, могу открыть браузер на пустой вкладке — фриз намертво.

У вас так же?

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

 

deadplace ()

Починить колонки

В виде подарка на Новый год только что сломались колонки Microlab solo 7c. Они активные и включаются почему-то только с пульта. Так вот почти перестали реагировать на пульт, когда включаются, рандомно скачут с одного аудио входа на другой. Когда на нужном входе, звук выдают, т.е. усилок работает.

Идея что либо контроллер сдох, который за все эти ручки и кнопки отвечает (что плохо), либо сенсор (что более-менее). От сенсора, судя по всему, на плату идут три провода. Так вот подскажите, как гуглить этот сенсор? Пробовал Remote control sensor, но гугль выдает какую-то левую шнягу. Узнать бы, что там за 3 провода

UPD: То, что пульт работает, проверил в первую очередь

 

deadplace ()

Вопрос знатокам® вейвлетов и сигнал процессинга

Привет. Заранее догадываюсь, что толковых ответов, скорее всего, не будет, но мало ли, я ничего не теряю.

Хочу задать такой вопрос: когда делаете DWT на интервале (на L^2[0,1], например), какие вейвлеты берете по краям интервала? Хотелось бы знать, как можно уменьшить коэффициенты по краям, ЕВПОЧЯ.

Пишут о нескольких способах вейвлет преобразования на L^2[0,1]:

1) Считать сигнал вне интервала равным 0. Это приводит к разрыву по краям и к «лишним» вейвлетам и scaling функциям.

2) Считать сигнал периодическим (опять же разрыв, но без «лишних» вейвлетов).

3) Отражать сигнал от краев интервала. У сигнала не будет разрыва, но будет разрыв в производной.

4) Метод Мейера

5) Метод CDV (Cohen-Daubechies-Vial).

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

Можно ли вообще подобрать краевые вейвлеты с количеством исчезающих моментов не ниже, чем у «основных»? Есть ли пример, где краевые вейвлеты разрабатываются с помощью lifting scheme?

 

deadplace ()

Можно ли сделать в opengl такое?

Привет. У меня есть софтовый рендерер. Могу ли я отгрузить на видюху часть работы таким образом с помощью OpenGL? Не знаю про OpenGL практически ничего, так что перед тем как его учить хочу понять, а есть ли смысл.

Суть в следующем:

1) На CPU для каждого пикселя на экране я считаю массив из точек в пространстве (три флоата).

2) Отгружаю массив на GPU. Там считаю цвет пикселя c = f(a,v), где a — некий параметр, v — точка из массива

3) Раскрашиваю экран значениями c.

Есть в OpenGL для этого средства?

 

deadplace ()

Вейвлеты Добеши

Ещё тема про вейвлеты. Связано с линуксом это так, что я обязательно напишу программу под линукс, которая сжимает любое видео до 1 кб. Опираюсь в теме на книгу Lokenath Debnath Piotr Mikusinski, «Introduction to Hilbert Spaces with Applications 3rd Edition».

В главе про вейвлеты дан пример неких вейвлетов некой Добеши, которые обладают свойством, что 1) имеют компактный носитель, 2) образуют ортонормированный базис, 3) имеют N vanishing moments (не знаю, какой тут термин по-русски, разве что «исчезающие моменты»). Там находят generating function для multiresolution analysis (даже боюсь предположить, какими будут русские термины), удовлетворяющую условию, что у неё в нуле будет ноль N-го порядка, а затем находят scaling function \phi (x) через транслированную \phi (2x) (тот самый трюк для multiresolution analisys'а).

В частности, для N=2 находят

\phi (x) = sqrt(2) * (c_0 \phi(2x) + c_1 \phi(2x-1) + c_2 \phi(2x-2) + c_3 \phi(2x-3))

Ну коэффициенты c_0 ... c_3 писать тут смысла нет.

Вопрос: как же найти \phi (x) из этого соотношения (хотя бы численно)? Никаких подсказок, никаких намёков не найду.

P.S. В примере про вейвлет Хаара как раз мы заранее задаем scaling function в явном виде, составляем такое «самоподобное» выражение и через него находим mother wavelet. А в случае вейвлетов Добеши я не знаю, как к ним подойти

 ,

deadplace ()

Любителям OpenCL и вычислений на GPU просьба помочь

Прошу прощения за простыню ниже, что поделать, раз тут не придумали код прятать под кат или в поля со скроллом. Загвоздка в том, что у меня есть небольшой массив четверок сингл флоатов (~ 10 млн.) Мне надо найти в нём сумму всех четверок, а также bounding box. Я не знаю, стоит ли для этого привлекать GPU. У меня зашибенная платформа: CPU AMD Ryzen 1600x и GPU AMD Radeon HD 6950. Вот я и не могу понять, то ли дело в старой видюхе, то ли юзкейс совсем не тот. Поэтому прошу собрать и запустить код ниже. Программа для GPU должна называеться «test.cl» (ну вы видите, там это захардкодено).

Собирается как-то так:

cc -I/usr/local/include -L/usr/local/lib -lOpenCL -o test test.c

Прошу привести вывод того, что напечатает. У меня вот скорость вычислений одного порядка на CPU и GPU, но время передачи данных велико и убивает весь профит. Ещё почему-то, если 2 раза подсчитать одно и то же, то во второй раз на GPU скорость растет на порядок. Только смысл в этом?

С НГ!

( читать дальше... )

( читать дальше... )

 

deadplace ()

Нужны десять тайных лекций по вейвлетам

У меня анонс: к выходу готовится новая ОС, написанная с нуля на квантовых вейвлетах с применением машинного обучения.^U Поэтому у кого есть книжка «Ten lectures on wavelets», прошу дать ссылку. В интернете есть вариант с плохим качеством сканирования и пропущенными страницами, хочу нормальную. Да, гугль букс предлагает её купить за 6k (лол).

Вот тут человек с бояном dikiy советовал книгу «Introduction to Hilbert spaces with applications». Там вкратце затрагивается тема вейвлетов и неких биортогональных вейвлетов. Хотелось бы о последних более подробно.

Сюда, потому что готовится новая ОС, связанная с линуксом

 

deadplace ()

Параллельный low-pass фильтр для GPU

Пытаюсь освоить OpenCL, и всё больше мне кажется, что это сферическая технология в вакууме. Например, я нашел алгоритмы reduce и scan для ассоциативных функций. Мне же хочется посчитать такой массив (по сути, простейший low-pass фильтр):

b_{0} = a_{0}
b_{n} = \alpha b_{n-1} + (1-\alpha) a_{n}

Найденный мной алгоритм scan делает из массива (a0, a1, a2, a3, ...) массив (i, a0, a0+a1, a0+a1+a2, ...) где + — ассоциативная функция от 2-х аргументов, i+x = x

Только вот функция f(x,y) = a*x + (1-a)*y нифига не ассоциативная. И что, нет совершенно никакого способа посчитать массив b на GPU?

Low-pass фильтр взял совершенно наобум, но потребность считать что-то, что зависит от предыдущего шага вполне естественна. Например, решение дифуров методом Эйлера (Рунге-Кутта, да кого угодно) тоже предполагает такие вычисления

 

deadplace ()

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