728x90

드디어 나를 수개월간 괴롭혀 왔던 프로젝트 발표가 끝이났다~ 그리고 6개월간의 이스트시큐리티에소의 현장실습이 종료되었다!! 

2주간 진행량 및 2021년 회고

  • GETIT 프로젝트

함께 작업하는 클라이언트 개발자분이 당근마켓에 지원하신다고하셔서 부리나케 일단 기능개발에 초점을 맞춰 현재 만들어진 기능을 다듬는 작업을 진행했다.

 

-검색 기능 개발

최종적으로는 elasticsearch를 사용하여 기능을 개발하려고 했는데 아무래도 처음 다뤄보는 기능이기도 해서 시간이 오래걸릴것 같아 model filtering을 사용하여 간단하게 구현했다.

search = request.GET.get('search')
        common_paginator = WholeBoardCommonPageNumberPagination()
        recruit_paginator = WholeBoardRecruitmentPageNumberPagination()
        free_posts = CommonBoard.objects.filter(Q(title__icontains = search) |
      Q(content__icontains = search),category='free')
        free_posts = common_paginator.paginate_queryset(free_posts, request)
        free_serializer = CommonBoardSerializer(free_posts, many=True)
        question_posts = CommonBoard.objects.filter(Q(title__icontains = search) |
      Q(content__icontains = search),category='question')
        question_posts = common_paginator.paginate_queryset(question_posts, request)
        question_serializer = CommonBoardSerializer(question_posts, many=True)
        recruit_posts = RecruitmentBoard.objects.filter(Q(title__icontains = search) |
      Q(content__icontains = search))
        recruit_posts = recruit_paginator.paginate_queryset(recruit_posts, request)
        recruit_serializer = RecruitmentBoardSerializer(recruit_posts, many=True)
        return JsonResponse({
            "freeboard": free_serializer.data,
            "questionboard": question_serializer.data,
            "recruitboard" : recruit_serializer.data
        })

코드가 굉장히 길다. 반드시 리팩토링이 필요한 부분인것이다. 하하...

url로 넘어온 category파라미터는 말그대로 카테고리 구분에 사용되면 ,title, content기능을 django orm filter기능중 __contains라는 걸 사용해 필터링할 문자열이 속한 필드를 모두 가져오는것으로 구현하였다. 

 

-필터 기능 개발

이부분도... 굉장한 리팩토링이 필요해보이는데 일단은 노가다로 구현했다. 백퍼센트 어디 지원해서 면접볼때 까일것 같긴하지만.. 일단 시간투자해서 해결했다는데 의의를 두고...

		pm = request.GET.get('pm')
        developer = request.GET.get('developer')
        designer = request.GET.get('designer')
        category = request.GET.get('category')
        if category == 'free':
            if pm == 'true':
                if developer == 'true':
                    if designer == 'true':
                        posts = CommonBoard.objects.filter(Q(worker = 1) | Q(worker = 2) | Q(worker = 3), category='free').distinct()
                        paginator = BoardPageNumberPagination()
                        result_page = paginator.paginate_queryset(posts, request)
                        serializer = CommonBoardSerializer(result_page, many=True, context={'request': request})

                        return paginator.get_paginated_response(serializer.data)
                    else:
                        posts = CommonBoard.objects.filter(Q(worker = 1) | Q(worker = 2), category='free').distinct()
                        paginator = BoardPageNumberPagination()
                        result_page = paginator.paginate_queryset(posts, request)
                        serializer = CommonBoardSerializer(result_page, many=True, context={'request': request})

                        return paginator.get_paginated_response(serializer.data)
                else:
                    if designer == 'true':
                        posts = CommonBoard.objects.filter(Q(worker = 3) | Q(worker = 2), category='free').distinct()
                        paginator = BoardPageNumberPagination()
                        result_page = paginator.paginate_queryset(posts, request)
                        serializer = CommonBoardSerializer(result_page, many=True, context={'request': request})

                        return paginator.get_paginated_response(serializer.data)
                    else:
                        posts = CommonBoard.objects.filter(worker=2, category='free').distinct()
                        paginator = BoardPageNumberPagination()
                        result_page = paginator.paginate_queryset(posts, request)
                        serializer = CommonBoardSerializer(result_page, many=True, context={'request': request})

                        return paginator.get_paginated_response(serializer.data)
            elif designer == 'true':
                if developer == 'true':
                    posts = CommonBoard.objects.filter(Q(worker = 1) | Q(worker = 3), category='free').distinct()
                    paginator = BoardPageNumberPagination()
                    result_page = paginator.paginate_queryset(posts, request)
                    serializer = CommonBoardSerializer(result_page, many=True, context={'request': request})

                    return paginator.get_paginated_response(serializer.data)
                else:
                    posts = CommonBoard.objects.filter(worker=3, category='free').distinct()
                    paginator = BoardPageNumberPagination()
                    result_page = paginator.paginate_queryset(posts, request)
                    serializer = CommonBoardSerializer(result_page, many=True, context={'request': request})

                    return paginator.get_paginated_response(serializer.data)
            elif pm == 'false' and designer == 'false' and developer == 'false':
                res = {
                    'count': 0,
                    'next':None,
                    'previous':None,
                    'results': [],
                }
                return JsonResponse(res)
            else:
                posts = CommonBoard.objects.filter(worker=1, category='free').distinct()
                paginator = BoardPageNumberPagination()
                result_page = paginator.paginate_queryset(posts, request)
                serializer = CommonBoardSerializer(result_page, many=True, context={'request': request})

                return paginator.get_paginated_response(serializer.data)

매 조건 절마다 return한건 테스트용도로 해둔건데 마지막에만 당연히 리턴문 돌려주면되니 알아서 필터링해주세요ㅎㅎ

 

- member 기능 개발

import json

from django.http import JsonResponse
from django.shortcuts import render

# Create your views here.
from profiles.models import TeamProfile
from requests import Response
from rest_framework.generics import GenericAPIView

from .models import Member, WaitingForMember
from .serializers import WaitingMemberSerializer


class MemberAddView(GenericAPIView):

    def post(self, request):
        """
        팀원 추가(POST)
        ---
                {
                    'teamprofile': 2,
                    'member': 3
                }
        """
        requestData = json.loads(request.body)
        teamprofile_id = requestData['teamprofile']
        member_id = requestData['member']
        print(requestData)
        profile = TeamProfile.objects.get(id=teamprofile_id)
        member = Member.objects.create(member=member_id)
        wait_member = WaitingForMember.objects.get(teammember__id=teamprofile_id, waitmember=member.member)

        wait_member.delete()
        profile.members.add(member)
        res = {
            "message": "success"
        }
        return JsonResponse(res)


