📚 Freely available programming books
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15 KiB

LÀs detta pÄ andra sprÄk

Contributor License Agreement

Genom att bidra godkÀnner du LICENS för detta arkiv.

Contributor Code of Conduct

Genom att bidra samtycker du till att respektera Code of Conduct för detta arkiv. (translations)

I ett nötskal

  1. "En lÀnk för att enkelt ladda ner en bok" Àr inte alltid en lÀnk till en gratis bok. Bidra bara med gratis innehÄll. Se till att det Àr gratis. Vi accepterar inte lÀnkar till sidor som krÀver fungerande e-postadresser för att fÄ böcker, men vi vÀlkomnar listor som begÀr dem.

  2. Du behöver inte kÀnna till Git: om du hittat nÄgot av intresse som inte redan finns i denna repo, vÀnligen öppna ett issue med dina lÀnkförslag.

    • Om du kĂ€nner till Git, vĂ€nligen Forka repot och skicka Pull Requests (PR).
  3. Vi har 6 sorters listor. VÀlj rÀtt:

    • Böcker : PDF, HTML, ePub, en gitbook.io-baserad webbplats, en Git-repo, etc.
    • Kurser : En kurs Ă€r ett lĂ€romedel som inte Ă€r en bok. Detta Ă€r en kurs.
    • Interaktiva handledningar : En interaktiv webbplats som lĂ„ter anvĂ€ndaren skriva kod eller kommandon och utvĂ€rdera resultatet (med "utvĂ€rdera" menar vi inte "betyg"). t.ex.: Testa Haskell, Testa GitHub.
    • Playgrounds : Ă€r online och interaktiva webbplatser, spel eller datorprogramvara för att lĂ€ra sig programmering. Skriv, kompilera (eller kör) och dela kodavsnitt. Lekplatser lĂ„ter dig ofta klaffa och smutsa ner hĂ€nderna genom att leka med kod.
    • Podcasts och screencasts : Podcasts och screencasts.
    • ProblemuppsĂ€ttningar och konkurrenskraftig programmering : En webbplats eller programvara som lĂ„ter dig bedöma dina programmeringsfĂ€rdigheter genom att lösa enkla eller komplexa problem, med eller utan kodgranskning, med eller utan att jĂ€mföra resultaten med andra anvĂ€ndare.
  4. Se till att följa riktlinjerna nedan och respektera Markdown-formatering för filerna.

  5. GitHub Actions kommer att köra tester för att se till att dina listor Àr alfabetiserade och att formateringsregler följs. Se till att kontrollera att dina Àndringar klarar testerna.

