Флудильня 3.0
19 ноября 2013, 23:41
[ссылка]
vanya-krasnoyarov
Через *опу, но... Ладно, Лебедь всё равно смотался, так что.
Ну, прежде всего, форматы можно разделить на 2 вида. ASCII (или ещё какие, в зависимости от кодировки) и бинарные. ASCII это те где... Ну если открыть их в блокноте, то... Увидим нормальный текст и числа. Потому как цифра вроде: "286", означает именно это число. Они вообще удобны в том плане, что можно и без оригинальной проги, редактировать. И вообще, то что показывается в "Блокноте", именно так и читается.
А Бинарники... Как-раз тот файл, что открыт у тебя. Если открыть его с помощью какого-нибудь HEX редактора, то там мы увидим "коды" символов. Вот эти коды и читаются как числа. Некоторые можно и как буквы читать, но главное, что числа там определяются именно "кодами" символов. Типа "1F 22" (ну и так далее). И всё это в шестнадцатеричной системе исчисления. Плюс в том, что так данные занимают меньше места, минус - очень сложно редактировать вручную.
Так вот. Если "выдумать" ASCII формат изображения, то его можно будет... Ок сложно, но вполне реально редактировать его в блокноте. Если сложно представить, то (хоть формат и можно чуть сложнее сделать)... Первые 2 числа будут означать разрешение, а остальные (друг за другом) цвета.
Ну нечто типа:
Первые 2 двойки разрешение по вертикали и горизонтали. А дальше идут "значения цветов". В виде RGB. Если их разделить (хоть мысленно) на группы "по три", то всё сразу станет ясно.
Цитата
оО Ну если только ASCII-арт слепить, а в ином случае выйдет через опу. Хотя эксперименты никто не отменял.
Через *опу, но... Ладно, Лебедь всё равно смотался, так что.
Ну, прежде всего, форматы можно разделить на 2 вида. ASCII (или ещё какие, в зависимости от кодировки) и бинарные. ASCII это те где... Ну если открыть их в блокноте, то... Увидим нормальный текст и числа. Потому как цифра вроде: "286", означает именно это число. Они вообще удобны в том плане, что можно и без оригинальной проги, редактировать. И вообще, то что показывается в "Блокноте", именно так и читается.
А Бинарники... Как-раз тот файл, что открыт у тебя. Если открыть его с помощью какого-нибудь HEX редактора, то там мы увидим "коды" символов. Вот эти коды и читаются как числа. Некоторые можно и как буквы читать, но главное, что числа там определяются именно "кодами" символов. Типа "1F 22" (ну и так далее). И всё это в шестнадцатеричной системе исчисления. Плюс в том, что так данные занимают меньше места, минус - очень сложно редактировать вручную.
Так вот. Если "выдумать" ASCII формат изображения, то его можно будет... Ок сложно, но вполне реально редактировать его в блокноте. Если сложно представить, то (хоть формат и можно чуть сложнее сделать)... Первые 2 числа будут означать разрешение, а остальные (друг за другом) цвета.
Ну нечто типа:
Цитата
2 2 128 56 128 86 12 14 200 187 125 111 28 16
Первые 2 двойки разрешение по вертикали и горизонтали. А дальше идут "значения цветов". В виде RGB. Если их разделить (хоть мысленно) на группы "по три", то всё сразу станет ясно.
20 ноября 2013, 09:58
[ссылка]
Soulskinner, я сейчас программой на делфи занялся, ради интереса. Изучил краем глаза несколько форматов (архивы, картинки).
Игровая графика (особенно старых игр) и квадратики в JPG -- отдельная тема. Но об игровой графике уже хорошо писал в своем рассказе про HL, нужно продолжение темы, сюда http://ficbook.net/readfic/1166983
Отмечу, что популярные форматы картинок, вроде JPG, BMP, GIF никогда палитру в себе не хранили. Их показ зависел от вьювера, который обычно обращается к палитре видеодрайвера через стандартные возможности Windows. Учитывая, что в 90-е были разные мониторы, типа VGA, EGA, одна и та же картинка могла выглядеть совершенно по другому. Старые игры хранили низкокачественную палитру для ускорения, чтобы не обращаться по каждой картинке к возможностям DOS или Windows. В DOS еще однозадачность была, запуск нескольких программ невозможен. Современные игры и нынешние форматы файлов этого (хранение палитры) не делают, когда есть драйвера.
HL палитру хранит, но не в отдельном файле для всех картинок как Quake, а создает новую для каждого файла (ВАДы, модели, спрайты). Если какого-то монстра нет на карте, скажем, то он понятно не загружается.
Для создания формата прежде всего нужен заголовок.
Файлы различаются не по расширению (посмотрите на движки idtech хотя бы, zip'ы с другими расширениями), а по заголовкам (ибо расширение может быть любым, но файл также его может и не иметь). Так что все форматы файлов сначала читают заголовок.
Далее. У нас графический файл, мы можем сразу вжучить информацию о разрешении и цвете, но если не знаем как цвет будет обрабатываться, мы вьювер не напишем (а собственный формат, значит и собственный вьювер). Сначала нужна палитра. Лучше всего обратиться к палитре видеодрайвера, посредством какого-нибудь WinAPI, но можно использовать возможности MS-DOS, которые из 7 винды, к слову, не удаляли. Но тут у нас будет всего 16 цветов, зато проще сделать вьювер и формат в целом.
Хранение цвета. Знаете, сколько "по умолчанию" занимает цветовая информация? Белый кодируется как FFFFFFF, оттенки серого от нуля до фффф. И это только градация серого, а вам скорее всего нужен цветной файл. Но известные форматы картинок так информацию на хранят. Пара красный-синий-зеленый представлена как два байта вида F2 23 D0. Это уже три цвета в двух байтах. Как сделано? Использование таблиц замен, которые надо расшифровывать (у них в спецификации куча настроек типа размера словаря и так далее). Почему загрузка больших картинок тормозит, как вообще может тормозить например 50МБ файл на двухядерных процессорах и порядка 4ГБ оперативной памяти? А вы знаете, сколько информации нужно расшифровать вьюверу впринципе, плюс учитывайте зарезервированную память для системы.
PNG например, использует LZW. Тот же алгоритм, что и архиватора 7зип, используемый в основном в unix. По сути, без этого ни один современный формат картинок не обходиться.
Помните про заголовки в начале? А что если ваш формат файла предусматривает несколько таблиц замен разных разработчиков (к примеру, вьювер расшифровывает и PK (зиповский заголовок) и LZW). Значит нужен второй заголовок, который определяет алгоритм паковки в этом файле и определяет дальнейший принцип работы вьювера, отдельного редактора или плагина к фотошопу. Иначе пользователю, в лучшем случае, придется задавать это самому. А что обычному человеку до того, этот PNG LZWшный или использует другой алгоритм паковки цветовых байтов?
Файлы принято разделять на строгие (поддерживают только один алгоритм) и со свободной спецификацией (гуляют несколько алгоритмов паковки, что для простого юзера просто одни и те же PNG, JPG). Из тех, которые читаются браузером (а значит известны всем), почти все форматы свободные, кроме SVG. Кстати, SVG информацию вообще не шифрует, цвет и вектор представлены в открытом виде.
В идеале программа, я считаю, файлы должна читать независимо от расширения, ориентируясь на заголовки. Но на практике, проще всего реализовать программу, где проверка идет по расширению, да и файлы JPG без расширения или с другим, практически не встречаются. В MS-DOS расширением файла программе (а тогда они в основном консольные) передавали заголовок, который сейчас является содержанием файлов. Там когда-то не было заголовков, только байты. Если мы диалоговое окно возьмем (просмотр папок после нажатия кнопки "Обзор"), то оно проверяет по расширению. А можно написать окно, которое будет просматривать каждый файл и ориентироваться только по заголовку, но больше памяти займет. Так что расширение файла, пока это сделано для экономии памяти (здесь она существенна даже на современных компьютерах). А ассоциации файлов, тоже "текстовый редактор по умолчанию", "браузер по умолчанию"? Как из тысячи файлов без расширения они будут работать и вьювер найдет свои в проводнике Windows? Это возможно, но проводник читает реестр и ищет там заголовки файлов установленных программ, читая каждый файл в папке, сейчас он ищет только расширения в имени.
Файлы различаются не по расширению (посмотрите на движки idtech хотя бы, zip'ы с другими расширениями), а по заголовкам (ибо расширение может быть любым, но файл также его может и не иметь). Так что все форматы файлов сначала читают заголовок.
Далее. У нас графический файл, мы можем сразу вжучить информацию о разрешении и цвете, но если не знаем как цвет будет обрабатываться, мы вьювер не напишем (а собственный формат, значит и собственный вьювер). Сначала нужна палитра. Лучше всего обратиться к палитре видеодрайвера, посредством какого-нибудь WinAPI, но можно использовать возможности MS-DOS, которые из 7 винды, к слову, не удаляли. Но тут у нас будет всего 16 цветов, зато проще сделать вьювер и формат в целом.
Хранение цвета. Знаете, сколько "по умолчанию" занимает цветовая информация? Белый кодируется как FFFFFFF, оттенки серого от нуля до фффф. И это только градация серого, а вам скорее всего нужен цветной файл. Но известные форматы картинок так информацию на хранят. Пара красный-синий-зеленый представлена как два байта вида F2 23 D0. Это уже три цвета в двух байтах. Как сделано? Использование таблиц замен, которые надо расшифровывать (у них в спецификации куча настроек типа размера словаря и так далее). Почему загрузка больших картинок тормозит, как вообще может тормозить например 50МБ файл на двухядерных процессорах и порядка 4ГБ оперативной памяти? А вы знаете, сколько информации нужно расшифровать вьюверу впринципе, плюс учитывайте зарезервированную память для системы.
PNG например, использует LZW. Тот же алгоритм, что и архиватора 7зип, используемый в основном в unix. По сути, без этого ни один современный формат картинок не обходиться.
Помните про заголовки в начале? А что если ваш формат файла предусматривает несколько таблиц замен разных разработчиков (к примеру, вьювер расшифровывает и PK (зиповский заголовок) и LZW). Значит нужен второй заголовок, который определяет алгоритм паковки в этом файле и определяет дальнейший принцип работы вьювера, отдельного редактора или плагина к фотошопу. Иначе пользователю, в лучшем случае, придется задавать это самому. А что обычному человеку до того, этот PNG LZWшный или использует другой алгоритм паковки цветовых байтов?
Файлы принято разделять на строгие (поддерживают только один алгоритм) и со свободной спецификацией (гуляют несколько алгоритмов паковки, что для простого юзера просто одни и те же PNG, JPG). Из тех, которые читаются браузером (а значит известны всем), почти все форматы свободные, кроме SVG. Кстати, SVG информацию вообще не шифрует, цвет и вектор представлены в открытом виде.
В идеале программа, я считаю, файлы должна читать независимо от расширения, ориентируясь на заголовки. Но на практике, проще всего реализовать программу, где проверка идет по расширению, да и файлы JPG без расширения или с другим, практически не встречаются. В MS-DOS расширением файла программе (а тогда они в основном консольные) передавали заголовок, который сейчас является содержанием файлов. Там когда-то не было заголовков, только байты. Если мы диалоговое окно возьмем (просмотр папок после нажатия кнопки "Обзор"), то оно проверяет по расширению. А можно написать окно, которое будет просматривать каждый файл и ориентироваться только по заголовку, но больше памяти займет. Так что расширение файла, пока это сделано для экономии памяти (здесь она существенна даже на современных компьютерах). А ассоциации файлов, тоже "текстовый редактор по умолчанию", "браузер по умолчанию"? Как из тысячи файлов без расширения они будут работать и вьювер найдет свои в проводнике Windows? Это возможно, но проводник читает реестр и ищет там заголовки файлов установленных программ, читая каждый файл в папке, сейчас он ищет только расширения в имени.
Игровая графика (особенно старых игр) и квадратики в JPG -- отдельная тема. Но об игровой графике уже хорошо писал в своем рассказе про HL, нужно продолжение темы, сюда http://ficbook.net/readfic/1166983
Отмечу, что популярные форматы картинок, вроде JPG, BMP, GIF никогда палитру в себе не хранили. Их показ зависел от вьювера, который обычно обращается к палитре видеодрайвера через стандартные возможности Windows. Учитывая, что в 90-е были разные мониторы, типа VGA, EGA, одна и та же картинка могла выглядеть совершенно по другому. Старые игры хранили низкокачественную палитру для ускорения, чтобы не обращаться по каждой картинке к возможностям DOS или Windows. В DOS еще однозадачность была, запуск нескольких программ невозможен. Современные игры и нынешние форматы файлов этого (хранение палитры) не делают, когда есть драйвера.
HL палитру хранит, но не в отдельном файле для всех картинок как Quake, а создает новую для каждого файла (ВАДы, модели, спрайты). Если какого-то монстра нет на карте, скажем, то он понятно не загружается.
Сообщение отредактировал zritelvrn - 20 ноября 2013, 07:18
И вновь назовут имя чемпиона,
Он будет чемпион не хорошего, а плохого.
Почему плохого? Потому что мало нам горя.
Он будет чемпион не хорошего, а плохого.
Почему плохого? Потому что мало нам горя.
21 ноября 2013, 00:50
[ссылка]
zritelvrn > Ну, откровенно говоря, многие детали форматов... Вопрос того, что от него требуется. А заголовок (внутри) больше для отсутствия эрроров, требуется. Ну чтобы случайно не прочитать "не тот тип файла". Остальные данные (что цвета пикселей, что "общие") уже вопрос требований.
Правда тут... Я просто написал самый простой вариант. При желании можно и усложнить, но главное суть. Правда вряд-ли кто-то вообще будет делать изображения ASCII "типа". Всё-таки, смысла в этом, практически ноль.
Но что касается графических форматов, то и "дикие" есть. Подробности не помню, но например tga обычно бывает в несжатом виде. Да ещё и приходится (не обязательно, но всё же) "в ручную" его читать. В плане, самому риадер делать.
Что касается игровой графики... То тут... Только где-то со-времён Винды она начала хоть как-то стандартизироваться. Во-времена DOS-а, многие делали свои форматы. В том же Doom, например, пиксели текстур и спрайтов хранятся не "в линию" а "в столбик". Для определённого ускорения.
Рассказ начал, он интересный, только ляпов там много. >_< И кстати, будешь смеяться, но на старых компах было круче. В их поставку входил не язык вроде C/C++, а... Бейсик. У которого куда меньше возможностей. Ну и асму никто не отменял, но всё равно, основным был Бейсик.
Правда тут... Я просто написал самый простой вариант. При желании можно и усложнить, но главное суть. Правда вряд-ли кто-то вообще будет делать изображения ASCII "типа". Всё-таки, смысла в этом, практически ноль.
Но что касается графических форматов, то и "дикие" есть. Подробности не помню, но например tga обычно бывает в несжатом виде. Да ещё и приходится (не обязательно, но всё же) "в ручную" его читать. В плане, самому риадер делать.
Что касается игровой графики... То тут... Только где-то со-времён Винды она начала хоть как-то стандартизироваться. Во-времена DOS-а, многие делали свои форматы. В том же Doom, например, пиксели текстур и спрайтов хранятся не "в линию" а "в столбик". Для определённого ускорения.
Рассказ начал, он интересный, только ляпов там много. >_< И кстати, будешь смеяться, но на старых компах было круче. В их поставку входил не язык вроде C/C++, а... Бейсик. У которого куда меньше возможностей. Ну и асму никто не отменял, но всё равно, основным был Бейсик.
22 ноября 2013, 12:39
[ссылка]
Я больше удивляюсь, как можно было релизнуть майнкрафт в таком сыром состаянии!?
При наличии полигонов на видимой дистанции в количестве равноценной кол-ву полигонов на одном-двух персонажах из, допустим, скайрима, игра умудряется лагать даже на мощных машинах!
А вес такой игры - для меня больная тема, с таким кол-вом моделей, текстур и звуков игра могла бы весить в разы меньше, если бы не 4 буквы - "инди".
При наличии полигонов на видимой дистанции в количестве равноценной кол-ву полигонов на одном-двух персонажах из, допустим, скайрима, игра умудряется лагать даже на мощных машинах!
А вес такой игры - для меня больная тема, с таким кол-вом моделей, текстур и звуков игра могла бы весить в разы меньше, если бы не 4 буквы - "инди".
22 ноября 2013, 13:38
[ссылка]
Coole > Для того, чтобы делать "на чём хотеть", нормальные компиляторы нужны. В то время, как для домашних компов, с ними напряг был. Поставлялся только Бейсик. Так что... Да ещё и игры - один из самых сложных видов программ.
А вот Майнкрафт. Он же на Джава написан. Да ещё и свойства такие, что...
А вот Майнкрафт. Он же на Джава написан. Да ещё и свойства такие, что...
23 ноября 2013, 00:25
[ссылка]
Вот чего это Ютьюбовцы опять сделали!? С комментариями беспорядок и нихрена неудобно. Нельзя нормально посмотреть все связанные комментарии, как было раньше.
Записываю только со спутника!
На планете море лапок! Все подняли кверху их!
А я вночи и тяфкал и фырчал!
23 ноября 2013, 02:36
[ссылка]
Хех, если бы Сергей Брин был идиотом, то тогда бы не было Гугла, а Ютьюб скорее всего остался бы малоизвестным сайтом
Правда действительно непонятно, нахрена этот "Гугл плюс" и вообще что это такое (социальная сеть, насколько я понимаю)?
Пробил час, не остановишь нас
Свыше контролю не бывать
Делай все что по душе на своем стальном коне
Мы здесь, чтоб полночь взорвать
Свыше контролю не бывать
Делай все что по душе на своем стальном коне
Мы здесь, чтоб полночь взорвать
23 ноября 2013, 03:03
[ссылка]
Ну не идиоты, но зачем делать неудобно всё!? Вот им делать нефиг! Там и так всё было удобно и прекрасно! Так нет какую-то шляпу сделали. Комментарии связанные в переписку невозможно читать на одной странице - открывается новая вкладка постоянно и открывается там один комментарий и других связанных нет. Ерунда какая-то.
Записываю только со спутника!
На планете море лапок! Все подняли кверху их!
А я вночи и тяфкал и фырчал!
23 ноября 2013, 14:24
[ссылка]
Гугл плюс и ютуб нетолько на компьютере как бы есть. На андроиде 4.2.2 связали отлично, но по ходу применили этот же механизм и в браузере