A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (8/12): XML & HTML Data Processing. Simple API for XML. Simp...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (1/12): World Wide Web – Architectural AspectsSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (3/12): Web Programming – Web Application Architecture. Web ...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (6/12): Data Modeling. Data Extraction with XPath. XML Valid...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (12/12): Web Application SecuritySabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (2/12): Web Programming – HTTP. Cookies. Web SessionsSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (10/12): Web Services. REST ParadigmSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (9/12): Web Services. From Service-Oriented Architectures to...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (8/12): XML & HTML Data Processing. Simple API for XML. Simp...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (1/12): World Wide Web – Architectural AspectsSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (3/12): Web Programming – Web Application Architecture. Web ...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (6/12): Data Modeling. Data Extraction with XPath. XML Valid...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (12/12): Web Application SecuritySabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (2/12): Web Programming – HTTP. Cookies. Web SessionsSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (10/12): Web Services. REST ParadigmSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (9/12): Web Services. From Service-Oriented Architectures to...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (5/12): Data Modeling. XML Family and XML NamespacesSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Several considerations about the data openness in the Web context, including various examples. A presentation prepared for Open Source Camp event (7-8 May 2016, Iasi, Romania): http://oscamp.eu/
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007eLiberatica
This is a presentation held at eLiberatica 2007.
http://www.eliberatica.ro/2007/
One of the biggest events of its kind in Eastern Europe, eLiberatica brings community leaders from around the world to discuss about the hottest topics in FLOSS movement, demonstrating the advantages of adopting, using and developing Open Source and Free Software solutions.
The eLiberatica organizational committee together with our speakers and guests, have graciously allowed media representatives and all attendees to photograph, videotape and otherwise record their sessions, on the condition that the photos, videos and recordings are licensed under the Creative Commons Share-Alike 3.0 License.
Web of Data as a Solution for Interoperability. Case StudiesSabin Buraga
The paper draws several considerations regarding the use of Web of Data (Semantic Web) technologies – such as metadata vocabularies and ontological constructs – to increase the degree of interoperability within distributed systems. A number of case studies are presenting to express the knowledge in a
platform- and programming language-independent manner.
An Introduction to Websphere sMash for PHP Programmersjphl
IBM® WebSphere® sMash is an agile Web application platform for developing and running modern Web applications. It introduces a simple environment for creating, assembling and running applications based on popular Web technologies.
This presentation was delivered at the Dutch PHP Conference 2009. It shows how the PHP support in sMash can be used to easily integrate with Java assets.
For more information, see http://projectzero.org
GTU MCA PHP Interview Questions And Answers for freshersTOPS Technologies
MCA GTU Student can refer PHP Interview Questions and Answers, This Php Q & A will helpful for Live GTU Projects as well as for Interview.. Visit us at TOPS Technologies http://www.tops-int.com
Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (5/12): Data Modeling. XML Family and XML NamespacesSabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model Sabin Buraga
A presentation from the lectures regarding Web Technologies, a discipline taught by Dr. Sabin Buraga at the Faculty of Computer Science, UAIC, Romania: https://profs.info.uaic.ro/~busaco/teach/courses/web/
Several considerations about the data openness in the Web context, including various examples. A presentation prepared for Open Source Camp event (7-8 May 2016, Iasi, Romania): http://oscamp.eu/
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007eLiberatica
This is a presentation held at eLiberatica 2007.
http://www.eliberatica.ro/2007/
One of the biggest events of its kind in Eastern Europe, eLiberatica brings community leaders from around the world to discuss about the hottest topics in FLOSS movement, demonstrating the advantages of adopting, using and developing Open Source and Free Software solutions.
The eLiberatica organizational committee together with our speakers and guests, have graciously allowed media representatives and all attendees to photograph, videotape and otherwise record their sessions, on the condition that the photos, videos and recordings are licensed under the Creative Commons Share-Alike 3.0 License.
Web of Data as a Solution for Interoperability. Case StudiesSabin Buraga
The paper draws several considerations regarding the use of Web of Data (Semantic Web) technologies – such as metadata vocabularies and ontological constructs – to increase the degree of interoperability within distributed systems. A number of case studies are presenting to express the knowledge in a
platform- and programming language-independent manner.
An Introduction to Websphere sMash for PHP Programmersjphl
IBM® WebSphere® sMash is an agile Web application platform for developing and running modern Web applications. It introduces a simple environment for creating, assembling and running applications based on popular Web technologies.
This presentation was delivered at the Dutch PHP Conference 2009. It shows how the PHP support in sMash can be used to easily integrate with Java assets.
For more information, see http://projectzero.org
GTU MCA PHP Interview Questions And Answers for freshersTOPS Technologies
MCA GTU Student can refer PHP Interview Questions and Answers, This Php Q & A will helpful for Live GTU Projects as well as for Interview.. Visit us at TOPS Technologies http://www.tops-int.com
Large Scale Crawling with Apache Nutch and Friendslucenerevolution
Presented by Julien Nioche, Director, DigitalPebble
This session will give an overview of Apache Nutch. I will describe its main components and how it fits with other Apache projects such as Hadoop, SOLR, Tika or HBase. The second part of the presentation will be focused on the latest developments in Nutch, the differences between the 1.x and 2.x branch and what we can expect to see in Nutch in the future. This session will cover many practical aspects and should be a good starting point to crawling on a large scale with Apache Nutch and SOLR.
Large Scale Crawling with Apache Nutch and FriendsJulien Nioche
This session will give an overview of Apache Nutch. I will describe its main components and how it fits with other Apache projects such as Hadoop, SOLR, Tika or HBase. The second part of the presentation will be focused on the latest developments in Nutch, the differences between the 1.x and 2.x branch and what we can expect to see in Nutch in the future. This session will cover many practical aspects and should be a good starting point to crawling on a large scale with Apache Nutch and SOLR.
Working Group on Distributed Authoring and Versioning on the World Wide Web
Goal: To enable distributed web authoring tools to be broadly interoperable.
Presentation uploaded by Murali Krishna Nookella
WinRT and the Web: Keeping Windows Store Apps Alive and ConnectedJeremy Likness
The Windows Runtime is the runtime that drives Windows 8 and the new Windows Store apps. The runtime enables developers to build rich client apps that run natively on Window 8 devices. In this session, Jeremy Likness explores the various built-in components and APIs that enable Windows Store apps to connect to SOAP, REST, and OData endpoints and syndicate RSS and Atom feeds. Learn how these tools make it easy to build Windows Store apps that are alive and connected to the internet.
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...cresco
Cresco's panel included one of the best expert in Open Source Technology who had vast experience in PHP/MySQL programming. Our expert has shared enthusiastic information about Open Source Technology & PHP programming as well as its benefits starting right from its introduction and various modules of PHP.
Similar to Web Technologies (4/12): Web Application Development in PHP (20)
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...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.
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
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
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:
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.
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.
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.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
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.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
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/
18. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Persistent storage
using other non-relational paradigms
(based on graphs and or key—value)
distributed on Internet, scalable – NoSQL
http://nosql.mypopescu.com/
examples:
Cassandra, CouchDB, Hadoop, MarkLogic, MongoDB, Neo4j, etc.
advanced
19. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
facilitated by specific controls specified in the source-code
running on the server
can emulates HTML form fields and/or provide new
interactive controls – e.g., calendar, slideshow,…
client-specific HTML (+JavaScript) code generation
22. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
Web template system
using specifications of content presentation
(a Web template), persistent data (e.g., retrieved from
a database) is used by a processor (template engine)
in order to generate HTML documents or other formats
24. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
Web template system
on the server
Apache FreeMarker (Java), Blade (PHP), Haml (Ruby),
Mustache (C++, JS, PHP, Python, Scala,…), Razor (.NET),
Smarty (PHP), Tonic (PHP), Velocity (Java), XSLT (XML)
advanced
35. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP is a procedural language, offering support for
other programming paradigms
(object-oriented and, recently, functional)
could be used as a general purpose language, too
php: characteristics
39. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP processor (engine) usage
Web
Client
HTTP request
(GET, POST,...)
response
(HTML, PNG, SVG,...
representation)
Zend
processor
(engine)
PHP
application
server
.php
programs
(external) resources
Web Server
possibly, various extensions
(modules) could be integrated
40. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
A PHP program is interpreted by Zend Engine 2
which generate internal instructions – opcodes
http://www.php.net/manual/en/internals2.opcodes.php
http://www.phpinternalsbook.com/
php: characteristics
44. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: caracterizare
various behaviors of PHP platforms,
including loaded extensions (.so/.dll shared libraries),
could be globally configured by using the php.ini file
precision = 14 ; precision for float values – details at http://php.net/precision
safe_mode = Off ; processing control – http://php.net/safe-mode
max_execution_time = 30 ; max. number of seconds allocated to program execution
memory_limit = 128M ; max. size of the memory allowed for a script
post_max_size = 8M ; max. size of data transmitted via POST method
default_mimetype = "text/html" ; default MIME type for the content generated by a script
file_uploads = On ; file uploads are permitted
upload_max_filesize = 32M ; max. size of an uploaded file
allow_url_fopen = On ; opening files specified by a URL is allowed
session.use_cookies = 1 ; Web sessions will be stored in cookies
session.name = PHPSESSID ; default cookie name regarding Web sessions
…
; specifying the extensions loaded during the PHP server application initialization
extension=php_pdo_sqlite.dll
extension=php_mysqli.dll
extension=php_soap.dll
…
45. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP program execution behavior could be adjusted
via declare directive – possibly, for a block of code
// charset encoding used for generated content
declare (encoding='ISO-8859-2');
// strict datatype checking – PHP 7
declare (strict_types=1);
php: characteristics
advanced
59. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
float
real numbers
usually, conforming to IEEE 754 (double precision)
special value: NAN (not a number) constant
useful predefined functions: is_nan(), is_finite(), is_infinite()
64. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – composites
array
there is no clear distinction
between indexed and associative arrays
an array could represent various data structures:
list (vector), hash table (an implementation of a map),
dictionary, collection, stack, queue,…
67. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – special
resource
denotes a reference to an external resource
examples: bzip2, curl, ftp, gd, mysql link, mysql result,
pdf document, printer, stream, socket, xml, zlib
a resource is created by using specific functions
e.g., a stream resource is initiated by the fopen() function
and used by fread(), feof(), fgets(),... functions
71. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: variables
Variables are created “on the fly”
data type is inferred according to the context
data type automatic conversion (type casting)
is similar to the C language
$age = 21; /* a variable of Integer type */
$connected = TRUE; # a Boolean datatype one
$prefer["color"] = "gray"; // an associative array
83. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: operators
Majority of them are similar to the C language ones
arithmetic: + - * / % ++ --
value assignation: = and => (for arrays)
reference assignation: =&
bit-wise: & | ^ << >>
comparisons: == === != <> !== < > <= >= ?: ?? <=>
error reporting control: @
logic (Booleans): and or xor ! && ||
string (concatenation) – same as Perl: . .=
84. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: operators
In PHP 7, new operators could be used:
<=> (spaceship)
comparing expressions (of a scalar type),
and returning -1, 0 or 1
echo 15.5 <=> 15.5; // 0 (equality)
echo 15.5 <=> 16.5; // -1 (right value is greater)
echo 17.5 <=> 15.5; // 1 (left value is greater)
85. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: operators
In PHP 7, new operators could be used:
?? (null coalescing)
offers the value of first operand if exists and it’s not NULL,
otherwise returns the value of second operand
// as user name, we’ll use the value provided by a Web form
// (retrieved with GET or POST); if it not exists, the value is 'tux'
$username = $_GET['user'] ?? $_POST['user'] ?? 'tux';
87. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: example
<?php
// filling up an array with values from 1 to 10
for ($index = 1; $index <= 10; $index++) {
$values[$index] = $index;
}
// computing the sum of values
$sum = 0;
foreach ($values as $item)
$sum += $item;
/* showing obtained sum on the standard output
to be sent to the Web client */
echo ("<p>Sum of first 10 numbers is <strong>" .
$sum . "</strong>.</p>");
?>
88. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Invoking (running) the PHP program
from the command line:
saving source-code into a text file – values.php
calling PHP interpreter from the command line interface
php values.php
<p>Sum of first 10 numbers is <strong>55</strong>.</p>
89. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Invoking (running) the PHP program
on the Web server:
placing the source code – having read & execution rights
in the browser, specifying the URL to the program
to be invoked via GET method of the HTTP protocol
result generated
by the script
90. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: control statements
Including source-code from other files
(support for modularization)
include
search source file in predefined directories specified
via include_path and evaluates it
if file not exists, a warning is issued
include_once – to include it only once
91. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: control statements
Including source-code from other files
(support for modularization)
require
search source file in predefined directories specified
via include_path and evaluates it
if file not exists, a fatal error is signaled
require_once – to include it only once
93. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
define ('MAX', 10); // maximum number of values
function square ($number) { // a function to square a number
return $number * $number;
}
$number = 0;
while ($number < MAX) {
$number++; // incrementing…
if ($number % 2) // is odd number...
continue; // continuing to next iteration
// it is an even number, so showing its square
echo "Square $number is " . square ($numar) . "n";
} // end of while
94. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
User defined functions:
php: functions
a function name is case-insensitive
parameters could be indicated by reference – prefixed by &
for PHP 5.6+, a variable number of parameters
is indicated by …
http://php.net/manual/en/functions.arguments.php
95. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: funcții
<?php
declare (strict_types=1);
// arguments should be integers, returned value must be of integer type
function add (int ...$numbers): int {
$sum = 0;
foreach ($numbers as $number) {
$sum += $number;
}
return $sum;
}
echo add (7, 3, 74, 1);
echo add (pi (), '?');
?>
PHP 7: data type could be specified for each argument and
for the value returned by function
(scalar type declarations)
85
Fatal error: Uncaught TypeError:
Argument 1 passed to add() must
be of the type integer, float given
Next TypeError: Argument 2 passed
to add() must be of the type integer,
string given
96. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Beginning with PHP 5.3,
anonymous functions could be defined
functional programming (e.g., closures)
$hello = function ($name) { // variable type is function
printf ("Hello %s...n", $name);
};
$hello ('world');
$hello ('Tuxy');
php: functions
vezi www.phptherightway.com/pages/Functional-Programming.html
97. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
mathematical & conversion
character string manipulation
array processing
access to resources and file processing
database manipulation
regarding network connections
XML, PDF, JPEG,... resource processing
operating system specific
general purpose
details at http://php.net/manual/en/funcref.php
103. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: funcții predefinite
/* filters certain values from an array
by using a programmer defined function */
function value_less_than ($number) {
// returns an expression of function type
return function ($item) use ($number) { // a closure (functional approach)
return $item < $number;
};
}
$marks = array (7, 8, 9, 10, 5, 3, 10, 6, 4);
// using array_filter(), a predefined function, on marks array
// to obtain the values less than a given value (here: 7)
$values = array_filter ($marks, value_less_than (7));
print_r ($values); // we got: Array ( [4] => 5 [5] => 3 [7] => 6 [8] => 4 )
also, study https://wiki.php.net/rfc/closures
advanced
111. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: other features
SPL (Standard PHP Library)
access to standard ways of data processing
defined data structures:
SplStack, SplQueue, SplHeap, SplPriorityQueue,...
iterators:
ArrayIterator, FilesystemIterator, RegexIterator etc.
www.php.net/spl
www.phptherightway.com/#standard_php_library
advanced
113. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: other features
PHP as a Web server module (Apache, nginx)
e.g., by using proxy_fcgi and php-fpm (FastCGI Process
Manager) modules – php-fpm.org
https://wiki.apache.org/httpd/php
www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
advanced
117. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Class definition via class
and instantiation by using new operator
objects are treated similar to references
(a variable of object type contains a reference to
an object, not a copy of it)
http://php.net/manual/en/oop5.intro.php
details at http://php.net/language.oop5
118. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – encapsulation
class Student { // specifying a class
// properties (data members)
private $year;
private $email;
public $name;
// public methods
public function setYear ($aYear) {
$this->year = $aYear;
}
public function getYear () {
return $this->year;
}
}
$this is a pseudo-variable
specifying a reference to the current object
119. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – encapsulation
class Student { // specifying a class
// properties (data members)
private $year;
private $email;
public $name;
// public methods
public function setYear ($aYear) {
$this->year = $aYear;
}
public function getYear () {
return $this->year;
}
}
// an object instance
$stud = new Student ();
$stud->setYear (2);
$stud->name = 'Tux';
print_r ($stud);
Student Object
(
[year:Student:private] => 2
[name] => Tux
[email:Student:private] =>
)
121. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – inheritance
class CleverStudent extends Student {
private $marks; // obtained marks (property)
public function setMarks ($m) {
$this->marks = (array) $m;
}
public function getMarks () {
return (array) $this->marks;
}
}
$otherStud = new CleverStudent ();
// calling a method from base class
$otherStud->setYear (2);
// calling a method from derived class
$otherStud->setMarks (
['Web' => 10, 'SoftEng' => 9]
);
122. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – inheritance
class CleverStudent extends Student {
private $marks; // obtained marks (property)
public function setMarks ($m) {
$this->marks = (array) $m;
}
public function getMarks () {
return (array) $this->marks;
}
}
$otherStud = new CleverStudent ();
// calling a method from base class
$otherStud->setYear (2);
// calling a method from derived class
$otherStud->setMarks (
['Web' => 10, 'SoftEng' => 9]
);
print_r ($altStud);
CleverStudent Object
(
[marks:CleverStudent:private]
=> Array
(
[Web] => 10
[SoftEng] => 9
)
[year:Student:private] => 2
[name] =>
[email:Student:private] =>
)
128. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: interfaces
Specifying methods that will be implemented by a class
(similar to Java)
// interface regarding a content template
interface iTemplate {
// setting a variable to be substituted with its value
public function setVar ($name, $var);
// getting the template representation
public function getRep ($template);
}
details at http://php.net/manual/en/language.oop5.interfaces.php
129. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// a class implementing the interface
class Template implements iTemplate {
// associative array including variables to be replaced by their values
private $variables = array ();
public function setVar ($name, $var) {
$this->variables[$name] = $var;
}
public function getRep ($template) {
foreach ($this->variables as $name => $val) {
// replacing a variable name with its value
$template = str_replace ('{' . $name . '}', $val, $template);
}
return $template;
}
}
advanced aspects: www.phptherightway.com/#templating
131. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined interfaces & classes
// Iterator interface
Iterator extends Traversable {
// methods to be written by programmer
// in the class implementing the interface
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public boolean valid ( void )
}
advanced
134. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// traits (behaviors) that will be associated to 2D geometrical shapes
trait Rotating {
public function rotate ($angle) { // implements rotation
}
}
trait Moving {
public function moveTo ($x, $y) { // move to other coordinates
}
}
trait Filling {
public function fill ($color) { // performs filling
}
}
avansat
135. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
abstract class Shape { // geometrical shapes class
public function draw() {
echo ('I am drawing a ' . get_class());
}
}
class Rectangle extends Shape { // uses desired traits
use Filling, Moving, Rotating; // can be filled, moved, rotated
public function transform () { // plus, a specific transformation
}
}
final class Circle extends Shape { // Circle class can not be extended
use Moving, Filling; // o circle can be moved or filled
const PI = 3.1415265;
public function computeArea () {
}
}
advanced
136. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// 2 shapes (a circle and a rectangle) are instantiated
$aCircle = new Circle ();
$aRect = new Rectangle ();
$aCircle->draw ();
$aCircle->rotate (); // an error will be emitted
$aRect->draw ();
I am drawing a Circle
PHP Fatal error: Call to undefined method Circle::rotate()
in /home/dMdWgn/prog.php on line 47
php: traits
advanced
139. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: objects
Functions for class & object manipulation
get_class() will return an object name,
instance of a given class
get_parent_class() gets the parent class of an object
method_exists() tests if a method exists
for a certain object
class_exists() tests the existence of a class
is_subclass_of() determines if a heritage relation
between two classes exists
143. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
same namespace could be defined in multiple files
namespace hierarchies are permitted
namespace ProjectModuleSubmodule;
class SVGGen { ... };
specified with
ProjectModuleSubmoduleSVGGen
145. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
using a specific construct: use
(optionally, specifying an alias)
use ProjectModuleSubmodule;
real examples:
use FacebookAuthenticationAccessToken;
use IlluminateFoundationExceptionsHandler as ExceptionHandler;
146. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
without any namespace definition, all class and function
definitions are placed into the global space
namespace WebProject;
function fopen () { // specifying our own function
...
$file = fopen (...); // calling a predefined function (from global space)
}
148. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web interaction
Data transmitted by client (browser) are stored
into (global) predefined associative arrays:
$_GET[ ] – data transmitted via GET
$_POST[ ] – data transmitted via POST
$_COOKIE[ ] – received cookies
$_REQUEST[ ] – data retrieved from client
(content of $_GET, $_POST and $_COOKIE)
$_SESSION[ ] – session data
149. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web interaction
Other useful global variables:
$_SERVER[ ]
offers info about Web server
$_SERVER['PHP_SELF'] indicates the PHP script name
$_SERVER['REQUEST_METHOD']
$_SERVER['HTTP_REFERER']
$_SERVER['HTTP_USER_AGENT']
http://www.php.net/manual/en/reserved.variables.server.php
150. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web interaction
Other useful global variables:
$_ENV[ ] – data provided by the runtime environment
$_FILES[ ] – data about the uploaded files
http://www.php.net/manual/en/features.file-upload.php
consult the example
from the archive
151. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
<!-- a Web form written in HTML -->
<form action="display.php" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" value="Send" />
</form>
152. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
<!-- a Web form written in HTML -->
<form action="display.php" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" value="Send" />
</form>
<?php
// display.php – a program invoked via POST
if (!$_REQUEST["name"])
display ("Name is not specified!", "err");
else
display ("Name is" . $_REQUEST["name"]);
?>
each name field from the form represents a key in $_REQUEST [ ]
associative array (depending on the HTTP method,
could be consulted by using $_GET or $_POST)
153. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web sessions
Session management could be performed via
session_*() functions or using SessionHandler class
SessionHandler implements SessionHandlerInterface {
public bool open ( string $save_path , string $session_name )
public string create_sid ( void )
public string read ( string $session_id )
public bool write ( string $session_id , string $session_data )
public bool gc ( int $maxlifetime )
public bool destroy ( string $session_id )
public bool close ( void )
} http://php.net/manual/en/book.session.php
155. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db
Native support for multiple database
servers/technologies:
MongoDB – classes: MongoDB MongoClient MongoCursor
MySQL / MariaDB – mysqli class
PostgreSQL – pg_*() functions
SQLite – SQLite3 class
etc.
connections could be persistent
156. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysql
Functions/methods to access MySQL/MariaDB
connecting to server: mysql_connect (), mysql_pconnect ()
selecting (using) a database: mysql_select_db ()
executing a SQL statement: mysql_query ()
error reporting: mysql_errno (), mysql_error ()
getting results into an array: mysql_fetch_array ()
many others…
in the present, a deprecated approach – illegal in PHP 7
157. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
Aim: easy and flexible access to MySQL/MariaDB
from PHP5+ programs
facilitates code maintenance
compatible with MySQL API
alternative to mysql_*() functions
available docs at www.php.net/mysqli
159. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
Important methods:
initiating a connection to a MySQL server – mysqli ( )
issuing SQL statements – query ( ), prepare ( ), execute ( )
processing the response – fetch ( ), fetch_assoc ( )
closing connection – close ( )
etc.
160. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – example
Initially, we’ll create an MySQL account to assure
authenticated access from PHP programs
to the students database:
(infoiasi)$ mysql –u root mysql
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
DROP ON students.* TO 'tux'@'localhost' IDENTIFIED BY
'pa$$w0Rd' WITH GRANT OPTION;
Query OK, 0 rows affected (0.11 sec)
161. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – example
Using the mysql client in command line or
PHPMyAdmin, we create students table:
CREATE TABLE IF NOT EXISTS `students` (
`name` varchar(50) NOT NULL default '',
`year` enum('1','2','3') NOT NULL default '1',
`id` int(11) NOT NULL auto_increment,
`age` smallint(2) unsigned zerofill NOT NULL default '00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
AUTO_INCREMENT=1;
167. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
// a mysqli object instantiation
$mysql = new mysqli ('localhost', 'tux', 'pa$$w0Rd', 'students');
if (mysqli_connect_errno ()) {
die ('Failed connection...');
}
// specifying & executing a query
if (!($res = $mysql->query ('select name, year from students'))) {
die ('A query error occurred');
}
168. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
// a mysqli object instantiation
$mysql = new mysqli ('localhost', 'tux', 'pa$$w0Rd', 'students');
if (mysqli_connect_errno ()) {
die ('Failed connection...');
}
// specifying & executing a query
if (!($res = $mysql->query ('select name, year from students'))) {
die ('A query error occurred');
}
!!!
169. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
// generating a numbered list of student-related data
// (HTML spaghetti code – not a recommended practice!)
echo ('<ol>');
// results will be available into an associative array
while ($row = $res->fetch_assoc ()) {
// table column array key
echo ('<li>Student ' . $row['name'] .
' is enrolled in ' . $row['year'] . ' year</li>');
}
echo ('</ol>');
// closing connection to MySQL/Maria DB server
$mysql->close ();
171. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db
In practice, we’ll adopt an abstraction layer
in order to access a storage system
DBAL – DataBase Abstraction Layer
usual practice:
PDO (PHP Data Objects)
pragmatic consideration in the tutorial available at
https://phpdelusions.net/pdo
172. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: bd – extensia pdo
// connection data regarding MySQL/MariaDB database server
$host = '127.0.0.1';
$db = 'students';
$user = 'tux';
$pass = 'pa$$w0Rd';
$charset = 'utf8';
// setting the DSN (Data Source Name)
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
// options concerning the connection manner
$opt = [
// errors will be reported as exceptions
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// results will be stored by an associative array
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
// connection is persistent
PDO::ATTR_PERSISTENT => TRUE
];
http://php.net/manual/en/book.pdo.php
173. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: bd – extensia pdo
// retrieve from the Web client the year of study (default: 2)
$year = $_REQUEST['year'] ? $_REQUEST['year'] : 2;
try {
$pdo = new PDO ($dsn, $user, $pass, $opt); // instantiating a PDO object
// preparing a parametrized SQL statement
$sql = $pdo->prepare ('SELECT year, name, age FROM students
WHERE year=? ORDER BY age');
if ($sql->execute ([$year])) { // SQL statement can be executed?
while ($row = $sql->fetch()) { // getting each found record
// ...and showing it (table column is a key of associative array)
echo '<p>' . $row['name'] . ' is enrolled in ' . $row['year'] . ' year</p>';
}
}
} catch (PDOException $e) {
echo "Error: " . $e->getMessage(); // the message of occurred exception
};
174. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: bd – extensia pdo
A possible result provided by the execution
of the PHP program invoked by using a URL as
http://profs.info.uaic.ro/~/busaco/php/pdo-test.php?year=2
Tuxy Pinguinesscool is enrolled in 2 year
Grace Hopper is enrolled in 2 year
Margaret Hamilton is enrolled in 2 year
study the script from
the archive attached to
this lecture
175. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db
Usually, an ORM – Object-Relational Mapping
solution (component, library)
will be used on top of DBA
examples of PHP tools:
Doctrine – http://www.doctrine-project.org/
Propel – http://propelorm.org/
RedBeanPHP – http://redbeanphp.com/
advanced
195. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: code analysis
PHP source-code static analysis
discovering various programming bugs,
verifying the conformance to various coding standards
automatic correction (fixers)
computing code metrics: complexity, number of lines,…
https://github.com/exakat/php-static-analysis-tools
advanced
196. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: code analysis
avansat
Detected violations with PSR2 standards
FOUND 6 ERROR(S) AFFECTING 4 LINE(S)
----------------------------------------------------------------------
5 | ERROR | Whitespace found at end of line
8 | ERROR | Inline control structures are not allowed
8 | ERROR | Whitespace found at end of line
10 | ERROR | Whitespace found at end of line
13 | ERROR | Expected 1 blank line at end of file; 0 found
13 | ERROR | A closing tag is not permitted at the end of a PHP file
----------------------------------------------------------------------
PSR – PHP Standards Recommendations
Basic Coding Standard, Coding Style Guide, Logger Interface,
Autoloading Standard, Caching Interface,
HTTP Message Interface, Hypermedia Links, etc.
http://www.php-fig.org/psr/
200. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
extensions
Hack (Facebook, from 2014)
a programming language for HHVM, extending PHP
goal: increasing the Web developer productivity
features: explicit data types (type annotations),
generics, λ expressions, collections (Vector, Map, Set, Pair),
tuples, asynchronous programming (async), and others
http://hacklang.org/
advanced
201. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
major critics
lack of language formal specification
(in progress since 2014)
inconsistency – e.g., foreach, predefined function names
lack of native support for Unicode (excepting PHP 7)
lack of native support for multi-threading,
but possible via extensions like pthreads – pthreads.org
http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
http://www.quora.com/Criticism-of-PHP
206. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
case study: wikipedia
Aim: providing open content by using a group of
collaborative Web applications – wikis
Wikipedia Foundation
also maintains Wiktionary, Wikinews, Wikibooks,
Wikiquote, Wikisource, Wikiversity, Wikispecies,
Wikimedia Commons, Wikidata, Wikivoyage
http://en.wikipedia.org/wiki/Wikimedia_Foundation
207. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
case study: wikipedia
MediaWiki (wiki system used for all services)
PHP (platform that run MediaWiki on HHVM)
MySQL / MariaDB (main storage solution)
ImageMagick, DjVu, TeX, rsvg, ploticus, etc.
(for graphical content processing within MediaWiki)
nginx (Web server)
Linux Ubuntu (deployment platform)
provides also an API to be used by Web developers:
www.mediawiki.org/wiki/API:Main_page
208. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
case study: wikipedia
performance considerations:
Squid și Varnish (proxy & caching for HTML content)
Memcached (database query caching)
Apache Lucene (text indexing to facilitate search)
Ceph și Swift (redundant distributed storage solutions)
Linux Virtual Server – LVS (load balancing)
PowerDNS (C++ solution for DNS)
http://meta.wikimedia.org/wiki/Wikimedia_servers
advanced
212. Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
next episode:
a data model for Web: XML family
<event uri="https://stagiipebune.ro/">
<name xml:lang="ro">Stagii pe Bune</name>
<year>2017</year>
</event>
<participant>
<name uri="mailto:tux@info.uaic.ro">
Tuxy Pinguinnesscool</name>
<year kind="Bachelor">2</year>
</participant>