class MemberWaitingView(GenericAPIView):

    def get(self, request, teamprofile):
        """
                프로젝트 지원 대기 멤버 조회(GET)
                ---
                        {
                            'teamprofile': 2,
                            'waiting_member': 3
                        }
                """
        teamprofile_id = request.GET.get('teamprofile')
        teamprofile = TeamProfile.objects.get(id=teamprofile_id)
        wating_member = teamprofile.waitingmember
        serializer = WaitingMemberSerializer(wating_member, many=True, context={'request': request})
        return Response(serializer.data)

    def post(self, request):
        """
        프로젝트 지원 대기 멤버 추가(POST)
        ---
                {
                    'teamprofile': 2,
                    'waiting_member': 3
                }
        """
        requestData = json.loads(request.body)
        teamprofile_id = requestData['teamprofile']
        waiting_member = requestData['waiting_member']

        try:
            waiting_member = WaitingForMember.objects.get(teammember__id=teamprofile_id, waitmember=waiting_member)
            print(waiting_member)
            teamprofile = TeamProfile.objects.get(id=teamprofile_id, waiting_members=waiting_member)
            print(teamprofile)
            if teamprofile is None:
                raise Exception
            res = {
                "message": "fail"
            }
        except:
            teamprofile = TeamProfile.objects.get(id=teamprofile_id)
            waiting_members = WaitingForMember.objects.create()
            waiting_members.waitmember = waiting_member
            waiting_members.save()
            teamprofile.waiting_members.add(waiting_members)
            res = {
                "message": "success",
                'teamprofile': teamprofile_id,
                'waiting_member': waiting_member
            }

        return JsonResponse(res)

팀 프로젝트의 멤버 추가기능을 개발하는데에 있어 신청을 했을때 받는 멤버와 팀장이 수락하여 멤버가된 모델을 분리하였고 역참조의 개념을 한번 익히는데 도움이 되었다. 사실 이 역참조라는걸 생각안하고 항상 구현하다보니 코드가 지져분해졌었는데 나중에 다끝나고 리팩토링할때 많이 쓰일것 같은? 기능이다. foreignkey의 related_name을 설정하여 외래키로 참조된 모델에서 역으로 참조한 모델을 참조할때를 역참조라고한다. 시간이 좀많이 걸렸다.

 

Get IT

 

getit.best

이젠 어느정도 명함을 내밀수 있게 완성이 되었다. 알림과 채팅만 남았다!!!! 현재 기능으로도 나쁘지 않다고 생각한다~

 

-KOTLUCK

이제 제대로 시작했다. 한국형 파티문화를 만들겠다! 라는 멋진 포부로 POTLUCK의 이름을따 KOTLUCK으로 지었는데 여러 회의를 거쳐 보라(BORA)라고 결정지었다!!!! 무엇보다 기획자 포지션이 정말 중요한데 너무 좋은분이 오신것같아 나도 함께 열심히 하고 있는중이다. 개발에 있어선 아직 세부기능이 확정이 안되서 일단 FCM을 활용하여 채팅, 알림기능 개발중이다. 이제 시간이 넘쳐나는 백수가 되었으니 졸업전 창업이라는 목표로 열심히 다시 불태워봐야겠다~~

 

 

-인턴

할말이 참많다.. 일단 엄청난 스트레스였던 패치랩 시연 및 발표가 끝이났다. 한20여분이 구글미트에 들어오셔서 보셨는데 많이좀 떨었고 개발을하며 ppt만들일은 없을줄알았는데 ppt까지 만들어서 발표하게 되었다. 리드님이랑 사수님이 질문때 많은 지원사격을 해주셨다는 생각이 들었고 두분은 모르시겠지만 사실나는 정말  감사했다ㅎㅎ 그리고 무엇보다 6개월간의 인턴 즉 현장실습이 종료되었다! 맨처음 글을올렸던 올해 6월말에 업무에 있어 조금이라도 도움이 되는 인턴이되자!라고 마음 먹었는데 다른 팀원분들도 그렇게 느끼셨으려나 모르겠다..ㅎ... 자주 실수도 하고 모르는것도 많아서 질문 투성이였는데 화한번 내지않고 모두 친절하게 알려주신 팀원분들께 그저 감사할 따름이다. 지금와서 생각해보면 업무가 정말 많다고 혼자서 불평도 했었고 초반에 엄청난 열정에 비해 조금은 게을러지고 했던것 같기만 하다. 사실 6개월간 많은 일이 있었고 처음으로 자취라는 것도 경험을 해서 후회되진 않는시간이었다. 무엇보다도 6개월전 무급이라도 개발자분들과 일을 함께 해볼수 있는 기회가 있었으면 좋겠다라고 생각도 했었고 불합 통지를 받았지만 추후 면접을 보지 않겠냐고 선뜻 다시 물어봐주신 pms-mpi셀 팀원분들한테 너무 고맙기만 한것같다. 자취라는 꿈과 개발일을하며 돈을 벌 첫기회를 준 기업이다. 사실, 일을 하기전 직급에 따라 불합리한 상황이 벌어지는것이 조금은 당연한거라 생각했는데 이스트시큐리티에서 일을 하며 정말 내가 잘못생각했구나!라는걸 느꼈다. 나에게도 중요한 업무를 할당해주시고 내의견을 조금이라도 무시하는 경향이 전혀없었으며 직급이 높다고 해서 불합리한 상황이란게 전혀없었다. 모든분들이 의견을 낼수 있으며 피드백을 바로바로주시고 정말 자유로운 분위기의 회사였다. 물론 기술스택이나 목표로 잡았던 기업이아니라 당장은 지원하진 않겠지만 회사생활을 해보면 이스트소프트라는 기업 정말 좋은 회사인걸알수 밖에없다. 개발자에서 대표가 되신 대표님부터 시작해서 현장실습생까지 모두가 동등한 위치에서 자신의 능력을 한껏 뽐낼수 있는 회사라고 생각한다. 많이 힘들었기도 했지만 얻은것도 많았던 터라 이제 막 나왔는데 아련한 기분이 든다ㅎㅎ.. 다만 걸리는건 중간에 이슈가 발생해서 업무를 다못끝냈다는거..? 많이 못끝내고나와 아쉽고 죄송하기만 하다....

 

-2021 회고

앞에 주저리 주저리 썻지만 요약하자면

  • 6개월간의 자취생활과 꿈에 그리던 인턴을 해냈다!
  • 한번은 제대로 완성해보고 싶었던 getit 프로젝트를 완성해냈다!

-2022 목표

  • 창업 : BORA로 창업이 목표다. 당장 어떻게 하는진 모르겠다. 일단 앱개발해서 대회도 나가보고하고싶다.
  • 졸업: 졸업이다. 코스모스 졸업인데 일단 정처기따면 졸업일테니 정처기가 목표인가?ㅎ..
  • 취업: 학생이지만 내생각엔 취준생이 맞다 좋은회사가서 발전하고 싶다. 좋은회사 갈꺼다
    • cs, 알고리즘 공부좀 개학전까지 끝내두기!
    • django이외에 다른 무기하나더 장착해두기!
  • GETIT 광고달기: 에드센스 달고 싶다. 알림, 채팅기능달면 다른 스터디 모집엔 비교할수 없는 최고라고 자신한다. 광고비 받아서 서버비용이라도 충당하고 싶다ㅎㅎ...
  • 여행: 사실 생각보다 돈좀 많이 모은것 같아 1달간 돈다쓰고올꺼다. 제주도가서 앞으론 쉬고싶지 않을정도로 좀 쉬다와야겠다.

