LINUX.ORG.RU

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

lisp-окружение для казуала

Форум — Development

Хочу прочитать книжку let over lambda. Насколько понял, для этого нужен коммон лисп.

Погуглил в интернетах, обнаружил какое-то запустение. Скрины LispWorks намякивают на эпоху четырехкилобайтных машин (а пиратскую «полную» версию я так и не нашел ни на одном торренте). Куча каких-то очень странных и/или полуживых проектов про конпеляторы итп. Наверное. я просто не умею гуглить :(

Расскажите, что нужно поставить на комп, чтобы один раз все настроить, и больше не заморачиваться и не отвлекаться на окружение? Какие-то must-have либы, тулзы, системы сборки, сервера, IDE?

(и да, если можно, без емакса)

stevejobs
()

Почему иксы надо закопать

Форум — Talks

Как задолбало смотреть на деградантов, агитирующих сидеть на иксах. Для тех, кто хоть немного разбирается в современных GPU - иксы это дикость. Это такое же legacy как терминалы в ядре.

Так получилось, что пока SGI со товарищи занимались ИБД, и надували щеки - вот прям также, как местные ололо, «разбирающиеся в архитектуре иксов», компания микрософт день и ночь думала о том, как сделать графику быстрее. И поэтому майкрософт(а не красноглазые) придумали шейдеры. Поэтому они придумали стандарт на API для ускорения видео. Микрософт а не «опенсорс сообщество» задает направление развития графики.

В невидии, амд и интеле есть подразделения, которые первыми узнают о том, что выйдет новый директХ или новая винда 9. Эти отделы получают список фич, которые будут в винде и бегут к железочникам, чтоб узнать, что есть в железе уже, что будет сделать сложно, а что - дорого по ваттам. После чего начинается перетягивание одеяла между амд, невидией,интелом и микрософтом, где каждая сторона норовит облегчить себе задачу.

А опенсорс идет по остаточному принципу. И главным образом благодарить за это вы должны сраные иксы.

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

То же самое и для 3д: есть api, есть драйвер, есть минипорт. На выходе получаешь surfacы. Их можно поставить в очередь отрисовки(flip queue) откуда их будет подбирать DWM и собирать в окошки.

И то же самое для 2Д. каким надо быть идиотом, чтоб городить всякие XAA/EXA/UXA/XAXAXA вместо того, чтоб дать приложению самому отправлять команды на gpu. Там есть полная поддержка всей графики-2д 3д и видео. тот же интелоGPU можно проинструктировать программой, и он сам будет отдавать команды на blit-функцию, рисовать градиенты, глифы печатать, и кривые малевать.

Вот ровно то же самое делает wayland. он подбирает surfacы из flip queue и собирает их в картинку.

Никакого геморроя с bumblebee и прочими костылями для убогих иксов: surfacы которые видит интегрированное видео - они в памяти. mmapнул памяти, занес ее в GTT интеграшки - есть окно. открыл драйвер мегаgpu, занес в его GTT ту же область. все работает. gpu рисует и блитит, интеграшка под чутким руководством оконного манагера собирает и показывает.

Я думаю, иксмены понимают, что их аргументы «за иксы» - это полный бред. Они отлично понимают, что wayland проще и меньше жрет ресурсов. Они отлично понимают, что рисовать можно и без иксов, и даже удобнее, т.к. нет самодельных проблем с несколькими видяхами. И даже их сетевая прозрачность проигрывает RDP по всем параметрам: флешки звук и даже скорость.

Эти деграданты просто идут на принцип. Все они понимают, поэтому как полоумные повторяют про «сетевую прозрачность»: видят, что ничего больше в активе нет.

 ,

ckotinko
()

Газы в банке пива - 2

Форум — Talks

Берем бутылку пива, открываем, вставляем в горлышко чайную ложку. Берем еще 5 бутылок пива, открываем, поочередно выпиваем. Когда допили 4ю бутылку, пятая уже полностью выветрилась, но из бутылки с ложкой газы и не думали выходить. Почему?

PS: да, знаю. Ужасный, непростительный оффтопик.

 ,

drull
()

Представлена возможность разгона Intel GPU в Linux

Новости — Hardware and Drivers
Группа Hardware and Drivers

Благодаря новому патчу для ядра Linux, улучшена работа видеодрайвера Intel с разогнанной видеокартой.

С патчем для ядра, сделанным Ben Widawsky из Intel для их DRM-драйвера, была исправлена ошибка в ядре, обнаруженная несколько месяцев назад и приводящая к неработоспособности Intel Turbo в Linux для Sandy Bridge и более новых архитектур (Ivy Bridge, Haswell и т.д.). Данный патч, появившийся в ночных сборках ветки ядра drm-intel, начинает свое движение в сторону включения в стабильную ветку ядра.

Для разгона необходимы:

  • видео Intel HD 2000/3000/2500/4000;
  • материнская плата «для энтузиастов», поддерживающая повышение напряжения и частоты.

Для получения информации о максимально поддерживаемой частоте ядра GPU необходимо передать ядру параметр drm.debug=0xe. После этого необходимо проверить вывод dmesg, в нем должна появиться подобная строка, отображающая максимальную поддерживаемую частоту:

[98650.411179] [drm:gen6_enable_rps], overclocking supported, adjusting frequency max from 1300MHz to 1300MHz

Описание работы патча в блоге Daniel Vetter из Intel

>>> Подробности

 , ,

unfo
()

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

Форум — Development

Навеяно темой Ментальный вирус, пример взят и дополнен оттуда. Интересует реализация подобной операции на других языках. Лично я хотел бы увидеть на Lisp, Java, Smalltalk, Erlang.

array = ["John", "James", "Jakob", "Peter", "Janette", "Tom", "Vasya", "Jean", "Juilia", "Heather"]

puts array.select{|v|v[/^J[a-z]+/]}. # ВЫБРАТЬ ПО someregexp
each_slice(3). # КАЖДЫЙ КУСОК ПО 3 ЭЛЕМЕНТА
map{|v| "#{v[0]} and #{v[1]} follow #{v[2]}"}. # ПОДСТАВИТЬ ЗНАЧЕНИЯ В СТРОКУ
join("\n") # ОБЪЕДИНИТЬ
# John and James follow Jakob
# Janette and Jean follow Juilia

Пошагово для тех, кто не знаком с Ruby:

array.select{|v|v[/^J[a-z]+/]}
# ["John", "James", "Jakob", "Janette", "Jean", "Juilia"]
array.select{|v|v[/^J[a-z]+/]}.
each_slice(3).to_a # в массив
# [["John", "James", "Jakob"], ["Janette", "Jean", "Juilia"]]
array.select{|v|v[/^J[a-z]+/]}.each_slice(3).
map{|v| "#{v[0]} and #{v[1]} follow #{v[2]}"}
# ["John and James follow Jakob", "Janette and Jean follow Juilia"]
array.select{|v|v[/^J[a-z]+/]}.each_slice(3).map{|v| "#{v[0]} and #{v[1]} follow #{v[2]}"}.
join("\n") 
# "John and James follow Jakob\nJanette and Jean follow Juilia"

Использовать только стандартную библиотеку.

Целесообразность операции не важна. Вопрос кратности количества найденных элементов трем не рассматриваем.

 , , , ,

dr_jumba
()