The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Valve и Nvidia представили доклад с рассказом о портировании..., opennews (??), 05-Апр-13, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


66. "Valve и Nvidia представили доклад с рассказом о портировании..."  –3 +/
Сообщение от ананим (?), 05-Апр-13, 15:08 
ну дык… переопределить fopen

зыж
к тому же
$ ldd steam

    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/32/libstdc++.so.6 (0x42003000)

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

Ответить | Правка | Наверх | Cообщить модератору

72. "Valve и Nvidia представили доклад с рассказом о портировании..."  +2 +/
Сообщение от anonymous (??), 05-Апр-13, 15:54 
>переопределить fopen

Сразу видна работника завода по производству костылей.

Ответить | Правка | Наверх | Cообщить модератору

88. "Valve и Nvidia представили доклад с рассказом о портировании..."  +/
Сообщение от ананим (?), 05-Апр-13, 16:44 
сразу видно недоученного олуха, прости господи.
вот определение fopen в stdio.h
__BEGIN_NAMESPACE_STD
#ifndef __USE_FILE_OFFSET64
extern FILE *fopen (__const char *__restrict __filename,
extern FILE *freopen (__const char *__restrict __filename,
                      __const char *__restrict __modes,
                      FILE *__restrict __stream) __wur;
#else
# ifdef __REDIRECT
extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
                                 __const char *__restrict __modes), fopen64)
  __wur;
extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
                                   __const char *__restrict __modes,
                                   FILE *__restrict __stream), freopen64)
  __wur;
# else
#  define fopen fopen64
#  define freopen freopen64
# endif
#endif


если у «себя» добавить
#ifndef __USE_FILE_VALVESTEAM
то таким олухам, как ты, будет сухо и спокойно в своём аквариуме.

Ответить | Правка | Наверх | Cообщить модератору

94. "Valve и Nvidia представили доклад с рассказом о портировании..."  +/
Сообщение от Аноним (-), 05-Апр-13, 17:00 
Предлагаю #define true false - так будет интереснее :)
Ответить | Правка | Наверх | Cообщить модератору

145. "Valve и Nvidia представили доклад с рассказом о портировании..."  +/
Сообщение от ананим (?), 06-Апр-13, 07:44 
как бы то там ни было, а данный механизм условной компиляции — очень мощный, штатный и часто используемый механизм языка С, который отчасти и сделал С таким популярным.
Ответить | Правка | Наверх | Cообщить модератору

148. "Valve и Nvidia представили доклад с рассказом о..."  +/
Сообщение от arisu (ok), 06-Апр-13, 07:54 
штатный, но очень кривой костыль, доставшийся нам в наследство вместе с сями. потому что метапрограммирование per se не лезло, а очень, очень хотелось. получился огуречик. как обычно.

p.s. хотя, конечно, самый эпический костыль — это непременное требование tab-ов в makefile.

Ответить | Правка | Наверх | Cообщить модератору

151. "Valve и Nvidia представили доклад с рассказом о..."  +/
Сообщение от Аноним (-), 06-Апр-13, 08:00 
> штатный, но очень кривой костыль, доставшийся нам в наследство вместе с сями.
> потому что метапрограммирование per se не лезло, а очень, очень хотелось.

Да ладно, нормальный механизм. Позволяющий просто решить не самые тривиальные грабли. Например в винде юзать одни функции а в лине другие. Это, конечно, не особо портабельно, но вот кто виноват что в разных осях разные апи для разных вещей? Костыльной проблеме - костыльное решение. Все логично вроде.

Ответить | Правка | Наверх | Cообщить модератору

170. "Valve и Nvidia представили доклад с рассказом о..."  +/
Сообщение от arisu (ok), 06-Апр-13, 10:19 
> Да ладно, нормальный механизм.

…был бы, если бы макросы могли определять другие макросы или переопределять себя. а без этого — унылый и бесполезный. использование же разных функций решается как обычно: враперами и созданием os-dependent реализаций.

Ответить | Правка | Наверх | Cообщить модератору
Часть нити удалена модератором

180. "Valve и Nvidia представили доклад с рассказом о..."  –1 +/
Сообщение от arisu (ok), 06-Апр-13, 11:06 
> как в исходник не глянешь, так везде куча бесполезных.

а другого нет ничего, вот и всё. язык замороченый, внешний массажёр писать — геморрой. а метапрограммирования нет.

> ты пример то приведи, как вот это предлагаешь разруливать:

google://wrappers

> вместо одного наглядного файла предлагается править десяток других. и компилячить их
> по-отдельности (с раздуванием ещё и мэйк-файлов и/или их аналогов)

юноша. нормальная система сборки без проблем сгенерирует нужный makefile по несложным исходным правилам. а вот говнозаголовки, обсыпаные ifdef'ами, как дурак стекляшками — это и есть атомный ужас.

к сожалению, тяжёлое наследие тёмных времён (в виде cpp и make, например) так просто не аннигилируешь. когда-нибудь поймёшь. до тех пор можешь продолжать невозбранно оргазмировать от недомакрокостылей. только очень тебя прошу: не лезь пока во взрослые разговоры. не то, чтобы ты сильно мешал, но детсад в другом месте.

Ответить | Правка | К родителю #206 | Наверх | Cообщить модератору

187. "Valve и Nvidia представили доклад с рассказом о..."  +/
Сообщение от ананим (?), 06-Апр-13, 11:38 
давай конкретней (а то я молодой, не опытный)

чем заменишь (и как. включая сборку):
># else
>#  define fopen fopen64
># endif

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

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

Ответить | Правка | Наверх | Cообщить модератору

246. "Valve и Nvidia представили доклад с рассказом о..."  +/
Сообщение от Аноним (-), 07-Апр-13, 04:45 
> …был бы, если бы макросы могли определять другие макросы или переопределять себя.

ОЙ, да ну нафиг. Макросы - не для упражнений в концептуальном программировании а всего лишь для условной компиляции да определения некоторых сущностей которые могут сделать синтаксис полаконичнее. Они с этим справляются - ну и зашибись.

> решается как обычно: враперами и созданием os-dependent реализаций.

Тем не менее, макросы вполне себе юзают для OS-dependent реализаций платформозависимых функций или их кусков. Вполне нормально катит в общем то.

Ответить | Правка | К родителю #170 | Наверх | Cообщить модератору

254. "Valve и Nvidia представили доклад с рассказом о..."  +1 +/
Сообщение от arisu (ok), 07-Апр-13, 20:10 
>> …был бы, если бы макросы могли определять другие макросы или переопределять себя.
> ОЙ, да ну нафиг. Макросы - не для упражнений в концептуальном программировании
> а всего лишь для условной компиляции да определения некоторых сущностей которые
> могут сделать синтаксис полаконичнее. Они с этим справляются - ну и
> зашибись.

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

а переопределение себя, например, было бы удобно для регистраторов всяких штук. например, консольных команд. то есть, пишешь нечто вроде:


CONSOLE_COMMAND(god) {
  god_mode = !god_mode;
}

а няшный макрос ведёт списочек "жертв". а потом делаешь REGISTER_ALL_COMMANDS, например, и они все скопом регистрируются. а то ломает же руками их перечислять, это как раз место, где автоматика рулит.

ладно, у gcc есть __attribute__((constructor)), при помощи лома и какой-то матери получилось даже удобней, чем вышеописаное. но только вот… а что делать, если захочется собрать компилятором, который не поддерживает атрибуты? или конструктор не поддерживает? всё, приехали. а были бы нормальные макросы — проблема бы вообще не появилась.

Ответить | Правка | Наверх | Cообщить модератору

163. "Valve и Nvidia представили доклад с рассказом о..."  –1 +/
Сообщение от ананим (?), 06-Апр-13, 09:16 
>штатный, но очень кривой костыль, доставшийся нам в наследство вместе с сями.

Это по меньшей мере наивно.
Во-первых — сам по себе комп и есть костыль.
Во-вторых — это не костыль языка, это костыль архитектуры.

Вы что ж полагаете, что какая-нибудь жаба(можно подставить любую панацею неосиляторов) магическим образом заменит вот это ограничение архитектуры:
>#  define fopen fopen64
>#  define freopen freopen64

на тру-пацанский_языко_слэнг? который к тому же ещё и длиннее раз в дцать получится.
не, для трёхэтажных матов это хорошо, а вот читать вместо 5-и строчек несколько файлов с исходными классами для каждой архитектуры… никакой айзен не убедит к этой секте присоединиться.

ну не может 32-битная программа адресовать также как 64-битная.
НЕ МОЖЕТ. шина адреса меньше. шаулинь не тот. «кунг-фу» у 64-битной круче.

Ответить | Правка | К родителю #148 | Наверх | Cообщить модератору
Часть нити удалена модератором

177. "Valve и Nvidia представили доклад с рассказом о..."  –1 +/
Сообщение от ананим (?), 06-Апр-13, 10:52 
зыж
как сделаешь лучше, так приходи, посмотрим, пощупаем,… и выкинем.
а то только из подворотни «айзенить», а операционки как писались на С, так и пишутся.
и будут писаться.
отчасти и потому что есть условная компиляция (и нет запрета на указатели. и вообще — нет запретов).
Ответить | Правка | К родителю #246 | Наверх | Cообщить модератору

