Komunikacijne softver za slab signal

Source: http://physics.princeton.edu/pulsar/K1JT/

WSJT-X, WSJT, MAP65 i WSPR su open-source programi dizajniran za slab signal digitalne komunikacije radio amatera. Normalno korištenje zahtijeva standard SSB primopredajnik i lični računar sa zvučne kartice, ili ekvivalent. SDR-style hardver, uključujući SDR-IQ, Perseus, softrock, a FUNcube dongle je podržan od strane MAP65 i WSPR. SimJT je uslužni program koji generira simuliranim signali za potrebe testiranja. Svi programi su na raspolaganju besplatno, pod licencom GNU General Public License. paketi za instalaciju WSJT-X su dostupni za Windows, Linux i OS X; WSJT i WSPR imati Windows i Linux paketa, i MAP65 i SimJT su samo za Windows. Za više detalja o izvornom kodu i operativnih sistema, pogledajte stranicu za razvoj programa.

WSJT-X ( “Slab signal komunikacije, od K1JT”) nudi specifične digitalni protokole optimizirana za EME (Moonbounce), meteor scatter, i jonosferskih skater, na VHF/UHF, kao i za LF, MF, i HF razmnožavanje. Program može dekodirati frakcija-of-a-drugi signali ogleda iz jonizovanog meteora staze i stabilan signal više od 10 dB ispod zvučni praga. WSJT-X sadrži gotovo sve popularne mogućnosti programa WSJT i WSPR, dodajući sveobuhvatnu kontrolu bušenje i mnoge druge funkcije. Provjerite WSJT-X stranice i linkove u njemu za detalje o načinima JT4, jt9, JT65, QRA64, ISCAT, MSK144, i WSPR.

WSJT je originalni program, započet u 2001. Verzija 10 implementira prikaza JTMS, FSK441, FSK315, ISCAT, JT6M, JT65, i JT4.

MAP65 implementira širokopojasni prijemnik za JT65 signale, optimiziran za EME na VHF/UHF. Može se koristiti zajedno sa Linrad (od SM5BSZ) ili s direktnim ulaz iz zvučne kartice ili FUNcube Dongle. Program dekodira sve JT65 signale u propusnom opsegu širine do 90 kHz, proizvodeći sortirane bend karta dekodirani pozivnih znakova. U dual-polarizacija sistem, MAP65 optimalno odgovara polarizacija kut svakog signala, čime se eliminiše problema sa rotacijom Faraday i prostorne polarizacije odstupanja.

WSPR (izgovara se “visper”) je skraćenica za “Slab Signal Širenje Reporter.” Ovaj program je dizajniran za slanje i primanje prenose male snage za testiranje propagacije staze na MF i HF opsezima. Korisnici koji imaju pristup internetu mogu gledati rezultate u realnom vremenu na WSPRnet. Verzija 2.11 od WSPR uključuje FMT, paket komandne linije alata koji vam mogu pomoći da se mjerenja vrlo precizne frekvencije bez skupih laboratorijske opreme. Eksperimentalna verzija WSPR-X je dostupan, nudeći opcioni mod WSPR-15 sa 15-ak minuta transmisije i bolje osjetljivosti za oko 9 dB.

SimJT stvara JT65 i CW test signale sa odredio korisnik odnos signal-šum. To je korisno za testiranje JT65 dekoder i relativne sposobnosti ova dva režima.


©2001-2016  by Joe Taylor, K1JT

Knjige na obrazac orijentiranih arhitektura softvera

Source: http://www.cs.wustl.edu/~schmidt/POSA/

Ova stranica opisuje pet knjiga o obrascu orijentisane arhitektura softvera (POSA). Sve ove knjige su objavljene od strane Wiley.

1.     Obrazac-orijentisana arhitektura softvera: sistemne obrasce, Zapremina 1

POSA1 je prvi volumen u POSA seriji i bio je objavljen u 1996. Ova knjiga predstavlja napredak i evoluciju obrazac pristup u sistem obrazaca sposoban opisivanja i dokumentiranja aplikacija velike. Obrasci predstavljena u ovoj knjizi obuhvataju nekoliko nivoa apstrakcije iz arhitektonskog obrasce na visokom nivou i obrasce dizajna srednjeg nivoa u idioma niskom nivou.

2.    Obrazac-orijentisana arhitektura softvera: obrasci za istovremenu i umrežene objekata, Zapremina 2

POSA2 je drugi tom u POSA serije i objavljena je 2000. godine 17 obrasce u POSA2 čine osnovu jezika obrasca koji se bavi pitanjima u vezi sa konkurentnosti i umrežavanje. Ovaj materijal predstavlja niz obrazaca iz idioma u arhitekturi dizajna. Obrasci pokriti osnovne elemente za izgradnju konkurentnih i umreženog sistema: pristup i konfiguracije servisa, rukovanje događaj, sinhronizacija, i konkurentnost. Svi obrasci prisutni opsežne primjere i obrazac poznat upotrebe prikazani su u raznim programskim jezicima, uključujući C ++, C, i Java.

3.    Obrazac-orijentisana arhitektura softvera: obrasce za upravljanje resursima, Zapremina 3

POSA3 je treći volumen u POSA serije i objavljena je 2003. godine koristi obrasce predstaviti tehnike za provedbu efikasno upravljanje resursima u sistemu. Obrasci su pokrivene u detalje, koristeći nekoliko primjera, i, kao i prethodnih svezaka POSA, uputstva su data o tome kako implementirati predstavljenih obrazaca. Osim toga, volumen predstavlja temeljnu uvod u upravljanje resursima, i dvije studije slučaja u kojima se primjenjuju u domenu ad hoc mreža i mobilnih radio mreža obrasce. Obrasci su grupisani po različitim područjima upravljanja resursima i time bave kompletan životni ciklus resursa: akvizicije resursa, koordinaciju i oslobađanje.

4.    Obrazac-orijentisana arhitektura softvera: obrazac jezik za distribuirano računarstvo, Zapremina 4

POSA4 je četvrti volumena u POSA seriji i bio je objavljen u 2007. To opisuje obrazac jezika za distribuirano računarstvo koji vodi čitaoce kroz najbolje prakse i uvesti ih u ključnim oblastima izgradnje distribuiranih sistema. POSA4 povezuje stotine samostalnih obrasce, obrazac zbirki, i obrazac jezika iz postojećih tijela literature naći u POSA serije. Takvi obrasci odnose na i su korisni za distribuirano računarstvo na jedan jezik. Knjiga pruža konzistentan i koherentan holistički pogled na zanat izgradnje distribuiranih sistema.

5.    Obrazac-orijentisana arhitektura softvera: na obrasci i uzorak jezici, Zapremina 5

POSA5 je peti volumen u POSA seriji i bio je objavljen u 2007. To nudi pogled u dubinu onoga što su obrasci, ono što nisu, i kako ih uspješno koristiti. Ova knjiga bavi pitanjem šta je obrazac jezik i uspoređuje različite paradigme u konceptu obrazac, uključujući i obrazac jedinjenja, obrazac nadopunjuje, obrazac zbirki, uzorak priče, i obrazac sekvence.

Što je IrfanView?

Source: http://www.irfanview.com/main_what_is_engl.htm

IrfanView logo by GismoIrfanView je veoma brz, mali, kompaktan i inovativan FREEWARE (za nekomercijalnu upotrebu) grafički viewer za Windows 9x, ME, NT, 2000, XP, 2003, 2008, Vista, Windows 7, Windows 8, Windows 10.

(Kliknite ovdje za IrfanView EULA)

To je dizajniran da bude jednostavan za početnike i moćan za profesionalce.

IrfanView nastoji da stvori jedinstveni, nove i zanimljive karakteristike, za razliku od nekih drugih grafičkih gledatelja, čiji je cijeli “kreativnost” zasniva se na mogućnost kloniranja, krađa ideja i cijeli dijaloge iz ACDSee i / ili IrfanView! (Na primjer: XnView je krađa / kloniranje karakteristike i cijeli dijaloge iz IrfanView, za 10+ godina).

IrfanView je bio prvi Windows grafički gledaoca širom sveta sa više (animirani) podrška GIF.
Jedan od prvih grafičkih gledatelja širom sveta sa podrškom Multipage TIF.
Prvi grafički Viewer širom sveta sa više podrške ICO.

Neki IrfanView karakteristike:

  • 32 i 64-bitna verzija
  • Mnogi podržanih formata (kliknite ovdje lista formata)
  • Podrška za više jezika
  • Thumbnail / preview opciju
  • Paint opcija – da bi privukli linija, krugova, strelice, ispravite slika itd
  • Toolbar kože opcija
  • Projekcija (save slideshow kao EXE / SCR ili spali ga na CD-u)
  • Pokaži EXIF ​​/ IPTC / komentar teksta u Projekcija / Fullscreen itd
  • Podrška za Adobe Photoshop Filteri
  • Brzi pogled direktorija (kreću kroz direktorij)
  • Batch konverziju (sa naprednim obradu slike)
  • Multipage TIF uređivanje
  • Pretraživanje datoteka
  • E-mail opcija
  • Multimedijalni player
  • Opcija Print
  • Podrška za ugrađene profile u boji u JPG / TIF
  • Promijeni dubina boja
  • Scan (skeniranje serija) podrška
  • Cut / usjeva
  • Dodaj overlay tekst / slike (vodeni žig)
  • IPTC uređivanje
  • Efekti (Sharpen, Blur, Adobe 8BF, Filter Factory, Filteri Unlimited, itd)
  • Screen Snimanje
  • Ekstrakt ikona iz EXE / DLL / ICLS
  • Lossless JPG rotacije
  • Shell Extension PlugIn
  • Unicode podrška
  • Mnogi hotkeys
  • Mnoge opcije komandne linije
  • Mnogi PlugIn
  • Samo jedan EXE-File, ne DLL, ne Shareware poruka poput “Slažem se” ili “Evaluacija istekla”
  • No registar promjene bez akcije korisnika / dozvole!
  • i još mnogo toga

Kliknite ovdje da vidite više screenshotovi IrfanView.

UPOTREBA SPORAZUM

IrfanView je dat kao freeware, ali samo za privatnu, nekomercijalnu upotrebu (to znači kod kuće).

