블로그

솔 (Sol)

개발 기술 스택 심볼 & 마스코트 톺아보기

‘노트북 꾸미기’ 좋아하세요? 많은 개발자들이 노트북에 자기가 쓰고 있거나 좋아하는 기술 스택 로고 스티커를 붙이며 나만의 개성을 표현하곤 하는데요. 혹시 여러분의 노트북엔 어떤 스티커가 붙어 있나요?귀엽고 멋진 건 놓칠 수 없는 개발자라면 주목! 수많은 개발자들의 마음을 사로잡은 기술 스택에 숨은 아기자기한 심볼과 마스코트 몇 가지를 가볍게 소개할게요.썸네일 속 노트북은 인프런 백엔드 개발자 제이의 노트북!지금 쓰고 있는 스택(GraphQL 등...)이나 앞으로 배우고 싶은 스택(Go 등...), “Think Twice Code Once” 같은 개발자 밈 스티커까지 컨퍼런스나 주변 개발자 분들께 받은 스티커가 붙어 있어요. 🥰프로그래밍 언어 로고/심볼자바 (Java) 모락모락 김이 나는 귀여운 커피 컵! 자바 개발자들은 인도네시아 자바 섬에서 난 원두로 만든 커피를 마시곤 했대요. 몇 시간 동안 머리를 맞대고 토의한 끝에 정한 이름이라고 합니다.파이썬 (Python)‘비단뱀’이라는 뜻의 파이썬. 심볼 속 뱀 두 마리를 찾으셨나요? 파이썬을 만든 귀도 반 로섬(Guido van Rossum)이 영국 코미디 그룹 몬티 파이튼(Monty Python)에서 이름을 따왔다고 해요.스위프트 (Swift) iOS, macOS 개발에 쓰이는 스위프트는 ‘칼새’ 혹은 ‘신속한, 재빠른’이라는 뜻의 영단어 Swift에서 따온 이름이에요. 로고 모양도 날쌘 칼새를 닮았죠? 신속함을 강조하는 스위프트의 정체성을 잘 보여주네요.코틀린 (Kotlin) 자바와 비슷하면서도 간결한 문법으로 이목을 끄는 코틀린! 코틀린을 개발한 젯브레인(JetBrains) 사의 R&D 센터가 있는 러시아 코틀린(Ко́тлин) 섬에서 이름을 따왔는데요. 자바 역시 섬 이름인 걸 보면 두 언어의 관계가 재미있죠. 심볼 역시 머리글자 K를 간결하게 변형한 모양이에요.•••다양한 기술 스택 속 귀여운 마스코트깃허브 (Github) - 옥토캣 (Octocat) 복잡한 코드를 결합하고 관리하는 깃허브의 문어 다리 달린 고양이 마스코트 ‘옥토캣’. 3개 이상의 브랜치를 결합하는 작업을 가리키는 Octopus Merge에서 영감을 얻었다고 해요.리눅스 (Linux) - 턱스 (Tux) 믿거나 말거나! 리눅스를 만든 리누스 토르발스(Linus Torvalds)는 호주 캔버라 동물원에서 펭귄에게 물어뜯겨 펭귄염(?)에 걸린 적이 있다고 해요. 리눅스 마스코트로 삼을 정도면 그만큼 강렬한 경험이었던 모양이죠? 😅PHP (PHP: Hypertext Preprocessor) - 코끼리 (ElePHPant) 대문자로 쓴 PHP라는 글자를 옆에서 비스듬히 보면 코끼리처럼 보인다는 이유로 코끼리 마스코트를 갖게 된 PHP. elePHPant라는 말장난도 왠지 귀엽지 않나요?러스트 (Rust) - 페리스 (Ferris) 최근 개발자들 사이에 코어한 인기를 끄는 언어, 러스트의 비공식 마스코트는 주황색 게 모양이죠. 갑각류(Crustacean)에서 따온 듯한 요 마스코트 덕에 러스트 개발자들은 스스로를 Rustacean이라고 부른다고 하네요.고 (Golang) - 고 고퍼 (Go Gopher) 일러스트레이터 르네 프렌치(Renee French)가 그린 고퍼는 프로그래밍 언어 Go를 상징하는 주머니고퍼(흙파는쥐) 모양의 마스코트예요. 원래는 특별히 정해진 색이 없었다가 Google I/O 2011에서 Go App Engine 런타임을 출시하면서 파란색이 되었다고 해요.안드로이드 (Android) - 안드로보이 (Androboi) 단순한 듯 귀여운 녹색 로봇 마스코트 안드로보이! 안드로이드는 버전 1.1부터 OS 버전에 따라 디저트 이름을 붙이기로 유명한데 (컵케이크, 도넛, 오레오, 롤리팝…) 디저트 모양에 따라 달라지는 안드로보이의 모습을 보는 소소한 재미도 있죠.셀 수 없이 많은 기술 스택만큼, 매력적인 심볼과 마스코트도 무궁무진한데요. 여러분이 좋아하는 기술 심볼/마스코트는 어떻게 생겼나요? 댓글로 여러분의 최애 스킬(!)의 모습을 소개해주세요. 🥰

기타 (개발 · 프로그래밍)javapythonswiftkotlingithublinuxphpgoandroidrust

일코

[pyhwpx] 한/글 자동화 문의 및 요청의 90%는 ㅇㅇ 관련이었어요.

안녕하세요? 일코입니다. 유튜브와 블로그를 운영하면서 받았던 문의 중 90%는바로 "표"에 관한 내용들이었습니다.표는 비단 행정뿐만 아니라,한/글을 통해 작성되는 문서에서 가장 많이 쓰이는 컨트롤이죠.그런데 기존의 한/글 오토메이션 API를 통해 표를 읽어오거나, 표를 작성하는 메서드는다소 큰 진입장벽이 있었습니다. 예를 들어 비교적 최근 만든 pyhwpx에서5행5열의 표를 만들고 "글자처럼 취급"을 적용하는 코드는아래 세 줄이면 되지만,from pyhwpx import Hwp hwp = Hwp() hwp.create_table(5, 5, treat_as_char=True) 그런데,기존 오토메이션API를 통해 동일한 표를 직접 생성하려면무려 아래의 코드를 작성해야 합니다.(한/글 오토메이션API에 관심있으신 분은, 차근차근 읽어보셔도 좋습니다.)import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") rows = 5 # 행 갯수 cols = 5 # 열 갯수 width_type = 0 # 너비: 단에 맞춤 height_type = 0 # 높이: 자동 height = 0 # height 기본값 초기화 treat_as_char = True # 글자처럼 취급 pset = hwp.HParameterSet.HTableCreation hwp.HAction.GetDefault("TableCreate", pset.HSet) # 표 생성 시작 pset.Rows = rows pset.Cols = cols pset.WidthType = width_type # 너비 지정(0:단에맞춤, 1:문단에맞춤, 2:임의값) pset.HeightType = height_type # 높이 지정(0:자동, 1:임의값) sec_def = hwp.HParameterSet.HSecDef hwp.HAction.GetDefault("PageSetup", sec_def.HSet) total_width = (sec_def.PageDef.PaperWidth - sec_def.PageDef.LeftMargin - sec_def.PageDef.RightMargin - sec_def.PageDef.GutterLen - hwp.MiliToHwpUnit(2)) pset.WidthValue = hwp.MiliToHwpUnit(total_width) # 표 너비 if height and height_type == 1: # 표높이가 정의되어 있으면 total_height = (sec_def.PageDef.PaperHeight - sec_def.PageDef.TopMargin - sec_def.PageDef.BottomMargin - sec_def.PageDef.HeaderLen - sec_def.PageDef.FooterLen - hwp.MiliToHwpUnit(2)) pset.HeightValue = hwp.MiliToHwpUnit(height) # 표 높이 pset.CreateItemArray("RowHeight", rows) # 행 m개 생성 each_row_height = total_height - hwp.MiliToHwpUnit(rows) for i in range(rows): pset.RowHeight.SetItem(i, each_row_height) # 1열 pset.TableProperties.Height = total_height pset.CreateItemArray("ColWidth", cols) # 열 n개 생성 each_col_width = total_width - hwp.MiliToHwpUnit(3.6 * cols) for i in range(cols): pset.ColWidth.SetItem(i, each_col_width) # 1열 # pset.TableProperties.TreatAsChar = treat_as_char # 글자처럼 취급 pset.TableProperties.Width = total_width # hwp.MiliToHwpUnit(148) # 표 너비 적용 hwp.HAction.Execute("TableCreate", pset.HSet) # 코드 실행 # 글자처럼 취급 여부 적용(treat_as_char) ctrl = hwp.CurSelectedCtrl or hwp.ParentCtrl pset = hwp.CreateSet("Table") pset.SetItem("TreatAsChar", treat_as_char) ctrl.Properties = pset결과는 위와 동일합니다 고작 표 하나를 만들기 위해질릴만큼 길고 복잡한 저 API코드를 작성해야 한다는 사실을 알게 되면(특히 회사원들) 어느 누가 한/글 자동화를 시도할까 싶었습니다.전부 언급할 수도 없는 상당한 분량의 백그라운드 지식을 알려주는 것도 큰 부담이었습니다.아래아한글 API의 구조와 실행방법, 파라미터셋 사용법,파라미터셋의 서브아이템셋을 정의해야 하는 경우와 정의방법,암호같은 API 문서를 읽는 방법..ㅜ 작년말에 금융감독원 연수원에서 아래아한글 자동화 강의요청을 해 주셨거든요.시간은 짧고, 할 말은 많고, 저런 무지막지한 API 코드 보여주면 재미가 없을 것 같아서현업에 쓰일 법한 함수들을 묶어서 시연 위주로 보여드렸는데,그게 계기가 되어,아래아한글 보고서작성 자동화를 위한pyhwpx라는 파이썬모듈을 개발하게 되었습니다.하여튼 이제는 나름의 버전업을 거듭해서0.8 근처까지 왔는데요. 아직 갈 길이 멉니다.그럼에도 create_table, table_to_df나,table_from_data, get_into_nth_table, 특히 put_field_text는한/글 보고서 취합 및 작성 자동화나 엑셀연동에 진심인 분들에게는정말 파워풀한 메서드일 거라고 자부합니다.개발기간도 아직 짧은 편이고, 다소 조악해 보일 수 있습니다.하지만, 정말 수백 건의 문의와 의뢰를 받고 일일이 회신을 드렸던 모든 경험을pyhwpx 모듈에 하나씩 녹여내고 있습니다.pyhwpx 사용법도 알려주세요! - 인프런현재는 블로그와 인프런 QnA에 pyhwpx 짧은 메서드 사용법 위주로 포스팅하고 있지만,오는 2월부터는 작은 프로젝트나, 의뢰 / 문의내용을 토대로pyhwpx의 활용방법도 차근차근 영상과 포스팅으로 풀어볼 예정입니다.업무자동화에 관심이 있는 파이썬 초보 분들, 특히 직장인 분들많은 관심 부탁드립니다^^ 감사합니다.행복한 하루 되세요!

업무 자동화pyhwpx아래아한글hwppython일상의코딩일코파이썬create_table한컴오피스업무자동화

Jason

파이썬 왈러스 연산자 소개(필요성, 사용 예시)

이번 글에서는 왈러스 연산자에 대해 알아보겠습니다.왈러스 연산자는 아무래도 새로운 기능을 위한 개념이라기 보다는 짧고 직관적인 코드 작성에 사용되는 개념이다보니 직접 예제를 보며 설명하겠습니다.왈러스 연산자는 비교적 최근인 3.8 버전에서 등장한 개념입니다.한 줄에서 변수에 값을 할당하면서 동시에 이 값을 표현식의 일부로 사용할 수 있습니다.바다코끼리 연산자를 통해 파이썬에서 할당 표현식을 가능하게 합니다.여러분이 오랜만에 소비를 좀 하려고 합니다. 우선 그래픽 카드도 좀 사고 싶고,,, 그 다음 순위로 책(2권 사야됨), 그 다음 순위로 키보드, 그 다음 순위로 만년필을 선호한다고 가정하겠습니다.이제 온라인 쇼핑몰 속을 돌아다니며 현재 예산에서 무엇을 살 수 있을 지 봅니다!예산 내에서 그래픽 카드를 살 수 있으면 사고, 아니면 책 2권 값을 낼 수 있는 지 확인합니다. 그래도 안 되면 순서대로 키보드, 만년필을 살 수 있는지 확인해야 합니다.능숙한 프로그래머인 여러분들은 이정도는 파이썬으로 자동화하실 수 있죠?my_budget = 1000000 gift_value = { # 그래픽 카드는 품절이랍니다 'gc': 1300000, 'book': 50000, 'keyboard': 55000, 'pen': 80000 } # 99999999 정도면 품절 상품도 구매할 수 있다고 칩시다. value = gift_value.get('gc', 99999999) if value <= my_budget: print('그래픽카드 구매') else: value = gift_value.get('book', 99999999) if value*2 <= my_budget: print('책 주문!') else: value = gift_value.get('keyboard', 99999999) if value <= my_budget: print('키보드 구매') else: value = gift_value.get('pen', 99999999) if value <= my_budget: print('만년필 구매') else: print('살 수 있는 게 없습니다.') print(f'{my_budget}에서 {value}만큼 사용하셨습니다.')의도대로 동작하지만;; 너무 복잡해보이는 코드입니다. 제가 코드를 잘못 짰다고요?elif 사용을 통해 직관적으로 보이게 만들 수 있지만, 그렇게 쉽게 줄여지지 않습니다. 항상 동일 환경 조건에서 비교를 하는 것이 아니며(book 같은 경우에는 *2 후 비교) 각 상품마다 나오는 메시지가 다르기 때문입니다.이제 왈러스 연산자가 나올 시간입니다. 이 코드에 왈러스 연산자를 적용해보겠습니다.my_budget = 1000000 gift_value = { # 그래픽 카드는 품절이랍니다 'gc': 1300000, 'book': 50000, 'keyboard': 55000, 'pen': 80000 } if (value := gift_value.get('gc', 99999999)) <= my_budget: print('그래픽카드 구매') elif (value := gift_value.get('book', 99999999) * 2) <= my_budget: print('책 주문!') elif (value := gift_value.get('keyboard', 99999999)) <= my_budget: print('키보드 구매') elif (value := gift_value.get('pen', 99999999)) <= my_budget: print('만년필 구매') else: print('살 수 있는 게 없습니다.') print(f'{my_budget}에서 {value}만큼 사용하셨습니다')위아래 코드의 차이가 잘 느껴지셨으면 좋겠습니다.지금 본 사례처럼 왈러스 연산자를 사용하면 코드를 더 직관적이게 만들 수 있습니다.조건문 내에서 값을 할당하고 바로 검사, 블록 안밖에서 사용까지 할 수 있으니 정말 편리하다고 느낍니다.다른 사용 예시를 보며 마무리하겠습니다.# 입력값을 받아서 검사하고 처리 if (n := int(input("Enter a number: "))) > 10: print("10보다 큰 수를 입력했군")# 튜플 언패킹을 사용한 예 a, b = (1, 2) print(a, b) # 출력: 1 2 # 튜플 타입에서 왈러스 연산자를 사용하려면 반드시 명시적으로 괄호를 해주거나 따로 언패킹, 패킹해야 됩니다. (a := 1, b := 2) print(a, b) # 출력: 1 2 원문: https://pinstella.com/writer/articles/7

프로그래밍 언어파이썬pythonwalruscleancode

[프로그래밍 언어의 고민] JAVA와 Python중 언어 선택하기

개발자가 되기에 앞써  나는 비전공자이였기에, 혼자서하기에 많은 어려움이 있다. 처음 접하게되는 접근성의 어려움, 동기가 없이 혼자 시작해야함의 외로움, 남들보다 늦게 시작하는 불안감등 여러 어려움들이 있겠지만,  그중 내가 가장 크게 느끼는 어려운고민은  지금 내가 하고 공부하고 있는 개발이 옳은 길일까? 에 대한 의문점이 였다.  분명 이 의문점을 해결하기에는 온라인커뮤니티로도 한계가 있으며,  양산형적인(?) 학원 같은 곳도 형식적일것 같아,  최근에 알게된 개발자 훈련캠프를 알게되어 지원하였고 운이 좋게 최종테스트까지 다달았다.    하지만, 결국 시간이 턱없이 부족하여 떨어졌다.  떨어진 이유야 여러가지가 있겠지만,(+실력이 부족한것도) 익숙하지 않았던 JAVA 로 시험을 본게 아쉬웠다. 물론 최종테스트때 java언어만 국한되어 있다보니,  더 충분히 연습했어야 했는데, 그렇지 못한점도 있지만,  어쨌든 java라는 언어는 오래되기도 했고, 대기업 및 여러 국내기업에서 많이 사용하고 있는 언어다 보니,  지금이라도 익히면 도움이 될까 하고 공부하였었다.    하지만, 떨어지고 나서야 다시한번 내가 사용할 언어에 대해 되돌아보는 시간을 가지게 되었다. 나는 원래 Python언어로 개발공부를 시작했기에, 과연 JAVA로 바꾸는게 맞는지에 대한 의문이였다. (즉, 이후부터는 필자의 개인적인 의견이 많이 들어감을 참고바람)   가장 먼저 확인한 것은 전망이였다.  확인해본 방법은 아래와 같다.  1.티오베(프로그래밍순위사이트) 1위. Python,   2위. C언어   ,3위. Java 2. 구글트랜드검색 파란색: python , 빨간색 : java 3. 레드몽크(프로그래밍 순위사이트) 2위 : python,   3위 : java    등 그외에도 여러 사이트를 참조해봤지만, 그래도 윗내용은 믿고 맡길수 있는 사이트들이다. 물론, 티오베는 세계의 숙련된 엔지니어, 교육과정등 공급 업체의 수를 기반으로 프로그래밍 언어의 인기도 중심이고, 구글 트랜드검색은 경우의 수가 너무 많으며,  레드몽크도 GitHub와 Stack Overflow를 참고하여 데이터를 제공한다.    물론, 위자료는 세계적인 데이터로, 대한민국에서 개발자로 취업을 할려면 국내에서는 대부분의 대기업들은 Java언어를 사용하고 있어 지금 당장 대기업에 취업하고 싶다면 java의 언어를 선택하는게 좋다.  하지만, 좀더 멀리 보자면 전체적으로 비중이 커져가고 있는 python을 한번 봐보자.   이미 구글에서는 C++과 python을 백엔드로 사용하고 있고,  가장 대표적인 python어플로는 인스타그램이 있다.  그리고 OTT 시장의 (Netflix)넥플릭스도 파이썬으로 서비스를 관리하고 있으며,  클라우드 서비스 (Dropbox)드롭박스도 파이썬으로 개발하였다.  국내기업에서는 요기요 서비스가 파이썬으로 개발되는걸로 알고 있다.    게다가 국내 기업에서 개발자 채용테스트로  코딩테스트를 많이 보는데, python언어도 포함되어 점점 사용범위가 확대되어가고 있음을 알 수 있다. 현재는 AI(인공지능)와 데이터엔지니어부분에서 활용도가 점점 넓어지고 있는데,  좀더 직관적으로 보자면 자동차의 자율주행이나, 드론, 선박등 모빌리티 업계에 적용되고 있고,  또, 종종 보이는 서빙로봇과 같이 로봇에서도 많이 사용하는 언어이기에  이쪽으로 관심이 있다면, python언어  선택해볼만하다.    안드로이드때문에 앱부분은 java의 언어가 더 막강하지만,  안드로이드의 내장되어있는 기능을 사용하지 않는 플랫폼이나, 커뮤니티 앱일 경우  하이브리드로 만들기 때문에 다른 언어도 사용하여 만들기 가능하다. (웹도 마찬가지) --------------------------------------------------------------------------------------------------------------- 마지막으로 정리를 해보자면,  어느새부턴가 사람이름 세글자가 한자가 아닌 순 한글로된 이름으로  바뀌기 시작했다.  아직, 한자로된 이름을 가진 사람들이 더 많지만, 앞으로 태어날 아이들의 이름이 한자로된 이름이 계속 많을거라곤 장담하기 어렵다. 상대적으로 한자가 어렵다보니, 점점 아는 사람이 적어지고 한글이 편하기 때문일 것이다.  그렇다고 한자이름이 잘못되거나 없애야한다는 뜻은 아니다.  시대적흐름이 만들고 있을뿐..    java와 python도 비슷하다고 본다.  상대적으로 java보다는 python언어가 배우기 쉽다. 사용하기도 편리하다.  그리고 세계적으로 python을 선호하는 사람들이 많아지고 있다. 코딩언어도 결국 언어이다 보니  이건 소통하는 언어가 갖는 공통적인 습성이 아닐까싶다.    난 다시 python으로 돌아가 공부를 시작하고자 한다.                                

프로그래밍 언어진로javapython내생각언어공부고민

Jason

파이참에서 새 프로젝트 만들기 (+줄 번호 옆 빨간 점)

파이참에서 새 파이썬 프로젝트를 만드는 방법에 대해 알아보자.   그전에 먼저, 프로젝트를 구분해야 하는 이유를 간단하게 알아보자. 흔히 a강의 실습, b강의 실습, 프로젝트c 등 다양하게 프로젝트를 만들어서 코딩을 한다. 이렇게 구분하는 이유는 가상환경 때문, 어떤 프로젝트에서 사용되는 패키지가 다른 프로젝트에서는 버전이 다르거나 필요없을 수 있다. 이름 구분 때문. 사실 가장 큰 이유이다. 다른 사람과 코드를 피드백, 전달, 협업할 때 유용하다. (프로젝트 파일을 통째로 넘기면 되니깐)   파이참에 접속하면 다음과 같은 화면이 뜬다. 혹시라도 안 뜬다면(기존의 프로젝트가 열린다면) 맨위에 파일 -> 새 프로젝트를 눌러주면 된다.   여기서 새 프로젝트를 눌러준다.       일단 프로젝트가 저장될 위치를 선택해야 한다. 바탕화면에 저장하는 것을 추천하다. 바탕화면에 hello 폴더(프로젝트 폴더)를 넣고 싶으면 윈도우는 사진처럼 적으면 된다. 그리고 바로 아래쪽에 다음을 이용한 새 환경을 체크한다. 이전에 구성된 인터프리터를 체크하는 것은, 다른 프로젝트의 버전, 패키지를 완전히 공유하겠다는 것이라서, 비추천한다, 다음을 이용한 새 환경을 체크하면, 자동적으로 프로젝트가 저장되는 폴더 안에 venv 폴더라고 지정되어 있을 것이다.   아래쪽에 main.py welcome script를 체크하는 개인의 기호에 맡긴다.   그리고 맨 아래쪽에서 오른쪽에 있는 생성 버튼을 누른다.   조금 더 기다리자.   모든 준비가 완료되면, main.py가 보일 것이다. (프로젝트 생성 시 체크박스를 체크하였다면)   가장 왼쪽에는 프로젝트 디렉토리 구조를 한 번에 볼 수 있다, 가운데부터 쭉 main.py 코드가 나와있다.   코드 가장 왼쪽에는 줄 번호가 나와있다. 그리고 실행조건이 나와있다. 여기서 빨간 점을 볼 수 있는데, 누르면 사라진다.(없앨 수 있다) 디버깅이라는 것을 할 때 사용되는 것이므로, 코드 실행에는 큰 영향을 주지 않는다.   코드를 실행하는 방법은 다양하다. main.py를 보고 있는 상태에서 Ctrl 키 + Shift 키 + 단축키F10을 동시에 눌러준다. main.py 코드 아무데서나 마우스 오른쪽을 누른 후 실행을 누른다. 파이참 화면 오른쪽 위에 실행버튼을 누른다.     다음은 디렉토리 구조가 나와있는 곳(파이참 화면에서 왼쪽)에서 파일이나 디렉토리를 생성하는 영상이다.   다음은 디렉토리 구조가 나와있는 곳에서 파일이나 디렉토리를 삭제하는 영상이다.

파이참pycharm파이썬python코딩프로그래밍인프런

DJANGO_1

※파이썬 가상환경을 구축한 상황이라 가정하고 진행하겠습니다 (가상환경 구축은 나중에 추가 정리해서 올리겠습니다.)   Visual Studio Code로 진행했으며 cmd 터미널 환경에서 Django-admin startproject config .  명령어를 사용해주면 장고가 시작됩니다. (config 옆에 있는 . 까지 포함해야 합니다.) 장고파일을 만든 후 python manage.py startapp [앱이름] 명령어를 사용하면 작업할 앱을 만들수 있습니다.    오늘 Django_1정리는 url분리와 template 분리에 대해 정리하겠습니다. 먼저 앱을 생성해준 후, django를 만들때 생성된 config파일로 이동해줍니다. 그럼 config파일 내부에 urls.py파일을 확인할 수 있을겁니다.  urls.py에서 경로를 설정해주면 됩니다. urlpattern설정하는 방법에는 절대경로와 상대경로의 방법이 있습니다. 절대경로는 /로 시작하면 /최상위폴더/하위폴더/하위폴더...순으로 작성해주며 되고 상대경로는 현재폴더/연결할 파일...순으로 찾아가는 경로입니다.  urlpatterns = [     path('admin/', admin.site.urls), ] 위 코드를 살펴보면 url코드가 '주소/admin'인 url에 접속하게 되면  admin.site.urls의 화면을 불러온다고 생각하면 될꺼 같습니다.  저는 아래와 같이 경로를 설정해주겠습니다. urlpatterns = [     path('admin/', admin.site.urls),     path('prac/',views.index) ] 위 경로를 설정해주기 위해서는  from prac import views 코드를 작성해줘서 prac파일의 views를 가져온다고 설정해주어야 합니다. 그럼 이와같이 작성이 끝나면 prac앱의 views파일로 이동해줍니다.  혹시 prac이 어디서 나왔냐하면, python manage.py startapp prac으로 prac이라는 앱을 생성해준겁니다. views로 이동하게 되면 처음 url경로를 설정해줄때 views.index 즉 views파일의 index를 호출하게 설정해주었는데 아마 아직 아무것도 작성해주지 않아 index함수가 없는 상태일껍니다.  그럼 def index로 함수를 만들어줍니다. def index(request):     return render(request, "prac/index.html") 저는 index함수를 이렇게 해줬습니다. 일단 설명하기 앞서 render에 대해 잠시 설명하셌습니다. render은 template 함수를 사용할 떄 사용하는 함수입니다. 그럼 또 template는 무엇이냐 하면,  재사용이 가능한 파일로써, views에서 데이터를 받아 동적으로 치환해서 사용합니다. (Django의 정리가 끝나면 마지막에 용어정리를 한번 하도록 하겠습니다.) template이라는 폴거를 만들어 앱과 똑같은 이름의 prac이라는 폴더를 template하위 폴더로 만들어주고 파일을 만들어줘서 관리해줍니다. 따라서 위에 작성한 코드를 다시 살펴보면 "prac/index.html"은 prac폴더의 index.html을 반환하라는 것을 의미합니다.   순서대로 프로젝트 작업 최상위 폴더에 template폴더를 생성하고 앱 이름과 똑같은 prac폴더를 순서대로 만듭니다. 만드는 방법은 그냥 아무폴더 클릭후 esc를 눌러준다음  2번째에 보이는 폴더만들기를 눌러주면 됩니다. 순서대로 만들어줬다면 prac폴더를 클릭후 index.html을 만들어줍니다. 이제는 다시 template을 사용하기 위해서는 다시 config파일의 settings.py를 수정해줘야 합니다. 약 53-54번째 줄을 확인해보면 TEMPLATES가 있는것을 확인할 수 있습니다. TEMAPLATES밑에 'DIRS':[]라고 되어 있을텐데 그 부분을  'DIRS': [BASE_DIR/'template'], 이렇게 수정해주면 됩니다. 쉽게 설명하자면 경로를 설정해준겁니다.    총 처음부터 어떻게 실행되는지 흐름을 정리하자면 모든 폴더와 파일이 세팅되었다는 가정하에 터미널에 서버 시작 명령어 python manage.py runserver을 쳐줍니다. (가상환경 상태에서 명령어를 사용해야되며 command 창에 입력해야됩니다. powershell에서는 안됩니다) 보면 빨간색으로 칠한 부분을 키보드의 ctrl을 누른채로 마우스 좌클릭을 해주면 창이 열립니다. /prac이라고 추가적으로 입력해주면  template/prac 폴더안에 생성한 index.html에 작성한 코드가 보이는 것을 확인할 수 있습니다.   처음에 이제 실행을 하게 되면, config폴더 안의 urls.py에 url주소를 맵핑해준것을 기억할 수 있습니다. prac/이라는 주소를 주었고 따라서 '주소/prac'이라는 url을 주게 되면 views.index를 호출하게 됩니다. 그럼 views.index는 어디에 있냐면 앱 생성 명령어로 통해 생성한 앱인 prac앱의 views로 이동하면 됩니다. 하지만 아직 index함수는 만들어주지 않았으니 새로이 만들어줘야합니다. def index...으로 생성해주고 render함수를 반환해줄수 있도록 합니다. 그러면 다시 views.index에서 prac/index.html로 보내게 됩니다. 그럼 다시 template/prac 순으로 만들어줬던 폴더에 있는 index.html이 호출이 됩니다. 따라서 최종적으로 사용자가 확인할 수 있는 화면은 index.html이며 사용자가             '주소/index'라는 url을 주게 되면 위의 순서대로 넘어와져 결국 index.html이 호출되는 것을 확인할 수 있습니다.    다음에는 테이블 생성으로 찾아뵙겠습니다.   ※제가 공부하면서 참고할려고 만든 블로그라 많이 미숙합니다. 혹시 제가 놓친부분이나 수정할 부분 댓글 남겨주시면 반영하겠습니다. 감사합니다.    

백엔드Djangopython파이썬장고

PYTHON_반복

while문 while문은 조건식이 참인 동안 문장1을 반복하여 실행한다. 즉 조건식이 참이면 일단 while문 내의 문장을 한 번 실행하고, 다시 조건식을 계산하며 그 결과가 참이면 계속해서 반복하게 된다. 이러한 과정에서 조건이 거짓이 되면 while문의 실행은 끝나게 된다. 결과적으로 while문은 어떤 문장을 0번 이상 반복하게 된다.   만일 처음 계산했을 때 바로 거짓이 되는 경우에는 바로 while문이 끝나게 되므로 while문 내에 문장이 한 번도 실행되지 않을 수도 있다.   3만원씩 반복하는 적금1 또한 이 프로그램은 몇 번 적금했는지 적금 횟수를 세도록 확장할 수 있다. 이 횟수를 위해 변수 count를 사용하며 while문 내에서 적금할 때마다 count 값을 1씩 증가시킨다.   3만원씩 반복하는 적금2   화씨-섭씨 변환 표 출력   온도 변환 메뉴 프로그램 이 프로그램은 먼저 온도 변환 메뉴를 보여주고 메뉴 선택에 따라 온도 변환을 수행하여 결과를 출력한다. while menu != 3: 때문에 menu에 3이 입력되기 전까진 "메뉴를 선택하세요"가 뜬다.   for 문 순서형 자료를 이용한 for문 파이썬에서 for문은 문자열, 리스트, 튜플, 사전, 파일 등과 같은 순서형sequence 자료를 사용하여 각 원소에 대해 순차적으로 어떤 일을 반복할 수 있다.  for문은 반복을 제어하기 위해 변수를 사용하는데 이 변수에 순서형 자료에 있는 각 원소가 하나씩 대입되면서 문장을 반복하여 실행하게 된다. 이러한 변수를 루프 제어 변수라고 한다. for 변수 in 순서형 자료: 문장1   홀수 합 계산   여러 사람에게 새해 인사   for문을 이용하여 파일의 각 줄에 대해서 반복하는 것도 가능하다. 파일을 사용하기 위해서는 open함수를 이용하여 해당 파일을 열어야 한다.   총점 평균 계산 for 루프 내에서는 하나의 점수를 나타내는 한 줄을 int 함수를 이용하여 정수로 변환하고 이 정수 값을 total에 더하고 count를 1씩 증가시킨다.   정수 범위를 이용한 for문 for문은 특히 일정 범위의 정수들에 대해 반복하는 데 많이 사용되는데 정수 범위는 range함수를 이용하여 쉽게 표현할 수 있다. range(n)은 0부터 n-1까지의 정수 범위를 나타내고 range(n, m)은 n부터 m-1까지의 정수 범위를 나타낸다.  또한 정수 범위를 정할 때 증가값을 줄 수도 있는데 range(n, m, k)은 n부터 시작해서 k만큼씩 증가하여 m-1까지의 정수들로 이루어진 범위를 나타낸다.      range를 이용한 for 루프 예제 이 for문은 반복을 제어하기 위해 변수 count를 사용하고 있으며, 변수 count값이 0부터 99까지 1씩 증가하면서 각 수에 대해 count값을 출력한다. for 문 내에는 어떤 문장이나 올 수 있다. 이러한 기능을 이용하면 보다 다양한 일들을 수행할 수 있다.   2의 거듭제곱 출력   for 루프를 활용한 36개월 적금   2개월마다 5만원씩 36개월 적금   for문을 이용하여 화씨 온도를 섭씨 온도로 변환하여 10도 단위로 출력   range의 증가값이 음수일 수도 있다.   카운트다운하는 for 루프 예제   break/continue문 break문은 for 루프나 while 루프 내에서 어떤 조건이 만족되면 중간에 루프에서 빠져 나오는 데 사용된다.  이 프로그램에서는 찾고자 하는 기온을 입력받고 리스트 첫 번째 원소부터 그 기온을 찾기 시작해서 그 값을 찾으면 더 이상 리스트를 살펴볼 필요가 없다.   최고기온 리스트에서 특정 기온 찾기 else: print("찾지 못함") 추가해야 됨 while 루프 대신에 for 루프를 사용해서 다음과 같이 다시 작성할 수 있다. for index in range(len(temps)): if remps[index] == target: break 혹은 for index, x in enumerate(temps): if x == target: break   continue 문은 while루프나 for루프 내에서 현재 반복을 중단하고 다음 반복으로 건너 뛰는 데 사용된다. i 값이 4의 배수인 경우에 continue문을 사용하면 continue 다음에 나오는 print문이 수행되지 않는다. 결과적으로 0, 4, 8을 제외하고 출력하게 된다.    중첩 루프   구구단 2단 출력 안쪽 for 문에 의해서 내부 문장이 M번 반복되고 이 for 문이 N번 반복되므로 내부 문장은 전체적으로 N*M번 반복해서 수행된다.   while 루프를 이용한 구구단 출력   각 학생의 점수 합 계산 한 학생의 국영수 점수 합을 계산한 후에는 이를 stud 리스트에 추가한다(append). 따라서 stud 리스트에는 각 학생의 국영수 점수 합이 리스트 형태로 저장된다.          

python

PYTHON_판단과 선택

if문 일반적으로 if문 if statement은 키워드 if가 오고, 조건식과 콜론(:)이 오고, 그 다음 줄에 문장이 오는 구조로 구성된다.  인터프리터에서는 콜론(:)을 입력하고 엔터키를 치면 다음 줄은 자동적으로 들여쓰기를 해준다.    조건식은 결과가 참이나 거짓인 어떤 조건을 나타내는 식으로 이러한 식을부울식이라고도 한다. 이 조건이 참이면 if문 내의 문장1을 실행하고, 그 다음 문장으로 계속 진행한다. 조건이 거짓이면 if문 내의 문장1을 실행하지 않고 그 다음 문장으로 계속 진행한다.    은행 계좌 출금 예제 이 코드의 경우에는 잔액이 충분하면 출금 후에 현재 잔액을 출력하고 잔액이 부족하면 아무 출력도 없게 된다.   if-else문 if-else문을 이용하면 조건이 참일 때 해야 할 일과 조건이 거짓일 때 해야 할 일을 따로 명시할 수 있다. 일반적으로 if-else문은 먼저 if문이 오고 그 다음 줄에 else부분이 오는 구조이다. 조건식과 else 다음에 콜론(:)이 온다는 점과 문장1과 문장2는 반드시 새로운 줄에서 들여쓰기 해야 한다는 점을 주의하자. if 조건식: 문장1 else: 문장2   은행 계좌 출금 예제 확장 인터프리터를 사용하는 경우에는 if나 else 다음에 엔터키를 치면 다음 줄들은 자동으로 들여쓰기가 된다. 더 이상 들여쓰기를 하지 않으려면 백스페이스 키를 치면 된다.   비교 연산 비교 연산은 정수, 실수뿐만 아니라 문자열에 대해서도 적용 가능하다. 정수와 실수에 대해서는 값의 크기로 비교하며 문자열에 대해서는 문자열의 알파벳 순서로 비교한다.   A ==  B 같다 A != B 다르다 A > B 크다 A >= B 크거나 같다 A < B 작다 A <= B 작거나 같다   두 수 중 큰 수 결정   계속 진행 여부   논리 연산  두 개의 비교 연산을 논리곱(and)하기 if amount <= balance and amount > 0: balance = balance - amount   이 조건식은 괄호 없이 작성할 수도 있지만 다음과 같이 괄호를 먼저하고 이를 논리곱 하는 식으로 작성할 수도 있다. if (amount <= balance) and (amount >0): balance = balance - amount   논리합   A or B   A, B 중 적어도 하나가 True이면 True이고 그렇지 않으면 False이다. 논리곱   A and B   A, B 모두 True이면 True이고 그렇지 않으면 False이다. 논리부정   not A   A가 True이면 False이고 False이면 True이다.   논리합 A or B는 A와 B가 둘 다 True인 경우에만 True가 된다는 것을 알 수 있다. 또한 A or B는 A와 B가 둘 다 False인 경우에만 False가 되고 나머지 경우에는 모두 True가 된다.   중첩 if문 if score >= 80: if score >= 90: print("A 학점") else: print("B 학점")   if-else 문의 else 부분에도 어떠한 문장이나 올 수 있다. if-else 부분에 또 다른 if 혹은 if-else 문이 오면 줄여서 elif가 됨을 주의하자.   학점 계산 예제   체질량지수 계산 예제 체질량지수(BMI)는 다음과 같이 계산하는데 몸무게는 킬로그램(kg) 단위이고 키는 미터(m) 단위이다. 체질량지수(BMI) = 몸무게 / (키 * 키)   세 수 종 가장 큰 수 결정 예제   주차 요금 계산 예제    

python

PYTHON_입출력과 GUI

입력 input은 사용자가 입력한 값을 항상 문자 또는 문자열로 반환하기 때문에 숫자 또는 실수로 입력받기 위해서는 input 함수의 반환값을 형변환type casting 해 주어야 한다. 정수는 int, 실수는 float를 사용한다.  input 함수는 항상 문자를 반환하기 때문에 반환값을 그대로 더해서 출력할 경우 접합된 문자열 33이 생성된다. 문자를 입력받아 int 함수를 이용해 정수로 자료형 변환을 먼저 하면 출력 시 6이 나온다.   출력 파이썬에서 모니터 화면으로 값을 출력할 때는 print문을 사용한다. print문 안에서 end 옵션을 이용하여 출력 포맷을 지정할 수 있다. end 값은 두 출력 문장 사이에 들어갈 내용이다. end 값이 '\n'일 때는 이어지는 print문의 출력 결과가 다음 줄에 나타나는 반면, end = ' '또는 end = ''로 지정될 경우 두 문장의 출력 결과가 연결되어 화면에 나타난다.  여러 개의 명령문을 한 줄에 작성할 경우 ';'을 사용한다. 출력문에서 ','를 사용하여 두 개의 문자열을 출력하는 경우 공백이 추가되지만 '+'를 사용하면 문자열이 접합되는 것을 알 수 있다.   하이-로우 게임 예제 1. 정답인 난수를 발생시키는 부분 2. 사용자로부터 예측값을 입력받는 부분 3. 정답과 예측값을 비교하여 정답 여부와 크기 비교 결과를 알려주는 부분   1. random 모듈의 randint 함수 이용. 최소값과 최대값 2개의 매개변수가 필요하다. answer = random.randint(1, 100) 2. while 반복문으로 k번 예측, 정수 자료형 변환한 input 함수로 사용자의 값을 입력받는다. num = int(input("값을 입력하세요 ")) while num != answer and times > 0:   문자열 string 다수의 문자로 이루어진 배열 문자열을 나타내기 위해 " " 또는 ' '를 사용할 수 있다. 여러 줄에 걸쳐 문자열을 표현하고 싶을 때 작은따옴표 3개(''')를 사용할 수 있다.  정수 인자는 %d를, 문자/문자열은 %s를 사용한다.   문자열 곱하기 파이썬에서는 문자열에 정수를 곱하면 해당 문자열을 정수 횟수만큼 반복 출력할 수 있다.    문자열 자르기 split 함수는 문자열을 특정 내부 문자를 기준으로 분할할 떄 사용하는 문자열 내장 함수이다. 문자열에 split(), split(" ") 또는 split(' ') 함수 중에 하나를 적용하면 된다. 쉽표 또는 '/'와 같은 문자를 기준으로 분할할 결ㅇ우 split(",")나 split('/')를 호출하면 된다.    GUI Graphic User Interface의 약자로 그래픽을 통해 사용자와 컴퓨터가 상호 작용하는 인터페이스 방식을 의미한다.  파이썬은 콘솔창을 통한 텍스트  방식 상호작용뿐만 아니라 easygui 모듈을 이용한 대화상자 방식의 상호작용이 가능하다.   파일 읽기 텍스트 파일에 포함된 각 문장을 읽어 리스트에 항목으로 각각 저장한 후, 리스트의 각 항목을 출력한다. 문자열에 strip 함수를 적용하면 new-line 특수 문자 '\n'를 제거한 후 반환한다.   파일 쓰기 텍스트 파일을 생성하기 위해서는 파일을 쓰기모드('w')로 열면 되고 write 함수를 이용하여 각 리스트 항목을 파일에 쓴다. 'w' 대신 'a'로 파일을 열게 되면 기존 텍스트 파일에 추가하는 모드로 파일을 열 수 있다.   #항목을 입력받아 리스트에 저장하고 파일에 출력하는 프로그램 def write_file(): f = open('python5.txt', 'w') for item in mymemo: msg = item + '\n' f.write(msg) f.close() mymemo = [] while True: print("Write an item to buy. Input a blank line to exit: ") item = input() if len(item) == 0: break mymemo.append(item) write_file() print(len(mymemo), " items are written into file")   실행이 잘 안 된다. 검색하여 그 이유를 알아봐야겠다.(추가과제)

python