Implementation of Website for Cognitive Behavioural Therapy Using the Development Framework Symfony

Total Page:16

File Type:pdf, Size:1020Kb

Implementation of Website for Cognitive Behavioural Therapy Using the Development Framework Symfony Institutionen för datavetenskap Department of Computer and Information Science Final thesis Implementation of website for cognitive behavioural therapy using the development framework Symfony by Peter Andersson LIU-IDA/LITH-EX-G--10/008--SE 2010-03-22 Linköpings universitet Linköpings universitet SE-581 83 Linköping, Sweden 581 83 Linköping Linköping University Department of Computer and Information Science Final Thesis Implementation of website for cognitive behavioural therapy using the development framework Symfony by Peter Andersson LIU-IDA/LITH-EX-G--10/008--SE 2010-03-22 Supervisor: Anders Fröberg Examiner: Erik Berglund På svenska Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare – under en längre tid från publiceringsdatum under förutsättning att inga extra-ordinä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 kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överfö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 tillgängligheten finns det lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras 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/ In English The publishers will keep this document online on the Internet - or its possible replacement - for a considerable time from the date of publication barring exceptional circumstances. The online availability of the document implies a permanent permission for anyone to read, to download, to print out single copies for your own use and to use it unchanged for any non- commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional on 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 home page: http://www.ep.liu.se/ © Peter Andersson Abstract This report follows the process of developing a website for cognitive behavioural therapy using the web development framework Symfony. The purpose was to find out if it is appropriate to use Symfony to ease development and maintenance of a website for therapy. For this to be true the framework had to be able to help create a website that was secure, user-friendly and easy to maintain. The website was developed using several features of the framework including database abstraction, automatic code generation and URL-rewriting. A plugin was used to enhance the security by adding a complete solution for user authentication. The website was tested by using built-in test functionality of the framework that could run test on functions or emulating a browser visiting the website. During the development the framework was tested and evaluated. The worst drawback turned out to be Symfonys steep learning curve, its security solution that only worked if the website was installed correctly and its slow loading time. Except those faults the framework performed well and was easy to use ones the initial learning time was over. Contents 1 Introduction ....................................................................................................................................1 1.1 Thesis question ........................................................................................................................1 1.2 Limitations ...............................................................................................................................2 1.3 Methods and Sources ...............................................................................................................2 1.4 Audience ..................................................................................................................................2 1.5 Report structure .......................................................................................................................3 2 Analysis ...........................................................................................................................................5 2.1 Design goals .............................................................................................................................5 2.2 Treatment programs ................................................................................................................6 2.3 Forum ......................................................................................................................................6 2.4 Additional parts ........................................................................................................................7 3 Implementing with Symfony............................................................................................................9 3.1 Architecture .............................................................................................................................9 3.2 Object Relational Mapping ..................................................................................................... 11 3.3 Database generation .............................................................................................................. 13 3.4 Forms and input validation ..................................................................................................... 14 3.5 URL Routing............................................................................................................................ 15 3.6 Pagination .............................................................................................................................. 17 3.7 Administration interface ......................................................................................................... 18 3.8 Internationalization ................................................................................................................ 18 3.9 Security .................................................................................................................................. 19 4 Result: Implementation and testing............................................................................................... 21 4.1 Evolutionary prototyping ........................................................................................................ 21 4.2 Database design ..................................................................................................................... 21 4.2.1 User authentication ......................................................................................................... 21 4.2.2 Treatment programs ........................................................................................................ 22 4.2.3 Forum .............................................................................................................................. 23 4.3 Database implementation ...................................................................................................... 24 4.4 Treatment programs .............................................................................................................. 25 4.5 Forum and articles .................................................................................................................. 26 4.6 Administration interface ......................................................................................................... 28 4.7 Security .................................................................................................................................. 29 4.8 Testing ................................................................................................................................... 30 4.8.1 Compatibility ................................................................................................................... 30 4.8.2 Unit test .......................................................................................................................... 31 4.8.3 Functional test ................................................................................................................. 32 4.9 Final thoughts on Symfony ..................................................................................................... 33 5 Discussion ..................................................................................................................................... 35 5.1 Using frameworks for web development ................................................................................ 35 5.2 Choice of platform .................................................................................................................
Recommended publications
  • Resin 3.2 Reference
    Contents 1 Overview 3 1.1 Features - Resin and Resin Professional . .3 2 Installation 11 2.1 Resin Installation Quick Start . 11 2.2 Resin Installation . 16 2.3 Resin Web Server . 16 2.4 Resin with Apache . 22 2.5 Resin with IIS . 34 2.6 How the Plugins Dispatch to Resin . 44 3 Command-Line 47 3.1 Command-Line Configuration . 47 4 Admin Guide 51 4.1 User Guide: Administration . 51 5 Watchdog 63 5.1 Resin Watchdog . 63 6 Virtual Hosts 73 6.1 Virtual Hosting . 73 7 Clustering 89 7.1 Resin Clustering . 89 8 Web Applications 109 8.1 An Overview of Web Applications . 109 9 Logging 137 9.1 Log . 137 10 Administration 163 10.1 Resin Administration . 163 1 CONTENTS 11 Deployment 177 11.1 Packaging/Deployment . 177 12 Proxy Caching 181 12.1 Server Caching . 181 13 Quercus 193 13.1 Quercus: PHP in Java . 193 14 Security 217 14.1 Resin Security . 217 15 Inversion of Control 271 15.1 Resin IoC . 271 15.2 Scheduled Task . 308 16 Amber 327 16.1 Amber . 327 17 Embedding Resin 355 17.1 Embedding Resin . 355 18 Filters 367 18.1 Filters . 367 19 BAM 379 19.1 BAM . 379 20 Comet 405 20.1 Comet/Server-Push Servlet . 405 21 Remoting 411 21.1 Resin Remoting . 411 21.2 Hessian . 417 22 Messaging 423 22.1 Resin Messaging . 423 23 JSF - Java Server Faces 435 23.1 JSF - Java Server Faces . 435 24 Configuration Tags 445 24.1 cluster: Cluster tag configuration .
    [Show full text]
  • PHP Programming Cookbook I
    PHP Programming Cookbook i PHP Programming Cookbook PHP Programming Cookbook ii Contents 1 PHP Tutorial for Beginners 1 1.1 Introduction......................................................1 1.1.1 Where is PHP used?.............................................1 1.1.2 Why PHP?..................................................2 1.2 XAMPP Setup....................................................3 1.3 PHP Language Basics.................................................5 1.3.1 Escaping to PHP...............................................5 1.3.2 Commenting PHP..............................................5 1.3.3 Hello World..................................................6 1.3.4 Variables in PHP...............................................6 1.3.5 Conditional Statements in PHP........................................7 1.3.6 Loops in PHP.................................................8 1.4 PHP Arrays...................................................... 10 1.5 PHP Functions.................................................... 12 1.6 Connecting to a Database............................................... 14 1.6.1 Connecting to MySQL Databases...................................... 14 1.6.2 Connecting to MySQLi Databases (Procedurial).............................. 14 1.6.3 Connecting to MySQLi databases (Object-Oriented)............................ 15 1.6.4 Connecting to PDO Databases........................................ 15 1.7 PHP Form Handling................................................. 15 1.8 PHP Include & Require Statements.........................................
    [Show full text]
  • Civil Good: a Platform for Sustainable and Inclusive Online Discussion
    Civil Good: A Platform For Sustainable and Inclusive Online Discussion An Interactive Qualifying Project submitted to the faculty of Worcester Polytechnic Institute In partial fulfillment of the requirements for the degree of Bachelor of Science by: Steven Malis (Computer Science), Tushar Narayan (Computer Science), Ian Naval (Computer Science), Thomas O'Connor (Biochemistry), Michael Perrone (Physics and Mathematics), John Pham (Computer Science), David Pounds (Computer Science and Robotics Engineering), December 19, 2013 Submitted to: Professor Craig Shue, WPI Advisor Alan Mandel, Creator of the Civil Good concept Contents 1 Executive Summary1 1.1 Overview of Recommendations......................2 2 Authorship5 3 Introduction 10 3.1 Existing Work - Similar Websites.................... 11 4 Psychology 17 4.1 Online Disinhibition........................... 17 4.2 Format of Discussions.......................... 22 4.3 Reducing Bias with Self-Affirmation................... 28 4.4 Other Psychological Influences...................... 34 5 Legal Issues 38 5.1 Personally Identifiable Information................... 38 5.2 Intellectual Property........................... 42 5.3 Defamation................................ 45 5.4 Information Requests........................... 46 5.5 Use by Minors............................... 49 5.6 General Litigation Avoidance and Defense............... 51 6 Societal Impact 52 6.1 Political Polarization........................... 52 6.2 Minority Opinion Representation.................... 55 6.3 History and Political
    [Show full text]
  • Php Editor Mac Freeware Download
    Php editor mac freeware download Davor's PHP Editor (DPHPEdit) is a free PHP IDE (Integrated Development Environment) which allows Project Creation and Management, Editing with. Notepad++ is a free and open source code editor for Windows. It comes with syntax highlighting for many languages including PHP, JavaScript, HTML, and BBEdit costs $, you can also download a free trial version. PHP editor for Mac OS X, Windows, macOS, and Linux features such as the PHP code builder, the PHP code assistant, and the PHP function list tool. Browse, upload, download, rename, and delete files and directories and much more. PHP Editor free download. Get the latest version now. PHP Editor. CodeLite is an open source, free, cross platform IDE specialized in C, C++, PHP and ) programming languages which runs best on all major Platforms (OSX, Windows and Linux). You can Download CodeLite for the following OSs. Aptana Studio (Windows, Linux, Mac OS X) (FREE) Built-in macro language; Plugins can be downloaded and installed from within jEdit using . EditPlus is a text editor, HTML editor, PHP editor and Java editor for Windows. Download For Mac For macOS or later Release notes - Other platforms Atom is a text editor that's modern, approachable, yet hackable to the core—a tool. Komodo Edit is a simple, polyglot editor that provides the basic functionality you need for programming. unit testing, collaboration, or integration with build systems, download Komodo IDE and start your day trial. (x86), Mac OS X. Download your free trial of Zend Studio - the leading PHP Editor for Zend Studio - Mac OS bit fdbbdea, Download.
    [Show full text]
  • Virtual Wishlist
    Virtual Wishlist Figure 1: Welcome Page of the Virtual Wishlist Group project carried out by Josua Dietrich, Nils Braune and Tino Canziani created 2011 at D-ITET, ETH Zürich 21.12.2011 Contents 1 Introduction and Background 3 1.1 Idea . .3 1.2 Related Work . .3 1.3 Tools . .3 2 Concept 5 2.1 Core functions . .5 2.2 Website Layout . .5 2.3 Sessions & Proles . .7 3 Implementation 8 3.1 HTML/Login/Session (Welcome.html) . .8 3.2 MySQL server: creating a database . .9 3.3 setupConnection.php . 11 3.4 $.ajax(), getWishlists() .................. 12 3.5 Adding a prole picture . 14 4 Results and Future Steps 16 4.1 Results . 16 4.1.1 Welcome Page . 16 4.1.2 Prole Page . 16 4.1.3 my Wishes menu . 16 4.1.4 my Friends and Search Friends Menu . 16 4.1.5 Settings menu . 17 4.1.6 Friend Page . 17 4.1.7 Terms, Privacy, About, Help Page . 17 4.1.8 Process of fullling and getting wishes fullled . 17 4.1.9 Security . 17 4.2 Future steps . 18 A Server/PHP functions 20 B Screenshot of the prole page 21 C Setting up the Virtual Wishlist step by step 22 D Endnotes 23 1 Abstract In this group project we designed and implemented a virtual wish list as a social media service on the web. It enables its users to maintain a personal prole, create their own wish lists or opt to grant other friends their specic wishes. The use case of this virtual wish list will mostly tend to birthday and christmas events, social gatherings, leisure activities or work related events.
    [Show full text]
  • System Requirements
    System Requirements This section outlines the requirements for installing the Ushahidi platform on your computer. The "AMP" (Apache, Mysql, PHP) Stack Before installing Ushahidi, following must be installed in the target system: PHP version 5.2.3 or greater PHP 5.4 support is added in Ushahidi 2.6 Prior to Ushahidi 2.6, you must version between PHP 5.2.3 - 5.3.x MySQL version 5.0 or greater An HTTP Server. Kohana, which Ushahidi is built on, is known to work with the following web servers: Apache 1.3+ Apache2.0+ lighttpd Microsoft Internet Information Server (MS IIS) Nginx Unicode support in the operating system Required PHP Extensions The following is a list of PHP extensions that must be installed on your server in order for Ushahidi to run properly: PCRE (http://php.net/pcre) must be compiled with --enable-utf8 and --enable-unicode-properties for UTF-8 functions to work properly. iconv (http://php.net/iconv) is required for UTF-8 transliteration. mcrypt (http://php.net/mcrypt) is required for encryption. SPL (http://php.net/spl) is required for several core libraries mbstring (http://php.net/mbstring) which speeds up Kohana's UTF-8 functions. cURL (http://php.net/curl) which is used to access remote sites. MySQL (http://php.net/mysql) is required for database access. GD (http://php.net/gd) is required for image manipulation. IMAP (http://php.net/imap) is required for handling e-mails. TIP: Need to figure out what extensions you already have installed on your server? Here are instructions to do just that http://jontangerine.com/silo/ php/phpinfo/ Optional Server Requirements To use Ushahidi's "Clean URLs" feature – meaning that your deployment's URLs will not include "index.php" – on an Apache Web Server, you will need the mod_rewrite module and the ability to use local .htaccess files.
    [Show full text]
  • Php|Architect the Magazine for PHP Professionals Writing Secure PHP Code Make Your Applications Safer
    JANUARY 2003 - Volume II - Issue 1 php|architect The Magazine For PHP Professionals Writing Secure PHP Code Make your applications safer IonCube PHP Accelerator 1.3.3 Reviewed for you: CodeCharge Studio 1.0 Exclusive ZEND Interview Plus: Using the .NET Assembly with PHP Writing A Web-based PDF Viewer Taming Full-Text Search with MySQL This copy is registered to: Jakob Breivik Grimstveit Accessing the Windows API and Other DLLs [email protected] Implementing Database Persistence Layers The designers of PHP offerfer youyou thethe fullfull spectrumspectrum ofof PHPPHP solutionssolutions Serve More. With Less. Zend Performance Suite Reliable Performance Management for PHP Visit www.zend.com for evaluation version and ROI calculator Technologies Ltd. TABLE OF CONTENTS php|architect Departments Features 10 | Implementing Database 4 | EDITORIAL RANTS Persistence Layers in PHP by Shawn Bedard 5 | NEW STUFF 19 | Accessing the Windows API and other Dynamic Link Libraries X 6 | PHP-WIN by David Jorm CodeCharge Studio 1.0 30 | Taming Full-Text Search with E MySQL 58 | REVIEWS by Leon Vismer EX D C ionCube PHP Accelerator LU 37 | The Zend of Computer SI VE Programming: Small Business N Heaven 68 | TIPS & TRICKS I by Marco Tabini by John Holmes 42 | Using The .NET Assembly through COM in PHP 71 | BOOK REVIEWS by Jayesh Jain 50 | Writing Secure PHP Code 73 | exit(0); by Theo Spears Let’s Call it the Unknown Language 62 | Writing a Web-based PDF Viewer by Marco Tabini January 2003 · PHP Architect · www.phparch.com 3 EDITORIAL There is nothing like a "trial by With this issue, I think we have php|architect fire" to make or break your day.
    [Show full text]
  • WEB DEVELOPER » Portfolio » Github SUMMARY I’M a Full-Stack Developer and a Programming Instructor
    LUIS MONTEALEGRE - WEB DEVELOPER » Portfolio » Github SUMMARY I’m a full-stack developer and a programming instructor. I want to be surrounded by people who push me to do the best work of my career as well as people I can nurture and support. I have over 13 years of experience in tech both in Mexico and the United States and I’m looking forward to be part of a team that values work-life balance, TDD, pair programming and code reviews. PROGRAMMING LANGUAGES AND TOOLS PHP 11 years • Laravel, Zend Framework 1, Symfony 1 & 2, Slim 2, Silex, Doctrine 1 & 2, PHPUnit, Behat, phpspec, Codeception • MySQL, PostgreSQL • jQuery, Jasmine, RequireJS, Bower, npm, Webpack, ES6, PhantomJS • Bootstrap, Sass • Vagrant, Docker • Git, SVN C# 4 years • ASP.NET Web Forms, Visual Basic • jQuery, JQuery UI • SQL Server, Oracle PL/SQL • TFS Java 2 years • Spring Boot, JUnit, Hibernate, DBUnit, Servlets, JSP/JSTL, Swing • Maven • MySQL, PostgreSQL CERTIFICATIONS EDUCATION Latinux Certified Linux Operator B. S. and Master in Computer Science. Oracle Certified Java Programmer Emeritus Autonomous University of Puebla. MCTS Microsoft SQL Server & Web [1998-2003, 2003-2005] Applications OPEN SOURCE CONTRIBUTIONS AND COMMUNITY WORK My contributions to open source projects include: Drupal Console, Codeception, Eris and Couscous. I also maintain some libraries: Modules System for Slim 2, Doctrine DBAL Fixtures Generator and a Yelp Fusion API Java Client. I'm the founder an former organizer of the PHP Puebla User Group. I helped organizing dozens of workshops and technical talks. I'm currently particpating with the San Antonio Coding Challenge meetup.
    [Show full text]
  • A Presentation Service for Rapidly Building Interactive Collaborative Web Applications
    A Presentation Service for Rapidly Building Interactive Collaborative Web Applications SCIENTIA MANU E T MENTE A thesis submitted to the School of Computer Science University College University of New South Wales Australian Defence Force Academy for the degree of Doctor of Philosophy By Michael Joseph Sweeney 31 March 2008 c Copyright 2008 by Michael Joseph Sweeney i Certi¯cate of Originality I hereby declare that this submission is my own work and that, to the best of my knowledge and belief, it contains no material previously published or written by another person, nor material which to a substantial extent has been accepted for the award of any other degree or diploma at UNSW or any other educational institution, except where due acknowledgement is made in the thesis. Any contribution made to the research by colleagues, with whom I have worked at UNSW or elsewhere, during my candidature, is fully acknowledged. I also declare that the intellectual content of this thesis is the product of my own work, except to the extent that assistance from others in the project's design and conception or in style, presentation and linguistic expression is acknowledged. Michael Joseph Sweeney ii Abstract Web applications have become a large segment of the software development domain but their rapid rise in popularity has far exceeded the support in software engineer- ing. There are many tools and techniques for web application development, but the developer must still learn and use many complex protocols and languages. Products still closely bind data operations, business logic, and the user interface, limiting integration and interoperability.
    [Show full text]
  • Caching PHP Virtual Machine Opcodes for Reuse in a Secure, Multi-User, Enterprise Programming Environment
    PHP ACCELERATION IN THE CLOUD: Caching PHP Virtual Machine Opcodes for Reuse in a Secure, Multi-User, Enterprise Programming Environment by Leif Wendal Wickland A project submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science MONTANA STATE UNIVERSITY Bozeman, Montana November 2010 ©COPYRIGHT by Leif Wendal Wickland 2010 All Rights Reserved ii APPROVAL of a thesis submitted by Leif Wendal Wickland This project has been read by each member of the thesis committee and has been found to be satisfactory regarding content, English usage, format, citation, bibliographic style, and consistency and is ready for submission to the Division of Graduate Education. Dr. Rocky Ross Approved for the Department of Computer Science Dr. John Paxton Approved for the Division of Graduate Education Dr. Carl A. Fox iii STATEMENT OF PERMISSION TO USE In presenting this project in partial fulfillment of the requirements for a master’s degree at Montana State University, I agree that the Library shall make it available to borrowers under rules of the Library. If I have indicated my intention to copyright this thesis by including a copyright notice page, copying is allowable only for scholarly purposes, consistent with “fair use” as prescribed in the U.S. Copyright Law. Requests for permission for extended quotation from or reproduction of this thesis in whole or in parts may be granted only by the copyright holder. Leif Wendal Wickland November 2010 iv DEDICATION and ACKNOWLEDGEMENTS To my wife and daughter who love me more than I deserve. -LW I would like to acknowledge Erich Hannan for giving me the opportunity to wait for the other shoe to drop.
    [Show full text]
  • RAD Studio XE5 Feature Matrix | Multi-Device, True Native
    RAD Studio XE5 Multi-device, true native app development for Android and iOS Personality: D = Delphi® C = C++Builder® Feature Matrix H = HTML5 Builder Feature Personality Architect Ultimate Enterprise Professional INTEGRATED COMPILERS AND TOOLCHAINS High-performance 32-bit optimizing Delphi® native code compiler (dcc32), including High performance x86 Assembler – 32-bit inline assembler supporting the Intel® x86 instruction set (including Intel Pentium® Pro, Pentium III, Pentium 4, Intel MMX™, SIMD, Streaming D X X X X SIMD Extensions, SSE, SSE2, SSE3, SSE 4.1, SSE 4.2, AMD SSE4A and AMD® 3DNow!® Delphi 64-bit compiler for Windows D X X X X Introduced in XE3! C++ 64-bit compiler for Windows C X X X X Enhanced in XE3! Delphi OS X compiler D X X X X Enhanced in XE3! C++ OS X compiler C X X X X Enhanced in XE5! Embarcadero C++ Compiler 6.70 (bcc64) C X X X X Enhanced in XE5! Embarcadero C++ Compiler 6.70 (bcc32) C X X X X Delphi command line toolchains for Windows (dcc32, dcc64) D X X X X Introduced in XE4! Delphi command line toolchains for iOS (dccios32, dcciosarm) D X X X X Introduced in XE4! Delphi iOS ARM Compiler and Delphi iOS Compiler for iOS Simulator D X X X X New in XE5! Delphi Android ARM compiler for Device and Emulator (dccaarm) D X X X X Enhanced in XE3! Delphi command line toolchains for OS X (dccosx) D X X X X C++ command line toolchains for Windows (bcc32, bcc64) C X X X X Enhanced in XE3! C++ command line toolchains for OS X (bccosx) C X X X X Create 32-bit optimized Delphi and C++ native executables that can run on both
    [Show full text]
  • Php|Architect's Guide to PHP Design Patterns
    php|architect’s Guide to php|architect’s PHP Design Patterns Design patterns are comprehensive, well-tested solutions to common problems Guide to that developers everywhere encounter each day. Although designed for solving general programming issues, some of them have been successfully adapted to the specific needs of Web development. PHP Design Patterns php|architect’s Guide to PHP Design Patterns is the first comprehensive guide to the application of design patterns to the PHP development language. Designed to satisfy the need of enterprise-strength development, you will find this book both an excellent way to learn about design pattern and an A Practical Approach to Design Patterns irreplaceable reference for your day-to-day programming for the PHP 4 and PHP 5 Developer With coverage of more than XXX different types of patterns, including BLAH, BLAH, BLAH, BLAH and much more, this book is the ideal resource for your Jason E. Sweat enterprise development with PHP 4 and PHP 5. NanoBooks are excellent, in-depth resources created by the publishers of php|architect (http://www.phparch.com), the world’s premier magazine dedicated Guide PHP Design to Patterns php|architect’s to PHP professionals. NanoBooks focus on delivering high-quality content with in-depth analysis and expertise, centered around a single, well-defined topic and without any of the fluff of larger, more expensive books. USA $21.99 From the publishers of Canada $29.99 U.K. £16.99 Net Shelve under PHP/Web Development/Internet Programming Jason E. Sweat Jason E. 7.50 x 9.25 .309 7.50 x 9.25 PHP|ARCHITECT’S GUIDE TO PHP DESIGN PATTERNS by Jason E.
    [Show full text]