Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Лицензия FastReport за багрепорты и багофиксы

Автор: GrayElf
Дата сообщения: 30.08.2007 04:02
Багрепорт
Проблема была в 3-ей версии, в 4.1 она осталась.
Создаем новый отчет, помещаем на него бэнд с данными 1-го уровня. Ставим в середине бэнда memo1, с левого края memo2 (важен порядок создания). Устанавливаем memo2.
AutoWidth = True, memo1.Align = baLeft. Запускаем отчет и видим, что AutoWidth не сработало. Однако, при прокрутке за пределы экрана и обратно, AutoWidth срабатывает и memo1 прыгает к правому краю memo2.
Багофикс
Нужно разделить процедуры определения ширины текста и вывода memo на экран.
У TfrxCustomMemoView добавляем public метод: procedure SetAutoSize, в который перемещаем часть текста из SetDrawParams:

Код: [no]
procedure TfrxCustomMemoView.SetAutoSize;
var
SaveWidth: Extended;
FDrawText: TfrxDrawText;
begin
if Report <> nil then
FDrawText := Report.FDrawText else
FDrawText := frxDrawText;

if FHighlight.Active then
begin
FDrawText.SetFont(FHighlight.Font);
FColor := FHighlight.Color;
end
else
FDrawText.SetFont(FFont);
FDrawText.SetOptions(FWordWrap, FAllowHTMLTags, FRTLReading, FWordBreak,
FClipped, FWysiwyg, FRotation);
FDrawText.SetGaps(FParagraphGap, FCharSpacing, FLineSpacing);
if not IsDesigning then
if FAutoWidth then
begin
FDrawText.SetDimensions(1, 1, 1, Rect(0, 0, 10000, 10000), Rect(0, 0, 10000, 10000));
FDrawText.SetText(FMemo);
SaveWidth := Width;
Width := FDrawText.CalcWidth + AdjustCalcWidth;
if FHAlign = haRight then
Left := Left + SaveWidth - Width
else if FHAlign = haCenter then
Left := Left + (SaveWidth - Width) / 2;
if Parent <> nil then
Parent.AlignChildren;
end;
end;
[/no]
Автор: TJSergio
Дата сообщения: 28.09.2007 15:40
Багрепорт и багофикc
FastReport 4.
Проблема Unicode, charsets и настройка Windows "Чарсет для Non-Unicode программ".


Предисловие:
Как написанно на FastReportе, при использовании Unicode могут некоректно печатать принтера и данные из базы выводятся в том charset который установлен в Windows.
Значит надо использовать Russian_charset.

Как получить баг?
Создаем отчет с Russian_charset в memo на Windows с локалью 1251. Все показывает и печатает. Переносим готовую программу на Windows с локалью 1257, и вместо текста видим знаки вопросов "?". И сразу понимаем, что в НЕ-уникодовые проперти присваиваются уникодовские строки "влоб"!
FastReport отличный компонент и я хочу, купить и использовать его. Но моя программа "работает" в прибалтийских странах и ближней европе. Значит локаль у них будет точно другой и у всех разной! а если я предложу им её сменить - просто не купят программу!
Ещё проблема: А если в одном отчете нужны Memo с разным charset?

Начав искать проблемму и читая эту тему я сразу нашел одно из мест.
QuickeneR предложил замену:

Код:
...FOptions, @FScaledRect, PChar(String(s)) + j, i - j, nil);...
Автор: TJSergio
Дата сообщения: 02.10.2007 17:03
Уважаемые форумчане,
неужели описаный мною баг ни кого не волнует?

И насколько реально что в FR4 все-таки исправят этот глюк?
Автор: RUSer
Дата сообщения: 02.10.2007 18:25
Пока с ним никто не сталкнётся - он никого волновать не будет

А глюк исправят, просто My_Way здесь не часто постит. Но если заглядывает, то заглядывает конкретно. Таблица сверху тому доказательство.

TJSergio
если хоочешь, чтобы багофикс твой включили в следующей версии фр4, то пиши им на форум - ссылка на их сайте. Там тоже разбирают баги репорта.
Автор: TJSergio
Дата сообщения: 03.10.2007 10:06
RUSer - Спасибо за ответ!


Цитата:
Пока с ним никто не сталкнётся - он никого волновать не будет

Вот это и странно, ведь глюк "на поверхности". У нас за то, что мы заставляем пользователей "менять локаль" голову отрывают


Цитата:
если хоочешь, чтобы багофикс твой включили в следующей версии фр4, то пиши им на форум - ссылка на их сайте. Там тоже разбирают баги репорта.

А я попробовал там написать, ни каких комментариев. А тут ещё и лицензию (может быть)...
Просто хочется сэкономить "кровные копейки".
Автор: gpi
Дата сообщения: 03.10.2007 10:41
TJSergio
-=Den=- тебе уже ответил в форуме
Автор: DmLam
Дата сообщения: 03.10.2007 11:01

Цитата:
А я попробовал там написать, ни каких комментариев.


А там даже проблемы официальных юзеров не торопятся исправлять. Баги в серверных компонентах, которые уже 1,5 года известны и о которых я здесь писал (вместе с фиксами) и за которые мне еще одну лицензию дали (плюсом к двум купленым), и на оф. форуме писал - до сих пор не исправлены. Только обещания после писем лично директору.
Автор: TJSergio
Дата сообщения: 03.10.2007 12:55

Цитата:
-=Den=- тебе уже ответил в форуме

А ведь точно, ответил. Но ответ не применим в реальности по причинам мною уже описанным.
Ведь в отчете может быть сразу разные charsets
А ведь исправление, которое решит эту проблему я написал. Я же от чистого сердца, чтобы помочь отличному компоненту.
Ладно, прошу прощения за разведенную дискуссию, буду ждать изменений в этой ситуации и параллельно искать новый механизм для отчетов.
Автор: fandm
Дата сообщения: 04.10.2007 10:17
Всем добрый день!

Не знаю заинтересует ли это кого, но всё же...
Недельку назад пытался ввести в объект TfrxMemoView (версия FastReport 4.4 stable, Delphi 5) текст на азербайджанском и грузинском языках дабы проверить полноту поддержки Unicode (локализация Windows XP русская).
Вышло так, что вместо символов, "выпадающих" из всех известных charsets вводились знаки вопроса. Тобишь казалось бы ситуация ясна, несмотря на то, что свойство Memo типа TWideStrings.
Поскольку компоненты честно купленные, я сразу в поддержку, мол так и так, со скриншотами и т.п. Надо отметить, что переписка сильно затянулась, но баг был признан и занесён, как говорится, в TODO лист.
Казалось бы всё. Ошибку исправят и всё будет хорошо, но на днях я натыкаюсь на сообщение TJSergio и в переписке через ПМ я от него узнаю интересную вещь, что если в свойстве Font.Charset объекта TfrxMemoView выставить DEFAULT_CHARSET, то якобы вместо TMemo в редакторе текста создастся TUnicodeMemo, что разумеется должно обеспечить корректное "понимание" всех Юникод-символов.
Я сделал поиск по исходникам и таки действительно, выяснилось, что в недрах FastReport имеет место быть компонент TUnicodeMemo.
И вот тут то я и решил попробовать его на деле. Открыл в DesignTime дизайнер первого попавшегося отчёта, кинул TfrxMemoView (по-умолчанию Font.Charset и так равен DEFAULT_CHARSET), ввёл текст на азербайджанском, а потом и на грузинском и о чудо! Оно заработало!
Стал я думать и гадать, а почему же у меня неделю назад то так не получалось?
И выяснил! Оказывается, если вызывать дизайнер отчёта в DesignTime, то Юникод-символы объектом TfrxMemoView воспринимаются верно, а вот если вызвать дизайнер в RunTime (это то я и делал в первый раз), то как раз и наблюдается "непонимание" некоторых символов из состава азербайджанского алфавита + всех символов грузинского языка.

Итак. В чём же разница между работой дизайнера в DesignTime и RunTime? И выходит ошибка то совсем не в том, что я предполагал в самом начале?

Добавлено:

Цитата:
Пока с ним никто не сталкнётся - он никого волновать не будет


Кстати... вопрос поддержки юникода и локалей и т.д. и т.п. сейчас вообще-то становится очень остро, т.к. IT-индустрия в странах Закавказья и Средней Азии только становится на ноги и, должен Вам сказать, довольно таки нехилыми темпами, учитывая на относительно недавний переход в большинстве стран этого региона с кириллицы на латиницу. Так что настало время обращать внимание и на эти проблемы
Автор: XFree2
Дата сообщения: 04.10.2007 12:25
1. Если на машине установлен fr 3.* и поверх него поставить fr 4, то в RunTime происходит ошибка - property PrintOption.PrintOnSheet does not exist.

Лечение: удалить ссылку на пути для преждней установки fr3

2. При совместном использовании Tcx* компонентов и fr 4 происходит ошибка при компиляции такого кода:

CrossView.ColumnMemos[i].HAlign := haRight

Лечение: введение namespace в модуль с fr.

Добавлено:
Господа, пора заняться документацией на продукт!

Попробовал ваш компонент - может он и мощный, но пользуясь документацией не могу решить элементарные проблемы:

1. Заполнил frxCrossView при помощи AddValue(. , . , .) данными. Как получить заголовки (строки) frxCrossView в RunTime?? (необходимо далее выравнять сами ячейки вправо или влево. Как это сделать - тоже не понятно, потому что frxCrossView.ColMemos[0].HAlign работает аналогично frxCrossView.CelMemos[0].HAlign и выравнивает ВСЕ ячейки)

2. В событии OnCalcWidth хочу определить размер надписи, заносимой в ячейку, чтобы узнать максимальный размер надписи в пикселях для колонки. Хотел делать это как обычно: Canvas.Font.TextWidth(.), но ведь ссылку на канвас получить не удаётся! ( пришлось вытащить protected св-во в public. А как такую задачу надо решать на самом деле?? PS: Font у frxCrossView в скрипте тоже не доступен (насколько я понял, поскольку это property) )
Автор: RUSer
Дата сообщения: 04.10.2007 16:51

Цитата:
Так что настало время обращать внимание и на эти проблемы

Да кто ж против то? У нас всегда так: Пока не пнёшь - не полетит


Цитата:
1. Заполнил frxCrossView при помощи AddValue(. , . , .) данными. Как получить заголовки (строки) frxCrossView в RunTime?? (необходимо далее выравнять сами ячейки вправо или влево. Как это сделать - тоже не понятно, потому что frxCrossView.ColMemos[0].HAlign работает аналогично frxCrossView.CelMemos[0].HAlign и выравнивает ВСЕ ячейки)

Я тоже не разобрался, поэтому по тупому сделал все колонки одной ширины. А заголовки у мня были только в первых двух строках...
Автор: XFree2
Дата сообщения: 05.10.2007 07:54
Вспомнил, я подсмотрел как сделано в одном месте и сделал также:

в RunTime создаю TBitMap, делаю:

BitMap := TBitMap.Create();
BitMap.Canvas.Font.assign ( !! Фонт другова объекта в отчёте (не frxCrossView поскольку не знаю как достать Font в скрипте))

// Далее определяю ширину нужного мне текста. Впринципе, работает если Font у кроса // и у компонента, его замещающего, одинаковые.

strWidth := BitMap.Canvas.Font.TextWidth(str);


Проблема в том, что если я хочу в момент вычисления ширины последней ячейки скорректировать ширину других ячеек (например, у меня всё не влезло, хочу чуток ужать другие, т.к. уже знаю что сколько занимает) - у меня это не получается

2 RUSer:
Изменить ширину можно (делается на событии OnCalcWidth). Нельзя сделать это как мне нужно


В событии OnBeforePrint выровнять по горизонтали у меня не получилось (см выше), но получилось это сделать в событии OnPrint.
Автор: HeliX666
Дата сообщения: 05.10.2007 14:01
2TJSergio
Обратите внимание на свой пост на форуме FR, очень информативно правда ?
Можно было бы, хотя бы ссылку кинуть , если не хотели там постыть .

2fandm
Вам вроде не нравится вариант изменения VCL , а с использованием анси версии PeekMessage в цикле приложения (TApplication.ProcessMessage) TUnicodeMemo работать не будет, т.к. само сообщение извлеченное из очереди с помощью PeekMessageA не будет содержать в параметрах код юникод символа.
Автор: TJSergio
Дата сообщения: 05.10.2007 16:54

Цитата:
Обратите внимание на свой пост на форуме FR, очень информативно правда ?
Можно было бы, хотя бы ссылку кинуть , если не хотели там постыть

Полностью согласен. Просто в тот момент я ещё не заглядывал в исходники
Но если надо, могу повторить пост и на FR форум.
Автор: HeliX666
Дата сообщения: 05.10.2007 19:08
Уже можно не дублировать
Автор: motrik
Дата сообщения: 09.10.2007 13:24
Fast Report Studio Site v4.01

В дизайнере:
1. Создаем новый репорт
2. Добавляем band PageHeader
3. Делаем его высоту 29,8 (высота листа 29,7)
4. Нажимаем просмотр
Дизайнер вылетает
Автор: zeroandruxa
Дата сообщения: 09.10.2007 13:55
при разрыве страниц в компоненте RichEdit теряются отступы параграфов этот вопрос висит уже давно на форуме фаста, я вылечил так в модуле frxRich.pas исправить функцию DrawPart так:

function TfrxRichView.DrawPart:Extended;
var
Range:TFormatRange;
LastChar:Integer;
begin
{ get remained part of text }
FTempStream1.Position:= 0;
FRichEdit.Lines.LoadFromStream(FTempStream1);
if FParaBreak then
begin
// FRichEdit.SelStart:= 1;
// FRichEdit.SelLength:= 1;
FRichEdit.Paragraph.FirstIndent:= FLeftIndent + FFirstIndent;
FRichEdit.Paragraph.LeftIndent:= 0;
end;

{ calculate the last visible char }
FillChar(Range, SizeOf(TFormatRange), 0);
with Range do
begin
rc:= Rect(0, 0, Round((Width-GapX * 2) * 1440 / 96),
Round((Height-GapY * 2) * 1440 / 96));
rcPage:= rc;
if UsePrinterCanvas then
hdc:= frxPrinters.Printer.Canvas.Handle
else
hdc:= GetDC(0);
hdcTarget:= hdc;

chrg.cpMin:= 0;
chrg.cpMax:=-1;
LastChar:= FRichEdit.Perform(EM_FORMATRANGE, 0, Integer(@Range));
Result:= Round((rcPage.Bottom-rc.Bottom) / (1440.0 / 96))+2 * GapY+0.1;

if not UsePrinterCanvas then
ReleaseDC(0, hdc);
end;
FRichEdit.Perform(EM_FORMATRANGE, 0, 0);

{ text can't fit }
if Result < 0 then
begin
Result:= Height;
Exit;
end;

{ copy the outbounds text to the temp stream }
try
if LastChar > 1 then
begin
FRichEdit.SelStart:= LastChar-1;
FRichEdit.SelLength:= 1;
FParaBreak:= FRichEdit.SelText<>#13;
FLeftIndent:=FRichEdit.Paragraph.LeftIndent;
FFirstIndent:=FRichEdit.Paragraph.FirstIndent;
end;

FRichEdit.SelStart:= LastChar;
FRichEdit.SelLength:= FRichEdit.GetTextLen-LastChar+1;
if FRichEdit.SelLength = 1 then
Result:= 0;
FTempStream1.Clear;
FRichEdit.StreamMode:= [smSelection];
FRichEdit.Lines.SaveToStream(FTempStream1);
FRichEdit.SelText:= '';
finally
FRichEdit.StreamMode:= [];
end;
end;
Автор: fandm
Дата сообщения: 09.10.2007 22:02
HeliX666

Цитата:
Вам вроде не нравится вариант изменения VCL

Та не всё нормально, уже я эти изменения сделал. Хотя сначала думал "по-красивому" поступить hook-ая обработку всех мессаджей через свой TApplication, как это сделано в TNT компонентах, но передумал, т.к. там кода добавляется... мамадарагая...

Но вот с TfrxRichView таки надо что-то решать...
Автор: aleks77
Дата сообщения: 19.10.2007 12:57
В четвертой версии Fast Report есть одна небольшая бага связанная с дополнителным определением типв DWORD в файлах frxZip.* Не знаю как под дельфями, не проверял, а на Сях вылетает куча ошибок связанное с тем что компилятор не может определить какой тип DWORD использовать стандартный или frxZip::DWORD Для нормално работы перед компиляцией нужно изменить исходники (привожу только начало)

frxZip.раs
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*

{******************************************}
{ }
{ FastReport v4.0 }
{ ZIP archiver support unit }
{ }
{ Copyright (c) 1998-2006 }
{ by Alexander Fediachov, }
{ Fast Reports Inc. }
{ }
{******************************************}

unit frxZip;

{$I frx.inc}

interface

uses Classes, Windows, frxZLib, frxGZip, frxUtils, frxFileUtils;

type
{DWORD = Longword; <<<< -------------- коментим }
TfrxZipLocalFileHeader = class;
TfrxZipCentralDirectory = class;
TfrxZipFileHeader = class;
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*

frxZip.hpp
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
// Borland C++ Builder
// Copyright (c) 1995, 2002 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'frxZip.pas' rev: 6.00

#ifndef frxZipHPP
#define frxZipHPP

#pragma delphiheader begin
#pragma option push -w-
#pragma option push -Vx
#include <frxFileUtils.hpp>    // Pascal unit
#include <frxUtils.hpp>    // Pascal unit
#include <frxGZip.hpp>    // Pascal unit
#include <frxZLib.hpp>    // Pascal unit
#include <Windows.hpp>    // Pascal unit
#include <Classes.hpp>    // Pascal unit
#include <SysInit.hpp>    // Pascal unit
#include <System.hpp>    // Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Frxzip
{
//-- type declarations
// typedef unsigned DWORD; <<<<< --- коментим

class DELPHICLASS TfrxZipArchive;
class PASCALIMPLEMENTATION TfrxZipArchive : public System::TObject
{
    typedef System::TObject inherited;
    
private:
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
Автор: Oleg_bbb
Дата сообщения: 25.10.2007 17:33
Баг нашелся......

1. Берем любой объект (например мемо) и кладем его на форму отчета
2. Поверх него кладем бэнд
3. Пробуем растянуть бэнд до размера мемо
Результат - мыша ездит сверху экрана, а бэнд таскается внизу

того же можно добится просто таская изменитель размера бэнда вверх-вниз

скрин снять не получилось - мыши тама не видно
Версия ФР - 4.4. Версия с исходниками, купленная ж)

З.Ы. Надеюсь, я понятно все описал..... если что могу ответить на любые вопросы по этому поводу.
Автор: dvr
Дата сообщения: 03.01.2008 13:05
Распространяется ли данная акция на FastReport Studio для MSVC (в виде COM компонента, без исходников)?
Если да, то только на сам fastreport3.dll, или на дизайнер FastReport.exe тоже?
Автор: My_Way
Дата сообщения: 07.01.2008 19:52
dvr

Цитата:
Распространяется ли данная акция на FastReport Studio для MSVC (в виде COM компонента, без исходников)?

Комплект продукта FastReport Studio включает в себя как дизайнер,так и все необходимое для работы. Соответственно используется СОМ. Исходники тоже соответственно отсутствуют.
Не существует отдельного сабжа для MS Visual Studio, FastReport Studio может использоваться как в MS Visual Studio,так и в других подобных средах разработки.
Сотответственно, если в рамках данной акции раздается FastReport Studio Single, то акция распространяется и для вашего случая.
Автор: LadyOfWood
Дата сообщения: 12.01.2008 00:32
My_Way
На FastCube акция распространяется?
Автор: Garrett
Дата сообщения: 15.01.2008 12:17
Про экспорт в PDF.

1. У меня портятся буквы азербайджанского языка(сохраняются вопросики), хотя в отчёте всё в порядке.

2. Надо одинаково назвать строки диалога экспорта и названия флагов.
Причем, скажу сразу, что верно в диалоге, но не верно название флагов.
В диалоге - Permissions, т.е. разрешения, и логично смотрятся чекбоксы (печать, модификация...).
Галочку поставил - значит разрешаешь.
Но в инспекторе объектов, это уже ProtectionFlags, т.е. ФлагиЗащиты.
и тут не понятно, true - это можно или запрещено...

Но сначала желательно всё же исправить экспорт в PDF букв аз.языка.
Пробовал на последней версии FR на С++Builder2007.
Автор: Garrett
Дата сообщения: 15.01.2008 15:18

Ещё бажок.
Делаем новое приложение, на форму кидаем frxReport.
Щёлкаем на него дважды, попадаем в дизайнер.
В дизайнере на отчёт кладём PictureObject.

а) хорошо
Дважды щёлкаем на PictureObject, появляется окно, там жмём кнопку обзора, выбираем любой рисунок(jpeg), жмём Ок. Рисунок загружается в объект. Смотрим Превью, закрываем его, в дизайнере всё ОК.

б) плохо
Выбираем PictureObject, в инстпекторе объектов давим "..." у свойства Picture, появляется окно, там жмём кнопку обзора, выбираем любой рисунок(jpeg), жмём Ок. Рисунок загружается в объект. Смотрим Превью, закрываем его, в дизайнере видим пустой PictureObject, без рисунка. Явно какой-то флажок не срабатывает при выборе рисунка через инспектор...
Автор: EmeJIbka
Дата сообщения: 20.01.2008 11:54
Пара непонятностей в работе DBCross:
1) При перетаскивании строки из списка полей в выбранном источнике данных в списки строк, столбцов или данных сама строка не исчезает (в тройке исчезала)
2) Несколько раз мне удалось поймать "List index out of bounce (-1)" при перетскивани (см. выше), но как я не понял...
З.Ы. FastReport 4.5.17
Автор: laborer2008
Дата сообщения: 06.03.2008 21:49
С недавних пор начал использовать fast report 4.5 и обнаружил несколько несуразностей/недоработок.


frxPreviewPageSettings.pas

В диалоге настроек параметров страницы пользователь может случайно ввести некорректные данные и при нажатии на 'Ok' программа ему ответит Access violation'ом. Данные конечно можно подправить и параметры страницы примут новые значения, но программа так ругающаяся оставляет впечатление недоделанной.
Чтобы этого не было, добавлены проверки корректности введённых данных в окна Edit. Для этого написаны обработчики OnExit:


Код:
{для MarginLeftE, MarginLeftR, MarginTopE, MarginBottonE}
procedure TfrxPageSettingsForm.MarginLeftEExit(Sender: TObject);
begin
try
frxStrToFloat(TEdit(Sender).Text);
except
TEdit(Sender).Text:='0';
end;
end;

{для WidthE, HeightE}
procedure TfrxPageSettingsForm.WidthEExit(Sender: TObject);
var f:Double;
begin
try
f:=frxStrToFloat(TEdit(Sender).Text);
if (f<0.1)then begin
f:=0.1;// ограничиваем размер бумаги
TEdit(Sender).Text:=frxFloatToStr(f);
end;
except
TEdit(Sender).Text:=frxFloatToStr(0.1);
end;
end;
Автор: ectb
Дата сообщения: 24.03.2008 07:31
скачал триал версию Fast Report Studio с оф.сайта

создаю отчет следующим образом (на C#):
TfrxReportClass report = new TfrxReportClass();
report.DesignReport();

рисую линию, рисую вторую. первую в дереве объектов удаляю по "del", мышой веду в окно дизайнера и начинает вылезать:
Access violation at address 03DE3EE0 in module 'fastreport3.dll'. Read of address 73726556.

Честно признаюсь, документацию не читал. Баг или фича? :)

P.S. Нашел описание подобного бага от 31.10.2005... Но судя по тому что прошло уже больше 2х лет, то баг либо другой, либо это все же фича... http://forum.ru-board.com/topic.cgi?forum=33&topic=5647&start=200#17
Автор: AlexNMelnikov
Дата сообщения: 22.04.2008 17:32
FastReport 4.5
Delphi 7

При уменьшении высоты "Редактора текста" до некоторой высоты уменьшение окна редактирование прекращается, а вот самого окна нет, таким образом кнопки налазят на окно редактирования.
Вероятно для окна редактирования установлена некоторая минимальная высота, а для всего "Редактора текста" нет.
Автор: EmeJIbka
Дата сообщения: 25.04.2008 19:08
Доброго времени:)
Обнаружил неточности перевода:

Страницы: 12345678910111213141516

Предыдущая тема: Числовой формат даты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.