Savepearlharbor, o copie mai multe dintre Habour, pagina 2260

S-ar părea că acest lucru ar putea calmez ... Dar eu sunt un fan al soluțiilor patologice universale, așa că am decis să fac un macro care vă permite să creați kostyliki să se ocupe de evenimente diferite de la Qt-obiecte într-o scară industrială.

Generator kostylikov

S-ar părea că noul macro se poate face pe baza vechi, pur și simplu înlocuirea unor ID-uri de pe argumente makrosnye și ușor generalizând macro.

Macro pentru generarea kostylikov. versiunea 1.0

Omite linii oblice (asta e ca, „/“) - teribil înfuriată!

După ce a scris acest macro, m-am gândit sigur că acum eu prea bine făcut și chiar stăpânul piroane (cum ar fi tipul de mai sus). Foarte mulțumit, a lansat codul și ... Da, desigur, nimic nu a lucrat. erori de compilare nu au fost, totul merge, dar nu a fost numit apel invers, și un jurnal a scăzut raportat că, să zicem, clasa mea TestWorkaround nu au slotul dorit.

A trebuit să sape în continuare. Sa dovedit că BOM în Qt nu este în măsură să desfășoare macro-uri. El trece codul pentru a efectua preprocesarea (adică, nu în conformitate cu codul, de exemplu, care poate fi văzut dacă rulați ansamblul cu steagul -R în MinGW, dar în tratat codul nici un fel).
Pe de altă parte, trebuie să știe MOC semnături metodă sunt situate în blocuri de declarații de clasă după «sloturi» cuvânt - el le citește ca siruri de caractere și apoi folosește aceste nume șir atunci când apel QObject :: conecta (macro-uri SLOT și SEMNAL extrage aceste nume + un pic de metadate despre punctul de utilizare). Astfel, a devenit clar că macro-uri de utilizator pentru a genera kostylikov trebuie să solicite același lucru scrie intervalul dvs. de realizare.

Am încercat să reducă la minimum volumul și complexitatea codului și decizia finală este ca (deja codul final cu bogomerzkih linii oblice, da)

- După cum puteți vedea, macro nu descrie la sfârșitul unei anumite clase, pe care utilizatorul trebuie să completeze descrierea slot pentru apelarea CALL (...). Instrucțiuni complete pentru utilizarea kostylikov generator de mai jos ...

Instrucțiuni complete:
1. Generarea de clasa undeva kostylik folosind un macro. În exemplul vom genera kostylik numit YourWorkaroundName. care se înfășoară eveniment qtEventName. ia un argument de tip EventArg1Type). Codul pentru a genera o clasă:

2. Utilizați un nou tip de oriunde în cod în cazul în care doriți să se ocupe de evenimente de orice obiecte din Qt, care sunt în măsură să trimită tipul evenimentului înfășurat (în acest exemplu. - un eveniment qtEventName trimiterea unui tip de argument EventArg1Type). Exemplu de cod folosind kostylik:

Totul este pregătit. Acum puteți procesa mesajele de la Qt-obiecte în toate clasele, fără constrângerile impuse de Qt MOC.

concluzie

Vă mulțumesc pentru atenție și pentru tine pentru a citi!

PS Dacă găsiți orice erori în articol - scrie, voi conduce.

Citat din mesajul wiki:
Integritate - Include veridicitate, integritate, fidelitate angajamentelor. credința subiectivă în justețea cauzei, sinceritatea altora și să se pe aceste motive, pe care omul este ghidat de recunoașterea și respectarea drepturilor altor persoane asupra a ceea ce aparțin de drept. Onestitatea este opusul înșelarea, minciuna, furtul, trădări, ipocrizie și așa mai departe.

Este posibil ca managerii de PR ale Tele2 însuși idealul de onestitate, în comparație cu alți operatori consideră, dar cu viteza de care Tele2 schimbarea tarifelor, la care mă întorc, sugerează contrariul pentru mine.

Poate cuvântul „onestitate“ manageri am Tele2 înțeleg destul de diferit?
Înțelegerea mea este în deplină concordanță cu definiția de la Wikipedia.
Înțelegeți ce managerii din Tele2 pentru mine rămâne un mister.

Vreau să fac apel la public, pe care operatorii nu schimbă condițiile tarifului după cumpărare?
Scopul acestui articol nu este de a găsi cel mai rău, și pentru a găsi o declarație într-adevăr onest mai bine.

PS: Pentru a afla că nu sunt cu operatorul pur și simplu pune în interiorul „ignorați“.

Numai utilizatorii inregistrati pot participa la sondaj. Intrați. te rog.

