BUILDING DECLARATIVE GUIS WITH CLOJURE, JAVAFX AND FN-FX DR. NILS BLUM-OESTE
|
|
- Arron Harris
- 6 years ago
- Views:
Transcription
1 BUILDING DECLARATIVE GUIS WITH CLOJURE, JAVAFX AND FN-FX DR. NILS BLUM-OESTE
2 INTRODUCTION AND WHY? Reasons to build a desktop app with JavaFX
3 WHY DO I NEED A SOLUTION FOR DESKTOP GUIS? Working on an application for statistical analysis in science and research
4 WHY NOT ELECTRON? (a.k.a. "What the hell is wrong with you?")
5 WHAT IS JAVAFX?
6 HOW TO USE FN-FX Application state, declaring UIs and handling events
7 ENTRY POINT AND STATE MANAGEMENT (def app-state (atom {})) (defn start [] (let [handler-fn #(swap! app-state handle-event %) ui-state (agent (fx-dom/app handler-fn))] (add-watch app-state :ui (fn [ _ new-state] (send ui-state #(fx-dom/update-app % (stage new-state)))))))
8 UI DECLARATION (defui Stage (render [this {:keys [project-name] :as state}] (controls/stage :title "App Title" :shown true :scene (controls/scene :root (controls/button :text (str "Show " project-name))))))
9 UI EVENTS Declaration: (controls/button :text "Open file" :on-action {:event :open-file :fn-fx/include {:fn-fx/event #{:target}}}) (defmulti handle-event (fn [_ {:keys [event]}] event)) Handling: (defmethod handle-event :open-file [state {:keys [fn-fx/includes]}] (let [window (-> (get-in includes [:fn-fx/event :target]).getscene.getwindow) dialog (doto (FileChooser.) (.settitle "Open file")) file (util/run-and-wait (.showopendialog dialog window))] (assoc state :file file)))
10 HOW DOES IT WORK? Reflection and Diffing!
11 (defui Table (render [this {:keys [data]}] (controls/table-view :columns (map-indexed (fn [index name] (table-column {:index index :name name})) (first data)) :items (rest data) :placeholder (controls/label :text "Import some data first")))) REFLECTION: EXAMPLE
12 REFLECTION: IMPLEMENTATION fn-fx.render-core: (defn get-setter [^Class klass prop] (let [prop-name (str "set" (util/kabob->class (name prop))) ^Method method (->> (.getmethods klass) (filter #(= prop-name (.getname ^Method %))) (filter #(= 1 (count (.getparameters ^Method %)))) first) _ (assert method (str "No property " prop " on type " klass)) to-type (.gettype ^Parameter (first (.getparameters method)))] (.setaccessible method true) (fn [inst val] (let [^objects arr (make-array Object 1)] (aset arr 0 (convert-value val to-type)) (.invoke method inst arr)))))
13 DIFFING: RECURSIVELY DIFF UI-STATE fn-fx.diff: (defn diff [dom a b] (let [refresh-node (fn [node compo-a compo-b] (set-once! compo-b :dom-node node) (diff-component dom node (:props compo-a) (:props compo-b)) node) new-node (fn [compo] (let [node (create-component! dom (:type compo))] (assert node "No Node returned by create-component!") (refresh-node node nil compo)))] (condp = [(val-type a) (val-type b)] [:nil :comp] (->Created (new-node b)) [:val :val] (if (= a b) (->Noop b)
14 MY CONCLUSIONS SO FAR halgari/fn-fx brings the "React model" to the JVM no major road blocks so far, but: fn-fx in alpha very little documentation, check the example code some changes to fn-fx were required some non-trivial issues to work around I will continue working with it
15 THANKS! Full demo on GitHub: bit.ly/fnfx-example Need a freelancer? nils@blum-oeste.de Time for your questions!
16 SUPPLEMENTARY
17 HOW DOES IT LOOK?
18 EVENT INCLUDES (defn gather-event-data "Given an instance object and and event, gather information from the template's include specs and add them to the template." [inst event {:keys [fn-fx/include] :as template}] (assoc template :fn-fx/includes (reduce-kv (fn [acc id props] (if-let [node (if (= id :fn-fx/event) event (tree-search/find-nearest-by-id inst (str id)))] (assoc acc id (reduce (fn [acc prop] (assoc acc prop (get-property node prop)))
19 MANDATORY CONSTRUCTOR ARGUMENTS (defui Plot (render [this {:keys [data]}] (diff/component [:javafx.scene.chart.scatterchart [] [(javafx.scene.chart.numberaxis.) (javafx.scene.chart.numberaxis.)]] {:data (data->series data)})))
20 INITIALIZATION AND FORCE CLOSING PROCESS (ns fn-fx-ui.javafx-init (:require [fn-fx-ui.core :as core]) (:gen-class :extends javafx.application.application)) (defn -start [app stage] (core/start {:root-stage? false})) javafx-init.clj: (defn -main [& args] (javafx.application.application/launch fn_fx_ui.javafx_init (into-array String args))) (defn force-exit [root-stage?] (reify javafx.event.eventhandler (handle [this event] (when-not root-stage? (println "Closing application") (javafx.application.platform/exit))))) core.clj:
Reagent. a ClojureScript interface to React. React Amsterdam Meetup 12 Feb. 2015
Reagent a ClojureScript interface to React React Amsterdam Meetup 12 Feb. 2015 Michiel Borkent Twitter: @borkdude Email: michielborkent@gmail.com Clojure(Script) developer at Clojure since 2009 Former
More informationClojureScript. as a compilation target to JS. Michiel Vijay FP AMS October 16th 2014
ClojureScript as a compilation target to JS Michiel Borkent @borkdude Vijay Kiran @vijaykiran FP AMS October 16th 2014 This work is licensed under a Creative Commons Attribution 4.0 International License.
More informationIntroduction Basics Concurrency Conclusion. Clojure. Marcel Klinzing. December 13, M. Klinzing Clojure 1/18
Clojure Marcel Klinzing December 13, 2012 M. Klinzing Clojure 1/18 Overview/History Functional programming language Lisp dialect Compiles to Java Bytecode Implemented in Java Created by Rich Hickey Version
More informationWhat if Type Systems were more like Linters?
Typed Clojure An optional type system for Clojure What if Type Systems were more like Linters? Ambrose Bonnaire-Sergeant Me A Practical Optional Type System for Clojure (2012) Typed Clojure Indiegogo Campaign
More informationMichiel DomCode, May 26th 2015
ClojureScript ReactJS Michiel Borkent @borkdude DomCode, May 26th 2015 Michiel Borkent (@borkdude) Clojure(Script) developer at Clojure since 2009 Former lecturer, taught Clojure Agenda Part 1: ClojureScript
More informationLazytest Better Living Through Protocols. Stuart Sierra. Clojure NYC April 15, 2010
Lazytest Better Living Through Protocols Stuart Sierra Clojure NYC April 15, 2010 @stuartsierra #clojure clojure.core: tests as metadata (defn add ([x y] (+ x y)) {:test (fn [] (assert (= 7 (add 3 4))))})
More informationCPL 2016, week 10. Clojure functional core. Oleg Batrashev. April 11, Institute of Computer Science, Tartu, Estonia
CPL 2016, week 10 Clojure functional core Oleg Batrashev Institute of Computer Science, Tartu, Estonia April 11, 2016 Overview Today Clojure language core Next weeks Immutable data structures Clojure simple
More informationThis tutorial is designed for all those software professionals who are keen on learning the basics of Clojure and how to put it into practice.
About the Tutorial Clojure is a high level, dynamic functional programming language. It is designed, based on the LISP programming language, and has compilers that makes it possible to be run on both Java
More informationJune 27, 2014 EuroClojure 2014 Krakow, Poland. Components. Just Enough
June 27, 2014 EuroClojure 2014 Krakow, Poland Components Just Enough Structure @stuartsierra Presentation Business Logic DB SMS Email Presentation Thread Pool Business Logic Queues Public API Private API
More informationClojure. A (not-so-pure) functional approach to concurrency. Paolo Baldan Linguaggi per il Global Computing AA 2016/2017
Clojure A (not-so-pure) functional approach to concurrency Paolo Baldan Linguaggi per il Global Computing AA 2016/2017 In the words of the inventor Functional programming (rooted in Lisp, from 60s old
More informationClojure Concurrency Constructs. CSCI 5828: Foundations of Software Engineering Lecture 12 10/02/2014
Clojure Concurrency Constructs CSCI 5828: Foundations of Software Engineering Lecture 12 10/02/2014 1 Goals Cover the material presented in Chapters 3 & 4 of our concurrency textbook! Books examples from
More information.consulting.solutions.partnership. Clojure by Example. A practical introduction to Clojure on the JVM
.consulting.solutions.partnership Clojure by Example A practical introduction to Clojure on the JVM Clojure By Example 1 Functional Progamming Concepts 3 2 Clojure Basics 4 3 Clojure Examples 5 4 References
More informationClojure is. A dynamic, LISP-based. programming language. running on the JVM
(first '(Clojure.)) Clojure is A dynamic, LISP-based programming language running on the JVM Origin 2007, Rich Hickey.. 1958, John McCarthy Features Functional Homoiconic Immutability (persistent data
More informationMacro #clojureconj
Macro Club @stuartsierra #clojureconj 500 sq ft I ( ) If it seems simple, you're probably doing it wrong. You can pry EMACS from my cold, dead fingers. The First Rule of Macro Club You do not
More informationWhy Prismatic Goes Faster With Clojure
Why Prismatic Goes Faster With Clojure One Slide Summary Fine-grained Monolithic 1. Composable > Frameworks Abstractions 2. lets you make FCA 3.
More information1.3.4 case and case* macro since 1.2. Listing Conditional Branching, Fast Switch. Listing Contract
1.3.4 case and case* macro since 1.2 Listing 3. 14. Conditional Branching, Fast Switch (case [expression & clauses]) case is a conditional statement which accepts a list of testing conditions to determine
More informationPOETRY OF PROGRAMMING CODE READING EXERCISES IN CLOJURE V
POETRY OF PROGRAMMING CODE READING EXERCISES IN CLOJURE V2018.6.6 Contents 1. Introduction 1 1.1. Why do we need to read code? 1 1.2. Instructions 2 1.3. Recommended method 2 2. Function composition first
More informationReact. HTML code is made up of tags. In the example below, <head> is an opening tag and </head> is the matching closing tag.
Document Object Model (DOM) HTML code is made up of tags. In the example below, is an opening tag and is the matching closing tag. hello The tags have a tree-like
More informationThe Curious Clojureist
The Curious Clojureist NEAL FORD director / software architect meme wrangler ThoughtWorks nford@thoughtworks.com 2002 Summit Boulevard, Atlanta, GA 30319 nealford.com thoughtworks.com memeagora.blogspot.com
More informationClojure for OOP folks Stefan innoq
Clojure for OOP folks Stefan Tilkov @stilkov innoq 1 Motivation 2 Syntax Idioms 3 OOP Thinking model domains with classes & interfaces encapsulate data in objects prefer specific over generic solutions
More informationFunctional programming is a productive
Editor: Steve Vinoski vinoski@ieee.org The Functional Web ClojureScript: Functional Programming for JavaScript Platforms Mark McGranaghan Heroku Functional programming is a productive approach to writing
More informationClojure Lisp for the Real clojure.com
Clojure Lisp for the Real World @stuartsierra clojure.com Stuart Sierra Relevance, Inc. Clojure/core Clojure contributor Values Values 3 Values 3 + 2 = 5 Values let x = 3 Values let x = 3 let x = 5 Values
More informationClojure: Enemy of the State
Clojure: Enemy of the State * * Not actually an enemy of the state, or state in general. :) Alex Miller @puredanger Roadmap Values vs objects Collections Sequences Generic data interfaces Identity and
More informationStuart
Clojure Time Stuart Halloway stu@clojure.com @stuarthalloway Copyright 2007-2010 Relevance, Inc. This presentation is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United
More informationWeek 2: The Clojure Language. Background Basic structure A few of the most useful facilities. A modernized Lisp. An insider's opinion
Week 2: The Clojure Language Background Basic structure A few of the most useful facilities A modernized Lisp Review of Lisp's origins and development Why did Lisp need to be modernized? Relationship to
More informationSwift. Introducing swift. Thomas Woodfin
Swift Introducing swift Thomas Woodfin Content Swift benefits Programming language Development Guidelines Swift benefits What is Swift Benefits What is Swift New programming language for ios and OS X Development
More informationTool-assisted spec development
Typed Clojure Tool-assisted spec development Ambrose Bonnaire-Sergeant Sam Tobin-Hochstadt Spec is awesome Expressive specification language Runtime instrumentation Generative testing Documentation Parsing
More informationApproaches to wrapping React. Thursday 3 September 15
Approaches to wrapping React Om Reagent Quiescent etc. Call it when anything changes One big update method App Logic In-memory DB Advantages Doesn t touch the network i.e. fast Doesn t touch disk Disadvantages
More informationDeveloping applications using JavaFX
Developing applications using JavaFX Cheshta, Dr. Deepti Sharma M.Tech Scholar, Dept. of CSE, Advanced Institute of Technology & Management, Palwal, Haryana, India HOD, Dept. of CSE, Advanced Institute
More informationFunctional Programming and the Web
June 13, 2011 About Me Undergraduate: University of Illinois at Champaign-Urbana PhD: Penn State University Retrofitting Programs for Complete Security Mediation Static analysis, type-based compiler Racker:
More informationConversions and Overloading : Overloading
Conversions and Overloading : First. Java allows certain implicit conversations of a value of one type to a value of another type. Implicit conversations involve only the primitive types. For example,
More informationFRP in ClojureScript with Javelin
FRP in ClojureScript with Javelin Alan Dipert @alandipert THE freshdiet Fresh, Gourmet, Delivered Daily nginx jetty syslog-ng redis postgres fn fn val val val (+ 1 (* 2 3)) + * 1 2 3 Applicative Evaluation
More informationCSC 161 LAB 3-1 JAVA FX CALCULATOR
CSC 161 LAB 3-1 JAVA FX CALCULATOR PROFESSOR GODFREY MUGANDA 1. Introduction and Overview In this lab, you are going to use JavaFX to create a calculator that can add, subtract, divide, multiply, and find
More informationPractically Functional. Daniel Spiewak
Practically Functional Daniel Spiewak whoami Author of Scala for Java Refugees and other articles on Scala and FP Former editor Javalobby / EclipseZone Engaged in academic research involving Scala DSLs
More informationCSc 520. Gofer III. Accumulative Recursion. Accumulative Recursion... Stack Recursion. Principles of Programming Languages. Christian Collberg
Slide 7 2 Accumulative Recursion We can sometimes get a more efficient solution by giving the function one extra argument, the accumulator, which is used to gather the final result. We will need to use
More informationJava How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.
Java How to Program, 10/e Education, Inc. All Rights Reserved. Each class you create becomes a new type that can be used to declare variables and create objects. You can declare new classes as needed;
More informationThesis Proposal: Typed Clojure in Theory and Practice
Thesis Proposal: Typed Clojure in Theory and Practice Ambrose Bonnaire-Sergeant August 13, 2018 Abstract We present Typed Clojure, an optional type system for the Clojure programming language. This thesis
More informationGetting Started with ReactJS
Getting Started with ReactJS By Juned Laliwala About this ReactJS e-book. Basic Understanding of ReactJS Concept of JSX Use of Refs and Keys Practical Demonstrations Animation in ReactJS @2016 Attune World
More informationContinuations and Continuation-Passing Style
Continuations and Continuation-Passing Style Lecture 4 CS 390 1/16/08 Goal Weʼre interested in understanding how to represent the state of a co-routine Insight into what a thread really means How fundamental
More informationSIP Normalization Script Configuration
CHAPTER 81 The following topics cover Cisco Unified Communications Manager SIP normalization script configuration: Settings, page 81-1 Importing SIP Normalization Scripts, page 81-5 Related Topics, page
More informationMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study Johann M. Kraus and Hans A. Kestler AG Bioinformatics and Systems Biology Institute of Neural Information Processing University of Ulm 29.06.2009 Outline
More informationCSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Sections p.
CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer Science (Arkoudas and Musser) Sections 10.1-10.3 p. 1/106 CSCI.6962/4962 Software Verification Fundamental Proof Methods in Computer
More informationExceptions & a Taste of Declarative Programming in SQL
Exceptions & a Taste of Declarative Programming in SQL David E. Culler CS8 Computational Structures in Data Science http://inst.eecs.berkeley.edu/~cs88 Lecture 12 April 18, 2016 Computational Concepts
More informationMcLab tools on the web. Deepanjan Roy Supervisor: Prof. Laurie Hendren
McLab tools on the web Deepanjan Roy Supervisor: Prof. Laurie Hendren Brief overview of the McLab project LANGUAGES, COMPILERS, AND VIRTUAL MACHINES Dynamic Scientific Programming Languages (Especially
More informationSymbols. abstractions, implementing, 270 through indirection, 77 with macros, 183 abstract syntax tree (AST), 149
Index Symbols + (addition operator), 36 37 @, 155, 197 >!! (blocking put), 235 238
More informationInternet Accessible Mathematical Computation A Progress Report
Internet Accessible Mathematical Computation A Progress Report Paul S. Wang Institute for Computational Mathematics Kent State University http://horse.mcs.kent.edu/ pwang FMC-1 Contents Math Communication
More informationFunction Binding. Special thanks to: John Edwards. Randy Gaul
Function Binding Special thanks to: John Edwards Randy Gaul Introspection Generic Variable Function Binding Simple Case Uses Demo Overview Function Binding Introspection Run-time knows little about types
More informationSeminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh.
Scientific Computing Aachen, 6 Feb 2014 navid.abbaszadeh@rwth-aachen.de Overview Trends Introduction Paradigms, Data Structures, Syntax Compilation & Execution Concurrency Model Reference Types Performance
More informationCOMP519 Web Programming Lecture 21: Python (Part 5) Handouts
COMP519 Web Programming Lecture 21: Python (Part 5) Handouts Ullrich Hustadt Department of Computer Science School of Electrical Engineering, Electronics, and Computer Science University of Liverpool Functions
More informationClojure Web Security. FrOSCon Joy Clark & Simon Kölsch
Clojure Web Security FrOSCon 2016 Joy Clark & Simon Kölsch Clojure Crash Course (println "Hello Sankt Augustin!") Lisp + JVM Functional programming language Simple programming model Immutable Data Structures
More information1 CS480W Quiz 6 Solution
1 CS480W Quiz 6 Solution Date: Fri Dec 07 2018 Max Points: 15 Important Reminder As per the course Academic Honesty Statement, cheating of any kind will minimally result in receiving an F letter grade
More informationIntroduction to yada. Malcolm
Introduction to yada Malcolm Sparks @malcolmsparks 304 Not Modified RangeRequests Expires uthorization Weak vs Strong 405 Method Not Allowed Referrer AcceptLanguage Quality Values IfMatch Allow Continue
More informationBirkbeck (University of London) Software and Programming 1 In-class Test Mar Answer ALL Questions
Birkbeck (University of London) Software and Programming 1 In-class Test 2.1 16 Mar 2017 Student Name Student Number Answer ALL Questions 1. What output is produced when the following Java program fragment
More informationMultimedia-Programmierung Übung 7
Multimedia-Programmierung Übung 7 Ludwig-Maximilians-Universität München Sommersemester 2009 Ludwig-Maximilians-Universität München Multimedia-Programmierung 7-1 Today Introduction to No more Python :ʼ-(
More informationHedge The New Serverless Framework By Janne Kujanpää
Hedge The New Serverless Framework By Janne Kujanpää Introduction INTRODUCTION Who am I Janne Kujanpää Junior Consultant Hedge Developer Twitter: @jikuja GitHub: @jikuja Siili Solutions www: siili.com
More informationIntroduction to Functional Programming and basic Lisp
Introduction to Functional Programming and basic Lisp Based on Slides by Yves Lespérance & Peter Roosen-Runge 1 Functional vs Declarative Programming declarative programming uses logical statements to
More informationProgramming Safe Agents in Blueprint. Alex Muscar University of Craiova
Programming Safe Agents in Blueprint Alex Muscar University of Craiova Programmers are craftsmen, and, as such, they are only as productive as theirs tools allow them to be Introduction Agent Oriented
More informationLecture #12: Quick: Exceptions and SQL
UC Berkeley EECS Adj. Assistant Prof. Dr. Gerald Friedland Computational Structures in Data Science Lecture #12: Quick: Exceptions and SQL Administrivia Open Project: Starts Monday! Creative data task
More informationAt full speed with Python
At full speed with Python João Ventura v0.1 Contents 1 Introduction 2 2 Installation 3 2.1 Installing on Windows............................ 3 2.2 Installing on macos............................. 5 2.3
More informationCommon LISP-Introduction
Common LISP-Introduction 1. The primary data structure in LISP is called the s-expression (symbolic expression). There are two basic types of s-expressions: atoms and lists. 2. The LISP language is normally
More informationCOMP519 Web Programming Lecture 20: Python (Part 4) Handouts
COMP519 Web Programming Lecture 20: Python (Part 4) Handouts Ullrich Hustadt Department of Computer Science School of Electrical Engineering, Electronics, and Computer Science University of Liverpool Contents
More informationInstalling and Running the Google App Engine On a Macintosh System
Installing and Running the Google App Engine On a Macintosh System This document describes the installation of the Google App Engine Software Development Kit (SDK) on a Macintosh and running a simple hello
More informationCS 61A, Fall, 2002, Midterm #2, L. Rowe. 1. (10 points, 1 point each part) Consider the following five box-and-arrow diagrams.
CS 61A, Fall, 2002, Midterm #2, L. Rowe 1. (10 points, 1 point each part) Consider the following five box-and-arrow diagrams. a) d) 3 1 2 3 1 2 e) b) 3 c) 1 2 3 1 2 1 2 For each of the following Scheme
More informationBuilding Flexible Systems
Building Flexible Systems with Clojure and Datomic Stuart Sierra Cognitect We don t want to paint ourselves into a corner Clojure Flexible Systems Fact-based Context-free Non-exclusive Observable Fact
More informationMultimedia-Programmierung Übung 3
Multimedia-Programmierung Übung 3 Ludwig-Maximilians-Universität München Sommersemester 2010 Ludwig-Maximilians-Universität München Multimedia-Programmierung 3-1 Today Introduction to No more Python :
More informationUse of Clojure in Undergraduate CS Curriculum
Use of Clojure in Undergraduate CS Curriculum Elena Machkasova University of Minnesota, Morris Boston Clojure meetup, November 8, 2012. 1 / 29 Outline UMM CS program 1 UMM CS program About UMM CS Clojure
More informationAdvanced Clojure Microservices. Tobias Bayer Hamburg,
Advanced Clojure Microservices Tobias Bayer Hamburg, 30.09.2016 Tobias Bayer Senior Developer / Software Architect inovex GmbH Clojure, Java, Cloud tobias.bayer@inovex.de https://github.com/tobiasbayer
More informationGUI Output. Adapted from slides by Michelle Strout with some slides from Rick Mercer. CSc 210
GUI Output Adapted from slides by Michelle Strout with some slides from Rick Mercer CSc 210 GUI (Graphical User Interface) We all use GUI s every day Text interfaces great for testing and debugging Infants
More informationObject Oriented Programming
Object Oriented Programming Objectives To review the concepts and terminology of object-oriented programming To discuss some features of objectoriented design 1-2 Review: Objects In Java and other Object-Oriented
More informationOAuth 2 and Native Apps
OAuth 2 and Native Apps Flows While all OAuth 2 flows can be used by native apps, only the user delegation flows will be considered in this document: Web Server, User-Agent and Device flows. The Web Server
More informationINF 102 CONCEPTS OF PROG. LANGS FUNCTIONAL COMPOSITION. Instructors: James Jones Copyright Instructors.
INF 102 CONCEPTS OF PROG. LANGS FUNCTIONAL COMPOSITION Instructors: James Jones Copyright Instructors. Topics Recursion Higher-order functions Continuation-Passing Style Monads (take 1) Identity Monad
More informationCOMP 215: INTRO TO PROGRAM DESIGN. Prof. Chris Jermaine Chris Prof. Chris Dr. Chris
COMP 215: INTRO TO PROGRAM DESIGN Prof. Chris Jermaine cmj4@cs.rice.edu Chris Prof. Chris Dr. Chris 1 This Class 50% of content: modern programming and program design The Java programming language will
More informationCSC 1351: Quiz 6: Sort and Search
CSC 1351: Quiz 6: Sort and Search Name: 0.1 You want to implement combat within a role playing game on a computer. Specifically, the game rules for damage inflicted by a hit are: In order to figure out
More informationC14: JavaFX: Overview and Programming User Interface
CISC 3120 C14: JavaFX: Overview and Programming User Interface Hui Chen Department of Computer & Information Science CUNY Brooklyn College 10/10/2017 CUNY Brooklyn College 1 Outline Recap and issues Architecture
More informationXtern BOOTCAMP. Week 2 Day 1 May 22, 2017
Xtern BOOTCAMP Week 2 Day 1 May 22, 2017 Intro to React What is React? A declarative, efficient, and flexible JavaScript library for building user interfaces. It encourages the creation of reusable UI
More informationObject Model Comparisons
Object Model Comparisons 1 Languages are designed, just like programs Someone decides what the language is for Someone decides what features it's going to have Can't really understand a language until
More informationJavaFX for oorexx Creating Powerful Portable GUIs for oorexx
JavaFX for oorexx Creating Powerful Portable GUIs for oorexx Rony G. Flatscher (Rony.Flatscher@wu.ac.at), WU Vienna "The 2017 International Rexx Symposium", Amsterdam, The Netherlands April 9 9h 12 th,
More informationTreating Framework Fatigue With JavaScript
Treating Framework Fatigue With JavaScript Tim Doherty Software Architect /in/timdoherty timdoherty.net ??? Hey, this one looks cool! You May Suffer From Framework Fatigue Symptoms Confusion One-way reactive
More informationSHIFTLEFT OCULAR THE CODE PROPERTY GRAPH
SHIFTLEFT OCULAR INTRODUCTION ShiftLeft Ocular offers code auditors the full range of capabilities of ShiftLeft s best-in-class static code analysis 1, ShiftLeft Inspect. Ocular enables code auditors to
More informationBuilding Your own Widget with ArcGIS API for JavaScript
Building Your own Widget with ArcGIS API for JavaScript Matt Driscoll @driskull JC Franco @arfncode Agenda About Widgets Prerequisites Widget framework Theming DO IT! Tips & tricks About Widgets What?
More informationFinal Exam CS 152, Computer Programming Fundamentals December 5, 2014
Final Exam CS 152, Computer Programming Fundamentals December 5, 2014 Name: NetID: Answer all questions in the space provided. Write clearly and legibly, you will not get credit for illegible or incomprehensible
More information3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.
3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.
More informationINF 212 ANALYSIS OF PROG. LANGS FUNCTION COMPOSITION. Instructors: Crista Lopes Copyright Instructors.
INF 212 ANALYSIS OF PROG. LANGS FUNCTION COMPOSITION Instructors: Crista Lopes Copyright Instructors. Topics Recursion Higher-order functions Continuation-Passing Style Monads (take 1) Identity Monad Maybe
More informationJava Programming Hello FX
Java Programming Hello FX Alice E. Fischer Feb 16, 2015 Java Programming - Hello FX... 1/22 Winter Colors Fonts Spring Circle Demo Java Programming - Hello FX... 2/22 Example: Winter Introduction to fx
More informationJavaFX. Working with the JavaFX Scene Graph Release 8 E March 2014 Learn about the concept of a scene graph and how it is used in JavaFX.
JavaFX Working with the JavaFX Scene Graph Release 8 E50683-01 March 2014 Learn about the concept of a scene graph and how it is used in JavaFX. JavaFX Working with the JavaFX Scene Graph Release 8 E50683-01
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and
More informationCS 2340 Objects and Design - Scala
CS 2340 Objects and Design - Scala Objects and Operators Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design - Scala Objects and Operators 1 / 13 Classes
More informationMulti-Methods in Racket
Multi-Methods in Racket António Menezes Leitão April, 18, 2013 1 Introduction Multi-methods are an advanced concept that extends the single dispatch approach that is used in the majority of object-oriented
More informationMatt Meteor Development Group
A R C H I T E C T I N G M O D E R N J A V A S C R I P T A P P L I C A T I O N S Matt DeBergalis @debergalis Meteor Development Group www.meteor.com github.com/meteor/meteor Honeywell https://www.openroad.ca/portfolio/honeywell
More informationCSC/MAT-220: Lab 6. Due: 11/26/2018
CSC/MAT-220: Lab 6 Due: 11/26/2018 In Lab 2 we discussed value and type bindings. Recall, value bindings bind a value to a variable and are intended to be static for the life of a program. Type bindings
More informationQuartz Composer Custom Patch Programming Guide Pdf
Quartz Composer Custom Patch Programming Guide Pdf Objective-C is a C-based programming language with object-oriented extensions. such as JPEG, RTF, or PDF, the system provides a metadata importer for
More informationJava FX GUI. Pieter van den Hombergh. May 31, Fontys Hogeschool voor Techniek en Logistiek. Java FX GUI. Pieter van den Homb
ergh Fontys Hogeschool voor Techniek en Logistiek May 31, 2016 ergh/fhtenl May 31, 2016 1/10 JAVA FX Application A java fx gui application uses a different way to start. A javafx application extends javafx.application.application
More informationCS558 Programming Languages
CS558 Programming Languages Fall 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Type Inference Some statically typed languages, like ML (and to a lesser extent Scala), offer alternative
More informationCOMP6700/2140 GUI and Event Driven Programming
COMP6700/2140 GUI and Event Driven Programming Alexei B Khorev and Josh Milthorpe Research School of Computer Science, ANU April 2017 Alexei B Khorev and Josh Milthorpe (RSCS, ANU) COMP6700/2140 GUI and
More informationPractical Optional Types for Clojure
Practical Optional Types for Clojure Ambrose Bonnaire-Sergeant, Rowan Davies*, Sam Tobin-Hochstadt Indiana University ; Omnia Team, Commonwealth Bank of Australia* {abonnair,samth}@indiana.edu, Rowan.Davies@cba.com.au
More informationLecture Notes CPSC 224 (Spring 2012) Today... Java basics. S. Bowers 1 of 8
Today... Java basics S. Bowers 1 of 8 Java main method (cont.) In Java, main looks like this: public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); Q: How
More information61A Lecture 25. Friday, October 28
61A Lecture 25 Friday, October 2 From Last Time: Adjoining to a Tree Set 5 9 7 3 9 7 11 1 7 11 Right! Left! Right! Stop! 5 9 7 3 9 7 11 1 7 11 2 From the Exam: Pruned Trees a b c d (a,b) (a,c) (a,d) pruned
More information(Refer Slide Time: 02:01)
Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #29 Java Applets Part: 2 In this lecture we shall be continuing
More informationDrinking from the Clojure fire hose
Drinking from the Clojure fire hose This chapter covers Scalars: the base data types Putting things together: collections Making things happen: functions Vars are not variables Locals, loops, and blocks
More informationQuick Links on Google Apps. Information about ACC Google Apps and Mail can be found here at
Quick Links on Google Apps Information about ACC Google Apps and Mail can be found here at http://www.austincc.edu/itdocs/google/index.php. 1. Transitioning to Google Apps Mail from Microsoft Outlook Since
More information