Monday 23 October 2017

Moving Gjennomsnittet Ruby


Begynnelsen Ruby (kjøp den på Amazon) er en Ruby programmeringsbok rettet mot nykommere til språket. It8217s er skrevet i et instruksjonsformat og går gjennom grunnleggende programmeringskonsepter gjennom å bygge webapps, databaseapp, nettverksdemoner og GUI-baserte apper. It8217 er godt egnet for noen nye til programmering, samt erfarne utviklere som bare er nye til dynamiske språk. Se innholdsfortegnelsen. Hvor å kjøpe Amazon tilbyr vanligvis den beste prisen for Beginning Ruby. Sjekk det ut på Amazon (USA) eller Amazon. co. uk (UK). Boken er tilgjengelig i både utskrift og tenneformater. Alternativt har forlaget Apress også boken til salgs til full pris og e-bookPDF-versjonen. Beginning Ruby har 27 5-stjerners anmeldelser på Amazon, men andre har blitt mottatt i tredjepartsrevurderinger eller via e-post: Dette er ikke bare en introduksjon til Ruby. Ganske mye er all teknologi som er knyttet til Ruby på en eller annen måte diskutert. Forfatteren, Peter Cooper, er åpenbart en velutviklet Ruby-utvikler, og hans entusiasme for emnet skinner gjennom. Og med nesten dobbelt så mange sider som de andre bøkene som er vurdert her, er han lett den beste verdien av de tre. 8212 Andy Hudson, Linux Format Peter Cooper8217s Beginning Ruby: Fra nybegynner til profesjonell har to publikum, nybegynnere uten programmeringserfaring som ønsker å lære Ruby som sitt første programmeringsspråk, og veteraner som vil legge til Ruby i deres programmeringsverktøy. Cooper8217s svar på denne utfordringen er en solid oppføring i den begrensede arenaen for Ruby-veiledningene. 8212 Tim Hunter Dette må være den beste boken for Ruby nybegynnere, enten det gjelder skripting eller for å bevege seg mot Rails. . Lett en 910 i øynene mine får 10, med mindre den har nudity8230.and det er ikke en invitasjon Peter. 8212 Jamie van Dyke I8217ve vært å lese Beginning Ruby av Peter Cooper. I8217m virkelig imponert. . En flott bok for en ny programmerer, eller en programmerer som er ny for Ruby. It8217 er et flott alternativ til de andre beginner8217s bøkene om Ruby der ute. 8212 Pat Eyler Både Chris Pine8217s bok og hvorfor8217s guide har sine øyeblikk, men etter min mening har Cooper8217s bok en betydelig kant i klarhet og nytte. . I tillegg til å være en flott rubinebok, er it8217s også en av de beste 8220tech8221 bøkene I8217ve noensinne har kjøpt. It8217 er sjelden å se dette nivået på kvalitet i teknisk skriving. 8212 8220Phren0logy8221 på Amazon Jeg liker virkelig Beginning Ruby. I8217ve vært undervisning i Ruby kurs på CCSF (City College of San Francisco) de siste to årene og I8217ve brukte Pickaxe som hovedlærebok. Det er en fin bok, men det er en kamp for å tilpasse det knutete rotet i en rekke didaktiske leksjoner. Neste semester I8217m bruker boken din (CS132A) fordi jeg føler at du har gjort en god jobb med å organisere materialet i lærbare biter. Du har frelst meg for å skrive min egen lærebok. Fint arbeid. 8212 Douglas Putnam 8211 Professor i datavitenskap, CCSF Arbeider gjennom de tidlige seksjonene og har virkelig likte boken så langt, er beskrivelsen av objektorientering det beste jeg har kommet over i en hvilken som helst bok. 8212 Caoimh O8217Broin Den beste og mest omfattende introduksjonen til Ruby I8217ve sett. . Teksten er hverken tørr eller lunefull, men en perfekt blanding mellom referansemateriale og praktisk veiledning. . Jeg ønsker nesten å kjøpe en ekstra kopi ut av ren takknemlighet for Peter Cooper som gir en flott guide til et bra programmeringsspråk. 8212 Zeff Morgan Jeg tror Beginning Ruby: Fra nybegynner til profesjonell er en bedre første ruby ​​bok enn den ærverdige Pickaxe. .. Hvis du vil lære Ruby, begynner Ruby boken å kjøpe. 8212 Larry Wright 2. oktober 2009 183 Filed under Uncategorized Som forfatter av Beginning Ruby. Jeg tjener penger for hver kopi som selges i trykte og elektroniske formater (samt noen annen inntekt I8217ll dekker senere). Det er ikke mye penger 8211, men det var ikke motivasjonen for å skrive boken. I dette innlegget vil I8217m vise deg hvordan alt fungerer fra mitt synspunkt, inkludert salgstall. bilder av mine royalties uttalelser. informasjon om mitt fremskritt. og lignende grusomme ting. Det er enda en del på slutten om hvordan Apress gledet meg litt (selv om jeg ikke beklager opplevelsen med dem 8211 de8217 er en god utgiver generelt, men mindre så siden deres restrukturering) og hvorfor jeg er fornøyd med deg å pirere boken min hvis du så velg (selv om dette ikke er en oppmuntring til å gjøre det 8211 it8217s fortsatt ulovlig, dessverre) 19. oktober oppdatering: Etter å ha blitt mottatt godt av leserne på Hacker News og Reddit for en uke siden, ble denne historien Slashdotted med et unøyaktig sammendrag den 16. oktober 8211 samme dag datteren min ble født, derfor omdirigert jeg all trafikk til dette nettstedet til en kreft-donasjonsside som jeg ikke kunne nekte kommentarer til, og jeg hadde større ting i tankene mine på den tiden. Jeg føler imidlertid at jeg trenger å gi litt ekstra informasjon gjennom dette innlegget for å klargjøre poengene som ble misforstått av en minoritet av lesere. Disse lagt notatene har fet skrift kursiv. Advance 8220advance8221 er en sum penger du får fra utgiveren din på forhånd mens du skriver boken. Forsiktig støtter forskuddet deg mens du skriver boken, men egentlig it8217s for å sikre at du får boken ferdig. For første gang tilbake i 2006 fikk jeg et forskudd på 6000. Apress gir deg en tredjedel av gangen på disse punktene: 1) når tre kapitler er fullført og godkjent, 2) når to tredjedeler av boken er ferdig, og 3) når manuskriptet er ferdig. Så min 6000 ble spredt over 9 måneder. Merk: Noen ikke-forfattere gjør feilen om at et forskudd er en form for stipend eller stipend, og at når boken er ute, tjener du mer penger per kopi som selges. Ordet 8220 forhånd 8221 er velvalgt, fordi betalingen er rett og slett royalties på forhånd. Så hvis du får en 1000 forhånd og gjør 1000 i royalties i det første året, får du ingen ekstra penger. De royalties laget når boken faktisk selger 8220pay back8221 forhåndet du mottok tidligere. Den eneste fordelen for deg er at hvis bokbomber og ikke selger nok eksemplarer for å betale tilbake forskuddet, må du (vanligvis) don8217t gi utgiveren tilbake en krone. Hvor mye får jeg per bok. Prisen på begynnelsen av Ruby er 40 (gi eller ta en krone), men utgiveren min, Apress, gjør varierende beløp per bok 8211 Jeg vet ikke hvorfor (Oppdatering: I8217 har blitt fortalt av informert lesere at den varierende nettoprisen er fordi forskjellige forhandlere og distributører får bedre rabatter enn andre.). En 8220average netto pris8221 er vist på min royalties uttalelser, men dette svinger. It8217 er vanligvis hvor som helst mellom 18.00-19.00. Let8217s sier 18.50. Av denne 18.50 får jeg: 10 (1,85) for hver av de første 4000 eksemplene solgt 12,5 (2,31) på kopier 4001-8000 15 (2.77) på kopier 8001-12000 17.5 (3.23) på kopier 12001-25000 20 (3.70) Deretter Merk: Hvis jeg markedsfører boken med en tilknyttet link til Amazon og gjør 4 provisjoner på deres 26 salg, kan jeg legge til en annen dollar per salg. Til tross for å selge e-boken direkte kl. 27.99, kommer nettoprisen for e-boken til om lag 18.00. Siden det ikke er noen utskrifts - eller forsyningskjede kostnader, får du dobbelt så mange royalties på e-bøker. Hvis utskriftskopiene dine for øyeblikket tjener 10 royalties, si, du får 20 på e-boksalget. Dette betyr på 10 mark, it8217s 3.70 per e-bok, 4,62 på 12,5-nivå, 5,54 på 15-nivå, og så videre. Salgsfigurer Som en innledende bok til et programmeringsspråk har Beginning Ruby sett staude salg 8211 it8217s ikke en tidsbestemt bok (som, alas, 90 av Rails bøker). Den største utbruddet var rundt lanseringen 8211 som for de fleste tekniske bøkene 8211, men salget didn8217t gikk vesentlig ut for første utgave i løpet av levetiden. I 2 år (8 firedeler) ble 7673 papirkopier og 486 e-bøker solgt. Salget tidlig i 2009 økte dette til ca 8500 papirkopier og 500 e-bøker totalt for første utgave. Selv om uttalelsene siden 2008 er så vanskelig å lese, har jeg fått en nøyaktig figur. Den andre utgaven av Beginning Ruby ble bestilt i slutten av 2008 og kom ut i august 2009, så det er ingen salgstall for det ennå. Når det er, vil I8217ll bli sendt igjen. Det vil være interessant å se om den andre utgaven opplever en lignende utbrudd til den første. Andre Apress forfattere har antydet det vil. I den store ordningen med ting, selger ca 9000 eksemplarer av en teknisk bok hverken grunn til en stor feiring eller fortvilelse. Boken betalte lett tilbake sitt fremskritt i de to første kvartalene, og it8217s ga Apress med om lag 170.000 i nettoinntekt over to år (hvorav 19.000 har endt med meg). Rettighetserklæringer De fremtredende detaljene er gitt ovenfor, men jeg vil vise frem noen av Apress8217s royalties. Tilbake i 2007 så de slik ut: Merk: Du kan sette pris på å se John Resig8217s royaltyoppgave i omtrent samme periode for Pro JavaScript-teknikker. På en eller annen måte utgjorde boken hans, men han fikk et bedre skritt. Jeg trodde at disse utsagnene var ganske kule. Jeg kunne ikke alltid finne ut hvorfor reserven ble beregnet som det var eller hva 8220licensed rights8221 var, men jeg kunne lett se hvor mange kopier I8217d solgte i både utskrifts - og e-bokformat per kvartal og hadde en god historie og sammenbrudd av min innbetaling. Merk: Se de 30 inntektene i skatt nederst til høyre Det viser seg at du don8217t identifiserer som en amerikansk skattebetaler (og har det påkrevde nummeret 8211 som desverre tvinger deg til å sende filavkastning i USA), USAs skatt mannen vil fortsatt stjele 30 av dine royalties (men merkelig ikke dine fremskritt) for å finansiere all slags nektet nonsens. Heldigvis, hvis du i det minste i et av flere land med en skatteavtale med USA, kan du kreve tilbake noen eller alle de tilbakeførte skattene fra din lokale inntektsskatt. Det er ikke lett selv. I 2008 implementerte Apress et nytt, tilsynelatende bedre backoffice-system, og nå er royaltyuttalelser som dette: Unnskyldninger for bildekvaliteten jeg tok den på min iPhone og Photoshopped den. Denne erklæringen dukket opp i dag, og det dekker bare noen e-boksalg som skjedde i gapet mellom første og andre utgave (derfor dekker bare om lag 150 salg). Så, det er en av de enklere utsagnene I8217ve mottatt, men jeg føler meg fortsatt som en grad i steganografi for å finne ut det. Jeg får jisten, men de gjør galne ting som å dele en 12,5 royalty opp i en seksjon for 10 og en for 2.5. da har du 8220proportional ebook royalty8221 seksjoner lagt til. Du får også din 8220reserve8221 tilbake etter 18 måneder, og når du legger til disse i også. it8217s et tog vrak i forhold til 2007-stil uttalelser. Jeg vet at I8217m ikke er den eneste Apress-forfatteren som føler denne måten. Hvis du ikke så referansen til 8220reserver8221 i ovenstående kunngjøringer, ruller du opp og sjekker. I hovedsak får du et kutt på dine royalties gjemt i 18 måneder (teknisk 82206 perioder8221 8211, men siden en periode er kvart, at8217s 18 måneder) for å betale for 8220returns8221 8211 bøker som bokhandlere sender tilbake til utgiveren som de kan selge . I 2007 tror jeg 8211 om 8282 ikke sikkert 8211 at jeg hadde 2200 av royalties tatt bort som reserver. Jeg fikk disse beløpene tilbake en gang nylig. Merkelig, skattene for disse reserver ble tatt bort igjen i 2007, så selv om det var 8220income8221 amerikansk skattemessig, inntekter inntekten til 2009. Dette forvirrer meg så mye som I8217m sikkert det ville du. Lisensierte rettigheter På royalties uttalelsene ovenfor, bør du se referanser til 8220Licensed Rights.8221 Min første redaktør fortalte meg at disse er betalinger du mottar for utenlandske versjoner av boken din, for inkludering på systemer som O8217Reilly Safari og 8220similar.8221 I8217ve spurte en noen ganger nå, men I8217ve har aldri funnet ut hva disse beløpene er spesielt for, og I8217m ikke klar over noen oversatte utgaver av Beginning Ruby. (Oppdatering: 13. oktober 8211 6 dager siden 8211 noen fra Apress kontaktet meg for å la meg stille spørsmål om noen av disse problemene, men jeg har ikke hatt et svar ennå.) Den andre utgaven 8211 En ny forhånd men royalty Gå tilbake til 10 .. I slutten av 2008, en redaktør på Apress 8211 Michelle Lowman (Oppdatering: Who, forresten, var en flott redaktør.) 8211 kom i kontakt med meg om å skrive en andre utgave av Beginning Ruby. Siden 2006 har en rekke bibliotekspreferanser blitt endret, nettadresser har endret seg, og det var ganske mange oppdateringer eller nye seksjoner å gjøre (for eksempel referanser til Ruby 1.9, nye biblioteker, GUI-utvikling og alternative webrammer). Nå var jeg spesielt opptatt av å gjøre en andre utgave av en rekke årsaker, men Apress-kontrakten sier at hvis du ikke har rett til å gjøre det uten deg, har noen andre8217s navn slått på boken, og jeg tror , du får penger tatt ut av dine royalties for å betale for ulike biter av ekstra arbeid. Å ha boken min trukket fra under føttene mine klarte ikke å appellere så jeg registrerte meg for å gjøre det. Den rare tingen om å gjøre en andre utgave er at it8217 ikke egentlig behandles som en 8220sekrets utgave.8221 I stedet er it8217s som en helt ny bok. Du får et nytt forskudd (6500 i mitt tilfelle 8211 500 mer enn min første men betydelig dårligere på grunn av USD-GBP-prisen på den tiden), og du må gå gjennom alle de samme bevegelsene som med en ny bok. Din royaltiesats og salgstall er til og med tilbakestilt tilbake til firkantet en Så du8217re rett tilbake til en 10 royalties etter at du klarte deg opp til 15 etter 8000 salg. Æsj. Free PDF Fiasco (eller hvordan Apress virkelig overrasket meg) Siden pengene var for varmt og i8217m mer interessert i utskriftssalg likevel, gikk jeg inn i andre utgaveforhandlinger med en insistering på at electronicPDF-versjonen av boka kunne være fritt tilgjengelig 8211 som i øl, i stedet for tale. Tross alt var e-book8217s salg dårlig 8211 utgave utgav den 17 til 1 8211 og Apress hadde gjort en ynkelig 7500ish over 2 år fra den. Som Seth Godin og, vel, hundrevis av andre forfattere, tror jeg at gratis elektroniske kopier kan øke merkenavnet og skriveutskriften betydelig. Med en bok som Beginning Ruby. De fleste leserne vil ha en utskriftsbok, så det virket som en no-brainer for å holde salget sterkt i et marked med økende konkurranse (fra Manning, spesielt). Jeg har ingen grunn til å tro at redaktøren min gjorde det mot mitt hjørne, men når hun tok det til møtene (hvor alle de beste Apress-ekkolodene bestemmer hvilke bøker som skal publiseres og hvordan) kom hun tilbake og sa at den øverste messingen var ivrig. Jeg bad og ba, skrev et par anledninger, og tilbød å snakke direkte med disse menneskene for å få mine ideer på tvers, men ikke noe. Det eneste kompromisset som ble oppnådd var at et par kapitler kunne frigjøres per måned, separat 8211, som er omtrent så attraktivt for leserne som å få en tiende av en orgasme. Selv denne didn8217t gjør det til min kontrakt, og jeg presset på den. (Oppdatering: Noen lesere har med rette påpekt at det er forskjellige forretningssaker om å gi bort e-bøker for å oppmuntre utskriftssalg 8211 og ikke alle bøker vil trolig oppfylle kriteriene. Jeg ville ha blitt enige om min første utgave, men min andre utgave går inn i en langt mer konkurransedyktig atmosfære. 8211 it8217s er ikke lenger den eneste oppdaterte boken. Også, til tross for godt salg og gode anmeldelser, har boken min vært lagt merke til av en stor sving av de mest erfarne Ruby-fellesskapene. som anbefaler bøker til andre Hvis de mer erfarne folkene kan bestille boken gratis, er de mer sannsynlig å anbefale den til nykommerne. Min bok isn8217t er selv oppført på den offisielt godkjente Ruby boklisten på ruby-doc. org 8211 som en side, det var en gang med en snedig kommentar ved siden av det, men jeg tror at vedlikeholderen har et motvilje mot meg). Til slutt ble boka publisert i august 2009, og jeg har ennå ikke sett hvordan den vil selge. Det som virkelig vendte på lokket, var imidlertid å se andre Apress-bøker som Dive Into Python og Pro Git, få den behandlingen jeg ville ha. Du kan lese begge disse fantastiske titlene på nettet, i sin helhet, gratis. Å tilby elektronisk innhold gratis til å markedsføre trykt boksalg, er en8217t en fremmed konsept for å Apress slik at noen av dem spiller favoritter der borte. Piratboken min (Ja, that8217 er et spørsmålstegn.) (Oppdatering: Dette er den mest omstridte delen og den mest misforstått. Jeg sier egentlig to ting: 1 8211 Hvis du pirater boken min, tror jeg at8217 er ganske kult og 2 8211 I8217m kjører et tankeeksperiment på måtene rundt de juridiske begrensningene det er. Merk at jeg ikke sier 8220 Du burde piratere min bok8221 eller 8220hvordan bryte loven og komme inn i trøbbel8221 som noen Slashdotters tror. Jeg sier dette er IKKE en god ide hvis du Jeg er ikke klar over risikoen. Så nei, jeg vil ikke forfølge deg, og jeg tror faktisk det er flott når jeg ser at min bok blir piratkopiert, men jeg kan ikke forkaste deg å bryte loven.) Min reaksjon på å se andre Apress-bøker får gratis, elektronisk versjon behandling er: I8217m bra med deg piratere boken min (Oppdatering: 8220I8217m bra med you8221 IKKE betyr 8220Du må, 8221 som noen Slashdotters tror.) Nå, selvfølgelig, kan jeg aktivt delta i å pirere boken min, men heck, it8217s rundt på mange 8220free e-book8221 nettsteder og på RapidShare. Det er til og med koblinger på Twitter til torrents som dette. Jeg er glad for at du pirater boken min, men. I8217m IKKE EN LOVGIVER, og jeg kan garantere hva Apress ville gjøre med det 8211 slik at du gjør det av din egen tilbake. Så, uhm, don8217t pirat det. Den eneste betingelsen, selvfølgelig, hvis du gjør det, er det hvis du liker boken og du tror at en utskriftskopi ville være svulmer for å eie, vennligst kjøp en 8211 selv om it8217 er bare for noen du kjenner som ønsker å lære å programmere (Oppdatering: I8217ve mottatt e-post fra lesere som fortsatte å gjøre akkurat dette.) Nå 8211 et tankeeksperiment. I henhold til kontrakten eier jeg opphavsretten til hele boken bortsett fra omslaget, innholdsfortegnelsen og indeksene. Min kontrakt sier også at jeg bare har tillatt Apress å publisere og reprodusere innholdet mitt. Så. Jeg mistenker at hvis du tok boken min, fjernet dekselet, innholdet og indeksene, og gjorde det til en PDF med et eget cover, kan Apress couldn8217t gjøre noe med det fordi alt ville være min opphavsrett. Nå kan jeg ikke tillate deg å gjøre dette, men jeg ville ikke forfølge deg hvis du gjorde det. Don8217t gjør det (Oppdater: Ja, I8217m klar over dette er 8220cute8221 språk, men meldingen min er isn8217t for skjult 8211 Jeg liker å se min bok piratkopiert men jeg kan ikke lovlig kreve at du gjør det eller for å bryte loven. Konklusjoner Som en måte å bli kjent, ha noe gøy for din rsume, eller for å tilfredsstille en ambisjon å skrive en bok og få den publisert8221, skrive en bok og få Det utgitt av en stor utgiver er ikke en dårlig måte å tilbringe tid på. Hvis en liten berømmelse og respekt er alt du vil, er en bok nok. Hvis du vil tjene en seriøs inntekt fra bøker, må du pumpe ut flere bøker. At8217s hvorfor de fleste teknologiske bøker synes å være av forfattere som har skrevet en enkelt bok eller mange bøker (jeg ser ut til å huske at Knuth gjør den observasjonen en gang). I8217d hevder at med mindre du skriver en veldig nisjebok (det er sannsynlig at det ikke kommer til å tjene tilbake på forhånd) eller en bok som8217 sannsynligvis vil være ekstremt populær, bør du unngå de store utgivere og i stedet finne en mellomstore utgiver som kan tilby mer attraktive royalties. Fremskritt ser tiltalende ut, men hvis royalty satsen din suger, er det ingen forskjell med mindre du tror at du aldri vil tjene den tilbake. I stedet ser du etter en utgiver som Den pragmatiske bokhylle som kan tilby deg 50 royalties. (Oppdatering: Det har vært mye FUD over Prags8217 royalty rate som Dave har motsatt her.) Selv om I8217d solgte bare 2000 bøker for 18 nett (mot 8500 på Apress), har I8217d gjort samme penger. Markedsføringen som en utgiver som Apress kan gi, gjør det ikke firkantet salg, slik at du er i forkant. Mindre utgivere er også lettere å snakke med (fra hva jeg har hørt) og du kan forhandle bedre lisensiering avtaler med dem. Jeg kan absolutt ikke si at jeg beklager min begynnelse Ruby-opplevelse, skjønt. Ovennevnte er alt jeg har lært på grunn av denne prosessen, og det er mye du ikke vet som en nybegynner. Å få enda en bok under beltet med en 8220regular8221 utgiver kan åpne øynene dine og ha stor effekt på tankegangen din. I8217ve har også jobbet med noen veldig interessante mennesker på Apress (de fleste av dem har, dessverre, forlatt eller blitt sparket i den store scaledownen de gjorde nylig). Effekten av Begin Ruby har bare vært positiv til meg, selv om den ikke har gått så jevnt som jeg ønsket. og det kan sikkert være verre enn å motta tilfeldige sjekker med uutslettelige royaltyuttalelser hvert par måneder 8. oktober 2009 183 Arkivert under Ukategorisert Med dette innlegget vil jeg holde styr på noen av de 8220Beginning Ruby8221-vurderingene laget på andre blogger gjennom årene. Om 8217s anmeldelse 8211 8220 Beginning Ruby er et utmerket valg for enhver begynnende Ruby programmerer. I møte med etablerte konkurranser har Beginning Ruby sin egen og er fortsatt et godt valg.8221 29 omtaler på Amazon 8211 26 hvorav 5 er 3 er 4 stjerner. Pat Eyler8217s anmeldelse 8211 8220Beginning Ruby er en flott bok for en ny programmerer, eller en programmerer ny for Ruby. Det er et flott alternativ til de andre nybegynnerebøkene på Ruby der ute. 8222 Stephen Bartholomew8217s anmeldelse 8211 8220Even med et språk som Ruby, lærer du helt nybegynnere hvordan du programmerer, er ikke noe feat. Peter Cooper8217s ny bok 8216Beginning Ruby8217 forsøker å ta den komplette nybegynneren gjennom å være en kompetent programmerer. 8221 Huw Collingbourne8217s anmeldelse 8211 8220 Igjen, så kan jeg anbefale denne boken som en god introduksjon til grunnleggende av Ruby programmering og den oppdaterte delen på nettet utviklingsrammer er velkommen.8221 Gjennomgang på Slashdot 8211 8220It8217s en god bok for noen som ønsker å lære Ruby som sitt første programmeringsspråk. Det kan bli bedre. Jeg likte Cooper8217s tålmodige og gjennomtenkte forklaringer om hvordan du installerer Ruby and RubyGems, hvordan du bruker en kommandolinje, og hva en tekstredigerer er for. Cooper leverer svar på alle de typiske Ruby-Nuby-spørsmålene, men hans forklaring på grunnleggende begreper er ødelagt av en og annen forvirrende referanse til avanserte eller ikke-relevante emner. For den erfarne programmøren som lærer best ved å lese og arbeide gjennom eksempler, er denne boken et godt valg. Dave Thomas8217 Programmering Ruby, The Pragmatic Programmer8217s Guide (a. c. to Pickaxe) er en tøff konkurrent, men hver bok har en betydelig mengde materiale som ikke finnes i den andre boken. For eksempel er Pickaxe8217s kjernebibliotek referanse uttømmende, men det har bare en begrenset mengde av typen veiledning forklaringer som er Beginning Ruby8217s styrke.8221 7. oktober 2009 183 Filed under Uncategorized Let8217s Få det startet: Installere Ruby Programming Joy: En fløyte - Stopp Tour of Ruby og Object Orientation Ruby8217s Building Blocks: Data, Expressions og Flow Control Utvikling av din første Ruby Application Ruby-økosystemet og fellesskapsklasser, objekter og moduler Prosjekter og biblioteker Dokumentasjon, Feilhåndtering, Feilsøking og Testing av filer og databaser Utplassering Ruby-applikasjoner og biblioteker Avanserte Ruby-funksjoner som binder sammen: Utvikling av en større applikasjonsramme for Ruby Application-applikasjoner: Rails, Sinatra og Ramaze Ruby og Internett Nettverk, Sockets og Daemons GUI-basert Desktop Application Development Nyttige Ruby Biblioteker og Gems Appendiks APPENDIKS A Ruby Primer og gjennomgang for utviklere APPENDIKS B Ruby Reference APPENDIX C Bruk Ful Resources 2 oktober 2009 183 Filed under UncategorizedMigration Basics Selv om kolibriendrering ikke er godt dokumentert av mange bandingsrekorder, vet vi noen få fakta, og vi kan tegne logiske påvirkninger om noen av de ukjente områdene. (quotBandingquot betyr å fange en fugl og pakke en liten nummerert stripe av aluminium rundt ett ben. Dette er for øyeblikket den eneste måten å identifisere individuelle kolibrier. Arter studeres ved å samle data på stort antall individer.) Hver kolibrier har sin egen migrasjonsstrategi , og det er feil å tenke på quothummingbirdsquot som en enkelt type dyr, alle like. Denne artikkelen vil diskutere Ruby-throated migrasjon, fordi det er sannsynlig at flere mennesker ser denne arten enn alle de andre i Nord-Amerika kombinert, og dens dynamikk ligner andre arter, selv om datoene og stedene varierer. Et unntak er Annas Hummingbird, som vanligvis ikke migrerer, men kan vandre opp og nedover etter årstidens matressurser. Banding studier tyder på at enkelte fugler kan følge en bestemt rute år etter år, ofte som kommer til samme mater på samme dag. Vi vet ikke om noen enkeltfugl følger samme rute i begge retninger, og det er noen indikasjoner på at de ikke gjør det. Hvorfor migrere Som med de fleste av våre trekkfugler, utviklet kolibrier tilsynelatende til deres nåværende former i siste istid. De var (og i stor grad fortsatt) tropiske fugler, men da de store isarkene trakk seg tilbake fra Nord-Amerika, utvidet de gradvis sine områder for å utnytte rike, tempererte matressurser og hekkerrom, fylle ubebrevne nisjer i USA og Sør-Canada mens de unngikk intens konkurranse i tropene. Noen sangfuglearter har tilpasset seg helt til våre variabel nordamerikanske klima, delvis ved å bli vegetarianere om vinteren, og ikke migrere. Men kolibrier er rovdyr (nektar er bare drivstoff til å drive sin flycatching aktivitet), og avhenger av insekter som ikke er rikelig i underfrysende vær, så de fleste av dem må trekke seg tilbake quothomequot til Mellom-Amerika om vinteren eller risiko sult. Noen få Ruby-throated forblir langs Gulfkysten hver vinter i stedet for å fortsette til Mellom-Amerika, kanskje fordi de er for gamle eller syke for å gjøre et annet trans-Gulf-flukt eller for ungt (fra svært sent reir) å ha hatt tid til å vokse fett og sterk nok til å migrere deres overlevelse sjanser avhenger av alvorligheten av hver bestemt vinter, og mange går i uvanlig kalde år. En annen liten befolkning vintre i Outer Banks of North Carolina. Nordlig migrasjon De fleste Ruby-throated Hummingbirds vinter mellom sørlige Mexico og Nord-Panama. Siden kolibrier fører ensomme liv og verken lever eller migrerer i flokker, kan en enkelt fugl tilbringe vinteren hvor som helst i dette området der habitatet er gunstig, men sannsynligvis vender tilbake til samme sted hver vinter. Ruby-throats begynner å bevege seg nord så tidlig som i januar, og i slutten av februar er de på Yucatans nordlige kysten, gorging på insekter og edderkopper for å legge til et tykt lag av fett som forberedelse for å fly til USA Noen vil skjære i Gulfen av Mexico og følge Texas kysten nord, mens de fleste tilsynelatende krysser Gulfen, vanligvis forlater i skumring for en uforstyrret flytur på opptil 500 miles, noe som tar 18-22 timer avhengig av været. Selv om kolibrier kan fly over vann i samarbeid med blandede flokker av andre fuglearter, gjør de ikke quothitchhikequot på andre fugler. Noen kolibrier lander på offshore olje rigger eller fiskebåter å hvile. Individuelle fugler kan gjøre landfall hvor som helst mellom sørlige Texas og sentrale Florida. Før avreise vil hver fugl nesten ha doblet sin vekt, fra ca. 3,25 gram til over 6 gram når den når den amerikanske gulfkysten, den kan veie kun 2,5 gram. Det er også mulig at noen få Ruby-throats island-hop over Karibia og angi USA gjennom Florida Keys. Hanner forlater Yucatan først, fulgte ca 10 dager senere av de første kvinnene. Men overføringen er spredt over en tre måneders periode, noe som hindrer en katastrofal værhendelse fra å tørke ut hele arten. Dette betyr at noen få fugler kommer til et hvilket som helst sted veldig tidlig (prikkene på migrasjonskartet), men hovedparten av befolkningen vil følge senere, slik at du kanskje ikke ser din første kolibri i flere uker. Hver enkelt person har sitt eget interne kart og tidsplan, og kvotefugler kan komme tidlig, sent eller hvor som helst innenfor en to-måneders periode. En gang i Nord-Amerika fortsetter migrasjonen med en gjennomsnittlig hastighet på ca 20 miles per dag, vanligvis etter den tidligste blomstringen av blomster kolibrier foretrekker. Den nordlige grensen til denne arten sammenfaller med den Gula-bellied Sapsucker hvis de tidligste mennene ankommer i Canada før tilstrekkelige blomster blomstrer, de raid sapsucker brønner for sukker, samt spise insekter fanget i sap. Nordovervandringen er ferdig innen slutten av mai. Bandingstudier viser at hver fugl har en tendens til å returnere hvert år til samme sted som det lukkes, til og med besøker de samme matere. Se Ruby-throated migrasjonskart for artens rekkevidde og tidligste ankomstdatoer. Southward Migration I motsetning til Rufous og andre kolibrier i de vestlige fjellene, hvor frysende netter er vanlige, selv om sommeren, er det ikke så godt at Ruby-throats er tilpasset til kalde temperaturer, de har en tøff tid under midten av 20-tallet (F), og går ikke inn som jevnlig som deres vestlige fettere for å spare energi. For å unngå kulde og mangel på mat når blomster slutter å blomstre og insekter slutter å fly, går de sør. Noen voksne menn begynner å vandre sør allerede i midten av juli, men toppen av sørlig migrasjon for denne arten er sen august og tidlig september. Ved midten av september migrerer i det hele tatt alle de Ruby-throated på feeders gjennom lenger nordover, og ikke de samme individer sett på sommeren. Dette er vanskelig å se, siden de alle ser like ut, men har blitt bevist av banding studier. Antall fugler som migrerer sør kan være dobbelt så høyt som i den nordlige turen, siden det inkluderer alle umodne fugler som luktet om sommeren, så vel som overlevende voksne. For en hummer som bare lukte, er det ikke noe minne om tidligere migrasjoner, bare en trang til å legge på mye vekt (se ovenfor) og fly i en bestemt retning for en viss tid, så se etter et godt sted å tilbringe vinter. Når den lærer en slik rute, kan en fugl komme tilbake hvert år så lenge den lever. Den opprinnelige trangen utløses av forkortelsen av sollyset som høsten nærmer seg, og har ingenting å gjøre med temperatur eller tilgjengeligheten av mat faktisk, kolibrier migrerer sør på tidspunktet for den største matmengden. Når fuglen er feit nok, migrerer den. Det er ikke nødvendig å ta ned matere for å tvinge kolibrier til å forlate, og i høst er alle fuglene på materen din allerede i ferd med å migrere. Hvis du fjerner materen, vil fuglene bare mate andre steder, men kan ikke plage å gå tilbake til gården ditt neste år. Jeg anbefaler at du fortsetter å vedlikeholde feeders til frysing blir et problem. Many people notice that adult males migrate earlier than females, because in the last month or so there may be no birds with red throats at feeders. However, remember that immature Ruby-throats of both sexes look much like their mothers. Young males often have a quot5 oclock shadowquot of dark throat feathers in broken streaks, and many develop one or more red gorget feathers by the time they migrate. Immature females may have much lighter streaks in their throats, but no red. There is evidence that fewer Ruby-throats cross the Gulf in fall than in spring, most instead following the Texas coast back into Mexico. Perhaps the hurricane season is a factor, and the genes of many birds with a tendency to fly over water were lost at sea during storms. We still have many more questions than answers about hummingbird migration. Until technology provides radio transmitters small enough for a 3-gram hummingbird to carry safely, banding is the best tool to collect data on individual birds. But since only a few dozen people in North America - almost all of them amateurs like me - are licensed to handle hummingbirds, progress is slow and the odds of recapturing a banded bird are very low. Hi, I8217m Leo. Im a hybrid software developer, designer, marketer and entrepreneur. I am the CEO of Ballistiq. a web software design and development company. A little more about me gtgt Ballistiq Web Development Looking for a trusted, North-American based web development team who has a great track record Ballistiq provides bespoke design and development services. Weve built sites and applications for top companies including Autodesk, NVIDIA, Gnomon School of Visual Effects, Allegorithmic, Luxion and more. Categories Ruby on Rails vs PHP 8211 The good, the bad Note 8211 this article was written in 2012. I8217ve added an addendum to update the article with latest thoughts on May 30th, 2014 at the bottom. I8217ve been developing with PHP since version 2 (a very long time ago). I had been wanting to get into Ruby on Rails and had played with it since version 1 but never had the chance to really use it in production seriously until this past year with Ballistiq. Since then, I8217m now coding 8020 Ruby on Rails and PHP, so I8217ll give my thoughts on the two. At the time of writing, the versions I8217ll be talking about are PHP 5.3PHP 5.4 and Ruby on Rails 3.2 (running on Ruby 1.9.3). The context of this post is comparing the two specifically for web development. Aren8217t you comparing apples to oranges Rails is a framework for Ruby. PHP is a language and has many frameworks. What I8217m mostly comparing is my experiences working with both ecosystems: PHP framework (there are many) vs Ruby Rails (the predominant framework). While some may get hung up over trying to compare the two and may balk at the title of the article, this is a legitimate question that many developers ask. Many developers want to know what are the benefitsshortcomings of both ecosystems and genuinely just want a clear answer. From the popularity of the article via Google, it8217s something that tens of thousands of people actually are asking. Isn8217t it just a preference Yes and no. Both the PHP and Ruby ecosystem are very powerful. In many cases, yes you can just boil it down to a preference. However, there are many strengths for both and it8217s useful to be able to compare them in a level-headed fashion. I8217m not religiously attached to one or another. I8217ve used both. My company works with both. Both are here to stay and play important roles in the global web development industry. PHP 8211 The Good Simplicity and Learning Curve What I absolutely love about PHP is its simplicity and relatively shallow learning curve. When you first get into PHP, all you need is a single HTML web page. Change the extension to. php. Throw in some ltphp code here gt inline PHP, run it on a PHP web server and off you go. It8217s really dead simple for someone totally fresh to get something usable done and deployed within a few minutes. This has been one of the strengths of PHP and why it8217s so darn popular 8212 designers and non-coders can be productive right away. This simplicity, however, comes at a cost. It is a double edged sword as it leads to a lot of sloppy, unmaintainable code. This leads people to use frameworks that force a particular coding standard. The benefit of PHP8217s simplicity and shallow learning curve is a really big thing going for it and this has business benefits too: it8217s easier to find people who know PHP. If you look around, Ruby on Rails developers are more expensive and harder to find. The good developers who really know Ruby and Rails (the L33T ) tend to be more hardcore devs. The documentation for PHP is also fantastic. I find the docs for PHP far more useful than the ones for Ruby and the Rails Guides. The user comments really help and there is a lot of example code that shows you how to solve common problems. It8217s Made For The Web One big thing about PHP is that it really is focused entirely for the web. It8217s not a general purpose programming language like Ruby (or PythonJavaCPerletc.). Many of its inbuilt functions are specific to solving web problems and this makes it a very straightforward language to program for the web. F. eks if you want to send a header to the browser, just use the header() function. An MD5 or SHA1 hash is simply md5() and sha1(). It8217s not as straightforward to do this with RubyRails as you have to load in libraries and use namespacesmodules to get to the same functions. Lot8217s of Resources PHP has a ton of resources, frameworks, applications and libraries available for it. From CMS8217 like WordPress and Drupal to frameworks like Symfony and libraries like Doctrine, PHP really has a lot of good resources available. When it comes to deploying a simple CMS, for example, I almost always default to just using WordPress instead of building a Rails app for it. I just feel that it8217s a much simpler solution. Dead Simple to Deploy Deploying PHP is dead simple. At its simplest, you just FTP the files to a web server (which we at Ballistiq never do 8211 we deploy using Git). Thing is, with PHP you don8217t have to know about or care necessarily about the web stack. Many hosting services just use a LAMP environment (Linux, Apache, MySQL, PHP), so as long as your files are in place they just run and that8217s that. Even using a framework like CodeIgniter is relatively simple as you don8217t ever need to use the command line 8212 you just copy the entire framework directory onto the server and run. That8217s it. PHP 8211 The Bad Its Evolution Led to a Lot of Bad Code This is not a direct feature flaw of PHP, but is the result of years and years of building on top of a simple scripting language that was specific to solving simple web problems. PHP was not always Object Oriented. Even when it did support OOP, for years it was not really OOP (missing important features like static methods), so programmers got around the problems through all kinds of shenanigans like using global variables or setting a local variable using a global reference pointer. F. eks Typical pre-PHP5 code These are just a couple of examples, but there are more which I won8217t go into here. It8217s unfortunate but is just one of the side effects of working with a language that has evolved rapidly. One thing that drives us crazy at Ballistiq is going into projects where we have to upgrade or maintain applications written with old PHP. This is the case with one of our largest projects where we8217re trying to upgrade a large app written in PHP4 code and it is horrific. A lot of sloppy code there that we have to work with. Better Coding Standards Lead To Really Purist Code As mentioned above, sloppy code is not an inherent feature flaw of PHP. It8217s just how people have used the language. As PHP has gotten more popular, it8217s gotten a lot of influence from enterprise developers who take a really purist approach to programming. When you go to conferences and listen to these PHP experts talking about best practices, PHP no longer becomes fun to program. You8217re almost looking at a Java program. Classes explicitly declare namespaces, importing namespaces, explicit getter and setter methods, explicit declaration of publicprivate methods, etc. The code becomes extremely verbose. Now If you want to see a framework that takes a more purist approach to things, check out Symfony. It8217s a great PHP framework that8217s ready for enterprise level usage but from a development point of view, I find it tedious. Ruby on Rails 8211 The Good Mature Framework The more I develop on Rails, the more I really appreciate and love it. I8217ve found that it enables us to create higher quality products for clients much faster, that are more maintainable. It8217s a mature and stable framework that many large companies are comfortable with introducing into their environments. Compare this with the PHP ecosystem that has many frameworks 8212 there8217s a risk of selecting a framework and finding that it8217s just not that well supported several years from now (we made this mistake). Speed and Development Joy I absolutely love working with Rails because as a development platform, it is extremely automated. So many menial tasks have been automated so that you just focus entirely on solving the business problem instead of hacking your way around a framework. Some things really going for Rails in this regard are: GeneratorsScaffolding 8211 Provide a very good starting point for developing around. Some PHP frameworks now provide scaffolding features. GemsPlugins 8211 the Rails community provides a wealth of plugins as Ruby Gems that you simply add to your project Gemfile and install. This significantly accelerates development and maintenance time as you8217re not trying to integrate disparate libraries, it8217s already done for you. Active Record ORM 8211 Of all the ORM8217s I have used (for PHP I8217ve used DataMapper DMZ, FuelKohana, Doctrine), ActiveRecord in Ruby on Rails is simply the best. It actually works and is remarkably straightforward to use. Integrated testing tools 8211 I love it that out of the gate, Rails has a testing framework that can be used. In PHP, many frameworks have only recently been trying to integrate PHPUnit, to varying degrees of success. As a programming language, Ruby is really quite an amazing language. Unlike PHP, it really is Object Oriented from the ground up. Its code is very concise and powerful. Gems (extensions) enable you to bolt on needed functionality. After coding in Ruby, I find coding in PHP (or anything else really) rather tedious. Ruby on Rails 8211 The Bad Steep Learning Curve My main beef with Ruby on Rails is that it actually has a steep learning curve. Do not believe the hype that says that it is really easy. They will show you podcasts where you build a simple blog application using scaffolding and voila Instant website. Ingenting kunne være lenger fra sannheten. Rails is seen to be easy because they have automated many things in the framework 8212 this does not make it easy to understand. Developing a Rails app and deploying it actually requires you to know the full stack. With PHP, you can just cobble together some inline PHP code, FTP it to a server and off you go. In Rails, you really need to know what you are doing from the web server (Apache or NginX), setting up Phusion Passenger and database engine. Then you have to deal with the asset pipeline process to prepare your app to run in Production mode. It8217s not as simple as running it in production mode 8212 you have to precompile your assets and make sure files are actually there. If they are not, Rails will simply blow up and you have to find out why by accessing the Rails logs. Compared to PHP, Rails is also unfriendly when it comes to errors. With PHP, it will spit out errors at you in development and the error messages actually make sense. Typically a page will render but the part with the error will show you which line the error occurred and the message is useful. In Rails, typically the whole app blows up. One last thing to throw in is that good Ruby on Rails developers tend to be polyglots. They are able to pick up and learn many languages. While beginners are battling to just learn Ruby, Rails people are using CoffeeScript instead of Javascript, SCSS (or LESS), and Slim or HAML. For a newcomer to Rails, part of the steep curve is not just learning Ruby and the Rails framework, but all these other languages as well Ruby is not an easy language I8217m sorry to offend some people here, but Ruby is simply not as straightforward as PHP to learn. It is by all intents an extremely powerful language. I choose to use Ruby simply because as a developer I feel it is a much better language than PHP. But from a learning perspective, it is not. Ruby has many features that are simply not straightforward for a beginner programmer to understand. One such concept are blocks, procs and lambdas, which Rails uses heavily. The classic Ruby on Rails example I will use is for creating a form: If you8217re new to Ruby, you can be forgiven for saying, 8220Wait a minute8230.what8217s f8221 Yes sir. Welcome to blocks. Here8217s a bit of an extreme example : Even as an experienced programmer, I went crosseyed when seeing the above line of code. It8217s very simple actually 8211 generate an 8 character random string. Another area is meta programming. Here8217s an example: I8217ve taught Ruby on Rails to experienced developers and this always trips them up. What exactly is hasone. hasmany and hasandbelongstomany. It looks like it8217s some kind of reserved keyword or declaration as these are not encapsulated in a method. However, in Ruby, ALL code is executed. Every line of code is executed, so hasone. hasmany and hasandbelongstomany are just methods that execute when the class is declared. Finally another thing that makes Ruby challenging for beginners is its loose syntax. Let8217s look again at the above code. It8217s not obvious (to a beginner) that hasone :address is invoking a method because the brackets are missing from the method invocation. In PHP, the syntax is stricter and this makes it simpler for beginners to know what8217s what. As a language, especially if you8217re coming in from others such as CJavaPHP, Ruby is challenging and it will bend your mind. Once you8217re up and running though, it8217s fantastic and many who have taken the leap really enjoy coding with it. Conclusion So from all of that, what do I conclude PHP is a friendlier entry point into web development than RubyRails. It8217s easier, there are more resources available and you can get results fast. Despite this, I personally enjoy working with Ruby and Rails more than PHP. For many of the reasons I8217ve described in this article, I just feel that the Ruby ecosystem offers a superior toolset for developing applications. I respect that the die-hard PHP fans won8217t feel the same way 8211 that8217s cool. My opinion has formed from working with both languages and ecosystems thoroughly in production. Since moving to Rails, I8217ve never really felt much of an urge to move back to developing with PHP and so all my new projects tend to be RubyRails. At Ballistiq. we develop in both. If a client project already has existing PHP code and we8217re developing for that, needing to integrated at the software level, we stay in PHP. If a client needs a brand new application, or we are building our own app use Rails. Addendum 8211 30 May 2014 Wow it8217s been a while since I wrote this and it continues to be a very highly ranked article on Google, which attracts a lot of traffic. Because technology advances at such a breakneck pace, I wanted to update this article with some new thoughts. PHP has come a long way since I wrote this article When I wrote this article, PHP was in a bit of a transitory phase as many folks were still using PHP 4 and trying to migrate to 5. Symfony 2 had not yet been released, and Laravel just was not a big thing. As of right now, PHP is having a bit of a renaissance. Here are some great technologies that really make PHP shine: Laravel 8211 As a framework, Laravel looks really excellent and many PHP folks have chosen it as their framework of choice. I can8217t speak for it because I haven8217t used it in production. But it does look good. Composer 8211 Composer is to PHP what RubyGems Bundler is to Ruby. It does package management that doesn8217t suck. For years the PHP community had to deal with Pear, which really didn8217t gain much traction. PHP web server 8211 For the longest time, developing with PHP on your computer meant that you had to rely on an external web server like Apache. Many devs ended up installing MAMP. As of PHP 5.4, PHP now comes with its own command line web server, and it8217s actually remarkably easy to fire up. Now, not everything works with the command line web server (I had trouble getting WordPress to boot up with it), but if you8217re developing with a framework that supports this, it8217s a much nicer and saner way of developing. Codeception 8211 One of our team members at Ballistiq gave a really nice talk about a testing framework called Codeception, and I have to say it actually looks decent, supporting things like Selenium and BDD style tests. HHVM 8211 Opensource project led by Facebook, this takes PHP and compiles it to bytecode that in turn gets translated into x64 machine code and runs really fast. This is a very interesting project that makes PHP highly performant and scalable. So PHP isn8217t going away anytime soon. Many people use it and put it to good use. However, I (and many web engineers) have moved on. As engineers, we8217ll hack in anything that we need to get the job done, however, by choice, I won8217t start a new project in PHP. Why I feel that there are more interesting solutions out there that are worth looking at. Why I still love Rails as a framework and Ruby as a language As I mentioned back in 2012, I really enjoyed working with Ruby and Rails. Despite it8217s steep learning curve, after a while I hit a groove and now the applications that we are delivering are so good that I can8217t imagine going back. Here8217s some of the things going for RubyRails that I feel really make it such a strong choice: Gems 8211 When I started coding in Ruby, Gems confused me more than they helped because there was too much 8216magic8217. Once I learned that you could (and should) just read the source code for gems, everything made so much more sense. Due to the pluggable nature of gems and the community8217s standards, gems can give your application a tremendous amount of functionality very quickly. Some gems that I cannot live without: Devise (authentication 8211 handles user logins, social sign on, forget password workflows and so much more), Paperclip (file uploads 8211 even handles uploading to S3, image croppingresampling), Simple Form makes forms incredibly simple to standardize and render on websites. Mountable Engines 8211 We did a mammoth project for a Fortune 500 company where after building the initial application, it was so successful that other departments wanted the same application, but with slightly different functionality and different UI. Rather than copypasting the application and having to support several codebases, we were able to extract most of the core functionality into a Rails mountable engine, and literally have one codebase but several websites. The client was absolutely thrilled with this and it was a huge win for us. Scaling 8211 Rails has a stigma of being unable to scale and they are referring to Twitter dumping Rails. We have not found any scaling issues with Rails and we have applications that run with millions of pageviews and hundreds of thousands of users each month. The fact is, majority of you will never have the scaling problems that Twitter had. And8230in fact, we found it easier to scale with Rails than with PHP. How First of all, Rails supports caching out of the box. You8217re able to do view fragment caching within your application code and use Redis as a cache store. That is a far simpler solution than trying to use Varnish which caches everything that goes through it and leaving logged-in users without caching. Using built-in Rails caching enabled us to scale easily. Secondly, Rails Capistrano Chef makes it very simple to scale to multiple server environments very quickly. Our typical Amazon AWS infrastructure includes Elastic Load Balancer, several application server instances a redissearch server, backed by an RDS database instance. We set up server provisioning with Chef, enabling us to provision a new ready-to-run instance in minutes. Simultaneous deployment complete with data migrations can be done with Capistrano from the command line. Literally, I type in cap production deploy:migrations and everything is magically deployed to all our application servers. Users don8217t see any downtime as we have Phusion Passenger Enterprise and rolling restarts. Background jobs 8211 PHP was designed as a hypertext pre-processor which means that it executes only when there is a web request. Compared with Ruby which runs a process. In Rails, you can easily set up background jobs using Sidekiq or Resque. This also adds to Rails8217 ability to scale easily. In our applications, we move a lot of stuff that can slow down requests like emailing users into background jobs. Now, PHP can do background jobs using Gearman but that8217s not standardized 8211 you have to install the PECL extension. In RubyRails, background jobs are a non-issue. You just do it. Rails is BORING 8211 Rails is now at version 4.x. It8217s a mature framework. It8217s boring now. The cool kids are touting NodeJS these days. Rails is boring because it8217s robust and stable. We8217ve developed apps in Rails now for some of the world8217s largest companies and people in their IT departments don8217t bat an eyelid. It8217s known that it8217s a good choice to build your (robust, enterprise-ready, scalable, performant) application on. Other technologies that I think are shaping the web AngularJS 8211 We introduced AngularJS into our client projects earlier this year for two Fortune 500 companies and it was a huge win. AngularJS enables you to build single-page applications that run in Javascript. Most of your front-end logic goes into AngularJS, and your backend simply because an API that serves JSON. Doing this, we were able to build highly performant applications. The user experience is very good with this approach because pages load extremely quickly as the browser does not have to do a full roundtrip request. NodeJS 8211 I started developing in NodeJS a few months ago and it blew my mind. What NodeJS is very good for is building networked applications. F. eks if you8217re building a real-time chat application, you can use NodeJS for that. Due to the maturity of Rails, I don8217t think we8217re moving off that anytime soon for building large applications, but to add real-time components, I would use NodeJS SocketIO . So what should you do Web development is becoming incredibly complex. The days of a single developer being able to ship a full application from start to finish are becoming more difficult. Even front-end can no longer be handled by a single hybrid designerdeveloper who can hack CSS HTML markup. If you are just starting out, I still recommend that you start with PHP. You will get results much faster, and this will fuel your growth and knowledge. Jumping into RubyRails as your first language might leave you really frustrated trying to get results 8211 remember, with Rails, you have to know the full stack so it8217s not just the language and framework you8217re challenged with. Once you8217re comfortable with building bespoke applications in PHP, you can then whet your appetite and start using other technologies like RubyRails and even NodeJSExpress, and you8217ll appreciate what these technologies offer. Many of the concepts you will learn from PHP in frameworks like Symfony amp Laravel will carry over to other languages and frameworks. Another reason why I recommend PHP as a great starting point is that it8217s very useful to know so that you can hack on things like WordPress themes and plugins. WordPress is so widely used today in business (especially marketing departments) and it8217s great to have software polyglots who can work with many different tools and platforms. The thing that you have to realize is that the Web is not about what language you choose to develop with 8212 it8217s about the standards and what it takes to get information in and out of the web browser. It doesn8217t matter what is on the server, as long as it spits out HTML and the right JSON data 8211 you can use C for all anyone cares. That8217s why there are so many web technologies from PHP to Ruby to Python to to Java and gosh Perl is still used (I met a guy that wrote a Shopify App entirely in Perl). So there you go. Keep on hacking You can do anything in PHP that you can in Rails and visa versa. That8217s enough for me to stick with PHP. As far as Rails being faster to deploy, I really doubt it. There is not much time that can be saved in PHP vs. another language with the existing frameworks I already use (unless of course, we build AI to start programming code). Fin artikkel. I totally agree because I8217ve had the same experience coming from a PHP background over to RoR. I8217m just glad I8217m not the only one that thinks learning Rails is difficult. I8217m still trying to get my head around Coffeescript. I would like to offer some advice to readers, a really good way to learn Ruby and Rails is by doing the FREE SaaS course from Edx (edx. orgcourseuc-berkeleycs-169-1xsoftware-service993 ). Not only will you be learning solid Ruby on Rails, but you will learn good engineering aspects and end up with a certificate from Berkeley University as well Other than that, I can recommend the Ruby on Rails Tutorial 2ed by Michael Hartl. and Head First Rails (O8217 Reilly). Remember, the more you give RoR a chance, the more you8217ll love it. Great write up. Im more of a javascript guy who occasionally uses php for the server side. Since node came, started to use javasript on the server side too. A lot of the cool tools that I use like Jekyll, Sass and compass are written in Ruby, so I always got tempted to learn ruby. I have observed a lot of my colleagues moving to Ruby or Python because they feel that being a php programmer just doesn8217t get the same respect. Great, balanced article Leo, thank you for not hyping one or the other and remaining objective about your experience. Deployment complexity of RoR concerns me, while I like the other aspects. Fin artikkel. Im both PHP and Ruby on Rails programmer. I choose Rails because unlike PHP there8217s too many to study depending on your needs. A lot of framework and cms. While Ruby, rails is all you need. you can do scale apps. Really helpful article, Leo. I8217ve been dipping my toes into web development for the last six months and have been working mainly with PHP, however Ruby on Rails is next on my list of languages. As an experienced web developer, would you suggest I continue with PHP and move on to Rails after I get some experience Or jump right into Rails Hi Michael. I think it is valuable to know both. Definitely in the current climate a knowledge of Rails will get you a job very quickly as there is more demand and less competition. If you are completely new to web development, I think PHP is a better starting point because you will get results faster, which will spur you on to continue in web development. I can8217t stress enough how small successes build on each other. You can build a good, custom MVC application quickly using something like CakePHP or CodeIgniter. When you do move to Rails, I8217d advise not to learn Rails first. Learn Ruby first and try using a framework like Sinatra to start with. My reasoning is that Rails has too much 8220automagic8221 which makes it very difficult to understand what is happening under the hood. If you don8217t understand what Rails is doing under the hood, and you don8217t know how to look in Rails source code and figure it out, debugging your applications can be very long and frustrating, especially for a beginner. Thanks for the helpful response Leo I definitely agree that learning the Ruby is super important before jumping into Rails. There8217s definitely a lot to learn for me still but I8217m super excited and motivated by each little success. Cheers Couldn8217t agree more. As a newer Ruby and RoR dev, it was instrumental that I learned Ruby first. While RoR is Ruby at its core, it handles a lot of the rudimentary tasks for you8230 hence, Rails 8220Magic8221. If you don8217t have a decent grasp on how to use Ruby without a web framework, what8217s going on under the hood will absolutely frustrate you, especially when it comes to debugging or even understanding what the right toolmethod is for the job. Great article, Leo I, like most others, appreciate the fair and balanced representation of both languages and their respective frameworks. or chars (8216a8217..8217z8217).toa Array. new(8).join First language I ever learned was Turbo Pascal. Then Java. First web programming language I learned was PHP. Very informative. I8217m new to programming and am looking at both PHP and Ruby as server-side languages (I8217ll decide which one to go with once I8217m in to it a bit more). I agree that PHP is easier to pick up 8216off the bat8217 but it is very hard to find good quality tutorials or guidance out there. It8217s ridiculous really seeing as it8217s been around for so long. On the other hand Ruby does have a steep learning curve (though learning PHP in tandem seems to have helped me understand it) but the resources for learning that are out there are both easier to find and a whole heap better. Code school, for example (check it out if you8217re new to development) is a fantastic resource8230 but doesn8217t even touch PHP. I see Ruby as the SS language of the future. I am working on Ruby on rails. Using Ruby on rails to build rock solid code thus quality websites that will be easy to maintain afterwards. Ruby on Rails is also well known for its coding convention, Agile practices and security strength. But it is valuable to know both Nice article. I8217ve been getting into web dev with Rails over the past few months and it8217s nice to see that I8217m not alone in my belief that it simply isn8217t very intuitive. The comparison is indeed like apples and oranges, but it is useful when considering which area to focus on studying. I8217m currently picking up industry experience with Rails, but am hesitant to commit to going the full mile in that area because the curve is so steep, and I don8217t know if I want to be a Rails dev. Good article. I feel exactly the same way. After gt10 years php and Java I learned to like ruby. And the peace of mind that rails gives me in a stressful project. Blindly knowing where to put new code even after 12 hours of coding at 4 in the morning. But I really hate the complexity you mentioned concerning the infrastructure setup. Some people enjoy that 8211 I don8217t. Live is too short for such stupid tasks. I always wonder why can8217t the RubyRails folks manage to create a setup routine that8217s as as easy as php Why do I have to fight with Ruby version gem version mac OSX version inconsistencies for 2 days before rails server will run the first time Grmpffff8230. Actually, you don8217t have to 8220fight with8221 versions. 8211 Ruby versions: Generally managed by rbenvrvm et al. (rbenv is officially recommended by Rails 8211 rubyonrails. orgdownload ). If your native Ruby satisfies the Ruby version required by the project at hand (e. g. 1.9.3 for Rails 4, 1.8.7 for Rails 3.2) then you are good and you don8217t need those tools. But if you are doing client work, or even experiments (e. g. your main project is Rails 3, you are experimenting onplanning on switching to Rails 4) you8217ll need multiple Ruby versions running simultaneously in the same machine. You can use Vagrant et al. but that can8217t beat having it in your base OS. Rbenvrvmetc makes this possible only with a few lines of commands. You can say that one can just use the latest possible Ruby, but it doesn8217t always work like that (compatibility problems etc). Now try that with PHP. There are PHP version switching tools but they were nowhere near maturefull-fledgedeasy-to-use as rbenvrvm last time I checked. 8211 Gem versions: Seriously Show me a single languageframework with a packagedependency manager that doesn8217t involve version numbers (e. g. PHP8217s composer, Python8217s PIP, Closure8217s Leiningen, Java8217s Maven) Ever heard of DLL Hell 8211 Mac OSX: I8217m an Ubuntu user but I8217d be surprised if you can8217t get anything related to RubyRails working in MacOSX, seeing that most Rails developers are using Macs. 8211 You need to to install rbnevrvm on a machine only once. After that, you can install any version of Rubies and Gems in a matter of minutes. And with Heroku, you can see your thing in interwebs in seconds. And you have proven deployment tools like Capistrano which works for any empty Linux box. Yeah, PHP shared hosting is really ubiquitous (in most of which you still can8217t reliablysecurely run modern PHP frameworks), but here the scopes are really different. 8230from a long time PHP user who is busy switching to Laravel 4 and Rails 4 at the same time in production projects for the last 1-2 months. I8217m just finishing up a big L4 project and about to get started with ROR myself. hi leonard I am from India this article is very useful I want some suggestions on building a big eCommerce website. I have a good experience of making website in asp, asp Ajax and sql server 2008. Now I am thinking about moving from Microsoft (because of cost). Please help me choose between php(plain),php with mvc framework, django (not rails because of steep learning curve and updating the website after the host has updated the version).I have no experience on any of the above three. and I will develop alone and I want to cost to be on lower side. Any help would be useful Thanks for this article. As a programmer who8217s been out of the loop for a while (no pun), I had suddenly been preached to about RoR by kids who had never been across other languages. as if RoR was the be all and end all. Your article clarifies all the pros and cons very objectively. Much appreciated. As a would-be programmer starting out and slightly overwhelmed with all the languages and pressure with choosing one: really interesting article. Thanks Thanks for this Article. I8217m using PHP (Laravel framework) for development and Codeception for automate testing. Should I try RoR I8217ve heard that RoR have testing amp deployment tool which help us saving time a lot. Do you have any recommends for me. Thank you in advance We can not compare a programming language with a framework for a programming language. If you don8217t get this then you must start to learn again. A very well considered, helpful and well written article. Thank you Leo. Just read your article. I started my developing 8216career8217 in ASP webforms, which was quite easy and then switch to MVC with scaffolding, razor, nuget, entity framework, jquery, etc. It seems to me that Microsoft8217s stack is well-build and although I found it hard to learn MVC, it all fits together. Maybe they have 8216stolen8217 all good ideas from other frameworks and languages but they combined them very well and build a great IDE. So why does no one use it these days I read a lot of articles about what framework and language is the best, but they never compare it to ASP. Is it 8216just8217 because it8217s Microsoft The best article i8217ve ever read about ruby n php. Thanks for this Meanwhile, in Morocco: Hi. I loved your blog and it helped me a lot. Thank you so much I wanted to ask you one thing My first Rails app is a mobile app that will start with almost 1 million users (from another app my company is buying) and also a web application, like Facebook that you use in the browser and on your iPhone. I don8217t know how many nodes I can start with and I can8217t find a lot of information online. We have one server (16 GB RAM) I am using to test load balancer, database replication I can create as many VPS in the server as it fits in this server. I don8217t know if 16 GB will be enough for 1 million users but I created 6 nodes for staging (and learn): 8211 one with Nginx for load balancing (512MB) 8211 two with Unicorn for the Rails application (1GB each) 8211 two for MySQL (one master, one slave, but I still have to learn how to make Rails read from slave and write in the master, 2GB each) 8211 one for files (512MB shared via NFS with the load balancers and apps, where paperclip will write). The database will have a lot of writes. What architecture configuration you recommend Am I too wrong I used small RAM because I will use more for production but I don8217t know if 6 nodes is enough or if 16 GB will be enough. Can you help me Thank you 1 million users who are logged in, or 1 million users per month who are mostly just browsing the site Also, is the Rails application going to just be for an API or will it actually deliver the pages It also depends on the memory footprint of your application, if it is large or not. 1. 16GB is not likely enough for 1 million users if it is a reasonably sized application, and for that number of users I wouldn8217t put everything on a single server anyway. I8217d load balance across 2x 16GB (or 32GB) servers, quad cores minimum and scale from there. Remember, Ruby applications tend to bloat with lots of gems that you load in. The typical way to scale is to get as much memory as possible and run as many concurrent processes as you can in memory. 2. I would not use Unicorn. It is flaky and consumes a lot of memory. For that kind of scale, I would use Passenger Enterprise. If you want to be cheap and not pay for the Passenger license (which is worth it), you can use Puma. 4. Cache, cache, cache. Have one server just for Redis and cache the hell out of your application: guides. rubyonrails. orgcachingwithrails. html 5. Move slow processes into Sidekiq for background processing. Tusen takk. It is 1 million users registered but usually 20,000 to 300,000 concurrent connections. And it8217s HTML and JSON, depends of the extension. We want to grow, of course, so need to be ready to more. I thought Unicorn was the best. I was using memcached but I will try Redis. Thank you very much again. It was hard to find something online explaining how much memory and how many servers in the load balancer and things like this. Just think about this: if Facebook was done in PHP, which is probably the most robust and used web application in the planet, you don8217t need to be a very smart person to realize php is far from being a bad programming language. in fact, PHP in the next 5 years will become the definitive best web programming language on top of every other one by far. Why Because its syntax is more human readable. The only reason why RoR is so trendy, is because it did very cool stuff a few years ago not available in php. But php is getting better day by day, frameworks like laravest are getting tremendous attention, and even bringing back old php users who are dropping RoR and coming back like prodigal sons. Yes, RoR deserves the credit of pioneering MVC and many other things, but it lacks the beauty and simplicity of C syntax, which will reign forever and ever. There8217s a lot of hype regarding RoR, most people try RoR just because they want to feel trendy and cool, one of the reasons most hipsters use it. Don8217t be a victim of the phenomenon. PHP is not a trendy thing, PHP, without all the noise and propaganda, still dominates the web. Juan David Pasts Rivera Another alternative is Meteor, which is great, is a framework on top of node js, is the one I like the most from all that I have tried: derbyjs, deployd, sails, express, from what I remember. Even when it8217s not comparable with Angular, Meteor supersedes it since you have 2 way data binding and backend logic at the same time and written in JavaScript, also you don8217t have to learn ng attributes. PHP has Facebook as a great representative, but its syntax is not as simple as you can get with Meteor and preprocessing packages. Anyway, scaling is always another whole story, it8217s a huge work which can be done in all languagesframeworks, I am not sure in which of them is easier though. If that8217s so then why does nobody choose to write apps in COBOL or BASIC anymore Why would you choose CoffeeScript over Javascript Why has Apple created Swift when people can just as well use Objective-C Why does it take a non-speaker on average twice as long to learn Russian compared to Italian To say it8217s all about preferences and claim that somehow all languages are equal is pretty naive. I like Php spent a lot of time learning it built most projects in Php and will continue doing so. The only reason I8217m learning ROR now is because I get tons of job offers some remote. I look at it this way freelance jobs I8217m using Php. Contract long term company jobs ROR I guess. I8217m currently in between angularjs now because at my company we wanted to try this out with Ruby as the backend. So imagine the steep learning curve I8217m going through for both of these languages Ruby and AngularJS at the same time.

No comments:

Post a Comment