Leave your flames and preconceptions about CSS-in-JS at the door. I love CSS and JS no matter who's where. I'll talk about the benefits of, and why I love, the styled-components library. I'll show you the fundamental power of styled-components, and illustrate why it's my favorite complement to React.
An introduction to Angular Material (2) using Angular Material, Angular (2x), and Angular-CLI. Github repo as started + finished branches: https://github.com/ladyleet/ng-vikings-one
http://twitter.com/ladyleet for questions! :)
This presentation provides an overview of many of the user interface classes available for your use within UIKit, Apple's user interface framework for iOS.
Leave your flames and preconceptions about CSS-in-JS at the door. I love CSS and JS no matter who's where. I'll talk about the benefits of, and why I love, the styled-components library. I'll show you the fundamental power of styled-components, and illustrate why it's my favorite complement to React.
An introduction to Angular Material (2) using Angular Material, Angular (2x), and Angular-CLI. Github repo as started + finished branches: https://github.com/ladyleet/ng-vikings-one
http://twitter.com/ladyleet for questions! :)
This presentation provides an overview of many of the user interface classes available for your use within UIKit, Apple's user interface framework for iOS.
Software is complicated, trying to represent the business logic in code requires allot of communication between the programmers and the domain experts. Domain Driven Design provided methods to facilitate this process
Workshop Spring - Session 5 - Spring IntegrationAntoine Rey
Vous avez déjà entendu parler d’Apache Camel ?
Les Design Pattern n’ont plus de secrets pour vous ?
L’Event Driven Architecture vous attire ?
Les Enterprise Integration Pattern vous interpellent ?
Vos applications reposent sur TCP, JMS, FTP, SFTP, les fichiers, les mails, XML, les web services SOAP, REST, RSS, JPA, JDBC ou même Twitter ?
N’attendez plus : venez découvrir l’utilisation des patterns comme le Channel Adapter, le Router ou l’Aggregator au travers d’un workshop sur Spring Integration.
Voici le support de présentation d’un workshop d’1h s’appuyant sur le cas d’étude suivant : un moteur chargé d’indexer des données clients dans le moteur de recherche Elasticsearch.
Une connaissance minimaliste de Spring Framework est pré-requise.
Spring Integration est à votre portée de main. EAI et ESB n’ont qu’à bien se tenir !!
LinkedList vs Arraylist- an in depth look at java.util.LinkedListMarcus Biel
In this keynote I give you and in-depth look at the java.utilLinkedList class.
I compare LinkedList to ArrayList and I explain the most important methods of the interface java.util.Queue and java.util.Deque that LinkedList implements. Last but not least, I show you how you can use LinkedList as a Stack data structure.
This talk is about Nestjs and how it can help you build clean Nodejs backend apps, we will be covering also essential web development and JavaScript must know technologies and tools such as TypeScript and others.
Software is complicated, trying to represent the business logic in code requires allot of communication between the programmers and the domain experts. Domain Driven Design provided methods to facilitate this process
Workshop Spring - Session 5 - Spring IntegrationAntoine Rey
Vous avez déjà entendu parler d’Apache Camel ?
Les Design Pattern n’ont plus de secrets pour vous ?
L’Event Driven Architecture vous attire ?
Les Enterprise Integration Pattern vous interpellent ?
Vos applications reposent sur TCP, JMS, FTP, SFTP, les fichiers, les mails, XML, les web services SOAP, REST, RSS, JPA, JDBC ou même Twitter ?
N’attendez plus : venez découvrir l’utilisation des patterns comme le Channel Adapter, le Router ou l’Aggregator au travers d’un workshop sur Spring Integration.
Voici le support de présentation d’un workshop d’1h s’appuyant sur le cas d’étude suivant : un moteur chargé d’indexer des données clients dans le moteur de recherche Elasticsearch.
Une connaissance minimaliste de Spring Framework est pré-requise.
Spring Integration est à votre portée de main. EAI et ESB n’ont qu’à bien se tenir !!
LinkedList vs Arraylist- an in depth look at java.util.LinkedListMarcus Biel
In this keynote I give you and in-depth look at the java.utilLinkedList class.
I compare LinkedList to ArrayList and I explain the most important methods of the interface java.util.Queue and java.util.Deque that LinkedList implements. Last but not least, I show you how you can use LinkedList as a Stack data structure.
This talk is about Nestjs and how it can help you build clean Nodejs backend apps, we will be covering also essential web development and JavaScript must know technologies and tools such as TypeScript and others.
SymfonyCon Berlin 2016 Jenkins Deployment Pipelinescpsitgmbh
Currently I'm working on a flexible deployment pipeline in Jenkins where I can reuse some templates and create new pipelines within minutes. I'd like to present my solution, talk about the basics of Jenkins and explain why it's the better way to deploy with a CI server.
How to configure with Spring an api not based on SpringJose María Arranz
Shows how to configure an ItsNat web project with Spring.
The Spring DI tricks used can be applied to other similar problems.
This is a translation, the original presentation is in Spanish.
Threads, Queues, and More: Async Programming in iOSTechWell
To keep your iOS app running butter-smooth at 60 frames per second, Apple recommends doing as many tasks as possible asynchronously or “off the main thread.” Joe Keeley introduces you to some basic concepts of asynchronous programming in iOS. He discusses what threads and queues are, how they are related, and the special significance of the main queue to iOS. Look at what options are available in the iOS SDK to work asynchronously, including NSOperationQueues and Grand Central Dispatch. Take an in depth look at how to implement some common use cases for those options in Swift. Joe pays special attention to networking, one of the most common asynchronous use cases. Spend some time discussing common asynchronous programming pitfalls—and how to avoid them. Leave this session ready to try out asynchronous programming in your iOS app.
When working with enterprise applications, you want to have the same user experience that you know from for instance office applications and browsers. People know how to use the features that can be found in browsers such as bookmarking, favorites, and working with tabs. The search mechanism provided by Google, that uses suggestions based on the text typed by the user, is so common that people expect this in every application. And there are more of these UI patterns. In this session, you will learn how to implement some of the common UI patterns in your ADF application.
Deze presentatie is gegeven tijdens de KScope conferentie 2012
Spreker: Luc Bors
Titel: How to Bring Common UI Patterns to ADF
Onderwerp: Fusion Middleware - Subonderwerp: ADF
Eindgebruikers van bedrijfsapplicaties eisen dezelfde gebruikerservaring die ze kennen van bijvoorbeeld office applicaties en applicaties op het internet. Functies zoals bookmarking, favorieten en het werken met tabs wordt graag gezien in de dagelijkse werk. Het zoekmechanisme van Google, dat suggesties toont op basis van de ingevoerde tekst, is zo ´gewoon´ dat mensen dit in elke applicatie terug willen zien. Twitter en Facebook geven automatisch aan dat je nieuwe berichten hebt zonder dat je daar zelf eerst om moet vragen, dat gebruikers de normaalste zaak van de wereld vinden. Er zijn nog veel meer van deze UI patterns. In deze sessie leer je hoe een aantal van deze UI patterns in je ADF applicatie kunt inbouwen waardoor de eindgebruiker beschikking krijgt over bekende en vanzelfsprekende features. Dit zal leiden tot een snellere acceptatie van de applicatie en prettigere gebruikerservaring.
Apache Calcite is a dynamic data management framework. Think of it as a toolkit for building databases: it has an industry-standard SQL parser, validator, highly customizable optimizer (with pluggable transformation rules and cost functions, relational algebra, and an extensive library of rules), but it has no preferred storage primitives. In this tutorial, the attendees will use Apache Calcite to build a fully fledged query processor from scratch with very few lines of code. This processor is a full implementation of SQL over an Apache Lucene storage engine. (Lucene does not support SQL queries and lacks a declarative language for performing complex operations such as joins or aggregations.) Attendees will also learn how to use Calcite as an effective tool for research.
Oracle Data Integrator (ODI) seems to be slow when it is installed out-of-the-box, since it has to comply with different versions of the databases and operating systems. The default installation is generally not the optimal choice. ODI is a flexible product, that can be customized for specific requirements and to implement new features of the database or operating systems. Attendees will learn how to easily create a customized ODI environment.
This presentation will demonstrate the flexibility of the Knowledge Module, configuration best practices and the best query response time tips and techniques depending on complex business requirements. It will include information about how to load an extensive number of files quickly with a special algorithm, as well as how to define new customized data types, analytical and database functions, archiving ODI logs in a timely fashion and using Oracle HINTS in a variabled and static way due to business and IT needs.
Does Your IBM i Security Meet the Bar for GDPR?Precisely
While the European Union’s General Data Protection Regulation (GDPR) took effect May 25, many global organizations still feel the stress of achieving compliance. Could your organization pass an audit and avoid fines today?
If you are concerned about GDPR compliance, or compliance with other security regulations, view this webinar with IBM Systems Magazine where we provide a practical guide to setting up a more secure, auditable IBM i configuration. You will learn about base IBM i functions, Do-It-Yourself tips, and how software solutions can help you accelerate and maintain compliance.
This webcast and all related materials are provided for informational purposes only, and are not intended to provide, and should not be relied on for, legal advice pertaining to the subject matter. If you have specific questions on how this may affect your organization you should consult your legal advisor.
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfFlorence Consulting
Quattordicesimo Meetup di Milano, tenutosi a Milano il 23 Maggio 2024 dalle ore 17:00 alle ore 18:30 in presenza e da remoto.
Abbiamo parlato di come Axpo Italia S.p.A. ha ridotto il technical debt migrando le proprie APIs da Mule 3.9 a Mule 4.4 passando anche da on-premises a CloudHub 1.0.
Instagram has become one of the most popular social media platforms, allowing people to share photos, videos, and stories with their followers. Sometimes, though, you might want to view someone's story without them knowing.
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
Understanding User Behavior with Google Analytics.pdfSEO Article Boost
Unlocking the full potential of Google Analytics is crucial for understanding and optimizing your website’s performance. This guide dives deep into the essential aspects of Google Analytics, from analyzing traffic sources to understanding user demographics and tracking user engagement.
Traffic Sources Analysis:
Discover where your website traffic originates. By examining the Acquisition section, you can identify whether visitors come from organic search, paid campaigns, direct visits, social media, or referral links. This knowledge helps in refining marketing strategies and optimizing resource allocation.
User Demographics Insights:
Gain a comprehensive view of your audience by exploring demographic data in the Audience section. Understand age, gender, and interests to tailor your marketing strategies effectively. Leverage this information to create personalized content and improve user engagement and conversion rates.
Tracking User Engagement:
Learn how to measure user interaction with your site through key metrics like bounce rate, average session duration, and pages per session. Enhance user experience by analyzing engagement metrics and implementing strategies to keep visitors engaged.
Conversion Rate Optimization:
Understand the importance of conversion rates and how to track them using Google Analytics. Set up Goals, analyze conversion funnels, segment your audience, and employ A/B testing to optimize your website for higher conversions. Utilize ecommerce tracking and multi-channel funnels for a detailed view of your sales performance and marketing channel contributions.
Custom Reports and Dashboards:
Create custom reports and dashboards to visualize and interpret data relevant to your business goals. Use advanced filters, segments, and visualization options to gain deeper insights. Incorporate custom dimensions and metrics for tailored data analysis. Integrate external data sources to enrich your analytics and make well-informed decisions.
This guide is designed to help you harness the power of Google Analytics for making data-driven decisions that enhance website performance and achieve your digital marketing objectives. Whether you are looking to improve SEO, refine your social media strategy, or boost conversion rates, understanding and utilizing Google Analytics is essential for your success.
1. 0Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
Functional tests with TYPO3
» Introduction
» How to start
» Running functional tests
2. 1Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
INTRODUCTION
„What is (functional) testing about?“
» test a part of your software
» not about testing your functions or classes, but processes
» from a user's point of view
» for quality assurance (QA)
„Why do I need functional tests?“
» Unit Tests don't ensure a correct workflow
» manual tests take a lot of time
» encapsulated system (database) without site-effects or dependencies
3. 2Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„First you need a test case!“
<?php
namespace IchHabRechtExampleExtensionTestsFunctional;
class FirstFunctionalTest extends TYPO3CMSCoreTestsFunctionalTestCase {
}
4. 3Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Ensure your extension is loaded!“
/**
* @var array
*/
protected $testExtensionsToLoad = array(
'typo3conf/ext/example_extension',
'typo3conf/ext/example_extension/Tests/Functional/Fixtures/Extensions/test_extension',
);
/**
* @var array
*/
protected $coreExtensionsToLoad = array(
'workspaces',
);
5. 4Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Add additional files!“
/**
* @var array
*/
protected $pathsToLinkInTestInstance = array(
'typo3conf/ext/example_extension/Tests/Functional/Fixtures/AdditionalConfiguration.php' =>
'typo3conf/AdditionalConfiguration.php',
);
6. 5Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Overwrite LocalConfiguration settings!“
/**
* @var array
*/
protected $configurationToUseInTestInstance = array(
'BE' => array(
'debug' => TRUE,
),
'FE' => array(
'debug' => TRUE,
),
);
7. 6Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Initialize your infrastructure!“
protected function setUp() {
parent::setUp();
}
test folder in typo3temp is created
core is linked into test folder
test extensions are linked into typo3conf/ext
paths and files are linked
LocalConfiguration.php is written
PackageStates.php is written
bootstrap is initialized
database is created
database scheme is imported
8. 7Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„If you need a backend user!“
protected function setUp() {
parent::setUp();
$this->setUpBackendUserFromFixture(1); // Import and log-in a default backend user
}
9. 8Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Import your data set!“
protected function setUp() {
parent::setUp();
$this->importDataSet(ORIGINAL_ROOT . 'typo3/sysext/core/Tests/Functional/Fixtures/pages.xml');
// Import own fixtures
$fixturePath = ORIGINAL_ROOT . 'typo3conf/ext/example_extension/Tests/Functional/Fixtures';
$this->importDataSet($fixturePath . 'pages.xml'); // Import database records from the xml file
}
Fixtures, shipped by the core:
be_users.xml
pages.xml
pages_language_overlay.xml
sys_file_storage.xml
sys_language.xml
tt_content.xml
10. 9Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Import your data set!“
typo3/sysext/core/Tests/Functional/Fixtures/pages.xml
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<pages>
<uid>1</uid>
<pid>0</pid>
<title>Root</title>
<deleted>0</deleted>
<perms_everybody>15</perms_everybody>
</pages>
<pages>
<uid>2</uid>
<pid>1</pid>
<title>Dummy 1-2</title>
<deleted>0</deleted>
<perms_everybody>15</perms_everybody>
</pages>
…
</dataset>
11. 10Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
protected function setUp() {
parent::setUp();
$this->setUpFrontendRootPage(
1, // page id
array( // array of TypoScript files which should be included
'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts'
)
);
}
12. 11Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts
config {
…
}
page = PAGE
page {
…
}
[globalVar = GP:L = 1]
config.sys_language_uid = 1
[end]
13. 12Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – config.watcher
Defines tables and fields which should be collected to be returned
config.watcher {
tableFields {
pages = uid,_ORIG_uid,pid,sorting,title
sys_category = uid,_ORIG_uid,_LOCALIZED_UID,pid,sys_language_uid,title,parent,items,sys_language_uid
sys_file = uid,_ORIG_uid,_LOCALIZED_UID,pid,title,sys_language_uid
sys_file_reference = uid,_ORIG_uid,_LOCALIZED_UID,title,description,alternative,link,downloadname,
missing,identifier,file,pid,sys_language_uid,title,parent,items,sys_language_uid,uid_local,
uid_foreign,tablenames,fieldname,table_local
tt_content = uid,_ORIG_uid,_LOCALIZED_UID,pid,sorting,sys_language_uid,header,categories
}
}
14. 13Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – page
page = PAGE
page {
10 = COA
10 {
Store current page in register
1 = LOAD_REGISTER
1.watcher.dataWrap = pages:{field:uid} // pages:1
Add current page data to records and structure array
2 = USER
2.userFunc = TYPO3CMSCoreTestsFunctionalFrameworkFrontendCollector->addRecordData
15. 14Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – lib.watcherDataObject
lib.watcherDataObject = COA
lib.watcherDataObject {
1 = LOAD_REGISTER
1.watcher.dataWrap = |
2 = USER
2.userFunc = TYPO3CMSCoreTestsFunctionalFrameworkFrontendCollector->addRecordData
99 = RESTORE_REGISTER
}
16. 15Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – page.10
Get page sub tree
10 = CONTENT
10 {
stdWrap.required = 1
table = pages
select {
orderBy = sorting
pidInList = this
# prevent sys_language_uid lookup
languageField = 0
}
renderObj < lib.watcherDataObject
renderObj.1.watcher.dataWrap = {register:watcher}|.__pages/pages:{field:uid} // pages:1.__pages/pages:2
}
17. 16Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – page.10
Get content records
20 = CONTENT
20 {
table = tt_content
select {
orderBy = sorting
where = colPos=0
}
renderObj < lib.watcherDataObject
renderObj.1.watcher.dataWrap = {register:watcher}|.__contents/tt_content:{field:uid} // pages:1.__contents/tt_content:1
18. 17Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – page.10.20
get additional information (sys_category, sys_file_reference)
renderObj.10 = CONTENT
if.isTrue.field = categories
table = sys_category
select {
pidInList = root,-1
selectFields = sys_category.*
join = sys_category_record_mm ON sys_category_record_mm.uid_local = sys_category.uid
where.data = field:_ORIG_uid // field:uid
where.intval = 1
where.wrap = sys_category_record_mm.uid_foreign=|
orderBy = sys_category_record_mm.sorting_foreign
languageField = sys_category.sys_language_uid
}
renderObj < lib.watcherDataObject
renderObj.1.watcher.dataWrap = {register:watcher}|.categories/sys_category:{field:uid}
// pages:1.__contents/tt_content:1.categories/sys_category:1
19. 18Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – page.10
store collected data for output in a section “Default”
stdWrap.postUserFunc = TYPO3CMSCoreTestsFunctionalFrameworkFrontendCollector->attachSection
stdWrap.postUserFunc.as = Default
20. 19Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Set up the frontend!“
JsonRenderer.ts – page
return collected sections as json
stdWrap.postUserFunc = TYPO3CMSCoreTestsFunctionalFrameworkFrontendRenderer->renderSections
21. 20Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
HOW TO START
„Write your test!“
/**
* @test
*/
public function contentIsShown() {
$expectedRecords = array(
…,
);
$response = $this->getFrontendResponse(
1, // page id
0, // language id
0, // backend user id
0, // workspace id
TRUE, // fail on failure
0 // frontend user id
);
$responseContent = json_decode($response->getContent() , TRUE);
$this->assertEquals($expectedRecords, $responseContent['Default']['records']);
$this->assertInRecords($expectedRecords[0], $responseContent['Default']['records']);
}
22. 21Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
RUNNING FUNCTIONAL TESTS
„What you need!“
global PHP >= 5.5.0
composer installation of PHPUnit
{
"require-dev": {
"phpunit/phpunit": “~4.7.0",
"mikey179/vfsStream": “1.4.*@dev“
}
}
TYPO3 core source
23. 22Nicole Cordes, T3DD15, CPS-IT Mehr Wert im Netz
RUNNING FUNCTIONAL TESTS
„FINALLY RUN!“
go to your TYPO3 root directory
bin/phpunit -c typo3/sysext/core/Build/FunctionalTests.xml typo3conf/ext/example_extension/Tests/Functional
use TYPO3 source (or change the used database)
typo3DatabaseName="yourDatabase" typo3DatabaseUsername="yourUser"
typo3DatabasePassword="yourPassword" typo3DatabaseHost="localhost"
TYPO3_PATH_WEB=“/path/to/typo3_root”
bin/phpunit -c /path/to/typo3_root/typo3/sysext/core/Build/FunctionalTests.xml
/path/to/typo3_root/typo3conf/ext/example_extension/Tests/Functional