• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Поиск вьюшек без индекса

  • Автор темы wowa
  • Дата начала
W

wowa

Здравствуйте,

Помогите решить задачку.
Есть 5 баз по одному и тому же шаблону. В этом шаблоне, внимание, 1120 вьюшек.
Посмотрел, в самой крупной базе 66% вьюшек не имеют индекса, значит скорее всего они просто никому не надо и было бы неплохо их удалить.
Но что делать если в одной базе вьюшка не нада, а во второй нужна.

Решил сделать xls отчет, что если в пяти базах индексы пусты, то будем удалять вьюшку.
Как бы это оптимизировать чтобы меньше заполнять руками?

Допустим список всех вьюшек я выгружу спокойно, а как выгрузить есть ли индекс?
Не хочется 1120*5 ячеек заполнять вручную смотрев таблицу из Администратора.

Спасибо.
 
W

wowa

Стоит задача в наведении порядка после горе-разработчиков.
Сначала было решено начать с вьюшек.
Первый шаг удалить вьюшки без индексов, а это 66%.
А потом и остальные просмотреть и посечь многих, все-таки легче просматривать 300 вьюшек, нежели 1100
[DOUBLEPOST=1433500544,1433500435][/DOUBLEPOST]да и при будущей разработке найти нужную вьюшку будет полегче , нежели в этом мусоре
 

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
3
внимание, 1120 вьюшек
ну плодовитые программеры однако)))
Можно сделать так - написать скрипт, который выгрузит в DXL весь дизайн без вьюх,
потом в цикле берем имена вьюх и ищем их упоминание в этом DXL - поймем. есть ли программное обращение к ним. если нет - грохаем.
останется по требованию юзверей добавлять вьюхи, которым им стало так не хватать в шаблон)
 
  • Нравится
Реакции: alexas1

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
ну плодовитые программеры однако)))
:) Не эт не плодовитые. Эт ленивые.
Просили изменить логику - писали под неё вьюшку, а старые не трогали - "вдруг понадобится"
Известный эффект отсутствия комментариев о зависимостях дизайнэлементов.
 
W

wowa

ну плодовитые программеры однако)))
Можно сделать так - написать скрипт, который выгрузит в DXL весь дизайн без вьюх,
потом в цикле берем имена вьюх и ищем их упоминание в этом DXL - поймем. есть ли программное обращение к ним. если нет - грохаем.
останется по требованию юзверей добавлять вьюхи, которым им стало так не хватать в шаблон)
о , а вот это идея мне очень нравится. Но ее все равно надо будет сравнивать с наличием индексов. В самой базе очень много различной навигации.
Хотя.....хотя .......Программное обращение же включает и аутлайны где и будут эти вьюшки если они включены в навигацию.

Появился сразу же вопрос как выгрузить в DXL все кроме вьюшек.... ох давно я не пользовался DXL....

Хотя вот что-то нашел, пример как выгрузить только агенты:
Код:
Sub Initialize
 
	'This agent is designed to export the specified design elements to .dxl (.xml in Notes).
 
Dim session As New NotesSession
Dim db As NotesDatabase
Dim nc As NotesNoteCollection
Dim stream As NotesStream
Dim exporter As NotesDXLExporter
Const filename = "c:\filename.xml" 'Change as required
 
Set db = session.CurrentDatabase
 
Set stream = session.CreateStream
Call stream.Open(filename)
Call stream.Truncate
 
Set nc = db.CreateNoteCollection(False)
nc.SelectAgents=True 'Change as required
Call nc.BuildCollection
 
Set exporter = session.CreateDXLExporter(nc, stream)
Call exporter.Process
End Sub

Я так понимаю в моем случае надо SelectAllNotes(), а потом SelectViews = False
Правильно?

Если это прокатит, то мы примерно и удалим как минимум эти 66% вьюшек и особо нам эти индексы и не надо рассматривать.

Подскажите, где может быть промах?
 

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
BIT
2
не проверял, но может быть
 

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
BIT
2
как вариант дергать консоль
 
W

wowa

Подскажите, вот я выгрузил в файлик весь дизайн кроме вьюшек .
Как более правильно теперь проверить, встречается ли где-то вьюшка с именем, например, "ViewName_1" ?

Код:
Dim stream As NotesStream
Set stream = session.CreateStream
path = "c:\dxl\"
filename = Left(db.FileName, Len(db.FileName) - 3) & "dxl"
filename = path$ & filename$
If Not stream.Open(filename$) Then
MessageBox "Cannot open " & filename$,, "Error"
Exit Sub
End If
Call stream.Truncate
 
REM Create note collection
Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
Call nc.SelectAllNotes(True)
nc.Selectviews = False
Call nc.BuildCollection
 
REM Export note collection as DXL
Dim exporter As NotesDXLExporter
Set exporter = session.CreateDXLExporter(nc, stream)
Call exporter.Process
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
Ты же текст в файл получил? Да хоть в нотепаде сёрчь запузырь.
 
W

wowa

надо в LS, 1100 вьюшек в нотепаде это не дело

Код:
views = db.Views
ForAll v In views
 
??????
 
End ForAll
 

erdi

Green Team
20.08.2008
264
17
BIT
0
Код:
text$ = notesStream.ReadText( [ oneLine& ] , [ eol& ] )
а потом like
 
W

wowa

Код:
text$ = notesStream.ReadText( [ oneLine& ] , [ eol& ] )
а потом like
Спасибо.
Лайком никогда не пользовался, думал Instr какой-н. Но боюсь что будут какие-н ограничения по кол-ву символов. У меня размер файла 25.3мб

Скажите,

Код:
Dim vText As Variant
 
vText = stream.ReadText()
 
ForAll v In views
 
 
'Is Used?
  If vText Like "*" & v.Name & "*" Then
  aRange( iLineCounter, iColumn ) = "Yes" 
  Else
  aRange( iLineCounter, iColumn ) = "No"
  End If
 
End ForAll

Что-то мне подсказывает что я Like так никогда и не научусь пользоваться.
Правильно ли он задан?
Тут такая ситуация, что если у нас есть вьюшка "View_1" и "View_11". А используется только вторая то данный Like покажет что и первая используется. Поэтому может надо
Код:
vText Like {*"} & v.Name & {"*}

Спасибо.
 
S

Shandrik

ну плодовитые программеры однако)))
Можно сделать так - написать скрипт, который выгрузит в DXL весь дизайн без вьюх,
потом в цикле берем имена вьюх и ищем их упоминание в этом DXL - поймем. есть ли программное обращение к ним. если нет - грохаем.
Имя вьюхи в коде запросто может быть составным, особенно учитывая упомянутую ViewName_1.
Например, дробление по последнему символу UNID-а документа получим 16 вьюшек, и ни одна из них не будет явно указана в коде.
 
W

wowa

Ну ,я думаю, что если и будет где-то неявно задана, то при наличии вьюх таких как "View_1", "View_2"...... и т.д. Думаю что в данном случае перед удалением можно будет проверить вручную такие варианты.

Все остальные скрытые вьюхи добавим при возникновении проблем
 
W

wowa

А нафига? Не используются и хрен с ними - они тогда ни на что не влияют (кроме эстетики). А "лишних" 1120 доков (а вьюшки, это просто спец доки) в нотусе - ничто.

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

Так же подсказали что если индекс = 0 - это не означает что она не используется, если колонки не отсортированы, то и индексы не строятся. Как-то так...... Т.е. к индексам особо не привяжешься
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!