Riktlinjer

  • se till att en bok Ă€r gratis. Dubbelkolla om det behövs. Det hjĂ€lper administratörerna om du kommenterar i PR om varför du tror att boken Ă€r gratis.
  • vi accepterar inte filer pĂ„ Google Drive, Dropbox, Mega, Scribd, Issuu och andra liknande filuppladdningsplattformar
  • infoga dina lĂ€nkar i alfabetisk ordning, enligt beskrivningen nedan.
  • anvĂ€nd lĂ€nken med den mest auktoritativa kĂ€llan (vilket betyder att författarens webbplats Ă€r bĂ€ttre Ă€n redaktörens webbplats, vilket Ă€r bĂ€ttre Ă€n en tredje parts webbplats)
    • inga filvĂ€rdtjĂ€nster (detta inkluderar (men Ă€r inte begrĂ€nsat till) Dropbox- och Google Drive-lĂ€nkar)
  • föredrar alltid en "https"-lĂ€nk framför en "http" - sĂ„ lĂ€nge de Ă€r pĂ„ samma domĂ€n och visar samma innehĂ„ll
  • pĂ„ rotdomĂ€ner, ta bort det avslutande snedstrecket: http://example.com istĂ€llet för http://example.com/
  • föredrar alltid den kortaste lĂ€nken: http://example.com/dir/ Ă€r bĂ€ttre Ă€n http://example.com/dir/index.html
    • inga URL-förkortningslĂ€nkar
  • föredrar vanligtvis den "aktuella" lĂ€nken framför "versionen": http://example.com/dir/book/current/ Ă€r bĂ€ttre Ă€n http://example.com/dir/book/v1.0.0/index.html
  • om en lĂ€nk har ett utgĂ„nget certifikat/sjĂ€lvsignerat certifikat/SSL-problem av nĂ„got annat slag:
    1. ersÀtt det med dess http-motsvarighet om möjligt (eftersom att acceptera undantag kan vara komplicerat pÄ mobila enheter).
    2. lÀmna den om ingen "http"-version Àr tillgÀnglig men lÀnken fortfarande Àr tillgÀnglig via "https" genom att lÀgga till ett undantag i webblÀsaren eller ignorera varningen.
    3. ta bort den annars.
  • om en lĂ€nk finns i flera format, lĂ€gg till en separat lĂ€nk med en anteckning om varje format
  • om en resurs finns pĂ„ olika platser pĂ„ Internet
    • anvĂ€nd lĂ€nken med den mest auktoritativa kĂ€llan (vilket betyder att författarens webbplats Ă€r bĂ€ttre Ă€n redaktörens webbplats Ă€r bĂ€ttre Ă€n tredje parts webbplats)
    • om de lĂ€nkar till olika utgĂ„vor och du bedömer att dessa utgĂ„vor Ă€r tillrĂ€ckligt olika för att vara vĂ€rda att behĂ„lla dem, lĂ€gg till en separat lĂ€nk med en anteckning om varje utgĂ„va (se Issue #2353 för att bidra till diskussionen om formatering).
  • föredrar atomĂ€ra commits (en commit genom tillĂ€gg/borttagning/modifiering) framför större commits. Inget behov av att squash dina Ă„taganden innan du skickar in en PR. (Vi kommer aldrig att tillĂ€mpa denna regel eftersom det bara Ă€r en bekvĂ€mlighetsfrĂ„ga för underhĂ„llarna)
  • om boken Ă€r Ă€ldre, inkludera publiceringsdatum med titeln.
  • inkludera författarens namn eller namn dĂ€r sĂ„ Ă€r lĂ€mpligt. Du kan förkorta författarlistor med "et al.".
  • om boken inte Ă€r fĂ€rdig och fortfarande arbetas pĂ„, lĂ€gg till notationen "pĂ„gĂ„r", enligt beskrivningen nedan.
  • om en resurs Ă„terstĂ€lls med hjĂ€lp av Internet Archive's Wayback Machine (eller liknande), lĂ€gg till "'archived'"-notationen, enligt beskrivningen nedan . De bĂ€sta versionerna att anvĂ€nda Ă€r nya och kompletta.
  • om en e-postadress eller kontoinstĂ€llning begĂ€rs innan nedladdningen Ă€r aktiverad, lĂ€gg till sprĂ„klĂ€mpliga anteckningar inom parentes, t.ex.: (email address *requested*, not required).

Formatering

  • Alla listor Ă€r .md-filer. Försök att lĂ€ra dig Markdown syntax. Det Ă€r enkelt!
  • Alla listor börjar med ett Index. Tanken Ă€r att lista och lĂ€nka alla avsnitt och underavsnitt dit. HĂ„ll det i alfabetisk ordning.
  • Sektioner anvĂ€nder nivĂ„ 3-rubriker (###), och undersektioner Ă€r nivĂ„ 4-rubriker (####).

Tanken Àr att ha:

  • 2 tomma rader mellan sista lĂ€nken och den nya sektionen.
  • 1 tom rad mellan rubriken och första lĂ€nken i dess avsnitt.
  • 0 tom rad mellan tvĂ„ lĂ€nkar.
  • 1 tom rad i slutet av varje .md-fil.

Exempel:

[...]
* [An Awesome Book](http://example.com/example.html)
                                (blank line)
                                (blank line)
### Example
                                (blank line)
* [Another Awesome Book](http://example.com/book.html)
* [Some Other Book](http://example.com/other.html)
  • LĂ€gg inte mellanslag mellan ] och (:

    BAD : * [Another Awesome Book] (http://example.com/book.html)
    GOOD: * [Another Awesome Book](http://example.com/book.html)
    
  • Om du inkluderar författaren, anvĂ€nd - (ett streck omgivet av enstaka mellanslag):

    BAD : * [Another Awesome Book](http://example.com/book.html)- John Doe
    GOOD: * [Another Awesome Book](http://example.com/book.html) - John Doe
    
  • SĂ€tt ett blanksteg mellan lĂ€nken och dess format:

    BAD : * [A Very Awesome Book](https://example.org/book.pdf)(PDF)
    GOOD: * [A Very Awesome Book](https://example.org/book.pdf) (PDF)
    
  • Författare kommer före format:

    BAD : * [A Very Awesome Book](https://example.org/book.pdf)- (PDF) Jane Roe
    GOOD: * [A Very Awesome Book](https://example.org/book.pdf) - Jane Roe (PDF)
    
  • Flera olika format:

    BAD : * [Another Awesome Book](http://example.com/)- John Doe (HTML)
    BAD : * [Another Awesome Book](https://downloads.example.org/book.html)- John Doe (download site)
    GOOD: * [Another Awesome Book](http://example.com/) - John Doe (HTML) [(PDF, EPUB)](https://downloads.example.org/book.html)
    
  • Inkludera publiceringsĂ„r i titeln för Ă€ldre böcker:

    BAD : * [A Very Awesome Book](https://example.org/book.html) - Jane Roe - 1970
    GOOD: * [A Very Awesome Book (1970)](https://example.org/book.html) - Jane Roe
    
  • PĂ„gĂ„ende böcker:

    GOOD: * [Will Be An Awesome Book Soon](http://example.com/book2.html) - John Doe (HTML) (:construction: *in process*)
    
  • Arkiverad lĂ€nk:

    GOOD: * [A Way-backed Interesting Book](https://web.archive.org/web/20211016123456/http://example.com/) - John Doe (HTML) *(:card_file_box: archived)*
    

Alfabetisk ordning

  • NĂ€r det finns flera titlar som börjar med samma bokstav, ordna dem efter den andra, och sĂ„ vidare. Till exempel: aa kommer före ab.
  • "en tvĂ„" kommer före "en tvĂ„".

Om du ser en felplacerad lÀnk, kontrollera linter-felmeddelandet för att veta vilka rader som bör bytas.

Anteckningar

Även om grunderna Ă€r relativt enkla, finns det en stor mĂ„ngfald i resurserna vi listar. HĂ€r Ă€r nĂ„gra anteckningar om hur vi hanterar denna mĂ„ngfald.

Metadata

VÄra listor ger en minimal uppsÀttning metadata: titlar, webbadresser, skapare, plattformar och Ätkomstanteckningar.

Titlar
  • Inga pĂ„hittade titlar. Vi försöker ta titlar frĂ„n sjĂ€lva resurserna; Bidragsgivare uppmanas att inte uppfinna titlar eller anvĂ€nda dem redaktionellt om detta kan undvikas. Ett undantag Ă€r för Ă€ldre verk; om de frĂ€mst Ă€r av historiskt intresse, hjĂ€lper ett Ă„rtal inom parentes till rubriken anvĂ€ndarna att veta om de Ă€r av intresse.
  • Inga ALLCAPS-titlar. Vanligtvis Ă€r skiftlĂ€ge i rubriken lĂ€mpligt, men vid tvivel anvĂ€nd versaler frĂ„n kĂ€llan
  • Inga emojis.
Webbadresser
  • Vi tillĂ„ter inte förkortade webbadresser.
  • SpĂ„rningskoder mĂ„ste tas bort frĂ„n webbadressen.
  • Internationella webbadresser ska escapes. WebblĂ€sarfĂ€lt renderar vanligtvis dessa till Unicode, men anvĂ€nd kopiera och klistra in.
  • SĂ€kra (https) webbadresser Ă€r alltid att föredra framför osĂ€kra (http) webbadresser dĂ€r HTTPS har implementerats. – Vi gillar inte webbadresser som pekar pĂ„ webbsidor som inte Ă€r vĂ€rd för den listade resursen, utan istĂ€llet pekar nĂ„gon annanstans.
Skapare

– Vi vill kreditera skaparna av gratisresurser dĂ€r det Ă€r lĂ€mpligt, inklusive översĂ€ttare!

  • För översatta verk ska originalförfattaren krediteras. Vi rekommenderar att du anvĂ€nder MARC-relators till andra kreatörer Ă€n författare, som i det hĂ€r exemplet:

    * [A Translated Book](http://example.com/book.html) - John Doe, `trl.:` Mike The Translator
    

    hÀr anvÀnder annoteringen trl.: MARC-relatorkoden för "översÀttare".

  • AnvĂ€nd kommatecken , för att avgrĂ€nsa varje objekt i författarlistan.

  • Du kan förkorta författarlistor med "et al.".

  • Vi tillĂ„ter inte lĂ€nkar för kreatörer.

  • För kompilering eller remixade verk kan "skaparen" behöva en beskrivning. Till exempel, "GoalKicker" eller "RIP Tutorial"-böcker krediteras som "Compiled from StackOverflow documentation".

Plattformar och Ă„tkomstanteckningar
  • Kurser. Speciellt för vĂ„ra kurslistor Ă€r plattformen en viktig del av resursbeskrivningen. Detta beror pĂ„ att kursplattformar har olika möjligheter och Ă„tkomstmodeller. Även om vi vanligtvis inte listar en bok som krĂ€ver registrering, har mĂ„nga kursplattformar möjligheter som inte fungerar utan nĂ„gon form av konto. Exempel pĂ„ kursplattformar inkluderar Coursera, EdX, Udacity och Udemy. NĂ€r en kurs Ă€r beroende av en plattform ska plattformens namn anges inom parentes.
  • Youtube. Vi har mĂ„nga kurser som bestĂ„r av YouTube-spellistor. Vi listar inte YouTube som en plattform, vi försöker lista YouTube-skaparen, som ofta Ă€r en underplattform.
  • Youtube videor. Vi lĂ€nkar vanligtvis inte till enskilda YouTube-videor om de inte Ă€r mer Ă€n en timme lĂ„nga och Ă€r strukturerade som en kurs eller en handledning.
  • Leanpub. Leanpub Ă€r vĂ€rd för böcker med en mĂ€ngd olika Ă„tkomstmodeller. Ibland kan en bok lĂ€sas utan registrering; ibland krĂ€ver en bok ett Leanpub-konto för fri tillgĂ„ng. Med tanke pĂ„ kvaliteten pĂ„ böckerna och blandningen och smidigheten hos Leanpub-Ă„tkomstmodeller tillĂ„ter vi listning av de senare med Ă„tkomstanteckningen *(Leanpub account or valid email requested)*.

Genrer

Den första regeln för att bestÀmma vilken lista en resurs tillhör Àr att se hur resursen beskriver sig sjÀlv. Om den kallar sig en bok, sÄ kanske det Àr en bok.

Genrer vi inte listar

Eftersom internet Àr enormt inkluderar vi inte i vÄra listor:

  • bloggar
  • blogginlĂ€gg
  • artiklar
  • webbplatser (förutom de som Ă€r vĂ€rd för MASSOR av objekt som vi listar).
  • videor som inte Ă€r kurser eller screencasts.
  • bokkapitel
  • teaserprover frĂ„n böcker
  • IRC- eller Telegram-kanaler
  • Slacks eller e-postlistor

VÄra konkurrenskraftiga programlistor Àr inte lika strikta nÀr det gÀller dessa undantag. Omfattningen av repan bestÀms av samhÀllet; om du vill föreslÄ en Àndring eller tillÀgg till omfattningen, anvÀnd en frÄga för att göra förslaget.

Böcker kontra andra saker

Vi Àr inte sÄ noga med bokkÀnsla. HÀr Àr nÄgra attribut som betyder att en resurs Àr en bok:

  • den har ett ISBN (International Standard Book Number)
  • den har en innehĂ„llsförteckning
  • en nedladdningsbar version erbjuds, sĂ€rskilt ePub-filer.
  • den har utgĂ„vor
  • Det beror inte pĂ„ interaktivt innehĂ„ll eller videor
  • den försöker tĂ€cka ett Ă€mne heltĂ€ckande
  • det Ă€r fristĂ„ende

Det finns massor av böcker som vi listar som inte har dessa attribut; det kan bero pÄ sammanhanget.

Böcker vs. kurser

Ibland kan dessa vara svÄra att urskilja!

Kurser har ofta tillhörande lÀroböcker, som vi skulle lista i vÄra boklistor. Kurser har förelÀsningar, övningar, prov, anteckningar eller andra didaktiska hjÀlpmedel. En enskild förelÀsning eller video i sig Àr inte en kurs. En powerpoint Àr inte en kurs.

Interaktiva sjÀlvstudier kontra andra saker

Om du kan skriva ut den och behÄlla dess essens Àr det inte en interaktiv handledning.

Automation

– UpprĂ€tthĂ„llande av formateringsregler automatiseras via GitHub Actions med fpb-lint ( se .github/workflows/fpb-lint.yml)

  • URL-validering anvĂ€nder awesome_bot

  • För att utlösa URL-validering, tryck pĂ„ en commit som innehĂ„ller ett commit-meddelande som innehĂ„ller check_urls=file_to_check:

    check_urls=free-programming-books.md free-programming-books-en.md
    
  • Du kan ange mer Ă€n en fil att kontrollera, med ett enda blanksteg för att separera varje post.

  • Om du anger mer Ă€n en fil baseras resultatet av bygget pĂ„ resultatet av den senast kontrollerade filen. Du bör vara medveten om att du kan fĂ„ godkĂ€nda gröna builds pĂ„ grund av detta, sĂ„ se till att inspektera byggloggen i slutet av Pull Request genom att klicka pĂ„ "Show all checks" -> "Details".