개발(89)
-
GraphViz를 통해 함수 호출 그래프 그리기
개발을 하다보면 종종 복잡한 비즈니스 로직을 구현해야 할때가 있다. 이런 복잡한 로직은 시간이 지나 다시보면 한눈에 쉽게 들어오지 않는다는 문제가 있었다.(나만 그런가) 그래서 내가 개발한 프로그램에 대해서 함수의 호출관계를 한눈에 보여주면 꽤 유용할것 같아 심플한 프로그램을 하나 만들어 봤다. 현재 회사에서 화면을 구현할때 Inswave에서 만든 WebSqaure라는엔진을 사용하는데(Javascript를 베이스로 한다.) 해당 소스파일을 분석해야할 일이 있어 WebSquare 문법을 분석해서 호출 그래프를 그려주는 프로그램을 만들었다. WebsSquare의 문법은 Javascript와 유사하며 Map에 함수를 할당하는 방식을 사용한다. 샘플에선 scwin이라는 변수명을 가진 맵을 사용했다. Javasc..
2021.10.13 -
[Java] Multi Thread와 임계영역 설정
Multi Thread 사용시 주의사항 Multi Thread 사용시 병렬적인 Task 처리가 가능하단 장점이 있지만, 자원을 공유하기 때문에 사용시 몇가지 주의할 점이 있다. 1. 교착상태 - 두개의 쓰레드가 서로 끝나기를 기다리는 상태이다. 자신이 원하는 자원을 상대방이 가진채로 놓지 않는 상황이다. 2. 동시접근 - 특정 연산을 수행하고 있는 와중에 다른 쓰레드가 연산의 결과를 조회하는 로직을 수행하는 경우. 예상과 전혀 다른 결과가 나올 수 있다. 연산의 결과가 끝날때 까지는 다른 쓰레드가 연산결과를 조회하지 못하도록 해야한다. 3. 기아 - 특정 쓰레드가 계속해서 자원을 사용하지 못한채로 존재할 수 있다. 위 문제를 해결하기 위해 자바에선 synchronized, wait(), notify() ..
2021.09.01 -
Support for password authentication was removed on August 13, 2021 에러 해결법
원격 저장소에 commit 내역을 반영하려고 했더니 아래와 같은 에러가 발생했다. 2021년 8월 13일부로 비밀번호를 통한 인증방식이 제거되었으니 Personal Access Token(PAT)를 사용해서 저장소에 접근하라고 한다. ( 구글링 해보니 2021년 8월 13일부터 계정 비밀번호를 통한 인증방식을 더이상 지원하지 않는다고 한다. ) 자세한 사항은 아래 링크들을 참조. Creating a personal access token - GitHub Docs Personal access tokens (PATs) are an alternative to using passwords for authentication to GitHub when using the GitHub API or the command..
2021.08.17 -
Nginx로 정적 컨텐츠 제공하기
Nginx를 Web Server로 활용하여 정적콘텐츠를 제공하는 방법에 대해 학습하고 관련 예제를 작성합니다. Web Server는 웹 리소스를 관리하고 사용자의 요청에 따라 리소스를 제공하는 기능을 한다. 리소스는 텍스트, HTML, 이미지, 동영상 파일과 같은 파일들이며 반드시 정적일 필요는 없고, 사용자의 요청에 따라 리소스를 조작해서 제공할수도 있다. ( 오늘은 단순하게 정적인 컨텐츠만 제공하는 예제. ) 1. Nginx 설치 Ubuntu Repository와 Official NGINX Repository를 통해서 다운로드 가능하다. 나는 Ubuntu Repository를 통해 다운받았다. apt-get install nginx 명령어로 nginx를 설치한다. 설치에 성공하면 자동으로 Nginx가..
2021.08.07 -
[알고리즘/자바] 백준 1316번 - 그룹 단어 체커
1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 입력된 문자에 존재하는 알파벳이 연속되는지 확인하는 문제이다. 아이디어 1. 입력된 문자에 존재하는 알파벳을 구한다. 2. 알파벳이 연속되는지 확인한다. 3. 현재의 index가 이전의 index보다 +1인 경우는 연속이며 그렇지 않은 경우는 불연속이다. 4. 문자내에 알파벳이 하나만 있는 경우는 연속으로 처리한다. 구현 getAlphabet 함수를 만들어 입력된 문자내에 존재하는 알파벳을 ArrayList로 반환하도록 한다. s..
2021.07.27 -
[알고리즘/자바] 백준 2941번 - 크로아티아 알파벳
2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 입력된 문자의 갯수를 세는 프로그램을 만드는 문제다. 입력된 문자중에는 크로아티아 알파벳이라고 해서 2개이상의 문자가 조합되어 1개의 문자를 의미하는 케이스가 존재한다. 아이디어 입력받은 문자에서 크로아티아 알파벳의 갯수를 센다. 또한 크로아티아 알파벳이 있다면 "_" 문자 형태로 치환한다. 치환된 문자에서 "_"가 아닌 문자의 갯수를 센다. 구현 구현 하면서 주의할 점은 크로아티아 알파벳이 있는지 검사할때 긴문자부터 수행해..
2021.07.26