In Contributor's Guide

Total Page:16

File Type:pdf, Size:1020Kb

Load more

LilyPond The music typesetter Contributor's Guide The LilyPond development team This manual documents contributing to LilyPond version 2.18.2. It discusses technical issues ¨ and policies that contributors should follow. This manual is not intended to be read sequentially; new contributors should only read the sections which are relevant to them. For more information about different jobs, see Section \Help us" in General Information. © For more information about how this manual fits with the other documentation, or to read this ¨ manual in other formats, see Section \Manuals" in General Information. If you are missing any manuals, the complete documentation can be found at http://www.lilypond.org/. © Copyright c 2007{2012 by the authors. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections. A copy of the license is included in the section entitled \GNU Free Documentation License". For LilyPond version 2.18.2 i Table of Contents 1 Introduction to contributing:::::::::::::::::::::::::::::::::: 1 1.1 Help us:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1 1.2 Overview of work flow ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 1.3 Summary for experienced developers ::::::::::::::::::::::::::::::::::::::::::::::: 2 1.4 Mentors ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2 Quick start ::::::::::::::::::::::::::::::::::::::::::::::::::::: 5 2.1 LilyDev ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5 Where to get LilyDev:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5 Installing LilyDev in VirtualBox ::::::::::::::::::::::::::::::::::::::::::::::::::::: 5 Configuring LilyDev in VirtualBox::::::::::::::::::::::::::::::::::::::::::::::::::: 7 2.2 lily-git::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 7 Where to get lily-git ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 7 Configuring lily-git and downloading the source code ::::::::::::::::::::::::::::::::: 8 How to use lily-git ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 2.3 Compiling with LilyDev :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 10 2.4 Now start work! :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 11 3 Working with source code ::::::::::::::::::::::::::::::::::: 12 3.1 Manually installing lily-git.tcl::::::::::::::::::::::::::::::::::::::::::::::::::::: 12 3.2 Starting with Git::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 12 3.2.1 Setting up ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 Installing Git:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 Initializing a repository :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 Configuring Git ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 3.2.2 Git for the impatient :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 14 3.2.3 Other repositories ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 17 lilypond-extra ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 17 Grand Unified Builder (GUB) ::::::::::::::::::::::::::::::::::::::::::::::::::: 18 lilypad :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 18 yet more repositories :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 18 3.2.4 Downloading remote branches ::::::::::::::::::::::::::::::::::::::::::::::: 18 Organization of remote branches::::::::::::::::::::::::::::::::::::::::::::::::: 18 LilyPond repository sources ::::::::::::::::::::::::::::::::::::::::::::::::::::: 18 Downloading individual branches :::::::::::::::::::::::::::::::::::::::::::::::: 19 Downloading all remote branches :::::::::::::::::::::::::::::::::::::::::::::::: 20 Other branches :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 20 3.3 Basic Git procedures ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 20 3.3.1 The Git contributor's cycle :::::::::::::::::::::::::::::::::::::::::::::::::: 20 3.3.2 Pulling and rebasing::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 20 3.3.3 Using local branches ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 21 Creating and removing branches ::::::::::::::::::::::::::::::::::::::::::::::::: 22 Listing branches and remotes :::::::::::::::::::::::::::::::::::::::::::::::::::: 22 Checking out branches :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 22 Merging branches ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 22 3.3.4 Commits and patches:::::::::::::::::::::::::::::::::::::::::::::::::::::::: 22 Understanding commits ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 22 ii Making commits :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 23 Commit messages ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 23 Making patches ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 24 Uploading a patch for review :::::::::::::::::::::::::::::::::::::::::::::::::::: 24 3.4 Advanced Git procedures ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 26 3.4.1 Merge conflicts :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 27 3.4.2 Advanced Git concepts :::::::::::::::::::::::::::::::::::::::::::::::::::::: 27 3.4.3 Resolving conflicts ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 28 3.4.4 Reverting all local changes::::::::::::::::::::::::::::::::::::::::::::::::::: 28 3.4.5 Working with remote branches ::::::::::::::::::::::::::::::::::::::::::::::: 28 3.4.6 Git log :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 29 3.4.7 Applying remote patches :::::::::::::::::::::::::::::::::::::::::::::::::::: 29 3.4.8 Sending and receiving patches via email:::::::::::::::::::::::::::::::::::::: 29 3.4.9 Cleaning up multiple patches :::::::::::::::::::::::::::::::::::::::::::::::: 30 3.4.10 Commit access ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 30 3.4.11 Pushing to staging ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 33 3.5 Git on Windows:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 33 3.5.1 Background to nomenclature::::::::::::::::::::::::::::::::::::::::::::::::: 34 3.5.2 Installing git :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 34 3.5.3 Initialising Git::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 34 3.5.4 Git GUI ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 35 3.5.5 Personalising your local git repository:::::::::::::::::::::::::::::::::::::::: 35 3.5.6 Checking out a branch::::::::::::::::::::::::::::::::::::::::::::::::::::::: 35 3.5.7 Updating files from `remote/origin/master'::::::::::::::::::::::::::::::::::: 36 3.5.8 Editing files ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 36 3.5.9 Sending changes to `remotes/origin/master' :::::::::::::::::::::::::::::::::: 37 3.5.10 Resolving merge conflicts ::::::::::::::::::::::::::::::::::::::::::::::::::: 37 3.5.11 Other actions :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 37 3.6 Repository directory structure :::::::::::::::::::::::::::::::::::::::::::::::::::: 38 3.7 Other Git documentation::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 40 4 Compiling ::::::::::::::::::::::::::::::::::::::::::::::::::::: 41 4.1 Overview of compiling :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 41 4.2 Requirements :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 41 4.2.1 Requirements for running LilyPond :::::::::::::::::::::::::::::::::::::::::: 41 4.2.2 Requirements for compiling LilyPond :::::::::::::::::::::::::::::::::::::::: 41 4.2.3 Requirements for building documentation :::::::::::::::::::::::::::::::::::: 42 4.3 Getting the source code :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 43 4.4 Configuring make ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 43 4.4.1 Running ./autogen.sh:::::::::::::::::::::::::::::::::::::::::::::::::::::: 43 4.4.2 Running ../configure:::::::::::::::::::::::::::::::::::::::::::::::::::::: 44 Configuration options ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 44 Checking build dependencies :::::::::::::::::::::::::::::::::::::::::::::::::::: 44 Configuring target directories :::::::::::::::::::::::::::::::::::::::::::::::::::: 44 4.5 Compiling LilyPond :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 45 4.5.1 Using make :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 45 4.5.2 Saving time with the `-j' option ::::::::::::::::::::::::::::::::::::::::::::: 45 4.5.3 Compiling for multiple platforms::::::::::::::::::::::::::::::::::::::::::::: 45 4.5.4 Useful make variables :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 46 4.6 Post-compilation options ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 46 4.6.1 Installing LilyPond from a local build :::::::::::::::::::::::::::::::::::::::: 46 4.6.2 Generating documentation ::::::::::::::::::::::::::::::::::::::::::::::::::: 46 Documentation editor's edit/compile cycle ::::::::::::::::::::::::::::::::::::::: 46 Building documentation ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 47 iii Building a single
Recommended publications
  • Source Code Trees in the VALLEY of THE

    Source Code Trees in the VALLEY of THE

    PROGRAMMING GNOME Source code trees IN THE VALLEY OF THE CODETHORSTEN FISCHER So you’ve just like the one in Listing 1. Not too complex, eh? written yet another Unfortunately, creating a Makefile isn’t always the terrific GNOME best solution, as assumptions on programs program. Great! But locations, path names and others things may not be does it, like so many true in all cases, forcing the user to edit the file in other great programs, order to get it to work properly. lack something in terms of ease of installation? Even the Listing 1: A simple Makefile for a GNOME 1: CC=/usr/bin/gcc best and easiest to use programs 2: CFLAGS=`gnome-config —cflags gnome gnomeui` will cause headaches if you have to 3: LDFLAGS=`gnome-config —libs gnome gnomeui` type in lines like this, 4: OBJ=example.o one.o two.o 5: BINARIES=example With the help of gcc -c sourcee.c gnome-config —libs —cflags 6: gnome gnomeui gnomecanvaspixbuf -o sourcee.o 7: all: $(BINARIES) Automake and Autoconf, 8: you can create easily perhaps repeated for each of the files, and maybe 9: example: $(OBJ) with additional compiler flags too, only to then 10: $(CC) $(LDFLAGS) -o $@ $(OBJ) installed source code demand that everything is linked. And at the end, 11: do you then also have to copy the finished binary 12: .c.o: text trees. Read on to 13: $(CC) $(CFLAGS) -c $< manually into the destination directory? Instead, 14: find out how. wouldn’t you rather have an easy, portable and 15: clean: quick installation process? Well, you can – if you 16: rm -rf $(OBJ) $(BINARIES) know how.
  • Red Hat Enterprise Linux 6 Developer Guide

    Red Hat Enterprise Linux 6 Developer Guide

    Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Dave Brolley William Cohen Roland Grunberg Aldy Hernandez Karsten Hopp Jakub Jelinek Developer Guide Jeff Johnston Benjamin Kosnik Aleksander Kurtakov Chris Moller Phil Muldoon Andrew Overholt Charley Wang Kent Sebastian Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Edition 0 Author Dave Brolley [email protected] Author William Cohen [email protected] Author Roland Grunberg [email protected] Author Aldy Hernandez [email protected] Author Karsten Hopp [email protected] Author Jakub Jelinek [email protected] Author Jeff Johnston [email protected] Author Benjamin Kosnik [email protected] Author Aleksander Kurtakov [email protected] Author Chris Moller [email protected] Author Phil Muldoon [email protected] Author Andrew Overholt [email protected] Author Charley Wang [email protected] Author Kent Sebastian [email protected] Editor Don Domingo [email protected] Editor Jacquelynn East [email protected] Copyright © 2010 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
  • The GNOME Desktop Environment

    The GNOME Desktop Environment

    The GNOME desktop environment Miguel de Icaza ([email protected]) Instituto de Ciencias Nucleares, UNAM Elliot Lee ([email protected]) Federico Mena ([email protected]) Instituto de Ciencias Nucleares, UNAM Tom Tromey ([email protected]) April 27, 1998 Abstract We present an overview of the free GNU Network Object Model Environment (GNOME). GNOME is a suite of X11 GUI applications that provides joy to users and hackers alike. It has been designed for extensibility and automation by using CORBA and scripting languages throughout the code. GNOME is licensed under the terms of the GNU GPL and the GNU LGPL and has been developed on the Internet by a loosely-coupled team of programmers. 1 Motivation Free operating systems1 are excellent at providing server-class services, and so are often the ideal choice for a server machine. However, the lack of a consistent user interface and of consumer-targeted applications has prevented free operating systems from reaching the vast majority of users — the desktop users. As such, the benefits of free software have only been enjoyed by the technically savvy computer user community. Most users are still locked into proprietary solutions for their desktop environments. By using GNOME, free operating systems will have a complete, user-friendly desktop which will provide users with powerful and easy-to-use graphical applications. Many people have suggested that the cause for the lack of free user-oriented appli- cations is that these do not provide enough excitement to hackers, as opposed to system- level programming. Since most of the GNOME code had to be written by hackers, we kept them happy: the magic recipe here is to design GNOME around an adrenaline response by trying to use exciting models and ideas in the applications.
  • Why and How I Use Lilypond Daniel F

    Why and How I Use Lilypond Daniel F

    Why and How I Use LilyPond Daniel F. Savarese Version 1.1 Copyright © 2018 Daniel F. Savarese1 even with an academic discount. I never got my money's Introduction worth out of it. At the time I couldn't explain exactly why, but I was never productive using it. In June of 2017, I received an email from someone using my classical guitar transcriptions inquiring about how I Years later, when I started playing piano, I upgraded to use LilyPond2 to typeset (or engrave) music. He was the latest version of Finale and suddenly found it easier dissatisfied with his existing WYSIWYG3 commercial to produce scores using the software. It had nothing to software and was looking for alternatives. He was im- do with new features in the product. After notating eight pressed with the appearance of my transcription of Lá- original piano compositions, I realized that my previous grima and wondered if I would share the source for it difficulties had to do with the idiosyncratic requirements and my other transcriptions. of guitar music that were not well-supported by the soft- ware. Nevertheless, note entry and the overall user inter- I sent the inquirer a lengthy response explaining that I'd face of Finale were tedious. I appreciated how accurate like to share the source for my transcriptions, but that it the MIDI playback could be with respect to dynamics, wouldn't be readily usable by anyone given the rather tempo changes, articulations, and so on. But I had little involved set of support files and programs I've built to need for MIDI output.
  • Autotools Tutorial

    Autotools Tutorial

    Autotools Tutorial Mengke HU ECE Department Drexel University ASPITRG Group Meeting Outline 1 Introduction 2 GNU Coding standards 3 Autoconf 4 Automake 5 Libtools 6 Demonstration The Basics of Autotools 1 The purpose of autotools I It serves the needs of your users (checking platform and libraries; compiling and installing ). I It makes your project incredibly portablefor dierent system platforms. 2 Why should we use autotools: I A lot of free softwares target Linux operating system. I Autotools allow your project to build successfully on future versions or distributions with virtually no changes to the build scripts. The Basics of Autotools 1 The purpose of autotools I It serves the needs of your users (checking platform and libraries; compiling and installing ). I It makes your project incredibly portablefor dierent system platforms. 2 Why should we use autotools: I A lot of free softwares target Linux operating system. I Autotools allow your project to build successfully on future versions or distributions with virtually no changes to the build scripts. The Basics of Autotools 1 3 GNU packages for GNU build system I Autoconf Generate a conguration script for a project I Automake Simplify the process of creating consistent and functional makeles I Libtool Provides an abstraction for the portable creation of shared libraries 2 Basic steps (commends) to build and install software I tar -zxvf package_name-version.tar.gz I cd package_name-version I ./congure I make I sudo make install The Basics of Autotools 1 3 GNU packages for GNU build
  • 1 What Is Gimp? 3 2 Default Short Cuts and Dynamic Keybinding 9

    1 What Is Gimp? 3 2 Default Short Cuts and Dynamic Keybinding 9

    GUM The Gimp User Manual version 1.0.0 Karin Kylander & Olof S Kylander legalities Legalities The Gimp user manual may be reproduced and distributed, subject to the fol- lowing conditions: Copyright © 1997 1998 by Karin Kylander Copyright © 1998 by Olof S Kylander E-mail: [email protected] (summer 98 [email protected]) The Gimp User Manual is an open document; you may reproduce it under the terms of the Graphic Documentation Project Copying Licence (aka GDPL) as published by Frozenriver. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT- ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Graphic Documentation Project Copying License for more details. GRAPHIC DOCUMENTATION PROJECT COPYING LICENSE The following copyright license applies to all works by the Graphic Docu- mentation Project. Please read the license carefully---it is similar to the GNU General Public License, but there are several conditions in it that differ from what you may be used to. The Graphic Documentation Project manuals may be reproduced and distrib- uted in whole, subject to the following conditions: The Gimp User Manual Page i Legalities All Graphic Documentation Project manuals are copyrighted by their respective authors. THEY ARE NOT IN THE PUBLIC DOMAIN. • The copyright notice above and this permission notice must be preserved complete. • All work done under the Graphic Documentation Project Copying License must be available in source code for anyone who wants to obtain it. The source code for a work means the preferred form of the work for making modifications to it.
  • Download Chapter 3: "Configuring Your Project with Autoconf"

    Download Chapter 3: "Configuring Your Project with Autoconf"

    CONFIGURING YOUR PROJECT WITH AUTOCONF Come my friends, ’Tis not too late to seek a newer world. —Alfred, Lord Tennyson, “Ulysses” Because Automake and Libtool are essen- tially add-on components to the original Autoconf framework, it’s useful to spend some time focusing on using Autoconf without Automake and Libtool. This will provide a fair amount of insight into how Autoconf operates by exposing aspects of the tool that are often hidden by Automake. Before Automake came along, Autoconf was used alone. In fact, many legacy open source projects never made the transition from Autoconf to the full GNU Autotools suite. As a result, it’s not unusual to find a file called configure.in (the original Autoconf naming convention) as well as handwritten Makefile.in templates in older open source projects. In this chapter, I’ll show you how to add an Autoconf build system to an existing project. I’ll spend most of this chapter talking about the fundamental features of Autoconf, and in Chapter 4, I’ll go into much more detail about how some of the more complex Autoconf macros work and how to properly use them. Throughout this process, we’ll continue using the Jupiter project as our example. Autotools © 2010 by John Calcote Autoconf Configuration Scripts The input to the autoconf program is shell script sprinkled with macro calls. The input stream must also include the definitions of all referenced macros—both those that Autoconf provides and those that you write yourself. The macro language used in Autoconf is called M4. (The name means M, plus 4 more letters, or the word Macro.1) The m4 utility is a general-purpose macro language processor originally written by Brian Kernighan and Dennis Ritchie in 1977.
  • Lilypond Cheatsheet

    Lilypond Cheatsheet

    LilyPond-MusicTypesetting Basic usage - LilyPond Version 2.14 and above Cheatsheet by R. Kainhofer, Edition Kainhofer, http://www.edition-kainhofer.com/ Command-line usage General Syntax lilypond [-l LOGLEVEL] [-dSCMOPTIONS] [-o OUTPUT] [-V] FILE.ly [FILE2.ly] \xxxx function or variable { ... } Code grouping Common options: var = {...} Variable assignment --pdf, --png, --ps Output file format -dpreview Cropped “preview” image \version "2.14.0" LilyPond version -dbackend=eps Use different backend -dlog-file=FILE Create .log file % dots Comment -l LOGLEVEL ERR/WARN/PROG/DEBUG -dno-point-and-click No Point & Click info %{ ... %} Block comment -o OUTDIR Name of output dir/file -djob-count=NR Process files in parallel c\... Postfix-notation (notes) -V Verbose output -dpixmap-format=pngalpha Transparent PNG #'(..), ##t, #'sym Scheme list, true, symb. -dhelp Help on options -dno-delete-intermediate-files Keep .ps files x-.., x^.., x_.. Directions Basic Notation Creating Staves, Voices and Groups \version "2.15.0" c d e f g a b Note names (Dutch) SMusic = \relative c'' { c1\p } Alterations: -is/-es for sharp/flat, SLyrics = \lyricmode { Oh! } cis bes as cisis beses b b! b? -isis/-eses for double, ! forces, AMusic = \relative c' { e1 } ? shows cautionary accidental \relative c' {c f d' c,} Relative mode (change less than a \score { fifth), raise/lower one octave \new ChoirStaff << \new Staff { g1 g2 g4 g8 g16 g4. g4.. durations (1, 2, 4, 8, 16, ...); append “.” for dotted note \new Voice = "Sop" { \dynamicUp \SMusic
  • Lilypond Automated Music Formatting and the Art of Shipping

    Lilypond Automated Music Formatting and the Art of Shipping

    LilyPond Automated music formatting and The Art of Shipping Han-Wen Nienhuys LilyPond Software Design Jan Nieuwenhuizen 7th Fórum Internacional Software Livre April 20, 2006. Porto Alegre, Brazil Han-Wen Nienhuys Automatic music formatting (FISL 7.0) ‘‘But that's been done before, no?'' (Finale 2003) Gold standard Hand engraved scores (early 20th century) Han-Wen Nienhuys Automatic music formatting (FISL 7.0) Beautiful music typography A thing of beauty is a joy forever Ease of reading Better performance Han-Wen Nienhuys Automatic music formatting (FISL 7.0) Automated music typography Problem statement Design overview Examples of engraving Implementation Typography algorithms Formatting architecture Zen and the Art of Shipping Software Conclusions Han-Wen Nienhuys Automatic music formatting (FISL 7.0) Modeling notation Han-Wen Nienhuys Automatic music formatting (FISL 7.0) Modeling notation 7 3 z 4 ëë ­ è ë è Simple hierarchy does not 5 2 z work for complex notation > 4 ë ë Han-Wen Nienhuys Automatic music formatting (FISL 7.0) Divide and conquer > > { c'4 d'8 } > > typography ⇐ notation ⇐ hierarchical representation 1 Typography: where to put symbols 2 Notation: what symbols for which music 3 Music representation: how to encode music 4 Program architecture: glue together everything Han-Wen Nienhuys Automatic music formatting (FISL 7.0) Typography Music engraving: create pleasing look Visual: distance and blackness A craft: learned in practice No literature Han-Wen Nienhuys Automatic music formatting (FISL 7.0)
  • Symantec Web Security Service Policy Guide

    Symantec Web Security Service Policy Guide

    Web Security Service Policy Guide Revision: NOV.07.2020 Symantec Web Security Service/Page 2 Policy Guide/Page 3 Copyrights Broadcom, the pulse logo, Connecting everything, and Symantec are among the trademarks of Broadcom. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. Copyright © 2020 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. For more information, please visit www.broadcom.com. Broadcom reserves the right to make changes without further notice to any products or data herein to improve reliability, function, or design. Information furnished by Broadcom is believed to be accurate and reliable. However, Broadcom does not assume any liability arising out of the application or use of this information, nor the application or use of any product or circuit described herein, neither does it convey any license under its patent rights nor the rights of others. Policy Guide/Page 4 Symantec WSS Policy Guide The Symantec Web Security Service solutions provide real-time protection against web-borne threats. As a cloud-based product, the Web Security Service leverages Symantec's proven security technology, including the WebPulse™ cloud community. With extensive web application controls and detailed reporting features, IT administrators can use the Web Security Service to create and enforce granular policies that are applied to all covered users, including fixed locations and roaming users. If the WSS is the body, then the policy engine is the brain. While the WSS by default provides malware protection (blocks four categories: Phishing, Proxy Avoidance, Spyware Effects/Privacy Concerns, and Spyware/Malware Sources), the additional policy rules and options you create dictate exactly what content your employees can and cannot access—from global allows/denials to individual users at specific times from specific locations.
  • Curriculum Vitae June 7, 2008

    Curriculum Vitae June 7, 2008

    Curriculum Vitae June 7, 2008 Name: Han-Wen Nienhuys Driving license: yes Sex: Male E-mail: [email protected] Nationality: Dutch WWW: http://www.xs4all.nl/~hanwen/ Objective • To take on new challenges. • To simplify complex problems. • To share knowledge. Professional interests Software design and implementation, mathematical modeling techniques, numerical algorithms, linear algebra, music representation, digital typography. Education Formal education PhD, Institute for Information and Computing Sciences, Utrecht University. 2003. Engineering degree in applied mathematics (MSc equivalent, cum laude). Technical University Eindhoven, 1998. Graduation topic: analysis. Courses ASCI Course on Visualization and Virtual Reality, 2001. (ASCI is a Dutch graduate school) Skills Expert in: program design, coding and software engineering. Programming language experience: C (1991–now), C++ (1996–now), Python (1998–now), Scheme (2000-now), Java (2000–2002) years, Quill (2004; Certified Quintiq Specialist). Working knowledge of: Unix programming, Emacs, OpenGL, Java3D, Autoconf, Make, HTML, (Fedora) Linux, CVS, darcs, LATEX, METAFONT, Cocoa development, PostScript, Pango, SVG, PDF, LISP, Unicode. Proficient at: giving presentations, scientific writing, and technical writing. Languages: Dutch (native), English (fluent, reading and writing), Portuguese (speaking fluently, reasonable reading) German (reasonable reading), French (basic reading). Work experience March 2007–present Software Engineer, at Google Engineering Brazil. March 2005–August 2006 Freelance consultant, owner of LilyPond Software Design (http://lilypond-design.com) 1 April 2004–February 2005 Consultant Advanced Planning & Scheduling and Software Engineer, at Quintiq Applications B.V. Mar–Jun, 2003 Junior researcher at Utrecht University, Institute of Information and Computing Sciences. 1998–2003 Research assistant/PhD. student at Utrecht University, Institute of Information and Computing Sciences. 1996 Intern at the R&D department of Oce-Nederland´ B.V., writing software to simulate heat diffusion.
  • Linux for EDA Open-Source Development Tools

    Linux for EDA Open-Source Development Tools

    Linux for EDA Open-Source Development Tools Stephen A. Edwards Columbia University Department of Computer Science [email protected] http://www.cs.columbia.edu/˜sedwards Espresso An example project: Berkeley’s Espresso two-level minimizer. 18k LOC total in 59 .c files and 17 .h files. Written in C in pre-ANSI days. Ported extensively. Supports ANSI C and K&R C on VAX, SunOS 3 & 4, Ultrix, Sequent, HPUX, and Apollo. Autoconf A modern approach to cross-platform portability. How do you compile a program on multiple platforms? • Multiple code bases • Single code base sprinkled with platform-checking #ifdefs • Single code base with platform-checking #ifdefs confined to a few files: (#include "platform.h") • Single code base with feature-specific #ifdefs computed by a script that tests each feature Autoconf Basic configure.ac: AC_INIT(espresso.c) AM_INIT_AUTOMAKE(espresso, 2.3) AC_PROG_CC AC_LANG(C) AC_CONFIG_FILES([Makefile]) AC_OUTPUT Autoconf $ autoconf $ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for gawk... gawk ... checking dependency style of gcc... gcc3 configure: creating ./config.status config.status: creating Makefile config.status: executing depfiles commands $ ls Makefile Makefile $ Espresso’s port.h (fragment) #ifdef __STDC__ #include <stdlib.h> #else #ifdef hpux extern int abort(); extern void free(), exit(), perror(); #else extern VOID_HACK abort(), free(), exit(), perror(); #endif /* hpux */ extern char *getenv(), *malloc(), *realloc(),