전체 글

myGoodPlace
폭포수와 애자일, 나는 어떤 방식을 더 선호할까
소프트웨어 개발 방법론 중 가장 자주 비교되는 두 가지는 폭포수와 애자일이다. 폭포수 모델, 우리가 아는 그 의미 그대로 생각해보면 폭포의 위쪽에서 아래쪽으로 떨어지면 다시 위쪽으로 갈 수 없듯이, 개발이 다음 단계로 넘어가면 이전 단계로는 넘어갈 수 없다. 폭포수 모델은 이러한 특징을 가지고 있기때문에, 각 단계에서 결함이 없도록 하기위해 많은 공을 들이게 된다. 이는 즉 소프트웨어가 실제 사용자에게 제공되기까지 많은 시간이 소요된다는 뜻이다. 이러한 모델의 문제점은 다음과 같다. 1. 시장의 트랜드가 변할 수 있다. 2. 구체적으로는, 사용자의 니즈가 변할 수 있다. 3. 즉각적인 사용자의 피드백을 반영할 수 없다. 4. 결과물을 보기까지 오래걸려 개발자들의 사기가 저하될 수 있다. 5. 완벽한 기획..
JAVA를 좋아하는 개발자
자바를 좋아할 뿐만 아니라, 잘하고 싶다. 작년 운 좋게, 좋은 교수님과 연이 닿아 자바의 철학과 매력, 그리고 자바 세상을 맛보게 되었다. 자바의 가장 특징 중 하나는 플랫폼 독립성(Write Once Run Anywhere) 이다. 바로 JVM덕분인데, 이에 대해 알 필요가 있었다. 이렇게 자바를 배우며, 내가 작성한 코드가 컴퓨터 내부에서 어떻게 돌아가는지 원리를 알아가는 과정에서 큰 흥미를 느낄 수 있었다. 원리를 알고 작성한 코드는 같은 결과를 내더라도 다른 성능을 가질 수 있다는 것도 느낄 수 있었다. 그래서 어떤 개발자가 되고 싶은지 생각하고 고민하게 되었고, 이를 통해 자바를 좋아하는 개발자가 된 것 같다. 물론, 원리를 아는 것과 개발을 빠르게, 잘하는 것은 다르다는 괴리감을 느끼기도 했..
개발자로서 클린코드란
저는 보안과 성능을 모두 고려하면서도, 함께 일할 분들과 코드를 통해 의사소통이 가능한 개발자를 꿈꾸고 있습니다.?!저는 설명없이 작성한 코드만을 통해 대화할 수 있는 것이 바로 클린코드라고 생각합니다. 그리고 이러한 클린코드는 아래 3가지를 만족한다고 생각합니다.  1. 읽기 좋은 코드2. 컨벤션을 잘 지키는 코드3. 기능을 명확히 나타내는 코드  사실, 이렇게 생각은 하지만 이를 직접 실천하는 것은 정답 어렵다고 느끼기에, 이를 몸소 이루고 계신 분들을 정말 존경합니다.요새 링크드인에 정말 많은 인사이트가 있는데요. 저는 덕분에 지하철을 타고다니며 링크드인에서 다양한 인사이트를 얻고 있습니다. 그 중 모든 코드는 부채다라며 시작하는 글을 보며, 클린코드와 관련하여 깨달음을 얻은 경험이 있어서 링크를 ..
[백준/BOJ16174] 점프왕 쩰리
[백준/BOJ]문제 # 16174 점프왕 쩰리 풀이 및 배운 점 오른쪽, 아래쪽으로 가야하는데, 원하는 답이 나오지 않아 print() 메서드를 만들어 확인해보니 아래쪽으로만 가는것이였다.이 때, 왜그런거지? 라고 생각하면서 내 코드의 오류를 확인해봤어야 했는데 아 왜 안 돼!? 이렇게만 생각하다보니 오류를 찾는 데 시간이 오래걸렸다. 앞으로는 원하는 결과가 나오지 않는다면, 이렇게 되는 이유는 무엇인지 되돌아 짚어가며 확인해볼 수 있도록 해야겠다. 내가 작성한 코드import java.io.*;import java.util.*;public class Main { static int DIR = 2; static int[] dy = {0, 1}; static int[] dx = {1, 0}; static ..
[네트워크] REST API를 꼭 지켜야하는걸까?
·CS/네트워크
REST API란 뭘까? REST API는 내가 무엇을 어떻게 요청할 것인지 REST의 원칙에 따라 작성한 API라고 생각한다. 그리고 이 API는 HTTP 규약을 잘 지켜서 보내야하며, 무조건적으로 지켜야하는 표준이 아니다. REST의 구성요소 3가지 1. 자원 2. 자원에 대한 행위 3. 행위에 대한 내용 REST API는 이 구성요소 3가지가 모두 API에 담겨있어야 한다고 말한다. 그리고 이것을 모두 잘~지킨 것을 RESTful하다라고 말하는 것이다. 그런데, 개발을 하다보면 조회를 한다고 GET을 사용하면 안되지 않을까? 라는 생각에 모두 지키는 것이 어려울 것이라고 판단하였다. 그리고 이것을 무조건적으로 지키는 것이 어렵다고 느꼈다. 그래서 여쭤봤더니, 무조건 조회는 GET으로 했을 때 RES..
[JAVA] 생성자도 상속이 된다는 입장에서 쓰는 글
상속을 어떤 관점에서 보느냐에 따라 생성자도 상속이 된다 vs 생성자는 상속이 되지 않는다 로 의견이 나뉜다. 생성자는 상속이 되지 않는다. 의 입장 상속은 슈퍼 클래스의 멤버를 서브 클래스가 그대로 사용을 하거나 필요에 따라 추가해서 사용할 수 있어야하기 때문에, 생성자는 상속이 아니다. 라고 말한다. 나는 메모리 관점에서 생성자는 상속이 된다 라는 입장이다. 첫 번째, 생성자는 클래스명으로 된 특별한 메서드다. 클래스가 로드될 때, 메서드 영역에 메서드와 함께 생성자가 포함되어 저장된다. 즉, 생성자는 메서드와 같은 메모리 공간에 존재하며 용도가 조금 특별할 뿐이다. 두 번째, 생성자와 메소드를 호출하는 방식이 동일하다. 객체가 갖고 있는 메서드를 실행할 때에는, 힙 영역에 해당 메서드의 주소값을 가..
[백준/BOJ20002] 사과나무
[백준/BOJ]문제 # 20002 내가 작성한 코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int[][] map; int n = Integer.parseInt(br.readLine()); map = new int[n+1][n+1]; for(int y=1; y..
[데이터베이스] 트랜잭션(Transaction) 격리수준
Transaction(트랜잭션) 격리수준 트랜잭션 격리수준을 계속 보면서 외웠는데, 이름의 의미와 각 격리단계를 보완하기위한 전략을 이해하는 방법으로 다시 격리수준을 학습해보았다. 이번에 조금 더 깊게 공부하면서, 왜 MySQL 혼자 Repeatable Read 의 격리단계를 기본 단계로 갖는지 알 수 있었다. (Next Key Lock덕분)그리고 오라클이 고가용성에 좋다고 알고있는데, 이것이 지원하지 않는 격리 수준과 관계가 있는걸까? 하는 의문이 들었다. 물론, 아직 의문을 해결하지는 못했다. 트랜잭션하나의 기능을 수행하기 위한 SQL 연산들의 집합을 의미트랜잭션의 성질Atomicity(원자성)트랜잭션은 모든 연산이 완전히 성공적으로 수행되어야 한다. 그렇지 않다면 아예 수행되지 않아야 한다. All..
sooyeon-kr
myGoodPlace