필수적인것만 적었는데 다이뤘음 좋겠다!! 2022년도 화이팅!

그리고 2021년은 너무 그냥 고마운 한해였다!!

-끝-

 

+)사실 WIL컨텐츠는 아무래도 잠시 멈추려한다... 한번에 몰아쓰는 경향이 있는것 같아서 뭔가 제대로 매일 공부할만한 것이 생기면 그때 진행할꺼다ㅎㅎ....... 일단 남은기간동안 연합동아리 지원, 정보처리기사 공부, 프로젝트 진행이 대다수 일듯해서?? 일단 잠시는 멈춘다.. 다음에 시작하면 WIL이 아닌 TIL로 복귀하길...ㅎ

728x90
728x90

허허... 나약한 의지박약이 아니라 그냥 바빳던거다 ㅎ... 매일 쓰기로했지만 귀차니즘 + 일정상의 빡빡함 때문에 쓰지를 못했다. 인턴일이 꽤나 고되고 힘든것같다. 앞으로 15일여정도 남아있는데 유종의미를 얻고 싶다허허.... 

그리하여 어차피 매일 못쓴다면 적어도 매주쓰자! 라는 취지하에 TIL -> WIL로 변경하였다. 나중엔 MIL로 그리고 나중엔 YIL로..?ㅎ... 암튼 가장 많이 진행된건 인턴업무다... 약 3개월여간 기획후 개발까지 많은 발전이 있던것 같은데 최종시연전 팀원분들께 시연을 해보자!라고 리드님께서 말씀하셔서 약 한달간 또 밤을 새가며 이리저리 고쳤고 반은 성공으로 마무리 하였다. 최종시연은 약20여분 앞에서 시연하기로 했는데 그게 앞으로 1주일도 남지 않아서 이래저래 부담감은 크지만 그동안의 실수를 만회할 찬스라고 생각되기 때문에 유종의미를 얻을수 있는 절호의 찬스라 생각하고 열심히 준비하고 있다! 아마도 다음 WIL은 시연이 끝나고 멘탈탈탈 털린 상태로 작성하지 않을까?싶다. 일단 그동안 진행사항은

 

한주간 진행량

  • GETIT 프로젝트

-HTTPS적용

사실 이부분은 지난번에 했던건데 하다보니 제대로 적용이 안됐었다. client분과 잠시 일정상 프로젝트 중단했다 혼자서 하다보니 이부분을 모르고 있었는데 결국 또다시 2주간 삽질후 적용에 성공하게 되었다. 이것관련해서는 잊지 않기 위해 따로 블로그에 포스팅해뒀다.

 

drf nginx gunicorn https적용하기(react-drf)

프로젝트를 진행하며 거의 2주간 삽집을 해낸끝에 https적용을 끝냈다. 대부분의 블로그에서는 django풀스택 개념의 https적용이였기때문에?? 나와는 맞지않는 방법만 있었기 때문에 어려움을 겪었

leeceo97.tistory.com

-소셜로그인 수정

https를 적용하며 구글,카카오,깃허브 3가지 소셜로그인 모두 에러가 발생했다. 당연히 요청하는 주소가 변경되서 문제가 생긴거라 손쉽게 고쳐질줄 알았는데 그게 아니였다... 깃허브, 구글을 문제가 없는데 카카오같은경우는 지금도 현재 수정을 못해서 또 밤새고 있는 중이다. 그리고 예를들어, test@gmail.com이라는 구글 계정이 있고 test@gmail.com이라는 깃허브 계정이 있으면 서버에 오류가 발생하는 문제가 있어서 이부분을 수정하게 되었다. 이것관련해서는 진짜 회사 프로젝트 시연하고 나서 소셜로그인 총정리!!라는 주제로 포스팅을 할예정이다(계속늦어지는것 같은건 느낌탓인가..ㅋ)

 

-세부 API수정

CLIENT개발자분중 한분이 취업을 하게 되며 한분이서 작업을 하다보니 지체된 감이 있는데 작업을 진행하시다 API에 추가 요구사항이 좀 많이 생겼다. 그래서 이것저것 고쳤고 현재도 고치고 있는중이다.

 

나에게 개발자를 준비하는데 있어 변곡점이 된 GETIT프로젝트 이므로 완성도 높게 올해안에 꼭! 마무리 지을것이다.

 

  • 인턴

-패치랩 개발

할많하않... 너무 고되고 힘들고 스트레스 이빠이 받는다.. 처음 하는 분야가 너무 많아서 힘들고 그렇기 때문에 레퍼런스또한 없어서 많이 삽질중이다. 그래도 처음으로 REACT로 기능개발을 해봤고 REST통신간에 반복문을 돌려 원하는 값이 나올때까지 계속해서 요청을 보낼수 있구나! 회사에서 요구사항이 있을땐 이렇게 행동해야 하구나!라는걸 수없이 고통받으며 많이 느끼고 있는중이다. 이에 대한 설명은.. 나중에 최종시연이 마무리 되고나서 모든걸 적어낼것이다.. 무조건 깃헙에 결과물 올린다 하...... 애증의 패치랩 꼭 마무리짓자..........................

 

  • kotluck

-

기획사실 팀원들에게 정말 미안한 부분이기도하고 감사하기도 하다. 회사프로젝트에 치여서 시간이 없고 getit프로젝트가 마무리되서 시작한 프로젝트였는데 getit도 일정안에 끝내지 못해서 가장 후순위로 밀린데다 내친구를 불러와 기획자 포지션에 두고 진행중인데 많이 신경을 못썻는데도 불구하고 각자가 그래도 열심히 해주고 있는것 같다. 현재 기획단계에서 세부화가 정확히 안되서 여전히 기획 진행중이며 클라이언트 개발자 두분은 다행히? 바쁘셔서 일단은 쉬고 계신다 다음주부터 개발 다시 들어가겠다고 말씀드렸으니 기다려주신만큼 열심히 잘만들어봐야겠다.

 

다음목표

  • getit

-소셜로그인 정상화

-api수정

 

  • 인턴

-패치랩 시연 가능하도록 개발 및 개발문서, 프로젝트 설명안 작성

 

kotluck은 잠시 쉰다.. 팀원분들 정말 미안합니다 ㅠ... 

일단 다음주에 글을쓸때는 내가 너무 자랑스러워서 자존감 만땅인 상태로 WIL?일기인가...암튼 글작성하길 바라며 글을 마친다!!!!

