teleren/devto huggingface dataset:
Python flask 가상환경 설정
Tags: python, flask, virtualenv
Published: 2024-05-10 00:41:23

어플리케이션별로 독립된 가상 환경이 왜 필요할까?

예를 들어보겠습니다.

하나의 PC 혹은 서버 환경에서 어떤 어플리케이션은 버전 1의 라이브러리를 필요로 하고, 다른 어플리케이션은 버전 2의 라이브러리를 필요로 한다면, 어떻게 이 두 라이브러리를 관리할 수 있을까요? Host 파이썬에 각각 다른 두 패키지를 설치하려고 한다면 당연히 conflict가 발생할 것입니다.

혹은, 잘 작동하고 있는 특정 어플리케이션의 환경을 그대로 유지하고 싶은 경우를 생각해봅시다. 해당 프로그램에서 쓰고 있는 라이브러리의 버전의 변경이 Host 머신에서 일어난다면, 그동안 잘 돌던 프로그램에서 장애를 일으킬 수도 있습니다.

위와 같은 모든 케이스를 해결해주는 것이 virtualenv입니다.
하나의 PC 혹은 서버 안에서 virtualenv를 설정하고, 그 환경 안에서는 Host 환경과 별도로 각각 필요한 Python 버전을 관리하고, 필요한 특정 버전의 라이브러리를 관리할 수 있게 해줍니다.

Python 가상환경
Python 가상 환경은 자체 라이브러리 및 종속성 세트와 함께 특정 Python 설치가 포함된 독립된 디렉토리입니다. 이를 통해 서로 간섭하지 않고 각각 고유한 버전의 Python과 설치된 패키지가 있는 서로 다른 프로젝트에 대해 격리된 환경을 만들 수 있습니다. 

Python 가상 환경의 주요 특징

1. 격리
가상 환경은 특정 프로젝트에 특정한 패키지 및 종속성을 설치할 수 있는 샌드박스 환경을 제공합니다. 이러한 격리를 통해 한 가상 환경에 설치된 패키지가 다른 가상 환경의 패키지와 충돌하지 않도록 하여 종속성을 보다 효과적으로 관리할 수 있습니다. 
2. 패키지 
관리가상 환경을 사용하면 프로젝트에 필요한 패키지와 라이브러리를 쉽게 관리할 수 있습니다. 글로벌 Python 설치 또는 다른 프로젝트에 영향을 주지 않고 패키지를 설치, 업그레이드 및 제거할 수 있습니다. 따라서 프로젝트별 종속성을 더 쉽게 유지 관리할 수 있습니다. 
3. 버전 
관리가상 환경을 사용하면 특정 프로젝트에 사용할 Python 버전을 지정할 수 있습니다. 이 기능은 특정 Python 버전이 필요한 프로젝트에서 작업할 때 유용하며, 여러 개발 환경 간에 호환성과 일관성을 보장합니다. 
이식성Python 가상 환경은 이식성이 뛰어나 한 머신에서 환경을 생성한 후 다른 머신에 쉽게 복제할 수 있습니다. 이는 다른 사람과 협업하거나 애플리케이션을 다른 서버 또는 호스팅 플랫폼에 배포할 때 특히 유용합니다. 
4. 활성화 및 비활성화
가상 환경을 사용하려면 활성화해야 합니다. 활성화는 적절한 경로와 환경 변수를 설정하여 Python 인터프리터와 설치된 패키지가 해당 환경에 맞게 설정되도록 합니다. 프로젝트 작업이 끝나면 가상 환경을 비활성화하여 전역 Python 환경으로 돌아갈 수 있습니다. 
5. 도구
Python은 가상 환경을 만들고 관리하기 위해 venv(Python 3용) 및 virtualenv(Python 2 및 3용)와 같은 기본 제공 도구를 제공합니다. 이러한 도구는 가상 환경을 설정하고 작업하는 과정을 간소화합니다. 



가상 환경 사용은 프로젝트 종속성을 유지하고 재현성을 개선하며 개발자 간의 협업을 촉진하는 데 도움이 되므로 Python 개발의 모범 사례로 간주됩니다. 또한 프로젝트가 격리되고 이식 가능하며 독립적인 상태로 유지되므로 깔끔하고 관리하기 쉬운 개발 환경을 만들 수 있습니다.


가상 환경을 따로 생성하는 이유

