Saturday 14 October 2017

Moving Gjennomsnittet Clojure


Måle diskbruk i Linux (iowait vs IOPS) 18. februar 2011 på Linux Dette skjedde for meg når vi så på våre Hadoop-servere i dag, mange av våre devs bruker IOWait som en indikator på IO-ytelse, men det er bedre tiltak. IOWait er en CPU-metrisk, som måler prosentvis av tiden CPUen er inaktiv, men venter på at en IO skal fullføre. Merkelig - Det er mulig å ha et sunt system med nesten 100 iowait, eller ha en flaskehals med 0 iowait. En mye bedre metrisk er å se på disken IO direkte, og du vil finne IOPS (IO Operations Per Second). I Linux liker jeg kommandoen iostat, men det er noen måter å få på info. I debianubuntu er det i sysstatpakken (dvs.: sudo apt-get install sysstat) iostat 1 oppdaterer everysecond, hvis du gjør det over en lengre periode, vil det gjennomsnittlig resultatene. tps er det du er interessert i, Transaksjoner per sekund (dvs. IOPS). - x vil gi en mer detaljert utdata og skille ut leser og skriver og forteller deg hvor mye data går inn og ut per sekund. Hva er et bra eller dårlig nummer, men som med de fleste beregninger, er det første gang du ser på det, når du er i trøbbel, så er det mindre nyttig. Du bør ha en ide om hvor mye du vanligvis gjør, så hvis du opplever problemer og gjør 10x det eller bare får 110 fra diskene, så har du en god kandidatforklaring for dem. Hvor mye kan jeg forvente fra min lagring Det avhenger av hvor fort diskene spinner, og hvor mange det er. Som en tommelfingerregel antar jeg en enkelt disk: 7.2k RPM - gt 100 IOPS 10k RPM - gt 150 IOPS 15k RPM - gt 200 IOPS Våre Hadoop-servere presset rundt 70 IOPS til hver disk i topp og de er 7,2k så det er i tråd med dette estimatet. Se her for en sammenfatning av hvorfor disse er gode estimater for tilfeldige IOer fra en enkelt disk. Interessant nok kommer en stor del av latensens spenning, og det er derfor SSDene gjør det så bra for tilfeldig IO (Sammenlignet med en 15k-disk, se også: Et konkret eksempel på raskere CPU som forårsaker høyere iowait, men faktisk gjør flere transaksjoner her Les mer innlegg av denne forfatteren. Del dette innlegget. Kjører noe som kan kjøres som en Windows-tjeneste (Ruby Sinatra) Mens du flytter en automatisert VM-distribusjonsside ved hjelp av en kombinasjon av Sinatra på Linux og Bash-skript ved hjelp av thehellip Ruby On Windows - Forking andre prosesser. Mens du flytter vår VM-distribusjonssted skrevet i Sinatra til en Windows-maskin med VMware PowerCLI-verktøysettet installerthellipLateste nyheter De neste 50 programmeringsspråk Følgende liste over språk betegner 51 til 100. Siden forskjellene er relativt små, er programmeringsspråket bare oppført (i alfabetisk rekkefølge) . (Visual) FoxPro, ABC, ActionScript, APL, AutoLISP, bc, Bourne-skall, C-shell, CFML, cg, CL (OS400), Clipper, Common Lisp, Crystal, Eiffel , Elixir, Elm, Emacs Lisp, Faktor, Frem, Hack, Ikon, IDL, Informere, Io, Julia, Kornskall, Kotlin, Maple, ML, NATURAL, NXT-G, OCaml, OpenCL, OpenEdge ABL, Oz, PLI, PowerShell, Pure Data, REXX, S, Smalltalk, SPARK, SPSS, Standard ML, Stata, Tcl, VBScript, Verilog Dette Monthaposs Endringer i indeksen Denne måneden har følgende endringer blitt gjort i definisjonen av indeksen: ClojureScript har blitt lagt til Clojure-oppføringen. Dette var et forslag fra Alex Miller. Olaf Buddenhagen og noen andre lurte på hvorfor Nim ikke var en del av TIOBE-indeksen ennå. Faktisk kvalifiserer Nim for indeksen. Den går inn i TIOBE-indeksen på posisjon 129 denne måneden. Ved siden av Lua er LuaJIT akseptert som en oppføring for Lua. Dette er takket være Szbnwer. Til slutt foreslo Mahmoud Fayed å legge til Ring-programmeringsspråket til indeksen. Dette språket gjorde sin debut på posisjon 104. Det er mange mails som fortsatt må behandles. Så snart det er mer tid tilgjengelig, blir e-posten din besvart. Vær tålmodig. Veldig langsiktig historie For å se det større bildet, vennligst se under stillingene til de ti beste programmeringsspråkene i mange år tilbake. Vær oppmerksom på at disse er gjennomsnittlige stillinger i en periode på 12 måneder. Bugs amp Change Request Dette er den øverste 5 av de mest etterspurte endringene og feilene. Hvis du har noen forslag til hvordan du kan forbedre indeksen, vennligst nøl med å sende en e-post til tpcitiobe. Bortsett fra quotltlanguagegt programmingquot, bør også andre søk som kvotering med ltlanguagegtquot, quotltlanguagegt developmentquot og quotltlanguagegt codingquot utprøves. Legg til spørsmål for andre naturlige språk (bortsett fra engelsk). Tanken er å starte med den kinesiske søkemotoren Baidu. Dette har blitt implementert delvis og vil bli gjennomført de neste månedene. Legg til en liste over alle søkeordforespørsler som har blitt avvist. Dette er for å minimere antall gjentatte mails om Rails, JQuery, JSP, etc. Start en TIOBE-indeks for databaser, programvarekonfigurasjonsstyringssystemer og applikasjonsrammer. Noen søkemotorer tillater å spørre sider som er lagt til i fjor. TIOBE-indeksen bør bare spore de nylig lagt sidene. Ofte stilte spørsmål (FAQ) Spørsmål: Kan jeg vise TIOBE-indeksen i min weblogpresentasjonspublikasjon A: Ja, den eneste betingelsen er å referere til sin opprinnelige kilde quottiobequot. Spørsmål: Hvordan kan jeg nominere et nytt språk som skal legges til TIOBE-indeksen A: Hvis et språk oppfyller kriteriene for å bli oppført (dvs. det er Turing komplett og har en egen Wikipedia-oppføring som indikerer at det gjelder et programmeringsspråk) og det er tilstrekkelig populært (mer enn 5000 treff for quotltlanguagegt programmingquot for Google), så skriv en e-post til tpcitiobe. Spørsmål: Jeg vil gjerne ha det komplette datasettet av TIOBE-indeksen. Er dette mulig A: Vi brukte mye arbeid på å skaffe alle dataene og holde TIOBE-indeksen oppdatert. For å kompensere litt for dette ber vi et gebyr på 5000 US for det komplette datasettet. Datasettet går fra juni 2001 til i dag. Det startet med 25 språk tilbake i 2001, og nå måler mer enn 150 språk en gang i måneden. Dataene er tilgjengelige i kommaseparert format. Ta kontakt med salestiobe for mer informasjon. Spørsmål: Hvorfor er maksimumet tatt for å beregne rangeringen for en gruppering, hvorfor ikke summen A: Vel, du kan gjøre det på begge måter, og begge er feil. Hvis du tar summen, så får du krysset to ganger. Hvis du tar maks, savner du forskjellen. Hvilken å velge Anta noen kommer opp med et nytt søkeord som er 10 av originalen. Hvis du tar maksimalt, endres ingenting. Hvis du tar summen, vil karakterene stige 10. Så å ta summen vil være et insentiv for noen å komme opp med alle slags uklare vilkår for et språk. Thataposs hvorfor vi bestemte oss for å ta maks. Den riktige måten å løse dette på er selvsagt å ta summen og trekke skjæringspunktet. Dette vil gi opphav til en eksplosjon av ekstra spørringer som må utføres. Anta at et språk har en gruppe på 15 vilkår, da må du utføre 32.768 spørringer (alle kombinasjoner av kryss). Så dette virker heller ikke mulig. Hvis noen har en løsning for dette, vennligst gi oss beskjed. Spørsmål: Hva skjedde med Java i april 2004 Endret du metodikken din A: Nei, vi endret ikke vår metodikk på den tiden. Google endret sin metode. De utførte en generell feiehandling for å kvitte seg med alle typer nettsider som hadde blitt presset opp. Som en konsekvens var det en stor nedgang for språk som Java og C. For å minimere slike svingninger i fremtiden, la vi til to flere søkemotorer (MSN og Yahoo) noen måneder etter denne hendelsen. Spørsmål: Hvorfor brukes YouTube som en søkemotor for TIOBE-indeksen A: Først av alt, teller YouTube for mindre enn 10 av alle ratings, så det har knapt noen innflytelse på indeksen. YouTube har blitt lagt til som et eksperiment. Den kvalifiserte seg til TIOBE-indeksen på grunn av sin høye rangering på Alexa. YouTube er en ung plattform (så en indikator for popularitet) og det er ganske mange forelesninger, presentasjoner, programmeringstips og språkinnføringer tilgjengelig på YouTube. TIOBE sjekker mer enn 586 millioner linjer med programvarekoden for sine kunder over hele verden, realtime, hver dag. Finningspoeng innenfor en avstand fra en LatitudeLongitude ved hjelp av buntekoordinater Denne artikkelen beskriver hvordan du effektivt kan spørre en database for steder som ligger innenfor en bestemt avstand fra et punkt gitt i sfæriske koordinater (breddegrad og lengdegrad). Metoden beregner avgrensningskoordinater som kan brukes til en databaseskanningsnedd, akkurat som vi ville bruke minimumsgrensende rektangler for å øke hastigheten på spørringer i kartesisk rom. Det er nøyaktig for korte avstander så vel som for lange avstander, og fungerer for alle geografiske steder, selv om det er nær en pol eller den 180. meridianen. 1 Avstand mellom to gitte punkter Den korteste avstanden (den geodesiske) mellom to gitt punkter P 1 (lat 1, lon 1) og P 2 (lat 2, lon 2) på overflaten av en sfære med radius R er storcirkelavstanden . Det kan beregnes ved hjelp av formelen: For eksempel er avstanden mellom Frihetsgudinnen på (40.6892deg, -74.0444deg) (0.7102 rad. -1.2923 rad) og Eiffeltårnet på (48.8583deg, 2.2945deg) (0.8527 rad , 0,0400 rad) ndash antar en sfærisk tilnærming a av jordens figur med radius R 6371 km ndash er: dist arccos (sin (0.7102) middot sin (0.8527) cos (0.7102) mellit cos (0.8527) midt cos (-1.2923) - 0,0400)) midtpunkt 6371 km 5837 km (2) 2 Finne steder innenfor en avstand uten å bruke en indeks Anta at vi vil finne steder innen en avstand d 1000 km fra M (lat. Lon) (1.3963 rad, -0.6981 rad) i en database. Gitt at vi har et bord som heter Steder med kolonner Lat og Lon som holder koordinatene i radianer (de trigonometriske funksjonene til SQL forventer radianer), så kan vi bruke denne SQL-spørringen: VELG FRA STEDER hvor ACOS (sin (1.3963) sin ) cos (1.3963) cos (Lat) cos (Lon - (-0.6981))) 6371 lt 1000 Problemet med denne spørringen er at vårt databasesystem ikke vil kunne benytte indekser på lat og lon kolonnene på grunn av kompleksiteten av formelen i WHERE-klausulen. 3 Finne steder innenfor en avstand ved hjelp av en indeks For å kunne utnytte indekser på lat og lon-kolonnene kan vi bruke en metode som ligner på avgrensende rektangelmetoden i kartesisk rom. Letrsquos ringer sirkelen som dannes av alle punkter som har avstand d fra M i spørringssirkelen. De følgende underavsnittene forklarer hvordan man beregner avgrensningskoordinater (lat min. Lon min) og (lat maks. Lon max) som er motsatte hjørner av et avgrensende rektangel (på sfæren) som helt inneholder søksirkelen. Poeng utenfor dette rektangel er derfor definitivt ikke innenfor avstand d fra M. så for å finne poeng som er innenfor spørringssirkelen, må vi bare vurdere poengene i begrensende rektangel bare. Disse punktene (kalt kandidatsteder) kan bli funnet raskt ved hjelp av en indeks (se avsnitt 3.5 for SQL-spørringer). Letrsquos definerer r d R (1000 km) (6371 km) 0.1570 som vinkelradiusen til spørringssirkelen. 3.1 Beregning av Minimum og Maksimal Breddegrad Flytting i en sirkel med radius R 6371 km fra et punkt A til et punkt B slik at det er en vinkel r 0,1570 mellom A og B betyr å dekke en avstand på d 1000 km. Meridianer er på så store sirkler med radius R. Derfor kan vi bevege oss langs en meridian, dvs. holde lengden fast, og bare subtractadd r fra to lat for å oppnå minimum maksimal breddegrad for alle punkter i spørrekretsen med midten M (lat. Lon) (1.3963 rad, -0.6981 rad) : Vær oppmerksom på at det må tas spesiell forsiktighet dersom en pol er innenfor spørringssirkelen. Se avsnitt 3.4 for detaljer. 3.2 Beregning av minimum og maksimal lengdegrad ndash feil måte En tilnærming sett på flere nettsider for beregning av minimum og maksimal lengdegrad, holder bredden fast og endrer lengdegraden, dvs. beveger seg langs en breddegrad. Denne delen viser at denne tilnærmingen gir unøyaktige resultater. Flytte langs en breddegrad betyr at du beveger deg langs en liten sirkel. En breddegrad ved breddegrad lat 1.3963 rad har radius R s R middot cos (lat) 1106 km, så d 1000 km svarer nå til en vinkelradius av r s d R s d (R middot cos (lat)) 0.9039. Derfor dekker du 1000 km på en breddegrad, får du lengdegrad på S lon plusmn d (R midtpunkt), -0,6981 rad plusmn 0,9039 rad. Men dette er ikke den minimale lengdegraden du kan komme til ved å flytte d 1000 km i hvilken retning det er fordi vi flyttet avstanden i en liten sirkel, men små sirkelavstander er større enn store sirkelavstander. Selv om M (lat. Lon) (1,3963 rad, -0,6981 rad) og PS (lat. Lon S) (1,3963 rad, -1,6020 rad) har en avstand på d 1000 km på den lille sirkelen, kan vi ta en snarvei fra M til PS på en stor sirkel. I henhold til ligning 1. har snarveien en lengde på 967 km. Så vi kunne flytte en annen 33 km og vil fortsatt være innenfor søksirkelen. Spesielt kunne vi nå enda mindre respektive større lengder. Så bruk lon plusmn d (R middot cos (lat)) som begrensende verdier for lengdegrad, ville savne noen steder som faktisk er innenfor avstand d. For eksempel er punktet P 3 (1,4618 rad, -1,6021 rad) utenfor den beregnede begrensningen ldquoboxrdquo, selv om avstanden til M er bare 872 km. Det er en feil på mer enn 12 3.3 Beregning av minimums - og maksimal lengdegrad ndash den riktige veien Figur 1: Tangent-meridianer til spørringssirkelen 1 Flytting langs en breddegrad for å finne minimum og maksimal lengdegrad virker ikke i det hele tatt som du kan se i figur 1. Poengene på spørrekretsen med minimummaksimum lengdegrad, T 1 og T 2. er ikke i samme breddegrad som M, men nærmere polen. Formlene for koordinatene til disse punktene finnes i en god mattehåndbok som 1. De er: Vær oppmerksom på at spesiell forsiktighet må tas hvis den 180. meridianen er innenfor søksirkelen. Se avsnitt 3.4 for detaljer. 3.4 Håndtere poler og den 180. Meridian Hvis lat max. som definert i punkt 3.1. er større enn pi2, så er Nordpolen innenfor spørringssirkelen, noe som betyr at deler av alle meridianene også er innenfor spørringssirkelen. I så fall er grensekoordinatene (lat min-pi) og (pi2, pi). Hvis lat min er mindre enn - pi2, er Sørpolen innenfor spørringssirkelen, og grensekoordinatene er (-pi2, - pi) og (lat maks. Pi). Hvis en av lon minmax. som definert i punkt 3.3. ligger utenfor rekkevidden av gyldige lengdeverdier - pi, pi, er den 180. meridianen innenfor spørringssirkelen. I så fall kan man bruke (lat min - pi) og (lat max pi) som grensekoordinatene, dvs. noe med en form som et belte rundt kule. Men det vil inkludere mange kandidatsteder som egentlig ikke er innenfor avstanden. Alternativt kan man bruke to grenser ldquoboxesrdquo og det er tilstrekkelig for et kandidatsted å være i en av dem. Hvis lon min lt - pi er de to settene med begrensningskoordinater (lat min. Min 2pi), (lat maks. Pi) og (lat min. - pi), (maks maks. Lon max). Hvis lon max pi er de to settene med begrensningskoordinater (lat min. Lon min), (lat maks. Pi) og (lat min. - pi), (lat maks. Lon max - 2pi). 3.5 SQL-spørringer Nå som vi har beregnet grensekoordinatene (min. Min. Min) (1.2393 rad, -1.8184 rad) og (lat maks. Lon max) (1.5532 rad, 0.4221 rad), kan vi bruke dem i en SQL-spørring . I det følgende antas det at breddegrad og lengdegrad ndash både i radian ndash lagres i to separate kolonner med en indeks som støtter intervju spørringer (for eksempel et B-tre) på hver av dem. Hvis databasebehandlingssystemet støtter en punktdatatype og en romlig indeks (for eksempel et R-tre) på slike kolonner, kan du også bruke det. Det finnes forskjellige måter å kombinere filteret ved hjelp av grensekoordinatene med formelen for den store sirkelavstanden i en SQL-setning: Bare kombinere forholdene med AND: De fleste søkoptimiseringsverktøyene er klare nok til å utføre en indekssøk for raskt å finne steder som tilfredsstiller (Lat gt 1,2393 og lat lt 1,5532) og (lon gt -1,8184 og lon lt 0,4221) og evaluere formelen for storcirkelavstanden for hvert gjenværende kandidatresultat bare. Forfilteret i WHERE-klausulen og den mer spesifikke formelen i en HAVING-klausul: Forfilteret i en underforespørsel: 4 Java Source Code 4.1 GeoLocation Class Nedenfor finner du en klar til bruk Java GeoLocation-klasse. Metoden boundingCoordinates () beregner grensekoordinatene ved hjelp av metoden som er forklart i avsnitt 3. Del 4.2 viser et eksempel på bruk av GeoLocation-klassen. 4.2 Bruk av GeoLocation-klassen Her er noen demokoder som viser hvordan du bruker GeoLocation-klassen fra seksjon 4.1 for å spørre en database for steder innenfor en bestemt avstand. 5 Gjennomføringer i andre programmeringsspråk Noen har oversatt Java-koden fra seksjon 4 til andre programmeringsspråk og publisert sine resultater. Det er implementeringer i C. Clojure. JavaScript (Node. js). Objective-C. PHP. Python og Swift. Merk at jeg ikke har sjekket disse for korrekthet. Maksimal feil som skyldes bruk av en sfærisk jordmodell for avstandsberegninger er ikke mer enn 0,5. 2 Referanser Ytterligere nøkkelord: geospatial indeks, geospatial bounding box, sfærisk begrensingsboks, minimumsgrense boks, minimumsgrensende rektangel (MBR), stedbasert tjeneste, geografisk plassering, geografisk plassering, geografisk posisjon, geografisk posisjon, geografisk punkt, geografisk punkt, begrensning sirkel, GPS, geografisk informasjonssystem (GIS), tilbøyelighet, azimut, rask oppslag Første publisert 16. mai 2010, Sist oppdatert 5. juni 2016 Hvis du har kommentarer eller forslag til forbedring av denne artikkelen, vennligst send meg e-post.

No comments:

Post a Comment