Analysis of Decision Model and Notation Tooling in the Visual Studio Code Ecosystem

Total Page:16

File Type:pdf, Size:1020Kb

Analysis of Decision Model and Notation Tooling in the Visual Studio Code Ecosystem Masaryk University Faculty of Informatics Analysis of Decision Model and Notation tooling in the Visual Studio Code ecosystem Master’s Thesis Bc. Marcel Mráz Brno, Spring 2021 Masaryk University Faculty of Informatics Analysis of Decision Model and Notation tooling in the Visual Studio Code ecosystem Master’s Thesis Bc. Marcel Mráz Brno, Spring 2021 This is where a copy of the official signed thesis assignment and a copy ofthe Statement of an Author is located in the printed version of the document. Declaration Hereby I declare that this paper is my original authorial work, which I have worked out on my own. All sources, references, and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Bc. Marcel Mráz Advisor: Bruno Rossi, PhD i Acknowledgements I would like to express my gratitude to my thesis advisor Bruno Rossi, PhD, for valuable guidance during consultations. Also, I would like to thank Adacta for the opportunity to combine study and work life. Additionally, I would like to thank my family and close ones for their support. ii Abstract Decision Model and Notation (DMN) is a standard specifying a vi- sual notation and a lower-level Friendly Enough Expression Language (FEEL) for the definition of interchangeable and executable decision models. The definition and maintenance of such models is contin- uously being improved with the emerging tooling ecosystem built around DMN graphical editors. One of the requested features in- side such editors is the ability to provide language features, such as DMN model validation and FEEL completion on each content change and request, respectively. Simultaneously, Language Server Protocol (LSP) provides a convenient way to provide such language features for text-based languages and specifications across a number of different development tools and text-based editors, such as Visual Studio Code. In addition to text-based editors, Visual Studio Code offers a way to create custom graphical editors, allowing to embed a DMN graphical editor inside its user interface. This thesis reviews the concepts of DMN and its validations, LSP and related Visual Studio Code API for graphical editors and researches the related questions for providing DMN language features through the use of LSP inside the embedded graphical editors. As a result, an architecture using LSP for providing language features inside embedded DMN graphical editors is pro- posed. The proposed solution architecture is specifically designed to address related domain problems in the context of commercial, enterprise-level insurance software. iii Keywords DMN, FEEL, LSP, VS Code, Extension API, Custom Editor API, Web- view API, Node.js, Software Architecture, Static Code Analysis, Adacta, AdInsure Studio iv Contents 1 Introduction 1 1.1 Problem domain . .2 1.2 Thesis statement . .5 1.3 Research questions . .5 1.4 Thesis structure . .7 2 Decision Model and Notation 9 2.1 Overview . 10 2.2 Use cases . 11 2.3 Outline of specification . 13 2.3.1 FEEL . 14 2.3.2 DRD and its elements . 15 2.3.3 Boxed expression types . 17 2.3.4 Conformance level . 19 2.4 Related standards . 21 2.4.1 CMMN . 22 2.4.2 BPMN . 22 2.4.3 PMML . 23 3 DMN model validation 24 3.1 Market overview . 25 3.1.1 Vendors and involved parties . 27 3.2 Validation breakdown . 30 3.2.1 Validation against the schema . 31 3.2.2 Validation of DRD and its elements . 31 3.2.3 Validation during compilation process . 31 3.2.4 Validation of FEEL expressions . 32 3.2.5 Validation of a decision table . 32 v 3.2.6 Dynamic validation . 33 4 Language Server Protocol 34 4.1 Overview . 35 4.2 Architecture . 38 4.2.1 Client, server and their capabilities . 38 4.2.2 JSON-RPC . 39 4.2.3 Communication flow . 40 4.2.4 Limitations . 41 4.2.5 Conclusion . 43 5 Visual Studio Code 45 5.1 Overview . 46 5.2 Electron.js . 47 5.3 Extension API . 49 5.3.1 TextDocument .................... 50 5.3.2 Text editor . 50 5.3.3 Webview API . 51 5.3.4 Custom Editor API . 51 5.3.5 Language extensions . 52 5.3.6 Conclusion . 53 6 Proposed solution 54 6.1 Requirements . 55 6.1.1 Functional requirements . 55 6.1.2 Quality attributes . 56 6.1.3 Technical constraints . 58 6.1.4 Business constraints . 59 6.2 Architecture . 60 6.2.1 Overview . 60 6.2.2 LSP language server . 61 6.2.3 DMN analysis . 62 6.2.4 DMN custom text editor . 66 6.2.5 Validation process example . 67 6.2.6 Possible integrations . 69 7 Conclusion 72 7.1 Research questions evaluation . 73 vi 7.2 Future work . 76 A List of Abbreviations 79 Bibliography 82 vii List of Figures 1.1 Hierarchy of explained AdInsure concepts 3 1.2 Visualisation of references between the research questions 6 1.3 Visualisation of the thesis outline 7 2.1 DRD and its elements 15 2.2 DMN conformance levels hierarchy 19 2.3 Linking business automation with machine learning 21 4.1 Interactions between a user, LSP client and LSP server 41 5.1 Electron.js application architecture 47 5.2 Class diagram showing conceptual relations between the mentioned concepts 50 5.3 SDK for development of VS Code’s LSP-based server 52 6.1 Dependencies between the separate packages 60 6.2 Main conceptual relations inside and outside of the language server 61 6.3 Main conceptual infrastructure of DMN analysis package and its dependencies 63 6.4 DMN analysis package infrastructure and its dependencies 67 6.5 Integration architecture of utilizing multiple language servers for multiple custom text editors 71 viii 1 Introduction This chapter focuses on explaining the problem domain and related context. Based on the context, research questions are defined, and the overall structure of the thesis is explained and visualised. 1 1. Introduction 1.1 Problem domain The problem is defined in the context of two systems - AdInsure [1] and AdInsure Studio [2]. AdInsure and AdInsure Studio are software products developed by Adacta, a Slovenian-based company with of- fices spread across major European cities, starting with headquarters in Ljubljana and continuing with Maribor, Belgrade, Zagreb, Moscow and Brno. Adacta is, with more than 30 years of experience, the soft- ware provider for the insurance industry. AdInsure is an insurance platform, and its newest version is de- signed, apart from other things, with configurability in mind, allowing configuration of all of its infrastructural and business elements. AdIn- sure Studio is what makes the configuration of AdInsure and all of its elements quick, convenient and business-user friendly. AdInsure Studio supports the entire configuration lifecycle of insurance prod- ucts and business processes mainly through its Visual Studio Code extension client1, supporting multiple authoring modes and focusing on a broad audience reaching from developers and testers to business analysts and actuaries. There are two AdInsure Studio extension authoring modes relevant to the problem2: • Basic mode (default): A mode focused on business users and configuration of products and processes using custom made Graphical User Interface-centered (GUI-centered) editors and business user friendly explorers. • Expert mode: A mode focused on AdInsure domain experts, such as configurators and developers, allowing the configuration of products and processes using plain built-in text editors. Many configuration concepts3 defined by the AdInsure platform are supported by both of these modes, with one such concept be- 1The other AdInsure Studio client is Command Line Interface (CLI) for auto- mated purposes, such as the use during continuous integration and continuous delivery (CI/CD). 2The third mode is called "Accelerated mode" and is used for rapid configuration of products and processes using scaffolding technique. 3All of such concepts are defined as textual files, structured mostly using follow- ing formats - .js, .json, xml, csv. 2 1. Introduction ing a business rule configuration. One way to configure a business rule in AdInsure, using AdInsure Studio extension, is by using the Decision Model and Notation (DMN), which is a higher, visual lan- guage focused on the definition of business decisions. In terms of AdInsure Studio modes, it means either to edit the DMN file using a GUI-centered editor (a custom DMN editor or, in Adacta’s Ubiquitous Language4, so-called Rule editor) or a built-in text editor (Monaco editor5). Figure 1.1: Hierarchy of explained AdInsure concepts 4Ubiquitous Language is a term for specifying common language between devel- opers and other stakeholders, used by Eric Evans in Domain Driven Design [3]. 5Monaco editor is a standalone text-editor that powers VS Code [4]. 3 1. Introduction The problem is that neither the custom Rule editor nor AdInsure Studio provides any DMN model validations. From the configuration perspective, it implies that it is possible to create an invalid DMN model (thus an invalid business rule), which might cause problems during its evaluation in the AdInsure run-time environment. Such issues detected in the run-time environment can be very costly and pro- long the development time, testing time, and overall time-to-market for the given product, which are the exact attributes that DMN and AdInsure Studio are trying to solve. As it is possible to create an invalid DMN model and pass it to the run-time environment, it is necessary to detect the potential problems as soon as possible. In terms of AdInsure Studio, it means detecting such problems within the VS Code extension during the DMN model authoring phase in both related modes (Basic and Expert).6 Moreover, AdInsure Studio includes the concept of validations for other configuration concepts specified by the AdInsure platform.
Recommended publications
  • Fortran Resources 1
    Fortran Resources 1 Ian D Chivers Jane Sleightholme October 17, 2020 1The original basis for this document was Mike Metcalf’s Fortran Information File. The next input came from people on comp-fortran-90. Details of how to subscribe or browse this list can be found in this document. If you have any corrections, additions, suggestions etc to make please contact us and we will endeavor to include your comments in later versions. Thanks to all the people who have contributed. 2 Revision history The most recent version can be found at https://www.fortranplus.co.uk/fortran-information/ and the files section of the comp-fortran-90 list. https://www.jiscmail.ac.uk/cgi-bin/webadmin?A0=comp-fortran-90 • October 2020. Added an entry for Nvidia to the compiler section. Nvidia has integrated the PGI compiler suite into their NVIDIA HPC SDK product. Nvidia are also contributing to the LLVM Flang project. • September 2020. Added a computer arithmetic and IEEE formats section. • June 2020. Updated the compiler entry with details of standard conformance. • April 2020. Updated the Fortran Forum entry. Damian Rouson has taken over as editor. • April 2020. Added an entry for Hewlett Packard Enterprise in the compilers section • April 2020. Updated the compiler section to change the status of the Oracle compiler. • April 2020. Added an entry in the links section to the ACM publication Fortran Forum. • March 2020. Updated the Lorenzo entry in the history section. • December 2019. Updated the compiler section to add details of the latest re- lease (7.0) of the Nag compiler, which now supports coarrays and submodules.
    [Show full text]
  • Metadefender Core V4.12.2
    MetaDefender Core v4.12.2 © 2018 OPSWAT, Inc. All rights reserved. OPSWAT®, MetadefenderTM and the OPSWAT logo are trademarks of OPSWAT, Inc. All other trademarks, trade names, service marks, service names, and images mentioned and/or used herein belong to their respective owners. Table of Contents About This Guide 13 Key Features of Metadefender Core 14 1. Quick Start with Metadefender Core 15 1.1. Installation 15 Operating system invariant initial steps 15 Basic setup 16 1.1.1. Configuration wizard 16 1.2. License Activation 21 1.3. Scan Files with Metadefender Core 21 2. Installing or Upgrading Metadefender Core 22 2.1. Recommended System Requirements 22 System Requirements For Server 22 Browser Requirements for the Metadefender Core Management Console 24 2.2. Installing Metadefender 25 Installation 25 Installation notes 25 2.2.1. Installing Metadefender Core using command line 26 2.2.2. Installing Metadefender Core using the Install Wizard 27 2.3. Upgrading MetaDefender Core 27 Upgrading from MetaDefender Core 3.x 27 Upgrading from MetaDefender Core 4.x 28 2.4. Metadefender Core Licensing 28 2.4.1. Activating Metadefender Licenses 28 2.4.2. Checking Your Metadefender Core License 35 2.5. Performance and Load Estimation 36 What to know before reading the results: Some factors that affect performance 36 How test results are calculated 37 Test Reports 37 Performance Report - Multi-Scanning On Linux 37 Performance Report - Multi-Scanning On Windows 41 2.6. Special installation options 46 Use RAMDISK for the tempdirectory 46 3. Configuring Metadefender Core 50 3.1. Management Console 50 3.2.
    [Show full text]
  • The Journey of Visual Studio Code
    The Journey of Visual Studio Code Erich Gamma Envision new paradigms for online developer tooling that will be as successful as the IDE has been for the desktop 2012 2011 Eat your own dogfood hp 2011 2012 2012 2013 Meanwhile Microso; Changes Run on Windows Run everywhere Edit in Visual Studio Use your favorite editor Black box compilers Open Language Service APIs Proprietary Open Source Hacker News: Microso “Hit List” h@ps://hn.algolia.com/?query=MicrosoH Pivot or Persevere? Visual Studio A tool that combines the simplicity of a code editor withCode what developers need for the core code-build-debug-commit cycle editor IDE lightweight/fast project systems keyboard centered code understanding file/folders debug many languages integrated build many workflows File>New, wizards designers lightweight/fast ALM integraon file/folders with project conteXt plaorm tools many languages ... keyboard centered code understanding debug task running Inside Visual Studio Code – OSS in AcGon Electron, Node TypeScript Monaco Editor It’s fun to program in JavaScript Compensating patterns for classes, modules and namespaces. Refactoring JavaScript code is difficult! Code becomes read only Defining and documentation of APIs is difficult. Type information in comments are not checked TypeScript OpVonal stac types – be@er tooling: IntelliSense, Refactoring Be@er APIs docs More safety delete this.markers[range.statMarkerId]; // startMarkerId Use features from the future (ES6, ES7) today Growing the Code VS Code Preview – April 2015 Extensions Eclipse Everything is…
    [Show full text]
  • WA2775 Introduction to Angular 7 Programming
    WA2775 Introduction to Angular 7 Programming Classroom Setup Guide Web Age Solutions Inc. 1 Table of Contents Part 1 - Minimum Hardware Requirements....................................................................3 Part 2 - Minimum Software Requirements ....................................................................3 Part 3 - Software Provided..............................................................................................3 Part 4 - Instructions.........................................................................................................4 Part 5 - Installing Node.js 10.13.0...................................................................................4 Part 6 - Installing Visual Studio Code.............................................................................6 Part 7 - Summary..........................................................................................................13 2 Part 1 - Minimum Hardware Requirements ● Dual Core CPU or better 64 bits ● 4GB RAM minimum ● 20 GB in the hard disk ● Internet connection Part 2 - Minimum Software Requirements ● Windows OS: Windows 7 / 10, Windows Server 2012. ● Latest Google Chrome browser ● Latest Visual Studio Code ● Nodejs * * - indicates software provided as part of the courseware. Part 3 - Software Provided List of ZIP files required for this course and used in next steps on this document: WA2775_REL_1_0.zip Send an email to [email protected] in order to obtain a copy of the software for this course if you haven't receive it yet.
    [Show full text]
  • Mac Text Editor for Coding
    Mac Text Editor For Coding Sometimes Pomeranian Mikey probed her cartography allegorically, but idiomorphic Patrik depolymerizes despotically or stains ethnocentrically. Cereal Morten sick-out advisably while Bartel always overglazing his anticholinergic crunches pregnantly, he equilibrating so eath. Substantiated Tore usually exuviated some Greenwich or bumbles pedagogically. TextEdit The Built-in Text Editor of Mac OS X CityMac. 4 great editors for macOS for editing plain lazy and for coding. Brackets enables you! Many features that allows you could wish to become almost everything from an awesome nintendo switch to. Top 11 Code Editors for Software Developers Bit Blog. We know what you have specific id, so fast feedback on rails without even allow users. Even convert any one. Spaces and broad range of alternatives than simply putting your code after it! It was very good things for example. Great joy to. What may find in pakistan providing payment gateway security news, as close to any query or. How does Start Coding Programming for Beginners Learn Coding. It was significantly as either running on every developer you buy, as well from your html tools for writing for free to add or handling is. Code is free pattern available rate your favorite platform Linux Mac OSX and Windows Categories in power with TextEdit Text Editor Compare. How do I steer to code? Have to inflict pain on this plot drawn so depending on your writing source code. Text but it does not suitable for adjusting multiple computers users. The wheat free if paid text editors for the Mac iMore. After logging in free with google translate into full member of useful is a file in a comment is ideal environment, where their personal taste.
    [Show full text]
  • KEA DHCP Server"
    Kea Webinar Installation and Configuration Carsten Strotmann 30th September 2020 https://www.isc.org All content © 2020 Internet Systems Consortium, Inc. 1 Welcome •Welcome to part two of our webinar series "the KEA DHCP Server" All content © 2020 Internet Systems Consortium, Inc. 2 About this Webinar •What is Kea DHCP •Installation, Platform and Requirements •Kea Hooks •Kea basic configuration •Testing the Kea DHCP server function •Operating the Kea server •Kea DHCPv6 All content © 2020 Internet Systems Consortium, Inc. 3 What is Kea DHCP? All content © 2020 Internet Systems Consortium, Inc. 4 Kea DHCP (1/2) •a modern DHCPv4 and DHCPv6 Server •Open Source (MPL License) •JSON/REST API •modular design •high performance ( > 1000 leases/seconds with SQL database backend) •failover via SQL DB or High-Availability-Hook •Host reservation support All content © 2020 Internet Systems Consortium, Inc. 5 Kea DHCP (2/2) •support for DHCPv6 prefix delegation •dynamic reconfiguration •dynamic DNS updates •SQL database backend (MySQL / PostgreSQL / Cassandra …) •Statistics module •PXE Boot support All content © 2020 Internet Systems Consortium, Inc. 6 Platforms and Requirements All content © 2020 Internet Systems Consortium, Inc. 7 Kea Platforms (1/2) •Kea is officially supported on •CentOS Linux •Fedora Linux •Ubuntu Linux •Debian Linux •FreeBSD Unix All content © 2020 Internet Systems Consortium, Inc. 8 Kea Platforms (2/2) •Kea is also know to work on •MacOS X •Alpine Linux •OpenBSD Unix •Kea currently does not work on Windows operating systems All content © 2020 Internet Systems Consortium, Inc. 9 Kea DHCP requirements •Kea requires to run •a cryptographic library: Botan or OpenSSL •log4cplus C++ logging library •the Boost C++ system library •optional components •a database such as MySQL, PostgreSQL or Cassandra (CQL) •FreeRadius-client library for Radius support •Sysrepo for NETCONF support •see the Kea DHCP documentation for detailed information on software dependencies All content © 2020 Internet Systems Consortium, Inc.
    [Show full text]
  • Desenvolvimento De Uma Ferramenta De Gestão Para Construção Civil Utilizando O Framework Laravel MVC
    Universidade Federal de Goiás Regional Catalão Unidade Acadêmica Especial de Biotecnologia Curso de Bacharelado em Ciências da Computação Desenvolvimento de uma ferramenta de gestão para construção civil utilizando o Framework Laravel MVC. Erikson Dutra de Miranda Silva Catalão – GO 2019 Erikson Dutra de Miranda Silva Desenvolvimento de uma ferramenta de gestão para construção civil utilizando o Framework Laravel MVC. Monografia apresentada ao Curso de Bacharelado em Ciências da Computação da Universidade Federal de Goiás – Regional Catalão, como parte dos requisitos para obtenção do grau de Bacharel em Ciências da Computação. VERSÃO REVISADA Orientadora: Prof.a Dr.a Luanna Lopes Lobato Coorientador: Prof. Dr. Thiago Jabur Bittar Coorientador: Prof. Me. Wanderlei Malaquias Pereira Junior Catalão – GO 2019 Ficha de identificação da obra elaborada pelo autor, através do Programa de Geração Automática do Sistema de Bibliotecas da UFG. Silva, Erikson Dutra de Miranda Desenvolvimento de uma ferramenta de gestão para construção civil utilizando o Framework Laravel MVC. [manuscrito] / Erikson Dutra de Miranda Silva. – 2019. 91 p.: il. Orientadora: Prof.a Dr.a Luanna Lopes Lobato Coorientador: Wanderlei Malaquias Pereira Junior Monografia (Graduação) – Universidade Federal de Goiás, Uni- dade Acadêmica Especial de Biotecnologia, Ciências da Computa- ção, 2019. Bibliografia. 1. Engenharia de Software. 2. Desenvolvimento Web. 3. Engenharia Civil. 4. Gestão de Orçamento. 5. Laravel. 6. MVC. I. Lobato, Luanna Lopes, orient. II. Bittar, Thiago Jabur, coorient. Junior, Wanderlei Malaquias Pereira, coorient. III. Título. CDU 004 Erikson Dutra de Miranda Silva Desenvolvimento de uma ferramenta de gestão para construção civil utilizando o Framework Laravel MVC. Monografia apresentada ao curso de Bacharelado em Ciências da Computação da Universidade Federal de Goiás – Regional Catalão.
    [Show full text]
  • OLIVIERI DINO RESUME>
    RESUME> OLIVIERI DINO >1984/BOOT HTTP://WWW.ONYRIX.COM /MATH/C64/ /ASM.6510/BASIC/ /INTEL/ASM.8086/ /C/M24/BIOS/ >1990/PASCAL/C++/ADA/ /F.S.M/FORTRAN/ /ASM.80286/LISP/ /SCHEME/ /SIMULA/PROLOG/ /80386/68000/ /MIDI/DELUXEPAINT/ /AMIGA/ATARI.ST/ /WEB/MOSAIC/ /ARCHIE/FTP/MAC.0S9/HTTP/ /JAVA/TCP.IP/CODEWARRIOR/ /HTML/PENTIUM.3/3DMAX/ /NETSCAPE/CSS/ >2000/ASP/IIS/PHP/ /ORACLE/VB6/ /VC++/ONYRIX.COM/FLASHMX/ /MYSQL/AS2/.NET/JSP/C#/ /PL.SQL/JAVASCRIPT/ /LINUX/EJB/MOZILLA/ /PHOTOSHOP/EARENDIL.IT/ /SQL.SERVER/HTTP/ /MAC.OSX/T.SQL/ /UBUNTU/WINXP/ /ADOBE.CS/FLEX/ZEND/AS3/ /ZENTAO.ORG/PERL/ /C#/ECMASCRIPT/ >2010/POSTGRESQL/LINQ/ /AFTERFX/MAYA/ /JQUERY/EXTJS/ /SILVERLIGHT/ /VB.NET/FLASHBUILDER/ /UMAMU.ORG/PYTHON/ /CSS3/LESS/SASS/XCODE/ /BLENDER3D/HTML5/ /NODE.JS/QT/WEBGL/ /ANDROID/ /WINDOWS7/BOOTSTRAP/ /IOS/WINPHONE/MUSTACHE/ /HANDLEBARS/XDK/ /LOADRUNNER/IIB/WEBRTC/ /ARTFLOW/LOGIC.PRO.X/ /DAVINCI.RESOLVE/ /UNITY3D/WINDOWS 10/ /ELECTRON.ATOM/XAMARIN/ /SOCIAL.BOTS/CHROME.EXT/ /AGILE/REACT.NATIVE/ >INSERT COIN >READY PLAYER 1 UPDATED TO JULY 2018 DINO OLIVIERI BORN IN 1969, TURIN, Italy. DEBUT I started PROGRAMMING WITH MY FIRST computer, A C64, SELF LEARNING basic AND machine code 6510 at age OF 14. I STARTED STUDYING computer science at HIGH school. I’VE GOT A DEGREE IN computer science WITHOUT RENOUNCING TO HAVE MANY DIFFERENT work experiences: > videogame DESIGNER & CODER > computer course’S TRAINER > PROGRAMMER > technological consultant > STUDIO SOUND ENGINEER > HARDWARE INSTALLER AIMS AND PASSIONS I’M A MESS OF passions, experiences, IDEAS AND PROFESSIONS. I’M AN husband, A father AND, DESPITE MY age, I LIKE PLAYING LIKE A child WITH MY children.
    [Show full text]
  • Vysoké Učení Technické V Brně Doplněk Visual Studio
    VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ FACULTY OF INFORMATION TECHNOLOGY ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA DOPLNĚK VISUAL STUDIO CODE PRO KONTROLU PRAVOPISU VISUAL STUDIO CODE SPELL CHECKER EXTENSION BAKALÁŘSKÁ PRÁCE BACHELOR’S THESIS AUTOR PRÁCE DENIS GERGURI AUTHOR VEDOUCÍ PRÁCE Ing. PAVEL SVOBODA, SUPERVISOR BRNO 2017 Zadán í bakalářs ké práce/20037/201 6hgergu01 Vysoké uČenítechnické v Brně - Fakulta informačních technologií Ústav poČÍtaČovégrafiky a multimédií Akademický rok 2ot6/2ot7 Zadání bakalářské práce Řešitel: Gerguri Denis Obor: Informační technologie Téma: Doplněk Visua! Studio Code pro kontrolu pravopisu Visua! Studio Code Spell Checker Extension Kategorie : Uživatelská rozhraní Pokyny: 1. Prostudujte rozhraní VS Code pro psaní doplňkŮ 2. Vytvořte přehled dostupných knihoven pro kontrolu pravopisu (aspell, hunspell) 3. Vyberte jednu z knihoven a implementujte jednoduchou kontrolu pravopisu 4. Implementujte moŽnost nekontrolovat klíčová slova jazyka (C++,Latex, popřípadě dle zvážení) 5. Vytvořte stručnou dokumentaci a návod jak doplněk používat 6. Zamyslete se nad nedostatky a možnostijejich řešení Literatura: o https ://code. visu a lstud io. com/Docs/extensions/overview o https : / / 9 ith u b. com/ M icrosoft/vscod e-spel l -ch eck o https ://9 ith u b. com/Jaso n - Rev/vscode-spel l -checker Pro udělení zápočtu za první semestr je požadováno: o první dva body zadání Podrobné závazné pokyny pro vypracování bakalářské práce naleznete na adrese http : //www, fit. vutbr,cz/ inf o / szz/ Technická zpráva bakalářské práce musí obsahovat formulaci cíle, charakteristiku současného stavu, teoretická a odborná východiska řešených problémŮ a specifikaci etap (2O až3Oo/o celkového rozsahu technické zprávy).
    [Show full text]
  • Opinionated.Pdf
    Opinionated Adrian Kosmaczewski 2021-03-05 Programming is a very opinionated activity. Unfortunately, those opinions are seldom based on facts, and most of them are futile, and lead to stupid arguments on Reddit or Hacker News or the comments section of a blog. Most of your conversations with fellow programmers will most probably revolve around one of the subjects enumerated below. Classical example, the choice of the programming language. Most developers develop a religious attachment to their favourite programming language, and saldly are never able to go past this rather childish feeling. It is like refusing to leave your parents’ home and move on with your life once you have the means to. The truth is, programming languages are just a tool. JavaScript is great at some things, just like C++ is great at others. In some cases you cannot use JavaScript, and you have to use C++; sometimes it is the opposite situation. In some cases you can use several different programming languages to solve the same problem, in more or less the same amount of time, for example Ruby vs. Python. You might like or not the fact that Python uses indentation with specific semantics, but you cannot deny the power of its libraries. Similarly, Ruby is very approachable, but you might dislike that it does not feel fast or efficient. The truth is that the choice of a particular language is an opinion; and as such, it does not matter. Seriously. Choose any language you want, as long as you and your team are comfortable with it, it has some decent prebuilt libraries ready to use, and it should work out just fine.
    [Show full text]
  • Technical Computing on the OS … That Is Not Linux! Or How to Leverage Everything You‟Ve Learned, on a Windows Box As Well
    Tools of the trade: Technical Computing on the OS … that is not Linux! Or how to leverage everything you‟ve learned, on a Windows box as well Sean Mortazavi & Felipe Ayora Typical situation with TC/HPC folks Why I have a Windows box How I use it It was in the office when I joined Outlook / Email IT forced me PowerPoint I couldn't afford a Mac Excel Because I LIKE Windows! Gaming It's the best gaming machine Technical/Scientific computing Note: Stats completely made up! The general impression “Enterprise community” “Hacker community” Guys in suits Guys in jeans Word, Excel, Outlook Emacs, Python, gmail Run prepackaged stuff Builds/runs OSS stuff Common complaints about Windows • I have a Windows box, but Windows … • Is hard to learn… • Doesn‟t have a good shell • Doesn‟t have my favorite editor • Doesn‟t have my favorite IDE • Doesn‟t have my favorite compiler or libraries • Locks me in • Doesn‟t play well with OSS • …. • In summary: (More like ) My hope … • I have a Windows box, and Windows … • Is easy to learn… • Has excellent shells • Has my favorite editor • Supports my favorite IDE • Supports my compilers and libraries • Does not lock me in • Plays well with OSS • …. • In summary: ( or at least ) How? • Recreating a Unix like veneer over windows to minimize your learning curve • Leverage your investment in know how & code • Showing what key codes already run natively on windows just as well • Kicking the dev tires using cross plat languages Objective is to: Help you ADD to your toolbox, not take anything away from it! At a high level… • Cygwin • SUA • Windowing systems “The Unix look & feel” • Standalone shell/utils • IDE‟s • Editors General purpose development • Compilers / languages / Tools • make • Libraries • CAS environments Dedicated CAS / IDE‟s And if there is time, a couple of demos… Cygwin • What is it? • A Unix like environment for Windows.
    [Show full text]
  • Using Visual Studio Code for Embedded Linux Development
    Embedded Linux Conference Europe 2020 Using Visual Studio Code for Embedded Linux Development Michael Opdenacker [email protected] © Copyright 2004-2020, Bootlin. embedded Linux and kernel engineering Creative Commons BY-SA 3.0 license. Corrections, suggestions, contributions and translations are welcome! - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/24 Michael Opdenacker I Founder and Embedded Linux engineer at Bootlin: I Embedded Linux engineering company I Specialized in low level development: kernel and bootloader, embedded Linux build systems, boot time reduction, secure booting, graphics layers... I Contributing to the community as much as possible (code, experience sharing, free training materials) I Current maintainer of the Elixir Cross Referencer indexing the source code of Linux, U-Boot, BusyBox... (https://elixir.bootlin.com) I Interested in discovering new tools and sharing the experience with the community. I So far, only used Microsoft tools with the purpose of replacing them! - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/24 Using Visual Studio Code for Embedded Linux Development In the Stack Overflow 2019 Developer Survey, Visual Studio Code was ranked the most popular developer environment tool, with 50.7% of 87,317 respondents claiming to use it (Wikipedia) - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/24 Disclaimer and goals I I’m not a Visual Studio Code guru! I After hearing about VS Code from many Bootlin customers, I wanted to do my own research on it and share it with you. I The main focus of this research is to find out to what extent VS Code can help with embedded Linux development, and how it compares to the Elixir Cross Referencer in terms of code browsing.
    [Show full text]