The document discusses techniques for better object initialization and nullability checking in Objective-C, as related to creating a class for brewing beer components. It introduces the NS_DESIGNATED_INITIALIZER, NS_UNAVAILABLE, and nullability annotations like nonnull. It shows how to formalize initialization, prevent invalid initialization, and catch null values through compile-time checking. Audited regions with NS_ASSUME_NONNULL_BEGIN/END are presented as a cleaner way to specify nullability expectations for a class.
Sails.js is a realtime MVC framework for Node.js that is inspired by some of the best ideas behind Ruby on Rails and realtime frameworks like Meteor.js.
In this presentation I'll overview getting started with Sails.js, its architecture and features, as well as some advice on place to look at when you are getting started.
Learn a brand new way to think about web application development with Node.js!
Node version 0.8 includes significant performance improvements and changes to core APIs. It provides up to 10% faster execution speed and up to 4x faster file I/O due to changes in the V8 engine and underlying system calls. Many core Node modules like http, net, and child_processes see major API changes and added functionality. New features like domains and clusters are introduced to make asynchronous code and load distribution across cores easier.
Supercharging reflective libraries with InvokeDynamicIan Robertson
This document discusses using invokeDynamic to generate bytecode at runtime in order to bypass access restrictions when using reflection. It describes how invokeDynamic works, including how bootstrap methods are used to create method handles which are then wrapped in call sites. Examples are provided of bootstrap methods for accessing fields and calling methods via reflection while avoiding the performance penalties of traditional reflection. Overall, invokeDynamic allows generating bytecode that performs equivalently to handwritten code.
This document discusses node.js and its use of server-side JavaScript. It begins by explaining that node.js uses an event-driven, non-blocking I/O model to handle multiple connections simultaneously in a single-threaded process. It then covers some of the motivations for this approach, including how it helps address latency issues and improves performance compared to traditional blocking I/O. The document also provides some history around node.js and its use of the CommonJS module system.
Firefox OS learnings & visions, WebAPIs - budapest.mobileRobert Nyman
This document summarizes the Firefox OS platform and its APIs. It discusses how Firefox OS uses HTML5, CSS and JavaScript to build apps, and describes various Web APIs for features like notifications, vibration, screen orientation, battery status and more. It also covers app packaging and security levels, and looks at future APIs for areas like NFC, WebRTC and others. Instructions are provided for getting started with Firefox OS development using tools like the simulator and inspector.
This document provides an introduction to Ember.js and discusses some of its core concepts and patterns. It explains that Ember uses an observer pattern where objects called observables maintain lists of dependent observer objects that are notified of state changes. It also discusses how Ember implements an asynchronous run loop and single source of truth model layer for data binding and decoupling different parts of the application.
Node.js is an exciting new platform developed by Ryan Dahl that allows JavaScript developers to create extremely high performance servers by leveraging Google's V8 JavaScript engine and asynchronous I/O. It uses a non-blocking I/O model that makes it lightweight and efficient, as well as features like CommonJS modules and the npm package manager. The document provides examples of building simple HTTP servers and modules in Node.js to demonstrate its capabilities.
Sails.js is a realtime MVC framework for Node.js that is inspired by some of the best ideas behind Ruby on Rails and realtime frameworks like Meteor.js.
In this presentation I'll overview getting started with Sails.js, its architecture and features, as well as some advice on place to look at when you are getting started.
Learn a brand new way to think about web application development with Node.js!
Node version 0.8 includes significant performance improvements and changes to core APIs. It provides up to 10% faster execution speed and up to 4x faster file I/O due to changes in the V8 engine and underlying system calls. Many core Node modules like http, net, and child_processes see major API changes and added functionality. New features like domains and clusters are introduced to make asynchronous code and load distribution across cores easier.
Supercharging reflective libraries with InvokeDynamicIan Robertson
This document discusses using invokeDynamic to generate bytecode at runtime in order to bypass access restrictions when using reflection. It describes how invokeDynamic works, including how bootstrap methods are used to create method handles which are then wrapped in call sites. Examples are provided of bootstrap methods for accessing fields and calling methods via reflection while avoiding the performance penalties of traditional reflection. Overall, invokeDynamic allows generating bytecode that performs equivalently to handwritten code.
This document discusses node.js and its use of server-side JavaScript. It begins by explaining that node.js uses an event-driven, non-blocking I/O model to handle multiple connections simultaneously in a single-threaded process. It then covers some of the motivations for this approach, including how it helps address latency issues and improves performance compared to traditional blocking I/O. The document also provides some history around node.js and its use of the CommonJS module system.
Firefox OS learnings & visions, WebAPIs - budapest.mobileRobert Nyman
This document summarizes the Firefox OS platform and its APIs. It discusses how Firefox OS uses HTML5, CSS and JavaScript to build apps, and describes various Web APIs for features like notifications, vibration, screen orientation, battery status and more. It also covers app packaging and security levels, and looks at future APIs for areas like NFC, WebRTC and others. Instructions are provided for getting started with Firefox OS development using tools like the simulator and inspector.
This document provides an introduction to Ember.js and discusses some of its core concepts and patterns. It explains that Ember uses an observer pattern where objects called observables maintain lists of dependent observer objects that are notified of state changes. It also discusses how Ember implements an asynchronous run loop and single source of truth model layer for data binding and decoupling different parts of the application.
Node.js is an exciting new platform developed by Ryan Dahl that allows JavaScript developers to create extremely high performance servers by leveraging Google's V8 JavaScript engine and asynchronous I/O. It uses a non-blocking I/O model that makes it lightweight and efficient, as well as features like CommonJS modules and the npm package manager. The document provides examples of building simple HTTP servers and modules in Node.js to demonstrate its capabilities.
The document provides an overview of Node.js and why it is useful for building scalable network programs. It discusses how Node.js uses asynchronous and non-blocking I/O to handle thousands of concurrent connections using a single thread. This allows Node.js applications to scale horizontally by adding more machines. It also covers how the asynchronous programming model requires a different "mind shift" compared to traditional synchronous approaches.
This document introduces Rubish, a quixotic shell built on Ruby that aims to close the gap between scripts and shells. Rubish makes shells object-oriented and extensible via namespaces and local extensions. It allows Ruby code to be used for shell tasks like commands, pipes, IO redirection, and more. Rubish also supports features like concurrency via background jobs, exception handling, and structured contexts that encapsulate IO and bindings. The goal of Rubish is to make shells more powerful, extensible and Ruby-like while avoiding the complexity of traditional Unix tools.
Practical JavaScript Programming - Session 7/8Wilson Su
JavaScript is one of the most popular skills in today’s job market. It allows you to create both client- and server-side applications quickly and easily. Having a solid understanding of this powerful and versatile language is essential to anyone who uses it.
“Practical JavaScript Programming” does not only focus on best practices, but also introduces the fundamental concepts. This course will take you from JavaScript basics to advanced. You’ll learn about topics like Data Types, Functions, Events, AJAX and more.
This document provides a history of Node.js, beginning in 1987 and continuing through 2009 when Node.js was created. It discusses key events like the creation of JavaScript in 1995 and AJAX in 2005 that led to Node.js being developed. The document also covers Node.js fundamentals like its single-threaded event loop architecture, modules, require(), and streams.
This document summarizes how to use JRuby to develop enterprise web applications with Struts. It shows how to create a JRubyRequestController that uses a Ruby script to process Struts actions. The controller initializes a ScriptingContainer to run the Ruby script. It maps Struts requests and responses to method calls on a Ruby object defined in the script. This allows integrating Ruby code into the Struts request processing pipeline.
The following illustrates some of the common security challanges Node.js developers are up against. The presentation covers various types of JavaScript-related hacks and NoSQL injection hacking via Express and MongoDB.
Node.js is an asynchronous event-driven JavaScript runtime built on Chrome's V8 JavaScript engine. It allows JavaScript code to be run on the server. The document provides an introduction to Node.js, examples of how to write server code in JavaScript and use modules with npm, and popular apps and frameworks built with Node.js like Express. It also summarizes the current status and versioning of Node.js.
This document discusses using Node.js on the Windows Azure platform. It provides an overview of Node.js and how it can be used with various Azure services like Web Apps, Cloud Services, HDInsight and Storage. It also includes code examples of interacting with Azure table storage, blob storage, queues and the service bus from Node.js applications. Additionally, it mentions how existing Azure services already use Node.js and how Node.js scripts can be used in Azure Mobile Services.
The document discusses thread safety in JRuby on Rails applications. It explains that prior to Rails 2.2, each JRuby instance had its own database connection, but newer versions use connection pooling so multiple threads can share database connections through a single JRuby instance. It also covers using ActiveRecord connection pooling and JNDI lookup to configure database connections in a thread-safe way when using JRuby on Rails.
Practical JavaScript Programming - Session 8/8Wilson Su
This document discusses various development tools for JavaScript programming, including Node.js, TypeScript, Babel, linters, task runners, module bundlers, and testing tools. It provides descriptions and examples of using Node.js, Yarn, TypeScript, Babel, ESLint, TSLint, Grunt, Gulp, Webpack, Chrome DevTools, Jasmine, Mocha, Chai, Karma, Selenium, Protractor, PhantomJS, and CasperJS. The document aims to help programmers select and use the appropriate tools at different stages of development.
- JavaScript has come a long way from its early days of form validation and image rollovers in 1995 to modern innovations like ES2015, Promises, async/await, and Web Assembly.
- Today, JavaScript features like classes, arrow functions, and template strings in ES2015 are widely adopted, and new standards like Promises, generators, and async programming have revolutionized asynchronous JavaScript.
- Emerging web platform technologies like Web Components, Service Workers, and CSS Paint enable new kinds of custom elements, offline/progressive web apps, and painting APIs, while proposals like decorators, value types, and module loading continue pushing the language forward.
This document provides an overview of how to write Node.js modules. It discusses writing modules in JavaScript and C/C++, loading modules, publishing modules to the NPM registry, and some advanced topics like handling arguments and creating classes. The key points covered are:
- Modules can be written in JavaScript or C/C++ and exported via module.exports.
- Modules are loaded using require() and can be either core or third-party modules.
- Publishing a module to NPM involves initializing a package, uploading the files to the registry, and adding a main entry point.
- Advanced topics include getting arguments in C/C++ modules, understanding JavaScript types, and creating classes with
Testing your javascript code with jasmineRubyc Slides
This document discusses using Jasmine to test JavaScript code. It describes Jasmine as a behavior driven development framework for JavaScript testing. It then provides instructions on installing Jasmine, creating spec files to contain test cases, and including source code files. The document uses an example of testing a master-slave checkbox relationship to demonstrate how to set up tests, DOM elements, and code the tests against the actual code implementation.
The document discusses the future of server-side JavaScript. It covers various Node.js frameworks and libraries that support both synchronous and asynchronous programming styles. CommonJS aims to provide interoperability across platforms by implementing synchronous proposals using fibers. Examples demonstrate how CommonJS allows for synchronous-like code while maintaining asynchronous behavior under the hood. Benchmarks show it has comparable performance to Node.js. The author advocates for toolkits over frameworks and continuing development of common standards and packages.
The document describes an assignment to create a function that dynamically generates HTML strings based on book data. It provides an example book list data structure and asks to create a function to loop through the data and output HTML markup for each book object, generating the page content dynamically rather than as static HTML.
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015Jeongkyu Shin
This document discusses various Python and web development topics. It covers Python programming best practices and libraries like asyncio and NumPy. It also discusses front-end frameworks like Polymer and Electron. Additional sections provide overviews of containerization with Docker, message queues like ZeroMQ, log aggregation with Logstash, and cloud hosting options.
Puppet Module Reusability - What I Learned from Shipping to the ForgePuppet
A simple search for "puppet-apache" on GitHub returns 70 separate repositories. An awful lot of people are busy reinventing the same configuration wheel. Configuration management tools promise write once, run anywhere code; but writing code that can be used by anyone looks like a lot of work. This presentation aims to show anyone familiar with Puppet how to write reusable modules and importantly how to make them compatible with already shared modules released on the Forge or elsewhere. We'll look at when and why testing a declarative language is actually useful, examples of good and bad modules and how to re-factor puppet code for re-usability. We'll also talk about potential improvements to Puppet that would make reuse easier.
Gareth Rushgrove
Technical Architect, Government Digital Service
Gareth Rushgrove is now a technical architect at the Government Digital Service, part of the UK Government. He is mainly interested in configuration management, infrastructure and platform as a service, deployment and monitoring tooling and the whole devops community. He thinks when used well together these allow you to move really fast, even in tightly controlled environments like Government. When not working, Gareth can be found blogging over on morethanseven.net or uploading code to GitHub. He also curates the Devops Weekly newsletter and occasionally organises community events.
Cerealize is a drop-in replacement for ActiveRecord's serialize method that allows for faster serialization of data to formats like Marshal and JSON. It automatically detects the best encoding format to use and can be configured to use a specific format like YAML, Marshal, or future support for JSON. The gem provides a simple way to improve performance over YAML and can be easily added to any ActiveRecord application.
Workshop JavaScript Testing. Frameworks. Client vs Server Testing. Jasmine. Chai. Nock. Sinon. Spec Runners: Karma. TDD. Code coverage. Building a testable JS app.
Presentado por ing: Raúl Delgado y Mario García
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
The document provides an overview of Node.js and why it is useful for building scalable network programs. It discusses how Node.js uses asynchronous and non-blocking I/O to handle thousands of concurrent connections using a single thread. This allows Node.js applications to scale horizontally by adding more machines. It also covers how the asynchronous programming model requires a different "mind shift" compared to traditional synchronous approaches.
This document introduces Rubish, a quixotic shell built on Ruby that aims to close the gap between scripts and shells. Rubish makes shells object-oriented and extensible via namespaces and local extensions. It allows Ruby code to be used for shell tasks like commands, pipes, IO redirection, and more. Rubish also supports features like concurrency via background jobs, exception handling, and structured contexts that encapsulate IO and bindings. The goal of Rubish is to make shells more powerful, extensible and Ruby-like while avoiding the complexity of traditional Unix tools.
Practical JavaScript Programming - Session 7/8Wilson Su
JavaScript is one of the most popular skills in today’s job market. It allows you to create both client- and server-side applications quickly and easily. Having a solid understanding of this powerful and versatile language is essential to anyone who uses it.
“Practical JavaScript Programming” does not only focus on best practices, but also introduces the fundamental concepts. This course will take you from JavaScript basics to advanced. You’ll learn about topics like Data Types, Functions, Events, AJAX and more.
This document provides a history of Node.js, beginning in 1987 and continuing through 2009 when Node.js was created. It discusses key events like the creation of JavaScript in 1995 and AJAX in 2005 that led to Node.js being developed. The document also covers Node.js fundamentals like its single-threaded event loop architecture, modules, require(), and streams.
This document summarizes how to use JRuby to develop enterprise web applications with Struts. It shows how to create a JRubyRequestController that uses a Ruby script to process Struts actions. The controller initializes a ScriptingContainer to run the Ruby script. It maps Struts requests and responses to method calls on a Ruby object defined in the script. This allows integrating Ruby code into the Struts request processing pipeline.
The following illustrates some of the common security challanges Node.js developers are up against. The presentation covers various types of JavaScript-related hacks and NoSQL injection hacking via Express and MongoDB.
Node.js is an asynchronous event-driven JavaScript runtime built on Chrome's V8 JavaScript engine. It allows JavaScript code to be run on the server. The document provides an introduction to Node.js, examples of how to write server code in JavaScript and use modules with npm, and popular apps and frameworks built with Node.js like Express. It also summarizes the current status and versioning of Node.js.
This document discusses using Node.js on the Windows Azure platform. It provides an overview of Node.js and how it can be used with various Azure services like Web Apps, Cloud Services, HDInsight and Storage. It also includes code examples of interacting with Azure table storage, blob storage, queues and the service bus from Node.js applications. Additionally, it mentions how existing Azure services already use Node.js and how Node.js scripts can be used in Azure Mobile Services.
The document discusses thread safety in JRuby on Rails applications. It explains that prior to Rails 2.2, each JRuby instance had its own database connection, but newer versions use connection pooling so multiple threads can share database connections through a single JRuby instance. It also covers using ActiveRecord connection pooling and JNDI lookup to configure database connections in a thread-safe way when using JRuby on Rails.
Practical JavaScript Programming - Session 8/8Wilson Su
This document discusses various development tools for JavaScript programming, including Node.js, TypeScript, Babel, linters, task runners, module bundlers, and testing tools. It provides descriptions and examples of using Node.js, Yarn, TypeScript, Babel, ESLint, TSLint, Grunt, Gulp, Webpack, Chrome DevTools, Jasmine, Mocha, Chai, Karma, Selenium, Protractor, PhantomJS, and CasperJS. The document aims to help programmers select and use the appropriate tools at different stages of development.
- JavaScript has come a long way from its early days of form validation and image rollovers in 1995 to modern innovations like ES2015, Promises, async/await, and Web Assembly.
- Today, JavaScript features like classes, arrow functions, and template strings in ES2015 are widely adopted, and new standards like Promises, generators, and async programming have revolutionized asynchronous JavaScript.
- Emerging web platform technologies like Web Components, Service Workers, and CSS Paint enable new kinds of custom elements, offline/progressive web apps, and painting APIs, while proposals like decorators, value types, and module loading continue pushing the language forward.
This document provides an overview of how to write Node.js modules. It discusses writing modules in JavaScript and C/C++, loading modules, publishing modules to the NPM registry, and some advanced topics like handling arguments and creating classes. The key points covered are:
- Modules can be written in JavaScript or C/C++ and exported via module.exports.
- Modules are loaded using require() and can be either core or third-party modules.
- Publishing a module to NPM involves initializing a package, uploading the files to the registry, and adding a main entry point.
- Advanced topics include getting arguments in C/C++ modules, understanding JavaScript types, and creating classes with
Testing your javascript code with jasmineRubyc Slides
This document discusses using Jasmine to test JavaScript code. It describes Jasmine as a behavior driven development framework for JavaScript testing. It then provides instructions on installing Jasmine, creating spec files to contain test cases, and including source code files. The document uses an example of testing a master-slave checkbox relationship to demonstrate how to set up tests, DOM elements, and code the tests against the actual code implementation.
The document discusses the future of server-side JavaScript. It covers various Node.js frameworks and libraries that support both synchronous and asynchronous programming styles. CommonJS aims to provide interoperability across platforms by implementing synchronous proposals using fibers. Examples demonstrate how CommonJS allows for synchronous-like code while maintaining asynchronous behavior under the hood. Benchmarks show it has comparable performance to Node.js. The author advocates for toolkits over frameworks and continuing development of common standards and packages.
The document describes an assignment to create a function that dynamically generates HTML strings based on book data. It provides an example book list data structure and asks to create a function to loop through the data and output HTML markup for each book object, generating the page content dynamically rather than as static HTML.
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015Jeongkyu Shin
This document discusses various Python and web development topics. It covers Python programming best practices and libraries like asyncio and NumPy. It also discusses front-end frameworks like Polymer and Electron. Additional sections provide overviews of containerization with Docker, message queues like ZeroMQ, log aggregation with Logstash, and cloud hosting options.
Puppet Module Reusability - What I Learned from Shipping to the ForgePuppet
A simple search for "puppet-apache" on GitHub returns 70 separate repositories. An awful lot of people are busy reinventing the same configuration wheel. Configuration management tools promise write once, run anywhere code; but writing code that can be used by anyone looks like a lot of work. This presentation aims to show anyone familiar with Puppet how to write reusable modules and importantly how to make them compatible with already shared modules released on the Forge or elsewhere. We'll look at when and why testing a declarative language is actually useful, examples of good and bad modules and how to re-factor puppet code for re-usability. We'll also talk about potential improvements to Puppet that would make reuse easier.
Gareth Rushgrove
Technical Architect, Government Digital Service
Gareth Rushgrove is now a technical architect at the Government Digital Service, part of the UK Government. He is mainly interested in configuration management, infrastructure and platform as a service, deployment and monitoring tooling and the whole devops community. He thinks when used well together these allow you to move really fast, even in tightly controlled environments like Government. When not working, Gareth can be found blogging over on morethanseven.net or uploading code to GitHub. He also curates the Devops Weekly newsletter and occasionally organises community events.
Cerealize is a drop-in replacement for ActiveRecord's serialize method that allows for faster serialization of data to formats like Marshal and JSON. It automatically detects the best encoding format to use and can be configured to use a specific format like YAML, Marshal, or future support for JSON. The gem provides a simple way to improve performance over YAML and can be easily added to any ActiveRecord application.
Workshop JavaScript Testing. Frameworks. Client vs Server Testing. Jasmine. Chai. Nock. Sinon. Spec Runners: Karma. TDD. Code coverage. Building a testable JS app.
Presentado por ing: Raúl Delgado y Mario García
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Transforming Product Development using OnePlan To Boost Efficiency and Innova...OnePlan Solutions
Ready to overcome challenges and drive innovation in your organization? Join us in our upcoming webinar where we discuss how to combat resource limitations, scope creep, and the difficulties of aligning your projects with strategic goals. Discover how OnePlan can revolutionize your product development processes, helping your team to innovate faster, manage resources more effectively, and deliver exceptional results.
The Comprehensive Guide to Validating Audio-Visual Performances.pdfkalichargn70th171
Ensuring the optimal performance of your audio-visual (AV) equipment is crucial for delivering exceptional experiences. AV performance validation is a critical process that verifies the quality and functionality of your AV setup. Whether you're a content creator, a business conducting webinars, or a homeowner creating a home theater, validating your AV performance is essential.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
React.js, a JavaScript library developed by Facebook, has gained immense popularity for building user interfaces, especially for single-page applications. Over the years, React has evolved and expanded its capabilities, becoming a preferred choice for mobile app development. This article will explore why React.js is an excellent choice for the Best Mobile App development company in Noida.
Visit Us For Information: https://www.linkedin.com/pulse/what-makes-reactjs-stand-out-mobile-app-development-rajesh-rai-pihvf/
Superpower Your Apache Kafka Applications Development with Complementary Open...Paul Brebner
Kafka Summit talk (Bangalore, India, May 2, 2024, https://events.bizzabo.com/573863/agenda/session/1300469 )
Many Apache Kafka use cases take advantage of Kafka’s ability to integrate multiple heterogeneous systems for stream processing and real-time machine learning scenarios. But Kafka also exists in a rich ecosystem of related but complementary stream processing technologies and tools, particularly from the open-source community. In this talk, we’ll take you on a tour of a selection of complementary tools that can make Kafka even more powerful. We’ll focus on tools for stream processing and querying, streaming machine learning, stream visibility and observation, stream meta-data, stream visualisation, stream development including testing and the use of Generative AI and LLMs, and stream performance and scalability. By the end you will have a good idea of the types of Kafka “superhero” tools that exist, which are my favourites (and what superpowers they have), and how they combine to save your Kafka applications development universe from swamploads of data stagnation monsters!
Boost Your Savings with These Money Management AppsJhone kinadey
A money management app can transform your financial life by tracking expenses, creating budgets, and setting financial goals. These apps offer features like real-time expense tracking, bill reminders, and personalized insights to help you save and manage money effectively. With a user-friendly interface, they simplify financial planning, making it easier to stay on top of your finances and achieve long-term financial stability.
Manyata Tech Park Bangalore_ Infrastructure, Facilities and Morenarinav14
Located in the bustling city of Bangalore, Manyata Tech Park stands as one of India’s largest and most prominent tech parks, playing a pivotal role in shaping the city’s reputation as the Silicon Valley of India. Established to cater to the burgeoning IT and technology sectors
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Paul Brebner
Closing talk for the Performance Engineering track at Community Over Code EU (Bratislava, Slovakia, June 5 2024) https://eu.communityovercode.org/sessions/2024/why-apache-kafka-clusters-are-like-galaxies-and-other-cosmic-kafka-quandaries-explored/ Instaclustr (now part of NetApp) manages 100s of Apache Kafka clusters of many different sizes, for a variety of use cases and customers. For the last 7 years I’ve been focused outwardly on exploring Kafka application development challenges, but recently I decided to look inward and see what I could discover about the performance, scalability and resource characteristics of the Kafka clusters themselves. Using a suite of Performance Engineering techniques, I will reveal some surprising discoveries about cosmic Kafka mysteries in our data centres, related to: cluster sizes and distribution (using Zipf’s Law), horizontal vs. vertical scalability, and predicting Kafka performance using metrics, modelling and regression techniques. These insights are relevant to Kafka developers and operators.
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
A neural network is a machine learning program, or model, that makes decisions in a manner similar to the human brain, by using processes that mimic the way biological neurons work together to identify phenomena, weigh options and arrive at conclusions.
🏎️Tech Transformation: DevOps Insights from the Experts 👩💻campbellclarkson
Connect with fellow Trailblazers, learn from industry experts Glenda Thomson (Salesforce, Principal Technical Architect) and Will Dinn (Judo Bank, Salesforce Development Lead), and discover how to harness DevOps tools with Salesforce.
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...The Third Creative Media
"Navigating Invideo: A Comprehensive Guide" is an essential resource for anyone looking to master Invideo, an AI-powered video creation tool. This guide provides step-by-step instructions, helpful tips, and comparisons with other AI video creators. Whether you're a beginner or an experienced video editor, you'll find valuable insights to enhance your video projects and bring your creative ideas to life.
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
9. NS_DESIGNATED_INITIALIZER
• Formalises object initialisation
• Generates warnings if convenience initialisers do
not call the designated initialiser
• Communicates intent to other developers
• Even more warnings if you don’t override the
designated initialiser inherited from superclass
(more on that later)
10. Well that was easy…
• Let’s down tools, it’s brew time.
@interface CBCBrewDay : NSObject
- (instancetype)initWithDate:(NSDate *)date NS_DESIGNATED_INITIALIZER;
- (CBCBrew *)brewFromComponents:(CBCBrewComponents *)brewComponents;
@end
12. Second time around…
• First batch won’t make it past the brewery gates,
better brew a second batch.
CBCBrewDay *brewDay = [[CBCBrewDay alloc] initWithDate:[NSDate date]];
CBCBrewComponents *brewComponents = [[CBCBrewComponents alloc] init];
CBCBrew *brew = [brewDay brewFromComponents:brewComponents];
Erm, something is wrong here
14. What went wrong?
CBCBrewDay *brewDay = [[CBCBrewDay alloc] initWithDate:[NSDate date]];
CBCBrewComponents *brewComponents = [[CBCBrewComponents alloc] init];
brewComponents.identifier = @"Pale Ale";
brewComponents.hopVariety = @"Fuggles";
brewComponents.maltVariety = @"Maris Otter";
brewComponents.yeastStrain = @“WLP002";
CBCBrew *brew = [brewDay brewFromComponents:brewComponents];
• No error checking code in the brewFromComponents:
method to ensure that all the required components are set
• Callers can initialise CBCBrewComponents using the
default init inherited from NSObject
21. Better Brewing with
nonnull
• Nullability type specifiers should not be applied partially.
• Along with properties and parameters, they can also
applied to method return types.
• Xcode helps with this.
25. Audited Regions
• You can mix and match nullability type specifier
within an audited region.
NS_ASSUME_NONNULL_BEGIN
@interface CBCBrewComponents : NSObject
@property (copy, nonatomic) NSString *identifier;
@property (copy, nonatomic, nullable) NSString *hopVariety;
@property (copy, nonatomic) NSString *maltVariety;
@property (copy, nonatomic) NSString *yeastStrain;
- (instancetype)initWithIdentifier:(NSString *)identifier
hopVariety:(NSString *)hopVariety
maltVariety:(NSString *)maltVariety
yeastStrain:(NSString *)yeastStrain NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;
@end
NS_ASSUME_NONNULL_END
26. Audited Regions
• Even with all this help. Be sure to still implement
error checking. The compiler doesn’t catch it all.
• Be sure to check your inputs are valid.
CBCBrewDay *brewDay = [[CBCBrewDay alloc] initWithDate:[NSDate date]];
NSString *hopVariety = nil;
CBCBrewComponents *brewComponents = [[CBCBrewComponents alloc] initWithIdentifier:@"Pale Ale"
hopVariety:hopVariety
maltVariety:@"Maris Otter"
yeastStrain:@"WLP002"];
CBCBrew *brew = [brewDay brewFromComponents:brewComponents];
27. Better Brewing with
nonnull
• Communicate correct usage of your class
• More awesome compile-time help
• Less bugs! (you’d hope, right?)
29. Adopting
NS_DESIGNATED_INITIALIZER
• Xcode 6.x
• add macro to designated initialiser
• Xcode 7 beta
• add macro to designated initialiser
• explicitly override superclass designated
initialiser(s)
• … even if marked unavailable
30. Adopting
NS_DESIGNATED_INITIALIZER
• Override inherited initialiser with some sensible
defaults (not like these…)
- (instancetype)init
{
return [self initWithIdentifier:[NSString string]
hopVariety:[NSString string]
maltVariety:[NSString string]
yeastStrain:[NSString string]];
}
31. Adopting
NS_DESIGNATED_INITIALIZER
• Even if superclass initialiser is marked
NS_UNAVAILABLE, Xcode still issues warning
• https://openradar.appspot.com/21302875
• Call doesNotRecognizeSelector and return nil
- (instancetype)init
{
[self doesNotRecognizeSelector:_cmd];
return nil;
}
32. Summary
• Use NS_DESIGNATED_INITIALIZER to formalise
object initialisation
• Use NS_UNAVAILABLE to hide inherited members
not relevant to your subclass
• Guard against nil inputs and communicate intent
with NS_ASSUME_NONNULL_BEGIN/END