고대 유목 민족의 아이들은 말타기, 활쏘기, 씨름과 같은 놀이를 통해 기마 민족으로서의 정체성을 쌓아나갔다. 2,000년 전 중국 북방을 호령했던 흉노족의 아이들은 어려서부터 작은 동물을 사냥하는 놀이를 하며 기마술을 익혔다. 걷기도 전부터 기마 놀이를 하며 말 타는 법을 익힌 셈이다. 그 결과, 그들의 넓적다리는 기마 자세를 하기에 편하도록 변형되기도 했다.
- 강인욱의 《세상 모든 것의 기원》 중에서 -
* 유목민들 아이들에게 말타기는 생활이자 놀이입니다. 어려서부터 사냥과 기마놀이를 하면서 말타기를 익히고, 그 기마술로 세계를 제패하는 꿈을 꿈고 이루었습니다. 우리에게도 유목 민족의 피가 흐르고 있습니다. 오늘날의 기마놀이는 말타기가 아닙니다. 컴퓨터, 인터넷, 디지털, AI(인공지능), 블록체인, 메타버스입니다. 우리 아이들의 미래가 여기에 걸려 있습니다.
‘둥글 원(圓)’ 자와 ‘미끄러울 활(滑)’ 자로 이루어져 있다. ‘활(滑)’은 거침없이 매끄럽게 일이 진행되는 것을 의미한다고 볼 수 있다. ‘윤활유(潤滑油)’의 ‘활’ 자를 생각하면 ‘원활’도 바르게 적는 데 도움이 된다. ‘원할’은 사전에 등재돼 있지 않은 낱말, 즉 존재하지 않는 단어다.
‘원활’은 모난 데가 없고 원만한 것을 뜻하는 말로도 쓰인다. “인간 상호 관계의 원활은 상대와의 충돌이 없음을 의미한다”처럼 사용된다.
‘활’을 써야 할지, ‘할’을 써야 할지 망설여지는 단어로는 ‘역활’과 ‘역할’도 있다. 이때는 ‘역할’이 바른 말이다. ‘역할(役割)’은 ‘부릴 역(役)’ 자와 ‘나눌 할(割)’ 자가 만나 이루어진 단어다. ‘역활’은 없는 낱말이다. ‘원활’과 같은 모양의 ‘역활’로 잘못 쓰는 경우가 많으니 주의해야 한다.
풀스택(Full-Stack) 또는 소위 "자기중심 웹 개발자"가 되는 것에 대해 철저하고 진실된 토론을 해보자. 많은 초보들은 이것이 실제로 무엇을 의미하는지, 무엇이 관련되는지 알지 못한다.게다가 요즘에는 부트캠프를 제공하고 풀스택 프로그램을 판매하는 수많은 온라인 강좌가 있습니다.
프론트엔드, 백엔드, 풀스택 웹 개발에 대한 몇 가지 오해부터 시작해 보겠습니다. 이어서풀스택 개발자가 되는 것을 목표로 삼아서는 안 되는 이유에 대해 알아보겠습니다.
팔로우 비용은 전혀 들지 않습니다!
프론트엔드 개발이란 무엇입니까?
간단히 말해서프런트엔드는 웹 사이트, 웹 앱, 기본 모바일 앱 및 하이브리드 애플리케이션을 위한 UI 또는 사용자 인터페이스입니다.프런트엔드 개발자가 되려면HTML, CSS 및 JavaScript에 대한 통찰력이 필요합니다. 여기서 HTML은 웹페이지의 기본 또는 추정 마크업 언어이고, 스타일을 추가하기 위한 CSS, 추가 기능을 추가하기 위한 기본 프로그래밍 언어(JavaScript)입니다. 웹페이지를 활성화하는 것입니다.
프로젝트의 복잡성에 따라 프런트엔드는애플리케이션의 다양한 부분을 처리하기 위해다양한 타사 프런트엔드 라이브러리 및 프레임워크와 통합될 예정입니다 .거기에는 수많은 것들이 있습니다.그 중 일부를 언급하자면 React, Angular, NextJS, Lodash, Anxios 등이 있으며 그 목록은 계속됩니다.
따라서 프런트엔드는 백엔드와 통신하고 HTTP 요청과 웹 소켓을 통해 데이터를 수신합니다.
백엔드 개발이란 무엇입니까?
백엔드는 프런트엔드 UI로부터 데이터 업데이트를 수신한 후 데이터베이스를 업데이트합니다. 다르게 말하면백엔드는 UI에 표시할 데이터를 반환합니다.게다가백엔드 개발에는 웹 앱의 중요한 규칙이 있습니다. 즉, 프론트엔드 코드는 브라우저의 모든 사람이 액세스할 수 있으므로 항상 취약하고 항상 손상될 수 있는 것처럼 취급해야 합니다.백엔드 개발자는 데이터베이스가 손상되지 않도록 보호하기 위한 게이트 역할을 하는 특정 방법을 사용합니다.
백엔드 개발자는 다양한 프로그래밍 언어를 사용하며API는 일반적으로 마이크로서비스로 분할되어 하나는 Java, 다른 하나는 Scala, 다른 하나는 Node.js의 JavaScript 또는 기타 프로그래밍 언어로 작성될 수 있습니다.
풀스택 개발
이름에서 알 수 있듯이풀스택 개발자는 자체적으로 프런트엔드와 백엔드 작업을 모두 처리할 수 있습니다(두 번째 개발자를 모집할 필요 없음).백엔드 및 프론트엔드 개발에 대한 지식에도 불구하고 그들은 훨씬 더 많은 것을 알고 있습니다. 이는 코드를 묶고 애플리케이션을 배포하는 다양한 방법을 알고 있음을 의미합니다.
풀스택 개발 시장에 있는 많은 직업이 약간 오해를 불러일으킬 수 있다는점을 명심하세요. 이에 대해서는 잠시 후에 검토해 보겠습니다.그러나 실제로풀스택 작업은 예산이 부족한 소규모 회사에서 이루어지게 될 것입니다.이러한 회사는 각 사람에게서 최대한 많은 것을 얻기를 원합니다. 따라서 방금 언급한 작업을 수행하는 것 외에도 풀 스택 개발자는 인프라 관리와 같은 많은 DevOps를 수행할 것입니다. 대기업의 다른 사람이 처리하게 됩니다.
그렇다면 왜 풀스택 개발자가 되어서는 안 될까요?
이유 1.
대부분의 채용 정보 목록은 특정 팀의 특정 요구 사항과 실제로 일치하지 않는 광범위한 요구 사항을 제시합니다.예를 들어 Adobe에서 프론트엔드 개발자로 일하고 있는 친구에게 이에 관해 몇 가지 질문을 했더니, 그 친구도 프론트엔드 지원 당시 풀스택 개발자였다고 답했습니다.그리고 명확하게 설명하기 위해 그는 사실상풀 스택 개발자는 두 위치(프런트엔드와 백엔드) 모두에 지원할 수있지만 확보 후 직면하게 될 유일한 문제 또는 거부의 원인이 될 수도 있다고 덧붙였습니다.한 분야에 전문화되어 있지 않은데,그 자신에게도 그런 일이 일어났습니다.그는 프론트엔드에 전념하는 팀에서 프론트엔드 개발자로 일하고 있었습니다.
분석해 보면,필요한 분야에 전문 지식이 없다면 채용 제안을 받지 못할 가능성도 높습니다.그리고 이것은 모든 것(프런트엔드와 백엔드)을 단숨에 가르치는 60시간 이상의 비디오 콘텐츠로 부트 캠프를 수강하는 것의 단점 중하나일 수 있습니다.
내 블로그 독자만을 위한 독점!
웹 개발에 관한 최신 팁과 요령을 항상 찾고 계십니까?더 이상 보지 마세요!웹 개발 팁 과현재 인기가 높은 무료 도구 및 리소스에 대한 짧은 인기 기사를공유하는 주간 뉴스레터에 가입하세요.게다가 다른 곳에서는 볼 수 없는 독점 콘텐츠도 던져드릴게요!지금 구독하고 항상 한발 앞서가는 웹 개발자 커뮤니티에 참여하세요.
백엔드 개발자는 회사 데이터의 수호자이며 가장 귀중한 자산 중 하나입니다.많은 회사에서는데이터베이스를 엉망으로 만들기가 매우 쉽기 때문에 새로운 백엔드 개발자를 고용하는 것을 꺼릴 것입니다.엉망으로 만드는 것은 많은 비용이 들 수 있고 그들의 평판을 완전히 망칠 수 있기 때문에당신이 그 일을 할 만큼 자신감이 있다는 것을 그들에게 설득하기 어려울 것입니다. 그리고 당신은 Back을 포함하는 Full-Stack 개발자이기 때문입니다. -결국, 당신은 그런 고민을 많이 물려받게 될 거예요.
이유 3.
소프트웨어 개발의 일부 틈새 분야에서 탁월한 전문가는 일반적으로일반 전문가보다 더 많은 돈을 벌 수 있습니다. 왜냐하면 보수를 많이 받을 수 있는 회사는 특정 분야의 전문가를 원하기 때문입니다.
마지막 생각들
이제 돈이 전부는 아니며일부 개발자는 (나처럼) 풀 스택 개발자가 되는 것을 즐깁니다. 이는 아무런 문제가 없으며 풀 스택 개발자가 되는 것이 목표라면 그것은 경이로운 일입니다.계속해라.하지만 위에서 언급했듯이풀스택 개발자가 되기 위해서는 백엔드와 프론트엔드 모두의 전문가가 되기 위한 시간과 헌신이 필요합니다.
그래서 제가 제안하고 싶은 것은한 분야에 깊이 들어가 폭넓은 분야로 진출하라는것입니다 .프론트엔드 개발을 마스터하시면 계속해서 발전하실 것이라고 확신합니다.자신이 프론트엔드의 마스터라고 느끼고 기존의 많은 오픈 소스 프로젝트에 기여한 후에 는 프로젝트를 구축하고 프런트엔드 기술을 백엔드와 혼합하여천천히 그러나 확실하게백엔드에 들어갈 수 있습니다.백엔드에 뛰어들려고합니다.
농사를 짓기 위해서는 무릎을 굽혀야 한다. 고개를 숙여야 한다. 기어야 한다. 철저히 나를 낮추어 생명이 자라나는 소리에 귀를 기울였다. 작은 씨앗 하나 심었을 뿐인데 자연은 몇 배의 결실로 보답해 주었다. 자연과의 소통 속에서 헛헛했던 마음이 치유되었고 위로를 받았다. 흙 속을 뒹굴며 초록 범벅으로 이십 대의 마지막을 물들였다.
- 이소영의 《엄마표 발도르프 자연육아》 중에서 -
* 농사를 지어보면 작은 씨앗 하나가 갖는 가치와 신비를 온몸으로 체득하게 됩니다. 나무를 키워봐도 알게 되는 것이 있습니다. 자신의 키높이만큼 깊이깊이 땅속으로 뿌리를 내린다는 사실을. 적당히 뿌리를 내린다면 비바람에 나무가 뽑히고 말 것입니다. 이십 대는 작은 씨앗과도 같습니다. 뿌리를 내리는 시간입니다. 낮은 자세와 겸손을 익히는 시기입니다.
turtle은 간단한 움직임을 반복하는 프로그램을 사용하여 복잡한 모양을 그릴 수 있습니다.
In Python, turtle graphics provides a representation of a physical “turtle” (a little robot with a pen) that draws on a sheet of paper on the floor.
It’s an effective and well-proven way for learners to encounter programming concepts and interaction with software, as it provides instant, visible feedback. It also provides convenient access to graphical output in general.
Turtle drawing was originally created as an educational tool, to be used by teachers in the classroom. For the programmer who needs to produce some graphical output it can be a way to do that without the overhead of introducing more complex or external libraries into their work.
Tutorial
New users should start here. In this tutorial we’ll explore some of the basics of turtle drawing.
Starting a turtle environment
In a Python shell, import all the objects of theturtlemodule:
from turtle import *
If you run into aNomodulenamed'_tkinter'error, you’ll have to install theTkinterfacepackageon your system.
Basic drawing
Send the turtle forward 100 steps:
forward(100)
You should see (most likely, in a new window on your display) a line drawn by the turtle, heading East. Change the direction of the turtle, so that it turns 120 degrees left (anti-clockwise):
left(120)
Let’s continue by drawing a triangle:
forward(100)
left(120)
forward(100)
Notice how the turtle, represented by an arrow, points in different directions as you steer it.
Experiment with those commands, and also withbackward()andright().
펜 제어
Try changing the color - for example,color('blue')- and width of the line - for example,width(3)- and then drawing again.
You can also move the turtle around without drawing, by lifting up the pen:up()before moving. To start drawing again, usedown().
The turtle’s position
Send your turtle back to its starting-point (useful if it has disappeared off-screen):
home()
The home position is at the center of the turtle’s screen. If you ever need to know them, get the turtle’s x-y co-ordinates with:
pos()
Home is at(0,0).
And after a while, it will probably help to clear the window so we can start anew:
clearscreen()
Making algorithmic patterns
Using loops, it’s possible to build up geometric patterns:
for steps in range(100):
for c in ('blue', 'red', 'green'):
color(c)
forward(steps)
right(30)
- which of course, are limited only by the imagination!
Let’s draw the star shape at the top of this page. We want red lines, filled in with yellow:
color('red')
fillcolor('yellow')
Just asup()anddown()determine whether lines will be drawn, filling can be turned on and off:
begin_fill()
Next we’ll create a loop:
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
abs(pos())<1is a good way to know when the turtle is back at its home position.
Finally, complete the filling:
end_fill()
(Note that filling only actually takes place when you give theend_fill()command.)
How to…
This section covers some typical turtle use-cases and approaches.
Get started as quickly as possible
One of the joys of turtle graphics is the immediate, visual feedback that’s available from simple commands - it’s an excellent way to introduce children to programming ideas, with a minimum of overhead (not just children, of course).
The turtle module makes this possible by exposing all its basic functionality as functions, available withfromturtleimport*. Theturtle graphics tutorialcovers this approach.
It’s worth noting that many of the turtle commands also have even more terse equivalents, such asfd()forforward(). These are especially useful when working with learners for whom typing is not a skill.
You’ll need to have theTkinterfacepackageinstalled on your system for turtle graphics to work. Be warned that this is not always straightforward, so check this in advance if you’re planning to use turtle graphics with a learner.