The document provides an overview of JavaScript programming. It discusses the history and components of JavaScript, including ECMAScript, the DOM, and BOM. It also covers JavaScript basics like syntax, data types, operators, and functions. Finally, it introduces object-oriented concepts in JavaScript like prototype-based programming and early vs. late binding.
This document discusses building parsers in JavaScript. It begins with an overview of parsing and grammar. Nearley is introduced as a parser generator that implements Earley's parsing algorithm. Nearley allows defining grammars and generating JavaScript parsers from them. The document then provides an example of building a fraction calculator parser using Nearley. It presents the grammar and source code for the parser and fraction calculation logic. Key advantages of Nearley for JavaScript parsing are its support for left-recursive grammars and ability to generate parsers with semantic actions.
This document discusses open source software and how to contribute. It begins by introducing the author and their experience with open source. It then defines open source software and lists some of its benefits, such as learning new skills and building a portfolio. The document outlines different ways to contribute, such as fixing bugs, taking over maintenance of stalled projects, or contributing in non-coding ways. It also discusses licenses, distributed teams, and some challenges around open source like a lack of diversity.
Realm provides an API for building mobile apps with React Native that allows for schema creation, object creation, transactions, and queries using JavaScript objects. It supports React Native on Android and iOS, as well as Node.js, and allows defining data models, logging into a Realm server, opening a Realm to access and query data, and setting up observable objects to update the UI when data changes.
The document provides an overview of the micro:bit, a small programmable device developed by the BBC to promote STEM education. It discusses the micro:bit's history and hardware capabilities. It also covers various programming languages that can be used including JavaScript, Python, and C++. The document reviews how to set up the Programming Experience Toolkit (pxt) development environment and build a project. It provides examples of programming concepts like input/output, multitasking, and events. Resources for learning more are also listed.
Kenneth Geisshirt gave a presentation on Android Things at DroidDev CPH in April 2017. He discussed what IoT is, how Google is getting involved in IoT through Android Things, and demonstrated an Android Things app running on a Raspberry Pi 3 with a Rainbow HAT add-on. He explained how to set up the hardware, download the Android Things image, and develop an app in Android Studio to control the LEDs and sensors on the HAT.
The document provides an overview of JavaScript programming. It discusses the history and components of JavaScript, including ECMAScript, the DOM, and BOM. It also covers JavaScript basics like syntax, data types, operators, and functions. Finally, it introduces object-oriented concepts in JavaScript like prototype-based programming and early vs. late binding.
This document discusses building parsers in JavaScript. It begins with an overview of parsing and grammar. Nearley is introduced as a parser generator that implements Earley's parsing algorithm. Nearley allows defining grammars and generating JavaScript parsers from them. The document then provides an example of building a fraction calculator parser using Nearley. It presents the grammar and source code for the parser and fraction calculation logic. Key advantages of Nearley for JavaScript parsing are its support for left-recursive grammars and ability to generate parsers with semantic actions.
This document discusses open source software and how to contribute. It begins by introducing the author and their experience with open source. It then defines open source software and lists some of its benefits, such as learning new skills and building a portfolio. The document outlines different ways to contribute, such as fixing bugs, taking over maintenance of stalled projects, or contributing in non-coding ways. It also discusses licenses, distributed teams, and some challenges around open source like a lack of diversity.
Realm provides an API for building mobile apps with React Native that allows for schema creation, object creation, transactions, and queries using JavaScript objects. It supports React Native on Android and iOS, as well as Node.js, and allows defining data models, logging into a Realm server, opening a Realm to access and query data, and setting up observable objects to update the UI when data changes.
The document provides an overview of the micro:bit, a small programmable device developed by the BBC to promote STEM education. It discusses the micro:bit's history and hardware capabilities. It also covers various programming languages that can be used including JavaScript, Python, and C++. The document reviews how to set up the Programming Experience Toolkit (pxt) development environment and build a project. It provides examples of programming concepts like input/output, multitasking, and events. Resources for learning more are also listed.
Kenneth Geisshirt gave a presentation on Android Things at DroidDev CPH in April 2017. He discussed what IoT is, how Google is getting involved in IoT through Android Things, and demonstrated an Android Things app running on a Raspberry Pi 3 with a Rainbow HAT add-on. He explained how to set up the hardware, download the Android Things image, and develop an app in Android Studio to control the LEDs and sensors on the HAT.
Kenneth Geisshirt gave a presentation on extending Node.js using C++. He covered why to write extensions in C++, demo C++ classes, building extensions, wrapping classes, methods, callbacks, exceptions, and more. The goal was to learn the basics of V8 internals, wrapping C++ classes, and writing an extension.
This document presents an agenda for becoming a "console cowboy" by learning to be more productive using the terminal and bash shell. It covers the basic terminal tools, bash usage and configuration, utilities like grep, sed and awk, scripting with variables, conditionals and loops, and tools for developers like Homebrew, Git, Xcode and xcpretty. The goal is to stop using the mouse and automate work by writing scripts to harness the power of the Unix command line.
A decade ago, the database was assumed to be a solved problem. Relational databases (PostgreSQL, MySQL, SQLite to name a few) were dominating the database market and hierarchical databases (LDAP, DNS) where regarded as niche solutions. The NoSQL revolution surely changed the concept of what a database can be. At the same time, the popularity of mobile devices exploded. This talk will dive into how data structures are persisted and queried on mobile devices today, and try to revive the old question: is the database really a solved problem?
This document provides an overview of using the bash shell as a productivity tool. It discusses using the terminal, basic bash usage including redirection, pipes, configuration files, keyboard shortcuts, history, and tab completion. Useful utilities like sed, awk, find, grep and scripting basics are covered. Tools for developers like Homebrew, Git, Xcode, and Cocoapods are also summarized. The document aims to help users "unleash their inner console cowboy" and do more work directly from the command line.
The document discusses extending Node.js using C++. It covers wrapping C++ classes for use in JavaScript, including setters, getters, exceptions, and instantiating objects. Examples are provided for wrapping Book and Person classes to be accessible from JavaScript. Building the extension using waf or gyp build systems is also covered. The presenter's background and the agenda are outlined initially.
Building High Performance Android Applications in Java and C++Kenneth Geisshirt
This document discusses building high-performance Android applications using Java and C++. It covers using the Java Native Interface (JNI) to call C/C++ code from Java, mapping between Java and C/C++ types, memory management across languages, and logging and debugging native code. An example is provided of estimating pi by throwing virtual darts, implemented in pure Java, pure C++, and a mixture using JNI. Key steps like generating header files, building native code, and throwing Java exceptions from native code are explained.
The document discusses using the command line as a productivity tool. It presents bash as a powerful tool for automating tasks and introduces many useful commands and concepts, including redirection, pipes, variables, conditionals, loops, and scripting. It also summarizes tools for developers such as Homebrew, Git, Xcode, xcpretty and xctool.
Introduction to JavaScript for Modern Software DevelopmentKenneth Geisshirt
The talk introduces JavaScript for experienced software developer without any knowledge of the language. Moreover, interaction with the browser is presented, and a bit of server-side programming is covered.
My contribution of Dansk Naturvidenskabsfestival 2010. It's a dicussion on being famous or important and how social network analysis can make you understand the difference.
Kenneth Geisshirt gave a presentation on extending Node.js using C++. He covered why to write extensions in C++, demo C++ classes, building extensions, wrapping classes, methods, callbacks, exceptions, and more. The goal was to learn the basics of V8 internals, wrapping C++ classes, and writing an extension.
This document presents an agenda for becoming a "console cowboy" by learning to be more productive using the terminal and bash shell. It covers the basic terminal tools, bash usage and configuration, utilities like grep, sed and awk, scripting with variables, conditionals and loops, and tools for developers like Homebrew, Git, Xcode and xcpretty. The goal is to stop using the mouse and automate work by writing scripts to harness the power of the Unix command line.
A decade ago, the database was assumed to be a solved problem. Relational databases (PostgreSQL, MySQL, SQLite to name a few) were dominating the database market and hierarchical databases (LDAP, DNS) where regarded as niche solutions. The NoSQL revolution surely changed the concept of what a database can be. At the same time, the popularity of mobile devices exploded. This talk will dive into how data structures are persisted and queried on mobile devices today, and try to revive the old question: is the database really a solved problem?
This document provides an overview of using the bash shell as a productivity tool. It discusses using the terminal, basic bash usage including redirection, pipes, configuration files, keyboard shortcuts, history, and tab completion. Useful utilities like sed, awk, find, grep and scripting basics are covered. Tools for developers like Homebrew, Git, Xcode, and Cocoapods are also summarized. The document aims to help users "unleash their inner console cowboy" and do more work directly from the command line.
The document discusses extending Node.js using C++. It covers wrapping C++ classes for use in JavaScript, including setters, getters, exceptions, and instantiating objects. Examples are provided for wrapping Book and Person classes to be accessible from JavaScript. Building the extension using waf or gyp build systems is also covered. The presenter's background and the agenda are outlined initially.
Building High Performance Android Applications in Java and C++Kenneth Geisshirt
This document discusses building high-performance Android applications using Java and C++. It covers using the Java Native Interface (JNI) to call C/C++ code from Java, mapping between Java and C/C++ types, memory management across languages, and logging and debugging native code. An example is provided of estimating pi by throwing virtual darts, implemented in pure Java, pure C++, and a mixture using JNI. Key steps like generating header files, building native code, and throwing Java exceptions from native code are explained.
The document discusses using the command line as a productivity tool. It presents bash as a powerful tool for automating tasks and introduces many useful commands and concepts, including redirection, pipes, variables, conditionals, loops, and scripting. It also summarizes tools for developers such as Homebrew, Git, Xcode, xcpretty and xctool.
Introduction to JavaScript for Modern Software DevelopmentKenneth Geisshirt
The talk introduces JavaScript for experienced software developer without any knowledge of the language. Moreover, interaction with the browser is presented, and a bit of server-side programming is covered.
My contribution of Dansk Naturvidenskabsfestival 2010. It's a dicussion on being famous or important and how social network analysis can make you understand the difference.
3. Hvad er JavaScript?
JavaScript forbindes mest med web-udvikling.
Proceduralt
Klasseløst; objekt-orienteret
Funktionsprogrammering
4. Hvor finder du JavaScript?
Mange implementeringer:
Mozilla: Rhino og Spidermonkey
Microsoft: Chakra (IE9)
Apple: JavaScriptCore
Google: V8 (bruges i Chrome)
Du finder det også udenfor browseren:
GNOME (shell extensions, Seed-applikationer)
Adobe Integrated Runtime (AIR)
Server-side: Node.js
Mozilla (extensions til Firefox og Thunderbird)
5. Flere modes
Der er flere modes at vælge i mellem:
js (tidligere Espresso)
JavaScript
ECMAScript
js2 (understøtter p.t. ikke XEmacs)
6. js2 mode
js2 er en JavaScript-fortolker i elisp!
syntax highlighting
C preprocessor (nej, har aldrig prøvet)
understøttelse af imenu (se menu bar)
folde- og flytte-kommandoer
fremhævelse af syntaksfejl
kan sætte slut-parenteser
http://code.google.com/p/js2-mode/
http://www.emacswiki.org/emacs/Js2Mode
7. js2 mode - fortsat
Foldninger:
C-c C-f - alle funktioner
C-c C-t - kommentarblok
C-c C-o - element
Andet:
M-q - ombrydning af kommentarer
C-højre museknap - menu
M-g n - næste syntaksfejl
M-C-b - start af blok
M-C-n - slut af blok
8. Udfør JavaScript
Jeg bruger spidermonkey:
Findes som Debian-pakke
Kommandoen er js
Se min .emacs
Prøv med M-C-x