Deep Into Pharo Alexandre Bergel, Damien Cassou, St´Ephaneducasse, Jannik Laval

Total Page:16

File Type:pdf, Size:1020Kb

Deep Into Pharo Alexandre Bergel, Damien Cassou, St´Ephaneducasse, Jannik Laval Deep into Pharo Alexandre Bergel, Damien Cassou, St´ephaneDucasse, Jannik Laval To cite this version: Alexandre Bergel, Damien Cassou, St´ephaneDucasse, Jannik Laval. Deep into Pharo. Square Bracket Associates, pp.420, 2013, 978-3952334164. <hal-00858725> HAL Id: hal-00858725 https://hal.inria.fr/hal-00858725 Submitted on 5 Sep 2013 HAL is a multi-disciplinary open access L'archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destin´eeau d´ep^otet `ala diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publi´esou non, lished or not. The documents may come from ´emanant des ´etablissements d'enseignement et de teaching and research institutions in France or recherche fran¸caisou ´etrangers,des laboratoires abroad, or from public or private research centers. publics ou priv´es. Distributed under a Creative Commons Attribution - ShareAlike 4.0 International License Deep into Pharo ESUG 2013 Edition Alexandre Bergel Damien Cassou Stéphane Ducasse Jannik Laval ii This book is available as a free download from http://rmod.lille.inria.fr/deepIntoPharo/. Copyright © 2013 by Alexandre Bergel, Damien Cassou, Stéphane Ducasse and Jannik Laval. The contents of this book are protected under Creative Commons Attribution-ShareAlike 3.0 Unported license. You are free: to Share — to copy, distribute and transmit the work to Remix — to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. • For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page: creativecommons.org/licenses/ by-sa/3.0/ • Any of the above conditions can be waived if you get permission from the copyright holder. • Nothing in this license impairs or restricts the author’s moral rights. Your fair dealing and other rights are in no way affected by the above. This is a human-readable summary of the Legal Code (the full license): creativecommons.org/licenses/by-sa/3.0/legalcode Published by Square Bracket Associates, Switzerland. http://SquareBracketAssociates.org ISBN 978-3-9523341-6-4 First Edition, August, 2013. Cover art by Jérôme Bergel ([email protected]). Contents 1 Preface 1 I Libraries 2 Zero Configuration Scripts and Command-Line Handlers 7 2.1 Getting the VM and the Image . 7 2.2 Getting the VM only . 9 2.3 Handling command line options . 9 2.4 Anatomy of a handler . 12 2.5 Using ZeroConf script with Jenkins . 14 2.6 Chapter summary. 14 3 Files with FileSystem 15 3.1 Getting started . 15 3.2 Navigating a file system . 16 3.3 Opening read and write Streams . 19 3.4 Renaming, copying and deleting Files and Directories. 20 3.5 The main entry point: FileReference . 21 3.6 Looking at FileSystem internals . 26 3.7 Chapter summary. 29 4 Sockets 31 4.1 Basic Concepts . 31 4.2 TCP Client . 33 4.3 TCP Server . 37 iv Contents 4.4 SocketStream . 43 4.5 Tips for Networking Experiments . 48 4.6 Chapter summary. 49 5 The Settings Framework 51 5.1 Settings architecture . 51 5.2 The Settings Browser. 53 5.3 Declaring a setting . 56 5.4 Organizing your settings . 61 5.5 Providing more precise value domain . 65 5.6 Launching a script . 68 5.7 Setting styles management . 69 5.8 Extending the Settings Browser . 70 5.9 Chapter summary. 75 6 Regular Expressions in Pharo 77 6.1 Tutorial example — generating a site map . 78 6.2 Regex syntax . 85 6.3 Regex API . 91 6.4 Implementation notes by Vassili Bykov . 96 6.5 Chapter summary. 97 II Source Management 7 Versioning Your Code with Monticello 101 7.1 Basic usage . 102 7.2 Exploring Monticello repositories . 113 7.3 Advanced topics . 115 7.4 Getting a change set from two versions . 120 7.5 Kinds of repositories . 121 7.6 The .mcz file format . 124 7.7 Chapter summary. 126 8 Gofer: Scripting Package Loading 129 8.1 Preamble: Package management system. 129 v 8.2 What is Gofer? . 132 8.3 Using Gofer . 133 8.4 Gofer actions . 135 8.5 Some useful scripts . 141 8.6 Chapter summary. 144 9 Managing Projects with Metacello 147 9.1 Introduction . 147 9.2 One tool for each job . 148 9.3 Metacello features. 149 9.4 A simple case study . 151 9.5 Loading a Metacello Configuration . 154 9.6 Managing dependencies between packages . 155 9.7 Baselines . 157 9.8 Groups. 160 9.9 Dependencies between projects . 163 9.10 About dependency granularity . 169 9.11 Executing code before and after installation . 171 9.12 Platform specific package . 172 9.13 Milestoning development: symbolic versions . 176 9.14 Load types . 181 9.15 Conditional loading . 183 9.16 Project version attributes . 185 9.17 Chapter summary. 186 III Frameworks 10 Glamour 191 10.1 Installation and first browser . 191 10.2 Presentation, Transmission and Ports . 194 10.3 Composing and Interaction . 200 10.4 Chapter summary. 207 11 Agile Visualization with Roassal 209 11.1 Installation and first visualization . 209 vi Contents 11.2 Roassal core model . 212 11.3 Detailing shapes . 218 11.4 Edges: linking elements . 220 11.5 Layouts . 224 11.6 Events and Callbacks . 230 11.7 The interaction hierarchy . 231 11.8 Understanding a View’s Camera . 235 11.9 Beyond Pharo . 238 11.10 Chapter summary. 239 12 Scripting Visualizations with Mondrian 243 12.1 Installation and first visualization . 243 12.2 Starting with Mondrian. 244 12.3 Visualizing the collection framework . 249 12.4 Reshaping nodes . 250 12.5 Multiple edges . 251 12.6 Colored shapes . 253 12.7 More on colors . 254 12.8 Popup view . 256 12.9 Subviews . 257 12.10 Forwarding events . 258 12.11 Events . 259 12.12 Interaction . 259 12.13 Chapter summary. 261 IV Language 13 Handling Exceptions 267 13.1 Introduction . 267 13.2 Ensuring execution . 268 13.3 Handling non-local returns . 269 13.4 Exception handlers . 270 13.5 Error codes — don’t do this! . 272 13.6 Specifying which exceptions will be handled . 273 vii 13.7 Signaling an exception . 275 13.8 Finding handlers . 277 13.9 Handling exceptions . 279 13.10 Comparing outer with pass . 285 13.11 Exceptions and ensure:/ifCurtailed: interaction . 286 13.12 Example: Deprecation . 288 13.13 Example: Halt implementation . 289 13.14 Specific exceptions . 290 13.15 When not to use exceptions . 292 13.16 Exceptions implementation . 293 13.17 Ensure:’s implementation . 297 13.18 Chapter summary. 303 14 Blocks: a Detailed Analysis 305 14.1 Basics . 305 14.2 Variables and blocks . 307 14.3 Variables can outlive their defining method . 314 14.4 Returning from inside a block . 316 14.5 Contexts: representing method execution . 322 14.6 Message execution . 325 14.7 Chapter conclusion . 328 15 Exploring Little Numbers 331 15.1 Power of 2 and Numbers . 331 15.2 Bit shifting is multiplying by 2 powers . 333 15.3 Bit manipulation and access . 335 15.4 Ten’s complement of a number . 337 15.5 Negative numbers . 338 15.6 Two’s complement of a number . 339 15.7 SmallIntegers in Pharo . 342 15.8 Hexadecimal . 344 15.9 Chapter summary. 345 viii Contents 16 Fun with Floats 347 16.1 Never test equality on floats . 347 16.2 Dissecting a Float . 349 16.3 With floats, printing is inexact . 353 16.4 Float rounding is also inexact . 354 16.5 Fun with inexact representations . 355 16.6 Chapter summary. 356 V Tools 17 Profiling Applications 359 17.1 What does profiling mean? . 359 17.2 A simple example . 360 17.3 Code profiling in Pharo. 361 17.4 Read and interpret the results . 364 17.5 Illustrative analysis . 369 17.6 Counting messages . 371 17.7 Memorized Fibonacci . 371 17.8 SpaceTally for memory consumption per Class . 373 17.9 Few advices . 374 17.10 How MessageTally is implemented? . 374 17.11 Chapter summary. 375 18 PetitParser: Building Modular Parsers 377 18.1 Writing parsers with PetitParser . 377 18.2 Composite grammars with PetitParser . 386 18.3 Testing a grammar . 391 18.4 Case Study: A JSON Parser . 393 18.5 PetitParser Browser . 398 18.6 Packrat Parsers . 410 18.7 Chapter summary. 411 Chapter 1 Preface Using a programming language is so far the most convenient way for a human to tell a computer what it should do. Pharo is an object-oriented programming language, highly influenced by Smalltalk. Pharo is more than a syntax and a bunch of semantics rules as most programming languages are. Pharo comes with an extensible and flexible programming environ- ment. Thanks to its numerous object-oriented libraries and frameworks, Pharo shines for modeling and visualizing data, scripting, networking and many other ranges of applications. The very light syntax and the malleable object model of Pharo are com- monly praised. Both early learners and experienced programmers enjoy the “everything is an object” paradigm. The simplicity and expressiveness of Pharo as well as a living environment empowers programmers with a won- derful and unique sensation. Deep into Pharo is the second volume of a book series initiated with Pharo by Example1. Deep into Pharo, the book you are reading, accompa- nies the reader for a fantastic journey into exciting parts of Pharo.
Recommended publications
  • Application-Level Virtual Memory for Object-Oriented Systems Mariano Martinez Peck
    Application-Level Virtual Memory for Object-Oriented Systems Mariano Martinez Peck To cite this version: Mariano Martinez Peck. Application-Level Virtual Memory for Object-Oriented Systems. Program- ming Languages [cs.PL]. Université des Sciences et Technologie de Lille - Lille I, 2012. English. tel-00764991 HAL Id: tel-00764991 https://tel.archives-ouvertes.fr/tel-00764991 Submitted on 26 Dec 2012 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. N° d’ordre : 40886 THESE présentée en vue d’obtenir le grade de DOCTEUR en Spécialité : informatique par Mariano MARTINEZ PECK DOCTORAT DELIVRE CONJOINTEMENT PAR MINES DOUAI ET L’UNIVERSITE DE LILLE 1 Titre de la thèse : Application-Level Virtual Memory for Object-Oriented Systems Soutenue le 29/10/2012 à 10h devant le jury d’examen : Président Jean-Bernard STEFANI (Directeur de recherche – INRIA Grenoble- Rhône-Alpes) Directeur de thèse Stéphane DUCASSE (Directeur de recherche – INRIA Lille) Rapporteur Robert HIRSCHFELD (Professeur – Hasso-Plattner-Institut, Universität Potsdam, Allemagne) Rapporteur Christophe DONY (Professeur – Université Montpellier 2) Examinateur Roel WUYTS (Professeur – IMEC & Katholieke Universiteit Leuven, Belgique) co-Encadrant Noury BOURAQADI (Maître-Assistant – Mines de Douai) co-Encadrant Marcus DENKER (Chargé de recherche – INRIA Lille) co-Encadrant Luc FABRESSE (Maître-Assistant – Mines de Douai) Laboratoire(s) d’accueil : Dépt.
    [Show full text]
  • Visualage for Smalltalk Handbook Volume 2: Features
    SG24-2219-00 VisualAge for Smalltalk Handbook Volume 2: Features September 1997 SG24-2219-00 International Technical Support Organization VisualAge for Smalltalk Handbook Volume 2: Features September 1997 IBM Take Note! Before using this information and the product it supports, be sure to read the general information in Appendix A, “Special Notices.” First Edition (September 1997) This edition applies to VisualAge for Smalltalk, Versions 2, 3, and 4, for use with OS/2, AIX, and Microsoft Windows 95/NT. Comments may be addressed to: IBM Corporation, International Technical Support Organization Dept. QXXE Building 80-E2 650 Harry Road San Jose, California 95120-6099 When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you. Copyright International Business Machines Corporation 1997. All rights reserved. Note to U.S. Government Users — Documentation related to restricted rights — Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp. Contents Preface . xiii How This Redbook Is Organized ....................... xiv ITSO on the Internet ................................ xv VisualAge Support on CompuServe ..................... xvii About the Authors ................................ xvii Acknowledgments . xviii Comments Welcome . xix Chapter 1. AS/400 Connection . 1 Multiple Programs with a Single Remote Procedure Call ......... 1 RPC Part Sets Commit Boundary ........................ 1 Connection Problem with V3R1 ......................... 2 AS/400 Communication Error .......................... 2 Strange Characters on Log-on Window .................... 3 Quick Form from AS/400 Record Classes ................... 3 Communication . 4 Read Next/Previous . 4 SQL Statements . 5 Data Queues and Records ............................ 6 ODBC Requirements .
    [Show full text]
  • Gemstone/S Programming Guide
    GemStone® GemStone/S Programming Guide December 2001 GemStone/S Version 6.0 GemStone Programming Guide IMPORTANT NOTICE This manual and the information contained in it are furnished for informational use only and are subject to change without notice. GemStone Systems, Inc. assumes no responsibility or liability for any errors or inaccuracies that may appear in this manual or in the information contained in it. The manual, or any part of it, may not be reproduced, displayed, photocopied, transmitted or otherwise copied in any form or by any means now known or later developed, such as electronic, optical or mechanical means, without written authorization from GemStone Systems, Inc. Any unauthorized copying may be a violation of law. The software installed in accordance with this manual is copyrighted and licensed by GemStone Systems, Inc. under separate license agreement. This software may only be used pursuant to the terms and conditions of such license agreement. Any other use may be a violation of law. Limitations The software described in this manual is a customer-supported product. Due to the customer’s ability to change any part of a Smalltalk image, GemStone Systems, Inc. cannot guarantee that the GemStone programming environment will function with all Smalltalk images. 1988–2001 by GemStone Systems, Inc. All rights reserved. Use, duplication, or disclosure by the Government is subject to restrictions set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013. Trademarks GemStone, GemBuilder, GemConnect, GemEnterprise, andGemORB are registered trademark of GemStone Systems, Inc. The GemStone logo is a registered trademark of GemStone Systems, Inc.
    [Show full text]
  • AIDA/Scribo a Powerful CMS at Your Fingertips!
    AIDA/Scribo a powerful CMS at your fingertips! Nicolas Petton Contents Why another CMS? Architecture History Scribo at work Future Demo Contents Why another CMS? Architecture History Scribo at work Future Demo What is a CMS? Content Management System Web application (Web CMS or WCMS) Used for creating and managing HTML content : HTML pages Associated documents (images, attached files, etc) Why another CMS? Leveraging Smalltalk strengths Leveraging Aida/Web strengths CMS framework for different CMS apps For developers and end users Leveraging AIDA/Web strengths RESTFull and nice looking URLs User, group, role support Security (Access control) Components Ajax integration Contents Why another CMS? Architecture History Scribo at work Future Demo Architecture Architecture Document Attachments Versioning Access rights Lifecycle Locking Workflow Multilingual Subdocuments support References Persistence Other Document Versioning Many versions Url always points to the released version Access to all versions (http://www.site.org/article.html? version=4) Document Lifecycle States during document's life : #pending, #released, #obsolete, ... Can be extended and tailored Document Workflow Managing flow of work through document lifecycle From editing, multiperson approvals, to releasing Who when what needs to do some task Email requesting for some task Email notifications of task done Document Subdocument Vertical hierarchy of documents Folder is a subclass of Document Folder can contain documents or other folders Document can have Chapters (again subclass
    [Show full text]
  • Using Gemstone
    Chapter 17: Using GemStone Let’s get started using GemStone. 1. First we will quickly create a ‘Hello World’ application in GemStone. a. Start GemStone and the Seaside gems using the instructions from Chapter 16 (if it is not running) and launch GemTools. b. In the GemTools launcher, select Seaside, and click the ‘Login’ button. Enter your name if requested. c. Once logged in, click the ‘Tools…’ button and select 'System Browser'. d. This will open an OB System Browser showing GemStone code. Click in the first column to get a class creation template and enter the following in the text area: WAComponent subclass: 'HelloWorld' instVarNames: #() classVars: #() classInstVars: #() poolDictionaries: #[] inDictionary: '' category: 'GLASS' 14-Feb-11 Copyright © 2011 by VMware, Inc. 1 Chapter 17: Using GemStone e. This should update your System Browser to show the new class. f. Click in the third column to change the text area from a class definition to a method template. Enter and save the render method. renderContentOn: html html heading: 'Hello World!'. 14-Feb-11 Copyright © 2011 by VMware, Inc. 2 Chapter 17: Using GemStone g. Register the component as an application. Select the GemTools Launcher, click in the text area below the buttons and enter the expression to register the application. Press <Ctrl>+<D> (for ‘do-it’) to evaluate the expression. WAAdmin register: HelloWorld asApplicationAt: 'hello'. h. Open a web browser on http://glass/browse and note that ‘hello’ is listed. i. Click on the ‘hello’ link to get the application. 14-Feb-11 Copyright © 2011 by VMware, Inc. 3 Chapter 17: Using GemStone 2.
    [Show full text]
  • CONFERENCE COMPANION ESUG 2008 - 16Th International Smalltalk Conference
    ESUG-2008 CONFERENCE COMPANION ESUG 2008 - 16th International Smalltalk Conference CONTENTS Platinum Sponsors.......................................................................................................... 3 Gold Sponsors................................................................................................................ 4 Conference Location....................................................................................................... 5 Program Overview........................................................................................................... 8 Saturday, August 23...................................................................................................... 10 Sunday, August 24......................................................................................................... 10 Monday, August 25....................................................................................................... 11 Tuesday, August 26....................................................................................................... 16 Wednesday, August 27.................................................................................................. 20 Thursday, August 28...................................................................................................... 23 Friday, August 29........................................................................................................... 27 Program Overview........................................................................................................
    [Show full text]
  • Gemstone Programming Guide
    GemStone GemStone Programming Guide July 1996 GemStone Version 5.0 GemStone Programming Guide IMPORTANT NOTICE This manual and the information contained in it are furnished for informational use only and are subject to change without notice. GemStone Systems, Inc. assumes no responsibility or liability for any errors or inaccuracies that may appear in this manual or in the information contained in it. The manual, or any part of it, may not be reproduced, displayed, photocopied, transmitted or otherwise copied in any form or by any means now known or later developed, such as electronic, optical or mechanical means, without written authorization from GemStone Systems, Inc. Any unauthorized copying may be a violation of law. The software installed in accordance with this manual is copyrighted and licensed by GemStone Systems, Inc. under separate license agreement. This software may only be used pursuant to the terms and conditions of such license agreement. Any other use may be a violation of law. Limitations The software described in this manual is a customer-supported product. Due to the customer’s ability to change any part of a Smalltalk image, GemStone Systems, Inc. cannot guarantee that the GemStone programming environment will function with all Smalltalk images. Copyright by GemStone Systems, Inc. 1988–1995. All rights reserved. Use, duplication, or disclosure by the Government is subject to restrictions set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013. Trademarks GemStone is a registered trademark of GemStone Systems, Inc. Objectworks and Smalltalk-80 are trademarks of ParcPlace Systems, Inc.
    [Show full text]
  • Smalltalk Solutions 2006 Report
    Smalltalk Solutions 2006, Toronto, 24 - 26 May 2006 1 Smalltalk Solutions 2006, Toronto, 24 - 26 May 2006 I spent the days before and after the conference with a friend at Oakville, 20 miles west along the lake from Toronto. Unfortunately, I forgot to move the bottle of fine merlot I was bringing her from my hold baggage to my hand-baggage before check-in so my clothes drank it instead of my host. I advise cold-soaking before washing for removing red wine stains. (As my friend remarked while cleaning a wool jacket, when the wool is on the sheep, it can be hot or it can be wet but in the UK it is rarely both at once.) This year’s Smalltalk Solutions was combined with Linux World and Network World, and so was on a larger scale than usual, though not so large a scale as the Toronto Metro Convention Centre, whose space syntax was quite something to encounter first thing Monday morning if, like me, you arrived at the south building (where numerous coaches disgorged their contents outside the entrance), eventually worked out that you needed to cross the skywalk (over what seemed like most of downtown Toronto) to the north building, and there found numerous trucks parked inside the building, disgorging their contents into the remainder of a space so vast there did not at first seem anywhere else for the convention to be. Style In the text below, ‘I’ or ‘my’ refers to Niall Ross; speakers are referred to by name or in the third person.
    [Show full text]
  • Nested Class Modularity in Squeak/Smalltalk
    Springer, Nested Class Modularity in Squeak/Smalltalk Nested Class Modularity in Squeak/Smalltalk Modularität mit geschachtelten Klassen in Squeak/Smalltalk by Matthias Springer A thesis submitted to the Hasso Plattner Institute at the University of Potsdam, Germany in partial fulfillment of the requirements for the degree of Master of Science in ITSystems Engineering Supervisor Prof. Dr. Robert Hirschfeld Software Architecture Group Hasso Plattner Institute University of Potsdam, Germany August 17, 2015 Abstract We present the concept, the implementation, and an evaluation of Matriona, a module system for and written in Squeak/Smalltalk. Matriona is inspired by Newspeak and based on class nesting: classes are members of other classes, similarly to class instance variables. Top-level classes (modules) are globals and nested classes can be accessed using message sends to the corresponding enclosing class. Class nesting effec- tively establishes a global and hierarchical namespace, and allows for modular decomposition, resulting in better understandability, if applied properly. Classes can be parameterized, allowing for external configuration of classes, a form of dependency management. Furthermore, parameterized classes go hand in hand with mixin modularity. Mixins are a form of inter-class code reuse and based on single inheritance. We show how Matriona can be used to solve the problem of duplicate classes in different modules, to provide a versioning and dependency management mech- anism, and to improve understandability through hierarchical decomposition. v Zusammenfassung Diese Arbeit beschreibt das Konzept, die Implementierung und die Evaluierung von Matriona, einem Modulsystem für und entwickelt in Squeak/Smalltalk. Ma- triona ist an Newspeak angelehnt und basiert auf geschachtelten Klassen: Klassen, die, wie zum Beispiel auch klassenseitige Instanzvariablen, zu anderen Klassen gehören.
    [Show full text]
  • “Develop in Pharo, Deploy in Gemstone” with Seaside Johan Brichau
    10 Years later “develop in Pharo, deploy in Gemstone” with Seaside Johan Brichau - [email protected] Yesplan ? Web Application (SaaS) to manage an event venue Yesplan ? Web Application (SaaS) to manage an event venue Yesplan ? Web Application (SaaS) to manage an event venue Yesplan ? Web Application (SaaS) to manage an event venue - jQuery - jQuery-UI - KnockoutJs - D3.js - Datatables - Jasper reports - …. Yesplan ? Web Application (SaaS) to manage an event venue - jQuery - jQuery-UI - KnockoutJs - D3.js - Datatables - Jasper reports ReactJs - …. Yesplan ? • Founded by aa. and arts centre • Over 200 customers (in BE, NL, Lux, CH, UK, NO, DK, FI) • Currently 25 employees: • 5 software engineers, 1 dev ops engineer, 1 interaction designer and 1 report engineer • sales, account management, marketing, support, • Emphasis on making an application that not only works, but also is enjoyable to use Yesplan 0.1 (2009) • Yesplan calendar built using Seaside’s “full page rendering” in-place editing info bubbles title • Standard ‘component calls component’ implementation group • A lot of jQuery for animations and ajax updates group visualization • Javascript universe was “big mess” (excluding notable exceptions) • More errors than functionality in most ‘plugins’ • Bad performance and horrible engineering • Pharo + GoodsDB in production Yesplan 1.0 (2010) • Yesplan calendar with incremental ajax updates • A lot of jQuery-based scripts • SVG animations using generated Javascript • Develop in Pharo, deploy in GemStone • Pharo for development • GemStone
    [Show full text]
  • Development of an Object-Oriented DBMS
    Development of an Object-Oriented DBMS David Maier Jacob Stein Allen Otis Alan Purdy Technical Report CS/E86-005 15 April 1986 Revised June, 1988 Oregon Graduate Center 19600 S.W.von Neumann Drive Beaverton, Oregon 97006-1999 Presented at the 1986 ACM Conference on Object-Oriented Programming Systems, Languages and Applications. Development ot an Object-Oriented DBMS David Maicr Jacob Stcin Servio Logic Dcvclopment Corp. and Oregon Graduate Center Allen Otis Alan Purdy Scrvio Logic Development Corp. 15025 S.W. Koll Parkway. la Beavcrton, Oregon 97006 (503) 644-4242 Abstract We describe the results of developing the Gemstone object- traditional data management system will result in a system that oriented database server, which supports a model of objects offers further reductions in application development efforts. The similar to that of Smalltalk-80. We begin with a summary of the extensible data-typing facility of the system w~llfacilitate stor~ng goals and requirements for the system: an extensible data model information not suited to normalized relations. In add~tion,we that captures behavioral semantics, no artificial bounds on the believe that an object-oriented language can be complete enough number or size of database objects, database amenities (con- to handle database design, database access, and applications currency. transactions, recovery. associative access, authoriza- Object-like models have long been popular in CAD [CFHL. EM. tion) and an interactive development environment. Object- Ka82. Ka83. LP. MNP. SMF], and seem well suited to support oriented languages. Smalltalk in particular, answer some of these programming envtronments [PL], knowledge bases [OK], and requirements. We discuss satisfying the remaining requirements office information systems [Ah -.
    [Show full text]
  • Slidedeck Moderne Kommandozeilen Werkzeuge @ GPN18
    Moderne Kommandozeilen Werkzeuge Version 1.3 JETZT MIT NOCH MEHR TOOLS !!!11elf11!!! #GPN18 @LEYRER Alles, was zum Zeitpunkt unserer Geburt bereits vorhanden war, wird als Bestandteil der natürlichen Ordnung empfunden. Alles, was in der Zeit zwischen dem fünfzehnten und fünfunddreißigsten Lebensjahr erfunden wurde, ist aufregend, revolutionär und fördert vielleicht sogar die eigene Karriere. Alles, was nach unserem 35. Geburtstag erfunden wurde, verstößt gegen die natürliche Ordnung der Welt und wird abgelehnt. “I've come up with a set of rules that describe our reactions to technologies: 1.Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works. 2.Anything that's invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it. 3.Anything invented after you're thirty-five is against the natural order of things.” Douglas Adams, The Salmon of Doubt Plan Historie / Abgrenzung HTTPie / jq systemd aria2c dig icdiff / colordiff tracepath / mtr / oping ripgrep / fd / z iproute2 exa tmux fzf zsh pv / progress ranger Eure Vorschläge The UNIX philosophy Doug McIlroy, Bell System Technical Journal 1978 http://emulator.pdp-11.org.ru/misc/1978.07_- _Bell_System_Technical_Journal.pdf The UNIX philosophy Erstelle Programme so, dass sie eine Aufgabe richtig erfüllen. Wenn es eine neue Aufgabe gibt, beginne ein neues Programm anstatt das andere zu verkomplizieren. The UNIX philosophy Gehe davon aus, dass die Ausgaben eines Programms die Eingabe eines anderen sein können, selbst wenn Du dieses noch nicht kennst.
    [Show full text]