반응형

Software Engineering 41

VS Code에서 WAS 실행하기 (Apache Tomcat)

웹개발은 당연히 테스트용 로컬 서버가 필요하다. 흔히 Eclipse, IntelliJ 등과 같은 IDE를 이용해 웹서버를 실행하고 앱 또는 페이지를 배포해 테스트한다. 한편, VS Code에서도 마찬가지로 익스텐션을 이용해 IDE처럼 서버를 실행할 수 있다.  애초에 IDE는 서버를 대체하는 것이 아니라 실행이랑 deploy만 대신해주는 거라 어렵지 않게 할 수 있다. 아무튼 이번 포스팅에서는 VS Code에서 톰캣을 실행하고 페이지를 배포하는 방법을 소개하겠다. 글 순서 필요사항Apache Tomcat 다운로드 Apache Tomcat® - Welcome!The Apache Tomcat® software is an open source implementation of the Jakarta Servlet..

could not resolve org.springframework.boot:spring-boot-gradle-plugin:x.x.x

could not resolve org.springframework.boot:spring-boot-gradle-plugin:x.x.x 스프링부트 이니셜라이저는 물론 IntelliJ에서 스프링 부트를 처음 사용해봤다. 스프링부트 이니셜라이저를 통해 IDE에서 빌드할 때 위와 같은 에러가 발생한다면, 시작부터 아무것도 안되는 것이다. 이럴 땐 아주아주 근본적인 문제일 가능성이 높은 법. Java가 설치되어있나? 스프링이니셜라이저를 생성할 때 선택한 Java의 버전과 동일한 버전에 설치되어 있는가? IDE에서 해당 버전의 Java 런타임이 선택되어 있는가?

[Python 문제 풀이] 프로그래머스 '리코쳇 로봇'

Programmers Lv.2 '리코쳇 로봇' 파이썬 코드 및 풀이 리코쳇 로봇이라는 보드게임에 나오는 유명한 알고리즘이다. 흔히 빙판길에서 목표지점까지 이동하는 형태로 옛날 고전게임 등에 퍼즐로 많이 등장한다. 조건파악 board의 크기 자체는 크지 않다. 그리고 ice slide 문제는 반복횟수가 그렇게 많지 않다. 접근 Ice Slide 문제는 BFS를 이용해 푼다! 탐색지점은 항상 상하좌우 방향의 네 곳이 된다. 각 방향의 탐색은 해당 방향으로 +1씩 계산하며 벽 또는 블럭이 나오기 직전 지점을 기록한다. 이동횟수가 적은 지점을 우선으로 하여 탐색을 반복하면 자연스럽게 BFS를 구형하게 된다. BFS와 별개로 각 방향을 탐색하기 위해 1차원탐색을 해야하기 때문에 구현이 조금 까다롭다. 의사코드 B..

[Python 문제 풀이] 프로그래머스 '혼자서 하는 틱택토'

프로그래머스 Lv.2 '혼자서 하는 틱택토' 파이썬 코드 및 풀이 조건파악 3x3 틱택토 게임인데 특별히 이 문제에서는 특정시점의 게임판만 보고 문제를 해결한다. 규칙대로 진행되지 않기 때문에 생각보다 논리력이 요구되는 문제인 것 같다. 3x3이기 때문에 코드 복잡도 측면에서 제한되는 부분은 딱히 없어 보인다. 접근 규칙대로 진행되지 않았다고 단정할 수 있는 몇 가지 케이스들이 있을 것이다. 그리고 이 문제는 해당 케이스들을 빠짐없이 확인하는 부분을 제대로 구현했느냐가 관건이다. 중간과정을 생략하더라도 반드시 지켜져야 하는 규칙과 그에 따른 반례를 다음과 같이 정리해보았다. 선공 후공 번갈아가며 진행되어야 하기 때문에 'O'의 개수는 'X'의 개수와 같거나 한 개 많아야 한다. 1. 순서를 지키지 않은 ..

[Python 문제 풀이] 프로그래머스 '미로 탈출'

ProgrammersLv.2 '미로 탈출' 파이썬 코드 및 풀이 대표적인 BFS문제, 근데 이제 경유노드를 곁들인 조건 파악 1. mpas는 최대 100x100이므로 N(max) = 10,000이다. 2. 경유노드(L:레버) 한 곳을 거쳐야 하므로 2N(max) = 20,000이며 시간복잡도 O(N)만에 풀면 된다. 접근 1. 최단경로를 구하기 위해 BFS로 푼다. 2. 경유노드가 있기 때문에 BFS를 두 번 한다. 의사 코드 시작점부터 L까지 BFS탐색 경로의 길이 저장 L부터 E까지 BFS탐색 최종 경로 반환 구현 from collections import deque def solution(maps): rows,cols = len(maps), len(maps[0]) r,c,distance = 0,0,..

Multi-modality와 범용 멀티모달 모델 BEiT-3의 간단한 소개

