This presentation was given at the Mac Admin & Developer Conference UK in February 2017. Session description follows:
You’re dealing with terrible installer packages, applications that perform ad-hoc system setup tasks and assume every user is an admin. It seems so often they were never tested in multi-user or enterprise environments. Your colleagues wonder “How hard could this be? At home I just install it and it works,” and they roll their eyes as you bemoan the sad realities of deploying desktop software.
This session will explore techniques for identifying the causes of these issues, and how to approach the various problems systematically to develop solutions. In no particular order, we’ll visit Bash, Python, packaging, launchd, configuration profiles, defaults, and the Hopper Disassembler.
The document provides code for two web pages that allow users to search for YouTube videos using the YouTube API v3. The first page, demo-search.html, allows searching for 210, 300, or 510 videos with a single click and displays the title of the top result. The second page, simple-search.html, displays search results as links that play videos continuously when clicked. The source code for both pages is included along with instructions for integrating an API key.
This document provides instructions for installing various developer tools including Git, Vim, Java, Tomcat, Maven, and Psi Probe on Linux, Mac OSX, and Windows. It then outlines 3 homework assignments: 1) creating a basic Git repository, 2) forking and cloning a provided repository, adding a feature, resolving conflicts, and deploying the application, and 3) using Psi Probe to manage Tomcat web applications. Step-by-step instructions are provided for completing each task along with explanations of commands used.
Puppeteer can automate that! - HolyJS Piter 2020Önder Ceylan
Puppeteer is a node library which provides a high-level API to control Chrome over the DevTools Protocol. When combined with the power of the web technologies, it can be used for automating image processing and batch file generation, creating automated visual testing with device emulation, tracking page loading performance, enforcing performance and code coverage budgets on CI, crawling a SPA, capturing a timeline trace of your site to help diagnose performance issues and more!
We'll explore those capabilities of Puppeteer API with combination of DevTools protocol and cloud functions (FaaS) with a showcase of real life use cases demonstrated by live-examples. Finally, we’ll go through the existing puppeteer based SaaS solutions such as Checkly and Browserless.
This document provides a summary of the state of web APIs in 2017. It begins with a brief history of web browsers and the "Browser Wars" of the 1990s. It then discusses the rise of mobile web usage, particularly in Asia and Africa, and the need for web APIs to support mobile web applications. The document proceeds to summarize several important modern web APIs, including APIs for device access, animations, games, sensors, battery status, ambient light, networking information, orientation, audio, MIDI, VR, service workers, push notifications, Bluetooth, and speech synthesis and recognition.
The document outlines Firefox OS and open web apps, including an agenda for a workshop on building apps for Firefox OS. It provides overviews of Firefox OS, developing open web apps using HTML5, CSS and JavaScript, app manifest files, and publishing/installing apps. It also describes various web APIs available to Firefox OS apps, including battery status, notifications, screen orientation, vibration, networking information, proximity sensing, ambient light detection, device storage, contacts, and activities. Future planned APIs are listed as well.
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...Robert Nyman
The document discusses building apps for Firefox OS using open web technologies like HTML5, CSS, and JavaScript. It explains that apps can be developed like regular web apps and then packaged for installation on Firefox OS devices. Developers can access device APIs for features like contacts, notifications, and sensors. The document outlines the steps to take which include developing the app, creating a manifest file, and publishing/installing the app. It provides details on various web APIs and permissions available to Firefox OS apps.
This document discusses the problems with using the Alamofire library for making HTTP requests and proposes an alternative called Nikka. It outlines issues with Alamofire like being difficult to understand and extend. Nikka is presented as a simpler solution that provides base functionality for networking, supports different APIs, and allows for extensions. The implementation of Nikka using classes for providers and routes is demonstrated along with examples of requesting data and extensions for JSON parsing and futures/Rx support.
The document describes an upcoming event for the Dutch Android User Group (Dutchaug) that will feature Android code puzzles and tips/tricks. It provides details about the event such as date, location, speakers, and organizer information. It also includes sample code puzzles and their solutions to demonstrate the type of content that will be covered.
The document provides code for two web pages that allow users to search for YouTube videos using the YouTube API v3. The first page, demo-search.html, allows searching for 210, 300, or 510 videos with a single click and displays the title of the top result. The second page, simple-search.html, displays search results as links that play videos continuously when clicked. The source code for both pages is included along with instructions for integrating an API key.
This document provides instructions for installing various developer tools including Git, Vim, Java, Tomcat, Maven, and Psi Probe on Linux, Mac OSX, and Windows. It then outlines 3 homework assignments: 1) creating a basic Git repository, 2) forking and cloning a provided repository, adding a feature, resolving conflicts, and deploying the application, and 3) using Psi Probe to manage Tomcat web applications. Step-by-step instructions are provided for completing each task along with explanations of commands used.
Puppeteer can automate that! - HolyJS Piter 2020Önder Ceylan
Puppeteer is a node library which provides a high-level API to control Chrome over the DevTools Protocol. When combined with the power of the web technologies, it can be used for automating image processing and batch file generation, creating automated visual testing with device emulation, tracking page loading performance, enforcing performance and code coverage budgets on CI, crawling a SPA, capturing a timeline trace of your site to help diagnose performance issues and more!
We'll explore those capabilities of Puppeteer API with combination of DevTools protocol and cloud functions (FaaS) with a showcase of real life use cases demonstrated by live-examples. Finally, we’ll go through the existing puppeteer based SaaS solutions such as Checkly and Browserless.
This document provides a summary of the state of web APIs in 2017. It begins with a brief history of web browsers and the "Browser Wars" of the 1990s. It then discusses the rise of mobile web usage, particularly in Asia and Africa, and the need for web APIs to support mobile web applications. The document proceeds to summarize several important modern web APIs, including APIs for device access, animations, games, sensors, battery status, ambient light, networking information, orientation, audio, MIDI, VR, service workers, push notifications, Bluetooth, and speech synthesis and recognition.
The document outlines Firefox OS and open web apps, including an agenda for a workshop on building apps for Firefox OS. It provides overviews of Firefox OS, developing open web apps using HTML5, CSS and JavaScript, app manifest files, and publishing/installing apps. It also describes various web APIs available to Firefox OS apps, including battery status, notifications, screen orientation, vibration, networking information, proximity sensing, ambient light detection, device storage, contacts, and activities. Future planned APIs are listed as well.
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...Robert Nyman
The document discusses building apps for Firefox OS using open web technologies like HTML5, CSS, and JavaScript. It explains that apps can be developed like regular web apps and then packaged for installation on Firefox OS devices. Developers can access device APIs for features like contacts, notifications, and sensors. The document outlines the steps to take which include developing the app, creating a manifest file, and publishing/installing the app. It provides details on various web APIs and permissions available to Firefox OS apps.
This document discusses the problems with using the Alamofire library for making HTTP requests and proposes an alternative called Nikka. It outlines issues with Alamofire like being difficult to understand and extend. Nikka is presented as a simpler solution that provides base functionality for networking, supports different APIs, and allows for extensions. The implementation of Nikka using classes for providers and routes is demonstrated along with examples of requesting data and extensions for JSON parsing and futures/Rx support.
The document describes an upcoming event for the Dutch Android User Group (Dutchaug) that will feature Android code puzzles and tips/tricks. It provides details about the event such as date, location, speakers, and organizer information. It also includes sample code puzzles and their solutions to demonstrate the type of content that will be covered.
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...NETWAYS
Pedro shows a short overview on how they use puppet at Server Density to manage the entire infrastructure and code, content mostly taken from previous presentations.
The focus will be on how to reduce the 4-year-old code base while making more use of forge modules while migrating to Puppet Enterprise 3.
The document discusses adaptive images in responsive web design. It covers using the browser's user agent string and feature testing to determine screen resolution and bandwidth instead of browser sniffing. Methods presented include using viewport width with JavaScript, jQuery, and CSS media queries; checking screen resolution directly and considering retina displays; and avoiding bandwidth speed tests. Workarounds discussed are using background-size: 100% with images, SVG, and a "Clown Car" SVG technique loading different image files via CSS media queries.
The document discusses adaptive images in responsive web design. It covers techniques like using the browser width and screen resolution to determine the appropriate image size via JavaScript or media queries. It also discusses checking bandwidth and using techniques like picture, srcset, .htaccess rewriting, and single pixel GIFs to serve the right image. The document recommends using CSS media queries for design and covers workaround techniques like background-size, SVG, and font-based solutions.
The document discusses using Plack::App::Proxy middleware to create a proxy for the CPAN search site that adds syntax highlighting and formatting. It demonstrates how to set up the proxy with a simple PSGI application and modify the POD documentation and module source code views through content filtering. Known issues with the approach are listed, along with potential other uses of Plack proxies beyond modifying CPAN.
This document discusses various ways that geolocation capabilities in mobile apps can leak users' private location data if not implemented securely. It provides examples of common geolocation bugs like insecure network communication, insecure local storage of location data, location spoofing, over-collection of precise location coordinates, and user interface errors. The document also demonstrates how these bugs can be discovered through network sniffing, file monitoring, runtime manipulation of location data, and disassembly analysis of app code.
This document contains a collection of code snippets and questions related to Android development puzzles and concepts. It discusses topics like the Android application lifecycle when finishing an activity, how fragment and activity handle returning results from started activities, and default behavior of progress bars and Toasts. The snippets are accompanied by multiple choice questions testing understanding of how the code would execute or appear.
Cocoaheads Stockholm 2014-02: Writing your own jailbreak tweakJoachim Bengtsson
A basic introduction to what a jailbreak really *is*, and how to remix software by writing your own jailbreak tweaks. See http://overooped.com/post/75523688909/writing-your-own-jailbreak-tweak for presenter notes
How to use Fiware Lab Facilities in order to deploy an application. The presentation will lead us to deploy a full application taking advantage of Openstack Command Line Interfaces.
This document discusses techniques used for hunting and analyzing malware on Mac systems. It describes common commands used by attackers for reconnaissance, backdoor installation, persistence, cleanup, and lateral movement. Specific indicators are also provided, such as backdoor file names and IP addresses. Hunting involves understanding the process tree and difficulties in detection given legitimate system tools are also used by attackers.
Here are the slides from Chris Barker and Deepak Giridharagopal's PuppetConf 2016 presentation called Docker, Mesos, Kubernetes and...Puppet? Don't Panic!. Watch the videos at https://www.youtube.com/playlist?list=PLV86BgbREluVjwwt-9UL8u2Uy8xnzpIqa
Antons Kranga Building Agile InfrastructuresAntons Kranga
This document provides an overview of a presentation on building agile infrastructures. It introduces the presenter, Antons Kranga, and his background. It then outlines the goals of DevOps in bringing developers and operations teams together through practices like Agile and ITIL. The presentation will discuss strategies for adopting a DevOps model, including provisioning continuous integration, automating infrastructure testing, and provisioning QA and production environments using tools like Chef, Vagrant, Jenkins, Nexus, and Test Kitchen. It will also cover techniques for automating infrastructure like configuration management with Chef recipes and testing infrastructure with tools like Chaos Monkey.
How we integrate & deploy Mobile Apps with Travis CIMarcio Klepacz
Travis CI was selected as the solution to automate iOS app builds and testing at GetYourGuide. It allows configuring builds that are triggered on every code push, producing binaries that can be tested. The .travis.yml file was configured to use the iPhone SDK, differentiate builds by branch, and archive and distribute the builds. Scripts were added for importing certificates, building and testing the app, archiving it into an IPA, and uploading the IPA and release notes to HockeyApp. This allows automatically deploying different versions of the app to testers after code changes, relieving developers of repetitive manual tasks.
Getting started with open mobile development on the Openmoko platformJean-Michel Bouffard
Tutorial presentation about embedded development on the Openmoko platform. Presented at the fosslc.org event "Free/Open Source Mobile Development: An Introduction" in Waterloo, Canada
This document provides an overview of microservices and tools for developing microservices architectures. It discusses some of the benefits of moving from monolithic architectures to microservices, including improved scalability, fault isolation, and independent deployability. It then introduces Docker and Docker Compose as useful tools for building and testing microservices. A demo is shown of using Dockerfile to build an image and Docker Compose to define and run multiple services locally. The document concludes by discussing challenges of microservices and the need for tools like Kubernetes to manage complexity at scale.
"I have a framework idea" - Repeat less, share more.Fabio Milano
macOS, tvOS, iOS, watchOS, Extensions. In such a dense ecosystem, creating a framework enables us to easily share code between components of our universal applications and with the open-source community.
In this talk, we will learn about processes and tools that help create, 'ship' and maintain a multi platform framework. Throughout all steps, we will see how to use CocoaPods and Carthage, integrate CI tools to keep our code robust, see best practices for authoring frameworks. We'll show how frameworks could change our way of designing an application infrastructure and how you can contribute to the open-source community by turning your idea into a framework.
Bartosz Tkaczewski - Przygód z Dockerem ciąg dalszy
http://www.tsh.io
Docker jest zauważalny już niemal wszędzie. Na prezentacji zobaczysz działające środowisko developerskie, poznasz kilka sztuczek, jak sobie z nim dobrze radzić i efektywnie pracować, zobaczysz też, jak szybko można prosty projekt wzbogacić o zaawansowane stacki aplikacji (na przykładzie ELK). Postaram się również opowiedzieć, jak można sobie z tym potworkiem poradzić na produkcji.
Prezentacja z Uszanowanka Programowanka #16 - http://www.meetup.com/Uszanowanko-Programowanko/events/234826115/
introduction-infra-as-a-code using terraformniyof97
This document provides a summary of the challenges faced when manually configuring and deploying infrastructure and applications without using infrastructure as code tools. It describes issues that arose when installing dependencies for a Ruby on Rails application locally and on Amazon EC2 instances. It then introduces infrastructure as code using Docker to containerize applications and define environments as code. Docker images for a Sinatra backend and Rails frontend are built and linked together using Docker Compose. The document advocates for using infrastructure as code tools like Docker and Terraform to avoid manual configuration issues and facilitate consistent deployments across environments.
Minimum Viable Docker: our journey towards orchestrationOutlyer
While Kubernetes and Mesos are all the rage, you don't necessarily need a complex orchestration layer to start using and benefiting from Docker. We will present how Babylon Health is running its dockerised AI microservices in production, pros and cons, and what we have in store for the future.
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...NETWAYS
Pedro shows a short overview on how they use puppet at Server Density to manage the entire infrastructure and code, content mostly taken from previous presentations.
The focus will be on how to reduce the 4-year-old code base while making more use of forge modules while migrating to Puppet Enterprise 3.
The document discusses adaptive images in responsive web design. It covers using the browser's user agent string and feature testing to determine screen resolution and bandwidth instead of browser sniffing. Methods presented include using viewport width with JavaScript, jQuery, and CSS media queries; checking screen resolution directly and considering retina displays; and avoiding bandwidth speed tests. Workarounds discussed are using background-size: 100% with images, SVG, and a "Clown Car" SVG technique loading different image files via CSS media queries.
The document discusses adaptive images in responsive web design. It covers techniques like using the browser width and screen resolution to determine the appropriate image size via JavaScript or media queries. It also discusses checking bandwidth and using techniques like picture, srcset, .htaccess rewriting, and single pixel GIFs to serve the right image. The document recommends using CSS media queries for design and covers workaround techniques like background-size, SVG, and font-based solutions.
The document discusses using Plack::App::Proxy middleware to create a proxy for the CPAN search site that adds syntax highlighting and formatting. It demonstrates how to set up the proxy with a simple PSGI application and modify the POD documentation and module source code views through content filtering. Known issues with the approach are listed, along with potential other uses of Plack proxies beyond modifying CPAN.
This document discusses various ways that geolocation capabilities in mobile apps can leak users' private location data if not implemented securely. It provides examples of common geolocation bugs like insecure network communication, insecure local storage of location data, location spoofing, over-collection of precise location coordinates, and user interface errors. The document also demonstrates how these bugs can be discovered through network sniffing, file monitoring, runtime manipulation of location data, and disassembly analysis of app code.
This document contains a collection of code snippets and questions related to Android development puzzles and concepts. It discusses topics like the Android application lifecycle when finishing an activity, how fragment and activity handle returning results from started activities, and default behavior of progress bars and Toasts. The snippets are accompanied by multiple choice questions testing understanding of how the code would execute or appear.
Cocoaheads Stockholm 2014-02: Writing your own jailbreak tweakJoachim Bengtsson
A basic introduction to what a jailbreak really *is*, and how to remix software by writing your own jailbreak tweaks. See http://overooped.com/post/75523688909/writing-your-own-jailbreak-tweak for presenter notes
How to use Fiware Lab Facilities in order to deploy an application. The presentation will lead us to deploy a full application taking advantage of Openstack Command Line Interfaces.
This document discusses techniques used for hunting and analyzing malware on Mac systems. It describes common commands used by attackers for reconnaissance, backdoor installation, persistence, cleanup, and lateral movement. Specific indicators are also provided, such as backdoor file names and IP addresses. Hunting involves understanding the process tree and difficulties in detection given legitimate system tools are also used by attackers.
Here are the slides from Chris Barker and Deepak Giridharagopal's PuppetConf 2016 presentation called Docker, Mesos, Kubernetes and...Puppet? Don't Panic!. Watch the videos at https://www.youtube.com/playlist?list=PLV86BgbREluVjwwt-9UL8u2Uy8xnzpIqa
Antons Kranga Building Agile InfrastructuresAntons Kranga
This document provides an overview of a presentation on building agile infrastructures. It introduces the presenter, Antons Kranga, and his background. It then outlines the goals of DevOps in bringing developers and operations teams together through practices like Agile and ITIL. The presentation will discuss strategies for adopting a DevOps model, including provisioning continuous integration, automating infrastructure testing, and provisioning QA and production environments using tools like Chef, Vagrant, Jenkins, Nexus, and Test Kitchen. It will also cover techniques for automating infrastructure like configuration management with Chef recipes and testing infrastructure with tools like Chaos Monkey.
How we integrate & deploy Mobile Apps with Travis CIMarcio Klepacz
Travis CI was selected as the solution to automate iOS app builds and testing at GetYourGuide. It allows configuring builds that are triggered on every code push, producing binaries that can be tested. The .travis.yml file was configured to use the iPhone SDK, differentiate builds by branch, and archive and distribute the builds. Scripts were added for importing certificates, building and testing the app, archiving it into an IPA, and uploading the IPA and release notes to HockeyApp. This allows automatically deploying different versions of the app to testers after code changes, relieving developers of repetitive manual tasks.
Getting started with open mobile development on the Openmoko platformJean-Michel Bouffard
Tutorial presentation about embedded development on the Openmoko platform. Presented at the fosslc.org event "Free/Open Source Mobile Development: An Introduction" in Waterloo, Canada
This document provides an overview of microservices and tools for developing microservices architectures. It discusses some of the benefits of moving from monolithic architectures to microservices, including improved scalability, fault isolation, and independent deployability. It then introduces Docker and Docker Compose as useful tools for building and testing microservices. A demo is shown of using Dockerfile to build an image and Docker Compose to define and run multiple services locally. The document concludes by discussing challenges of microservices and the need for tools like Kubernetes to manage complexity at scale.
"I have a framework idea" - Repeat less, share more.Fabio Milano
macOS, tvOS, iOS, watchOS, Extensions. In such a dense ecosystem, creating a framework enables us to easily share code between components of our universal applications and with the open-source community.
In this talk, we will learn about processes and tools that help create, 'ship' and maintain a multi platform framework. Throughout all steps, we will see how to use CocoaPods and Carthage, integrate CI tools to keep our code robust, see best practices for authoring frameworks. We'll show how frameworks could change our way of designing an application infrastructure and how you can contribute to the open-source community by turning your idea into a framework.
Bartosz Tkaczewski - Przygód z Dockerem ciąg dalszy
http://www.tsh.io
Docker jest zauważalny już niemal wszędzie. Na prezentacji zobaczysz działające środowisko developerskie, poznasz kilka sztuczek, jak sobie z nim dobrze radzić i efektywnie pracować, zobaczysz też, jak szybko można prosty projekt wzbogacić o zaawansowane stacki aplikacji (na przykładzie ELK). Postaram się również opowiedzieć, jak można sobie z tym potworkiem poradzić na produkcji.
Prezentacja z Uszanowanka Programowanka #16 - http://www.meetup.com/Uszanowanko-Programowanko/events/234826115/
introduction-infra-as-a-code using terraformniyof97
This document provides a summary of the challenges faced when manually configuring and deploying infrastructure and applications without using infrastructure as code tools. It describes issues that arose when installing dependencies for a Ruby on Rails application locally and on Amazon EC2 instances. It then introduces infrastructure as code using Docker to containerize applications and define environments as code. Docker images for a Sinatra backend and Rails frontend are built and linked together using Docker Compose. The document advocates for using infrastructure as code tools like Docker and Terraform to avoid manual configuration issues and facilitate consistent deployments across environments.
Minimum Viable Docker: our journey towards orchestrationOutlyer
While Kubernetes and Mesos are all the rage, you don't necessarily need a complex orchestration layer to start using and benefiting from Docker. We will present how Babylon Health is running its dockerised AI microservices in production, pros and cons, and what we have in store for the future.
This document describes the challenges of manually configuring and deploying infrastructure for Ruby on Rails and Sinatra applications. It introduces infrastructure as code using Docker and Terraform to define and deploy two microservices—a Sinatra backend and Rails frontend—to Amazon ECS. Docker is used to package each application into images to ensure consistency across environments. Terraform will configure and deploy the necessary AWS resources. Using these tools reduces manual effort and errors compared to traditional deployment methods.
This document describes the challenges of manually configuring and deploying infrastructure for Ruby on Rails and Sinatra applications. It introduces infrastructure as code using Docker and Terraform to define and deploy two microservices—a Sinatra backend and Rails frontend—to Amazon ECS. Docker is used to package each application into images to ensure consistency across environments. Terraform will configure and deploy the necessary AWS resources. Using these tools reduces manual effort and errors compared to traditional deployment methods.
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Yevgeniy Brikman
This is a talk about managing your software and infrastructure-as-code that walks through a real-world example of deploying microservices on AWS using Docker, Terraform, and ECS.
This document provides instructions for setting up a hack environment using Docker containers. It discusses pros and cons of different options like using a real server, cloud services, or virtual machines. Docker is recommended for its ease of use, templates, and ability to run on multiple platforms. Example Dockerfiles and Docker Compose files are provided to set up environments like IIS, Nginx, LEMP stacks, and vulnerable apps. Specific vulnerabilities like Heartbleed and DHClient RCE are demonstrated using Docker images. Finally, Docker images for security tools like Kali Linux and REMnux are mentioned.
Webinar: Building Embedded Applications from QtCreator with DockerBurkhard Stubert
This document discusses using Docker containers to build embedded apps from QtCreator more efficiently. It presents three solutions: 1) using virtual machines which is currently done but slow, 2) building apps in Docker containers on the local workstation which is faster, and 3) building apps in containers on remote workstations. The document then provides steps for setting up a development environment using Docker to build an app in QtCreator, including installing a Qt SDK in a container, configuring QtCreator, building the app using a Docker wrapper for CMake, and running the app on a Raspberry Pi device.
Build and run embedded apps faster from qt creator with dockerQt
This document discusses using Docker containers to build and run embedded Qt applications from QtCreator more efficiently. It proposes wrapping CMake calls in a Docker script to build apps in containers on the local workstation instead of virtual machines. The key steps are installing a Qt SDK in a container, configuring QtCreator kits to use the Docker wrapper script for builds, and setting up deployment to run the built apps on target devices via SSH. This allows reusing existing container builds on a powerful workstation for faster development compared to building each app version's SDK in a separate virtual machine.
Automatisation in development and testing - within budgetDavid Lukac
Working on client projects with very strict budget and resource restrictions, tight deadlines and pressure, many times does not allow for full blown Test Driven Development, Continuous Delivery and other software engineering goodness we would love to have. We will show you easily accessible and quickly implementable options, that allow you to automate your development and testing process, or at least the most painful parts, without blowing the budget. Finally you can relax during deployments of the code to production! :-)
This document provides an overview of OpenStack Murano, an application catalog service for OpenStack. It discusses why Murano is used, what Murano is, the Murano architecture including key components, how to use Murano through different personas like end users and application providers, and how to install, configure, design application catalogs, and troubleshoot Murano. The document aims to explain all aspects of working with the Murano application catalog service on OpenStack.
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Fabrice Bernhard
This is the presentation given at the Symfony Live 2011 conference. It is an introduction to the new agile movement spreading in the technical operations community called DevOps and how to adopt it on web development projects, in particular Symfony projects.
Plan of the slides :
- Configuration Management
- Development VM
- Scripted deployment
- Continuous deployment
Tools presented in the slides:
- Puppet
- Vagrant
- Fabric
- Jenkins / Hudson
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클Oracle Korea
클라우드 시대의 개발자 네트워킹의 장, Oracle Developer Meetup 그 네번째 모임의 핸즈온 실습을 위한 필수 준비 사항 슬라이드입니다.
: Polyglot 환경의 Microservice로 구성된 쇼핑몰 예제를 이용하여, Microservice의 개발과 운영에 대해 직접 체험할 수 있는 세션입니다. 서비스 개선 요구사항에 맞춰 서비스를 개발/변경해 보고, Kubernetes + istio 환경에 배포하는 실습을 진행합니다.
* 본 세션은 ‘입문자/초급자' 에게 적합한 세션입니다.
This document discusses how Docker can be used to improve the Java development environment. It outlines problems with traditional development environments like long setup times and differences between local and production environments. Docker Toolbox allows running Docker on Windows and Macs. Examples show setting up multiple apps with different stacks using Docker Compose. Use cases demonstrated include debugging, continuous deployment from IDEs, integration testing, and reproducing production issues. Best practices recommend using Docker Machine and volumes. The overall message is that Docker can make the development environment more consistent with production.
Similar to Advanced Mac Software Deployment and Configuration: Just Make It Work! (20)
Tools and Process for Streamlining Mac DeploymentTimothy Sutton
This presentation was given at the MacSysAdmin 2016 conference in Gotebörg, Sweden. Session description follows:
Apple’s popularity and their approach to selling hardware is revolutionizing how IT gets that hardware into the hands of its users. Every year’s new Macs and OS X bring new changes, which doesn’t leave much time for the repetitive setup tasks that are involved in getting machines ready for users (or our testing!). It’s easy to fall behind on OS support, but we have no choice but to support the latest.
The Mac sysadmin community is blessed with so many great open-source tools at its disposal for deploying and managing Macs. We'll look at approaches and tools for automating these to bring speed, consistency and sanity to our deployment processes. By being more systematic, we can be more agile, and reclaim time to work on more important problems.
This session will focus on OS X hardware and tools, but the approaches discussed apply equally to iOS devices.
This document discusses various techniques for managing user experience and preferences on macOS, including:
- Using the defaults command to modify system and application preferences through NSUserDefaults and CFPreferences.
- Managing proprietary application preferences which may store settings in custom locations rather than the system preferences. This requires examining application documentation and potentially using scripts.
- Configuration profiles, which define settings that can be installed via MDM or by double-clicking a profile file. Profiles set preferences that cannot easily be changed by users.
- Considering whether defaults, scripts, or profiles are best suited based on the environment, applications, and specific settings being managed.
These slides accompanied a talk that was given at the MacDevOps YVR 2015 conference in Vancouver and the MacDeployment 2015 workshop at the University of Calgary.
These slides are brief, as the talk was mostly live demonstration. A video recording of the MacDevOps YVR presentation is available here:
http://macdevops.ca/MDO2015/tim/Default.html
This session was presented at MacTech 2014 in Los Angeles, California. Session description follows:
Git and GitHub have changed the way we can collaborate with others on code-based projects, but it can be intimidating at first. How does this all work? We will cover the basics of Git and how to escape some of its pitfalls, and we will review some of the tools and processes available to those wanting to start or contribute to an open-source project, which isn't Git-specific. Writing code is only part of it!
This is from a 5-minute lightning talk that was presented at the Montreal-Python group:
http://montrealpython.org/en/2015/03/mp52
Video recording on YouTube here: https://www.youtube.com/watch?v=G2kSD3MU5uM
Session description:
Yes, we exist. And Python powers a lot of the popular open-source tools we use to manage Mac clients at a large scale. We'll tour a few of these FOSS projects and take a quick look at how the Python Objective-C bridge can be used to access OS X system APIs.
AutoPkg: Crowd-sourcing Mac packaging and deploymentTimothy Sutton
This session was presented at MacSysAdmin 2014 in Göteborg, Sweden, jointly presented by myself and Greg Neagle. Video recordings from this presentation and others can be found here: http://docs.macsysadmin.se/2014/2014doc.html
Session description follows:
Deploying software and updates is a mundane, daily routine for many Mac admins. We want to get our users the software they need, but software vendors don't make this easy for administrators. Instead, we maintain manual packaging notes and spend time wading through mailing list threads offering advice on deploying many commonly-used applications.
AutoPkg was built to solve this problem. We can put an application's updates, preparation and deployment steps together like building blocks, and best of all, we can share this recipe with others so we can all benefit from our work. We can stop making busywork for ourselves and concentrate on more interesting problems!
In this session we'll explore the ins and outs of using AutoPkg, as well as the project's genesis and how its community and usage has grown in the past year.
This session was presented at MacSysAdmin 2015 in Göteborg, Sweden. Video recordings can be found at: http://docs.macsysadmin.se/2015/2015doc.html
Session description follows:
As a Mac sysadmin, I've found some tasks I knew I was going to need to automate with scripts or die of boredom. And sometimes, what begins as a curious "Wouldn't it be cool if.." coding experiment evolves into something that solves a real problem.
Over time, I've built up a small collection of tools related to OS X deployment and automation that I've released on GitHub in the hopes that others might also find them useful. In this session I'll tour some of these utilities, explain how they came to be and demonstrate their use.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
20. Skype for Business
#!/bin/sh
# postinstall from https://go.microsoft.com/fwlink/?linkid=831677
parent_dir=`/usr/bin/dirname "$0"`
/bin/cp -R MeetingJoinPlugin.plugin /Library/Internet Plug-Ins/
/usr/bin/osascript -e 'tell application "System Events" to make login item at end with properties {path:"/Applications/Skype for Business.app", hidden:false}'
/usr/bin/osascript -e 'tell application "Dock" to quit' -e 'delay 0.25'
/usr/bin/sudo -u $USER "$parent_dir/register_default_app"
/usr/bin/sudo -u $USER "$parent_dir/set_dock_tiles" add "/Applications/Skype for Business.app"
/usr/bin/killall -HUP Dock &> /dev/null
/usr/bin/osascript -e 'delay 1.0' -e 'tell application "Dock" to activate'
exit 0
# /var/log/install.log (no user logged in)
PackageKit: Executing script "./postinstall" in /private/tmp/PKInstallSandbox.ChKgiE/Scripts/com.microsoft.SkypeForBusiness.duPdd2
./postinstall: 36:134: execution error: An error of type -10810 has occurred. (-10810)
./postinstall: 2017-01-26 15:34:20.513 osascript[5942:203610] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
./postinstall: 2017-01-26 15:34:20.515 osascript[5942:203610] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
./postinstall: 2017-01-26 15:34:20.516 osascript[5942:203610] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
./postinstall: 2017-01-26 15:34:20.526 osascript[5942:203610] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
./postinstall: 2017-01-26 15:34:20.952 set_dock_tiles[5947:203716] Adding Dock item (/Applications/Skype for Business.app)
./postinstall: 2017-01-26 15:34:22.103 osascript[5949:203741] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
./postinstall: 2017-01-26 15:34:22.372 osascript[5949:203741] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
./postinstall: 2017-01-26 15:34:22.384 osascript[5949:203741] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
./postinstall: 2017-01-26 15:34:22.388 osascript[5949:203741] CFPasteboardRef CFPasteboardCreate(CFAllocatorRef, CFStringRef) : failed to create global data
21. if ! [[ $COMMAND_LINE_INSTALL && $COMMAND_LINE_INSTALL != 0 ]]
then
domain="com.microsoft.autoupdate2"
defaults_cmd="/usr/bin/sudo -u $USER /usr/bin/defaults"
application="/Applications/Microsoft Outlook.app"
application_info_plist="$application/Contents/Info.plist"
lcid="1033"
if /bin/test -f "$application_info_plist"
then
application_bundle_signature=`$defaults_cmd read "$application_info_plist" CFBundleSignature`
application_bundle_version=`$defaults_cmd read "$application_info_plist" CFBundleVersion`
application_id=`printf "%s%02s" $application_bundle_signature ${application_bundle_version%%.*}`
$defaults_cmd write $domain Applications -dict-add "$application" "{ 'Application ID' = $application_id; LCID = $lcid ; }"
fi
<snip>
Outlook 2016
22. MOTU Pro Audio
#! /bin/sh
# postinstall
KEXT="MOTUProAudio.kext"
# 10.9+ install kext in /Library/Extensions
cd /Library/Extensions
chown -R root:wheel $KEXT
chmod -R u=rw,go=r,+X $KEXT
touch .
# if we're in 10.8, move the kext to /System
OSVER=`sw_vers | grep 'ProductVersion:' | grep -o '[0-9]*.[0-9]*.[0-9]*'`
if [[ $OSVER =~ ^10.8. ]]
then
mv /Library/Extensions/$KEXT /System/Library/Extensions/$KEXT
touch /System/Library/Extensions/
fi
# load our http server daemon
/bin/launchctl load /Library/LaunchDaemons/com.motu.proaudio.HTTPServer.launchd
# restart coreaudiod
/bin/launchctl unload /System/Library/LaunchDaemons/com.apple.audio.coreaudiod.
/bin/launchctl load /System/Library/LaunchDaemons/com.apple.audio.coreaudiod.pl
# open the discovery app
open "/Applications/MOTU Discovery.app"
23. MOTU Pro Audio
installd[338]: PackageKit: Executing script "./postinstall" in /tmp/PKInstallSandbox.Zxqser/Scripts/com.motu.pkg.proaudio.lq3hf9
installd[338]: ./postinstall: LSOpenURLsWithRole() failed with error -10810 for the file /Applications/MOTU Discovery.app.
installd[338]: PackageKit: Install Failed: Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from
the package “MOTU Pro Audio Installer 2.0 (71418).pkg”.”
Terminal/SSH:
sudo installer -pkg
<pkg> -tgt /
Munki
User logged in Successful Unsuccessful
At loginwindow Unsuccessful Unsuccessful
Install method
Context
24. #!/usr/bin/perl
# Avid AIR Music Instruments for Pro Tools
sub get_user_id
{
my $homedir = $ENV{'HOME'};
my $userid = basename($homedir);
return $userid;
}
my $pluginPlist = "/Users/$userid/Library/Preferences/com.airmusictech.Structure";
if ((-e "$structurePlugIn") && $pluginBundleName eq "Structure Free") {
# No plist file. Install the content to the default location.
logIt("Clean install. Installing to $installDestination");
create_dir($installDestination, "777", "$userid:admin");
copy_dir($installerPatches, $installDestination, "777", "$userid:admin");
copy_dir($installerQuickStart, $installDestination, "777", "$userid:admin");
execute_command("mv "$installDestination$plugInPatchesWin" "$installDestination$plugInPatches"");
execute_command("mv "$installDestination$plugInQuickStartWin" "$installDestination$plugInQuickStart"");
execute_command("defaults write "$pluginPlist" "content" "$installDestination$plugInPatches/"");
execute_command("defaults write "$pluginPlist" "common content" "/Applications/AIR Music Technology/Common
execute_command("defaults write "$pluginPlist" "common binary" "/Applications/AIR Music Technology/Common/
execute_command("defaults write "$pluginPlist" "effects" "/Applications/AIR Music Technology/Structure/Set
execute_command("defaults write "$pluginPlist" "favorites" "/Applications/AIR Music Technology/Structure/F
execute_command("sudo chmod 755 "$pluginPlist.plist"");
execute_command("sudo chown $userid:staff "$pluginPlist.plist"");
25.
26. #!/bin/sh
# Munki postinstall_script
defaults write /Library/Preferences/com.airmusictech.Boom "Content" "/Applications/AIR Music Technology/Boom"
defaults write /Library/Preferences/com.airmusictech.Mini Grand "Content" "/Applications/AIR Music Technology/Mini Grand"
defaults write /Library/Preferences/com.airmusictech.Structure "common binary" "/Applications/AIR Music Technology/Common/AIR/bin/"
defaults write /Library/Preferences/com.airmusictech.Structure "common content" "/Applications/AIR Music Technology/Common/AIR/Content/"
defaults write /Library/Preferences/com.airmusictech.Structure "content" "/Applications/AIR Music Technology/Structure/Content/Patch
defaults write /Library/Preferences/com.airmusictech.Structure "effects" "/Applications/AIR Music Technology/Structure/Settings/"
defaults write /Library/Preferences/com.airmusictech.Structure "favorites" "/Applications/AIR Music Technology/Structure/Favorites/"
49. #!/usr/bin/python
from __future__ import print_function
import os
import re
import sys
from glob import glob
from xml.etree import ElementTree
def main():
pcf_root = '/Library/Application Support/Adobe/PCF'
if sys.platform == 'win32':
pcf_root = 'C:Program Files (x86)Common FilesAdobePCF'
xmls = glob(os.path.join(pcf_root, '*.xml'))
for xml_file in xmls:
# Sanity-check the filename and basic XML structure
# (ADBE.. string is only present for HyperDrive-installed products)
match = re.match(r'^({.*?ADBE.*?}).*$', os.path.basename(xml_file))
if not match:
sys.stderr.write("Skipping file '%s', does not match a PCF file patternn" % xml_file)
continue
adbe_code = match.groups()[0]
root = ElementTree.parse(xml_file)
payload = root.find("./Payload[@adobeCode='%s']" % adbe_code)
if payload is None:
sys.stderr.write("Didn't find expected Adobe code %s in any 'Payload' element"
" in file %sn" % (adbe_code, xml_file))
continue
# Check and skip if the serial override key already exists
if payload.find("Data[@key='REG_SERIAL_OVERRIDE']") is not None:
continue
# Finally, make a new element and append it to the Payload element
new_element = ElementTree.Element('Data', attrib={'key': 'REG_SERIAL_OVERRIDE'})
new_element.text = 'Suppress'
payload.append(new_element)
try:
root.write(xml_file, encoding='utf-8', xml_declaration=True)
print("Wrote modified PCF XML file: '%s'" % xml_file)
except IOError:
sys.stderr.write("ERROR: Can't write to file '%s'. Make sure you have "
"sufficient privileges to write to this location. "
% xml_file)
50. root = ElementTree.parse(xml_file)
payload = root.find("./Payload[@adobeCode='%s']" % adbe_code)
if payload is None:
sys.stderr.write("Didn't find expected Adobe code %s in any 'Payload' element"
" in file %sn" % (adbe_code, xml_file))
continue
# Check and skip if the serial override key already exists
if payload.find("Data[@key='REG_SERIAL_OVERRIDE']") is not None:
continue
# Finally, make a new element and append it to the Payload element
new_element = ElementTree.Element('Data', attrib={'key': 'REG_SERIAL_OVERRIDE'})
new_element.text = 'Suppress'
payload.append(new_element)
try:
root.write(xml_file, encoding='utf-8', xml_declaration=True)
print("Wrote modified PCF XML file: '%s'" % xml_file)
except IOError:
sys.stderr.write("ERROR: Can't write to file '%s'. Make sure you have "
"sufficient privileges to write to this location. "
% xml_file)
57. Managing “non-native” preferences
• Depends on the application, sometimes there are options supported
for mass deployment:
• e.g. /Library/Application Support/Macromedia/mms.cfg
• For everything else, run scripts at login time to create or modify user
preferences:
• github.com/chilcote/outset (Joseph Chilcote)
• github.com/MagerValp/LoginScriptPlugin (Per Olofsson)