Sistema De Bajo Coste Mediante Visión Computerizada De Monitorización De Tráfico Puntual

Total Page:16

File Type:pdf, Size:1020Kb

Sistema De Bajo Coste Mediante Visión Computerizada De Monitorización De Tráfico Puntual UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA DE SISTEMAS INFORMÁTICOS Grado en Ingeniería de Computadores PROYECTO DE FIN DE GRADO Sistema de bajo coste mediante visión computerizada de monitorización de tráfico puntual Autor Iván Arranz Martín Tutor Vicente A. García Alcántara Agradecimientos A mis padres, por su apoyo durante todos estos años, que han sido muchos. A mi hermano, por estar siempre ahí para preparar un cachi mientras yo estaba trabajando. A mi familia, compañeros y amigos, especialmente a Javi, por su apoyo y sus bromas. Y por último, especialmente a Victoria, por ser el pilar que me ha hecho aguantar el último empujón. Sistema de bajo coste mediante visión computerizada de monitorización de tráfico puntual Índice Objetivo .................................................................................................................. vii Resumen .................................................................................................................. ix Abstract ................................................................................................................... xi 1. Introducción ..................................................................................................... 1 2. Metodología de desarrollo .............................................................................. 3 2.1. ¿Qué es una metodología de desarrollo? ................................................ 3 2.2. ¿Qué es una metodología ágil? ................................................................ 4 2.3. eXtreme Programming ............................................................................. 5 2.4. Aplicando la metodología ......................................................................... 8 3. Requisito 1 ..................................................................................................... 11 3.1. Elección de biblioteca de visión artificial ............................................... 11 3.2. ¿Qué plataforma hardware utilizar? ...................................................... 15 3.3. Sistema Operativo .................................................................................. 22 3.4. Herramientas .......................................................................................... 24 3.5. Hardware ................................................................................................ 24 3.6. Software ................................................................................................. 25 4. Requisito 2 ..................................................................................................... 29 4.1. Instalación de los OS ............................................................................... 29 4.2. Instalación de OpenCV ........................................................................... 42 5. Requisitos 3 y 4 .............................................................................................. 49 5.1. Diferencias entre tracking y detección .................................................. 49 5.2. Algoritmos de tracking. .......................................................................... 51 5.3. Explicación del método utilizado............................................................ 54 5.4. Comunicación entre OpenCV y Qt.......................................................... 56 6. Presupuesto del proyecto. ............................................................................. 59 i Índice 7. Impacto medioambiental ............................................................................... 61 8. Aspectos éticos y legales ................................................................................ 63 Conclusiones .......................................................................................................... 65 Líneas Futuras ........................................................................................................ 67 Apéndice: Referencias ........................................................................................... 83 ii Sistema de bajo coste mediante visión computerizada de monitorización de tráfico puntual Índice de figuras Figura 1 Iteration plan de eXtreme Programming. Imagen extraída del blog User Agile Development [UAD, www] ............................................................................. 8 Figura 4 Logo de OpenCV ...................................................................................... 11 Figura 5 Logo de SimpleCV .................................................................................... 12 Figura 6 Logo de Halcon ........................................................................................ 13 Figura 7 Logo de Matrox Imaging Library ............................................................. 13 Figura 8 Logo de Adaptive Vision .......................................................................... 14 Figura 9 Arduino UNO Rev3 .................................................................................. 15 Figura 10 SainSmart UNO Rev 3 ............................................................................ 16 Figura 11 MaxBlitz MBZ Pro WiFi .......................................................................... 17 Figura 12 ASUS Tinker Board ................................................................................. 18 Figura 13 Intel Galileo ........................................................................................... 19 Figura 14 Raspberry Pi .......................................................................................... 19 Figura 15 Orange Pi PC 2 ....................................................................................... 20 Figura 16 Intel Joule .............................................................................................. 20 Figura 18 Raspberry Pi Camera Board rev 1.3 ...................................................... 25 Figura 19 Logo de FFmpeg .................................................................................... 26 Figura 20 Logo de Qt ............................................................................................. 26 Figura 21 Logo de Ubuntu ..................................................................................... 27 Figura 22 Logo de Oracle VM Virtualbox .............................................................. 27 Figura 23 Logo de MobaXterm .............................................................................. 28 Figura 25 Paso 1 de la instalación del OS .............................................................. 29 Figura 26 Paso 2 de la instalación del OS .............................................................. 30 Figura 27 Paso 3 de la instalación del OS .............................................................. 31 Figura 28 Explicación de la configuración de la máquina virtual .......................... 32 Figura 29 Paso 4 instalación del OS....................................................................... 32 Figura 30 Paso 5 de la instalación del OS .............................................................. 33 Figura 31 Paso 6 de la instalación del OS .............................................................. 34 Figura 32 Paso 7 de la instalación del OS .............................................................. 35 iii Índice de figuras Figura 33 Paso 8 de la instalación del OS .............................................................. 37 Figura 34 Paso 9 de la instalación del OS .............................................................. 37 Figura 35 Paso 10 de la instalación del OS ............................................................ 38 Figura 36 Pantalla de descarga de NOOBS ............................................................ 39 Figura 37 Pantalla de formateo de la tarjeta SD ................................................... 40 Figura 38 Comando actualización librerías ............................................................ 42 Figura 39 Comando actualización del OS .............................................................. 43 Figura 40 Instalación de las librerías necesarias para OpenCV ............................. 44 Figura 41 Creación del directorio de OpenCV y extracción ................................... 45 Figura 42 Comando instalación de OpenCV .......................................................... 46 Figura 43 Comando para unir las librerías de OpenCV al OS ................................ 47 Figura 44 Código para la importación de librerías en Qt ...................................... 47 Figura 45 Distancia entre líneas discontinuas en carretera .................................. 55 iv Sistema de bajo coste mediante visión computerizada de monitorización de tráfico puntual Índice de tablas Tabla 1Tabla de requisitos ...................................................................................... 9 Tabla 2Tabla de tareas del requisito 1 .................................................................. 11 Tabla 3 Tabla comparativa de SBC ........................................................................ 22 Tabla 4 Tabla de tareas del requisito 2 ................................................................. 29 Tabla 5 Tabla de tareas de los requisitos 3 y 4 ..................................................... 49 Tabla 6 Tabla de gastos ......................................................................................... 59 v Sistema de bajo coste mediante visión computerizada de monitorización de tráfico
Recommended publications
  • LAB-Manual Iot for Intel Edison
    Evaluation of Intel Architecture An Experimental Manual for Computer Architecture, Advanced Microprocessor, System On Chip (SoC) and Compiler Design In association with Intel Collaboration Program Designed by: Zeenat Shareef, MTech (Mobile and Pervasive Computing) Under the guidance of: Dr. S.R.N Reddy, HOD and Associate Professor, CSE Mr. Naveen , Mr. Sumit Verma, Intel Department of Computer Science Indira Gandhi Delhi Technical University for Women Kashmere Gate, Delhi-110006 LIST OF EXPERIMENTS EXP. No Description of Experiment 1. To familiarize with Intel Edison. 2. Write the steps to install the drivers and IDE for Intel Edison 3. Write the steps to configure Intel Edison and enable the WIFI module 4. To enable the Bluetooth module in Intel Edison and connect with a device. 5. Write the steps to blink the LED on the Intel Edison using Eclipse CDT remote explorer(WiFi). EXPERIMENT 1 AIM: To familiarize with Intel Edison. INTEL EDISON- A SOC based on Intel Atom The Intel Edison compute module is designed to lower the barriers to entry for anyone prototyping and producing IoT and wearable computing products. Intel Edison contains the core system processing and connectivity elements: processor, PMIC, RAM, eMMC, and Wi- Fi/BT. Intel Edison is a module that interfaces with end-user systems via a 70-pin connector. The Intel Edison compute module does not include any video input or output interfaces (MIPI CSI, MIPI DSI, HDMI, etc.). Internal image processing and graphics processing cores are disabled (ISP, PowerVR, VED, VEC, VSP, etc.). Intel Edison relies on the end-user support of input power.
    [Show full text]
  • Introduction to Microcontrollers 9/16/2017
    Introduction to Microcontrollers 9/16/2017 Introduction to Microcontrollers June 2017 Scott A. Theis — W2LW Rev 5 (08/02/2017) What’s it all about • How to get started • What are some of the common controller options • General introduction to terms and types • Input and Output • Information on getting started Sampling of Microcontrollers • tinyAVR — As little as 6 pins, over 1MHz • PICAXE — As little as 8 pins, up to 64MHz • Ardunio (ATMega) — Standalone or on board, 16+MHz • Raspberry Pi — Single-Board Computer, up to (and over) 1GHz • There are dozens of common microcontrollers Propeller BasicStamp 8051 MIP • There are a number of single-board computers: Beagle Bone NetDuino Intel Galileo ASUS Tinker Scott A. Theis, W2LW 1 Introduction to Microcontrollers 9/16/2017 Focus • Arduino and PICAXE— Microcontroller: • Well suited for specific application • Code is lightweight (so is memory) • Does not have an operating system per se • Raspberry Pi — Single-Board Computer: • Really a small computer with GPIO pins and lots of interface logic • Can be used for a wide spectrum of tasks • Lots of options and compute power Covering…. • Introduction, Jargon and Background • General Purpose Input and Output (GPIO) • Integrated Development Environment (IDE) • Some Examples Introduction, Background and Jargon Scott A. Theis, W2LW 2 Introduction to Microcontrollers 9/16/2017 The Arduino • Created as a simple, open source, easy to use platform • Developed in 2003 as a less costly replacement to the BASIC Stamp • Support has grown dramatically in the past
    [Show full text]
  • Building a Datacenter with ARM Devices
    Building a Datacenter with ARM Devices Taylor Chien1 1SUNY Polytechnic Institute ABSTRACT METHODS THE CASE CURRENT RESULTS The ARM CPU is becoming more prevalent as devices are shrinking and Physical Custom Enclosure Operating Systems become embedded in everything from medical devices to toasters. Build a fully operational environment out of commodity ARM devices using Designed in QCAD and laser cut on hardboard by Ponoko Multiple issues exist with both Armbian and Raspbian, including four However, Linux for ARM is still in the very early stages of release, with SBCs, Development Boards, or other ARM-based systems Design was originally only for the Raspberry Pis, Orange Pi Ones, Udoo critical issues that would prevent them from being used in a datacenter many different issues, challenges, and shortcomings. Have dedicated hard drives and power system for mass storage, including Quads, PINE64, and Cubieboard 3 multiple drives for GlusterFS operation, and an Archive disk for backups and Issue OS In order to test what level of service commodity ARM devices have, I Each device sits on a tray which can be slid in and out at will rarely-used storage Kernel and uboot are not linked together after a Armbian decided to build a small data center with these devices. This included Cable management and cooling are on the back for easy access Build a case for all of these devices that will protect them from short circuits version update building services usually found in large businesses, such as LDAP, DNS, Designed to be solid and not collapse under its own weight and dust Operating system always performs DHCP request Raspbian Mail, and certain web applications such as Roundcube webmail, Have devices hooked up to a UPS for power safety Design Flaws Allwinner CPUs crash randomly when under high Armbian ownCloud storage, and Drupal content management.
    [Show full text]
  • Ethernet Access and Remote Control with Intel Galileo Prepared By
    Ethernet Access and Remote Control with Intel Galileo Prepared by Derrick Anang For EECE456 Embedded Systems Design Lab Instructor: Dr. Charles Kim Electrical and Computer Engineering Howard University Class Web: www.mwftr.com/emblab.html 1 INTEL® GALILEO ∗ Intel® Galileo Gen2 Board A microcontroller board based on the Intel® Quark SoC X1000 application processor (a 32-bit Intel® Pentium brand system on a chip). The 32-bit processor can run at up to 400MHz and has a 512KB SRAM built in. This board functions as a fully featured, cost-effective development platform which complements with the Arduino software to provide an advanced compute functionality. It basically serves as an interface between the Arduino Software (IDE) and the Grove system components. ∗ It comes with an on-board 10/100 Mb/s Ethernet connector port. ∗ This on-board Ethernet port is accessible via Linux and Arduino IDE using the Ethernet Library. 2 GETTING STARTED HARDWARE COMPONENTS ∗ Intel® Galileo Gen 2 Board ∗ Micro-SD Card ∗ USB to 6-pin FTDI Serial Cable ∗ Ethernet Cable ∗ Grove Starter Kit ∗ An Ethernet Switch or Wi-Fi Router with a free Ethernet port (connects Galileo board to the Local Access Network (LAN) being used) ∗ Micro B to Type A USB Cable ∗ 12 VDC, 1.5A Power Supply 3 SOFTWARE COMPONENTS ∗ Arduino Integrated Development Environment (IDE) for Galileo ∗ Intel XDK IoT Edition (Download link: http://software.intel.com/en- us/html5/xdk-iot) ∗ Terminal Emulator e.g. PuTTy (http://www.putty.org/)or Bonjour Browser for Mac OS, link: (http://www.tildesoft.com/files/BonjourBrowser.dmg)
    [Show full text]
  • Erfahrungen Mit Dem Cubietruck (Cubieboard 3)
    Erfahrungen CubieTruck 03.03.17 Seite 1 Erfahrungen mit dem CubieTruck (Cubieboard 3) Dieter Drewanz Dokument begonnen: April 2016 Dokument letzter Stand: Februar 2017 Kurzfassung: Der Text umfaût die Vorbereitung, Erstinbetriebnahme, Installation weiterer praktischer Pakete, Anwendung der Pakete/Anwendungen und Installation von Treibern. Illustration 1: CubieTruck in Work Erfahrungen CubieTruck 03.03.17 Seite 2 Inhaltsverzeichnis 1 Einleitung.........................................................................................................................................6 1.1 Warum das entwurfsartige Dokument erstellt wurde...............................................................6 1.2 Wie die Wahl auf den Cubietruck fiel......................................................................................6 1.3 Zu den Auflistungen der Befehle..............................................................................................7 2 Die Erstinbetriebnahme....................................................................................................................7 2.1 Der Zusammenbau....................................................................................................................7 2.2 Der erste Start...........................................................................................................................8 2.2.1 Start des Androids auf internen Flash-Speicher (NAND).................................................8 2.2.2 Vorbereitungen zum Start eines Linux von der SD-Karte................................................9
    [Show full text]
  • An Efficient Solution of Technological Thrust for Iot in COVID-19
    International Journal of Engineering in Computer Science 2020; 2(2): 30-33 E-ISSN: 2663-3590 P-ISSN: 2663-3582 IJECS 2020; 2(2): 30-33 An efficient solution of technological thrust for IoT in Received: 22-05-2020 Accepted: 24-06-2020 COVID-19 era Rakesh Kumar RNTU, Bhopal, Rakesh Kumar, Pratishtha Bowade and Rajiv Saxena Madhya Pradesh, India Pratishtha Bowade Abstract SIRT, Bhopal, The stringent connectedness between the digital and physical world is referred to as IoT (Internet of Madhya Pradesh, India Things). In the COVID-19 era, technology is being implemented in a rigorous manner to handle and balance the situation. Internet of Things (IoT) technology is playing a great role in all the aspects. In Rajiv Saxena this research paper researcher compare four hardware platforms and concluded the best suitability of SIRT, Bhopal, the hardware platform. Researchers provide the solution to the technological thrust for the IoT in terms Madhya Pradesh, India of the hardware platform. Keywords: internet of things, COVID-19, technological thrust, hardware platforms Introduction The term "Internet of Things" is used as a keyword to cover various aspects related to Internet and Web expansion in the physical space, through the widespread deployment of distributed geographical devices with integrated use of Internet-Things that foresees the future where digital and physical objects can be linked, through relevant knowledge and [1] communication technologies, enabling a whole new category of applications and services . The Internet of Things (IoT) is one of the most promising research topics in engineering and business. It is believed that the IoT will revolutionize the way people live in the near future by connecting ordinary things with each other remotely and establishing channels of communication between them.
    [Show full text]
  • Galileo Datasheet
    Galileo Datasheet Galileo Front Galileo Back Overview Galileo is a microcontroller board based on the Intel® Quark SoC X1000 Application Processor, a 32-bit Intel Pentium-class system on a chip (datasheet). It is the first board based on Intel® architecture designed to be hardware and software pin-compatible with Arduino shields designed for the Uno R3. Digital pins 0 to 13 (and the adjacent AREF and GND pins), Analog inputs 0 to 5, the power header, ICSP header, and the UART port pins (0 and 1), are all in the same locations as on the Arduino Uno R3. This is also known as the Arduino 1.0 pinout. Order Number: 329681-003US Galileo is designed to support shields that operate at either 3.3V or 5V. The core operating voltage of Galileo is 3.3V. However, a jumper on the board enables voltage translation to 5V at the I/O pins. This provides support for 5V Uno shields and is the default behavior. By switching the jumper position, the voltage translation can be disabled to provide 3.3V operation at the I/O pins. Of course, the Galileo board is also SW compatible with the Arduino SW Development Environment, which makes usability and introduction a snap. In addition to Arduino HW and SW compatibility, the Galileo board has several PC industry standard I/O ports and features to expand native usage and capabilities beyond the Arduino shield ecosystem. A full sized mini-PCI Express* slot, 100Mb Ethernet port, Micro-SD slot, RS-232 serial port, USB Host port, USB Client port, and 8MByte NOR flash come standard on the board.
    [Show full text]
  • An Open Source Tool for Iot Development What Is the Product
    An Open Source Tool for IoT Development What is the product 2 The technology: Hardware ▪ Before Raspberry Pi Currently experiencing rapid growth 7,000 ▪ expensive embedded devices 6,000 ▪ few devices 5,000 4,000 ▪ Raspberry Pi changed 3,000 the game 2,000 1,000 0 2014 2015 2016 Number of connected devices (millions) 3 Our journey: The vision ▪ Goal: ▪ A new approach towards engineering ▪ IoT accessible to everyone Create, modify, tweak, customize current solutions to your needs and use cases 4 The IoT stack The problem • Arduino (Uno) does well on Level 2 but does not follow the upper stack • Raspberry Pi follows the full stack, but lacks the benefits of Arduino 5 Microcontrollers vs Embedded Boards ▪ Arduino Yun preferred to Raspberry Pi ▪ The fault ▪ development tools ▪ accessibility Most of the projects are not IoT projects, they fall into electronics or programming 6 The solution ▪ Transfer the accessibility typical of Arduino to Raspberry Pi Ease to use Direct access High Use from productivity anywhere 7 Our tools for IoT : Wyliodrin ▪ Since 2013 ▪ Fully Web-based ▪ Complex IDE ▪ Open Source components ▪ Free for basic use ▪ Supports various hardware: Arduino Yun, Raspberry Pi, Intel® Galileo, Intel® Edison, UDOO, BeagleBone Black 8 Wyliodrin STUDIO ▪ Open Source ▪ Available for ▪ Arduino Yun ▪ UDOO Neo ▪ Raspberry Pi ▪ BeagleBone Black ▪ Works locally 9 Wyliodrin STUDIO Library manager Ethernet / WiFi Run project connection manager Project Manager Connected board Task manager Code Close board connection Show / hide console Board
    [Show full text]
  • Orange Pi R1 User Manual
    Orange Pi Manual Copy right by Shenzhen Xunlong Software Co., Ltd Orange Pi R1 User Manual V1.1 www.orangepi.org I www.xunlong.tv Orange Pi Manual Copy right by Shenzhen Xunlong Software Co., Ltd Contents I. Orange Pi R1 Introduction..................................................................................................................... 1 1. What is Orange Pi R1?..............................................................................................................1 2. What can I do with Orange Pi R1?........................................................................................... 1 3. Whom is it for?......................................................................................................................... 1 4. Hardware specification of Orange Pi R1.................................................................................. 1 5. GPIO Specifications..................................................................................................................3 II. Using Method Introduction...................................................................................................................5 1. Step 1: Prepare Accessories Needed.........................................................................................5 2. Step 2: Prepare a TF Card.........................................................................................................6 3. Step 3: Boot your Orange Pi..................................................................................................
    [Show full text]
  • Iot Configuration for Industrial and Domestic Water Saving Monitoring
    ARISTOTLE UNIVERSITY OF THESSALONÍKI COMPUTER SCIENCE DEPARTMENT IoT Configuration for Industrial and Domestic Water Saving Monitoring Iraklis Moutidis Advisor: Ioannis Stamelos 1 Abstract The main objective of the thesis is to implement a water flow monitoring system, using a water flow sensor, the Arduino prototyping board and the Raspberry Pi board. The system should be efficient regarding the electricity consumption and flexible regarding the water installation it will be placed. The information obtained from the sensor(s) is uploaded to a cloud platform (Thingspeak.com) and also locally stored on the Raspberry Pi, which is used as a server for any boards like the Arduino that control a sensor. The data can be further processed to obtain more information about the water consumption of the installation. 2 Contents 1. Introduction………………………..………………………………………..………..……6 1.1 Research Background……………………………………………………………….6 1.2 Problem Statement…………………………………………………………………..7 1.3 Objective of the Study……………………………………………………………….8 1.4 Scope of the Study…………………………………………………………………..8 2. Wireless Sensor Networks………….………………………..……………………….9 2.1 Introduction…….…...………………………………………………………………...9 2.2 Types of Wireless Sensor Networks……………………………………………...10 2.3 Applications………………………………………………………………………….12 2.3.1 Military Applications…….…………………………………………………13 2.3.2 Environmental Monitoring………………………………………………..13 2.3.3 Inventory Monitoring……………………………………………………...15 2.3.4 Health Applications………………………………………………………..16 2.4 Internal Sensor System……………..……………………………………………..16
    [Show full text]
  • ODROID Magazine
    I/O Shield access • Install and learn the basics of Rebol now! Year One Issue #2 Feb 2014 ODROIDMagazine Turn your ODROID into a: GIANT TABLET And create the ultimate Android experience! High Performance computing at home • Meet an Odroidian Creation and fine granular control Mauro Ribeiro, Senior Software engineer • Estimating Radio net interference: Using Java mutithreading • Linux Gaming - emulators • Start programming right away! • The art of multi boxing • USB Gadget drivers • 811.02ac router with odroid XU Dominate your device ports to do everything Get up to 433mbit/sec EDITORIAL service to the world-wide ODROID and Open Source communities, Hard Kernel is proud to present its newest contribution to ARM technology: A ODROID Magazine, a free monthly PDF e-zine! This cutting-edge online publication brings you the latest ODROID news, as well as featured articles from the expert community that has grown around the amaz- ing ODROID family of micro-powerhouse computers. Intended for all levels of expertise from beginner to guru, ODROID Magazine features definitive guides for new owners, with easy-to-follow steps in setting up your ODROID, installing operating systems and software, and troubleshooting common issues. For more technical users, each month will feature expert tips, hacker discus- sions, cutting-edge projects, and technical articles to explore new ways of making your ODROID even more versatile. Hard Kernel’s ODROID Magazine is an ideal opportunity for our community to come together to share and contribute articles, so that everyone can be successful with their ODROID. Each month, a series of article topics will be posted for consideration, and all community members are encouraged to send submissions in exchange for monthly rewards for those selected for publication.
    [Show full text]
  • Lesson 7 Programming Embedded Galileo, Raspberry Pi, Beaglebone and Mbed Platforms
    Lesson 7 Programming Embedded Galileo, Raspberry Pi, BeagleBone and mBed Platforms Chapter-9 L07: "Internet of Things " , Raj Kamal, 2017 1 Publs.: McGraw-Hill Education Development Of Programs For Prototype Development Platforms • Done using an IDE • The cycles of edit-test-debug used • When the simulated results show the successful test runs of the programs, then program instructions embedded Chapter-9 L07: "Internet of Things " , Raj Kamal, 2017 2 Publs.: McGraw-Hill Education Intel Galileo IDE for Windows • Downloadable from Galileo website • Intel Galileo and Arduino combined features • Similarity of IDE with Arduino • Compatibility: Compatible with Arduino shields and similar ICSP header, serial port, • 14 digital I/O pins and 6 analog inputs Chapter-9 L07: "Internet of Things " , Raj Kamal, 2017 3 Publs.: McGraw-Hill Education Intel Galileo IDE for Windows • Ethernet Library: Compatible in usability with Arduino Ethernet library and can connect with HTTP connection using standard WebClient example • PCI Express Mini Cards: can connect to GSM, Bluetooth, WiFi cards using Arduino’s WiFi library. • USB Host Port: USB is dedicated port and usable with Arduino USB Host library and • keyboard or mouse connection to computers. Chapter-9 L07: "Internet of Things " , Raj Kamal, 2017 4 Publs.: McGraw-Hill Education Intel Galileo IDE for Windows • TWI/I2C, SPI Support, Serial Connectivity and MicroSD Support • Compatible with standard Arduino libraries. • Linux distribution running on board: Just 8 MB flash enables node.js (for web projects)
    [Show full text]