Savepearlharbor, по едно копие от Habour, страница 2260

Тя ще изглежда, че това може да се успокои ... Но аз съм фен на патологичните универсални решения, така че реших да направя макрос, който ви позволява да създавате kostyliki да се справят с различни събития от Qt-обекти в промишлен мащаб.

генератор kostylikov

Тя ще изглежда, че новият макрос може да се направи въз основа на старите, просто замяна на някои документи за самоличност на makrosnye аргументи и леко обобщаване макроса.

Macro за генериране kostylikov. версия 1.0

Пропуснете косо тирета (това е все едно, "/") - ужасно разярен!

След написването на тази макро, мислех, че със сигурност, че сега аз много добре направено и дори господарят на шпайкове (като човек по-горе). Много доволен, стартира кода и ... Да, разбира се, нищо не работи. са грешки при компилиране не са били, всичко се случва, но не се нарича обратно повикване, както и дневник паднаха съобщи, че, да речем, ми клас TestWorkaround не разполагат с желания слот.

Аз трябваше да се копае по-нататък. Оказа се, че Меморандума за сътрудничество в Qt не е в състояние да разположи макроси. Той минава кода за извършване на предварителна обработка (т.е. да не е в съответствие с кода, например, който може да се види, ако я пускате събранието с -Е флаг в MinGW, но по никакъв начин не се третира кода).
От друга страна, трябва да знае, меморандумът за сътрудничество, метод на подписи са разположени в блока на декларация клас след думата «слотовете» на - той ги чете като струни и след това използва тези имена низ, когато се обаждате QObject :: свърже (СЛОТ макроси и SIGNAL извлече тези имена + малко на метаданни за точката на употреба). Така стана ясно, че макросите потребителя за генериране kostylikov трябва да изискват същото напишете своя реализация слот.

Опитах се да се сведе до минимум обема и сложността на кода и окончателното решение е (вече окончателния код, с bogomerzkih косо тирета, да)

- Както можете да видите, макроса не описва до края на определен клас, които потребителят трябва да попълни описанието на слот за свикване на разговор (...). Пълни инструкции за използване kostylikov генератор под ...

Пълни инструкции:
1. Генериране някъде клас kostylik използвате макро. В примера, който ще генерира kostylik име YourWorkaroundName. която обвива qtEventName събитие. приема само един аргумент тип EventArg1Type). Код за генериране на клас:

2. Използвайте нов тип навсякъде в кода, където искате да се справят събития от никакви предмети на Qt, които са в състояние да изпрати увити тип събитие (в този пример -. Събитие qtEventName изпращане тип аргумент EventArg1Type). Примерен код, като се използва kostylik:

Всичко е готово. Сега можете да обработвате съобщения от Qt-обекти във всички класове, без ограниченията, наложени от Qt MOC.

заключение

Благодаря ви за вниманието и за вас за четене!

PS Ако откриете грешки в статията - пиша, аз ще се произнесе.

Цитат от уики:
Почтеност - Включва истинност, почтеност, вярност към поетите ангажименти. субективна вяра в правотата на делото, искреността на другите и на себе си в тези мотиви, които човек се ръководи от признаването и зачитането на правата на други хора в това, което по право принадлежи. Честността е обратното на измама, лъжа, кражба, предателство, лицемерие и така нататък.

Вероятно мениджърите на PR на Tele2 самата идеала за честност, в сравнение с други оператори счита, но със скоростта на който Tele2 промяна на тарифите, към която да се обърна, подсказва обратното за мен.

Може би думата "честност" мениджърите на I Tele2 разбират по съвсем различен начин?
Моето разбиране е в пълно съответствие с определението от Уикипедия.
Разберете какво мениджъри от Tele2 за мен остава загадка.

Искам да се хареса на публиката, която операторите не се променят условията на тарифата след закупуване?
Целта на тази статия не е да се намери най-лошото и да се намери по-добър, наистина честен изявление.

PS: За да разберете, че аз не съм с оператора просто казано вътре "игнорира".

Само регистрирани потребители могат да участват в проучването. Влезте. моля.