1. 
종속성 관리프로젝트마다 종속성과 라이브러리 요구 사항이 다른 경우가 많습니다. 가상 환경을 사용하면 각 프로젝트마다 이러한 종속성을 개별적으로 관리할 수 있습니다. 이렇게 하면 다른 프로젝트나 글로벌 Python 환경과 충돌하지 않고 필요한 버전의 라이브러리 및 패키지를 설치할 수 있습니다. 
격리 및 재현성가상 환경은 프로젝트에 제어되고 격리된 환경을 제공합니다. 프로젝트의 종속성을 가상 환경 내에 캡슐화하면 프로젝트가 독립적으로 유지되고 시스템 전체 Python 설치에 의존하지 않도록 할 수 있습니다. 이렇게 격리하면 다른 머신에서 프로젝트 환경을 더 쉽게 재현할 수 있어 호환성 문제를 최소화할 수 있습니다. 
2.버전 관리
가상 환경을 사용하면 특정 프로젝트의 Python 버전을 지정할 수 있습니다. 이는 특정 버전의 Python이 필요한 프로젝트를 작업할 때 특히 유용하며, 다양한 개발 환경과 배포 시나리오에서 프로젝트가 일관되게 실행되도록 보장합니다. 
3. 협업
팀에서 작업할 때 각 팀원은 서로 다른 패키지 버전 또는 시스템 구성으로 각자의 개발 환경을 사용할 수 있습니다. 가상 환경을 사용하면 프로젝트의 가상 환경 구성을 공유하여 팀원들이 일관된 개발 환경을 가질 수 있습니다. 이를 통해 협업을 간소화하고 충돌을 줄이며 모든 사람이 동일한 종속성 집합으로 작업할 수 있습니다. 
4. 배포 및 프로덕션 환경
가상 환경은 개발 종속성을 프로덕션 환경과 분리하는 데 도움이 됩니다. 배포 환경 전용 가상 환경을 만들어 프로덕션 환경이 충돌이나 호환성 문제 없이 애플리케이션을 실행하는 데 필요한 정확한 종속성을 갖도록 할 수 있습니다. 
5. 간편한 설정 및 정리
가상 환경 생성은 간단한 프로세스이며 기본 제공 도구를 사용하여 빠르게 수행할 수 있습니다. 또한 프로젝트 또는 관련 가상 환경을 폐기하려는 경우 다른 프로젝트나 글로벌 Python 설치에 영향을 주지 않고 환경 디렉터리를 삭제하기만 하면 됩니다.

```
#cmd
#가상환경을 만들려는 디렉토리 생성
python -m venv myproject(이름은 변경 가능)
```
 

```
#cmd
cd ../myproject/Script
```

```
#cmd
#활성화
activate
```

```
#cmd
#flask 다운로드
pip install flask
```
```
#cmd
#비활성화
deactivate
```


_참조 : https://jaemunbro.medium.com/python-virtualenv-venv-%EC%84%A4%EC%A0%95-aaf0e7c2d24e_
_https://easyitwanner.tistory.com/348_
INFOMETKA - SERVICE THAT HELPS FIND OTHER SERVICES
Tags: infometka, servicefinder, p2pinteraction, peoplenearby
Published: 2024-05-10 00:34:26

INFOMETKA - SERVICE THAT HELPS FIND SERVICES
Discover a network of people nearby or across the globe. Search the interactive map to find others offering the services you need.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6cn9asgudwf6qaicwxk1.jpg)
Imagine a world where finding services and connecting with like-minded individuals happens directly, cutting out the need for third-party side. That's the vision behind "Infometka", a revolutionary web service that empowers you to:
Share your skills and services on a global map. No logins, no signups, just easy additions and edits through our user-friendly Telegram bot.
Express yourself visually and informatively. Build a profile with a picture, short bio, website link, and approximate location.
Discover a network of people nearby or across the globe. Search the interactive map to find others offering the services you need or connect with individuals who share your interests.
Establish direct connections, without intermediaries. See someone you want to collaborate with? Their Telegram contact is readily available for direct communication.
Infometka is more than just a location-based service; it's about fostering a community built on accessibility and peer-to-peer interaction.
https://infometka.com/

#infometka #servicefinder #P2P #P2Pinteraction #directinteraction #peoplenearby
Understanding the HTTP/3 Protocol
Tags: webdev, javascript, beginners, programming
Published: 2024-05-10 00:30:49

## Introduction

