The document is an illustrated guide to PostgreSQL's buffer cache. It shows how the buffer cache, called shared_buffers, stores table data in memory using pointers to 8K blocks. The buffer cache tracks block usage and status, evicting least recently used blocks to make space for new blocks as needed. It can optimize memory usage by allocating a ring buffer for vacuuming tables larger than one quarter of shared_buffers.
A lot of people using PHPunit for testing their source code. While I was observing my team I recognized most of them are only using the standard assertions like 'assertEquals()' and are complaining about how hard it is to test the code even when the tests are written first. This talk is about all the stuff not used on a daily basis and it digs deep into uncommon features of PHPUnit.
PHP Data Objects (PDO) provides a clear, simple (but powerful), unified API for working with all our favorite databases. Features include prepared statements with bound parameters (for all databases, even those that don’t natively support them), transactions, cursors, LOBs, and flexible error handling.
A lot of people using PHPunit for testing their source code. While I was observing my team I recognized most of them are only using the standard assertions like 'assertEquals()' and are complaining about how hard it is to test the code even when the tests are written first. This talk is about all the stuff not used on a daily basis and it digs deep into uncommon features of PHPUnit.
PHP Data Objects (PDO) provides a clear, simple (but powerful), unified API for working with all our favorite databases. Features include prepared statements with bound parameters (for all databases, even those that don’t natively support them), transactions, cursors, LOBs, and flexible error handling.
Socon10 Discussion on Pick a Metric and Manage it. Service levels, response times, mentions, leads and reach are all valid approaches. Take a process centric approved to managing your social media initiative and measurement efforts. Improvement should be the main goal.
Securing Business: Strategic Enablement of UsersJon Gatrell
Sending big files is not as easy as it sounds and it definitely is appropriate to use email or ftp. Communicate securely and enable users to do business through a strategy, not technology.
Ever hire someone and have it “just not work out”? How long did that take to figure out? Weeks? Days? Before your morning coffee?
Hiring, firing and retention are some of the most difficult tasks that a business faces. And we all make mistakes. The tech industry is currently in the middle of a competitive hiring bubble and it’s really hard to find good people. It’s even harder to retain them. So how do you find good people, and keep them?
We’ll show what mistakes we’ve made in our combined 30 years in open source and tech.
Postgres has long been a database that easily scales vertically. It has also supported durable and reliable binary replication.
In the last two years, work on HA, clustering and extensions to our MVCC system has produced clustering features that help Postgres efficiently scale across many smaller systems.
This talk will start with a demo of the latest Postgres replication features. Then, we'll walk through open source and commercially-supported stacks that supporting the most demanding applications backed by Postgres.
In version 9.1, Postgres added streaming and synchronous replication that can be configured in about 5 steps. In 9.2 (to be released in 2012), we're adding cascaded replication and optimizations for common developer requests.
These features set the stage for a fast, efficient and distributed SQL cluster -- one that has configurable durability, is easy to administer and supported by "cloud" and virtualization vendors.
Socon10 Discussion on Pick a Metric and Manage it. Service levels, response times, mentions, leads and reach are all valid approaches. Take a process centric approved to managing your social media initiative and measurement efforts. Improvement should be the main goal.
Securing Business: Strategic Enablement of UsersJon Gatrell
Sending big files is not as easy as it sounds and it definitely is appropriate to use email or ftp. Communicate securely and enable users to do business through a strategy, not technology.
Ever hire someone and have it “just not work out”? How long did that take to figure out? Weeks? Days? Before your morning coffee?
Hiring, firing and retention are some of the most difficult tasks that a business faces. And we all make mistakes. The tech industry is currently in the middle of a competitive hiring bubble and it’s really hard to find good people. It’s even harder to retain them. So how do you find good people, and keep them?
We’ll show what mistakes we’ve made in our combined 30 years in open source and tech.
Postgres has long been a database that easily scales vertically. It has also supported durable and reliable binary replication.
In the last two years, work on HA, clustering and extensions to our MVCC system has produced clustering features that help Postgres efficiently scale across many smaller systems.
This talk will start with a demo of the latest Postgres replication features. Then, we'll walk through open source and commercially-supported stacks that supporting the most demanding applications backed by Postgres.
In version 9.1, Postgres added streaming and synchronous replication that can be configured in about 5 steps. In 9.2 (to be released in 2012), we're adding cascaded replication and optimizations for common developer requests.
These features set the stage for a fast, efficient and distributed SQL cluster -- one that has configurable durability, is easy to administer and supported by "cloud" and virtualization vendors.
Have a project that just needs some cash to get off the ground? Need someone to fund beer and food for an event? Have a great idea and want to get paid for implementing it? Come find out how we did it.
Asking for money doesn’t have to be so hard. Whether you’re working on a non-profit, or a small side project. Or you’re bootstrapping a sweet new developer event. Or you want to find angel investing or venture capital… The same skills apply.
Come learn all about how to ask for money from Selena Deckelmann, J Chris Anderson and Teyo Tyree. Selena co-founded Open Source Bridge, raises money for the open source project PostgreSQL and has found funding for many small non- and for-profit projects. J Chris and Teyo both founded VC-backed startups – Couchbase and Puppet Labs – based on open source products.
They’ll lead you through their process, their successes and failures.
You’ll leave with proven strategies for developing relationships, asking the right questions and providing the right information to people who want to give you their money.
Size can creep up on you. Some day you may wake up to a multi-terabyte Postgres system handling over 3000 tps staring you down. Learn the best ways to manage these systems as they grow, and find out what new features in 9.0 have made life easier for administrators and application developers working with big data.
This talk will lead you through solutions to problems Postgres faces when it gets big: backups, transaction wraparound, bloat, huge catalogs and upgrades. You need to monitor the right things, find the gems in DBA-friendly database functions and catalog tables, and know the right places to look to spot problems early. We’ll also go over monitoring best practices and open source tools to get the job done.
Working with multiple versions of Postgres back to version 8.2 will be included, and as well as tips on making the most out of new features in 9.0. War stories will be taken from real-world work with Emma, an email marketing company with a few large databases.
Open Source software development starts with the code. But if you want a sustainable project, you need people too. This is a meditation on the idea of making friendship the core of your community's values.
Bucardo is a replication system for PostgreSQL. It supports both master-slave (to multiple slaves) and master-master replication, and does not require any modifications to PostgreSQL to run. Maintained by Greg Sabino Mullane, its management application (bucardo_ctl) has recently been significantly improved, making initial setup of replication very fast and easy.
Open Source Bridge 2009 Conference opening day slides. Includes some statistics about attendees, why they're here, goals for the conference, and a pointer about session/wiki tie-in.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
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.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Elevating Tactical DDD Patterns Through Object Calisthenics
Illustrated buffer cache
1. An illustrated guide to
the buffer cache
Selena Deckelmann
Based on Greg Smith’s “Inside the Buffer Cache”
http://www.westnet.com/∼gsmith/content/postgresql
4. $PGDATA/base/ Table
Table
Table
You can have more than one table.
5. $PGDATA/base/ Table
Table
Table Made of Made o
f 8K
File 8K
8K
File
8K
8K
File
8K
File 8K
...
... Up to 1 GB
Files are made up of 8K blocks.*
* you can change that at compile time.
7. shared_buffers
ptr ptr ptr ptr ptr ...
An array of pointers to 8K blocks
(and some other stuff)
shared_buffers is configured at database start.
You have to restart Postgres to change it.
11. shared_buffers:
the other stuff
X X X X X X
Tag base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
12. shared_buffers:
the other stuff
X X X X X X
Tag base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
Status FLAGS FLAGS FLAGS FLAGS FLAGS FLAGS
13. shared_buffers:
the other stuff
X X X X X X
Tag base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
Status PINNED flags flags flags flags flags
{ }
UPDATE mytable (status)
VALUES(‘my cat is the best ever’)
where user = ‘selenamarie’;
14. shared_buffers:
the other stuff
X X X X X X
Tag base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
Status PINNED DIRTY flags flags flags flags
{ COMMIT;
}
15. shared_buffers:
the other stuff
X X X X X X
Tag base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
Status PINNED DIRTY OTHER OTHER OTHER OTHER
{ BLAH BLAH BLAH;
}
16. shared_buffers:
the other stuff
X X X X X X
Tag base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
Status PINNED DIRTY OTHER OTHER OTHER OTHER
Usage 1 5 5 4 3 0
17. shared_buffers:
the lifecycle
X X X X X X
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
PINNED DIRTY OTHER OTHER OTHER OTHER
1 5 5 4 3 0
{ myPgProcess calls:
BufferAlloc(‘base/file1’, 100); }
18. shared_buffers:
the lifecycle
X X X X X X
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
PINNED DIRTY PINNED OTHER OTHER OTHER
1 5 5 4 3 0
{ myPgProcess calls:
BufferAlloc(‘base/file1’, 100); }
19. shared_buffers:
the lifecycle
X X X X X X
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
PINNED DIRTY OTHER OTHER OTHER OTHER
1 5 5 4 3 0
{ myPgProcess calls:
BufferAlloc(‘base/file1’, 101); }
20. shared_buffers:
the lifecycle
Who’s it gonna be?
X X X X X X
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
PINNED DIRTY OTHER OTHER OTHER OTHER
1 5 5 4 3 0
Eviction! { myPgProcess calls:
BufferAlloc(‘base/file1’, 101); }
21. shared_buffers:
the lifecycle
Who’s it gonna be?
X X X X X X
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 409
PINNED DIRTY OTHER OTHER OTHER OTHER
0 5 5 4 3 0
Scan the cache!
Usage != 0,
so decrement.
{ myPgProcess calls:
BufferAlloc(‘base/file1’, 101); }
22. shared_buffers:
the lifecycle
Who’s it gonna be?
X X X X X X
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1 Usage == 0,
456 12 100 612 32 409 Goodbye!
PINNED DIRTY OTHER OTHER OTHER OTHER
0 4 4 3 2 0
{ myPgProcess calls:
BufferAlloc(‘base/file1’, 101); }
23. shared_buffers:
the lifecycle
Who’s it gonna be?
X X X X X X
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1
456 12 100 612 32 101
PINNED DIRTY OTHER OTHER OTHER PINNED
0 4 4 3 2 1
{ myPgProcess calls:
BufferAlloc(‘base/file1’, 101); }
24. shared_buffers:
optimizations*
X X X X X X X ...
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1 base/file2 ...
456 12 100 612 32 101 891 ...
PINNED DIRTY OTHER OTHER OTHER PINNED OTHER ...
0 4 4 3 2 0 1 ...
{ }
Result is greater
than: SELECT pg_relation_size(‘mytable’);
shared_buffers/4 VACUUM mytable;
* Version 8.3 and later
25. shared_buffers:
optimizations
X X X X X X X ...
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1 base/file2 ...
456 12 100 612 32 101 891 ...
PINNED DIRTY OTHER OTHER OTHER PINNED OTHER ...
0 4 4 3 2 0 1 ...
256K ring
buffer allocated!
{ SELECT pg_relation_size(‘mytable’);
VACUUM mytable; }
* Version 8.3 and later
26. shared_buffers:
optimizations VACUUM
Safe during
OVERSIMPLIFICATION WARNING!
X X X X X X X ...
base/file1 base/file2 base/file1 base/file3 base/file1 base/file1 base/file2 ...
456 12 100 612 32 101 891 ...
PINNED DIRTY OTHER OTHER OTHER PINNED OTHER ...
0 4 4 3 2 0 1 ...
256K ring
buffer allocated!
{ SELECT pg_relation_size(‘mytable’);
VACUUM mytable; }
* Version 8.3 and later