IrfanView je besplatan za obrazovne svrhe (škole, fakulteti, muzeji i biblioteke) i za upotrebu u dobrotvorne ili humanitarne organizacije.

Ako namjeravate koristiti IrfanView na svoje mjesto poslovanja ili za komercijalne svrhe, molimo vas da se registrujete i kupiti ga. Želim nastaviti rad na ovom programu, dakle, registraciju će biti podsticaj za mene da biste dodali nove funkcije i povećati kvalitetu programa.

Bilo koji sugestija, povratne informacije i komentari su dobrodošli i neće biti ignorisani.


© 2017 by irfan skiljan

ARToolKit

Source: http://www.hitl.washington.edu/artoolkit/

ARToolKit je softver knjižnica za izgradnju Augmented Reality (AR) aplikacije. To su aplikacije koje uključuju overlay virtualnih slika na stvarnom svijetu. Na primjer, na slici sa desne strane pojavljuje se trodimenzionalni virtualni lik stoji na pravi kartici. To se može vidjeti korisnik u glavu setu ekranu oni nose. Kada se korisnik kreće karticu, virtualni lik kreće se i pojavljuje u prilogu stvarni predmet.

Jedan od ključnih problema u razvoju Augmented Reality aplikacija je problem praćenja korisnika gledišta. Kako bi se znati od onoga što stanovišta da bi privukli virtualne slike, aplikacija mora znati gdje korisnik gleda u stvarnom svijetu.

ARToolKit koristi računar viziju algoritme za rješavanje ovog problema. Biblioteke ARToolKit video praćenje izračunali stvarnog položaja kamere i orijentaciju u odnosu na fizičke markera u realnom vremenu. To omogućuje jednostavan razvoj širokog spektra Augmented Reality aplikacija. Neke od karakteristika ARToolKit uključuju:

  • Jednu poziciju kamere / orijentaciju praćenje.
  • Praćenje kod koji koristi jednostavne crne kvadrate.
  • Sposobnost da se koristiti bilo trga obrasce marker.
  • Jednostavna kalibracija kamera kod.
  • Dovoljno brzo u realnom vremenu aplikacije AR.
  • SGI IRIX, Linux, MacOS i Windows OS distribucije.
  • Distribuiran sa kompletnom izvorni kod.

Kompletan opis funkcija dostupna je ovdje.

Ova web stranica sadrži link na ARToolKit softver, projekti koji su koristili ARToolKit, uzorak ARToolKit aplikacije, raspravu grupa i kompletnu dokumentaciju. Sve informacije potrebne da bi mogli lako razviti AR aplikacija sa ARToolKit mogu se naći ovdje.

ARToolKit je izvorno razvijen od strane dr Hirokazu Kato, a podržavaju svoju toku razvoja sučelja Technology Laboratory Human (HIT Lab) na Sveučilištu u Washingtonu, HIT Lab NZ na Univerzitetu u Canterbury, Novi Zeland, i ARToolworks, Inc, Seattleu.


VAŽNA NAPOMENA U VEZI VAaŠE PRAVO DA KORISTITE ARTOOLKIT:

ARToolKit je na raspolaganju slobodno za nekomercijalnu upotrebu pod GNU General Public License. Komercijalne licence za profesionalnu realizaciju ARToolKit dostupni su za korisnike kojima GPL nije prikladan, ili koji zahtijevaju viši nivo podrške, ili koji zahtijevaju prilagodbu ili drugih specijalista modifictions. Poslovni licence upravlja ARToolworks, Inc., Seattle, Washington, Sjedinjene Američke Države. Kliknite ovdje za više informacija o licencama ARToolKit i svoje mogućnosti upotrebe.

Veoma Brz Poređenje Popularni Jezici za Nastavu Programiranja

Source: http://www.ariel.com.au/a/teaching-programming.html

Test