HTTP/3 is the latest version of the Hypertext Transfer Protocol (HTTP), which is used for communication on the World Wide Web. It is a more modern and efficient protocol compared to its predecessors, HTTP/1.1 and HTTP/2. This new version is based on the experimental QUIC protocol developed by Google. It has recently been released and is expected to revolutionize the way data is transferred over the internet.

## Advantages of HTTP/3

1. **Reduced Latency:** One of the key advantages of HTTP/3 is its ability to significantly reduce latency. This is achieved by using QUIC's multiplexing and connection establishment techniques, allowing for faster transmission of data and an improved browsing experience for users.

2. **Enhanced Security:** HTTP/3 offers improved security through its implementation of TLS 1.3, providing better privacy and data integrity.

## Disadvantages of HTTP/3

1. **Limited Support:** The main disadvantage of HTTP/3 is its relative newness, which means it may not be fully supported by all web servers and browsers. This can lead to compatibility issues for some users.

2. **Potential Bugs and Vulnerabilities:** As HTTP/3 is still in the early stages, there may be potential bugs and vulnerabilities that have yet to be discovered and addressed.

## Features of HTTP/3

1. **Efficient Data Packet Prioritization:** HTTP/3 introduces the ability to prioritize data packets, allowing for more efficient use of network resources.

2. **Server Push:** It supports server push, which allows for quicker loading of web pages by pushing resources to the client before they are requested.

### Example of Server Push in HTTP/3

Server push can be particularly useful in situations where the server knows the client will need certain resources to complete a page. For instance, when a user requests the HTML for a webpage, the server can also push critical CSS and JavaScript files, thus avoiding the round-trip delays of the client requesting these files later.

```plaintext
HTTP/3 Server Push Pseudo-Code:
1. Client requests HTML page.
2. Server responds with HTML.
3. Server pushes CSS and JavaScript files associated with the page.
4. Client receives all resources simultaneously, reducing load time.
```

## Conclusion

In conclusion, HTTP/3 is a promising new protocol that has the potential to improve the performance and security of web browsing. However, its effectiveness heavily relies on wider adoption and support from web servers and browsers. As it continues to develop and gain more support, HTTP/3 will undoubtedly play a significant role in shaping the future of internet communication.
Recovering back crypto that was stolen through Pro Wizard Gilbert Recovery
Published: 2024-05-10 00:10:15

You may get in touch with them at : Prowizardgilbertrecovery(@)engineer . com
WhatsApp ; +1 (516) 347‑9592


Discovering that my finances were under attack hit me like a ton of bricks. As a dedicated father of three and a retired teacher, I prided myself on being cautious and vigilant, especially when it came to digital security. However, the hackers proved me wrong, shattering my sense of security in an instant. Even with my background as a retired banker turned day trader, I found myself outmaneuvered by these cunning cybercriminals.It all began innocently enough with an email from my ex-wife, a seemingly harmless communication that turned out to be a carefully laid trap. Unbeknownst to me, her email had been compromised by hackers, who wasted no time exploiting the breach to gain access to my Bitcoin wallets and trading accounts. In just three swift transactions, they made off with a staggering $300,000 worth of Bitcoin, leaving me feeling betrayed and violated. Refusing to succumb to despair, I knew I had to take action. That's when I reached out to the Pro Wizard Gilbert Recovery Team for assistance. Their process was refreshingly straightforward, and their team acted with commendable speed and efficiency. Armed with their expertise, the Pro Wizard Gilbert Recovery Team embarked on a relentless pursuit of the hackers. Using a combination of advanced technology and astute detective work, they meticulously unraveled the intricate web of deception spun by cybercriminals. It wasn't long before the culprits were identified and brought to justice. Thanks to the diligent efforts of the Pro Wizard Gilbert Recovery Team, all the stolen Bitcoin was swiftly recovered, bringing a sense of closure to the chaos wrought by the cyberattack. Though the experience left its mark, I emerged from the ordeal with a newfound sense of resilience and determination. As a retired teacher, I had always emphasized the importance of perseverance to my students, and now I have firsthand experience of its power. Though the road to recovery was fraught with challenges, I remained steadfast in my resolve, buoyed by the unwavering support of the Pro Wizard Gilbert Recovery Team. In the end, their dedication and expertise not only restored my financial security but also reaffirmed my belief in the indomitable human spirit.


