Feature Exchangeанаbetter

Total Page:16

File Type:pdf, Size:1020Kb

Feature Exchangeанаbetter Feature Exchange ­ Better FFI Background The biggest new part of LiveCode 8 is LiveCode Builder, a new English­like programming language which is ​ ​ designed to be used to extend the feature set of LiveCode itself. LiveCode Builder has been designed in such a way to ensure that it can eventually replace C++ as the implementation language for all the LiveCode features you use and enjoy today. Compared to LiveCode Script, LiveCode Builder is a stricter language with a more expressive type system allowing it to be used to build the very­high level features you use every day. It has been designed to ensure that, in the future, LiveCode Builder code can be compiled to native code with similar performance to C++ code that does the same thing. One of the key features of LiveCode Builder is its ‘foreign function interface’, or FFI. A ‘foreign function’ is a function which has been written in C and compiled into a loadable shared library (or DLL, on Windows). LiveCode Builder lets you define ‘foreign handlers’ that let you call these functions directly from LiveCode Builder code. This feature is used extensively in the implementation of LiveCode Builder itself! Most of the features exposed through syntax in LiveCode Builder are implemented in C++ (with C function signatures) and then referenced from the LiveCode Builder standard library modules. The ability to hook into foreign code in this fashion enables LiveCode Builder to be used to implement very high­level features (which you access using LiveCode Script) which directly use operating system APIs or pre­existing third­party libraries. Foreign functions are designed to be called by the language they are implemented in. This means that they know nothing about the high­level types which LiveCode Builder uses, and you are familiar with from using LiveCode Script. To make such functions easily usable requires a bridge between the types of value which Builder understands to the types which the foreign language understands. A good example of this can be seen by considering perhaps the most used value type you see in LiveCode Script and Builder: the string. In the LiveCode world a string is a sequence of characters which you can easily manipulate ­ you don’t have to worry about representation or memory management as the LiveCode VM takes care of all of that for you. In contrast, many C functions expect strings as a sequence of bytes or shorts with either a separately­specified length, or a NUL terminating byte. So, if you have a C function which expects a string as a parameter, you need to map the high­level string abstraction LiveCode uses to the specific kind of string that particular C function understands. The C function might also want to ‘keep’ the string you give it rather than just look at it temporarily, and this means ideas of lifetime and ownership of the underlying representation come into play. In addition to these considerations, the conventions in terms of the actual type of string a C function might expect, or what it expects to do with it can’t be detected automatically by looking at the C function! The information often only exists elsewhere, such as in the reference documentation for that particular function, or the documented conventions established for the library as a whole. The mapping of types of value from one programming language’s world to another programming language’s (or ‘bridging’) is perhaps the hardest problem to solve when you want this level of interoperability. Currently, LiveCode Builder tries to solve the bridging problem to some extent but the reality is that you still have to do a lot of work to utilise all but the simplest of C functions. The foreign function interface in LiveCode Builder is perfectly usable, but it is still a lot harder to use then we’d like, and a lot harder than it ​ ​ should be in a programming language which bears the name LiveCode. It is this ‘bridging’ problem we would like to work on to solve, and which has prompted this Feature Exchange proposal. Bridging to C Here are some examples of C APIs and how they ideally would map to Builder. libuuid ­ libuuid_generate This really useful function generates a UUID and is present on most UNIX based systems in a library called ‘libuuid’. In C, the signature (description of parameter types and return type) of ‘libuuid_generate’ is: typedef unsigned char uuid_t[16]; ​ ​ ​ ​ ​ void libuuid_generate(uuid_t uuid); ​ These two lines of C basically do the following: ● Declare a new type ‘uuid_t’ which is a sequence of exactly 16 ‘unsigned chars’. ● Declare that the ‘libuuid_generate function’ takes a parameter of type ‘uuid_t’ and has no return value. This sounds all well and good, and surely that should be all you need to know to be able to call the function from a higher­level language such as Builder. However, unfortunately, it is not! There are two pieces of missing information. 1. What is the content of those 16 ‘unsigned chars’? It is a matter of informal convention that you typically use ‘unsigned char’ in C to denote a byte, and as such the ‘uuid_t’ type is most likely describing a sequence of 16 bytes. However, this is just an informal convention: whether this is the case or not depends on what the intent of the function is and the conventions that the writers of libuuid decided on. They could have equally well have chosen ‘char’ and not ‘unsigned char’ and it would be just as correct. The intended meaning will be part of the documentation of the function within the library. It is not part of the language syntax itself. 2. What does the function actually do with its uuid parameter? Does it want to read from it, does it want to write to it, or does it want to do both? Again, this is something which is only explained it its documention. In this case it is quite easy to figure out. Because this is generating a UUID, it would ​ ​ be reasonable to expect that the function will write a new uuid to the parameter it has been given. With the actual C syntax and these two extra pieces of information, it becomes clear that the ideal Builder handler would look like:: handler libuuid_generate() returns Data ​ ​ ​ Once you understand both sides — the handler we’d like in Builder, and the C function definition and extra information — you can work out how to ‘glue’ the two sides together so Builder can call the C function seamlessly and safely. libsqlite ­ sqlite3_prepare This complex function prepares a piece of SQL for execution by SQLite. It has the following C signature: typedef struct sqlite3 sqlite3; ​ typedef struct sqlite3_stmt sqlite3_stmt; ​ int sqlite3_prepare( ​ sqlite3 *db, const char *zSql, ​ ​ ​ int nByte, ​ sqlite3_stmt **ppStmt, const char **pzTail); ​ ​ ​ There are several pieces of extra information which can be foind in the documentation for the function: ● The zSql parameter should be a string which has been encoded using UTF­8 ● The nByte parameter is the maximum number of bytes to consider in the zSql parameter, up to the first zero byte (if present) ● ppStmt is the memory address where the created sqlite3_stmt reference should be stored ● pzTail is the memory addresswhere the point in zSql that the parser got to should be stored, because the function only compiles the first SQL statement in zSql ● The return value is an error code. If it is SQLITE_OK then it succeeded, and otherwise it failed and the return parameters will not have been touched. The trickiest part here is pzTail return value. At the C level, this return value will be a memory address inside the zSql string, but since you don’t really want to be dealing with memory addresses directly this needs to end up being an offset (in characters) into the input SQL string. Taking all this information into account, a reasonable Builder signature for the function could be: handler sqlite3_prepare( ​ in db as Pointer, ​ ​ ​ in zSql as String, ​ ​ ​ out ppStmt as Pointer, ​ ​ ​ out pzTail as Integer) returns Integer ​ ​ ​ ​ ​ Of course, this still leaves the question of how to glue the two levels (Builder and C) together. Windows API ­ GetCurrentDirectory The conventions used in different foreign libraries vary and many have their own specific patterns which are usually uniformly applied. A good example of this is the way the Windows Win32 API typically handles returning variable length strings. Consider the GetCurrentDirectoryW function from the Win32 API: typedef uint32_t DWORD; ​ typedef wchar_t *LPWSTR; ​ DWORD GetCurrentDirectoryW(DWORD nBufferLength, LPWSTR lpBuffer); As before, there are a few bits of further information you need to understand how this function works: ● The caller must provide a buffer big enough to include the NUL terminating char to lpBuffer, and pass its length in nBufferLength. ● The caller can determine the size of the buffer needed by calling the function with nBufferLength of 0 and lpBuffer as NULL. ● If the function fails, 0 is returned and the error code can be gained by calling GetLastError(); otherwise it returns the number of chars written into the buffer. There is a pattern here which is used a lot in the Win32 API. You call an API which returns a variable length buffer with 0 for the length and NULL for the buffer, and the function tells you how big it needs to be. This essentially leads to a ‘double­call’ approach for many of these APIs ­ you first call them to find out how much memory you need to allocate, and then you call again to actually get the result. Thus, a nice Builder signature for this function would be this: handler GetCurrentDirectoryW(out rDir as String) returns Boolean ​ ​ ​ ​ ​ ​ ​ We would want the need to call the foreign function twice to be hidden at the Builder level, and the return value to simply indicate whether the call was successful.
Recommended publications
  • Redalyc.Computer Programming for Research and Application: Livecode
    Revista Mexicana de Análisis de la Conducta ISSN: 0185-4534 [email protected] Sociedad Mexicana de Análisis de la Conducta México Potter, Bill; Roy, Rosanne; Bianchi, Shannon Computer programming for research and application: livecode development environment Revista Mexicana de Análisis de la Conducta, vol. 40, núm. 2, septiembre, 2014, pp. 154-191 Sociedad Mexicana de Análisis de la Conducta Distrito Federal, México Available in: http://www.redalyc.org/articulo.oa?id=59335811011 How to cite Complete issue Scientific Information System More information about this article Network of Scientific Journals from Latin America, the Caribbean, Spain and Portugal Journal's homepage in redalyc.org Non-profit academic project, developed under the open access initiative REVISTA MEXICANA DE ANÁLISIS DE LA CONDUCTA 2014 NÚMERO 2 (SEPTIemBre) MEXICAN JOURNAL OF BEHAVIOR ANALYSIS VOL. 40, 154-191 NUMBER 2 (SEPTemBer) COMPUTER PROGRAMMING FOR RESEARCH AND APPLICATION: LIVECODE DEVELOPMENT ENVIRONMENT PROGRAMACIÓN DE COMPUTADORAS PARA INVESTIGACIÓN Y APLICACIÓN: ENTORNO DE DESARROLLO LIVECODE BILL POTTER, ROSANNE ROY AND SHANNON BIANCHI CALIfornIA STATE UNIverSITY, STanISLauS Abstract This paper provides an overview of the advantages that a behavior analyst might ob- tain from learning to program computers. A powerful, yet relatively easy to learn programming platform called LiveCode is reviewed and a tutorial is provided on the basics of the platform. A variety of Behavior Analytic applications created using Live- Code are discussed and a sample receptive identification program is provided as an illustration of the efficiency LiveCode offers in developing such prototypes quickly for application or research. Keywords: behavior analysis, computers, programming, LiveCode, research Resumen El presente trabajo proporciona una visión general de las ventajas que un analista de la conducta podría obtener de aprender a programar computadoras.
    [Show full text]
  • Computer Programming for Research and Application: Livecode Development Environment
    REVISTA MEXICANA DE ANÁLISIS DE LA CONDUCTA 2014 NÚMERO 2 (SEPTIemBre) MEXICAN JOURNAL OF BEHAVIOR ANALYSIS VOL. 40, 154-191 NUMBER 2 (SEPTemBer) COMPUTER PROGRAMMING FOR RESEARCH AND APPLICATION: LIVECODE DEVELOPMENT ENVIRONMENT PROGRAMACIÓN DE COMPUTADORAS PARA INVESTIGACIÓN Y APLICACIÓN: ENTORNO DE DESARROLLO LIVECODE BILL POTTER, ROSANNE ROY AND SHANNON BIANCHI CALIfornIA STATE UNIveRSITY, STanISLauS Abstract This paper provides an overview of the advantages that a behavior analyst might ob- tain from learning to program computers. A powerful, yet relatively easy to learn programming platform called LiveCode is reviewed and a tutorial is provided on the basics of the platform. A variety of Behavior Analytic applications created using Live- Code are discussed and a sample receptive identification program is provided as an illustration of the efficiency LiveCode offers in developing such prototypes quickly for application or research. Keywords: behavior analysis, computers, programming, LiveCode, research Resumen El presente trabajo proporciona una visión general de las ventajas que un analista de la conducta podría obtener de aprender a programar computadoras. Una plataforma de programación potente, pero relativamente fácil de aprender llamada LiveCode se revisa y se proporciona un tutorial con los fundamentos de la plataforma. Una varie- dad de aplicaciones enfocadas en el análisis de la conducta, creadas usando LiveCo- de, son discutidas y se describe la programación de un programa de igualación a la Bill Potter, Rosanne Roy, and Shannon Bianchi, Department of Psychology/Child Development, California State University, Stanislaus. Thanks to Patrick Williams for his help on this manuscript. In addition, thanks to the reviewers Hirofumi Shimizu and Carlos A. Pérez-Herrera for their thoughtful improvements to this manuscript.
    [Show full text]
  • Livecode 6.6.5 Release Notes 10/21/14
    LiveCode 6.6.5 Release Notes 10/21/14 Overview Known issues Platform support Windows Linux Mac Setup Installation Uninstallation Reporting installer issues Activation Multi-user and network install support (4.5.3) Command-line installation Command-line activation Proposed changes Engine changes iOS 8.1 Support Location Services Disabled Specific bug fixes (6.6.5) Dictionary changes Previous Release Notes 1 LiveCode 6.6.5 Release Notes 10/21/14 This document describes all the changes that have been made for LiveCode 6.6.5, including bug fixes and new syntax. The installer will currently fail if you run it from a network share on Windows. Please copy the installer to a local disk before launching on this platform. The engine supports a variety of operating systems and versions. This section describes the platforms that we ensure the engine runs on without issue (although in some cases with reduced functionality). The engine supports the following Windows OSes: Windows XP SP2 and above Windows Server 2003 Windows Vista SP1 and above (both 32-bit and 64-bit) Windows 7 (both 32-bit and 64-bit) Windows Server 2008 Windows 8.x (Desktop) Note: On 64-bit platforms the engine still runs as a 32-bit application through the WoW layer. The linux engine requires the following: 32-bit installation, or a 64-bit linux distribution that has a 32-bit compatibility layer 2.4.x or later kernel X11R5 capable Xserver running locally on a 24-bit display glibc 2.3.2 or later gtk/gdk/glib (optional – required for native theme support) pango/xft (optional – required for pdf printing, anti-aliased text and unicode font support) lcms (optional – required for color profile support in JPEGs and PNGs) gksu (optional – required for elevate process support) Note: The optional requirements (except for gksu and lcms) are also required by Firefox and Chrome, so if your linux distribution runs one of those, it will run the engine.
    [Show full text]
  • Sqlite 1 Sqlite
    SQLite 1 SQLite SQLite Developer(s) D. Richard Hipp Initial release August 2000 [1] Latest stable 3.8.4.2 (March 26, 2014) [±] Written in C Operating system Cross-platform Size 658 KiB Type RDBMS (embedded) License Public domain [2] Website sqlite.org SQLite (/ˌɛskjuːɛlˈlaɪt/ or /ˈsiːkwəl.laɪt/) is a relational database management system contained in a C programming library. In contrast to other database management systems, SQLite is not a separate process that is accessed from the client application, but an integral part of it. SQLite is ACID-compliant and implements most of the SQL standard, using a dynamically and weakly typed SQL syntax that does not guarantee the domain integrity. SQLite is a popular choice as embedded database for local/client storage in application software such as web browsers. It is arguably the most widely deployed database engine, as it is used today by several widespread browsers, operating systems, and embedded systems, among others. SQLite has many bindings to programming languages. The source code for SQLite is in the public domain. Design Unlike client–server database management systems, the SQLite engine has no standalone processes with which the application program communicates. Instead, the SQLite library is linked in and thus becomes an integral part of the application program. (In this, SQLite follows the precedent of Informix SE of c. 1984 [3]) The library can also be called dynamically. The application program uses SQLite's functionality through simple function calls, which reduce latency in database access: function calls within a single process are more efficient than inter-process communication.
    [Show full text]
  • Livecode Conversion Procedure Livecode Conversion Procedure
    LiveCode Conversion Procedure LiveCode Conversion Procedure 1 1.1 LiveCode Conversion Procedure 5 1.2 Importing FileMaker Database Info 11 1.3 Importing Microsoft Access Database Info 14 1.4 Importing Visual FoxPro Applications 15 1.5 Adding the Button Bar Widget 16 1.6 Converting to a LiveCode Stack 20 1.7 Customizing the LiveCode Stack Conversion Process 31 1.8 FmPro Custom Property Set 34 1.9 FileMaker Converted Script Steps 37 2 Post Conversion Development 2.1 Overview of Post Conversion Development - LiveCode Conversion 39 3 Conversion Process Output Files 3.1 Overview of Conversion Files 43 3.2 Application.livecode 44 3.3 Corrupted Images Report.txt 45 3.4 Duplicate Objects Report.xls 46 3.5 Missing Tables Report.xls 47 3.6 create_relationships.sql 48 3.7 Missing Relationships Report.xls 49 3.8 Relationships.JSON 50 3.9 SQLColumnTypes.JSON 52 4 Library SubStacks 4.1 Overview of Library SubStacks 55 4.2 fmFunctions_Library 57 4.3 Globals_Library 58 4.4 Images_Library 61 4.5 SQL_Library 62 4.6 Unstored_Calc_Library 63 4.7 Stored_Calc_Library 64 4.8 Validation_Library 65 4.9 Value_List_Library 66 5 Conversion Utilities 5.1 JSON Connection File Builder.livecode Utility 68 5.2 FM Functions to LiveCode Remapping.livecode Utility 72 5.3 Relationships JSON Editor 80 5.4 SQL Column Types JSON Editor 93 6 Using the Converted Application 6.1 Export Records 107 6.2 Import Records 110 6.3 Printing 112 LiveCode Conversion Procedure - 4 LiveCode Conversion Procedure This document explains the process of converting FileMaker Pro®, Microsoft Access and Visual FoxPro databases into LiveCode (www.LiveCode.com) stacks with FmPro Migrator Platinum Edition.
    [Show full text]
  • Livecode 9.0.4 Release Notes 5/10/19 Livecode 9.0.4 Release Notes
    LiveCode 9.0.4 Release Notes 5/10/19 LiveCode 9.0.4 Release Notes Overview Known issues Breaking changes Standalone Building LiveCode Builder Platform support Windows Linux Mac iOS Android HTML5 Setup Installation Uninstallation Reporting installer issues Activating LiveCode Indy or Business edition Command-line installation Command-line uninstallation Command-line activation for LiveCode Indy or Business edition LiveCode Community engine changes Specific engine bug fixes (9.0.4-rc-3) Specific engine bug fixes (9.0.4-rc-2) Specific engine bug fixes (9.0.4-rc-1) LiveCode Community IDE changes Specific IDE bug fixes (9.0.4-rc-1) LiveCode Indy engine changes Specific engine bug fixes (9.0.4-rc-1) Previous release notes Overview LiveCode 9.0 enables access to libraries and platform APIs written in many other languages thanks to the community-funded 'Infinite LiveCode' project. This includes a greatly improved LiveCode Builder virtual machine. 1 LiveCode 9.0.4 Release Notes 5/10/19 LiveCode 9.0 contains many additional improvements to support LiveCode app developers, including: A new "spinner" widget OAuth2 authentication library for use with web APIs (e.g. Facebook, Google and GitHub) A command argument parser library for building command-line standalones Updates and performance improvements for existing widgets Known issues The installer will currently fail if you run it from a network share on Windows. Please copy the installer to a local disk before launching on this platform. The browser widget does not work on 32-bit Linux. 64-bit standalones for Mac OS X do not have support for audio recording.
    [Show full text]
  • Setting up Livecode with Android Studio Based on the Document at Android-Studio
    Setting up LiveCode with Android Studio Based on the document at http://lessons.livecode.com/m/2571/l/625198-livecode-and- android-studio. Expanded, updated, and clarified. LiveCode, Java, and Android Studio As of LiveCode 8.1.5 you can use Android Studio with LiveCode to set up Android deployment. You need to download and install Java SDK version 8. You need the Java Development Kit (JDK), not the Java Runtime Environment (JRE). You can download Java 8 here. (This is the deep link, and it may require an account: https://www.oracle.com/java/technologies/javase- jdk8-downloads.html.) If you already have Java 9 or 10 installed you will need to uninstall these and reinstall Java 8. ** You will need administrator access to the computer to install this.** Instructions for uninstalling later Java versions on Mac: https://www.java.com/en/download/ help/mac_uninstall_java.xml Instructions for uninstalling Java on Windows: https://www.java.com/en/download/help/ uninstall_java.xml If it is not already installed, you will need to download the Android Studio SDK, here. ** You will need administrator access to the computer to install this.** Android Studio will be installed to the Applications (Mac) or Program Files/Android (Windows) folder. Opening the SDK Manager Begin by starting up Android Studio (in the Applications folder). The first time you launch it you will go through a short setup wizard. Just click Next and accept all of the default settings. Click Finish when you get through the wizard. You will have to wait while Android Studio downloads a number of components.
    [Show full text]
  • Is Google Ready for Enterprise
    4-10 June 2013 | ComputerWeekly.com HOME NEWS GOOGLE APPS READY FOR THE ENTERPRISE LEAN ANALYTICS TO CHANGE BUSINESS DECISION-MAKING INSURANCE FIRM ROLLS OUT BYOD STRATEGY DRIVING DIGITAL SERVICES ACROSS Is Google ready for GOVERNMENT EDITOR’S COMMENT enterprise IT? OPINION RISING CORPORATE ADOPTION SHOWS GOOGLE IS NO LONGER JUST A CHEAP AND CHEERFUL ALTERNATIVE BUYER’S GUIDE TO MOBILE DEVICE TO TRADITIONAL ENTERPRISE SOFTWARE MANAGEMENT RUNREV LIVECODE 6.0 OPEN SOURCE PROGRAMMING SOFTWARE REVIEW DOWNTIME BACKGROUND IMAGE: HEMERA/THINKSTOCK GOOGLE IMAGE: VALENTYNA SAGAN/WIKICOMMONS THE WEEK IN IT HOME Online security Healthcare IT UK masters students to help build NHS publishes £1.2bn GP IT framework NEWS trust in digital security The Department of Health has announced The UK national Cyber Security Challenge a £1.2bn framework for GP Systems of GOOGLE APPS and 15 UK universities are calling on Choice, a scheme that offers central fund- READY FOR masters students for ideas on improv- ing for GP clinical IT systems. The frame- THE ENTERPRISE ing confidence in, and the security of, work will last for two years, with a maxi- the internet economy and digital society. mum of 100 suppliers, and aims to provide LEAN ANALYTICS TO The Cyber Integrity and Meaning of Trust a range of GP IT systems and related CHANGE BUSINESS DECISION-MAKING Competition offers winners an opportu- products and services to general practices nity to present their ideas to employers in the NHS in England, Scotland, Wales, looking to secure their online systems and Northern Ireland and the INSURANCE boost customer confidence. Isle of Man.
    [Show full text]
  • Fun and Software
    Fun and Software Fun and Software Exploring Pleasure, Paradox and Pain in Computing Edited by Olga Goriunova Bloomsbury Academic An imprint of Bloomsbury Publishing Inc 1385 Broadway 50 Bedford Square New York London NY 10018 WC1B 3DP USA UK www.bloomsbury.com Bloomsbury is a registered trade mark of Bloomsbury Publishing Plc First published 2014 © Olga Goriunova and contributors, 2014 All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or any information storage or retrieval system, without prior permission in writing from the publishers. No responsibility for loss caused to any individual or organization acting on or refraining from action as a result of the material in this publication can be accepted by Bloomsbury or the author. Library of Congress Cataloging-in-Publication Data A catalog record for this book is available from the Library of Congress ISBN: HB: 978-1-6235-6094-2 ePub: 978-1-6235-6756-9 ePDF: 978-1-6235-6887-0 Typeset by Fakenham Prepress Solutions, Fakenham, Norfolk NR21 8NN Printed and bound in the United States of America Contents Acknowledgements vi Introduction Olga Goriunova 1 1 Technology, Logistics and Logic: Rethinking the Problem of Fun in Software Andrew Goffey 21 2 Bend Sinister: Monstrosity and Normative Effect in Computational Practice Simon Yuill 41 3 Always One Bit More, Computing and the Experience of Ambiguity Matthew Fuller 91 4 Do Algorithms Have Fun? On Completion, Indeterminacy
    [Show full text]
  • Computer Programming for Research and Application: Livecode Development Environment
    REVISTA MEXICANA DE ANÁLISIS DE LA CONDUCTA 2014 NÚMERO 2 (SEPTIEMBRE) MEXICAN JOURNAL OF BEHAVIOR ANALYSIS VOL. 40, 154-191 NUMBER 2 (SEPTEMBER) COMPUTER PROGRAMMING FOR RESEARCH AND APPLICATION: LIVECODE DEVELOPMENT ENVIRONMENT PROGRAMACIÓN DE COMPUTADORAS PARA INVESTIGACIÓN Y APLICACIÓN: ENTORNO DE DESARROLLO LIVECODE BILL POTTER, ROSANNE ROY AND SHANNON BIANCHI CALIFORNIA STATE UNIVERSITY, STANISLAUS A bstract T his paper provides an overview of the advantages that a behavior analyst might ob- tain from learning to program computers. A powerful, yet relatively easy to learn programming platform called LiveCode is reviewed and a tutorial is provided on the basics of the platform. A variety of Behavior Analytic applications created using Live- Code are discussed and a sample receptive identification program is provided as an illustration of the efficiency LiveCode offers in developing such prototypes quickly for application or research. Keywords: behavior analysis, computers, programming, LiveCode, research R esumen El presente trabajo proporciona una visión general de las ventajas que un analista de la conducta podría obtener de aprender a programar computadoras. Una plataforma de programación potente, pero relativamente fácil de aprender llamada LiveCode se revisa y se proporciona un tutorial con los fundamentos de la plataforma. Una varie- dad de aplicaciones enfocadas en el análisis de la conducta, creadas usando LiveCo- de, son discutidas y se describe la programación de un programa de igualación a la B ill Potter, Rosanne Roy, and Shannon Bianchi, Department of Psychology/Child Development, California State University, Stanislaus. Thanks to Patrick Williams for his help on this manuscript. In addition, thanks to the reviewers Hirofumi Shimizu and Carlos A.
    [Show full text]
  • Livecode 6.1.3 Release Notes 11/11/13
    LiveCode 6.1.3 Release Notes 11/11/13 Overview Known issues Platform support Windows Linux Mac Setup Installation Uninstallation Reporting installer issues Activation Multi-user and network install support (4.5.3) Command-line installation Command-line activation Proposed changes Engine changes iOS doesn't load any data unless HTTP status code is 200 The childControlIds / childControlNames properties return empty lines. Flip does not work on referenced images. Fix font setting for multiline edit controls on iOS7 iOS Native Scroller doesn't work correctly on iOS 7 Mouse release/touch cancel events incorrectly sending mouseUp message secureMode restricts access to network Specific bug fixes (6.1.3) Dictionary additions Dictionary changes Previous Release Notes 1 LiveCode 6.1.3 Release Notes 11/11/13 This document describes all the changes that have been made for LiveCode 6.1.3, including bug fixes and new syntax. The installer will currently fail if you run it from a network share on Windows. Please copy the installer to a local disk before launching on this platform. The engine supports a variety of operating systems and versions. This section describes the platforms that we ensure the engine runs on without issue (although in some cases with reduced functionality). The engine supports the following Windows OSes: Windows 2000 SP4 Windows XP SP2 and above Windows Server 2003 Windows Vista SP1 and above (both 32-bit and 64-bit) Windows 7 (both 32-bit and 64-bit) Windows Server 2008 Note: On 64-bit platforms the engine still runs as a 32-bit application through the WoW layer.
    [Show full text]
  • Ios Deployment Release Notes
    Revision 97 – 2013-05-29 iOS Deployment Release Notes Table of Contents Overview.............................................................................................................................................. 5 Getting Started......................................................................................................................................6 Choosing an SDK............................................................................................................................ 6 Snow Leopard............................................................................................................................. 6 Lion & Mountain Lion................................................................................................................6 Configuring LiveCode..................................................................................................................... 6 Configuring an iOS standalone........................................................................................................7 Testing in the iOS simulator............................................................................................................ 8 A first project................................................................................................................................... 9 Building for a real device.................................................................................................................9 Configuring an iOS Application........................................................................................................
    [Show full text]