Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.11.29;
Скачать: CL | DM;

Вниз

Вычитка статьи: Работаем с 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;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.007 c
15-1428347344
Кто б сомневался
2015-04-06 22:09
2015.11.29
Для чего браузеры создают множество процессов?


3-1305705190
Panky
2011-05-18 11:53
2015.11.29
Работа с таблицами


15-1428496087
Pavelnk
2015-04-08 15:28
2015.11.29
Какой размер экрана телефонов


9-1195943145
Тул
2007-11-25 01:25
2015.11.29
GLScene Как с помощью компонента TGLCustomBitmapFont вывести текс


2-1402664348
Who_are_you?
2014-06-13 16:59
2015.11.29
Два байта в одно число