Проблемите на текст изход, генерира отчети, да изпращат електронна поща. Са дадени съвети за това как да пишат доклади толкова много пъти, можете да използвате код фрагменти, които да се добавят липсващите парчета и сглобени в доклад, по-голяма дължина.
Определено трябва да се направят всички, които събирането на информация с помощта на PowerShell, или иска да се научи как да го използвате ефективно.

Тайните на създаването на Глава 33 Доклади

Тази глава предоставя

  1. Работа с HTML фрагменти
  2. Създаване на стилни доклади HTML
  3. Изпращането на съобщения посредством електронната поща

В тази глава ще разгледаме техники за работа с PowerShell при създаване на отчети. PowerShell не свети, ако искате да работите с низове, опитайте се да използвате този обект. Колкото повече използвате при създаването на обект доклад, толкова по-добре ще бъде в състояние да направи лечението.

33.1 Какво не трябва да се прави.
Нека да започнем с глава на това, което ние мислим за примери за лоши техники за отчитане. Ние постоянно се сблъсквали с този стил. Повечето от професионалисти ИТ не мисля за това и да увековечи в код стил от други езици като VBScript.
Следният код е написана в стил, който ние се надяваме, че няма да използвате, и които ще видите в кода по-малко знаещи системните администратори.

Обява 33.1 лошо проектирани инвентаризация скрипт

Кодът на Обява 33.1 ще изготви заключение по този начин

Фигура 33.1 Изводът се основава на низове.

Там са по-ефективни начини за генериране на доклад, и това е причината, поради която ние написахме тази глава. На първо място, ние ще предложи за всяка единица или функция, което води до генерирането на информация, за да се създаде един обект, който съдържа цялата необходима информация. Колкото повече се е разпаднала на блокове от код, толкова повече ще може да се използва повторно тези блокове. В този лош пример, първата част на "компютърна информация", трябва да е функция, която пишем. Тя може да се използва във всички доклади от този тип. В данните "на информация за диска" посочва един обект, да комбинира информация от различни източници, не е необходимо, но кратките команди да пишем трябва да си тръгне. (Забележка преводач. Как трябва да се вижда от примера в 33.2.1 Получаване на основна информация)

Права са нарушени в тези сценарии, както следва

  1. Добив е смес от текст и обекти
  2. Изходна веднъж форматиран

Това е съзнателно решение, тъй като тя е известна като скриптове и трябва да изглежда така ще бъде използвана в доклада. Поуката от тази история е за показване на обекти, както и да са готови да излязат извън границите на една парадигма, по тази причина.

33.2 Работа с HTML фрагменти и файлове
Номерът на нашия метод е, че ConvertTo-HTML, можете да използвате два различни начина. Първият начин - да се получи пълен HTML страница, а вторият - за да се получи HTML фрагмент. Това парче е само HTML таблица с данните, които са били прехвърлени на кратката команда, ние ще накарат всеки раздел на доклада под формата на фрагмента, а след това се събират фрагментите в пълен HTML страница.

33.2.1 Получаване на допълнителна информация
Започваме с това, че събира предмети, по един обект за всеки раздел на доклада. В нашия случай това ще бъде два обекта - информация за компютъра и диск информация. Съгласни сме, че за кротостта и яснота ще пропусне обработка на грешки, както и други тънкости. В реалния свят, ние ще ги добавим. Самата Get-WMIObject произвежда даден обект, съдържащ информация за устройствата. Така че трябва да се създаде друга важна характеристика обект с информация за компютри.

Функцията извлича информация от три различни класове WMI. Създаване на обект хеш-таблица за използване на събраните от три места, както Ние искаме да бъдем в състояние да предава на изхода от функциите на конвейера. Обикновено, ние предпочитаме да дадат на свойствата на имена без интервали сега се отклоняват от това правило, тъй като те ще се използват имената на в окончателния доклад.

33.2.2 Производство на фрагменти от HTML доклади.

Сега можем да използваме, за да напише функция, за да получите отчета си в HTML

