На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто kanes 17-02-2009: Введите причину закрытия темы здесь

Страницы: (1182) « Первая ... 1025 1026 [1027] 1028 1029 ...  1181 1182  ( Перейти к последнему сообщению )  
> Windows vs Linux - Как десктоп , и игровая станция.
    Цитата wind @
    Ну да. Ведь если не задарма, то зачем?

    :D ЛОЛ! Ну знаешь, задарма нужно напрягать извилины, ну а уж если заплатил -- то и получи соотвественно. Секрет в том, что коммерческий дистр включает в себя то, что в бесплатном не дождешься. В том числе и дрова от nvidia, ati и тп. Патамучта копирайт
      Цитата
      Ну и тем более очевидно, что нет никакой "общесистемной" кодировки.

      Всё, что выше -- опустил. Ибо извини, но фигня...

      Давай разбираться. Только читай постинг внимательно. Сразу предупреждаю -- он длинный. Как Астарот это называет, пошёл "гитарный запил". Видимо, без него не обойтись...

      Итак, то же за механизм в Линуксе для файловых систем. Во-первых, любая ФС в линукс устроена сходным образом. Есть физические сектора диска ("кластеры") размером в 512 байт. Всегда. Есть "логические кластера" в линуксе -- размер от 1024 до 4096 байт. Определяется тем, как ты создал свою ФС именно на этапе её создания(!!!). Кстати, здесь есть "оптимизационный ресурс". Например, если у тебя винчестер используется для хранения данных для раздачи video-on-demand, то тебе просто на фиг не нужны мелкие "кластера". Нафига тебе мелкий "кластер", если у тебя файл .AVI a priori занимает не один и не два таких "кластера"? И системе придётся читать мелкие порции данных при отдаче контента клиенту? Правильно. На фиг не нужен. Другой расклад -- а зачем тебе 4096 байта, если у тебя в системе полно мелких файлов? Напомню, что если занят хотя бы один байт из такого кластера, то весь кластер (остаётся 4095 байт) маркируется как занятый. Так что здесь смотреть нужно -- какой диск у тебя для чего (в случае "сервера", ясное дело, с "клиентом" всё проще -- там оптимизация не столь критична, хотя и желательна).

      Ладно. Продолжим. Итак, у тебя есть набор структур в ядре. Давай разберём что и для чего.
      - inode -- это "файловый индекс", структура, определяющая "метаданные" файла -- время создания, владелец, время последнего доступа, вся фигня короче. См. struct inode_operations. Операции типа unlink(), create(), всё определено здесь. Точнее, не сами операции, а адреса вызовов ядра для этих операций. Сами по себе данные о каждом inode "лежат" в struct inode... Точнее описываются при помощи этой структуры, ну да не столь суть. Мы сейчас не об истинном понимании "структур".
      - superblock -- это данные о смонтированной ФС. Т.е., что за ФС, точка монтирования, короче, это "метаданные файловой системы". struct super_operations, sync_rf(), read_inode()...
      - file -- это вполне конкретный файл, открытый процессом. struct file_operations. Банальные read(), write(),...
      - dentry -- структура, определяющая тот или иной объект каталога данных. На самом деле, это выглядит как компонент пути к файлу. То есть, для случая /home/owner/projects/open_MTS_trader/src/get_current_stock.c будет содержать 5 dentry (см. на вложенность от корня) и один файл. struct dentry_operations, d_delete(), d_compare, ...

      Как ты думаешь -- а нафига я тебе всё это рассказываю? А всё просто -- до балды какая там ФС (хоть NTFS!) -- самое важное, что ядро видит через соотв. модули ядра эту ФС совершенно аналогичным образом. То есть -- не важно что за ФС -- если я делаю вызовы из системной библиотеки open(), write(), read(), ... то эти вызовы дёргают за яйца соотв. вызовы в ядре. А те уже что-то делают дальше и возвращают результат. Кстати, здесь есть простор для довольно сложной локальной атаки типа race conditions именно на тот момент, когда программа отдала обработку в ядро, она как бы находится в "ядерном" режиме с уровнем привилегий "система" или "root" = 0. Но во-первых, это довольно сложная атака сама по себе, во-вторых, уже давным давно есть методы противодействия аким атакам. Самый первый из таких методов -- программирование чистыми и прямыми руками...

      Ну, ладно. Всё это я тебе рассказал чтобы ввести одно простое понятие -- VFS. Виртуальная файловая система. Не все из перечисленных сущностей могут быть представлены в реальной файловой системе. В этом случае модуль ядра для соотв. ФС просто создаёт такие сущности для того, чтобы оно просто было. Таким образом, до звизды (утренной) дверца -- как там оно работает для конечной программы, если я, как программист, вызываю open(). Система мне гарантирует что эта функция сделает своё грязное дело для любой подключенной файловой системы (даже для ntfs или Fat-16, JFFS/JFFFS2, CRAMFS, SYSFS, и прочих стольже или не столь же "редкоземельных" ФС). Операция cp file_откуда file_куда, работает чётко (например).

      По сути дела, все ФС, если брать юникс-специфик, разделяются тем, что и как делается. Например -- есть ли в данной ФС операции журналирования и насколько много они жрут ресурсов процессора (извини, при журналированиии всегда будут накладные расходы на эти операции), как устроено пространство (кэш) объектов ФС, и т.д. и т.п. Например, казалось бы парадокс -- по моим тестам reiserfs & xfs работают... быстрее чем ext2! Хотя в последней нет журналирования, но вот кэш объектов там по-мене будет. За счёт этого и скорость по-ниже.

      Если ты посмотришь внимательно на эти структуры, то ты ни где не найдёшь "кодовой страницы". Почему? А всё просто -- для системы есть файл. У файла есть имя. Это ты или я понимаем что имя файла "Прочти меня на хрен мать твою первым.pdf". А для системы это просто строка байтов. И она ни чем не лучше и не хуже того же @#$%#$!$!$12#$%@#%@#$%#$.DOC". Ей (системе) наср@ать с самой высокой в мире колокольни на то, как ты видишь это имя. система занята операциями по его поддержанию как файла и слава Богу. А вот читабельностью имени должен озаботиться ... кто? Правильно -- ты. Ты угадал... :D:D:D

      Делается это в несколько шагов. Во-первых, открой конфиг ядра. Найди поддерживаемые NLS и выстави то, что тебе нужно. Я, например, не использую китайский, корейский, украинский -- для меня это, извините, но одно и то же, как для пользователя, не владеющего этими языками. У меня выставлены KOI8-R, UTF, cp1251, cp866, iso-какая-то_не_помню, латиница, ... то есть то, с чем я работаю. Это даст возможность системе подставлять один из этих наборов при необходимости. Точнее, когда она получит команду от меня. Не фиг фантазмами заниматься. Тупая она.

      Во-вторых, в переменных LANG и LC_ALL я выставляю корректную локаль системы и благодаря этому, я получаю видимые русские имена в моей линуксовой ФС. Рутовой.

      В третьих. Для сменных носителей и NTFS я должен подключить их модули (чтоб они читались) и включить кодовую страницу в /etc/fstab. То есть, я определяю кодовую страницу в момент монтирования данной ФС. Если меня удовлетворяет это значение для автомаунтера, то нехай оно живе. Если нет, то я могу сделать umount и mount -t какая ФС откуда и куда и кодовую страницу для данного случая. Иной раз бывают compact flash с ФС, отличной от FAT/VFAT. С той же JFFS2, например, в таком случае их проще перемонтировать так, как надо и воспользоваться стандартными файловыми опреациями. А не сидеть и репу чесать -- это какой же программулиной я могу их прочесть, нажав на два десятка кноподжег?

      В четвёртых. Самба. Здесь тебе для начала в ядре надобно включить поддержку данной ФС (CIFS), чтобы система знала, что к ней могут прийти эти данные и подготовилась бы к их обработке заранее, создав все потребные структуры VFS. Как видишь, система просто и не желает чего-то там "понимать" или строить предположения. Для этого, в конфиге самбы ей прописываются чёткие указания -- как именно обрабатывать имена файлов. Если ты ошибся, то ты получишь набор крокозябр. Системе, видишь ли, повторяюсь, сугубо пох -- можешь ты этот файл прочесть или нет. Она его получила от виндовз-машины и сохранила. Дальше проблемы твои. Кроме того, сделай милость -- скачай samba-latest.tar.gz В разделе docs есть забавный pdf'ничек. Называется Samba3-Developers-Guide by Jelmer R. Vernooij от June 19, 2007. глянь на ноды и структуры (раздел 2, если не ошибаюсь). Мысли, глядя на этот раздел, приходят одни -- в случае получения "крокозябр", получается что система пытается использовать коррекнтые значения, но вот Самба не может корректно их привести к твоим реалиям. И взлетела бы бабочка, да яйца к земле тянут... (в СССР этак описывалась эмблема автомобильных войск).

      Ну, сосбственно говоря, всё... Для размышлений, полагаю, достаточно.

      Добавлено
      Цитата
      Была б у него платная мандрива, так жалился бы на что-нить еще, а на крайняк заключил бы "тот же виндовз и не больше". Для такого аффтара попытка освоить линух обречена на провал - оно ему просто не надо.

      Я таких встречал и с платной поддержкой RHEL. $2500, по-моему... Отчего бы нет? Если ему это действительно не нужно, то... В любом случае человек скжет что система плохая. То же самое, например, я могу сказать и о виндовз. Кроме как под woW, оно мне не надо. Система плохая как в ней люди умудряются работать -- мне не понятно. Например, у меня есть Sharp Zaurus SL-C3200. Пол-Инета облазил, не смог найти дрова, аналогичные Линуксовому usbnet. И нормальный вариант usbserial. В линукс они есть "искаропки". Или есть у меня palmOne TREO 650. Почему-то нет в виндовз дефолтной поддержки. В линукс -- есть. Система плохая. Виндовз. Утверждения более чем справедливые. Я их написал точно так же, как и Автор выше приведёного опуса. Это не придумки, это реалии.
        Цитата the_Shadow @
        <...> Если ты посмотришь внимательно на эти структуры, то ты ни где не найдёшь "кодовой страницы". Почему? А всё просто -- для системы есть файл. У файла есть имя. Это ты или я понимаем что имя файла "Прочти меня на хрен мать твою первым.pdf". А для системы это просто строка байтов. И она ни чем не лучше и не хуже того же @#$%#$!$!$12#$%@#%@#$%#$.DOC".<...>

        Всё зря, весь "запил" пропал даром.

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

        Мне до сих пор интересно, какими-такими способностями должен обладать пользователь такой "системы", чтобы просто найти файл. Ведь он должен заодно угадать кодировку имени :lool: Что делать несчастному при простой попытке перенести свои данные - это и вовсе представить невозможно - придётся тащить с собой конфигурацию и на целевой системе (куда винчестер притащил) сотворять нечто совместимое, запускать перекодировщики... :wacko:

        Иными словами, линух ДО СИХ ПОР не предназначен для неаглицких пользователей. В конкретных сборках есть лишь некоторый набор костылей и затычек, позволяющий данную сборку локализовать.

        В общем и целом именно набор костылей и затычек, вкупе с установленным ПО (!) и является системой. Именно это обстоятельство делает работу под root'ом весьма рискованной, именно это вынуждает организовывать доверенные репозитарии. Короче, не стыдитесь дражайшие господа линуксоиды, не называйте эту помойку "операционной системой" :lol:
          Цитата wind @
          Иными словами, линух ДО СИХ ПОР не предназначен для неаглицких пользователей

          Да ты что! :o
          Попробуй на винду русифицированную прикрутить например НЕМЕЦКИЙ MUI. Желаю успеха.
          Вывод: Windows не предназначен для мультиязычной работы.
            Цитата FullArcticFox @
            Попробуй на винду русифицированную прикрутить например НЕМЕЦКИЙ MUI.
            А флешечку фатовую с немецкими именами файлов подцепить? Или в винде такой костыль уже сделали? :)
              Цитата FullArcticFox @
              Попробуй на винду русифицированную прикрутить например НЕМЕЦКИЙ MUI. Желаю успеха.
              Вывод: Windows не предназначен для мультиязычной работы.

              И еще сделать так: чтоб под одним пользователем был русский UI, а под другим - немецкий.
                Цитата FullArcticFox @
                Попробуй на винду русифицированную прикрутить например НЕМЕЦКИЙ MUI. Желаю успеха.
                На кой черт это надо, если есть немецкая винда? Ох уж эти линуксоиды со своим юниксвеем...

                Цитата Debug @
                А флешечку фатовую с немецкими именами файлов подцепить? Или в винде такой костыль уже сделали?
                Знаешь, что самое смешное? Что в русской винде хотябы русский язык работает нормально. А в русской убунте даже он портачит. Вставил давеча CD с документами и вуаля - все имена из русских букав превратились в ???????? ???? ??.doc. Красиво? А как же!

                Цитата FullArcticFox @
                И еще сделать так: чтоб под одним пользователем был русский UI, а под другим - немецкий.
                Кто-то там заикался про синтетические проблемы?

                И всетаки, господа линуксоиды, по поводу статьи. Я ожидал подобной реакции. Вы на все истории по поводу непригодности линя юзерам отвечаете одно - "аффтар не хотел напрягать моск, аффтар полез куда не надо" итд. И опять я вам задаю вопрос. Какими знаниями должен обладать пользователь линуха? И кому кроме вас надо это все изучать?
                  Цитата Debug @
                  А флешечку фатовую с немецкими именами файлов подцепить?

                  В ntfs используется utf-16, так что имена хоть на китайском. А кто такой fat? ;)

                  Цитата FullArcticFox @
                  И еще сделать так: чтоб под одним пользователем был русский UI, а под другим - немецкий.

                  В форточках любая софтина может иметь интерфейс на любом языке.
                    Цитата wind @
                    А кто такой fat?
                    А такой старенький-старенький, но, собака, на флешках всяких да винчестерах портативных куда как чаще ntfs встречается.. ;)
                      Цитата $im @
                      На кой черт это надо, если есть немецкая винда?

                      Проблема не искуственная. Я столкнулся с таким однажды. Нужно чтобы были корейский и русский UI. Ноут был один на двоих.

                      Добавлено
                      Цитата $im @
                      Какими знаниями должен обладать пользователь линуха?

                      Цитата FullArcticFox @
                      Для таких авторов существуют платные дистры аля мандрива паверпак 2008. Стоит что-то около 1700р. Вот такой и попал ко мне в руки.
                      Имеется:
                      Мать Asus M2N-VM HDMI. http://shop.key.ru/shop/goods/26622/
                      Софтварный рейд на нем (Stripe), который ни один бесплатный пингвин из коробки не видит в упор.
                      Проц Athlon64 X2 4600+
                      Mandriva Powerpack 2008. В коробке 2 диска: для 32-х и для 64-х битных платформ.
                      Вставляем диск. Вах! Говорит вот те твой рейд, хотишь юзать? А то! Конечно, это вам не Венда, где выложил 2 тонны, да еще и c флоппиком потрахаешься. Дискетки то до 2007 рулили, пока Виста не вышла. Ага, ну и далее установка (установщик осилит даже полная блондинка). Дрова на звук и видео встали на ура. Compiz вполне себе летал. А что же касается ПО, то тут просто рай: НА DVD его дофига, включая Cedega для игрушек.
                      Щас тут виндузоиды начнуть кричать, что этож мол платный дистр. А то! Винда тоже не бесплатна. А из коробки получаем только голую систему.

                      Какие еще знания нужны тут, кроме как уметь кликнуть мышой, да и иметь представление о разбивке диска?

                      Добавлено
                      Цитата wind @
                      В форточках любая софтина может иметь интерфейс на любом языке.

                      Я НЕ про софт. Я про интерфейс винды: чтобы все надписи там и кнопочки были на нужном языке.

                      Добавлено
                      Цитата $im @
                      Вы на все истории по поводу непригодности линя юзерам отвечаете одно - "аффтар не хотел напрягать моск, аффтар полез куда не надо" итд.

                      Для Винды это тоже справедливо.
                        Цитата $im @
                        И всетаки, господа линуксоиды, по поводу статьи. Я ожидал подобной реакции

                        А что тут сказано не справедливого?

                        Цитата wind @
                        В форточках любая софтина может иметь интерфейс на любом языке.

                        Может. Но не всегда имеет. Японские игрушки пришедшие напрямую оттуда яркое тому доказательство.
                          Цитата
                          Всё зря, весь "запил" пропал даром.

                          Точно. Я знал это. См. ниже.

                          Цитата
                          Во-первых, для системы, "поддерживающей" кодировки utf, имя не может быть строкой байтов; имя - это строка последовательностей байтов и абы что туда попадать уже не должно. Во-вторых, в системе, где определена "свыше" кодировка имён, никакая левая софтина не должна суметь записать "строку байтов", которую невозможно декодировать в данной кодировке, иначе это не система, а куча хлама.

                          Ой, мама! Какая куча хлама! :D:D:D Я понял почему мой "запил" пропал втуне. Я даже это знал. Сразу.
                          "Строка байт" это ещё понятно. А что есть "строка последовательности байт" -- это что есть такое? Это новая структура данных, только что Вами придуманная? Хе-хе... Как забавно. Однако, теперь я всенепременно буду не объявлять символьные массивы как char *array, или wchar_t *wide_array, а буду... А как, кстати, по-вашему я буду теперь объявлять "строку последовательностей байт"?

                          Дошло? :D:D:D

                          Цитата
                          Мне до сих пор интересно, какими-такими способностями должен обладать пользователь такой "системы", чтобы просто найти файл. Ведь он должен заодно угадать кодировку имени :lool: Что делать несчастному при простой попытке перенести свои данные - это и вовсе представить невозможно - придётся тащить с собой конфигурацию и на целевой системе (куда винчестер притащил) сотворять нечто совместимое, запускать перекодировщики... :wacko:

                          Вам не лекции про VFS нужны, Вам нужна лекция по банальному "програмированию". Вопрос можно?
                          Вот смотрите -- есть такая функция -- strncpy(), и есть функция wstrncmp(). Что будет для случая, если мы сравниваем две строки байт в обоих случаях? И что будет если эти строки байт не просто "строки байт" а, о ужос <...> -- "имена самих файлов"!!! Это как-то повлияет на то, как отработают эти обе функции?

                          Ну, если человек (описываемый) -- полный идиот, то я думаю, он так и сделает. У всех более-менее вменяемых людей оно как-то и без того работает. Как-то всё, право, намного спокойнее.
                          Сообщение отредактировано: wind -
                            Цитата the_Shadow @
                            А что есть "строка последовательности байт" -- это что есть такое? Это новая структура данных, только что Вами придуманная?

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

                            Дошло?

                            Цитата the_Shadow @
                            Вот смотрите -- есть такая функция -- strncpy(), и есть функция wstrncmp(). Что будет для случая, если мы сравниваем две строки байт в обоих случаях? И что будет если эти строки байт не просто "строки байт" а, о ужос нах -- "имена самих файлов"!!! Это как-то повлияет на то, как отработают эти обе функции?

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

                            Дошло, вменяемый вы наш?

                            Добавлено

                            Я вам ещё одну страшную тайну открою. Даже с однобайтовыми кодировками одно и то же имя может представлять собой совершенно разный набор байт. И в системе, где каждая софтина долбит в ФС всё что захочет, не глядя на глобальные установки, ни разу у вас не получится один и тот же набор байт в strncpy().

                            Дошло?
                              Цитата
                              Умный дяденька не знает, что такое юникод и с чем его едят?

                              А что, пример с wstrncmp() -- это не для unicode? А для чего тогда, не позволите узнать? А где могут применяться "широкие символы", не подскажите? В cp1251, koi8-r?

                              Цитата
                              Например, байт 0xf4 не должен находится по чётному смещению.

                              user posted image Какой ужас! Вам, в вашей недосистеме даже надобно готовить символьные массивы вручную, и присматривать, чтобы байт 0хf4 не дай Бог не попал по чётному смещению? :D:D:D Как, мне просто интересно, при определении массива "широких" символов я могу это сделать? Определяя его напрямую в hex??? А зачем, позвольте по-интересоваться? Еть же более щадящие мозг методы... И ещё -- Вы давно определяли имя файла в hex-формате? Или строку символов?

                              До Вас не дошла бредовость этого утверждения? Я про "последовательность байт"... На самом нижнем уровне изо всех абстракций, это даже, пожалуй, последовательность бит. Может, лучше с ними по-работать? :D:D:D:D

                              Цитата
                              Ибо один из аргументов будет указывать на буфер из пяти байт, а второй - из девяти. И получится полное дерьмо, ибо имя файла будет как раз одним и тем же - "файл".

                              Мой друг, мой добрый друг, я же указал Вам на то, что функция называется WSTRNCMP! Откройте букварь и посмотрите как именно данная функция работатет. Авось дойдёт что будет при сравненни двух массивов в пять и девять симолов длиной... Если "программист" сравнивает два массива не удосужившись привести их к единому формату (например char * и wchar *), то у него проблемы с головой, о чём ему в неявной форме напомнит компилятор. Учите матчасть.

                              Добавлено
                              Цитата
                              И в системе, где каждая софтина долбит в ФС всё что захочет, не глядя на глобальные установки, ни разу у вас не получится один и тот же набор байт в strncpy().

                              Вы... о Бога такой... как бы по-мягче... "простой" или же Вас таким жизнь сделала? А что, в системе мы теперь не выставляем NLS? Выше было... В "запиле"? Или мы теперь, выставив системную локаль, получили записывать что угодно и куда угодно? Вы знаете, мне, если честно, то наср@ть на число наказаний, но я всё-таки скажу. Вы просто не удосужились разаобраться в Линукс ни с чем. Ваши суждения отдают полнейшим бредом. Может, в виндовз Вы и мастер, но в Линкс Вы простой и откровенный пенёк. Учитывая Ваши громогласнейшие заявления вот такого рода
                              Цитата
                              В общем и целом именно набор костылей и затычек, вкупе с установленным ПО (!) и является системой. Именно это обстоятельство делает работу под root'ом весьма рискованной, именно это вынуждает организовывать доверенные репозитарии. Короче, не стыдитесь дражайшие господа линуксоиды, не называйте эту помойку "операционной системой" :lol:

                              базируются на полнейшем незнании и непонимании не то, чтобы основ ОС, а даже банальнейших функций сравнения двух символьных массивов! И операций по приведению типов. В языках со строгой типизацией данных есть и такие операции, знаете ли... Ещё раз говорю -- учите матчасть. Будете умнее себя чувствовать.
                                Цитата $im @
                                Какими знаниями должен обладать пользователь линуха
                                Не в знаниях дело, а в желании. Вышеуказанный индивид возжелал обругать линукс, а не поюзать его. Получилось у него это, имхо, плохо. Ибо
                                Цитата Астарот @
                                аффтар совершенно не напрягал мозг
                                и проблемы не решал, а высасывал из пальца :)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (1182) « Первая ... 1025 1026 [1027] 1028 1029 ...  1181 1182
                                Закрыто kanes 17-02-2009: Введите причину закрытия темы здесь



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,7529 ]   [ 15 queries used ]   [ Generated: 16.06.24, 04:06 GMT ]