The document discusses using Perl libraries to interact with cloud computing platforms like Amazon EC2 and Rackspace to launch and manage virtual servers and instances. It provides code examples for creating instances on EC2 and Rackspace using the Net::Amazon::EC2 and Net::RackSpace::CloudServers libraries, checking for instances to become active, and connecting to instances securely via SSH.
Teaching Your Machine To Find FraudstersIan Barber
The slides from my talk at PHP Tek 11.
When dealing with money online, fraud is an ongoing problem for both
consumers and sellers. Researchers have been developing statistical
and machine learning techniques to detect shady sellers on auction
sites, spot fraudulent payments on e-commerce systems and catch click
fraud on adverts. While there is no silver bullet, you will learn to
flag suspicious activity and help protect your site from scammers
using PHP and a little help from some other technologies.
Go beyond the documentation and explore some of what's possible if you stretch symfony to its limits. We will look at a number of aspects of symfony 1.4 and Doctrine 1.2 and tease out some powerful functionality you may not have expected to find, but will doubtless be able to use. Topics covered will include routing, forms, the config cache and record listeners. If you're comfortable in symfony and wondering what's next, this session is for you.
Teaching Your Machine To Find FraudstersIan Barber
The slides from my talk at PHP Tek 11.
When dealing with money online, fraud is an ongoing problem for both
consumers and sellers. Researchers have been developing statistical
and machine learning techniques to detect shady sellers on auction
sites, spot fraudulent payments on e-commerce systems and catch click
fraud on adverts. While there is no silver bullet, you will learn to
flag suspicious activity and help protect your site from scammers
using PHP and a little help from some other technologies.
Go beyond the documentation and explore some of what's possible if you stretch symfony to its limits. We will look at a number of aspects of symfony 1.4 and Doctrine 1.2 and tease out some powerful functionality you may not have expected to find, but will doubtless be able to use. Topics covered will include routing, forms, the config cache and record listeners. If you're comfortable in symfony and wondering what's next, this session is for you.
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
Cette conférence présente deux grands motifs de conception : l'observateur et l'injection de dépendance. Ce sujet allie à la fois théorie et pratique. Le composant autonome EventDispatcher de Symfony ainsi que le conteneur d'injection de dépendance Pimple sont mis à l'honneur avec des exemples pratiques d'usage. Ces cas pratiques combinent du code de l'ORM Propel ainsi que le composant autonome Zend\Search\Lucene du Zend Framework 2
Silex is a brand new PHP 5.3 micro framework built on top of the Symfony2 de decoupled components. In this session, we will discover how to build and deploy powerful REST web services with such a micro framework and its embedded tools.
The first part of this talk will introduce the basics of the REST architecture. We fill focus on the main concepts of REST like HTTP methods, URIs and open formats like XML and JSON.
Then, we will discover how to deploy REST services using most of interesting Silex tools like database abstraction layer, template engine and input validation. We will also look at unit and functional testing frameworks with PHPUnit and HTTP caching with Edge Side Includes and Varnish support to improve performances.
Persistence is one of the most important part in a PHP project. Persisting data to a database came with PHP/FI and its MySQL support. From native extensions and PHP4 database abstraction libraries to PDO and modern ORM frameworks, you will (re)discover how persistence has evolved during the last decade. This talk will also introduce the future of data persistence with the growing success of alternative storage engines.
PHP 5.3 and Lithium: the most rad php frameworkG Woo
Presentation given to the Orange County PHP meetup on Feb 24 2010. The presentation covers the new features in php 5.3 and goes on to show how they are used in Lithium, the most rad php framework.
This session introduces most well known design patterns to build PHP classes and objects that need to store and fetch data from a relational databases. The session will describe the difference between of the Active Record, the Table and Row Data Gateway and the Data Mapper pattern. We will also examine some technical advantages and drawbacks of these implementations. This talk will expose some of the best PHP tools, which ease database interactions and are built on top of these patterns.
Models and Service Layers, Hemoglobin and HobgoblinsRoss Tuck
As presented at ZendCon 2014, AmsterdamPHP, PHPBenelux 2014, Sweetlake PHP and PHP Northwest 2013, an overview of some different patterns for integrating and managing logic throughout your application.
Symfony components in the wild, PHPNW12Jakub Zalas
Symfony is a set of reusable and decoupled PHP components designed to solve common web development problems. While as a framework it might not be the best for some of your projects, you can always build on top of its solid foundation of well written, tested and flexible components.
Original presentation: https://docs.google.com/presentation/pub?id=136blt1DWJ95yuEdpmjz9dIqgg38VwEXBQlY7bu0Op8w&start=false&loop=false&delayms=3000
From ReactPHP to Facebook Hack's Async implementation and many more, asynchronous programming has been a 'hot' topic lately. But how well does async programming support work in PHP and what can you actually use it for in your projects ? Let's look at some real-world use cases and how they leverage the power of async to do things you didn't know PHP could do.
UK Symfony Meetup, November 2012
Original presentation: https://docs.google.com/presentation/pub?id=1PLcqTby6yqSbfWlMIDHknH852DU6DO6OAgQJOtSEdsg&start=false&loop=false&delayms=3000
As presented at Dutch PHP Conference 2015, an introduction to command buses, how to implement your own in PHP and why they're both useful but unimportant.
Sales Process is a key element for any sales focussed organization as it helps in streamlining the overall process, improves efficiency and effectiveness which leads to better closures and revenue enhancement.
The process entails customer acquisition to retention and encompasses the whole organization. Designing a crisp and effective sales process requires experience, empathy and clear thinking.
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
Cette conférence présente deux grands motifs de conception : l'observateur et l'injection de dépendance. Ce sujet allie à la fois théorie et pratique. Le composant autonome EventDispatcher de Symfony ainsi que le conteneur d'injection de dépendance Pimple sont mis à l'honneur avec des exemples pratiques d'usage. Ces cas pratiques combinent du code de l'ORM Propel ainsi que le composant autonome Zend\Search\Lucene du Zend Framework 2
Silex is a brand new PHP 5.3 micro framework built on top of the Symfony2 de decoupled components. In this session, we will discover how to build and deploy powerful REST web services with such a micro framework and its embedded tools.
The first part of this talk will introduce the basics of the REST architecture. We fill focus on the main concepts of REST like HTTP methods, URIs and open formats like XML and JSON.
Then, we will discover how to deploy REST services using most of interesting Silex tools like database abstraction layer, template engine and input validation. We will also look at unit and functional testing frameworks with PHPUnit and HTTP caching with Edge Side Includes and Varnish support to improve performances.
Persistence is one of the most important part in a PHP project. Persisting data to a database came with PHP/FI and its MySQL support. From native extensions and PHP4 database abstraction libraries to PDO and modern ORM frameworks, you will (re)discover how persistence has evolved during the last decade. This talk will also introduce the future of data persistence with the growing success of alternative storage engines.
PHP 5.3 and Lithium: the most rad php frameworkG Woo
Presentation given to the Orange County PHP meetup on Feb 24 2010. The presentation covers the new features in php 5.3 and goes on to show how they are used in Lithium, the most rad php framework.
This session introduces most well known design patterns to build PHP classes and objects that need to store and fetch data from a relational databases. The session will describe the difference between of the Active Record, the Table and Row Data Gateway and the Data Mapper pattern. We will also examine some technical advantages and drawbacks of these implementations. This talk will expose some of the best PHP tools, which ease database interactions and are built on top of these patterns.
Models and Service Layers, Hemoglobin and HobgoblinsRoss Tuck
As presented at ZendCon 2014, AmsterdamPHP, PHPBenelux 2014, Sweetlake PHP and PHP Northwest 2013, an overview of some different patterns for integrating and managing logic throughout your application.
Symfony components in the wild, PHPNW12Jakub Zalas
Symfony is a set of reusable and decoupled PHP components designed to solve common web development problems. While as a framework it might not be the best for some of your projects, you can always build on top of its solid foundation of well written, tested and flexible components.
Original presentation: https://docs.google.com/presentation/pub?id=136blt1DWJ95yuEdpmjz9dIqgg38VwEXBQlY7bu0Op8w&start=false&loop=false&delayms=3000
From ReactPHP to Facebook Hack's Async implementation and many more, asynchronous programming has been a 'hot' topic lately. But how well does async programming support work in PHP and what can you actually use it for in your projects ? Let's look at some real-world use cases and how they leverage the power of async to do things you didn't know PHP could do.
UK Symfony Meetup, November 2012
Original presentation: https://docs.google.com/presentation/pub?id=1PLcqTby6yqSbfWlMIDHknH852DU6DO6OAgQJOtSEdsg&start=false&loop=false&delayms=3000
As presented at Dutch PHP Conference 2015, an introduction to command buses, how to implement your own in PHP and why they're both useful but unimportant.
Sales Process is a key element for any sales focussed organization as it helps in streamlining the overall process, improves efficiency and effectiveness which leads to better closures and revenue enhancement.
The process entails customer acquisition to retention and encompasses the whole organization. Designing a crisp and effective sales process requires experience, empathy and clear thinking.
The challenges of managing a complex sales processAshutosh Bijoor
Is your sales process complex? Are you facing challenges in scaling up your sales process? What can you do about it?
These are some of the questions this presentation attempts to answer
6 killer steps to creating a kick ass sales proposalNaveen GM
Sales proposals: Love them or hate them, they're an integral part of any successful deal. While some salespeople might view these documents as unnecessary—or even as a waste of time—they're actually one of the most powerful instruments in a salesperson's arsenal of deal-closing tools.
In fact, proposals can make all the difference between losing a sale and closing one. And when done properly, a proposal will not only help close the sale, but it will also make that sale larger than it otherwise would have been.
A quick reference guide to help sales execs review their lead generation, qualification and opportunity sales cycle mapping to improve current business processes.
How to Build a Proven Sales Process for Selling Software to EnterprisesLandslide Technologies
Tier I, II and III software vendors are coming under increased pressure to increase revenue in a market that is seeing spending cuts. Forrester Research is projecting only a 6% increase in IT sales in 2009. SaaS and cloud computing models are further delaying IT decisions. How do you sell enterprise software to a wide range of business titles and departments with varying and sometimes contradictory concerns and requirements?
The answer is: your sales process!
Businesses that are part of the tech industry, sell into the tech industry, or are considering branching into this field should join Razi Imam, Founder of Landslide Technologies and a seasoned veteran of enterprise software sales and sales management in this presentation to:
* Learn about the best practices of building a sales process,
* Apply these fundamentals and strategies to selling in the tech industry,
* Create a live sales process that will help you increase your sales volume, value and velocity in the tech industry, and
* Take away methods to apply these strategies to your own unique selling situation.
This 10 step sales process will help you map out the most efficient and effective way to target prospects, generate leads, nurture prospects and close more sales.
How to Design a Sales Process for B2B Sales - #1 Tool for the Dream Sales Team Daniel Nilsson
How Can You Grow & Develop Your Sales Pipe If You Don’t Know What You’re Doing? Learn how to design your B2B sales process and increase conversion, get bigger deals and close your deals in less time. I will give you the key steps, the right focus and example of tools that will take your sales team to a new level.
You should read this presentation if you believe in your own and your team's growth.
Personally, I have a deep passion for Growth and I created this presentation after doing extensive research on how I could grow sales into new levels. The data I have reviewed are from marketing experts, sales experts, Gartner, reports and my own personal experience defining sales processes in multiple verticals.
Please feel welcome to share your thoughts, insights or comments. I love feedback. You can send an email to info@daniel-one.com or visit my webpage www.daniel-one.com. I look forward to hearing from you.
(DEV305) Building Apps with the AWS SDK for PHP | AWS re:Invent 2014Amazon Web Services
For both new and experienced users of the AWS SDK for PHP, we highlight features of the SDK as we work through building a simple, scalable PHP application. Attendees will learn about core features of the SDK including service clients, iterators, and waiters. We will also introduce new features in the upcoming Version 3 of the SDK, including asynchronous requests, paginators, and the new JMESPath result querying syntax.
With more and more sites falling victim to data theft, you've probably read the list of things (not) to do to write secure code. But what else should you do to make sure your code and the rest of your web stack is secure ? In this tutorial we'll go through the basic and more advanced techniques of securing your web and database servers, securing your backend PHP code and your frontend javascript code. We'll also look at how you can build code that detects and blocks intrusion attempts and a bunch of other tips and tricks to make sure your customer data stays secure.
With more and more sites falling victim to data theft, you've probably read the list of things (not) to do to write secure code. But what else should you do to make sure your code and the rest of your web stack is secure ? In this tutorial we'll go through the basic and more advanced techniques of securing your web and database servers, securing your backend PHP code and your frontend javascript code. We'll also look at how you can build code that detects and blocks intrusion attempts and a bunch of other tips and tricks to make sure your customer data stays secure.
TLS305 Using DynamoDB with the AWS SDK for PHP - AWS re: Invent 2012Amazon Web Services
Learn how to work with Amazon DynamoDB using the AWS SDK for PHP. Attendees learn about the AWS SDK for PHP including how to install and configure the SDK and how to perform operations with DynamoDB. Advanced discussion topics include tips for effective DynamoDB usage, request batching, performance tuning, configuring event listeners, and setting up the included DynamoDB session handler for session storage.
Elastic::Model is a new framework to store your Moose objects, which uses ElasticSearch as a NoSQL document store and flexible search engine.
It is designed to make small beginnings simple, but to scale easily to Big Data requirements without needing to rearchitect your application. No job too big or small!
This talk will introduce Elastic::Model, demonstrate how to develop a simple application, introduce some more advanced techniques, and discuss how it uses ElasticSearch to scale.
https://github.com/clintongormley/Elastic-Model
With more and more sites falling victim to data theft, you've probably read the list of things (not) to do to write secure code. But what else should you do to make sure your code and the rest of your web stack is secure ? In this tutorial we'll go through the basic and more advanced techniques of securing your web and database servers, securing your backend PHP code and your frontend javascript code. We'll also look at how you can build code that detects and blocks intrusion attempts and a bunch of other tips and tricks to make sure your customer data stays secure.
With more and more sites falling victim to data theft, you've probably read the list of things (not) to do to write secure code. But what else should you do to make sure your code and the rest of your web stack is secure ? In this tutorial we'll go through the basic and more advanced techniques of securing your web and database servers, securing your backend PHP code and your frontend javascript code. We'll also look at how you can build code that detects and blocks intrusion attempts and a bunch of other tips and tricks to make sure your customer data stays secure.
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.
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.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
41. my $id = $real_server->id();
RUNNING_CHECK:
while ('necessary') {
my $instance = $cs->get_server($id);
say 'completion status: ', $server->progress();
if ($server->status eq 'ACTIVE') {
say 'active, IP: ', $instance->public_address()->[0];
last RUNNING_CHECK;
}
sleep 1;
}
42. my $id = $real_server->id();
RUNNING_CHECK:
while ('necessary') {
my $instance = $cs->get_server($id);
say 'completion status: ', $server->progress();
if ($server->status eq 'ACTIVE') {
say 'active, IP: ', $instance->public_address()->[0];
last RUNNING_CHECK;
}
sleep 1;
}
Di cloud c’è molto da parlare, soprattutto perché dopo il calcio sembra un argomento in cui ognuno ha una sua idea. La tassonomia di partenza più tipica è basata sull’utilizzatore finale: si parte da IaaS (Infrastructure as a Service), ove quello che si tratta sono sostanzialmente server virtuali che interessano un amministratore di sistema, si passa per PaaS (Platform as a Service) ove il fornitore mette a disposizione un ambiente software più o meno ampio che interessa uno sviluppatore, atterrando poi su SaaS (Software as a Service ed il suo cugino Application as a Service) in cui il fornitore mette a disposizione un vero e proprio servizio all’utente finale. Per fare un esempio di quest’ultimo... qualcuno usa Gmail? \n
Di cloud c’è molto da parlare, soprattutto perché dopo il calcio sembra un argomento in cui ognuno ha una sua idea. La tassonomia di partenza più tipica è basata sull’utilizzatore finale: si parte da IaaS (Infrastructure as a Service), ove quello che si tratta sono sostanzialmente server virtuali che interessano un amministratore di sistema, si passa per PaaS (Platform as a Service) ove il fornitore mette a disposizione un ambiente software più o meno ampio che interessa uno sviluppatore, atterrando poi su SaaS (Software as a Service ed il suo cugino Application as a Service) in cui il fornitore mette a disposizione un vero e proprio servizio all’utente finale. Per fare un esempio di quest’ultimo... qualcuno usa Gmail? \n
\n
Nemmeno a dirlo, c’è un modulo su CPAN per gestire la parte di computazione di Amazon (Amazon Elastic Cloud Computing o EC2).\n
Trattandosi di un servizio a pagamento, c’è bisogno di fornire delle credenziali di accesso che serviranno anche per la tariffazione dei servizi.\n
Queste credenziali le trovate nel profilo.\n
Una volta disponibile un oggetto $ec2, possiamo cominciare a lanciare dei server virtuali...\n
... o, in terminologia Amazon, delle istanze.\n
Uno dei parametri da specificare obbligatoriamente è ImageId\n
Un’immagine è una fotografia di una macchina comprensiva dell’intero sistema operativo. Un po’ come se l’immagine fosse il programma, e l’istanza fosse il processo del programma in esecuzione: da un solo programma si possono lanciare più processi.\n
Un’immagine è una fotografia di una macchina comprensiva dell’intero sistema operativo. Un po’ come se l’immagine fosse il programma, e l’istanza fosse il processo del programma in esecuzione: da un solo programma si possono lanciare più processi.\n
Un’immagine è una fotografia di una macchina comprensiva dell’intero sistema operativo. Un po’ come se l’immagine fosse il programma, e l’istanza fosse il processo del programma in esecuzione: da un solo programma si possono lanciare più processi.\n
Un’immagine è una fotografia di una macchina comprensiva dell’intero sistema operativo. Un po’ come se l’immagine fosse il programma, e l’istanza fosse il processo del programma in esecuzione: da un solo programma si possono lanciare più processi.\n
Un’immagine è una fotografia di una macchina comprensiva dell’intero sistema operativo. Un po’ come se l’immagine fosse il programma, e l’istanza fosse il processo del programma in esecuzione: da un solo programma si possono lanciare più processi.\n
Un’immagine è una fotografia di una macchina comprensiva dell’intero sistema operativo. Un po’ come se l’immagine fosse il programma, e l’istanza fosse il processo del programma in esecuzione: da un solo programma si possono lanciare più processi.\n
Il “tipo” rappresenta la classe di hardware virtuale su cui deve girare la nostra istanza. La stesa immagine, infatti, può essere lanciata su macchine virtuali aventi risorse differenti in termini di memoria, CPU e spazio disco disponibili.\n
Il “tipo” rappresenta la classe di hardware virtuale su cui deve girare la nostra istanza. La stesa immagine, infatti, può essere lanciata su macchine virtuali aventi risorse differenti in termini di memoria, CPU e spazio disco disponibili.\n
Il “tipo” rappresenta la classe di hardware virtuale su cui deve girare la nostra istanza. La stesa immagine, infatti, può essere lanciata su macchine virtuali aventi risorse differenti in termini di memoria, CPU e spazio disco disponibili.\n
Altri due parametri obbligatori sono MinCount e MaxCount, che consentono di impostare quante istanze vadano fatte partire all’interno del particolare “ordine”. Il parametro SecurityGroup non è obbligatorio ma consente di impostare delle opzioni di accesso particolari. Esistono ovviamente altri parametri!\n
Una volta dato l’ordine di lanciare una o più istanze occorre attendere che queste siano disponibili.\n
Il controllo è possibile utilizzando il metodo describe_instances(), che restituisce una struttura dati multilivello. Di fatto è un array anonimo che andrà a contenere tutti gli “ordini” effettuati nel tempo ($reservations); all’interno di ciascun ordine potremo accedere all’insieme delle istanze proprie dell’ordine (da ricordare che con MinCount e MaxCount diversi da 1 potremmo ritrovarci con più di un’istanza per ordine) e quindi allo stato di ciascuna istanza. Quando abbiamo raggiunto il livello ‘running’ la macchina virtuale è definitivamente pronta...\n
... per cui possiamo reperire le informazioni salienti su di essa, come ad esempio l’indirizzo IP su cui è raggiungibile.\n
\n
\n
L’accesso in SSH alla macchina è condizionato però al fatto che siano state impostate opportune chiavi di accesso.\n
Queste possono essere impostate sia attraverso l’API che - più banalmente - attraverso la console web del servizio EC2.\n
A questo punto potete accedere via SSH come utente root. Yay!\n
L’ultima operazione principale di interesse è ovviamente la terminazione di una macchina virtuale, in modo da ridurre i costi quando questa non sia necessaria. Il metodo terminate_instances() richiede l’identificativo della macchina, che è reperibile attraverso l’oggetto di “prenotazione” dell’ordine.\n
Anche qui è opportuno verificare che lo stato della macchina virtuale sia cambiato opportunamente in modo da assicurarci che l’ordine di terminazione sia in effettivo corso di smaltimento.\n
\n
Anche per RackSpace è disponibile un modulo Perl di astrazione dell’API, per quanto non sia esattamente matura e presenti dei punti di possibile miglioramento o comunque raffinamento.\n
Analogamente a quanto avviene per Amazon, anche qui è necessario avere delle credenziali di accesso all’API che verranno utilizzate anche per la tariffazione dei servizi.\n
Il nome utente lo decidete voi all’atto dell’iscrizione, mentre la chiave per l’API è disponibile all’interno del vostro profilo.\n
Un altro aspetto che va indicato è se intendete connettervi all’infrastruttura americana (default) o a quella europea in UK. Si tratta in buona sostanza di due infrastrutture indipendenti che hanno punti di ingresso differenti (contrariamente ad Amazon che ha un punto di ingresso unico per l’API).\n
In particolare, se vi interessano macchine virtuali in Europa, il sistema di gestione si trova a Londra.\n
Arrivati a questo punto è possibile creare la descrizione di una macchina virtuale.\n
I concetti di base sono gli stessi di Amazon, anche se invece di “istanza” si parla di “server” ed invece di “tipo” si parla di “gusto”.\n
I concetti di base sono gli stessi di Amazon, anche se invece di “istanza” si parla di “server” ed invece di “tipo” si parla di “gusto”.\n
I concetti di base sono gli stessi di Amazon, anche se invece di “istanza” si parla di “server” ed invece di “tipo” si parla di “gusto”.\n
I concetti di base sono gli stessi di Amazon, anche se invece di “istanza” si parla di “server” ed invece di “tipo” si parla di “gusto”.\n
Ma quello che abbiamo - $server - è solo una descrizione e non c’è nessuna macchina virtuale in cantiere. Ancora.\n
Il metodo create_server() serve proprio ad utilizzare la descrizione creata per lanciare una macchina virtuale. Questa doppia strutturazione è uno dei punti di possibile miglioramento dell’interfaccia messa a disposizione dal modulo. Nel valore restituito - che rimappa la risposta proveniente da RackSpace - è anche disponibile la password dell’amministratore della macchina in corso di creazione.\n
\n
Anche qui c’è da aspettare un minimo per consentire alla macchina di essere lanciata propriamente...\n
... ed anche qui è possibile controllare periodicamente lo stato della macchina finché questa non diventa ‘ACTIVE’.\n
Una volta attiva, possiamo sapere qual è l’indirizzo IP...\n
... ed entrare in SSH con la password di root che abbiamo raccolto in precedenza.\n
\n
Purtroppo la password viene inviata anche via email...\n
\n
Un aspetto interessante messo a disposizione da RackSpace è la possibilità di personalizzare alcuni file in relazione alla particolare istanza con il parametro “personality”. Un possibile utilizzo consiste nell’impostare il file /root/.ssh/authorized_keys2 che consente di utilizzare le chiavi SSH invece delle password. Ovviamente il meccanismo può essere anche utilizzato per impostare i parametri distintivi dell’istanza, come ad esempio il suo ruolo rispetto ad altre istanze lanciate a partire dalla stessa immagine.\n
\n
Molto semplicemente, terminare un server.\n
Una volta lanciato il comando di terminazione la macchina virtuale viene subito fatta scomparire dalla lista delle macchine attive, quindi in questo caso il controllo è piuttosto semplice.\n