hvad forventer fra på 5,5

, hvad forventer fra på 5,5,,,,, 6,,,,,,,,, 162,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, den første på 5,5 alpha offentligt er blevet løsladt.efter at have lidt tid til at teste og eksperimentere med det, vi nu kan bringe vores omfattende overblik over, hvad at se frem til.,,,, montering, hvis de vil følge med til denne artikel, er du nødt til at installere på 5,5 til dig selv.du kan finde forbindelsen til kilden bundt.desuden, hvis du har brug for vinduerne binær fil, du kan få den fra samme side. når du har kildekoden downloadede, ekstrakt alt i en mappe og navigere på det med din favorit terminal - program.kan du installere folkesundhedsprogrammet, hvor du vil, - - men for nemheds skyld, jeg er ved at skabe en fortegnelse i roden til min bil, kaldet, php5.5,.for at skabe en ny mappe og så få din bruger ejer sagde følgende i din mappe, type terminal:, sudo mkdir /php5.5 sudo chown brugernavn /php5.5, næste gang, du er nødt til at beslutte, hvilke udvidelser og karakteristika, vil du have monteret med din kopi af folkesundhedsprogrammet.da dette er en alfa - version, beregnet til prøvning, er jeg ikke bekymre mig om, at det var fuldt ud.for resten, jeg vil kun komme til at installere krøller, men der kan også være andre ting, at du gerne vil tilføje, f.eks. mysql eller zip støtte.se en fuldstændig liste over konfiguration muligheder, løb:,. /konfigurere - h, desuden mulighed for at installere krøller, er der to andre egenskaber, som vi skal fastsætte:, forstavelse, og med ud fil vej, mulighed.disse to egenskaber, der er oprettet til placering af folkesundhedsprogrammet anlæg og. ini, fil.så i terminalen, type:,. /konfigurere - præfiks = /php5.5 - - med ud fil sti = /php5.5 - - med krøller = ekstrakt /- sikre, at installere, første linje konfigurerer folkesundhedsprogrammet med krummer, og fastsætter placering til den mappe, vi gjorde tidligere.de næste to linjer bygge på og flytte filer til den angivne fortegnelse.det næste skridt er at kopiere den stikprøve, php.ini, fil til folkesundhedsprogrammet mappe.for at gøre dette, løb:, cp php.ini-development /php5.5 /folkesundhedsprogrammet. ini, bør du har nu alt installeret korrekt.den letteste måde at afprøve den nye version er at løbe, bygget i web - server.sejle til, bin, mappe indenfor, php5.5, statistik (cd /php5.5 /bin), og art. /php - t /sti //guide - s 0.0.0.0:4444,.,,, - t mulighed fastsættes server er grundlæggende directory (dvs. det sted, hvor du vil din php filer), - s, ejendom, fastsætter ip - adresse og port nummer, hvor serveren skal binde sig til.ved hjælp 0.0.0.0 til ip - adresse fortæller - - at lytte til alle ip - adresser (f.eks. localhost, 127.0.0.1, 192.168.0.100 osv.).,, hvis alt går godt, og du vil blive mødt med en besked, - - at de lytter til ip /havn, der er specificeret, og det vil sige det dokument, rod, hvor det er rettet mod.nu kan vi begynde at lege med nye elementer.,, generatorer, generatorer tillade dig at skabe skik funktioner, der bevarer stat mellem løber.,, den største over php 5.5 må være generatorer.generatorer tillade dig at skabe skik funktioner, der bevarer stat mellem løber.det virker på en ny nøgleord, der kaldes, udbytte, der kan anvendes i en funktion for indlæsning af data og outputting. især når funktionen bliver til en linje, der indeholder udbyttet kommando, folkesundhedsprogrammet vil fastfryse funktion er gennemførelsen og gå tilbage til at løbe resten af dit program.når du ringer til opgave at fortsætte - enten ved at fortælle det videre, eller ved at sende det data - folkesundhedsprogrammet vil gå tilbage til funktion og fortsætte, hvor det slap, bevarelse af værdierne af de lokale variabler, der blev defineret, indtil der. det lyder måske lidt fedt i starten, men hvis du giver det troede, det åbner dørene til en masse interessante designløsninger.for det første kan simulere virkningerne af andre programmeringssprog, der er "doven evaluering," som haskell.det alene giver dig mulighed for at definere et datasæt og model matematik opgaver efter deres faktiske definition.- du behøver ikke at skabe så mange globale variabler; hvis en variabel er kun beregnet til en bestemt funktion, du kan tage det med i en generator, og sådan vil ske automatisk af generator, selv i form af den returnerede objekt er vigtige. det er nok teori for nu, - tag et kig på en generator i aktion.for at starte, sejle til dokumentet rod du er defineret ved kørsel på den server, og skabe en fil, der kaldes "index.php".nu, åbne filen og type i følgende:, funktion fibonacci() {$a = 0 $b = 1; mens (korrekt) ($a = $+ $b $b = $- $b giver $a}}, det er "goddag" funktion uendelige datasæt.det er en funktion, der vil produktionen alle fibonacci tallene.at bruge den generator, alt du skal gøre er at type: $småløj = fibonacci(). $småløj - > current(). $småløj - > next(). $småløj - > current(); //,, hvad der sker her, er, at vi laver $løgn, en generator formål, og så du har adgang til den underliggende kommandoer, som current(), og next(),.det, current(), funktion, returnerer den aktuelle værdi af generatoren; det er værdien af alt, hvad du gav efter funktion - i vores tilfælde $.du kan kalde denne funktion flere gange, og du vil altid have samme værdi, fordi de, current(), funktion ikke fortælle generatoren at fortsætte med at evaluere dets kode.det er der, next(), funktion, kommer ind i billedet,, next(), anvendes til at frigive iterator og fortsætte med denne funktion.siden vores funktion er inde i en uendelig, mens, loop, det vil bare fryse igen ved det næste, udbytte, kommando, og vi kan få den næste værdi med en opfordring til, current(),.,, til fordel for generatorer, er, at de lokale variabler er persistente,.,, hvis du har brug for at opnå noget, der ligner dette tidligere, ville du blive nødt til at sætte en slags, som på forhånd beregner, loop værdier i et system, og stop efter et vist antal iterationer (f.eks. 100), for ikke at overbelaste folkesundhedsprogrammet.fordelen for generatorer, er, at de lokale variabler, som er vedvarende, og du kan bare skrive hvad funktion skal, som garanteret til, hvordan det burde gøre det.det, jeg mener, er, at man blot skrive opgave, og du behøver ikke bekymre dig om globale variabler, og hvor mange iterationer skal udføres. den anden vej, udbytte, kan anvendes til at modtage data.det virker på samme måde som før: da den funktion, bliver til en linje med, udbytte, nøgleord, det vil stoppe, men i stedet for at læse data, current(), vil vi give det data med, send(), funktion.her er et eksempel på dette i aktion:, funktion logger() ($log_num = 1; mens (korrekt) ($f = udbytte, echo "log #".$log_num + +. ": ".$f) $logger = logger(); ($jeg = 0 $jeg < 10 $i + +) ($logger - > sende ($) 2);}, dette er en simpel generator med en log - meddelelse.alle generatorerne starter i en pause, stat; en opfordring til at sende, (eller endog nuværende) vil starte generatoren og fortsætte, indtil den rammer en, udbytte, kommando.den sender, kommando vil så ind sendte data og fortsætte med at behandle funktion, når den kommer til den næste, udbytte.hver efterfølgende opfordring til at sende, vil behandle en løkke; det vil komme ind i sendt oplysninger til $f, og så fortsætte, indtil det svinger tilbage til den næste, udbytte,., så hvorfor ikke bare putte det ind i en regelmæssig funktion?tja, du kunne, men så ville du heller ikke brug for et separat global variabel til at holde styr på log nummer, eller du skal bruge for at skabe en skik. klasse, tror jeg ikke, af generatorer som en måde til at gøre noget, der ikke var muligt, men snarere som et redskab til at gøre tingene hurtigere og mere effektivt.,, selv uendelig fastsætter var mulige, men det har brug for til at oparbejde den liste fra begyndelsen hver gang (dvs. gå igennem det, før det bliver for det løbende indeks) eller opbevare alle sine data inden for global variabler.med generatorer, din kode er meget renere og mere præcise,.,, lister, for hvert, erklæringer, den næste ajourføring, som jeg har fundet til at være ganske nyttigt, er evnen til at bryde en indlejrede system i en lokal variabel i en hver, erklæring.den liste, opbygge har været her i et stykke tid siden php4); det kort, en liste over variabler til en vifte.så i stedet for at skrive noget som: $data = system ("john", "smith", "032-234-4923"); $fname = $data [0] $lname = $oplysninger [1], $celle = $data [2], du kan bare skrive: $data = mængde ("john", "smith", "032-234-4923"); liste ($fname, $lname $celle) = $data, det eneste problem var, at hvis du havde en række arrays (indlejrede array) af oplysninger, du ønskede at kort, du ikke var i stand til at cyklus igennem dem. med en, for hvert, loop.i stedet ville du være nødt til at tildele, de fører til en lokal variable, og så det med en kort liste, eller kun i loop. som version, 5.5, kan du klippe midt mand og rydde op i din kode.her er et eksempel på den gamle måde, og den nye: //- gammel metode - - //hver ($parentarr som $childarr) (liste ($, $2) = $childarr; //fortsætte med loop) //- ny metode - - //hver ($parentarr som liste (- en $2)) (//fortsætte med loop}, den gamle måde muligvis ikke er for meget besvær, men det er noget rod, og det gør den kode mindre letlæselig.,, let kodeord api, på min mac er bygget i grafikkort, jeg var i stand til at gå igennem over 200 mio. hashes en andet!,, nu kræver en lille viden om hashes og kryptering for at forstå. den nemmeste måde at hash kodeord i folkesundhedsprogrammet har været at bruge noget som md 5 eller sha - algoritme.problemet med hash funktioner, som disse er, at de er meget let at beregne.de er ikke nyttig længere for sikkerhed.i dag, bør kun anvendes for at kontrollere en fil er integritet.jeg installerede en gpu hasher på min computer for at afprøve denne påstand.på min mac er bygget i grafikkort, jeg var i stand til at gå igennem over 200 mio. hashes et sekund!hvis du var en pligtopfyldende og investeret i en førsteklasses multi - grafikkort fælde, du kunne gå gennem milliarder af hashes en anden.,, teknologi til disse metoder ikke var meningen, at sidste.,, så hvordan kan du ordne dette problem?svaret er, at du er en justerbar belastning af algoritme.det, jeg mener, er, at du gør det svært at proces.ikke at det vil tage et par sekunder pr. hash, som det ville ødelægge brugerens erfaring.men forestil dig, at du klarede det kun tage et øjeblik til at skabe.så, en bruger, ville i ikke engang klar over forsinkelsen, men nogen forsøger at bruteforce det ville have til at køre gennem millioner af forsøger - hvis ikke mere - og alle halvt sekunder ville så i årtier og århundreder.hvad med problemet med computere hurtigere i gang?det er, hvor "justerbare" del kommer i tit, du ville hæve den kompleksitet, til at skabe en hash.den måde, man kan sikre, at det altid er den samme tid.det er, hvad udviklere af folkesundhedsprogrammet forsøger at tilskynde folk til at gøre. de nye php bibliotek er en hashing "arbejdsgang, hvor folk er i stand til at kryptere, kontrollere og forbedre hashes og deres respektive forhold over tid.det er i øjeblikket kun skibe med bcrypt algoritme, men folkesundhedsprogrammet team har tilføjet en mulighed, der hedder misligholdelse, som du kan bruge.det vil automatisk ajourføring af deres hashes til den mest sikre algoritme, når de tilføjer nye. den måde, bcrypt virker, er det er dit kodeord gennem blowfish kryptering, x antal gange, men i stedet for at bruge blowfish med en nøgle, så du kunne ændre det senere, går den tidligere løb som nøglen til næste udgave.ifølge wikipedia, det er dit kodeord, 2 til, x, beløb.det er den del, du kan tilpasse sig.sig, det er nu, du skal bruge et omkostningsniveau for 5: bcrypt vil køre din hash, 2 til 5, eller 32 gange.det kan virke som et lavt tal, men, eftersom omkostningerne parameter tilpasser funktion eksponentielt, hvis du ændrede det til 15, så den funktion, vil løbe det igennem 32768 gange.misligholdelse omkostningsniveau er 10, men dette er konfigurerbare i kildekoden. med den teori af vejen, lad os kigge på en fuldstændig f.eks. $passere = "secret_password" $hash = password_hash ($over password_bcrypt, system ('cost = > 12, salt '= > "28. 2. brev. salt"); hvis (password_verify ($over $')) (hvis (password_needs_rehash ($hash, password_default, system ('cost = > 15))) ($hash = password_hash ($over password_default, system ('cost = > 15)} //gøre noget med hash.}, password_hash, funktion accepterer tre parametre: ordet hash, en konstant for hashing algoritme, og en fakultativ liste over områder, der omfatter salt og omkostninger.den næste opgave, password_verify, sørger for, at en streng matcher hash efter kryptering, og endelig det, password_needs_rehash, funktion, sørger for, at en hash, følger den anførte parametre.for eksempel, i vores tilfælde, sætter vi den hash omkostninger til tolv, men her er vi, med angivelse af 15, så den funktion, vil vende tilbage, sandt, hvilket betyder, at det skal være fortærskede. du har måske bemærket, at i, password_verify, og password_needs_rehash, funktioner, behøver du ikke at specificere de hashing metode, salt eller omkostninger.det er, fordi de oplysninger, der er prepended til hash snor.,, salte anvendes til at forhindre hashes fra precomputed i rainbow tabel. grunden til, at det er okay at samle de omkostninger og salt sammen med hash og ikke holde det hemmeligt, er på grund af, hvordan systemet sætter sin stærke sammen.omkostningerne skal ikke være en hemmelighed, fordi det er meningen, at det skulle være et nummer, som giver en stor nok byrde på serveren.det, jeg mener, er, at selv hvis nogen bliver dit hash og bestemmer, at din omkostningsniveauet kræver 1 /2 sekund at beregne, vil han vide, hvad plan for at bruteforce på, men det vil tage ham for længe til at knække (f.eks. år), salte anvendes til at forhindre hashes fra precomputed i en rainbow tabel.,, en regnbue tabel er dybest set en central værdi butik med en "ordbog" ord med tilsvarende hashes som deres nøgler.,, man skal gøre, er at precompute nok fælles ord - eller, værre endnu, - - og så kan de muligheder, det ord for en given hash på stedet.her er et eksempel på, hvordan salte kan hjælpe: lad os sige, at dit kodeord er "kodeord". dette normalt er et ret almindeligt ord; det vil sandsynligvis være i deres regnbue.det er et salt og tilføjer en tilfældig snor til dit kodeord, så i stedet for hashing "kodeord", det er virkelig hashing "passwordrandomsalt524%&#$&." det er betydeligt mindre sandsynligt, at før beregnet. hvorfor er saltene normalt anses for at være private oplysninger?traditionelt med ting som md 5 og kan lide, når man kender din salt, de kan vende tilbage til at udføre deres bruteforce teknikker, bortset fra at de vil tilføje salt til udgangen.det betyder, i stedet for bruteforcing din tilfældige kodeord snor, de er bruteforcing meget kortere standard password og tilsætning af salt.men heldigvis, fordi vi har den omkostningsfaktor fælde, det ville tage for lang tid at beregne hver hash med den nye salt.,,, at opsummere: salte, sikre, at precomputing en hash, ikke kan anvendes igen på en anden hash, og omkostningerne parameter, sørger for, at det ikke er muligt at beregne hver hash fra bunden.begge dele er nødvendige, men ingen af dem skal være hemmelig.,, det er derfor, den funktion, lægger dem til hash.,, husk, det er lige meget, hvad din salt er, at så længe det er enestående.,,, hvis du forstod, hvad det salt gør, så ved du, at det er bedre at lade det fungere tilfældigt generere en, end at komme ind på deres egne ord.selv om dette element er forudsat, at du ikke vil have alle jeres hashes har samme salt.hvis de gør, så hvis nogen lykkedes at bryde ind i jeres database, er de nødt til at gøre, er at beregne, tabel.da de vil have salt - og omkostningsniveau, det kan tage et stykke tid, men med tilstrækkeligt mange computere, når de proces, det, de vil have låst alle dine hashes.det er meget bedre at ikke tildele en og i stedet lade php tilfældigt generere en krølle tilføjelser.,,,, indtil nu, der er ingen nem måde at sende post via smtp.,, krøller er et andet område, hvor folkesundhedsprogrammet team har tilføjet nogle spændende nye tilføjelser og opdateringer.som version, 5.5, har vi nu støtte til ftp direktiverne til småkager, direktiver for ssl og regnskaber og direktiver til smtp - og rtsp protokoller, blandt andre.det ville tage for lang tid at komme ind på dem alle, men på grund af den fuldstændige liste, kan man nævne nyheden. side, vil jeg dog gerne tale om en særlig, som interesserer mig mest, nemlig smtp - sæt af direktiver.indtil nu var der ingen nem måde at sende post via smtp.du vil enten være nødt til at ændre din - - send - program til at sende meddelelser via en smtp - server eller ville du have til at downloade en tredjepart bibliotek - som ikke er den bedste løsning.med den nye krøller direktiver, er du i stand til at tale direkte med en smtp - serveren, såsom gmail, bare et par linjer, til bedre at forstå, hvordan koden virker, er det værd at lære lidt om smtp - protokol.hvad sker der, dit manuskript, forbindes med mail server, mail server anerkender din forbindelse og vender tilbage til dig de oplysninger (f.eks. domæne, software).du skal svare til server med din adresse.en snakkesalig (men høflig) protokol, smtp vil hilse på dig, så ved du, at det var modtaget. på dette punkt, er du klar til at sende kommandoer.de har brug for det, post fra, og den, rcpt til; disse kort, direkte til gang direktiver, curlopt_mail_from, og curlopt_mail_rcpt, hhv.du har kun en fra, adresse, men du er i stand til at indeholde flere, adresser.når dette er overstået, kan du bare ringe til kommando, data, og begynder at sende det egentlige budskab og en besked, rør.for at gøre en ende på den transmission, du er nødt til at sende en blank linie, efterfulgt af en periode efterfulgt af endnu en blank linie.de sidste to dele (dvs. data kommando, og at sekvens) er taget sig af krøller, så vi behøver ikke at bekymre dig om det, så i folkesundhedsprogrammet, er alt vi skal gøre, er at angive den post, fra og til direktiver, og så sende det egentlige budskab - alle inden for krøller.for at gøre tingene meget simple, jeg er ved at skabe en klasse, der hedder, gmail,, der vil acceptere et brugernavn og password og beskeden detaljer, og det vil sende e - mails igennem din gmail konto. jeg vil pasta hele klassen under, og så går vi igennem det linie for linie, som de fleste af det er boilerplate. klasse gmail (private $post, privat $e - mail: private $pass; offentlig funktion __construct ($e - mail, $pass) {$- > e - mail - = $e - mail: $- > passere = $pass;} privat funktion mailgen() {$fra = udbytte $at = udbytte $om = udbytte $body = udbytte udbytte fra ": <".$fra. "> \\ n "udbytte": < ".$. "> \\ n "udbytte" date ".dato ("f"). "\\ n "udbytte" om: ".$omfattet. "\\ n "udbytte" \\ n "giver $organ; udbytte" "} offentlig funktion getline() {$resp = $- > post - > current(). $- > post - > next(); tilbage $resp.} offentlige funktion sende ($. $om $organ) {$- > post = $- > mailgen(). $- > post - > sende ($- > e - mail -); $- > post - > sende ($); $denne - > post - > sende ($om); $- > post - > sende ($); $ch = curl_init (" smtps: //smtp. gmail. kom: 465 "); curl_setopt ($ch, curlopt_mail_from" < ".$- > e - mail -. "> "); curl_setopt ($ch, curlopt_mail_rcpt, system (<".$. "> ") curl_setopt ($ch, curlopt_username $- > e - mail -); curl_setopt ($ch, curlopt_password $- > pass); curl_setopt ($ch, curlopt_use_ssl, curlusessl_all); //curl_setopt ($ch, curlopt_verbose, sande) fakultativ, hvis du ønsker, at transaktionen curl_setopt ($ch, curlopt_readfunction, system ($," getline "); tilbage curl_exec ($ch)}} forhåbentlig din reaktion på denne kodeks var noget i retning af," wow, det er kort for en komplet smtp gennemførelse. "bare i tilfælde af, at det er kompliceret, vil vi gå over den.vi begynder med at definere tre private variabler: en for beskeden generator, der opbevarer brugerens e - mail, og opbevarer hans kodeord.det næste vi har producenten, der oplagrer den e - mail - og password til senere; det er, så vi kan sende flere mails uden at komme ind på det, hver gang.det, mailgen, funktion er en php 5.5 generator, som anvendes til produktion af den besked i henhold til den e - mail - protokollen lige i gang.grunden til, at det er nødvendigt, fordi den ordre, der anvendes i ruller ind i data, der er beregnet til behandling af en fil, linje for linje.så i stedet for at have en ekstra variabel til at huske, hvor vi var, jeg brugte en generator, der redder sin holdning. den næste opgave er anvendt til cykling ved generatoren.vi kan ikke komme ind i generatoren direkte i ruller; vi har brug for en mellemmand.- vil fortsætte med at fungere, indtil det bliver en tom linje.det er derfor, den sidste linje i generatoren tilbage en blank snor. den sidste funktion i den klasse, er den, der binder dem sammen.det første sæt generatoren til private variable defineret tidligere.det næste, vi sender den generator, alle de oplysninger, der kræves, og skabe en ny rulle variabel.vi har allerede drøftet, curlopt_mail_from, og curlopt_mail_rcpt,; de kort til tilsvarende smtp - kommandoer., curlopt_mail_rcpt, er et system, så du kan komme flere adresser.vi er nødt til at tilføje de papirer til at logge ind i gmail.jeg efterlod den snakkesalige mulighed der; uncomment det, hvis du ønsker at se hele smtp - transaktion.de sidste to linjer, bare sæt den funktion, hvor krøller bør få data fra den besked, og så vender vi tilbage til resultaterne. det er et godt par linjer, men det er alt for kompliceret.at bruge denne funktion, skabe en ny instans i denne klasse, til at sende funktion.her er et eksempel på, at sende to e - mails med denne: $gmail = nye gmail ("gmanricks @ gmail. com", "kodeord"); $gmail - > sende ("first_guy @ e - mail. com", "omfattet af e - mail -", "hej, mand, 'n, hvad der foregår."); $gmail - > sende ("second_guy @ e - mail. com", "andet", "vigtigt budskab."), og ting og sager, til at afslutte denne artikel, vil jeg styreformer i nogle af de mindre opdateringer til folkesundhedsprogrammet 5.5. en sej ting er tilsat støtte til konstant serie /snor dereferencing.det betyder, at du kan få adgang til individuelle personer i en statiske snor, som, hvis den snor var en række tegn.en hurtig eksempel herpå er følgende:, echo "goddag" [1]; //denne linje, vil echo "e" echo ["en", "to", "tre"] [2]; //dette forum "tre", og siden har vi endelig nøgleord.dette er knyttet til udgangen af en prøve /catcher block, hvad det gør, er at instruere på, hvorvidt de prøver eller fanger blev kaldt, du ønsker at behandle, og endelig punkt.det er godt for situationer, når du vil have resultatet af en prøve /fangstopgørelse.i stedet for at gentage kode i begge, du kan bare sætte "farligt" del i prøve /catcher block, og forarbejdning i endelig blok. en anden anvendelse, der blev foreslået af skaberen som bedste praksis, er at lægge hele oprydningen kode i den endelig blok.dette vil sikre, at man ikke f.eks. forsøge at lukke det samme strøm flere gange (f.eks. din kode styrtede ned og gik ind i catcher block efter lukketid, og du prøver at lukke den igen). det sidste, der er værd at nævne, er, hvordan mysql udvidelse vil være påkrævet i denne nye version.du bør ændre din kode enten, mysqli eller, bob, udvidelser i stedet.men det er længe siden, betragtes som en anti - mønster, det er godt for folkesundhedsprogrammet team officielt tager afstand fra det, mens der er bestemt mere opdateringer til at grave i punkterne i denne artikel, er, hvad jeg mener, er det vigtigste og mest spændende.,, indgåelse, tak for at læse. jeg håber, du har lært bed!som altid, hvis du har nogen bemærkninger eller spørgsmål, hop ind i samtalen nedenfor, og lad os snakke.,




Previous:
Next Page: