클래스 관련 문제를 풀었다. 장고에서 제공되어 있는 클래스만 다루다가 간만에 python에서 순수 클래스형 문제를 풀었는데 생각보다 낯설었다. 클래스에 대해 다시금 새롭게 이해할수 있게 되었고 많게만 보였던 300문제를 스터디를 통해 진행하니 내일이면 끝나는날이라는게 신기하다.
인턴 6일차
인턴 근무 처음으로 공유 막중한 임무를 배정받았다. 내일 배포전 검증하는 업무를 맡았는데 살짝 부담되는 마음도 있지만 그것보다 기대되는 마음이 더큰 것 같다. 내일 업무간에 문제 없도록 4시간 동안 기존의 문서 토대로 문서를 재수정 작업을 하였고 윈도우 버전 4개를 각각의 virtual박스에 이미지를 가져와 os를 설치 하는 작업을 진행하였다. 정말 신기한게 쉘 언어같은경우는 매우 낯설었는데 이제는 python만큼 편하게 느껴지고 무엇보다 os를 설치하고 폐쇄망에서 파일을 이리저리 자유롭게 움직일수 있는것에 익숙해졌다는것이다. 어제는 좀 부정적인 마음이 컸다면 오늘은 긍정적인 마음이 큰것같다. 하루빨리 업무가 손에 익어서 슬슬 포스팅에 새로운 내용들이 써질 날을 기약한다.
ps) 내일 처음으로 하드디스크 설치하러 회사로 출근한닼ㅋㅋㅋ 여러 경험 다해보는것 같다!
별로 못했다. 솔직히 안했다고 하는게 맞는거같다... 왜이리 피곤한지.. 오늘은 일단 프로토콜 학습이였는데 오늘좀 일찍자고 내일다시 오늘 못한 분량 채워야겠다.
인턴 5일차
오... 9시간내내 긴장상태로 무엇보다 모르는 영역을 혼자서 학습해야 한다는게 이만저만 쉬운일이 아니란걸 몸소 느끼고 있다. 초긍정맨이던 내가 슬슬 인턴 5일차만에 지쳐버릴것 같지만 하루만 쉬어야겠다. 후후... 내일부터는 다시 제대로 시작해봐야겠다. 아무래도 스트레스 인거 같은데 항상 자신감넘치면서 남들에게 알려주는걸 좋아하던내가 회사에서는 무기력한모습인걸 느끼니 적응을 못한것 같다. 이것도 내가 고쳐야 할 자세인것 같으니!! 화이팅해보자 다시!! 사실오늘 지친것중 큰것이 하루종일 2~3일동안 똑같은 부분에서 진도가 많이 안나가는 점이다... 그래서 오늘은 따로 배운건 없으니 skip! 내일더 발전해서 오겠다. 화이팅!!
예전에 아무것도 모르던 찐코린이 시절 html css배우던 추억이 돋아나는 단계이다. 이제 프론트 꾸미기는 간단하게 끝이났고 본격적으로 장고를 시작할꺼다. 아무래도 프로젝트글은 시간이 많이 드는단계다보니 주말에 각잡고 2개씩 올리던가 해야겠다!
인턴 4일차
역시나 오늘도 힘들었다. 재택근무가 오히려 나같은 들어온지 얼마 안되는 신입에게 불리하다.. 이것저것 새로운것들이라 교육도 받고 실습을 진행해야하는데 메시지로만 하려다보니 이해도 안가고 힘든게 사실이다. 그래도 나름 오늘 용기내서 줌으로 좀 알려달라고 요청드렸더니 사수님이 친절하게 하나하나 알려주셔서 감동받는 바람에 자진 야근을 집에서 하게 되었다. 어느정도 검증이 무슨 작업인지 파악이 됐고 일이 손에 익으면 나한테 이걸 자동화 할수 있는 기회가 있을꺼라고 했으니 그때만 바라보며 열심히 인턴 근무 임해야겠다!!
오늘 배운건 traceview를 통해서 로그를 실시간으로 확인하는 작업이었다. 평소 로그의 중요성은 절대 관심이 없었는데 로그가 굉장히 중요하단걸 오늘느끼게 되었다.
-로그란?
컴퓨팅에서 로그파일은 운영 체제나 다른 소프트웨어가 실행 중에 발생하는 이벤트나 각기 다른 사용자의 통신 소프트웨어 간의 메시지를 기록한 파일이다. 로그를 기록하는 행위는 로깅이라고 한다.
쉽게 말해 내가 소프트웨어 상에서 실행하고 변경된 모든 사항이 기록되는 것을 말한다. 이러한 로그를 통해 어떤 오류가 발생했고 어떤 사용자가 들어왔는지 확인할 수 있다.
-TraceView란?
트레이스뷰는모든 함수의 초기화와 각 메소드에서 머문 시간이 기록되며, 이것을 보기 좋게 정렬해서 보여주는 View 입니다.
오늘 내가 진행한 업무는 따로 로그가 찍힌 결과를 UI가 없어 보지 못했는데 이러한 UI의 역할을 해준것이 트레이스뷰이다.
+추가로 오늘 GITLAB에서 코드를 내려받아 깃버전 테스트를 해봤는데 깃허브와 별다른건 없다고 느꼈다. 아직 제대로 사용해보진 못해서그런것 같긴한데 자신들만의 망에서만 사용할수 있는 깃허브다? 정도만 느꼈다. 심지어 명령어도 똑같았다. 앞으로 PYTHON을 통해 개발할 그날을 위해!!! 열심히 인턴생활 임해야 겠다!!
차후 관련 글 업로드 예정이다. 매번 미루기만하게 되는데 이부분도 빠르게 업로드 해야겠다.... 일단 오늘은 프론트엔드부분 기초적인 부분을 다뤘다. 아직 초반 단계라 적을께 없기도하다..?(변명ㅎ)
인턴 3일차
흑... 다 처음 접해보는것이다.. 일단 학교랑은 다르게 과제가 주어지는게 아니고 내가 배워야할걸 내가 물어서 하고 내가 오늘 해야할 일을 알아서 찾아야 하는거다 보니깐 이것 자체도 어렵다. 당장 처리해야 할 업무는 폐쇄망 검증이라는 업무인데 putty로 서버에 접속하고 원격접속으로 클라이언트에 접속한후 파일을 업로드하고(폐쇄망에 올리는게 굉장히 귀찮은 작업이많다..) 업로드 한걸 각각의 버전os들에 접속해서 업데이트한후 찍힌 로그와 DB자료를 토대로 검증하는 업무이다. 다행히 사수님이 내가 질문폭탄을 던지는데도 바로바로 잘답을 해줘서 너무 감사한게 위안이된다. 암튼 새로운 협업방식, 문서작성, 원격접속등이 3일밖에 안되었는데도 쉽게 느껴지기 시작했다는게 신기할 따름이긴 하다ㅎㅎ
1. port번호 적용
오늘 port번호를 적용한 방식은 2가지가 있었다. putty, 윈도우에서 지원하는 원격접속방식이렇게다.
그전에! 포트란? 간단히 말해 외부에서 다른 장비를 사용할때 위치를 나타내기 위해 ip와 같이 사용되는 주소라고 보자
서버는 물리적으로 떨어져 있어도 단말 장비를 통해서 원격으로 접속하여 작업할 필요가 있는데
이때 윈도우같은 개인 pc 운영체제에서도 서버로 접속할 수 있도록 물리적인 단말장비가 아닌 논리적인 가상 단말기를 제공합니다.
간단히 말해 개인 pc운영체제 라도 서버에 접속할수 있도록 도와주는 무료 프로그램이라는 것이다. 이건 aws와 같은 배포때에도 많이 사용된다.
푸티 같은경우, 포트 번호를 넣기 쉽다. 아래와 같이 제공된 공간에 포트번호를 넣어주기만 하면된다.
- 윈도우를 통한 원격접속 방법
시작 검색창에 'mstsc'를 검색하면 나온다.
위의 표시한곳에 ip주소를 적어주면되는데 연결된 내부pc망을 통해 연결할때는 ip와 port번호를 적어주면 되지만 그렇지 않고 연결되지 않은 외부 pc망을 연결할때는 VPN과 같은 인증을 거친후 연결해야 한다.
암튼 위의 표시한 공간에 예를들어 12.123.12.123이란 ip주소, 1234란 포트번호가 주어지면 12.123.12.123:1234라고 입력하고 연결을 해야한다.
2. 리눅스 명령어(파일 권한 계정 부여)
chown test_user:test_group test
test 파일에 test_user라는 계정, test_group라는 그룹에게 파일을 관리할 권한을 부여할때 사용된다.
후기
6시 퇴근 -> 운동 하고나면 9시가 넘는다. 깃허브 커밋이야 꾸준히 진행하는건 맞지만 TIL은 하루씩 밀려서 작성해야겠다. TIL 시간맞추려다 하려는 공부 끊고 쓰게 되는건 나쁜 버릇이다. 하지만 이렇게 되면 결국 매일매일 작성하는건 똑같겠군.... 암튼 인턴 3일차인데 그래도 희망적이다 희희~
# 유저에게 5명의 친구의 이름을 입력받고 각자의 나이에 대해 입력을 받으세요.# 입력 받을때 구별은 공백으로합니다.(ex.철수 영희 형준 ... 과 같이 입력받음) (ex. 21 25 26 ...)# 각각 입력받은 나이, 이름 이 두입력값들을 합쳐 딕셔너리 형태로 만들고# for문을 사용하여 각자의 나이에 3년을 더한값으로 업데이트 후 이름과 나이를 출력하시오.# 출력 예(철수:24, 영희:25, 형준:29 ...)
friends = input().split(' ')
age = input().split(' ')
age_int = []
for i in age:
age_int.append(int(i)+3)
dictionary = dict(zip(friends,age_int))
print(', '.join('{}:{}'.format(k,v) for k,v in dictionary.items()))
사실 나머지는 그다지 어렵지 않았는데 마지막에 출력부분에서 애먹었다. 출력을 하다보니 철수, 영희, 형준, 과 같이 마지막에 콤마가 붙는문제였는데 join을 통해 해결했다.
# 사용자에게 5자리 숫자를 입력받는다# "일의 자리"부터 각 자리수에 3,4,5,6,7을 곱한 뒤 그 값을 전부 더한다 (#합계의 변수는 sum으로, #for문을 사용하세요)# sum을 3으로 나눈 나머지를 고유번호로 알려준다 (#format을 사용하세요)# ** 각 과정이 보일 수 있도록 for 문을 작성하세요# ex. # 5자리 숫자를 입력하세요 : 12345# 5 x 3 = 15# 4 x 4 = 16# 3 x 5 = 15# 2 x 6 = 12# 1 x 7 = 7# 합계 : 65# 고유번호는 "2" 입니다. (#반드시 "고유번호"로 나타내주세요)
user_input = input()
sum = 0
key = 3for i in user_input[::-1]:
sum+= int(i)*key
key+=1
result = sum%3print(f'고유번호는 \"{result}\" 입니다.')
이건 쉬웠다.
# 코딩테스트 대회가 개최되었습니다. 이 때, 참여자들 이름을 공백을 통해 구분을 하여 입력을 합니다.# 예) "홍길동" "김길동" "최길동"# 그 후 코딩테스트에서 순차대로 각 대회에서 맞춘 문제를 공백을 통해 구분하여 입력이 됩니다.# 예) 2 10 4# 만약 중간에 기권을 했을 경우 '기권'이라고 입력이 됩니다.# 예) 2 10 기권# 이 때 기권을 하지 않은 학생들의 성적의 평균을 넘긴 학생들만은 참가상을 모두 받을 수 있습니다.# 참가상을 받은 학생들을 푼 점수가 높은 순서대로 공백으로 구분하여 출력해 주세요import operator
names = input().split(' ')
scores = input().split(' ')
dictionary = dict(zip(names,scores))
sum = 0
awards = []
for i in dictionary.keys():
if"기권"in dictionary[i]:
del dictionary[i]
else:
sum += int(dictionary[i])
avg = int(sum/len(dictionary.keys()))
for i in dictionary.keys():
dictionary[i] = int(dictionary[i])
if dictionary[i] < avg:
del dictionary[i]
else:
continue
sdict= sorted(dictionary.items(), key=operator.itemgetter(0))
print(sdict.keys())
여긴 데이터타입문제 때문에 애먹었다. 계속해서 타입이 변경되면서 오류가 발생하고 힘들었고, 딕셔너리를 정렬하는 방법을 알수 있는 문제였다.
파이썬 + 장고 스터디를 진행하며 각자 자신을 폴더만 사용하기때문에 문제될것이 없다 생각하고 master브랜치만 사용하다 결국 오늘 한명의 폴더가 삭제되는 일이 발생해버렸다. 그래서 새롭게 브랜치를 만들고 원격저장소에 커밋내용과 함께 생성한 브랜치로 푸시하는 작업을 했는데 매번 까먹어서 이번에 포스팅을 하려한다.
-브랜치 생성
git branch "브랜치 이름"
-생성한 브랜치로 변경
git checkout "브랜치명"
-원격저장소에 새로생성한 브랜치와 함께 커밋내용 push(커밋 과정 생략)
git push origin '브랜치명'
이것저것 새로운 내용을 추가하고싶지만 아직 새로운 내용이랄께 없고 그저 복습 단계인것 같다. 다음주부터 이제 복습이 끝나고 장고와 파이썬 문법 + 인턴실습이 제대로 시작하니 올릴내용이 많아질것 같아 기대가된다! 주말에도 공부한 나 칭찬해~
오늘은 사정상 인턴 교육을 받으며 많은 실패가 있어 퇴근후에도 지금까지 문제를 해결했기 때문에 따로 TIL 할 내용이 없다.. 오늘 잠자기전까지 스스로 정한 분량을 끝내고 잘꺼다! 암튼 그건 그렇고 오늘도 어제와 마찬가지로 인턴 업무라 할것보다는 교육위주로 들었다. 내가 속한 부서인 PMS-MPI셀팀의 PMS와 MPI에 대해 알아봤다. 알아보다보니 평소에 상 사실상 보안에 관해 별로 관심이 없었는데 무척이나 관심이 생기게 되었다. 알약같은 보안프로그램 하나면 모든게 해결되는거라고 생각을했지만 알약은 무슨 문제가 생기고 나서 대처를 하는 치료제 같은역할이므로 이를 미리 예방할수 있는 예방주사같은 프로그램 또한 필요하다는걸 느끼게 되었다. 이러한 예방주사같은 프로그램이 PMS-MPI다. 이프로그램은 2개가 기능이 다르지만 합쳐서 설명하자면 사용자의 PC사용 패턴을 분석해서 미리 문제가 발생한 지점을 찾고 이에 따라 사용자가 대응할 방법과문제점을 개선할곳을 찾아준다. 또한 다른 S/W나 프로그램들에서 최신 패치사항들을 일괄적으로 긁어모아 사용자의 프로그램이 최신상태로 패치 될수 있도록 자동으로 도와준다. 그리고 처음으로 gitlab을 사용해봤고 폐쇄망과 인터넷망간의 파일교환 실습, 지금까지 아무것도 못하게 되었던 중요한 요소인 virtualbox에서 iso이미지 파일에 담겨있는 윈도우10을 설치하는 것이었다.
일단 나는 지금까지 가상화 환경을 사용할때는 VMware를 사용했다. 하지만 오늘 교육해주시는 분은 인터넷망에서 virtualbox를 이용해 미리 만들어논 윈도우 이미지를 가져오고 iso파일을 내려받아 이미지를 가져오라고 미션을 주셨는데 사실 virtualbox를 처음 사용해보긴 했어도 vmware와 별로 다른걸 못느껴 전자의 미션은 금방 수행했지만 iso파일을 이용해 윈도우를 설치하는 방법은 쉽지가 않았다. 왜냐!! 버츄얼박스는 버츄얼박스 전용 확장자만 받아주기 때문이다. 뭐해결방법은 아래의 블로그를 보고 해결했다.
year = 2021
month = 07
date = 01
print(year,month,date,sep='-')
# 2021-07-01 과 같이 출력된다.# sep은 선언자를 구분할때 구분자를 삽입하여 특정지어주는 역할을한다.print('My name is corin.',end='\n');print('I\'m 21 years old.')
# My name is corin.# I'm 21 years old. 와 같이 출력된다.# ;는 한줄에 여러 명령을 사용할때 사용되며# end는 문장을 출력하고 마지막에 무엇을 쓰고 끝낼지 정해주는 역할을 한다.
-f를 이용한 출력, 포매팅
name = 'Corin'
age = 25print(f'My name is {name}. I\'m {age}years old.')
# My name is Corin. I'm 25 years old. 와 같이 출력된다.# f를 이용한 출력은 파이썬 최신버전부터 가능한걸로 알고 있다.print('My name is %s. I\'M %d years old.'%(name, age))
# 위와 같이 출력된다.# %s는 파이썬에서 문자열, %d는 정수형을 나타내며 형식을 위와 같이 쓰면된다.
-replace, split, strip, join, sort
string = "aBcDeFg"
string_replace = string.replace('c','C')
print(string_replace)
# aBCDeFg와 같이 출력되며 replace는 문자열내 요소를 변경할때 쓰인다.
time = "2021-07-01"
year, month, day = time.split('-')
print(year, month, day)
# 2021 07 01과 같이 출력된다.# split은 문자열내 특정 구분자나 문자,문자열을 가지고 분리해주는 역할을 한다.
string = " abc"
string_strip = string.strip()
print(string_strip)
# abc와 같이 출력된다. strip은 공백을 없애주는 역할을한다.
interest = ['삼성전자', 'LG전자', 'Naver', 'SK하이닉스', '미래에셋대우']
print("/".join(interest))
# 삼성전자/LG전자/Naver/SK하이닉스/미래에셋대우와 같이 출력된다.# join은 데이터 사이사이의 특정 규칙을 삽입해주는 역할을 한다.
num = 3,2,5,6,1,4
num_sort = num.sort()
print(num_sort)
# 1,2,3,4,5,6과 같이 출력된다.# sort는 정렬해주는 역할을 한다.# upper은 모든 문자를 대문자로# lower은 모든 문자를 소문자로# capitalize는 문자열중 첫문자를 대문자로 바꿔준다.
-list관련
interest = ['삼성전자', 'LG전자', 'Naver']
interest.append('배민')
print(interest)
# ['삼성전자', 'LG전자', 'Naver', '배민']과 같이 출력된다.# append는 리스트의 마지막에 데이터를 추가하는데 사용된다.
interest.insert(1,'요기요')
print(interest)
#['삼성전자', '요기요','LG전자', 'Naver','배민']와 같이 출력된다.# insert는 내가 지정한 위치에 데이터를 추가해준다.del interest[1]
print(interest)
# ['삼성전자', 'LG전자', 'Naver', '배민']# del은 지정한 위치의 데이터를 삭제해준다.
-튜플
num = 1,2,3,4,5,6print(type(num))
# tuple이 나온다.# tuple은 괄호가 없더라도 튜플로 선언이 가능하다.# 튜플과 리스트는 수정 여부 말고 거의 비슷하다.
-star expression
scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
*valid_score, _,_ = scores
print(valid_score)
# [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5] 과 같이 출력된다.
scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
a,b,*valid_score = scores
print(valid_score)
# [8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
a, *valid_score, b = scores
print(valid_score)
# [8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8]# star expression은 데이터가 몇개가 저장될지 모를때 사용한다.# _는 파이썬문법을 사용할때 필요없는 값 즉, 앞으로 사용해도 되지 않는 값일때 쓰인다.# 실제로 값이 저장되지는 않고 자리만 차지하는 역할을 하게 된다. 유용할것이다.
- 딕셔너리 zip
date = ['09/05', '09/06', '09/07', '09/08', '09/09']
close_price = [10500, 10300, 10100, 10800, 11000]
close_table = dict(zip(date,close_price))
print(close_table)
# zip은 두개의 튜플 또는 리스트를 합쳐 딕셔너리를 만들때 사용된다.
사실 코테 문제를 풀며 쉽게만 생각하고 실제로는 구글링하며 함수를 찾아가면서 문제를 풀었는데 이번에 해보고 사실 충격아닌 충격을 먹었다. 생각보다 많이 까먹고 몰랐던 내용 투성이 였던것들 위주로 작성하였다.
인턴 근무 1일차
내 PC에 VPN(가상사설망)을 설치하여 회사에서 발급받은 ID,PASSWORD로 VPN 연결을 하였다. 그후 원격으로 회사의 내PC에 접속하는것을 성공했다. 재택근무에 대한 준비였는데 사실 여기에 가장 많은 시간을 쓴것 같았다. VMWARE로 윈도우10을 설치한 디스크에 개발망, 인터넷망 PC 2대에 접속하였다. 그후부턴 DOORAY, TEAMUP에 가입하였다. 이 2개의 툴은 협업툴로 내가 그동안썻던 노션, 슬랙과 비슷한 느낌을 받았다. 아직까지 노션과 슬랙도 제대로 사용안해서 그런진 몰라도 노션,슬랙은 작은 규모의 협업툴이고 DOORAY, TEAMUP은 그보다 더 큰 규모의 협업에 있어 사용하기 적절한 툴로 느껴졌다. 그 외에도 앞으로 진행할 업무에대한 설명과 회사 내부망을 통한 관리 방법에 대해 배웠는데... 한번 해봐야 겠다는 생각이 들었다.. 암것두 모르겠다후.... 아직까진 가입만하고 맛보기로 툴이나 업무를 진행했기 때문에 앞으로 인턴 업무를 좀더 진행하면서 배우고 익힌것들위주로 업로드 할예정이다. 첫날이여서 바빳지만 처음 해본것들이라 신기하기도 하고 앞으로의 업무가 기대되는 그런 하루 였다.