Implementation and Evaluation of an Emulated Permission Sys‐ Tem for VS Code Extensions Using Abstract Syntax Trees

Total Page:16

File Type:pdf, Size:1020Kb

Implementation and Evaluation of an Emulated Permission Sys‐ Tem for VS Code Extensions Using Abstract Syntax Trees Linköping University | Department of Computer and Information Science Master’s thesis, 30 ECTS | Computer Science and Engineering 2021 | LIU-IDA/LITH-EX-A--21/054--SE Implementation and Evaluation of an Emulated Permission Sys‐ tem for VS Code Extensions using Abstract Syntax Trees Implementation och Utvärdering av ett Emulerat Be‐ hörighetssystem för Extensions i VS Code med hjälp av Abstrakta Syntaxträd David Åström Supervisor : Rouhollah Mahfouzi Examiner : Ahmed Rezine External supervisor : Magnus Kraft Linköpings universitet SE–581 83 Linköping +46 13 28 10 00 , www.liu.se Upphovsrätt Detta dokument hålls tillgängligt på Internet ‐ eller dess framtida ersättare ‐ under 25 år frånpublicer‐ ingsdatum under förutsättning att inga extraordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopiorför enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Över‐ föring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och till‐ gängligheten finns lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning somgod sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet än‐ dras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/. Copyright The publishers will keep this document online on the Internet ‐ or its possible replacement ‐ for a period of 25 years starting from the date of publication barring exceptional circumstances. The online availability of the document implies permanent permission for anyone to read, to down‐ load, or to print out single copies for his/hers own use and to use it unchanged for non‐commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional upon the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility. According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement. For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its www homepage: http://www.ep.liu.se/. © David Åström Abstract Permission systems are a common security feature in browser extensions and mobile ap- plications to limit their access to resources outside their own process. IDEs such as Visual Studio Code, however, have no such features implemented, and therefore leave extensions with full user permissions. This thesis explores how VS Code extensions access exter- nal resources and presents a proof-of-concept tool that emulates a permission system for extensions. This is done through static analysis of extension source code using abstract syntax trees, scanning for usage of Extension API methods and Node.js dependencies. The tool is evaluated and used on 56 popular VS Code extensions to evaluate what re- sources are most prevalently accessed and how. The study concludes that most extensions use minimal APIs, but often rely on Node.js libraries rather than the API for external functionality. This leads to the conclusion the inclusion of Node.js dependencies and npm packages is the largest hurdle to implementing a permission system for VS Code. Acknowledgments First of all, I would like to thank Cybercom Stockholm for the opportunity to conduct my thesis at their Innovation Zone and their constant support throughout the project. I would especially like to thank my supervisor Magnus Kraft as well as the other thesis students at the company for all the help and moral support during the distance work situation. I also want to thank my university supervisor Rouhollah Mahfouzi and examiner Ahmed Rezine for their feedback and aid with the project. iv Contents Abstract iii Acknowledgments iv Contents v List of Figures vii List of Tables viii Listings 1 1 Introduction 2 1.1 Motivation .......................................... 2 1.2 Aim .............................................. 2 1.3 Research questions ..................................... 3 1.4 Delimitations ........................................ 3 2 Theory 4 2.1 Software Extensions .................................... 4 2.2 Permission systems ..................................... 5 2.3 Visual Studio Code .................................... 6 2.4 TypeScript .......................................... 7 2.5 Static Analysis ....................................... 8 2.6 Related work ........................................ 8 3 Method 12 3.1 Pre-study .......................................... 12 3.2 Implementation ....................................... 13 3.3 Evaluation .......................................... 21 4 Results 23 4.1 Pre-study .......................................... 23 4.2 Implementation ....................................... 23 4.3 Evaluation .......................................... 24 5 Discussion 27 5.1 Results ............................................ 27 5.2 Method ............................................ 29 5.3 Source criticism ....................................... 31 5.4 The work in a wider context ............................... 31 6 Conclusion 33 6.1 Future work ......................................... 34 v Bibliography 35 A Tested Extensions 39 B Non-namespace permission messages 41 C Testing results - Permissions 43 D Testing results - Dependencies 45 vi List of Figures 3.1 Overview of the analyser architecture ............................ 13 3.2 AST generated from the line let variable = object.function(prop1, prop2) 14 3.3 Visualisation of the traversal algorithm ........................... 15 3.4 Visualisation of the visitor pattern ............................. 15 vii List of Tables 2.1 VS Code API namespaces, with description if applicable, as cited from the official documentation. ......................................... 7 3.1 Permission messages related to each namespace. ..................... 20 4.1 Permission messages detected in Bracket Pair Colorizer 2. 24 4.2 Permission messages detected in Path Intellisense. .................... 25 4.3 Permission messages detected in Live Server. ....................... 25 4.4 Precision and Recall Metrics. ................................. 25 4.5 Commonly occurring and interesting permissions found during testing . 26 4.6 Commonly occurring and interesting dependencies found during testing . 26 viii Listings 3.1 Tree traversal algorithm .................................. 14 3.2 Default import ....................................... 16 3.3 Namespace import ..................................... 16 3.4 Named import ....................................... 16 3.5 Combined type import .................................. 16 3.6 Require calls ........................................ 17 3.7 Variable declaration and property assignment ..................... 17 3.8 Variable assignment binary expression ......................... 17 3.9 Function declaration .................................... 17 3.10 Method call expression .................................. 17 3.11 Example of the ImportReference JSON structure. ................. 18 3.12 Example of the usedProps JSON structure ...................... 18 3.13 Example of the output data JSON structure ..................... 20 3.14 Bash command to extract installed extensions .................... 22 4.1 Bash command to run the analysis tool ........................ 23 4.2 Code line triggering Interact with the editor environment .............. 24 4.3 Code line triggering Access all visible extensions ................... 24 4.4 Code line triggering Access the active editor ...................... 25 1 1 Introduction 1.1 Motivation Many popular Integrated Development Environments (IDEs) and text editors use extensions or plugins as a way for the user to extend functionality and tune the system to their liking. This offers customisation to the user but could also pose risks. Extensions are external software, often open-source, which are installed onto a system and given rights to control certain parts of the application and/or system. It is therefore very possible that they could introduce new security vulnerabilities. Most web browsers implement similar systems for extensions and research has been done on the security of browser extensions. Results have shown that extensions have the possibility to introduce vulnerabilities, or even function as malware. However, little to no formal research seems to have been made on the security of IDE extensions and it is rarely discussed in internet communities. Despite this, many developers tend to install such plugins without much consideration. In today’s work environment, which is becoming more and more remote, the dependency on these digital tools and extensions become even more important. At the same time, the possibility for companies to control and monitor them becomes even lower, which would make this issue very interesting to explore. In this thesis, the security of
Recommended publications
  • Fortran Resources 1
    Fortran Resources 1 Ian D Chivers Jane Sleightholme October 17, 2020 1The original basis for this document was Mike Metcalf’s Fortran Information File. The next input came from people on comp-fortran-90. Details of how to subscribe or browse this list can be found in this document. If you have any corrections, additions, suggestions etc to make please contact us and we will endeavor to include your comments in later versions. Thanks to all the people who have contributed. 2 Revision history The most recent version can be found at https://www.fortranplus.co.uk/fortran-information/ and the files section of the comp-fortran-90 list. https://www.jiscmail.ac.uk/cgi-bin/webadmin?A0=comp-fortran-90 • October 2020. Added an entry for Nvidia to the compiler section. Nvidia has integrated the PGI compiler suite into their NVIDIA HPC SDK product. Nvidia are also contributing to the LLVM Flang project. • September 2020. Added a computer arithmetic and IEEE formats section. • June 2020. Updated the compiler entry with details of standard conformance. • April 2020. Updated the Fortran Forum entry. Damian Rouson has taken over as editor. • April 2020. Added an entry for Hewlett Packard Enterprise in the compilers section • April 2020. Updated the compiler section to change the status of the Oracle compiler. • April 2020. Added an entry in the links section to the ACM publication Fortran Forum. • March 2020. Updated the Lorenzo entry in the history section. • December 2019. Updated the compiler section to add details of the latest re- lease (7.0) of the Nag compiler, which now supports coarrays and submodules.
    [Show full text]
  • Metadefender Core V4.12.2
    MetaDefender Core v4.12.2 © 2018 OPSWAT, Inc. All rights reserved. OPSWAT®, MetadefenderTM and the OPSWAT logo are trademarks of OPSWAT, Inc. All other trademarks, trade names, service marks, service names, and images mentioned and/or used herein belong to their respective owners. Table of Contents About This Guide 13 Key Features of Metadefender Core 14 1. Quick Start with Metadefender Core 15 1.1. Installation 15 Operating system invariant initial steps 15 Basic setup 16 1.1.1. Configuration wizard 16 1.2. License Activation 21 1.3. Scan Files with Metadefender Core 21 2. Installing or Upgrading Metadefender Core 22 2.1. Recommended System Requirements 22 System Requirements For Server 22 Browser Requirements for the Metadefender Core Management Console 24 2.2. Installing Metadefender 25 Installation 25 Installation notes 25 2.2.1. Installing Metadefender Core using command line 26 2.2.2. Installing Metadefender Core using the Install Wizard 27 2.3. Upgrading MetaDefender Core 27 Upgrading from MetaDefender Core 3.x 27 Upgrading from MetaDefender Core 4.x 28 2.4. Metadefender Core Licensing 28 2.4.1. Activating Metadefender Licenses 28 2.4.2. Checking Your Metadefender Core License 35 2.5. Performance and Load Estimation 36 What to know before reading the results: Some factors that affect performance 36 How test results are calculated 37 Test Reports 37 Performance Report - Multi-Scanning On Linux 37 Performance Report - Multi-Scanning On Windows 41 2.6. Special installation options 46 Use RAMDISK for the tempdirectory 46 3. Configuring Metadefender Core 50 3.1. Management Console 50 3.2.
    [Show full text]
  • Mac Text Editor for Coding
    Mac Text Editor For Coding Sometimes Pomeranian Mikey probed her cartography allegorically, but idiomorphic Patrik depolymerizes despotically or stains ethnocentrically. Cereal Morten sick-out advisably while Bartel always overglazing his anticholinergic crunches pregnantly, he equilibrating so eath. Substantiated Tore usually exuviated some Greenwich or bumbles pedagogically. TextEdit The Built-in Text Editor of Mac OS X CityMac. 4 great editors for macOS for editing plain lazy and for coding. Brackets enables you! Many features that allows you could wish to become almost everything from an awesome nintendo switch to. Top 11 Code Editors for Software Developers Bit Blog. We know what you have specific id, so fast feedback on rails without even allow users. Even convert any one. Spaces and broad range of alternatives than simply putting your code after it! It was very good things for example. Great joy to. What may find in pakistan providing payment gateway security news, as close to any query or. How does Start Coding Programming for Beginners Learn Coding. It was significantly as either running on every developer you buy, as well from your html tools for writing for free to add or handling is. Code is free pattern available rate your favorite platform Linux Mac OSX and Windows Categories in power with TextEdit Text Editor Compare. How do I steer to code? Have to inflict pain on this plot drawn so depending on your writing source code. Text but it does not suitable for adjusting multiple computers users. The wheat free if paid text editors for the Mac iMore. After logging in free with google translate into full member of useful is a file in a comment is ideal environment, where their personal taste.
    [Show full text]
  • KEA DHCP Server"
    Kea Webinar Installation and Configuration Carsten Strotmann 30th September 2020 https://www.isc.org All content © 2020 Internet Systems Consortium, Inc. 1 Welcome •Welcome to part two of our webinar series "the KEA DHCP Server" All content © 2020 Internet Systems Consortium, Inc. 2 About this Webinar •What is Kea DHCP •Installation, Platform and Requirements •Kea Hooks •Kea basic configuration •Testing the Kea DHCP server function •Operating the Kea server •Kea DHCPv6 All content © 2020 Internet Systems Consortium, Inc. 3 What is Kea DHCP? All content © 2020 Internet Systems Consortium, Inc. 4 Kea DHCP (1/2) •a modern DHCPv4 and DHCPv6 Server •Open Source (MPL License) •JSON/REST API •modular design •high performance ( > 1000 leases/seconds with SQL database backend) •failover via SQL DB or High-Availability-Hook •Host reservation support All content © 2020 Internet Systems Consortium, Inc. 5 Kea DHCP (2/2) •support for DHCPv6 prefix delegation •dynamic reconfiguration •dynamic DNS updates •SQL database backend (MySQL / PostgreSQL / Cassandra …) •Statistics module •PXE Boot support All content © 2020 Internet Systems Consortium, Inc. 6 Platforms and Requirements All content © 2020 Internet Systems Consortium, Inc. 7 Kea Platforms (1/2) •Kea is officially supported on •CentOS Linux •Fedora Linux •Ubuntu Linux •Debian Linux •FreeBSD Unix All content © 2020 Internet Systems Consortium, Inc. 8 Kea Platforms (2/2) •Kea is also know to work on •MacOS X •Alpine Linux •OpenBSD Unix •Kea currently does not work on Windows operating systems All content © 2020 Internet Systems Consortium, Inc. 9 Kea DHCP requirements •Kea requires to run •a cryptographic library: Botan or OpenSSL •log4cplus C++ logging library •the Boost C++ system library •optional components •a database such as MySQL, PostgreSQL or Cassandra (CQL) •FreeRadius-client library for Radius support •Sysrepo for NETCONF support •see the Kea DHCP documentation for detailed information on software dependencies All content © 2020 Internet Systems Consortium, Inc.
    [Show full text]
  • Vysoké Učení Technické V Brně Doplněk Visual Studio
    VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ FACULTY OF INFORMATION TECHNOLOGY ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA DOPLNĚK VISUAL STUDIO CODE PRO KONTROLU PRAVOPISU VISUAL STUDIO CODE SPELL CHECKER EXTENSION BAKALÁŘSKÁ PRÁCE BACHELOR’S THESIS AUTOR PRÁCE DENIS GERGURI AUTHOR VEDOUCÍ PRÁCE Ing. PAVEL SVOBODA, SUPERVISOR BRNO 2017 Zadán í bakalářs ké práce/20037/201 6hgergu01 Vysoké uČenítechnické v Brně - Fakulta informačních technologií Ústav poČÍtaČovégrafiky a multimédií Akademický rok 2ot6/2ot7 Zadání bakalářské práce Řešitel: Gerguri Denis Obor: Informační technologie Téma: Doplněk Visua! Studio Code pro kontrolu pravopisu Visua! Studio Code Spell Checker Extension Kategorie : Uživatelská rozhraní Pokyny: 1. Prostudujte rozhraní VS Code pro psaní doplňkŮ 2. Vytvořte přehled dostupných knihoven pro kontrolu pravopisu (aspell, hunspell) 3. Vyberte jednu z knihoven a implementujte jednoduchou kontrolu pravopisu 4. Implementujte moŽnost nekontrolovat klíčová slova jazyka (C++,Latex, popřípadě dle zvážení) 5. Vytvořte stručnou dokumentaci a návod jak doplněk používat 6. Zamyslete se nad nedostatky a možnostijejich řešení Literatura: o https ://code. visu a lstud io. com/Docs/extensions/overview o https : / / 9 ith u b. com/ M icrosoft/vscod e-spel l -ch eck o https ://9 ith u b. com/Jaso n - Rev/vscode-spel l -checker Pro udělení zápočtu za první semestr je požadováno: o první dva body zadání Podrobné závazné pokyny pro vypracování bakalářské práce naleznete na adrese http : //www, fit. vutbr,cz/ inf o / szz/ Technická zpráva bakalářské práce musí obsahovat formulaci cíle, charakteristiku současného stavu, teoretická a odborná východiska řešených problémŮ a specifikaci etap (2O až3Oo/o celkového rozsahu technické zprávy).
    [Show full text]
  • Opinionated.Pdf
    Opinionated Adrian Kosmaczewski 2021-03-05 Programming is a very opinionated activity. Unfortunately, those opinions are seldom based on facts, and most of them are futile, and lead to stupid arguments on Reddit or Hacker News or the comments section of a blog. Most of your conversations with fellow programmers will most probably revolve around one of the subjects enumerated below. Classical example, the choice of the programming language. Most developers develop a religious attachment to their favourite programming language, and saldly are never able to go past this rather childish feeling. It is like refusing to leave your parents’ home and move on with your life once you have the means to. The truth is, programming languages are just a tool. JavaScript is great at some things, just like C++ is great at others. In some cases you cannot use JavaScript, and you have to use C++; sometimes it is the opposite situation. In some cases you can use several different programming languages to solve the same problem, in more or less the same amount of time, for example Ruby vs. Python. You might like or not the fact that Python uses indentation with specific semantics, but you cannot deny the power of its libraries. Similarly, Ruby is very approachable, but you might dislike that it does not feel fast or efficient. The truth is that the choice of a particular language is an opinion; and as such, it does not matter. Seriously. Choose any language you want, as long as you and your team are comfortable with it, it has some decent prebuilt libraries ready to use, and it should work out just fine.
    [Show full text]
  • Technical Computing on the OS … That Is Not Linux! Or How to Leverage Everything You‟Ve Learned, on a Windows Box As Well
    Tools of the trade: Technical Computing on the OS … that is not Linux! Or how to leverage everything you‟ve learned, on a Windows box as well Sean Mortazavi & Felipe Ayora Typical situation with TC/HPC folks Why I have a Windows box How I use it It was in the office when I joined Outlook / Email IT forced me PowerPoint I couldn't afford a Mac Excel Because I LIKE Windows! Gaming It's the best gaming machine Technical/Scientific computing Note: Stats completely made up! The general impression “Enterprise community” “Hacker community” Guys in suits Guys in jeans Word, Excel, Outlook Emacs, Python, gmail Run prepackaged stuff Builds/runs OSS stuff Common complaints about Windows • I have a Windows box, but Windows … • Is hard to learn… • Doesn‟t have a good shell • Doesn‟t have my favorite editor • Doesn‟t have my favorite IDE • Doesn‟t have my favorite compiler or libraries • Locks me in • Doesn‟t play well with OSS • …. • In summary: (More like ) My hope … • I have a Windows box, and Windows … • Is easy to learn… • Has excellent shells • Has my favorite editor • Supports my favorite IDE • Supports my compilers and libraries • Does not lock me in • Plays well with OSS • …. • In summary: ( or at least ) How? • Recreating a Unix like veneer over windows to minimize your learning curve • Leverage your investment in know how & code • Showing what key codes already run natively on windows just as well • Kicking the dev tires using cross plat languages Objective is to: Help you ADD to your toolbox, not take anything away from it! At a high level… • Cygwin • SUA • Windowing systems “The Unix look & feel” • Standalone shell/utils • IDE‟s • Editors General purpose development • Compilers / languages / Tools • make • Libraries • CAS environments Dedicated CAS / IDE‟s And if there is time, a couple of demos… Cygwin • What is it? • A Unix like environment for Windows.
    [Show full text]
  • Skill Language Server
    Institute of Software Technology University of Stuttgart Universitätsstraße 38 D–70569 Stuttgart Bachelorarbeit SKilL Language Server Johannes Schäufele Course of Study: Informatik Examiner: Prof. Dr. Erhard Plödereder Supervisor: Dipl.-Inf. Felix Krause, Dr. Timm Felden Commenced: April 9, 2018 Completed: October 9, 2018 Abstract Language analysis features offered by integrated development environments (IDEs) can ease and accelerate the task of writing code, but are often not available for domain-specific languages. The Language Server Protocol (LSP) aims to solve this problem by allowing language servers that support these features for a certain programming language to be used portably in a number of IDEs. A language server for Serialization Killer Language (SKilL) was implemented that supports a multitude of language features including automatic formatting, completion suggestions, and display of references and documentation associated with symbols. This thesis presents how the language server was implemented and discusses associated challenges that arose due to the nature of the SKilL and LSP specification. 3 Kurzfassung Sprachunterstützungen von IDEs können Programmierern ihre Arbeit deutlich erleichtern, jedoch werden diese oft nicht für domänenspezifische Sprachen unterstützt. Das LSP erlaubt Unterstützun- gen für eine Sprache durch einen Language Server zu implementieren, der anschließend in einer Vielzahl an IDEs nutzbar ist. Es wurde ein Language Server für SKilL implementiert, mit dem unter anderem Code automatisch formatiert, Vervollständigungen vorgeschlagen sowie Verweise und Dokumentation angezeigt werden kann. In dieser Ausarbeitung wird das Vorgehen und dabei aufgekommene Herausforderungen durch die SKilL und LSP Spezifikation diskutiert. 4 Contents 1 Introduction 7 1.1 Motivation ...................................... 7 1.2 Outline ....................................... 7 2 The Language Server Protocol 9 2.1 Overview .....................................
    [Show full text]
  • Requirements for Web Developers and Web Commissioners in Ubiquitous
    Requirements for web developers and web commissioners in ubiquitous Web 2.0 design and development Deliverable 3.2 :: Public Keywords: web design and development, Web 2.0, accessibility, disabled web users, older web users Inclusive Future Internet Web Services Requirements for web developers and web commissioners in ubiquitous Web 2.0 design and development I2Web project (Grant no.: 257623) Table of Contents Glossary of abbreviations ........................................................................................................... 6 Executive Summary .................................................................................................................... 7 1 Introduction ...................................................................................................................... 12 1.1 Terminology ............................................................................................................. 13 2 Requirements for Web commissioners ............................................................................ 15 2.1 Introduction .............................................................................................................. 15 2.2 Previous work ........................................................................................................... 15 2.3 Method ..................................................................................................................... 17 2.3.1 Participants ..........................................................................................................
    [Show full text]
  • Top 10 Free Text Editors for Macos 10.14
    From a general perspective, while looking at text editors for macOS 10.14, we are not specifcally referring to text as we have it in document text. A large chunk of text editors on the market, particularly those that ofer greater capabilities, will turn out to also come with extremely robust features for code compiling. This is where their true potential lies. Today, we will look at 10 best free text editors on macOS 10.14 Top 10 Free Text Editors for macOS 10.14 1. Brackets This is a free text editor macOS 10.14 that is open source and maintained by Adobe Systems — one of the major companies in the industry. One of the outstanding features of Brackets is its beautiful interface. Its unique Extract ofering lets you grab font, gradients measurements, and so on from a PSD fle into a CSS that is clean and ready for use on the web. Pros It comes with extension support which contains a huge and growing library Brackets has inline editors and previews Cons It is slow Brackets still does not have certain elementary text editor commands Its updater is problematic Free Download Brackets 2. TextWrangler Developed by Bare Bones, TextWrangler is another best text editor on macOS 10.14. This tool can be regarded as a lightweight version of BBEdit, also designed by Bare Bones. It has all the features needed by hardcore developers to carry out operations in specifc columns in a CSV, or in a server admin for scriptwriting. Pros It ofers basic text editing as well as manipulations TextWrangler is a free yet ideal alternative to BBEdit It has an inbuilt FTP or STFP browser It is robust and fast to start up Cons It isn’t maintained any longer Free Download TextWrangler 3.
    [Show full text]
  • Thematic Cycle 2: Software Development Table of Contents
    THEMATIC CYCLE 2: SOFTWARE DEVELOPMENT THEMATIC CYCLE 2: SOFTWARE DEVELOPMENT TABLE OF CONTENTS 1. SDLC (software development life cycle) tutorial: what is, phases, model -------------------- 4 What is Software Development Life Cycle (SDLC)? --------------------------------------------------- 4 A typical Software Development Life Cycle (SDLC) consists of the following phases: -------- 4 Types of Software Development Life Cycle Models: ------------------------------------------------- 6 2. What is HTML? ----------------------------------------------------------------------------------------------- 7 HTML is the standard markup language for creating Web pages. -------------------------------- 7 Example of a Simple HTML Document---------------------------------------------------------------- 7 Exercise: learn html using notepad or textedit ---------------------------------------------------- 11 Example: ---------------------------------------------------------------------------------------------------- 13 The <!DOCTYPE> Declaration explained ------------------------------------------------------------ 13 HTML Headings ---------------------------------------------------------------------------------------------- 13 Example: ---------------------------------------------------------------------------------------------------- 13 HTML Paragraphs ------------------------------------------------------------------------------------------- 14 Example: ----------------------------------------------------------------------------------------------------
    [Show full text]
  • Subversion and Textmate: Making Collaboration Easier for LATEX Users
    The PracTEX Journal, 2007, No. 3 Article revision 2007/08/17 Subversion and TextMate: Making ∗ collaboration easier for LATEX users Charilaos Skiadas, Thomas Kjosmoen, and Mark Eli Kalderon Abstract This article focuses on the Subversion version control system, and in partic- ular its integration into the TextMate text editor. TextMate is a text editor, for the Mac OS X operating system, that has excellent support for working with LATEX documents and projects, and its seamless Subversion integration makes it very easy to add version control to your workflow. Version control systems have been used by computer programmers for many years for work on projects involving multiple authors. They have been invaluable in keeping track of the contributions of each party to the project, the changes that took place and when they happened, and so on. Subversion is one of the most popular version control systems today, and it is integrated into many text editors and online collaboration sites. 1 Introduction We often have to work on LATEX documents with other people. There are a number of problems with such a collaboration: – We need to exchange files with our collaborators and keep track of the date of each file, to avoid working on old files. – We need to communicate with our collaborators what changes we have made to the current draft. – We would like to keep a track record of all changes made to the document, and which person made each change, for future reference. – We need some system to keep backups of the files, to avoid data loss. – We may need to work on the same files on multiple computers, for instance at home and at work.
    [Show full text]