179. "Valve и Nvidia представили доклад с рассказом о портировании..."  +2 +/
Сообщение от szh (ok), 06-Апр-13, 11:00 
> данный механизм условной компиляции — очень мощный, штатный

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

Попутно надо накостылять тем, кто создает файл в одном регистре, а потом открывает в другом, за генерацию г*внокода и отсутствие строковой константы.

Ответить | Правка | К родителю #145 | Наверх | Cообщить модератору

183. "Valve и Nvidia представили доклад с рассказом о портировании..."  –1 +/
Сообщение от ананим (?), 06-Апр-13, 11:25 
Какие такие лишние данные?
Аб чём вы, господин?
Условная компиляция на то и условная, что до компилятора не доживает.

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

Дык… это. Идите костыляйте.
Адрес известен — майкрософт.ком
Валве тут потерпевшая сторона, была вынуждена использовать этот г*внокод.

Ответить | Правка | Наверх | Cообщить модератору

190. "Valve и Nvidia представили доклад с рассказом о портировании..."  +1 +/
Сообщение от szh (ok), 06-Апр-13, 12:43 
Есть 2 решения на пути с условной компиляцией, так как вы своё не озвучиваете, придется додумать за вас. Моё другое.

Если вы надумали абсолютно все имена преобразовывать в нижний регистр в функции fopen, то у меня для вас плохие новости, файлы с именами в верхнем регистре может тоже понадобится открывать. И тогда костыли породят костыли.


>>Попутно надо накостылять тем, кто создает файл в одном регистре, а потом открывает в другом, за генерацию г*внокода и отсутствие строковой константы.
> Дык… это. Идите костыляйте. Адрес известен — майкрософт.ком Валве тут потерпевшая сторона, была вынуждена использовать этот г*внокод.

Майкрософт лишь предоставила возможность писать г*внокод, Валве этой возможностью воспользовалось.

Ответить | Правка | Наверх | Cообщить модератору

191. "Valve и Nvidia представили доклад с рассказом о портировании..."  –1 +/
Сообщение от ананим (?), 06-Апр-13, 14:01 
>Есть 2 решения на пути с условной компиляцией, так как вы своё не озвучиваете, придется додумать за вас. Моё другое.

моё мнение озвучено — вон исходник stdio.h с кучей переопределений fopen/fopen64/…
>Если вы надумали абсолютно все имена преобразовывать в нижний регистр в функции fopen, то у меня для вас плохие новости, файлы с именами в верхнем регистре может тоже понадобится открывать. И тогда костыли породят костыли.

