Case study comparison - luckylittle/calibre-plugin-remove-extension GitHub Wiki
The goal of this page is to compare retail EPUB
eBook Hands-On Machine Learning on Google Cloud Platform by Packt Publishing with the eBook from O'Reilly Safari Books Online exported using my method.
- Retail ebook:
23 185 398
(smaller) - Safari ebook:
23 947 854
(bigger)
- Retail ebook:
fb8288fe79474c4a591e579a92f1beb0
- Safari ebook: irrelevant
- Retail ebook:
.
├── assets/
├── css/
└── META-INF/
- Safari ebook:
.
├── 9781788393485
├── css
├── images
│ └── 9781788393485
│ └── assets
│ └── assets
└── META-INF
- Retail ebook:
. <-- *.xhtml (310), book.opf, mimetype, toc.ncx
├── assets/ <-- *.png (366), *.jpg (3)
├── css/ <-- style.css
└── META-INF/ <-- com.apple.ibooks.display-options.xml, container.xml
- Safari ebook:
. <-- metadata.opf, mimetype, toc.ncx
├── 9781788393485 <-- *_xhtml (310)
├── css <-- style.css
├── images
│ └── 9781788393485
│ └── assets
│ └── assets <-- *.png (364), *.jpg (3)
└── META-INF <-- container.xml
Safari images have watermarks, but the filenames are the same. Retail ebook has 2 more pictures than Safari eBook:
0cdcd1f5-7414-42c6-a423-d76aa0154530.png
:
4f8a4031-ac43-4b35-8f26-cc11cdaa9757.png
:
Note: Both of these images are linked in book.opf
and css/style.css
Both eBooks have 310 HTML pages/files and they have exactly the same names.
1,14c1,4
< <?xml version="1.0" encoding="utf-8" standalone="no"?>
< <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="en" lang="en">
< <head>
< <title>Hands-On Machine Learning on Google Cloud Platform</title>
< <meta charset="utf-8"/>
< <link rel="stylesheet" href="css/style.css" type="text/css" />
< <meta name="EPB-UUID" content="978-1-78839-887-9" />
< </head>
< <body>
< <figure id="cover-image">
< <img class="cover-image" src="assets/ebf1b74c-35fc-43c1-967d-f1f0d15bb9c6.png" alt="Hands-On Machine Learning on Google Cloud Platform" />
< </figure>
< </body>
< </html>
---
> <?xml version='1.0' encoding='utf-8'?>
> <html xmlns="http://www.w3.org/1999/xhtml"><head/><body><content id="9781788393485/cover_xhtml" format="xhtml" nodetypeset="all" previewonerror="true"><figure id="cover-image">
> <img src="../images/9781788393485/assets/assets/ebf1b74c-35fc-43c1-967d-f1f0d15bb9c6.png" class="epub__cover-image" alt="Hands-On Machine Learning on Google Cloud Platform"/>
> </figure></content></body></html>
\ No newline at end of file
1,11c1,2
< <?xml version="1.0" encoding="UTF-8" standalone="no"?>
< <!DOCTYPE html>
< <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
< <head>
< <title>Title Page</title>
< <link rel="stylesheet" href="css/style.css" type="text/css"/>
< <meta charset="utf-8"/>
< </head>
<
< <body>
< <section>
---
> <?xml version='1.0' encoding='utf-8'?>
> <html xmlns="http://www.w3.org/1999/xhtml"><head/><body><content id="9781788393485/ebd643a8_3d53_4f07_a4a7_d592d250026e_xhtml" format="xhtml" nodetypeset="all" previewonerror="true"><section>
16,20c7,11
< <div class="title-page-name"><strong>Hands-On Machine Learning on Google Cloud Platform<br />
< <br />
< <br /></strong>
< <p> </p>
< <p> </p>
---
> <div class="epub__title-page-name"><strong><a name="Machine Learning"></a>Hands-On Machine Learning on Google Cloud Platform<br/>
> <br/>
> <br/></strong>
> <p> </p>
> <p> </p>
22,48c13,39
< <div class="title-page-tagline">Implementing smart and efficient analytics using Cloud ML Engine</div>
< <p class="mce-root"></p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <div class="title-page-author-name"><span>Giuseppe Ciaburro</span></div>
< <div class="title-page-author-name"><span>V Kishore Ayyadevara</span></div>
< <div class="title-page-author-name"><span>Alexis Perrier</span></div>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p> </p>
< <p class="mce-root"></p>
< <p class="mce-root"><img class="alignnone size-full wp-image-110 image-border" src="assets/61c0e301-8028-4d91-ab0b-cdb8b5cd70b5.png" style="width:11.83em;height:4.00em;" /></p>
< <div class="CDPAlignLeft CDPAlign"><strong><strong>BIRMINGHAM - MUMBAI</strong></strong></div>
< <p class="mce-root"></p>
---
> <div class="epub__title-page-tagline"><a name="analytics using"></a>Implementing smart and efficient analytics using Cloud ML Engine</div>
> <p class="epub__mce-root"></p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <div class="epub__title-page-author-name"><span>Giuseppe Ciaburro</span></div>
> <div class="epub__title-page-author-name"><span>V Kishore Ayyadevara</span></div>
> <div class="epub__title-page-author-name"><span>Alexis Perrier</span></div>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p> </p>
> <p class="epub__mce-root"></p>
> <p class="epub__mce-root"><img src="../images/9781788393485/assets/assets/61c0e301-8028-4d91-ab0b-cdb8b5cd70b5.png" class="epub__alignnone epub__size-full epub__wp-image-110 epub__image-border" style="width:11.83em;height:4.00em;"/></p>
> <div class="epub__CDPAlignLeft epub__CDPAlign"><strong><strong>BIRMINGHAM - MUMBAI</strong></strong></div>
> <p class="epub__mce-root"></p>
54,57c45
< </section>
< </body>
<
< </html>
---
> </section></content></body></html>
\ No newline at end of file
1,11c1,2
< <?xml version="1.0" encoding="UTF-8" standalone="no"?>
< <!DOCTYPE html>
< <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
< <head>
< <title>Roles and permissions</title>
< <link rel="stylesheet" href="css/style.css" type="text/css"/>
< <meta charset="utf-8"/>
< </head>
<
< <body>
< <section>
---
> <?xml version='1.0' encoding='utf-8'?>
> <html xmlns="http://www.w3.org/1999/xhtml"><head/><body><content id="9781788393485/0034f596_c459_4f99_a08c_aa1b3e3c989b_xhtml" format="xhtml" nodetypeset="all" previewonerror="true"><section>
14c5
< <h1 class='header-title'>Roles and permissions</h1>
---
> <h1 class="epub__header-title"><a name="Roles and"></a>Roles and permissions</h1>
19c10
< <p>By default, when you create a new project, your Google account is set as the owner of the project with full permissions and access across all the project's resources and billing. In the roles section of the IAM page, <a href="https://console.cloud.google.com/iam-admin/roles/">https://console.cloud.google.com/iam-admin/roles/</a>, you can add people to your project and define the role for that person. You can also create new custom roles on a service-by-service basis or allocate predefined roles organized by the services.</p>
---
> <p><a name="a new"></a>By default, when you create a new project, your Google account is set as the owner of the project with full permissions and access across all the project's resources and billing. In the roles section of the IAM page, <a href="https://console.cloud.google.com/iam-admin/roles/" target="_new">https://console.cloud.google.com/iam-admin/roles/</a><a name="role for"></a>, you can add people to your project and define the role for that person. You can also create new custom roles on a service-by-service basis or allocate predefined roles organized by the services.</p>
21c12
< <li>Go to the IAM page and select the project you just created, if it's not already selected: <a href="https://console.cloud.google.com/iam-admin/iam/project">https://console.cloud.google.com/iam-admin/iam/project</a>. You should see your Google account email as the owner of the project.</li>
---
> <li><a name="to the"></a>Go to the IAM page and select the project you just created, if it's not already selected: <a href="https://console.cloud.google.com/iam-admin/iam/project" target="_new">https://console.cloud.google.com/iam-admin/iam/project</a><a name="the owner"></a>. You should see your Google account email as the owner of the project.</li>
24,26c15,17
< <li>Click on <span class="packt_screen">+ ADD</span>.</li>
< <li>Input the person's Google account email (it has to correspond to an active Google account).</li>
< <li>Select all the roles for that person, as shown in the following screenshot:</li>
---
> <li>Click on <span class="epub__packt_screen">+ ADD</span>.</li>
> <li><a name="correspond to"></a>Input the person's Google account email (it has to correspond to an active Google account).</li>
> <li><a name="as shown"></a>Select all the roles for that person, as shown in the following screenshot:</li>
30,31c21,22
< <div class="CDPAlignCenter CDPAlign"><img src="assets/f0ae6b01-d93d-489c-9f76-f5058ce32cc2.png" style="width:43.00em;height:27.17em;" /></div>
< <p>The role menu is organized by services and administrative domain (billing, logging, and monitoring), and for each service, by level of access. Although this differs depending on the service, you can <span>roughly </span>choose between four types of roles:</p>
---
> <div class="epub__CDPAlignCenter epub__CDPAlign"><img src="../images/9781788393485/assets/assets/f0ae6b01-d93d-489c-9f76-f5058ce32cc2.png" style="width:43.00em;height:27.17em;"/></div>
> <p><a name="role menu"></a>The role menu is organized by services and administrative domain (billing, logging, and monitoring), and for each service, by level of access. Although this differs depending on the service, you can <span>roughly </span><a name="between four"></a>choose between four types of roles:</p>
35c26
< <li><strong>Editor/creator</strong>: Full control except for user management, SSL certificates, and deleting instances</li>
---
> <li><strong>Editor/creator</strong><a name="and deleting"></a>: Full control except for user management, SSL certificates, and deleting instances</li>
38,40c29,31
< <p>You can also create new custom made roles from the roles IAM page at <a href="https://console.cloud.google.com/iam-admin/roles/project?project=packt-gcp">https://console.cloud.google.com/iam-admin/roles/project?project=packt-gcp</a>.</p>
< <p>As you allocate new resources to your project, the platform creates the adequate and required roles and permissions between the services. You can view and manage these access permissions and associated roles from the info panel on the right of the manage resource page or the IAM page for the given project. Google does a great job of generating the right access levels, which makes the platform-user's life easier.</p>
< <div class="packt_infobox"><span class="packt_screen">Our Google Cloud project</span><em><br /></em>For this book I created the <kbd>packt-gcp</kbd> project. Since the name was unique across all other GCP projects, the project ID is also <kbd>packt-gcp</kbd>. And all the resources are created in the <span class="packt_screen">us-central1</span> zone.</div>
---
> <p><a name="You can"></a>You can also create new custom made roles from the roles IAM page at <a href="https://console.cloud.google.com/iam-admin/roles/project?project=packt-gcp" target="_new">https://console.cloud.google.com/iam-admin/roles/project?project=packt-gcp</a>.</p>
> <p><a name="resources to"></a>As you allocate new resources to your project, the platform creates the adequate and required roles and permissions between the services. You can view and manage these access permissions and associated roles from the info panel on the right of the manage resource page or the IAM page for the given project. Google does a great job of generating the right access levels, which makes the platform-user's life easier.</p>
> <div class="epub__packt_infobox"><span class="epub__packt_screen">Our Google Cloud project</span><em><br/></em>For this book I created the <kbd>packt-gcp</kbd><a name="project ID"></a> project. Since the name was unique across all other GCP projects, the project ID is also <kbd>packt-gcp</kbd><a name="all the"></a>. And all the resources are created in the <span class="epub__packt_screen">us-central1</span> zone.</div>
46,49c37
< </section>
< </body>
<
< </html>
---
> </section></content></body></html>
\ No newline at end of file
1,160c1,135
< /*
< this style is applied everywhere in the admin pages of WP where the post is. (@dfd)
< When exporting (publishing) this is the 1st CSS and will be overriden by epdf.css then pdf.css (@dfd)
< ================== */
<
< /* Chapter title */
<
< .chapter-number{
< font-weight: bold;
< font-size: 8.3em;
< text-align: right;
< font-family: symbol;
< }
< .chapter-title {
< font-size:30pt;
< text-align: right;
< }
<
< /* Packt Text and Paragraph styles */
<
< h1, .packt_head1 {
< font-size: 16pt;
< font-weight: bold;
< }
< h2, .packt_head2 {
< font-size: 14pt;
< font-weight: bold;
< }
< h3, .packt_head3 {
< font-size: 13pt;
< font-weight: bold;
< }
< h4, .packt_head4 {
< font-size: 11pt;
< font-weight: normal;
< font-style: italic;
< }
< ul, .packt_bullet {
< font-weight: normal;
< list-style-type:disc;
< }
< ol, .packt_numbered {
< font-weight: normal;
< }
< .packt_normal {
< font-weight: normal;
< }
< code, .packt_code, .packt_codeblock, pre {
< font-family: monospace;
< font-size: 9pt;
< font-weight: normal;
<
< border-left: 1px solid black;
< margin-left: 20px;
< padding-left: 5px;
< display: block;
< margin-bottom: 0.12in;
< }
< .packt_figref {
< font-size: 10pt;
< font-weight: normal;
< }
< q, .packt_quote {
< font-size: 11pt;
< font-weight: normal;
< color:black;
< font-style:italic;
< }
< .packt_tip {
< font-size: 11pt;
< font-weight: normal;
< color:black;
< font-style:italic;
<
< /* CDP-282 */
< background-image: url('../assets/4f8a4031-ac43-4b35-8f26-cc11cdaa9757.png');
< background-position: left center;
< background-repeat: no-repeat;
< background-size: 0.6in;
< margin-left: 20px;
< margin-right: 20px;
< padding-left: 0.7in;
< min-height: 0.75in;
< /* END OF CDP-282 */
< }
< .packt_infobox {
< font-size: 11pt;
< font-weight: normal;
< color:black;
< font-style:italic;
<
< /* CDP-282 */
< background-image: url('../assets/0cdcd1f5-7414-42c6-a423-d76aa0154530.png');
< background-position: left center;
< background-repeat: no-repeat;
< background-size: 0.6in;
< margin-left: 20px;
< margin-right: 20px;
< padding-left: 0.7in;
< min-height: 0.75in;
< /* END OF CDP-282 */
< }
< kbd, .packt_action {
< font-family: monospace;
< font-size: 9pt;
< font-weight: normal;
< }
< .packt_italics {
< font-size: 11pt;
< font-weight: normal;
< color:black;
< font-style:italic;
< }
< a, .packt_url {
< font-family: monospace;
< font-size: 9pt;
< font-weight: normal;
< text-decoration: none;
< word-break: break-all;
< }
<
< var, .packt_inlinemsgid {
< display:none;
< }
<
< p, .packt_para {
< text-align: left;
< font-size:11pt;
< line-height:17px;
< }
<
< .underline {
< text-decoration: underline;
< }
<
<
< .CDPImageAlign {
< width: 100%;
< display: block;
< }
< .CDPAlign {
< width: 100%;
< display: block;
< margin-top: 0.18in;
< margin-bottom:0.18in;
< }
< .CDPAlignCenter {
< text-align: center;
< }
< .CDPAlignLeft {
< text-align: left;
< }
< .CDPAlignRight {
< text-align: right;
< }
<
< .fm-editor-equation {
< border: none;
< }
< nav a.section {
---
> #HtmlView .epub__chapter-number {
> font-weight: bold;
> font-size: 8.3em;
> text-align: right;
> font-family: symbol;
> }
> #HtmlView .epub__chapter-title {
> font-size: 30pt;
> text-align: right;
> }
> #HtmlView h1, #HtmlView .epub__packt_head1 {
> font-size: 16pt;
> font-weight: bold;
> }
> #HtmlView h2, #HtmlView .epub__packt_head2 {
> font-size: 14pt;
> font-weight: bold;
> }
> #HtmlView h3, #HtmlView .epub__packt_head3 {
> font-size: 13pt;
> font-weight: bold;
> }
> #HtmlView h4, #HtmlView .epub__packt_head4 {
> font-size: 11pt;
> font-weight: normal;
> font-style: italic;
> }
> #HtmlView ul, #HtmlView .epub__packt_bullet {
> font-weight: normal;
> list-style-type: disc;
> }
> #HtmlView ol, #HtmlView .epub__packt_numbered {
> font-weight: normal;
> }
> #HtmlView .epub__packt_normal {
> font-weight: normal;
> }
> #HtmlView code, #HtmlView .epub__packt_code, #HtmlView .epub__packt_codeblock, #HtmlView pre {
> font-family: monospace;
> font-size: 9pt;
> font-weight: normal;
> border-left: 1px solid black;
> margin-left: 20px;
> padding-left: 5px;
> display: block;
> margin-bottom: 0.12in;
> }
> #HtmlView .epub__packt_figref {
> font-size: 10pt;
> font-weight: normal;
> }
> #HtmlView q, #HtmlView .epub__packt_quote {
> font-size: 11pt;
> font-weight: normal;
> color: black;
> font-style: italic;
> }
> #HtmlView .epub__packt_tip {
> font-size: 11pt;
> font-weight: normal;
> color: black;
> font-style: italic;
> background-position: left center;
> background-repeat: no-repeat;
> background-size: 0.6in;
> margin-left: 20px;
> margin-right: 20px;
> padding-left: 0.7in;
> min-height: 0.75in;
> }
> #HtmlView .epub__packt_infobox {
> font-size: 11pt;
> font-weight: normal;
> color: black;
> font-style: italic;
> background-position: left center;
> background-repeat: no-repeat;
> background-size: 0.6in;
> margin-left: 20px;
> margin-right: 20px;
> padding-left: 0.7in;
> min-height: 0.75in;
> }
> #HtmlView kbd, #HtmlView .epub__packt_action {
> font-family: monospace;
> font-size: 9pt;
> font-weight: normal;
> }
> #HtmlView .epub__packt_italics {
> font-size: 11pt;
> font-weight: normal;
> color: black;
> font-style: italic;
> }
> #HtmlView a, #HtmlView .epub__packt_url {
> font-family: monospace;
> font-size: 9pt;
> font-weight: normal;
> text-decoration: none;
> word-break: break-all;
> }
> #HtmlView var, #HtmlView .epub__packt_inlinemsgid {
> display: none;
> }
> #HtmlView p, #HtmlView .epub__packt_para {
> text-align: left;
> font-size: 11pt;
> line-height: 17px;
> }
> #HtmlView .epub__underline {
> text-decoration: underline;
> }
> #HtmlView .epub__CDPImageAlign {
> width: 100%;
> display: block;
> }
> #HtmlView .epub__CDPAlign {
> width: 100%;
> display: block;
> margin-top: 0.18in;
> margin-bottom: 0.18in;
> }
> #HtmlView .epub__CDPAlignCenter {
> text-align: center;
> }
> #HtmlView .epub__CDPAlignLeft {
> text-align: left;
> }
> #HtmlView .epub__CDPAlignRight {
> text-align: right;
> }
> #HtmlView .epub__fm-editor-equation {
> border: none;
> }
> #HtmlView nav a.epub__section {
165,168c140
<
< /* START OF CDP-1645 */
<
< body table {
---
> body #HtmlView table {
171,172c143
<
< body table td {
---
> body #HtmlView table td {
176,177c147
<
< .header-title {
---
> #HtmlView .epub__header-title {
180,181c150
<
< img.inline-image {
---
> #HtmlView img.epub__inline-image {
184,275c153,215
<
< .chapter-title {
< font-size: 2.5em;
< }
<
< h1,
< .packt_head1 {
< font-size: 2em;
< }
<
< h2,
< .packt_head2 {
< font-size: 1.5em;
< }
<
< h3,
< .packt_head3 {
< font-size: 1.17em;
< }
<
< h4,
< .packt_head4 {
< font-size: 1em;
< }
<
< code,
< .packt_code,
< .packt_codeblock,
< pre {
< font-size: 0.8em;
< margin-left: 1.25em;
< padding-left: 0.3em;
< margin-bottom: 0.01em;
< }
<
< .packt_figref {
< font-size: 0.62em;
< }
<
< q,
< .packt_quote {
< font-size: 0.68em;
< }
<
< .packt_tip {
< font-size: 0.68em;
< background-size: 2.5em;
< margin-left: 1.25em;
< margin-right: 1.25em;
< padding-left: 3em;
< min-height: 2.5em;
< }
<
< .packt_infobox {
< font-size: 0.68em;
<
< background-size: 2.5em;
< margin-left: 1.25em;
< margin-right: 1.25em;
< padding-left: 3em;
< min-height: 2.5em;
< }
<
< kbd,
< .packt_action {
< font-size: 0.75em;
< }
<
< .packt_italics {
< font-size: 0.9em;
< }
<
< a,
< .packt_url {
< font-size: 0.7em;
< }
<
< p,
< .packt_para {
< font-size: 1em;
< line-height: 1.06em;
< }
<
<
< .CDPImageAlign {
< max-width: 100%;
< max-height: 100%;
< }
<
< .CDPAlign {
< margin-top: 0.01em;
< margin-bottom:0.01em;
---
> #HtmlView .epub__chapter-title {
> font-size: 2.5em;
> }
> #HtmlView h1, #HtmlView .epub__packt_head1 {
> font-size: 2em;
> }
> #HtmlView h2, #HtmlView .epub__packt_head2 {
> font-size: 1.5em;
> }
> #HtmlView h3, #HtmlView .epub__packt_head3 {
> font-size: 1.17em;
> }
> #HtmlView h4, #HtmlView .epub__packt_head4 {
> font-size: 1em;
> }
> #HtmlView code, #HtmlView .epub__packt_code, #HtmlView .epub__packt_codeblock, #HtmlView pre {
> font-size: 0.8em;
> margin-left: 1.25em;
> padding-left: 0.3em;
> margin-bottom: 0.01em;
> }
> #HtmlView .epub__packt_figref {
> font-size: 0.62em;
> }
> #HtmlView q, #HtmlView .epub__packt_quote {
> font-size: 0.68em;
> }
> #HtmlView .epub__packt_tip {
> font-size: 0.68em;
> background-size: 2.5em;
> margin-left: 1.25em;
> margin-right: 1.25em;
> padding-left: 3em;
> min-height: 2.5em;
> }
> #HtmlView .epub__packt_infobox {
> font-size: 0.68em;
> background-size: 2.5em;
> margin-left: 1.25em;
> margin-right: 1.25em;
> padding-left: 3em;
> min-height: 2.5em;
> }
> #HtmlView kbd, #HtmlView .epub__packt_action {
> font-size: 0.75em;
> }
> #HtmlView .epub__packt_italics {
> font-size: 0.9em;
> }
> #HtmlView a, #HtmlView .epub__packt_url {
> font-size: 0.7em;
> }
> #HtmlView p, #HtmlView .epub__packt_para {
> font-size: 1em;
> line-height: 1.06em;
> }
> #HtmlView .epub__CDPImageAlign {
> max-width: 100%;
> max-height: 100%;
> }
> #HtmlView .epub__CDPAlign {
> margin-top: 0.01em;
> margin-bottom: 0.01em;
277,278d216
<
< /* END OF CDP-1645 */
- This file only exists in retail eBook:
<?xml version="1.0" encoding="UTF-8" ?>
<display_options>
<platform name="*">
<option name="specified-fonts">true</option>
</platform>
</display_options>
-
Retail eBook's OPF filename is
book.opf
, whereas Safari ismetadata.opf
-
There are lot's of differences (
1,1042c1,1007
) to use the diff. -
Refer to metadata.opf (retail ebook) & metadata.opf (safari ebook)
-
Each book has two - one that is
XHTML
and second one that isNCX
-
XHTML
- Refer to toc.xhtml (retail ebook) & toc.xhtml (safari ebook) -
NCX
- Refer to toc.ncx (retail ebook) & toc.ncx (safari ebook)