Windows vs Linux - Как десктоп
, и игровая станция.
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.10] |
|
|
Правила раздела:
| Страницы: (1182) « Первая ... 1014 1015 [1016] 1017 1018 ... 1181 1182 ( Перейти к последнему сообщению ) |
Windows vs Linux - Как десктоп
, и игровая станция.
|
Сообщ.
#15226
,
|
|
|
|
Цитата Куда-куда вызова? Самба-сервер, только и всего. А кодировка, как я понял, может быть любая - линуксовые ФС воспринимают имена, как кучки байтов, а не как текст. Каменный век, в общем ![]() Вообще-то, ты сделал одну ошибку. У тебя была какая-то кодировка (системная). Довольно просто было бы создать просто codepage=cp866 в конфиге Самбы. Это определяется тем, что окромя виндовз, Самба поддерживает ещё и старый LanManager. Насчёт "каменного века" я конечно не знаю, но то, что мне не составляет труда поменять кодировку под свои нужды, просто радует. Тссс... А то сейчас AQL придёт и всё опошлит... А чем же являются "строки", как не кучками байт? Если подробно рассмотреть тот же класс, порождаемый из CString, то на самом нижнем уровне абстракции это будет структура, включающая в себя некую "кучку байт" и указатели на функции, обрабатывающие эту "кучку байт". Можно конечно, и в "кучках битов", но это несколько сложнее. Можно было поставить системную кодировку cp-1251 и так же определить такую же кодовую страницу для Самбы. Не совсем кошерно, ну да Бог бы с ним. Можно и так. Можно и по-другому -- просто указать желаемую codepage. Системную не трогать. Важно было указать что-то, что Самба восприняла бы как руководство к действию. Цитата Какая разница? Этточно. Определяется это конфигурацией хранения на диске. Цитата А смб протокол в каком виде предусматривает передачу имен файлов? ASIS. Обрабатывается всё по месту. Цитата И чем ты хотел похвалиться? Дебаггер шейдеров и в студии давно есть. Нет. Не то. Поддержка COLLADA... Вот это интереснее. Цитата Фря маст дай! Не показывайте это e-yes'у. Он обычно крайне бурно реагирует на моё FreeBSD -- R.I.P. Вам оно надо -- потом потолок отмывать? Он же в потолок кипятком начнёт... :D:D |
|
Сообщ.
#15227
,
|
|
|
|
Leprecon, тебе сюда за модельками -> http://sketchup.google.com/3dwarehouse Фишка в том, что всё, что там представлено, именно в этом формате. Он же, кстати, и Blender'ом поддерживается, если я не ошибаюсь...
Вот здесь я обеими руками за XML. Ибо не фиг между платформами перетаскивать что-либо в каком-то маловразумительном DXF/DWG а то и IGES... |
|
Сообщ.
#15228
,
|
|
|
|
Цитата the_Shadow @ Вообще-то, ты сделал одну ошибку. У тебя была какая-то кодировка (системная). Довольно просто было бы создать просто codepage=cp866 в конфиге Самбы. Разумеется, я пару раз ошибся при настройке. Но это совершенно не имеет к делу отношения, ибо сама возможность любой софтины создать файл с именем в любой кодировке - нонсенс. Особенно, когда нелатинское имя в однобайтовой кодировке случается при системной utf-8 |
|
Сообщ.
#15229
,
|
|
|
|
Цитата ибо сама возможность любой софтины создать файл с именем в любой кодировке - нонсенс. Особенно, когда нелатинское имя в однобайтовой кодировке случается при системной utf-8 ![]() Не-аааа... Системная кодировка есть системная кодировка. То, как там и чего будет сохранять Самба -- её дело. Если вдуматься, то у M$ есть некоторые полу-запущеные проекты, которые всё-таки надо поддерживать. Тот же LanManager, который, если я не ошибаюсь совместно с IBM разрабатывался. И для OS/2 и для MS windows. Вот только в те времена для русского превалировала cp866. А откуда бедной Самбе знать -- есть у тебя такая пакость стародавняя или нет? Если тебе нужно, то ты можешь создать файл с именем хоть на "клингонском" (в наборе UTF это есть, теперь осталось найти хоть одного носителя языка, ну да ладно). Только будь добр сказать Самбе, что тебе именно это надо постоянно. :D:D http://forum.sources.ru/index.php?act=Atta...post&id=1056526 |
|
Сообщ.
#15230
,
|
|
|
|
Цитата wind @ Но это совершенно не имеет к делу отношения, ибо сама возможность любой софтины создать файл с именем в любой кодировке - нонсенс. А какая наглость записывать на ФС произвольные данные в виде произвольного потока байт! ![]() Просто не смог удержаться. Что дальше? Будем «писать бинарники в кодировке utf-16»? |
|
Сообщ.
#15231
,
|
|
|
|
Кодировки-шмадировки... Почему же ни один плеер из просмотренных мной в лине нормально не распознает русские теги в мп3 кроме как в utf? При этом винда вразумительно реагирует на любые теги. Что там винда - из встречавшихся мне флэш-плееров только один не распознал русские теги в мп3 (при этом из wma они читались нормально). А вот линь капризный такой. Конечно, тут можно гнать на разрабов самих плееров, но тогда объясните, почему в винде ситуация нормальная, несмотря на обилие говнософта (со слов линуксоидов, конечно).
|
|
Сообщ.
#15232
,
|
|
|
|
$im, про кодировки я уже писал, у меня почему-то все как проигрывалось влц (и тэги читались) в винде, так и в убунте все хорошо, однако WMP их читать отказывался на отрез, после переименования их в WMP аналогично поступал WinAmp / VLC. Проблема на лицо.
|
|
Сообщ.
#15233
,
|
|
|
|
Цитата $im @ Ща задам дурацкий вопрос: у тебя винда - плеер? Кодировки-шмадировки... Почему же ни один плеер из просмотренных мной в лине нормально не распознает русские теги в мп3 кроме как в utf? При этом винда вразумительно реагирует на любые теги. |
|
Сообщ.
#15234
,
|
|
|
|
Цитата Green Light @ Знаешь, в винде в свойствах файла есть такая вкладочка, где отображаются свойства медиафайлов, в т.ч. теги. Так вот независимо от кодировки (хотя вот KOI8 еще не пробовал) они отображаются нормально. Да и все виндовые плееры (даже WMP, уж не знаю, зачем он там дюку капризничать начал) распознают теги нормально. А в убунте куда не ткнись (кроме, пожалуй, VLC - не пробовал еще), подавай UTF. Вопрос и вправду дурацкий. Ща задам дурацкий вопрос: у тебя винда - плеер? |
|
Сообщ.
#15235
,
|
|
|
|
Упс! Пропустил. Сорри.
Цитата А что используется вместо XML-схем? Для проверки значений есть какие-нибудь готовые инструментальные средства? Есть аналоги средств для реализации чего-либо, аналогичного XML-data-binding'у, XPath и XQuery? Просто есть опасения, что сообщения об ошибке вроде "файл плохой" вместо точного опеределения - что в нём не так - это нормально. Это нормально? Нет. Всё обрабатывается, по идее, логикой приложения (хотя возможны и другие варианты, например оценка по каким-то критериям входящих значений). Пример #1. Пусть, например, мне нужен uploader из-под Апача понадобился. Если мы о коде на С, например, то там всё довольно просто -- значения проверяются в ходе работы. То есть, если к примеру, я в кофиге указал например путь для чего-то при работе из-под web-сервера. Например, если я изваял какую-то fastcgi-аппликуху (для них конфиги иной раз имеет смысл писать). Пусть это будет выглядеть как-то так: my.conf ![]() ![]() ... my_work_dir = /usr/local/apache2/htdocs/fcgi/tmp ... Теперь, положим, я стартую эту fcgi'шку из Апача как "статический сервер" (FastCGI весьма интересная технология и позволяет делать очень и очень много всякого-разного). А теперь, предположим, есть косяк -- нет такого каталога. Админ оказался полным дятлом и не прочитал файл INSTALL, где сказано -- создайте этот каталог и присвойте ему права апача. В этом случае есть два пути -- либо создать таковой (если это не совсем критично по требованиям безопасности), либо выкинуть сообщение в ЛОГ и завершить работу. Апач не заметит потери бойца. Админ в логах увидит сообщение типа "date, time -- uploader.fcgi, can't find a valid directory: /usr/local/apache2/htdocs/fcgi/tmp" (например, хотя создать произвольную запись в логах не проблема). Причём, админ практически сразу заинтересуется -- почему же этот супер-пупер аплоадер не работает-то??? Сунется в логи, а там всё написано (если программист знает своё дело). Либо, тихо и молча (вариант -- пукнуть в лог) создать потребный каталог и продолжить работу как ни в чём не бывало. Этот вариант имеет так же право на жизнь, т.к. с точки зрения безопасности, fcgi'шка в таком случае работает на уровне тех прав, которые она унаследовала от родительского процесса -- Апача. А он как правило, запускается от совсем "бесправного" по отношению к операционной системе пользователя, входящего в такую же бесправную группу. Как правило, в "букварях" пишут о пользователе nobody из группы nobody, но я просто создаю пользователя и группу apache. Это для того, чтобы если что-то произошло, то это бы не повредило всей системе в целом и можно было бы понять -- какой пользователь и группа повинны в том, что произошло. Пример #2. Всё хуже. Я должен написать некую приблуду, в которой есть граничные условия -- например интервал для каких-то данных. Пусть это будет какая-нибудь телеметрия. Граничные данные -- температура двигателя автомобиля. Она может быть от -30-40 (от -90 может быть, но мне не известна электроника под такие температуры) и до +100 (предположим). Выше +100градусов -- орать что всё плохо (по логике вещей, так и есть). Но пользователь имеет право сконфигурить свои параметры. Пусть он может задать чисто под свои автомобили граничные значения. Выше и ниже -- сообщать пользователю незамедлительно. Однако, ему может показаться, что электроника будет работать в интервале от -150 и до +150, не будет, скажу сразу, но пользователь этого не понимает -- он в прошлом шофёр с 30-летним стажем и User's Manual не воспринимает ни в .PDF, ни в .DOC, ни в каком другом виде... Он может попытаться вбить эти данные в настройках и сохранить их в файл конфигурации. Но программа (защита от дурака) ему укажет на недопустимость этих значений. Тогда он сделает по-другому -- откроет файл конфига, вобъёт данные и сохранит файл. При следующем старте программа, считав данные, в том месте где она проверяет граничные значения, считанные из конфига, тихо выматерится мессейдж боксом и по-правит на то, что является максимальными допустимыми граничными условиями. Казалось бы, чего париться -- вбей как константы и забудь. А вот фигушки -- движки разные, температурные диапазоны разные, потребности у пользователей так же разные (при одном движке 80гр. например, абзац и надо бить тревогу, а другому и 95 вроде как нормально). По этой причине проверяешься просто на границы диапазона, да и всё. Ну, пример с движками по значениям немного некорректен, оговорюсь сразу. Но мне хотелось просто продемонстрировать логику. :D:D |
|
Сообщ.
#15236
,
|
|
|
|
the_Shadow, ну проверка существования каталога это отдельная история, конечно это придется проверять в приложении и писать логи или что-либо. А как насчет "статических" проверок? Когда есть на выбор пять значений, какое-либо шестое использовать нельзя. Когда кокой-либо тег (точнее настройку) можно использовать, только с одним из этих значений? Когда набор определенных настроек должен располагаться в определенном порядке. Написав ХМЛ схему или DTD можно просто наложить ее на ХМЛ файл и узнать корректно он составлен или нет... А ты не замучаешься все это проверять в приложении? Писать кучу кода на С только ради проверки? Хотя я то понимаю, что ты ответишь - не замучаешься
Однако - подумай? А что делать если мне нужэен какой-нить рекурсивный конфиг, как мне использовать для этого пару "имя"="значение"? |
|
Сообщ.
#15237
,
|
|
|
|
$im, ну согласись, что за юникодом будущее. То что сейчас встречаются грабли это да.
Кстати, провел эксперимент поставил русскую убунту, тэги нормально читаются. Что в общем-то ожидаемо. Понимаешь, если у тебя используется 8битная кодировка, то угадать, какая именно весьма проблематично ![]() ЗЫ и не надо говорить, что в винде усё хорошо, попробуй засандалить имя песни на немецком (с умляутом), вместо умляута получишь большую русскую букву. Чудес не бывает. |
|
Сообщ.
#15238
,
|
|
|
|
my.conf
![]() ![]() ... # Есть пять тэгов. Пусть они будут некоторыми целочисленными значениями. Не вопрос, если они будут символьными строками. Целые в данном # примере использованы от 1 до 5 с целью иллюстрации того, что 6 или более использовать нельзя. # Порядок следования тэгов определён и не должен изменяться. tag1 = 5 tag2 = 3 tag3 = 2 tag4 = 1 tag5 = 4 ... В коде я читаю этот конфиг, считываю значения параметров tag1-5 и обрабатываю что-то в своих безумных алгоритмах. :D:DТы можешь заметить, что пользователь может прописать некорректные значения. Может. Кто ему мешает. Но при такой постановке задачи, если честно, то я даже проверять не буду ничего. Объясню почему -- если порядок и правила описания предопределены, то они взяты не с потолка, а из Т.З. Следовательно, заказчик знает о том, что он должен сделать для эксплуатации программы. Он Т.З., вообще говоря, подписывал. Если он не в состоянии сконфигурировать заказанную систему, прочитав "букварь", то... За отдельные деньги я проведу ему "мастер-класс". Не вопрос. "Скупой платит дважды, глупой -- трижды, а лох платит по жизни"... :D:D Lepr, это не корректная постановка вопроса. Если мы делаем полностью предопределённый конфиг, то тут и думать нечего. Если мы делаем конфиг более "свободный", то алогоритм примерно таков (для описываемого тобой случая): пока_не_закончили_чтение_конфига { считать параметр; сравнить с именами параметров; - если "tag1", считать значение, проверить_на_корректность(), если "да", то присвоить переменной val1; break; - если "tag2", считать значение, проверить_на_корректность(), если "да", то присвоить переменной val2; break; - если "tag3", считать значение, проверить_на_корректность(), если "да", то присвоить переменной val3; break; - если "tag4", считать значение, проверить_на_корректность(), если "да", то присвоить переменной val4; break; - если "tag5", считать значение, проверить_на_корректность(), если "да", то присвоить переменной val5; break; } Ты можешь заметить что по идее я просто добавил одну функцию. Не более. Ту, что проверяет значения. Если ты скажешь что пользователь может ввести в конфиг произвольное число тэгов, то Бога ради. В этом случае в функции "проверить_на_корректность()" я просто добавлю пять булевых переменных и буду переводить их в true при успешной проверке каждого из значений. А перед проверкой смотреть -- true или false. Если true, то мы значит уже считали значение и это означает ошибку в конфиге. Просто "би-бикаем" (пишем в лог чего-нибудь или выкидываем сообщение об ошибке конфига) и exit( -1 ). Без долгих рассуждений. Причина проста -- "задача построения абсолютно дуракозащищённых систем не учитывает гениальнейшей изобретательности круглых идиотов". Не помню кто сказал. Пусть "буквари" читают. Здесь вся проблема сводится либо к коду который написал ты (сам проверяешь, в своей программе). Либо к коду, который написал кто-то. То есть, по идее, проверяют за тебя. Но вот смотри -- linuxfan приводил конфиг на XML от TV-tuner'а. Как ты думаешь -- средства проверки корректности XML знают что-либо о сетке частот, подстройке тюнера? Думаю, нет... И для корректной верификации этого конфига, тебе надобно будет... Правильно. Подстроить средства верификации под конкретную задачу. Чем это отличается от моего подхода? Тем, что пишешь не С-код? Ну, это не больно. вообще-то... :D:D Добавлено "Рекурсивный конфиг"? Хэх! :D:DВот посмотри -- тот же Апач. Живёт без рекурсии. И по функционалу в версии 2.2.х, конфиги раздельные -- что к виртуальным хостам или к SSL , то вынесено в свои отдельные файлы. Ибо не фиг. Знаешь, я давно пришёл к выводу, что когда я сталкиваюсь с крайне сложным решением какой-то задачи, то я просто ищу решение, упрощающее эту самую задачу. На мой взгляд, не следует решать ошибки проектирования за счёт интсрументальных средств. Нужно пересматривать алгоритм. "Усложнять просто. Упрощать сложно". Кстати, на С для этого все возможности есть -- он ведь очень прост и безискусен... :D:D |
|
Сообщ.
#15239
,
|
|
|
|
Цитата the_Shadow @ Не-аааа... Системная кодировка есть системная кодировка. То, как там и чего будет сохранять Самба -- её дело. Цитата linuxfan @ А какая наглость записывать на ФС произвольные данные в виде произвольного потока байт! Ой, не смешите меня Поиск как осуществлять в такой помойке? Или давайте уже избавимся от ФС - зачем? Пусть каждая софтина имеет прямой доступ к диску и пишет всё, что программахеру заблагорассудилось |
|
Сообщ.
#15240
,
|
|
|
|
Эээ, ребята с конфигами, а вы это вообще к чему? При чем тут винда и линь?
|