728x90
728x90

전날 목표

  • GETIT 프로젝트

-https 적용

음... 이건 사실 뭐가뭔지 모르고 진행했다. https가 뭔지에 대해서 좀더 자세하게 들어가 봐야할것 같다. 대부분 client - server가 분리되어있지않고 풀스택 개념의 django인증서에 대한 설명이 나와있었는데 이분의 블로그 글이 현재 나눠서 진행하는 내상황과 맞아 보고 할수 있었다. 그래도.. 뭔지 모르고 성공하면 찝찝하다... 조만간 공부해봐야 겠다.

 

[Django] 장고 Rest API 서버 https 프로토콜 적용하기 - qwlake's Blog

서론

qwlake.github.io

  • 인턴

-rest통신 구체화 및 DB내용 변경

일단 PATCHLIST delete, put, post, get 모두 적용하였다. 그리고 파라미터로 KB_ID값을 전달받아 검색필터링 기능까지 추가하였다. 일단 내가 아는부분이라 좋긴 한데 프론트부분 만지는데 애를 먹고있다ㅎㅎ.. 리액트  개발자분들 리스펙~

 

  • kotluck

-기획 브레인스토밍 도식화 및 구체화

이부분은 솔직히 반성해야한다. 진행못했다ㅎㅎ 일요일 5시 기획 모임을 간단히 가지기로 했으니 지금부터라도 해봐야겠다!

 

  • 다음 목표

-GETIT 프로젝트

인프라 점검

 

-인턴

controller_client 부분 보완

 

-kotluck

기획 브레인스토밍 도식화 및 구체화

 

매주 적어도 2일은 밤샜었는데 이번주는 밤을 한번도 안샜다. 일이 그만큼 줄어든부분도 있고 체력적으로 살짝 한계가 온 부분도 큰거 같다. 그러다보니 이번주에 친구들도 만나고 좀 쉰감이 있는데ㅎ... 규칙적으로 할때하고 쉴때쉬는게 최고인거 같다! 나는 술도 좋아하고 사람 만나는것도 좋아하는데 한주만 조큼..? 쉬어갔다고 생각해야겠다ㅎㅎ 아맞다 이번에 넥스터즈 지원했는데 붙었음 좋겠다!!! 대학교 졸업전에 개발 연동 경험해보고싶다ㅠㅠ

728x90
728x90
  • 전날 목표

딱히 설정하지 않았었다. 회사 프로젝트가 가장큰 목표였다.

그래두.. 간만이니?

 

GETIT 프로젝트

-django-gunicorn-nginx

python manage.py runserver명령어를 통해 테스트 배포이후에도 계속 웹서버를 실행시켰었는데 절대 금지하는 방법이라고 장고공식 사이트에 나와있다. 그래서 nginx웹서버로 빌드하여야했는데 아래의 블로그를 참조하여 배포성공했다.

 

[Django]Django + Nginx + Gunicorn 연동하기 2

지난번 시간에 Django + Gunicorn 을 연동하였으니 이제는 Nginx 도 붙여 하나의 서비스를 하기 위한 준비들을 해볼 것이다. 먼저 Nginx의 특징을 간단하게 알아보고 설치를 진행할 것이다. Nginx 란? Nginx

leffept.tistory.com

사실 귀찮아서 서버에서 가상환경 사용안하고 pc에 그냥 라이브러리 설치했는데 이런귀차니즘 버려야한다ㅎ..

 

-https

간단히 말해 http프로토콜방식으로 웹은 통신을하며 request body에 데이터를 담아 전달하는데 이런과정에서 보안상 취약점이 수없이 많이 존재한다. https방식의 통신은 body를 암호화?하여 보안을 강화하는 통신방법인데 이제 기본중의 기본이 되었다. 그래서 https 방식으로 통신을 진행하려했지만... 허허허..

익숙치 않게 nginx만지작만지작 거리다 실수를 어디서한줄 파악하지 못해 인스턴스를 하나더 파고 기존의것을 버렸다... 하하하하... 그리고 지금 이시간 나는 오늘은 못할꺼라는 직감에 내일의 나에게.. 맡기려한다ㅎㅎ 일단 출근은 해야하니!

 

인턴

-개발 문서, 기획 문서 작성

사실 회사 프로젝트를 진행하며 정말 힘들었다... 처음 다뤄보는 스택이 많았고 암호화된 db를 복호화하기위해 pysqlcipher를 설치하는데도 반나절이 걸렸고 또이걸 입맛에 맞춰 못다루는 react를 죽어라 보고, 난잡한 python 코드들을 이리저리 만지작만지작 거리며 1차 마일스톤 기간에 맞춰 공유회의를 드린결과 오늘 처음으로 칭찬을 들었다. "오.. 그래도 지난주보다 많이 발전했네요. 순조롭게 진행되고 있는것 같아요. 수고했어요!"이한마디가 큰 칭찬은 아닐지라도 너무기쁜 하루였다ㅎㅎ 암튼1차 마일스톤 목표치 공유회의후에 필요한 요구사항을 선임 개발자분께 요청하기 위해 작성한 플로우차트와 db다이어그램을 작성하여 전달드렸고 기획문서 구체화를 시켜둔상태이다. 이제좀 개발자같은데?

혹시라도 pysqlcipher 설치에 대해 궁금한 분을 위해 링크 공유합니다~

 

Windows pysqlcipher 설치하기(x64, win10, sqlcipher, open ssl, vs2019)

sqlite를 사용하다가 sqlcipher를 파이썬에서 사용해야 하는 일이 생겼다. 그래서 설치 좀 해볼까 했는데 정말 안됐다. 인터넷에서 여기저기 돌아다니면서 해봤지만 다 안되고 결국 핸드폰 루팅의

98yejin.github.io

  • 새로운 일거리: 창업

대학교를 졸업하기 전에 한번은 창업을 해보고 싶어서 전에 알고 있던 친구에게 기획자를 부탁하였고 디자이너, ios, 안드로이드 개발자분들소셜사이트에서 구해서 현재 기획중이다. 파티와 관련한 창업인데 기획부분을 너무 쉽게 생각하고 진행했던터라 디자이너, 기획자 친구에게 혼쭐나고 나도함께참여하여 기획중인부분이다! 앞으로 TIL에 이것도 같이 추가될것 같다~

 

  • 다음 목표

-GETIT 프로젝트

https 적용

 

-인턴

프로젝트 rest통신 구체화 및 DB내용 변경

 

-kotluck

기획 브레인스토밍 도식화 및 구체화

 

말이 TIL이지 Today가 아니라 Week다완전ㅋ... 바쁘다는 핑계로 미루게 되었는데 좀 신경써서 TIL진행해야겠다. 슬슬 인턴종료까지 40일도 안남았다. 뜨거운 여름에 시작해서 이제 패딩입고 다니는 시기까지 진행하게되었는데 나는 인턴이 끝이나고 회사분들에게 어떤 이미지로 남을까?궁금하다 회사에 조금이라도 도움이 되는 그런 인턴이 되고자 마음먹었던 초심잃지 말고 남은 기간동안 다시 열심히 해봐야겠다! 화이팅이다!! 

728x90
728x90

전날 목표

GETIT 프로젝트

  • DJANGO CHANNELS를 이용한 알림 기능 구현

chnnels라는 라이브러리를 통해 알림기능 구현완료 하였다! 아직 프론트엔드와 통신테스트 진행하긴 해야하는데 일단은 클라이언트쪽에서 개발할때 기다렸다 테스트하며 수정해가야겠다.

 

이분의 블로그가 정말 큰도움이 되었다.

 

Django로 웹 소켓 통신 channel 사용하기 : 두번째

#Django #웹소켓 #channel #채널 #두개의화면을띄우기 #소켓통신 이전 포스팅 ⭐⭐ 참조해야할 블로그 ⭐...

blog.naver.com

 

인턴

  • ESXI환경에서 VM ON/OFF자동화

pyVmomi라이브러리? 암튼 vmware에서 공식적으로 추천하고있는 라이브러리를 활용하여 자동화를 성공하였다. BUT 라이선스가 ESXI내부 조회만 가능하고 기능동작의 경우에는 다른라이선스를 구입해야 한다고하여 이부분은 내일 프로젝트 공유회의때 말씀드려봐야한다.

 

GitHub - vmware/pyvmomi: VMware vSphere API Python Bindings

VMware vSphere API Python Bindings. Contribute to vmware/pyvmomi development by creating an account on GitHub.

github.com

 

 

GitHub - vmware/pyvmomi-community-samples: A place for community contributed samples for the pyVmomi library.

A place for community contributed samples for the pyVmomi library. - GitHub - vmware/pyvmomi-community-samples: A place for community contributed samples for the pyVmomi library.

github.com

위 깃허브 링크인데 시키는대로하고 

si = SmartConnectNoSSL(
        host='xx.xxx.xxx.xx',
        user='xxxxx',
        pwd='xxxx')

연결부분은 si라는 변수로 연결하여 활용하면된다. 연결하는 방법을 몰라서 엄청 애먹었는데 대부분의 코드는 samples 레포지토리에 있는 것을 참고하여 커스터마이징 하면되고 위의 코드처럼 연결하여 사용하면 된다. 이부분때문에 밤샌건 안비밀...

 

  • VM과 로컬PC 통신 및 WEBSOCKET을 통한 로그 실시간 기록
  • 웹서버 구축 및 컨트롤러 프로토타입 개발

이두가지는 묶어서 진행했다. 일단 결론은 반은 성공 반은 실패이다...

drf로 api를 만들고 controller부분에서 react로 통신을 하게 되었다. 나는 react를 사용안해봐서... 일단 사용법 익히는데 반나절을 날렸다 하하.. 벨로퍼트라는 블로그를 같이 프로젝트하는 형에게 추천받아 보게 되었다. 아주유용한 블로그다.

 

VELOPERT.LOG

  react-redux v7.1 alpha 에 드디어 Hooks 기능이 지원되었습니다. 아직 alpha 이기에 프로덕션에서 사용하기엔 아직 이르지만 한번 사용법을 알아봅시다. 정식 릴리즈 때 많은 변화가 없었으면 좋겠네

velopert.com

그리하여 간단하게 페이지를 꾸미고 rest 통신으로 데이터를 받아오는것까지는 성공했다. 그리고 socket통신으로 데이터를 받아오는것까지도 1.5일 밤새며 초췌해진 모습으로 성공해냈다... 서버단은 getit프로젝트 할때처럼 블로그참조했고, 컨트롤러부분은 websocket을 이용하여 연결하였다. 아래 블로그 참조하여 react활용했다.

 

WebSockets tutorial: How to go real-time with Node and React - LogRocket Blog

Editor’s note: This WebSockets tutorial was updated on 1/19/2021. What is WebSocket? The web has traveled a long way to support full-duplex (or two-way) communication between a client and server. This is the prime intention of the WebSocket protocol: to

blog.logrocket.com

자자.. 여기까지 들어보면 다한거 아냐?라고 할수 있다.. but 한가지 간과했던건 server부분은 스냅샷을떠서 한번 이용하고 버리고 이런식으로 진행한다. db를 영구적으로 이용하는것이아니라는것이다. 프로젝트 성격상 그래야하기 때문에 뭘 어떻게 바꿀수가 없다. 즉, 클라이언트부분에 react로 데이터를 받고 db에 저장해야 한다는건데 이부분 고려를 못해 기획방향이 좀 틀어졌다. 그리고 이부분은 전적으로 나의 큰 잘못인데 분명 내전의 인턴분이 만들어 두셨던 코드를 활용해 이번 프로젝트 큰 기능중 하나에 활용하기로 하여 예전에 테스트까지 끝내둔건데 이번에 활용을 하다보니 엄청꼬인다... 엄청나게 많이.. 인턴 초반 이기능테스트에 오래걸릴수 있다는 리드님의 말씀과는달리 한주만에 테스트가끝나서 엄청 위풍당당하게 말씀드렸었는데 지금 좀 많이 당황스럽다.. 허허....

 

푸념..

그리하여 나는 매우 멘붕상태 그자체다.. 내일 아니 오늘 오전 11시에 리드님과 프로젝트 공유회의를 진행한다. 지난주에 비해 분명 발전사항은 있었지만 가장 목표로 삼았던 핵심기능 구현에 현재 실패중이다. 블로그글을 게시하고 다시 고칠수 있을지는 모르겠지만 현재 socket통신부분도 좀 수정해야 할부분이 많아서 리소스가 있으려나 모르겠다. 현재 3일동안 5시간을 잤다 이부분이 가장큰 문제인것 같다. 집중도 안되고 그렇다고 잠을 자기에는 일정을 지키지못해서 마음이 좋지 못하다! 그래서 잠깐 나말고 다른 코린이 개발자들은 어떻게 지내나 유튜브를 봤다. 굉장히 유익하다.

다들 취업전에 현업에서 일한 경험이 좋은 스펙이 될거라고 했는데 처음엔 실력이 그만큼 늘어서 도움이 되겠구나 라고 생각했는데 요즘드는 생각은 물론 그부분도 있겠지만 신입이 가져야할 마음가짐과 습관을 미리 알수 있는 정말 좋은 기회 때문이 아닐까? 라는 생각이 든다.

 

다음 목표는 일단 중단이다. 지금은 일단 이프로젝트 진행이 가장 우선이다. 행운의 사진 투척후 내일이나 모래 til다시 작성하겠다~

728x90
728x90

