본문 바로가기

Dev. Etc

(63)
GraphQL의 개념 및 특징 (RESTful API 비교) ● GraphQL(Graph Query Language)이란? Facebook에서 만든 어플리케이션 레이어 쿼리 언어입니다. 기존의 웹 or 모바일 어플리케이션의 API를 구현 할때는, 통상적으로 RESTful API가 사용됩니다. 기존의 RESTful API를 사용하여 API를 구현한다면 우리가 클라이언트사이드에서 어떠한 기능이 필요할 떄마다 그때 새로운 API를 만들어주어야했습니다. 즉, 단일 요청으로 많은 데이터를 얻을 수 있습니다. ※ 기존 RESTful API의 문제들 Atomic한 REST API라는 큰 장점의 이면에 클라이언트의 코드는 점점 복잡해지고 있습니다. 기능이 추가될때마다 end-point는 점점 늘어나고 화면을 그리기 위해 REST API 응답간 의존성을 핸들링하기 위한 코드와 각..
[알고리즘] JAVA독과 함께! - python Q. 첫 문제를 푼 라이캣은 자신의 한계가 어디인지 궁금했어요. 그렇지만 높은 곳은 혼자 갈 수 없죠. 그래서 동료를 모으기로 결심했습니다. 하지만 선뜻 멀고 험한길을 듣보잡 라이캣과 함께 해줄 친구들은 없었답니다. 라이캣은 랩처럼 대사를 외우고 다녔어요. 내 동료가 되어라냥! 뭐지? 명령문인가? '냥'이라니, 자연어처리가 힘들겠는걸? 동료는 sum인가, concat인가? axis 0인가, 1인가? 동물 친구들은 수근거렸습니다. 혼자 코딩하기 좋아하는 동물 친구들은 동료라는 말도 이해하지 못했어요. 그러던 중 동물 친구들 중에서 가장 재빠르고, 영리한 JAVA독이 말했습니다. 사실 자바독은 늘 Python을 해보고 싶었거든요. 그래서 라이캣이 파이와 썬의 보물을 찾으러 가는 도구로 파이썬을 사용한다고 하..
[알고리즘] 암호를 해독해라 - python Q. 모든 알고리즘을 해독할 수 있는 알고리즘 7 원석를 보유한 알고리즘 제왕 파이와 썬은 죽기 전, 이 보물에 '암호'를 걸어 세계 어딘가에 묻어놨다고 공표하였다. 그가 남긴 문자는 아래와 같다. 섬으로 향하라! ' + -- + - + - ' ' + --- + - + ' ' + -- + - + - ' ' + - + - + - + ' 해(1)와 달(0), Code의 세상 안으로!(En-Coding) A. array = [' + -- + - + - ', ' + --- + - + ', ' + -- + - + - ', ' + - + - + - + ' ]; s = [i.strip().replace(' ','').replace('+','1').replace('-','0') for i in array ] list ..
[GitHub] Git 을 통해 파일 chmod(퍼미션) 조작하는 방법 회사에서 젠킨스로 배치서버를 구축해서 사용하고 있는데, GitHub 레파지토리에서 소스를 전부가져와서 jenkins 유저권한에 해당 .sh파일에 권한이 없어서 퍼미션 에러가 발생하여 처리했던 내용을 포스팅하겠습니다. 아래 처럼 현재 깃 퍼미션 상태를 확인할 수 있습니다. > git ls-files --stage 100644 blob 923665321dv99aev6cd1e2c61e1b1201274cb11b file.sh 맨 앞에 644는 해당 파일에서 깃 인덱스가 잡혀있는 퍼미션입니다. 따라서 git pull을 하게 되면 644의 퍼미션으로 계속 덮어씌여집니다. 이부분을 변경하도록 하겠습니다. 아래와 같이 입력해주면 755로 퍼미션이 변경된것을 확인할 수 있습니다. > git update-index --c..
[CI/CD] Jenkins 과 GitHub Actions의 개념, 차이점 [CI/CD] Jenkins 과 GitHub Action의 개념, 장단점에 대해 포스팅하겠습니다. JenKins와 GitHub Action 소개와 차이점을 앞서 배포, 빌드, 컴파일에 대해 간략하게 알고 싶다면 아래 링크를 참고해주세요. ▶빌드, 배포, 컴파일의 개념 & 차이점 - 바로가기 ● Build를 자동화 해야하는 이유 : 빌드는 하루에 한번을 할 수도 있고 아예 하지 않을수도 있지만 일주일, 한달로 따지면 꽤 많이 빌드를 합니다. 그리고 이게 1년이면 많은 시간을 투자해야합니다. 예를 들어 예전에는 java를 빌드할때 javac라는 커맨드를 직접 사용했지만 지금은 IDEA를 이용하면 main() 메소드를 실행했을때 javac를 하고 java가 실행이 됩니다. 이렇게 반복되는 과정은 버튼 하나 o..
빌드, 배포, 컴파일의 개념 & 차이점 (Build, Deploy, Complie) 빌드, 배포, 컴파일의 개념 & 차이점 (Build, Deploy, Complie) 서버에 기능을 추가 하려면 개발자가 로컬 PC에서 개발을 하고 테스트까지 진행한 뒤에 문제가 없을 경우 사용자가 사용할 수 있도록 수정된 코드를 실서버에 반영해야 합니다. 서버에 반영을 하는 것을 "배포"라고 하고 배포(Deploy) 하기 위한 과정을 "빌드"라고 합니다. ● 빌드(Build)란? 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말합니다. 예를 들어 Java프로젝트를 진행한다면 개발자가 작성한 A.java와 여러가지 정적 파일등에 해당하는 resource가 존재합니다. 빌드를 한다면 소스코드를 컴파일해서 .class로 변환하고 resource를 .class에서 참조할..
[Python] 백준 알고리즘 11021번 문제풀이 (A+B - 7) www.acmicpc.net/problem/11021 11021번: A+B - 7 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. www.acmicpc.net T = int(input()); for i in range(T): A, B = map(int, input().split()); result = A + B; print("Case #%s: %s" %(i+1, result)); 테스트케이스를 입력받기 위해 T라는 변수에 input으로 입력받습니다. for-in을 사용해서 입력받은 테스트케이스만큼 반복해줍니다. 반복문 안에서는 A, B 각각 변수를 int타입으로 입력받아서 덧셈한 뒤, result 변수에 값을 저장합니다. 그리고 매번 ..
[Python] 백준 알고리즘 2163번 문제풀이 (초콜릿 자르기) www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿 www.acmicpc.net n, m = map(int, input().strip().split()) def sloveFun(n, m): return (n-1) + n * (m-1) print(sloveFun(n, m)); n, m 변수에 각각 숫자를 입력하여 저장해줍니다. sloveFun이라는 함수를 선언해서 매개변수 n과 m을 받고 위 문제에서의 계산식으로 계산하여 리턴해줍니다. 예를 들어 5 4을 입력하여 5x4의 초콜릿이 있다..