Problemele de text, genera rapoarte, trimite e-mail. Se dau sfaturi cu privire la modul de a scrie rapoarte, astfel încât de multe ori le puteți utiliza fragmente de cod pentru a adăuga piesele lipsă, și asamblate într-un raport mai mare lungime.
Categoric trebuie tuturor celor care fac colectarea de informații utilizând PowerShell, sau vrea să învețe cum să-l folosească în mod eficient.

Secretele de a crea capitolul 33 Rapoarte

Acest capitol oferă

  1. Lucrul cu fragmente HTML
  2. Crearea unui rapoarte HTML elegant
  3. Trimiterea rapoartelor prin e-mail

În acest capitol ne vom uita la tehnici de lucru cu PowerShell la crearea de rapoarte. PowerShell nu strălucește, dacă doriți să lucrați cu siruri de caractere, încercați să utilizați acest obiect. Cu cât mai mult utilizat la crearea unui obiect raport, cu atât mai bine va fi capabil să facă tratament.

33,1 Ceea ce nu ar trebui să fie făcut.
Să începem cu capul a ceea ce ne gândim la exemple de tehnici de raportare proaste. Am venit în mod constant peste acest stil. Cele mai multe dintre profesioniștii IT nu se gândesc la ea și perpetua în stilul de cod din alte limbi, cum ar fi VBScript.
Următorul cod este scris într-un stil pe care sperăm că nu se va folosi, și pe care le veți vedea în codul administratorilor de sistem mai puțin informați.

Listarea 33,1 script-ul de inventar prost proiectat

Codul din listingul 33.1 va produce o concluzie ca aceasta

Figura 33.1 Concluzia bazată pe siruri de caractere.

Există modalități mai eficiente de a genera un raport, iar acesta este motivul pentru care am scris acest capitol. În primul rând, ne-ar sugera pentru fiecare unitate sau funcție, ceea ce conduce la generarea de informații pentru a crea un singur obiect care conține toate informațiile necesare. Cu cât rupe în blocuri de cod mai mult, cu atât mai mult va fi capabil să reutilizați aceste blocuri. În acest exemplu rău, prima secțiune „informații de calculator“, trebuie să fie o funcție pe care le scrie. Acesta poate fi utilizat în toate rapoartele de acest tip. În datele „informațiile de pe disc“ specifică un obiect, se combină informații din diferite surse, nu este necesară, dar cmdleturile să scrie ar trebui să plece. (Notă interpret. Cum ar trebui să vedem în exemplul din secțiunea Obținerea subsecțiunea 33.2.1 informații generale)

Drepturile sunt încălcate în aceste scenarii, următoarele

  1. Randamentul este un amestec de text și obiecte
  2. o dată de ieșire formatat

Este o decizie conștientă, din moment ce este cunoscut sub numele de script-uri și ar trebui să arate ca raportul va fi utilizat. Morala acestei povești este de a afișa obiecte, și să fie pregătit pentru a merge dincolo de limitele unei paradigme pentru acest motiv.

33.2 Lucrul cu fragmente HTML și fișiere
Trucul metodei noastre este ca ConvertTo-HTML, puteți utiliza două moduri diferite. Primul mod - pentru a produce o pagină HTML complet, al doilea - pentru a produce un fragment de HTML. Aceasta piesa este doar un tabel HTML cu datele care au fost transferate la cmdletul, vom face fiecare secțiune a raportului, sub forma fragmentului, și apoi se colectează fragmente într-o pagină HTML complet.

Obținerea de informații de fond subsecțiunea 33.2.1
Începem cu faptul că colecta obiecte de date, un obiect pentru fiecare secțiune a raportului. În cazul nostru va fi două obiecte - informații despre computer și discul informațiile. Suntem de acord că pentru blândețea și claritatea ne va fi dor de eroare de manipulare, precum și alte subtilități. În lumea reală le-ar adăuga. Get-WMIObject sine produce un obiect de informații despre care conține unități. Deci, aveți nevoie pentru a crea un alt obiect caracteristică remarcabilă cu informații despre calculatoare.

Funcția preia informații din trei clase diferite WMI. Crearea unui tabel de obiect hash folosind colectate de la trei site-uri ca Dorim să fie în măsură să transmită datele de ieșire ale funcțiilor transportoare. De obicei, preferam pentru a da proprietățile de nume fără spații se abat acum de la această regulă, deoarece acestea sunt de gând să folosească numele în raportul final.

33.2.2 Producerea de fragmente de cod HTML rapoarte.

Acum putem folosi pentru a scrie o funcție pentru a primi raportul în HTML

Ne-am mutat mult timp la acest truc, așa că trebuie să fie demontat:
1. salvați de ieșire ca un fragment HTML intr-o variabila numita $ frag1. mai târziu, vom putea să-l introducă în locul potrivit sau întreaga producție salvate într-un fișier.
2. Rulați Get-CSInfo. el a transferat la numele computerului cu care ne-o dorim pentru a obține date, am pus acum acest nume de computer ferm, îl vom înlocui cu o variabilă în viitor.
3. Ieșirea rezultată furnizează ConvertTo-HTML. Această comandă emite un fragment HTML într-o listă verticală, mai degrabă decât pe orizontală. Lista va imita aspectul unui raport vechi cu privire la rău-tehnologie-informații-display.
4. Folosim opțiunea -PreContent pentru a adăuga o etichetă pentru a semna raportul. Am adăugat o etichetă pentru a obține titlul cu caractere aldine.
5. Tot ceea ce sa întâmplat - acesta este un truc - a trecut pe la out-String. Vei vedea ConvertTo-HTML va pune o mulțime de lucruri în curs de pregătire. Puteți vedea că, în transportorul cu linii sunt scrise, colecția de rânduri, tot felul de alte obiecte. Toate acestea vor duce în final la probleme atunci când încercați să-l toate compila în pagina HTML finală, în schimb ne-am depus pentru out-String si recoltând bun șir vechi.

Puteți merge mai departe și pentru a produce al doilea fragment. Este mai ușor pentru că nu este nevoie de a scrie o funcție, generarea HTML va arata exact la fel. Singura diferență este că vom colecta datele din această secțiune a tabelului, mai degrabă decât o listă:

Avem ambele fragmente, puteți trece la formarea raportului final.

Creați un cap $ foaie de stil. într-o variabilă de tip string descrie stilul dorit. Această variabilă este apoi trecut la parametrul -cap. și fragmente de virgulă dvs. separate în parametrul -PostContent. titlul raportului este, de asemenea, adăugat la parametrul -PreContent. Salvați scriptul ca întreg C: \ Good.ps1 și rulați-l după cum urmează:
./ Bun> Report.htm
Aceasta va redirecționa de ieșire într-un fișier Report.htm. care este frumos, așa cum se arată în Figura 33.2


Figura 33.2 Raportul de mai multe fragmente

Poate că acest lucru nu este o operă de artă, dar este un raport care arată mai bine decât raportul pe ecran, care începe acest capitol. Listarea 33.2 prezintă un script perdele, unde puteți specifica numele computerului de pe implicit localhost. Titlul este înregistrat [CmdletBinding ()], ceea ce permite utilizarea -verbose. În corpul de script-ul inserat Write-Detaliat. puteți vedea ce face fiecare pas.

Listarea 33.2 HTML inventar script

Script-ul generează un fișier HTML care poate fi utilizat în viitor, și afișează raportul. Rețineți că funcția Get-CSInfo pot fi refolosite. Din moment ce este nevoie de un obiect în loc de text, îl puteți folosi în mai multe locuri diferite, în cazul în care necesitatea de a afișa aceleași informații.
Dacă trebuie să adăugați mai multe informații pentru a adăuga la raport, este de a adăuga o nouă secțiune va trebui să:

  • Scrieți o funcție sau comandă generează o informație obiect al unei noi secțiuni raport.
  • Crearea unui obiect al acestui fragment de cod HTML și salvați-l într-o variabilă.
  • Adăugați această variabilă la lista variabilelor echipei de asamblare finală raport. Taki4. m mod vă va finaliza un raport.
  • toate

Da, acest raport - este un text. În cele din urmă, fiecare raport va fi textul, deoarece textul - aceasta este ceea ce am citit. Esența acestei metode este faptul că toate obiectele rămân până în ultimul moment. Ai lăsat format PowerShell pentru tine. Elementele de lucru ale scenariului pot fi copiate și folosite în altă parte, este imposibil de a face cu textul original de la începutul capitolului.

33.3 Trimiterea unui e-mail
Ce ar putea fi mai bun decât raportul HTML? Raportul, care vine în mod automat pe e-mail!

Pentru o parte a PowerShell conține deja un cmdlet Trimite-MailMessage. Bit repara script-ul nostru:

am schimbat capătul transportorului pentru a redirecționa de ieșire într-un fișier. Apoi a folosit Trimite-MailMessage ca atașament. Puteți trimite HTML ca organismul în sine este mesajul. Nu aveți nevoie pentru a crea acest fișier de pe disc, puteți lua de ieșire de pe transportor în sine. Aici este un exemplu alternativ

33.4 Rezumat
Crearea de rapoarte este cu siguranță o mare nevoie de administratori, ne-am dorit să arătăm că PowerShell este foarte potrivit pentru această sarcină. Trucul este de a crea rapoarte în așa fel încât să se extragă informații din formatare și de ieșire separată. De fapt, PowerShell este în măsură să ofere o mare oportunitate pentru formatare și de ieșire cu o cantitate mică de muncă din partea ta.

Mesaj de navigare