맘잡고 매일 TIL을 작성하고자 맘먹은지 딱 작심삼일만에 하루를 밀렸다허허... 갑자기 불어난 일감에 멘탈을 부여잡느라 늦었다는 핑계가... 암튼 진행

전날 목표

GETIT 프로젝트

  • 기존 8000포트 테스트서버 -> nginx - gunicorn - django - docker 활용하여 80번포트 배포

이부분은 진행하지 않았다. 정확히 말하면 못했다. 프로젝트 진행중 기존API에서 개선사항이 생겨 진행하지 않고 대신 진행한것은

  1. FORM-DATA IMAGE받기와 TAG오류 및 멤버 추가 API

일단 기존에 포스트맨으로 테스트할당시 문제가없었던 IMAGE받는 데이터형식은 JSON으로 받았는데 이부분이 배포후 진행할때는 JSON형식이 아닌FORM-DATA형식으로 받아야 한다는것을 알게 되었다. 그래서 이리저리 어떻게 받아야 하나 삽질을 했는데 결국 코드 자체는 변화가 없었다.... drf의 serializer는 json형식과 form-data형식 모두 지원하기때문에 문제가 없었다. 내가 삽질을 했던 이유중 가장큰것은 form-data형식의 경우 request될때 user=[]과 같은 형식으로 무조건 리스트안에 값이 담겨와서 어떻게 받아야하는지 고민을 했는데 그냥

위와 같이 데이터를 각각의 키값과 벨류값에 넣어서 보내주면 기존과 똑같이 처리됨을 알았다. 허허... 

 

연쇄적으로 tag는 manytomany필드를 이용하여 객체가 생성된뒤 필드에 추가해주는 식으로 진행했는데 기존에 tag값을 리스트 형식으로 받아서 for문으로 값을 하나씩 추가하는식으로 진행했으나 abcd,djfke,dasd와 같이 tag가 return되면 저장이 콤마를 기준으로 나누어져 받아야하는데 a,b,c,d,h,...과 같이 각각저장되어 문제였다. form-data는 무조건 string 또는 file형식으로만 request가 가능하기 때문에 당연히 받은 값에서 for문을 돌리는 각각저장되는 문제가 날수 밖에 없었다.

names = request.data['stack']
            names_split = names.split(',')

그래서 받은 data를 ,를 기준으로 split하여 for문을 돌려 저장하여 비교적 쉽게 해결할수 있었다. 

 

마지막, member추가의 경우, 팀프로필api는 모두 만들었지만 추후 팀원추가에 대해서 고려를 안하고 있었다는 점이다. 단순히 member만 추가하는건

requestData = json.loads(request.body)
        teamprofile_id = requestData['teamprofile']
        profile = TeamProfile.objects.get(id=teamprofile_id)
        member = request.user.id
        _member, _ = Member.objects.get_or_create(member=member)
        profile.members.add(member)
        res = {
            "message": "sucess"
        }
        return JsonResponse(res)

위와 같이 쉽게 해결하였지만 팀원으로 pk값이 포함되어있을때 팀프로필 수정권한 부여 및 팀프로필 list api요청시 수정해야할부분이 많아 시간이 좀 걸렸다. 이부분은 양이 좀 많아 추후 drf 블로그글을 작성할때 추가해두도록하겠다. 

 

인턴

  • SQLITE - PYTHON DB 연동 테스트

쉬웠다. sqlite의 경우 fetch를 이용하여 db정보를 가져오면 되는데 암호화 되어있는 db이기 때문에 pysqlcipher을 이용하여 복호화후 fetch하여 내 로컬 pc db에 필요한 값들을 가져왔다. BUT.. 내가 멘붕온부분은 목표에 적겠다...

 

오늘의 목표

GETIT 프로젝트

  • DJANGO CHANNELS를 이용한 알림 기능 구현

인턴

  • ESXI환경에서 VM ON/OFF자동화
  • VM과 로컬PC 통신 및 WEBSOCKET을 통한 로그 실시간 기록
  • 웹서버 구축 및 컨트롤러 프로토타입 개발

멘붕오브멘붕이다... 인턴일은 당장 오늘 하는건 불가능하고 주말간 그리고 다음주 화요일까지 작업할것들을 미리 적어뒀다. 내가 블로그글 남길시간이 없을것 같아서... 사건은 이러하다..

리드님과의 프로젝트 회의에서 기획방향이 바뀌었다. 왜냐면, ESXI라는 VM을 관리해주는 장치?(솔직히 잘모른다 뭔지 이것부터 알아보고 진행해야한다)환경에서 총 16개의 VM을 관리하는 프로젝트이기 때문이다. 일단 가장중요한 VM ON/OFF자동화는 ESXI를 컨트롤하기 위해 pyVmomi라는 라이브러리를 사용할계획이다. 웹소켓은 리드님이 생각하시는 가장 중요한 부분으로 아무래도 사람이 검증하는것을 자동화 시키는 프로젝트 이기 때문에 현재 문제가 생겼는지? 아니면 진행률은 어떤지 controller부분에서 로그가 기록되어야한다고 하셨다. 이 방법은 현재 웹소켓통신으로 받는것말곤 생각이 안난다. 그리고 내전문분야? 암튼 가장 자신있는 웹서버의 경우, 문제없을것 같지만 보안업체다 보니 폐쇄망 환경에서 작업을 하게되는데 vm 공유폴더 사용이 불가능하고 신청한 port와 ip외에는 접근이 불가능하기때문에 ip 포트 개방요청후 작업에 필요한 파일을 매번 sftp로 22번포트를 이용하여 전달해야한다. 이런 일련의 작업들을 모두 처음 해보기 떄문에 매우매우매우 시간이 부족하고 스트레스가 이만저만아니다... 

 

그래서 getit프로젝트에서 인프라말고 웹소켓을 먼저 진행하는 이유이기도 하다.. 진짜로 시간이 많이 부족하다 하하.. 화요일에 웃으며 TIL을 작성하길 바라며,,,, 그래도 이고비 넘기면 모든것들이 아름다워보일것 같다ㅎㅎ.. 화이팅!!!

728x90
728x90

전날 목표

GETIT 프로젝트

  • 댓글 -> 대댓글 기능 구현
  • 이미지 -> 다중이미지로 기능 구현

대댓글을 구현할때 뭐가 필요할까? 라는 생각을 했는데 다른것없이 그저 comment 모델내부에서 comment pk를 참조할 필드하나만 있으면 될것이라 생각했다. 클라이언트와 함께 작업하며 느낀것이 첫번째가 DB의 중요성 그와 동시에 DB는 별것 없이 내가 나중에 봤을때 이렇구나 라고 저장되게만 느끼면 되게 설계해두면 된다라는것이다(물론, 생각한대로 확실하게 구현되어야한다는건 기본이며 내가봤을때라는건 개인플젝때만 해당ㅎㅎ). 두번째가 client개발자와의 대화이다. 서버개발자는 그저 서비스가 잘돌아가게 뒤에서 묵묵히 로직을 개발하면 되지만 클라이언트는 실 서비스 사용자가에게 보여질 화면과 로직을 개발하기 때문에 작업량이 상당하고 그만큼 스트레스가 이만저만 아닐것이라는 생각이 들었다. 그렇기 때문에 나는 협업을 할때 서버의 입장도 중요하지만 무엇보다 클라이언트개발자의 요구를 최대한 맞춰주기위해 노력한다ㅎㅎ(자기자랑 타임) 암튼 대댓글은 별것없고

parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)

comment 모델에 위 한줄이면끝이다 물론 serializer에 parent필드를 추가하는건 빼먹으면 안된다. 일반 댓글의 경우, parent필드는 null, 대댓글의 경우 대댓글단 댓글의 pk값이 parent필드의 값이 되어 클라이언트입장에서 그것에 맞춰 화면을 구성해주면 된다.

 

이미지필드는 그냥 참고한 블로그 첨부한다.

 

drf 다중 이미지 full url 삽질 기록

삽질 기록 - 다중 이미지

velog.io

항상 느끼지만 나도 스스로 열심히 살아간다 느끼는데 나보다 더뛰어난 사람들이 정말 많다ㅎ.. 열심히 해야겠다. 그리고 nest 학습도 대학교2학년때부터 친하게 지냈던 형과 공부중인데 하면할수록 느끼는것이 django, drf정말 좋다. 너무너무 좋다 django개발자 되고싶다.. 그런데 왜이리 취업시장에서 힘이없누!!!!!!!

 

인턴

  • SQLITE - PYTHON DB 연동 테스트
  • 시작 프로그램 - script.bat 구현

결론 부터 말하자면,내가왜 어제 일찍자고 오늘 일찍일어났냐? 위의 목표량을 채우지 못했다.. 오늘 리드님과 프로젝트 회의하는 날인데 빠르게 해야겠다. 하하.. 핑계를 대자면 기존에 접속 안되던 서버를 인프라팀에서 해결해줘서 해야할 작업이 갑자기 생겨버렸고 막상 서버 접속하고 나니 오류가 한두가지가 아니게 많이 떳다.... 서버팀, 보안팀, QA팀에 문의를 수십번드리고 리드님과 사수님에게 바보같은 질문만 드리다 하루 8시간이 슥 사라졌다. 이건내일 TIL쓸때 완성되있을꺼다..?아마도..

 

오늘의 목표

GETIT 프로젝트

  • 기존 8000포트 테스트서버 -> nginx - gunicorn - django - docker 활용하여 80번포트 배포

인턴

  • SQLITE - PYTHON DB 연동 테스트
  • 시작 프로그램 - script.bat 구현

getit프로젝트 목표량의 경우 지난번에 실패한 작업이다. 통신에는 성공했지만 무엇이 문제인지 jwt토큰을 도메인으로 set_cookie로 전달해주는데 이부분이 먹통이다, stackoverflow에서 검색하며 이작업저작업해봤지만 문제 해결이 안되서 일단 임시방편으로 프로젝트를 시작한지 2달이 되어가는 지금까지 python manage.py runserver 0:8000으로 백그라운드에서 빌드하여 배포중이다. 오늘 꼭 해결해봐야겠다.

 

그러고보니 프로젝트할때 2주간 jwt를 통한 소셜로그인에 대해서 drf 레퍼런스가 없어서 정말 고생했는데 한번 공유할겸 이번주에 작성해보려한다. 이거 조회수 10000나오는거 아니야?

728x90
728x90

인턴 110일차


일단 지난번에 밤을새며 고생했던 일은 결국 기한을 지키는데 성공을 하였다. 하지만 또다시 난관... 서버망이전 작업에 있어 인프라팀과 대화를 많이 나누고 있는데 분명 방화벽 포트 개방까지 했지만 원격접속이 안되고 있어 난항을 겪는중이다. VSPHERE 환경에서 인턴기간동안 프로젝트 하나를 개발하게 되었는데 장고를 사용하여 웹서버를 만들기회가 생겨 설레는 맘으로 임하고 있지만 역시나 기획할때 술술 풀어내던것들이 막상 개발하면 탁탁막힌다 막혀.. 이번 회사 프로젝트를 완성하게 되면 엄청난 경험이 될것이라 믿어의심치 않으며 진행할것이다~

TIL 유형 변화


공부한걸 적어내는 TIL은 아무래도 쓰기전부터 양이 워낙많다보니 부담이 되는부분이있어 계속해서 미루게 된다. 그래서 앞으로 TIL은 하루의 시작전 오늘내가할 분량을 미리 적고 간단하게 한줄평식으로 리뷰하는 유형으로 변화시키려한다. 인턴 업무의 경우, 보안상 적기 힘든부분이 있으니 진행하는 프로젝트에서 목표량을 적을것이다.

목표


GETIT 프로젝트

  • 댓글 -> 대댓글 기능 구현
  • 이미지 -> 다중이미지로 기능 구현

인턴

  • SQLITE - PYTHON DB 연동 테스트
  • 시작 프로그램 - script.bat 구현
728x90
728x90

인턴 100일차


