Форум: "Прочее";
Текущий архив: 2015.11.29;
Скачать: [xml.tar.bz2];
ВнизВычитка статьи: Работаем с Compound File Найти похожие ветки
← →
Rouse_ © (2015-03-27 22:22) [0]Ухохотался, если честно, 7 вечеров у станка. Хорошо хоть на выходных отдохну и не буду тест писать :)
Ну как обычно, тут я просто текст накидал, правописание и прочее не проверял, устал просто уже до жути за эту неделю. Исходники еще не выложены.
http://rouse-debug.blogspot.ru/2015/03/compound-file.html
Пойду отдохну чтоль :)
← →
KilkennyCat © (2015-03-27 23:05) [1]запятые не любишь.
← →
Rouse_ © (2015-03-27 23:29) [2]Я ж сказал - просто текст набил, еще ничего не перепроверял :)
По орфографии и грамматике в воскресенье или понедельник начну работать.
← →
Rouse_ © (2015-03-27 23:34) [3]Там еще все равно править кой че нужно, в частности как мы решали проблему с распаковкой базы, в которой имена файлов могут быть длиной в 1024 символа (при существующем MAX_PATH), забыл про этот момент :)
← →
KilkennyCat © (2015-03-28 00:31) [4]вот че ты 15 лет назад эту статью не написал? я из-за тебя мучался :)
← →
Rouse_ © (2015-03-28 00:34) [5]Давай, вали все на мну, я привыкший :)
Чуть шо - так сразу Розыч, нет чтобы Зотыч к примеру или ИШ :)
← →
KilkennyCat © (2015-03-28 01:18) [6]их я опасаюсь :)
← →
Германн © (2015-03-28 01:26) [7]
> Rouse_ © (28.03.15 00:34) [5]
>
> Давай, вали все на мну, я привыкший :)
> Чуть шо - так сразу Розыч, нет чтобы Зотыч к примеру или
> ИШ :)
Те то как раз писали свои статьи -надцать лет назад. С них какой спрос? :)
← →
Rouse_ © (2015-03-28 01:32) [8]Я тоже писал 15 лет назад, из-за той статьи и женился, ты ж в курсе :)))
← →
Германн © (2015-03-28 01:49) [9]
> Rouse_ © (28.03.15 01:32) [8]
>
> Я тоже писал 15 лет назад, из-за той статьи и женился, ты
> ж в курсе :)))
Да. Но "те" сейчас уже не пишут статьи, в отличие от некоторых.
С "тех" можно было спрашивать только "тогда". А с тебя и сейчас можно.
:)
← →
Rouse_ © (2015-03-28 02:04) [10]Удалено модератором
← →
Германн © (2015-03-28 02:27) [11]Удалено модератором
← →
Германн © (2015-03-28 02:52) [12]Удалено модератором
← →
Дмитрий С © (2015-03-28 03:40) [13]Под linux есть то же самое?
← →
Rouse_ © (2015-03-28 12:36) [14]На яве есть
← →
Кто б сомневался © (2015-03-28 12:43) [15]Удалено модератором
← →
Ega23 © (2015-03-28 13:09) [16]Удалено модератором
← →
Кщд © (2015-03-29 20:32) [17]>Rouse_ © (27.03.15 22:22)
класс
как обычно
лично мне не хватает во введении: а чем, собственно, bin лучше любой БД?
ибо работать с compound - из статьи - однозначно, сложнее, чем с базой
больше бы case studies
← →
KSergey © (2015-03-30 12:10) [18]Верно ли я понял, что Windows предоставляет некий готовый API для поддержи таких файлов-контейнеров и собственно об этом API и речь?
← →
Rouse_ © (2015-03-30 13:23) [19]
> лично мне не хватает во введении: а чем, собственно, bin
> лучше любой БД?
> ибо работать с compound - из статьи - однозначно, сложнее,
> чем с базой
> больше бы case studies
Ничем не отличается, это разные вещи. compound - просто хранилище, никаких базовских фич она не представляет.
Впрочем, попробую что нибудь дописать в этом плане если что в голову придет вечером.
> KSergey © (30.03.15 12:10) [18]
Да
← →
Rouse_ © (2015-03-30 14:07) [20]
> Я ж сказал - просто текст набил, еще ничего не перепроверял
> :)
> По орфографии и грамматике в воскресенье или понедельник
> начну работать.
Все, орфорграфию грамматику и стилистику еще раз подправил, теперь можно пинать что где пропустил.
← →
junglecat © (2015-03-30 16:09) [21]> [20] Rouse_ © (30.03.15 14:07)
запятых все равно не хватает )
← →
Rouse_ © (2015-03-30 16:13) [22]Вроде Word ничего не подсвечивает. да и я с наскоку ничего найти не смог. Где именно?
← →
Inovet © (2015-03-30 16:15) [23]И лишних тоже хватат. Статью пока что не читал, только начало.
← →
Rouse_ © (2015-03-30 16:19) [24]Удалено модератором
← →
Inovet © (2015-03-30 16:32) [25]Я позже целиком почитаю. Кстати,
..\data\simle.bin
simle - это кто?
Лингво подсказывает simle по-норвежски - самка северного оленя. Однако...
← →
junglecat © (2015-03-30 16:38) [26]Удалено модератором
← →
KSergey © (2015-03-30 16:40) [27]Меня выводы очень расстроили.
Рука дрогнула - и кирдык всему хранилищу. И как что из него доставать - не ясно.
← →
Rouse_ © (2015-03-30 17:18) [28]Ну на самом деле не все так печально, убить хранилище тоже постараться надо, если флэшку не использовать. Так грубо по статистике оно может разрушится примерно с шансом один на миллион, но т.к у нас пользователей за 2 сотни тысяч, примерно с одним-двумя случаями в месяц приходится сталкиваться.
← →
Rouse_ © (2015-03-30 17:20) [29]Кстати да, надо бы статистику добавить, а то народ наоборот бежать будет от этой технологии :))
← →
Rouse_ © (2015-03-30 17:26) [30]И кстати как из него доставать, я подробно описал в шестой главе, как правило вытаскиваются практически все данные, ибо бьется всегда только концовка и очень-очень редка бьется фат/минифат, у меня таких случаем не больше двух десятков за последние 11 лет
← →
Piter © (2015-03-30 18:08) [31]Удалено модератором
← →
Rouse_ © (2015-03-30 19:42) [32]
> KSergey © (30.03.15 16:40) [27]
> Меня выводы очень расстроили.
> Рука дрогнула - и кирдык всему хранилищу. И как что из него
> доставать - не ясно.
Перечитай выводы, думаю теперь будет получше :)
← →
Rouse_ © (2015-03-30 20:41) [33]Исходники выложил: http://rouse.drkb.ru/blog/storage.zip
← →
Rouse_ © (2015-03-30 21:12) [34]И еще раз доправил выводы.
Думаю в этот раз я прояснил все моменты с "ненадежностью" данного формата :)
ЗЫ:
> Piter © (30.03.15 18:08) [31]
> Розыч крутой
Боян
← →
Piter © (2015-03-30 21:27) [35]Удалено модератором
← →
Rouse_ © (2015-03-30 21:34) [36]Удалено модератором
← →
Piter © (2015-03-30 21:55) [37]http://www.youtube.com/watch?v=BfcH3IlpX3s :)))
← →
Rouse_ © (2015-03-30 21:57) [38]http://rouse.drkb.ru/joke.jpg
← →
Inovet © (2015-03-31 05:12) [39]Читаю. Заяпятые - фиг с ними.
Вот ещё увидел:
Из-за дефрагментации, данные этого файла не всегда будут идти последовательно
Из-за фрагментации
← →
Inovet © (2015-03-31 05:20) [40]// то-же самое делаем с со всеми элементами, которые идут после текущего узла
// то-же самое делаем со всеми элементами, которые идут после текущего узла
← →
Inovet © (2015-03-31 05:33) [41]в 99 процентов убитых
наверное надо
в 99 процентов случаев убитых
← →
Inovet © (2015-03-31 05:58) [42]Дочитал. Хорошая статья для ознакомления.
← →
Юрий Зотов © (2015-03-31 08:02) [43]// Из-за фрагментации, данные...
Запятая не нужна.
// то-же самое...
Дефис не нужен.
← →
Inovet © (2015-03-31 08:32) [44]> [43] Юрий Зотов © (31.03.15 08:02)
> // то-же самое...
> Дефис не нужен.
Почему-то любит Розыч ставить этот дефис в этом месте.
← →
Rouse_ © (2015-03-31 10:31) [45]Поправил
← →
Владислав © (2015-03-31 11:12) [46]Первая глава. Не все подряд, а то, что сразу понятно было.
«С составными файлами я работаю давно, больше 15 лет. За все время работы у меня накопилось достаточно информации о плюсах и о минусах составных файлов.»
«С одной стороны они являются действительно очень удобным хранилищем информации, позволяющим менять данные на лету, с другой стороны это удобство частично нивелируется скоростью доступа к данным.»
«А вот с третьим флагом STGM_SHARE_EXCLUSIVE все гораздо хитрее. Его наличие требуется всегда и везде, кроме открытия файла в режиме "только чтение", о чем говорится во второй главе.»
«Таким образом, одновременное открытие составного файла на запись более одного раза запрещено.»
«Если все проверки прошли успешно и код возврата StgCreateDocfile равен S_OK, то в четвертом параметре данной функции нам вернется интерфейс IStorage, указывающий на корневой элемент составного файла, с которым и будет происходить вся дальнейшая работа.»
«К примеру, создать в корне новый файл (все же у нас файловая система) и записать в него некий блок данных.»
«Это, конечно, не принципиальный момент, и можно было воспользоваться вызовом функции Write интерфейса ISequentialStream, наследником которого является IStream, но зачем нам лишний велосипед?»
Не является ли здесь лишним велосипедом TOleStream? Если является, то может быть так:
«Это, конечно, не принципиальный момент, и можно было воспользоваться вызовом функции Write интерфейса ISequentialStream, наследником которого является IStream, но работать с классом TOleStream проще.»
«Вызовем реализованную нами ранее функцию:»
«Впрочем» было бы уместно, если бы мы писали о чем-то таком: «Впрочем, мы не будем пользоваться нашей функцией».
«Здесь есть один нюанс.» Потому что говорится об ограничении длины имени файла, и больше не о чем, поэтому дальше:
«Имена файлов и папок внутри составного файла не могут превышать длину в 31» и далее по тексту.
«Вернемся к нашим баранам, создадим в корне папку.» «Впрочем», здесь тоже не уместно употреблять.
Тут можно и без скобок:
«Для этого первым параметров укажем не Root, который ссылается на корень, а только что созданный Forder.»
«Чтобы гарантировать сохранение данных нужно выполнить следующий код:»
«После выполнения этого кода все данные будут гарантированно сохранены в файл на диске.»
«Кстати, по поводу закрытия файла.
Это делается банальным обниливанием рута, после чего при вызове @IntfClear для интерфейса в переменной Root произойдет разрушение всех остальных интерфейсов в иерархическом порядке.»
«Что у нас еще осталось?»
← →
Rouse_ © (2015-03-31 11:28) [47]Да, так наверное получше будет, щас поправлю.
← →
Inovet © (2015-03-31 14:21) [48]> [41] Inovet © (31.03.15 05:33)
> в 99 процентов случаев убитых
> в 99 процентах случаев убитых
← →
Rouse_ © (2015-03-31 14:27) [49]Угу, фикс.
← →
Владислав © (2015-03-31 15:37) [50]Еще немного.
Некоторые авторские жаргонизмы и обороты не трогаю. Этакий стиль беседы. По моему мнению, для статьи сгодится.
«Как бы вы выполнили поиск файлов в указанной папке на диске?
Естественно, рекурсивным обходом каталога, используя FindFirstFile.»
«В свое время мной был разработан небольшой модуль (тысяча строчек с комментариями), в котором реализовано несколько классов, учитывающих все нюансы работы с составными файлами и предоставляющих более удобный механизм работы.»
«В нем есть несколько недочетов. Дело в том, что я забросил его разработку очень давно, поэтому на юникодных версиях Delphi он будет выдавать ворнинги связанные с работой со строками.»
«Данный модуль вы можете использовать по своему усмотрению.» Или «собственному», или «своему».
«Единственные ограничения: » их там два. Так что или «Два ограничения:», или как-то так «Данный модуль вы можете использовать по своему усмотрению со следующими оговорками.»
«Я данный модуль уже не сопровождаю (он для меня устарел), поэтому просьбы о его доработке я буду отклонять сразу.»
«Итак, из данного модуля нас интересует класс TFWStorage, при помощи которого ведется работа с составным файлом, и класс TFWStorageCursor, который является оберткой над IStorage.»
«Для начала перечислю методы этих классов, а потом дам пример работы с ними.»
«В массиве TFWStorageEnum, который возвращает метод Enumerate, не нужно освобождать память, выделенную под pacsName, это уже сделано, и вы работаете с копией данных, которые хранятся в памяти, выделенной родным менеджером памяти.»
«Здесь я сделаю небольшое отступление и расскажу вам небольшую историю из собственной практики.»
← →
Rouse_ © (2015-03-31 15:57) [51]Угу, обновил.
← →
Jeer © (2015-03-31 17:03) [52]https://ru.wikipedia.org/wiki/NoSQL
← →
Rouse_ © (2015-03-31 17:17) [53]Ну в принципе да, Серег - это документо-ориентированная субд, как одно из подмножеств NoSQL решений :)
← →
Piter © (2015-03-31 17:23) [54]Удалено модератором
← →
Rouse_ © (2015-03-31 18:04) [55]Миш, ну я ж беларус, Руская мова не моцна ведаю :)
Так что приходится постоянно попрошайничать :)
Ладно, раз больше предложений больше нет - пошел релизить (как-же я не люблю переверстывать все под Хабр...)
← →
Rouse_ © (2015-03-31 18:15) [56]Релиз: http://alexander-bagel.blogspot.ru/2015/03/compound-file.html
На хабр дам линк чуть попозже.
← →
Piter © (2015-03-31 18:43) [57]Удалено модератором
← →
Rouse_ © (2015-03-31 19:29) [58]Поста на хабре: http://habrahabr.ru/post/254541/
ФФух - мишн комплитед :)
← →
Rouse_ © (2015-03-31 20:43) [59]Да, кстати, СПАСИБО за помощь в вычитке - сами понимаете, я тот еще знаток языка, мне проще программировать :)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2015.11.29;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.239 c