dudefromkorea의 등록된 링크

 dudefromkorea로 등록된 티스토리 포스트 수는 21건입니다.

[chapter 2] 어라라? 분명 다섯 명이었는데 [내부링크]

chapter 2. 어라라? 분명 다섯 명이었는데 점심 식사 후 예정되어 있던 우리의 첫 스터디 점심시간이 끝나고 회의실에 들어가 보니 어라라? 분명 다섯 명이었는데 두 분이나 더 들어오셨다 사람이 많을수록 통제가 안될 수도 있지만 자발적으로 참여한 "어른"들이 그럴 리가 있겠어요? 한 개의 주제에 대해서 더욱 다양한 관점을 공유할 수 있고 이렇게 열정 가득한 분들로 둘러싸이면 나도 자극을 받지 않을까? 그렇게 진행된 우리의 첫 모임...! 음... 나름? 성공적이었다. 다들 당연히 준비를 잘해오시고 소통도 원활하게 이루어졌다 후기를 남겨보자면... " 다음 스터디가 기대된다? " 피드백받은 내용들을 바탕으로 다음번엔 내가 제일 잘 준비해 갈 테야 라는 욕심을 부려본다 이 스터디가 오래오래 지속되길 소망..

쓸데없는 이놈의 물욕 [내부링크]

이 세상에서 제일 쓸데없는 녀석 "물욕" 인간은 참 간사한 것일까 아니면 적응의 동물인 것일까 오랫동안 갈망하고, 오랫동안 추구하고, 오랫동안 꿈꿔왔던, 물건을 내 손에 넣는 순간 행복할 줄만 알았는데, 내 인생은 완벽할 줄 알았는데, 아니더라. 그게 전혀 아니더라 목표를 설정하고, 나의 삶의 지속적인 원동력이 되고, 내가 두 발로 뛰게 만드는 이유가 된다면 좋겠지만. 내 그릇이 작은 건가 오히려 그와 반대로, 허무함이 밀려오고, 현타가 파도처럼 밀려온다 소유하고 싶던 간절함이 고스란히 만족으로 이어지는 경우도 있었지만, 생각보다 흔치 않다 인생의 목표가 명사가 되면 안 된다는 말이 문득 머릿속을 스쳐 지나간다

나의 생을 지속할 이유 [내부링크]

되고 싶다 나는 남들에게 죽은 사람이... 무기력하다 의욕이 없어진다 주도적인 인생을 살고 싶지만, 결국은 타인에게 영향을 받으며 나의 감정들이 변화하는 것에 점점 지쳐간다 내가 제어할 수 없는 부분들 불가피한 것들 나의 능력 밖인 것들 반대로 내가 제어할 수 있는 것들 내가 주체인 것들 지치고 지쳐, 이젠 남들에게 잊혀지고 싶다 없어진 사람이 되고 싶다 마치 죽은 것처럼 그러면 남들에 의해 감정이 악화될 일도 없을 텐데 남들에게 기대할 일도, 실망할 일도 없을 텐데 내가 변화시킬 수 없는 것들을 받아들일 수 있는 평온함을 주시고, 변화시킬 수 있는 것들을 변화시키는 용기를 주시고, 이 두 가지를 구별할 줄 아는 지혜를 주소서...

BufferedWriter 는 뭔데 sysout 보다 빨라? - JAVA [내부링크]

자바를 입문하게 된다면 System.out.println("Hello World"); 를 맨 처음 접하게 된다 그렇게 우리는 자연스럽게 Scanner 와 sysout 으로 입 / 출력을 관리하게 된다 하지만 알고리즘 풀이나 기타 상황에서 성능적인 코드를 작성해야 할 때 더 빠른 함수가 있다면? 고려해보지 않을 이유가 없다 BufferedReader & BufferedWriter java.io 에 속한 이 녀석들이 바로 그에 대한 해결책이다 그 이유를 살펴보자 BufferedWriter 의 경우 데이터를 내부 버퍼에 저장하고, 버퍼가 가득 차면 한 번에 데이터를 출력하나 sysout 의 경우 호출될 때마다 즉시 출력하므로 반복적인 I / O 작업으로 성능이 저하된다 이러한 특성 때문에 I / O 작업의 횟..

