Я наконец нашел, как, но мне не нравится этот способ, поскольку вместо того, чтобы удалять то, что вы не хотите, вы определяете, какие кнопки вы хотите (и просто не ставите то, что вам не нужно). Когда вы вызываете CKeditor.replace, вы можете определить панель инструментов следующим образом:
CKEDITOR.replace( 'YOURE_TEXT_AREA_ID', {
toolbar: [
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ], items: [ 'Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates' ] },
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ], items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ], items: [ 'Find', 'Replace', '-', 'SelectAll', '-', 'Scayt' ] },
{ name: 'forms', items: [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] },
'/',
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ], items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat' ] },
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ], items: [ 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl', 'Language' ] },
{ name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },
{ name: 'insert', items: [ 'Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe' ] },
'/',
{ name: 'styles', items: [ 'Styles', 'Format', 'Font', 'FontSize' ] },
{ name: 'colors', items: [ 'TextColor', 'BGColor' ] },
{ name: 'tools', items: [ 'Maximize', 'ShowBlocks' ] },
{ name: 'others', items: [ '-' ] },
{ name: 'about', items: [ 'About' ] }
]
});
(для справки это стандартная полная панель инструментов) Элементы представляют кнопки, поэтому просто удаляйте ненужные элементы. Вот и все.
Есть ли лучший ответ?
Вот список профайлеров .Net с открытым исходным кодом .
Я использовал и мне нравился Ants-Profiler от Red Gate, но он стоит денег (оно того стоит, ИМХО).
Профилировщик Visual Studio является частью только Team System. Он не включен в Visual Studio Professional.
Существует бесплатный профилировщик .NET под названием nprof , но он еще не выпущен и может быть довольно нестабильным. Кроме того, есть отличные коммерческие профилировщики, такие как ANTS Profiler от Red Gate ; однако это не низкая стоимость.
Обратите внимание на профилировщик EQATEC , он бесплатный и работает довольно хорошо. Также работает для ASP.NET и .NET CF.
Я рекомендую dotTrace. Не бесплатно, цена составляет 170 евро за персональную лицензию.
Если вы просто хотите профилировать память, отлично подойдет .NET Memory Profiler . После этого у него есть пробный период и небольшая стоимость - оно того стоит. Если вы хотите потратить немного денег, DevPartner Studio очень хороша.
Профилировщики для .NET обсуждаются в этом потоке переполнения стека . Я использовал CLR Profiler несколько, и это помогало мне раньше решать некоторые проблемы с производительностью программного обеспечения. Стоит попробовать. Microsoft опубликовала руководство по использованию профилировщика CLR .
Для настройки производительности, в отличие от диагностики памяти, есть простой способ сделать это .
Это нелогично, но все, что вам нужно сделать, это запустить программу в среде IDE, и, пока она работает медленно, несколько раз приостановить ее, исследуя стек вызовов на предмет понять, почему он делает то, что делает. Скорее всего, несколько образцов покажут, что он делает что-то, от чего вы можете избавиться. Сэкономленное время примерно равно доле выборок, содержащих исправленный вами код.
Он «быстрый и грязный», но в отличие от большинства профилировщиков, он точно определяет фактические операторы, требующие внимания, а не только функции, которые их содержат. Он также дает приблизительную оценку ускорения, которого вы можете ожидать, исправив их. Его не смущает рекурсия, и он позволяет избежать трудности дерева вызовов, заключающейся в том, что проблема может быть небольшой в любой ветви, но может быть большой из-за того, что она распределена по множеству групп.
Я беру несколько образцов N, обычно не более 20 . Если где-то в середине стека есть активная точка или вызов мошеннического метода, на который уходит некоторая доля F времени выполнения, то количество выборок, которые покажут это, равно NF + - sqrt (NF (1-F). Если N = 20 и F = 0,15, например, количество образцов, которые покажут это, составляет 3 + - 1,6, так что у меня есть отличные шансы найти его.
Часто F больше похоже на 0,5, поэтому количество образцов, показывающих это составляет 10 + - 2,2, поэтому его нельзя пропустить.
Обратите внимание, это не имеет абсолютно никакого отношения к тому, насколько быстро код или как часто он выполняется. Если оптимизация сэкономит вам определенный процент времени, от этого зависит, какой процент образцов будет отображать его для вас.
Обычно есть несколько мест для оптимизации. Если в задаче 1 F1 = 0,5, а в задаче 2 F2 = 0,1, то если вы исправляете проблему 1 (удваивая скорость программы), то F2 обычно увеличивается на этот коэффициент до 0,2. Так что вы можете сделать это снова и быть уверенным, что найдете проблему 2. Таким образом, вы можете решить ряд проблем, пока код не станет практически оптимальным.