Информация

Последние записи

Теги


Блоги


Записи из всех блогов на Sql.ru


Предтечи (по мотивам Д.Дойча

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

Анализ и оппонирование главе одиннадцатой Время: первая квантовая концепция.
Arden Shakespeare Sonnet LX
Like as the waves make towards the pebbled shore,
So do our minutes hasten to their end;
Each changing place with that which goes before,
In sequent toil all forwards do contend.


Итак поехали.

Дойч основывает свой вывод о "Другие времена — это всего лишь особые представители других вселенных", на базе "... в физике — в ложной физике пространства-времени. Физическая реальность — это не пространство-время. Это гораздо большая и более многообразная категория, мультиверс." На том, что в иных философских и логических представлениях стараются пользоваться причинно-следственной связью. А она работает только не в "квантовом смысле".
читать дальше...


Ускорение выборки из производных таблиц с учётом всей цепочки наследования

Блог: СУБД Caché
Недавно возникла интересная задача: 21665297 и 21666325.

Итак, дано:
  • три хранимых класса "a","b" и "c", где "с" наследуется от "b", а "b" в свою очередь - от "a";
  • данные всех трёх классов хранятся в одном глобале и соответственно нумерация ID у всех трёх - сквозная;
  • необходимо как-то ускорить следующие запросы, чтобы избежать полного сканирования
    select * from a
    select * from b
    select * from с
  • также должна учитываться вся цепочка наследования при работе с указанными таблицами.
А ларчик-то просто открывается...
автор: servit добавлено: 25 сен 18 просмотры: 1362, комментарии: 1



Инкремент шестнадцатеричных чисел на ABAP

Блог: ABAP Thinking
Друзья, всем известен способ ведения генерации порядковых номеров документов для номеров
с десятеричными цифрами. В транзакции SNRO ведутся диапазоны номеров, а с помощью
функционального модуля NUMBER_GET_NEXT можно получить следующий порядковый номер из диапазона.
В этом очерке описываю, генератор номеров с шестнадцатеричными цифрами на ABAP,
представляю небольшую подпрограмму, увеличивающую шестнадцатеричное число на единицу.
Подпрограмма получает на вход шестнадцатеричное число и увеличивает его на единицу.
*&---------------------------------------------------------------------*
*&      Form  INCREASE_KEY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM INCREASE_KEY  CHANGING pv_key type wanid.
  CONSTANTS:

     c_transl  type text100 value

               '0112233445566778899AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ0'.

  TRANSLATE pv_key+2(1)  USING c_transl.

  IF pv_key+2(1) = '0'.

    TRANSLATE pv_key+1(1)  USING c_transl.

    IF pv_key+1(1) = '0'.

      TRANSLATE pv_key+0(1)  USING c_transl.

    ENDIF.

  ENDIF.

ENDFORM.                    " INCREASE_KEY
автор: Изя Шниперсон добавлено: 21 сен 18 просмотры: 1369, комментарии: 1



Winsoft OCR EngineMode := emTesseractOnly

В свойствах TOcr есть EngineMode, где можно указать "emTesseractOnly".

Ocr1.EngineMode := emTesseractOnly;

При этом возникает исключение
exception
Project raised exception class EOcrError with message 'Cannot initialize Tesseract library'


Это связано с тем, что используете emTesseractOnly, т.е. при использовании устаревшего движка Tesseract вам необходимо загрузить и использовать данные языка Tesseract из репозитория tessdata:
https://github.com/tesseract-ocr/tessdata

Репозиторий Tessdata также поддерживает механизм LSTM. При использовании только LSTM нейронной сети, вы можете использовать данные языка из tessdata_fast или tessdata_best
https://github.com/tesseract-ocr/tessdata_fast
https://github.com/tesseract-ocr/tessdata_best
автор: X11 добавлено: 27 авг 18 просмотры: 1594, комментарии: 0



Сохранение данных таблицы в запрос настройки

Блог: ABAP Thinking
Друзья, хочу опубликовать код, позволяющий сохранять записи таблицы словаря в транспортный запрос настройки для переноса в другие системы на примере небольшой подпрограммы:
FORM PUT_TO_TRANSPORT TABLES lt_wanid TYPE tty_wanid.

  DATA: l_order LIKE e070-trkorr,
            l_task  LIKE e070-trkorr.

 "Внутренние таблицы с ключами строк таблицы словаря, помещаемыми в запрос
  DATA: lt_e071  TYPE e071  OCCURS 4  WITH HEADER LINE,
            lt_e071k TYPE e071k OCCURS 25 WITH HEADER LINE.
  DATA: lv_wanid type wanid,
            ls_tvwa type tvwa.
  ranges: lr_wanid for tvwa-wanid.
* >>> Формирование данных для включения записей в транспортный запрос -&
  DEFINE mac__add_table. "Макрос для заполнения 
    clear lt_e071.
    lt_e071-pgmid    = 'R3TR'.
    lt_e071-object   = 'TABU'.
    lt_e071-obj_name = &1.
    lt_e071-objfunc  = 'K'.
    append lt_e071.
    lt_e071k-pgmid      = 'R3TR'.
    lt_e071k-object     = 'TABU'.
    lt_e071k-objname    = &1.
    lt_e071k-mastertype = 'TABU'.
    lt_e071k-mastername = &1.
    lt_e071k-tabkey    = sy-mandt. "Первая часть ключа у таблиц - мандант
    case &1.
      when 'TVWA'.  " В запрос помещается содержимое 2х таблиц TVWA и TVWAТ
        lt_e071k-tabkey+3  = lv_wanid. "Вторая часть ключа для таблицы  TVWA
     when 'TVWAT'.
        lt_e071k-tabkey+3 =  sy-langu. "Вторая часть ключа для таблицы  TVWAT - язык
        lt_e071k-tabkey+4  = lv_wanid. "Третья часть ключа для таблицы  TVWAT 
    endcase.
    append lt_e071k.
  END-OF-DEFINITION.
* <<< -----------------------------------------------------------------*
  loop at lt_wanid into lv_wanid.
    select SINGLE * from tvwa into ls_tvwa WHERE wanid = lv_wanid.
    
* Формирование данных присвоения
    mac__add_table: 'TVWA',
                    'TVWAT'.

  endloop.
  if lt_e071[] is NOT INITIAL and lt_e071k[] is NOT INITIAL.
* Выбор запроса на перенос (запрос инструментальных средств)
    CALL FUNCTION 'TR_ORDER_CHOICE_CORRECTION'
      EXPORTING
        iv_category = 'SYST'                                "#EC NOTEXT
      IMPORTING
        ev_order    = l_order
        ev_task     = l_task
      EXCEPTIONS
        OTHERS      = 1.
    IF sy-subrc <> 0.
      exit.
    ENDIF.
* Присвоение данных запросу
    CALL FUNCTION 'TR_APPEND_TO_COMM_OBJS_KEYS'
      EXPORTING
        wi_trkorr = l_task
      TABLES
        wt_e071   = lt_e071
        wt_e071k  = lt_e071k
      EXCEPTIONS
        OTHERS    = 1.
    IF sy-subrc <> 0.
*   MSG: ошибка присвоения данных запросу
    ENDIF.
  endif.

ENDFORM.                    " PUT_TO_TRANSPORT
автор: Изя Шниперсон добавлено: 10 авг 18 просмотры: 1535, комментарии: 0



Регистронезависимый Contains в Delphi

В справке по System.SysUtils.TStringHelper.Contains написано, что Contains - This function is case-sensitive.

А как сделать Contains case-insensitive?
Можно воспользоваться другими функциями, например, ToUpper.
Итого:
'Test'.ToUpper.Contains('s'.ToUpper)

вернёт true
автор: X11 добавлено: 06 авг 18 просмотры: 1738, комментарии: 0



IDisposable - что ваша мама не говорила об освобождении ресурсов. Что не так с IDisposble.

Блог: Gandjustas' blog

Это перевод первой части статьи https://www.codeproject.com/Articles/29534/IDisposable-What-Your-Mother-Never-Told-You-About. Статья была написана в 2008 году. Спустя 10 лет почти не потеряла актуальности.

Детерминированное освобождение ресурсов - необходимость

В течение более чем 20-летнего опыта кодирования я иногда разрабатывал собственные языки для решения задач. Они варьировались от простых имеративных языков до специализрованных регулярных выражений для деревьев. При создании языков есть множество рекомендаций и некоторые простые правила не должны нарушаться. Одно из них:

Никогда не создавай язык с исключениями, в котором нет детерминированного освобождения ресурсов.

Угадайте какой рекомендации не следует рантайм .NET, и как следствие все языки на его базе?

Причина по которой существует данное правило - детерминированное освобождение ресурсов необходимо для создания поддерживаемых программ. Детерминированное освобождение ресурсов обеспечивает определенную точку, в которой программист уверен, что ресурс освобожден. Существует два способа написания надежных программ: традиционный подход - освобождать ресурсы как можно раньше и соверменный подход - с освобождением ресурсов в течение неопределенного времени. Преимущество современного подхода в том, что программисту не надо явно освобождать ресурсы. Недостаток в том, что гораздо сложнее написать надежное приложение, появляется много трудноуловимых ошибок. К сожалению рантайм .NET создан с использование...

читать дальше...
автор: gandjustas добавлено: 18 июл 18 просмотры: 2142, комментарии: 0



cxGrid - Data row fixing

В версии 2017.2.2 появилась возможность закреплять вверху или внизу сетки несколько записей, как программно, так и пользователю с помощью мышки.

За это отвечают несколько свойств:
1. Нужно включить GridView.OptionsCustomize.DataRowFixing, чтобы включить этот функционал.

2. Определить, как будет выглядеть в таблице значок, который будет видеть пользователь GridView.FixedDataRows.PinVisibility (rpvAlways, rpvHotTrack or rpvRowHotTrack), если программист собирается дать пользователю управлять закреплёнными строками:
Картинка с другого сайта.

Чтобы программно управлять закреплёнными строками (row), воспользуйтесь свойством DataController.RowFixedState:
cxGrid1DBTableView1.DataController.RowFixedState[0] := rfsFixedToTop; 


Пример цикла:
procedure TForm1.FixRows2;
Var
 colName: TcxGridDBColumn;
 iCurRow: integer;
 ARowInfo:  TcxRowInfo;
begin
  colName := cxGrid1DBTableView1.GetColumnByFieldName(constMyColNAME);
  if not Assigned(colName) then exit;

  cxGrid1DBTableView1.BeginUpdate;
  try

    for iCurRow := 0 to Pred(cxGrid1DBTableView1.DataController.RowCount) do
    begin
      ARowInfo := cxGrid1DBTableView1.DataController.GetRowInfo(iCurRow);

      if ARowInfo.Level < cxGrid1DBTableView1.DataController.Groups.GroupingItemCount then
        Continue
     else
       begin
         //если есть нужное значение, закрепляем строку
         if cxGrid1DBTableView1.DataController.Values[ARowInfo.RecordIndex, colName.Index] = 'my value 123'
         then
           cxGrid1DBTableView1.DataController.RowFixedState[iCurRow] := rfsFixedToTop;


       end;
    end;// for

  finally
    cxGrid1DBTableView1.EndUpdate;
  end;
end;


Ист:
https://www.devexpress.com/Support/Center/Question/Details/K18187/how-to-fix-a-row
http://www.sql.ru/forum/1296597/cxgrid-fixed-data-rows
автор: X11 добавлено: 25 июн 18 просмотры: 2149, комментарии: 0



MS SQL Reporting Services. Статистика выполнения отчетов

В продолжении темы с Reporting Services.
Предыдущие были про обновление Reporting Services и про SSL и с ним связанной ошибки. Теперь, после того как обновили до последней версии наш сервер отчетов, настроили SSL, мы решили провести аудит своих более N -cотен отчетов:

Какие отчеты используются? Как часто и кем? Что вообще не используются?


Получение данной информации не составит труда и база данных Reporting Services уже содержит необходимую информацию для ответов наших вопросов в предоставлении [dbo].[ExecutionLog] которая берет информацию из таблицы [dbo].[ExecutionLogStorage]. Более подробно описано ниже ...
автор: dbasimple добавлено: 18 июн 18 просмотры: 2256, комментарии: 0



Reporting Services. Делаем доверенным сайт отчетов.



После установки Reporting Services на сервер и привязки web ресурса к протоколу SSL, где по умолчанию прописывается сертификат сервера, сайт все еще считается не безопасным и не разрешенным.

Получается вроде сайт безопасный, а браузер говорит нет:


Если сервер отчетов работает только для сотрудников компании, ограниченному числу лиц, то это не проблема, но если сервисом пользуются внешние сотрудники или данные ресурс используется для официальных отчетов, то сервис должен быть оформлен в плане безопасности согласно современным средствам, в том числе и доверительным сертификатом. А иногда просто надоедает предупреждение браузера. Ниже описываю как это делается и решение небольшой проблемы с которой столкнулся ...
автор: dbasimple добавлено: 07 июн 18 просмотры: 2272, комментарии: 0


предыдущие записи