teleren/devto huggingface dataset:
자바 17이 다가오면...
Tags: java, korean
Published: 2021-04-16 05:31:33

자바 17은 8, 11 에 이은 세번째 LTS 버전이다.
즉, 걱정 없이 써도 되는 버전이라는 거다.
현재 한국의 자바도 그렇고 글로벌하게 자바는 현재 8이 지배적일 것이다.
내가 몸담고 있는 회사에도 8 넘는 자바로 돌아가는 프로젝트는 찾을 수 없었다.
그리고 대부분 오픈소스 및 상용 프로젝트는 여전히 8을 지원하고 있고.
이정도로 보수적인 체제 아래 8 버전은 지배적이다.
그나마 11 버전이 야금야금 먹고 있다는 건 안비밀 (특히 네카라쿠배)

자, 나는 자바 17이 세번째 LTS인 점에서 기대를 품고 있다.
만약 당신도 거대한 기대를 품고 있다면 막상 뚜껑 열면 팍 식을 수도 있을 것이다.
왜냐면 이미 12(취소)~16까지 새 기능의 연장선이기 때문이다.
원문은 [여길](https://openjdk.java.net/projects/jdk/17/) 보면 된다.

## 애플릿 API 제거 ([JEP-398](http://openjdk.java.net/jeps/398))

자바 9부터 애플릿 쓰지 말라고 그렇게 강조했을 것이다.
물론 대부분 8을 쓰고, 게다가 애플릿 쓰는 곳도 사실 많이 줄어서 사실상 지켜주는 거나 마찬가지.
17부터는 애플릿 API가 사라져서 쓸 수가 없게 된다.
물론 애플릿을 쓴다면 자바를 업글하는 멍청한 짓을 할 리는 없겠지만.

## 애플 실리콘 대응(`macOS/AArch64`) ([JEP-391](http://openjdk.java.net/jeps/391))

일단 자바 8이나 11 LTS는 애플 실리콘을 공식적으로 지원하지 않는다.
자바 13이 되어서야 그나마 로제타 호환성을 갖추고,
[자바 16 EA+10](https://isapplesiliconready.com/app/OpenJDK) 불안정 버전에서야 네이티브 지원을 시작했다.
JDK 17은 실리콘 맥을 공식으로 네이티브 지원하여 재대로 쓸 수 있는 날이 올 것이다.
참고로 비슷한 시기에 닷넷도 6 버전이 출시되어 여기서도 애플 실리콘을 네이티브로 지원한다고 하니 닷넷도 한다면 기대하도록 하자.

아, 오해할 수 있는데 자바는 공식적으로 ARM 프로세서용으로 이미 가지고 있으며 당장 8 버전에서도 지원한다. 임베디드 분야에서 쓰는 특성 상 쓸 일이 별로 없고, 만약 쓴다고 해도 오라클의 살인적인 라이선스 계약이 네 회사를 기다리고 있겠지만.
내가 '살인적인 라이선스' 용어 꺼낸 건 윈도우 서버 이외로는 처음이다.

## MacOS 렌더링 파이프라인 ([JEP-382](http://openjdk.java.net/jeps/382))

애플 개발에 몸 좀 담궈봤다면 다들 아시다시피 OpenGL은 버린지 오래고 Metal을 밀고 있다. Vulkan의 경우 애플의 참여는 있었으나 당연히 지원을 안 한다. Vulkan을 주도한 AMD 그래픽카드가 낀 맥 제품에도 못 쓰는 설움이 있다. 물론 MoltenVK가 설움을 씻어주긴 하지만 100%는 못 씻겨준다.

JDK도 엄연히 GPU 렌더링 영역이 있으며, 이게 없었다면 마인크래프트는... 일단 현재까지 OpenGL을 썼기 때문에 참 난감하기도 하다.
자바 17부터는 이 렌더링 API의 백엔드를 Metal로 교체될 것이라 한다.
그렇게 되면 그나마 좀 부드러운 자바의 렌더링 결과물을 기대할 수 있을 것이다.

뭔가 좀 애플에 너무 신경 써주는 게 못마땅하게 느껴질 수도 있겠지만, 자바 출시 당시 모토는 `Code once, Run everywhere` 이다. 게다가 애플은 Big Sur 인 MacOS 11부터 차근차근 OpenGL 흔적을 제거하고 있으며, 애플답게 뒤도 안 돌아보고 갑자기 빠르게 OpenGL 영역이 완전히 사라질 것이기 때문에, 그 때 되면 OpenGL 구동 앱은 아예 호환이 안되는 불상사가 생긴다. 그렇기 때문에 자바는 이 모토를 지키기 위해 불공정하지만 지원했던 플랫폼은 끝까지 지원해줘야 하기에 하는 거니 이해를 해주길 바란다.

## 유사난수 생성기 향상 ([JEP-356](http://openjdk.java.net/jeps/356))

자, 이제 자바스러운 기능 향상으로 넘어가도록 한다. 라고 하기엔 아쉽지만 이게 마지막이다.
향상된 난수 생성기 클래스인 `RandomGenerator` 클래스가 추가된다.
유사난수 개념은 검색하거나 [한국어 위키백과](https://ko.wikipedia.org/wiki/%EC%9C%A0%EC%82%AC%EB%82%9C%EC%88%98) 에 간략하게 실려 있다.
컴퓨터공학 및 기계공학, 암호학 등의 공부 해본 사람이라면 알겠지만 의외로 기계 난수는 예측이 가능하다. 난수가 예측이 가능하면 어떻게 될 지는 상상에 맡기겠다. 유사난수는 기존 난수에 기준(Seed)을 정해서 그 기준을 모르는 자가 예측할 수 없어야 하는 요구사항에 부응하는 난수 생성기. 이를 자바에서 직접 지원하는 기능이다. 보안에는 중요하기 때문에 암호화 측면에서 상당히 유용한 기능이라 할 수 있다.

## 끗

자바 17은 이들을 포함하여 자바 14~16까지 있었던 새 기능까지 안정화되어 출시하는 것을 목표로 삼고 있다. 물론 Preview에서 안정화되지 못해 아쉬운 API가 있을 수도 있다. 현재 Preview 중인 대표적인 기능이 [레코드(Records)](https://openjdk.java.net/jeps/384), [봉인 클래스(Sealed Class)](https://openjdk.java.net/jeps/397), [외부 메모리 접근 API(Foreign-Memory Access API)](https://openjdk.java.net/jeps/393) 등이 있는데, 자바 생태계 특성 상 이들이 완전히 구현하지 못해도 보수적인 자바 생태계에는 전혀 지장이 없기 때문에 걱정할 게 없다는 게 내 생각이다.
대표적인 예로, 프로젝트 직쏘는 자바 7 목표였는데 9가 되어서야 출시했다. 물론 이 직쏘를 재대로 활용하는 자바 개발자는 손에 꼽겠지만.

올 가을이 기대되는군. 자바 17과 닷넷 6이 나올 시기니까.
More Good Programming Quotes, Part 5
Tags: programming, quotes
Published: 2021-04-16 14:03:34

---
title: More Good Programming Quotes, Part 5
published: true
date: 2021-04-16 05:30:33 UTC
tags: Programming,quotes
canonical_url: https://henrikwarne.com/2021/04/16/more-good-programming-quotes-part-5/
---

Here are more good programming quotes I have found since my [last post](https://dev.to/henrikwarne/more-good-programming-quotes-part-4-2iin).

[![](https://henrikwarne1.files.wordpress.com/2021/04/dsc00806.jpg?w=1024)](https://henrikwarne1.files.wordpress.com/2021/04/dsc00806.jpg)

### Programming

“It has been said that the great scientific disciplines are examples of giants standing on the shoulders of other giants. It has also been said that the software industry is an example of midgets standing on the toes of other midgets.”  
Alan Cooper

“Changing random stuff until your program works is bad coding practice, but if you do it fast enough it’s Machine Learning.”  
via @manisha72617183

“Make it work, then make it beautiful, then if you really, really have to, make it fast. 90 percent of the time, if you make it beautiful, it will already be fast. So really, just make it beautiful!”  
Joe Armstrong

“For each desired change, make the change easy (warning: this may be hard), then make the easy change”  
@KentBeck

“If it’s your decision, it’s design; if not, it’s a requirement.”  
Alistair Cockburn

“The hardest bugs are those where your mental model of the situation is just wrong, so you can’t see the problem at all.”  
Brian Kernighan

“I’m not a great programmer. I’m just a good programmer with great habits.”  
@KentBeck

“Making things easy to do is a false economy. Focus on making things easy to understand and the rest will follow.”  
Peter Bourgon

“Choosing the right limitations for a certain problem domain is often much more powerful than allowing anything.”  
Jason Moiron

“Make it correct, make it clear, make it concise, make it fast. In that order.”  
Wes Dyer

“malloc”, from the French “mal LOC”, or “bad line of code”  
@jckarter

### Other

Not about programming per se, but still applicable, or funny, or both.

“Anybody who doesn’t change their mind a lot is dramatically underestimating the complexity of the world we live in.”  
Jeff Bezos

“Writing is thinking. To write well is to think clearly. That’s why it’s so hard.”  
David McCullough

“Rarely is anyone thanked for the work they did to prevent the disaster that didn’t happen.”  
Mikko Hypponen

“Leaders focus on doing the right thing, managers focus on doing things right”  
@ID\_AA\_Carmack, from Peter Ducker

“Once you start looking for confirmation bias you see it everywhere.”  
@mfeathers

“I have yet to see any problem, however complicated, which, when you looked at it in the right way, did not become still more complicated.”  
Anderson’s law

“For every complex problem there is an answer that is clear, simple, and wrong.”  
H. L. Mencken
Monolithic Vs. Microservice Architectures
Published: 2021-04-16 05:26:01

## Monolithic Structure 
Monolithic infrastructure is a form of architecture that bundles the front and back end aspects of an application or system into one. It is typically an older approach but it does come with some benefits compared to a Microservice setup. For simpler applications, it can be a lot cheaper and just as reliable as more complicated architectures. The main problem with Monolithic architecture is that when it comes to more complicated systems, it becomes easier to fail and harder to update. This is because the entire application relies on one deployment and can fail if one part fails. 

![Photo](https://images.contentstack.io/v3/assets/bltc5a09bf374882538/blt8fa97a948ed437f9/605cfc53dfb49b0f38b4b909/monolithic-vs-microservices.png)

## Microservices
Microservices, in short, are a bunch of coded services that function together to create a large application. The services themselves do not have to be "micro" and can almost be as big as a system itself. Each Microservice handles a different aspect of an application. For example, Uber's microservice system has parts that manage user profiles, contact drivers, map routes, and much more. Applications can have hundreds or more Microservices that make up a system. This architecture is a newer form that is more reliable and easier to update when it comes to complex and large systems. It allows a system to be updated one part at a time or on the other hand, it allows a part of the application to fail without crashing the system.

A great source for information was this article:
[MONOLITH VS MICROSERVICES: WHICH IS THE BEST OPTION FOR YOU?](https://www.webdesignerdepot.com/2018/05/monolith-vs-microservices-which-is-the-best-option-for-you/#:~:text=A%20monolithic%20architecture%20is%20built,is%20usually%20one%20code%2Dbase.&text=A%20microservices%20architecture%20however%20is,and%20are%20usually%20independently%20deployable.)

Below is a video using Docker and demonstrating how to deploy Drupal in Play with Docker.
[Docker with Drupal](https://www.youtube.com/watch?v=aAiYdjt50f8&ab_channel=Aero)
Onsurity simplifying the healthcare industry
Tags: python, mobile
Published: 2021-04-16 05:24:25

How this health tech startup is using technology to simplify employee healthcare, Onsurity developed software using python that aims to “reduce the cost of providing a comprehensive employee healthcare package” in a single platform by optimizing and standardizing the way those systems are designed. The ultimate goal is improved care at a lower cost.

Industry impact: The company’s founding CEO Kulin Shah recently spoke about "Simplifying Employee healthcare" in Business Standard.

Read more here at https://www.business-standard.com/article/companies/cred-boss-unacademy-co-founder-others-back-healthcare-startup-onsurity-121040100840_1.html

Also check out: https://onsurity.com
What? Why? When? Event-driven architecture
Tags: eventdriven, architecture, aws, azure
Published: 2021-04-16 05:13:51

Event driven architecture(EDA) is a more adopted nowadays as the whole event driven architecture based applications are only computed/triggers a business logic when a certain event or series of event occurs and also it decouples the monolithic application. In a event driven architecture will get all the feasibility to do multiple triggers and the trigger's business logic.

> Event-driven architecture (EDA) is a software architecture paradigm promoting the production, detection, consumption of, and reaction to events. - Wikipedia

#### What makes Event-driven architecture more adopted v/s traditional architecture?

* EDA will only execute when the event is triggered and the callback/response may invoke another event trigger rather than execute the business logic itself, but the traditional systems would have to poll the to check if the previous/subsequent process is completed (if completed, successfully completed or not).


* When it comes to cost efficiency, EDA are more effective as with any cloud provider - AWS, GCP, Azure we would only pay for the resources when we use and for the duration we use them. With EDA, the resources are only triggered when the event occurs making it a "on demand" execution. But with traditional architecture, we would have the resources running but in idle state and of-course anything we run irrespective of the state it is in, we would have to pay for it.

#### When to choose EDA over traditional architectures?

When to adopt an Event-driven architecture? We must always keep in mind EDA will not fit into all the use-cases, there would be scenarios when we will feel we are just overloading a event-driven application and its too much of wait time for the end-user to see the changes reflecting but also some use-cases would definitely need event based actions.

![Mock architecture of a EDA based ticket booking application](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7r9aucyjmbfh5uf1abws.png)

For example, a Movie ticket booking application, we can book a show for a set of seats and the application would internally wait for the billing to complete which on the success would grant you the tickets. This is where we see a event (successful payment) which the payment gateways would invoke via a webhook to the application's backend. If we don't have the webhook (a callback API which notifies with certain events) then, the ticket booking application would have to keep polling the payment gateway to check if the payment has been completed successfully or not. This is not only hit the performance of ticket booking application but also it will throttle the payment gateway's APIs as we would be polling in every x seconds.

#### Common use-cases which involves EDA
* Publisher-subscriber models such as IoT based architecture, messaging platforms, streaming platforms.

* E-commerce applications

* Micro-services architecture
49 Days of Ruby: Day 20 - Classes
Tags: ruby
Published: 2021-04-16 04:06:09

---
title: 49 Days of Ruby: Day 20 - Classes
published: true
description: Join us on a 49 day learning journey through Ruby!
series: 49 Days of Ruby
tags: #ruby
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/9m73qaetuse3nm3y3it8.png
---

**Welcome to day 20 of the 49 Days of Ruby! 🎉**

Today is all about giving Ruby some class, but with a capital "C"!

First, let's define what a class is:

> A class is a template for your code.

In the simplest terms, that is precisely what a class is. It gives your code a blueprint that can be used to make something with.

Let's take an example of a blueprint for a dog:

```ruby
class Dog
end
```

With the above example, we have created a `class`, a template for a dog. However, what if we want our future dogs to be part of a certain breed? Right now, our class makes an undefined dog. Let's fix that:

```ruby
class Dog
  def initialize(breed)
    @breed = breed
  end
end
```

The `#initialize` method in Ruby is a special method the language provides that you can use in your class creation to define the elements of your template. You provide `#initialize` with the items you want every instance of your class to be created with, and when you instantiate those instances, you can define the details for those items then.

Thus, our new `Dog` class now has a `breed` attribute. You see that we don't tell the class what kind of breed, just that it should accept a `breed` during instantiation:

```ruby
poodle = Dog.new(breed: "poodle")
```

Now we have a new `poodle` instance of our `Dog` class! What if we wanted a bulldog as well? 🐶

```ruby
bulldog = Dog.new(breed: "bulldog")
```

Now we also have a `bulldog`! 🐕‍🦺

What if you want to provide an attribute in your class definition that is true for all future instances? You can do that with a default value. Let's say we wanted all dogs to have a tail:

```ruby
class Dog
  def initialize(breed, tail = true)
    @breed = breed
    @tail = tail
  end
end
```

Now, all of our dogs from this class will have a `true` value for a `tail`!

That's it for today. Share your learning with the community on classes!

**Come back tomorrow for the next installment of 49 Days of Ruby! You can join the conversation on Twitter with the hashtag [#49daysofruby](https://twitter.com/hashtag/49daysofruby).**
Learn GROQ Interactively
Tags: sanity, cms, groq
Published: 2021-04-16 03:30:10

---
title: Learn GROQ Interactively
published: true
description: Learn Graph Relational Object Queries in 10 lessons.
tags: sanity, cms, groq
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4qmnw7mxrbq3ude2hjkq.png
---

# What is GROQ?
GROQ is Graph Relational Object Queries. Created by [Alexander Staubo](https://twitter.com/purefiction) and [Simen Svale Skogsgrud](https://twitter.com/svale) Additional works by [Erik Grinaker](https://twitter.com/erikgrinaker) and [Magnus Holm](https://twitter.com/judofyr). If you familiar with [Sanity.io](https://sanity.io) CMS then GROQ is not a stranger for you.

# Why Learn GROQ?
You can use Groq to query JSON data from your favorite API with ease. Meaning querying data is much fun with GROQ, where you can query complex data with concise code. You don't need to modify the raw data using multiple and / or complex JS functions later like `reducer`.

# Building Process
I built this project based on Magnus Holm blog in [CSS-Tricks](https://css-tricks.com/query-json-documents-in-the-terminal-with-groq/), and inspired by [Swyx](https://twitter.com/swyx) old project GraphQL of Thrones and [GROQ Arcade](https://groq.dev).

The project is built with [React](https://reactjs.org), [ChakraUI](https://chakra-ui.com) for the styling, [Codemirror6](https://codemirror.net/6/) for the editor and [Vite](https://vitejs.dev) to wrap it up.

The process is quite simple and with Vite, building project like this is really fast and enjoyable, while off course there is always some quirks I found with it, but overall it was a nice experience.

The hardest problem I found building this is configuring Codemirror. Before I using Codemirror6, I use Codemirror5 and try couple of _Codemirror-react-wrapper_ and it had some problems with Vite.

All the lessons is create with markdown file and the data is in JSON file. Vite and Rollup plugin make it easy to get both of those files and read it in React component.

## Head to [GROQ of Thrones](https://groq-of-thrones.netlify.app) to learn more.

Source code is on [Github](https://github.com/padunk/groq-of-thrones)
What is MVC?
Tags: javascript, html, beginners, programming
Published: 2021-04-16 02:52:41

MVC stands for Model view controller. MVC is one of the most frequently used patterns in the Software Development world. The main purpose is to separate functionality and display requested data back to the user.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/az9zq0tu977m30vkhac8.png)
The 'M' in "MVC" stands for model. The model interacts with a database and can sometimes update the view but that depends on the framework being used. The 'V' stands for view which is basically the user interface that the user sees. This is where all the HTML/CSS reside. The view contains template engines that allows dynamic data to be passed through if there is no logic-based language involved (eg. Javascript). Lastly we have the controller which is basically the "traffic controller" of everything. The controller processes requests and gets data from the model and then the data gets passed to the view.
UX advices to create a good web app
Tags: ux, webdev, design
Published: 2021-04-16 02:14:40

> Place user in control of the interface

---

> Make actions reversible. Be forgiving

---

A user should never be wondering:

- Where am I?
- How did I get to this screen?
- What do I need to press in order to do my task?
- What is this button for?

---

> Provide informative feedback - be acknowledging

---

#### Show the visibility of system status.

Users are much more forgiving when they have information about what is going on and are given periodic feedback about the status of the process.

---

#### Accommodate users with different skill levels.

Once users are familiar with a product, they will look for shortcuts to speed up commonly used actions. You should provider fast paths for experienced users by enabling them to use shortcuts.

---

**Make it comfortable for a user to interact with a product**

Eliminate all elements that are not helping your users.

---

#### Don't ask users for data they've already entered.

---

When designing a product, it’s important to use language that is easy to read and understand.

---

### Short flows and bigger targets (inputs)

It’s better to design large targets for important functions (big buttons are easier to interact with).

Also reduce the total number of targets that user interact with to complete a given task.

---

### Metaphors

Use real-world metaphors. Metaphors are often used to make the unfamiliar familiar.

---

### Effective error messages as return

An effective error message is a combination of explicit error notification together with hints for solving the problem.

> Try to either eliminate error-prone conditions or check for them and present users with a confirmation dialog before they commit to the action.

---

### Don't loose work while refreshing

Ensure that users never lose their work. Accidentally refresh a web page with a form that has user input.

---

### Don't make the user think

Reduce cognitive load. It’s better to avoid making users think or work too hard to use your product.
introducción a las bases de datos
Tags: sql
Published: 2021-04-16 02:08:25

una base de datos es un conjunto de datos 
organizados y relacionados entre si
el nombre base de datos se suele abreviar a DB

entre las características que tiene una DB
tenemos

1. concurrencia
2. redundancia  
3. interrelación,
entre otras

y en esto entra algo llamado sistema de gestión de base de datos
o SGBD

un SGBD
es el intermediario entre el usuario y la DB

las Ventajas de los sistemas gestores de base de datos:
1. Gestión fácil de grandes conjuntos de datos.
2. Acceso sencillo y eficaz a los datos almacenados.
3. Gran flexibilidad.
4. Integridad y consistencia de los datos.
5. Control de acceso del usuario (seguridad y protección de datos)
6. Alta disponibilidad.

y cuales sistemas de gestion de base de datos
hay?, pues muchos
como MyQL, SQL SERVER, maria DB, posgreSQL... entre otros
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nn9ta4ayh4asqmsmwlwt.png)  

pero en concreto un de los mas usados es MySQL
asi que empecemos con ese mas adelante

### bases de datos relacionales 
una DB relacional es un que establese una conexion entre 
los diferentes datos



para instalar MySQL
hay varias formas de instalar MySQL

la forma mas sencilla creo yo es instalarlo con wampserver 
### instalar wanpserver
https://www.wampserver.com
bajamos un  poco
y instalamos la versión correspondiente 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/30mdzbvq8ddj08tr8yc9.png)

luego aqui para descargo directamente 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yvpqxqynrohepi8rpgyy.png)
 
y bueno se nos descargara en la carpeta de descargas 
pero antes de iniciar el instalador tenemos que instalar algo muy importante

es el Visual C++ Redistributable for Visual Studio 2012 Update 4
no te preocupes no es nada pues lo instalas siguiente siguiente   
https://www.microsoft.com/en-us/download/details.aspx?id=30679

y ahora si podemos iniciamos el instalador de wampserver 
y pues es fácil siguiente siguiente, esperamos  y luego nos pregunta que si queremos que el bloc de notas sea el editor por defecto podemos decirle  que si y si quieres lo puedes cambiar..
y bueno el barra de tareas deberia aparecer el icono de wampserver 
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kz0micdm2sz9qi9vxwe6.png)
 en el siguiente post empezaremos a escribir nuestra primeras sentencias sql
¿Como subir una pagina estatica a Internet?
Tags: webdev, html, javascript, help
Published: 2021-04-16 02:04:04

##¿Que es Netlify?
Netlify es un servicio que te permite subir paginas estáticas gratis a la web, de esta forma las personas pueden visualizarlas e interactuar con ellas. En este post pretendo enseñarte a ti como subir tu propia pagina estática (HTML,JavaScript y CSS) a este servicio para que puedas compartir tu creación con los demás.

##Lo necesario es:
1-Tener hecha tu pagina.
2-Tener todos tus archivos en una sola carpeta.
3-Una cuenta creada en [Netlify](https://netlify.com)


Para empezar después de registrarnos en la pagina aparecerá algo como esto:
![DashboardNetlify](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hr53ukcy6pjpacehao0w.png)

Para poder subir nuestro sitio tenemos que ir al apartado de sites, de esta forma podremos desplegar la pagina.
![SitesNetlify](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/emikcnelly4qf70ui0r0.png)
Como pueden ver tengo muchos sitios ya, pero si ustedes no tienen ninguno les aparecerá como primera opción arrastrar una carpeta para publicar la pagina por lo que solo hay que hacer eso.

![DeployNetlify](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vxp19nfi2ylx6tml51rd.png)

Y listo la pagina esta subida completamente, solo es cuestión de visualizarla con el link proporcionado.