인생 참 쓰다 [내부링크]

점점 인생은 혼자라는 것을 몸으로 체감하는 게 싫다 그리고 시간이 지날수록 나 외에는 아무도 믿지 않는 나 자신이 싫다 남들에게 내가 겪은 일들을 말하면서 공감이나 이해를 받지 못하더라도, 말하는 행위 그 자체로도 조금이나마 위로를 받던 내가 남들은 나에게 관심이 1도 없다는 것을 깨닫고 말을 아끼게 되는 것이 싫다 그것마저도 짐이 되는 것 남들에게 힘이 되어주진 못하더라도 짐이 되진 말아야지 인생이 항상 순탄할 수만은 없다 좋은 일들만 가득하면 좋겠지만, 현실은 그렇지 않다 그렇지만 나쁜 일들이 있기에 좋은 일들이 좋아 보이는 것이 아닐까 다소 부정적인 상황들을 겪으며 그러한 상황들을 해결하고, 극복해 나아가는 과정에서 성장한다는 것은 알지만, 뒤돌아보면 그때의 내가 있었기에 지금의 내가 있지만, 그 ..

그리고 더 이상의 인연은 없었다... [내부링크]

누군가를 모를 때 더 궁금하기 마련이야 좋은 사람들을 사귀는 것보다 안 좋은 사람들을 끊어내다 보니까 이젠 그냥 누군가로부터 상처받고 싶지도, 주고 싶지도 않다. 지금 충분하다. 더 이상 필요하지도, 원하지도 않는다. 정말이지, 이보다 더 좋을 순 없다. 지금이 딱 좋다. 그리고 아무도 없었다. 은연중에 기대를 하게 되고, 기대가 크면 실망도 큰 법이니까

[jQuery] - ajax 완전 정복 [내부링크]