거의 3개월만의 TIL을 작성한다.... 인턴 일과 CS공부, 프로젝트라는 3가지 동시진행이 생각보다 모두 쉽지가 않았다. 회사자체의 워라벨은 굉장히 좋다. 업무시간을 제외하고는 절대 일을 안하게 하시려는 좋은 리드님과 질문드리면 친절하게 답해주시는 팀원분들이 있어 너무좋다. 하지만 평생 일은 잘할것이라 생각했던 나의 생각과는 다르게 뭐든 하나 배우는데 쉽지가 않았다... 처음접해보는 환경에 개발관련이라면 구글링으로 모두 해결될것이라 생각했었지만 현재 맡은업무자체가 구글링이 아닌 전에 나와 같은 작업을 하셨던 분들이 이슈가 있을때마다 적어놓은 문서에서 찾아서 해야하고 발생되는 오류들또한 기록되있는것이 수두룩하다보니 매번 질문드리는 사람이 된것 같다.. 물론 현재는 업무자체에 어느정도 훈련이 되어있어서 충분히 가능하지만 결국 이번에 큰사고를 친거같다ㅠ.. 회사의 서버이전작업에따라 잦은 오류가 발생되었었고 12일까지 끝내야하는 업무가 있지만 그업무또한 기한을 못지키게 되었다. 나름 매번 밤새가며 기한에 안밀리기위해 작업하고 했지만 이번엔 일이 좀커진것 같아 마음이 안좋다...후.. 일요일에 리드님에게 업무관련해서 연락을드리고 조마조마한 마음으로 기다리고있는중이다. 인턴을 진행하며 느낀점은 크게 3가지 인것같다.

  • 나에게 주어진업무는 다른사람의 업무를 도와주는것이 아닌 내가 담당한 업무이기때문에 책임감을 가져야한다.
    • 업무를 진행할때 사실 내가 업무를 제대로 진행되지 않으면 당연히 다른분들이 도와줄것이라 생각하고 안일하게 생각했던것 같다. 그리고 업무자체에 있어 뭔가 다른분들은 중대한 업무를 진행하는데 내업무는 그런업무가 아니라고 생각해서 뭔가 다알고 있는것처럼 말하는게 조금은 창피하다고 생각했었는데 이런 자세는 앞으로 내 인생에 있어서 정말 안좋은 자세라는걸 느끼고 있고 뭐든 책임감을 가지고 임해야한다.
  • 업무가 잘되든 안되든 현재 내 진행사항에 관해 다른 팀원분들께 공유가 되야한다.
    • 업무를 나혼자 끝냈다고 끝이 아닌 팀원분들께 공유드리고 문제가 있다면 한가지 문제에 대해 하루종일 메달리기보단 현재의 이슈를 공유하고 같이 논의 해보는것이 중요하다. 물론, 현재 발생한 문제에 대해 잠깐 알아보고 문의 드리라는 말이 아닌 충분히 연구해보고 해결이 안됐을때 공유를 드려야한다. 회사는 이런것들을 업무일지를 통해 일감을 생성하고 생성된 일감 코멘트를 작성하여 진행률을 공유하는 중이다.
  • 다른팀에 문의를 드리게 되었을때 두세번 말씀드리는걸 잊지 말아야한다.
    • 우리팀같은경우 매일같이 업무공유를하기때문에 업무를 누락하지 않겠지만 다른팀원분들같은경우 특히 서버나 인프라 쪽은 많은 업무요청을 받는다. 그렇기 때문에 내가 요청드린 업무를 누락하시고 잊는 경우가 있는데 처음엔 무한정 기다렸지만 그렇게 될경우, 업무자체가 딜레이 되기 때문에 눈치 보지 말고 시간이 지체되었다고 느끼면 바로 다시 문의드려야한다. 정당한 업무 요청에 대해서는 그누구도 부정하지 않으시는데 괜히 주눅이 들어 있던것 같다.

이렇게 총3가지이다. 후... 핑계가 많이 는것 같은데 이번일 잘해결되면 다시 열심히 임해봐야겠다.

 

프로젝트


이부분은 매우 긍정적이다. 그저 django만 사용해서 배포도 혼자 로컬에서만 진행할줄 알았던 지난 3개월전과는 다르게 내가 팀장으로서 팀원을 구하고 매번 회의를 거쳐 순탄하게 진행중이다. 웹클라이언트(react)와의 작업에 있어서 어떻게 연결하는지, 그리고 aws서버에 어떻게 호스팅하는지, docker는 어떻게 사용하는지, 소셜로그인은 어떻게하는지, drf(djangorestframework)는 무엇이고 restapi사용은 어떻게 하는지, 앱(ios, android)와의 작업까지 전체적으로 진행중이며 2주내로 서비스 배포까지 완료할것 같다. 프로젝트를 진행하며 많은것을 배울수 있었고 이부분에서도 가장중요한것이 소통이라는걸 알수 있었다. 관련해서 알게된 내용같은것들은 조만간 하나씩 적어나갈것이다.

cs, 알고리즘


취업을 위해서라면 아니 개발자라면 cs와 알고리즘은 기본이다. 매일같이 해야한다. 하지만 그러고 있지못하고 있다..ㅎ... 이제 취업준비를 해야하는데 인턴이 끝나고 하나씩 지원하려는 마음이 있지만 아직 기본도 못하고 있으니 이래저래 걱정이긴한다. 그래도 뭐... 할수 있을것이다ㅎ...

 

총평


인턴 힘들다.. 생각보다 많이.. 모르는것들 투성이고 약간 windows, linux와 같은 os쪽 업무다보니 생소하기도 하고 내가 기본지식이 많이 부족하다는것을 매우 강하게 느끼고 있다. 암튼 뭐든 열심히해서 발전하는 내가되야겠다..

728x90
728x90

인턴 10일차


하하... 처음의 의도와는 다르게 1일1커밋 1일1TIL 글을 올리려는 나의 시도가 실패했다.. 생각보다 인턴이 처음 들어왔을때 이것저것 할것이많은것 같다. 매일 9시에 출근해서 6시에 끝이 나는 업무시간이지만 업무가 끝나고도 dooray, 구글의 다양한 앱들과 같이 팀협업툴을 사용해 기록하고 배워야할 업무때문에 공부할 시간을 투자해서 학습을 하였다. 다행히 조만간 원래대로의 목표처럼 1일1커밋, 1일1TIL을 진행할 수 있을것 같다.

보안상의 문제있을것 같아 가려놓았다..

대부분의 업무는 선임분들이 만들어 놓으신 패치셋을 서버에 업로드하고 그걸 상/하위 서버로 다시 업로드 그후 버전별 OS를 버츄얼 박스로 구동시켜 각각의 클라이언트에서 패치셋을 내려받아 검증하는 업무를 교육받았다. 원리는 비슷하지만 검증 방식이 각각 달라 교육받는데 꽤나 애먹었다. 아직도 완벽하다고는 못하겠지만 이제 어느정도 익숙한 느낌이 들어 하루 종일 걸리던 작업시간이 많이 줄어들어 업무를 마치면 시간이 남아 업무중 하나인 개발도 할수 있을정도가 되었다!

 

-VIRTUALBOX 파일공유하기

1. 드래그앤드롭 

이것 같은 경우는 쉽다. 버츄얼박스 접속후 상단의 장치 -> 드래그앤드롭 -> 양방향을 선택해주면 내 본 PC에서 버츄얼박스 PC로 파일전송을 드래그앤 드롭으로 전달이 가능했다. 하지만 이게 왜인지 모르겠는데 적용이 될때가 있고 안될때가 있었다. 그리고 검증을 할때 4개이상의 OS에 동일한 환경을 매번 구축해야 하기때문에 그때마다 파일을 옮기는데 드는 시간이 아깝기도 하다. 

 

2. 공유폴더

원하는 운영체제를 선택후 설정을 누른다.

그후 공유폴더 -> +버튼을 클릭

그후 자신의 PC에서 공유폴더로 사용할 폴더경로를 지정해주고 자동마운트를 체크한뒤 확인을 누르면된다.

마지막으로 버츄얼박스 시스템에 접속하여 장치 -> 게스트 확장 CD이미지 삽입을 클릭해주면

이렇게 내PC와 버츄얼박스 시스템상 PC의 파일을 공유할수 있는 공유폴더가 생성되게 된다. 이것을 알아내고 시스템 구축 시간이 많이 줄어들었고 무엇보다 정말 손쉽게 파일공유가 되길때문에 많이 사용하시길 권장합니다!

728x90

+ Recent posts