Homepage ; https://prowizardgilbertrecovery.xyz
End of Phase 1: Flatiron School NYC
Tags: webdev, beginners, programming, javascript
Published: 2024-05-10 00:09:56

Let's rewind to the beginning: week 1 at Flatiron. Classes started on Monday, April 22. On my first day, I arrived excited and ready for a new challenge. I didn't know what to expect, but I was confident in myself. However, that initial energy was quickly met with a wave of easy-going, laid-back pace. Even though I anticipated the first day to be introductory, it was still unexpected.

Things changed quickly, but it's important for me to explain day 2. We had our first real lectures, and everything was closely related to what we learned in our pre-work. That was pretty much the focus of day 2.

From day 3 to day 5, things still felt slow-paced, even though new information was accumulating. At the start of week 2, we began working on labs and challenges based on what we had learned. This week was stressful for me because I felt very new to this, even though I was. I felt like I hadn't understood things from week 1, which hindered my progress. Alongside the stressful days, there were also days where I felt on top of everything.

In summary, week 2 was a time when I quickly started to understand how to approach this type of learning. It's not like traditional college-level learning. You're not going fast during your lectures, but you're engaging every day. When it all adds up, that's when you feel the speed, the intensity, and the challenge I was seeking. With that realization, I started week 3 ready to get things done and close Phase 1 with a project of which I feel proud. And I am proud of my Phase 1 project. I created a Bible webpage that works exactly like any e-book out there. That's exactly what I wanted to achieve: create a project that seems simple, but the knowledge of creating an e-book-style website is something I can use and relate to in future projects.

To summarize the three weeks, I would say:

- I think I have the hang of the learning method at Flatiron, but not 100%.
- I'm starting to feel confident in creating my own solutions, but I still have a looot more to learn.
- I didn't study for my assessment. I wanted to see how much I retained by just reading some Canvas lectures and mostly working on labs. I got a 3/4 in technical skills and conceptual skills. I'm happy with my score because it means I am absorbing information and enjoying it. But in Phase 4, I want that 4 out of 4, just for the one time.
- I still wish I had more time to review some Canvas Phase 1 lectures. I'll try to do it this weekend.

So, that's it. I have to say that I'm lucky to have a good cohort. Everyone seems to be enjoying the bootcamp and trying to do their best.

Now it's time to send this to ChatGPT to check for grammatical errors.

GG
Modules Status Update
Tags: puppet, community
Published: 2024-05-28 20:42:42

---
title: Modules Status Update
published: true
date: 2024-05-10 00:00:00 UTC
tags: puppet,community
canonical_url: https://puppetlabs.github.io/content-and-tooling-team/blog/updates/2024-05-10-modules-status-update/
---

## Hello Again!!

Happy Friday! While there’s not much news from the Modules team this week, rest assured that we’ve been hard at work preparing for the next Forge release. Exciting updates are on the way, so stay tuned and keep those contributions coming!

## Community Contributions

We’d like to thank the following people in the Puppet Community for their contributions over this past week:

