Kdevelop Tour D'horizon Et Retour D'expériences (C++)

Total Page:16

File Type:pdf, Size:1020Kb

Kdevelop Tour D'horizon Et Retour D'expériences (C++) KDevelop Tour d’horizon et retour d’expériences (C++) 2e rencontre DevelopR6 25 mars 2010 F. Langrognet F. Langrognet () KDevelop Mars 2010 1 / 27 PLAN 1 Introduction 2 Principales fonctionnalités 3 KDevelop 4 4 Cas pratique - utilisation d’outils intégrés à KDevelop 5 Alternatives à KDevelop - Conclusion F. Langrognet () KDevelop Mars 2010 2 / 27 PLAN 1 Introduction 2 Principales fonctionnalités 3 KDevelop 4 4 Cas pratique - utilisation d’outils intégrés à KDevelop 5 Alternatives à KDevelop - Conclusion F. Langrognet () KDevelop Mars 2010 3 / 27 Historique Historique 1998 : Mise en place du projet KDevelop ◮ Objectif : bâtir un IDE pour KDE facile à utiliser ◮ Langage : uniquement C/C++ 2001 : KDevelop 2.0 2004 : KDevelop 3.0 (complètement réécrit) ◮ Langages supportés : C++, Java, Python, PHP, . ◮ Plugins 1er mai 2010 : KDevelop 4.0.0 Complètement réécrit - encore ! Beaucoup de nouveautés et fonctionnalités améliorées Version 3.9.95 (ubuntu 9.10) : disponible uniquement pour le C++ F. Langrognet () KDevelop Mars 2010 4 / 27 Ecosystème Ecosystème naturel Développement en C++ sous Linux/KDE Mais aussi ... 15 langages supportés Version windows (cygwin) et Mac OS F. Langrognet () KDevelop Mars 2010 5 / 27 PLAN 1 Introduction 2 Principales fonctionnalités 3 KDevelop 4 4 Cas pratique - utilisation d’outils intégrés à KDevelop 5 Alternatives à KDevelop - Conclusion F. Langrognet () KDevelop Mars 2010 6 / 27 Aperçu des fonctionnalités Langages / Fonctionnalités F. Langrognet () KDevelop Mars 2010 7 / 27 Fonctionnalités (1) Présentation des fonctionnalités de KDevelop 3.5.3 (et ... 4.0) 15 langages Construction de projet Ada, C, C++, Objective-C, SQL, autotools Fortran, Haskell, Java, PHP, Pascal, qmake Perl, Python, Ruby, Bash cmake ant (java) F. Langrognet () KDevelop Mars 2010 8 / 27 Fonctionnalités (2) Edition (texte/classes) Coloration syntaxique Aide à la création de classe Indentation automatique Visualisation de classes : Complétion automatique ◮ Classe mère, classes dérivées ◮ Membres privés, publics, protégés Aide à l’ouverture/fermeture de ◮ parenthèses, accolades Liste des utilisations des méthodes/fonctions Utilisations de variables (KDevelop4) F. Langrognet () KDevelop Mars 2010 9 / 27 Fonctionnalités (3) Editeur d’IHM SGV cvs svn QT Designer perforce clearCase git (KDevelop4) mercurial (KDevelop4) F. Langrognet () KDevelop Mars 2010 10 / 27 Fonctionnalités (4) Debugger Génération automatique de Points d’arrêts conditionnels documentation Liste d’appel Etat des variables Doxygen pour C++ F. Langrognet () KDevelop Mars 2010 11 / 27 Fonctionnalités (5) Kits de développement Développement de plugins KDE QT (QT Designer, QT Linguist) ◮ GTK Kate ◮ KFile wxWidgets ◮ Konqueror ◮ superwaba Noatun ◮ ... GBA KDevelop F. Langrognet () KDevelop Mars 2010 12 / 27 PLAN 1 Introduction 2 Principales fonctionnalités 3 KDevelop 4 4 Cas pratique - utilisation d’outils intégrés à KDevelop 5 Alternatives à KDevelop - Conclusion F. Langrognet () KDevelop Mars 2010 13 / 27 KDevelop4 Quelques améliorations (parmi d’autres) Nouveau langage : C# Nouveaux SGV (décentralisés) : ◮ git ◮ mercurial ◮ bazaar Tests ◮ CppUnit, QTest Edition (coloration, navigation dans les classes, . ) F. Langrognet () KDevelop Mars 2010 14 / 27 KDevelop4 - Edition (1) Coloration syntaxique F. Langrognet () KDevelop Mars 2010 15 / 27 KDevelop4 - Edition (2) Complétion automatique F. Langrognet () KDevelop Mars 2010 16 / 27 KDevelop4 - Edition (3) Information contextuelle F. Langrognet () KDevelop Mars 2010 17 / 27 KDevelop4 - Edition (4) Edition de classes, navigation F. Langrognet () KDevelop Mars 2010 18 / 27 PLAN 1 Introduction 2 Principales fonctionnalités 3 KDevelop 4 4 Cas pratique - utilisation d’outils intégrés à KDevelop 5 Alternatives à KDevelop - Conclusion F. Langrognet () KDevelop Mars 2010 19 / 27 Développement de Mixmod avec KDevelop Mixmod/KDevelop Edition Logiciel de classification de données Debugger Ecrit en C++ (et avec QT) cmake Valgrind Développé sous Linux KCacheGrind Distribué pour Linux, Windows (SVN) (Doxygen) F. Langrognet () KDevelop Mars 2010 20 / 27 Utilisation de cmake cmake cmake -> KDevelop cmake . -GKDevelop3 Possibilité de créer des projets CodeBlocks, Eclipse CDT KDevelop -> cmake Configuration de cmake depuis KDevelop F. Langrognet () KDevelop Mars 2010 21 / 27 Utilisation de valgrind Valgrind Outil d’analyse dynamique de code C++ (comme Purify) Utilisation de valeurs ou de pointeurs non initialisés Accès à des zones mémoire libérées ou non allouées Libération à tort d’une zone mémoire (ex : 2 delete d’une même zone) Non libération de mémoire allouée Passage d’arguments invalides à certaines fonctions de la librairie standard F. Langrognet () KDevelop Mars 2010 22 / 27 Utilisation de kCachegrind KCachegrind Navigateur pour les données produites par des outils de profilage F. Langrognet () KDevelop Mars 2010 23 / 27 PLAN 1 Introduction 2 Principales fonctionnalités 3 KDevelop 4 4 Cas pratique - utilisation d’outils intégrés à KDevelop 5 Alternatives à KDevelop - Conclusion F. Langrognet () KDevelop Mars 2010 24 / 27 Et si l’on partait des besoins ? Un IDE pour C++ Critères de choix : Gratuit, Payant Linux, Windows Fonctionnalités : complétion de code, gestionnaire de version, debugger, . F. Langrognet () KDevelop Mars 2010 25 / 27 Conclusion KDevelop IDE très complet Nombreux outils pour le C++ valgrind, KCacheGrind, Doxygen, . Utilisation sous Windows, Création facile de projets divers MacOS très marginale QT, WxWidgets, . Cross compilation ? Edition de texte, navigation classes, fichiers de grande qualité (KDevelop4) Création de package? Debugger performant Projet actif et pérenne F. Langrognet () KDevelop Mars 2010 26 / 27 KDevelopR6 FIN Merci de votre attention Florent Langrognet F. Langrognet () KDevelop Mars 2010 27 / 27.
Recommended publications
  • Java Code Documentation Example
    Java Code Documentation Example Fruitless Martino sometimes quick-freeze his peritonitis hugely and night-club so dispraisingly! Glottogonic and sublinear Finn melt his bodice permeates podding benevolently. Oswald usually medicines surgically or orbs telescopically when polyunsaturated Hugh dement evidentially and lewdly. The javadoc itself an unsupported extension and is also important in the description for code documentation comment merely repeats the banner section DocsapijavanetURLhtmlgetAuthority-- a method getAuhority in the. API reference code comments Google Developers. Omitting many times classes being documented type, and java example of each field, all trademarks and description below code completion window, which we used to. Java Programming Style Guide. The keyboard shortcut to comment multiple in Windows is shift alt A. 10 Best Practices to multiple While Writing Code Javarevisited. Concise presentations of java programming practices tasks and conventions amply illustrated with syntax highlighted code examples. Java Documentation Comments Tutorialspoint. Java Programming Guidelines. If this tag easily comment related comments java code, this user to new field in the dependency. The following examples demonstrate a pain line summary followed by detailed documentation in song three. CS 302 Commenting Guide Program Commenting Guide File. For sober you spawn use author tag to identify the author of a. Opinions expressed by the code example code documentation is overridden in the documentation for example code base classes and decide to allow bikes to achieve these methods. Example slope from the Javadoc documentation code can be documented inline Single Line comments are started by each may be positioned after a. The Documentation Comment Specification permits leading asterisks on enough first.
    [Show full text]
  • Programming Java for OS X
    Programming Java for OS X hat’s so different about Java on a Mac? Pure Java applica- tions run on any operating system that supports Java. W Popular Java tools run on OS X. From the developer’s point of view, Java is Java, no matter where it runs. Users do not agree. To an OS X user, pure Java applications that ignore the feel and features of OS X are less desirable, meaning the customers will take their money elsewhere. Fewer sales translates into unhappy managers and all the awkwardness that follows. In this book, I show how to build GUIs that feel and behave like OS X users expect them to behave. I explain development tools and libraries found on the Mac. I explore bundling of Java applications for deployment on OS X. I also discuss interfacing Java with other languages commonly used on the Mac. This chapter is about the background and basics of Java develop- ment on OS X. I explain the history of Java development. I show you around Apple’s developer Web site. Finally, I go over the IDEs commonly used for Java development on the Mac. In This Chapter Reviewing Apple Java History Exploring the history of Apple embraced Java technologies long before the first version of Java on Apple computers OS X graced a blue and white Mac tower. Refugees from the old Installing developer tan Macs of the 1990s may vaguely remember using what was tools on OS X called the MRJ when their PC counterparts were busy using JVMs. Looking at the MRJ stands for Mac OS Runtime for Java.
    [Show full text]
  • Useful Tools for Game Making
    CMS.611J/6.073 Fall 2014 Useful Tools List This list is by no means complete, but should get you started. Talk to other folks in the class about their recommendations. Revision Control Version control software, provides backups and easy reversion. Perforce Mac/Win GUI (p4v): Heavily used in game http://www.perforce.com/dow industry. Commercial nloads/Perforce-Software-Ver software; you can use the sion-Management/complete_l Game Lab server. ist/Customer Subversion Command line: Open source, server-based http://subversion.apache.org/ Windows GUI: http://tortoisesvn.net/ Git Command line: Open source, distributed http://git-scm.com/ Mercurial Command line: Open source, distributed http://mercurial.selenic.com/ Windows GUI: http://tortoisehg.bitbucket.org/ SourceTree Mac/Win GUI: Not a source control system, http://www.sourcetreeapp.co just a GUI for Git and m/ Mercurial clients Revision Control Hosting SourceForge http://sourceforge.net/ git, mercurial, or subversion BitBucket https://bitbucket.org/ git or mercurial GitHub https://github.com/ git, has own (painful) GUI for Git 1 Image Editing MSPaint Windows, pre-installed Surprisingly useful quick pixel art editor (esp for prototypes) Paint.NET Windows, About as easy as MSPaint, but http://www.getpaint.net/download much more powerful .html Photoshop Mac, Windows New Media Center, 26-139 GIMP Many platforms, Easier than photoshop, at http://www.gimp.org/downloads/ least. Sound GarageBand Mac New Media Center, 26-139 Audacity Many platforms, Free, open source. http://audacity.sourceforge.ne
    [Show full text]
  • Jenkins Job Builder Documentation Release 3.10.0
    Jenkins Job Builder Documentation Release 3.10.0 Jenkins Job Builder Maintainers Aug 23, 2021 Contents 1 README 1 1.1 Developers................................................1 1.2 Writing a patch..............................................2 1.3 Unit Tests.................................................2 1.4 Installing without setup.py........................................2 2 Contents 5 2.1 Quick Start Guide............................................5 2.1.1 Use Case 1: Test a job definition................................5 2.1.2 Use Case 2: Updating Jenkins Jobs...............................5 2.1.3 Use Case 3: Working with JSON job definitions........................6 2.1.4 Use Case 4: Deleting a job...................................6 2.1.5 Use Case 5: Providing plugins info...............................6 2.2 Installation................................................6 2.2.1 Documentation.........................................7 2.2.2 Unit Tests............................................7 2.2.3 Test Coverage..........................................7 2.3 Configuration File............................................7 2.3.1 job_builder section.......................................8 2.3.2 jenkins section.........................................9 2.3.3 hipchat section.........................................9 2.3.4 stash section...........................................9 2.3.5 __future__ section.......................................9 2.4 Running.................................................9 2.4.1 Test Mode...........................................
    [Show full text]
  • Eclipse Project Briefing Materials
    [________________________] Eclipse project briefing materials. Copyright (c) 2002, 2003 IBM Corporation and others. All rights reserved. This content is made available to you by Eclipse.org under the terms and conditions of the Common Public License Version 1.0 ("CPL"), a copy of which is available at http://www.eclipse.org/legal/cpl-v10.html The most up-to-date briefing materials on the Eclipse project are found on the eclipse.org website at http://eclipse.org/eclipse/ 200303331 1 EclipseEclipse ProjectProject 200303331 3 Eclipse Project Aims ■ Provide open platform for application development tools – Run on a wide range of operating systems – GUI and non-GUI ■ Language-neutral – Permit unrestricted content types – HTML, Java, C, JSP, EJB, XML, GIF, … ■ Facilitate seamless tool integration – At UI and deeper – Add new tools to existing installed products ■ Attract community of tool developers – Including independent software vendors (ISVs) – Capitalize on popularity of Java for writing tools 200303331 4 Eclipse Overview Another Eclipse Platform Tool Java Workbench Help Development Tools JFace (JDT) SWT Team Your Tool Plug-in Workspace Development Debug Environment (PDE) Their Platform Runtime Tool Eclipse Project 200303331 5 Eclipse Origins ■ Eclipse created by OTI and IBM teams responsible for IDE products – IBM VisualAge/Smalltalk (Smalltalk IDE) – IBM VisualAge/Java (Java IDE) – IBM VisualAge/Micro Edition (Java IDE) ■ Initially staffed with 40 full-time developers ■ Geographically dispersed development teams – OTI Ottawa, OTI Minneapolis,
    [Show full text]
  • Language Interoperability in Control Network Programming
    International Journal of Science and Engineering Investigations vol. 7, issue 78, July 2018 ISSN: 2251-8843 Language Interoperability in Control Network Programming Kostadin Kratchanov1, Efe Ergün2 1,2Yaşar University, Izmir, Turkey ([email protected], [email protected]) Abstract - Control Network Programming (CNP) is a There is a number of reasons why language interoperability programming paradigm which is being described with the is highly desirable. For example, if a programmer has to maxim “Primitives + Control Network = Control Network implement a specific feature that has been already implemented program”. It is a type of graphic programming. The Control in another language the corresponding program component can Network is a recursive system of graphs; it can be a purely simply be reused. Some languages are especially fit and descriptive specification of the problem being solved. Clearly, effective in implementing specific features and often have ‘drawing’ the control network does not include any emerged to target particular problem domains. Rich third-party programming. The Primitives are elementary, easily packages for certain languages are available. Also, every understandable and clearly specified actions. Ultimately, they programmer usually has a preferred language in which their have to be programmed. Historically, they are usually coded in expertise and efficiency is better. There are hundreds of Free Pascal. The actual code of the primitives has never been programming languages used and constantly being developed considered important. The essence of an “algorithm” is thus making language interoperability a necessity. represented by its control network. CNP was always meant to Programmers with experience and preferences in different be an easy and fast approach for software application programming languages can easier team up for solving development that actually involves very little real complex tasks.
    [Show full text]
  • Comments and Documentation 2501ICT/7421Ictnathan
    C Comments Using Doxygen Comments and Documentation 2501ICT/7421ICTNathan René Hexel School of Information and Communication Technology Griffith University Semester 1, 2012 René Hexel Comments and Documentation C Comments Using Doxygen Outline 1 C Comments 2 Using Doxygen René Hexel Comments and Documentation C Comments Using Doxygen Comments Plain C allows comments between /* and */ /* this is a valid C comment */ Comments may not be nested /* this /* is not a valid C comment */ */ C99 also allows double-slash // end-of-line comments // this is a valid comment no closing sequence needed – the comment ends at the end of the line René Hexel Comments and Documentation C Comments Using Doxygen Comment Example Example (Program with Comments) /* * This program prints "j = 007". * It does not take any parameters and returns 0 on success. */ int main(void)/ * main function definition */ { int j; // our int variable to play with j=7; // assign a value to be printed printf("j = %03.3dnn",j); // print value with leading zeroes return 0; // everything is fine, exit program } René Hexel Comments and Documentation C Comments Using Doxygen Where to put comments? At the beginning of each file (module) describe the name of the module, purpose, author, and dates when first created and last modified Before each function (method) describe the purpose of the function or method, input parameters (arguments), return values (output parameters), and pre- and postconditions (contract) At the beginning of each class describe the purpose of the class, and things to
    [Show full text]
  • DVCS Or a New Way to Use Version Control Systems for Freebsd
    Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions DVCS or a new way to use Version Control Systems for FreeBSD Ollivier ROBERT <[email protected]> BSDCan 2006 Ottawa, Canada May, 12-13th, 2006 Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions Agenda 1 Brief history of VCS 2 FreeBSD context & gures 3 Is Arch/baz suited for FreeBSD? 4 Mercurial to the rescue 5 New processes & policies needed 6 Conclusions Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions The ancestors: SCCS, RCS File-oriented Use a subdirectory to store deltas and metadata Use lock-based architecture Support shared developments through NFS (fragile) SCCS is proprietary (System V), RCS is Open Source a SCCS clone exists: CSSC You can have a central repository with symlinks (RCS) Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions CVS, the de facto VCS for the free world Initially written as shell wrappers over RCS then rewritten in C Centralised server Easy UI Use sandboxes to avoid locking Simple 3-way merges Can be replicated through CVSup or even rsync Extensive documentation (papers, websites, books) Free software and used everywhere (SourceForge for example) Ollivier ROBERT <[email protected]> DVCS or a new way to use Version Control Systems for FreeBSD Brief history of VCS FreeBSD context & gures Is Arch/baz suited for FreeBSD? Mercurial to the rescue New processes & policies needed Conclusions CVS annoyances and aws BUT..
    [Show full text]
  • Dragonfly.Wpi.Edu/Book/ February 28, 2013 8:8 Computer Science Education Paper
    February 28, 2013 8:8 Computer Science Education paper Computer Science Education Vol. XX, No. XX, June 2013, 1–18 RESEARCH ARTICLE Dragonfly – Strengthening Programming Skills by Building a Game Engine from Scratch Mark Claypool Computer Science and Interactive Media & Game Development Worcester Polytechnic Institute, Worcester, MA 01609, USA email: [email protected] (Received 00 Month 200x; final version received 00 Month 200x) Computer game development has been shown to be an effective hook for motivating students to learn both introductory and advanced computer science topics. While games can be made from scratch, to simplify the programming required game development often uses game engines that handle complicated or frequently used components of the game. These game engines present the opportunity to strengthen programming skills and expose students to a range of fundamental computer science topics. While educational efforts have been effective in using game engines to improve computer science education, there have been no published papers describing and evaluating students building a game engine from scratch as part of their course work. This paper presents the Dragonfly-approach in which students build a fully functional game engine from scratch and make a game using their engine as part of a junior-level course. Details on the programming projects are presented, as well as an evaluation of the results from two offerings that used Dragonfly. Student performance on the projects as well as student assessments demonstrate the efficacy of having students build a game engine from scratch in strengthening their programming skills. Keywords: game engine, programming, object-oriented design, software engineering, game development 1 Introduction By the end of their second year, most computer science students have been exposed to a breadth of foundational materials, such as introductory programming, basic data structures and algo- rithms, and have begun to write programs of moderate size – hundreds of lines of code, perhaps up to even a thousand lines of code.
    [Show full text]
  • Helix Authentication Service Administrator Guide 2021.1 May 2021 Copyright © 2020-2021 Perforce Software, Inc
    Helix Authentication Service Administrator Guide 2021.1 May 2021 Copyright © 2020-2021 Perforce Software, Inc.. All rights reserved. All software and documentation of Perforce Software, Inc. is available from www.perforce.com. You can download and use Perforce programs, but you can not sell or redistribute them. You can download, print, copy, edit, and redistribute the documentation, but you can not sell it, or sell any documentation derived from it. You can not modify or attempt to reverse engineer the programs. This product is subject to U.S. export control laws and regulations including, but not limited to, the U.S. Export Administration Regulations, the International Traffic in Arms Regulation requirements, and all applicable end-use, end-user and destination restrictions. Licensee shall not permit, directly or indirectly, use of any Perforce technology in or by any U.S. embargoed country or otherwise in violation of any U.S. export control laws and regulations. Perforce programs and documents are available from our Web site as is. No warranty or support is provided. Warranties and support, along with higher capacity servers, are sold by Perforce. Perforce assumes no responsibility or liability for any errors or inaccuracies that might appear in this book. By downloading and using our programs and documents you agree to these terms. Perforce and Inter-File Branching are trademarks of Perforce. All other brands or product names are trademarks or registered trademarks of their respective companies or organizations. Contents How to use
    [Show full text]
  • Staying out of the Swamp
    Staying out of the server swamp Richard Baum Perforce Software October, 2001 Contents Introduction How do I tell if I'm in the swamp? Is your system CPU bound? Is your system memory bound? Is your system I/O bound? How can Perforce cause server swamp? Network Attached Storage Confusing and complex client mappings Background processes The Perforce error log Gigantic operations Conclusion Introduction Perforce runs extremely well when it is given the right resources. A Perforce server does not generally require much CPU. Memory and disk requirements correspond to the amount of data you wish to store. Conditions can sometimes conspire to change a well-performing server into a poorly-performing one. This talk will cover some of the things to watch out for to keep your Perforce server happy and healthy. The object of this talk is to familiarize you with what to look for so you can determine where the problem lies, and what to do so you can remedy the problem. In general, performance that a user will see is limited by the I/O bandwidth of the server and the speed of its connection with a client machine. A server that appears to not be responding in its typically speedy fashion may, in fact, be swamped with data and requests for data. How do I tell if I'm in the swamp? If you suspect that your Perforce server is swamped, the first things to do are to check whether it is, in fact, running, and to examine the machine that hosts the server for any obvious signs of a problem.
    [Show full text]
  • PHP Beyond the Web Shell Scripts, Desktop Software, System Daemons and More
    PHP Beyond the web Shell scripts, desktop software, system daemons and more Rob Aley This book is for sale at http://leanpub.com/php This version was published on 2013-11-25 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. ©2012 - 2013 Rob Aley Tweet This Book! Please help Rob Aley by spreading the word about this book on Twitter! The suggested hashtag for this book is #phpbeyondtheweb. Find out what other people are saying about the book by clicking on this link to search for this hashtag on Twitter: https://twitter.com/search?q=#phpbeyondtheweb Contents Welcome ............................................ i About the author ...................................... i Acknowledgements ..................................... ii 1 Introduction ........................................ 1 1.1 “Use PHP? We’re not building a website, you know!”. ............... 1 1.2 Are you new to PHP? ................................. 2 1.3 Reader prerequisites. Or, what this book isn’t .................... 3 1.4 An important note for Windows and Mac users ................... 3 1.5 About the sample code ................................ 4 1.6 External resources ................................... 4 1.7 Book formats/versions available, and access to updates ............... 5 1.8 English. The Real English. .............................. 5 2 Getting away from the Web - the basics ......................... 6 2.1 PHP without a web server .............................. 6 2.2 PHP versions - what’s yours? ............................. 7 2.3 A few good reasons NOT to do it in PHP ...................... 8 2.4 Thinking about security ...............................
    [Show full text]