Ние отдавна се премества в този трик, така че трябва да се разглоби:
1. Вие спестявате на изхода като HTML фрагмент в променлива с име $ frag1. по-късно ние ще бъдем в състояние да го поставите на правилното място или цялата продукция запишат изтеглянето.
2. Стартирайте Get-CSInfo. той прехвърля в името на компютъра, с който искаме да получим данните, сега постави този компютър име здраво, ние ще я замени с променлива в бъдеще.
3. В резултат над предвижда да ConvertTo-HTML. Тази команда извежда HTML фрагмент във вертикален списък, а не хоризонтално. Списъкът ще имитира външния вид на стар доклад за зло-технологично информационно-дисплей.
4. Ние използваме -PreContent опция, за да добавите етикет да подпише доклада. Добавихме маркер, за да получите най-смели заглавието.
5. Всичко, което се случи - това е трик - предадена на Out-String. Ще видите ConvertTo-HTML ще постави много неща в тръбопровода. Можете да видите, че в конвейера са написани редове, събирането на реда, най-различни други обекти. Всичко това ще доведе в крайна сметка до проблеми, когато се опитате да го компилирате всичко във финалната HTML страницата, вместо просто подава молба за Out-String и за добив на доброто старо низ.

Можете да отидете напред и да произвеждат втория фрагмент. По-лесно е, защото няма нужда да се напише функция, HTML поколение ще изглеждат абсолютно еднакви. Единствената разлика е, че ние ще събира данните в този раздел на масата, а не в списък:

Имаме двата фрагмента, можете да преминете към формирането на окончателния доклад.

Създаване на $ главата стил лист. в променлива от тип низ описва желания стил. след това Тази променлива се предава -head параметър. и фрагменти на си запетая разделени в -PostContent параметър. заглавието на отчета също се добавя към -PreContent параметър. Запазване на сценария като цяло C: \ Good.ps1 и да го ползвате, както следва:
./ Good> Report.htm
Това ще пренасочи изхода към файл Report.htm. който е красива, както е показано на Фигура 33.2


Фигура 33.2 Докладът на няколко фрагмента

Може би това не е произведение на изкуството, но това е доклад, който изглежда по-добре от доклада на екрана, който започва тази глава. Обява 33.2 показва скрипт завеса, където можете да укажете името на компютъра на Localhost настройки по подразбиране. Заглавието е регистриран [CmdletBinding ()], което позволява -verbose употреба. В организма на скрипта добавя Write-Verbose. можете да видите това, което прави всяка стъпка.

Обява 33.2 HTML скрипт инвентаризация

Сценарият генерира HTML файл, който може да бъде използван в бъдеще, и показва докладът. Имайте предвид, че функцията Get-CSInfo може да се използва повторно. Тъй като това отнема един обект вместо текст, можете да го използвате по най-различни места, където е необходимо, за да се показват една и съща информация.
Ако трябва да добавите повече информация, за да добавите към доклада, е да се добави нов раздел, ще трябва да:

  • Напишете функция или команда генерира информационен обект на нов раздел доклад.
  • Създаване на обект от този HTML фрагмент и да го запазите в променлива.
  • Добави тази променлива към списъка с променливи характеристики на крайния отбор доклад сглобяване. Taki4. м начин ще изготвя доклад.
  • всички

Да, този доклад - това е текст. В крайна сметка, всеки доклад ще бъде текста, тъй като текстът - това е, което четем. Същността на този метод е, че всички обекти остават до последния момент. Оставяте PowerShell формат за вас. Работните елементи на сценария могат да бъдат копирани и използвани на други места, не е възможно да се направи с оригиналния текст в началото на главата.

33.3 Изпращане на имейл
Какво би могло да бъде по-добре, отколкото HTML доклад? В доклада, който автоматично се включва електронна поща!

За част от PowerShell вече съдържа Send-MailMessage кратката команда. Bit определи нашия скрипт:

ние са се променили в края на конвейера за пренасочване на изхода към файл. След това се използва за изпращане-MailMessage като прикачен файл. Можете да изпращате HTML, колкото и самото тяло е съобщението. Не е нужно да се създаде този файл на диска, можете да вземете резултата от самата конвейера. Ето един пример алтернатива

33.4 Обобщение
Създаване на отчети със сигурност е по-голяма нужда от администратори, искахме да покажем, че PowerShell е много подходящ за тази задача. Номерът е да създавате отчети по такъв начин, че да се извлече информация от отделни форматиране и изход. В действителност, PowerShell е в състояние да предостави чудесна възможност за форматиране и изход с малко количество работа от ваша страна.

навигация в публикациите