Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Логика организации архива

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 27 Август 2009 - 17:52

хочу понять логику

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Август 2009 - 20:38

sc2r2bey, Логика проста.
Используется разный алгоритм сжатия.

Алгоритм PPM (Prediction by Partial Matching — предсказание по частичному совпадению) — это адаптивный статистический алгоритм сжатия данных, основанный на контекстном моделировании и предсказании. Модель PPM использует контекст — множество символов в несжатом потоке, предшествующих данному, чтобы предсказывать значение символа на основе статистических данных. Сама модель PPM лишь предсказывает значение символа, непосредственное сжатие осуществляется алгоритмами энтропийного кодирования, как например, алгоритм Хаффмана, арифметическое кодирование.

Длина контекста, который используется при предсказании обычно сильно ограничена. Эта длина обозначается n и определяет порядок модели PPM, что обозначается как PPM(n). Неограниченные модели так же существуют и обозначаются просто PPM*. Если предсказание символа по контексту из n символов не может быть произведено, то происходит попытка предсказать его с помощью n-1 символов. Рекурсивный переход к моделям с меньшим порядком происходит пока предсказание не произойдёт в одной из моделей, либо когда контекст станет нулевой длины (n=0). В последнем случае предсказание будет произведено по фиксированной модели, не учитывающей контекст символа вообще.

Большое значение для алгоритма PPM имеет проблема обработки новых символов, ещё не встречавшихся во входном потоке. Это проблема носит название проблема нулевой частоты. Некоторые варианты реализаций PPM полагают счётчик нового символа равным фиксированной величине, например, единице. Другие реализации, как например, PPM-D, увеличивают псевдосчётчик нового символа каждый раз, когда, действительно, в потоке появляется новый символ. (Другими словами, PPM-D оценивает вероятность появления нового символа как отношение числа уникальных символов к общему числу используемых символов).

Опубликованные исследование алгоритмов семейства PPM появились в середине 1980-х годов. Программные реализации не были популярны до 1990-х годов, потому как модели PPM требуют значительное количество оперативной памяти. Современные реализации PPM являются лучшими среди алгоритмов сжатия без потерь для текстов на естественном языке.

Вот ещё
книга по сжатию данных
Алгоритмы cжатия изображений
  • 0

#3 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 27 Август 2009 - 21:02

я имел ввиду архива по датам, календарный, возможно я неточно выразился :rolleyes:
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 29 Август 2009 - 22:40

sc2r2bey, конечно не правильно.
В MySQL есть очень много функций по работе с датой и легко можно определить за текущий месяц, за предыдущие например в архив. Что значит организацию написать, алгоритм?
  • 0

#5 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 30 Август 2009 - 00:53

да алгоритм
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 30 Август 2009 - 09:54

sc2r2bey, тут всё зависит от того что нужно.

1) Можно написать целый класс, и назвать его календарь.
2) Нам нужно кроме как сформировать календарь на текущий месяц, но так же создавать ссылки при формировании, на страницу с просмотром событий за определенный день. Есть события - ссылка, нет событий - текстовка.
3) формирование данных с текущей датой должно быть вне данного класса, так как это уже работа не календаря.

Ничего сложного, класс будет состоять из 4 функции примерно:
1) Инициализатор, формирование календаря за выбранный месяц
2) Формирование ссылок на дни с событиями
3) Вывод событий(формировка поступает извне)
4) Вывод календаря
  • 0

#7 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 30 Август 2009 - 18:27

конкретизирую:
есть такая структура

Раздел 1
Июль 200n года
Августь 200n года
....
Июнь 200n года
Раздел 2
Июль 200n года
Августь 200n года
....
Июнь 200n года

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

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 30 Август 2009 - 19:19

sc2r2bey, это всё делается автоматически, не нужно никакие периоды создавать.
Выводим за текущий месяц события, а за остальные в архив и всё...
Дату за текущий месяц думаю вытащить не проблема
$date = date("Y.m.d");

А в mysql очень много функция для работы с датами, так что преобразовываем строки из БД и из PHP текущей даты и просто вытаскиваем нужные по условию WHERE.
А вообще если подольше подумать, то можно сделать сравнение дат в более простом режиме. Что-то на подобии перевода в UNIX, секунд прошедших с 1 января 1970 года. Работать будет быстрее...
  • 0

#9 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 30 Август 2009 - 19:23

Вы не поняли публикуется отчетность за год в 2-х разделах, через год новы отчетный период, в этом загвоздка!
  • 0

#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 30 Август 2009 - 19:43

Ну не так сложно сделать два условия отбора записей в БД.
1) Отбираем нужные по дате.
2) Отбираем нужные по разделу.
$date = date("Y-m-d", [формируемая дата для нужных месяцев]);

SELECT `*` FROM `table` WHERE MONTH(`date`)=MONTH({$date}) AND YEAR(`date`)=YEAR({$date}) AND `id_razdel`={$id}

Это только пример...
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru