Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1428269402
Юрий
2015-04-06 00:30
2015.11.29
С днем рождения ! 6 апреля 2015 понедельник


2-1402320241
Sakipiel
2014-06-09 17:24
2015.11.29
FindComponent неопределен в пакете


2-1402861787
eh
2014-06-15 23:49
2015.11.29
Обновление записей в TpFibDataSet


15-1427816887
Юрий Зотов
2015-03-31 18:48
2015.11.29
Коллективная разработка софта


15-1427969782
KSergey
2015-04-02 13:16
2015.11.29
Как делают вывод подсказок на графиках?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский