Deep Into Pharo

Total Page:16

File Type:pdf, Size:1020Kb

Deep Into Pharo Deep into Pharo Alexandre Bergel Damien Cassou Stéphane Ducasse Jannik Laval ii This book is available as a free download from: http://deepintopharo.com 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 Preface1 I Libraries 2 Zero Configuration Scripts and Command-Line Handlers7 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.......... 13 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............ 27 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 Start-up actions management............ 69 5.8 Extending the Settings Browser............ 71 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................... 90 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.............. 221 11.5 Layouts.................... 224 11.6 Events and Callbacks............... 230 11.7 The interaction hierarchy.............. 231 11.8 Understanding a View’s Camera........... 234 11.9 Beyond Pharo.................. 238 11.10 Chapter summary................. 239 12 Scripting Visualizations with Mondrian 241 12.1 Installation and first visualization........... 241 12.2 Starting with Mondrian............... 242 12.3 Visualizing the Collection framework......... 247 12.4 Reshaping nodes................. 248 12.5 Multiple edges.................. 249 12.6 Colored shapes.................. 251 12.7 More on colors.................. 252 12.8 Popup view................... 253 12.9 Subviews.................... 255 12.10 Forwarding events................ 256 12.11 Events..................... 257 12.12 Interaction................... 257 12.13 Chapter summary................. 259 IV Language 13 Handling Exceptions 263 13.1 Introduction................... 263 13.2 Ensuring execution................ 264 13.3 Handling non-local returns............. 265 13.4 Exception handlers................ 266 13.5 Error codes — don’t do this!............. 268 13.6 Specifying which exceptions will be handled....... 269 vii 13.7 Signaling an exception............... 271 13.8 Finding handlers................. 273 13.9 Handling exceptions................ 275 13.10 Comparing outer with pass .............. 281 13.11 Exceptions and ensure:/ifCurtailed: interaction....... 282 13.12 Example: Deprecation............... 284 13.13 Example: Halt implementation............ 285 13.14 Specific exceptions................ 286 13.15 When not to use exceptions............. 288 13.16 Exceptions implementation............. 289 13.17 Ensure:’s implementation.............. 295 13.18 Chapter summary................. 300 14 Blocks: a Detailed Analysis 303 14.1 Basics..................... 304 14.2 Variables and blocks................ 306 14.3 Variables can outlive their defining method....... 313 14.4 Returning from inside a block............ 314 14.5 Contexts: representing method execution........ 320 14.6 Message execution................ 323 14.7 Chapter conclusion................ 326 15 Exploring Little Numbers 329 15.1 Power of 2 and Numbers.............. 329 15.2 Bit shifting is multiplying by 2 powers......... 331 15.3 Bit manipulation and access............. 333 15.4 Ten’s complement of a number............ 335 15.5 Negative numbers................ 336 15.6 Two’s complement of a number............ 337 15.7 SmallIntegers in Pharo............... 340 15.8 Hexadecimal.................. 342 15.9 Chapter summary................. 342 viii Contents 16 Fun with Floats 345 16.1 Never test equality on floats............. 345 16.2 Dissecting a Float................. 347 16.3 With floats, printing is inexact............ 351 16.4 Float rounding is also inexact............ 352 16.5 Fun with inexact representations........... 353 16.6 Chapter summary................. 354 V Tools 17 Profiling Applications 357 17.1 What does profiling mean?............. 357 17.2 A simple example................. 358 17.3 Code profiling in Pharo............... 359 17.4 Read and interpret the results............ 362 17.5 Illustrative analysis................ 367 17.6 Counting messages................ 369 17.7 Memorized Fibonacci............... 369 17.8 SpaceTally for memory consumption per Class...... 371 17.9 Few advices................... 372 17.10 How MessageTally is implemented?.......... 372 17.11 Chapter summary................. 373 18 PetitParser: Building Modular Parsers 375 18.1 Writing parsers with PetitParser........... 375 18.2 Composite grammars with PetitParser......... 384 18.3 Testing a grammar................ 389 18.4 Case Study: A JSON Parser............. 391 18.5 PetitParser Browser................ 397 18.6 Packrat Parsers.................. 409 18.7 Chapter summary................. 409 19 Biographies 411 Chapter 1 Preface “Smalltalk is well known as an excellent tool for agile and exploratory programming. In this book the authors present a new dialect of Smalltalk called Pharo that has been specifically designed for inventive developers. The authors are key members of the Pharo team and accom- plished Object Oriented educators, researchers and designers. Numer- ous Smalltalk projects from the authors and others have been ported to Pharo. Enjoy Deep Into Pharo” - Dave Thomas1
Recommended publications
  • Liste Von Programmiersprachen
    www.sf-ag.com Liste von Programmiersprachen A (1) A (21) AMOS BASIC (2) A# (22) AMPL (3) A+ (23) Angel Script (4) ABAP (24) ANSYS Parametric Design Language (5) Action (25) APL (6) Action Script (26) App Inventor (7) Action Oberon (27) Applied Type System (8) ACUCOBOL (28) Apple Script (9) Ada (29) Arden-Syntax (10) ADbasic (30) ARLA (11) Adenine (31) ASIC (12) Agilent VEE (32) Atlas Transformatikon Language (13) AIMMS (33) Autocoder (14) Aldor (34) Auto Hotkey (15) Alef (35) Autolt (16) Aleph (36) AutoLISP (17) ALGOL (ALGOL 60, ALGOL W, ALGOL 68) (37) Automatically Programmed Tools (APT) (18) Alice (38) Avenue (19) AML (39) awk (awk, gawk, mawk, nawk) (20) Amiga BASIC B (1) B (9) Bean Shell (2) B-0 (10) Befunge (3) BANCStar (11) Beta (Programmiersprache) (4) BASIC, siehe auch Liste der BASIC-Dialekte (12) BLISS (Programmiersprache) (5) Basic Calculator (13) Blitz Basic (6) Batch (14) Boo (7) Bash (15) Brainfuck, Branfuck2D (8) Basic Combined Programming Language (BCPL) Stichworte: Hochsprachenliste Letzte Änderung: 27.07.2016 / TS C:\Users\Goose\Downloads\Softwareentwicklung\Hochsprachenliste.doc Seite 1 von 7 www.sf-ag.com C (1) C (20) Cluster (2) C++ (21) Co-array Fortran (3) C-- (22) COBOL (4) C# (23) Cobra (5) C/AL (24) Coffee Script (6) Caml, siehe Objective CAML (25) COMAL (7) Ceylon (26) Cω (8) C for graphics (27) COMIT (9) Chef (28) Common Lisp (10) CHILL (29) Component Pascal (11) Chuck (Programmiersprache) (30) Comskee (12) CL (31) CONZEPT 16 (13) Clarion (32) CPL (14) Clean (33) CURL (15) Clipper (34) Curry (16) CLIPS (35)
    [Show full text]
  • Sindarin: a Versatile Scripting API for the Pharo Debugger
    Sindarin: A Versatile Scripting API for the Pharo Debugger Thomas Dupriez Guillermo Polito Steven Costiou Univ. Lille, CNRS, Centrale Lille, CNRS - UMR 9189 - CRIStAL, Univ. Inria, Univ. Lille, CNRS, Centrale Inria, UMR 9189 - CRIStAL Lille, Centrale Lille, Inria Lille, UMR 9189 - CRIStAL France France France [email protected] [email protected] [email protected] Vincent Aranega Stéphane Ducasse Univ. Lille, CNRS, Centrale Lille, Inria, Univ. Lille, CNRS, Centrale Inria, UMR 9189 - CRIStAL Lille, UMR 9189 - CRIStAL France France [email protected] [email protected] Abstract Studies and work on debugging acknowledge that main- Debugging is one of the most important and time consuming stream debuggers are not well adapted to several debugging activities in software maintenance, yet mainstream debuggers scenarios [3, 27, 31]. This has led to the appearance of new de- are not well-adapted to several debugging scenarios. This bugging techniques proposing to augment traditional interac- has led to the research of new techniques covering specific tive debuggers with, e.g., stateful breakpoints [4], control-flow families of complex bugs. Notably, recent research proposes aware breakpoints [5], object-centric breakpoints [10, 34], the to empower developers with scripting DSLs, plugin-based and automatic insertion of breakpoints based on dynamic execu- moldable debuggers. However, these solutions are tailored to tions [45], or declarative statements from the developer [21]. specific use-cases, or too costly for one-time-use scenarios. A line of research has also started to study scripting APIs to In this paper we argue that exposing a debugging scripting empower developers to implement debugging scripts adapted interface in mainstream debuggers helps in solving many chal- to their needs.
    [Show full text]
  • Pharo by Example
    Pharo by Example Andrew P. Black Stéphane Ducasse Oscar Nierstrasz Damien Pollet with Damien Cassou and Marcus Denker Version of 2009-10-11 ii This book is available as a free download from http://PharoByExample.org. Copyright © 2007, 2008, 2009 by Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet. 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-4-0 First Edition, October, 2009.
    [Show full text]
  • Dynamic Object-Oriented Programming with Smalltalk
    Dynamic Object-Oriented Programming with Smalltalk 1. Introduction Prof. O. Nierstrasz Autumn Semester 2009 LECTURE TITLE What is surprising about Smalltalk > Everything is an object > Everything happens by sending messages > All the source code is there all the time > You can't lose code > You can change everything > You can change things without restarting the system > The Debugger is your Friend © Oscar Nierstrasz 2 ST — Introduction Why Smalltalk? > Pure object-oriented language and environment — “Everything is an object” > Origin of many innovations in OO development — RDD, IDE, MVC, XUnit … > Improves on many of its successors — Fully interactive and dynamic © Oscar Nierstrasz 1.3 ST — Introduction What is Smalltalk? > Pure OO language — Single inheritance — Dynamically typed > Language and environment — Guiding principle: “Everything is an Object” — Class browser, debugger, inspector, … — Mature class library and tools > Virtual machine — Objects exist in a persistent image [+ changes] — Incremental compilation © Oscar Nierstrasz 1.4 ST — Introduction Smalltalk vs. C++ vs. Java Smalltalk C++ Java Object model Pure Hybrid Hybrid Garbage collection Automatic Manual Automatic Inheritance Single Multiple Single Types Dynamic Static Static Reflection Fully reflective Introspection Introspection Semaphores, Some libraries Monitors Concurrency Monitors Categories, Namespaces Packages Modules namespaces © Oscar Nierstrasz 1.5 ST — Introduction Smalltalk: a State of Mind > Small and uniform language — Syntax fits on one sheet of paper >
    [Show full text]
  • Preserving Instance State During Refactorings in Live Environments Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse
    Preserving Instance State during Refactorings in Live Environments Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse To cite this version: Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse. Preserving In- stance State during Refactorings in Live Environments. Future Generation Computer Systems, Else- vier, In press, 10.1016/j.future.2020.04.010. hal-02541754 HAL Id: hal-02541754 https://hal.archives-ouvertes.fr/hal-02541754 Submitted on 14 Apr 2020 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. Preserving Instance State during Refactorings in Live Environments Pablo Tesonea,b,∗, Guillermo Politoc, Luc Fabresseb, Noury Bouraqadib, Stéphane Ducassea aInria Lille-Nord Europe, 40 Avenue Halley, Villeneuve d’Ascq, France bUnité de Recherche Informatique et Automatique, IMT Lille Douai, 764 Boulevard Lahure, Douai, France cUniv. Lille, CNRS, Centrale Lille, Inria, UMR 9189 - CRIStAL - Centre de Recherche en Informatique Signal et Automatique de Lille, F-59000 Lille, France Abstract An important activity of software evolution consists in applying refactorings to enhance the quality of the code without changing its behaviour. Having a proper refactoring tool is a must-to in any professional development environment.
    [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]
  • ESUG 2012 Report
    CS21 and ESUG 23, Brescia, July 13th - 17th, 2015 1 CS21 and ESUG 23, Brescia, July 13th - 17th, 2015 This document contains my report of the ESUG conference in Brescia, July 13th - 17th, 2015 (and brief remarks on the Camp Smalltalk on the Sunday before it). As there were parallel tracks, I could not attend all talks. At the end, I also report a 2015 UK Smalltalk User Group meeting I attended. Style ‘I’ or ‘my’ refers to Niall Ross; speakers (other than myself) are referred to by name or in the third person. A question asked in or after a talk is prefixed by ‘Q.’ (sometimes I name the questioner; often I was too busy noting their question). A question not beginning with ‘Q.’ is a rhetorical question asked by the speaker (or is just my way of summarising their meaning). Author’s Disclaimer and Acknowledgements These reports give my personal view. No view of any other person or organisation with which I am connected is expressed or implied. The talk descriptions were typed while I was trying to keep up with and understand what the speakers were saying, so may contain errors of fact or clarity. I apologise for any inaccuracies, and to any participants whose names or affiliations I failed to note down. If anyone spots errors or omissions, email me and corrections may be made. My thanks to the conference organisers and the speakers whose work gave me something to report. My own talk is written up at much greater length than the others. Venue The accommodation was in old town of Brescia (called Brixia in Roman times).
    [Show full text]
  • Pharo by Example
    Portland State University PDXScholar Computer Science Faculty Publications and Computer Science Presentations 2009 Pharo by Example Andrew P. Black Portland State University, [email protected] Stéphane Ducasse Oscar Nierstrasz University of Berne Damien Pollet University of Lille Damien Cassou See next page for additional authors Let us know how access to this document benefits ouy . Follow this and additional works at: http://pdxscholar.library.pdx.edu/compsci_fac Citation Details Black, Andrew, et al. Pharo by example. 2009. This Book is brought to you for free and open access. It has been accepted for inclusion in Computer Science Faculty Publications and Presentations by an authorized administrator of PDXScholar. For more information, please contact [email protected]. Authors Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, and Marcus Denker This book is available at PDXScholar: http://pdxscholar.library.pdx.edu/compsci_fac/108 Pharo by Example Andrew P. Black Stéphane Ducasse Oscar Nierstrasz Damien Pollet with Damien Cassou and Marcus Denker Version of 2009-10-28 ii This book is available as a free download from http://PharoByExample.org. Copyright © 2007, 2008, 2009 by Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet. 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).
    [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]
  • Lumi`Ere: a Novel Framework for Rendering 3D Graphics in Smalltalk
    banner above paper title Lumiere` : a Novel Framework for Rendering 3D graphics in Smalltalk Fernando Olivero, Michele Lanza, Romain Robbes REVEAL@ Faculty of Informatics - University of Lugano, Switzerland ffernando.olivero,michele.lanza,[email protected] Abstract One of the cornerstones of Lumiere` is to hinge on the metaphor To render 3D graphics there is a number of different frameworks of a stage. We believe this helps to make the framework and its written in Smalltalk. While most of them provide powerful facil- usage more intuitive, as metaphors are powerful tools to assist ities, many of them are outdated, abandoned, undocumented or the usage of abstract concepts: If a framework is built around an heavyweight. intuitive metaphor which maps abstracts concepts to real-world In this paper we present Lumiere` , a novel lightweight frame- objects, programmers can obtain an immediate mental model of work for rendering 3D graphics using OpenGL based on a stage the framework’s domain model, thus easing the understanding and metaphor. Lumiere` is implemented using the Pharo IDE. In its cur- usage of the framework. rent state it supports basic and composite shapes to populate 3D To apply this concept to 3D graphics, Lumiere` ’s stage metaphor scenes, features a camera, and a lighting model. implies that all graphics are produced by cameras taking pictures We illustrate the usage of Lumiere` with Gaucho, an environ- of 3D shapes lit by the lights of the stage. A stage provides the ment for visual programming we are currently building. setting for taking pictures of a composition of visual objects we call micro-worlds.
    [Show full text]
  • Storm File Download Permission in Ranger Storm Ranger Policies
    storm file download permission in ranger storm_ranger_policies. Each item of the permission list has the following attributes: Name req? Description users yes if groups is undefined A list of users this policy will apply on. May be empty if some groups are defined. groups yes if users is undefined A list of groups this policy will apply on. May be empty if some users are defined. accesses yes The list of rights granted by this policy. May include submitTopology , fileUpload , fileDownload , killTopology , rebalance , activate , deactivate , getTopologyConf , getTopology , getUserTopology , getTopologyInfo and uploadNewCredentials . delegate_admin no When a policy is assigned to a user or a group of users those users become the delegated admin. The delegated admin can update, delete the policies. Default: no. Examples. This example will: Grant the right to 'stormrunner' user to launch new topology. Grant all rights to 'stormrunner' on all topologies where name begin with 'storm'. Note the trick on the first definition: Adding a 'dummy1' prevent this rule to clash with another one applying on all topologies (Ranger does to allow two policies to apply on the same set of topologies). Permission Denied #2088. ranger version: ranger 1.9.3 Python version: 2.7.16 (default, Jun 5 2020, 22:59:21) [GCC 4.2.1 Compatible Apple LLVM 11.0.3 (clang- 1103.0.29.20) (-macos10.15-objc- Locale: None.None Current file: '/Users/aleksandr.kabolov/.CFUserTextEncoding' Traceback (most recent call last): File "/usr/local/Cellar/ranger/1.9.3/libexec/ranger/core/main.py",
    [Show full text]