This session will demonstrate how to use the Zowe open source framework to extend modern devops tooling and practices to the mainframe and to enhance the mainframe developer experience. A follow-up to the overview session, the hosts will drill into the Zowe architecture while demoing key capabilities including the command line interface (CLI) and API Mediation Layer.
Organized by the Linux Foundation’s Open Mainframe Project, Zowe opens the mainframe to the next generation of talent. Join this interactive session to learn how to “un-silo” the mainframe to accelerate software delivery and drive true cross-platform applications.
The initiatives at the top of IT executives’ 2017 priority lists—scaling Agile, evolving DevOps, and moving towards Continuous Delivery—all have a tremendous impact to software testing. What does this mean for the manual testers and automation engineers of the world?
Click here to watch the full webinar on-demand for free:
http://bit.ly/2mc7ouZ
In this webinar, Tricentis' Ingo Philipp and Jonathan Morar, will start off by taking a look at why Continuous Testing is essential for Agile and DevOps, explore what changes will be required, then show you how you can start transitioning—without coding—with a practical how-to on Continuous Testing with Tricentis Tosca.
This session will demonstrate how to use the Zowe open source framework to extend modern devops tooling and practices to the mainframe and to enhance the mainframe developer experience. A follow-up to the overview session, the hosts will drill into the Zowe architecture while demoing key capabilities including the command line interface (CLI) and API Mediation Layer.
Organized by the Linux Foundation’s Open Mainframe Project, Zowe opens the mainframe to the next generation of talent. Join this interactive session to learn how to “un-silo” the mainframe to accelerate software delivery and drive true cross-platform applications.
The initiatives at the top of IT executives’ 2017 priority lists—scaling Agile, evolving DevOps, and moving towards Continuous Delivery—all have a tremendous impact to software testing. What does this mean for the manual testers and automation engineers of the world?
Click here to watch the full webinar on-demand for free:
http://bit.ly/2mc7ouZ
In this webinar, Tricentis' Ingo Philipp and Jonathan Morar, will start off by taking a look at why Continuous Testing is essential for Agile and DevOps, explore what changes will be required, then show you how you can start transitioning—without coding—with a practical how-to on Continuous Testing with Tricentis Tosca.
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
What is Dependency Injection in Spring Boot | EdurekaEdureka!
YouTube Link: https://youtu.be/O9mqe53syGc
** Microservices Architecture Training: https://www.edureka.co/microservices-... **
This Edureka tutorial on "What is Dependency Injection" will give you an introduction to dependency injection and also show a practical implementation of dependency injection with Spring Boot.
In this PPT, you will learn the following:
What is Dependency Injection?
Inversion of Control
Types of Dependency Injection
Benefits of Dependency Injection
Implement Dependency Injection using Spring Boot
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Page Object Model and Implementation in Selenium Zoe Gilbert
There are various frameworks that have been used by the IT industry for robust, easy maintenance, and to automate their applications to make them flexible and reusable. Page Object Model is one of the frameworks that have been covered here in this blog step by step clearly to help you understand.
In this presentation, I will be having a closer look at how JVM works and how the JVM compilation process looks like. I will also mention GraalVM and its impact on the JVM.
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
What is Dependency Injection in Spring Boot | EdurekaEdureka!
YouTube Link: https://youtu.be/O9mqe53syGc
** Microservices Architecture Training: https://www.edureka.co/microservices-... **
This Edureka tutorial on "What is Dependency Injection" will give you an introduction to dependency injection and also show a practical implementation of dependency injection with Spring Boot.
In this PPT, you will learn the following:
What is Dependency Injection?
Inversion of Control
Types of Dependency Injection
Benefits of Dependency Injection
Implement Dependency Injection using Spring Boot
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Page Object Model and Implementation in Selenium Zoe Gilbert
There are various frameworks that have been used by the IT industry for robust, easy maintenance, and to automate their applications to make them flexible and reusable. Page Object Model is one of the frameworks that have been covered here in this blog step by step clearly to help you understand.
In this presentation, I will be having a closer look at how JVM works and how the JVM compilation process looks like. I will also mention GraalVM and its impact on the JVM.
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...Trivadis
Continuous Integration (CI) is existing in the frontend development for quite some time and is part of the daily standard. As part of the PL/SQL development CI is only slightly developed as for many developers it shows up being expensive and complicated. Using Unit-Test errors are detected in an early stage and speeds up the development of error-free software. My presentation will demonstrate the advantages of the continuous quality assurance approach as well as introducing a method being implemented at VW FS for automating unit testing and quality assurance
An introductory presentation by Naresh Jain on the essence of Being Agile vs. Following Agile and why being Agile is important? Naresh also shows an evolution of Agile methods over the last 11 years and the future of Agile. Also take a sneak preview into what challenges an organizations may face when trying to be agile?
Agile Methods and Data Warehousing (2016 update)Kent Graziano
This presentation takes a look at the Agile Manifesto and the 12 Principles of Agile Development and discusses how these apply to Data Warehousing and Business Intelligence projects. Several examples and details from my past experience are included. Includes more details on using Data Vault as well. (I gave this presentation at OUGF14 in Helsinki, Finland and again in 2016 for TDWI Nashville.)
TDD - Test Driven Dvelopment | Test First DesignQuang Nguyễn Bá
This presentation introduce to you what is TDD, the RGR concept in TDD and what is the benefits of TDD.
This presentation have been created internally for the Software Team in Hyperlogy
Big Data Testing : Automate theTesting of Hadoop, NoSQL & DWH without Writing...RTTS
Testing of Hadoop, NoSQL and Data Warehouses Visually
-----------------------------------------------------------------------------
We just made automated data testing really easy. Automate your Big Data testing visually, with no programming needed.
See how to automate Hadoop, No SQL and Data Warehouse testing visually, without writing any SQL or HQL. See how QuerySurge, the leading Big Data testing solution, provides novices and non-technical team members with a fast & easy way to be productive immediately while speeding up testing for team members skilled in SQL/HQL.
This webinar is geared towards:
- Big Data & Data Warehouse Architects, ETL Developers
- ETL Testers, Big Data Testers
- Data Analysts
- Operations teams
- Business Intelligence (BI) Architects
- Data Management Officers & Directors
You will learn how to:
• Improve your Data Quality
• Accelerate your data testing cycles
• Reduce your costs & risks
• Realize a huge ROI
Testing Big Data: Automated Testing of Hadoop with QuerySurgeRTTS
Are You Ready? Stepping Up To The Big Data Challenge In 2016 - Learn why Testing is pivotal to the success of your Big Data Strategy.
According to a new report by analyst firm IDG, 70% of enterprises have either deployed or are planning to deploy big data projects and programs this year due to the increase in the amount of data they need to manage.
The growing variety of new data sources is pushing organizations to look for streamlined ways to manage complexities and get the most out of their data-related investments. The companies that do this correctly are realizing the power of big data for business expansion and growth.
Learn why testing your enterprise's data is pivotal for success with big data and Hadoop. Learn how to increase your testing speed, boost your testing coverage (up to 100%), and improve the level of quality within your data - all with one data testing tool.
What is a Data Warehouse and How Do I Test It?RTTS
ETL Testing: A primer for Testers on Data Warehouses, ETL, Business Intelligence and how to test them.
Are you hearing and reading about Big Data, Enterprise Data Warehouses (EDW), the ETL Process and Business Intelligence (BI)? The software markets for EDW and BI are quickly approaching $22 billion, according to Gartner, and Big Data is growing at an exponential pace.
Are you being tasked to test these environments or would you like to learn about them and be prepared for when you are asked to test them?
RTTS, the Software Quality Experts, provided this groundbreaking webinar, based upon our many years of experience in providing software quality solutions for more than 400 companies.
You will learn the answer to the following questions:
• What is Big Data and what does it mean to me?
• What are the business reasons for a building a Data Warehouse and for using Business Intelligence software?
• How do Data Warehouses, Business Intelligence tools and ETL work from a technical perspective?
• Who are the primary players in this software space?
• How do I test these environments?
• What tools should I use?
This slide deck is geared towards:
QA Testers
Data Architects
Business Analysts
ETL Developers
Operations Teams
Project Managers
...and anyone else who is (a) new to the EDW space, (b) wants to be educated in the business and technical sides and (c) wants to understand how to test them.
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...dotNet Miami
dotNet Miami - June 21, 2012: Presented by Richie Rump: Traditionally, Entity Framework has used a designer and XML files to define the conceptual and storage models. Now with Entity Framework Code First we can ditch the XML files and define the data model directly in code. This session will give an overview of all of the awesomeness that is Code First including Data Annotations, Fluent API, DbContext and the new Migrations feature. Be prepared for a fast moving and interactive session filled with great information on how to access your data.
Rails is a great Ruby-based framework for producing web sites quickly and effectively. Here are a bunch of tips and best practices aimed at the Ruby newbie.
Sample Questions The following sample questions are not in.docxtodd331
Sample Questions
The following sample questions are not inclusive and do not necessarily represent all of the types of
questions that comprise the exams. The questions are not designed to assess an individual's readiness to
take a certification exam.
SAS 9.4 Base Programming – Performance-based Exam
Practical Programming Questions:
Project 1:
This project will use data set sashelp.shoes.
Write a SAS program that will:
• Read sashelp.shoes as input.
• Create the SAS data set work.sortedshoes.
• Sort the sashelp.shoes data set:
o First by variable product in descending order.
o Second by variable sales in ascending order.
Run the program and answer the following questions:
Question 1: What is the value of the product variable in observation 148?
Answer: Slipper
Question 2: What is the value of the Region variable in observation 130?
Answer: Pacific
Project 2:
This project will use the data set sashelp.shoes.
Write a SAS program that will:
• Read sashelp.shoes as input.
• Create a new SAS data set, work.shoerange.
• Create a new character variable SalesRange that will be used to categorize the observations into
three groups.
• Set the value of SalesRange to the following:
o Lower when Sales are less than $100,000.
o Middle when Sales are between $100,000 and $200,000, inclusively.
o Upper when Sales are above $200,000.
Run the program, then use additional SAS procedures to answer the following questions:
Question 3: How many observations are classified into the “Lower” group?
Answer: 288
Question 4: What is the mean value of the Sales variable for observations in the “Middle” group? Round
your answer to the nearest whole number.
Answer: 135127
Project 3:
This project will work with the following program:
data work.lowchol work.highchol;
set sashelp.heart;
if cholesterol lt 200 output work.lowchol;
if cholesterol ge 200 output work.highchol;
if cholesterol is missing output work.misschol;
run;
This program is intended to:
• Divide the observations of sashelp.heart into three data sets, work.highchol, work.lowchol, and
work.misschol
• Only observations with cholesterol below 200 should be in the work.lowchol data set.
• Only Observations with cholesterol that is 200 and above should be in the work.highchol data
set.
• Observations with missing cholesterol values should only be in the work.misschol data set.
Fix the errors in the above program. There may be multiple errors in the program. Errors may be syntax
errors, program structure errors, or logic errors. In the case of logic errors, the program may not
produce an error in the log.
After fixing all of the errors in the program, answer the following questions:
Question 5: How many observations are in the work.highchol data set?
Answer: 3652
Question 6: How many observations are in the work.lowchol data set?
Answer: 1405
Standard Questions:
Que.
So, you know how to deploy your code, what about your database? This talk will go through deploying your database with LiquiBase and DBDeploy a non-framework based approach to handling migrations of DDL and DML.
Access Data from XPages with the Relational ControlsTeamstudio
Did you know that Domino and XPages allows for the easy access of relational data? These exciting capabilities in the Extension Library can greatly enhance the capability of your applications and allow access to information beyond Domino. Howard and Paul will discuss what you need to get started, what controls allow access to relational data, and the new @Functions available to incorporate relational data in your Server Side JavaScript programming.
2. What is dbFit?
• DbFit is a Poka-Yoke device for Database Development.
• DbFit is a set of FIT fixtures which enables FIT/FitNesse
tests to execute directly against a database.
• This enables developers to manipulate database
objects in a relational tabular form, making database
testing and management.
2
3. Features of DbFit
• Test Driven development for Database Development
• Integration testing, Regression testing for queries
and SQL statements
• Functional testing for stored procedures and
functions
• Automatic transaction control and various short-cuts
to make writing test scripts easier and more efficient
• Support for
– DB2, Oracle and SQL Server (java and .net versions)
– MySql 5 and Derby (only java).
3
4. Dbfit Picture (How DbFit works)
Fit Table
DbFit Fixtures
(i , o)
DataBase
i
o’
Db Developer
o ≠ o’
Test Runner
Output Table
i= input
o = expected output
o’ = actual output
User Story & Test Script
Using Wiki
Customer/
Analyst
4
5. Installing DbFit
• Install Java JRE 5 or later
• Install Microsoft's .NET Framework runtime 2 or later
• To use DbFit fixtures in your tests, download the
dbfit-dotnet-binaries package from
http://sourceforge.net/projects/dbfit.
• To install dbFit just unpack dbfitcomplete-XXX.zip
somewhere on your disk, and run startFitnesse.bat
(or startFitnesse.sh on Linux)
5
7. What is a Wiki?
A minimalist (simple) Content Management
System.
– Everyone can change every page.
– Changes are visible immediately.
– There are abbreviations for often used HTML
tags.
• Wiki will be used to write Test Script
Wikipedia …
7
8. WikiWord & WikiPage
• Wiki word is Pascal Case: an alternating pattern of upper and
lower case letters.
• A wiki word is a string of two more more capital letters with
lower case letters or numbers between them.
Word WikiWord?
BobMartin Yes
SalesReport1972 Yes
USAforEver No
Usa1776 No
RcM Yes
ItDoesNotMatter Yes• A wiki word helps to create & Link a Wiki Page
• A WikiWord like Text in a wiki page is considered as a page link.
8
9. Character Formatting
Format Name Syntax Remark
Comment #text Can also be used to comment-out markup
Italic ‘’text’’
Bold ‘’’text’’’
Style !style_(text) The style of text will be the CSS class <someStyle>
Strike-through --text--
"As-is"/escaping !-text -! Can also be used to insert HTML tags directly
"As-is" !<text>! Will escape HTML tags so they display in plain text.
Alias Link [[TEXT][PagePATH]] 9
10. Line & Block Formatting
Format Name Syntax Remark
Horizontal line ---- Thinnest
Note !note text
Headings
!1 largest heading text
!2 middle heading text
!3 smaller heading text
and so on up to !6
Centered !c text
Formatted "as
is"
{{{text}}} note: causes extra line afterward
"As-is"/escaping !-text-! Can also be used to insert HTML tags directly
Alias Link [[TEXT][PagePATH]]
10
11. Collapsible Block
Format Name Syntax Remark
Expanded
!* [title]
multi-line wiki text
*!
Collapsed !*> [title]
multi-line wiki text
*!
Invisible !*< [title]
multi-line wiki text
*!
useful for hidding define's, etc.
11
12. Links & References
Page links
Format Name Syntax Remark
from root
.RootPage[.ChildPage]
Sibling
SameLevelPage[.ChildPage]
child or
symbolic
>ChildPage[.ChildPage]
12
13. Writing Fit table using Wiki
!| RowFixtureTest |
|name |post code |
|John Smith |SW4 66Z |
|Michael Jordan | NE1 8AT |
Fig: Wiki Fig: Fit table
NB: The exclamation mark before the first cell in the table header tells FitNesse not to
convert it to a page link
13
16. What is DbFit Fixture?
• A fixture is an interface between the test
instrumentation (the Fit framework), test cases
(Fit tables), and the system under test.
• Fixtures are procedures/functions/classes.
• In general, there is a one-to-one mapping
between a Fit table and fixture.
DbFit Fixtures
DataBase
(System Under Test)
Test Runner
(Fit/Fitnesse)Test cases
16
18. Query Fixture
• Query tests lists of objects using SQL Query
results.
• Specify query as the first fixture parameter, after
the Query command.
• The second table row contains column names,
and all subsequent rows contain data for the
expected results.
!|query| SELECT AccountNo , AccountName, OpeningBalance FROM tb_Accounts|
|AccountNo|AccountName |OpeningBalance|
|1001 |Imtiaz Ahamed|5000.00 |
18
19. Ordered Query Fixture
• Query ignores row order by default. In flow mode, the Ordered Query command provides order
checking.
• This will fail because the order is wrong
|Ordered Query|SELECT n FROM ( SELECT 1 as n union select 2 union select 3 ) x |
|n|
|2|
|1|
|3|
• This will pass because the order is correct
|Ordered Query|SELECT n FROM ( SELECT 1 as n union select 2 union select 3 ) x|
|n|
|1|
|2|
|3|
Self Study
19
20. Use Query Fixrue, If your sp produces a ResultSet
!|query |sp_CurrentBalance '1001'|
|AccountNo|Name |Amount|
|1001| Imtiaz Ahamed |4000.00|
20
21. Fixture Symbol
• Symbols are global variables that can be accessed using a simple syntax.
• Symbols are stored in a static collection inside the Fixture class
• To store a value of an output column into a symbol named player, write
>>player into the cell.
• To read a symbol value, and store it into an input column, use <<player.
• Think of << and >> as arrows pointing the way.
|Query | select 'Babu' as Name|
|Name?|
|>>MyName|
|Query | select @MyName as Name|
|Name?|
|Babu|
21
22. Store Query Fixture
• Store Query reads out query results and stores them
into a Fixture symbol for later use.
• Specify the full query as the first argument and the
symbol name as the second argument (without >>).
• You can then use this stored result set as a parameter
of the Query command later:
!|Store Query|select n from ( select 1 as n union select 2 ) x|firsttable|
!|query|<<firsttable|
|n|
|1|
|2|
22
23. CompareStoredQueries Fixture
• CompareStoredQueries compares two previously stored query results
!|insert|testtbl|
|n|name|
|1|NAME1|
|3|NAME3|
|2|NAME2|
!|Store Query|select * from testtbl|fromtable|
!|Store Query|select n, dbo.concat('NAME',n) as name from ( select 1 as n
union select 3 union select 2) x|fromdual|
!|compare stored queries|fromtable|fromdual|
|name|n?|
Self Study
23
24. Insert Fixture
• Insert builds an insert command from the parameters in a data table (and
executes the insert once for each row of the table).
• The view or table name is given as the first fixture parameter.
• The second row contains column names, and all subsequent rows contain
data to be inserted.
|Insert|Test_DBFit|
|name|luckyNumber|
|pera|1|
|nuja|2|
|nnn|3|
|Query|Select * from Test_DBFit|
|name|lucky Number|
|pera|1|
|nuja|2| |nnn|3|
24
25. Storing auto-generated values
!3 Use ? to mark columns that should return values
!|Insert|users|
|username|name|userid?|
|pera|Petar Detlic|>>peraid|
|Mika|Mitar Miric|>>mikaid|
|Zeka|Dusko Dugousko|>>zeka|
|DevNull|null|>>nllid|
!3 Confirm that IDs are the same as in the database
!|Ordered Query|Select * from users|
|username|name|userid|
|pera|Petar Detlic|<<peraid|
|Mika|Mitar Miric|<<mikaid|
|Zeka|Dusko Dugousko|<<zekaid|
|DevNull|null|<<nllid|
!3 Stored values can be used in queries directly
|Query|Select * from users where userid=@zekaid|
|username|name|userid|
|Zeka|Dusko Dugousko|<<zekaid|
25
26. Update
• Update allows you to quickly script data
updates.
• Columns ending with = are used to update
records (cell specifies new data value).
• Columns without = on the end are used to
select rows (cell specifies expected column
value for the select part of update command).
Self Study
26
27. Update
This example updates the username column where the name matches arthur dent .
|insert|users|
|name|username|
|arthur dent|adent|
|ford prefect|fpref|
|zaphod beeblebrox|zaphod|
|update|users|
|username=|name|
|adent2|arthur dent|
|query|select * from users|
|name|username|
|arthur dent|adent2|
|ford prefect|fpref|
|zaphod beeblebrox|zaphod|
27
28. Execute Fixture
• Execute executes any SQL statement.
• You can use query parameters in the DB-specific syntax (eg. @paramname for
SQLServer and MySQL, and :paramname for Oracle).
!3 to execute statements, use the 'execute' command
!|Execute|Insert into Test_DBFit values (‘Aftab Ahmed',80)|
|Set parameter|name|Imtiaz Ahmed|
|Execute|Insert into Test_DBFit values (@name,10)|
!|Query|Select * from Test_DBFit|
|Name|Lucky Number|
|Darth Maul|10|
|Obi Wan|80|
28
29. Execute Fixture (Cont)
!|Insert|Users|
|username|name|UserId?|
|pete|Peter Pan|>>user1|
|mike|Michael Jordan|>>user2|
!|Execute| Update Users set name='Michael Jackson' where userid=@user2|
!|Query|Select * from users|
|userid|username?|name?|
|<<user1|pete|Peter Pan|
|<<user2|mike|Michael Jackson|
29
30. ExecuteProcedure
• It executes a stored procedure or function for each row of
data table, binding input/output parameters to columns.
• !3 execute procedure allows multiple parameters, with blanks in names
• !|Execute Procedure|ConcatenateStrings|
• |first string|second string|concatenated?|
• |Hello|World|Hello World|
• |Word|Prefect|Word Prefect|
• !3 IN/OUT params need to be specified twice
• |execute procedure|Multiply|
• |factor|val|val?|
• |5|10|50|
30
31. ExecuteProcedure (Cont)
• !3 If there are no parameters, Execute
Procedure needs just one row
• !|Execute Procedure|MakeUser|
• |query|select * from users|
• |name|username|
• |user1|fromproc|
31
32. ExecuteProcedure (Cont)
• !3 Stored functions are treated like procedures - just put ? in the result
column header
• !|Execute Procedure|ConcatenateF|
• |first string|second string|?|
• |Hello|World|Hello World|
• |Ford|Prefect|Ford Prefect|
• !3 ? does not have to appear on the end (although it is a good practice to
put it there)
• !|Execute Procedure|ConcatenateF|
• |second string|?|first string|
• |World|Hello World|Hello|
• |Prefect|Ford Prefect|Ford|
32
33. Inspect Fixture
• Inspect extracts meta-data information from the database, and print it out
in a form which can be easily converted into a test.
• It can work in three modes: Query, Table or Procedure.
!3 Inspect Procedure prints procedure arguments to be used for Execute procedure
!|Inspect Procedure|ConcatenateStrings|
!3 Inspect Table prints table/view columns to be used for Insert/Update/Query Procedure
!|Inspect Table|users|
!3 Inspect query prints columns and data
|Insert|users|
|name|username|
|david haselhoff|dhoff|
|arthur dent|adent|
!|Inspect query|select * from users|
33
34. References
• Test Driven Database Development With DbFit -
Marisa Seal, Gojko Adzic
• Test Driven .NET Development with FitNesse
-Gojko Adzic
• http://fitnesse.info/dbfit
• http://www.methodsandtools.com/tools/tools.p
hp?fitnesse
• http://working-
thought.blogspot.com/2008/10/connecting-to-
oracle-grid-with-dbfit.html
34