먼저 예시코드 2가지를 살펴보고, 하나씩 자세히 뜯어보자 ajax 예시 코드 1 $.ajax({ url: 요청을 보낼 URL(ex: "comment/writeComment.do"), type: 요청을 보내는 방식(ex: "GET", "POST", "DELETE", "PUT"), data: 보내는 데이터 형식(ex: formData), // controller의 consume dataType: 받는 데이터 형식(ex: "json"), // controller의 produces // 기타 설정 async: false // 동기 처리 여부(default: true), contentType: 서버로 보내는 데이터의 MIME 타입 (ex: "application/x-www-form-urlencoded; chars..

디자이너 의류는 누구를 위한 것인가? [내부링크]

옷을 그저 몸을 가리는 천이 아닌, 예술로 보는 모든 이들에게…… 시작하기에 앞서 여기서 이야기하는 디자이너 의류는 오트쿠뛰르(Haute Couture)를 제외한 프레타포르테(prêt-à-porter)에 한정하겠다. 그리고 단지 자기 과시용으로 입는 사람들은 배제하겠다. 또한, 가품을 입으며 디자이너에 대한 수고를 무시하며 해당 옷에 대한 가치를 알지 못하는 사람들 또한 제외하겠다. 지갑 사정이 넉넉지 않은 나는 항상 디자이너 의류를 구매할 때 가격이 부담되는 것은 사실이다. 그럴 때마다 드는 생각은 '이런 의류들은 과연 누구를 위한 옷인가?'라는 생각에 빠지곤 한다. '그들이 사는 세상'이라는 말이 있듯이, 정말 상류층을 위한 옷인가? 아니면 디자이너가 추구하는 것을 따르며 그 옷에 대한 가치를..

[프로그래머스] 알고리즘 고득점 kit - 여행경로 (DFS) [내부링크]

문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/43164 DFS(Depth First Search)를 선택한 이유 모든 항공권을 사용해야 하므로 백트래킹을 지원하고, 가능한 모든 경로를 고려하면서 끝까지 탐색하는 DFS 가 더 적합하다고 판단 트리가 아닌 그래프 구현을 선택한 이유 1. 하나의 공항에서 여러 다른 공항으로 갈 수도, a[1].compareTo(b[1])); // 시작 전 정렬(알파벳 순) dfs("ICN", "ICN", tickets, 0, vistedFlag, possibleRoutes); // ICN에서 시작하는 DFS Collections.sort(possibleRoutes); // 알파벳 순 정렬 return po..

깊이 우선 탐색 알고리즘(DFS) - JAVA [내부링크]

깊이 우선 탐색(Depth-first Search)이란? "루트 노드에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법" 넓이 우선 탐색과 (Breadth-first Search) 대비되는 알고리즘으로 말 그대로 넓이 보단 깊이를 우선적으로 탐색하겠다는 뜻 먼저 그림을 통해 이해를 해보자 이제 위에서 본 그림을 인접리스트를 사용한 JAVA 코드로 풀어보자 사용할 LinkedList와 boolean타입의 배열 선언부 /* * 먼저 정점들의 연결 다리가 되어줄 * LinkedList와 * * 방문 여부를 확인할 * boolean 타입의 배열을 선언 */ public class DFS { private LinkedList list[]; // 정점들의 인접 리스트를 저장하는 배열 pri..

나도 어른이 되고 싶어요 [내부링크]

어른이 된다는 것은 어떤 의미일까 단순히 자제력이 있는, 맺고 끊음이 확실한, 해야 할 일을 먼저 끝내는,,, 그런 특성들이 아니라 내가 나를 보았을 때 언제 어른이라고 할 수 있을까 결국 어른이란... 어른이 된다는 것은... 같은 학교, 같은 반이라는 단순한 이유로 우리는 친구가 됐지만 사회에 나와서 분야가 같아서, 주변 지인의 소개로 우리는 친구가 됐지만 또는 단순히 같은 취미를 공유해서 우리는 친구가 됐지만 가치관이 다르다는 이유로, 취미가 다르다는 이유로, 인생의 방향이 다르다는 이유로, 때로는 아주 마이너한 사유로, 주변 사람들을 한 명씩.. 한 명씩... 정리해 나가는 과정... 그것이 어른이 되는 과정이 아닐까

인간은 누구나 각자의 가면을 쓰고... [내부링크]

가면을 벗는 순간, 비로소 우리는 인생의 행복을 찾아 떠날 수 있다. 어떻게 보이는지가 중요한가 실제로 어떤지가 중요한 거지 그렇게 남들의 눈치를 봐서, 남들의 인정을 받아서 뭐 할까 인생의 주, 행복의 주체가 내가 아닌 타인으로 이루어진 삶 잘못되어도, 단단히 잘못되었다 행복한 삶이란 무엇인가 웃음이 가득한 삶은 무엇일까 참으로 알다가도 모르겠는 인생 가면과 의상들을 스스로 벗어 던지고 나체가 되고 나서야 비로소 인생의 행복을 찾아 떠날 자격이 주어졌고, 행복에 한 발짝 더 가까워졌고, 나는 이제서야 행복을 찾아 떠날 수 있게 되었다

[chapter 1] 해볼게요? 사내 알고리즘 스터디 [내부링크]

chapter 1. 시작이 반이다... 온갖 도파민 생성기들로 인해 하루하루를 의미 없이 보내기 쉬운 요즘 미래의 내가 현재의 나에게 고마워할 일들을 해보고자 시작한 사내 알고리즘 스터디 다행히도 나보다 훨씬 유능하시며 경험이 많으신 분들로 구성된 스터디이기에 배울 점이 많을 것 같다 스터디 팀장님이 쏘아 올린 작은 공 지면에 다다를 땐 부디 작지 않기를... 팀원들에게 "열정만 가득했던..." "초반엔 좋았는데, 갈수록..." 이런 식의 부정적인 키워드로 기억되지 않게 일을 벌린만큼, 유종의 미를 거둘 수 있기를 소망하며 to be continued...

대용량을 대비한 DB... 어떻게 설정해? (feat.PostgreSQL) [내부링크]

어딜 가나 강조되는 DB... 그치만 실무를 경험하지 못한 입장으로서 보통 어느 부분을 신경 써야 하는지 도통 감이 잡히지 않는다 오늘은 변칙적이지 않고 정해진 카테고리 내에서 각각 필드가 정해질 경우 고려해 볼 만한 사항에 대하여 이야기해 보겠다 예시로 임의로 작성된 로그 테이블을 살펴보자 여기서 category 칼럼을 살펴보자 현재 post 와 login 두 가지의 카테고리만 존재하는 것으로 보이고, 이들이 반복된다 지금은 최대 5의 char을 허용하고 단순 post 와 login 두 개지만, 더 긴 글자수를 허용하고 두 개가 아닌, 100개 1,000개 10,000개 혹은 그 이상의 카테고리가 있다면? 당연히 쿼리문의 성능은 저하될 것이다 그렇다면 어떠한 방안이 있을까? 예시로 변경된 로그 테이블을..

간단한 게시글 조회수 어뷰징 방지 (쿠키, 세션, ip 사용 X) - [Spring] [내부링크]

조회수 어뷰징 방지에는 여러 기법들이 존재한다 쿠키를 이용할 수 있고, 세션을 이용할 수도 있고, ip를 사용할 수 있지만 여기서는 로직을 활용한 아주 간단한 방법을 소개하겠다 먼저 게시글 상세페이지 진입 코드를 살펴보면 // 게시글의 title 누르면 게시글 상세보기 페이지로 $(document).on('click', '.detailPost', function() { let postId = $(this).data('postid'); window.location.href = 'post/detailPost.do?postId=' + postId + '&viewSet=yes'; }); 여기서 postId는 게시글의 고유 식별 값, viewSet에 대한 yes는 조회수 증가 식별 키워드이다 그리고 해당 값들을..

[jQuery] - ajax가 도대체 뭐야? (Asynchronous Javascript And Xml) [내부링크]

ajax 란, JavaScript 의 라이브러리 중 하나이며, " 비동기식 자바스크립트와 xml " (Asynchronous Javascript And Xml) 의 약자이다 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용하여 페이지를 새로고침하지 않고, 일부만을 새로 로드하는 기법(비동기식)이다 즉, 쉽게 풀어보면 JavaScript 를 통하여 클라이언트가 서버에 데이터를 비동기 통신으로 요청하는 것이다 비동기 통신이란? 페이지를 새로고침하지 않고도 데이터를 불러오는 방식이다 예를 들어, 네이버 블로그나 카페에서 댓글을 작성하면, 전체 페이지가 새로 로드되지 않고 댓글 영역 부분만 업데이트되어 새로 작성한 댓글이 적용되는 방식이다 그렇다면, 동기 통신이란? 쉽게 말해 페이지가 전체로 리로딩..

도대체 "==" 는 "===" 이랑 뭐가 다른거야? (JavaScript, Type Coercion, NaN) [내부링크]

자바스크립트에서 "==" 와 "==="는 어떤 차이가 있을까? 코드부터 살펴보자 22번 줄은 true, 23번 줄은 false가 산출된다 이유가 뭘까? console.log 로 typeof 를 출력해 보면 0 은 number 타입, "0" 은 string 타입 그렇다면 "==" 와 "===" 는 명백히 다르다는 것은 알겠는데, 도대체 뭐가 다른 걸까? 코드를 하나만 더 살펴보자 11번 줄은 true, 13번 줄은 false... 마찬가지로 console.log 로 typeof 를 찍어보면 0 은 number 타입, "false" 는 boolean 타입이라고 나온다 위 코드들을 바탕으로 유추해 보자면 "==" 는 단순히 두 변수의 값을 비교하고, "===" 는 두 변수의 값뿐만 아니라 자료형을 비교하는 느..

method에 final을 붙이면 어떻게 돼? (final 메소드) - JAVA [내부링크]

method 를 재정의(오버라이딩)를 원치 않을 경우, 어떠한 방법을 사용할 수 있을까? 바로 "final method" 를 사용하면 된다 위 예시와 같이 부모 클래스에서 정의한 메소드를 자식 클래스에서 그대로 사용하길 원할 경우, 여러 개의 method 가 존재하는 가운데 특정 method 만 재정의할 수 없도록 하고 싶을 땐 method 를 정의할 때 final 키워드를 붙이면 된다

final의 불가변성 (feat... list, Collections.unmodifiableList) - JAVA [내부링크]

개발을 하다보면, 불가변을 필두로 전역 변수를 선언해야 하는 경우가 존재한다 당연히 "final"이라는 키워드를 사용하여 MAXSPEED에 불가변성을 주입하였는데, 그것을 변형하려고 한다면 에러가 발생할 것이다 그렇다면, 데이터 타입의 범주를 넘어서 list 단위로 final이라는 키워드를 붙이면 어떤 현상이 발생할까? "final은 불가변성을 주입하는 키워드이고, final list로 list를 생성하게 되면 해당 list는 불가변일 테니, 내부에 있는 자료들 또한 불가변이지 않을까?" 라고 생각할 수 있다 과연 그럴까? 코드로 살펴보자 코드를 천천히 살펴보자 2번 줄에서 final 키워드를 사용하여 finalList를 생성하였다 그런데 4, 5, 6, 7번 줄에서 값을 자유롭게 삽입하거나 제거할 수 ..

깔끔한 if문 작성하는 법 좀 알려줘 (feat... 화이트리스트) - JAVA [내부링크]

" 왜? " 라는 질문에 답변을 해보자면 "가독성" 을 위해서 위에선 단지 가독성이라고 답했지만 if문이 많아지면 효율성도 떨어지고 유지보수나 기능 확장 측면에서 적절하지 않다 enum을 사용하거나, map으로 대체하는 등 다양한 방법이 많지만, 일단은 조건문에 초점을 잡아보자 먼저 가장 기본적인 수준의 if문부터 살펴보자 "Bubble Style" 보통 이런 식의 if else 조건문을 많이 사용하게 된다 겹겹이 둘러싸인 조건문들의 형상이 마치 방울방울 뭉쳐있다고 해서 "Bubble Style" 이라는 이름이 붙여졌다 코드를 살펴보면, 현재 여러 조건문이 겹쳐있어서 if와 else의 범위가 한눈에 잘 들어오지 않는다 그렇다면 대표적인 차선책으로 어떤 스타일이 존재할까? "GateWay Style" 조건..

유클리드 알고리즘 (Euclidean algorithm) - 최대공약수(GCD) [내부링크]

최대공약수(Greatest common divisor)란? "0이 아닌 두 개 이상의 정수의 공통되는 약수 중에서 가장 큰 수이다." 최대공약수를 구하는 가장 대표적인 방법 (소인수분해와 나눗셈을 이용하는 방법)은 소인수분해 원리에 기반을 두기에, 정수의 크기가 커질수록 직접 소인수분해 하기엔 부담이 된다. 이때 효과적인 방법은 나눗셈 정리에 기반을 둔 유클리드 호제법을 사용하는 것이다. 유클리드 호제법이란(Euclidean algorithm)? "2개의 자연수 또는 정식의 최대공약수를 구하는 인류 최초의 알고리즘이다." 두 양의 정수 a , b (a < b)에 대하여 a = b * q + r (0≤ r < b)이라 하면, a , b 의 최대공약수는 b , r 의 최대공약수와 같다. 즉 gcd(a , b..