<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4463055240008748218</id><updated>2024-11-01T04:53:37.542-04:00</updated><category term="Linux"/><category term="Fedora"/><category term="OS"/><category term="Tecnologia"/><category term="sysadmin"/><category term="ubuntu"/><category term="KDE"/><category term="developer"/><category term="java"/><category term="GNU"/><category term="java ee"/><category term="mysql"/><category term="tutorial"/><category term="cinnamon"/><category term="forms"/><category term="iso to usb"/><category term="oracle"/><category term="pl/sql"/><category term="plasma 5"/><category term="usb"/><category term="Data Base"/><category term="MariaDB"/><category term="ORA-01403"/><category term="VIRUS"/><category term="android"/><category term="arch"/><category term="centos"/><category term="contenedor"/><category term="curso"/><category term="docker"/><category term="eclipse"/><category term="ejb"/><category term="error"/><category term="facelets"/><category term="free software"/><category term="function"/><category term="git"/><category term="github"/><category term="gnu/linux (operating system)"/><category term="hibernate"/><category term="idioma"/><category term="iso"/><category term="jboss"/><category term="jpa"/><category term="jsf"/><category term="jsp"/><category term="kurs www"/><category term="linus"/><category term="mvc"/><category term="mysql (software)"/><category term="no data found"/><category term="open-source"/><category term="oracla"/><category term="patrones de diseno"/><category term="php"/><category term="phpmyadmin"/><category term="podcast"/><category term="poo"/><category term="programacion"/><category term="programador"/><category term="review"/><category term="server"/><category term="shell"/><category term="sql"/><category term="terminal"/><category term="the pilot"/><category term="traductor"/><category term="turorial"/><category term="waverly labs"/><category term="web"/><category term="wildfly"/><title type='text'>Devops everywhere</title><subtitle type='html'>Para los que no comen cuento con la tecnologia.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-1228847098534664831</id><published>2018-03-23T03:33:00.001-04:00</published><updated>2018-03-23T03:33:37.343-04:00</updated><title type='text'>Angular Material Data Table: A Complete Example (Server Pagination, Filtering, Sorting)</title><content type='html'>&lt;br /&gt;
&lt;section class=&quot;post-content&quot;&gt; In this post, we are going to go through a &lt;i&gt;complete example&lt;/i&gt; of how to use the Angular Material Data Table.&lt;br /&gt;


We are going to cover many of the most &lt;i&gt;common use cases&lt;/i&gt; that revolve around the Angular Material Data Table component, such as: server-side pagination, sorting, and filtering.&lt;br /&gt;


This is a &lt;b&gt;step-by-step tutorial&lt;/b&gt;, so I invite you to code along as we are going to start with a simple initial scenario. We will then progressively add features one by one and explain everything along the way (including gotchas).&lt;br /&gt;


We will learn in detail all about the reactive design principles involved in the design of the Angular Material Data Table and an Angular CDK Data Source.&lt;br /&gt;


The &lt;b&gt;end result&lt;/b&gt; of this post will be:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;a complete example of how to implement an Angular Material Data Table with server-side pagination, sorting and filtering using a custom CDK Data Source&lt;/li&gt;
&lt;li&gt;a running example available on Github, which includes a small backend Express server that serves the paginated data&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tableofcontents&quot;&gt;
Table Of Contents&lt;/h3&gt;
In this post, we will cover the following topics:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;The Angular Material Data Table - not only for Material Design&lt;/li&gt;
&lt;li&gt;The Material Data Table Reactive Design&lt;/li&gt;
&lt;li&gt;The Material Paginator and Server-side Pagination&lt;/li&gt;
&lt;li&gt;Sortable Headers and Server-side Sorting&lt;/li&gt;
&lt;li&gt;Server-side Filtering with Material Input Box&lt;/li&gt;
&lt;li&gt;A Loading Indicator&lt;/li&gt;
&lt;li&gt;A Custom Angular Material CDK Data Source&lt;/li&gt;
&lt;li&gt;Source Code (on Github) with the complete example&lt;/li&gt;
&lt;li&gt;Conclusions&lt;/li&gt;
&lt;/ul&gt;
So without further ado, let&#39;s get started with our Material Data Table Guided Tour!&lt;br /&gt;


&lt;h3 id=&quot;importingangularmaterialmodules&quot;&gt;
Importing Angular Material modules&lt;/h3&gt;
In order to run our example, let&#39;s first import all the Angular Material modules that we will need:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=01.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-01-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-01-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-01-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC2&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; { &lt;span class=&quot;pl-smi&quot;&gt;MatInputModule&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;MatPaginatorModule&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;MatProgressSpinnerModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-01-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC3&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;MatSortModule&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;MatTableModule&lt;/span&gt; } &lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;@angular/material&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-01-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC4&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-01-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC5&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;NgModule&lt;/span&gt;({&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-01-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC6&quot;&gt;declarations: [&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-01-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC7&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;...&lt;/span&gt; &lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-01-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC8&quot;&gt;],&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-01-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC9&quot;&gt;imports: [&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-01-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC10&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;BrowserModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-01-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC11&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;BrowserAnimationsModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-01-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC12&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;HttpClientModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-01-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC13&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;MatInputModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-01-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC14&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;MatTableModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-01-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC15&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;MatPaginatorModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-01-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC16&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;MatSortModule&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-01-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC17&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;MatProgressSpinnerModule&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-01-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC18&quot;&gt;],&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-01-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC19&quot;&gt;providers: [&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-01-ts-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC20&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-01-ts-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC21&quot;&gt;],&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-01-ts-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC22&quot;&gt;bootstrap: [&lt;span class=&quot;pl-smi&quot;&gt;AppComponent&lt;/span&gt;]&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-01-ts-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC23&quot;&gt;})&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-01-ts-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC24&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;AppModule&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-01-ts-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC25&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-01-ts-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC26&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot; id=&quot;file-01-ts-L27&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-01-ts-LC27&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/01.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-01-ts&quot;&gt;01.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
Here is a breakdown of the contents of each Material module:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;&lt;b&gt;MatInputModule&lt;/b&gt;: this contains the components and directives for adding Material design Input Boxes to our application (needed for the search input box)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MatTableModule&lt;/b&gt;: this is the core data table module, which includes the &lt;code&gt;mat-table&lt;/code&gt; component and many related components and directives&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MatPaginatorModule&lt;/b&gt;: this is a generic pagination module, that can be used to paginate data in general. This module can also be used separately from the Data table, for example for implementing Detail pagination logic in a Master-Detail setup&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MatSortModule&lt;/b&gt;: this is an optional module that allows adding sortable headers to a data table&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MatProgressSpinnerModule&lt;/b&gt;: this module includes the progress indicator component that we will be using to indicate that data is being loaded from the backend&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;introductiontotheangularmaterialdatatable&quot;&gt;
Introduction to the Angular Material Data Table&lt;/h3&gt;
The Material Data Table component is a generic component for displaying tabulated data. Although we can easily give it a Material Design look and feel, this is actually not mandatory.&lt;br /&gt;


In fact, we can give the Angular Material Data table an alternative UI design if needed. To see that this is so, let&#39;s start by creating a Data Table where the table cells are just plain divs with no custom CSS applied.&lt;br /&gt;


This data table will display a list of course lessons, and has 3 columns (sequence number, description and duration):&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=02.html&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-02-html&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-html&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-02-html-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-02-html-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC2&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;lessons-table mat-elevation-z8&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-e&quot;&gt;dataSource&lt;/span&gt;]=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-02-html-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-02-html-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC4&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-02-html-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC5&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;#&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-02-html-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC6&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.seqNo}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-02-html-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC7&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-02-html-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-02-html-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC9&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-02-html-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC10&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;Description&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-02-html-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC11&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description-cell&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-02-html-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC12&quot;&gt;*&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.description}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-02-html-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC13&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-02-html-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC14&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-02-html-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC15&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-02-html-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC16&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;Duration&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-02-html-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC17&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration-cell&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-02-html-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC18&quot;&gt;*&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.duration}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-02-html-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC19&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-02-html-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC20&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-02-html-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC21&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-row&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderRowDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;displayedColumns&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-row&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-02-html-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC22&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-02-html-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC23&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matRowDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let row; columns: displayedColumns&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-02-html-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC24&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-02-html-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC25&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-02-html-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-02-html-LC26&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/02.html&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-02-html&quot;&gt;02.html&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&quot;materialdatatablecolumndefinitions&quot;&gt;
Material Data Table Column Definitions&lt;/h4&gt;
As we can see, this table defines 3 columns, each inside its own &lt;code&gt;ng-container&lt;/code&gt; element. The &lt;code&gt;ng-container&lt;/code&gt; element will &lt;b&gt;NOT&lt;/b&gt; be rendered to the screen (see this &lt;a href=&quot;https://www.blogger.com/blogger.g?blogID=4463055240008748218&quot;&gt;post&lt;/a&gt; for more details), but it will provide an element for applying the &lt;code&gt;matColumnDef&lt;/code&gt; directive.&lt;br /&gt;


The &lt;code&gt;matColumnDef&lt;/code&gt; directive uniquely identifies a given column with a key: seqNo, description or duration. Inside the &lt;code&gt;ng-container&lt;/code&gt; element, we will have all the configuration for a given column.&lt;br /&gt;


&lt;blockquote&gt;
Notice that the order of the &lt;code&gt;ng-container&lt;/code&gt; elements does &lt;i&gt;NOT&lt;/i&gt; determine the column visual order &lt;/blockquote&gt;
&lt;h4 id=&quot;thematerialdatatableauxiliarydefinitiondirectives&quot;&gt;
The Material Data Table Auxiliary Definition Directives&lt;/h4&gt;
The Material Data Table has a series of auxiliary structural directives (applied using the &lt;code&gt;*directiveName&lt;/code&gt; syntax) that allow us to mark certain template sections has having a certain role in the overall data table design.&lt;br /&gt;


These directives always end with the &lt;code&gt;Def&lt;/code&gt; postfix, and they are used to assign a role to a template section. The first two directives that we will cover are &lt;code&gt;matHeaderCellDef&lt;/code&gt; and &lt;code&gt;matCellDef&lt;/code&gt;.&lt;br /&gt;


&lt;h4 id=&quot;thematheadercelldefandmatcelldefdirectives&quot;&gt;
The &lt;code&gt;matHeaderCellDef&lt;/code&gt; and &lt;code&gt;matCellDef&lt;/code&gt; Directives&lt;/h4&gt;
Inside of each &lt;code&gt;ng-container&lt;/code&gt; with a given column definition, there are a couple of configuration elements:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;we have the template that defines how to display the header of a given column, identified via the &lt;code&gt;matHeaderCellDef&lt;/code&gt; structural directive&lt;/li&gt;
&lt;li&gt;we also have another template that defines how to display the data cells of a given column, using the &lt;code&gt;matCellDef&lt;/code&gt; structural directive&lt;/li&gt;
&lt;/ul&gt;
These two structural directives only identify which template elements have a given role (cell template, header template), but they do not attach any styling to those elements.&lt;br /&gt;


For example, in this case, &lt;code&gt;matCellDef&lt;/code&gt; and &lt;code&gt;matHeaderCellDef&lt;/code&gt; are being applied to plain divs with no styling, so this is why this table does not have a Material design &lt;i&gt;yet&lt;/i&gt;.&lt;br /&gt;


&lt;h3 id=&quot;applyingamaterialdesigntothedatatable&quot;&gt;
Applying a Material Design to the Data Table&lt;/h3&gt;
Let&#39;s now see what it would take to give this Data Table a Material Look and Feel. For that, we will use a couple of built-in components in our header and cell template definitions:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=03.html&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-03-html&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-html&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-03-html-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-03-html-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC2&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;lessons-table mat-elevation-z8&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-e&quot;&gt;dataSource&lt;/span&gt;]=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-03-html-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-03-html-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC4&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-03-html-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC5&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;#&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-03-html-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC6&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.seqNo}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-03-html-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC7&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-03-html-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-03-html-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC9&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-03-html-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC10&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;Description&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-03-html-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC11&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description-cell&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-03-html-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC12&quot;&gt;*&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.description}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-03-html-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC13&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-03-html-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC14&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-03-html-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC15&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-03-html-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC16&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-03-html-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC17&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;Duration&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-03-html-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC18&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration-cell&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-03-html-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC19&quot;&gt;*&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.duration}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-03-html-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC20&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-03-html-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC21&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-03-html-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC22&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-row&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderRowDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;displayedColumns&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-row&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-03-html-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC23&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-03-html-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC24&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matRowDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let row; columns: displayedColumns&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-03-html-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC25&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-03-html-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC26&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot; id=&quot;file-03-html-L27&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-03-html-LC27&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/03.html&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-03-html&quot;&gt;03.html&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
This template is almost the same as the one we saw before, but now we are using the &lt;code&gt;mat-header-cell&lt;/code&gt; and &lt;code&gt;mat-cell&lt;/code&gt; components inside our column definition instead of plain divs.&lt;br /&gt;


Using these components, lets now have a look at what the Data Table looks like with this new Material Design:&lt;br /&gt;


&lt;img alt=&quot;Angular Material Data Table&quot; src=&quot;https://s3-us-west-1.amazonaws.com/angular-university/blog-images/angular-material-data-table/1-material-data-table.png&quot; /&gt;&lt;br /&gt;


Notice that the table already has some data! We will get to the data source in a moment, right now let&#39;s continue exploring the rest of the template.&lt;br /&gt;


&lt;h4 id=&quot;thematcelldefdirective&quot;&gt;
The &lt;code&gt;matCellDef&lt;/code&gt; Directive&lt;/h4&gt;
The data cell template has access to the data that is being displayed. In this case, our data table is displaying a list of lessons, so the lesson object in each row is accessible via the &lt;code&gt;let lesson&lt;/code&gt; syntax, and can be used in the template just like any component variable.&lt;br /&gt;


&lt;h4 id=&quot;thematheaderrowcomponentandthematheaderrowdefdirective&quot;&gt;
The &lt;code&gt;mat-header-row&lt;/code&gt; component and the &lt;code&gt;matHeaderRowDef&lt;/code&gt; directive&lt;/h4&gt;
This combination of related component / directive works in the following way:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;the &lt;code&gt;matHeaderRowDef&lt;/code&gt; identifies a configuration element for the table header row, but it does not apply any styling to the element&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;mat-header-row&lt;/code&gt; on the other hand applies some minimal Material stying&lt;/li&gt;
&lt;/ul&gt;
The &lt;code&gt;matHeaderRowDef&lt;/code&gt; directive also defines in which order the columns should be displayed. In our case, the directive expression is pointing to a component variable named &lt;code&gt;displayedColumns&lt;/code&gt;.&lt;br /&gt;


Here is what the &lt;code&gt;displayedColumns&lt;/code&gt; component variable will look like:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=04.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-04-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-04-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-04-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-04-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-04-ts-LC2&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;displayedColumns&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-04-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-04-ts-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/04.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-04-ts&quot;&gt;04.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
The values of this array are the column keys, which need to be identical to the names of the &lt;code&gt;ng-container&lt;/code&gt; column sections (specified via the &lt;code&gt;matColumnDef&lt;/code&gt; directive).&lt;br /&gt;


&lt;blockquote&gt;
Note: It&#39;s this array that determines the visual order of the columns!&lt;/blockquote&gt;
&lt;h4 id=&quot;thematrowcomponentandthematrowdefdirective&quot;&gt;
The &lt;code&gt;mat-row&lt;/code&gt; component and the &lt;code&gt;matRowDef&lt;/code&gt; directive&lt;/h4&gt;
This component / directive pair also works in a similar way to what we have seen in previous cases:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;&lt;code&gt;matRowDef&lt;/code&gt; identifies which element inside &lt;code&gt;mat-table&lt;/code&gt; provides configuration for how a data row should look like, without providing any specific styling&lt;/li&gt;
&lt;li&gt;on the other hand, &lt;code&gt;mat-row&lt;/code&gt; will provide some Material stying to the data row&lt;/li&gt;
&lt;/ul&gt;
With &lt;code&gt;mat-row&lt;/code&gt;, we also have a variable exported that we have named &lt;code&gt;row&lt;/code&gt;, containing the data of a given data row, and we have to specify the &lt;code&gt;columns&lt;/code&gt; property, which contains the order on which the data cells should be defined.&lt;br /&gt;


&lt;h3 id=&quot;interactingwithagiventabledatarow&quot;&gt;
Interacting with a given table data row&lt;/h3&gt;
We can even use the element identified by the &lt;code&gt;matRowDef&lt;/code&gt; directive to interact with a given data row. For example, this is how we can detect if a given data row was clicked:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=05.html&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-05-html&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-html&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-05-html-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-05-html-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-05-html-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-05-html-LC2&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matRowDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let row; columns: displayedColumns&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-05-html-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-05-html-LC3&quot;&gt;(&lt;span class=&quot;pl-e&quot;&gt;click&lt;/span&gt;)=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;onRowClicked(row)&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-05-html-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-05-html-LC4&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-05-html-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-05-html-LC5&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/05.html&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-05-html&quot;&gt;05.html&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
When a row is clicked, we will call the &lt;code&gt;onRowClicked()&lt;/code&gt; component method, that will then log the row data to the console:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=06.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-06-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-06-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-06-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-06-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-06-ts-LC2&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;onRowClicked&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;row&lt;/span&gt;) {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-06-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-06-ts-LC3&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;console&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;log&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;Row clicked: &lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;row&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-06-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-06-ts-LC4&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-06-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-06-ts-LC5&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/06.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-06-ts&quot;&gt;06.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
If we now click on the first row of our data table, here is what the result will look like on the console:&lt;br /&gt;


&lt;img alt=&quot;Material Data Table&quot; class=&quot;card card-strong&quot; src=&quot;https://s3-us-west-1.amazonaws.com/angular-university/blog-images/angular-material-data-table/2-material-data-table.png&quot; /&gt;&lt;br /&gt;


As we can see the data for the first row is being printed to the console, as expected! But where is this data coming from?&lt;br /&gt;


To answer that, let&#39;s then talk about the data source that is linked to this data table, and go over the Material Data Table reactive design.&lt;br /&gt;


&lt;h3 id=&quot;datasourcesandthedatatablereactivedesign&quot;&gt;
Data Sources and the Data Table Reactive Design&lt;/h3&gt;
The data table that we have been presenting receives the data that it displays from a Data Source that implements an Observable-based API and follows common reactive design principles.&lt;br /&gt;


This means for example that the data table component does not know where the data is coming from. The data could be coming for example from the backend, or from a client-side cache, but that is transparent to the Data table.&lt;br /&gt;


The Data table simply subscribes to an Observable provided by the Data Source. When that Observable emits a new value, it will contain a list of lessons that then get&#39;s displayed in the data table.&lt;br /&gt;


&lt;h4 id=&quot;datatablecoredesignprinciples&quot;&gt;
Data Table core design principles&lt;/h4&gt;
With this Observable-based API, not only the Data table does not know where the data is coming from, but the data table also does not know what triggered the arrival of new data.&lt;br /&gt;


Here are some possible causes for the emission of new data:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;the data table is initially displayed&lt;/li&gt;
&lt;li&gt;the user clicks on a paginator button&lt;/li&gt;
&lt;li&gt;the user sorts the data by clicking on a sortable header&lt;/li&gt;
&lt;li&gt;the user types a search using an input box&lt;/li&gt;
&lt;/ul&gt;
Again, the Data Table has no information about exactly which event caused new data to arrive, which allows the Data Table components and directives to focus only on &lt;i&gt;displaying&lt;/i&gt; the data, and not fetching it.&lt;br /&gt;


Let&#39;s then see how can we implement such a reactive data source.&lt;br /&gt;


&lt;h4 id=&quot;whynotusemattabledatasource&quot;&gt;
Why not use &lt;code&gt;MatTableDataSource&lt;/code&gt;?&lt;/h4&gt;
In this example, we will not be using the built-in &lt;code&gt;MatTableDataSource&lt;/code&gt; because its designed for filtering, sorting and pagination of a &lt;i&gt;client-side&lt;/i&gt; data array.&lt;br /&gt;


In our case, all the filtering, sorting and pagination will be happening on the server, so we will be building our own Angular CDK reactive data source from first principles.&lt;br /&gt;


&lt;h3 id=&quot;fetchingdatafromthebackend&quot;&gt;
Fetching Data from the backend&lt;/h3&gt;
In order to fetch data from the backend, our custom Data Source is going to be using the &lt;code&gt;LessonsService&lt;/code&gt;. This is a standard Observable-based stateless singleton service that is built internally using the Angular HTTP Client.&lt;br /&gt;


Let&#39;s have a look at this service, and break down how its implemented:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=07.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-07-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-07-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-07-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC2&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;Injectable&lt;/span&gt;()&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-07-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC3&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CoursesService&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-07-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC4&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-07-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC5&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;constructor&lt;/span&gt;(&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;http&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;HttpClient&lt;/span&gt;) {}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-07-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC6&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-07-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC7&quot;&gt;findLessons(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-07-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC8&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;courseId&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;number&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;sortOrder&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-07-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC9&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;pageNumber&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;pageSize&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;3&lt;/span&gt;)&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;Observable&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-en&quot;&gt;Lesson&lt;/span&gt;[]&amp;gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-07-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC10&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-07-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC11&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;http&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;get&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;/api/lessons&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-07-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC12&quot;&gt;params: &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;HttpParams&lt;/span&gt;()&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-07-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC13&quot;&gt;.&lt;span class=&quot;pl-c1&quot;&gt;set&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;courseId&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;courseId&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;toString&lt;/span&gt;())&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-07-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC14&quot;&gt;.&lt;span class=&quot;pl-c1&quot;&gt;set&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;filter&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;filter&lt;/span&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-07-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC15&quot;&gt;.&lt;span class=&quot;pl-c1&quot;&gt;set&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;sortOrder&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;sortOrder&lt;/span&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-07-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC16&quot;&gt;.&lt;span class=&quot;pl-c1&quot;&gt;set&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;pageNumber&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;pageNumber&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;toString&lt;/span&gt;())&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-07-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC17&quot;&gt;.&lt;span class=&quot;pl-c1&quot;&gt;set&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;pageSize&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;toString&lt;/span&gt;())&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-07-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC18&quot;&gt;}).&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-07-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC19&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;map&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;res&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;res&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;payload&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;])&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-07-ts-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC20&quot;&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-07-ts-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC21&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-07-ts-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC22&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-07-ts-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC23&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-07-ts-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-07-ts-LC24&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/07.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-07-ts&quot;&gt;07.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&quot;breakingdownthelessonsserviceimplementation&quot;&gt;
Breaking down the &lt;code&gt;LessonsService&lt;/code&gt; implementation&lt;/h4&gt;
As we can see, this service is completely stateless, and every method forwards calls to the backend using the HTTP client, and returns an Observable to the caller.&lt;br /&gt;


Our REST API is available in URLs under the &lt;code&gt;/api&lt;/code&gt; directory, and multiple services are available (&lt;a href=&quot;https://github.com/angular-university/angular-material-course/blob/2-data-table-finished/src/app/services/courses.service.ts&quot;&gt;here&lt;/a&gt; is the complete implementation).&lt;br /&gt;


In this snippet, we are just showing the &lt;code&gt;findLessons()&lt;/code&gt; method, that allows to obtain one filtered and sorted page of lessons data for a given course.&lt;br /&gt;


Here are the arguments that we can pass to this function:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;&lt;b&gt;courseId&lt;/b&gt;: This identifies a given course, for which we want to retrieve a page of lessons&lt;/li&gt;
&lt;li&gt;&lt;b&gt;filter&lt;/b&gt;: This is a search string that will help us filter the results. If we pass the empty string &#39;&#39; it means that no filtering is done on the server&lt;/li&gt;
&lt;li&gt;&lt;b&gt;sortOrder&lt;/b&gt;: our backend allows us to sort based on the &lt;code&gt;seqNo&lt;/code&gt; column, and with this parameter, we can specify is the sort order is ascending (which is the default &lt;code&gt;asc&lt;/code&gt; value), or descending by passing the value &lt;code&gt;desc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pageNumber&lt;/b&gt;: With the results filtered and sorted, we are going to specify which page of that full list of results we need. The default is to return the first page (with index 0)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pageSize&lt;/b&gt;: this specifies the page size, which defaults to a maximum of 3 elements&lt;/li&gt;
&lt;/ul&gt;
With this arguments, the &lt;code&gt;loadLessons()&lt;/code&gt; method will then build an HTTP GET call to the backend endpoint available at &lt;code&gt;/api/lessons&lt;/code&gt;.&lt;br /&gt;


Here is what an HTTP GET call that fetches the lessons for the first page looks like:&lt;br /&gt;


&lt;pre&gt;&lt;code&gt;&lt;a class=&quot;vglnk&quot; href=&quot;http://localhost:4200/api/lessons?courseId=1&amp;amp;filter=&amp;amp;sortOrder=asc&amp;amp;pageNumber=0&amp;amp;pageSize=3&quot; rel=&quot;nofollow&quot;&gt;http://localhost:4200/api/lessons?courseId=1&amp;amp;filter=&amp;amp;sortOrder=asc&amp;amp;pageNumber=0&amp;amp;pageSize=3&lt;/a&gt;
&lt;/code&gt;&lt;/pre&gt;
As we can see, we are appending a series of HTTP query parameters to the GET URL using the &lt;code&gt;HTTPParams&lt;/code&gt; fluent API.&lt;br /&gt;


This &lt;code&gt;loadLessons()&lt;/code&gt; method will be the basis of our Data Source, as it will allow us to cover the server pagination, sorting and filtering use cases.&lt;br /&gt;


&lt;h3 id=&quot;implementingacustomangularcdkdatasource&quot;&gt;
Implementing a Custom Angular CDK Data Source&lt;/h3&gt;
Using the &lt;code&gt;LessonsService&lt;/code&gt;, let&#39;s now implement a custom Observable-based Angular CDK Data Source. Here is some initial code, so that we can discuss its Reactive design (the full version is shown in a moment):&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=08.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-08-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-08-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-08-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC2&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; {&lt;span class=&quot;pl-smi&quot;&gt;CollectionViewer&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;DataSource&lt;/span&gt;} &lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;@angular/cdk/collections&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-08-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-08-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC4&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;DataSource&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-en&quot;&gt;Lesson&lt;/span&gt;&amp;gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-08-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC5&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-08-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC6&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; lessonsSubject &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;BehaviorSubject&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-en&quot;&gt;Lesson&lt;/span&gt;[]&amp;gt;([]);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-08-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC7&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-08-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC8&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;constructor&lt;/span&gt;(&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;coursesService&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CoursesService&lt;/span&gt;) {}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-08-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC9&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-08-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC10&quot;&gt;connect(&lt;span class=&quot;pl-v&quot;&gt;collectionViewer&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CollectionViewer&lt;/span&gt;)&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;Observable&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-en&quot;&gt;Lesson&lt;/span&gt;[]&amp;gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-08-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC11&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-08-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC12&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-08-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC13&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-08-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC14&quot;&gt;disconnect(&lt;span class=&quot;pl-v&quot;&gt;collectionViewer&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CollectionViewer&lt;/span&gt;)&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;void&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-08-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC15&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-08-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC16&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-08-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC17&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-08-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC18&quot;&gt;loadLessons(&lt;span class=&quot;pl-v&quot;&gt;courseId&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;number&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;string&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-08-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC19&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;sortDirection&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;string&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;pageIndex&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;number&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;pageSize&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;number&lt;/span&gt;) {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-08-ts-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC20&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;...&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-08-ts-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC21&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-08-ts-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC22&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-08-ts-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-08-ts-LC23&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/08.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-08-ts&quot;&gt;08.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&quot;breakingdownthedesignofanangularcdkdatasource&quot;&gt;
Breaking down the design of an Angular CDK Data Source&lt;/h4&gt;
Has we can see, in order to create a Data Source we need to create a class that implements &lt;code&gt;DataSource&lt;/code&gt;. This means that this class needs to implement a couple of methods: &lt;code&gt;connect()&lt;/code&gt; and &lt;code&gt;disconnect()&lt;/code&gt;.&lt;br /&gt;


Note that these methods provide an argument which is a &lt;code&gt;CollectionViewer&lt;/code&gt;, which provides an Observable that emits information about what data is being displayed (the start index and the end index).&lt;br /&gt;


We would recommend for now not to focus so much on the &lt;code&gt;CollectionViewer&lt;/code&gt; at this moment, but on something much more important for understanding the whole design: the return value of the &lt;code&gt;connect()&lt;/code&gt; method.&lt;br /&gt;


&lt;h4 id=&quot;howtoimplementthedatasourceconnectmethod&quot;&gt;
How to implement the DataSource &lt;code&gt;connect()&lt;/code&gt; method&lt;/h4&gt;
This method will be called &lt;i&gt;once&lt;/i&gt; by the Data Table at table bootstrap time. The Data Table expects this method to return an Observable, and the values of that observable contain the data that the Data Table needs to display.&lt;br /&gt;


In this case, this observable will emit a list of Lessons. As the user clicks on the paginator and changes to a new page, this observable will emit a new value with the new lessons page.&lt;br /&gt;


We will implement this method by using a subject that is going to be invisible outside this class. That subject (the &lt;code&gt;lessonsSubject&lt;/code&gt;) is going to be emitting the values retrieved from the backend.&lt;br /&gt;


The &lt;code&gt;lessonsSubject&lt;/code&gt; is a &lt;code&gt;BehaviorSubject&lt;/code&gt;, which means its subscribers will always get its latest emitted value (or an initial value), even if they subscribed late (after the value was emitted).&lt;br /&gt;


&lt;h4 id=&quot;whyusebehaviorsubject&quot;&gt;
Why use &lt;code&gt;BehaviorSubject&lt;/code&gt;?&lt;/h4&gt;
Using &lt;code&gt;BehaviorSubject&lt;/code&gt; is a great way of writing code that works independently of the order that we use to perform asynchronous operations such as: calling the backend, binding the data table to the data source, etc.&lt;br /&gt;


For example, in this design, the Data Source is not aware of the data table or at which moment the Data Table will require the data. Because the data table subscribed to the &lt;code&gt;connect()&lt;/code&gt; observable, it will eventually get the data, even if:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;the data is still in transit coming from the HTTP backend&lt;/li&gt;
&lt;li&gt;or if the data was already loaded&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;custommaterialcdkdatasourcefullimplementationreview&quot;&gt;
Custom Material CDK Data Source - Full Implementation Review&lt;/h3&gt;
Now that we understand the reactive design of the data source, let&#39;s have a look at the complete final implementation and review it step-by-step.&lt;br /&gt;


Notice that in this final implementation, we have also included the notion of a loading flag, that we will use to display a spinning loading indicator to the user later on:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=09.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-09-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-09-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-09-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC2&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;DataSource&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-en&quot;&gt;Lesson&lt;/span&gt;&amp;gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-09-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-09-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC4&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; lessonsSubject &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;BehaviorSubject&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-en&quot;&gt;Lesson&lt;/span&gt;[]&amp;gt;([]);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-09-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC5&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; loadingSubject &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;BehaviorSubject&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-c1&quot;&gt;boolean&lt;/span&gt;&amp;gt;(&lt;span class=&quot;pl-c1&quot;&gt;false&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-09-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC6&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-09-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC7&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; loading$ &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;loadingSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;asObservable&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-09-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-09-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC9&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;constructor&lt;/span&gt;(&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;coursesService&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CoursesService&lt;/span&gt;) {}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-09-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC10&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-09-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC11&quot;&gt;connect(&lt;span class=&quot;pl-v&quot;&gt;collectionViewer&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CollectionViewer&lt;/span&gt;)&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;Observable&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-en&quot;&gt;Lesson&lt;/span&gt;[]&amp;gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-09-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC12&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;lessonsSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;asObservable&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-09-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC13&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-09-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC14&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-09-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC15&quot;&gt;disconnect(&lt;span class=&quot;pl-v&quot;&gt;collectionViewer&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CollectionViewer&lt;/span&gt;)&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;void&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-09-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC16&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;lessonsSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;complete&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-09-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC17&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;loadingSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;complete&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-09-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC18&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-09-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC19&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-09-ts-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC20&quot;&gt;loadLessons(&lt;span class=&quot;pl-v&quot;&gt;courseId&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;number&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-09-ts-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC21&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;sortDirection&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;pageIndex&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;pageSize&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;3&lt;/span&gt;) {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-09-ts-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC22&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-09-ts-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC23&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;loadingSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;next&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-09-ts-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC24&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-09-ts-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC25&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;coursesService&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;findLessons&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;courseId&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;filter&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;sortDirection&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-09-ts-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC26&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt;).&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot; id=&quot;file-09-ts-L27&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC27&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;catchError&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;of&lt;/span&gt;([])),&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot; id=&quot;file-09-ts-L28&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC28&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;finalize&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;loadingSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;next&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;false&lt;/span&gt;))&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot; id=&quot;file-09-ts-L29&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC29&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot; id=&quot;file-09-ts-L30&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC30&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;lessons&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;lessonsSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;next&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;lessons&lt;/span&gt;));&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot; id=&quot;file-09-ts-L31&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC31&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot; id=&quot;file-09-ts-L32&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC32&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot; id=&quot;file-09-ts-L33&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-09-ts-LC33&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/09.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-09-ts&quot;&gt;09.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&quot;datasourceloadingindicatorimplementationbreakdown&quot;&gt;
Data Source Loading Indicator Implementation Breakdown&lt;/h4&gt;
Let&#39;s start breaking down this code, we will start first with the implementation of the loading indicator. Because this Data Source class has a reactive design, let&#39;s implement the loading flag by exposing a boolean observable called &lt;code&gt;loading$&lt;/code&gt;.&lt;br /&gt;


This observable will emit as first value &lt;code&gt;false&lt;/code&gt; (which is defined in the &lt;code&gt;BehaviorSubject&lt;/code&gt; constructor), meaning that no data is loading initially.&lt;br /&gt;


The &lt;code&gt;loading$&lt;/code&gt; observable is derived using &lt;code&gt;asObservable()&lt;/code&gt; from a subject that is kept private to the data source class. The idea is that only this class knows when data is loading, so only this class can access the subject and emit new values for the loading flag.&lt;br /&gt;


&lt;h4 id=&quot;theconnectmethodimplementation&quot;&gt;
The &lt;code&gt;connect()&lt;/code&gt; method implementation&lt;/h4&gt;
Let&#39;s now focus on the implementation of the connect method:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=20.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-20-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-20-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-20-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-20-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-20-ts-LC2&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;connect&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;collectionViewer&lt;/span&gt;: &lt;span class=&quot;pl-smi&quot;&gt;CollectionViewer&lt;/span&gt;): &lt;span class=&quot;pl-smi&quot;&gt;Observable&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;Lesson&lt;/span&gt;[]&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-20-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-20-ts-LC3&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;lessonsSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;asObservable&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-20-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-20-ts-LC4&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-20-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-20-ts-LC5&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/20.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-20-ts&quot;&gt;20.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
This method will need to return an Observable that emits the lessons data, but we don&#39;t want to expose the internal subject &lt;code&gt;lessonsSubject&lt;/code&gt; directly.&lt;br /&gt;


Exposing the subject would mean yielding control of when and what data gets emitted by the data source, and we want to avoid that. We want to ensure that only this class can emit values for the lessons data.&lt;br /&gt;


So we are also going to return an Observable derived from &lt;code&gt;lessonsSubject&lt;/code&gt; using the &lt;code&gt;asObservable()&lt;/code&gt; method. This gives the data table (or any other subscriber) the ability to subscribe to the lessons data observable, without being able to emit values for that same observable.&lt;br /&gt;


&lt;h4 id=&quot;thedisconnectmethodimplementation&quot;&gt;
The &lt;code&gt;disconnect()&lt;/code&gt; method implementation&lt;/h4&gt;
Let&#39;s now break down the implementation of the disconnect method:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=21.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-21-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-21-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-21-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-21-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-21-ts-LC2&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;disconnect&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;collectionViewer&lt;/span&gt;: &lt;span class=&quot;pl-smi&quot;&gt;CollectionViewer&lt;/span&gt;): &lt;span class=&quot;pl-k&quot;&gt;void&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-21-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-21-ts-LC3&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;lessonsSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;complete&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-21-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-21-ts-LC4&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;loadingSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;complete&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-21-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-21-ts-LC5&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-21-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-21-ts-LC6&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/21.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-21-ts&quot;&gt;21.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
This method is called &lt;i&gt;once&lt;/i&gt; by the data table at component destruction time. In this method, we are going to complete any observables that we have created internally in this class, in order to avoid memory leaks.&lt;br /&gt;


We are going to complete both the &lt;code&gt;lessonsSubject&lt;/code&gt; and the &lt;code&gt;loadingSubject&lt;/code&gt;, which are then going to trigger the completion of any derived observables.&lt;br /&gt;


&lt;h4 id=&quot;theloadlessonsmethodimplementation&quot;&gt;
The &lt;code&gt;loadLessons()&lt;/code&gt; method implementation&lt;/h4&gt;
Finally, let&#39;s now focus on the implementation of the loadLessons method:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=22.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-22-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-22-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-22-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC2&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;courseId&lt;/span&gt;: &lt;span class=&quot;pl-smi&quot;&gt;number&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-22-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC3&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;sortDirection&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;3&lt;/span&gt;) {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-22-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC4&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-22-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC5&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;loadingSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;next&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-22-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC6&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-22-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC7&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;coursesService&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;findLessons&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;courseId&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;filter&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;sortDirection&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-22-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC8&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt;).&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-22-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC9&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;catchError&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;of&lt;/span&gt;([])),&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-22-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC10&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;finalize&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;loadingSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;next&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;false&lt;/span&gt;))&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-22-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC11&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-22-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC12&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;lessons&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;lessonsSubject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;next&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;lessons&lt;/span&gt;));&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-22-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC13&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-22-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-22-ts-LC14&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/22.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-22-ts&quot;&gt;22.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
The Data Source exposes this public method named &lt;code&gt;loadLessons()&lt;/code&gt;. This method is going to be called in response to multiple user actions (pagination, sorting, filtering) to load a given data page.&lt;br /&gt;


Here is how this method works:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;the first thing that we will do is to report that some data is being loaded, by emitting &lt;code&gt;true&lt;/code&gt; to the &lt;code&gt;loadingSubject&lt;/code&gt;, which will cause &lt;code&gt;loading$&lt;/code&gt; to also emit true&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;LessonsService&lt;/code&gt; is going to be used to get a data page from the REST backend&lt;/li&gt;
&lt;li&gt;a call to &lt;code&gt;findLessons()&lt;/code&gt; is made, that returns an Observable&lt;/li&gt;
&lt;li&gt;by subscribing to that observable, we trigger an HTTP request&lt;/li&gt;
&lt;li&gt;if the data arrives successfully from the backend, we are going to emit it back to the data table, via the &lt;code&gt;connect()&lt;/code&gt; Observable&lt;/li&gt;
&lt;li&gt;for that, we will call &lt;code&gt;next()&lt;/code&gt; on the &lt;code&gt;lessonsSubject&lt;/code&gt; with the lessons data&lt;/li&gt;
&lt;li&gt;the derived lessons observable returned by &lt;code&gt;connect()&lt;/code&gt; will then emit the lessons data to the data table&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;handlingbackenderrors&quot;&gt;
Handling Backend Errors&lt;/h4&gt;
Let&#39;s now see, still in the &lt;code&gt;loadLessons()&lt;/code&gt; method, how the Data Source handles backend errors, and how the loading indicator is managed:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;if an error in the HTTP request occurs, the Observable returned by &lt;code&gt;findLessons()&lt;/code&gt; will error out&lt;/li&gt;
&lt;li&gt;If that occurs, we are going to catch that error using &lt;code&gt;catchError()&lt;/code&gt; and we are going to return an Observable that emits the empty array using &lt;code&gt;of&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;we could complementary also use another &lt;code&gt;MessagesService&lt;/code&gt; to show a closable error popup to the user&lt;/li&gt;
&lt;li&gt;wether the call to the backend succeeds or fails, we will in both cases have the &lt;code&gt;loading$&lt;/code&gt; Observable emit &lt;code&gt;false&lt;/code&gt; by using &lt;code&gt;finalize()&lt;/code&gt; (which works like &lt;code&gt;finally&lt;/code&gt; in plain Javascript try/catch/finally)&lt;/li&gt;
&lt;/ul&gt;
And with this last bit, we have completed the review of our custom Data Source!&lt;br /&gt;


This version of the data source will support &lt;i&gt;all&lt;/i&gt; our use cases: pagination, sorting and filtering. As we can see, the design is all about providing data transparently to the Data Table using an Observable-based API.&lt;br /&gt;


Let&#39;s now see how we can take this Data Source and plug it into the Data Table.&lt;br /&gt;


&lt;h3 id=&quot;linkingadatasourcewiththedatatable&quot;&gt;
Linking a Data Source with the Data Table&lt;/h3&gt;
The Data Table will be displayed as part of the template of a component. Let&#39;s write an initial version of that component, that displays the first page of lessons:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=10.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-10-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-10-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-10-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC2&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;Component&lt;/span&gt;({&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-10-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC3&quot;&gt;selector: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-10-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC4&quot;&gt;templateUrl: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.html&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-10-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC5&quot;&gt;styleUrls: [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.css&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;]&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-10-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC6&quot;&gt;})&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-10-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC7&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CourseComponent&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;OnInit&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-10-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-10-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC9&quot;&gt;dataSource&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-10-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC10&quot;&gt;displayedColumns&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-10-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC11&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-10-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC12&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;constructor&lt;/span&gt;(&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;coursesService&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CoursesService&lt;/span&gt;) {}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-10-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC13&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-10-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC14&quot;&gt;ngOnInit() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-10-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC15&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;coursesService&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-10-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC16&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-10-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC17&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-10-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC18&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-10-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-10-ts-LC19&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/10.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-10-ts&quot;&gt;10.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
This component contains a couple of properties:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;the &lt;code&gt;displayedColumns&lt;/code&gt; array defines the visual order of the columns&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;dataSource&lt;/code&gt; property defines an instance of &lt;code&gt;LessonsDataSource&lt;/code&gt;, and that is being passed to &lt;code&gt;mat-table&lt;/code&gt; via the template&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;breakingdownthengoninitmethod&quot;&gt;
Breaking down the &lt;code&gt;ngOnInit&lt;/code&gt; method&lt;/h4&gt;
In the &lt;code&gt;ngOnInit&lt;/code&gt; method, we are calling the Data Source &lt;code&gt;loadLessons()&lt;/code&gt; method to trigger the loading of the first lessons page. Let&#39;s detail what happens as a result of that call:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;The Data Source calls the &lt;code&gt;LessonsService&lt;/code&gt;, which triggers an HTTP request to fetch the data&lt;/li&gt;
&lt;li&gt;The Data Source then emits the data via the &lt;code&gt;lessonsSubject&lt;/code&gt;, which causes the Observable returned by &lt;code&gt;connect()&lt;/code&gt; to emit the lessons page&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;mat-table&lt;/code&gt; Data Table component has subscribed to the &lt;code&gt;connect()&lt;/code&gt; observable and retrieves the new lessons page&lt;/li&gt;
&lt;li&gt;The Data Table then displays the new lessons page, without knowing where the data came from or what triggered its arrival&lt;/li&gt;
&lt;/ul&gt;
And with this &quot;glue&quot; component in place, we now have a working Data Table that displays server data!&lt;br /&gt;


The problem is that this initial example is always loading only the first page of data, with a page size of 3 and with no search criteria.&lt;br /&gt;


Let&#39;s use this example as a starting point, and starting adding: a loading indicator, pagination, sorting, and filtering.&lt;br /&gt;


&lt;h3 id=&quot;displayingamaterialloadingindicator&quot;&gt;
Displaying a Material Loading Indicator&lt;/h3&gt;
In order to display the loading indicator, we are going to be using the &lt;code&gt;loading$&lt;/code&gt; observable of the Data Source. We will be using the &lt;code&gt;mat-spinner&lt;/code&gt; Material component:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=11.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-11-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-11-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-11-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC2&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-11-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-11-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC4&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;spinner-container&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;ngIf&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource.loading$ | async&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-11-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC5&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;mat&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;spinner&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&amp;lt;/&lt;span class=&quot;pl-en&quot;&gt;mat&lt;/span&gt;-&lt;span class=&quot;pl-en&quot;&gt;spinner&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-11-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC6&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-11-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC7&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-11-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC8&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;mat&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;table&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;lessons-table mat-elevation-z8&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;]&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-11-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC9&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;...&lt;/span&gt;.&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-11-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC10&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;mat&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-11-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC11&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-11-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-11-ts-LC12&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/11.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-11-ts&quot;&gt;11.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
As we can see, we are using the &lt;code&gt;async&lt;/code&gt; pipe and &lt;code&gt;ngIf&lt;/code&gt; to show or hide the material loading indicator. Here is what the table looks like while the data is loading:&lt;br /&gt;


&lt;img alt=&quot;Material Data Table Loading Indicator&quot; src=&quot;https://s3-us-west-1.amazonaws.com/angular-university/blog-images/angular-material-data-table/3-material-data-table.png&quot; /&gt;&lt;br /&gt;


We will also be using the loading indicator when transitioning between two data pages using pagination, sorting or filtering.&lt;br /&gt;


&lt;h3 id=&quot;addingadatatablematerialpaginator&quot;&gt;
Adding a Data Table Material Paginator&lt;/h3&gt;
The Material Paginator component that we will be using is a generic paginator that comes with an Observable-based API. This paginator could be used to paginate anything, and it&#39;s not specifically linked to the Data Table.&lt;br /&gt;


For example, on a Master-Detail component setup, we could use this paginator to navigate between two detail elements.&lt;br /&gt;


This is how the &lt;code&gt;mat-paginator&lt;/code&gt; component can be used in a template:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=12.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-12-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-12-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-12-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC2&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-12-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-12-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC4&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;spinner-container&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;ngIf&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource.loading$ | async&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-12-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC5&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;mat&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;spinner&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&amp;lt;/&lt;span class=&quot;pl-en&quot;&gt;mat&lt;/span&gt;-&lt;span class=&quot;pl-en&quot;&gt;spinner&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-12-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC6&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-12-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC7&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-12-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC8&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;mat&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;table&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;lessons-table mat-elevation-z8&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;]&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-12-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC9&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;...&lt;/span&gt;.&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-12-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC10&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;mat&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-12-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC11&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-12-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC12&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;mat&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt; [&lt;span class=&quot;pl-smi&quot;&gt;length&lt;/span&gt;]&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course?.lessonsCount&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt;]&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;3&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-12-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC13&quot;&gt;[&lt;span class=&quot;pl-smi&quot;&gt;pageSizeOptions&lt;/span&gt;]&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;[3, 5, 10]&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&amp;lt;/&lt;span class=&quot;pl-en&quot;&gt;mat&lt;/span&gt;-&lt;span class=&quot;pl-en&quot;&gt;paginator&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-12-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC14&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-12-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-12-ts-LC15&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/12.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-12-ts&quot;&gt;12.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
As we can see, there is nothing &lt;i&gt;in the template&lt;/i&gt; linking the paginator with either the Data Source or the Data Table - that connection will be done at the level of the &lt;code&gt;CourseComponent&lt;/code&gt;.&lt;br /&gt;


The paginator only needs to know how many total items are being paginated (via the length property), in order to know how many total pages there are!&lt;br /&gt;


Its based on that information (plus the current page index) that the paginator will enable or disable the navigation buttons.&lt;br /&gt;


In order to pass that information to the paginator, we are using the &lt;code&gt;lessonsCount&lt;/code&gt; property of a new &lt;code&gt;course&lt;/code&gt; object.&lt;br /&gt;


&lt;h4 id=&quot;howtolinkthematerialpaginatortothedatasource&quot;&gt;
How to Link the Material Paginator to the Data Source&lt;/h4&gt;
Let&#39;s now have a look at the &lt;code&gt;CourseComponent&lt;/code&gt;, to see where &lt;code&gt;course&lt;/code&gt; is coming from and how the paginator is linked to the Data Source:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=14.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-14-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-14-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-14-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC2&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;Component&lt;/span&gt;({&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-14-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC3&quot;&gt;selector: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-14-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC4&quot;&gt;templateUrl: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.html&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-14-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC5&quot;&gt;styleUrls: [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.css&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;]&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-14-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC6&quot;&gt;})&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-14-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC7&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CourseComponent&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;AfterViewInit&lt;/span&gt;, &lt;span class=&quot;pl-e&quot;&gt;OnInit&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-14-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-14-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC9&quot;&gt;course&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;Course&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-14-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC10&quot;&gt;dataSource&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-14-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC11&quot;&gt;displayedColumns&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-14-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC12&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-14-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC13&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;ViewChild&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;MatPaginator&lt;/span&gt;) paginator&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;MatPaginator&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-14-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC14&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-14-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC15&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;constructor&lt;/span&gt;(&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;coursesService&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CoursesService&lt;/span&gt;, &lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;route&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;ActivatedRoute&lt;/span&gt;) {}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-14-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC16&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-14-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC17&quot;&gt;ngOnInit() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-14-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC18&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;route&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;snapshot&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;data&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-14-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC19&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;coursesService&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-14-ts-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC20&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;id&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;3&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-14-ts-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC21&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-14-ts-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC22&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-14-ts-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC23&quot;&gt;ngAfterViewInit() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-14-ts-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC24&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;page&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-14-ts-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC25&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-14-ts-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC26&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;tap&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessonsPage&lt;/span&gt;())&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot; id=&quot;file-14-ts-L27&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC27&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot; id=&quot;file-14-ts-L28&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC28&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot; id=&quot;file-14-ts-L29&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC29&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot; id=&quot;file-14-ts-L30&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC30&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot; id=&quot;file-14-ts-L31&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC31&quot;&gt;loadLessonsPage() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot; id=&quot;file-14-ts-L32&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC32&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot; id=&quot;file-14-ts-L33&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC33&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;id&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot; id=&quot;file-14-ts-L34&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC34&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot; id=&quot;file-14-ts-L35&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC35&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot; id=&quot;file-14-ts-L36&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC36&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot; id=&quot;file-14-ts-L37&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC37&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot; id=&quot;file-14-ts-L38&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC38&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot; id=&quot;file-14-ts-L39&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC39&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot; id=&quot;file-14-ts-L40&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-14-ts-LC40&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/14.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-14-ts&quot;&gt;14.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&quot;breakingdownthengoninitmethod&quot;&gt;
Breaking down the &lt;code&gt;ngOnInit()&lt;/code&gt; method&lt;/h4&gt;
Let&#39;s start with the &lt;code&gt;course&lt;/code&gt; object: as we can see this object is available at component construction time via the router.&lt;br /&gt;


This data object was retrieved from the backend at router navigation time using a router Data Resolver (see an &lt;a href=&quot;https://github.com/angular-university/angular-material-course/blob/016186af48c2deb7f27fa392121a2aca67998c4f/src/app/services/courses.resolver.ts&quot;&gt;example&lt;/a&gt; here).&lt;br /&gt;


This is a very common design, that ensures that the target navigation screen already has some pre-fetched data ready to display.&lt;br /&gt;


We are also loading the first page of data directly in this method (on line 20).&lt;br /&gt;


&lt;h4 id=&quot;howisthepaginatorlinkedtothedatasource&quot;&gt;
How is the Paginator linked to the Data Source?&lt;/h4&gt;
We can see in the code above that the link between the paginator and the Data Source is done in the &lt;code&gt;ngAfterViewInit()&lt;/code&gt; method, so let&#39;s break it down:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=23.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-23-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-23-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-23-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC2&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;ngAfterViewInit&lt;/span&gt;() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-23-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC3&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;page&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-23-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC4&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-23-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC5&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;tap&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessonsPage&lt;/span&gt;())&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-23-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC6&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-23-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC7&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-23-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC8&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-23-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-23-ts-LC9&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/23.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-23-ts&quot;&gt;23.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
We are using the &lt;code&gt;AfterViewInit&lt;/code&gt; lifecycle hook because we need to make sure that the paginator component queried via &lt;code&gt;@ViewChild&lt;/code&gt; is already available.&lt;br /&gt;


The paginator also has an Observable-based API, and it exposes a &lt;code&gt;page&lt;/code&gt; Observable. This observable will emit a new value every time that the user clicks on the paginator navigation buttons or the page size dropdown.&lt;br /&gt;


So in order to load new pages in response to a pagination event, all we have to do is to subscribe to this observable, and in response to a pagination event, we are going to make a call to the Data Source &lt;code&gt;loadLessons()&lt;/code&gt; method, by calling &lt;code&gt;loadLessonsPage()&lt;/code&gt;.&lt;br /&gt;


In that call to &lt;code&gt;loadLessons()&lt;/code&gt;, we are going to pass to the Data Source what page index we would like to load, and what page size, and that information is taken directly from the paginator.&lt;br /&gt;


&lt;h4 id=&quot;whyhaveweusedthetapoperator&quot;&gt;
Why have we used the &lt;code&gt;tap()&lt;/code&gt; operator?&lt;/h4&gt;
We could also have done the call to the data source from inside a &lt;code&gt;subscribe()&lt;/code&gt; handler, but in this case, we have implemented that call using the pipeable version of the RxJs &lt;code&gt;do&lt;/code&gt; operator called &lt;code&gt;tap&lt;/code&gt;.&lt;br /&gt;


&lt;h4 id=&quot;viewthepaginatorinaction&quot;&gt;
View the Paginator in Action&lt;/h4&gt;
And with this in place, we now have a working Material Paginator! Here is what the Material Paginator looks like on the screen, while displaying page 2 of the lessons list:&lt;br /&gt;


&lt;img alt=&quot;Angular Material Paginator&quot; src=&quot;https://s3-us-west-1.amazonaws.com/angular-university/blog-images/angular-material-data-table/5-material-data-table.png&quot; /&gt;&lt;br /&gt;


Let&#39;s now continue to add more features to our example, let&#39;s add another very commonly needed feature: sortable table headers.&lt;br /&gt;


&lt;h3 id=&quot;addingsortablematerialheaders&quot;&gt;
Adding Sortable Material Headers&lt;/h3&gt;
In order to add sortable headers to our Data Table, we will need to annotate it with the &lt;code&gt;matSort&lt;/code&gt; directive. In this case, we will make only one column in the table sortable, the &lt;code&gt;seqNo&lt;/code&gt; column.&lt;br /&gt;


Here is what the template with all the multiple sort-related directives looks like:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=15.html&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-15-html&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-html&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-15-html-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-15-html-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC2&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;lessons-table mat-elevation-z8&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-e&quot;&gt;dataSource&lt;/span&gt;]=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-15-html-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC3&quot;&gt;&lt;span class=&quot;pl-e&quot;&gt;matSort&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matSortActive&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matSortDirection&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matSortDisableClear&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-15-html-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC4&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-15-html-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC5&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-15-html-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC6&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;mat-sort-header&lt;/span&gt;&amp;gt;#&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-15-html-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC7&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.seqNo}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-15-html-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC8&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-15-html-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC9&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-15-html-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC10&quot;&gt;....&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-15-html-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC11&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-15-html-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC12&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-15-html-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-15-html-LC13&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/15.html&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-15-html&quot;&gt;15.html&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
Besides the &lt;code&gt;matSort&lt;/code&gt; directive, we are also adding a couple of extra auxiliary sort-related directives to the &lt;code&gt;mat-table&lt;/code&gt; component:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;&lt;b&gt;matSortActive&lt;/b&gt;: When the data is passed to the Data Table, its usually already sorted. This directive allows us to inform the Data Table that the data is already initally sorted by the &lt;code&gt;seqNo&lt;/code&gt; column, so the &lt;code&gt;seqNo&lt;/code&gt; column sorting icon will be displayed as an upwards arrow&lt;/li&gt;
&lt;li&gt;&lt;b&gt;matSortDirection&lt;/b&gt;: This is a companion directive to &lt;code&gt;matSortActive&lt;/code&gt;, it specifies the direction of the initial sort. In this case, the data is initially sorted by the &lt;code&gt;seqNo&lt;/code&gt; column in ascending order, and so the column header will adapt the sorting icon accordingly (screenshot below)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;matSortDisableClear&lt;/b&gt;: Sometimes, besides ascending and descending order we might want a third &quot;unsorted&quot; state for the sortable column header, where we can clear the sorting order. In this case, we want to disable that to make sure the &lt;code&gt;seqNo&lt;/code&gt; column always shown either the ascending or descending states&lt;/li&gt;
&lt;/ul&gt;
This is the sort configuration for the whole data table, but we also need to identify exactly what table headers are sortable!&lt;br /&gt;


In our case, only the &lt;code&gt;seqNo&lt;/code&gt; column is sortable, so we are annotating the column header cell with the &lt;code&gt;mat-sort-header&lt;/code&gt; directive.&lt;br /&gt;


And this covers the template changes, let&#39;s now have a look at the changes we made to the &lt;code&gt;CourseComponent&lt;/code&gt; in order to enable table header sorting.&lt;br /&gt;


&lt;h4 id=&quot;linkingthesortablecolumnheadertothedatasource&quot;&gt;
Linking the Sortable column header to the Data Source&lt;/h4&gt;
Just like the case of pagination, the sortable header will expose an Observable that emits values whenever the user clicks on the sortable column header.&lt;br /&gt;


The &lt;code&gt;MatSort&lt;/code&gt; directive then exposes a sort Observable, that can trigger a new page load in the following way:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=16.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-16-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-16-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-16-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC2&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;Component&lt;/span&gt;({&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-16-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC3&quot;&gt;selector: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-16-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC4&quot;&gt;templateUrl: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.html&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-16-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC5&quot;&gt;styleUrls: [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.css&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;]&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-16-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC6&quot;&gt;})&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-16-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC7&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CourseComponent&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;AfterViewInit&lt;/span&gt;, &lt;span class=&quot;pl-e&quot;&gt;OnInit&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-16-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-16-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC9&quot;&gt;course&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;Course&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-16-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC10&quot;&gt;dataSource&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-16-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC11&quot;&gt;displayedColumns&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-16-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC12&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-16-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC13&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;ViewChild&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;MatPaginator&lt;/span&gt;) paginator&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;MatPaginator&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-16-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC14&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;ViewChild&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;MatSort&lt;/span&gt;) sort&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;MatSort&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-16-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC15&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-16-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC16&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;constructor&lt;/span&gt;(&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;coursesService&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CoursesService&lt;/span&gt;, &lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;route&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;ActivatedRoute&lt;/span&gt;) {}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-16-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC17&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-16-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC18&quot;&gt;ngOnInit() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-16-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC19&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;route&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;snapshot&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;data&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-16-ts-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC20&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;coursesService&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-16-ts-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC21&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;id&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;3&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-16-ts-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC22&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-16-ts-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC23&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-16-ts-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC24&quot;&gt;ngAfterViewInit() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-16-ts-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC25&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-16-ts-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC26&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;//&lt;/span&gt; reset the paginator after sorting&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot; id=&quot;file-16-ts-L27&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC27&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sort&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sortChange&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot; id=&quot;file-16-ts-L28&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC28&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot; id=&quot;file-16-ts-L29&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC29&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;merge&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sort&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sortChange&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;page&lt;/span&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot; id=&quot;file-16-ts-L30&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC30&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot; id=&quot;file-16-ts-L31&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC31&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;tap&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessonsPage&lt;/span&gt;())&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot; id=&quot;file-16-ts-L32&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC32&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot; id=&quot;file-16-ts-L33&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC33&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot; id=&quot;file-16-ts-L34&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC34&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot; id=&quot;file-16-ts-L35&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC35&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot; id=&quot;file-16-ts-L36&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC36&quot;&gt;loadLessonsPage() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot; id=&quot;file-16-ts-L37&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC37&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot; id=&quot;file-16-ts-L38&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC38&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;id&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sort&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;direction&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot; id=&quot;file-16-ts-L39&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC39&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot; id=&quot;file-16-ts-L40&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC40&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot; id=&quot;file-16-ts-L41&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC41&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot; id=&quot;file-16-ts-L42&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-16-ts-LC42&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/16.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-16-ts&quot;&gt;16.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
As we can see, the sort Observable is now being merged with the page observable! Now a new page load will be triggered in two cases:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;when a pagination event occurs&lt;/li&gt;
&lt;li&gt;when a sort event occurs&lt;/li&gt;
&lt;/ul&gt;
The sort direction of the &lt;code&gt;seqNo&lt;/code&gt; column is now taken from the sort directive (injected via &lt;code&gt;@ViewChild()&lt;/code&gt;) to the backend.&lt;br /&gt;


Notice that after each sort we are also resetting the paginator, by forcing the first page of the sorted data to be displayed.&lt;br /&gt;


&lt;h4 id=&quot;thematerialsortheaderinaction&quot;&gt;
The Material Sort Header In Action&lt;/h4&gt;
Here is what the Data Table with sortable headers looks like, after loading the data and clicking the sortable header (triggering a descending sort by &lt;code&gt;seqNo&lt;/code&gt;):&lt;br /&gt;


&lt;img alt=&quot;Material Data Table with Sortable Header&quot; src=&quot;https://s3-us-west-1.amazonaws.com/angular-university/blog-images/angular-material-data-table/6-material-data-table.png&quot; /&gt;&lt;br /&gt;


&lt;blockquote&gt;
Notice the sort icon on the &lt;code&gt;seqNo&lt;/code&gt; column&lt;/blockquote&gt;
At this point, we have server pagination and sorting in place. We are now ready to add the final major feature: server-side filtering.&lt;br /&gt;


&lt;h3 id=&quot;addingserversidefiltering&quot;&gt;
Adding Server-Side Filtering&lt;/h3&gt;
In order to implement server-side filtering, the first thing that we need to do is to add a search box to our template.&lt;br /&gt;


And because this is the final version, let&#39;s then display the complete template with all its features: pagination, sorting and also server-side filtering:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=17.html&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-17-html&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-html&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-17-html-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-17-html-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC2&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-17-html-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC3&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-17-html-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC4&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; New part: this is the search box &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-17-html-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC5&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-input-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-17-html-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC6&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;input&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matInput&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;placeholder&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;Search lessons&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; #&lt;span class=&quot;pl-e&quot;&gt;input&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-17-html-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC7&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-input-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-17-html-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-17-html-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC9&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;spinner-container&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;ngIf&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource.loading$ | async&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-17-html-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC10&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-spinner&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-spinner&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-17-html-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC11&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-17-html-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC12&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-17-html-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC13&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;lessons-table mat-elevation-z8&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-e&quot;&gt;dataSource&lt;/span&gt;]=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;dataSource&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-17-html-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC14&quot;&gt;&lt;span class=&quot;pl-e&quot;&gt;matSort&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matSortActive&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matSortDirection&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matSortDisableClear&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-17-html-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC15&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-17-html-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC16&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-17-html-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC17&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;mat-sort-header&lt;/span&gt;&amp;gt;#&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-17-html-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC18&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.seqNo}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-17-html-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC19&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-17-html-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC20&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-17-html-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC21&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-17-html-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC22&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;Description&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-17-html-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC23&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description-cell&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-17-html-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC24&quot;&gt;*&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.description}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-17-html-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC25&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-17-html-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC26&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot; id=&quot;file-17-html-L27&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC27&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;matColumnDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot; id=&quot;file-17-html-L28&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC28&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderCellDef&lt;/span&gt;&amp;gt;Duration&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot; id=&quot;file-17-html-L29&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC29&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;class&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration-cell&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot; id=&quot;file-17-html-L30&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC30&quot;&gt;*&lt;span class=&quot;pl-e&quot;&gt;matCellDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let lesson&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;{{lesson.duration}}&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-cell&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot; id=&quot;file-17-html-L31&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC31&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;ng-container&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot; id=&quot;file-17-html-L32&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC32&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot; id=&quot;file-17-html-L33&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC33&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-header-row&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matHeaderRowDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;displayedColumns&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-header-row&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot; id=&quot;file-17-html-L34&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC34&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt; *&lt;span class=&quot;pl-e&quot;&gt;matRowDef&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;let row; columns: displayedColumns&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-row&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot; id=&quot;file-17-html-L35&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC35&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot; id=&quot;file-17-html-L36&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC36&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-table&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot; id=&quot;file-17-html-L37&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC37&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot; id=&quot;file-17-html-L38&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC38&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;mat-paginator&lt;/span&gt; [&lt;span class=&quot;pl-e&quot;&gt;length&lt;/span&gt;]=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course?.lessonsCount&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; [&lt;span class=&quot;pl-e&quot;&gt;pageSize&lt;/span&gt;]=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;3&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot; id=&quot;file-17-html-L39&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC39&quot;&gt;[&lt;span class=&quot;pl-e&quot;&gt;pageSizeOptions&lt;/span&gt;]=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;[3, 5, 10]&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;mat-paginator&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot; id=&quot;file-17-html-L40&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC40&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot; id=&quot;file-17-html-L41&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-17-html-LC41&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/17.html&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-17-html&quot;&gt;17.html&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&quot;breakingdownthesearchboximplementation&quot;&gt;
Breaking down the Search Box implementation&lt;/h4&gt;
As we can see, the only new part in this final template version is the &lt;code&gt;mat-input-container&lt;/code&gt;, containing the Material Input box where the user types the search query.&lt;br /&gt;


This input box follows a common pattern found in the Material library: The &lt;code&gt;mat-input-container&lt;/code&gt; is wrapping a plain HTML input and projecting it.&lt;br /&gt;


This gives us full access to all standard input properties including for example all the Accessibility-related properties. This also gives us compatibility with Angular Forms, as we can apply Form directives directly in the input HTML element.&lt;br /&gt;


Read more about how to build a similar component in this post: &lt;a href=&quot;https://blog.angular-university.io/angular-ng-content/&quot;&gt;Angular ng-content and Content Projection: The Complete Guide&lt;/a&gt;.&lt;br /&gt;


Notice that there is not even an event handler attached to this input box ! Let&#39;s then have a look at the component and see how this works.&lt;br /&gt;


&lt;h4 id=&quot;finalcomponentwithserverpaginationsortingandfiltering&quot;&gt;
Final Component with Server Pagination, Sorting and Filtering&lt;/h4&gt;
This is the final version of &lt;code&gt;CourseComponent&lt;/code&gt; with all features included:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=18.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-18-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-18-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-18-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC2&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;Component&lt;/span&gt;({&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-18-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC3&quot;&gt;selector: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-18-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC4&quot;&gt;templateUrl: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.html&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-18-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC5&quot;&gt;styleUrls: [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;./course.component.css&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;]&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-18-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC6&quot;&gt;})&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-18-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC7&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CourseComponent&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;OnInit&lt;/span&gt;, &lt;span class=&quot;pl-e&quot;&gt;AfterViewInit&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-18-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC8&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-18-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC9&quot;&gt;course&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;Course&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-18-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC10&quot;&gt;dataSource&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-18-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC11&quot;&gt;displayedColumns&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;seqNo&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;description&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;duration&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-18-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC12&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-18-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC13&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;ViewChild&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;MatPaginator&lt;/span&gt;) paginator&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;MatPaginator&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot; id=&quot;file-18-ts-L14&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC14&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;ViewChild&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;MatSort&lt;/span&gt;) sort&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;MatSort&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot; id=&quot;file-18-ts-L15&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC15&quot;&gt;@&lt;span class=&quot;pl-en&quot;&gt;ViewChild&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;input&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;) input&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;ElementRef&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot; id=&quot;file-18-ts-L16&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC16&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot; id=&quot;file-18-ts-L17&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC17&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;constructor&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot; id=&quot;file-18-ts-L18&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC18&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;route&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;ActivatedRoute&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot; id=&quot;file-18-ts-L19&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC19&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;coursesService&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;CoursesService&lt;/span&gt;) {}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot; id=&quot;file-18-ts-L20&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC20&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot; id=&quot;file-18-ts-L21&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC21&quot;&gt;ngOnInit() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot; id=&quot;file-18-ts-L22&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC22&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;route&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;snapshot&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;data&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;course&lt;span class=&quot;pl-pds&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;];&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot; id=&quot;file-18-ts-L23&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC23&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;LessonsDataSource&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;coursesService&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot; id=&quot;file-18-ts-L24&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC24&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;id&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;asc&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;3&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot; id=&quot;file-18-ts-L25&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC25&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot; id=&quot;file-18-ts-L26&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC26&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot; id=&quot;file-18-ts-L27&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC27&quot;&gt;ngAfterViewInit() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot; id=&quot;file-18-ts-L28&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC28&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot; id=&quot;file-18-ts-L29&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC29&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;//&lt;/span&gt; server-side search&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot; id=&quot;file-18-ts-L30&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC30&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;fromEvent&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;input&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;nativeElement&lt;/span&gt;,&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;keyup&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot; id=&quot;file-18-ts-L31&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC31&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot; id=&quot;file-18-ts-L32&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC32&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;debounceTime&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;150&lt;/span&gt;),&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot; id=&quot;file-18-ts-L33&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC33&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;distinctUntilChanged&lt;/span&gt;(),&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot; id=&quot;file-18-ts-L34&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC34&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;tap&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot; id=&quot;file-18-ts-L35&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC35&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot; id=&quot;file-18-ts-L36&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC36&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessonsPage&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot; id=&quot;file-18-ts-L37&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC37&quot;&gt;})&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot; id=&quot;file-18-ts-L38&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC38&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot; id=&quot;file-18-ts-L39&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC39&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot; id=&quot;file-18-ts-L40&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC40&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot; id=&quot;file-18-ts-L41&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC41&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;//&lt;/span&gt; reset the paginator after sorting&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot; id=&quot;file-18-ts-L42&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC42&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sort&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sortChange&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;43&quot; id=&quot;file-18-ts-L43&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC43&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;44&quot; id=&quot;file-18-ts-L44&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC44&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;//&lt;/span&gt; on sort or paginate events, load a new page&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;45&quot; id=&quot;file-18-ts-L45&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC45&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;merge&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sort&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sortChange&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;page&lt;/span&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;46&quot; id=&quot;file-18-ts-L46&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC46&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;47&quot; id=&quot;file-18-ts-L47&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC47&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;tap&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessonsPage&lt;/span&gt;())&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;48&quot; id=&quot;file-18-ts-L48&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC48&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;49&quot; id=&quot;file-18-ts-L49&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC49&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;50&quot; id=&quot;file-18-ts-L50&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC50&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;51&quot; id=&quot;file-18-ts-L51&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC51&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;52&quot; id=&quot;file-18-ts-L52&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC52&quot;&gt;loadLessonsPage() {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;53&quot; id=&quot;file-18-ts-L53&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC53&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;dataSource&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessons&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;54&quot; id=&quot;file-18-ts-L54&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC54&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;course&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;id&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;55&quot; id=&quot;file-18-ts-L55&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC55&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;input&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;nativeElement&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;value&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;56&quot; id=&quot;file-18-ts-L56&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC56&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;sort&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;direction&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;57&quot; id=&quot;file-18-ts-L57&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC57&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt;,&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;58&quot; id=&quot;file-18-ts-L58&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC58&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageSize&lt;/span&gt;);&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;59&quot; id=&quot;file-18-ts-L59&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC59&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;60&quot; id=&quot;file-18-ts-L60&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC60&quot;&gt;}&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;61&quot; id=&quot;file-18-ts-L61&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-18-ts-LC61&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/18.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-18-ts&quot;&gt;18.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
Let&#39;s then focus on breaking down the server filtering part.&lt;br /&gt;


&lt;h4 id=&quot;gettingareferencetothesearchinputbox&quot;&gt;
Getting a reference to the Search Input Box&lt;/h4&gt;
We can see that we have injected a DOM reference to the &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; element using &lt;code&gt;@ViewChild(&#39;input&#39;)&lt;/code&gt;. Notice that this time around, the injection mechanism gave us a reference to a DOM element and not to a component.&lt;br /&gt;


With that DOM reference, here is the part that triggers a server-side search when the user types in a new query:&lt;br /&gt;


&lt;script src=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf.js?file=19.ts&quot;&gt;&lt;/script&gt;&lt;link href=&quot;https://assets-cdn.github.com/assets/gist-embed-1baaff35daab552f019ad459494450f1.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;&lt;div class=&quot;gist&quot; id=&quot;gist85577366&quot;&gt;
&lt;div class=&quot;gist-file&quot;&gt;
&lt;div class=&quot;gist-data&quot;&gt;
&lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;
&lt;div class=&quot;file&quot; id=&quot;file-19-ts&quot;&gt;
&lt;div class=&quot;blob-wrapper data type-typescript&quot; itemprop=&quot;text&quot;&gt;
&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;
      &lt;tbody&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot; id=&quot;file-19-ts-L1&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC1&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot; id=&quot;file-19-ts-L2&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC2&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;//&lt;/span&gt; server-side search&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot; id=&quot;file-19-ts-L3&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC3&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;fromEvent&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;input&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;nativeElement&lt;/span&gt;,&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;keyup&lt;span class=&quot;pl-pds&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot; id=&quot;file-19-ts-L4&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC4&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;pipe&lt;/span&gt;(&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot; id=&quot;file-19-ts-L5&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC5&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;debounceTime&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;150&lt;/span&gt;),&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot; id=&quot;file-19-ts-L6&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC6&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;distinctUntilChanged&lt;/span&gt;(),&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot; id=&quot;file-19-ts-L7&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC7&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;tap&lt;/span&gt;(() &lt;span class=&quot;pl-k&quot;&gt;=&amp;gt;&lt;/span&gt; {&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot; id=&quot;file-19-ts-L8&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC8&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;paginator&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;pageIndex&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;;&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot; id=&quot;file-19-ts-L9&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC9&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;loadLessonsPage&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot; id=&quot;file-19-ts-L10&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC10&quot;&gt;})&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot; id=&quot;file-19-ts-L11&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC11&quot;&gt;)&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot; id=&quot;file-19-ts-L12&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC12&quot;&gt;.&lt;span class=&quot;pl-en&quot;&gt;subscribe&lt;/span&gt;();&lt;/td&gt;
      &lt;/tr&gt;
&lt;tr&gt;
        &lt;td class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot; id=&quot;file-19-ts-L13&quot;&gt;&lt;/td&gt;
        &lt;td class=&quot;blob-code blob-code-inner js-file-line&quot; id=&quot;file-19-ts-LC13&quot;&gt;&lt;/td&gt;
      &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;gist-meta&quot;&gt;
&lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf/raw/1d1038710d03710805e06fca4220766ce564f90a/19.ts&quot; style=&quot;float: right;&quot;&gt;view raw&lt;/a&gt; &lt;a href=&quot;https://gist.github.com/jhades/9cdcff38c5f5092069363ddf69bda5bf#file-19-ts&quot;&gt;19.ts&lt;/a&gt; hosted with ❤ by &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
What we are doing in this is snippet is: we are taking the search input box and we are creating an Observable using &lt;code&gt;fromEvent&lt;/code&gt;.&lt;br /&gt;


This Observable will emit a value every time that a new keyUp event occurs. To this Observable we will then apply a couple of operators:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;&lt;code&gt;debounceTime(150)&lt;/code&gt;: The user can type quite quickly in the input box, and that could trigger a lot of server requests. With this operator, we are limiting the amount of server requests emitted to a maximum of one every 150ms.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;distinctUntilChanged()&lt;/code&gt;: This operator will eliminate duplicate values&lt;/li&gt;
&lt;/ul&gt;
And with these two operators in place, we can now trigger a page load by passing the query string, the page size and page index to the the Data Source via the &lt;code&gt;tap()&lt;/code&gt; operator.&lt;br /&gt;


Let&#39;s now have a look at the what the screen would look like if the user types the search term &quot;hello&quot;:&lt;br /&gt;


&lt;img alt=&quot;Angular Material Server Filtering&quot; src=&quot;https://s3-us-west-1.amazonaws.com/angular-university/blog-images/angular-material-data-table/7-material-data-table.png&quot; /&gt;&lt;br /&gt;


And with this in place, we have completed our example! We now have a complete solution for how to implement an Angular Material Data Table with server-side pagination, sorting and filtering.&lt;br /&gt;


Let&#39;s now quickly summarize what we have learned.&lt;br /&gt;


&lt;h3 id=&quot;conclusions&quot;&gt;
Conclusions&lt;/h3&gt;
The Data Table, the Data Source and related components are a good example of a reactive design that uses an Observable-based API. Let&#39;s highlight the key points of the design:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;the Material Data Table expects to receive the data from the Data Source via an Observable&lt;/li&gt;
&lt;li&gt;The Data Source main role is to build and provide an Observable that emits new versions of the tabular data to the Data Table&lt;/li&gt;
&lt;li&gt;A component class like &lt;code&gt;CourseService&lt;/code&gt; will then &quot;glue&quot; everything together&lt;/li&gt;
&lt;/ul&gt;
This reactive design helps to ensure the loose coupling of the multiple elements involved, and provides a strong separation of concerns.&lt;br /&gt;


&lt;h3 id=&quot;sourcecodegithubrunningexample&quot;&gt;
Source Code + Github Running Example&lt;/h3&gt;
A running example of the complete code is available &lt;a href=&quot;https://github.com/angular-university/angular-material-course/tree/2-data-table-finished&quot;&gt;here&lt;/a&gt; on this branch on Github, and it includes a small backend Express server that serves the data and does the server-side sorting/pagination/filtering.&lt;br /&gt;


I hope that this post helps with getting started with the Angular Material Data Table and that you enjoyed it!&lt;br /&gt;


&lt;div class=&quot;remove-on-print&quot;&gt;
If you have some questions or comments please let me know in the comments below and I will get back to you.&lt;/div&gt;
&lt;div class=&quot;remove-on-print&quot;&gt;
To get notified of upcoming posts on Angular Material and other Angular topics, I invite you to subscribe to our newsletter:&lt;/div&gt;
&lt;script src=&quot;//static.mailerlite.com/data/webforms/432435/n5z2c6.js?v1&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;style&gt;
 
 
      @import url(&#39;https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i&amp;amp;subset=cyrillic,cyrillic-ext,latin-ext&#39;);
              

 #mlb2-5193153,
 #mlb2-5193153 *,
 #mlb2-5193153 a:hover,
 #mlb2-5193153 a:visited,
 #mlb2-5193153 a:focus,
 #mlb2-5193153 a:active {
     overflow:visible;
     position:static;
     background:none;
     border:none;
     bottom:auto;
     clear:none;
     cursor:default;
     float:none;
     letter-spacing:normal;
     line-height:normal;
     text-align:left;
     text-indent:0;
     text-transform:none;
     visibility:visible;
     white-space:normal;
 
     max-height:none;
     max-width:none;
     left:auto;
     min-height:0;
     min-width:0;
     right:auto;
     top:auto;
     width:auto;
     z-index:auto;
 
     text-shadow: none;
     box-shadow: none;
     outline: medium none;
 }
 
 #mlb2-5193153 a:hover {
  cursor: pointer !important;
 }
 
 #mlb2-5193153 h4 {
     font-weight: normal;
 }

 #mlb2-5193153 .subscribe-form {
 
  padding: 20px;
    width: 350px !important;
    border: 2px solid #F6F6F6 !important;
  background: #f6f6f6 none !important;
  border-radius: 0px !important;
  box-sizing: border-box !important;
 
 
 }
 
 #mlb2-5193153 .ml-block-form {
  
  margin-bottom: 0px;
 
 }
    
    #mlb2-5193153 .subscribe-form .form-section {
    
        margin-bottom: 20px;
        width: 100%;
    
    }
    
    #mlb2-5193153 .subscribe-form .form-section.mb10 {
    
        margin-bottom: 10px;
        float: left;
    
    }
    
    #mlb2-5193153 .subscribe-form .form-section.mb0 {
    
        margin-bottom: 0px;
    
    }

    #mlb2-5193153 .subscribe-form .form-section h4 {
    
        margin: 0px 0px 10px 0px !important;
        padding: 0px !important;
        color: #000000 !important;
        font-family: &#39;Open Sans&#39;, sans-serif !important;
        font-size: 28px !important;
        line-height: 100%;
        text-align: left !important;
    
    }

    #mlb2-5193153 .subscribe-form .form-section p,
    #mlb2-5193153 .subscribe-form .form-section li {
    
        line-height: 150%;
        padding: 0px !important;
        margin: 0px 0px 10px 0px;
        color: #000000 !important;
        font-family: &#39;Open Sans&#39;, sans-serif !important;
        font-size: 14px !important;
    
    }

    #mlb2-5193153 .subscribe-form .form-section a {
    
        font-size: 14px !important;
    
    }

    #mlb2-5193153 .subscribe-form .form-section .confirmation_checkbox {
    
        line-height: 150%;
        padding: 0px !important;
        margin: 0px 0px 15px 0px !important;
        color: #000000 !important;
        font-family: &#39;Open Sans&#39;, sans-serif !important;
        font-size: 12px !important;
        font-weight: normal !important;
    
    }

    #mlb2-5193153 .subscribe-form .form-section .confirmation_checkbox input[type=&quot;checkbox&quot;] {
    
        margin-right: 5px !important;
    
    }

    #mlb2-5193153 .subscribe-form .form-section .form-group {
    
        margin-bottom: 15px;
    
    }

    #mlb2-5193153 .subscribe-form .form-section .form-group label {
    
        float: left;
        margin-bottom: 10px;
        width: 100%;
        line-height: 100%;
        color: #000000 !important;
        font-family: &#39;Open Sans&#39;, sans-serif !important;
        font-size: 14px !important;
    
    }

    #mlb2-5193153 .subscribe-form .form-section .checkbox {
        

        width: 100%;
        margin: 0px 0px 10px 0px;
        

    }

    #mlb2-5193153 .subscribe-form .form-section .checkbox label {

    

        color: #000000 !important;
        font-family: &#39;Open Sans&#39;, sans-serif !important;
        font-size: 14px !important;
    

    }

    #mlb2-5193153 .subscribe-form .form-section .checkbox input {

    
        margin: 0px 5px 0px 0px;
    

    }
    
     #mlb2-5193153 .subscribe-form .form-section .checkbox input[type=checkbox] {

    
       -webkit-appearance: checkbox;
       opacity: 1;
    

    }


    #mlb2-5193153.ml-subscribe-form .form-group .form-control {

    

        width: 100%;
        font-size: 13px;
        padding: 10px 10px;
        height: auto;
        font-family: Arial;
        border-radius: 0px;
        border: 1px solid #cccccc !important;
        color: #000000 !important;
        background-color: #FFFFFF !important;
     -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
     box-sizing: border-box;
        clear: left;

    

    }

    #mlb2-5193153.ml-subscribe-form button {

    

        border: none !important;
        cursor: pointer !important;
        width: 100% !important;
        border-radius: 0px !important;
        height: 40px !important;
        background-color: #1976d2 !important;
        color: #FFFFFF !important;
        font-family: &#39;Arial&#39;, sans-serif !important;
        font-size: 16px !important;
        text-align: center !important;
        padding: 0 !important;
        margin: 0 !important;
        position: relative!important;

    

    }

    #mlb2-5193153.ml-subscribe-form button.gradient-on {

    

            background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
            background: -o-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
            background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);
            background: linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.2) 100%);

    

    }

    #mlb2-5193153.ml-subscribe-form button.gradient-on:hover {

    

            background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 100%);
            background: -o-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 100%);
            background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 100%);
            background: linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.3) 100%);

    

    }

    #mlb2-5193153.ml-subscribe-form button[disabled] {

    

            cursor: not-allowed!important;

    

    }

    #mlb2-5193153.ml-subscribe-form .form-section.ml-error label {

    

        color: red!important;

    

    }

    #mlb2-5193153.ml-subscribe-form .form-group.ml-error label {

    

        color: red!important;

    

    }

    #mlb2-5193153.ml-subscribe-form .form-group.ml-error .form-control  {

    

        border-color: red!important;

    

    }
    

    
        
    
    
            
    @media (max-width: 768px) {
     
     #mlb2-5193153 {
      
      width: 100% !important;
      
     }
     
     #mlb2-5193153 form.ml-block-form,
     #mlb2-5193153.ml-subscribe-form .subscribe-form {
   
   width: 100% !important;
   
  }
  
 }
 
     
    
&lt;/style&gt;



&lt;div class=&quot;ml-subscribe-form ml-subscribe-form-5193153&quot; id=&quot;mlb2-5193153&quot;&gt;
&lt;div class=&quot;ml-vertical-align-center&quot;&gt;
&lt;div class=&quot;subscribe-form ml-block-success&quot; style=&quot;display: none;&quot;&gt;
&lt;div class=&quot;form-section&quot;&gt;
&lt;h4&gt;
Angular University&lt;/h4&gt;
Thank you! You have successfully subscribed to our newsletter.&lt;/div&gt;
&lt;/div&gt;
&lt;form action=&quot;https://app.mailerlite.com/webforms/submit/n5z2c6&quot; class=&quot;ml-block-form&quot; data-code=&quot;n5z2c6&quot; data-id=&quot;432435&quot; method=&quot;POST&quot; target=&quot;_blank&quot;&gt;
&lt;div class=&quot;subscribe-form&quot;&gt;
&lt;div class=&quot;form-section mb10&quot;&gt;
&lt;h4&gt;
Angular University&lt;/h4&gt;
Watch 25% of all Angular Video Courses, get timely Angular News and PDFs:&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;form-section&quot;&gt;
&lt;div class=&quot;form-group ml-field-email ml-validate-required ml-validate-email&quot;&gt;
&lt;input autocapitalize=&quot;off&quot; autocomplete=&quot;email&quot; autocorrect=&quot;off&quot; class=&quot;form-control&quot; name=&quot;fields[email]&quot; placeholder=&quot;Email*&quot; spellcheck=&quot;false&quot; type=&quot;email&quot; value=&quot;&quot; x-autocompletetype=&quot;email&quot; /&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;input name=&quot;ml-submit&quot; type=&quot;hidden&quot; value=&quot;1&quot; /&gt; &lt;button class=&quot;primary gradient-on&quot; type=&quot;submit&quot;&gt; Subscribe &amp;amp; Get Free Course &lt;/button&gt; &lt;button class=&quot;loading gradient-on&quot; disabled=&quot;disabled&quot; style=&quot;display: none;&quot; type=&quot;button&quot;&gt; &lt;img height=&quot;20&quot; src=&quot;https://static.mailerlite.com/images/rolling@2x.gif&quot; style=&quot;height: 20px; width: 20px;&quot; width=&quot;20&quot; /&gt; &lt;/button&gt;
      &lt;/div&gt;
&lt;/form&gt;
&lt;script&gt;
    function ml_webform_success_5193153 () {
               var $ = ml_jQuery || jQuery;
    
        $(&#39;.ml-subscribe-form-5193153 .ml-block-success&#39;).show();
        $(&#39;.ml-subscribe-form-5193153 .ml-block-form&#39;).hide();
        };
  &lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&quot;otherangularmaterialposts&quot;&gt;
Other Angular Material posts:&lt;/h3&gt;
&lt;a href=&quot;https://blog.angular-university.io/angular-material-dialog/&quot;&gt;Angular Material Dialog: A Complete Example&lt;/a&gt;&lt;br /&gt;


&lt;h3 class=&quot;remove-on-print&quot;&gt;
Video Lessons Available on YouTube&lt;/h3&gt;
&lt;div class=&quot;remove-on-print&quot;&gt;
Have a look at the Angular University Youtube channel, we publish about 25% to a third of our video tutorials there, new videos are published all the time.&lt;/div&gt;
&lt;div class=&quot;remove-on-print&quot;&gt;
&lt;a href=&quot;http://www.youtube.com/channel/UC3cEGKhg3OERn-ihVsJcb7A?sub_confirmation=1&quot;&gt;Subscribe&lt;/a&gt; to get new video tutorials:&lt;/div&gt;
&lt;div class=&quot;remove-on-print&quot; id=&quot;playlist-placeholder&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/PRQCAL_RMVo?list=PLOa5YIicjJ-VF39NLCZ304G6GDjvpJEca&quot; style=&quot;margin: 0 auto 40px auto;&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/section&gt;</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/1228847098534664831/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2018/03/angular-material-data-table-complete.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1228847098534664831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1228847098534664831'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2018/03/angular-material-data-table-complete.html' title='Angular Material Data Table: A Complete Example (Server Pagination, Filtering, Sorting)'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/PRQCAL_RMVo/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-3940045119123016708</id><published>2017-10-08T22:50:00.000-04:00</published><updated>2017-10-08T22:50:04.498-04:00</updated><title type='text'>Spring Data JPA using Hibernate and Java Configuration with Annotations</title><content type='html'>&lt;div class=&quot;entry-content&quot;&gt;
In this tutorial&amp;nbsp;I’ll show you how to&amp;nbsp;use Spring Data JPA&amp;nbsp;to integrate a relational&amp;nbsp;database (PostgreSQL in my example) into a Spring Boot application.&lt;br /&gt;
I’ll use these technologies and tools:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Spring Tool Suite (STS)&amp;nbsp;3.8.4.RELEASE&lt;/li&gt;
&lt;li&gt;Java 8&lt;/li&gt;
&lt;li&gt;Spring Boot 1.5.3.RELEASE&lt;/li&gt;
&lt;li&gt;Maven 3.3.9&lt;/li&gt;
&lt;li&gt;PostgreSQL&amp;nbsp;9.6.2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
1. The Project Structure&lt;/h2&gt;
The&amp;nbsp;final folder structure of our project.&lt;br /&gt;
&lt;img alt=&quot;The folder structure of the Spring Data JPA project as seen in STS&quot; class=&quot;alignnone wp-image-1110 size-large&quot; height=&quot;516&quot; sizes=&quot;(max-width: 660px) 100vw, 660px&quot; src=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-demo-project-structure-1024x800.png&quot; srcset=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-demo-project-structure-1024x800.png 1024w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-demo-project-structure-300x234.png 300w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-demo-project-structure-768x600.png 768w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-demo-project-structure.png 1117w&quot; width=&quot;660&quot; /&gt;&lt;br /&gt;
&lt;h2&gt;
2. Create a new Spring Boot project&lt;/h2&gt;
If you’re using STS, you can easily create a starter project by either selecting &lt;i&gt;File &amp;gt; New &amp;gt; Spring Starter Project&amp;nbsp;&lt;/i&gt;from the main menu or right-clicking on the Package Explorer and select&amp;nbsp;&lt;i&gt;New &amp;gt; Spring Starter Project&lt;/i&gt;.&lt;span id=&quot;more-1108&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;img alt=&quot;STS command to create a new Spring Starter Project&quot; class=&quot;alignnone size-large wp-image-1101&quot; height=&quot;599&quot; sizes=&quot;(max-width: 660px) 100vw, 660px&quot; src=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-starter-project-sts-1024x929.png&quot; srcset=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-starter-project-sts-1024x929.png 1024w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-starter-project-sts-300x272.png 300w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-starter-project-sts-768x697.png 768w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-starter-project-sts.png 1549w&quot; width=&quot;660&quot; /&gt;&lt;br /&gt;
&lt;img alt=&quot;Dialog window to set parameters for the Spring Data JPA project&quot; class=&quot;alignnone wp-image-1113 size-large&quot; height=&quot;672&quot; sizes=&quot;(max-width: 660px) 100vw, 660px&quot; src=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-starting-project-1006x1024.png&quot; srcset=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-starting-project-1006x1024.png 1006w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-starting-project-295x300.png 295w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-starting-project-768x781.png 768w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-starting-project.png 1435w&quot; width=&quot;660&quot; /&gt;&lt;br /&gt;
&lt;img alt=&quot;The list of dependencies of the Spring Data JPA project&quot; class=&quot;alignnone wp-image-1111 size-large&quot; height=&quot;670&quot; sizes=&quot;(max-width: 660px) 100vw, 660px&quot; src=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-dependencies-postgresql-1008x1024.png&quot; srcset=&quot;https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-dependencies-postgresql-1008x1024.png 1008w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-dependencies-postgresql-295x300.png 295w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-dependencies-postgresql-768x780.png 768w, https://www.thomasvitale.com/wp-content/uploads/2017/05/spring-data-jpa-dependencies-postgresql.png 1439w&quot; width=&quot;660&quot; /&gt;&lt;br /&gt;
In case you’re using another IDE like Eclipse, Netbeans or IntelliJ IDEA, you can create a new Maven project and add to the &lt;i&gt;pom.xml&lt;/i&gt; file the dependencies listed in the next paragraph.&lt;br /&gt;
&lt;h2&gt;
3. Maven Dependencies&lt;/h2&gt;
&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;xml&quot; style=&quot;display: none;&quot;&gt;spring-boot-starter-data-jpa&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;spring-boot-starter-data-jpa&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;is the fundamental dependency for our project, then we need the driver for whatever SQL database we have chosen, in this case &lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;xml&quot; style=&quot;display: none;&quot;&gt;postgresql&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;postgresql&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;
&lt;div class=&quot;EnlighterJSTabPane enlighterEnlighterJSTabPane&quot;&gt;
&lt;div class=&quot;controls&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;selected&quot;&gt;pom.xml&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;pane&quot;&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot; style=&quot;display: block;&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;project&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;http://maven.apache.org/POM/4.0.0&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;xmlns:xsi&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;xsi:schemaLocation&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;modelVersion&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;4.0.0&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/modelVersion&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;groupId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;com.thomasvitale&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;Application&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;version&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;0.0.1-SNAPSHOT&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;packaging&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;jar&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/packaging&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;name&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;Application&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;description&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;Demo application for Spring Data JPA&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;parent&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;groupId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;org.springframework.boot&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;spring-boot-starter-parent&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;version&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;1.5.3.RELEASE&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;relativePath&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;&amp;lt;!-- lookup parent from repository --&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/parent&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;properties&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;project.build.sourceEncoding&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;UTF-8&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/project.build.sourceEncoding&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;project.reporting.outputEncoding&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;UTF-8&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/project.reporting.outputEncoding&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;java.version&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;1.8&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/java.version&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/properties&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;dependencies&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;dependency&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;groupId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;org.springframework.boot&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;spring-boot-starter-data-jpa&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;dependency&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;groupId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;org.postgresql&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;postgresql&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;scope&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;runtime&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;dependency&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;groupId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;org.springframework.boot&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;spring-boot-starter-test&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;scope&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;build&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;plugins&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;plugin&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;groupId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;org.springframework.boot&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;spring-boot-maven-plugin&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/plugins&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/build&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;
  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;

  &amp;lt;groupId&amp;gt;com.thomasvitale&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;Application&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;
  &amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;

  &amp;lt;name&amp;gt;Application&amp;lt;/name&amp;gt;
  &amp;lt;description&amp;gt;Demo application for Spring Data JPA&amp;lt;/description&amp;gt;

  &amp;lt;parent&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.5.3.RELEASE&amp;lt;/version&amp;gt;
    &amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;
  &amp;lt;/parent&amp;gt;

  &amp;lt;properties&amp;gt;
    &amp;lt;project.build.sourceEncoding&amp;gt;UTF-8&amp;lt;/project.build.sourceEncoding&amp;gt;
    &amp;lt;project.reporting.outputEncoding&amp;gt;UTF-8&amp;lt;/project.reporting.outputEncoding&amp;gt;
    &amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;
  &amp;lt;/properties&amp;gt;

  &amp;lt;dependencies&amp;gt;
  
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;spring-boot-starter-data-jpa&amp;lt;/artifactId&amp;gt;
    &amp;lt;/dependency&amp;gt;

    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.postgresql&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;postgresql&amp;lt;/artifactId&amp;gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
  
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;
      &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
    
  &amp;lt;/dependencies&amp;gt;

  &amp;lt;build&amp;gt;
    &amp;lt;plugins&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;
      &amp;lt;/plugin&amp;gt;
    &amp;lt;/plugins&amp;gt;
  &amp;lt;/build&amp;gt;

&amp;lt;/project&amp;gt;&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-group=&quot;pom.xml&quot; data-enlighter-language=&quot;xml&quot; data-enlighter-title=&quot;pom.xml&quot; style=&quot;display: none;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;
  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;

  &amp;lt;groupId&amp;gt;com.thomasvitale&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;Application&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;
  &amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;

  &amp;lt;name&amp;gt;Application&amp;lt;/name&amp;gt;
  &amp;lt;description&amp;gt;Demo application for Spring Data JPA&amp;lt;/description&amp;gt;

  &amp;lt;parent&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.5.3.RELEASE&amp;lt;/version&amp;gt;
    &amp;lt;relativePath/&amp;gt; &amp;lt;!-- lookup parent from repository --&amp;gt;
  &amp;lt;/parent&amp;gt;

  &amp;lt;properties&amp;gt;
    &amp;lt;project.build.sourceEncoding&amp;gt;UTF-8&amp;lt;/project.build.sourceEncoding&amp;gt;
    &amp;lt;project.reporting.outputEncoding&amp;gt;UTF-8&amp;lt;/project.reporting.outputEncoding&amp;gt;
    &amp;lt;java.version&amp;gt;1.8&amp;lt;/java.version&amp;gt;
  &amp;lt;/properties&amp;gt;

  &amp;lt;dependencies&amp;gt;
  
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;spring-boot-starter-data-jpa&amp;lt;/artifactId&amp;gt;
    &amp;lt;/dependency&amp;gt;

    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.postgresql&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;postgresql&amp;lt;/artifactId&amp;gt;
      &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
  
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt;/artifactId&amp;gt;
      &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
    
  &amp;lt;/dependencies&amp;gt;

  &amp;lt;build&amp;gt;
    &amp;lt;plugins&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;
      &amp;lt;/plugin&amp;gt;
    &amp;lt;/plugins&amp;gt;
  &amp;lt;/build&amp;gt;

&amp;lt;/project&amp;gt;&lt;/pre&gt;
I’m using PostgreSQL, but this example works fine also with other relational databases. For example, if you want to use MySQL, all you need to do is replace the &lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;xml&quot; style=&quot;display: none;&quot;&gt;postgresql&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;postgresql&lt;/span&gt;&lt;/span&gt; dependency with the mysql one.&lt;br /&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;xml&quot; style=&quot;display: none;&quot;&gt;&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;mysql-connector-java&amp;lt;/artifactId&amp;gt;
  &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;dependency&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;groupId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;mysql-connector-java&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;scope&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;runtime&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;mysql-connector-java&amp;lt;/artifactId&amp;gt;
  &amp;lt;scope&amp;gt;runtime&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;
4. Spring Configuration using Java Annotations and Hibernate&lt;/h2&gt;
Spring lets you use either&amp;nbsp;Java configuration or&amp;nbsp;XML configuration or a mix of the two. I’ll use a pure Java configuration. There are a few implementations of JPA, in this example Hibernate is used. Its&amp;nbsp;properties are stored in a dedicated file.&lt;br /&gt;
&lt;div class=&quot;EnlighterJSTabPane enlighterEnlighterJSTabPane&quot;&gt;
&lt;div class=&quot;controls&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;selected&quot;&gt;JpaConfig.java&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;pane&quot;&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot; style=&quot;display: block;&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;&quot;&gt; com.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;thomasvitale&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; java.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;util&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Properties&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; javax.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;persistence&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;EntityManagerFactory&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; javax.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;sql&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;DataSource&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;beans&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;factory&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;annotation&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Autowired&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;annotation&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Bean&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;annotation&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Configuration&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;annotation&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;PropertySource&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;core&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Environment&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;dao&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;annotation&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;PersistenceExceptionTranslationPostProcessor&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;jpa&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;EnableJpaRepositories&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;jdbc&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;datasource&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;DriverManagerDataSource&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;orm&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;jpa&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;JpaTransactionManager&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;orm&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;jpa&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;LocalContainerEntityManagerFactoryBean&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;orm&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;jpa&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;vendor&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Database&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;orm&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;jpa&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;vendor&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;HibernateJpaVendorAdapter&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;transaction&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;PlatformTransactionManager&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;transaction&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;annotation&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;EnableTransactionManagement&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Configuration&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@EnableTransactionManagement&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@EnableJpaRepositories&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;basePackages = &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;com.thomasvitale.repository&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@PropertySource&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;classpath:jpa.properties&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;&quot;&gt; JpaConfig &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Autowired&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;&quot;&gt; Environment env;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Bean&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; LocalContainerEntityManagerFactoryBean &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;entityManagerFactory&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; HibernateJpaVendorAdapter vendorAdapter = &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;HibernateJpaVendorAdapter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; vendorAdapter.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setDatabase&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;Database.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;POSTGRESQL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; vendorAdapter.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setGenerateDdl&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; LocalContainerEntityManagerFactoryBean em = &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;LocalContainerEntityManagerFactoryBean&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; em.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setDataSource&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;dataSource&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; em.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setPackagesToScan&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;com.thomasvitale.model&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; em.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setJpaVendorAdapter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;vendorAdapter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; em.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setJpaProperties&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;additionalProperties&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; em;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Bean&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; DataSource &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;dataSource&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; DriverManagerDataSource dataSource = &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;DriverManagerDataSource&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; dataSource.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setDriverClassName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;env.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;getProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.connection.driver_class&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; dataSource.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setUrl&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;env.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;getProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.connection.url&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; dataSource.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setUsername&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;env.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;getProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.connection.username&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; dataSource.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setPassword&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;env.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;getProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.connection.password&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; dataSource;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Bean&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; PlatformTransactionManager &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;transactionManager&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;EntityManagerFactory emf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; JpaTransactionManager transactionManager = &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;JpaTransactionManager&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; transactionManager.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setEntityManagerFactory&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;emf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; transactionManager;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Bean&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; PersistenceExceptionTranslationPostProcessor &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;exceptionTranslation&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;PersistenceExceptionTranslationPostProcessor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; Properties &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;additionalProperties&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; Properties properties = &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;Properties&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; properties.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.hbm2ddl.auto&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, env.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;getProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.hbm2ddl.auto&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; properties.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.dialect&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, env.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;getProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.dialect&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; properties.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.current_session_context_class&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, env.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;getProperty&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;hibernate.current_session_context_class&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; properties;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;package com.thomasvitale;

import java.util.Properties;

import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement 
@EnableJpaRepositories(basePackages = &quot;com.thomasvitale.repository&quot;)
@PropertySource(&quot;classpath:jpa.properties&quot;)
public class JpaConfig {
  
  @Autowired
  private Environment env;

  @Bean
  public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    
    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setDatabase(Database.POSTGRESQL);
    vendorAdapter.setGenerateDdl(true);
    
    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    em.setDataSource(dataSource());
    em.setPackagesToScan(&quot;com.thomasvitale.model&quot;);
    em.setJpaVendorAdapter(vendorAdapter);
    em.setJpaProperties(additionalProperties());
 
    return em;
  }
  
  @Bean
  public DataSource dataSource(){
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(env.getProperty(&quot;hibernate.connection.driver_class&quot;));
    dataSource.setUrl(env.getProperty(&quot;hibernate.connection.url&quot;));
    dataSource.setUsername(env.getProperty(&quot;hibernate.connection.username&quot;));
    dataSource.setPassword(env.getProperty(&quot;hibernate.connection.password&quot;));
    return dataSource;
  }
  
  @Bean
  public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(emf);
  
    return transactionManager;
  }
  
  @Bean
  public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
    return new PersistenceExceptionTranslationPostProcessor();
  }

  Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty(&quot;hibernate.hbm2ddl.auto&quot;, env.getProperty(&quot;hibernate.hbm2ddl.auto&quot;));
    properties.setProperty(&quot;hibernate.dialect&quot;, env.getProperty(&quot;hibernate.dialect&quot;));
    properties.setProperty(&quot;hibernate.current_session_context_class&quot;, env.getProperty(&quot;hibernate.current_session_context_class&quot;));
    return properties;
  }

}&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-group=&quot;JpaConfig.java&quot; data-enlighter-language=&quot;java&quot; data-enlighter-title=&quot;JpaConfig.java&quot; style=&quot;display: none;&quot;&gt;package com.thomasvitale;

import java.util.Properties;

import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement 
@EnableJpaRepositories(basePackages = &quot;com.thomasvitale.repository&quot;)
@PropertySource(&quot;classpath:jpa.properties&quot;)
public class JpaConfig {
  
  @Autowired
  private Environment env;

  @Bean
  public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    
    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setDatabase(Database.POSTGRESQL);
    vendorAdapter.setGenerateDdl(true);
    
    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    em.setDataSource(dataSource());
    em.setPackagesToScan(&quot;com.thomasvitale.model&quot;);
    em.setJpaVendorAdapter(vendorAdapter);
    em.setJpaProperties(additionalProperties());
 
    return em;
  }
  
  @Bean
  public DataSource dataSource(){
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(env.getProperty(&quot;hibernate.connection.driver_class&quot;));
    dataSource.setUrl(env.getProperty(&quot;hibernate.connection.url&quot;));
    dataSource.setUsername(env.getProperty(&quot;hibernate.connection.username&quot;));
    dataSource.setPassword(env.getProperty(&quot;hibernate.connection.password&quot;));
    return dataSource;
  }
  
  @Bean
  public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(emf);
  
    return transactionManager;
  }
  
  @Bean
  public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
    return new PersistenceExceptionTranslationPostProcessor();
  }

  Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty(&quot;hibernate.hbm2ddl.auto&quot;, env.getProperty(&quot;hibernate.hbm2ddl.auto&quot;));
    properties.setProperty(&quot;hibernate.dialect&quot;, env.getProperty(&quot;hibernate.dialect&quot;));
    properties.setProperty(&quot;hibernate.current_session_context_class&quot;, env.getProperty(&quot;hibernate.current_session_context_class&quot;));
    return properties;
  }

}&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSTabPane enlighterEnlighterJSTabPane&quot;&gt;
&lt;div class=&quot;controls&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;selected&quot;&gt;jpa.properties&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;pane&quot;&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot; style=&quot;display: block;&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.connection.username=db-user&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.connection.password=db-password&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.connection.url=jdbc:postgresql&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;://localhost:5432/app&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.connection.driver_class=org.postgresql.Driver&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.current_session_context_class=thread&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.hbm2ddl.auto=validate&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.show_sql=false&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.format_sql=false&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;hibernate.connection.username=db-user
hibernate.connection.password=db-password
hibernate.connection.url=jdbc:postgresql://localhost:5432/app
hibernate.connection.driver_class=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.current_session_context_class=thread
hibernate.hbm2ddl.auto=validate
hibernate.show_sql=false
hibernate.format_sql=false&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-group=&quot;jpa.properties&quot; data-enlighter-title=&quot;jpa.properties&quot; style=&quot;display: none;&quot;&gt;hibernate.connection.username=db-user
hibernate.connection.password=db-password
hibernate.connection.url=jdbc:postgresql://localhost:5432/app
hibernate.connection.driver_class=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.current_session_context_class=thread
hibernate.hbm2ddl.auto=validate
hibernate.show_sql=false
hibernate.format_sql=false&lt;/pre&gt;
If you’re using MySQL, pay attention to replace line 36 of &lt;i&gt;JpaConfig.java&lt;/i&gt; with this one:&amp;nbsp;&lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;java&quot; style=&quot;display: none;&quot;&gt;vendorAdapter.setDatabase(Database.MYSQL);&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;vendorAdapter.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setDatabase&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;Database.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;MYSQL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/span&gt; and change the relative values in the jpa.properties file:&lt;br /&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;null&quot; style=&quot;display: none;&quot;&gt;hibernate.connection.url=jdbc:mysql://localhost:3306/app
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLDialect&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.connection.url=jdbc:mysql&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;://localhost:3306/app&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.connection.driver_class=com.mysql.jdbc.Driver&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;hibernate.dialect=org.hibernate.dialect.MySQLDialect&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;hibernate.connection.url=jdbc:mysql://localhost:3306/app
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLDialect&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;
5. Person&amp;nbsp;Model&lt;/h2&gt;
For the Person entity, first of all I create a new table (&lt;i&gt;persons&lt;/i&gt;) in my PostgreSQL database (called &lt;i&gt;app&lt;/i&gt;).&lt;br /&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;sql&quot; style=&quot;display: none;&quot;&gt;CREATE TABLE persons(
  id SERIAL,
  firstName VARCHAR(32),
  lastName VARCHAR(32),
  PRIMARY KEY(id)
);&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;CREATE&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;TABLE&lt;/span&gt;&lt;span class=&quot;&quot;&gt; persons(&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; id SERIAL,&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; firstName &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;VARCHAR&lt;/span&gt;&lt;span class=&quot;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;&quot;&gt;),&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; lastName &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;VARCHAR&lt;/span&gt;&lt;span class=&quot;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;&quot;&gt;),&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;PRIMARY&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;KEY&lt;/span&gt;&lt;span class=&quot;&quot;&gt;(id)&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;);&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;CREATE TABLE persons(
  id SERIAL,
  firstName VARCHAR(32),
  lastName VARCHAR(32),
  PRIMARY KEY(id)
);&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
Then I code&amp;nbsp;the mapping object model. The &lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;java&quot; style=&quot;display: none;&quot;&gt;@Table(name = &quot;persons&quot;)&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;st1&quot;&gt;@Table&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;persons&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;/span&gt; annotation specifies in which table&amp;nbsp;to save a Person object. The&amp;nbsp;&lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;java&quot; style=&quot;display: none;&quot;&gt;@GeneratedValue(strategy = GenerationType.IDENTITY)&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;st1&quot;&gt;@GeneratedValue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;strategy = GenerationType.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;IDENTITY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;/span&gt; is quite general. In PostgreSQL I have defined the id&amp;nbsp;attribute as &lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;sql&quot; style=&quot;display: none;&quot;&gt;SERIAL&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;SERIAL&lt;/span&gt;&lt;/span&gt;. In MySQL you probably want to use &lt;code class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;sql&quot; style=&quot;display: none;&quot;&gt;AUTO_INCREMENT&lt;/code&gt;&lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;/span&gt;. That’s just fine, it works with both of them.&lt;br /&gt;
&lt;div class=&quot;EnlighterJSTabPane enlighterEnlighterJSTabPane&quot;&gt;
&lt;div class=&quot;controls&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;selected&quot;&gt;Person.java&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;pane&quot;&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot; style=&quot;display: block;&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;&quot;&gt; com.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;thomasvitale&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; javax.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;persistence&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Entity&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; javax.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;persistence&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;GeneratedValue&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; javax.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;persistence&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;GenerationType&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; javax.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;persistence&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Id&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; javax.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;persistence&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Table&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Entity&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Table&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;persons&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;&quot;&gt; Person &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Id&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@GeneratedValue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;strategy = GenerationType.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;IDENTITY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;&quot;&gt; Integer id;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; firstName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; lastName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; firstName, &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; lastName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;firstName&lt;/span&gt;&lt;span class=&quot;&quot;&gt; = firstName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;lastName&lt;/span&gt;&lt;span class=&quot;&quot;&gt; = lastName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; Integer &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;getId&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; id;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;setId&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;Integer id&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;&quot;&gt; = id;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;getFirstName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; firstName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;setFirstName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; firstName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;firstName&lt;/span&gt;&lt;span class=&quot;&quot;&gt; = firstName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;getLastName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; lastName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;setLastName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; lastName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;lastName&lt;/span&gt;&lt;span class=&quot;&quot;&gt; = lastName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Override&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;&quot;&gt; firstName + &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt; + lastName;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;package com.thomasvitale.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = &quot;persons&quot;)
public class Person {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;
  
  private String firstName;
  private String lastName;

  public Person() {
  }

  public Person(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  @Override
  public String toString() {
    return firstName + &quot; &quot; + lastName;
  }
}&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-group=&quot;Person.java&quot; data-enlighter-language=&quot;java&quot; data-enlighter-title=&quot;Person.java&quot; style=&quot;display: none;&quot;&gt;package com.thomasvitale.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = &quot;persons&quot;)
public class Person {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;
  
  private String firstName;
  private String lastName;

  public Person() {
  }

  public Person(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  @Override
  public String toString() {
    return firstName + &quot; &quot; + lastName;
  }
}&lt;/pre&gt;
&lt;h2&gt;
6. Person&amp;nbsp;Repository&lt;/h2&gt;
Our PersonRepository extends the JpaRepository interface, that provides us with a lot of operations out-of-the-box, including the standard CRUD operations. You can also add custom operations like &lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;findByFirstName&lt;/span&gt;&lt;/span&gt; and &lt;span class=&quot;enlighterEnlighterJS EnlighterJS&quot;&gt;&lt;span class=&quot;&quot;&gt;findByLastName&lt;/span&gt;&lt;/span&gt;&amp;nbsp;without writing any implementation: Spring Data JPA&amp;nbsp;creates&amp;nbsp;them&amp;nbsp;for you!&lt;br /&gt;
&lt;div class=&quot;EnlighterJSTabPane enlighterEnlighterJSTabPane&quot;&gt;
&lt;div class=&quot;controls&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;selected&quot;&gt;PersonRepository.java&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;pane&quot;&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot; style=&quot;display: block;&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;&quot;&gt; com.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;thomasvitale&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; java.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;util&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;jpa&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;JpaRepository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;stereotype&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Repository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; com.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;thomasvitale&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Repository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;interface&lt;/span&gt;&lt;span class=&quot;&quot;&gt; PersonRepository &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;extends&lt;/span&gt;&lt;span class=&quot;&quot;&gt; JpaRepository&amp;lt;Person, Integer&amp;gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; Person &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;findByFirstName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; firstName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; List&amp;lt;Person&amp;gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;findByLastName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt; lastName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;package com.thomasvitale.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.thomasvitale.model.Person;

@Repository
public interface PersonRepository extends JpaRepository&amp;lt;Person, Integer&amp;gt; {
  
  public Person findByFirstName(String firstName);
  public List&amp;lt;Person&amp;gt; findByLastName(String lastName);
  
}&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-group=&quot;PersonRepository.java&quot; data-enlighter-language=&quot;java&quot; data-enlighter-title=&quot;PersonRepository.java&quot; style=&quot;display: none;&quot;&gt;package com.thomasvitale.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.thomasvitale.model.Person;

@Repository
public interface PersonRepository extends JpaRepository&amp;lt;Person, Integer&amp;gt; {
  
  public Person findByFirstName(String firstName);
  public List&amp;lt;Person&amp;gt; findByLastName(String lastName);
  
}&lt;/pre&gt;
&lt;h2&gt;
7. Demo&lt;/h2&gt;
Let’s try some CRUD operations to test our application.&lt;br /&gt;
&lt;pre class=&quot;EnlighterJSRAW&quot; data-enlighter-language=&quot;java&quot; style=&quot;display: none;&quot;&gt;package com.thomasvitale;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.thomasvitale.model.Person;
import com.thomasvitale.repository.PersonRepository;

@SpringBootApplication
public class Application implements CommandLineRunner {
  
  @Autowired
  PersonRepository personRepository;

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

  @Override
  public void run(String... arg0) throws Exception {
    
      // Save three Person documents on PostgreSQL
      personRepository.save(new Person(&quot;Sheldon&quot;, &quot;Cooper&quot;));
      personRepository.save(new Person(&quot;Missy&quot;, &quot;Cooper&quot;));
      personRepository.save(new Person(&quot;Leonard&quot;, &quot;Hofstadter&quot;));
      
      // Get all the people
      System.out.println(&quot;&amp;gt;&amp;gt;&amp;gt; All the people in the database:&quot;);
      personRepository.findAll().forEach(System.out::println);
      
      // Get all the people with a specific last name
      System.out.println(&quot;&amp;gt;&amp;gt;&amp;gt; All people with last name = &#39;Cooper&#39;&quot;);
      personRepository.findByLastName(&quot;Cooper&quot;).forEach(System.out::println);
      
      // Update an individual person
      Person person = personRepository.findByFirstName(&quot;Sheldon&quot;);
      person.setFirstName(&quot;Shelly&quot;);
      personRepository.save(person);
      
      // Delete all 
      personRepository.deleteAll();
    
  }
}&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSWrapper enlighterEnlighterJSWrapper&quot;&gt;
&lt;ol class=&quot;hoverEnabled enlighterEnlighterJS EnlighterJS&quot;&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;&quot;&gt; com.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;thomasvitale&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;beans&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;factory&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;annotation&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Autowired&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;boot&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;CommandLineRunner&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;boot&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;SpringApplication&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; org.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;springframework&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;boot&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;autoconfigure&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;SpringBootApplication&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; com.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;thomasvitale&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;&quot;&gt; com.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;thomasvitale&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;PersonRepository&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@SpringBootApplication&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;&quot;&gt; Application &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;implements&lt;/span&gt;&lt;span class=&quot;&quot;&gt; CommandLineRunner &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Autowired&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; PersonRepository personRepository;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;static&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;&quot;&gt; args&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; SpringApplication.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;Application.&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, args&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;@Override&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;&quot;&gt;... arg0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;throws&lt;/span&gt;&lt;span class=&quot;&quot;&gt; Exception &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;co1&quot;&gt; // Save three Person documents on PostgreSQL&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Sheldon&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Cooper&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Missy&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Cooper&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Leonard&quot;&lt;/span&gt;&lt;span class=&quot;&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Hofstadter&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;co1&quot;&gt; // Get all the people&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;&amp;gt;&amp;gt;&amp;gt; All the people in the database:&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;findAll&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;&quot;&gt;::println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;co1&quot;&gt; // Get all the people with a specific last name&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;&amp;gt;&amp;gt;&amp;gt; All people with last name = &#39;Cooper&#39;&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;findByLastName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Cooper&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;&quot;&gt;::println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;co1&quot;&gt; // Update an individual person&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; Person person = personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;findByFirstName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Sheldon&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; person.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;setFirstName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st1&quot;&gt;&quot;Shelly&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;&quot;&gt;person&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;co1&quot;&gt; // Delete all &lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; personRepository.&lt;/span&gt;&lt;span class=&quot;me0&quot;&gt;deleteAll&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; odd&quot;&gt;&lt;span class=&quot;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot; even&quot;&gt;&lt;span class=&quot;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;}&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display: none;&quot;&gt;package com.thomasvitale;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.thomasvitale.model.Person;
import com.thomasvitale.repository.PersonRepository;

@SpringBootApplication
public class Application implements CommandLineRunner {
  
  @Autowired
  PersonRepository personRepository;

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

  @Override
  public void run(String... arg0) throws Exception {
    
      // Save three Person documents on PostgreSQL
      personRepository.save(new Person(&quot;Sheldon&quot;, &quot;Cooper&quot;));
      personRepository.save(new Person(&quot;Missy&quot;, &quot;Cooper&quot;));
      personRepository.save(new Person(&quot;Leonard&quot;, &quot;Hofstadter&quot;));
      
      // Get all the people
      System.out.println(&quot;&amp;gt;&amp;gt;&amp;gt; All the people in the database:&quot;);
      personRepository.findAll().forEach(System.out::println);
      
      // Get all the people with a specific last name
      System.out.println(&quot;&amp;gt;&amp;gt;&amp;gt; All people with last name = &#39;Cooper&#39;&quot;);
      personRepository.findByLastName(&quot;Cooper&quot;).forEach(System.out::println);
      
      // Update an individual person
      Person person = personRepository.findByFirstName(&quot;Sheldon&quot;);
      person.setFirstName(&quot;Shelly&quot;);
      personRepository.save(person);
      
      // Delete all 
      personRepository.deleteAll();
    
  }
}&lt;/pre&gt;
&lt;div class=&quot;EnlighterJSToolbar&quot;&gt;
&lt;a class=&quot;EnlighterJSInfoButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;EnlighterJS Syntax Highlighter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSRawButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Toggle RAW Code&quot;&gt;&lt;/a&gt;&lt;a class=&quot;EnlighterJSWindowButton&quot; href=&quot;https://www.blogger.com/null&quot; title=&quot;Open Code in new Window&quot;&gt;&lt;/a&gt;&lt;span class=&quot;clear&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;
Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://projects.spring.io/spring-boot/&quot;&gt;Spring Boot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://spring.io/guides/gs/spring-boot/&quot;&gt;Building an Application with Spring Boot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://projects.spring.io/spring-data-jpa/&quot;&gt;Spring Data JPA Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://spring.io/guides/gs/accessing-data-jpa/&quot;&gt;Accessing Data with JPA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://spring.io/guides/gs/accessing-data-mysql/&quot;&gt;Accessing Data with MySQL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;addtoany_share_save_container addtoany_content_bottom&quot;&gt;
&lt;div class=&quot;a2a_kit a2a_kit_size_32 addtoany_list&quot; data-a2a-title=&quot;Spring Data JPA using Hibernate and Java Configuration with Annotations&quot; data-a2a-url=&quot;https://www.thomasvitale.com/spring-data-jpa-hibernate-java-configuration/&quot; style=&quot;line-height: 32px;&quot;&gt;
&lt;a class=&quot;a2a_button_facebook&quot; href=&quot;https://www.blogger.com/#facebook&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Facebook&quot;&gt;&lt;span class=&quot;a2a_svg a2a_s__default a2a_s_facebook&quot; style=&quot;background-color: #3b5998;&quot;&gt;&lt;svg focusable=&quot;false&quot; viewbox=&quot;0 0 32 32&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M17.78 27.5V17.008h3.522l.527-4.09h-4.05v-2.61c0-1.182.33-1.99 2.023-1.99h2.166V4.66c-.375-.05-1.66-.16-3.155-.16-3.123 0-5.26 1.905-5.26 5.405v3.016h-3.53v4.09h3.53V27.5h4.223z&quot; fill=&quot;#FFF&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;a2a_label&quot;&gt;Facebook&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_twitter&quot; href=&quot;https://www.blogger.com/#twitter&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Twitter&quot;&gt;&lt;span class=&quot;a2a_svg a2a_s__default a2a_s_twitter&quot; style=&quot;background-color: #55acee;&quot;&gt;&lt;svg focusable=&quot;false&quot; viewbox=&quot;0 0 32 32&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M28 8.557a9.913 9.913 0 0 1-2.828.775 4.93 4.93 0 0 0 2.166-2.725 9.738 9.738 0 0 1-3.13 1.194 4.92 4.92 0 0 0-3.593-1.55 4.924 4.924 0 0 0-4.794 6.049c-4.09-.21-7.72-2.17-10.15-5.15a4.942 4.942 0 0 0-.665 2.477c0 1.71.87 3.214 2.19 4.1a4.968 4.968 0 0 1-2.23-.616v.06c0 2.39 1.7 4.38 3.952 4.83-.414.115-.85.174-1.297.174-.318 0-.626-.03-.928-.086a4.935 4.935 0 0 0 4.6 3.42 9.893 9.893 0 0 1-6.114 2.107c-.398 0-.79-.023-1.175-.068a13.953 13.953 0 0 0 7.55 2.213c9.056 0 14.01-7.507 14.01-14.013 0-.213-.005-.426-.015-.637.96-.695 1.795-1.56 2.455-2.55z&quot; fill=&quot;#FFF&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;a2a_label&quot;&gt;Twitter&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_linkedin&quot; href=&quot;https://www.blogger.com/#linkedin&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;LinkedIn&quot;&gt;&lt;span class=&quot;a2a_svg a2a_s__default a2a_s_linkedin&quot; style=&quot;background-color: #007bb5;&quot;&gt;&lt;svg focusable=&quot;false&quot; viewbox=&quot;0 0 32 32&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M6.227 12.61h4.19v13.48h-4.19V12.61zm2.095-6.7a2.43 2.43 0 0 1 0 4.86c-1.344 0-2.428-1.09-2.428-2.43s1.084-2.43 2.428-2.43m4.72 6.7h4.02v1.84h.058c.56-1.058 1.927-2.176 3.965-2.176 4.238 0 5.02 2.792 5.02 6.42v7.395h-4.183v-6.56c0-1.564-.03-3.574-2.178-3.574-2.18 0-2.514 1.7-2.514 3.46v6.668h-4.187V12.61z&quot; fill=&quot;#FFF&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;a2a_label&quot;&gt;LinkedIn&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_google_plus&quot; href=&quot;https://www.blogger.com/#google_plus&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Google+&quot;&gt;&lt;span class=&quot;a2a_svg a2a_s__default a2a_s_google_plus&quot; style=&quot;background-color: #dd4b39;&quot;&gt;&lt;svg focusable=&quot;false&quot; viewbox=&quot;0 0 32 32&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M27 15h-2v-2h-2v2h-2v2h2v2h2v-2h2m-15-2v2.4h3.97c-.16 1.03-1.2 3.02-3.97 3.02-2.39 0-4.34-1.98-4.34-4.42s1.95-4.42 4.34-4.42c1.36 0 2.27.58 2.79 1.08l1.9-1.83C15.47 9.69 13.89 9 12 9c-3.87 0-7 3.13-7 7s3.13 7 7 7c4.04 0 6.72-2.84 6.72-6.84 0-.46-.05-.81-.11-1.16H12z&quot; fill=&quot;#FFF&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;a2a_label&quot;&gt;Google+&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_pinterest&quot; href=&quot;https://www.blogger.com/#pinterest&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Pinterest&quot;&gt;&lt;span class=&quot;a2a_svg a2a_s__default a2a_s_pinterest&quot; style=&quot;background-color: #bd081c;&quot;&gt;&lt;svg focusable=&quot;false&quot; viewbox=&quot;0 0 32 32&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;path d=&quot;M16.539 4.5c-6.277 0-9.442 4.5-9.442 8.253 0 2.272.86 4.293 2.705 5.046.303.125.574.005.662-.33.061-.231.205-.816.27-1.06.088-.331.053-.447-.191-.736-.532-.627-.873-1.439-.873-2.591 0-3.338 2.498-6.327 6.505-6.327 3.548 0 5.497 2.168 5.497 5.062 0 3.81-1.686 7.025-4.188 7.025-1.382 0-2.416-1.142-2.085-2.545.397-1.674 1.166-3.48 1.166-4.689 0-1.081-.581-1.983-1.782-1.983-1.413 0-2.548 1.462-2.548 3.419 0 1.247.421 2.091.421 2.091l-1.699 7.199c-.505 2.137-.076 4.755-.039 5.019.021.158.223.196.314.077.13-.17 1.813-2.247 2.384-4.324.162-.587.929-3.631.929-3.631.46.876 1.801 1.646 3.227 1.646 4.247 0 7.128-3.871 7.128-9.053.003-3.918-3.317-7.568-8.361-7.568z&quot; fill=&quot;#FFF&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;a2a_label&quot;&gt;Pinterest&lt;/span&gt;&lt;/a&gt;&lt;a class=&quot;a2a_dd addtoany_share_save&quot; href=&quot;https://www.addtoany.com/share#url=https%3A%2F%2Fwww.thomasvitale.com%2Fspring-data-jpa-hibernate-java-configuration%2F&amp;amp;title=Spring%20Data%20JPA%20using%20Hibernate%20and%20Java%20Configuration%20with%20Annotations&quot;&gt;&lt;span class=&quot;a2a_svg a2a_s__default a2a_s_a2a&quot; style=&quot;background-color: #0166ff;&quot;&gt;&lt;svg focusable=&quot;false&quot; viewbox=&quot;0 0 32 32&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;g fill=&quot;#FFF&quot;&gt;&lt;path d=&quot;M14 7h4v18h-4z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M7 14h18v4H7z&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;a2a_label&quot;&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/3940045119123016708/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2017/10/spring-data-jpa-using-hibernate-and.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/3940045119123016708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/3940045119123016708'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2017/10/spring-data-jpa-using-hibernate-and.html' title='Spring Data JPA using Hibernate and Java Configuration with Annotations'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-5332520019386030767</id><published>2017-09-10T18:02:00.000-04:00</published><updated>2017-09-10T18:02:14.674-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developer"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java ee"/><category scheme="http://www.blogger.com/atom/ns#" term="jboss"/><category scheme="http://www.blogger.com/atom/ns#" term="programacion"/><category scheme="http://www.blogger.com/atom/ns#" term="wildfly"/><title type='text'>Wildfly – Install PostgreSQL JDBC Driver as a Module</title><content type='html'>&lt;div class=&quot;entry-content&quot;&gt;
Instead of deploying a JDBC driver with the wildfly auto-deploy feature, the driver can be alternatively installed as an module. This is also necessary to be used with XA-Datasources. So it is a recommended way to install the driver as a module. The following section shows how to a jdbc driver module is created.&lt;span id=&quot;more-775&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h4 id=&quot;_creating_a_module&quot;&gt;
Creating a Module&lt;/h4&gt;
&lt;div&gt;
To create a module:&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Go to WILDFLY_HOME/modules/system/layers/base/ and create the folder org/postgresql/main;&lt;/li&gt;
&lt;li&gt;copy the file postgresql jdbc driver jar file&amp;nbsp;&amp;nbsp;to the new folderWILDFLY_HOME/modules/system/layers/base/org/postgresql/main&lt;/li&gt;
&lt;li&gt;create the file module.xml in the same folder with the following content:&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;        &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
        &amp;lt;module xmlns=&quot;urn:jboss:module:1.1&quot; name=&quot;org.postgresql&quot;&amp;gt;
            &amp;lt;resources&amp;gt;
                &amp;lt;resource-root path=&quot;postgresql-9.4.1211.jar&quot;/&amp;gt;
            &amp;lt;/resources&amp;gt;
            &amp;lt;dependencies&amp;gt;
                &amp;lt;module name=&quot;javax.api&quot;/&amp;gt;
                &amp;lt;module name=&quot;javax.transaction.api&quot;/&amp;gt;
            &amp;lt;/dependencies&amp;gt;
        &amp;lt;/module&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
The name of the driver file may vary, so make sure you declare exactly the same name in the resource-root tag. At this point, the module is not available yet. Youneed to reference the module as a driver in WildFly configuration with the following jboss-cli command:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;[standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=postgresql:add(
    driver-name=postgresql,
    driver-module-name=org.postgresql,
    driver-class-name=org.postgresql.Driver
)&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
The command returns {“outcome” =&amp;gt; “success”} in case of success. This command resulted in the following part in the configuration file:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;    &amp;lt;datasources&amp;gt;
        {...}
        &amp;lt;drivers&amp;gt;
            {...}
            &amp;lt;driver name=&quot;postgresql&quot; module=&quot;org.postgresql&quot;&amp;gt;
                &amp;lt;driver-class&amp;gt;org.postgresql.Driver&amp;lt;/driver-class&amp;gt;
            &amp;lt;/driver&amp;gt;
        &amp;lt;/drivers&amp;gt;
    &amp;lt;/datasources&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
It makes the JDBC driver module available for the datasource creation. So a datasource definition can now be defined to use the postgresql driver in the following way:&lt;br /&gt;
&lt;pre&gt;...
 &amp;lt;datasource ....&amp;gt;
 &amp;lt;connection-url&amp;gt;jdbc:postgresql://localhost/....&amp;lt;/connection-url&amp;gt;
 &amp;lt;driver&amp;gt;postgresql&amp;lt;/driver&amp;gt;
...&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/5332520019386030767/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2017/09/wildfly-install-postgresql-jdbc-driver.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/5332520019386030767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/5332520019386030767'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2017/09/wildfly-install-postgresql-jdbc-driver.html' title='Wildfly – Install PostgreSQL JDBC Driver as a Module'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-7253452768786279036</id><published>2017-02-20T15:05:00.000-04:00</published><updated>2017-02-20T15:05:17.936-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developer"/><category scheme="http://www.blogger.com/atom/ns#" term="function"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="pl/sql"/><title type='text'>UTL_MATCH : String Matching by Testing Levels of Similarity/Difference</title><content type='html'>&lt;h1&gt;
&lt;br /&gt;&lt;/h1&gt;
The &lt;code&gt;UTL_MATCH&lt;/code&gt; package was introduced in Oracle 10g 
Release 2, but first documented (and therefore supported) in Oracle 11g 
Release 2. It contains a variety of functions that are helpful for 
testing the level of similarity/difference between strings.&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://oracle-base.com/articles/11g/utl_match-string-matching-in-oracle#setup&quot;&gt;Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://oracle-base.com/articles/11g/utl_match-string-matching-in-oracle#edit_distance&quot;&gt;EDIT_DISTANCE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://oracle-base.com/articles/11g/utl_match-string-matching-in-oracle#edit_distance_similarity&quot;&gt;EDIT_DISTANCE_SIMILARITY&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://oracle-base.com/articles/11g/utl_match-string-matching-in-oracle#jaro_winkler&quot;&gt;JARO_WINKLER&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://oracle-base.com/articles/11g/utl_match-string-matching-in-oracle#jaro_winkler_similarity&quot;&gt;JARO_WINKLER_SIMILARITY&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Related articles.&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=SU4_KUTdNo0&quot;&gt;UTL_MATCH : String Matching &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Setup&lt;/h2&gt;
The examples in this article require the following table definition.&lt;br /&gt;


&lt;pre&gt;DROP TABLE match_tab;

CREATE TABLE match_tab (
  id   NUMBER,
  col1 VARCHAR2(15),
  col2 VARCHAR2(15),
  CONSTRAINT match_tab_pk PRIMARY  KEY (id)
);

INSERT INTO match_tab VALUES (1, &#39;Peter Parker&#39;, &#39;Pete Parker&#39;);
INSERT INTO match_tab VALUES (2, &#39;Peter Parker&#39;, &#39;peter parker&#39;);
INSERT INTO match_tab VALUES (3, &#39;Clark Kent&#39;, &#39;Claire Kent&#39;);
INSERT INTO match_tab VALUES (4, &#39;Wonder Woman&#39;, &#39;Ponder Woman&#39;);
INSERT INTO match_tab VALUES (5, &#39;Superman&#39;, &#39;Superman&#39;);
INSERT INTO match_tab VALUES (6, &#39;The Hulk&#39;, &#39;Iron Man&#39;);
COMMIT;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;h2&gt;
EDIT_DISTANCE&lt;/h2&gt;
The &quot;Edit Distance&quot;, or &quot;Levenshtein Distance&quot;, test measures the 
similarity between two strings by counting the number of character 
changes (inserts, updates, deletes) required to transform the first 
string into the second. The number of changes required is know as the 
distance.&lt;br /&gt;


&lt;pre&gt;SELECT col1,
       col2,
       UTL_MATCH.edit_distance(col1, col2) AS ed
FROM   match_tab
ORDER BY id;

COL1            COL2                    ED
--------------- --------------- ----------
Peter Parker    Pete Parker              1
Peter Parker    peter parker             2
Clark Kent      Claire Kent              2
Wonder Woman    Ponder Woman             1
Superman        Superman                 0
The Hulk        Iron Man                 8

6 rows selected.

SQL&amp;gt;&lt;/pre&gt;
&lt;h2&gt;
EDIT_DISTANCE_SIMILARITY&lt;/h2&gt;
The &lt;code&gt;EDIT_DISTANCE_SIMILARITY &lt;/code&gt;function uses the same method as the &lt;code&gt;EDIT_DISTANCE &lt;/code&gt;function
 to determine the similarity of the strings, but it returns a normalized
 result ranging from 0 (no match) to 100 (complete match).&lt;br /&gt;


&lt;pre&gt;SELECT col1,
       col2,
       UTL_MATCH.edit_distance_similarity(col1, col2) AS eds
FROM   match_tab
ORDER BY id;

COL1            COL2                   EDS
--------------- --------------- ----------
Peter Parker    Pete Parker             92
Peter Parker    peter parker            84
Clark Kent      Claire Kent             82
Wonder Woman    Ponder Woman            92
Superman        Superman               100
The Hulk        Iron Man                 0

6 rows selected.

SQL&amp;gt;


SELECT id,
       col1,
       col2,
       UTL_MATCH.edit_distance_similarity(col1, col2) AS eds
FROM   match_tab
WHERE  UTL_MATCH.edit_distance_similarity(col1, col2) &amp;gt; 90
ORDER BY id;

        ID COL1            COL2                   EDS
---------- --------------- --------------- ----------
         1 Peter Parker    Pete Parker             92
         4 Wonder Woman    Ponder Woman            92
         5 Superman        Superman               100

SQL&amp;gt;&lt;/pre&gt;
&lt;h2&gt;
JARO_WINKLER&lt;/h2&gt;
The &quot;Jaro-Winkler Algorithm&quot; provides a different method for finding the distance between two strings.&lt;br /&gt;


&lt;pre&gt;SELECT col1,
       col2,
       UTL_MATCH.jaro_winkler(col1, col2) AS jw
FROM   match_tab
ORDER BY id;

COL1            COL2                    JW
--------------- --------------- ----------
Peter Parker    Pete Parker     9.288E-001
Peter Parker    peter parker    8.889E-001
Clark Kent      Claire Kent     9.083E-001
Wonder Woman    Ponder Woman    9.444E-001
Superman        Superman          1.0E+000
The Hulk        Iron Man        4.167E-001

6 rows selected.

SQL&amp;gt;&lt;/pre&gt;
&lt;h2&gt;
JARO_WINKLER_SIMILARITY&lt;/h2&gt;
The &lt;code&gt;JARO_WINKLER_SIMILARITY &lt;/code&gt;function uses the same method as the &lt;code&gt;JARO_WINKLER &lt;/code&gt;function
 to determine the similarity of the strings, but it returns a normalized
 result ranging from 0 (no match) to 100 (complete match).&lt;br /&gt;


&lt;pre&gt;SELECT col1,
       col2,
       UTL_MATCH.jaro_winkler_similarity(col1, col2) AS jws
FROM   match_tab
ORDER BY id;

COL1            COL2                   JWS
--------------- --------------- ----------
Peter Parker    Pete Parker             92
Peter Parker    peter parker            88
Clark Kent      Claire Kent             90
Wonder Woman    Ponder Woman            94
Superman        Superman               100
The Hulk        Iron Man                41

6 rows selected.

SQL&amp;gt;


SELECT col1,
       col2,
       UTL_MATCH.jaro_winkler_similarity(col1, col2) AS jws
FROM   match_tab
WHERE  UTL_MATCH.jaro_winkler_similarity(col1, col2) &amp;gt; 90
ORDER BY id;

COL1            COL2                   JWS
--------------- --------------- ----------
Peter Parker    Pete Parker             92
Wonder Woman    Ponder Woman            94
Superman        Superman               100

SQL&amp;gt;&lt;/pre&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/7253452768786279036/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2017/02/utlmatch-string-matching-by-testing.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7253452768786279036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7253452768786279036'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2017/02/utlmatch-string-matching-by-testing.html' title='UTL_MATCH : String Matching by Testing Levels of Similarity/Difference'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-6696197777183335289</id><published>2016-10-16T00:56:00.000-04:00</published><updated>2016-10-16T00:56:14.729-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="developer"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java ee"/><category scheme="http://www.blogger.com/atom/ns#" term="programador"/><title type='text'>Adapter java</title><content type='html'>&lt;h3 class=&quot;post-title entry-title&quot;&gt;
Adapter
&lt;/h3&gt;
&lt;div class=&quot;post-header&quot;&gt;
&lt;/div&gt;
Busca una manera estandarizada de adaptar un objeto a otro. Se utiliza 
para transformar una interfaz en otra, de tal modo que una clase que no 
pudiera utilizar la primera, haga uso de ella a través de la segunda.&lt;br /&gt;
Es conocido como Wrapper (al patrón Decorator también se lo llama 
Wrapper, con lo cual es nombre Wrapper muchas veces se presta a 
confusión).&lt;br /&gt;
Una clase Adapter implementa un interfaz que conoce a sus clientes y 
proporciona acceso a una instancia de una clase que no conoce a sus 
clientes, es decir convierte la interfaz de una clase en una interfaz 
que el cliente espera. Un objeto Adapter proporciona la funcionalidad 
prometida por un interfaz sin tener que conocer que clase es utilizada 
para implementar ese interfaz. Permite trabajar juntas a dos clases con 
interfaces incompatibles.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;Este patrón se debe utilizar cuando:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Se quiere utilizar una clase que llame a un método a través de 
una interface, pero se busca utilizarlo con una clase que no implementa 
ese interface. &lt;/li&gt;
&lt;li&gt;Se busca determinar dinámicamente que métodos de otros objetos llama un objeto.&lt;/li&gt;
&lt;li&gt;No se quiere que el objeto llamado tenga conocimientos de la otra clase de objetos.&lt;/li&gt;
&lt;/ul&gt;
Este patrón convierte la interfaz de una clase en otra interfaz que
 el  cliente espera. Esto permite a las clases trabajar juntas, lo que 
de  otra manera no podrían hacerlo debido a sus interfaces 
incompatibles.&lt;br /&gt;
Por  lo general, esta situación se da porque no es posible modificar la 
 clase original, ya sea porque no se tiene el código fuente de la clase o
  porque la clase es una clase de propósito general, y es inapropiado  
para ella implementar un interface par un propósito específico. En  
resumen, este patrón debe ser aplicado cuando debo transformar una  
estructura a otra, pero sin tocar la original, ya sea porque no puedo o 
 no quiero cambiarla. &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;Diagrama UML&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://lh6.googleusercontent.com/RIOjG1cnE_Sy_X-eW6Hvs5YeG7tbyDeon1Lc1p2Ujkzg6PzXFD2UMr2kVz18w_Uif12nJQ3WJt8nNqBHSkvjGh1KY28BTrH8s1g4mSNQbXeu3Xi4yw&quot; /&gt;&lt;br /&gt;
&lt;u&gt;Target&lt;/u&gt;: define la interfaz específica del dominio que Cliente usa.&lt;br /&gt;
&lt;u&gt;Cliente&lt;/u&gt;: colabora con la conformación de objetos para la interfaz Target.&lt;br /&gt;
&lt;u&gt;Adaptado&lt;/u&gt;: define una interfaz existente que necesita adaptarse&lt;br /&gt;
&lt;u&gt;Adapter&lt;/u&gt;: adapta la interfaz de Adaptee a la interfaz Target&lt;br /&gt;
El Cliente llama a las operaciones sobre una instancia Adapter. De 
hecho, el adaptador llama a las operaciones de Adaptee que llevan a cabo
 el pedido.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;Ejemplo&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Vamos a plantear el siguiente escenario: nuestro código tiene una  clase
 Persona (la llamamos PersonaVieja) que se utiliza a lo largo de  todo 
el código y hemos importado un API que también necesita trabajar  con 
una clase Persona (la llamamos PersonaNueva), que si bien son  bastante 
similares tienen ciertas diferencias:&lt;br /&gt;
Nosotros trabajamos con los atributos nombre, apellido y fecha de nacimiento.&lt;br /&gt;
Sin  embargo, la PersonaNueva tiene un solo atributo nombre (que es el  
nombre y apellido de la persona en cuestión) y la edad actual, en vez de
  la fecha de nacimiento.&lt;br /&gt;
&lt;br /&gt;
Para esta situación lo ideal es utilizar el Adapter. Para ello primero 
crearemos las 2 clases de Persona y sus correspondientes interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheektITUdAYcK6DUr61VMPotgayk2jXoNWzjrO0W_OS0TYhnXRdDRZXKMTp3s1HhpYkhRRzfc00VbbTKmAoOhCu8W_cm9-MzKbXZoCYmDaDjZnAgN3oURQyYqMbEOJJGHZLNIsu4QnHuA/s1600/ipn.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheektITUdAYcK6DUr61VMPotgayk2jXoNWzjrO0W_OS0TYhnXRdDRZXKMTp3s1HhpYkhRRzfc00VbbTKmAoOhCu8W_cm9-MzKbXZoCYmDaDjZnAgN3oURQyYqMbEOJJGHZLNIsu4QnHuA/s1600/ipn.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh28e3Vdmd_u4Ryec_XuqUv2Tg8ju88qbTC_3nnq0bZNUaMxez4C7sdKxOh7yyI3euv0XL53SdVqh6Jq5ifJ6MaCj2BLfY8MtQfvR0L1cjW20TMKlsNcsNGtbme2zula3jxjT7OMHpzMLg/s1600/ipv.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh28e3Vdmd_u4Ryec_XuqUv2Tg8ju88qbTC_3nnq0bZNUaMxez4C7sdKxOh7yyI3euv0XL53SdVqh6Jq5ifJ6MaCj2BLfY8MtQfvR0L1cjW20TMKlsNcsNGtbme2zula3jxjT7OMHpzMLg/s1600/ipv.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmSUWMEukpLoeg5oiQ8iqTwVx5IuM3S3NHbXKyy391gKLPcS0aSwaLyJ4ymRQKWKpm2HxZLk8YUXlT7c_RP4p61Xhs5rJuqx_u85w8F45XviCFEPjE6bScAve-Wz6BzFewp3S1hT2ZT-s/s1600/pn.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmSUWMEukpLoeg5oiQ8iqTwVx5IuM3S3NHbXKyy391gKLPcS0aSwaLyJ4ymRQKWKpm2HxZLk8YUXlT7c_RP4p61Xhs5rJuqx_u85w8F45XviCFEPjE6bScAve-Wz6BzFewp3S1hT2ZT-s/s1600/pn.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE2rd2RNoc0NkTnNZfbdDBG7ewArhXkVTty3TYmRIC52MlRs4FX6yjU9igUvUuT8k2RqWh1yVJpCWjPLnFtrbW21YeYyh1RLvyC6dBohO-uBzwmMZD2Vf2VT_qNSTclc6DXUryxXcP6Co/s1600/pv.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE2rd2RNoc0NkTnNZfbdDBG7ewArhXkVTty3TYmRIC52MlRs4FX6yjU9igUvUuT8k2RqWh1yVJpCWjPLnFtrbW21YeYyh1RLvyC6dBohO-uBzwmMZD2Vf2VT_qNSTclc6DXUryxXcP6Co/s1600/pv.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;Ahora crearemos al Adapter.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxUM2DNc7gT2bpzLCLQD0p1YjKqk7wK0q-4ofZcQPFDAc1PtkHvCBtP1aDLVI3Zzp091Y9YHvXlVqraj2tkXE__zUIL428wb9P4n2R6MA7GdwCTSYVUD0tiW09cHqGk7stJLA2GbgYW4c/s1600/adapter.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxUM2DNc7gT2bpzLCLQD0p1YjKqk7wK0q-4ofZcQPFDAc1PtkHvCBtP1aDLVI3Zzp091Y9YHvXlVqraj2tkXE__zUIL428wb9P4n2R6MA7GdwCTSYVUD0tiW09cHqGk7stJLA2GbgYW4c/s1600/adapter.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Y se utiliza de esta manera:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLucaj0IfZIXWyQLx0FA-IadyUn_FQK5fTDuoKYJnAel0EKWv8dKM3lXiWxlVJ5HEA9rAoXeyhqawc1OVctQxe3LOKItY75RwMYm-5UmEwbiMbP6RB5yHrRVBS6it7d1J3aZPIDxi109Q/s1600/main.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLucaj0IfZIXWyQLx0FA-IadyUn_FQK5fTDuoKYJnAel0EKWv8dKM3lXiWxlVJ5HEA9rAoXeyhqawc1OVctQxe3LOKItY75RwMYm-5UmEwbiMbP6RB5yHrRVBS6it7d1J3aZPIDxi109Q/s1600/main.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;Consecuencias&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;El cliente y las clases Adaptee permanecen independientes unas de las otras.&lt;/li&gt;
&lt;li&gt;Puede hacer que un programa sea menos entendible.&lt;/li&gt;
&lt;li&gt;Permite que un único Adapter trabaje con muchos Adaptees, es decir, 
el Adapter por sí mismo y las subclases (si es que la tiene). El Adapter
 también puede agregar funcionalidad a todos los Adaptees de una sola 
vez.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;Temas a tener en cuenta.&lt;/span&gt;&lt;br /&gt;
Si bien el Adapter tiene una implementación relativamente sencilla, se puede llevar a cabo con varias técnicas:&lt;br /&gt;
1) Creando una nueva clase que será el Adaptador, que extienda del 
componente existente e implemente la interfaz obligatoria. De este modo 
tenemos la funcionalidad que queríamos y cumplimos la condición de 
implementar la interfaz.&lt;br /&gt;
2) Pasar una referencia a los objetos cliente como parámetro a los 
costructores de los objetos adapter o a uno de sus métodos. Esto permite
 al objeto adapter ser utilizado con cualquier instancia o posiblemente 
muchas instancias de la clase Adaptee. En este caso particular, el 
Adapter tiene una implementación casi idéntica al patrón Decorator.&lt;br /&gt;
3) Hacer la clase Adapter una clase interna de la clase Adaptee. Esto 
asume que tenemos acceso al código de dicha clase y que es permitido la 
modificación de la misma.&lt;br /&gt;
4) Utilizar sólo interfaces para la comunicación entre los objetos.&lt;br /&gt;
&lt;br /&gt;
Las opciones más utilizadas son la 1 y la 4.
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/6696197777183335289/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/10/adapter-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/6696197777183335289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/6696197777183335289'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/10/adapter-java.html' title='Adapter java'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/RIOjG1cnE_Sy_X-eW6Hvs5YeG7tbyDeon1Lc1p2Ujkzg6PzXFD2UMr2kVz18w_Uif12nJQ3WJt8nNqBHSkvjGh1KY28BTrH8s1g4mSNQbXeu3Xi4yw=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-3122248225089878535</id><published>2016-05-23T18:58:00.000-04:00</published><updated>2016-05-23T18:58:10.816-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="contenedor"/><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="turorial"/><title type='text'>Docker 101 Tutorial</title><content type='html'>&lt;h3 style=&quot;background-color: #f2f2f2; border: 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 24px; font-stretch: inherit; letter-spacing: -1px; line-height: inherit; margin: 10px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Docker 101 Tutorial&lt;/h3&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
This is a realistic interactive tutorial for understanding the basics of Docker.&lt;/div&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
It requires you to successfully complete each minitask, so could be used as an interviewing tool for those that claim to know Docker.&lt;/div&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
It uses a complete and realistic shell to train you in.&lt;/div&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
Below is a video showing what it looks like to the user.&lt;/div&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;asciicast&quot; id=&quot;asciicast-container-45918&quot; style=&quot;border: 0px; float: none; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 20px 0px; overflow: hidden; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;iframe allowfullscreen=&quot;true&quot; id=&quot;asciicast-iframe-45918&quot; name=&quot;asciicast-iframe-45918&quot; scrolling=&quot;no&quot; src=&quot;https://asciinema.org/api/asciicasts/45918?&quot; style=&quot;border-style: initial; border-width: 0px; display: inline-block; float: none; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 755px; line-height: inherit; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline; visibility: visible; width: 640px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 style=&quot;background-color: #f2f2f2; border: 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 24px; font-stretch: inherit; letter-spacing: -1px; line-height: inherit; margin: 10px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a aria-hidden=&quot;true&quot; class=&quot;anchor&quot; href=&quot;http://ianmiell.github.io/docker-101-tutorial/?hash=ca984571-2114-4ba0-afd9-d6e793f000db&amp;amp;utm_medium=social&amp;amp;utm_source=facebook&amp;amp;utm_campaign=docker-2681022#install-and-run&quot; id=&quot;install-and-run&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;octicon octicon-link&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Install and run&lt;/h3&gt;
&lt;pre style=&quot;background-color: white; border-radius: 2px; border: 0px; box-shadow: rgba(0, 0, 0, 0.0980392) 0px 0px 10px; color: #222222; font-family: Monaco, &#39;Bitstream Vera Sans Mono&#39;, &#39;Lucida Console&#39;, Terminal, monospace; font-size: 14px; font-stretch: inherit; line-height: inherit; overflow: auto; padding: 10px; vertical-align: baseline; width: 640px;&quot;&gt;&lt;code style=&quot;border-radius: 2px; border: 0px; box-shadow: none; display: block; font-family: Monaco, &#39;Bitstream Vera Sans Mono&#39;, &#39;Lucida Console&#39;, Terminal, monospace; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 3px; padding: 3px; vertical-align: baseline; width: 640px;&quot;&gt;# install docker
# install python-pip (aka pip)
sudo pip install shutit
git clone --recursive https://github.com/ianmiell/docker-101-tutorial &amp;amp;&amp;amp; cd docker-101-tutorial
./run.sh  #&#39;sudo ./run.sh&#39; if you need to use sudo to run docker
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
and follow the instructions.&lt;/div&gt;
&lt;h3 style=&quot;background-color: #f2f2f2; border: 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 24px; font-stretch: inherit; letter-spacing: -1px; line-height: inherit; margin: 10px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a aria-hidden=&quot;true&quot; class=&quot;anchor&quot; href=&quot;http://ianmiell.github.io/docker-101-tutorial/?hash=ca984571-2114-4ba0-afd9-d6e793f000db&amp;amp;utm_medium=social&amp;amp;utm_source=facebook&amp;amp;utm_campaign=docker-2681022#how-it-works&quot; id=&quot;how-it-works&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;octicon octicon-link&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;/a&gt;How it works&lt;/h3&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
Under the hood it uses&amp;nbsp;&lt;a href=&quot;https://ianmiell.github.io/shutit/&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;ShutIt&lt;/a&gt;&amp;nbsp;to manage the shell and&amp;nbsp;&lt;a href=&quot;http://ianmiell.github.io/docker-101-tutorial/?hash=ca984571-2114-4ba0-afd9-d6e793f000db&amp;amp;utm_medium=social&amp;amp;utm_source=facebook&amp;amp;utm_campaign=docker-2681022&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;Docker&lt;/a&gt;&amp;nbsp;containers programmatically.&lt;/div&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;http://adf.ly/1aYqbw&quot; target=&quot;_blank&quot;&gt;Download link&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;background-color: #f2f2f2; border: 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 24px; font-stretch: inherit; letter-spacing: -1px; line-height: inherit; margin: 10px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a aria-hidden=&quot;true&quot; class=&quot;anchor&quot; href=&quot;http://ianmiell.github.io/docker-101-tutorial/?hash=ca984571-2114-4ba0-afd9-d6e793f000db&amp;amp;utm_medium=social&amp;amp;utm_source=facebook&amp;amp;utm_campaign=docker-2681022#authors-and-contributors&quot; id=&quot;authors-and-contributors&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;octicon octicon-link&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;/a&gt;Authors and Contributors&lt;/h3&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a class=&quot;user-mention&quot; href=&quot;https://github.com/ianmiell&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;@ianmiell&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;background-color: #f2f2f2; border: 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 24px; font-stretch: inherit; letter-spacing: -1px; line-height: inherit; margin: 10px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a aria-hidden=&quot;true&quot; class=&quot;anchor&quot; href=&quot;http://ianmiell.github.io/docker-101-tutorial/?hash=ca984571-2114-4ba0-afd9-d6e793f000db&amp;amp;utm_medium=social&amp;amp;utm_source=facebook&amp;amp;utm_campaign=docker-2681022#support-or-contact&quot; id=&quot;support-or-contact&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;octicon octicon-link&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;/a&gt;Support or Contact&lt;/h3&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
Tweet&amp;nbsp;&lt;a class=&quot;user-mention&quot; href=&quot;https://github.com/ianmiell&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;@ianmiell&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;background-color: #f2f2f2; border: 0px; color: #222222; font-family: &#39;Lucida Grande&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 24px; font-stretch: inherit; letter-spacing: -1px; line-height: inherit; margin: 10px 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a aria-hidden=&quot;true&quot; class=&quot;anchor&quot; href=&quot;http://ianmiell.github.io/docker-101-tutorial/?hash=ca984571-2114-4ba0-afd9-d6e793f000db&amp;amp;utm_medium=social&amp;amp;utm_source=facebook&amp;amp;utm_campaign=docker-2681022#support-or-contact&quot; id=&quot;support-or-contact&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;octicon octicon-link&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/span&gt;&lt;/a&gt;Support or Contact&lt;/h3&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
See also my book:&amp;nbsp;&lt;a href=&quot;http://manning.com/miell/?a_aid=zwischenzugs&amp;amp;a_bid=e0d48f62&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;Docker in Practice&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;http://manning.com/miell/?a_aid=zwischenzugs&amp;amp;a_bid=e0d48f62&quot; style=&quot;border: 0px; color: #007edf; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;&lt;/a&gt;Get 39% off with the code: 39miell&lt;/div&gt;
&lt;a href=&quot;http://manning.com/miell/?a_aid=zwischenzugs&amp;amp;a_bid=e0d48f62&quot; style=&quot;background-color: #f2f2f2; border: 0px; color: #007edf; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin: 0px; padding: 0px; text-decoration: none; text-shadow: none; transition: text-shadow 0.5s ease; vertical-align: baseline;&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: #f2f2f2; border: 0px; color: #373737; font-family: &#39;Myriad Pro&#39;, Calibri, Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 15px; margin-top: 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;img src=&quot;http://ecx.images-amazon.com/images/I/41qC-I21FCL._SX258_BO1,204,203,200_.jpg&quot; style=&quot;border: none; box-shadow: rgb(235, 235, 235) 0px 0px 5px; display: inline; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; max-width: 739px; padding: 0px; position: relative; text-align: center; vertical-align: middle;&quot; /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/3122248225089878535/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/docker-101-tutorial.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/3122248225089878535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/3122248225089878535'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/docker-101-tutorial.html' title='Docker 101 Tutorial'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-2057555709252426094</id><published>2016-05-23T12:00:00.000-04:00</published><updated>2016-05-23T12:00:30.899-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="error"/><category scheme="http://www.blogger.com/atom/ns#" term="forms"/><category scheme="http://www.blogger.com/atom/ns#" term="no data found"/><category scheme="http://www.blogger.com/atom/ns#" term="ORA-01403"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><title type='text'>Oracle/PLSQL: ORA-01403</title><content type='html'>&lt;div class=&quot;article&quot; style=&quot;background: rgb(255, 255, 255); box-sizing: border-box; color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 22.8571px; min-height: 700px; padding: 20px;&quot;&gt;
&lt;div class=&quot;section&quot; style=&quot;box-sizing: border-box;&quot;&gt;
&lt;div style=&quot;box-sizing: border-box; margin-bottom: 11px;&quot;&gt;
Learn the cause and how to resolve the ORA-01403 error message in Oracle.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; style=&quot;box-sizing: border-box;&quot;&gt;
&lt;h2 style=&quot;box-sizing: border-box; color: #535353; font-family: inherit; font-size: 20px; line-height: 1.1; margin-bottom: 11px; margin-top: 30px;&quot;&gt;
Description&lt;/h2&gt;
&lt;div style=&quot;box-sizing: border-box; margin-bottom: 11px;&quot;&gt;
When you encounter an ORA-01403 error, the following error message will appear:&lt;/div&gt;
&lt;ul style=&quot;box-sizing: border-box; margin-bottom: 11px; margin-top: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box;&quot;&gt;ORA-01403: no data found&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; style=&quot;box-sizing: border-box;&quot;&gt;
&lt;h2 style=&quot;box-sizing: border-box; color: #535353; font-family: inherit; font-size: 20px; line-height: 1.1; margin-bottom: 11px; margin-top: 30px;&quot;&gt;
Cause&lt;/h2&gt;
&lt;div style=&quot;box-sizing: border-box; margin-bottom: 11px;&quot;&gt;
You tried one of the following:&lt;/div&gt;
&lt;ol style=&quot;box-sizing: border-box; margin-bottom: 11px; margin-top: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box;&quot;&gt;You executed a SELECT INTO statement and no rows were returned.&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box;&quot;&gt;You referenced an uninitialized row in a table.&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box;&quot;&gt;You read past the end of file with the UTL_FILE package.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; style=&quot;box-sizing: border-box;&quot;&gt;
&lt;h2 style=&quot;box-sizing: border-box; color: #535353; font-family: inherit; font-size: 20px; line-height: 1.1; margin-bottom: 11px; margin-top: 30px;&quot;&gt;
Resolution&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div style=&quot;box-sizing: border-box; margin-bottom: 11px;&quot;&gt;
The option(s) to resolve this Oracle error are:&lt;/div&gt;
&lt;h3 style=&quot;box-sizing: border-box; color: inherit; font-family: inherit; font-size: 18px; font-weight: 500; line-height: 1.1; margin-bottom: 11px; margin-top: 30px;&quot;&gt;
Option #1&lt;/h3&gt;
&lt;div style=&quot;box-sizing: border-box; margin-bottom: 11px;&quot;&gt;
Terminate processing of the data.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sharepage&quot; style=&quot;background: rgb(254, 255, 238); border-top-color: rgb(238, 238, 238); border-top-style: solid; border-top-width: 1px; box-sizing: border-box; color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; height: 42px; padding: 8px 10px 0px 0px;&quot;&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/2057555709252426094/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/oracleplsql-ora-01403.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/2057555709252426094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/2057555709252426094'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/oracleplsql-ora-01403.html' title='Oracle/PLSQL: ORA-01403'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-7109126048547359172</id><published>2016-05-23T07:27:00.000-04:00</published><updated>2016-05-23T07:27:54.514-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kurs www"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql (software)"/><category scheme="http://www.blogger.com/atom/ns#" term="phpmyadmin"/><category scheme="http://www.blogger.com/atom/ns#" term="sql"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Libros y Manuales de MYSQL</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqX-ROWnOUH_KmqugDJw21BicdlMMxEXJ6WXV4BLcCcfd1CpGt4HcabdOfprzJ2BY5yWQ0USvnZPI2x-EnJTKaXfWwrz9fWvOF_UHRS4pwS-B99I8LQ8Qfp9lv4IcaDhuj2VFbRxA0IsVZ/s1600/mysql.png&quot; imageanchor=&quot;1&quot; style=&quot;color: #37a9a6; margin-left: 1em; margin-right: 1em; outline: none;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqX-ROWnOUH_KmqugDJw21BicdlMMxEXJ6WXV4BLcCcfd1CpGt4HcabdOfprzJ2BY5yWQ0USvnZPI2x-EnJTKaXfWwrz9fWvOF_UHRS4pwS-B99I8LQ8Qfp9lv4IcaDhuj2VFbRxA0IsVZ/s400/mysql.png&quot; style=&quot;background: transparent; border: none; padding: 0px;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;b style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px; text-align: start;&quot;&gt;MySQL&lt;/b&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;es un&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;mw-redirect&quot; href=&quot;https://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Sistema de gestión de bases de datos&quot;&gt;sistema de gestión de bases de datos&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Modelo_relacional&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Modelo relacional&quot;&gt;relacional&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;desarrollado bajo licencia dual&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;mw-redirect&quot; href=&quot;https://es.wikipedia.org/wiki/Licencia_p%C3%BAblica_general_de_GNU&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Licencia pública general de GNU&quot;&gt;GPL&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Software_propietario&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Software propietario&quot;&gt;Licencia comercial&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;por&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Oracle_Corporation&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Oracle Corporation&quot;&gt;Oracle Corporation&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;y está considerada como la base datos&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;mw-redirect&quot; href=&quot;https://es.wikipedia.org/wiki/Open_source&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Open source&quot;&gt;open source&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;más popular del mundo&lt;/span&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;, y una de las más populares en general junto a&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Oracle_Database&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Oracle Database&quot;&gt;Oracle&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&amp;nbsp;y&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Microsoft_SQL_Server&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Microsoft SQL Server&quot;&gt;Microsoft SQL Server&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;, sobre todo para entornos de&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://es.wikipedia.org/wiki/Desarrollo_web&quot; style=&quot;background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: #0b0080; font-family: sans-serif; font-size: 14px; line-height: 22.4px; outline: none; text-align: start; text-decoration: none;&quot; title=&quot;Desarrollo web&quot;&gt;desarrollo web&lt;/a&gt;&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;.&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;Por lo tanto les comparto este pack de libros y manuales de MYSQL para que mejores tus conocimientos y habilidades con este Sistema de Gestión de Bases de Datos (SGBD).&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&lt;b&gt;Contenido:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSpYDIdh3Z8qOnLuyPGju-4XSBIvl1RYsDCQ4u2HEnudYLWjr3wjMzGDggTPQPboTvQCjcVJJLoEU9hJtu29EW8ml_D-n416AodMVBnLa1NWddiE0No7z3pyE7x6aS4_UuVYM_VLkvPLCa/s1600/contenido-mysql.PNG&quot; imageanchor=&quot;1&quot; style=&quot;color: #37a9a6; margin-left: 1em; margin-right: 1em; outline: none;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;329&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSpYDIdh3Z8qOnLuyPGju-4XSBIvl1RYsDCQ4u2HEnudYLWjr3wjMzGDggTPQPboTvQCjcVJJLoEU9hJtu29EW8ml_D-n416AodMVBnLa1NWddiE0No7z3pyE7x6aS4_UuVYM_VLkvPLCa/s640/contenido-mysql.PNG&quot; style=&quot;background: transparent; border: none; padding: 0px;&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: center;&quot;&gt;
&lt;a href=&quot;http://ouo.io/bbX5W&quot; rel=&quot;nofollow&quot; style=&quot;color: #37a9a6; outline: none;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Z5ngRd7GjmXSI2-MzVovwPegp57jYZN5k45FCOUqOhg458SzUQudaWAWkqte_42oIvBOOZTbskbQcm3Xgn0soGNy04x4jjz3LXbgL5WyfXwriorpvCZlvuaeMDCJsy3VLs3NnvPiTpXW/s320/Descarga+Mega.gif&quot; style=&quot;background: transparent; border: none; padding: 0px;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: center;&quot;&gt;
&lt;b&gt;Libros de SQL Server&lt;/b&gt;:&amp;nbsp;&lt;a href=&quot;http://adf.ly/1aXxDx&quot; rel=&quot;nofollow&quot; style=&quot;color: #37a9a6; outline: none;&quot; target=&quot;_blank&quot;&gt;Descargar&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;background-color: white; clear: both; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;center style=&quot;background-color: white; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;
&lt;iframe allowtransparency=&quot;allowtransparency&quot; cid=&quot;115963_205882_5&quot; frameborder=&quot;0&quot; h=&quot;90&quot; hid=&quot;bnr2.revdepo.com&quot; htmlname=&quot;imgBanner20160520/20160523_018045022_image-banner.cib&quot; id=&quot;rhfrm_115963_205882_5&quot; name=&quot;rhfrm_115963_205882_5&quot; scrolling=&quot;no&quot; src=&quot;http://bnr2.revdepo.com/adServe/imgBanner20160520/20160523_018045022_image-banner.cib?tid=115963_205882_5&amp;amp;num=1&amp;amp;w=728&amp;amp;h=90&amp;amp;orig_url=http%3A//desarrollandoapp.blogspot.mx/2016/05/pack-de-libros-y-manuales-de-mysql.html&amp;amp;ref_url=https%3A//www.facebook.com/DO&amp;amp;keywords=Pack%20de%20Libros%20y%20Manuales%20de%20MYSQL%20%7E%20Descargar%20Libros%20y%20Cursos%20de%20Programaci%F3n&amp;amp;ap=cmp%3DBANNER%26evp%3DXJcuJWr4HfWSfiJBwSJn3fbWwvziNp_1SEH2jVqYlwLVTqGdIoEAMk0OpNnqKgvC&quot; style=&quot;border-style: none; border-width: initial; height: 90px; width: 728px;&quot; w=&quot;728&quot;&gt;&lt;/iframe&gt;&lt;/center&gt;
&lt;br style=&quot;background-color: white; color: #555555; font-family: &#39;PT Sans&#39;, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/7109126048547359172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/libros-y-manuales-de-mysql.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7109126048547359172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7109126048547359172'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/libros-y-manuales-de-mysql.html' title='Libros y Manuales de MYSQL'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqX-ROWnOUH_KmqugDJw21BicdlMMxEXJ6WXV4BLcCcfd1CpGt4HcabdOfprzJ2BY5yWQ0USvnZPI2x-EnJTKaXfWwrz9fWvOF_UHRS4pwS-B99I8LQ8Qfp9lv4IcaDhuj2VFbRxA0IsVZ/s72-c/mysql.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-355432126679593825</id><published>2016-05-22T16:43:00.001-04:00</published><updated>2016-05-22T16:48:40.715-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arch"/><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="free software"/><category scheme="http://www.blogger.com/atom/ns#" term="gnu/linux (operating system)"/><category scheme="http://www.blogger.com/atom/ns#" term="linus"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="open-source"/><category scheme="http://www.blogger.com/atom/ns#" term="podcast"/><category scheme="http://www.blogger.com/atom/ns#" term="review"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>10 Useful “IP” Commands to Configure Network Interfaces</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
In this post, we are going to review how we can assign&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Static IP Address&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Static Route&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Default Gateway&lt;/span&gt;&amp;nbsp;etc.&amp;nbsp; Assigning IP Address on demand using&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;IP&lt;/span&gt;&amp;nbsp;command.&amp;nbsp;IFCONFIG command&amp;nbsp;is deprecated and replaced by&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;IP&lt;/span&gt;command in&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Linux&lt;/span&gt;. However,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;IFCONFIG&lt;/span&gt;&amp;nbsp;command is still works and available for most of the Linux distributions.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;background-color: #f1f1f1; border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-align: center; vertical-align: baseline;&quot;&gt;Note:&lt;/span&gt;&lt;span style=&quot;font-family: inherit; font-style: italic; font-variant: inherit; font-weight: inherit; line-height: 28.8px; text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: inherit; font-style: italic; font-variant: inherit; font-weight: inherit; line-height: 28.8px; text-align: center;&quot;&gt;Please take configuration file backup before doing any changes.&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
How do i Configure Static IP Address Internet Protocol (IPv4)&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
To configure static IP Address, you need to update or edit network configuration file to assign an Static IP Address to a system. You must be superuser with&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;su (switch user)&lt;/span&gt;&amp;nbsp;command from terminal or command prompt.&lt;/div&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
For RHEL/CentOS/Fedora&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Open and edit network configuration file for (&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth0&lt;/span&gt;&amp;nbsp;or&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth1&lt;/span&gt;) using your favorite editor. For example, to assigning IP Address to&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth0&lt;/span&gt;&amp;nbsp;interface as follows.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;[root@tecmint ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0&lt;/pre&gt;
&lt;h5 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 22px; font-stretch: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
Simple output:&lt;/h5&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;DEVICE=&quot;eth0&quot;
BOOTPROTO=static
ONBOOT=yes
TYPE=&quot;Ethernet&quot;
IPADDR=192.168.50.2
NAME=&quot;System eth0&quot;
HWADDR=00:0C:29:28:FD:4C
GATEWAY=192.168.50.1&lt;/pre&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
For Ubuntu/Debian/Linux Mint&lt;/h4&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;auto eth0
iface eth0 inet static
address 192.168.50.2
netmask 255.255.255.0
gateway 192.168.50.1&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Next, restart network services after entering all the details using the following command.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# /etc/init.d/networking restart&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo /etc/init.d/networking restart&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
1. How to Assign a IP Address to Specific Interface&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The following command used to assign IP Address to a specific interface (&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth1&lt;/span&gt;) on the fly.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip addr add 192.168.50.5 dev eth1&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip addr add 192.168.50.5 dev eth1&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Note:&lt;/span&gt;&amp;nbsp;Unfortunately all these settings will be lost after a system restart.&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
2. How to Check an IP Address&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
To get the depth information of your network interfaces like IP Address, MAC Address information, use the following command as shown below.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip addr show&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip addr show&lt;/pre&gt;
&lt;h5 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 22px; font-stretch: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
Sample Output&lt;/h5&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:28:fd:4c brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.2/24 brd 192.168.50.255 scope global eth0
    inet6 fe80::20c:29ff:fe28:fd4c/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:28:fd:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.5/24 scope global eth1
    inet6 fe80::20c:29ff:fe28:fd56/64 scope link
       valid_lft forever preferred_lft forever&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
3. How to Remove an IP Address&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The following command will remove an assigned IP address from the given interface (&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth1&lt;/span&gt;).&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip addr del 192.168.50.5/24 dev eth1&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip addr del 192.168.50.5/24 dev eth1&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
4. How to Enable Network Interface&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The “&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;up&lt;/span&gt;” flag with interface name (&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth1&lt;/span&gt;) enables a network interface. For example, the following command will activates the&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth1&lt;/span&gt;&amp;nbsp;network interface.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set eth1 up&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip link set eth1 up&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
5. How to Disable Network Interface&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
The “&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;down&lt;/span&gt;” flag with interface name (&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth1&lt;/span&gt;) disables a network interface. For example, the following command will De-activates the&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth1&lt;/span&gt;&amp;nbsp;network interface.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set eth1 down&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip link set eth1 down&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
6. How do I Check Route Table?&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Type the following command to check the routing table information of system.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip route show&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip route show&lt;/pre&gt;
&lt;h5 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 22px; font-stretch: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
Sample Output&lt;/h5&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;10.10.20.0/24 via 192.168.50.100 dev eth0
192.168.160.0/24 dev eth1  proto kernel  scope link  src 192.168.160.130  metric 1
192.168.50.0/24 dev eth0  proto kernel  scope link  src 192.168.50.2
169.254.0.0/16 dev eth0  scope link  metric 1002
default via 192.168.50.1 dev eth0  proto static&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
7. How do I Add Static Route&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Why you need to add Static routes or Manual routes, because that the traffic must not pass through the default gateway. We need to add Static routes to pass traffic from best way to reach the destination.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip route add 10.10.20.0/24 via 192.168.50.100 dev eth0&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip route add 10.10.20.0/24 via 192.168.50.100 dev eth0&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
8. How to Remove Static Route&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
To remove assigned static route, simply type the following command.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip route del 10.10.20.0/24&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip route del 10.10.20.0/24&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
9. How do I Add Persistence Static Routes&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
All the above route will be lost after a system restart. To add permanent Static route, edit file&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;/etc/sysconfig/network-scripts/route-eth0&lt;/span&gt;&amp;nbsp;(We are storing static route for (&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth0&lt;/span&gt;) and add the following lines and save and exist. By default&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;route-eth0&lt;/span&gt;&amp;nbsp;file will not be there, need to be created.&lt;/div&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
For RHEL/CentOS/Fedora&lt;/h4&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# vi /etc/sysconfig/network-scripts/route-eth0
10.10.20.0/24 via 192.168.50.100 dev eth0&lt;/pre&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
For Ubuntu/Debian/Linux Mint&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Open the file&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;/etc/network/interfaces&lt;/span&gt;&amp;nbsp;and at the end add the persistence Static routes. IP Addresses may differ in your environment.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo vi /etc/network/interfaces&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;auto eth0
iface eth0 inet static
address 192.168.50.2
netmask 255.255.255.0
gateway 192.168.50.100
#########{&lt;span style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Static Route&lt;/span&gt;}###########
up ip route add 10.10.20.0/24 via 192.168.50.100 dev eth0&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Next, restart network services after entering all the details using the following command.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# /etc/init.d/network restart&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo /etc/init.d/network restart&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
10. How do I Add Default Gateway&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Default gateway can be specified globally or for in interface-specific config file. Advantage of default gateway is If we have more than one NIC is present in the system. You can add default gateway on the fly as shown below command.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip route add default via 192.168.50.100&lt;/pre&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ sudo ip route add default via 192.168.50.100&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
Kindly correct me if i missed out. Please refer manual page doing&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;man ip&lt;/span&gt;&amp;nbsp;from terminal/command prompt to know more about IP Command.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/355432126679593825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/10-useful-ip-commands-to-configure.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/355432126679593825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/355432126679593825'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/10-useful-ip-commands-to-configure.html' title='10 Useful “IP” Commands to Configure Network Interfaces'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-5619833213351511680</id><published>2016-05-21T20:43:00.000-04:00</published><updated>2016-05-21T20:43:59.816-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="curso"/><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="ejb"/><category scheme="http://www.blogger.com/atom/ns#" term="facelets"/><category scheme="http://www.blogger.com/atom/ns#" term="hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java ee"/><category scheme="http://www.blogger.com/atom/ns#" term="jpa"/><category scheme="http://www.blogger.com/atom/ns#" term="jsf"/><category scheme="http://www.blogger.com/atom/ns#" term="jsp"/><category scheme="http://www.blogger.com/atom/ns#" term="mvc"/><category scheme="http://www.blogger.com/atom/ns#" term="patrones de diseno"/><category scheme="http://www.blogger.com/atom/ns#" term="poo"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Curso de Java y Tecnologías Java EE</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://aprendergratis.es/wp-content/uploads/2014/05/javaee1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://aprendergratis.es/wp-content/uploads/2014/05/javaee1.png&quot; height=&quot;136&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Documento en formato pdf de 145 páginas que contiene:&lt;br /&gt;
TEMA 1: HERRAMIENTAS DE DESARROLLO: ECLIPSE&lt;br /&gt;
1.1.- INTRODUCCIÓN&lt;br /&gt;
1.2.- ARTEFACTOS DE DESARROLLO Y RUNTIME&lt;br /&gt;
1.3.- AYUDANDO A ECLIPSE&lt;br /&gt;
TEMA 2: LENGUAJE JAVA Y POO&lt;br /&gt;
2.1.- PROGRAMACIÓN ORIENTADA A OBJETOS&lt;br /&gt;
2.2.- PROGRAMACIÓN ORIENTADA A A SPECTOS&lt;br /&gt;
2.3.- LENGUAJE JAVA&lt;br /&gt;
TEMA 3: PATRONES DE DISEÑO WEB&lt;br /&gt;
3.1.- INTRODUCCIÓN&lt;br /&gt;
3.2.- PATRONES WEB&lt;br /&gt;
3.3.- PATRÓN MVC&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
TEMA 4: ARQUITECTURA JAVA EE&lt;br /&gt;
4.1.- MODELO DE CAPAS&lt;br /&gt;
4.2.- ECLIPSE Y JAVA EE&lt;br /&gt;
TEMA 5: TECNOLOGÍAS JAVA EE&lt;br /&gt;
5.1.- T ECNOLOGÍAS VISTA : JSF&lt;br /&gt;
5.2.- T ECNOLOGÍAS CONTROL: EJB&lt;br /&gt;
5.3.- T ECNOLOGÍAS MODELO: JPA&lt;br /&gt;
TEMA 6: TECNOLOGÍAS AVANZADAS JAVA EE&lt;br /&gt;
6.1.- SERVICIOS WEB&lt;br /&gt;
6.2.- AUTENTICACIÓN JAVA EE&lt;br /&gt;
6.3.- PORTALES Y PORTLETS&lt;br /&gt;
APÉNDICE A: DIARIO DIGITAL&lt;br /&gt;
APÉNDICE B: CONFIGURAR PROYECTO ECLIPSE&lt;br /&gt;
B.1.- CREAR PROYECTO JAVA EE&lt;br /&gt;
B.2.- CONFIGURAR FACELETS Y RICHFACES&lt;br /&gt;
B.3.- CONFIGURAR HIBERNATE JPA Y HSQLDB&lt;br /&gt;
B.4.- CONFIGURAR SERVICIOS WEB&lt;br /&gt;
APÉNDICE C: TRANSPARENCIAS DEL CURSO&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://adf.ly/13614705/curso-javaee&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Link de descarga&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/5619833213351511680/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/curso-de-java-y-tecnologias-java-ee.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/5619833213351511680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/5619833213351511680'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/curso-de-java-y-tecnologias-java-ee.html' title='Curso de Java y Tecnologías Java EE'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-6873388417279412508</id><published>2016-05-21T19:14:00.002-04:00</published><updated>2016-05-21T19:14:28.123-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="OS"/><category scheme="http://www.blogger.com/atom/ns#" term="VIRUS"/><title type='text'>Cómo eliminar virus que crea acceso directo de nuestra usb y computador</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;En
 este post les quiero hablar de algo muy común en nuestro ordenador y 
que día tras día llegan para hacer daño a todos los archivo que tenemos 
en nuestro disco, el famoso &quot;&lt;i&gt;&lt;strong&gt;Virus&lt;/strong&gt;&lt;/i&gt;&quot;, pero es un 
virus especial de muchos que circular por la red y que hace mucho daño 
si lo dejamos que se aloje en nuestro sistema operativo y también en 
nuestra memoria USB que causa el acceso directo, tal vez ya muchos 
sabrán como eliminarlo de nuestra USB y de nuestra computadora, pero 
también sé que muchos tienen que pagar para que alguien que sabe de 
sistemas le solucione ese problema que causa muchos dolores de cabeza. 
Con estas dos herramientas muy poderosas, podrán eliminar ese virus de 
su computadora y de su memoria usb y así poder tener todo bajo control 
sin necesidad de comando que lo único que hace si no sabemos usarlos es 
des configurar nuestro pc y perder no solo un archivo si no todo el 
sistema si se hace algo incorrecto.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Existen
 muchas maneras de quitar el famoso virus de acceso directo pero hoy les
 quiero recomendar dos aplicaciones muy fácil de utilizar ya que no 
necesitan de instalación, simplemente con un clip ya estará solucionado y
 con todos sus archivos funcionando correctamente.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Para empezar lo quitaremos primero de la memoria USB con la aplicación llamada &lt;a href=&quot;http://www.mediafire.com/download/lis23bjtir9mdcd/Domina+tu+PC-QUITAR+VIRUS.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;strong&gt;Files Show&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;
 que como dije al principio algunos no la conocen, otros si, en fin, sé 
que les servirá y siempre la tendrán a la mano para cuando llegue 
nuestro amigo, virus.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh06-XBKDTp63La_oFzGiacMYwSxdgX_1LkF7bPu_oC4Fg4Bg5-lU5jIgQdILCr7UwJRsiJNOuGZz-kgASV0k_rSLNQzwYZSyzlBDjfbMDH58QUuzDK0Bv5GJFUpJQPBbeuhodjwFeyT-0/s1600/1111.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh06-XBKDTp63La_oFzGiacMYwSxdgX_1LkF7bPu_oC4Fg4Bg5-lU5jIgQdILCr7UwJRsiJNOuGZz-kgASV0k_rSLNQzwYZSyzlBDjfbMDH58QUuzDK0Bv5GJFUpJQPBbeuhodjwFeyT-0/s1600/1111.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h2 style=&quot;text-align: center;&quot;&gt;
&amp;nbsp;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Quitar Virus Acceso Directo &quot;USB&quot;&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;a href=&quot;http://www.mediafire.com/download/lis23bjtir9mdcd/Domina+tu+PC-QUITAR+VIRUS.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;strong&gt;File show&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;,
 es una pequeña herramienta que recupera archivos ocultos por virus o 
por terceros, y elimina los archivos creados por el propio virus. Lo 
primero sería abrir con administrador, dar clip en Seleccionar 
Directorio, buscar nuestra memoria usb para seleccionarla y darle en 
aceptar.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtxI4lLMMdjblX_z4mY8gTVytd4JQ_9AJKECCT35k_MGRA-i4CeBHhgtYIjsqbiafelSs0xDE1epx2qlz4wM1xmpZyXeDGEjCk0vNNByp2jq6OdXcZAmp82lAC4DiNI3wcHnjhHGRgM_A/s1600/virus-acceso-directo.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;elimina-virus-acceso-directo-usb-computador&quot; border=&quot;0&quot; height=&quot;341&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtxI4lLMMdjblX_z4mY8gTVytd4JQ_9AJKECCT35k_MGRA-i4CeBHhgtYIjsqbiafelSs0xDE1epx2qlz4wM1xmpZyXeDGEjCk0vNNByp2jq6OdXcZAmp82lAC4DiNI3wcHnjhHGRgM_A/s640/virus-acceso-directo.jpg&quot; title=&quot;elimina-virus-acceso-directo-usb-computador&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;El siguiente paso sería dar clip en &quot;&lt;i&gt;&lt;strong&gt;Desocultar archivos&lt;/strong&gt;&lt;/i&gt;&quot;
 para que empiece a reparar y limpiar todas nuestra información que 
necesitamos. Ya cuando finalice solo damos en aceptar de nuevo y ya 
tendríamos todo solucionado, libre de ese virus que nos estaba ocultando
 todo lo que guardamos con tanta importancia en nuestra USB.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgOuIzDbmDy9fJsgZY1BmDtcAiac4O0DjII9X9_V4KhQ_xR2RosUjULeVld82xDuqKzpQsYERQq6y-y2wzoGRwCR3La8a_d7ICGpVNCQJq8bSdXlTzcH11c5jOHZYtw-EfvsmfWi6FgRk/s1600/virus-acceso-directo-.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;elimina-virus-acceso-directo-usb-computador&quot; border=&quot;0&quot; height=&quot;416&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgOuIzDbmDy9fJsgZY1BmDtcAiac4O0DjII9X9_V4KhQ_xR2RosUjULeVld82xDuqKzpQsYERQq6y-y2wzoGRwCR3La8a_d7ICGpVNCQJq8bSdXlTzcH11c5jOHZYtw-EfvsmfWi6FgRk/s640/virus-acceso-directo-.jpg&quot; title=&quot;elimina-virus-acceso-directo-usb-computador&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: center;&quot;&gt;
Quitar virus Acceso Directo &quot;Computador&quot;&lt;/h3&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Como
 ya muchos han notado que cuando insertamos nuestra usb limpia a un 
computador que tenga el virus de acceso directo, en seguida todos 
nuestros archivos guardados de nuestra usb quedan infectados y 
totalmente ocultos, pero para ese problema también hay solución con la 
aplicación &lt;a href=&quot;http://www.mediafire.com/download/lis23bjtir9mdcd/Domina+tu+PC-QUITAR+VIRUS.rar&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;&lt;strong&gt;Usb File Resc&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;,
 otra pequeña y poderosa herramienta que sin dar tantas vueltas buscando
 el nombre del virus con rutas o comandos, este programa automáticamente
 lo detecta y elimina sin dejar rastro alguno.Algo muy importante es 
que, &lt;strong&gt;Usb File Resc&lt;/strong&gt; también sirve para las memorias usb igual que el anterior.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Damos en ejecutar como administrador y en la parte de abajo escribimos la palabra &quot;&lt;strong&gt;Matar&lt;/strong&gt;&quot;
 y pulsamos Enter, luego presionamos cualquier tecla y nos pedirá el 
sistema operativo que tengamos, y damos de nuevo Enter para que comience
 a escanear y elimine el virus.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXSPqn_fo4ui0xmjkeyCbYXvgkGRZSfx2nQ16gofsSM1PlY_WngOXlxI8e0-_Mpau1mHHNQsCZAU8xeIjFy4ah7hV2piRYXTjBslatDXW35Ug260p1_bFpWBcliPEM7pzdrOXZR8-KAC8/s1600/virus-acceso-directo.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;elimina-virus-acceso-directo-usb-computador&quot; border=&quot;0&quot; height=&quot;319&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXSPqn_fo4ui0xmjkeyCbYXvgkGRZSfx2nQ16gofsSM1PlY_WngOXlxI8e0-_Mpau1mHHNQsCZAU8xeIjFy4ah7hV2piRYXTjBslatDXW35Ug260p1_bFpWBcliPEM7pzdrOXZR8-KAC8/s640/virus-acceso-directo.jpg&quot; title=&quot;elimina-virus-acceso-directo-usb-computador&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyoAyRX-HlvtGlb6DsIcc35dhgIk-Vc46k8r1-yY5yKNiPX3OOUBTeYnC1r_4AzHWE6fMm71WBxxDmGaJehSNkkbUUYqFIPqU1fWFywS_D59hc_MR1Fwcc7itcZou091_s8NhlR6qubIc/s1600/virus-acceso-directo-.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;elimina-virus-acceso-directo-usb-computador&quot; border=&quot;0&quot; height=&quot;387&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyoAyRX-HlvtGlb6DsIcc35dhgIk-Vc46k8r1-yY5yKNiPX3OOUBTeYnC1r_4AzHWE6fMm71WBxxDmGaJehSNkkbUUYqFIPqU1fWFywS_D59hc_MR1Fwcc7itcZou091_s8NhlR6qubIc/s640/virus-acceso-directo-.jpg&quot; title=&quot;elimina-virus-acceso-directo-usb-computador&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Cuando
 haya terminado pulsamos nuevamente cualquier tecla y ya podemos cerrar 
para luego ir la siguiente ruta y deshabilitar el proceso del virus para
 que no se ejecute al reiniciar la PC.Pulsamos en las teclas windows+R o
 buscamos en inicio Ejecutar y luego escribimos msconfig.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq4yXoe7EBqVGMtcjVtcYdbZesKc58Z766a-bMIUzbZ1fIR-phIqtUIiS3h_Cm1YlcZV6en6G1HPibTOqJ5DtnAMbGvdIbowJLiHKKUpM-yxyFo8trgUifwh6lh8Dwk9UYY8tQkppFosM/s1600/virus-acceso-directo.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;elimina-virus-acceso-directo-usb-computador&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq4yXoe7EBqVGMtcjVtcYdbZesKc58Z766a-bMIUzbZ1fIR-phIqtUIiS3h_Cm1YlcZV6en6G1HPibTOqJ5DtnAMbGvdIbowJLiHKKUpM-yxyFo8trgUifwh6lh8Dwk9UYY8tQkppFosM/s1600/virus-acceso-directo.jpg&quot; title=&quot;elimina-virus-acceso-directo-usb-computador&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Seguido
 de esa ventana pulsamos en inicio de Windows, donde está el virus 
activo y ejecutándose sin ningún control. Simple mente debemos 
deshabilitar, si queremos solo lo que se encuentra con ese nombre de 
Microsoft, aunque en lo personal recomendaría que se deshabilite todos 
esos programas que inician cuando encendemos nuestra computadora, lo que
 hace más lento nuestro encendido, pero eso sería a criterio de cada 
uno. Para finalizar solo damos en aceptar y reiniciamos para que se 
hagan los cambios y con eso estaría todo solucionado y libre de ese 
virus que nos da problemas con nuestros archivos y memoria usb.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggVmlAk4NidIMt9IX9PH-MxQz4ddFDrHkJtNfrCiEiImPfHQccUS2nXoYlsowidAc3u5IGTWCpcKfbn8qOJWVXZWbPvP4y7CT6tBwDDA5KCHR9Cf0F_vwDFuWFywCYZvMZRzBQn83WU7c/s1600/virus-acceso-directo.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;elimina-virus-acceso-directo-usb-computador&quot; border=&quot;0&quot; height=&quot;262&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggVmlAk4NidIMt9IX9PH-MxQz4ddFDrHkJtNfrCiEiImPfHQccUS2nXoYlsowidAc3u5IGTWCpcKfbn8qOJWVXZWbPvP4y7CT6tBwDDA5KCHR9Cf0F_vwDFuWFywCYZvMZRzBQn83WU7c/s400/virus-acceso-directo.jpg&quot; title=&quot;elimina-virus-acceso-directo-usb-computador&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;Ya
 para finalizar sería que recomendaras este artículo a tus amigos que 
tengan este problema y darle me gusta a mi blog, igual me pueden seguir 
en Facebook para que esté al tanto de todos mis artículos que subo a 
diario, un abrazo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/6873388417279412508/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/como-eliminar-virus-que-crea-acceso.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/6873388417279412508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/6873388417279412508'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/como-eliminar-virus-que-crea-acceso.html' title='Cómo eliminar virus que crea acceso directo de nuestra usb y computador'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh06-XBKDTp63La_oFzGiacMYwSxdgX_1LkF7bPu_oC4Fg4Bg5-lU5jIgQdILCr7UwJRsiJNOuGZz-kgASV0k_rSLNQzwYZSyzlBDjfbMDH58QUuzDK0Bv5GJFUpJQPBbeuhodjwFeyT-0/s72-c/1111.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-3797140829617689986</id><published>2016-05-21T16:16:00.003-04:00</published><updated>2016-05-21T16:16:25.602-04:00</updated><title type='text'>What is DevOps? - In Simple English</title><content type='html'>&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;270&quot; src=&quot;https://www.youtube.com/embed/_I94-tJlovg&quot; width=&quot;480&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/3797140829617689986/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/what-is-devops-in-simple-english_21.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/3797140829617689986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/3797140829617689986'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/what-is-devops-in-simple-english_21.html' title='What is DevOps? - In Simple English'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/_I94-tJlovg/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-8634663612725349331</id><published>2016-05-21T15:52:00.000-04:00</published><updated>2016-05-21T18:18:37.318-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="idioma"/><category scheme="http://www.blogger.com/atom/ns#" term="Tecnologia"/><category scheme="http://www.blogger.com/atom/ns#" term="the pilot"/><category scheme="http://www.blogger.com/atom/ns#" term="traductor"/><category scheme="http://www.blogger.com/atom/ns#" term="waverly labs"/><title type='text'>Este moderno aparato en tu oído te hará entender cualquier idioma aunque no lo sepas</title><content type='html'>&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.65em;&quot;&gt;
La mayoría de nosotros nos hemos encontrado en la incómoda situación de intentar hablar un idioma extranjero. Algunas veces es gracioso, otras es simplemente vergonzoso y otras veces se trata de un completo desastre.&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
Sin embargo, gracias a este nuevo dispositivo de traducción que fácilmente cabe en tu oído, los días de sufrir por no lograr comunicarte en la lengua local se habrán terminado.&lt;/div&gt;
&lt;div id=&quot;leaderboard3&quot; style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; line-height: 25.9999px; margin: 25px -7.5px;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.65em;&quot;&gt;
&lt;img alt=&quot;Mujer usando el &amp;quot;The Pilot&amp;quot;&quot; class=&quot;alignnone wp-image-18189 size-full&quot; src=&quot;http://mediatique.io/wp-content/uploads/2016/05/real-time-translator-ear-waverly-labs-2.jpg&quot; height=&quot;466&quot; style=&quot;border: 0px; box-sizing: border-box !important; height: auto; max-width: 100%; width: 540px;&quot; width=&quot;700&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
El dispositivo se llama “&lt;em style=&quot;box-sizing: border-box !important;&quot;&gt;The Pilot&lt;/em&gt;” y&amp;nbsp;&lt;span style=&quot;box-sizing: border-box !important; font-weight: 700;&quot;&gt;Waverly Labs&lt;/span&gt;&amp;nbsp;es la compañía que nos entrega tan fantástica e innovadora idea. Cuando llegue a las tiendas en septiembre, el sistema le permitirá a quién lo use, entender uno de varios idiomas en tiempo real a través del dispositivo puesto en el oído.&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
&lt;img alt=&quot;Close-up del dispositivo&quot; class=&quot;alignnone wp-image-18191 size-full&quot; src=&quot;http://mediatique.io/wp-content/uploads/2016/05/real-time-translator-ear-waverly-labs-4.jpg&quot; height=&quot;453&quot; style=&quot;border: 0px; box-sizing: border-box !important; height: auto; max-width: 100%; width: 540px;&quot; width=&quot;700&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
Una app te ayudará a navegar por los idiomas, pudiendo escoger entre español, inglés, francés e italiano.&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
&lt;img alt=&quot;App para que funcione el producto &quot; class=&quot;alignnone wp-image-18190 size-full&quot; src=&quot;http://mediatique.io/wp-content/uploads/2016/05/real-time-translator-ear-waverly-labs-3.jpg&quot; height=&quot;519&quot; style=&quot;border: 0px; box-sizing: border-box !important; height: auto; max-width: 100%; width: 540px;&quot; width=&quot;700&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
El precio del&amp;nbsp;&lt;em style=&quot;box-sizing: border-box !important;&quot;&gt;The Pilot&lt;/em&gt;&amp;nbsp;será de 129 dólares, y lo puedes reservar en la tienda oficial.&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
&lt;img alt=&quot;Imagen del The Pilot en todos sus colores&quot; class=&quot;alignnone wp-image-18192 size-full&quot; src=&quot;http://mediatique.io/wp-content/uploads/2016/05/real-time-translator-ear-waverly-labs-6.jpg&quot; height=&quot;466&quot; style=&quot;border: 0px; box-sizing: border-box !important; height: auto; max-width: 100%; width: 540px;&quot; width=&quot;700&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
¿Qué te parece esta nueva creación? ¡Cuéntanos en los comentarios!&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box !important; color: #333333; font-family: Asap, sans-serif; font-size: 18px; letter-spacing: -1px; line-height: 1.55em; margin-top: 0.9em;&quot;&gt;
&lt;a href=&quot;http://ayayay.tv/este-modeno-traductor-en-tiempo-real-te-permitira-viajar-a-donde-sea-sin-hablar-el-idioma-local/?utm_content=buffer34b20&amp;amp;utm_medium=social&amp;amp;utm_source=facebook.com&amp;amp;utm_campaign=buffer#&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Fuente&lt;/a&gt;&lt;/div&gt;&lt;script type=&quot;text/javascript&quot;&gt; var infolinks_pid = 2772820; var infolinks_wsid = 0; &lt;/script&gt; &lt;script type=&quot;text/javascript&quot; src=&quot;http://resources.infolinks.com/js/infolinks_main.js&quot;&gt;&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/8634663612725349331/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/este-moderno-aparato-en-tu-oido-te-hara.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/8634663612725349331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/8634663612725349331'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/este-moderno-aparato-en-tu-oido-te-hara.html' title='Este moderno aparato en tu oído te hará entender cualquier idioma aunque no lo sepas'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-7985659806160703453</id><published>2016-05-21T09:24:00.002-04:00</published><updated>2016-05-21T18:15:09.737-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data Base"/><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="MariaDB"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><title type='text'>Instalar MySQL 5.7.x en Fedora 23</title><content type='html'>&lt;img border=&quot;0&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkwGullJCVWvUzxVzPv3bC5rpHmzv2TAX8ta66JSTXQThrnbkD9AlsdxMiFwUWKvCckQX218nGhnpNofx47eMioUKtKsPiqF6v0ydYe22K1zpKiEzg61IKsfJQtJ-0sFDJBeknYeCoJFU/s640/mysql.jpg&quot; style=&quot;background-color: white; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; height: auto; line-height: 24px; max-width: 100%;&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #262626; font-family: &amp;quot;carrois gothic&amp;quot; , sans-serif; font-size: 12.8px; line-height: 24px;&quot;&gt;1.- Instalar el repositorio oficial de MySQL&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo dnf -y localinstall http://dev.mysql.com/get/mysql57-community-release-fc23-7.noarch.rpm&lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;background-color: white; color: #262626; font-family: &amp;quot;carrois gothic&amp;quot; , sans-serif; font-size: 12.8px; line-height: 24px;&quot;&gt;2.-&amp;nbsp; Actualizar repositorios:&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo dnf -y update&lt;/span&gt;&lt;/pre&gt;
&lt;br style=&quot;background-color: white; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px;&quot; /&gt;
&lt;span style=&quot;background-color: white; color: #262626; font-family: &amp;quot;carrois gothic&amp;quot; , sans-serif; font-size: 12.8px; line-height: 24px;&quot;&gt;Antes que nada, configurar la versión a utilizar en los repositorios de MySQL, para esto ejecutar los siguientes comandos:&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b class=&quot;userinput&quot;&gt;&lt;code style=&quot;border: 0px; font-family: Monaco, Consolas, &#39;Andale Mono&#39;, &#39;DejaVu Sans Mono&#39;, monospace; font-size: 15px; font-stretch: normal; font-weight: normal; line-height: normal; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo dnf config-manager --enable mysql57-community&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b class=&quot;userinput&quot;&gt;&lt;code style=&quot;border: 0px; font-family: Monaco, Consolas, &#39;Andale Mono&#39;, &#39;DejaVu Sans Mono&#39;, monospace; font-size: 15px; font-stretch: normal; font-weight: normal; line-height: normal; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo dnf repolist enabled | grep &quot;mysql.*-community.*&quot;&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b class=&quot;userinput&quot;&gt;&lt;code style=&quot;border: 0px; font-family: Monaco, Consolas, &#39;Andale Mono&#39;, &#39;DejaVu Sans Mono&#39;, monospace; font-size: 15px; font-stretch: normal; font-weight: normal; line-height: normal; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo dnf -y update&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br style=&quot;background-color: white; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px;&quot; /&gt;
&lt;span style=&quot;background-color: white; color: #262626; font-family: &amp;quot;carrois gothic&amp;quot; , sans-serif; font-size: 12.8px; line-height: 24px;&quot;&gt;&amp;nbsp;3.- Instalar MySQL&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br style=&quot;background-color: white; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px;&quot; /&gt;
&lt;br style=&quot;background-color: white; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px;&quot; /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo dnf -y install mysql-community-server&lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;background-color: white; color: #262626; font-family: &amp;quot;carrois gothic&amp;quot; , sans-serif; font-size: 12.8px; line-height: 24px;&quot;&gt;4.- Iniciar el servicio de MySQL&lt;/span&gt;&lt;br /&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo systemctl start mysql.service&lt;/span&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
5.- Antes de proseguir con la configuración de MySQL es necesario buscar la contraseña temporal que se le asigna al servidor con el siguiente comando:&lt;/div&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); color: #262626; font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;sudo grep &#39;temporary password&#39; /var/log/mysqld.log&lt;/span&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Ahí se mostrará la contraseña, ahora así, ejecutar el comando:&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
6.-&amp;nbsp; Configurar MySQL:&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; font-style: inherit; font-weight: inherit; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-align: start; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;b class=&quot;userinput&quot;&gt;&lt;code style=&quot;border: 0px; font-family: Monaco, Consolas, &#39;Andale Mono&#39;, &#39;DejaVu Sans Mono&#39;, monospace; font-size: 15px; font-stretch: normal; font-weight: normal; line-height: normal; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;mysql_secure_installation&lt;/code&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Y continuar con el establecimiento de contraseña de root, eliminar los usuarios anonimos, etc.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Lo habitual de estos comandos:&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #262626; font-family: &#39;Carrois Gothic&#39;, sans-serif; font-size: 12.8px; line-height: 24px; margin: 0px; outline: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; font-style: inherit; font-weight: inherit; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-align: start; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from &#39;localhost&#39;.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
 ... skipping.

By default, MySQL comes with a database named &#39;test&#39; that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] n
 ... skipping.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!




All done!  If you&#39;ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!


Cleaning up...&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: none 0% 0% no-repeat scroll rgb(0, 0, 0); border-radius: 3px; border: 1px solid rgb(0, 0, 0); font-family: &#39;Droid Sans Mono&#39;, Consolas, monospace; font-size: 13px; font-style: inherit; font-weight: inherit; line-height: 20px; margin: 8px 15px; max-width: 100%; opacity: 0.85; outline: 0px; overflow: auto; padding: 9.5px; text-align: start; text-shadow: none; vertical-align: baseline; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;&quot;&gt;&lt;span style=&quot;border: 0px; color: white; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;https://linuxgx.blogspot.com/2015/11/instalar-mysql-57x-en-fedora-23.html&quot; target=&quot;_blank&quot;&gt;Fuente&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt; var infolinks_pid = 2772820; var infolinks_wsid = 0; &lt;/script&gt; &lt;script type=&quot;text/javascript&quot; src=&quot;http://resources.infolinks.com/js/infolinks_main.js&quot;&gt;&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/7985659806160703453/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/instalar-mysql-57x-en-fedora-23.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7985659806160703453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7985659806160703453'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/instalar-mysql-57x-en-fedora-23.html' title='Instalar MySQL 5.7.x en Fedora 23'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkwGullJCVWvUzxVzPv3bC5rpHmzv2TAX8ta66JSTXQThrnbkD9AlsdxMiFwUWKvCckQX218nGhnpNofx47eMioUKtKsPiqF6v0ydYe22K1zpKiEzg61IKsfJQtJ-0sFDJBeknYeCoJFU/s72-c/mysql.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-8479979290818563712</id><published>2016-05-20T12:00:00.000-04:00</published><updated>2016-05-20T12:00:12.720-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="KDE"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="shell"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><category scheme="http://www.blogger.com/atom/ns#" term="Tecnologia"/><category scheme="http://www.blogger.com/atom/ns#" term="terminal"/><title type='text'>Cambia los colores del terminal Linux</title><content type='html'>&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Seguramente has notado que en algunas distribuciones GNU/Linux (OpenSuse es una de ellas), el Prompt en la terminal tiene un color distinto en relación a los demás comandos, esto le da un aspecto totalmente diferente, sin contar que una de sus ventajas es que nos permite ubicarnos de una manera mucho más sencilla en el comienzo y en el fin de una línea de comando. Pero esta característica no está en la mayoría de las distros, donde el promt siempre esta del mismo color que el resto del texto.&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Pero una de las ventajas de GNU/Linux es que casi todo se puede configurar de acuerdo a las necesidades de cada quien, y si estás interesado en conocer cómo personalizar y cambiar el color o el aspecto del prompt, sigue leyendo que te cuento como hacerlo.&lt;/div&gt;
&lt;div class=&quot;glinux glinux-3&quot; style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 1; margin: 0px auto; overflow: hidden; padding: 0px; zoom: 1;&quot;&gt;
&lt;div class=&quot;glinux-single alinux-5&quot; style=&quot;box-sizing: border-box;&quot;&gt;
&lt;center style=&quot;box-sizing: border-box;&quot;&gt;
&lt;span id=&quot;ezoic-pub-ad-placeholder-105&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
&lt;a class=&quot;external&quot; href=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/dos-prompt1.jpg&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #4db2ec; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;dos-prompt&quot; class=&quot;alignnone size-medium wp-image-69871 td-animation-stack-type0-1     lazyloaded&quot; data-lazy-src=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/dos-prompt1.jpg?resize=420%2C236&quot; height=&quot;236&quot; src=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/dos-prompt1.jpg?resize=420%2C236&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; height: auto; margin-bottom: 21px; margin-top: 0px; max-width: 100%;&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Entonces el primer paso que debemos hacer es cambiar la configuración del prompt para que se muestre con color.&lt;br /&gt;
&lt;ul style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px; padding: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;Vamos a ubicarnos en la carpeta personal dentro de /home y oprimiremos&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;&quot;&gt;Ctrl H&lt;/strong&gt;, esto hará que las carpetas y archivos ocultos se hagan visibles.&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;Luego de eso vamos a localizar el archivo de configuración de Bash, que será&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;&quot;&gt;&lt;em style=&quot;box-sizing: border-box;&quot;&gt;.bashrc&lt;/em&gt;&lt;/strong&gt;.&lt;a class=&quot;external&quot; href=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/archivo-configuracion-bash.png&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #4db2ec; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;archivo-configuracion-bash&quot; class=&quot;alignnone size-medium wp-image-69867 td-animation-stack-type0-1     lazyloaded&quot; data-lazy-src=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/archivo-configuracion-bash.png?resize=420%2C284&quot; height=&quot;284&quot; src=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/archivo-configuracion-bash.png?resize=420%2C284&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; height: auto; margin-bottom: 21px; margin-top: 0px; max-width: 100%;&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;Para editarlo no debemos hacer mayor cosa que hacer clic con el botón secundario del mouse sobre el archivo y seleccionar abrir con Gedit, o con cualquier otro editor de texto que tengamos disponible.&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;Ya que estemos ahí, debemos ubicar la línea que dice “force_color_prompt=yes” y eliminamos el comentario que está delante de la línea (debemos eliminar el símbolo #).&lt;a class=&quot;external&quot; href=&quot;http://i1.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/descomentar-linea-force-color-prompt.png&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #4db2ec; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;descomentar-linea-force-color-prompt&quot; class=&quot;alignnone size-medium wp-image-69868 td-animation-stack-type0-1     lazyloaded&quot; data-lazy-src=&quot;http://i1.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/descomentar-linea-force-color-prompt.png?resize=420%2C271&quot; height=&quot;271&quot; src=&quot;http://i1.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/descomentar-linea-force-color-prompt.png?resize=420%2C271&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; height: auto; margin-bottom: 21px; margin-top: 0px; max-width: 100%;&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;Una vez que hayamos realizado esto se aplicara el color predeterminado, un color con una tonalidad verde.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
&lt;a class=&quot;external&quot; href=&quot;http://i2.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/personalizar-prompt-terminal-linux.png&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #4db2ec; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;personalizar-prompt-terminal-linux&quot; class=&quot;alignnone size-medium wp-image-69866 td-animation-stack-type0-1     lazyloaded&quot; data-lazy-src=&quot;http://i2.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/personalizar-prompt-terminal-linux.png?resize=420%2C221&quot; height=&quot;221&quot; src=&quot;http://i2.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/personalizar-prompt-terminal-linux.png?resize=420%2C221&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; height: auto; margin-bottom: 21px; margin-top: 0px; max-width: 100%;&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;Pero si eres una persona a la que le gusta personalizar todo un poco más allá de lo común, pues, continúa leyendo que aún hay más personalización del prompt. Esto que veras a continuación son unos trucos sencillos con los que puedes ir probando hasta conseguir el que más se ajuste a tus gustos.&lt;/div&gt;
&lt;div class=&quot;glinux glinux-4&quot; style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 1; margin: 0px auto; overflow: hidden; padding: 0px; zoom: 1;&quot;&gt;
&lt;div class=&quot;glinux-single alinux-6&quot; style=&quot;box-sizing: border-box;&quot;&gt;
&lt;center style=&quot;box-sizing: border-box;&quot;&gt;
&lt;span id=&quot;ezoic-pub-ad-placeholder-106&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
&lt;a class=&quot;external&quot; href=&quot;http://i2.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks_2.png&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #4db2ec; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;prompt_tricks_2&quot; class=&quot;alignnone size-medium wp-image-69872 td-animation-stack-type0-1     lazyloaded&quot; data-lazy-src=&quot;http://i2.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks_2.png?resize=375%2C400&quot; height=&quot;400&quot; src=&quot;http://i2.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks_2.png?resize=375%2C400&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; height: auto; margin-bottom: 21px; margin-top: 0px; max-width: 100%;&quot; width=&quot;375&quot; /&gt;&lt;/a&gt;El archivo de configuración de Bash guarda todos los parámetros relacionados con la configuración del prompt en una variable que lleva el nombre de&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box;&quot;&gt;PSI&lt;/strong&gt;. Esto nos indica que para modificar “el look” del prompt, y su color debemos customizar los parámetros de PSI. Entonces para hacer esas modificaciones en PSI, debemos ir hasta la sentencia&amp;nbsp;&lt;em style=&quot;box-sizing: border-box;&quot;&gt;if else,&amp;nbsp;&lt;/em&gt;est&lt;em style=&quot;box-sizing: border-box;&quot;&gt;a&lt;/em&gt;debe estar entre las líneas 59 – 64, si eres usuario de Ubuntu, veras algo como esto:&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
if [ “$color_prompt” = yes ]; then&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
PS1=’${debian_chroot:+($debian_chroot)}[33[01;32m]\u@\h[33[00m]:[33[01;34m]\w[33[00m]\$ ‘&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
else&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
PS1=’${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ‘&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
fi&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
unset color_prompt force_color_prompt&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Ahora bien, en la sentencia que está debajo del&amp;nbsp;&lt;em style=&quot;box-sizing: border-box;&quot;&gt;if&lt;/em&gt;&amp;nbsp;se establece la variable PSI, en caso tal que se haya descomentado el color con el “&lt;em style=&quot;box-sizing: border-box;&quot;&gt;force_color_prompt=yes&lt;/em&gt;”, y debajo del&amp;nbsp;&lt;em style=&quot;box-sizing: border-box;&quot;&gt;else&lt;/em&gt;&amp;nbsp;se encuentra la variable definida, pero esta vez es en caso de que el color este deshabilitado.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Ya cuando hagamos esto se podra apreciar entonces, que en caso tal de que el color este habilitado, la variable PSI se vera muy parecido a esto:&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
PS1=’${debian_chroot:+($debian_chroot)}[33[01;32m]\u@\h[33[00m]:[33[01;34m]\w[33[00m]\$ ‘&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Un aspecto un tanto más complejo, pero es este el que debes conocer para poder hacer las modificaciones, la información para eso es esta a continuación:&lt;/div&gt;
&lt;ul style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px; padding: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;\u@ el nombre de usuario logueado luego del símbolo @&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;\h para el nombre del host&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;\w directorio actual de trabajo&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
&lt;a class=&quot;external&quot; href=&quot;http://i1.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks.png&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #4db2ec; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;prompt_tricks&quot; class=&quot;alignnone size-medium wp-image-69870 td-animation-stack-type0-1     lazyloaded&quot; data-lazy-src=&quot;http://i1.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks.png?resize=420%2C176&quot; height=&quot;176&quot; src=&quot;http://i1.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks.png?resize=420%2C176&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; height: auto; margin-bottom: 21px; margin-top: 0px; max-width: 100%;&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;Debemos escribir en código ANSI los parámetros para definir el color en cada parámetro que hemos visto, de manera predefinida el nombre de usuario y el nombre del host, se mostraran en color vede [33[01;30m], los dos puntos en color blanco [33[00m] y un color azulado para el directorio de trabajo [33[01;34m].&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Aquí tienes otros parámetros que puedes colocar para que también se muestren en el prompt:&lt;/div&gt;
&lt;ul style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px; padding: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;\d fecha (formato &amp;lt;martes abril 12&amp;gt;)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;\v versión Bash&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;\j cantidad de tareas ejecutadas por la terminal&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Si necesitas más colores, aquí tienes algunos con su propio código ANSI:&lt;/div&gt;
&lt;ul style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px; padding: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;00;30 – Negro&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;00;37 – Gris Claro&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;01;37 – Blanco&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;01;31 – Rojo&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;01;32 – Verde Claro&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; margin-left: 21px;&quot;&gt;01;34 – Azul Claro&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
&lt;a class=&quot;external&quot; href=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks_3.png&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #4db2ec; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;prompt_tricks_3&quot; class=&quot;alignnone size-medium wp-image-69869 td-animation-stack-type0-1     lazyloaded&quot; data-lazy-src=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks_3.png?resize=420%2C290&quot; height=&quot;290&quot; src=&quot;http://i0.wp.com/blog.desdelinux.net/wp-content/uploads/2016/04/prompt_tricks_3.png?resize=420%2C290&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; height: auto; margin-bottom: 21px; margin-top: 0px; max-width: 100%;&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;Una recomendación a tener en cuenta, es que debemos deshabilitar la línea donde se define PSI con un # al inicio, de manera que Bash no la lea y luego definimos nuestra variable “personalizada” en la línea que sigue para que sea esta la que el sistema ejecute.&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Ya con esta información puedes comenzar a personalizar el prompt y probar diferentes combinaciones de colores, hasta obtener la que mejor se adapte a tus gustos. Por si tienes dudas aquí te dejo otro ejemplo:&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
if [ “$color_prompt” = yes ]; then&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
#PS1=’${debian_chroot:+($debian_chroot)}[33[01;32m]\u@\h[33[00m]:[33[01;34m]\w[33[00m]\$ ‘&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
PS1=’${debian_chroot:+($debian_chroot)}[33[01;34m]\u@\h[33[00m]:[33[01;32m]\w[33[00m]\$’&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
else&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
PS1=’${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ‘&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
fi&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
unset color_prompt force_color_prompt&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
Si luego de hacer todos estos cambios en la configuración, quieres volver al estado original, solo debes borrar descomentar la línea en la que se define PSI y comentar la que añadimos anteriormente. Un aspecto a tener presente es que los cambios que realices en la configuración de Bash solo se aplicaran a la cuenta en la que estés al momento de realizarlos, (si estas logueado en tu usuario estándar, cuando pases a root, el prompt seguirá como esté por defecto).&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #222222; font-family: Verdana, Geneva, sans-serif; font-size: 15px; line-height: 26px; margin-bottom: 26px;&quot;&gt;
&lt;a href=&quot;http://blog.desdelinux.net/cambia-los-colores-del-prompt-de-la-terminal-linux/&quot; target=&quot;_blank&quot;&gt;&amp;nbsp;Fuente&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/8479979290818563712/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/cambia-los-colores-del-terminal-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/8479979290818563712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/8479979290818563712'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/cambia-los-colores-del-terminal-linux.html' title='Cambia los colores del terminal Linux'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-8838917652639083862</id><published>2016-05-20T10:38:00.000-04:00</published><updated>2016-05-20T10:38:05.217-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="developer"/><category scheme="http://www.blogger.com/atom/ns#" term="forms"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="oracla"/><category scheme="http://www.blogger.com/atom/ns#" term="pl/sql"/><title type='text'>Construyendo con Bloques en PL/SQL</title><content type='html'>&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;Parte 1 en una serie de artículos sobre la comprensión y uso de PL/SQL&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
El lenguaje PL/SQL de Oracle celebró su cumpleaños número 22 en 2011. Lo sé porque estoy mirando la primera guía del usuario de Oracle PL/SQL que se haya publicado, es de la versión 1.0 de PL/SQL, y su fecha de publicación es Setiembre de 1989. Estaba trabajando para Oracle en ese momento, construyendo las primeras herramientas de automatización utilizadas por la fuerza de ventas de Oracle EE.UU. Ya había trabajado con PL/SQL dentro de SQL Forms 3.0, pero fue con el lanzamiento de la base de datos Oracle 6, que PL/SQL estuvo disponible como un lenguaje independiente para desarrollo de aplicaciones.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Tres años más tarde, escribí mi primer libro sobre PL/SQL y desde entonces he estudiado este lenguaje, he desarrollado montones y montones de código PL/SQL, y he escrito sobre este excelente lenguaje de programación de base de datos. Por supuesto, yo no era el único. Miles de desarrolladores en todo el mundo han construido una multitud de aplicaciones basadas en Oracle PL/SQL en las décadas desde que se liberó.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Lo mejor de todo es que sigue habiendo un flujo constante de nuevos desarrolladores PL/SQL. De hecho, con la aparición relativamente reciente de la India, China y otras naciones como potencias de tecnología, he visto a toda una nueva generación de desarrolladores descubrir PL/SQL y trabajar para dominarlo.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Para ayudar a que los recién llegados a PL/SQL saquen el máximo provecho de este lenguaje, Oracle Magazine me ha pedido que escriba una serie de artículos para principiantes, de los cuales éste es el primero. Si usted es un desarrollador experimentado en PL/SQL, también puede encontrar en estos artículos un repaso práctico sobre sus fundamentos.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Para esta serie de artículos, voy a suponer que a pesar de ser nuevos en PL/SQL, mis lectores han tenido alguna experiencia en programación y están familiarizados con SQL. Mi enfoque general, además, estará en conseguir desarrolladores productivos en PL/SQL lo más rápido posible.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;¿Qué es PL/SQL?&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Para contestar esta pregunta, es importante recordar que en cada sitio Web que visitamos, cada aplicación que se ejecuta es construida sobre un stack (una pila) de tecnologías de software. En la parte superior de la pila está la capa de presentación, las pantallas o dispositivos interactivos con los que el usuario interactúa directamente (hoy en día los lenguajes más populares para las capas de presentación son Java y .NET). En la parte inferior de la pila está el lenguaje de máquina que se comunica con el hardware.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En algún lugar en medio de la pila de tecnología se encuentra la base de datos, el software que nos permite almacenar y manipular grandes volúmenes de datos complejos. La tecnología de bases de datos relacionales, construida en torno a SQL, es la tecnología de base de datos dominante en el mundo de hoy.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
SQL es un lenguaje de conjuntos muy poderoso, cuyo único objetivo es manipular el contenido de bases de datos relacionales. Si usted desarrolla aplicaciones basadas en bases de datos Oracle, usted (o el código de alguien que escribe en un nivel inferior de la pila de la tecnología) debe ejecutar sentencias SQL para recuperar datos desde o cambiar datos en la base de datos. Sin embargo, SQL no se puede utilizar para implementar toda la lógica de negocios y la funcionalidad que el usuario final necesita en nuestras aplicaciones. Esto nos lleva a PL/SQL.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;em style=&quot;-webkit-font-smoothing: antialiased; font-weight: inherit; list-style: none; margin: 0px; padding: 0px;&quot;&gt;PL/SQL significa Procedural Language/Structured Query Language&lt;/em&gt;&amp;nbsp;(una extensión de programación estructurada sobre SQL). PL/SQL ofrece un conjunto de instrucciones clásicos de la programación estructurada (instrucción condicional IF, loops o iteraciones, asignaciones), organizado dentro de bloques (lo que se explica más adelante), que complementan y amplían el alcance de SQL.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Sin duda que es posible crear aplicaciones sobre Oracle y SQL sin usar PL/SQL. Sin embargo, utilizar PL/SQL para realizar operaciones específicas de bases de datos, particularmente la ejecución de sentencias SQL, ofrece varias ventajas, incluyendo una estrecha integración con SQL, un mejor rendimiento a través del tráfico de red reducido, y la portabilidad (los programas PL/SQL pueden correr en cualquier instancia de base de datos Oracle). Por lo tanto, el código del front-end de muchas aplicaciones ejecuta tanto sentencias SQL como bloques PL/SQL, para maximizar el rendimiento al tiempo que mejora la capacidad de mantenimiento de las aplicaciones.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;Construyendo bloques de programas PL/SQL&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
PL/SQL es un lenguaje estructurado con bloques. Un bloque PL/SQL es definido por las palabras clave DECLARE, BEGIN, EXCEPTION, y END, que dividen el bloque en tres secciones&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;1. Declarativa:&lt;/strong&gt;&amp;nbsp;sentencias que declaran variables, constantes y otros elementos de código, que después pueden ser usados dentro del bloque&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;2. Ejecutable:&lt;/strong&gt;&amp;nbsp;sentencias que se ejecutan cuando se ejecuta el bloque&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;3. Manejo de excepciones:&lt;/strong&gt;&amp;nbsp;una sección especialmente estructurada para atrapar y manejar cualquier excepción que se produzca durante la ejecución de la sección ejecutable&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Sólo la sección ejecutable es obligatoria. No es necesario que usted declare nada en un bloque, ni que maneje las excepciones que se puedan lanzar.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Un bloque es en sí mismo una sentencia ejecutable, por lo que se pueden anidar los bloques unos dentro de otros.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Aquí hay algunos ejemplos:&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
El clásico “¡Hola Mundo!” es un bloque con una sección ejecutable que llama al procedimiento DBMS_OUTPUT.PUT_LINE para mostrar texto en pantalla:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;BEGIN
  DBMS_OUTPUT.put_line(&#39;¡Hola Mundo!&#39;);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Las funciones y procedimientos —tipos de bloques con un nombre— son discutidos con mayor detalle más adelante en este artículo, así como los paquetes. En pocas palabras, sin embargo, un paquete es un contenedor de múltiples funciones y procedimientos. Oracle extiende PL/SQL con muchos paquetes incorporados en el lenguaje.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
El siguiente bloque declara una variable de tipo VARCHAR2 (un string) con un largo máximo de 100 bytes para contener el string ‘¡Hola Mundo!’. Después, el procedimiento DBMS_OUTPUT.PUT_LINE acepta la variable, en lugar del literal, para desplegarlo:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  l_mensaje VARCHAR2(100) := &#39;¡Hola Mundo!&#39;;
BEGIN
  DBMS_OUTPUT.put_line(l_mensaje);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Note que he llamado a la variable l_mensaje. Normalmente uso el prefijo l_ para variables locales —variables definidas dentro del código de un bloque— y el prefijo g_ para variables globales definidas en un paquete.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
El siguiente ejemplo de bloque agrega una sección de manejo de excepciones que atrapa cualquier excepción (WHEN OTHERS) que pueda ser lanzada y muestra el mensaje de error, que es retornado por la función SQLERRM (provista por Oracle).&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  l_mensaje VARCHAR2(100) := &#39;¡Hola Mundo!&#39;;
BEGIN
  DBMS_OUTPUT.put_line(l_mensaje);
EXCEPTION
  WHEN OTHERS
    THEN
      DBMS_OUTPUT.put_line(SQLERRM);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
El siguiente ejemplo de bloque demuestra la habilidad de PL/SQL de anidar bloques dentro de bloques así como el uso del operador de concatenación (||) para unir múltiples strings.&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  l_mensaje VARCHAR2(100) := &#39;¡Hola&#39;;
BEGIN
  DECLARE
    l_mensaje2 VARCHAR2(100) := l_mensaje || &#39; Mundo!&#39;; 
  BEGIN
    DBMS_OUTPUT.put_line(l_mensaje2);
  END;
EXCEPTION
  WHEN OTHERS
    THEN
      DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);
END;
  
&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;Ejecutando bloques PL/SQL&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Una vez que hemos escrito un bloque de código PL/SQL éste se puede ejecutar. Existen muchas herramientas para ejecutar código PL/SQL. La más básica es SQL*Plus, una interfaz de línea de comandos para ejecutar sentencias SQL así como bloques PL/SQL. La Figura 1 muestra un ejemplo de ejecución del más simple de los bloques de ejemplo de nuestro “¡Hola Mundo!” en SQL*Plus.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px; text-align: center;&quot;&gt;
&lt;img alt=&quot;Ejecutando bloques PL/SQL&quot; src=&quot;http://www.oracle.com/technetwork/es/articles/sql/construyendo-con-bloques-pl-sql-1-1549118.png&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;span style=&quot;-webkit-font-smoothing: antialiased; font-size: 11px; list-style: none; margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;Figura 1:&lt;/strong&gt;&amp;nbsp;Ejecutando “¡Hola Mundo!” en SQL*Plus&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
La primera cosa que hacemos después de conectarnos a la base mediante SQL*Plus es habilitar la salida del servidor, por lo que las llamadas a DBMS_OUTPUT.PUT_LINE resultarán en la visualización de texto en la pantalla. Luego escribimos el código que constituye nuestro bloque. Finalmente, ingresamos una barra (/) para decirle a SQL*Plus que ejecute ese código.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
SQL*Plus entonces ejecuta el bloque y muestra el “¡Hola Mundo!” en la pantalla. SQL*Plus es provisto por Oracle como una especie de línea base de entorno donde se pueden ejecutar sentencias SQL y bloques PL/SQL. Mientras que algunos desarrolladores siguen utilizando únicamente SQL*Plus, la mayoría utiliza un entorno de desarrollo integrado (IDE). Entre los más populares de estos entornos de desarrollo (basado en encuestas informales que he tomado en mis sesiones de entrenamiento) son&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
• Oracle SQL Developer, de Oracle • Toad y SQL Navigator, de Quest Software • PL/SQL Developer, de Allround Automations&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Cada herramienta ofrece, con algunas diferencias, ventanas y pasos para crear, guardar, y ejecutar bloques PL/SQL, así como habilitar y deshabilitar la salida del servidor. En esta serie de artículos, voy a suponer que sólo tienen acceso a SQL*Plus y que van a ejecutar todas las sentencias en una ventana de comandos SQL*Plus.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
¡Póngale nombre a los bloques!&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Todos los bloques que hemos visto hasta el momento son “anónimos”, no tienen nombres. Si los bloques anónimos fueran la única manera de organizar el código, sería muy difícil usar PL/SQL para crear una aplicación grande y compleja. Por esto, PL/SQL soporta la definición de bloques nombrados (named blocks), también conocidos como subprogramas. Los subprogramas pueden ser procedimientos o funciones. Generalmente, un procedimiento se utiliza para realizar una acción y una función se utiliza para calcular y devolver un valor. Voy a tratar sobre subprogramas con mucho más detalle en un próximo artículo de esta serie. Por ahora, vamos a asegurarnos de que se comprendan los conceptos básicos detrás de la creación del subprograma.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Supongamos que necesitamos mostrar &quot;¡Hola Mundo!&quot; desde múltiples lugares en nuestra aplicación. Queremos evitar la repetición de la misma lógica en todos esos lugares. Por ejemplo, ¿qué pasa cuando tenemos que cambiar el mensaje, tal vez para &quot;¡Hola Universo!&quot;? Vamos a tener que encontrar todos los lugares en nuestro código donde esta lógica aparece.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En su lugar, vamos a crear un procedimiento denominado hola_mundo mediante la ejecución de la siguiente sentencia DDL (Data Definition Language):&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;CREATE OR REPLACE PROCEDURE hola_mundo IS
  l_mensaje VARCHAR2(100) := &#39;¡Hola Mundo!&#39;;
BEGIN
  DBMS_OUTPUT.put_line(l_mensaje);
END hola_mundo;
 
&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Con esto hemos extendido PL/SQL. Además de llamar a los programas creados por Oracle e instalados en la base de datos (como DBMS_OUTPUT.PUT_LINE), podemos llamar a nuestro propio subprograma dentro de un bloque PL/SQL:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;BEGIN
   hola_mundo;
END;
 
&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Hemos escondido todos los detalles de cómo decir hola al mundo dentro del cuerpo (body), o implementación, de nuestro procedimiento. Ahora podemos llamar a este procedimiento hola_mundo y mostrar el mensaje deseado sin tener que escribir la llamada a DBMS_OUTPUT.PUT_LINE o averiguar la forma correcta de darle formato al texto. Podemos llamar a este procedimiento desde cualquier lugar en nuestra aplicación. Así que si alguna vez necesitamos cambiar ese texto, lo vamos a hacer en un solo lugar, el único punto de definición de ese texto.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
El procedimiento hola_mundo es muy simple. Tus procedimientos tendrán mucho más código, y casi siempre también tendrán parámetros. Los parámetros pasan información a los subprogramas, cuando éstos son llamados, y es lo que permite crear subprogramas más flexibles y genéricos. Se pueden usar en muchos contextos diferentes.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
He mencionado antes que algún día puede ser que desee mostrar &quot;¡Hola Universo!&quot; en lugar de &quot;¡Hola Mundo!&quot;. Podría hacer una copia de nuestro procedimiento hola_mundo y cambiar el texto que se muestra:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;CREATE OR REPLACE PROCEDURE hola_universo IS
  l_mensaje VARCHAR2(100) := &#39;¡Hola Universo!&#39;;
BEGIN
  DBMS_OUTPUT.put_line(l_mensaje); 
END hola_universo;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Podríamos, sin embargo, terminar con las decenas de variantes del “mismo” procedimiento hola, que haría muy difícil mantener nuestra aplicación. Un enfoque mucho mejor es analizar el procedimiento e identificar qué partes se mantienen incambiadas (son estáticas) cuando el mensaje tiene que cambiar y qué partes cambian. Luego podemos pasar las partes que cambian como parámetros y tener un procedimiento único que se puede utilizar en diferentes circunstancias.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Así que vamos a cambiar hola_mundo (y hola_universo) a un nuevo procedimiento, hola_lugar:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;CREATE OR REPLACE PROCEDURE hola_lugar (lugar_in IN VARCHAR2) IS
  l_mensaje  VARCHAR2(100);
BEGIN
  l_mensaje  := &#39;¡Hola &#39; || place_in;
  DBMS_OUTPUT.put_line(l_mensaje);
END hola_lugar;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Justo después del nombre del procedimiento, añadimos entre paréntesis de apertura y cierre, un único parámetro. Podemos tener varios parámetros, pero cada parámetro de la misma forma básica:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;nombre_de_parametro   modo_de_parametro   tipo_de_datos

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En otras palabras, debemos proveer un nombre para el parámetro, el modo o forma en que éste será usado (IN = sólo lectura), y el tipo de dato que será pasado al subprograma a través de este parámetro.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En este caso, vamos a pasar un texto de sólo lectura al procedimiento hola_lugar.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Y ahora podemos saludar a nuestro mundo y a nuestro universo como sigue:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;BEGIN
   hola_lugar(&#39;Mundo!&#39;);
   hola_lugar(&#39;Universo!&#39;);
END;
 
&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Más adelante en esta serie vamos a explorar el concepto de reutilización y la manera de evitar la repetición, pero debes ser capaz de ver en este ejemplo, el poder de ocultar la lógica detrás de un bloque con nombre.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Ahora supongamos que no sólo queremos mostrar nuestros mensajes &quot;Hola&quot;. A veces tenemos que mantener los mensajes en una tabla en la base de datos; en otras ocasiones, tenemos que pasar el texto de nuevo al entorno del cliente para su visualización en un navegador Web. En otras palabras, necesitamos separar la forma en que se construyó el mensaje &quot;Hola&quot; de la forma en que se utiliza (se visualiza, se guarda, se envía otro programa, etc). Podemos alcanzar este nivel deseado de flexibilidad moviendo el código que construye el mensaje a su propia función:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;CREATE OR REPLACE FUNCTION 
hola_mensaje(lugar_in IN VARCHAR2) RETURN VARCHAR2 IS
BEGIN
   RETURN &#39;¡Hola &#39; || place_in;
END hola_mensaje;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Este subprograma se diferencia del procedimiento original en lo siguiente:&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
• El tipo de programa es ahora FUNCTION y no PROCEDURE.&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;• El nombre del subprograma ahora describe los datos que se devuelven, no las acciones tomadas.&amp;nbsp;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;• El cuerpo o la implementación del subprograma contiene ahora una cláusula RETURN que construye el mensaje y lo devuelve al bloque llamador.&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;• La cláusula RETURN después de la lista de parámetros establece el tipo de datos devuelto por la función.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Teniendo el código necesario para construir el mensaje dentro de la función hola_mensaje, podemos utilizar este mensaje de múltiples maneras. Podemos, por ejemplo, llamar a la función para obtener el mensaje y asignárselo a una variable:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  l_mensaje  VARCHAR2(100);
BEGIN
  l_mensaje := hola_mensaje(&#39;Universo&#39;);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Nota que llamamos a la función hola_mensaje como parte de una sentencia PL/SQL (en este caso, la asignación de un texto a una variable). La función hola_mensaje devuelve un string, por lo que se puede utilizar en lugar de un string en cualquier sentencia ejecutable.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
También podemos volver a nuestro procedimiento hola_lugar y reemplazar el código utilizado para crear el string con una llamada a la función:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;CREATE OR REPLACE PROCEDURE 
hola_lugar(place_in IN VARCHAR2) IS
BEGIN
  DBMS_OUTPUT.put_line(hola_mensaje(place_in));
END hola_lugar;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
También podemos llamar la función desde una sentencia SQL. En el siguiente bloque, insertamos el mensaje en una tabla de la base:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;BEGIN
  INSERT INTO tabla_mensaje(fecha_mensaje, texto_mensaje)
      VALUES (SYSDATE, hola_mensaje(&#39;Montevideo&#39;));
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Aunque la lógica del “mensaje hola” es muy simple, demuestra el poder de asignar nombres a una o más sentencias ejecutables (un algoritmo) y luego referenciar el algoritmo simplemente especificando el nombre y los parámetros requeridos.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Los bloques PL/SQL con nombre, permiten construir aplicaciones complejas que pueden ser comprendidas y mantenidas con relativa facilidad.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;Sobre los nombres en una base Oracle&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Ahora que ya se aprecia la importancia de asignar nombres a la lógica, es tiempo de hablar sobre las reglas para los nombres (o, para ser más precisos, identificadores) tanto en PL/SQL como, de forma más general, en una base Oracle.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Estas son las reglas para construir identificadores válidos en una base Oracle:&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
• El largo máximo es de 30 caracteres.&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;• El primer caracter debe ser una letra, pero cada caracter después del primero puede ser una letra, un número (0 a 9), un signo de pesos ($), un guión bajo (_), o un numeral (#). Todos los siguientes son identificadores válidos:&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;hola_mundo&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;hola$mundo&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;hola#mundo&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;pero estos son inválidos:&amp;nbsp;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;1hola_mundo&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;hola%mundo&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;• PL/SQL es case-insensitive (no es sensitivo a mayúsculas y minúsculas) con respecto a los identificadores. PL/SQL trata todos los siguientes como el mismo identificador:&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;hola_mundo&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;Hola_Mundo&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;HOLA_MUNDO&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Para ofrecer más flexibilidad, Oracle permite evitar las restricciones de la segunda y tercera regla, encerrando al identificador entre comillas dobles. Un quoted identifier (identificador encerrado entre comillas) puede contener cualquier secuencia de caracteres imprimibles excluyendo las comillas dobles; las diferencias entre mayúsculas y minúsculas serán además preservadas. Así, todos los siguientes identificadores son válidos y distintos:&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&quot;Abc&quot;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&quot;ABC&quot;&lt;br style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot; /&gt;&quot;a b c&quot;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Es muy raro encontrar identificadores entre comillas en código PL/SQL; algunos grupos de desarrollo los usan para conformar con sus convenciones de nombres o porque encuentran que una mezcla de mayúsculas y minúsculas resulta más fácil de leer.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Estas mismas reglas aplican a los nombres de los objetos de base de datos como tablas, vistas y procedimientos, con una regla adicional: a menos que se encierren entre comillas los nombres de estos objetos, Oracle los mantendrá en mayúsculas.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Así que cuando creamos un procedimiento como el que sigue:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;CREATE OR REPLACE PROCEDURE hola_mundo IS
BEGIN
  DBMS_OUTPUT.put_line(&#39;¡Hola Mundo!&#39;);
END hola_mundo;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
la base de datos Oracle lo mantendrá con el nombre HOLA_MUNDO.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En el bloque siguiente, llamaremos este procedimiento tres veces, y aunque el nombre luzca diferente cada vez, siempre se ejecutará el mismo procedimiento:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;BEGIN
   hola_mundo;
   HOLA_MUNDO;
   &quot;HOLA_MUNDO&quot;;
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Por otro lado, la base Oracle no será capaz de ejecutar el procedimiento si lo llamamos como sigue:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;BEGIN
   &quot;hola_mundo&quot;;
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Esto buscará dentro de la base un procedimiento llamado hola_mundo en lugar de HOLA_MUNDO.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Si no se quiere que los nombres de los subprogramas se mantengan en mayúsculas, los nombres se deben encerrar entre comillas cuando se crea el subprograma:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;CREATE OR REPLACE PROCEDURE &quot;Hola_Mundo&quot; IS
BEGIN
  DBMS_OUTPUT.put_line(&#39;¡Hola Mundo!&#39;);
END &quot;Hola_Mundo&quot;;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;Ejecutando SQL dentro de bloques PL/SQL&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
PL/SQL es un lenguaje de programación de base de datos. Casi todos los programas que escribiremos en PL/SQL leerán desde, o escribirán en, una base de datos Oracle utilizando SQL. Aunque estas series asumen que se conoce SQL, debemos estar conscientes de la forma en que llamamos a las sentencias desde un bloque PL/SQL.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Y aquí hay algunas buenas noticias: Oracle hace que sea muy fácil escribir y ejecutar sentencias SQL en PL/SQL. La mayor parte de las veces, simplemente escribiremos las sentencias SQL directamente en nuestro bloque PL/SQL y después agregaremos el código necesario para la interfaz entre las sentencias SQL y el código PL/SQL.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Supongamos, por ejemplo, que tenemos una tabla llamada empleados, con una columna clave primaria id_empleado, y una columna apellido. Podemos ver el apellido del empleado con ID 138, como sigue:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;SELECT apellido
  FROM empleados
 WHERE id_empleado = 138
 
&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Ahora querríamos ejecutar esta misma consulta dentro de nuestro bloque PL/SQL y desplegar el nombre. Para hacer esto, necesitaremos “copiar” el apellido desde la tabla a una variable local, lo cual podemos hacer con la cláusula INTO:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  v_apellido empleados.apellido%TYPE;
BEGIN
  SELECT apellido
    INTO v_apellido
    FROM empleados
   WHERE id_empleado = 138;

  DBMS_OUTPUT.put_line(v_apellido);
END; 

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Primero declaramos una variable local, y haciendo esto introducimos otra característica elegante de PL/SQL: la capacidad de fijar el tipo de datos de nuestra variable en función del tipo de datos de una columna en una tabla (esto será profundizado más adelante en esta serie)&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Después ejecutamos una consulta contra la base, obteniendo el apellido del empleado y asignándolo directamente en la variable v_apellido.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Por supuesto, querremos hacer más que ejecutar sentencias SELECT en PL/SQL, también querremos insertar, modificar y eliminar datos desde PL/SQL. Aquí hay ejemplos de cada uno de esos tipos de sentencias DML:&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
• Eliminamos todos los empleados en el departamento 10 y mostramos cuántas tuplas fueron eliminadas:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  v_id_departamento empleados.id_departamento%TYPE := 10;
BEGIN
  DELETE FROM empleados
       WHERE id_departamento = v_id_departamento;

  DBMS_OUTPUT.put_line(SQL%ROWCOUNT);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Referenciamos la variable PL/SQL directamente dentro de la sentencia DELETE. Cuando el bloque se ejecuta, la variable se reemplaza con el valor actual, 10, y el DELETE es ejecutado por el motor de SQL. SQL%ROWCOUNT es un atributo especial de cursor que retorna el número de tuplas modificadas por la última sentencia DML ejecutada en nuestra sesión.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
• Modificar todos los empleados en el departamento 10 con un 20% de incremento salarial.&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  v_id_departamento empleados.id_departamento%TYPE := 10;
BEGIN
  UPDATE empleados
    SET salario = salario * 1.2
   WHERE id_departamento = v_id_departamento;

  DBMS_OUTPUT.put_line(SQL%ROWCOUNT);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Insertar un nuevo empleado en la tabla.&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;BEGIN
  INSERT INTO empleados (id_empleado
                       , apellido
                       , id_departamento
                       , salario)
       VALUES (100
             , &#39;Feuerstein&#39;
             , 10
             , 200000);

  DBMS_OUTPUT.put_line(SQL%ROWCOUNT);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En este bloque, proveímos los valores de las columnas como literales, en lugar de variables, directamente dentro de la sentencia SQL.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;Recursos para Desarrolladores PL/SQL&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Si recién estás comenzando con PL/SQL, deberías conocer y aprovechar la multitud de recursos gratuitos online que existen. Aquí hay algunos de los más populares y útiles:&lt;/div&gt;
&lt;ul style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style: none; margin: 0px 0px 12px; padding: 0px;&quot;&gt;
&lt;li style=&quot;-webkit-font-smoothing: antialiased; background: url(&amp;quot;/assets/css/list-icons.png&amp;quot;) -266px -129px no-repeat; list-style: none none; margin: 4px 0px 10px; padding: 0px 0px 0px 26px;&quot;&gt;La página de PL/SQL en OTN (Oracle Technology Network), en&amp;nbsp;&lt;a href=&quot;http://www.oracle.com/technetwork/database/features/plsql/index.html&quot; style=&quot;-webkit-font-smoothing: antialiased; color: #1f4f82; list-style: none; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;oracle.com/technetwork/database/features/plsql&lt;/a&gt;: un excelente punto de comienzo para explorar recursos de PL/SQL en el popular sitio de OTN&lt;/li&gt;
&lt;li style=&quot;-webkit-font-smoothing: antialiased; background: url(&amp;quot;/assets/css/list-icons.png&amp;quot;) -266px -129px no-repeat; list-style: none none; margin: 4px 0px 10px; padding: 0px 0px 0px 26px;&quot;&gt;PL/SQL Obsession, en ToadWorld.com/SF: una colección de recursos de desarrollo PL/SQL del autor, incluyendo material de entrenamiento, presentaciones, código ejemplo, estándares, videos de buenas prácticas, y más&lt;/li&gt;
&lt;li style=&quot;-webkit-font-smoothing: antialiased; background: url(&amp;quot;/assets/css/list-icons.png&amp;quot;) -266px -129px no-repeat; list-style: none none; margin: 4px 0px 10px; padding: 0px 0px 0px 26px;&quot;&gt;PL/SQL Challenge, en plsqlchallenge.com: una pregunta diaria sobre PL/SQL que te ayudará a evaluar y mejorar tu conocimiento sobre PL/SQL&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;A continuación: Controlando la ejecución en el bloque&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En este artículo, has aprendido cómo se enmarca PL/SQL en el amplio mundo de la base de datos Oracle. Has aprendido también cómo definir bloques de código PL/SQL y a nombrar esos bloques, de forma que el código de tu aplicación puede ser utilizado y mantenido con más facilidad. Finalmente, fuiste introducido en la ejecución de sentencias SQL dentro de PL/SQL.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;strong style=&quot;-webkit-font-smoothing: antialiased; list-style: none; margin: 0px; padding: 0px;&quot;&gt;¿Por qué anidar bloques?&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Podemos poner BEGIN antes de cualquier conjunto de una o más sentencias ejecutables seguidas de un END, creando un bloque anidado con esas sentencias. Hay dos ventajas principales para hacer esto: (1) posponer la asignación de memoria para variables que se necesitan únicamente en el bloque anidado, y (2) limitar la propagación de una excepción lanzada por una de las sentencias del bloque anidado.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Consideremos el siguiente bloque:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
  l_mensaje1  VARCHAR2(100) := &#39;Hola&#39;;
  l_mensaje2  VARCHAR2(100) := &#39; Mundo!&#39;;
BEGIN
  IF SYSDATE &amp;gt;= TO_DATE(&#39;01-JAN-2012&#39;)
  THEN
    l_mensaje2 := l_mensaje1 || l_mensaje2;
    DBMS_OUTPUT.put_line(l_mensaje2);
  ELSE
    DBMS_OUTPUT.put_line(l_mensaje1);
  END IF;
END;
 
&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
El bloque despliega “¡Hola Mundo!” cuando la fecha de hoy (retornada por SYSDATE) es por lo menos el primer día de 2012; en otro caso, únicamente despliega el mensaje “Hola”. Aunque este bloque se ejecute en 2011, asigna memoria para la variable l_mensaje2.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Si reestructuramos este bloque, la memoria para l_mensaje2 será asignada únicamente después del 2011:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
   l_mensaje1  VARCHAR2(100) := &#39;Hola&#39;;
BEGIN
   IF SYSDATE &amp;gt; TO_DATE(&#39;01-JAN-2011&#39;)
   THEN
      DECLARE
         l_mensaje2  VARCHAR2(100) := &#39; Mundo!&#39;;
      BEGIN
         l_mensaje2 := l_mensaje1 || l_mensaje2;
         DBMS_OUTPUT.put_line(l_mensaje2);
      END;
   ELSE
      DBMS_OUTPUT.put_line(l_mensaje1);
   END IF;
END;
 
&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
De forma similar, podemos agregar una sección de excepciones a este bloque anidado, atrapando errores y permitiendo que el bloque exterior continúe con su ejecución:&lt;/div&gt;
&lt;pre style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-size: 12px; list-style: none; padding: 0px;&quot;&gt;DECLARE
   l_mensaje1  VARCHAR2(100) := &#39;Hola&#39;;
BEGIN
   DECLARE
      l_mensaje2  VARCHAR2(5);
   BEGIN
      l_mensaje2 := &#39; Mundo!&#39;;
      DBMS_OUTPUT.put_line(l_mensaje1 || l_mensaje2);
   EXCEPTION
      WHEN OTHERS
      THEN
         DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);
   END;
   DBMS_OUTPUT.put_line(l_mensaje1);
END;

&lt;/pre&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
En este caso, el bloque anidado lanzará una excepción VALUE_ERROR, porque la variable l_mensaje2 es muy pequeña (máximo de 5 bytes) para el texto “ Mundo!”.La sección de excepciones del bloque anidado atrapará y desplegará el error. El bloque exterior continuará su ejecución.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Un posterior artículo en estas series se enfocará en cómo funciona el manejo de excepciones en PL/SQL.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
Más adelante en esta serie de artículos, mostraré cómo controlar el flujo de ejecución en nuestros bloques: lógica condicional con IF y CASE; lógica iterativa con FOR, WHILE y LOOP; así como lanzar y manejar excepciones.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; list-style: none; margin-bottom: 17px; padding: 0px;&quot;&gt;
&lt;a href=&quot;http://www.oracle.com/technetwork/es/articles/sql/construyendo-con-bloques-parte-1-1549135-esa.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Fuente&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/8838917652639083862/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/construyendo-con-bloques-en-plsql.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/8838917652639083862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/8838917652639083862'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/construyendo-con-bloques-en-plsql.html' title='Construyendo con Bloques en PL/SQL'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-1021354130628425679</id><published>2016-05-20T01:30:00.000-04:00</published><updated>2016-05-20T10:30:55.560-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="centos"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="server"/><title type='text'>Como Instalar PHP en Centos 7</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Para que funciones correctamente un servidor web con PHP necesitas tener instalado un servidor web, en Centos 7 tienes varias opciones y puedes instalar alguno de los servidores web disponibles y yo te digo como instalra Lighttp o Apache&lt;/div&gt;
&lt;div class=&quot;button-container large center &quot; style=&quot;background-color: white; background-image: none; border: 0px; color: #333333; display: inherit; float: none !important; font-family: &#39;Open Sans&#39;; line-height: 24px; margin: 10px auto; padding: 0px; text-align: center; vertical-align: baseline; white-space: nowrap;&quot;&gt;
&lt;a class=&quot;button blue&quot; href=&quot;http://www.comoinstalarlinux.com/centos-install-apache/&quot; style=&quot;background: -webkit-linear-gradient(top, rgb(42, 114, 192) 0%, rgb(29, 102, 180) 100%) repeat-x border-box border-box; border-radius: 2px; border: none; color: rgb(255, 255, 255) !important; display: inline-block; font-size: 1.2em !important; line-height: 1.5em; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline: 0px; padding: 0.5em 1.5em !important; position: relative; text-decoration: none; text-shadow: rgb(25, 86, 151) 0px 1px 0px; vertical-align: middle;&quot; target=&quot;_self&quot;&gt;Instalar servidor web Apache (http) en centos&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;clear&quot; style=&quot;background-color: white; border: 0px; clear: both; color: #333333; font-family: &#39;Open Sans&#39;; height: 0px; line-height: 24px; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline; visibility: hidden; width: 0px;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;button-container large center &quot; style=&quot;background-color: white; background-image: none; border: 0px; color: #333333; display: inherit; float: none !important; font-family: &#39;Open Sans&#39;; line-height: 24px; margin: 10px auto; padding: 0px; text-align: center; vertical-align: baseline; white-space: nowrap;&quot;&gt;
&lt;a class=&quot;button blue&quot; href=&quot;http://www.comoinstalarlinux.com/como-instalar-lighttpd-en-centos-7/&quot; style=&quot;background: -webkit-linear-gradient(top, rgb(42, 114, 192) 0%, rgb(29, 102, 180) 100%) repeat-x border-box border-box; border-radius: 2px; border: none; color: rgb(255, 255, 255) !important; display: inline-block; font-size: 1.2em !important; line-height: 1.5em; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline: 0px; padding: 0.5em 1.5em !important; position: relative; text-decoration: none; text-shadow: rgb(25, 86, 151) 0px 1px 0px; vertical-align: middle;&quot; target=&quot;_self&quot;&gt;Instalar Lighttpd en Centos 7&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;clear&quot; style=&quot;background-color: white; border: 0px; clear: both; color: #333333; font-family: &#39;Open Sans&#39;; height: 0px; line-height: 24px; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline; visibility: hidden; width: 0px;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Una vez que tienes &amp;nbsp;instalado el servidor web puedes instalar el PHP con los siguientes comandos:&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;yum install php&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Si vas a trabajar en un servidor LLMP o LAMP entonces ya debes tener instalado MariaDB (el servidor de DB que reemplaza a MySQL en Centos 7) y para poder utilizar la base de datos en los scripts PHP debes tener el soporte para MySQL para ello debes instalarlo con este comando:&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;yum install php-mysql&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Para estar seguro que el servicio esté funcionando con el soporte para PHP debes reiniciar el servicio, en este caso asumiendo que tenemos Apache instalado.&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;systemctl restart httpd.service&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h2 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;PT Sans&#39;; letter-spacing: -1px; line-height: 31.2px; margin: 0px 0px 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Instalar otros módulos de PHP&lt;/div&gt;
&lt;/h2&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Existen otros módulos de PHP que proveen funcionalidades adicionales, uno de ellos el que permite gestionar las conexiones para MySQL y que probablemente ya hayas instalado. Para ver la lista completa de los módulos PHP disponibles puedes usar este comando:&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;yum serach php-&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Este comando emitirá un listado de los módulos disponibles y una breve descripción de lo que hace el módulo. Aquí te muestro un fragmento de lo que el comando anterior muestra:&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Enchant spelling extension for PHP applications
php-fpm.x86_64 : PHP FastCGI Process Manager
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php-intl.x86_64 : Internationalization extension for PHP applications
php-ldap.x86_64 : A module for PHP applications that use LDAP&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Para instalar alguno de estos módulos solo tienes que utilizar la parte que esta antes de los caracteres .x86_64, por ejemplo si necesitas instalar el módulo de la librería gráfica gd entonces el módulo es “php-gd” o si necesitas soporte para LDAP debes escribir “php-ldap”.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Para instalar algunos de estos ejemplos puedes usar el comando “yum install modulo” para los módulo que necesites, por ejemplo para instalar los dos módulos &amp;nbsp;mencionados en el párrafo anterior podrías usar este comando:&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;yum install php-gd php-ldap&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Recuerda que puedes instalar todos los módulos adicionales que requieras.&lt;/div&gt;
&lt;h2 style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;PT Sans&#39;; letter-spacing: -1px; line-height: 31.2px; margin: 0px 0px 10px; padding: 0px; vertical-align: baseline;&quot;&gt;
Validar que PHP funciona&lt;/h2&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Para validar que PHP está funcionando en tu servidor debes crear un archivo&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;echo &quot;&amp;lt;?php echo \&quot;funciona.\&quot;; phpinfo(); ?&amp;gt;&quot; &amp;gt; info.php
&lt;a href=&quot;http://www.comoinstalarlinux.com/mv-linux/&quot; style=&quot;border: 0px; color: #177f0a; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;mv&lt;/a&gt; info.php /var/www/html/&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Luego solo tienes que abrir un navegador web e ingresar la dirección IP o dominio del servidor que estés instalando y agregar info.php para visualizar este archivo, por ejemplo:&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;http://localhost/info.php&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Para validar&amp;nbsp;la instalación de PHP se debe observar en la página web algo parecido a lo que te muestro en la siguiente imagen:&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;http://www.comoinstalarlinux.com/como-instalar-php-en-centos-7/centos-7-php-test-info/&quot; rel=&quot;attachment wp-att-2538&quot; style=&quot;border: 0px; color: #177f0a; line-height: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;img alt=&quot;centos 7 php test info&quot; class=&quot;aligncenter size-full wp-image-2538&quot; height=&quot;572&quot; sizes=&quot;(max-width: 608px) 100vw, 608px&quot; src=&quot;http://www.comoinstalarlinux.com/wp-content/uploads/centos-7-php-test-info.png&quot; srcset=&quot;http://www.comoinstalarlinux.com/wp-content/uploads/centos-7-php-test-info-300x282.png 300w, http://www.comoinstalarlinux.com/wp-content/uploads/centos-7-php-test-info-150x141.png 150w, http://www.comoinstalarlinux.com/wp-content/uploads/centos-7-php-test-info.png 608w&quot; style=&quot;border: 0px; display: block; height: auto; margin: 0px auto 10px; max-width: 100%; padding: 0px; vertical-align: baseline;&quot; width=&quot;608&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Si ves esta imagen entonces tu instalación de PHP está funcionando y solo resta borrar este archivo pues representa un riesgo de seguridad. Para hacerlo ejecuta:&lt;/div&gt;
&lt;pre style=&quot;background: black; color: rgba(0, 255, 0, 0.701961); font-family: Consolas, Monaco, &#39;Andale Mono&#39;, monospace !important; font-size: 13px; line-height: 24px; padding: 20px; text-shadow: rgba(0, 255, 0, 0.701961) 0px 0px 2px; white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;http://www.comoinstalarlinux.com/comando-linux-rm/&quot; style=&quot;border: 0px; color: #177f0a; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;rm&lt;/a&gt; /var/www/html/info.php&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
Recuerda que puedes ver la lista completa servicios que puedes instalar en Centos, esta lista está al final del artículo. Para verlo da click en el siguiente botón:&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #333333; font-family: &#39;Open Sans&#39;; line-height: 24px; margin-bottom: 20px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;http://www.comoinstalarlinux.com/como-instalar-php-en-centos-7/2/&quot; target=&quot;_blank&quot;&gt;Fuente&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/1021354130628425679/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/como-instalar-php-en-centos-7.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1021354130628425679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1021354130628425679'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/como-instalar-php-en-centos-7.html' title='Como Instalar PHP en Centos 7'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-1461804902417758349</id><published>2016-05-19T22:43:00.002-04:00</published><updated>2016-05-19T22:43:57.107-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cinnamon"/><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="iso to usb"/><category scheme="http://www.blogger.com/atom/ns#" term="KDE"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="plasma 5"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><category scheme="http://www.blogger.com/atom/ns#" term="Tecnologia"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="usb"/><title type='text'>¿Qué hacer después de instalar Fedora 23? (Workstation/Server) </title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-b-0FiQrPUwg/VkjsXQ0EoiI/AAAAAAAATGQ/ywkj6X1T7uQ/s1600/Fedora23.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://1.bp.blogspot.com/-b-0FiQrPUwg/VkjsXQ0EoiI/AAAAAAAATGQ/ywkj6X1T7uQ/s400/Fedora23.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;Guía de Post-Instalación &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;Workstation&lt;/span&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;Server&lt;/span&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;&lt;b&gt;$&lt;/b&gt; = usuario normal&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;&lt;b&gt;#&lt;/b&gt; = usuario root&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style=&quot;color: #6aa84f; font-size: large;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;color: #6aa84f; font-size: large;&quot;&gt;&lt;b&gt;Workstation&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-K0MBBer_U1M/VZBTzGLKKFI/AAAAAAAARcE/DUsrnQeyTFs/s1600/Selecci%25C3%25B3n_172.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://2.bp.blogspot.com/-K0MBBer_U1M/VZBTzGLKKFI/AAAAAAAARcE/DUsrnQeyTFs/s640/Selecci%25C3%25B3n_172.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Primero abriremos una terminal y cambiamos a &lt;b&gt;modo root&lt;/b&gt; con el siguiente comando en la consola:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;$ su -&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora sí, comencemos con la guía...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-F_ugxRoeQ9I/VY2bUxeXXgI/AAAAAAAARGs/mpc9MffcfrU/s1600/yum%2B%25281%2529.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;https://4.bp.blogspot.com/-F_ugxRoeQ9I/VY2bUxeXXgI/AAAAAAAARGs/mpc9MffcfrU/s400/yum%2B%25281%2529.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Optimizar DNF&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install yumex&amp;nbsp;dnf-plugins-core&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Actualizar tu Sistema&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y update&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Repositorios Extra (Necesarios)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Añadiendo éstos repositorios a tu sistema, podrás encontrar prácticamente &lt;b&gt;cualquier paquete de software&lt;/b&gt; (programa) sin problemas. Sólo tienes que recordar que algunos de éstos repositorios contienen paquetes que&amp;nbsp;&lt;b&gt;no se consideran 100% software libre&lt;/b&gt;.
 Sin embargo, en muchos casos necesitarás uno o dos paquetes que vengan 
de estos repositorios para hacer funcionar ciertas aplicaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;RPM Fusion (Free &amp;amp; Non-Free)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# dnf install --nogpgcheck https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

&lt;/pre&gt;
&lt;code&gt;# dnf -y update&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;KDE RedHat (Sólo usuarios de KDE)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install wget &amp;amp;&amp;amp; wget https://apt.kde-redhat.org/apt/kde-redhat/fedora/kde.repo -O /etc/yum.repos.d/kde.repo&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-bBBaUYU9mbY/VY2ccV2_5yI/AAAAAAAARG8/zbN4bChLkYA/s1600/7-TuxGpu.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;205&quot; src=&quot;https://1.bp.blogspot.com/-bBBaUYU9mbY/VY2ccV2_5yI/AAAAAAAARG8/zbN4bChLkYA/s400/7-TuxGpu.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Drivers Gráficos Libres (NVIDIA ATI, INTEL)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Éstos son los drivers gráficos que deberías usar sin importar tu GPU si 
estás en Fedora Linux. En el post que enlazamos abajo, explicamos cómo 
sacar el máximo partido a tu hardware usando dichos drivers &lt;b&gt;sin necesidad&lt;/b&gt; de recurrir a los drivers propietarios de los fabricantes.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/mejorar-rendimiento-de-drivers-graficos.html&quot; target=&quot;_blank&quot;&gt;Mejorar rendimiento de drivers gráficos libres (MESA) en Fedora Linux&lt;/a&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Drivers Gráficos Propietarios&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Úsalos solo si &lt;b&gt;NO&lt;/b&gt;&amp;nbsp;notas un buen rendimiento gráfico con los &lt;b&gt;drivers libres&lt;/b&gt; aún después de seguir las instrucciones especificadas en el paso de arriba (y reiniciar) o bien, si vas a&amp;nbsp;hacer&amp;nbsp;&lt;b&gt;gaming pesado&lt;/b&gt;&amp;nbsp;en tu máquina.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA: &lt;/b&gt;Si cuentas con gráficos &lt;b&gt;AMD/ATI &lt;/b&gt;la verdad&amp;nbsp;no vale
 la pena utilizar los drivers propietarios (a menos que tengas una muy 
buena razón como la minería de criptodivisas o algo así) ya que los 
libres funcionan muchísimo mejor en todos los casos de uso comunes, 
desde videos, pasando por gaming y hasta rendering (entre otras cosas).&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/como-instalar-drivers-propietarios_26.html&quot; target=&quot;_blank&quot;&gt;Cómo instalar drivers gráficos propietarios NVIDIA en Fedora 22&amp;nbsp;(y 23)&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/como-instalar-drivers-graficos.html&quot; target=&quot;_blank&quot;&gt;Cómo instalar drivers gráficos propietarios AMD/ATI en Fedora 22&amp;nbsp;(y 23)&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/como-instalar-drivers-propietarios.html&quot; target=&quot;_blank&quot;&gt;Cómo instalar &quot;drivers gráficos propietarios&quot; INTEL en Fedora 22&amp;nbsp;(y 23)&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&amp;nbsp;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Códecs y Aplicaciones&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-bYXqnhGlL9Y/VY2erw5scaI/AAAAAAAARHM/dOUx_qov8c8/s1600/spftware.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;236&quot; src=&quot;https://3.bp.blogspot.com/-bYXqnhGlL9Y/VY2erw5scaI/AAAAAAAARHM/dOUx_qov8c8/s400/spftware.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Los &lt;b&gt;códecs&lt;/b&gt; son escenciales para poder reproducir diferentes 
archivos de audio/video en tu sistema independientemente del formato. 
Instálate un buen códec pack con el siguiente comando en consola:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# dnf -y install gstreamer1-libav gstreamer1-plugins-bad-free-extras gstreamer1-plugins-bad-freeworld gstreamer1-plugins-good-extras gstreamer1-plugins-ugly gstreamer-ffmpeg xine-lib-extras xine-lib-extras-freeworld k3b-extras-freeworld gstreamer-plugins-bad gstreamer-plugins-bad-free-extras gstreamer-plugins-bad-nonfree gstreamer-plugins-ugly gstreamer-ffmpeg mencoder&lt;/pre&gt;
&lt;br /&gt;
Como en todo Sistema Operativo, en Fedora necesitas &lt;b&gt;aplicaciones&lt;/b&gt; 
para poder trabajar en tu computadora con diferentes archivos y bajo 
diferentes circunstancias/situaciones. Aquí una lista detallada de apps 
que no pueden faltar en tu sistema &lt;b&gt;Fedora Linux&lt;/b&gt; según categoría:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Diseño/Edición&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install gimp scribus inkscape blender audacity-freeworld calligra-krita shutter pencil&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
En esta categoría otras apps importantes son el gestor de fotografías y editor rápido. GNOME tiene a &lt;b&gt;Shotwell&lt;/b&gt; mientras que KDE tiene a &lt;b&gt;DigiKam/ShowFoto&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Edición de Vídeo&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/07/como-instalar-lightworks-video-editor_14.html&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;Cómo instalar Lightworks video editor en Fedora Linux&lt;/b&gt;&lt;/a&gt;&lt;/blockquote&gt;
&lt;b&gt;Multimedia (Audio/Vídeo)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install vlc clementine soundconverter mediainfo &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Rip &amp;amp; Burn&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install k3b sound-juicer kid3&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Administración del sistema&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install gparted nano wget curl smartmontools htop inxi bleachbit firewall-config beesu pysdm&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Mensajería y Comunicación&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install pidgin xchat&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;E-mail&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install thunderbird&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Compresión/Decompresión&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install unrar unzip zip p7zip p7zip-plugins&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Impresoras/Escáneres&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install python-qt4 hplip hplip-gui libsane-hpaio simple-scan&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Internet&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install firefox epiphany uget gigolo&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Juegos&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install steam&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Wine&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install&amp;nbsp;wine cabextract&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;# wget https://winetricks.org/winetricks -O /usr/local/bin/winetricks &amp;amp;&amp;amp; chmod +x /usr/local/bin/winetricks&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Java&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel icedtea-web&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Otros&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install screenfetch rfkill lsb&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Utilidades GNOME&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install cheese gnome-shell-extension-common dconf-editor gnome-tweak-tool&amp;nbsp;gtk-murrine-engine*&amp;nbsp;libreoffice-langpack-es&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Utilidades KDE&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install kamoso digikam&amp;nbsp;kde-i18n-Spanish&amp;nbsp;kde-l10n-es&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Software básico de compilación&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Necesitarás instalar éstos paquetes si piensas&amp;nbsp;&lt;b&gt;compilar&lt;/b&gt;&amp;nbsp;algo dentro de tu Fedora Linux (nunca está demás, siempre te puedes topar con software del que únicamente tengas un&amp;nbsp;&lt;b&gt;tarball&lt;/b&gt;&amp;nbsp;por ejemplo); Es definitivamente recomendable instalarlos.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install kernel-headers kernel-devel dkms&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;# dnf -y install kernel-PAE-devel (Sólo Si tienes Kernel PAE)&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;# dnf groupinstall &quot;Development Tools&quot; &amp;amp;&amp;amp;&amp;nbsp;dnf groupinstall &quot;Development Libraries&quot;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Y con esto termina la parte de &lt;b&gt;códecs y aplicaciones&lt;/b&gt;... Aquí 
también puedes aprovechar para personalizar un poco la selección de apps
 en tu sistema, yo personalmente elimino todo lo referente a &lt;b&gt;evolution&lt;/b&gt; y &lt;b&gt;rhythmbox&lt;/b&gt; (con mucho cuidado de no cargarme el sistema &lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2012/10/eliminar-paquetes-individuales-sin.html&quot; target=&quot;_blank&quot;&gt;con las dependencias&lt;/a&gt;&lt;/b&gt;) ya que reemplazo estas 2 apps con &lt;b&gt;thunderbird&lt;/b&gt; y &lt;b&gt;clementine&lt;/b&gt; respectivamente.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Seguridad&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-DTi5tl1t0Mc/VY2hLHklsDI/AAAAAAAARHY/vS-QVFZM8IU/s1600/LinuxKileAMalware%2B%25281%2529.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://3.bp.blogspot.com/-DTi5tl1t0Mc/VY2hLHklsDI/AAAAAAAARHY/vS-QVFZM8IU/s400/LinuxKileAMalware%2B%25281%2529.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Si tienes tu máquina &lt;b&gt;Linux&lt;/b&gt; en red junto a máquinas&lt;b&gt; Windows/Mac&lt;/b&gt;
 siempre es bueno tener a la mano un buen anti-rootkit y antivirus (por 
protección de los demás), ya que aunque linux es prácticamente 
invulnerable a las amenazas de malware &lt;b&gt;comunes&lt;/b&gt;, los otros sistemas no:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/proteccion-anti-malware-en-linux-5-tips.html&quot; target=&quot;_blank&quot;&gt;Protección anti-malware en Linux (5 tips básicos)&lt;/a&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Otras Apps&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-afYUEt-0-ac/VY2r2yRlztI/AAAAAAAARHo/Pj1miUz0mR0/s1600/%25C3%2581rea%2Bde%2Btrabajo%2B1_157.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://3.bp.blogspot.com/-afYUEt-0-ac/VY2r2yRlztI/AAAAAAAARHo/Pj1miUz0mR0/s400/%25C3%2581rea%2Bde%2Btrabajo%2B1_157.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA:&lt;/b&gt; Las apps que se descarguen como paquetes rpm en este apartado se instalan con el comando &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;code&gt;&lt;i&gt;dnf -y install ruta/al/paquete.rpm&lt;/i&gt;&lt;/code&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Esto instalará las dependencias por nosotros y después el paquete descargado como es de esperarse.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;LibreOffice (Si usas KDE)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;# dnf -y install libreoffice libreoffice-kde libreoffice-langpack-es &amp;amp;&amp;amp; dnf -y remove calligra*&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Google Chrome&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Muy importante ya que es la &lt;b&gt;única manera oficial&lt;/b&gt; de poder disfrutar de&amp;nbsp;&lt;b&gt;Flash Player &lt;/b&gt;y &lt;b&gt;Netflix&lt;/b&gt; en sistemas Linux como Fedora:&lt;br /&gt;
&lt;br /&gt;
Descarga RPM -&amp;nbsp;&lt;b&gt;&lt;a href=&quot;https://chrome.google.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://chrome.google.com/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Skype&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Descarga RPM -&lt;b&gt;&amp;nbsp;&lt;a href=&quot;https://www.skype.com/intl/es/get-skype/on-your-computer/linux/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.skype.com/intl/es/get-skype/on-your-computer/linux/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Spotify&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/instalar-spotify-linux-en-fedora-21-y-22.html&quot; target=&quot;_blank&quot;&gt;Instalar Spotify Linux en Fedora 21 y 22&lt;/a&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;b&gt;Atom Editor&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Fedora es un sistema operativo mayormente enfocado para programadores e 
ingenieros, así que asumí que incluir ésta aplicación aquí no estaría 
demás:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/instalar-atom-editor-en-fedora-21-y-22.html&quot; target=&quot;_blank&quot;&gt;Instalar Atom Editor en Fedora 21 y 22&amp;nbsp;&lt;/a&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;b&gt;Electrum Bitcoin Wallet&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
En el mundo de hoy nunca está demás tener una cartera &lt;b&gt;&lt;a href=&quot;https://bitcoin.org/es/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;bitcoin&lt;/a&gt;&lt;/b&gt; a la mano:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/quicktip-install-electrum-bitcoin.html&quot; target=&quot;_blank&quot;&gt;#QuickTip: Install Electrum Bitcoin Wallet on Fedora Linux&lt;/a&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;b&gt;PlayOnLinux&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/instalar-playonlinux-en-fedora-21-y-22.html&quot; target=&quot;_blank&quot;&gt;Instalar PlayOnLinux en Fedora 21 y 22&lt;/a&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;b&gt;VirtualBox&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/instalar-virtualbox-en-fedora-linux.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Instalar VirtualBox en Fedora Linux&lt;/a&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Extras&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-FYfYCVXlOwQ/VY3nyI0MAcI/AAAAAAAARKE/D_rRQLNcJsc/s1600/extra-logo-1200x630.v2014_07_22_110531.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;https://3.bp.blogspot.com/-FYfYCVXlOwQ/VY3nyI0MAcI/AAAAAAAARKE/D_rRQLNcJsc/s400/extra-logo-1200x630.v2014_07_22_110531.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/mejorar-el-rendimiento-de-google-chrome.html&quot; target=&quot;_blank&quot;&gt;Mejorar el rendimiento de Google Chrome (y derivados)&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2014/05/rejuvenece-tu-linux-con-estos-tips.html&quot; target=&quot;_blank&quot;&gt;7+ tips para mejorar el rendimiento de tu GNU/Linux&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/instalar-drivers-broadcom-en-fedora-21.html&quot; target=&quot;_blank&quot;&gt;¿Tarjeta inalámbrica Broadcom? ¡Pasa por acá!&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/solucion-opengl-glx-context-is-not.html&quot; target=&quot;_blank&quot;&gt;Solucionar error &quot;OpenGL GLX context&quot; Steam&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/06/ssd-en-linux-10-tips-tweaks.html&quot; target=&quot;_blank&quot;&gt;SSD en Linux: 10+ Tips &amp;amp; Tweaks&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://xenodesystems.blogspot.com/2015/07/mejorar-el-renderizado-de-tipografias.html&quot; target=&quot;_blank&quot;&gt;Mejorar el renderizado de tipografías en Fedora Linux&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
Y pues bueno, aquí termina la parte de post-install para la edición&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;Workstation&lt;/span&gt;&lt;/b&gt;. Espero como con cada lanzamiento esta guía sea su referencia de elección tras instalar &lt;b&gt;Fedora Linux&lt;/b&gt; y pues cualquier cosa no duden en dejarnos un comentario abajo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://xenodesystems.blogspot.com/2015/11/que-hacer-despues-de-instalar-fedora-23.html&quot; target=&quot;_blank&quot;&gt;Fuente&lt;/a&gt;&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/1461804902417758349/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/que-hacer-despues-de-instalar-fedora-23.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1461804902417758349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1461804902417758349'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/que-hacer-despues-de-instalar-fedora-23.html' title='¿Qué hacer después de instalar Fedora 23? (Workstation/Server) '/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-b-0FiQrPUwg/VkjsXQ0EoiI/AAAAAAAATGQ/ywkj6X1T7uQ/s72-c/Fedora23.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-221586273892168586</id><published>2016-05-19T15:38:00.001-04:00</published><updated>2016-05-19T15:38:35.915-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="KDE"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="OS"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Install MySQL 5.7 on Fedora 23/22, CentOS/RHEL </title><content type='html'>MySQL is a relational database management system (RDBMS) that runs as
 a server providing multi-user access to a number of databases. This is 
guide, &lt;b&gt;howto install or upgrade MySQL Community Server latest 
version 5.7 (5.7.9) on Fedora 23/22/21, CentOS 7.2/6.7/5.11 and Red Hat 
(RHEL) 7.2/6.7/5.11&lt;/b&gt;. This guide works of course with &lt;b&gt;Oracle Linux&lt;/b&gt; and &lt;b&gt;Scientific Linux&lt;/b&gt; too and MySQL 5.6/5.5 installation is possible too.&lt;br /&gt;
&lt;b style=&quot;font-size: 120%;&quot;&gt;Note: If you are upgrading MySQL 
(from earlier version), then make sure that you backup (dump and copy) 
your database and configs. And remember run &lt;b&gt;mysql_upgrade&lt;/b&gt; command.&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-4788086840132948&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;2693477239&quot; data-adsbygoogle-status=&quot;done&quot; style=&quot;display: block; height: 60px;&quot;&gt;&lt;ins id=&quot;aswift_0_expand&quot; style=&quot;background-color: transparent; border: none; display: inline-table; height: 60px; margin: 0; padding: 0; position: relative; visibility: visible; width: 680px;&quot;&gt;&lt;ins id=&quot;aswift_0_anchor&quot; style=&quot;background-color: transparent; border: none; display: block; height: 60px; margin: 0; padding: 0; position: relative; visibility: visible; width: 680px;&quot;&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/ins&gt;&lt;/div&gt;
&lt;h2&gt;
Install MySQL Database 5.7.9 on Fedora 23/22/21, CentOS 7.2/6.7/5.11, Red Hat (RHEL) 7.2/6.7/5.11&lt;/h2&gt;
&lt;h3&gt;
1. Change root user&lt;/h3&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e856b699036912&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;su -
## OR ##
sudo -i
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e856b699036912-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e856b699036912-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e856b699036912-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e856b699036912-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e856b699036912-4&quot;&gt;
4&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e856b699036912-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e856b699036912-1&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;su&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e856b699036912-2&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## OR ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e856b699036912-3&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;sudo&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;i&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e856b699036912-4&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
2. Install MySQL YUM repository&lt;/h3&gt;
&lt;h4&gt;
Fedora&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e8576977553249&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;## Fedora 23 ##
dnf install https://dev.mysql.com/get/mysql57-community-release-fc23-7.noarch.rpm

## Fedora 22 ##
dnf install https://dev.mysql.com/get/mysql57-community-release-fc22-7.noarch.rpm

## Fedora 21 ##
yum localinstall https://dev.mysql.com/get/mysql57-community-release-fc21-7.noarch.rpm
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-5&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-6&quot;&gt;
6&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-7&quot;&gt;
7&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-8&quot;&gt;
8&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8576977553249-9&quot;&gt;
9&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-1&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## Fedora 23 ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-2&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;dnf &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;install &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.mysql&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.com&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql57&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;fc23&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;7.noarch.rpm&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-3&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-4&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## Fedora 22 ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-5&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;dnf &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;install &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.mysql&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.com&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql57&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;fc22&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;7.noarch.rpm&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-6&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-7&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## Fedora 21 ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-8&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;yum &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;localinstall &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.mysql&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.com&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql57&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;fc21&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;7.noarch.rpm&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8576977553249-9&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;
CentOS and Red Hat (RHEL)&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e857b570218356&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;## CentOS 7 and Red Hat (RHEL) 7 ##
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

## CentOS 6 and Red Hat (RHEL) 6 ##
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm

## CentOS 5 and Red Hat (RHEL) 5 ## 
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el5-7.noarch.rpm
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-5&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-6&quot;&gt;
6&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-7&quot;&gt;
7&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-8&quot;&gt;
8&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e857b570218356-9&quot;&gt;
9&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-1&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## CentOS 7 and Red Hat (RHEL) 7 ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-2&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;yum &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;localinstall &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.mysql&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.com&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql57&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;el7&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;7.noarch.rpm&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-3&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-4&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## CentOS 6 and Red Hat (RHEL) 6 ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-5&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;yum &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;localinstall &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.mysql&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.com&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql57&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;el6&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;7.noarch.rpm&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-6&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-7&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## CentOS 5 and Red Hat (RHEL) 5 ## &lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-8&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;yum &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;localinstall &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.mysql&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.com&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql57&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;el5&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;7.noarch.rpm&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e857b570218356-9&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
3. Update or Install MySQL 5.7.9&lt;/h3&gt;
&lt;h4&gt;
Fedora 23/22&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e8580884048057&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;dnf install mysql-community-server
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8580884048057-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8580884048057-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8580884048057-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8580884048057-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8580884048057-1&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;dnf &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;install &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;server&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8580884048057-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;
Fedora 21, CentOS 7.2/6.7/5.11 and Red Hat (RHEL) 7.2/6.7/5.11&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e8583224238657&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;yum install mysql-community-server
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8583224238657-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8583224238657-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8583224238657-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8583224238657-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8583224238657-1&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;yum &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;install &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;community&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;server&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8583224238657-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;width: 100%;&quot;&gt;
&lt;div style=&quot;margin: 5px auto; width: 300px;&quot;&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-4788086840132948&quot; data-ad-slot=&quot;2012984830&quot; data-adsbygoogle-status=&quot;done&quot; style=&quot;display: inline-block; height: 250px; width: 300px;&quot;&gt;&lt;ins id=&quot;aswift_1_expand&quot; style=&quot;background-color: transparent; border: none; display: inline-table; height: 250px; margin: 0; padding: 0; position: relative; visibility: visible; width: 300px;&quot;&gt;&lt;ins id=&quot;aswift_1_anchor&quot; style=&quot;background-color: transparent; border: none; display: block; height: 250px; margin: 0; padding: 0; position: relative; visibility: visible; width: 300px;&quot;&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
4. Start MySQL server and autostart MySQL on boot&lt;/h3&gt;
&lt;h4&gt;
Fedora 23/22/21 and CentOS 7.2&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e8587697719030&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;systemctl start mysqld.service ## use restart after update

systemctl enable mysqld.service
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8587697719030-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8587697719030-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8587697719030-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8587697719030-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8587697719030-4&quot;&gt;
4&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8587697719030-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8587697719030-1&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;systemctl &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;start &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysqld&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.service&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-c&quot;&gt;## use restart after update&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8587697719030-2&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8587697719030-3&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;systemctl &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;enable &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysqld&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.service&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8587697719030-4&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;
CentOS 6.7/5.11 and Red Hat (RHEL) 6.7/5.11&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e858c942522691&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;/etc/init.d/mysql start ## use restart after update
## OR ##
service mysql start ## use restart after update

chkconfig --levels 235 mysqld on
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e858c942522691-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e858c942522691-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e858c942522691-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e858c942522691-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e858c942522691-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e858c942522691-5&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e858c942522691-6&quot;&gt;
6&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e858c942522691-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e858c942522691-1&quot;&gt;
&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;etc&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.d&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;mysql &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-c&quot;&gt;## use restart after update&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e858c942522691-2&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## OR ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e858c942522691-3&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;service &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;mysql &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-c&quot;&gt;## use restart after update&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e858c942522691-4&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e858c942522691-5&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;chkconfig&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;levels&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;235&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;mysqld &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;on&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e858c942522691-6&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
5. Get Your Generated Random root Password&lt;/h3&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e8590046802874&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;grep &#39;A temporary password is generated for root@localhost&#39; /var/log/mysqld.log |tail -1
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8590046802874-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8590046802874-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8590046802874-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8590046802874-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8590046802874-1&quot;&gt;
&lt;span class=&quot;crayon-r&quot;&gt;grep&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&#39;A temporary password is generated for root@localhost&#39;&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-t&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysqld&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.log&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;tail&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8590046802874-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Example Output:&lt;br /&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e8594715839638&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;2015-11-20T21:11:44.229891Z 1 [Note] A temporary password is generated for root@localhost: -et)QoL4MLid
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8594715839638-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8594715839638-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8594715839638-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8594715839638-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8594715839638-1&quot;&gt;
&lt;span class=&quot;crayon-cn&quot;&gt;2015&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;20T21&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;44.229891Z&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Note&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;temporary &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;is&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;generated &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;localhost&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;et&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;QoL4MLid&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8594715839638-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
And password is: -et)QoL4MLid&lt;br /&gt;
&lt;h3&gt;
6. MySQL Secure Installation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Change root password&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Remove anonymous users&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Disallow root login remotely&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Remove test database and access to it&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Reload privilege tables&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Start MySQL Secure Installation with following command&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e8599174558218&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;/usr/bin/mysql_secure_installation
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8599174558218-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8599174558218-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e8599174558218-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8599174558218-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8599174558218-1&quot;&gt;
&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;usr&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;bin&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql_secure&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;_&lt;/span&gt;installation&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e8599174558218-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
Output:&lt;br /&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e859d892607289&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


In order to log into MySQL to secure it, we\&#39;ll need the current
password for the root user.  If you\&#39;ve just installed MySQL, and
you haven\&#39;t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): [ENTER YOUR RANDOM PASSWORD HERE]
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from &#39;localhost&#39;.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MySQL comes with a database named &#39;test&#39; that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...



All done!  If you\&#39;ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -39px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-5&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-6&quot;&gt;
6&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-7&quot;&gt;
7&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-8&quot;&gt;
8&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-9&quot;&gt;
9&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-10&quot;&gt;
10&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-11&quot;&gt;
11&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-12&quot;&gt;
12&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-13&quot;&gt;
13&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-14&quot;&gt;
14&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-15&quot;&gt;
15&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-16&quot;&gt;
16&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-17&quot;&gt;
17&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-18&quot;&gt;
18&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-19&quot;&gt;
19&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-20&quot;&gt;
20&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-21&quot;&gt;
21&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-22&quot;&gt;
22&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-23&quot;&gt;
23&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-24&quot;&gt;
24&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-25&quot;&gt;
25&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-26&quot;&gt;
26&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-27&quot;&gt;
27&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-28&quot;&gt;
28&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-29&quot;&gt;
29&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-30&quot;&gt;
30&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-31&quot;&gt;
31&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-32&quot;&gt;
32&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-33&quot;&gt;
33&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-34&quot;&gt;
34&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-35&quot;&gt;
35&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-36&quot;&gt;
36&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-37&quot;&gt;
37&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-38&quot;&gt;
38&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-39&quot;&gt;
39&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-40&quot;&gt;
40&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-41&quot;&gt;
41&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-42&quot;&gt;
42&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-43&quot;&gt;
43&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-44&quot;&gt;
44&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-45&quot;&gt;
45&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-46&quot;&gt;
46&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-47&quot;&gt;
47&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-48&quot;&gt;
48&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-49&quot;&gt;
49&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-50&quot;&gt;
50&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-51&quot;&gt;
51&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-52&quot;&gt;
52&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-53&quot;&gt;
53&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-54&quot;&gt;
54&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-55&quot;&gt;
55&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-56&quot;&gt;
56&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-57&quot;&gt;
57&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-58&quot;&gt;
58&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-59&quot;&gt;
59&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-60&quot;&gt;
60&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-61&quot;&gt;
61&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-62&quot;&gt;
62&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e859d892607289-63&quot;&gt;
63&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-1&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;NOTE&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;RUNNING &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;ALL &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;PARTS &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;OF &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;THIS&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;SCRIPT &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;IS&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;RECOMMENDED &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;FOR&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;ALL &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;MySQL&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-2&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;SERVERS &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;IN&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;PRODUCTION &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;USE&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;PLEASE &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;READ&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;EACH&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;STEP &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;CAREFULLY&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-3&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-4&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-5&quot;&gt;
&lt;span class=&quot;crayon-st&quot;&gt;In&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;order &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;log &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;into &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;MySQL &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;secure &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;it&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;we&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;\&lt;/span&gt;&#39;&lt;span class=&quot;crayon-e&quot;&gt;ll &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;need &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;current&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-6&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;If&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;you&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;\&lt;/span&gt;&#39;&lt;span class=&quot;crayon-e&quot;&gt;ve &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;just &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;installed &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;MySQL&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;and&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-7&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;you &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;haven&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;\&lt;/span&gt;&#39;&lt;span class=&quot;crayon-i&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;set &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;yet&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;will &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;be &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;blank&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-8&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;so &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;you &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;should &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;just &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;press &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;enter &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;here&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-9&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-10&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Enter &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;current &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;enter &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;none&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;ENTER &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;YOUR &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;RANDOM &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;PASSWORD &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;HERE&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-11&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;OK&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;successfully &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;used &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;moving &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-12&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-13&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Setting &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;ensures &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;that &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;nobody &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;can &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;log &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;into &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;MySQL&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-14&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;user &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;without &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;proper &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;authorisation&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-15&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-16&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Set &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Y&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;Y&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-17&quot;&gt;
&lt;span class=&quot;crayon-r&quot;&gt;New&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-18&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;Re&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;enter &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-19&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Password &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;updated &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;successfully&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-20&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Reloading &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;privilege &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;tables&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-21&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Success&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-22&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-23&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-24&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;By &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;MySQL &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;installation &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;has &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;an &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;anonymous &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;allowing &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;anyone&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-25&quot;&gt;
&lt;span class=&quot;crayon-st&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;log &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;into &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;MySQL &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;without &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;having &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;have&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;user &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;account &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;created &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-26&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;them&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;This&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;is&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;intended &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;only &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;testing&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;make&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;installation&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-27&quot;&gt;
&lt;span class=&quot;crayon-i&quot;&gt;go&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;bit &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;smoother&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;You &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;should &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;remove &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;them &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;before &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;moving &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;into&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;a&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-28&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;production &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;environment&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-29&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-30&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Remove &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;anonymous &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;users&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Y&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;Y&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-31&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Success&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-32&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-33&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;Normally&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;should &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;only &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;be &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;allowed &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;connect &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&#39;localhost&#39;&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;This&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-34&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;ensures &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;that &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;someone &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;cannot &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;guess &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;at&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;from &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;network&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-35&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-36&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Disallow &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;login &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;remotely&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Y&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;Y&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-37&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Success&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-38&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-39&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;By &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;MySQL &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;comes &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;database &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;named&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&#39;test&#39;&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;that &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;anyone &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;can&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-40&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;access&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;This&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;is&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;also &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;intended &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;only &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;testing&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;should &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;be &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;removed&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-41&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;before &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;moving &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;into&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;production &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;environment&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-42&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-43&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Remove &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;database &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;access &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;it&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Y&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Y&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-44&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;Dropping &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-45&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Success&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-46&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;Removing &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;privileges &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;on &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-47&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Success&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-48&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-49&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Reloading &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;privilege &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;tables &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;will &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;ensure &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;that &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;all &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;changes &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;made &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;so &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;far&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-50&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;will &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;take &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;effect &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;immediately&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-51&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-52&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Reload &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;privilege &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;tables &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;now&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Y&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;Y&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-53&quot;&gt;
&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;Success&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-54&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-55&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Cleaning &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;up&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-56&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-57&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-58&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-59&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;All &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;If&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;you&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;\&lt;/span&gt;&#39;&lt;span class=&quot;crayon-e&quot;&gt;ve &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;completed &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;all &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;of &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;the &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;above &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;your &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;MySQL&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-60&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;installation &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;should &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;now &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;be &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;secure&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-61&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-62&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;Thanks &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;using &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;MySQL&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e859d892607289-63&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;b&gt;Note: If you don’t want some reason, do a “MySQL Secure 
Installation” then at least it’s very important to change the root 
user’s password&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85a3275855394&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;mysqladmin -u root password [your_password_here]

## Example ##
mysqladmin -u root password myownsecrectpass
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a3275855394-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a3275855394-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a3275855394-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a3275855394-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a3275855394-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a3275855394-5&quot;&gt;
5&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a3275855394-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a3275855394-1&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;mysqladmin&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;your_password_here&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a3275855394-2&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a3275855394-3&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## Example ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a3275855394-4&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;mysqladmin&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;root &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;password &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;myownsecrectpass&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a3275855394-5&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
7. Connect to MySQL database (localhost) with password&lt;/h3&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85a7089820095&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;mysql -u root -p

## OR ##
mysql -h localhost -u root -p
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a7089820095-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a7089820095-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a7089820095-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a7089820095-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a7089820095-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85a7089820095-5&quot;&gt;
5&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a7089820095-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a7089820095-1&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;p&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a7089820095-2&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a7089820095-3&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## OR ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a7089820095-4&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;h&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;localhost&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;p&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85a7089820095-5&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
8. Create Database, Create MySQL User and Enable Remote Connections to MySQL Database&lt;/h3&gt;
&lt;b&gt;This example uses following parameters:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;DB_NAME = webdb&lt;/li&gt;
&lt;li&gt;USER_NAME = webdb_user&lt;/li&gt;
&lt;li&gt;REMOTE_IP = 10.0.15.25&lt;/li&gt;
&lt;li&gt;PASSWORD = password123&lt;/li&gt;
&lt;li&gt;PERMISSIONS = ALL&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85ab210619887&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;PgSQL&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;## CREATE DATABASE ##
mysql&gt; CREATE DATABASE webdb;

## CREATE USER ##
mysql&gt; CREATE USER &#39;webdb_user&#39;@&#39;10.0.15.25&#39; IDENTIFIED BY &#39;password123&#39;;

## GRANT PERMISSIONS ##
mysql&gt; GRANT ALL ON webdb.* TO &#39;webdb_user&#39;@&#39;10.0.15.25&#39;;

##  FLUSH PRIVILEGES, Tell the server to reload the grant tables  ##
mysql&gt; FLUSH PRIVILEGES;
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -39px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-5&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-6&quot;&gt;
6&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-7&quot;&gt;
7&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-8&quot;&gt;
8&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-9&quot;&gt;
9&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-10&quot;&gt;
10&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-11&quot;&gt;
11&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85ab210619887-12&quot;&gt;
12&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-1&quot;&gt;
##&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;CREATE&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;DATABASE&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;##&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-2&quot;&gt;
mysql&lt;span class=&quot;crayon-h&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;CREATE&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;DATABASE&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;webdb;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-3&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-4&quot;&gt;
##&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;CREATE&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;##&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-5&quot;&gt;
mysql&lt;span class=&quot;crayon-h&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;CREATE&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&#39;webdb_user&#39;&lt;/span&gt;@&lt;span class=&quot;crayon-s&quot;&gt;&#39;10.0.15.25&#39;&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;IDENTIFIED&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;BY&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&#39;password123&#39;&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-6&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-7&quot;&gt;
##&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;GRANT&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;PERMISSIONS&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;##&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-8&quot;&gt;
mysql&lt;span class=&quot;crayon-h&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;GRANT&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;ON&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;webdb.*&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;TO&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&#39;webdb_user&#39;&lt;/span&gt;@&lt;span class=&quot;crayon-s&quot;&gt;&#39;10.0.15.25&#39;&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-9&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-10&quot;&gt;
##&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;FLUSH&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;PRIVILEGES&lt;/span&gt;,&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;Tell&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;the&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;reload&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;the&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;grant&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;tables&lt;span class=&quot;crayon-h&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;##&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-11&quot;&gt;
mysql&lt;span class=&quot;crayon-h&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;FLUSH&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;PRIVILEGES&lt;/span&gt;;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85ab210619887-12&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;
Enable Remote Connection to MariaDB Server –&amp;gt; Open MySQL Port (3306) on Iptables Firewall (as root user again)&lt;/h2&gt;
&lt;h3&gt;
1. Fedora 23/22/21 and CentOS/Red Hat (RHEL) 7.2&lt;/h3&gt;
&lt;h4&gt;
1.1 Add New Rule to Firewalld&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85b0463024639&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;firewall-cmd --permanent --zone=public --add-service=mysql

## OR ##

firewall-cmd --permanent --zone=public --add --port=3306/tcp
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b0463024639-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b0463024639-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b0463024639-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b0463024639-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b0463024639-4&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b0463024639-5&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b0463024639-6&quot;&gt;
6&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b0463024639-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b0463024639-1&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;firewall&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;cmd&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;permanent&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;zone&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;service&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;mysql&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b0463024639-2&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b0463024639-3&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## OR ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b0463024639-4&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b0463024639-5&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;firewall&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;cmd&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;permanent&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;zone&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;3306&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;tcp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b0463024639-6&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;
1.2 Restart firewalld.service&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85b4829529620&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;systemctl restart firewalld.service
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b4829529620-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b4829529620-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b4829529620-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b4829529620-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b4829529620-1&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;systemctl &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;restart &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;firewalld&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.service&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b4829529620-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
2. CentOS/Red Hat (RHEL) 6.7/5.11&lt;/h3&gt;
&lt;h4&gt;
2.1 Edit /etc/sysconfig/iptables file:&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85b8181046131&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;nano -w /etc/sysconfig/iptables
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b8181046131-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b8181046131-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85b8181046131-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b8181046131-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b8181046131-1&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;nano&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;etc&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;sysconfig&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;iptables&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85b8181046131-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;
2.2 Add following INPUT rule:&lt;/h4&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85bc573429404&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85bc573429404-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85bc573429404-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85bc573429404-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85bc573429404-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85bc573429404-1&quot;&gt;
&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;INPUT&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;m&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;state &lt;/span&gt;&lt;span class=&quot;crayon-r&quot;&gt;NEW&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;m&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;tcp&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;tcp&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;dport&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;3306&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;ACCEPT&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85bc573429404-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
2.3 Restart Iptables Firewall:&lt;/h3&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85c0874245220&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;service iptables restart
## OR ##
/etc/init.d/iptables restart
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c0874245220-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c0874245220-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c0874245220-2&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c0874245220-3&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c0874245220-4&quot;&gt;
4&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c0874245220-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c0874245220-1&quot;&gt;
&lt;span class=&quot;crayon-e&quot;&gt;service &lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;iptables &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;restart&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c0874245220-2&quot;&gt;
&lt;span class=&quot;crayon-c&quot;&gt;## OR ##&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c0874245220-3&quot;&gt;
&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;etc&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;.d&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;iptables &lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;restart&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c0874245220-4&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
3. Test remote connection&lt;/h3&gt;
&lt;div class=&quot;crayon-syntax crayon-theme-inttf-dark crayon-font-monaco crayon-os-pc print-yes notranslate&quot; data-settings=&quot; minimize scroll-always&quot; id=&quot;crayon-573e1573e85c4329949032&quot; style=&quot;float: none; font-size: 15px ! important; height: auto; line-height: 18px ! important; margin: 0px auto 35px;&quot;&gt;
&lt;div class=&quot;crayon-toolbar&quot; data-settings=&quot; show&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-title&quot;&gt;&lt;/span&gt;

&lt;div class=&quot;crayon-tools&quot; style=&quot;font-size: 15px !important; height: 22.5px !important; line-height: 22.5px !important;&quot;&gt;
&lt;span class=&quot;crayon-language&quot;&gt;Shell&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-plain-wrap&quot;&gt;
&lt;textarea class=&quot;crayon-plain print-no&quot; data-settings=&quot;dblclick&quot; readonly=&quot;readonly&quot; style=&quot;-moz-tab-size: 4; font-size: 15px ! important; line-height: 18px ! important; opacity: 0; z-index: 0;&quot; wrap=&quot;soft&quot;&gt;mysql -h 10.0.15.25 -u myusername -p
&lt;/textarea&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-main&quot; style=&quot;position: relative; z-index: 1;&quot;&gt;
&lt;table class=&quot;crayon-table&quot; style=&quot;margin-left: -30px;&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;crayon-row&quot;&gt;
&lt;td class=&quot;crayon-nums &quot; data-settings=&quot;hide&quot;&gt;&lt;div class=&quot;crayon-nums-content&quot; style=&quot;font-size: 15px !important; line-height: 18px !important;&quot;&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c4329949032-0&quot;&gt;
0&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c4329949032-1&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;crayon-num&quot; data-line=&quot;crayon-573e1573e85c4329949032-2&quot;&gt;
2&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td class=&quot;crayon-code&quot;&gt;&lt;div class=&quot;crayon-pre&quot; style=&quot;-moz-tab-size: 4; -o-tab-size: 4; -webkit-tab-size: 4; font-size: 15px !important; line-height: 18px !important; tab-size: 4;&quot;&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c4329949032-0&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c4329949032-1&quot;&gt;
&lt;span class=&quot;crayon-v&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;h&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-cn&quot;&gt;10.0.15.25&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;myusername&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt; &lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;p&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;crayon-line&quot; id=&quot;crayon-573e1573e85c4329949032-2&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;afterpostAdWrapper&quot;&gt;
&lt;div id=&quot;afterpostAd&quot;&gt;
&lt;div class=&quot;bsap bsap_1277577&quot; data-serve=&quot;CW7I4KE&quot; id=&quot;bsap_1277577&quot;&gt;
&lt;div id=&quot;div-gpt-ad-1391187887075-0&quot; style=&quot;height: 250px; width: 300px;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;
&lt;/h2&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/221586273892168586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/install-mysql-57-on-fedora-2322.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/221586273892168586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/221586273892168586'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/install-mysql-57-on-fedora-2322.html' title='Install MySQL 5.7 on Fedora 23/22, CentOS/RHEL '/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-4650306974533589881</id><published>2016-05-19T12:06:00.001-04:00</published><updated>2016-05-19T12:06:07.579-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iso"/><category scheme="http://www.blogger.com/atom/ns#" term="iso to usb"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="OS"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="usb"/><title type='text'>How to create a bootable USB stick on Ubuntu</title><content type='html'>&lt;div class=&quot;row row-hero no-padding-bottom&quot; style=&quot;-webkit-font-smoothing: antialiased; background-color: #f7f7f7; border-radius: 0px; border: 0px; box-sizing: border-box; clear: both; color: #333333; font-family: Ubuntu, Arial, &#39;libra sans&#39;, sans-serif; font-size: 16px; margin: 0px; padding: 2em 40px 40px; position: relative; vertical-align: baseline;&quot;&gt;
&lt;div class=&quot;strip-inner-wrapper&quot; style=&quot;-webkit-font-smoothing: antialiased; background: none; border: none; box-shadow: none; box-sizing: border-box; float: none; margin: 0px auto; max-width: 984px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div class=&quot;eight-col append-one&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; clear: none; display: inline-block; float: left; margin: 0px 83.8125px 20px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 648.734px;&quot;&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; line-height: 1.5; margin-bottom: 0.75em; padding: 0px; vertical-align: baseline;&quot;&gt;
To create a USB stick from which you can install Ubuntu, you must first&amp;nbsp;&lt;a href=&quot;http://www.ubuntu.com/download&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; color: #e95420; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;download Ubuntu&lt;/a&gt;and, if you want,&amp;nbsp;&lt;a href=&quot;http://www.ubuntu.com/download/how-to-verify&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; color: #e95420; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;verify the download&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; line-height: 1.5; padding: 0px; vertical-align: baseline;&quot;&gt;
Then, follow these instructions:&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;contextual-footer clearfix&quot; style=&quot;-webkit-font-smoothing: antialiased; background-color: white; border-radius: 0px; border: 0px; box-sizing: border-box; clear: both; color: #333333; font-family: Ubuntu, Arial, &#39;libra sans&#39;, sans-serif; font-size: 16px; margin: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 1424px;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;row no-border&quot; style=&quot;-webkit-font-smoothing: antialiased; -webkit-text-stroke-width: 0px; background-color: #f7f7f7; border-radius: 0px; border: 0px; box-sizing: border-box; clear: both; color: #333333; font-family: Ubuntu, Arial, &#39;libra sans&#39;, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 300; letter-spacing: normal; line-height: normal; margin: 0px; orphans: auto; padding: 20px 40px 40px; position: relative; text-align: start; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; widows: 1; word-spacing: 0px;&quot;&gt;
&lt;div class=&quot;strip-inner-wrapper&quot; style=&quot;-webkit-font-smoothing: antialiased; background: none; border: none; box-shadow: none; box-sizing: border-box; float: none; margin: 0px auto; max-width: 984px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;ol class=&quot;list-stepped nine-col append-one&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; clear: none; counter-reset: instructions 0; display: inline-block; float: left; list-style: none; margin: 0px 83.8125px 20px 0px; padding: 0px 0px 0px 70px; position: relative; vertical-align: baseline; width: 732.547px;&quot;&gt;
&lt;li class=&quot;list-stepped__item&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; counter-increment: instructions 1; display: block; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; min-height: 50px; padding: 20px 0px; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-size: 16px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Insert a USB stick with at least 2GB of free space&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;list-stepped__item&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; counter-increment: instructions 1; display: block; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; min-height: 50px; padding: 20px 0px; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-size: 16px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Open the dash and search for&amp;nbsp;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-weight: 400; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Startup Disk Creator&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;list-stepped__item&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; counter-increment: instructions 1; display: block; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; min-height: 50px; padding: 20px 0px; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; padding: 0px; vertical-align: baseline;&quot;&gt;
Select the&amp;nbsp;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-weight: 400; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Startup Disk Creator&lt;/strong&gt;&amp;nbsp;to launch the app&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;help-image&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;https://assets.ubuntu.com/v1/be194ecf-usb-1604-startup-disk-creator.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; color: #e95420; display: block; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot; title=&quot;Click to enlarge image&quot;&gt;&lt;img alt=&quot;Find the Startup Disk Creator&quot; src=&quot;https://assets.ubuntu.com/v1/be194ecf-usb-1604-startup-disk-creator.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; height: auto; margin: 0px; max-width: 100%; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;list-stepped__item&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; counter-increment: instructions 1; display: block; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; min-height: 50px; padding: 20px 0px; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; padding: 0px; vertical-align: baseline;&quot;&gt;
Click&amp;nbsp;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-weight: 400; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&#39;Other&#39;&lt;/strong&gt;&amp;nbsp;to choose the downloaded ISO file if it isn’t found automatically, select the file and click&amp;nbsp;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-weight: 400; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&#39;Open&#39;&lt;/strong&gt;&lt;/div&gt;
&lt;div class=&quot;help-image&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;https://assets.ubuntu.com/v1/a2cf98cc-usb-1604-select-iso.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; color: #e95420; display: block; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot; title=&quot;Click to enlarge image&quot;&gt;&lt;img alt=&quot;Select the ISO&quot; src=&quot;https://assets.ubuntu.com/v1/a2cf98cc-usb-1604-select-iso.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; height: auto; margin: 0px; max-width: 100%; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;list-stepped__item&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; counter-increment: instructions 1; display: block; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; min-height: 50px; padding: 20px 0px; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; padding: 0px; vertical-align: baseline;&quot;&gt;
Select the USB stick in the bottom box and click&amp;nbsp;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-weight: 400; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&#39;Make Startup Disk&#39;&lt;/strong&gt;&amp;nbsp;and then&amp;nbsp;&lt;strong style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-weight: 400; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&#39;Yes&#39;&lt;/strong&gt;&lt;/div&gt;
&lt;div class=&quot;help-image&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;https://assets.ubuntu.com/v1/f5a23872-usb-1604-areyousure.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; color: #e95420; display: block; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot; title=&quot;Click to enlarge image&quot;&gt;&lt;img alt=&quot;Confirm USB stick&quot; src=&quot;https://assets.ubuntu.com/v1/f5a23872-usb-1604-areyousure.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; height: auto; margin: 0px; max-width: 100%; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;list-stepped__item&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; counter-increment: instructions 1; display: block; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; min-height: 50px; padding: 20px 0px; vertical-align: baseline;&quot;&gt;&lt;div style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; font-size: 16px; line-height: 1.5; margin: 0px 0px 0.75em; padding: 0px; vertical-align: baseline;&quot;&gt;
That&#39;s it! When the process completes, you&#39;ll be ready to restart your computer and begin installing Ubuntu&lt;/div&gt;
&lt;div class=&quot;help-image&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;https://assets.ubuntu.com/v1/dac30d7d-usb-1604-writing.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; color: #e95420; display: block; margin: 0px; outline: 0px; padding: 0px; text-decoration: underline; vertical-align: baseline;&quot; title=&quot;Click to enlarge image&quot;&gt;&lt;img alt=&quot;Writing the ISO to disk&quot; src=&quot;https://assets.ubuntu.com/v1/dac30d7d-usb-1604-writing.png?w=550&quot; style=&quot;-webkit-font-smoothing: antialiased; border: 0px; box-sizing: border-box; height: auto; margin: 0px; max-width: 100%; padding: 0px; vertical-align: baseline;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/4650306974533589881/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/how-to-create-bootable-usb-stick-on.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/4650306974533589881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/4650306974533589881'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/how-to-create-bootable-usb-stick-on.html' title='How to create a bootable USB stick on Ubuntu'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-1316497831982788948</id><published>2016-05-19T10:37:00.001-04:00</published><updated>2016-05-19T10:37:57.504-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cinnamon"/><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="OS"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><category scheme="http://www.blogger.com/atom/ns#" term="Tecnologia"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Instalando Cinnamon 3.0 en Ubuntu 16.04</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
A la espera de LM 18, no pude aguantarme sin probar Cinnamon 3.0 el escritorio estrella de Linux Mint.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;strong style=&quot;box-sizing: border-box;&quot;&gt;En esta nueva versión, Cinnamon 3.0 anexa estas pocas nuevas características:&lt;/strong&gt;&lt;br /&gt;
– Mejoras en la gestión de las ventanas, los diferentes modos de acople y su funcionamiento en general.&lt;br /&gt;
– Mejor soporte por defecto del panel táctil, que mejora en prestaciones de multitoque.&lt;br /&gt;
– La configuración de accesibilidad y sonido ha sido reescrita como módulos propios de Cinnamon.&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br style=&quot;box-sizing: border-box;&quot; /&gt;
– Opción de renombrar los dispositivos conectados a la batería.&lt;br /&gt;
– Opción para establecer diferentes aplicaciones preferidas para los archivos de texto plano, documentos y código fuente.&lt;br /&gt;
– Los lanzadores del panel agregaron soporte para acciones de la aplicación.&lt;br /&gt;
– Efectos de animación activados por defecto en menús y cuadros de diálogo.&lt;br /&gt;
– Las opciones de favoritos y sistema se pueden desactivar en el applet del menú.&lt;br /&gt;
– El applet de marco de fotos escanea subdirectorios.&lt;br /&gt;
– Mejor soporte para GTK 3.20, Spotify 0.27, Viber.&lt;br /&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;span style=&quot;line-height: 32.4px;&quot;&gt;&lt;br /&gt;Si bien tenemos pocas novedades, el peso de este escritorio sumado a Linux Mint hace que muchos querramos probarlo, por suerte su paquetería ya esta disponible para ser instalada.&lt;/span&gt;&lt;strong style=&quot;box-sizing: border-box; line-height: 32.4px; margin-bottom: 0px;&quot;&gt;Tendremos que tener en cuenta que este es un cambio radical, es necesario por precaución realizar un respaldo de nuestra info.&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;strong style=&quot;box-sizing: border-box; margin-bottom: 0px;&quot;&gt;La instalación es relativamente sencilla:&lt;/strong&gt;&lt;/div&gt;
&lt;div class=&quot;konsole&quot; style=&quot;background-color: #333333; box-sizing: border-box; color: #f7d704; font-family: Ubuntu, sans-serif; font-size: 13px; line-height: 2; padding: 10px 25px;&quot;&gt;
# sudo add-apt-repository ppa:embrosyn/cinnamon&lt;br /&gt;
# sudo apt-get update&lt;br /&gt;
# sudo apt-get install cinnamon&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;img alt=&quot;WP_20160519_02_30_33_Pro&quot; class=&quot;aligncenter size-large wp-image-2725&quot; src=&quot;http://soyadmin.com/wp-content/uploads/2016/05/WP_20160519_02_30_33_Pro-1024x575.jpg&quot; height=&quot;380&quot; sizes=&quot;(max-width: 676px) 100vw, 676px&quot; srcset=&quot;http://soyadmin.com/wp-content/uploads/2016/05/WP_20160519_02_30_33_Pro-1024x575.jpg 1024w, http://soyadmin.com/wp-content/uploads/2016/05/WP_20160519_02_30_33_Pro-500x281.jpg 500w, http://soyadmin.com/wp-content/uploads/2016/05/WP_20160519_02_30_33_Pro-600x337.jpg 600w, http://soyadmin.com/wp-content/uploads/2016/05/WP_20160519_02_30_33_Pro-945x531.jpg 945w&quot; style=&quot;border: 1px solid rgb(238, 238, 238); box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px auto; max-width: 100%; padding: 5px;&quot; width=&quot;676&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;strong style=&quot;box-sizing: border-box; margin-bottom: 0px;&quot;&gt;Si no nos gusta, con otro par de comandos podremos desinstalarlo:&lt;/strong&gt;&lt;/div&gt;
&lt;div class=&quot;konsole&quot; style=&quot;background-color: #333333; box-sizing: border-box; color: #f7d704; font-family: Ubuntu, sans-serif; font-size: 13px; line-height: 2; padding: 10px 25px;&quot;&gt;
# sudo apt-get install ppa-purge&lt;br /&gt;
# sudo ppa-purge ppa:embrosyn/cinnamon&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;img alt=&quot;Captura de pantalla de 2016-05-19 02-46-32&quot; class=&quot;aligncenter size-large wp-image-2721&quot; src=&quot;http://soyadmin.com/wp-content/uploads/2016/05/Captura-de-pantalla-de-2016-05-19-02-46-32-1024x576.png&quot; height=&quot;380&quot; sizes=&quot;(max-width: 676px) 100vw, 676px&quot; srcset=&quot;http://soyadmin.com/wp-content/uploads/2016/05/Captura-de-pantalla-de-2016-05-19-02-46-32-1024x576.png 1024w, http://soyadmin.com/wp-content/uploads/2016/05/Captura-de-pantalla-de-2016-05-19-02-46-32-500x281.png 500w, http://soyadmin.com/wp-content/uploads/2016/05/Captura-de-pantalla-de-2016-05-19-02-46-32-600x338.png 600w, http://soyadmin.com/wp-content/uploads/2016/05/Captura-de-pantalla-de-2016-05-19-02-46-32-945x532.png 945w&quot; style=&quot;border: 1px solid rgb(238, 238, 238); box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px auto; max-width: 100%; padding: 5px;&quot; width=&quot;676&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;strong style=&quot;box-sizing: border-box; margin-bottom: 0px;&quot;&gt;Luego de la instalación, existe un problema con el menú de apagado, se soluciona así:&lt;/strong&gt;&lt;/div&gt;
&lt;div class=&quot;konsole&quot; style=&quot;background-color: #333333; box-sizing: border-box; color: #f7d704; font-family: Ubuntu, sans-serif; font-size: 13px; line-height: 2; padding: 10px 25px;&quot;&gt;
# gsettings set org.cinnamon.desktop.session settings-daemon-uses-logind true&lt;br /&gt;
# gsettings set org.cinnamon.desktop.session session-manager-uses-logind true&lt;br /&gt;
# gsettings set org.cinnamon.desktop.session screensaver-uses-logind false&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; box-sizing: border-box; color: #444444; font-family: Ubuntu, sans-serif; font-size: 18px; line-height: 32.4px; padding: 0px; word-wrap: break-word;&quot;&gt;
La verdad Cinnamon me encanta lo utilizo desde siempre y si bien en esta nueva versión no trae muchas características nuevas, el refinamiento y pulimiento de este entorno de escritorio lo hace a mi gusto indispensable para lograr mi distro preferida.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/1316497831982788948/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/instalando-cinnamon-30-en-ubuntu-1604.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1316497831982788948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/1316497831982788948'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/instalando-cinnamon-30-en-ubuntu-1604.html' title='Instalando Cinnamon 3.0 en Ubuntu 16.04'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-2828791983560105828</id><published>2016-05-18T19:09:00.001-04:00</published><updated>2016-05-18T19:09:13.009-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="KDE"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="OS"/><category scheme="http://www.blogger.com/atom/ns#" term="plasma 5"/><category scheme="http://www.blogger.com/atom/ns#" term="Tecnologia"/><title type='text'>Installing KDE Plasma 5</title><content type='html'>&lt;div class=&quot;featured-media&quot; style=&quot;box-sizing: border-box; color: #444444; font-family: Roboto, sans-serif; font-size: 14px;&quot;&gt;
&lt;img alt=&quot;install-plasma&quot; class=&quot;attachment-post-image size-post-image wp-post-image&quot; height=&quot;400&quot; sizes=&quot;(max-width: 945px) 100vw, 945px&quot; src=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/install-plasma-945x400.jpg&quot; srcset=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/install-plasma-945x400.jpg 945w, https://fedoramagazine.org/wp-content/uploads/2016/02/install-plasma-300x127.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2016/02/install-plasma-768x325.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2016/02/install-plasma-1024x433.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2016/02/install-plasma-600x254.jpg 600w&quot; style=&quot;border: 0px; box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px; max-width: 100%; padding: 0px;&quot; width=&quot;945&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;post-content&quot; style=&quot;box-sizing: border-box; color: #444444; font-family: Roboto, sans-serif; font-size: 14px; padding: 82px;&quot;&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
KDE Plasma 5 is one of the&amp;nbsp;&lt;a href=&quot;http://spins.fedoraproject.org/kde/&quot; style=&quot;box-sizing: border-box; color: #0066cc; margin-bottom: 0px; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot; target=&quot;_blank&quot;&gt;main desktop spins&lt;/a&gt;&amp;nbsp;in Fedora. It’s under heavy development and a lot of things are changing. There are plenty of new features, bug fixing, and optimizing code. It’s an expansive desktop environment with programs for all basic tasks. There are also applications that can be used for sciences, design work, finances, and more.&lt;/div&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
&lt;span id=&quot;more-12093&quot; style=&quot;box-sizing: border-box; margin-bottom: 0px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h2 style=&quot;border: 0px; box-sizing: border-box; color: #333333; font-family: &#39;Roboto Slab&#39;, sans-serif; font-size: 1.75em; line-height: 1; margin: 50px 0px 30px; padding: 0px;&quot;&gt;
Installing KDE Plasma 5&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
To install KDE Plasma 5 in an existing Fedora installation, there are two commands you will use in a command line (i.e. terminal) to do this. They will install the latest version of KDE and extra packages for additional features and functionality. As mentioned earlier, the Plasma 5 desktop is an expansive desktop packed with many features, and the initial installation size will run around 300MB (worth noting for anyone with poor bandwidth or connectivity). After installation, it will expand to about 1GB in total size.&lt;/div&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
Said that, you can run the following commands for the installation of KDE Plasma 5.&lt;/div&gt;
&lt;pre style=&quot;background: rgb(54, 63, 72); border-radius: 6px; box-sizing: border-box; color: white; font-family: Menlo, Monaco, monospace; font-size: 0.8em; line-height: 15.68px; margin-bottom: 1.1em; padding: 13.1094px 16.3906px; white-space: pre-wrap; word-wrap: break-word;&quot;&gt;$ sudo dnf group install kde-desktop-environment&lt;/pre&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
You will first be prompted to enter your password (to gain root user privileged temporarily). Afterwards, it will list all of the packages to install, the approximate download size (usually around 300MB), the final size once installed (usually near 1GB). If you are ready to proceed, you can enter&amp;nbsp;&lt;code style=&quot;background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; font-size: 0.85em; line-height: 1; margin: 0px; padding: 5px;&quot;&gt;y&lt;/code&gt;&amp;nbsp;(or the letter that means “yes” in your language) and press enter.&lt;/div&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
From here, downloading and installing the packages for KDE Plasma 5 will take a while a while. You might want to resume other daily tasks while you’re waiting, depending on your connection speed. If you’re using GNOME or Cinnamon, there should be a notification from the terminal once the installation is finished.&lt;/div&gt;
&lt;h2 style=&quot;border: 0px; box-sizing: border-box; color: #333333; font-family: &#39;Roboto Slab&#39;, sans-serif; font-size: 1.75em; line-height: 1; margin: 50px 0px 30px; padding: 0px;&quot;&gt;
Getting started with KDE Plasma 5&lt;/h2&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
Once it is installed, you can log into KDE Plasma 5 as your desktop environment after restarting your Fedora computer. From the login menu, you can look for a gear-like icon or other symbol (depending on what your initial desktop was) and choose to log in with KDE Plasma 5.&lt;/div&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
When you first log in, you’ll be greeted by an empty screen and a task bar with a menu on the bottom. To begin making modifications to your new desktop, you will want to open the&amp;nbsp;&lt;strong style=&quot;box-sizing: border-box; margin-bottom: 0px;&quot;&gt;System Settings&lt;/strong&gt;&amp;nbsp;application from the menu.&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_11585&quot; style=&quot;box-sizing: border-box; line-height: 25.2px; margin-bottom: 1.1em; margin-left: auto; margin-right: auto; word-wrap: break-word;&quot;&gt;
&lt;a href=&quot;https://fedoramagazine.org/wp-content/uploads/2016/01/Screenshot-KDE-System-Settings.jpg&quot; rel=&quot;attachment wp-att-11585&quot; style=&quot;box-sizing: border-box; color: #0066cc; display: block; margin: 0px auto; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot;&gt;&lt;img alt=&quot;KDE Plasma 5 System Settings&quot; class=&quot;wp-image-11585 size-full&quot; height=&quot;450&quot; sizes=&quot;(max-width: 800px) 100vw, 800px&quot; src=&quot;https://fedoramagazine.org/wp-content/uploads/2016/01/Screenshot-KDE-System-Settings.jpg&quot; srcset=&quot;https://fedoramagazine.org/wp-content/uploads/2016/01/Screenshot-KDE-System-Settings.jpg 800w, https://fedoramagazine.org/wp-content/uploads/2016/01/Screenshot-KDE-System-Settings-300x169.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2016/01/Screenshot-KDE-System-Settings-600x338.jpg 600w&quot; style=&quot;border: 1px solid rgb(238, 238, 238); box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px auto; max-width: 100%; padding: 5px;&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; box-sizing: border-box; color: #999999; font-family: inherit; font-size: 0.8em; font-weight: 700; line-height: 20.16px; padding: 0.5em 0px 0px; text-align: center; word-wrap: break-word;&quot;&gt;
KDE Plasma 5 System Settings&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
If you are familiar with previous versions of KDE Plasma, you will notice some things have changed since previous releases. There are new methods of applying themes and wallpaper changes. You can pick from what is installed by default or use a site like&amp;nbsp;&lt;a href=&quot;http://kde-look.org/?xsection=home&quot; style=&quot;box-sizing: border-box; color: #0066cc; margin-bottom: 0px; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot; target=&quot;_blank&quot;&gt;KDE-Look.org&lt;/a&gt;&amp;nbsp;to find additional modifications to your environment.&lt;/div&gt;
&lt;h4 style=&quot;border: 0px; box-sizing: border-box; color: #333333; font-family: &#39;Roboto Slab&#39;, sans-serif; font-size: 1.25em; font-weight: 400; line-height: 1; margin: 50px 0px 30px; padding: 0px;&quot;&gt;
Color schemes&lt;/h4&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
An interesting feature recently added is that Plasma themes are able to follow color schemes. You can pick a scheme for Qt and apply it your Plasma desktop to have that color scheme reflected in your various windows, applications, and menus.&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_11841&quot; style=&quot;box-sizing: border-box; line-height: 25.2px; margin-bottom: 1.1em; margin-left: auto; margin-right: auto; word-wrap: break-word;&quot;&gt;
&lt;a href=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2.jpg&quot; rel=&quot;attachment wp-att-11841&quot; style=&quot;box-sizing: border-box; color: #0066cc; display: block; margin: 0px auto; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot;&gt;&lt;img alt=&quot;Changing color schemes for Qt in KDE Plasma 5&quot; class=&quot;wp-image-11841 size-large&quot; height=&quot;380&quot; sizes=&quot;(max-width: 676px) 100vw, 676px&quot; src=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2-1024x576.jpg&quot; srcset=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2-1024x576.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2-300x169.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2-768x432.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2-945x531.jpg 945w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2-600x337.jpg 600w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot2.jpg 1366w&quot; style=&quot;border: 1px solid rgb(238, 238, 238); box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px auto; max-width: 100%; padding: 5px;&quot; width=&quot;676&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; box-sizing: border-box; color: #999999; font-family: inherit; font-size: 0.8em; font-weight: 700; line-height: 20.16px; padding: 0.5em 0px 0px; text-align: center; word-wrap: break-word;&quot;&gt;
One of the many ways Qt can look in KDE Plasma 5.&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;border: 0px; box-sizing: border-box; color: #333333; font-family: &#39;Roboto Slab&#39;, sans-serif; font-size: 1.25em; font-weight: 400; line-height: 1; margin: 50px 0px 30px; padding: 0px;&quot;&gt;
Adjusting the user icon&lt;/h4&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
As mentioned earlier, the KDE Plasma 5 desktop is under active development, and there are some minor features that are not yet implemented, such as changing your user icon for your account. The developers are aware and are planning on adding ways to do these things in the future. However, in the meanwhile, you can manually add a profile icon by manually placing an image with the name&amp;nbsp;&lt;code style=&quot;background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; font-size: 0.85em; line-height: 1; margin: 0px; padding: 5px;&quot;&gt;username.face.icon&lt;/code&gt;&amp;nbsp;in the&amp;nbsp;&lt;code style=&quot;background: rgb(238, 238, 238); border-radius: 3px; border: 0px; box-sizing: border-box; font-family: Menlo, Monaco, monospace; font-size: 0.85em; line-height: 1; margin: 0px; padding: 5px;&quot;&gt;/usr/share/sddm/faces/&lt;/code&gt;&amp;nbsp;directory (remember, if you’re using a custom theme, icons may not be supported).&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_11842&quot; style=&quot;box-sizing: border-box; line-height: 25.2px; margin-bottom: 1.1em; margin-left: auto; margin-right: auto; word-wrap: break-word;&quot;&gt;
&lt;a href=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/SDDM_1.jpg&quot; rel=&quot;attachment wp-att-11842&quot; style=&quot;box-sizing: border-box; color: #0066cc; display: block; margin: 0px auto; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot;&gt;&lt;img alt=&quot;KDE Plasma 5 SDDM Maui theme&quot; class=&quot;wp-image-11842 size-large&quot; height=&quot;380&quot; sizes=&quot;(max-width: 676px) 100vw, 676px&quot; src=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/SDDM_1-1024x576.jpg&quot; srcset=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/SDDM_1-1024x576.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2016/02/SDDM_1-300x169.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2016/02/SDDM_1-768x432.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2016/02/SDDM_1-945x532.jpg 945w, https://fedoramagazine.org/wp-content/uploads/2016/02/SDDM_1-600x338.jpg 600w&quot; style=&quot;border: 1px solid rgb(238, 238, 238); box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px auto; max-width: 100%; padding: 5px;&quot; width=&quot;676&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; box-sizing: border-box; color: #999999; font-family: inherit; font-size: 0.8em; font-weight: 700; line-height: 20.16px; padding: 0.5em 0px 0px; text-align: center; word-wrap: break-word;&quot;&gt;
Get a taste of the coast with the SDDM Maui theme.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_11844&quot; style=&quot;box-sizing: border-box; line-height: 25.2px; margin-bottom: 1.1em; margin-left: auto; margin-right: auto; word-wrap: break-word;&quot;&gt;
&lt;a href=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1.jpg&quot; rel=&quot;attachment wp-att-11844&quot; style=&quot;box-sizing: border-box; color: #0066cc; display: block; margin: 0px auto; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot;&gt;&lt;img alt=&quot;KDE Plasma 5: Lighter-colored desktop&quot; class=&quot;wp-image-11844 size-large&quot; height=&quot;380&quot; sizes=&quot;(max-width: 676px) 100vw, 676px&quot; src=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1-1024x576.jpg&quot; srcset=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1-1024x576.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1-300x169.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1-768x432.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1-945x531.jpg 945w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1-600x337.jpg 600w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot1.jpg 1366w&quot; style=&quot;border: 1px solid rgb(238, 238, 238); box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px auto; max-width: 100%; padding: 5px;&quot; width=&quot;676&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; box-sizing: border-box; color: #999999; font-family: inherit; font-size: 0.8em; font-weight: 700; line-height: 20.16px; padding: 0.5em 0px 0px; text-align: center; word-wrap: break-word;&quot;&gt;
This is simple, lighter-colored Plasma 5 desktop.&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;border: 0px; box-sizing: border-box; color: #333333; font-family: &#39;Roboto Slab&#39;, sans-serif; font-size: 1.75em; line-height: 1; margin: 50px 0px 30px; padding: 0px;&quot;&gt;
Performance with Plasma 5&lt;/h2&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
For those worried about performance and computer resources, Plasma 5 is a good option. It isn’t as heavyweight as previous versions of KDE Plasma, and you can also reduce the number of effects running in your desktop as well if you need to (I was able to run it well with 1GB of RAM in an Atom notebook).&lt;/div&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
KDE looks and works nicely with both GTK and Qt programs. This image is just an example of that.&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_11843&quot; style=&quot;box-sizing: border-box; line-height: 25.2px; margin-bottom: 1.1em; margin-left: auto; margin-right: auto; word-wrap: break-word;&quot;&gt;
&lt;a href=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3.jpg&quot; rel=&quot;attachment wp-att-11843&quot; style=&quot;box-sizing: border-box; color: #0066cc; display: block; margin: 0px auto; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot;&gt;&lt;img alt=&quot;KDE Plasma 5: Firefox and Kontact, the KDE email and calendar client&quot; class=&quot;wp-image-11843 size-large&quot; height=&quot;380&quot; sizes=&quot;(max-width: 676px) 100vw, 676px&quot; src=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3-1024x576.jpg&quot; srcset=&quot;https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3-1024x576.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3-300x169.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3-768x432.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3-945x531.jpg 945w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3-600x337.jpg 600w, https://fedoramagazine.org/wp-content/uploads/2016/02/snapshot3.jpg 1366w&quot; style=&quot;border: 1px solid rgb(238, 238, 238); box-sizing: border-box; display: block; font-family: inherit; height: auto; line-height: 1; margin: 0px auto; max-width: 100%; padding: 5px;&quot; width=&quot;676&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; box-sizing: border-box; color: #999999; font-family: inherit; font-size: 0.8em; font-weight: 700; line-height: 20.16px; padding: 0.5em 0px 0px; text-align: center; word-wrap: break-word;&quot;&gt;
Firefox and Kontact, the KDE email and calendar client, side by side.&lt;/div&gt;
&lt;/div&gt;
&lt;h2 style=&quot;border: 0px; box-sizing: border-box; color: #333333; font-family: &#39;Roboto Slab&#39;, sans-serif; font-size: 1.75em; line-height: 1; margin: 50px 0px 30px; padding: 0px;&quot;&gt;
Learn more about KDE Plasma 5&lt;/h2&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; line-height: 25.2px; margin-bottom: 1.1em; padding: 0px; word-wrap: break-word;&quot;&gt;
You may want to see what’s new in Plasma 5.You can visit&amp;nbsp;&lt;a href=&quot;https://spins.fedoraproject.org/kde/&quot; style=&quot;box-sizing: border-box; color: #0066cc; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot; target=&quot;_blank&quot;&gt;spins.fedoraproject.org&lt;/a&gt;&amp;nbsp;to download the KDE spin of Fedora and visit the&amp;nbsp;&lt;a href=&quot;https://fedoraproject.org/wiki/KDE&quot; style=&quot;box-sizing: border-box; color: #0066cc; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot; target=&quot;_blank&quot;&gt;wiki&lt;/a&gt;&amp;nbsp;to read more about using KDE. Additionally, if you have used KDE in the past, you can get a better idea of what is specifically new in this version from a&amp;nbsp;&lt;a href=&quot;https://fedoramagazine.org/whats-new-fedora-23-kde-plasma-desktop-spin/&quot; style=&quot;box-sizing: border-box; color: #0066cc; margin-bottom: 0px; outline: none; text-decoration: none; transition: all 0.1s ease-in-out;&quot; target=&quot;_blank&quot;&gt;previous article on the Fedora Magazine&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/2828791983560105828/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/installing-kde-plasma-5.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/2828791983560105828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/2828791983560105828'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/installing-kde-plasma-5.html' title='Installing KDE Plasma 5'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-77538226234763776</id><published>2016-05-18T16:19:00.001-04:00</published><updated>2016-05-18T16:19:44.847-04:00</updated><title type='text'>Fedora LiveUSB Creator</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Las distribuciones de Linux basan su funcionamiento en software libre y código abierto, lo que permite a cualquiera con los conocimientos necesarios adaptarlos a sus necesidades. Sin embargo, convertir un sistema en una distribución&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;para llevar&lt;/em&gt;no es una tarea sencilla. El sistema debe configurarse de forma automática como las distribuciones&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;live&lt;/em&gt;, pero al mismo tiempo debe aprovechar la ventaja que suponen los&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrives&lt;/em&gt;&amp;nbsp;respecto a los discos ópticos: posibilidad de guardar los cambios que hagamos al sistema.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Hoy veremos algunas distribuciones que han trabajado en este aspecto, ofreciéndonos&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;un entorno&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;live&lt;/em&gt;&amp;nbsp;que permite guardar los cambios en el&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;&lt;/strong&gt;, y que además son muy sencillas de instalar.&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;El&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;&amp;nbsp;puede seguir siendo utilizado para otros propósitos&lt;/strong&gt;, ya que el contenido de estas distribuciones convive con los archivos existentes&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
&lt;span id=&quot;more-249924&quot; style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; clear: both; color: #111111; font-family: AdelleSansBasic-Regular, Helvetica, Arial, sans-serif; font-size: 27px; font-weight: 400; line-height: 32.4px; margin: 40px 0px 10px; padding: 0px;&quot;&gt;
Fedora&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
&lt;img alt=&quot;Instalación a un pendrive de Fedora&quot; class=&quot;alignright size-full wp-image-34418&quot; height=&quot;337&quot; src=&quot;http://i0.wp.com/hipertextual.com/archivo/wp-content/uploads/2009/09/fedora_install.png?resize=350%2C337&quot; style=&quot;border: 0px; float: right; height: auto; margin: 20px 0px 10px 20px; padding: 0px; width: 350px;&quot; title=&quot;Instalación a un pendrive de Fedora&quot; width=&quot;350&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Esta distribución de propósito general con el respaldo de Red Hat pone a nuestra disposición una herramienta llamada&lt;a href=&quot;https://fedorahosted.org/liveusb-creator/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Fedora LiveUSB Creator&lt;/a&gt;, con versión tanto para Windows como para Linux.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
El funcionamiento es muy sencillo, todo lo que tenemos que hacer es seleccionar un pendrive, la versión que la distribución que queramos descargar de Internet y el espacio de almacenamiento persistente que queramos reservar en el&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;. También podemos seleccionar una ISO descargada previamente en lugar de descargarla en el momento.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Lo que hace la aplicación es preparar el&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;&amp;nbsp;para que sea arrancable y crear unos archivos que conviven con el resto del contenido del mismo. Entre esos archivos está una imagen de disco donde guarda todos los cambios que hagamos.&lt;/div&gt;
&lt;ul style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26px; list-style: square; margin: 0px 0px 15px 35px; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Variantes: Escritorio KDE o Gnome, de 32 bits o 64 bits.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Espacio necesario: 700MB + Persistencia.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Más información:&amp;nbsp;&lt;a href=&quot;http://fedoraproject.org/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Fedora&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://fedorahosted.org/liveusb-creator/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Fedora LiveUSB Creator&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; clear: both; color: #111111; font-family: AdelleSansBasic-Regular, Helvetica, Arial, sans-serif; font-size: 27px; font-weight: 400; line-height: 32.4px; margin: 40px 0px 10px; padding: 0px;&quot;&gt;
Ubuntu&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
&lt;img alt=&quot;Instalación de Ubuntu en un pendrive&quot; class=&quot;alignright size-full wp-image-34419&quot; height=&quot;452&quot; src=&quot;http://i0.wp.com/hipertextual.com/archivo/wp-content/uploads/2009/09/ubuntu_install.png?resize=350%2C452&quot; style=&quot;border: 0px; float: right; height: auto; margin: 20px 0px 10px 20px; padding: 0px; width: 350px;&quot; title=&quot;Instalación de Ubuntu en un pendrive&quot; width=&quot;350&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
La distribución más popular también tiene un método de creación de discos USB que es muy parecido al incluido en Fedora. En esta ocasión, deberemos descargarnos manualmente la imagen ISO a partir de la que queramos crear el pendrive. Si no estamos utilizando ya Ubuntu, además, deberemos grabarla en un CD y arrancar con ella.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Una vez dentro de Ubuntu vamos a&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Sistema&lt;/em&gt;&amp;nbsp;»&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Administración&lt;/em&gt;&amp;nbsp;»&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Creación de discos USB de inicio&lt;/em&gt;. Primero seleccionamos la unidad de disco o la imagen ISO donde está el CD de Ubuntu. Luego seleccionamos el pendrive. Por último, seleccionamos el tamaño del almacenamiento persistente donde se irán guardando los cambios que hagamos, si así lo deseamos.&lt;/div&gt;
&lt;ul style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26px; list-style: square; margin: 0px 0px 15px 35px; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Variantes: Todas las variantes oficiales de Ubuntu, de 32 o 64 bits.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Espacio necesario: 700MB + Persistencia&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Más información:&amp;nbsp;&lt;a href=&quot;http://www.ubuntu.com/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Ubuntu&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;https://code.launchpad.net/usb-creator&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;USB Creator&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; clear: both; color: #111111; font-family: AdelleSansBasic-Regular, Helvetica, Arial, sans-serif; font-size: 27px; font-weight: 400; line-height: 32.4px; margin: 40px 0px 10px; padding: 0px;&quot;&gt;
Sidux&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Esta distribución basada en la rama inestable de&amp;nbsp;&lt;a href=&quot;http://www.debian.org/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Debian&lt;/a&gt;&amp;nbsp;tiene también su propio método de creación de&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrives&lt;/em&gt;&amp;nbsp;arrancables. Primero hay que descargarse la distribución, grabarla en un CD, arrancar con ella y una vez dentro seleccionar la opción&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Sistema&lt;/em&gt;&amp;nbsp;»&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;install-sidux-to-usb&lt;/em&gt;.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Como podemos ver en su&amp;nbsp;&lt;a href=&quot;http://sidux.com/module-mirrors.html&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;página de descargas&lt;/a&gt;&amp;nbsp;tiene tres variantes: una con KDE 4.2 muy completa, otra también con KDE 4.2 pero con menos programas algo más ligera y otra con XFCE.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Desgraciadamente, esta distribución requiere un&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;&amp;nbsp;de mayor capacidad que las otras opciones, ya que reserva un archivo de persistencia bastante grande. En el manual recomiendan un&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;&amp;nbsp;de al menos 2GB de capacidad para las versiones más ligeras.&lt;/div&gt;
&lt;ul style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26px; list-style: square; margin: 0px 0px 15px 35px; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Variantes: Escritorio KDE completo, KDE recortado o XFCE.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Espacio necesario: Al menos 2GB, dependiendo de la versión.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Más información:&amp;nbsp;&lt;a href=&quot;http://sidux.com/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Sidux&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://manual.sidux.com/es/hd-install-opts-es.htm#usb-hd&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Instrucciones de instalación USB&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; clear: both; color: #111111; font-family: AdelleSansBasic-Regular, Helvetica, Arial, sans-serif; font-size: 27px; font-weight: 400; line-height: 32.4px; margin: 40px 0px 10px; padding: 0px;&quot;&gt;
Slax&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Este derivado de&amp;nbsp;&lt;a href=&quot;http://www.slackware.org/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Slackware&lt;/a&gt;&amp;nbsp;tiene la peculiaridad de que, desde&amp;nbsp;&lt;a href=&quot;http://www.slax.org/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;su página web&lt;/a&gt;, podemos construir la distribución a nuestro gusto con los programas que queramos. Solo tenemos que acceder a la&amp;nbsp;&lt;a href=&quot;http://www.slax.org/images/shoes.png&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;sección de módulos&lt;/a&gt;&amp;nbsp;e ir navegando por la lista de paquete disponibles seleccionando la opción&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;añadir a la construcción&lt;/em&gt;.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
&lt;img alt=&quot;Web de SLAX&quot; class=&quot;aligncenter size-full wp-image-34421&quot; height=&quot;196&quot; src=&quot;http://i2.wp.com/hipertextual.com/archivo/wp-content/uploads/2009/09/slax_web.png?resize=620%2C199&quot; style=&quot;border: 0px; display: block; height: auto; margin: 0px auto; padding: 0px; width: 610px;&quot; title=&quot;Web de SLAX&quot; width=&quot;610&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Una vez hayamos terminado de seleccionar los paquetes que queramos podemos terminar de construir la distribución desde la&amp;nbsp;&lt;a href=&quot;http://www.slax.org/build.php&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;sección de construcción&lt;/a&gt;. Ahí podemos descargar una imagen ISO para grabar en CD o un paquete comprimido en TAR que podemos instalar directamente en un&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Si no queremos rompernos demasiado la cabeza también podemos descargarnos la&amp;nbsp;&lt;a href=&quot;http://www.slax.org/get_slax.php&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;compilación por defecto&lt;/a&gt;&amp;nbsp;que lleva KDE 3.5.10 y unos programas bastante ligeros que dejan la distribución&amp;nbsp;&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;en unos nimios 200MB&lt;/strong&gt;.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Para instalar Slax en un&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrive&lt;/em&gt;, basta con descomprimir el contenido del paquete TAR allí y ejecutar&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;boot/&lt;span class=&quot;skimlinks-unlinked&quot; style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;bootinst.sh&lt;/span&gt;&lt;/em&gt;&amp;nbsp;si estamos en un sistema Linux o&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;boot/&lt;span class=&quot;skimlinks-unlinked&quot; style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;bootinst.bat&lt;/span&gt;&lt;/em&gt;&amp;nbsp;si estamos en Windows.&lt;/div&gt;
&lt;ul style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26px; list-style: square; margin: 0px 0px 15px 35px; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Variantes: KDE 3.5.10 personalizable.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Espacio necesario: A partir de 200MB + Persistencia.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;Más información:&amp;nbsp;&lt;a href=&quot;http://www.slax.org/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Slax&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;background-color: white; border: 0px; clear: both; color: #111111; font-family: AdelleSansBasic-Regular, Helvetica, Arial, sans-serif; font-size: 27px; font-weight: 400; line-height: 32.4px; margin: 40px 0px 10px; padding: 0px;&quot;&gt;
Otras opciones y herramientas&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Existen otras herramientas no provistas por los autores de las distribuciones que también permiten la instalación en&amp;nbsp;&lt;em style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;pendrives&lt;/em&gt;.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
Una bastante conocida que solo está disponible para Windows es&amp;nbsp;&lt;a href=&quot;http://www.linuxliveusb.com/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Linux Live USB Creator&lt;/a&gt;, evolución del&amp;nbsp;&lt;a href=&quot;http://bitelia.com/2009/07/bootea-linux-desde-un-usb-con-usbuntu-live-creator&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;usBuntu Live Creator&lt;/a&gt;&amp;nbsp;que ya hemos visto por&amp;nbsp;&lt;a href=&quot;http://www.bitelia.com/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Bitelia&lt;/a&gt;anteriormente. Tiene un funcionamiento muy similar al instalador de Fedora o el de Ubuntu, pero permite además instalar otras distribuciones como&amp;nbsp;&lt;a href=&quot;http://www.linuxmint.com/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Linux Mint&lt;/a&gt;&amp;nbsp;o&lt;a href=&quot;http://www.mandriva.com/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;Mandriva&lt;/a&gt;. Dispone de una opción bastante interesante para configurar un&lt;a href=&quot;http://bitelia.com/2009/07/virtualbox-3-listo-para-descargar&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;VirtualBox&lt;/a&gt;&amp;nbsp;y así arrancar las distribuciones directamente desde dentro de Windows.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 17px; line-height: 26.35px; margin-bottom: 20px; padding: 0px;&quot;&gt;
La página&amp;nbsp;&lt;a href=&quot;http://www.pendrivelinux.com/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;PendriveLinux&lt;/a&gt;&amp;nbsp;ofrece métodos de instalación alternativos bastante interesantes para Ubuntu y otras distribuciones. También hay artículos con instrucciones avanzadas para&amp;nbsp;&lt;a href=&quot;http://www.pendrivelinux.com/category/usb-boot-cds/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;Abre en una nueva ventana&quot;&gt;arrancar los pendrives utilizando CDs de arranque&lt;/a&gt;, necesarios en ordenadores donde el arranque por USB esté desactivado.&lt;/div&gt;
&lt;div class=&quot;tags&quot; style=&quot;background-color: white; border: 0px; color: #111111; font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 26px; margin: 0px 0px 30px; padding: 0px; text-transform: uppercase;&quot;&gt;
&lt;strong style=&quot;border: 0px; margin: 0px; padding: 0px;&quot;&gt;MÁS DE:&lt;/strong&gt;&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/debian/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;DEBIAN&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/fedora/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;FEDORA&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/kubuntu/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;KUBUNTU&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/linux-mint/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;LINUX MINT&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/mandriva/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;MANDRIVA&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/memoria-usb-flash/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;MEMORIA USB FLASH&lt;/a&gt;,&lt;a href=&quot;http://hipertextual.com/archivo/tag/pendrive/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;PENDRIVE&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/stick-usb/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;STICK USB&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://hipertextual.com/archivo/tag/xubuntu/&quot; style=&quot;border: 0px; color: #0088cc; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;XUBUNTU&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/77538226234763776/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/fedora-liveusb-creator.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/77538226234763776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/77538226234763776'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/fedora-liveusb-creator.html' title='Fedora LiveUSB Creator'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-7025090703316718514</id><published>2016-05-17T10:39:00.002-04:00</published><updated>2016-05-17T10:39:41.316-04:00</updated><title type='text'>java.lang.NullPointerException</title><content type='html'>&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;strong&gt;OBJETOS NULL Y JAVA.LANG.NULLPOINTEREXCEPTION&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
La palabra reservada “null” indica que una variable que referencia a un objeto se encuentra “sin objeto”, es decir, la variable ha sido declarada pero no apunta a ningún objeto. Esto puede deberse a que no se haya inicializado asignándole un objeto mediante la instrucción&amp;nbsp;&lt;em&gt;new&lt;/em&gt;, o a que hayamos borrado la referencia que contenía la variable.&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px; text-align: center;&quot;&gt;
&lt;img alt=&quot;&quot; src=&quot;http://images4.hiboox.com/images/4111/diapo0289e8e5b4f9fb2375c0e99b518a8807.png?24&quot; style=&quot;height: 120px; width: 65px;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px; text-align: center;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Si a un objeto no inicializado (referencia null) se le trata de aplicar un método o se intenta hacerlo intervenir en un proceso que requiere un objeto inicializado, se obtiene una excepción&amp;nbsp;tipo “NullPointerException”. Vamos a forzar que aparezca una excepción de este tipo. Para ello, crea dos clases y escribe el código que indicamos a continuación en cada una de ellas.&lt;/div&gt;
&lt;center style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px;&quot;&gt;
&lt;table bgcolor=&quot;#bdbdbd&quot; border=&quot;1&quot; cellpadding=&quot;14&quot; cellspacing=&quot;0&quot; style=&quot;height: 136px; width: 618px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td valign=&quot;top&quot;&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: blue;&quot;&gt;// Ejemplo aprenderaprogramar.com&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
import java.util.ArrayList;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
public class ListaNumeros {&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ArrayList&amp;lt;Integer&amp;gt; listaDeNumeros;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ListaNumeros () { }&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;// El constructor está vacío&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Integer sumatorio () {&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Integer suma = 0;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Integer numero : listaDeNumeros) { suma = suma + numero; }&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return suma;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;//Cierre del método sumatorio&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void añadirItem (Integer item) {&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; listaDeNumeros.add (item);&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;//Cierre del método&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
}&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;//Cierre de la clase&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;center style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px;&quot;&gt;
&lt;table bgcolor=&quot;#bdbdbd&quot; border=&quot;1&quot; cellpadding=&quot;14&quot; cellspacing=&quot;0&quot; style=&quot;height: 136px; width: 618px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td valign=&quot;top&quot;&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: blue;&quot;&gt;// Ejemplo aprenderaprogramar.com&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
public class TestNull {&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main (String [] Args) {&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListaNumeros lista1 = new ListaNumeros();&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println (&quot;El sumatorio actual es: &quot; + lista1.sumatorio() );&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;//Cierre del main&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; text-align: justify;&quot;&gt;
}&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;//Cierre de la clase&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Ejecuta ahora la clase que contiene el método main. El resultado será algo así:&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px; text-align: center;&quot;&gt;
&lt;img alt=&quot;null java&quot; src=&quot;http://images4.hiboox.com/images/4412/0006824a2a6e8daa38411193a14bef46.jpg&quot; style=&quot;height: 202px; width: 650px;&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
El programa se empieza a ejecutar y en un momento determinado, se detiene (error en tiempo de ejecución). En la ventana del editor nos aparece java.lang.NullPointerException y en la ventana de consola nos aparecen referencias a las líneas de las clases en las que ha saltado el error. ¿A qué se debe este error? Java empieza a ejecutar el programa y reserva memoria para un objeto ListaDeNumeros. Como el constructor de esa clase está vacío, la variable tiene como referencia null. Al tratar de hacer un recorrido con un for extendido salta el error que indica que no se puede aplicar ese proceso sobre una variable que referencia a null. Modifica el constructor introduciendo este código: public ListaNumeros () { listaDeNumeros = new ArrayList&amp;lt;Integer&amp;gt; (); }&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Comprueba que ahora el programa se ejecuta sin que salte ningún error.&amp;nbsp;&lt;strong&gt;Los errores de tipo NullPointerException ocurren con frecuencia&lt;/strong&gt;&amp;nbsp;al tratar de añadir un ítem a una colección (lista, conjunto, etc.) sin haber inicializado explícitamente esa colección. No basta con que exista una declaración&amp;nbsp;de la variable: hay que inicializarla.&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Recordar: una variable (campo) que referencia a un objeto y no ha sido inicializada explícitamente contiene por defecto el valor null. En ocasiones podemos comprobar si una variable referencia a un objeto inicializado haciendo comprobaciones de este tipo:&lt;/div&gt;
&lt;center style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px;&quot;&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;7&quot; cellspacing=&quot;1&quot; style=&quot;height: 50px; width: 450px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;if&amp;nbsp; ( ofertaMaxima == null ) { instrucciones A } else { instrucciones B }&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Este tipo de comprobaciones constituyen una medida de seguridad para evitar que se pueda intentar realizar un proceso no permitido como aplicar un método a una variable que contiene null.&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;strong&gt;AUTOBOXING Y UNBOXING. CONVERSIÓN AUTOMÁTICA DE TIPOS ENVOLTORIO A PRIMITIVOS Y VICEVERSA&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Comentamos en su momento que cada tipo primitivo tenía un tipo equivalente objeto. A los tipos objeto los denominábamos envoltorios. Dado que las colecciones como ArrayList contienen objetos y no tipos primitivos, puede parecer que esta circunstancia complica la programación si queremos por ejemplo trabajar con colecciones de números. Java solventa esta situación realizando una conversión automática desde el tipo primitivo al envoltorio (autoboxing) o viceversa (unboxing). En el programa anterior son válidas expresiones como Integer suma = 0; ó lista1.añadirItem (7). El método añadirItem espera un objeto Integer. Sin embargo, le pasamos un tipo primitivo y lo acepta. Esto es debido al autoboxing que realiza el compilador Java en segundo plano evitando que salte un error.&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
El autoboxing y unboxing es una posibilidad destinada a facilitar el trabajo del programador, pero esto no elimina la necesidad de tener muy claro qué es un tipo primitivo y qué es un objeto y cuándo se requiere uno u otro. Comprobarás que no se puede, y no se debe, tratar de usar tipos primitivos y envoltorios como si se tratara de la misma cosa.&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;strong&gt;OBJETOS ANÓNIMOS&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Consideremos el siguiente código:&lt;/div&gt;
&lt;center style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px;&quot;&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;7&quot; cellspacing=&quot;1&quot; style=&quot;height: 124px; width: 326px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
//Ejemplo aprenderaprogramar.com&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
ListaNumeros lista1 = new ListaNumeros();&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
Integer num1 = new Integer (6);&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
lista1.añadirItem (num1);&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
lista1.añadirItem (7);&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Cuando añadimos el objeto num1, conocemos el nombre del objeto que añadimos. Cuando añadimos mediante autoboxing un Integer que contiene el número 7, desconocemos el nombre de ese objeto.&amp;nbsp;&lt;strong&gt;Estos objetos que no tienen nombre específico se denominan “objetos anónimos&lt;/strong&gt;&lt;strong&gt;”.&lt;/strong&gt;&amp;nbsp;El uso de objetos anónimos es frecuente en toda situación en la que carece de interés disponer de nombres específicos para los objetos. La forma de crear objetos anónimos admite distintas sintaxis. Estos son algunos ejemplos:&lt;/div&gt;
&lt;center style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px;&quot;&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;7&quot; cellspacing=&quot;1&quot; style=&quot;height: 97px; width: 528px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
//Ejemplos aprenderaprogramar.com&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
grupoDepositos.add (new Deposito (diametroNuevo, alturaNuevo, idNuevo) );&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
librería.add (new Libro (“Elogio de la locura”, “Erasmo de Rotterdam”);&lt;/div&gt;
&lt;div style=&quot;line-height: 1.5em; margin-bottom: 3px; margin-left: 40px; text-align: justify;&quot;&gt;
club.add (new Persona (“Juan Romero Sánchez”, 32);&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em;&quot;&gt;
&lt;strong&gt;EJERCICIO&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
Responde a las siguientes preguntas. ¿Se puede acceder a un objeto anónimo contenido en un ArrayList? ¿Se puede inicializar un objeto de una clase que contiene tres atributos de tipo objeto declarando en el constructor que los atributos se inicializan mediante objetos anónimos? &amp;nbsp;Puedes comprobar si tus respuestas son correctas consultando en los foros aprenderaprogramar.com.&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 16.2px;&quot;&gt;
Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:&amp;nbsp;&lt;a href=&quot;http://www.aprenderaprogramar.com/index.php?option=com_content&amp;amp;view=category&amp;amp;id=68&amp;amp;Itemid=188&quot; style=&quot;color: #e05e19; text-decoration: none;&quot;&gt;&lt;span style=&quot;color: #0066cc;&quot;&gt;&amp;nbsp;Ver curso completo.&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #fffffc; color: #41423d; font-family: Geneva, Tahoma, &#39;Nimbus Sans L&#39;, sans-serif; font-size: 12px; line-height: 1.5em;&quot;&gt;
Para&amp;nbsp; hacer un comentario&amp;nbsp;o consulta&amp;nbsp;utiliza los&amp;nbsp;&lt;a href=&quot;http://www.aprenderaprogramar.com/foros/&quot; style=&quot;color: #e05e19; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #0066cc;&quot;&gt;foros aprenderaprogramar.com,&lt;/span&gt;&lt;/a&gt;&amp;nbsp;abiertos a cualquier persona independientemente de su nivel de conocimiento.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/7025090703316718514/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/javalangnullpointerexception.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7025090703316718514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/7025090703316718514'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/javalangnullpointerexception.html' title='java.lang.NullPointerException'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4463055240008748218.post-2091286925394749664</id><published>2016-05-17T10:37:00.002-04:00</published><updated>2016-05-17T10:37:33.246-04:00</updated><title type='text'>fconfig vs ip: What’s Difference and Comparing Network Configuration</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Linux based distributions have featured set of commands which provide way to configure networking in easy and powerful way through command-line. These set of commands are available from&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;net-tools&lt;/span&gt;&amp;nbsp;package which has been there for a long time on almost all distributions, and includes commands like:&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;route&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;nameif&lt;/span&gt;,&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;iwconfig&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;iptunnel&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;netstat&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;arp&lt;/span&gt;.&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_19067&quot; style=&quot;background: rgb(241, 241, 241); border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px auto 14px; max-width: 100%; padding: 5px 0px 0px; text-align: center; vertical-align: baseline; width: 730px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/ifconfig-vs-ip-command.png&quot; rel=&quot;attachment wp-att-19067&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; color: #3b8dbd; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; transition-duration: 0.2s; transition-timing-function: ease; vertical-align: baseline;&quot;&gt;&lt;img alt=&quot;Ifconfig Vs IP Command&quot; class=&quot;size-full wp-image-19067&quot; data-lazy-loaded=&quot;true&quot; height=&quot;345&quot; src=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/ifconfig-vs-ip-command.png&quot; style=&quot;border-radius: 2px; border: 0px; display: inline; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: auto; line-height: inherit; margin: 0px; max-width: 100%; padding: 0px; transition: opacity 0.2s ease; vertical-align: baseline;&quot; width=&quot;720&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; color: #999999; font-family: inherit; font-size: 13px; font-stretch: inherit; font-style: italic; font-variant: inherit; font-weight: inherit; line-height: inherit; padding: 0px 0px 8px; text-align: justify; vertical-align: baseline;&quot;&gt;
Ifconfig Vs IP Command&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
These commands are just about sufficient in configuring the network in a way any novice or an expert Linux user would want, but due to advancement in Linux kernel over past years and unmaintainable of this packaged set of commands, they are getting deprecated and a more powerful alternative which has ability to replace all of these commands is emerging.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
This alternative has also been there for quite some time now and is much more powerful than any of these commands. Rest of sections would highlight this alternative and compare it with one of the command from net-tools package i.e.&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;.&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip – A Replacement for ifconfig&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;has been there for a long time and is still used to configure, display and control network interfaces by many, but a new alternative now exists on Linux distributions which is much more powerful than it. This alternative is&amp;nbsp;&lt;code style=&quot;background: none 0px 0px repeat scroll rgb(246, 246, 248); border-radius: 3px; border: 1px solid rgb(158, 158, 159); color: #3b5999; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: 1.6; margin: 0px; max-width: 100%; overflow: auto; padding: 2px; vertical-align: baseline; white-space: pre;&quot;&gt;ip&lt;/code&gt;&amp;nbsp;command from&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;iproute2util&lt;/span&gt;&amp;nbsp;package.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Although this command might seem a bit complex at first site but it is much broader in functionality than&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;. It is functionally organized on two layers of Networking Stack i.e.&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Layer 2&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Link Layer&lt;/span&gt;),&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Layer 3&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;IP Layer&lt;/span&gt;) and does the work of all the above mentioned commands from net-tools package.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
While&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;mostly displays or modifies the interfaces of a system, this command is capable of doing following tasks:&lt;/div&gt;
&lt;ol style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; list-style: none; margin: 0px 0px 15px 30px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Displaying or Modifying Interface properties.&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Adding, Removing ARP Cache entries along creating new Static ARP entry for a host.&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Displaying MAC addresses associated with all the interfaces.&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Displaying and modifying kernel routing tables.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
One of the main highlight which separates it from its ancient counterpart&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;is that latter uses&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ioctl&lt;/span&gt;&amp;nbsp;for network configuration, which is a less appreciated way of interaction with kernel while former takes advantage of netlink socket mechanism for the same which is a much more flexible successor of ioctl for inter-communication between kernel and user space using rtnetlink (which adds networking environment manipulation capability).&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
We can now begin to highlight the features of&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;and how they are effectively replaced by&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ip&lt;/span&gt;&amp;nbsp;command.&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip vs ifconfig Commands&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Following section highlights some of&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;commands and their replacement using&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ip&lt;/span&gt;&amp;nbsp;commands:&lt;/div&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
1. Displaying all Network Interfaces in Linux&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Here, one distinguishing feature between&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ip&lt;/span&gt;&amp;nbsp;and&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;is that whereas ifconfig only shows enabled interfaces, ip shows all the interfaces whether enabled or disabled.&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ifconfig Command&lt;/h5&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ ifconfig
&lt;/pre&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_19051&quot; style=&quot;background: rgb(241, 241, 241); border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px auto 14px; max-width: 100%; padding: 5px 0px 0px; text-align: center; vertical-align: baseline; width: 781px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/Ifconfig-Command.png&quot; rel=&quot;attachment wp-att-19051&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; color: #3b8dbd; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; transition-duration: 0.2s; transition-timing-function: ease; vertical-align: baseline;&quot;&gt;&lt;img alt=&quot;ifconfig: Check IP Address&quot; class=&quot;size-full wp-image-19051&quot; data-lazy-loaded=&quot;true&quot; height=&quot;525&quot; sizes=&quot;(max-width: 771px) 100vw, 771px&quot; src=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/Ifconfig-Command.png&quot; srcset=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/Ifconfig-Command.png 771w, http://www.tecmint.com/wp-content/uploads/2016/02/Ifconfig-Command-768x523.png 768w&quot; style=&quot;border-radius: 2px; border: 0px; display: inline; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: auto; line-height: inherit; margin: 0px; max-width: 100%; padding: 0px; transition: opacity 0.2s ease; vertical-align: baseline;&quot; width=&quot;771&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; color: #999999; font-family: inherit; font-size: 13px; font-stretch: inherit; font-style: italic; font-variant: inherit; font-weight: inherit; line-height: inherit; padding: 0px 0px 8px; text-align: justify; vertical-align: baseline;&quot;&gt;
ifconfig: Check IP Address&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip Command&lt;/h5&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;$ ip a
&lt;/pre&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_19052&quot; style=&quot;background: rgb(241, 241, 241); border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px auto 14px; max-width: 100%; padding: 5px 0px 0px; text-align: center; vertical-align: baseline; width: 1045px;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/ip-command.png&quot; rel=&quot;attachment wp-att-19052&quot; style=&quot;border-bottom-style: none; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; color: #3b8dbd; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; outline: 0px; padding: 0px; text-decoration: none; transition-duration: 0.2s; transition-timing-function: ease; vertical-align: baseline;&quot;&gt;&lt;img alt=&quot;ip: Check IP Address&quot; class=&quot;size-full wp-image-19052&quot; data-lazy-loaded=&quot;true&quot; height=&quot;380&quot; sizes=&quot;(max-width: 1035px) 100vw, 1035px&quot; src=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/ip-command.png&quot; srcset=&quot;http://www.tecmint.com/wp-content/uploads/2016/02/ip-command.png 1035w, http://www.tecmint.com/wp-content/uploads/2016/02/ip-command-768x282.png 768w&quot; style=&quot;border-radius: 2px; border: 0px; display: inline; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: auto; line-height: inherit; margin: 0px; max-width: 100%; padding: 0px; transition: opacity 0.2s ease; vertical-align: baseline;&quot; width=&quot;1035&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;wp-caption-text&quot; style=&quot;border: 0px; color: #999999; font-family: inherit; font-size: 13px; font-stretch: inherit; font-style: italic; font-variant: inherit; font-weight: inherit; line-height: inherit; padding: 0px 0px 8px; text-align: justify; vertical-align: baseline;&quot;&gt;
ip: Check IP Address&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;clear&quot; style=&quot;background-color: white; border: 0px; clear: both; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; height: 0px; line-height: 28.8px; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline; visibility: hidden; width: 0px;&quot;&gt;
&lt;/div&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
2. Adding or Deleting an IP Address in Linux&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The below command assigns the IP address&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;192.168.80.174&lt;/span&gt;&amp;nbsp;to the interface&amp;nbsp;&lt;code style=&quot;background: none 0px 0px repeat scroll rgb(246, 246, 248); border-radius: 3px; border: 1px solid rgb(158, 158, 159); color: #3b5999; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: 1.6; margin: 0px; max-width: 100%; overflow: auto; padding: 2px; vertical-align: baseline; white-space: pre;&quot;&gt;eth0&lt;/code&gt;.&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ifconfig – Add/Del IP Address&lt;/h5&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 add 192.168.80.174
&lt;/pre&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Syntax for adding/removing an interface using ifconfig command:&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-style: inherit; font-variant: inherit; font-weight: inherit;&quot;&gt;# ifconfig eth0 add 192.168.80.174&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-style: inherit; font-variant: inherit; font-weight: inherit;&quot;&gt;# ifconfig eth0 del 192.168.80.174&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip – Add/Del IP Address&lt;/h5&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip a add 192.168.80.174 dev eth0
&lt;/pre&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Syntax for adding/removing an interface using ip command:&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-style: inherit; font-variant: inherit; font-weight: inherit;&quot;&gt;# ip a add 192.168.80.174 dev eth0&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-style: inherit; font-variant: inherit; font-weight: inherit;&quot;&gt;# ip a del 192.168.80.174 dev eth0&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;clear&quot; style=&quot;background-color: white; border: 0px; clear: both; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; height: 0px; line-height: 28.8px; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline; visibility: hidden; width: 0px;&quot;&gt;
&lt;/div&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
4. Add MAC Hardware Address to Network Interface&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The below command sets the hardware address for the interface&amp;nbsp;&lt;code style=&quot;background: none 0px 0px repeat scroll rgb(246, 246, 248); border-radius: 3px; border: 1px solid rgb(158, 158, 159); color: #3b5999; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: 1.6; margin: 0px; max-width: 100%; overflow: auto; padding: 2px; vertical-align: baseline; white-space: pre;&quot;&gt;eth0&lt;/code&gt;&amp;nbsp;to the value specified in the command. This can be verified by checking the&amp;nbsp;&lt;code style=&quot;background: none 0px 0px repeat scroll rgb(246, 246, 248); border-radius: 3px; border: 1px solid rgb(158, 158, 159); color: #3b5999; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: 1.6; margin: 0px; max-width: 100%; overflow: auto; padding: 2px; vertical-align: baseline; white-space: pre;&quot;&gt;HWaddr&lt;/code&gt;&amp;nbsp;value in the output of&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;command.&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ifconfig – Add MAC Address&lt;/h5&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Here, the syntax for adding MAC address using ifconfig command:&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 hw ether 00:0c:29:33:4e:aa
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip – Add MAC Address&lt;/h5&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Here, the syntax for adding MAC address using ip command:&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set dev eth0 address 00:0c:29:33:4e:aa
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;clear&quot; style=&quot;background-color: white; border: 0px; clear: both; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; height: 0px; line-height: 28.8px; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline; visibility: hidden; width: 0px;&quot;&gt;
&lt;/div&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
4. Setting Other Configurations of Network Interface&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Apart from setting IP address or Hardware address, other configurations that can be applied to an interface include:&lt;/div&gt;
&lt;ol style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; list-style: none; margin: 0px 0px 15px 30px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;MTU (Maximum Transfer Unit)&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Multicast flag&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Transmit Queue length&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Promiscuous mode&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: square; margin: 0px; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;Enable or disable all multicast mode&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ifconfig – Other Network Configurations&lt;/h5&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;h5 style=&quot;border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: inherit; font-size: 22px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip – Other Network Configurations&lt;/h5&gt;
&lt;/div&gt;
&lt;div class=&quot;clear&quot; style=&quot;background-color: white; border: 0px; clear: both; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; height: 0px; line-height: 28.8px; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline; visibility: hidden; width: 0px;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;center style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;h6 style=&quot;border: 0px; color: #444444; font-family: inherit; font-size: 18px; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
a. Set MTU value to 2000.&lt;/h6&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 mtu 2000
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set dev eth0 mtu 2000
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;center style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;h6 style=&quot;border: 0px; color: #444444; font-family: inherit; font-size: 18px; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
b. Enable or Disable multicast flag.&lt;/h6&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 multicast
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set dev eth0 multicast on
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;center style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;h6 style=&quot;border: 0px; color: #444444; font-family: inherit; font-size: 18px; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
c. Setting the transmit queue length.&lt;/h6&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 txqueuelen 1200
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set dev eth0 txqueuelen 1200
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;center style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;h6 style=&quot;border: 0px; color: #444444; font-family: inherit; font-size: 18px; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
d. Enabling or disabling promiscuous mode.&lt;/h6&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 promisc
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set dev eth0 promisc on
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;center style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;h6 style=&quot;border: 0px; color: #444444; font-family: inherit; font-size: 18px; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
e. Enable or disable all multicast mode.&lt;/h6&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half&quot; style=&quot;background-color: white; border: 0px; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin: 0px 24.9531px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 allmulti
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;grid one-half last&quot; style=&quot;background-color: white; border: 0px; clear: right; color: #272727; display: inline; float: left; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px !important; margin-top: 0px; padding: 0px; position: relative; vertical-align: baseline; width: 377.516px;&quot;&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set dev eth0 allmulti on
&lt;/pre&gt;
&lt;/div&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
5. Enabling or Disabling Network Interface&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The below commands enable or disable specific network interface.&lt;/div&gt;
&lt;h5 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 22px; font-stretch: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ifconfig – Disable/Enable Network Interface&lt;/h5&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The below command disables the interface&amp;nbsp;&lt;code style=&quot;background: none 0px 0px repeat scroll rgb(246, 246, 248); border-radius: 3px; border: 1px solid rgb(158, 158, 159); color: #3b5999; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: 1.6; margin: 0px; max-width: 100%; overflow: auto; padding: 2px; vertical-align: baseline; white-space: pre;&quot;&gt;eth0&lt;/code&gt;&amp;nbsp;and it is verified by output of&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;which by default shows only those interfaces which are up.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 down
&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
To re-enable the interface, just replace&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;down&lt;/span&gt;&amp;nbsp;by&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;up&lt;/span&gt;.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 up
&lt;/pre&gt;
&lt;h5 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 22px; font-stretch: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip – Disable/Enable Network Interface&lt;/h5&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The below&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ip&lt;/span&gt;&amp;nbsp;command is alternative for ifconfig to disable a specific interface. This can be verified by the output of&amp;nbsp;&lt;code style=&quot;background: none 0px 0px repeat scroll rgb(246, 246, 248); border-radius: 3px; border: 1px solid rgb(158, 158, 159); color: #3b5999; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: 1.6; margin: 0px; max-width: 100%; overflow: auto; padding: 2px; vertical-align: baseline; white-space: pre;&quot;&gt;&#39;ip a&#39;&lt;/code&gt;&amp;nbsp;command which shows all the interfaces by default, either up or down, but highlights their status along with the description.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set eth0 down
&lt;/pre&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
To re-enable the interface, just replace&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;down&lt;/span&gt;&amp;nbsp;with&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;up&lt;/span&gt;.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set eth0 up
&lt;/pre&gt;
&lt;h4 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #aa4b80; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 26px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.3px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
6. Enable or disable the use of ARP protocol&lt;/h4&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The below commands enable or disable ARP protocol on specific network interface.&lt;/div&gt;
&lt;h5 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 22px; font-stretch: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ifconfig – Enable/Disable ARP Protocol&lt;/h5&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The command enables ARP protocol to be used with interface&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;eth0&lt;/span&gt;. To disable this option, just replace arp with&lt;code style=&quot;background: none 0px 0px repeat scroll rgb(246, 246, 248); border-radius: 3px; border: 1px solid rgb(158, 158, 159); color: #3b5999; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 15px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: 600; line-height: 1.6; margin: 0px; max-width: 100%; overflow: auto; padding: 2px; vertical-align: baseline; white-space: pre;&quot;&gt;-arp&lt;/code&gt;.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ifconfig eth0 arp
&lt;/pre&gt;
&lt;h5 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #444444; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 22px; font-stretch: inherit; font-weight: 400; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
ip – Enable/Disable ARP Protocol&lt;/h5&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
This command is the ip alternative to enable ARP for the interface eth0. To disable, just replace&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;on&lt;/span&gt;&amp;nbsp;with&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;off&lt;/span&gt;.&lt;/div&gt;
&lt;pre style=&quot;background-color: #051e30; border-color: rgb(40, 159, 244); border-style: solid; border-width: 1px 1px 1px 4px; color: white; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; font-stretch: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 10px 10px 10px 18px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;# ip link set dev eth0 arp on
&lt;/pre&gt;
&lt;h3 style=&quot;background-color: white; border-bottom-color: rgb(221, 221, 221); border-bottom-style: dashed; border-width: 0px 0px 1px; color: #336699; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 30px; font-stretch: inherit; font-weight: 400; letter-spacing: -0.5px; line-height: 1.3em; margin: 0px 0px 14px; padding: 0px; text-align: justify; vertical-align: baseline; word-wrap: break-word;&quot;&gt;
Conclusion&lt;/h3&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Thus, we have highlighted features of&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ifconfig&lt;/span&gt;&amp;nbsp;command and how they can be done using&amp;nbsp;&lt;span style=&quot;border: 0px; color: #333333; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;ip&lt;/span&gt;&amp;nbsp;command. Currently, Linux distributions provides a user with both the commands so that he can use according to his convenience. So, which command is convenient according to you which you would prefer to use? Do mention this in your comments.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #272727; font-family: &#39;Roboto Condensed&#39;, Arial, sans-serif; font-size: 18px; font-stretch: inherit; line-height: 28.8px; margin-bottom: 1em; padding: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
fuente:&amp;nbsp;http://www.tecmint.com/ifconfig-vs-ip-command-comparing-network-configuration/&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://keynology.blogspot.com/feeds/2091286925394749664/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://keynology.blogspot.com/2016/05/fconfig-vs-ip-whats-difference-and.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/2091286925394749664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4463055240008748218/posts/default/2091286925394749664'/><link rel='alternate' type='text/html' href='http://keynology.blogspot.com/2016/05/fconfig-vs-ip-whats-difference-and.html' title='fconfig vs ip: What’s Difference and Comparing Network Configuration'/><author><name>Entrepreneurial Journal Blog</name><uri>http://www.blogger.com/profile/07078395675861274232</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>