AI기술의 발전 속도는 어마무시하다. 학계는 이러한 기술 발전을 이루기 위한 핵심요소 중 하나인 Multi-modality을 추구한다. 멀티모달을 훌륭하게 구현한 BEiT-3를 여러분들께도 소개하겠다. Multi-modality or Multimodal 모달리티(modality)는 사전적으로 '양식, (인체의 감각적) 양상'이라고 한다. 실질적인 의미의 modality는 기계가 이해할 수 있는 요소 혹은 요소들과 상호작용하는 방법이다. 텍스트, 이미지, 음성, 그리고 물리적 움직임 등 여러 채널의 요소들을 이해하고 학습할 수 있는 특성을 멀티모달(Multi-modal)이라고 한다. 기존의 AI와 다르게 Multi-modal AI 혹은 모델은 비교적 폭넓은 종류의 여러 데이터를 학습하고 그들 사이의 관계를..

vscode.dev에서 원격 Jupyter 서버 연결하기

vscode.dev는 VS Code를 브라우저에서 사용하도록 하는 웹앱이다. 설치가 필요 없으며 VS Code의 모든 기능을 거의 완벽히 수행한다. (공식 블로그 왈) 그러나 브라우저라는 근본적인 문제로 일부 익스텐션이 제대로 작동하지 않는 경우가 있다! 이번 포스팀에서는 내 PC에서 동작하는 Jupyter 서버를 vscode.dev에 연결하는 방법을 소개한다.Quick Start주피터 실행 시 Anaconda Prompt에 다음 커맨드 입력 후 나의 주피터 서버를 커널로 선택하면 된다.jupyter notebook --no-browser --NotebookApp.allow_origin_pat="https://.*vscode-cdn\.net"ORjupyter notebook --no-browser --N..

[Python 문제 풀이] 프로그래머스 '호텔 대실'

Programmers Lv.2 '호텔 대실' 파이썬 코드 및 풀이 조건 파악 1. N은 최대 1,000이므로 시간복잡도 O(N^2)만 되어도 풀 수 있다. 2. book_time[i]의 각 원소가 HH:MM이기 때문에 그대로 정렬해도 원하는 결과를 얻을 수 있다. 접근 1. 모든 객실의 타임테이블을 알아야 하는 것은 아니다. 필요한 최소 객실의 수는 즉, 동시에 이용하는 최대 객실의 수이다. 2. 위 그림과 같이 시간축을 따라 이용중인 객실의 수를 세보면 최대값을 알 수 있을 것이다. 3. 로직은 예약자를 입실시켜서 이용중인 방이 늘어나는가 아닌가 이 두 가지를 구분하는 것이다. 4. 이용중인 최대 객실의 수를 알아내는 것이기 때문에 이용중인 객실이 줄어드는 것은 고려할 필요가 없다. 의사코드 입실시각을..

[Python 문제 풀이] 프로그래머스 '빛의 경로 사이클'

Programmers Lv.2 '빛의 경로 사이클' 파이썬 코드 및 풀이 딱 봐도 어려워 보이는 문제이다. 차근차근 제약조건을 뽑아내서 접근 방법을 좁혀보자. 시간복잡도 grid는 최대길이 500인 것이 최대 500개 모여있는 것이다. 표현하자면 최대 500x500 크기의 행렬이 될 것이다. 모든 지점을 탐색한다고 할 때 N은 최대 250,000이다. 시간복잡도 O(N) 혹은 O(NlogN)까지도 가능할 것 같다. 자료구조 사이클의 갯수와 경로의 길이를 알기 위해 우리는 프로그램적으로 빛을 이동시켜야 하고 이 경로를 기록해야 한다. 경로를 만들면서 몇 개의 지점을 지났는지, 한번 사이클이 완성되면 또 지나지 않은 경로는 어디에 있는지 알아야 한다. 다행히도 빛의 경로는 들어오는 것과 나가는 것이 일대일대..

[Python 문제 풀이] 프로그래머스 '유사 칸토어 비트열'

Programmers1 Lv.2 '유사 칸토어 비트열' 파이썬 코드 및 풀이 조건 파악 유사 칸토어 비트열의 길이는 5^n 이므로 최대 13자리 수이다. 한편, r < l + 10,000,000은 r - l < 10,000,000이므로 하다못해 l부터 r사이의 구간만 탐색한다 해도 그 길이가 최대 10^7이다. 따라서 이 문제는 시간복잡도 O(N)만에 풀어야 한다. 유사칸토어비트열을 구하고 또 구간을 탐색하면 시간초과가 발생할 것이다. 접근 풀이의 목적은 유사 칸토어 비트열을 구하는 게 아니라 특정 구간의 1의 개수를 알아내는 것이다. 패턴을 파악하면 비트열을 구하지 않아도 개수를 알 방법이 있을 것이다. 한편, 1의 개수를 구하는 함수를 count(from,to)라고 할 때 count(l,r)은 cou..

반응형