С чего вдруг игре, портированной с винды (где, напомню, регистр НЕ важен), ВДРУГ потребуется регистр? Аргумент из носа?
К тому же, это не я планировал «абсолютно все имена преобразовывать в нижний регистр», это предложение из сабжа (см. новость. читать то умеете?).
Моё предложение проще — открывать файл независимо от регистра, переопределив fopen (в steam-sdk) и включая эту функциональность флагом (например #ifdef _STEAM_CASESENS…).

При этом предположение возможности встретить 2-а и более одинаковых файла с разным регистром отметается, т.к. для этого пользователь должен САМ, ВРУЧНУЮ их скопировать (это в стиме то? ха :D) в разных регистрах (и собственно это его дело развлекаться так, как он хочет), при этом в переопределённом fopen учесть эту возможность существования >2-х файлов (открывая первый попавшийся в нижнем/верхнем/по_дате_доступа/как_угодно)
>Майкрософт лишь предоставила возможность писать г*внокод, Валве этой возможностью воспользовалось.

Правда что ли? Т.е. таки есть механизм под виндой, когда можно окрывать файлы с учётом регистра? Может там даже прямой доступ к ФС есть (/dev/sda1)? А может даже и спеки этой ФС есть?
Нет? Т.е. выбора под виндой нет? Или есть и вы можете показать как?

Ответить | Правка | Наверх | Cообщить модератору

198. "Valve и Nvidia представили доклад с рассказом о портировании..."  +/
Сообщение от szh (ok), 06-Апр-13, 16:35 
> моё мнение озвучено — вон исходник stdio.h с кучей переопределений fopen/fopen64/…

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

сказать "использовать условную компиляцию" с fopen не значит выразить своё мнение, ибо использовать условную компиляцию можно с абсолютно разными подходами.

> С чего вдруг игре, портированной с винды (где, напомню, регистр НЕ важен), ВДРУГ потребуется регистр?

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

> Моё предложение проще — открывать файл независимо от регистра, переопределив fopen (в steam-sdk) и включая эту функциональность флагом (например #ifdef _STEAM_CASESENS…).

Каким образом переопределить ? Алгоритмы можно разные придумать на эти слова.
fopen("UserSetting.txt",..) - что будет делать под линуксом по-вашему ?

>> Майкрософт лишь предоставила возможность писать г*внокод, Валве этой возможностью воспользовалось.
> Правда что ли? Т.е. таки есть механизм под виндой, когда можно окрывать файлы с учётом регистра?

Есть возможность не создавать в своей программе файлы в разных регистрах и не писать быдлокод который открывает свои файлы не в том регистре в котором они созданы.

Ответить | Правка | Наверх | Cообщить модератору

204. "Valve и Nvidia представили доклад с рассказом о портировании..."  –2 +/
Сообщение от ананим (?), 06-Апр-13, 18:58 
>это не мнение, а намёки на то что ты там себе думаешь, и если ты не видишь, как твои слова можно интерпретировать по-другому, это не значит что их нельзя интерпретировать по-другому.

не предмет разговора.
изволите юлить.

зыж
>Есть возможность не создавать в своей программе файлы в разных регистрах и не писать быдлокод который открывает свои файлы не в том регистре в котором они созданы.

есть возможность слетать на Луну и Марс.
удачи.
(а тут всё про реальную ма-а-а-аленькую проблемку)

Ответить | Правка | Наверх | Cообщить модератору

208. "Valve и Nvidia представили доклад с рассказом о портировании..."  +3 +/
Сообщение от Аноним (-), 06-Апр-13, 19:16 
Сэр, вас что-то в последнее время на агрессивное ламерство прошибло. Может, побольше RTFM и поменьше снобизма, а? А то вы и других до кучи на такой стиль поведения провоцируете. А оно нам всем тут надо?
Ответить | Правка | К родителю #204 | Наверх | Cообщить модератору

235. "Valve и Nvidia представили доклад с рассказом о портировании..."  –1 +/
Сообщение от ананим (?), 06-Апр-13, 22:27 
Хм. Линусу скажите.
Зыж
Заипали ламерюги.
Зачем пишу? Есть промежуточное время.
Ответить | Правка | К родителю #208 | Наверх | Cообщить модератору

245. "Valve и Nvidia представили доклад с рассказом о портировании..."  +/
Сообщение от Аноним (-), 07-Апр-13, 04:11 
> Хм. Линусу скажите.

Ему не требуется.

> Заипали ламерюги.

Вы кроме всего прочего пару раз к оным даже автора новости причислили.

> Зачем пишу? Есть промежуточное время.

Это не повод слить свою репутацию махровым ламерством, почем зря обозлив участников.

Ответить | Правка | К родителю #235 | Наверх | Cообщить модератору

239. "Valve и Nvidia представили доклад с рассказом о портировании..."  +/
Сообщение от szh (ok), 07-Апр-13, 00:36 
>>Есть возможность не создавать в своей программе файлы в разных регистрах и не писать быдлокод который открывает свои файлы не в том регистре в котором они созданы.
> есть возможность слетать на Луну и Марс.

вместо признания своей неправоты ты решил отвлечься разговором о космосе ?
Юлить не надо.
На вопрос по алгоритму fopen не ответил => слив тебе засчитан.

Ответить | Правка | К родителю #204 | Наверх | Cообщить модератору

211. "Valve и Nvidia представили доклад с рассказом о..."  +/
Сообщение от arisu (ok), 06-Апр-13, 19:20 
> Правда что ли? Т.е. таки есть механизм под виндой, когда можно окрывать
> файлы с учётом регистра? Может там даже прямой доступ к ФС
> есть (/dev/sda1)? А может даже и спеки этой ФС есть?

боевые школьники умиляют. мальчик, ты, наверное, этого не ожидал, но ответ на *все* заданые тобой вопросы — «да».

Ответить | Правка | К родителю #191 | Наверх | Cообщить модератору

230. "(offtopic) общение на opennet"  +1 +/
Сообщение от Michael Shigorinemail (ok), 06-Апр-13, 21:14 
> мальчик

Вы оба уже вроде бы давно не мальчики и могли бы внести соответствующие поправки в манеру общения. :-/

Ответить | Правка | Наверх | Cообщить модератору

232. "(offtopic) общение на opennet"  –1 +/
Сообщение от ананим (?), 06-Апр-13, 22:17 
Как вы наверное заметили (?), я до этого не спускался.
Но готов обсудить по-существу— всё-таки не проблема, вопрос.
Ответить | Правка | К родителю #230 | Наверх | Cообщить модератору

236. "(offtopic) общение на opennet"  +1 +/
Сообщение от arisu (ok), 06-Апр-13, 22:38 
даже если человеку 80 лет, но рассуждает он как мальчик… ну, как иначе обратиться-то?
Ответить | Правка | К родителю #230 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру