Конференция "Журнал" » Тест переноса строк
 
  • Anatoly Podgoretsky © (05.11.06 23:58) [0]
    Это одна строка Base64

    0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    А это разные строки c увеличением количество пустых строк

    1. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    2. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    3. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    4. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    -
  • Anatoly Podgoretsky © (06.11.06 00:03) [1]
    > Anatoly Podgoretsky  (05.11.2006 23:58:00)  [0]
    Остался хвости в виде тире, его тоже надо изничтожить как врага народа.
    Публикация на форуме съедает пустые строки, ну это понятно для HTML только вроде при прямой публикации они вроде не съедаются?

    Это одна строка Base64

    0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    А это разные строки c увеличением количество пустых строк

    1. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    2. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    3. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    4. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789
  • Anatoly Podgoretsky © (06.11.06 00:03) [2]
    > Anatoly Podgoretsky  (06.11.2006 0:03:01)  [1]
    Во теперь хвостика нет, но и строк тоже
  • guav © (06.11.06 00:05) [3]
    1. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    2. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    3. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789

    4. 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789
  • guav © (06.11.06 00:06) [4]
    скушались и в ДМКлиент, не Ваш баг
  • Anatoly Podgoretsky © (06.11.06 00:10) [5]
    > guav  (06.11.2006 0:06:04)  [4]
    Да я знаю, но одиночным разделителем неприятно, но над этим я еще подумаю, только сначала на форуме проверю, а ниже тест, строки разделены одной пустой строкой

    1.

    2.

    3.
  • Ketmar © (06.11.06 00:12) [6]
    йож.

    йожиха.

    было три пустых. что получится?
  • Anatoly Podgoretsky © (06.11.06 00:12) [7]
    1.

    2.

    3.

    4.
  • Ketmar © (06.11.06 00:12) [8]
    вот так. лишних -- фтопку.



    ага.
  • Anatoly Podgoretsky © (06.11.06 00:15) [9]
    Публикация на форуме тоже съедает пустые строки.
    Тест 7, номер строки означает количество пустых строк. Тест не прошел, это особенность форума
    Второй внвлогичный тест для тега Code

    1

    2

    3

    4

  • Anatoly Podgoretsky © (06.11.06 00:16) [10]
    И здесь съедает, ну что ж все ясно, бороться с этим бессмысленно, так форум построен.
  • Anatoly Podgoretsky © (06.11.06 00:16) [11]

    > Ketmar ©   (06.11.06 00:12) [8]

    А как ты сделал две пустых строки?
  • Ketmar © (06.11.06 00:17) [12]
    >[11] Anatoly Podgoretsky(c) 6-Nov-2006, 00:16
    >А как ты сделал две пустых строки?
    ты-таки будешь смеяться: поставил в начале по пробелу. %-)
  • Anatoly Podgoretsky © (06.11.06 00:18) [13]
    Понял, это известный глюк, при создании с тегом код, что бы сделать отступ в два пробела, надо делать их три.
  • Ketmar © (06.11.06 00:20) [14]
    >[13] Anatoly Podgoretsky(c) 6-Nov-2006, 00:18
    >Понял, это известный глюк, при создании с тегом код, что
    >бы сделать отступ в два пробела, надо делать их три.
    неа. это просто глупый фильтр в скрипте. #10#10 убить может, а #10#32#10 -- уже не может. %-)
  • Anatoly Podgoretsky © (06.11.06 00:21) [15]
    В общем я добил это дибильное разъединение строк, это была моя ошибка, я добавлял новый текст в List.Text и не учел, что он подставляет переводы к конце. Убрал TStringList заменил на простой string и решил проблему, правда за счет уменьшения удобств и за счет некоторого незначительного падения производительности, ну и бог с ним, так работает правильно.
  • Ketmar © (06.11.06 00:34) [16]
    >[15] Anatoly Podgoretsky(c) 6-Nov-2006, 00:21
    у-у-у... list.text -- это само по себе дикий тормоз. собрать, разобрать, собрать, разобрать, собрать, разобрать...
    %-)
  • Anatoly Podgoretsky © (06.11.06 00:37) [17]
    > Ketmar  (06.11.2006 0:20:14)  [14]
    А это уже другая проблема, потакание миру Юникс, а Интернет протоколы, включая HTML требуют использование досовских разделителей CRLF, из-за этого пришлось делать нормализацию строк, что вообще то ресурсо емкая операция.
  • Anatoly Podgoretsky © (06.11.06 00:40) [18]
    > Ketmar  (06.11.2006 0:34:16)  [16]
    Знаешь string в данном случае, особенно когда строки идут разорваными, а это норма для Base64 это тоже ресурсоемкая вещь, и трудно делать разборку, конечно можно было бы удалять конечные CRLF но ведь их не отличить от нормальных. Пришлось идти неприятным путем, вводить лишнии проверки или пойти еще на большее снижение производительности. Выбрал компромис.
  • guav © (06.11.06 00:44) [19]
    > [18] Anatoly Podgoretsky ©   (06.11.06 00:40)

    Производительнось... сколько пользователей ожидается на сервере, и будут ли они нажимать на секундомер после отправки ?
  • guav © (06.11.06 00:48) [20]
    > [15] Anatoly Podgoretsky ©   (06.11.06 00:21)

    TStringStream ?
  • Ketmar © (06.11.06 00:53) [21]
    >[17] Anatoly Podgoretsky(c) 6-Nov-2006, 00:37
    >Интернет протоколы, включая HTML требуют использование
    >досовских разделителей CRLF
    Анатолий, фигня это. белиберда. %-) не требуют а допускают. "either LF or CR/LF pair". хотя лично я бы жёстко прописал "LF". и никаких. %-)
  • Anatoly Podgoretsky © (06.11.06 01:05) [22]
    > guav  (06.11.2006 0:44:19)  [19]
    Все относительно, особо не волнует эта производительность, просто отметил факт.
    А насчет характеристик ну сколько Виндоус позволит, но я его позиционирую как персональный сервер, в крайнем случае общий для небольшой локальной сети, но никто не мешает выставить его и в Интернет.

    Сами компоненты очень производительные и экономные.

    Мне известны случае, когда несколько десятков тысяч одновременных загрузок, при реализации HTTP сервера.
  • Anatoly Podgoretsky © (06.11.06 01:06) [23]
    > guav  (06.11.2006 0:48:20)  [20]
    Не понял мысль, предлагаешь использовать или что то спрашиваешь?
  • guav © (06.11.06 01:07) [24]
    > [22] Anatoly Podgoretsky ©   (06.11.06 01:05)
    > никто не мешает выставить его и в Интернет.

    Ещё бы кто-то это сделал, перешел бы на него прямо сейчас...
  • Anatoly Podgoretsky © (06.11.06 01:07) [25]
    > Ketmar  (06.11.2006 0:53:21)  [21]
    Не совсем согласен, но жует и только LF в HTML body
  • guav © (06.11.06 01:08) [26]
    > [23] Anatoly Podgoretsky ©   (06.11.06 01:06)

    Предлагаю использовать.
  • Ketmar © (06.11.06 01:10) [27]
    >[25] Anatoly Podgoretsky(c) 6-Nov-2006, 01:07
    >Не совсем согласен, но жует и только LF в HTML body
    давай уточним: html к инет-протоколам никакого отношения не имеет. %-)
  • Anatoly Podgoretsky © (06.11.06 01:11) [28]
    > guav  (06.11.2006 1:07:24)  [24]
    Губа не дура, возможно кто ни будь и выставит на корпоративном сайте или на Windows хостинге. Я постарался над его живучестью, за последнии две недели погибнуть не смог.
  • Ketmar © (06.11.06 01:13) [29]
    я вот только до сих пор не могу понять, нафига там multiuser DB. %-)
  • Anatoly Podgoretsky © (06.11.06 01:13) [30]
    > guav  (06.11.2006 1:07:24)  [24]
    Кстати ты и Геро своими вопросами напомнили мне, что я не сделал настроку на каких интерфейсах слушать, сейчас только на LocalHost совсем упустил из виду.
  • Anatoly Podgoretsky © (06.11.06 01:14) [31]
    > guav  (06.11.2006 1:08:26)  [26]
    Надо взглянуть, но у меня очень много преобразований, прежде чем я смогу куда то загнать, но взгляну.
  • Anatoly Podgoretsky © (06.11.06 01:15) [32]
    > Ketmar  (06.11.2006 1:10:27)  [27]
    Ну давай уточним, скажем я с тобой согласен. Но ты гарантируешь, что кроме body нигде это не используется, поскольку заголовки уже относятся к протоколу.
  • Ketmar © (06.11.06 01:17) [33]
    >[32] Anatoly Podgoretsky(c) 6-Nov-2006, 01:15
    что-то я не понял, что "это" не используется?
  • Anatoly Podgoretsky © (06.11.06 01:18) [34]
    > Ketmar  (06.11.2006 1:13:29)  [29]
    Меня спрашиваешь, так просто, к базе идут обращения из конкуретных потоков, в реальности как правило из 15 - 14 форумов + главный поток, он тоже с базой работает, при том, он асинхронный и количество обращений не лимитируется, работа ведется с клиентским соединением, которых может быть много.
    Поверь я прежде подумал, прежде чем переходить на мультиюзер.
  • Ketmar © (06.11.06 01:20) [35]
    >[34] Anatoly Podgoretsky(c) 6-Nov-2006, 01:18
    так это всё чудно решается одним потоком-диспетчером и MREW'ами. понятно, руками писать больше. зато не надо ничего платного покупать, если собрать свой вариант охота.
  • guav © (06.11.06 01:20) [36]
    > [30] Anatoly Podgoretsky ©   (06.11.06 01:13)

    Удобная конкатенация без добавления CRLF:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     with TStringStream.Create('начало...') do
     try
       WriteString('склеиваем...');
       WriteString('буквы...');
       WriteString('в строки.');
       Memo1.Lines.Text := DataString;
     finally
       Free;
     end;
    end;


    плюс как с обычным стримом можно работать
  • Anatoly Podgoretsky © (06.11.06 18:59) [37]
    > guav  (06.11.2006 1:20:36)  [36]
    Удобная конкатенация без добавления CRLF:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with TStringStream.Create('начало...') do
    try
      WriteString('склеиваем...');
      WriteString('буквы...');
      WriteString('в строки.');
      Memo1.Lines.Text := DataString;
    finally
      Free;
    end;
    end;
  • Anatoly Podgoretsky © (06.11.06 19:01) [38]
    > Anatoly Podgoretsky  (06.11.2006 18:59:37)  [37]

    Удобная конкатенация без добавления CRLF:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with TStringStream.Create('начало...') do
    try
     WriteString('склеиваем...');
     WriteString('буквы...');
     WriteString('в строки.');
     Memo1.Lines.Text := DataString;
    finally
     Free;
    end;
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with TStringStream.Create('начало...') do
    try
     WriteString('склеиваем...');
     WriteString('буквы...');
     WriteString('в строки.');
     Memo1.Lines.Text := DataString;
    finally
     Free;
    end;
    end;

  • Anatoly Podgoretsky © (06.11.06 19:11) [39]
    > Anatoly Podgoretsky  (06.11.2006 18:59:37)  [37]

    Toже но Base64

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with TStringStream.Create('начало...') do
      try
        WriteString('склеиваем...');
        WriteString('буквы...');
        WriteString('в строки.');
        Memo1.Lines.Text := DataString;
      finally
        Free;
      end;
    end;
  • Anatoly Podgoretsky © (06.11.06 19:25) [40]
    > Anatoly Podgoretsky  (06.11.2006 19:11:39)  [39]

    Toже но Base64

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     with TStringStream.Create('начало...') do
     try
       WriteString('склеиваем...');
       WriteString('буквы...');
       WriteString('в строки.');
       Memo1.Lines.Text := DataString;
     finally
       Free;
     end;
    end;
  • Anatoly Podgoretsky © (06.11.06 19:27) [41]
    > Anatoly Podgoretsky  (06.11.2006 19:25:40)  [40]

    Это был QP
    а не Base64
  • Anatoly Podgoretsky © (06.11.06 19:28) [42]
    > Anatoly Podgoretsky  (06.11.2006 19:27:41)  [41]

    Ну вот проблему удалил, это касалось также и QP, забыл, что вначале в строке
    удаляется перенос строки
  • Ketmar © (06.11.06 19:29) [43]
    release candidate?
  • guav © (06.11.06 20:38) [44]
    А как и зачем отправлять из OE в кодировке QP.
  • Anatoly Podgoretsky © (06.11.06 22:40) [45]
    > guav  (06.11.2006 20:38:44)  [44]

    > А как и зачем отправлять из OE в кодировке QP.

    Это очень просто, делается в настройках OE, можно выбрать кодировку и
    выбрать отдельно настройки для почты и новостей, простой текст и html.

    Зачем? Ответ совсем прост, как будет настроена у пользователя, так и уйдет
    на сервер, влиять на это невозможно, поскольку я не пишу OE

    На самом деле я должен предусмотреть возможность работы с любыми настройками
    и кодировками и это получилось, оно будет работать с любыми, но форум
    принимает только 1251 с небольшими вариациями, я могу перекодировать ряд
    кодировок в 1251, но если пользователь пошлет сообщение например в Hebrew,
    то он ССЗБ. Перекодировать из нее невозможно, а что будет на форуме даже
    представить сложно, но у пользователя существует возможность исправиться,
    пока его сильно не побили.

    В дополнение ОЕ иногда плюет на текущие настройки и может выбрать как раз QP
    даже если стоит Base64. Например емайл и имя пользователя чаще всего
    посылаются в этом виде. При том клиент может в одном и том же заголовке
    послать имя например в QP, а адрес в Base64 с вкрапления простого текста.

    Я очень ответсвенно подошел к написанию, второго клиента писать не буду и
    после гамма тестирования к этому уже не вернусь, разве что напишу другую
    более производительную и надежную версию под MS SQL. В данной версии мне
    пришлось в ущерб многому отказаться например от SQL и от транзакции, из-за
    резкого падения производительности для SQL и невозможности применения
    транзакций, хотя они позволили бы повысить скорость как минимум в два разе.
    Нельзя же принять 99 сообщений и потом обломиться на сотом и откатить всю
    работу.

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

    Исходные коды я выставлю, но восспользоваться без платного Absolute Database
    будет затруднительно.
  • Anatoly Podgoretsky © (06.11.06 22:44) [46]
    > Ketmar  (06.11.2006 19:29:43)  [43]

    > release candidate?

    Вообще то можно считать релизом, впереди только документация (можно как
    принято для бесплатных продуктов и не писать) и инсталяция, это уже
    отлажено.
  • Anatoly Podgoretsky © (06.11.06 23:36) [47]
    > Anatoly Podgoretsky  (06.11.2006 22:44:46)  [46]

    Не проверить ли нам UTF8

    О”О?ОћОЈЧЈШіО©ЫћЫ©п­’в?єп­ћп»•

    ЕђЕЅГ?Е 
  • Anatoly Podgoretsky © (06.11.06 23:38) [48]
    > Anatoly Podgoretsky  (06.11.2006 23:36:47)  [47]

    Шиш вам, а может не надо преобразовывать, передать на форум как цифровую последовательность
  • Ketmar © (06.11.06 23:58) [49]
    неа. так только юникод, по-моему, можно. через & и #.
  • Anatoly Podgoretsky © (07.11.06 00:30) [50]
    > Ketmar  (06.11.2006 23:58:49)  [49]

    Я это и имел ввиду, но пока не знаю стоит ли это делать, задача не такая тривиальная, особенно для упакованых текстов и utf
    Можно не стараться, но с другой стороны при вводе на форуме такие коды принимаются.
    Решать то ее надо через Юникод, преобразовывать в Юникод, затем выделять поддиапазоны и недопустимые поддиапазоны передавать через
    &nnnn#;
  • Ketmar © (07.11.06 00:31) [51]
    utf -- фтопку.
  • Anatoly Podgoretsky © (07.11.06 00:47) [52]
    И я такого же мнения

    ŠŨŰǾڬ۩ΩΔΘΣ
 
Конференция "Журнал" » Тест переноса строк
Есть новые Нет новых   [134427   +35][b:0.001][p:0.003]