LINUX.ORG.RU

Сообщения quiet_readonly

 

Палю годноту или OpenGL готов для десктопа

Тем, кто использует OpenGL, clang 3.2 и функции glVertexPointer/glNormalPointer, предлагаю заценить фишку. Вставьте это где-нибудь после включения <GL/gl.h> или <GL/glew.h> в том файле, где используется glVertexPointer или glNormalPointer

#if defined(__has_attribute)
extern void GLAPIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer)
        __attribute__((pointer_with_type_tag(opengl, 3, 1)));
extern void GLAPIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
__attribute__((pointer_with_type_tag(opengl, 4, 2)));

GLenum opengl_predefined_t_double
__attribute__(( type_tag_for_datatype(opengl,const double) )) = GL_DOUBLE;
GLenum opengl_predefined_t_float
__attribute__(( type_tag_for_datatype(opengl,const float) )) = GL_FLOAT;
GLenum opengl_predefined_t_unsigned_byte
__attribute__(( type_tag_for_datatype(opengl,const unsigned char) )) = GL_UNSIGNED_BYTE;
GLenum opengl_predefined_t_unsigned_int
__attribute__(( type_tag_for_datatype(opengl,const unsigned int) )) = GL_UNSIGNED_INT;

#undef GL_DOUBLE
#undef GL_FLOAT
#undef GL_UNSIGNED_BYTE
#undef GL_UNSIGNED_INT
#define GL_DOUBLE opengl_predefined_t_double
#define GL_FLOAT opengl_predefined_t_float
#define GL_UNSIGNED_BYTE opengl_predefined_t_unsigned_byte
#define GL_UNSIGNED_INT opengl_predefined_t_unsigned_int

#endif

А потом попробуйте заменить работающий...

glNormalPointer(GL_DOUBLE, 0, m_normales.front());
...на заведомо бажный...
glNormalPointer(GL_FLOAT, 0, m_normales.front());
...и скомпилировать. В данном случае m_normales — массив векторов, а вектор имеет оператор приведения к типу к const double *.

 ,

quiet_readonly
()

Линус Торвальдс выбирает Chrome OS

!Ъ && click(). Для Ъ ниже изложен вольный перевод.

Игрушки-игрушечки...

Вот, теперь я среди тех продвинутых школьников, что имеют новые гугловские ноутбуки «Pixel» (также известные как хромобуки). У них чертовски красивый экран, вплоть до того, что я, наверное, сделаю его своим основным ноутбуком. Я предпочитаю ноутбуки маленького размера, но, пожалуй, готов таскаться с этим полуторакилограммовым монстром, несмотря на абсолютную уверенность в том, что ноутбук должен весить 1 кг или меньше.

Дело в том, что экран воистину прекрасен.

И я доволен не только огромным числом пикселей, но и форм-фактором. Я презираю широкоэкранные дисплеи, но мне приходилось уступать в этом вопросе. До сих пор. 3:2, детка!

Я не понимаю, почему люди недовольны «чёрными полосками по краям», в то время как широкоформатные экраны дают нам почти то же самое — «полное отсутствие экрана».

Я всё ещё использую ChromeOS на этом устройстве, и она оказалось достаточно хороша, когда я примеривался к выполнению моих привычных рабочих обязанностей (т.е. к чтению и написанию писем). Но в скором времени я рассчитываю поставить настоящий дистрибутив. Чтобы ноутбук оказался мне полезен, мне нужна возможность не только читать и писать письма, но и компилировать, клонировать git-репозитории и т.д.

Лирическое отступление: у меня также есть Nexus 10, тоже с целой кучей пикселей, но по моим ощущениям его пиксели используются с меньшей пользой. Разумеется, там я могу запустить браузер и уменьшить размер шрифта, но без клавиатуры мне не удастся написать ничего серьёзного, и без возможности установки полноценного дистрибутива Linux я ни в коем случае не смог бы заменить планшетом свой ноутбук, так что даже подключение блютуз-клавиатуры вряд ли что-то изменит.

Chromebook Pixel расставил все точки над обычными ноутбуками, демонстрируя, в какую гадость они превратились. О чём там думают производители PC? Неудивительно, что продажи PC идут не слишком хорошо, если они стабильно штампуют всё более мерзкие машины и думают, что «full HD» (то есть 1080p) — это просто предел мечтаний.

quiet_readonly
()

ROSA наносит ответный удар

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

Один предложит взять готовую лампочку у соседа. Не важно, что она по форме и яркости не
подходит. У него горит, значит и у всех должна.
Другой придумает лампочку своей собственной конструкции, которую объявит самой
правильной (с архитектурной точки зрения). Кто думает иначе, не понимает ничего в
лампочкостроении. Когда выяснится, что она не подойдет под стандартный цоколь, объявит
все происками мирового масонского правительства, которое хочет уничтожить российские
заводы по производству лампочек.
Третий будет долго и нудно доделывать переходник между цоколями к предыдущей
лампочке. Просто из интереса. И через пару-тройку лет сделает. А потом скажет, что ему это
не интересно и если кому надо дальше - пусть себе сами переходники точат, а у него все
работает и так. Делов-то - освоить токарный станок! Есть же документация. Неважно, что
она устарела на год, там нужно поменять пункты 4 и 8 местами, а 9-15 читать в обратном
порядке. Остальное надо додумать, посмотреть на сам переходник и все будет понятно. А кто
не поймет, сам виноват. Нечего вообще в лампочки лезть, если не можешь разобраться в
документации.
Четвертый присоединится к предыдущему и скажет: "Нефиг тут потребительством
заниматься. Каждый (я повторяю, каждый) обязан сделать свою собственную лампочку. А кто
не может, виноват сам».
Пятый скажет, что лампочки сейчас уже не те. Раньше пользовались свечами и сейчас тоже
где-то пользуются и все прекрасно. Вот у него везде свечи и еще ни одного пожара не было.
Шестой скажет, что лампочки не нужны. Он брал несколько лампочек на развале и у него они
все перегорели. У его знакомого электрика тоже. Да и просто не нужны и все, объяснять тебе
еще...
Седьмой скажет, что лампочки устарели и нужно для этих целей использовать мощные
осветительные прожекторы. Не важно, что он стоит в 100 раз больше, зато и светит намного
ярче. А что ваша сеть не выдержит, так это надо проводке апгрейд сделать. И что для его
переноски нужно несколько человек - так это фигня, ведь не может же вещь, которая столько
стоит, быть плохой, правда?
Десяток человек на предложение вкрутить-таки лампочку скажут, что "сперва добейся" не
аргумент. И вообще, почему они должны делать это за бесплатно?
Один купит лампочку на свои деньги и вкрутит ее с помощью лестницы, которую принесет
другой.
В ответ на это:
Еще десяток человек скажет, что это по-прежнему "не нужно". У них у себя дома и так лампочки горят.
Еще с десяток скажет, что нефиг было вкручивать свою лампочку, надо было купить
импортную и не париться.
Один скажет, что лампочка вкручена неправильно, а те, кто это сделал - не специалисты. Нет
специалистов по вкручиванию лампочек в России, кроме как у ООО "Челябинский завод
альтернативных лампочек и партнеры". Их лампочки априори самые надежные и безопасные,
об этом писали еще лет 10 назад. А что выглядят неважно, светят тускло и при закручивании
порезаться можно, это неважно. Инструкцию надо читать и закручивать в перчатках. А
прикручиватели "гламурных" лампочек не нужны.
Оставшиеся будут cидеть и обсуждать, откуда у тех двоих деньги.
Что по этому поводу напишет 80% посетителей форума лампочки.огр.ру не сможет разобрать
никто...

quiet_readonly
()

Джон кармак о плюсах

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

Я до сих пор считаю код Quake 3 более чистым - в известном смысле. Это венец эволюции моего стиля на C, и одновременно первая итерация моего стиля на C++. Но такое отношение может быть вызвано меньшим количеством строк или тем фактом, что я не особо-то и не заглядывал туда уже десять лет. Я думаю, что «хороший C++» лучше, чем «хороший C» с точки зрения читаемости, а всё остальное эквивалентно.

Я, конечно, поизвращался над C++ в Doom 3 - ведь я был опытным C-шным программистом с некоторым знанием ООП, пришедшим из Objective-C времён NeXT, так что я просто начал писать на C++ без нормального изучения юзкейзов и идиом. Вспоминая прошлое, я очень жалею, что не прочитал Effective C++ и некоторые другие книги. Часть остальной команды в прошлом имела опыт работы с C++, но они в целом следовали моим стилистическим решениям.

В течение многих лет я не доверял обобщённому программированию, и все ещё применяю шаблоны с опаской, но в итоге я решил, что удовольствие от статической типизации перевешивает нежелание иметь раздутый код в заголовках. В Id Software всё ещё идут споры об использовании STL, и со временем они становятся жарче. Если же вернуться снова к временам, когда началась разработка Doom 3, призыв использовать STL тогда стал бы неудачной затеей, но сегодня в пользу этого решения уже есть серьёзные аргументы, в том числе в геймдеве.

Также я теперь стал const-нацистом, и даю по рукам программисту, который не ставит const подходящим для этого переменным и параметрам.

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

 ,

quiet_readonly
()

Любителям простыней

А накидайте-ка мне небольших примеров кода (C/C++), выдающего простыни ошибок компиляции. Вот для начала пример, показанный кем-то в ветке development и на любом компиляторе дающий >100 не относящихся к делу строк. Или вот рекурсивное инстанцирование шаблона, нормально определяемое в gcc и выдающее лишние note: в clang.

template <int N> struct X {
    static const int value = X<N-1>::value;
};
template struct X<1000>;

Буду премного благодарен за годные примеры. Буст и буст спирит крайне приветствуются.

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

 , ,

quiet_readonly
()

Where is your god now?

template <int number>
class T1
{
};

template <class T1>
class T2
{
};

T2<T1<8>>1>> t;

Как должен повести себя компилятор?

 

quiet_readonly
()

Какие флаги могут изменить предопределённые макросы?

Какие флаги в gcc или clang могут изменить набор предопределённых макросов? Я имею ввиду тот набор, что вывоидтся с помощью «gcc -xc++ -E -dM -».

Лично я знаю -ansi, -std=*, -fopenmp, -O*, и вижу уже добавленные в код -m*, -specs=*, -D*.

 , ,

quiet_readonly
()

История повторяется

Для брошенной на собственный произвол массы, будь то чернь или знать, жажда жизни неизменно оборачивается разрушением самих основ жизни. Бесподобным гротеском этой тяги - propter vitam, vitae perdere causas[5] - мне кажется происшедшее в Нихаре, городке близ Альмерии, 13 сентября 1759 года, когда был провозглашен королем Карлос III. Торжество началось на площади. «Затем ведено было угостить все собрание, каковое истребило 77 бочонков вина и четыре бурдюка водки и воодушевилось настолько, что со многими здравицами двинулось к муниципальному складу и там повыбрасывало из окон весь хлебный запас и 900 реалов общинных денег. Потом перешли к табачной торговле и принудили выкинуть месячную выручку и табак тоже. В лавках учинили то же самое, изничтожив во славу празднества все, что было там съестного и питейного. Духовенство не уступало рвением и громко призывало женщин выбрасывать на улицу все что ни есть, и те трудились без малейшего сожаления, пока в домах не осталось ни хлеба ни зерна, ни муки ни крупы, ни мисок ни кастрюль, ни ступок ни пестов и весь сказанный город не опустел». (Документ из собрания доктора Санчеса де Тока, приведенный в книге Мануэля Данвила «Правление Карлоса III», т. 2, с. 10, примеч. 2.) Названный город в угоду монархическому ажиотажу истребил себя. Блажен Нихар, ибо за ним будущее!

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

Поцоны-митингующие по-прежнему упорствуют и «не надеются на помощь властей в уборке мусора».

 ,

quiet_readonly
()

Debian крашит мою программу

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

def )foo()
  pass
Исправил, подумал - наконец-то всё... и напоследок решил распарсить что-нибудь абсолютно ошибочное, типа вот этой статьи на википедии в версии на печати. И boost::test, конечно же, указал на сегфолт.

Погоняв тест внимательнее, обнаружил, что крах возникает на слове

Debian
рядом со ссылкой источник [7]. Причём если его убрать (оставив всё остальное) или просто поставить перед ним
!432цеп
То всё работает.

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

 , , гейзенбаг

quiet_readonly
()

[pulse]Микрофон слышен, но не записывается

Имеется opensuse 12.1, пульс, наушники с микрофоном (Sven). Наушники работают хорошо, громко, но звук не ловит ни skype, ни audacity, ни arecord. Причём в наушниках эхо микрофона слышно (если поднять ползунки mic или f-mic). Audacity же показывает ровную полосу в звукозаписи - очень слабый и ровный фоновый шум, без каких-то следов реальных звуков. Есть и скриншот alsamixer: http://savepic.su/1164627.png Что не так, что вообще можно попробовать поправить? Пробовал сносить пульсу - никакой пользы, поставил обратно.

quiet_readonly
()

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