Htio sam da pogledam šta je bio uključen u pisanje vrlo jednostavnih programa u (malom) različitim jezicima. Jezika sam izabrao su BASIC, C, Java i Python. Koristio sam C i Java, jer su u upotrebi u odjelu (i drugih nastavnih institucija. Izabrao sam Python, jer volim ga, i mislim da je odličan izbor za nastavu, i sam izabrao BASIC jer, dobro, to samo je bilo previše lako …..

“Hello World” činilo malo previše trivijalno, pa sam odlučila na relativno jednostavan zadatak čitanja dva broja od korisnika, njih dodajući zajedno i štampanje rezultat. Moj interes je bio

  • Koliko dugo je potrebno da se napiše i debug kod
  • Koliko stvari ima student treba da shvate kako bi se pisati ovaj kod

Vremena s obzirom da napiše kod očigledno ne treba da bude predstavnik vrijeme koje je potrebno od strane student, ali ja vjerujem da oni daju približno tačna mera usporedbu. Ja sam prilično vješt (1-5 godina radnog iskustva) na svakom jeziku, tako da ne mislim da sam bio neopravdano pristrasan.


BASIC

Naučio sam da programirati, natrag u kasnim 70-ih, na nivou I TRS-80, i na dijeljenje vremena sistem koji moje srednje škole morao povremeno pristup. Program je trivijalan u dobrom starom BASIC:

10 INPUT A
20 INPUT B
30 C=A+B
40 PRINT C
RUN

Vremena za pisanje:

15 sekundi. Priznajem da nemam BASIC prevodilac praktičan i nisu testirali ovo, ali ja samo znam da radi. (OK, otpustio sam TRS-80 emulator i zapravo ran to – to radi …)

Stvari objasniti:

  • Broj linija
  • Varijable
  • ULAZ
  • PRINT
  • RUN

Za i protiv

BASIC je vrlo lako za početnike za početak sa, ali to je stara, loše dizajniran jezik, nedostaje u skoro svakom modernom funkciju. Visual Basic dodaje puno “dobru staru BASIC”, ali to nije prikladno (vjerujem) da nauči jednu platformu vlasnički jezika. I to je još uvijek nije stvarno dobar jezik ….


C

#include <stdio.h>

int main(int argc, char*argv[]) 
{
    int a,b,c;

    scanf("%d",&a);
    scanf("%d",&b);

    c = a+b;
    printf("%d\n",c);
}

%> gcc -o add add.c
%> ./add

Vremena za pisanje:

oko tri minuta, uključujući i ispravljanje pogrešaka.

Stvari objasniti:

  • #include, funkcije (glavni), povratak vrste, argc, argv
  • varijable, vrste (int)
  • scanf (i ubrzo je ograničenja i kako raditi oko njih)
  • printf, format gudače
  • pokazivači (već!!)
  • sastavljanje, proteze i zarezom

Za i protiv

C je dizajnirao vrhunski hakeri za svoje potrebe. To je dizajniran za pisanje operativne sisteme, kompajlera i drugih sistema alata, a u ovoj ulozi ona je postala gotovo potpuno dominantan.

To može pružiti odlične performanse (pod pretpostavkom da dobar izbor algoritma i dobre C vještine) i omogućava pristup hardveru niskom nivou, ali to obično nisu stvari zahtijeva početnik. C upotreba pokazivači su izvor frustracija i zbunjenost za početnike, ali su bitne u čak trivijalnih programe (poput one gore, iako u trivijalan način).

Nadalje, C rukovanje string je slab u odnosu na mnoge druge moderne jezike (funkcija scanf iznad koristi je izuzetno problematično).

C je veliki i vrlo važan jezik, i svi programeri trebaju imati značajnu izloženost to. To je, međutim, strašno jezik za naučiti početnike. Previše je C koji se mora objasniti, ostavljajući manje vremena za objašnjavanje programiranje.


Java

import java.io.*;
public class Addup
{
    static public void main(String args[])  {
        InputStreamReader stdin = new InputStreamReader(System.in);
        BufferedReader console = new BufferedReader(stdin);
        int i1 = 0,i2 = 0;
        String s1,s2;
        try {
            s1 = console.readLine();
            i1 = Integer.parseInt(s1);
            s2 = console.readLine();
            i2 = Integer.parseInt(s2);
        }
        catch(IOException ioex) {
            System.out.println("Input error");
            System.exit(1);
        }
        catch(NumberFormatException nfex) {
            System.out.println("\"" + nfex.getMessage() + "\" is not numeric");
            System.exit(1);
        }
        System.out.println(i1 + " + " + i2 + " = " + (i1+i2));
        System.exit(0);
    }
}
%> javac Addup.java
%> java Addup

Vremena za pisanje:

19 minuta! Zapravo, proveo sam oko 15 minuta, nije uspio, onda tražili Google za primjer. Kod iznad je kopiran iz web stranice, koji, upečatljivo sam mislio, počinje riječima: “Moglo bi se pomisliti da je program koji čita u dva korisnik ušla cijele brojeve i ispisuje njihov zbroj će biti jednostavno deo koda”.
Očito, ovaj kod nije savršeno ekvivalent za druge programe ovdje predstavio, jer radi provjere pravilnog greška, međutim Java otežava da to ne provjeri greške. Morate uhvatiti izuzetaka, i nakon što ih je uhvatila možda i učiniti nešto s njima.

Ja sam nekako sramota sam imao toliko problema s tim – ja sam radila na komercijalnoj Java paket za dvije godine, ali zbog toga što je baziran GUI retko da se bavi čitanjem iz konzole. Real Java programeri će vjerojatno izgledati na mene s mješavinom sažaljenja i gađenja. Takav je život.

Stvari objasniti

  • uvoz, klase, zarezom proteza
  • public, static, prazninu, String, glavni argumenti []
  • InputStreamReader, BufferedReader, System.in
  • varijable, vrste
  • pokušati, uhvatiti, izuzetaka, readLine, parseInt
  • System.out.println, sastavljanje, trčanje

Za i protiv

Java je koristan jezik za razvoj cross-platforma GUI, je robustan platformu za razvoj OO, i ima veliku i visoko razvijenim skup biblioteka klase. Možda je najvažnije, to je najpopularniji jezik oko i ima puno posla za Java programere.
Biblioteka opsežna klasa je, međutim, prilično zastrašujuće. Čini se da je klasa za skoro sve, i mnogo “programiranje u Java” Izgleda da se sastoji od “u potrazi za pravo klase”. Čak i nakon dvije godine mislim da ne mogu učiniti puno u Javi bez stalnog odnosi na dokumentaciju.

Java nameće Object Orijentacija, osim provjera i stroge kucanja – sve su to (vjerovatno) dobre stvari – oni olakšavaju za grupu programera na robustno stvoriti velike sisteme. Ali, za male probleme (kao što su one kojima se suočavaju u uvodnom klase programiranje) ove stvari postaju ništa više nego komplikovana, vrijeme-sisa teret.

Razlog za zapošljavanje sama je dovoljna da se Java se “mora naučiti” lanaguage, ali mislim da ćemo naše učenike lošu uslugu, ako je ovo najbolji jezik smo im pokazati.


Piton

import sys

a = sys.stdin.readline()
b = sys.stdin.readline()
c = int(a) + int(b)
print c

%> python add.py

Vremena za pisanje:

oko jedne minute, uključujući testiranje i ispravljanje pogrešaka.

Stvari objasniti

  • uvoz
  • varijable
  • sys.stdin
  • readline (čita string)
  • Int (pretvara string u cijeli broj)
  • štampa

Za i protiv

Piton ima jako puno dobrih poena:

  • provodi dobar stil programiranja (udubljenje ima smisla)
  • OO na raspolaganju, ali ne sprovodi
  • Izuzeci koristi, ali ne sprovodi
  • nije igračka ili akademski jezik – mnogo stvarni svijet rada se obavlja u Pitonг
  • omogućava koncentraciju na algoritmima i problem, a ne na jeziku karakteristike i nedostatke.
  • je cross platforma i ima snažan skup biblioteka
  • je sigurno – to je dinamičan vrijeme provjere i granica staze tip provjere na nizovima
  • je moćan ugrađeni tipovi podataka – rječnika, liste, sekvence, funkcije, setova (u 2.4)
  • ima moćne ugrađene kontrolne strukture – jednostavne petlje preko sekvence, karta, generatora, lista shvatanja, regularnih izraza …
  • zahtijeva manje linija koda za bilo koji problem, i više je čitljiv – na taj način veću produktivnost.

Za nastavu kao prvi jezik, međutim ima neke specifične prednosti. Kao što se može vidjeti iz primjera gore (zanemarujući BASIC), Python zahtijeva manje vremena, manje linija koda, a manje koncepata koji će se predavati do određenog cilja. Ovo omogućava više vremena da se potroši na važne stvari. Osim toga, neke zajedničke student greške su potpuno byassed u Pitonu:

  • kraju linije je kraj linije (bez zaboravio zarezom)
  • Ne Vrsta deklaracije
  • Istina blok struktura uvijek očigledno (ne nedostaje proteze greška)
  • dinamičke alokacije memorije i prikupljanja otpada

Konačno programiranje u Pitonu je zabavno! Zabava i česte uspjeh rase povjerenje i interes student, koji je tada u boljoj poziciji da nastavi učenje programa.
Ali, Piton je samo programski jezik

Piton se često odbacuje kao “samo programski jezik” (Perl i Ruby također pate od ovog glupo netrpeljivosti). To je jednostavno pogrešan. To nije “samo programski jezik” – to je pun oglašen vrlo visokom jezik nivo koji je idealan za mnoge aplikacije, uključujući i jednostavan skriptiranje dužnosti.
Činjenica da možete pisati “brzo i prljavo” skripte u Piton je prednost, a ne mana, jer skriptiranje je zapravo bitan dio profesionalnog programiranja. Ako studenti ne znaju Piton (ili Perl ili Ruby, ili ….), oni će trošiti mnogo vremena pokušava riješiti skripta poput problema u Javi.

Ali, Piton je spoooooooooooooori

Piton je tumačiti jezik, i to ne dodati malo iznad glave. Dinamičan provjera granica, dinamičan kucanje i druge pametan Piton stvari usporiti još više. Piton može biti reda veličine sporije nego ekvivalent C koda. kako god

Mnoge, mnoge aplikacije nisu izračunati vezani. Da biste koristili visoke jezik performansi za njih predstavlja primjer greh ranog optimizacije.
Piton sučelja i do C – ogroman dobitak može biti od kodiranja kritične sekcije u C

Ušteda vremena kodiranje u Pitonu, i mnogo veću jednostavnost kod napisan, omogućava mnogo više vremena za eksperimentiranje u efikasniji algoritmi – često mnogo više plodna nego jednostavno radi loš algoritam vrlo brzo.


Zaključak

C i Java su važni jezika – za pojmove koje utjelovljuju, za izglede za zapošljavanje, a za klase problema su riješiti. Studenti moraju dati temeljno uzemljenje na ovim jezicima. Oni ne međutim formirati dovoljan arsenal za profesionalni programer – dobar “skriptni jezik” je imperativ – niti su dobri jezika podučava učenike nove programiranju. Oni imaju puno nadzemnih i drugih prepreka koje se puno zadovoljstvo van, i da oba studenta i radna mjesta nastavnika teže nego što bi trebalo da bude.

Postoje ljudi koji će reći da su prepreke su dio discipline programiranja – učenici moraju naučiti da uhvatiti svoje izuzetke, koriste pokazivači, proglasiti sve njihove vrste i tako dalje. Možda, možda ne – ali ima vremena za to kasnije. Neka studenti imaju jednostavnu radost malih uspjeha koje smo (dobro, “I” u svakom slučaju) imali kada smo pokretanje. Patrick Jordan – [email protected] – 2004-12-14


PostScript (feb 2006)

Osim komentarima gore, ogroman broj ljudi koji je napisao da me nakon ovog članka pojavio na Daily Python istaći da je postojao jednostavniji način da se to uradi u Pitonu:

a = input()
b = input()
c = a + b
print c

%> python add.py

(Različiti jedan obloge poput ‘ulazni print () + ulaz () “su također predložio i rade jednako dobro, ali ja bih tvrde su manje korisni za nastavu svrhe). Nadalje, od ulaza () prihvata bilo koji važi Piton izraz, ovaj program samo radi za čitav niz ulaza – int, pluta, gudače (to će ih spojite – ali imajte na umu da moraju biti u navodnicima drugo oni će se tumačiti kao imena varijabli) ili izrazi kao što su “3,14 ** 2”. Još jedan dokaz, kao da je to bilo potrebno, od ljepote Pitonu.

Komentari

Dobio sam broj komentara na ovu temu, a posebno na jezicima nisam spomenuo (Ruby, C ++, Smalltalk, LISP) …
Pročitajte komentari
Pročitajte još više komentara

Povijest Računala

Source: http://homepage.cs.uri.edu/faculty/wolfe/book/Readings/Reading03.htm

Ovo poglavlje je kratak pregled povijesti kompjuteri. To je dopunjena dva PBS dokumentarne filmove trake “Otkrivanje budućnost” i “Meki kompjuter”. U poglavlju ističe neke od plasmana tražiti u dokumentarcima.

Konkretno, kada gledate filmove koje bi trebao izgledati za dvije stvari:

1. Napredovanje u hardver zastupljenosti malo podataka:

  • Vakuum cijevi (1950) – jedan malo o veličini palac;
  • Tranzistora (1950-ih i 1960-ih) – jedan malo na veličine nokta;
  • Integrirani krugovi (1960-ih i 70-ih godina) – tisuće bitova od veličine ruke;
  • Silicon kompjuterskih čipova (1970. i dalje) – milijune bitova o veličini nokat.

2. Napredovanje jednostavnost korištenja računala:

  • Gotovo nemoguće koristiti osim genija vrlo strpljiv (1950);
  • Programabilnih visoko obučene ljude samo (1960-ih i 1970-ih);
  • Koristan za samo o nikome (1980. i dalje);

da vidim kako kompjutera dobio manji, jeftiniji i lakši za korištenje.


Prva Računala

Eniac:
Eniac računalo

Prvi značajan kompjuter je bio gigant ENIAC mašinu John W. Mauchly i J. Presper Eckert na University of Pennsylvania. ENIAC (Electrical numerička Integrator i kalkulator) koristi riječ od 10 decimale umjesto binarnih one kao i prethodnih automatizirani kalkulatore / kompjutera. ENIAC je bio i prvi stroj koristiti više od 2.000 vakuum cijevi, koristeći gotovo 18.000 vakuum cijevi. Skladištenje svih tih vakuum cijevi i strojeva potrebnih da zadrži cool preuzeo više od 167 kvadratnih metara (1800 četvornih metara) od površine. Ipak, da je udario kartica ulaza i izlaza i aritmetički imao 1 multiplikator, 1 šestar-kvadrat ruter, i 20 zbrajala zapošljavanje decimalni “prsten brojača”, koja je služila kao zbrajala i kao brz pristup (0.0002 sekundi) read-write registar skladištenje.

Izvršnu instrukcije sastavljanje programa su sadržane u zasebne jedinice ENIAC, koji su priključeni zajedno da se formira put kroz mašinu za protok proračuna. Ove veze morao biti adaptiran za svaki drugi problem, zajedno sa predpodešavanje funkcijom stolovima i prekidača. Ova instrukcija tehnika “žica-svoj-svoj” je nezgodno, a samo kod nekih licencom mogao ENIAC se smatrati programabilnih; to je, međutim, efikasan u rukovanju posebno programe za koje je dizajniran. ENIAC je općenito priznato da je prvi uspješan velike brzine elektronski digitalni kompjuter (EDC) i je produktivno koristi od 1946. do 1955. A kontroverze razvijen u 1971, međutim, preko patentabilnosti osnovnih digitalnih pojmova ENIAC-a, tvrdnja koja je to još jedan Američki fizičar, John V. Atanasov, već koriste iste ideje u jednostavniji vakuum-cijevi uređaj je izgrađen u 1930, dok na Iowa State College. 1973. godine, sud je utvrdio u korist putem Atanasov tvrde i Atanasov primio priznanje je s pravom zaslužio.

Napredovanje hardvera

U 1950-tih dva uređaja biti izmišljen da bi se poboljšala polje kompjuter i pokrenuo početkom kompjuterska revolucija. Prvi od ova dva uređaja je tranzistor. Izmislio 1947. William Shockley, John Bardeen, i Walter Brattain Bell Labs, tranzistor je suđeno da zbaci dane vakuum cijevi u kompjutere, radio, i druge elektronike.

Vakuum cijevi

Vakuum cijevi, koristi se za ovaj put u gotovo svim kompjuterima i računske mašine, je izumio američki fizičar Lee De Forest u 1906. vakuum cijevi, što je otprilike veličine ljudskog palca, radili koristeći velike količine električne energije za grijanje vlakna unutar cijevi dok je bio trešnja crvena. Jedan od rezultata grijanja ove filament se je oslobađanje elektrona u cijevi, što bi moglo biti pod kontrolom drugih elemenata unutar cijevi. De Forest je originalni uređaj bio je trioda, koji bi mogao kontrolirati protok elektrona na pozitivno naplaćuje ploča unutar cijevi. A nula bi se onda mogla predstavlja odsustvo elektrona struja na ploču; prisustvo male, ali otkriti struja na ploču predstavljao jedan.

Tranzistora

Vakuum cijevi bile veoma neefikasni, potrebno mnogo prostora, a potrebno često zamijenjen. Računala od 1940-ih i 50-ih godina imao 18.000 cijevi u njima i stanovanja sve te cijevi i hlađenje prostorija iz topline proizvodi 18.000 cijevi nije bilo jeftino. Tranzistor je obećao da će riješiti sve ove probleme i to učinila. Tranzistora, međutim, previše je imao svoje probleme. Glavni problem je bio da tranzistora, kao i druge elektronske komponente, trebalo zalemljeni zajedno. Kao rezultat toga, više složenih kola postala je složenija i brojne veze između pojedinačnih tranzistora i vjerojatnost neispravnih instalacija povećao.

1958. godine, ovaj problem previše je riješen Jack St. Clair Kilby Texas Instruments. On je proizveden prvi integrisanog kola ili čip. Čip je zapravo zbirka malih tranzistora koji su povezani zajedno kada je proizveden tranzistor. Dakle, potreba za lemljenje zajedno veliki broj tranzistora je praktično poništava; sada je bilo potrebno samo veze do drugih elektroničkih komponenti. Uz uštedu prostora, brzina stroja je sada povećan s obzirom da je smanjen udaljenost koju elektrone morao pratiti.

Ploča                                                                          Silikonski čip

Glavni okvir na PC

1960-ih vidio  glavni okvir kompjuteri postali puno češći u velikim industrijama i sa vojskom i svemirski program SAD-a. IBM je postao neprikosnoveni lider na tržištu u prodaji ovih velikih, skupih, podložan greškama, i vrlo teško koristiti mašine.

A pravi eksplozije osobnih računala dogodio u ranim 1970-ih, koji počinju sa Steve Jobs i Steve Wozniak izlaganje prvi Apple II na Prvom West Coast Computer Faire u San Franciscu. Apple II hvalio ugrađeni BASIC programski jezik, grafika u boji, kao i 4100 karaktera memorije za samo 1298 $. Programi i podaci mogu biti pohranjeni na svakodnevni rekorder audio-kaseta. Prije kraja sajma, Wozniak i Jobs je osigurao 300 naloga za Apple II i odatle Apple samo skinuo.

Također uveden 1977. godine bio je TRS-80. Ovo je bio kućni računar proizveden od Tandy Radio Shack. U svojoj drugoj inkarnaciji, TRS-80 Model II, došao zajedno sa 64.000 karaktera memorije i disk za pohranjivanje programa i podataka o. U ovom trenutku, samo Apple i TRS imao mašina sa diskova. Sa uvođenjem diska, personalni računar aplikacije skinuo kao disketu bio najpogodniji objavljivanje medij za distribuciju softvera.

IBM, koji do tog vremena bio proizvodi mainframe i miniračunala za srednje do velike veličine preduzeća, odlučio da je morala da uđe u čin i počeo da radi na Acorn, koji će kasnije biti nazvan IBM PC. PC je bio prvi kompjuter dizajniran za domaće tržište koje bi imaju modularni dizajn, tako da komadi lako mogao biti dodan u arhitekturi. Većina komponenti, iznenađujuće, došao izvan IBM-a, jer gradi sa IBM dijelova bi koštala previše za tržište kućnog računara. Kada je uveden, PC je došao sa 16.000 karaktera memorije, tastatura iz IBM električni pisaću mašinu, i priključak za kasete player za 1265 $.

Do 1984. godine, Apple i IBM su izašli sa novim modelima. Apple je objavio prve generacije Macintosh, što je bio prvi kompjuter koji je došao sa grafičko korisničko sučelje (GUI) i miš. GUI je stroj mnogo privlačniji korisnicima kućnog računara, jer je jednostavan za korištenje. Prodaja Macintosh skočio kao da se ništa nije video. IBM je vruće na Apple rep i objavio 286-AT, koji s aplikacijama kao što su Lotus 1-2-3, spreadsheet, i Microsoft Word, brzo je postao omiljeni poslovnih problema.

To nas dovodi do prije desetak godina. Sada ljudi imaju svoje grafičke radne stanice i moćan kućne računare. Prosječna kompjuter osoba može imati u svom domu je moćniji od nekoliko redova veličine od mašina kao ENIAC. Računar revolucija je najbrže tehnologije raste u istoriji čoveka.

Rok

Ako želite više detalja, posjetite ovu anotirani rokovi sa slikama i stavovima o važnim dostignućima u računarima od 1940. godine.

Performanse Kvantitativne Sistemi

Source: http://homes.cs.washington.edu/~lazowska/qsp/

Analiza kompjuterski sistem koristi za čekanje na mrežnim modelima

 

Edward D. Lazowska, John Zahorjan,
G. Scott Graham, Kenneth C. Sevcik

 


Ovaj tekst je objavljen od strane Prentice-Hall, Inc., u 1984. ostaje konačan rad na analitičke modeliranje računalnih sustava. Izdavač je vratio autorska prava autorima, koji čine materijal dostupan ovdje za pregled ili preuzimanje, u Adobe Acrobat PDF formatu (besplatni Acrobat Reader možete pogledati ovdje).

Početi ovdje – Najlakši način za pristup knjige online je kroz hiperlink Sadržaj dostupan preko ovog linka.

Želite skinuti cijeli tekst na PC? 21MB zip datoteka može biti ovdje ftp’d.


I. Preliminaries

  1. Pregled čekanja u redu mreže modeliranje
  2. Provođenje modeliranje studije
  3. Fundamentalni zakoni
  4. Čekanja model mreže ulazi i izlazi

II. Generalni analitički tehnike

  1. Bounds na performanse
  2. Modeli sa jednog posla klase
  3. Modeli sa više klasa posao
  4. Protok ekvivalencije i hijerarhijska modeliranje

III. Predstavljajući specifični podsistemi

  1. Memorije
  2. Disk I/O
  3. Procesori

IV. Parametrizacija

  1. Postojeći sistemi
  2. Razvojni sistemi
  3. Prijedlogni sistemi

V. Perspektiva

  1. Produžen aplikacije
  2. Upotreba čekanja mreže modeliranje softver

VI. Dodaci

  1. Izgradnja modela iz RMF podataka
  2. Implementaciju jedne klase, Točan MVA
  3. Implementaciju više klase, Točan MVA
  4. Nosivost ovisna servisnih centara

[email protected]

Kako Izgledati kao UNIX Guru

Source: http://www.cs.usfca.edu/~parrt/course/601/lectures/unix.util.html

Terence Parr

Zadnja promjena: Avgust 30, 2006

UNIX je izuzetno popularna platforma za razvijanje server softver dijelom zbog njegove sigurnosti i stabilnosti, ali i zato što ima bogatu skup komandne linije i skriptiranje alata. Programeri koriste ove alate za manipulaciju sistema datoteka, obrade datoteka dnevnika, i generalno automatizaciju što je više moguće.

Ako želite da bude ozbiljan server developer, morat ćete imati određeni objekat sa brojem UNIX alata; oko 15. Vidjet ćete početi vidjeti sličnosti među njima, posebno regularnih izraza, i uskoro ćete se osjećati vrlo ugodno. Kombinirajući jednostavnih komandi, možete izgraditi vrlo moćan alat vrlo brzo – mnogo brže nego što bi mogao izgraditi ekvivalent funkcionalnost u C ili Java, na primjer.

Ovo predavanje vas vodi kroz osnovne komande i onda pokazuje kako da ih kombinirati u jednostavne obrasce ili idioma pružiti sofisticirane funkcije poput histogramming. Ovo predavanje pretpostavlja da znate šta je granata je i da imate neke osnovne poznavanje UNIX.

[Usput, ove stranice dobiva veliku pažnju na internetu i na žalost ja dobiti mail od puno ljudi koji imaju bolja rješenja ili stvari koje sam trebao dodati. Ja samo pokazuje ono što sam naučio gledajući dobar UNIX ljudi tako da ne kažem ove savjete su optimalna rješenja. Ja bi bio prilično neuk sys admin.]

Sve je potok

Prva stvar koju trebate znati je da UNIX se temelji na ideji potoka. Sve je potok, ili se čini da. Upravljački programi izgledaju kao potoci, terminali izgledaju kao potoci, procesi komuniciraju preko potoka, itd … ulaz i izlaz programa su potoci koji možete preusmjeriti u uređaj, datoteku, ili neki drugi program.

Ovdje je primjer uređaja, null uređaj, koji vam omogućuje da baciti izlaz daleko. Na primjer, možda želite pokrenuti program, ali zanemariti izlaz.

$ ls > /dev/null # ignore output of ls

gdje “# ignore output of ls” je komentar.

Većina komandi obuhvaćeni u ovom procesu predavanja stdin i poslati rezultate na stdout. Na ovaj način, možete postepeno obrađivati tok podataka hooking izlaz jedan alat za ulaz drugog preko cijevi. Na primjer, sljedeće piped sekvence ispisuje broj datoteka u trenutnom direktoriju modifikovani u avgustu.

$ ls -l | grep Aug | wc -l

Zamislite koliko bi vremena bilo potrebno da napišete ekvivalent C ili Java program. Možete postati vrlo produktivan UNIX programer ako naučite kombinirati jednostavne komandne linije alat. Čak i kada programiranje na PC-u, koristim MKS-a UNIX ljuske i komande biblioteku da izgleda kao UNIX kutiju. Vrijedan novac.

Dobivanje pomoći

Ako vam je potrebno da znate o komandu, pitajte za “čovjeka” stranici. Na primjer, da biste saznali o ls komande, tipa

$ man ls
LS(1)                   System General Commands Manual                   LS(1)

NAME
     ls - list directory contents

SYNOPSIS
     ls [-ACFLRSTWacdfgiklnoqrstux1] [file ...]

DESCRIPTION
     For each operand that names a file of a type other than directory, ls
...

Vi ćete dobiti sažetak komande i bilo argumenata.

Ako se ne možete sjetiti imena komande, pokušajte koristiti odnosno koji pronalazi komande i knjižnica rutina koje se odnose na tu riječ. Na primjer, da biste saznali kako to učiniti sume, tipa

$ apropos checksum
cksum(1), sum(1)         - display file checksums and block counts
md5(1)                   - calculate a message-digest fingerprint (checksum) for a file

Posebna direktorija i datoteka

Vidi @http: //www.thegeekstuff.com/2010/09/linux-file-system-structure

Prečica za te kući direktorij, / home / korisničko ime, je ~ ime. Na primjer, ~ parrt je moj dom direktorij, / home / parrt.

Kada koristite Shell, postoji pojam trenutni direktorij. Dot ‘.’ lik je skraćenica za trenutni direktorij i “..” je skraćenica za direktorij iznad trenutne. Dakle, za pristup testu datoteku u trenutnom direktoriju, ./test je isti kao i običan test. Ako test je direktorij iznad, koristite ../test.

/ Je korijenski direktorij; nema drive specifikacija u UNIX.

U .bash_profile datoteka je vrlo važan jer je to kako je vaš shell sjednici inicijalizovana uključujući sve važne varijable CLASSPATH. Vaš bash shell pokretanja datoteke je ~ korisničko ime / .bash_profile i postaviti kod ovako:

PATH=$PATH:$HOME/bin

Obično ćete ići u i postavite CLASSPATH, tako da ne morate postaviti to stalno.

export CLASSPATH=".:/home/public/cs601/junit.jar"

Izvoz znači da je zadatak da CLASSPATH je vidljiv svim dijete procesa (koji je, vidljiv svim programima pokrenete iz ljuske).

Osnove

cd

Mijenjanje direktorij se radi sa cd dir gdje dir može biti “.” ili “..” da se preseli u trenutni direktorij (ništa) ili da se direktorij.

ls

Prikaz datoteka u direktoriju sa ls. -l Opcija se koristi za prikaz detalja datoteka:

total 9592
-rw-r--r--    1 parrt  staff     5600 Aug 19  2005 C-Java-relationship.html
...
drwxr-xr-x   13 parrt  staff      442 Oct 19  2005 sessions
-rw-r--r--    1 parrt  staff     2488 Oct 19  2005 sessions.html
...

“staff” je grupa parrt.

Ako želite da vidite skrivene datoteke (oni koji počinju sa “.”), Koristi “-a”.

Kombinacije su moguće: koristiti “ls -la” da vidi detalje svih datoteka, uključujući skrivene one.

Prikazivanje datoteka

Postoje 4 korisnih načina za prikaz sadržaja ili dijelova datoteke. Prvi je vrlo često koristi komandu cat. Na primjer, za prikaz mojoj listi objektno orijentisanog ključne riječi koriste u ovom Naravno, tip:

$ cat /home/public/cs601/oo.keywords.txt

Ako je datoteka je zaista veliki, vjerojatno ćete želite koristiti više, koji pljuje fajl u komade ekran veličine.

$ more /var/log/mail.log

Ako samo želite vidjeti prvih nekoliko linija datoteke ili posljednjih nekoliko redova koristiti glavu i rep.

$ head /var/log/mail.log
$ tail /var/log/mail.log

Možete odrediti broj kao argument da se određeni broj linija:

$ head -30 /var/log/mail.log

Najkorisniji bajalicu repa štampa posljednjih nekoliko linija datoteke i zatim čeka, štampanje novih linija jer su u prilogu datoteke. To je odlično za gledanje datoteke dnevnika:

$ tail -f /var/log/mail.log

Ako je potrebno da znate koliko slova, riječi, ili linije u datoteku, koristiti wc:

$ wc /var/log/mail.log
     164    2916   37896 /var/log/mail.log

Gdje su brojevi, kako bi, linija, riječi, onda znakova. Radi jasnoće, možete koristiti wc -l za ispis samo broj linija.

pushd, popd

Umjesto CD možete koristiti pushd da biste sačuvali trenutne dir i onda automatski cd na određeni direktorij. Na primjer,

$ pwd
/Users/parrt
$ pushd /tmp
/tmp ~
$ pwd
/tmp
$ popd
~
$ pwd
/Users/parrt

top

Za gledanje dinamički prikaz procesa na kutiji u akciji, koristite top.

ps

Da biste ispisati (široki zaslon) sve procese koji rade na kutiji, korištenje ps auxwww.

chmod

Za promjenu privilegija fajl ili folder, upotreba chmod. Privilegije su 3 cifra oktalni riječi sa 3 bita po cifra: rwxrwxrwx gdje prva znamenka je za vlasnika datoteke, 2. za grupu, i 3. za bilo koga. 644 je uobičajena riječ vrijednost datoteka, što znači 110.100.100 ili RW-r – r–. Kada radite ls -l ćete vidjeti ove bita. 755 je uobičajena riječ vrijednost za direktorija: rwxr-xr-x gdje direktoriji moraju biti izvršne za CD da bi mogao da uđe da dir. 755 je skraćenica za više čitljiv argument u = rwx, idite = rx. U je korisnik, G je grupa, o je drugi.

Koristite chmod -R za rekurzivno se primjenjuju na sve DIROVI ispod argument kao dobro.

Pretraživanje potocima

Jedan od najkorisnijih alata na raspolaganju na UNIX i onaj koji vam može koristiti najviše je grep. Ovaj alat utakmice regularne izraze (koji uključuje jednostavne riječi) i otisci odgovaraju linijama na zaslon računala.

Najjednostavniji bajalicu traži određenu sekvencu znakova u skupu datoteka. Ovdje je primjer koji izgleda za bilo kakvo pozivanje na sustav u Java datoteka u trenutnom direktoriju.

grep System *.java

Možete naći dot ‘.’ regularni izraz koristan. To odgovara bilo koji jedan znak, ali je obično u kombinaciji sa zvijezda, koja odgovara nula ili više od stavke prethodnog. Budite oprezni da priloži izraz u jednostrukim navodnicima tako proširenje komandne linije ne mijenjati argument. Sljedeći primjer, traži reference na bilo koji forum stranice u datoteci server log:

$ grep '/forum/.*' /home/public/cs601/unix/access.log

ili ekvivalentno:

$ cat /home/public/cs601/unix/access.log | grep '/forum/.*' 

Drugi oblik je korisno kada želite da obrađuje zbirku datoteka kao jedan tok kao u:

cat /home/public/cs601/unix/access*.log | grep '/forum/.*'

Ako trebate pogledati za niz na početku linije, koristite znak za umetanje ‘^’:

$ grep '^195.77.105.200' /home/public/cs601/unix/access*.log

Ovo pronalazi sve linije u sve pristupne trupaca koje počinju s IP adresa 195.77.105.200.

Ako želite da preokrene obrazac odgovara da linije koje ne odgovaraju obrazac, koristite -v. Ovdje je primjer koji pronalazi reference na ne slika se u datoteku dnevnika:

$ cat /home/public/cs601/unix/access.log | grep -v '/images'

Sada zamislite da imate datoteku http dnevnika i želite da filtrira zahtjeva stranice od strane neljudskih pauka. Ako imate datoteku pod nazivom spider.IPs, možete pronaći sve nonspider pogleda stranicu putem:

$ cat /home/public/cs601/unix/access.log | grep -v -f /tmp/spider.IPs

Na kraju, da ne obraća pažnju slučaju ulaznog toka, koriste -i.

Prijevodi potocima

Pretvara tekst potok je jedan od osnovnih operacija UNIX. PERL je dobar alat za to, ali pošto mi se ne sviđa PERL ja ostajem sa tri alata: tr, sed, i awk. PERL i ovi alati su line-by-line alata u da su oni dobro rade samo na obrasce u potpunosti sadržana u jednoj liniji. Ako je potrebno da obrađuju složenije obrasce kao XML ili trebate analizirati programski jezik, koristite kontekst bez gramatike alat kao što je ANTLR.

tr

Za manipulaciju razmaka, naći ćete tr vrlo koristan.

Ako imate kolone podataka odvojenih prostora i želite kolone do kolapsa tako da postoji jedan stupac podataka, reci tr zamijeniti prostor za novi red tr ” ‘\ n’. Uzmite u obzir ulaznu datoteku / home / javne / cs601 / Unix / imena:

jim scott mike
bill randy tom

Da bi sve te imena u koloni, upotreba

$ cat /home/public/cs601/unix/names | tr ' ' '\n'

Ako želite srušiti sve sekvence prostora u jedan prostor, koristiti tr -s ”.

Za pretvaranje PC datoteke u UNIX, morate se riješiti ‘\ r’ znakova. Koristite tr -d ‘\ r’.

sed

Ako je ispuštanje ili prevođenje jednim znakova nije dovoljno, možete koristiti sed (urednik potok) zamijeniti ili brisanje teksta komade neprecizan regularnih izraza. Na primjer, za brisanje svih referenci na riječ Scott u datoteku imena iz gore, upotreba

$ cat /home/public/cs601/unix/names | sed 's/scott//'

koji zamjenjuje Scott za ništa. Ako postoji više referenci na Scott na jednoj liniji, koristite G sufiks da ukaže “globalno” na toj liniji inače samo prvo pojavljivanje će biti uklonjena:

$ ... | sed 's/scott//g'

Ako želite zamijeniti reference na view.jsp sa index.jsp, upotreba

$ ... | sed 's/view.jsp/index.jsp/'

Ako želite bilo kakve .asp datoteke pretvara u .jsp, morate odgovarati ime datoteke s regularni izraz i odnose se na to preko \ 1:

$ ... | sed 's/\(.*\).asp/\1.jsp/'

The \ (… \) grupiranje prikuplja tekst koji se može odnositi na s \ 1.

Ako želite da ubiju sve, od ‘,’ karakter do kraja linije, koristite end-of-line marker $:

$ ... | sed 's/,.*$//' # kill from comma to end of line

awk

Kada vam je potrebna za rad s kolone podataka ili izvrši malo koda za svaku liniju podudaranje uzorak, koristiti awk. awk programi su obrazac akcije parova. Dok su neki awk programi su dovoljno komplikovano zahtijeva poseban fajl koji sadrži program, možete učiniti neke sjajne stvari pomoću argument u komandnoj liniji.

awk misli ulazne linije su razbijena u polja (i.e., kolone) odvojeni razmakom. Polja su navedeni u akciju preko $ 1 $ 2, … a $ 0 odnosi na cijelu unos.

A obrazac-akcija par izgleda ovako:

pattern {action}

Ako izostavite obrazac, akcija se izvršava za svaki unos. Izostavljajući akciju znači ispis linije. Možete odvojiti parova od strane nove linije ili zarez.

Razmislite ulaz

aasghar Asghar, Ali
wchen   Chen, Wei
zchen   Chen, Zhen-Jian

Ako želite spisak imena prijava, pitajte awk za ispis prve kolone:

$ cat /home/public/cs601/unix/emails.txt | awk '{print $1;}'

Ako želite pretvoriti imena prijava na e-mail adrese, koristite funkciju printf C-Lookalike:

$ cat /home/public/cs601/unix/emails.txt | awk '{printf("%[email protected],",$1);}'

Zbog nestalih \ n u printf string, vidjet ćete izlaz sve na jednoj liniji spreman za lijepljenje u program mail:

[email protected],[email protected],[email protected]

Možda ćete također žele preurediti kolone podataka. Za ispis firstname, prezime, možda probati:

$ cat /home/public/cs601/unix/emails.txt | awk '{printf("%s %s\n", $3, $2);}'

ali ćete primijetiti da je i dalje tu zarez jer je dio kolone:

Ali Asghar,
Wei Chen,
Zhen-Jian Chen,

Potrebno je da cijevi izlaz kroz TR (ili sed) da se skinu zarez:

$ cat /home/public/cs601/unix/emails.txt | \
  awk '{printf("%s %s\n", $3, $2);}' | \
  tr -d ','

Tada ćete vidjeti:

Ali Asghar
Wei Chen
Zhen-Jian Chen

Također možete koristiti awk ispitati vrijednosti sadržaja. Da sumiramo prvu kolonu sljedeće podatke (u datoteci / home / javne / cs601 / Unix / kava):

3 parrt
2 jcoker
8 tombu

koristiti sljedeće jednostavne komande:

$ awk '{n+=$1;} ; END {print n;}' < /home/public/cs601/unix/coffee

gdje END je poseban obrazac koji znači “nakon obrade potoka.”

Ako želite filtrirati ili sabrati sve vrijednosti manje od ili jednako, recimo 3, koristiti ako izjavu:

$ awk '{if ($1<=3) n+=$1;} END {print n;}' < /home/public/cs601/unix/coffee

U ovom slučaju, vidjet ćete izlaz 5 (3 + 2);

Korištenje awk zgrabiti određeni kolona je vrlo česta pri obradi datoteka dnevnika. Razmotrimo http://www.jguru.com stranicu pogled datoteku dnevnika, /home/public/cs601/unix/pageview-20021022.log, da su u obliku:

date-stamp(thread-name): userID-or-IPaddr URL site-section

Dakle, podaci izgleda ovako:

20021022_00.00.04(tcpConnection-80-3019):       203.6.152.30    /faq/subtopic.jsp?topicID=472&page=2    FAQs     
20021022_00.00.07(tcpConnection-80-2981):       995134  /index.jsp      Home 
20021022_00.00.08(tcpConnection-80-2901):       66.67.34.44     /faq/subtopic.jsp?topicID=364   FAQs     
20021022_00.00.12(tcpConnection-80-3003):       217.65.96.13    /faq/view.jsp?EID=736437        FAQs     
20021022_00.00.13(tcpConnection-80-3019):       203.124.210.98  /faq/topicindex.jsp?topic=JSP   FAQs/JSP         
20021022_00.00.15(tcpConnection-80-2988):       202.56.231.154  /faq/index.jsp FAQs     
20021022_00.00.19(tcpConnection-80-2976):       66.67.34.44     /faq/view.jsp?EID=225150        FAQs     
220021022_00.00.21(tcpConnection-80-2974):       143.89.192.5    /forums/most_active.jsp?topic=EJB       Forums/EJB       
20021022_00.00.21(tcpConnection-80-2996):       193.108.239.34  /guru/edit_account.jsp  Guru     
20021022_00.00.21(tcpConnection-80-2996):       193.108.239.34  /misc/login.jsp Misc     
...

Kada se korisnik prijavljeni, datoteci dnevnika ima svoj korisnički ID, a ne njihove IP adrese.

Evo kako možete dobiti popis URL-ova koje ljudi gledaju na recimo 22. oktobar 2002:

$ awk '{print $3;}' < /home/public/cs601/unix/pageview-20021022.log
/faq/subtopic.jsp?topicID=472&page=2
/index.jsp
/faq/subtopic.jsp?topicID=364
/faq/view.jsp?EID=736437
/faq/topicindex.jsp?topic=JSP
/faq/index.jsp
/faq/view.jsp?EID=225150
/forums/most_active.jsp?topic=EJB
/guru/edit_account.jsp
/misc/login.jsp
...

Ako želite računati koliko pregleda stranica bilo koji dan da se ne obrađuje stranice (moje stranice obrade su sve forme process_xxx), cijevi rezultate kroz grep i wc zajedno:

$ awk '{print $3;}' < /home/public/cs601/unix/pageview-20021022.log | \
  grep -v process | \
  wc -l
67850

Ako želite jedinstveni popis URL-ova, možete sortirati izlaz, a zatim koristiti uniq:

$ awk '{print $3;}' < /home/public/cs601/unix/pageview-20021022.log | \
  sort | \
  uniq

uniq samo ruši sve ponavlja linije u jednoj liniji – to je razlog zašto morate prvo sortirati izlaz. Vi ćete dobiti izlaz kao što su:

/article/index.jsp
/article/index.jsp?page=1
/article/index.jsp?page=10
/article/index.jsp?page=2
...

Tarballs

Napomena: Naziv dolazi iz sličnih riječi, dlaka (stvari koje mačke povratiti), prilično sam siguran.

Prikupiti gomilu datoteke i direktorije zajedno, koristite katran. Na primjer, da katranom se čitav svoj home direktorij i stavite arhive u / tmp, učiniti

$ cd ~parrt
$ cd .. # go one dir above dir you want to tar
$ tar cvf /tmp/parrt.backup.tar parrt

Po konvenciji, koristite .tar kao produžetak. Da untar ovo korištenje datoteka

$ cd /tmp
$ tar xvf parrt.backup.tar

katran untars stvari u trenutnom direktoriju!

Nakon pokretanja untar, naći ćete novi direktorij, / tmp / parrt, da je kopija vašeg home direktorij. Imajte na umu da način na koji katranom stvari diktira strukturu direktorija kad untarred. Činjenica da sam u stvaranju tar spomenuo parrt znači da ću morati da dir kad untarred. Nasuprot tome, u narednom će napraviti kopiju moj dom direktorija, ali bez jednog parrt root dir:

$ cd ~parrt
$ tar cvf /tmp/parrt.backup.tar *

To je dobra ideja da se katranom stvari sa root direktorij, tako da kad untar ne stvaraju milion datoteke u trenutnoj direktno. Da vidimo šta je u arhive, upotreba

$ tar tvf /tmp/parrt.backup.tar

Većinu vremena možete uštedjeti prostor pomoću z argument. Tarball će tada biti gzip’d i ne bi trebalo koristiti nastavak datoteke .tar.gz:

$ cd ~parrt
$ cd .. # go one dir above dir you want to tar
$ tar cvfz /tmp/parrt.backup.tar.gz parrt

Otpakivanje zahtijeva z argument i:

$ cd /tmp
$ tar xvfz parrt.backup.tar.gz

Ako imate veliku datoteku komprimirati, koristite gzip:

$ gzip bigfile

Nakon pogubljenja, vaša datoteka će je preimenovan bigfile.gz. Da biste raspakirali, koristite

$ gzip -d bigfile.gz

Da biste prikazali tekstualnu datoteku koja se trenutno gzip’d, koristite zcat:

$ zcat bigfile.gz

Kreće datoteke između mašine

rsync

Kada je potrebno imati direktorij na jednoj mašini odraz na drugoj mašini, koristite rsync. On uspoređuje sve datoteke u direktoriju pod drvo i kopije u odnosu na bilo koji su se promijenile u ogledalima direktorij na drugi stroj. Na primjer, evo kako bi mogao “povući” sve za rezanje datoteke iz livebox.jguru.com u kutiju iz koje ste izvršiti rsync naredbe:

$ hostname
jazz.jguru.com
$ rsync -rabz -e ssh -v '[email protected]:/var/log/jguru/*' \
  /backup/web/logs

rsync će izbrisati ili skratiti datoteke kako bi se osiguralo datoteke ostaju isti. Ovo je loše ako obrišete datoteku greškom – to će zbrisati svoj backup datoteka. Dodaj argument zove –suffix reći rsync napraviti kopiju bilo koje postojeće datoteke prije nego što ga prepisuje:

$ hostname
jazz.jguru.com
$ rsync -rabz -e ssh -v --suffix .rsync_`date '+%Y%m%d'` \
 '[email protected]:/var/log/jguru/*' /backup/web/logs

gdje `datum ‘+% Y% m% d’` (u obrnutom jednostruke navodnike) znači “izvršiti ovaj datum komandu”.

Da biste izuzeli određene obrasce iz sync, koristite –exclude:

$ rsync -rabz --exclude=entitymanager/ --suffix .rsync_`date '+%Y%m%d'` \
  -e ssh -v '[email protected]:/var/log/jguru/*' /backup/web/logs

scp

Da biste ručno kopirali datoteku ili direktorij, koristite scp:

$ scp lecture.html [email protected]:~parrt/lectures

Baš kao k.č., koristiti -r da rekurzivno kopiranje direktorija.

Razni

find

Većina GUI za Linux ili PC imaju pretraživanje objekt, ali iz komandne linije možete koristiti naći. Da biste pronašli sve datoteke pod nazivom .p4 početkom u direktoriju ~ / ANTLR / Depot / projekata, upotreba:

$ find  ~/antlr/depot/projects -name '.p4'

Na default “akcija” je -print.

Možete navesti regularni izraz koji odgovaraju. Na primjer, pogledati ispod home direktorij za bilo koji XML datoteke, koristite:

$ find ~ -name '*.xml' -print

Napomena korištenje jednostruke navodnike za sprečavanje širenja komandne linije – želite da se ‘*’ da idem na find komandu.

Možete izvršiti naredbu za svaku datoteku ili direktorij je utvrdio da odgovara ime. Na primjer, da li izbrisati sve XML datoteke, uradite ovo:

$ find ~ -name '*.xml' -exec rm {} \;

gdje “{}” je skraćenica za “trenutnu datoteku koja odgovara”. Kraj komande moraju biti raskinut s ‘;’ ali zbog širenja komandne linije, morat ćete izbjeći ‘;’.

Možete navesti i informacije o vremenu u vašem upitu. Ovdje je shell skriptu koja koristi pronaći izbrisati sve datoteke starije od 14 dana.

#!/bin/sh

BACKUP_DIR=/var/data/backup

# number of days to keep backups
AGE=14 # days
AGE_MINS=$[ $AGE * 60 * 24 ]

# delete dirs/files
find $BACKUP_DIR/* -cmin +$AGE_MINS -type d -exec rm -rf {} \;

Koristite find u leđa krpelja kao argument:

vi `find . -name '*.java'` # open all java files below current dir

fuser

Ako želite da znate ko koristi port, kao što su HTTP (80), koristite grejača. Morate biti root za ovaj koristiti:

$ sudo /sbin/fuser -n tcp 80
80/tcp:              13476 13477 13478 13479 13480
13481 13482 13483 13484 13486 13487 13489 13490 13491
13492 13493 13495 13496 13497 13498 13499 13500 13501 13608

Izlaz ukazuje na listi procesa u vezi sa tim portom.

whereis

Ponekad želite da koristite komandu, ali to nije u vašem putu i ne možete sjetiti gdje je. Koristite whereis gledati u standardnim UNIX lokacije za naredbu.

$ whereis fuser
fuser: /sbin/fuser /usr/man/man1/fuser.1 /usr/man/man1/fuser.1.gz
$ whereis ls   
ls: /bin/ls /usr/man/man1/ls.1 /usr/man/man1/ls.1.gz

whereis pokazuje man stranice.

which

Ponekad vam se može izvršenje pogrešnu verziju komande i želite znati koju verziju komande PATH ukazuje treba pokrenuti. Koristite što da pitam:

$ which ls
alias ls='ls --color=tty'
        /bin/ls
$ which java
/usr/local/java/bin/java

Ako se ništa ne nalazi u vašem putu, vidjet ćete:

$ which fuser
/usr/bin/which: no fuser in (/usr/local/bin:/usr/local/java/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/X11R6/bin:/home/parrt/bin)

kill

Da biste poslali signal na proces, koristite kill. Obično ćete želite da se samo reći kill PID gdje PID mogu se naći od PS ili vrha (vidi dolje).

Koristite kill -9 PID kada ne možete dobiti proces da umre; to znači ubiti ga sa “ekstremnim predrasudama”.

traceroute

Ako imate problema da na licu mjesta, koristite traceroute gledati slijed hmelja koriste da bi na licu mjesta:

$ /usr/sbin/traceroute www.cnn.com
 1  65.219.20.145 (65.219.20.145)  2.348 ms  1.87 ms  1.814 ms
 2  loopback0.gw5.sfo4.alter.net (137.39.11.23)  3.667 ms  3.741 ms  3.695 ms
 3  160.atm3-0.xr1.sfo4.alter.net (152.63.51.190)  3.855 ms  3.825 ms  3.993 ms
...

Koja je moja IP adresa?

$ /sbin/ifconfig

Pod eth0 sučelje, vidjet ćete inet addr:

eth0      Link encap:Ethernet  HWaddr 00:10:DC:58:B1:F0  
          inet addr:138.202.170.4  Bcast:138.202.170.255  Mask:255.255.255.0

Korisni kombinacije

Kako ubiti skup procesa

Ako želite da ubije sve Java procesa radi za parrt, možete ili pokrenuti killall java ako ste parrt ili generirati “ubiti” skriptu putem:

$ ps auxwww|grep java|grep parrt|awk '{print "kill -9 ",$2;}' > /tmp/killparrt
$ bash /tmp/killparrt # run resulting script

/ Tmp / killparrt datoteka će izgledati ovako:

kill -9 1021
kill -9 1023
kill -9 1024

Napomena: također možete učiniti zajednički zadatak sa:

$ killall java

Imajte na umu da je ovo linux specifičan; Rečeno mi je da će ubiti sve prerade na UNIXen kao Solaris!

Kako napraviti histogramu

Histograma je skup brojanja, vrijednost parova ukazuje koliko se često javlja vrijednost. Osnovna operacija će biti za sortiranje, onda računati koliko vrednosti se javljaju u nizu i zatim preokrenuti vrsta, tako da je vrijednost sa najvišim broj je na vrhu izvještaja.

$ ... | sort |uniq -c|sort -r -n 

Imajte na umu da vrsta vrsta u cjelini liniji, ali je prva kolona je očito značajan baš kao što je prvo slovo u nečije prezime znatno pozicionira svoje ime u sortirane liste.

uniq -C ruši sve ponovljene sekvence vrijednosti, ali ispisuje broj pojavljivanja pred vrijednosti. Podsjetimo prethodnog sortiranja:

$ awk '{print $3;}' < /home/public/cs601/unix/pageview-20021022.log | \
  sort | \
  uniq
/article/index.jsp
/article/index.jsp?page=1
/article/index.jsp?page=10
/article/index.jsp?page=2
...

Sada dodajte -C na uniq:

$ awk '{print $3;}' < /home/public/cs601/unix/pageview-20021022.log | \
  sort | \
  uniq -c
 623 /article/index.jsp
   6 /article/index.jsp?page=1
  10 /article/index.jsp?page=10
 109 /article/index.jsp?page=2
...

Sada sve što morate učiniti je obrnuto vrsta linije prema prvim kolonu brojčano.

$ awk '{print $3;}' < /home/public/cs601/unix/pageview-20021022.log | \
  sort | \
  uniq -c | \
  sort -r -n
6170 /index.jsp
2916 /search/results.jsp
1397 /faq/index.jsp
1018 /forums/index.jsp
 884 /faq/home.jsp?topic=Tomcat
...

U praksi, možda želite dobiti histogram koji je “despidered” i samo ima pogled u vezi FAQ. Možete filtrirati sve stranice pogled linije povezane s pauk IP adresa i filtera u samo FAQ linije:

$ grep -v -f /tmp/spider.IPs /home/public/cs601/unix/pageview-20021022.log | \
  awk '{print $3;}'| \
  grep '/faq' | \
  sort | \
  uniq -c | \
  sort -r -n
1397 /faq/index.jsp
 884 /faq/home.jsp?topic=Tomcat
 525 /faq/home.jsp?topic=Struts
 501 /faq/home.jsp?topic=JSP
 423 /faq/home.jsp?topic=EJB
...

Ako želite da vidite samo despidered FAQ stranice koje su navedeni više od 500 puta, dodajte awk komandu do kraja.

$ grep -v -f /tmp/spider.IPs /home/public/cs601/unix/pageview-20021022.log | \
  awk '{print $3;}'| \
  grep '/faq' | \
  sort | \
  uniq -c | \
  sort -r -n | \
  awk '{if ($1>500) print $0;}'
1397 /faq/index.jsp
 884 /faq/home.jsp?topic=Tomcat
 525 /faq/home.jsp?topic=Struts
 501 /faq/home.jsp?topic=JSP

Generiranje Java klase hijerarhije dijagrama

Student je pitao da li sam znao programa koji generira klasa hijerarhije dijagrama. Ja sam rekao “ne”, ali onda sam shvatio da ne treba. Evo jedan brod da to uradi:

# pulls out superclass and class as $5 and $3:
# public class A extends B ...
# only works for public classes and usual formatting
cat *.java | grep 'public class' $1 | \
    awk 'BEGIN {print "digraph foo {";} {print $5 "->" $3;} END {print "}"}'

To stvara grafikon datoteke DOT formatu. Probaj. To je sjajno. Radovi za većinu slučajeva. Izlaz izgleda ovako:

digraph foo {
antlr.CharScanner->JavaLexer
antlr.LLkParser->Mantra
->TestLexer
}

Generiranje skripte i programe

Volim da automatizirati što je više moguće. Ponekad to znači pisanje programa koji generira drugi program ili skripte.

Obrada mail datoteke

Htio sam da se niz SQL naredbi koje će ažurirati našu bazu podataka kad god neko email odbila. Obrada datoteke pošte je prilično jednostavan, jer možete pogledati kod greške zatim e-mail adresu. A odbila email izgleda ovako:

From [email protected]  Wed Jan  9 17:32:33 2002
Return-Path: <>
Received: from web.jguru.com (web.jguru.com [64.49.216.133])
        by localhost.localdomain (8.9.3/8.9.3) with ESMTP id RAA18767
        for <[email protected]>; Wed, 9 Jan 2002 17:32:32 -0800
Received: from localhost (localhost)
        by web.jguru.com (8.11.6/8.11.6) id g0A1W2o02285;
        Wed, 9 Jan 2002 17:32:02 -0800
Date: Wed, 9 Jan 2002 17:32:02 -0800
From: Mail Delivery Subsystem <[email protected]>
Message-Id: <[email protected]>
To: <[email protected]>
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
        boundary="g0A1W2o02285.1010626322/web.jguru.com"
Subject: Returned mail: see transcript for details
Auto-Submitted: auto-generated (failure)

This is a MIME-encapsulated message

--g0A1W2o02285.1010626322/web.jguru.com

The original message was received at Wed, 9 Jan 2002 17:32:02 -0800
from localhost [127.0.0.1]

   ----- The following addresses had permanent fatal errors -----
<[email protected]>
    (reason: 550 Host unknown)

   ----- Transcript of session follows -----
550 5.1.2 <[email protected]>... Host unknown (Name server: intheneck.com: host not found)
...

Obratite pažnju poruka o grešci SMTP 550. Pogledajte za koje na početku linije onda ubiti zagradi ugao, izvadite … i koristiti awk za štampanje SQL:

# This script works on one email or a file full of other emails
# since it just looks for the SMTP 550 or 554 results and then
# converts them to SQL commands.
grep -E '^(550|554)' | \
        sed 's/[<>]//g' | \
        sed 's/\.\.\.//' | \
        awk "{printf(\"UPDATE PERSON SET bounce=1 WHERE email='%s';\n\",\$3);}" >> bounces.sql

Moram pobjeći 3 $ jer to znači da nešto surround bash skriptu i želim awk da vidim znak za dolar.

Generiranje getter/setters

#!/bin/bash
# From a type and name (plus firstlettercap version),
# generate a Java getter and setter
#
# Example: getter.setter String name Name
#

TYPE=$1
NAME=$2
UPPER_NAME=$3

echo "public $TYPE get$UPPER_NAME() {"
echo "  return $NAME;"
echo "}"
echo
echo "void set$UPPER_NAME($TYPE $NAME) {"
echo "  this.$NAME = $NAME;"
echo "}"
echo

Da li sam bio sjeckan?

Neuspješni upisi:/var/log/messages

prošle, w, uptime

/Etc/passwd promijenilo?

fuser za luke

portscans u izvještaju server

čudno obrada Drobljenje CPU?

Programski Jezik Leda

Source: http://web.engr.oregonstate.edu/~budd/leda.html

Leda je multiparadigm programski jezik. Ideja o multiparadigm jezika je da pruži okvir u kojem programeri mogu raditi u različitim stilovima, slobodno izmeštanjem konstrukata iz različitih paradigmi. Tehnike podržan od strane Leda uključuju imparative programiranje, pristup objektno orijentisan, logika programiranja, i funkcionalno programiranje.

Kompletan opis Leda može se naći u knjizi, Multiparadigm programiranje u Leda, objavio Addison-Wesley 1995. Nažalost, knjiga je sada iz štampe, međutim, uzorak poglavlja iz ove knjige su dostupne on-line; to uključuje uvod u Leda jezika i formalni opis Leda gramatike.



Tim Budd, [email protected]

Pregled CORBA

Source: http://www.cs.wustl.edu/~schmidt/corba-overview.html

Zajednička Objekt Zahtjev Broker Arhitektura (CORBA) [OMG: 95a] je u nastajanju otvoren distribuirani objekt computing infrastrukture koji se standardizirana od strane Grupa Upravljanje Objektima (OMG). CORBA automatizira mnoge zajedničke mreže programskih zadataka kao što su registracija objekta, lokacija, i aktiviranje; traži demultipleksiranje; kadriranje i greškama rukovanje; parametar ranţirne i demarshalling; i rad otpremanje. Vidi Web stranice OMG za više pregled materijala na CORBA. Vidi moje CORBA stranica za dodatne informacije o CORBA, uključujući i naše tutoriali i istraživanja na visokih performansi i kugle u realnom vremenu. Rezultati iz našeg istraživanja na visokih performansi i real-time CORBA su slobodno dostupni za preuzimanje u open-source TAO ORB.

Na sljedećoj slici pokazuje primarne komponente u OMG Referentni model arhitekture. Opisi tih komponenti su dostupne dalje ispod. Delovi ovih opisa se baziraju na materijalu iz [Vinoski].

Slika 1. OMG referentni model arhitekture
  • Objekt usluge – to su interfejsi domena-nezavisni koje koriste mnogi distribuiranih programa objekta. Na primjer, pružanja usluga za otkrivanje drugih dostupnih usluga je gotovo uvijek potrebno, bez obzira na domenu primjene. Dva primjera predmet usluge da ispuni ovu ulogu su:
    • Imenovanje Servis – koji omogućava klijentima da pronađu predmete na osnovu imena;
    • Trgovački Servis – koji omogućava klijentima da pronađu predmete na osnovu njihove imovine.

Tu su i Objektni Servis specifikacije za upravljanje životnim ciklusom, sigurnost, transakcije, i obavijest događaj, kao i mnogi drugi [OMG: 95b].

  • Zajedničkim objektima – Kao objekta Servis interfejsa, ovi interfejsi su horizontalno-orijentirani, ali za razliku od objekta usluge su orijentisana na krajnjeg korisnika aplikacije. Jedan primjer takvog objekta je Distributed Document Komponenta Objekt (DDCF), složeni dokument Zajednički Objekt na osnovu OpenDoc. DDCF omogućuje prezentaciju i razmjenu objekata na osnovu modela dokument, na primjer, olakšavajući povezivanje spreadsheet objekta u izvještaju dokument.
  • Domain Interfaces – Ove interfejsi popunio uloge sličan predmet usluge i zajedničkih objekata, ali su orijentirani prema određenim aplikacije domene. Na primjer, jedan od prvih OMG RFPs izdaje domena sučelja je za proizvod Data Management (PDM) Akteri za proizvodnju domena. Ostali OMG RFPs će uskoro biti objavljen u oblasti telekomunikacija, medicinske i finansijske domena.
  • Primjena Interfaces – To su interfejsi razvijen posebno za datu aplikaciju. Zbog toga što su određene aplikacije, i zato što OMG ne razvija aplikacije (samo specifikacije), te interfejsi nisu standardizovani. Međutim, ako s vremenom se čini da su određene široko korisnih usluga nastaju iz određene aplikacije domene, oni mogu postati kandidati za buduće standardizacije OMG.

CORBA ORB Arhitektura

Na sljedećoj slici pokazuje primarne komponente u CORBA ORB arhitekture. Opisi tih komponenti su dostupni ispod figura.

Slika 2. CORBA ORB Arhitektura
  • Objekt – Ovo je CORBA programski entitet koji se sastoji od identiteta, interfejs, i implementaciju, koji je poznat kao sluga.
  • Servant – Ovo je programski implementacija jezik entitet koji definira operacije koje podržavaju CORBA IDL sučelje. Službenici mogu pisati u različitim jezicima, uključujući C, C ++, Java, Smalltalk, i Ada.
  • Klijent – Ovaj je program entitet koji poziva operaciju na implementaciji objekat. Pristupanje usluge udaljenog objekta treba biti transparentan pozivatelja. U idealnom slučaju, to bi trebao biti kao jednostavan kao pozivanje metoda na objektu, i.e., obj-> op (args). Preostale komponente na slici 2 pomoć da podrže ovaj nivo transparentnosti.
  • Objekt zahtjev broker (ORB) – ORB pruža mehanizam za transparentno komunikaciju zahtjeve klijenata za cilj implementacije objekta. ORB pojednostavljuje distribuira programiranje odvajanje klijenta iz detalje metoda prizivanja. To čini zahtjeve klijenta čini se da lokalni postupak poziva. Kada klijent poziva operaciju, kugla je odgovoran za pronalaženje realizaciju objekta, transparentno aktiviranjem ako je potrebno, pružajući zahtjev za objekt, a vraća nikakav odgovor na pozivatelja.
  • ORB Interface – Sfera je logično entitet koji se može implementirati na različite načine (kao što je jedan ili više procesa ili skup biblioteka). Razdvojiti aplikacije od detalje implementacije, specifikacije CORBA definira apstraktna interfejs za ORB. Ovo sučelje pruža različite pomagač funkcije kao što su pretvaranje reference na objekte u nizove i obrnuto, i stvaranje liste argumenata za zahtjeva kroz dinamičan prizivanje sučelje opisano u nastavku.
  • CORBA IDL kupone i kostura – CORBA IDL kupone i kosturi služe kao “ ljepilo ” između klijenta i poslužitelja aplikacija, odnosno, i ORB. Transformacija između definicije CORBA IDL i ciljni programski jezik je automatizovan od CORBA IDL kompajler. Upotreba kompilator smanjuje potencijal za nedosljednosti između klijenta kupone i server kostura i povećanja mogućnosti za automatsku kompajler optimizacije.
  • Dinamičan prizivanje sučelje (DII) – Ovo sučelje omogućava klijentu da direktan pristup osnovni mehanizmi zahtjeva koje je ORB. Aplikacije koriste DII za dinamički izdaju zahtjeve za objekte bez potrebe IDL sučelje specifične kupone koji će biti povezan u. Za razliku od IDL kupone (koji omogućuju samo zahtjeva RPC-style), DII također omogućava klijentima da ne blokira odgođeni sinhroni (odvojene send i primaju operacije) i oneway (slati samo) poziva.
  • Dinamičan kostur sučelje (DSI) – To je analogni servera strane da DII klijenta strane. DSi omogućava ORB da dostave zahtjeve za implementaciju objekat koji nema kompiliranja vremena znanja o vrsti objekta se provodi. Klijent koja podnosi zahtjev nema pojma da li je implementacija koristi tip-specifične IDL kosture ili koristi dinamičke kosture.
  • Adapter objekta – Ovo pomaže ORB sa isporukom zahtjeve objekta i aktiviranje objekta. Što je još važnije, objekt adapter saradnika prigovor implementacije sa ORB. Objekt adapteri mogu biti specijalizirana za pružanje podrške za određene stilove realizaciju objekata (kao što su OODB objekat adapteri za upornost i biblioteku objekata adapteri za registrirane-udaljenih objekata).

Moja CORBA stranica sadrži dodatne informacije o obrascima i tehnikama za dizajniranje CORBA kugle i CORBA usluge. Primjeri ovih obrazaca i tehnike mogu se naći u TAO implementacije u realnom vremenu CORBA.


Reference

[OMG: 95a] Common Object Request Broker Archictecture, OMG, jula 1995.
[OMG: 95b] Common Object Services Specification, OMG 95-3-31 1995

[Vinoski] Steve Vinoski, CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments, Communications Magazine IEEE, februara 1997.