- [`puppetlabs-accounts#484`](https://github.com/puppetlabs/puppetlabs-accounts/pull/484): “accounts\_ssh\_authorized\_keys\_line\_parser: Output regex matches when sshkey format isnt correct”, thanks to [bastelfreak](https://github.com/bastelfreak)
- [`puppetlabs-accounts#483`](https://github.com/puppetlabs/puppetlabs-accounts/pull/483): “usermanagement: prohibit empty ssh keys”, thanks to [bastelfreak](https://github.com/bastelfreak)
- [`puppetlabs-postgresql#1595`](https://github.com/puppetlabs/puppetlabs-postgresql/pull/1595): “allow puppet-systemd version 7”, thanks to [TheMeier](https://github.com/TheMeier) and the following people who helped get it over the line ([kenyon](https://github.com/kenyon))

## New Module Releases

- [`puppetlabs-postgresql`](https://github.com/puppetlabs/puppetlabs-postgresql) (`10.3.0`)

- [`puppetlabs-accounts`](https://github.com/puppetlabs/puppetlabs-accounts) (`8.2.0`)
DevX Status Update
Tags: puppet, community
Published: 2024-05-28 20:43:09

---
title: DevX Status Update
published: true
date: 2024-05-10 00:00:00 UTC
tags: puppet,community
canonical_url: https://puppetlabs.github.io/content-and-tooling-team/blog/updates/2024-05-10-devx-status-update/
---

## PDK v3.2.0 released!

The biggest news for us this week is that we’ve released a new version of the PDK and analytics have been removed, which is something the Voxpupuli have been interested in for a long while. Take a look at the Changelog on the [pdk repo](https://github.com/puppetlabs/pdk). Big thanks to all of David Swan’s hard work here!

Apart from this our team has been working hard as normal and enjoying the warmer May weather–though we’ve had alot of rain between the sunny days!

## Community Contributions

We’d like to thank the Puppet Community for their contributions over this past week.
Working with junior programmers
Published: 2024-05-09 22:45:25

I just had an opportunity to work with some junior programmers for the first time in a while. One of the things I noticed was that they often wrote code *that they did not want to run*, but they thought they had to write to get some warning to be quiet.

It's so obviously silly to write code that you don't want to run, and yet it still happens. A lot! So I wrote [a fun little piece](https://thecontextwindow.ai/p/never-write-code-you-dont-want-to-run) about it. Here's an excerpt:

> And all of the good programming languages... have at least one construct entirely devoted to “if the bad thing happens, then what?” In the best languages, you say “I will tie my shoelace”, and the language says “But what if you scrape your forehead?” And nothing else can happen until you have an answer.

> “I won’t scrape my forehead while I -” UNNNNNHANDLED CASE ScrapeForeheadException WHAT IF YOU SCRAPE YOUR FOREHEAD ON LllllLLLine TWELVE THIRTY THIRTY TWO then what? …

> One option is to run away to live with Python, who lets you drink Coke for breakfast and shit in the refrigerator. But it would be better to be a goodie two shoes and say “dear mommy I will get a bandaid from the cupboard and put on neosporin”. That might work, or maybe she’ll hit you with a nested DrankTheNeosporinException but then you can say “dear mommy I’ll call poison control” and eventually she’ll be satisfied and your shoes will be tied.

> As you age and better grasp the desperate scarcity of time, you will correctly say “I don’t have time for this”...

The whole thing is on my new Substack at [https://thecontextwindow.ai](https://thecontextwindow.ai/p/never-write-code-you-dont-want-to-run), but I'll be crossposting to [a mirror account here on dev.to](https://dev.to/thecontextwindow/never-write-code-you-dont-want-to-run-part-1-2i9f).
Never write code you don't want to run, part 1
Tags: programming
Published: 2024-05-09 22:29:28

When I was a kid, I wanted to go FAST. And my mom, she didn’t care about fast, she only cared about SAFE. And it sucked, and anytime she’s not around I go FAST, and I have a modest basket of broken bones that wouldn’t be so crooked if she could have had any say, but eventually she didn’t have any say and it was worth it. Fast is worth it.

And all of the good programming languages are like my mom. They have at least one construct entirely devoted to “if the bad thing happens, then what?” In the best languages, you say “I will tie my shoelace”, and the language says “But what if you scrape your forehead?” And nothing else can happen until you have an answer.

“I won’t scrape my forehead while I -” UNNNNNHANDLED CASE ScrapeForeheadException WHAT IF YOU SCRAPE YOUR FOREHEAD ON LllllLLLine TWELVE THIRTY THIRTY TWO then what? …

One option is to run away to live with Python, who lets you drink Coke for breakfast and shit in the refrigerator.1 But it would be better to be a goodie two shoes and say “dear mommy I will get a bandaid from the cupboard and put on neosporin”. That might work, or maybe she’ll hit you with a nested DrankTheNeosporinException but then you can say “dear mommy I’ll call poison control” and eventually she’ll be satisfied and your shoes will be tied.2

As you age and better grasp the desperate scarcity of time, you will correctly say “I don’t have time for this” and incorrectly you’ll say “just do nothing”. The thing she’s worried about? It won’t happen. So if it does happen, do nothing. (because it won’t happen)

Fast is worth it. But you would be better off proudly eating your boogers at Python’s house than to “do nothing” if you scrape your forehead. Because while your mom may or may not respect you, your computer absolutely does. If you say “do nothing”, then nothing will be done. Shoelace by shoelace, your foreskull will be ground flat like the lucky red crayon that never got lost, and as you commanded, nothing will be done.

If you scrape your forehead while tying your shoes, you should scream. You should panic, and you should thank the wise mommy who gave you a chance to do so.
What is HTML?
Tags: html, webdev, javascript, beginners
Published: 2024-05-09 22:02:03

HTML (HyperText Markup Language) is the most fundamental building block of the Web. It defines the structure and meaning of web content. Let me break it down for you:

Markup Language:

HTML is a markup language. It uses tags, elements, and attributes to create structured documents.

Tags are enclosed in angle brackets (< and >). They define the beginning and end of a component.

An element consists of a start tag, some content, and an end tag. For example:


```
<h1>My First Heading</h1>
  <p>My first paragraph.</p>
```
The HTML element encompasses everything from the start tag to the end tag.

Document Structure:

An HTML document typically starts with a declaration:

```
<!DOCTYPE html>
```
This specifies that the document follows the HTML5 standard.

The <html> element is the root element of an HTML page.

Inside the <html> element, we have:

<head>: Contains meta-information about the page (e.g., title, character encoding).

<title>: Specifies the page's title (displayed in the browser’s title bar or tab).

<body>: Contains the visible content (headings, paragraphs, images, links, etc.).

Example:

```
 <!DOCTYPE html>
 <html>
   <head>
     <title>Page Title</title>
   </head>
   <body>
     <h1>My First Heading</h1>
     <p>My first paragraph.</p>
   </body>
 </html>
```
In this example:

<h1> defines a large heading.

<p> defines a paragraph.

Web Browsers:

Browsers (like Chrome, Edge, Firefox, and Safari) read HTML documents and display them correctly.

Browsers don’t show the HTML tags directly; they use them to determine how to display the content.

HTML History:

HTML has evolved.

HTML 2.0 (1995)

HTML 3.2 (1997)

HTML 4.01 (1999)

XHTML 1.0 (2000)

HTML5 (2014)

We now follow the latest HTML5 standard.

Remember, HTML provides the structure, while other technologies like CSS handle presentation (styling), and JavaScript handle behaviour. Together, they create rich web experiences! 😊 https://findduzz.hashnode.dev/what-is-html
Vulnerabilities: Cause for Concern
Tags: vscode, npm, javascript, security
Published: 2024-05-09 21:35:29

So, it's a bit alarming when your terminal is showing you all kinds of vulnerabilities. After running `npm audit` and `npm audit fix`, I see a slew of red flags. So, of course, I traversed the web in search of answers. After updating everything multiple times and trying different versions, I only ended up with more red flags.


![xmldom critical vulnerabilities](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d80avwoxusnw1z8pts0o.png)

Which vulnerabilities should I be concerned about? After reading several forums and blogs, it seems as though having some vulnerabilities at any point is almost unescapable.

I saw that you can force some things by tweaking the package-lock.json file. I also saw that some things will say "No fix available" Well, thats not very comforting.

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

I'm interested in hearing about how you manage your vulnerabilities - and how do we know if they are a cause for concern? I'd love to hear you're feedback and recommendations. Thank you!
A simple GeoJSON serializer for Jackson
Tags: geojson, postgis, jackson, java
Published: 2024-05-09 21:00:13

When you are working with Geometry types in Postgis, if you are using a backend with Java and others JVM compatible languages, at some point you will need to send it as GeoJSON.


I was using Play Framework, which uses FasterXML/jackson for JSON serialization, but I couldn't find a suitable library for it. I found something but it was a bit outdated. The good news is that when it is Open Source, anything is a fork of distance :D

I made a fork and added support to get the SRID of any Geometry. I am not sure if it support all the use cases, but the good thing about Open Source software is that anyone can do a PR to improve things.

Any new test is welcome!

https://github.com/GeosatCO/postgis-geojson


# Usage

After import it, you need to register the library module within the `ObjectMapper` instance you are going to use:

```java
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new PostGISModule());
```

Then you can serialize objects:

```java
String json = mapper.writeValueAsString(new Point(125.6, 10.1));
```

And deserialize them:

```java
Point point = (Point) mapper.readValue(json, Geometry.class);
```

Peace ✌
Test Post
Published: 2024-05-09 20:33:23

Let's see how this works. It looks like you _can't_ pick a font, but a lot of other markdown works. Seems basically like **Slack**, which might be good enough for us. [This is the homepage](dev.to), which is pretty ugly, but hopefully we won't need to see it.
Here's a dog:
![A dumb dog](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/biol6pw05op9e2ehpl0g.jpg)

## Here's a heading
Seems to be like Github in that respect. Looks like there's only one size of heading. 

- We do
- Have bullets
- If we want
- Though

Okay I think that's it for now.