Alexey Shipunov COMPUTER LITERACY Make computer do the dirty work January27,2020 Makethecomputerdothedirtywork. TimO’Reilly Shipunov,Alexey. ComputerLiteracy. Makethecomputerdothedirtywork. January27,2020version(draft). 147pp. Title page image: Tux, Linux mascot. Some other heading illustrations were taken (withdeepgratitude)fromXKCD,https://xkcd.com. CTANliondrawingisbyDu- aneBibby;thankstowww.ctan.org. Thisworkisdedicatedtopublicdomain. Contents Data 9 Chapter1. Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Textsoftware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Chapter2. Operatingsystems . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Chapter3. Filesandfilesystems . . . . . . . . . . . . . . . . . . . . . . . . . 15 Filenameextensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Organizeyourfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Fileoperations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Filemetadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Filemanagers. OFM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Privacyandcleaning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Chapter4. Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Internetprotocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Chapter5. Licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Chapter6. Introtospreadsheets . . . . . . . . . . . . . . . . . . . . . . . . . 24 Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Dragandfill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Protect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Ranges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Tabdelimited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Chapter7. Markupandebooks . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Plaintext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 MyfirstWebpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 HowtoworkwithHTML . . . . . . . . . . . . . . . . . . . . . . . . . . 29 SecondHTMLdocument . . . . . . . . . . . . . . . . . . . . . . . . . . 29 CONTENTS 5 Stepthree. FancyHTML . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Stepfour. PNGandJPEG. . . . . . . . . . . . . . . . . . . . . . . . . . 31 Stepfive. SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Stepsix. CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Stepseven. JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Symbolebooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 EPUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Scannedebooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 DjVu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Chapter8. TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 MyfirstLATEXdocument . . . . . . . . . . . . . . . . . . . . . . . . . . 41 SecondLATEXdocument . . . . . . . . . . . . . . . . . . . . . . . . . . 42 LATEXebooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Commands 45 Chapter9. CLIistocommand . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Chapter10. Terminalsandwheretofindthem . . . . . . . . . . . . . . . . 47 Chapter11. UNIXPowerTools . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Navigate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Pipesandotherconnections . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Regexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 UNIXPowerToolscheatsheet . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Chapter12. IntrotoPython . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Firstthingsfirst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 InstallingPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2or3? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 InteractiveMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6 CONTENTS PythoninWebBrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Chapter13. Hello,World! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 CreatingandRunningyourFirstProgram . . . . . . . . . . . . . . . . . . . 68 Printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Quotes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Talkingtohumans(andotherintelligentbeings) . . . . . . . . . . . . . . . 73 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Chapter14. WhoGoesThere? . . . . . . . . . . . . . . . . . . . . . . . . . . 75 InputandVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Chapter15. Countto10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Whileloops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Chapter16. Decisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Ifstatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Chapter17. Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Whatisdebugging? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Whatshouldtheprogramdo? . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Whatdoestheprogramdo? . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 HowdoIfixtheprogram? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Chapter18. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 CreatingFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Variablesinfunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Morecomplexexample . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Chapter19. Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 CONTENTS 7 Variableswithmorethanonevalue . . . . . . . . . . . . . . . . . . . . . . 107 Morefeaturesoflists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Chapter20. “For”Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Chapter21. Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Chapter22. FileInputandOutput . . . . . . . . . . . . . . . . . . . . . . . . 127 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Chapter23. IntroducePythonturtle . . . . . . . . . . . . . . . . . . . . . . 129 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Chapter24. WhoGoesThere-2,orGUI . . . . . . . . . . . . . . . . . . . . . 135 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Chapter25. Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Chapter26. Pythoncheatsheet. . . . . . . . . . . . . . . . . . . . . . . . . . 141 Homework 143 Chapter27. Topicsforself-study . . . . . . . . . . . . . . . . . . . . . . . . . 144 Chapter28. PhylogenyPrimer . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Someusefulreferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Small foreword I use computer technologies for a long time, and learned many good stuff. To my amazement, I always perform routine work on the computer much faster then my colleagues. Therefore,Ibelievethatifsomebodywilllearnatleastsomeofmymeth- ods,theywillperformcomputer-basedworkinamoreefficientway. Thisisthegoal ofthe“Computerliteracy: makecomputerdothedirtywork”book. I only want to mention that I am biologist and like command line and (very primi- tive!) programming. Thisexplainssomefeaturesofthebook. Data Chapter 1 Text 1. Essentially, computer understands only numbers. Simple text interface was developed to make communication easier. Despite simplicity, it is extremely powerful and have much more capabilities then point and click graphical in- terface. 2. Therearetwomainissueswithsimpletext,lineendsandencoding: (a) Lineendsmustbeencodedasaseparateinvisiblesymbol(s). Thewayhis- toricallydifferbetweenoperatingsystems: oldMac,WindowsandUNIX. Mostoftextsoftwareisawareofthesedifferencesbuttherearesome(like WindowsNotepad)whichdonotdothisjobwell. (b) Encodingregulateshowmanybytesarespendpersymboloftext. There are(amongothers)1and2bytesencodings. (c) 1byteencodingslikeASCIIorLatin-1(ISO8859-1)couldonlysupport256 symbols, this is enough for core English but not enough for many world languages,especiallyiftheyusedtogether. Actually,ASCIIencodesonly 128symbolssoitis 7/-byteencoding. 8 (d) 2 byte encodings like UTF-8 could support 256 × 256 = 65536 symbols whichpracticallyisenoughformostofcurrentlanguagestogether. (e) Some systems use 4 byte or 8 byte UTF-16 or UTF-32. The first is quite popularonWindows. (f) UTF-8hasoneadvantageoverothermulti-byteencodings: Englishletter areencodedlikeinASCII.Thisisusefulandsavestraffic. (g) UTF-8isone(ofmany)realizationsofUnicodestandardwhichcoversall symbolswhichhumanitydevelopedduringitshistory. (h) Andonemoredetail: somecomputersreadbytesfromrighttoleft(from secondtofirst),andothersfromlefttoright. SoUTF-8textfileshavebyte