coding-factory의 등록된 링크

 coding-factory로 등록된 티스토리 포스트 수는 1000건입니다.

[JavaScript] 자바스크립트 문자열 공백제거 하는 방법(trim, replace) [내부링크]

자바스크립트에서 문자열에 포함되어 있는 공백을 제거하는 방법에는 trim() 메서드를 사용하는 방법과, replace() 메서드를 사용하는 방법이 있습니다. 이번 포스팅에서는 문자열에 포함되어 있는 공백을 제거하는 방법에 대해 알아보도록 하겠습니다.  자바스크립트 문자열 공백제거 하는 방법 trim() 메서드 사용 - 문자열 양끝에 공백 제거//사용법문자열.trim() See the Pen 공백제거-trim() by wjdxo513 (@wjdxo513) on CodePen. 위 예시처럼 문자열 변수 뒤에 tirm() 메서드를 호출하면 해당 문자열의 양 끝에 있는 공백이 제거된 새로운 문자열이 반환됩니다. 참고로 이때 원래 문자열 변수인 str은 변경되지 않습니다. 이렇게 trim() 메서드는 공백 문자..

[JavaScript] 자바스크립트 문자열 포함되어 있는지 확인하기(indexOf, include) [내부링크]

자바스크립트에서 문자열이 다른 문자열에 포함되어 있는지 확인하는 방법에는 includes() 메서드나 indexOf() 메서드를 사용하시면 됩니다. 이번 포스팅에서는 자바스크립트에 특정 문자열이 포함되어 있는지 확인하는 방법에 대해서 알아보도록 하겠습니다. ※ 대소문자 구분 아래에서 설명할 indexOf(), includes() 메서드는 찾는 문자열에서 대소문자를 구분합니다. 따라서 검색하려는 문자열의 대/소문자를 정확히 일치시켜야 합니다. 대소문자를 구분하지 않고 비교하려면 미리 문자열을 대소문자로 변환하여 비교하려 한다면 아래 글을 참고해 주세요.[JavaScript] 자바스크립트 대/소문자 변환(toUpperCase, toLowerCase)   자바스크립트 문자열 포함되어 있는지 확인하기 index..

[JavaScript] 자바스크립트 대/소문자 변환(toUpperCase, toLowerCase) [내부링크]

자바스크립트에서 문자열을 대문자나 소문자로 변환하려면 toUpperCase()와 toLowerCase() 메서드를 사용하시면 됩니다. toUpperCase() 메서드를 사용하면 대문자로, toLowerCase() 메서드를 사용하면 소문자로 변환할 수 있습니다. 대문자로 변환하기 toUpperCase()See the Pen toUpperCase by wjdxo513 (@wjdxo513) on CodePen. 위의 예제처럼 toUpperCase() 메서드를 사용하면 문자열을 모두 대문자로 변환하여 리턴합니다. 이때 원본 문자열을 변경하지 않고 새로운 문자열을 반환하기 때문에, 변환된 문자열을 다른 변수에 할당하여 사용하셔야 합니다. 소문자로 변환하기 toLowerCase()See the Pen toLow..

[JavaScript] 자바스크립트 문자열 합치기(+연산자, concat 함수) [내부링크]

자바스크립트에서 문자열을 합치는 방법은 여러 가지가 있습니다. 그중에서 주로 + 연산자나 concat() 메서드를 사용하는데요. 그 방법을 이번 포스팅에서 알아보도록 하겠습니다.  자바스크립트 문자열 합치기 +연산자 사용//사용법문자열1 + 문자열2See the Pen plus by wjdxo513 (@wjdxo513) on CodePen. 자바스크립트에서 문자열끼리의 결합은 + 연산자로 간단하게 합칠 수 있습니다. 가장 많이 사용하는 방식으로 직관적입니다.  concat 함수 사용//사용법문자열1.concat(문자열2)See the Pen concat by wjdxo513 (@wjdxo513) on CodePen. concat() 메서드는 문자열을 현재 문자열에 연결하는 메서드입니다. + 연산자와 ..

[JavaScript] 자바스크립트 문자열 치환하기 replace +(정규식, 여러개 치환) [내부링크]

자바스크립트에서 특정 문자열의 일부 텍스트를 치환할 때는 replace() 함수를 사용합니다. replace() 메서드는 문자열의 변경을 위해 자주 사용되는 함수로, 정규 표현식을 함께 사용하면 더욱 활용도가 높아집니다.   문자열 치환 replace 사용법 //사용법문자열.replace(기존 문자열, 바꿀 문자열)기존 문자열 : 대체할 문자열 또는 정규 표현식으로 문자열에서 이 값을 검색하여 찾습니다.바꿀 문자열 : 대체될 새로운 문자열로써 검색한 값을 해당 값으로 치환합니다. See the Pen replace1 by wjdxo513 (@wjdxo513) on CodePen. 위의 예제에서는 "그 영하 정말 재미있다 재미있다 재미있다" 문자열에 replace 함수를 사용하여 재미있다를 슬프다로 치환..

[JavaScript] 자바스크립트 문자열 쪼개기(split) - 구분자로 문자열 자르기 [내부링크]

자바스크립트에서 split() 함수는 문자열을 특정 구분자로 쪼개어 배열로 반환해주는 함수입니다. 특정 문자열을 분리하여 처리해야 할 때, 문자열에서 공백을 제거할 때 등등 다방면에서 유용하게 사용할 수 있습니다. 이번 포스팅에서는 자바의 split 함수에 대해서 알아보도록 하겠습니다.  자바스크립트 split 함수 사용법 문자열.split(구분자, 최대 갯수)구분자 : 선택값으로 문자열을 나눌 때 사용할 구분자로. 이 구분자를 기준으로 문자열이 나누어집니다.최대 갯수 : 선택값으로 반환할 배열에 포함될 최대 요소의 개수를 지정합니다. 구분자로 문자열 쪼개서 배열로 반환하기See the Pen split by wjdxo513 (@wjdxo513) on CodePen.위의 예제는 문자열을 구분자(쉼표 ,..

[JavaScript] 자바스크립트 문자열 자르기(substring, substr, slice) [내부링크]

자바스크립트에서는 문자열을 자를 수 있는 여러 가지 방법들이 존재합니다. 대표적으로는 substring, substr, slice 3가지 방법이 존재하는데요. 각 함수의 사용법은 비슷하지만 기능적으로 다른 부분들이 존재합니다. 이번 포스팅에서 자세히 알아보도록 하겠습니다.   substring을 사용하여 문자열 자르기 //사용법문자열.substring(시작 위치, 종료 위치)시작 위치 : 문자열에서 추출 할 시작 인덱스입니다.종료 위치 : 문자열에서 추출 할 종료 인덱스입니다. 이 인덱스값은 반환 문자열에 포함되지 않습니다.(선택 값)See the Pen Untitled by wjdxo513 (@wjdxo513) on CodePen. substirng은 시작점과 끝점을 인자값으로 받아서 문자열을 자르는..

[JavaScript] 자바스크립트 문자열 특정 문자 위치 찾기(indexOf, search) [내부링크]

자바스크립트에서 특정 문자열에 특정문자의 위치(index)를 찾기 위해서는 indexOf나 seach 함수를 사용하면 되고 추가로 문자열 뒤에서부터 위치를 서칭 하는 lastindexOf라는 함수를 사용하는 방법이 있습니다. 이번 포스팅에서 알아보도록 하겠습니다.  자바스크립트 문자열 특정 문자 위치 찾기 indexOf 함수 사용하기//사용법문자열.indexOf(찾는 문자열, 시작 위치, 종료 위치)찾는 문자열 : 찾을 문자열이나 문자입니다. (필수 값)시작 위치 : 검색을 시작할 인덱스입니다. 기본값은 0입니다. (선택 값)종료 위치 : 검색을 종료할 인덱스입니다. 기본값은 문자열의 길이입니다. (선택 값)See the Pen indexOf by wjdxo513 (@wjdxo513) on CodePe..

[JavaScript] 자바스크립트 문자열 길이(length) 구하는 방법 [내부링크]

자바스크립트에서 문자열의 길이를 구할 때는 문자열의 length 속성을 활용하면 됩니다. 이번 포스팅에서 그 방법에 대해 알아보도록 하겠습니다. 자바스크립트 문자열 길이 구하기 length //사용법문자열.lengthSee the Pen Untitled by wjdxo513 (@wjdxo513) on CodePen. 자바스크립트 문자열의 length 속성을 사용하면 문자열에 속해있는 문자의 개수를 return 합니다. 위의 예제에서 str.length는 "Hello" 문자열에 포함된 문자의 수인 5개를 리턴하는 것을 보실 수 있습니다. 자바스크립트는 공백도 문자로 인식합니다. 그래서 "W o r l d" 문자열 길이는 문자 5개 + 공백 4개로 인해 총 9가 됩니다.   유니코드가 포함된 문자열의 길이..

[Web] 크롬 베타, 개발자 버전(Chrome Beta, Chrome Dev) 설치 & 다운로드 방법 [내부링크]

크롬 개발자, 베타 버전이란?크롬 베타 버전 : 일반 사용자들을 위해 예정된 크롬의 업데이트를 미리 경험할 수 있는 안정화된 버전 (테스트 서버)크롬 개발자 버전 : 개발자들이 사용하는 크롬의 실험 및 초기 개발 버전 (개발 서버) 크롬 개발자와 크롬 베타는 구글 크롬의 개발 단계에서 테스트를 위해 배포되는 크롬의 버전입니다. 즉 크롬에서 특별한 수정이 이루어질 때 정식서버에서 배포하기 전 이 Chrome 베타, 개발자에서 업데이트가 먼저 진행된다고 생각하시면 되겠습니다. 웹 개발자의 경우 크롬의 업데이트에 민감하기 때문에 이 Chrome 버전을 사용하여 예기치 못한 업데이트에 대비하는 것이 좋습니다.  크롬 개발자, 베타 버전 다운로드 방법 1. 아래 기재되어있는 URL에 접속한 뒤 필요한 크롬 버전을..

[복붙하세요] 체크 표시 특수 문자 모음집( √ ) [내부링크]

체크 표시 특수기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 체크 표시 특수기호 모음집 체크 표시 특수문자 √ 체크 표시 이모지 ️ ️

[복붙하세요] 세모 모양 특수 문자 모음집(▷) [내부링크]

삼각형(세모) 특수기호는 [ㅁ] + [한자키]를 사용하면 입력할 수 있지만 요즘 한자키가 없는 키보드를 사용하는 경우가 많아 세모 관련 특수기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 세모 모양 특수기호 모음집 세모모양 특수문자 ▷ ◁ ◸ ◹ ◺ ◿ ∇ ∆ c ⊴ ⊲ ⫸ ⫷ ⋬ ⋭ 세모 모양 이모지 : 삼각자 : 빨간색 위쪽 삼각형 : 위쪽 삼각형 : 아래쪽 삼각형 ️ : 반대로 버튼 ️ : 주의 ️ : 재생 버튼 : 빨간색 아래쪽 삼각형 : 세모 깃발 ️ : 재생 또는 일시 정지 버튼 : 위쪽 화살표 : 아래쪽 화살표 ️ : 다음 트랙 버..

[복붙하세요] 네모 모양 특수 문자 모음집() [내부링크]

사각형(네모) 특수기호는 [ㅁ] + [한자키]를 사용하면 입력할 수 있지만 요즘 한자키가 없는 키보드를 사용하는 경우가 많아 네모 관련 특수기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 네모 모양 특수기호 모음집 네모모양 특수문자 네모 모양 이모지 : 검은색 정사각형 c : 빨간색 정사각형 c : 주황색 정사각형 c : 노란색 정사각형 c : 초록색 정사각형 c : 파란색 정사각형 c : 보라색 정사각형 ️ : 검은색 정사각형 ️ : 흰색 정사각형 c: 갈색 정사각형 : 빈 정사각형 : 채워진 정사각형 ️ : 작은 검은 사각형 ️ : 작은 흰 사각형 ◾️ : 작은 검은 원형 ◽️ : 작은 흰 원형 ◼️ : 작은..

[복붙하세요] 별 모양 특수문자 모음집() [내부링크]

별 특수기호는 [ㅁ] + [한자키]를 사용하면 입력할 수 있지만 요즘 한자키가 없는 키보드를 사용하는 경우가 많아 하트 관련 특수기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 별모양 특수기호 모음집 하트모양 특수문자 c c c ⋆ ≛ ⁑ ᕯ ⁂ ꙰ ⋆⁺₊⋆ 별 모양 이모지 c : 별 모양 눈을 한 이모티콘 : 어지러움 기호 : 반짝이는 별 : 반짝임 ️ : 혜성 ️ : 초승달과 별 ️ : 중앙에 점이 없는 6각별 : 중앙에 점이 있고 6각별 ️ : 8각 검은 별 : 별똥별 : 별 밤

[복붙하세요] 하트 모양 특수문자 모음집(ෆღ) [내부링크]

하트 특수기호는 [ㅁ] + [한자키]를 사용하면 입력할 수 있지만 요즘 한자키가 없는 키보드를 사용하는 경우가 많아 하트 관련 특수기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 하트모양 특수기호 모음집 하트모양 특수문자 ෆ ღ ლ —̳͟͞͞ —̳͟͞͞ 하트모양 이모지 ️ : 빨간색 하트 c : 주황색 하트 : 노란색 하트 : 녹색 하트 : 파란색 하트 : 보라색 하트 c : 갈색 하트 c : 검은색 하트 c : 흰색 하트 : 깨진 하트 ️ : 하트 장식표 : 두 개의 하트 : 회전하는 하트 : 두근거리는 하트 : 점점 커지는 하트 : 반짝이는 하트 : 화살 맞은 하트 : 리본 달린 하트 : 하트 ..

[복붙하세요] 말 줄임표 특수기호(···. ······.) 모음집 [내부링크]

저는 대화 중에 말 줄임표를 자주 사용합니다. 일반적으로 말 줄임표는 ···. 이렇게 가운데 점 3개 혹은 6개를 붙인 뒤 마지막에 온점을 이어주는 식으로 써줘야 하는데요. 특수문자 (·)점은 키보드 [ㄱ] + [한자]를 사용하면 입력할 수 있습니다. 한자키가 없으신 분은 아래 작성해 놓은 특수문자(·)를 복사 + 붙여 넣기 하셔서 사용하시기 바랍니다. 참고로 국어 맞춤법 체계에 의하면 말줄임표를 여섯 점(······.)을 찍어도 되고, 세 점(···.)만 찍어도 된다고 합니다. 나는 오늘 아무것도 안했어 ······. (O) 나는 오늘 아무것도 안했어 ···. 말 줄임표 특수기호 모음집 점 · 중간 점 • 큰 점 말 줄임표 (점3개) ···. 말 줄임표 (점6개) ······. 수직 말 줄임표 (점..

[복붙하세요] 로마 숫자 특수기호 모음집 (Ⅰ, Ⅱ, Ⅲ, Ⅳ, Ⅴ, Ⅵ, Ⅶ...) [내부링크]

고대 로마에서 수를 나타낼때 사용했던 숫자 특수문자를 첨부합니다. 필요하신분들은 간편하게 복사 + 붙여넣기 하셔서 사용하시기 바랍니다. 직접 입력을 원하시는분은 한글 키보드에서 [ㅈ]+[한자]키를 사용하여 입력하실 수 있습니다. 로마 숫자 특수기호 모음집 로마 숫자 기호 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ 아라비아 숫자 1 2 3 4 5 6 7 8 9 10 로마 숫자 기호 Ⅼ Ⅽ Ⅾ Ⅿ ↀ ↁ ↂ ↇ ↈ 아라비아 숫자 50 1백 5백 1천 1천 5천 1만 5만 10만 Ⅰ, ⅰ Ⅱ, ⅱ Ⅲ, ⅲ Ⅳ, ⅳ Ⅴ, ⅴ Ⅵ, ⅵ Ⅶ, ⅶ Ⅷ, ⅷ Ⅸ, ⅸ Ⅹ, ⅹ Ⅺ, ⅺ Ⅻ, ⅻ Ⅼ, ⅼ Ⅽ, ⅽ Ⅾ, ⅾ Ⅿ, ⅿ ↀ ↁ ↂ ↇ ↈ

[복붙하세요] 이메일(편지) 특수 기호 () 모음집 [내부링크]

웹 사이트에 이메일을 입력할 때 이메일 특수기호를 사용하면 더 직관적으로 메일 주소를 표현할 수 있습니다. 편지 이메일 특수기호를 따로 올려둘테니 필요하신분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 이메일(편지) 특수기호 이메일(편지) 이모지 모음 @ : 이메일 ️ : 봉투 : 쪽지 : 수신 메시지 봉투 : 이메일 기호 : 연애편지 : 우체통 : 깃발을 내리고 닫혀 있는 우편함 : 깃발을 올리고 닫혀 있는 우편함 : 깃발을 올리고 열려 있는 우편함 : 깃발을 내리고 열려 있는 우편함 : 소포 : 나팔 : 받은 편지함 트레이 : 보낼 편지함 트레이 : 두루마리 : 끝이 둥글게 말린 종이 : 일본 우체국 : 유럽 우체국 : 배..

[복붙하세요] 자주 사용하는 수학 기호 모음집(루트, 집합, 비교, 적분 등) [내부링크]

많이 사용하는 수학 수식 기호들을 정리해서 올려둡니다. 필요하신분들은 복사 + 붙여넣기 해서 사용하시면 되겠습니다. 자주 사용하는 수학 기호 모음집 제곱 루트 첨자 ^ ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ √ ∛ ∜ 산술기호 + − ± ∓ ÷ ∗ ∙ × ∑ ⨊ ⅀ ∏ ∐ ∔ ∸ ≂ ⊕ ⊖ ⊗ ⊘ ⊙ ⊚ ⊛ ⊝ ⊞ ⊟ ⊠ ⊡ ⋄ ⋇ ⋆ ⋋ ⋌ ~ ⩱ ⩲ Δ 이퀄 = 기호 ≠ ≈ ≂ ≃ ≄ ⋍ ≅ ≆ ≇ ≉ ≊ ≋ ≌ ≍ ≎ ≏ ≐ ≑ ≒ ≓ ≔ ≕ ≖ ≗ ≙ ≚ ≜ ≟ ≡ ≢ ≭ ⋕ 비교(부등호) 기호 ≤ ≥ ≦ ≧ ≨ ≩ ≪ ≫ ≮ ≯ ≰ ≱ ≲ ≳ ≴ ≵ ≶ ≷ ≸ ≹ ≺ ≻ ≼ ≽ ≾ ≿ ⊀ ⊁ ⊰ ⋖ ⋗ ⋘ ⋙ ⋚ ⋛ ⋞ ⋟ ⋠ ⋡ ⋦ ⋧ ⋨ ⋩ 집합 기호 ∅ ∁ ∈ ∉ ∋ ∌ ∖ ..

[복붙하세요] 도씨, 섭씨 특수 기호 ( ) - 온도 표기 [내부링크]

섭씨, 도씨 특수기호는 [ㄹ] + [한자키]를 사용하면 입력할 수 있지만 요즘 한자키가 없는 키보드를 사용하는 경우가 많아 도씨 기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 온도 특수기호 모음집 단축키 : [ㄹ] + [한자] 섭씨(도씨) 화씨

[복붙하세요] 음표 특수 문자 모음집 ( ) [내부링크]

음표 특수기호는 [ㅁ] + [한자키]를 사용하면 입력할 수 있지만 요즘 한자키가 없는 키보드를 사용하는 경우가 많아 음표 기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 음표 특수기호 모음집 단축키 : [ㅁ] + [한자] # # ø ø 음악 관련 이모지 모음 : 음표1 : 음표2 : 악보 : 기타 : 마이크 : 피아노 : 헤드폰 : 작은 스피커 : 중간 스피커 : 큰 스피커 : 확성기 : 메가폰 : 트럼펫 : 색소폰 : 나팔 : 색소폰 : 바이올린 c : 청각 장애자용 기호 : 음소거 c️ : 마이크폰 c️ : 음량 조절 c️ : 음량 조절

[복붙하세요] 화살표 특수 문자 모음집 (← ↑ → ↓ ) [내부링크]

작업할 때 화살표 특수 기호를 자주 사용하는데 한자키가 없는 키보드를 사용하는 경우가 많아 화살표 기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 화살표 특수 문자 모음집 기본 화살표 단축키 : [ㅁ] + [한자] ← ↑ → ↓ ↔ ⇎ ⇏ ⇒ ⇔ ⤌ ⤍ ⤎ ⤏ ⤐ ⤑ 꺾은선 화살표 ⟲ ⟳ ⤳ ⤴ ⤵ ⤶ ⤷ ⤸ ⤹ ⤺ ⤻ ⤼ ⤽ ⤾ ⤿ ⥀ ⥁ 양방향 화살표 ⤡ ⤢ ⤣ ⤤ ⤥ ⤦ ⤧ ⤨ ⤩ ..

[복붙하세요] 전화기 특수 기호 () 모음집 [내부링크]

전화번호를 입력할 때 번호 앞에 전화기 특수기호를 사용하면 더 직관적으로 전화번호를 표현할 수 있습니다. 전화기 이모티콘은 키보드 [ㅁ] + [한자]를 사용하면 입력할 수 있는데요. 개인적으로 요즘 작업할 때 한자키가 없는 키보드를 사용하는 경우가 많아서 전화기 특수기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 전화기 특수기호 단축키 : [ㅁ] + [한자] 전화기 전화 받기 무선 전화 전화기 이모지 : 스마트폰 : 전화 끊기 : 휴대폰 : 전화기 : 무선 전화기

[복붙하세요] 귀여운 표정 얼굴 이모티콘 모음집 (ง •̀ω•́)ง (•ᴗ•) [내부링크]

웹 서핑을 하다가 귀여운 이모티콘 모음집들을 발견하여 이곳에 따로 정리합니다. 귀여운 이모티콘들이 필요하신 분들은 복사 + 붙여넣기 하셔서 친구들에게 한번 사용해 보세요. 표정 이모티콘 기본 이모티콘 (ง •̀ω•́)ง (ง •̀_•́)ง ٩( ᐛ )و ٩(๑•̀o•́๑)و (๑•̀ㅁ•́๑) (•ө•) (๑´ڡ`๑) (๑•̀ㅂ•́)و •̀.̫•́ ʕ•̀ω•́ʔ ʕ•ٹ•ʔ ლ(´ڡ`ლ) (・ิω・ิ) ٩(๑´3`๑)۶ ( ・ิϖ・ิ) (ㆁωㆁ*) (*´ڡ`) ٩ (ε )۶ ( ・ิω・ิ) (*˘︶˘*).。.:* (ӦvӦ。) ( ・ิω・ิ) (´ϖ`) 웃는 이모티콘 \(^o^)/ (^o^) (^^) (^^)/ (^^)v (^_^) (^_^)v (*^^*) ..

[복붙하세요] 파이 기호 (π, Ø, Φ) 모음집 [내부링크]

가끔 작업할 때 PI 기호를 사용해야 하는 경우들이 있는데 가끔 어디서 가지고 와야 하는지 난감하신 분 있으시죠? 파이 기호 올려둘 테니 필요하신 분들은 복사 + 붙여 넣기 해서 사용하시기 바랍니다. 파이 기호 모음 원주율 PI 특수 기호 π π 원의 지름 특수기호 Ø Ø Φ Φ 기타 원주율 PI 기호 π : 그리스 문자 파이 (기본) c : 굵은 기울임 꼴 작은 PI c : 산세 리프 굵은 작은 PI c : 산세 리프 굵은 이탤릭체 작은 PI П : 키릴 대문자 PI п : 키릴 소문자 PI ∏ : 제품 기호 ℼ : 개요 스타일의 문자 PI 兀 : 한자 PI ㄇ : PI 중국어 음성 표기법

[복붙하세요] 동그라미 숫자, 문자, 기호(원 숫자, 문자, 기호) 모음집 ①❷⓬c [내부링크]

개인적으로 요즘 작업할 때 한자키가 없는 키보드를 사용하는 경우가 많아 원숫자, 원기호를 따로 올려둡니다. 필요하신 분들은 복사 + 붙여넣기 해서 사용하시기 바랍니다. 원 숫자 모음 단축키 : [ㅇ] + [한자] ①②③④⑤⑥⑦⑧⑨⑩ ⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ ㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚ ㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵ ㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ ❶❷❸❹❺❻❼❽❾❿ ⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴ ⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ ⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇ 원 한자 숫자 ㊀ ㊁ ㊂ ㊃ ㊄ ㊅ ㊆ ㊇ ㊈ ㊉ 괄호 한자 숫자 ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ 원 문자 모음 단축키 : ㅇ + 한자 단축키 : ㅅ + 한자 알파벳 원 문자 : 대문자 A~Z 알파벳 원문자 : 소문자 a~z ..

[Web] 크롬(Chrome)에서 글자에 커서가 깜빡일때 해결하는 방법 [내부링크]

크롬을 사용하다가 계속 텍스트에 커서가 깜빡여서 보기에 불편한 경험 있으셨나요? 구글에서 검색을 하거나, 심지어는 영상의 자막에도 커서가 깜빡여서 집중을 방해하기도 합니다. 이런 문제는 구글의 접근성의 설정 때문에 생기는 문제인데요. 접근성의 속성 하나만 꺼주시면 간단하게 해결됩니다. 오늘은 이 방법에 대해 알아보도록 하겠습니다. 크롬(Chrome)에서 커서가 깜빡일때 해결하는 방법 단축키 : 키보드의 [F7] 을 누르시면 간단하게 없어집니다. 안 되는 분들만 아래 절차를 따라 하시기 바랍니다. 1. 크롬 우측 상단에 있는 점3개 아이콘을 클릭하고 보이는 리스트에서 설정 버튼을 클릭합니다. 2. 좌측 탭에서 "접근성"을 클릭하고 "텍스트 커서로 페이지 탐색" 기능을 OFF합니다. 3. 텍스트에 커서가 깜..

[Web] PDF 파일에 무료로 비밀번호 해제하는 간단한 방법 [내부링크]

PDF 보안등의 이유로 암호를 설정해 두었다가 누군가에게 전달할 때 패스워드를 알려주기보다는 PDF에 걸어두었던 암호를 제거하고 전달하고는 합니다. 이 기능을 사용하려면 어도비의 acrobat 프로그램을 사용하는 것이 가장 좋기는 하지만 유료 프로그램이기 때문에 무료로 사용하고 싶은 사용자들에게는 쉽게 사용하기 어렵습니다. 다행히 최근에는 PDF에 암호를 해제할 수 있는 기능을 제공하는 무료 웹 사이트들이 여럿 나오고 있습니다. 그중에서도 저는 I LOVE PDF라는 웹 사이트를 추천드립니다. 이번 포스팅에서는 I LOVE PDF 사이트에서 PDF에 암호를 해제하는 방법에 대해 알아보도록 하겠습니다. 무료로 PDF 파일 비밀번호 해제하는 방법 https://www.ilovepdf.com/ko/unlock..

[Web] PDF 파일에 무료로 비밀번호 설정하는 간단한 방법 [내부링크]

최근에는 중요한 문서의 보안등을 이유로 문서에 패스워드를 거는 경우가 많습니다. 엑셀이나 파워포인트의 경우에는 마이크로소프트에서 제공하는 오피스 프로그램에서 패스워드 설정 기능을 사용하면 간단하게 설정할 수 있으나 PDF는 유료 프로그램이 아니라면 제공하는 기능이 없는 경우가 대부분인지라 패스워드 설정하는 게 상당히 까다로운데요. 이번 포스팅에서 알려드리는 웹 사이트에서 패스워드를 걸 수 있는 방법이 있으니 참고해 주시면 감사하겠습니다. 전자책 PDF도 패스워드를 걸때 이 방법을 사용합니다. PDF 파일에 무료로 비밀번호 설정하는 간단한 방법 https://smallpdf.com/kr/protect-pdf 1. 위에 링크되어 있는 사이트에 접속하고 파일 선택 버튼을 클릭하여 패스워드를 설정 할 PDF 파..

[Web] 어도비 프로그램(포토샵, 일러스트, 프리미어 프로)들 설치 및 다운로드 구독 방법 & 30일 무료 [내부링크]

어도비에는 포토샵, 일러스트, 프리미어 프로 등등 디자인이나 영상과 같이 관련업계에 종사하시는 분들에게는 거의 필수품이라고 할 수 있는 프로그램들이 많이 있습니다. 어도비 프로그램 설치 / 다운로드하는 Creative Cloud 구독 서비스 최근에는 어도비에서도 구독 기반 서비스인 Creative Cloud(크리에이티브 클라우드)라는 서비스를 제공하고 있는데요. 이 Creative Cloud 구독자들은 어도비의 소프트웨어를 온라인에서 항상 최신 버전으로 다운로드하여 설치할 수 있습니다. Creative Cloud에는 어도비의 대표 상품인 포토샵, 일러스트, 인디자인, 프리미어 프로, 애프터 이펙트 등등의 많은 제품들이 포함되어 있고 클라우드에 파일을 저장하고 협업할 수 있는 기능도 제공하고 있어서 프로젝..

아이어워즈 - 2023 베스트 디지털에이전시 순위 알아보기 [내부링크]

국내에는 다양한 산업 분야에서 경쟁력을 가지고 있는 많은 기업들이 있습니다. 워낙 많은 기업들이 존재하는지라 저희 같은 일반인들은 상장이 되어 있는 회사가 아니면 잘 알지 못하는데요. 어떠한 기업들이 어떤 경쟁력을 가지고 있고, 어떻게 경쟁력을 가지게 되었는지 알게 되면 지금 하고 있는 일에도 도움이 될 수 있고 혹여나 우리가 미래에 창업을 하게 될 때도 많은 도움이 될 수 있을 것 같습니다. 다행히도 이런 회사들을 카테고리별로 순위를 매겨주는게 있어서 포스팅을 해보려고 합니다. 아이어워즈 시상식 아이어워즈 시상식이라고 한국인터넷전문가협회라는 곳과 아이어워즈위원회가 주관하는 대한민국 인터넷 혁신대상 시상식이라는 것이 있습니다. 카테고리에는 웹사이트, 애플리케이션, SNS등에서 시상을 합니다. 여기에서 순..

[JavaScript] 자바스크립트 forEach문 사용법 & 예제 정리 [내부링크]

자바스크립트 for문의 종류 for문 : 일반적인 for문으로 블록 안의 코드를 조건에 따라 반복합니다. forEach문 : 배열에 대해 사용되는 for문으로, 각 배열 요소에 대해 주어진 함수를 실행합니다. for...in문 : 객체에 대해 사용되는 for문으로, 객체의 열거 가능한 속성을 반복할 때 사용됩니다. for...of문 : 배열, 문자열, 맵(Map), 셋(Set) 등의 iterable 객체를 순회할 때 사용되는 for문입니다. 자바스크립트에서는 forEach, for in, for of와 같은 다양한 종류의 for문이 사용될 수 있습니다. 이번 포스팅에서는 forEach에 대해 알아보도록 하겠습니다. forEach는 배열의 각 요소에 대해 주어진 함수를 실행하는 배열 메서드로 이 메서드를 ..

[JavaScript] 자바스크립트 for문 사용법 & 예제 정리 [내부링크]

for 문은 자바스크립트에서 가장 많이 사용되는 반복문으로 초기화, 조건식, 증감식으로 구성되어 있고 조건식을 만족할 때까지 블록의 코드를 반복하여 실행합니다. 다른 반복문보다 가독성도 좋고, 사용하기도 편해서 사용빈도가 높아 반복문중에서는 가장 중요하다고 할 수 있겠습니다. 아래에서 for 문에 대해 자세히 알아보겠습니다. for문 사용법 for (초기화; 조건식; 증감식) { // 반복 실행될 코드 블록 } 위의 예제는 for문의 기본형입니다. 초기화: 반복문이 시작될 때 한 번만 실행되며, 변수를 초기화하는 부분입니다. 조건식: 각 반복마다 평가되어 참인 동안에 계속해서 반복됩니다. 조건식이 거짓이 되면 반복문이 종료됩니다. 증감식: 각 반복이 끝난 후에 실행되며, 변수를 증가 또는 감소시키는 부분..

[JavaScript] 자바스크립트 do-while문 사용법 & 예제 정리 [내부링크]

do-while 문은 코드 블록을 한 번 실행한 후에 조건을 만족하면 코드 블록을 재 실행하는 반복문입니다. 따라서 do-while 문은 최소한 한 번은 코드 블록은 무조건 실행하고 조건에 따라서 반복 수행할지 여부를 결정합니다. 이번 포스팅에서는 자바스크립트의 do-while 문에 대해 알아보겠습니다. ※ while문이 궁금하시다면 아래 글을 참고해 주세요. [JavaScript] 자바스크립트 while문 사용법 & 예제 정리 do-while 문 사용법 do { // 실행될 코드 블록 } while (조건); 위의 예제는 do-while 문의 기본형입니다. 여기서 조건은 불리언(boolean) 값으로 표현될 수 있는 식을 말하며 먼저 블록을 실행한 뒤 마지막에 조건이 true라면 중괄호 { } 안의 코..

[JavaScript] 자바스크립트 while문 사용법 & 예제 정리 [내부링크]

반복문을 이용하면 코드를 원하는 횟수만큼 반복하여 실행할 수 있습니다. 반복문에는 while, do-while, for문 이렇게 3가지가 있는데요. 이번 포스팅에서는 그중에서 while문에 대해서 알아보려 합니다. while 문은 조건이 참인 동안 특정 코드 블록을 반복적으로 실행하는데 주로 특정 조건이 충족될 때까지 반복해야 할 경우에 사용됩니다. while문 사용법 while (조건) { // 조건이 참일 때 실행될 코드 블록 } 위의 예제는 while문의 기본형입니다. 여기서 조건은 불리언(boolean) 값으로 표현될 수 있는 식을 말하며 해당 조건이 true인 동안, 중괄호 { } 안의 코드 블록이 반복해서 실행됩니다. while의 실행 순서 조건식을 검사합니다. 만족하면 중괄호 { } 안의 코..

[JavaScript] 자바스크립트 switch문 사용법 & 예제 정리 [내부링크]

여러 개의 조건을 처리할 때 if-else문을 사용할 수도 있지만 switch문을 사용할 수도 있습니다. 스위치 문(Switch statement)은 특정 변수나 표현식의 값을 기반으로 다양한 경우(case) 중 하나를 선택하여 실행하는 조건문의 하나로써 하나의 코드만 실행한다는 뜻으로 선택문이라고도 말하기도 합니다. switch문의 장점 2가지 가독성: switch문은 여러 개의 case로 분기되어 있어서 else-if보다 가독성이 좋습니다. 특히, 비교하려는 값이 많고 조건에 만족하였을 때 실행하는 코드가 적을 때 switch문을 사용하면 코드를 깔끔하게 유지할 수 있습니다. 동등 비교 강제 : switch문에서는 기본적으로 값과 case문의 값이 '===`로 비교됩니다. 이는 자료형과 값이 모두 같..

[JavaScript] 자바스크립트에서 루트(제곱근) 구하는 두가지 방법 [내부링크]

자바스크립트에서 제곱근을 계산하는 다양한 방법이 존재합니다. 대표적으로 두 가지 방법이 존재하는데요. 이번 포스팅에서 한번 소개해보고자 합니다. 자바스크립트에서 거듭 구하는 방법 ** 연산자 사용 let x = 25; let y = 0.5; console.log(x ** y); // 출력: 5 ES6 이후부터는 지수 연산자 **를 사용하여 간단하게 제곱근을 계산할 수 있습니다. 제곱근은 지수 연산자를 사용하여 0.5승으로 계산하시면 됩니다. Math.sqrt() 메서드 사용 let x = 25; console.log(Math.sqrt(x)); // 출력: 5 고전적인 방법으로 Math의 sqrt 메서드를 사용하는 방법이 있겠습니다. 아직까지 ES6(ECMAScript 2015)를 지원하지 않는 브라우저도..

[JavaScript] 자바스크립트에서 거듭제곱을 구하는 두가지 방법 [내부링크]

자바스크립트에서 거듭제곱을 계산하는 다양한 방법이 있습니다. 대표적으로 두 가지 방법이 있는데요. 이번 포스팅에서 소개해보고자 합니다. 자바스크립트에서 거듭 제곱 구하는 방법 ** 연산자 사용 let x = 2; let y = 3; console.log(x ** y); // 출력: 8 ES6 이후부터는 지수 연산자 **를 사용하여 간단하게 거듭제곱을 계산할 수 있습니다. 위의 예제처럼 하면 2의 3승으로 8이 출력됩니다. Math.pow() 메서드 사용 let x = 2; let y = 3; console.log(Math.pow(x, y)); // 출력: 8 고전적인 방법으로 Math의 pow 메서드를 사용하는 방법도 있습니다. 아직까지 ES6(ECMAScript 2015)를 지원하지 않는 브라우저도 여..

[JavaScript] Number의 부동소수점 문제 발생원인과 해결방법 [내부링크]

let x = 0.1 + 0.2; console.log(x); 위의 자바스크립트 코드를 실행시키면 어떤 결과가 나올까요? 상식적으로는 0.3이 나와야 정상이겠습니다만 실제로는 위와 같이 0.30000000000000004라는 결과값이 나옵니다. 바로 자바스크립트의 Number Type이 64비트의 부동 소수점으로 데이터를 저장하기 때문에 부동소수점 문제가 발생한 것입니다. 이번 포스팅에서는 자바스크립트에서 부동 소수점 문제가 발생하는 원인이 무엇이고, 이 문제를 어떻게 해결할 수 있을지에 대해 알아보도록 하겠습니다. ※ 참고로 자바스크립트만 이 부동소수점에 대한 이슈는 자바스크립트에서만 발생하는 특이한 이슈가 아닌 부동소수점을 차용하고 있는 모든 프로그래밍 언어에서 이러한 문제가 발생합니다. 부동 소수점..

[JavaScript] 자바스크립트 객체(Object) 생성 & 사용 방법 [내부링크]

객체(Object)란? 자바스크립트는 객체 기반 프로그래밍 언어입니다. 객체를 구성하는 요소로는 속성(Property)과 기능(Method)이 있습니다. 속성과 기능이 있다는 점에서 TV는 객체로 표현될 수 있습니다. 너비와 높이, 색상, 무게와 같은 속성이 있고, TV 켜기, 끄기, 볼륨 높이기, 줄이기와 같은 기능이 있으니 말이죠. 이렇게 자바스크립트에서 이러한 객체를 잘 표현해서 코드화하면 얻을 수 있는 장점들이 많습니다. 이번 포스팅에서는 자바스크립트의 객체에 대해서 알아보도록 하겠습니다. 객체를 사용하면서 얻는 장점 데이터를 구조화시킬 수 있다 : 객체를 사용하면 데이터들을 보다 논리적으로 그룹화하여 구조화할 수 있습니다. 이러한 과정을 통해 코드의 가독성을 높이고 유지보수함에 유리합니다. 데이..

[JavaScript] 자바스크립트의 데이터 타입(DataType)에 대하여 [내부링크]

특이하게도 자바스크립트는 타 프로그래밍 언어와는 달리 변수를 선언할 때 데이터타입을 명시적으로 지정하지 않습니다. 자바스크립트(JavaScript)는 동적 타입 언어로써 변수를 선언할 때 변수에 할당된 값에 따라 동적으로 데이터 타입이 자동으로 결정되기 때문입니다. 이렇게 동적으로 데이터 타입을 지정하기 때문에 엄연히 자바스크립트에도 데이터 타입이 존재합니다. 이번 포스팅에서는 자바스크립트의 데이터 타입(DataType)에 대해 알아보도록 하겠습니다. ※ 변수를 선언자 var, let, const에 대해서 궁금하시다면 아래 글을 참고해 주세요. [JavaScript] 변수 선언자 var, let, const의 차이점과 사용법 데이터타입 종류 자바스크립트의 데이터 타입은 크게 기본 데이터 타입(Primit..

[JavaScript] 변수 선언자 var, let, const의 차이점과 사용법 [내부링크]

프로그래밍 언어에서 데이터를 담을 때는 변수를 선언해야 합니다. 변수는 데이터를 담는 그릇이라고 생각하시면 되고 자바스크립트에도 당연히 변수라는 개념이 존재합니다. 자바스크립트에서 변수를 선언할 때는 var, let, const라는 세 가지 키워드를 활용하여 변수를 선언하는데요. 이 세 가지 키워드들은 그 특성에 차이점이 존재합니다. 이번 포스팅에서는 var, let, const의 차이점과 사용법에 대해 알아보겠습니다. 키워드 var의 특징 var는 ES6의 등장 이전에 변수를 선언하는 데 사용되었던 초기 JavaScript에서의 변수 선언자입니다. var는 재선언이 가능하다. var x = 10; var x = 20; // 재선언 가능 console.log(x); // 20 일반적인 프로그래밍 언어에서..

[JavaScript] 콘솔(console) 로그 찍는 방법 (+console 주요 메서드 사용법) [내부링크]

크롬과 같은 브라우저는 개발자가 소프트웨어를 개발할 때 디버깅을 할 수 있게 하는 "개발자 도구"라는 것을 제공하고 이것이 없으면 개발이 불가능하다 싶을 정도로 모든 개발자들이 사용하는데요. 이 개발자 도구에서 자바스크립트 코드의 결과값을 콘솔에 출력하려면 console을 사용하시면 됩니다. 이번 포스팅에서는 자바스크립트의 console 사용 방법에 대해 알아보도록 하겠습니다. 개발자 도구의 콘솔 사용법 1. 자바스크립트에 console을 직접 넣을 수 있습니다. 이렇게 한다면 웹 사이트를 오픈할 때 콘솔창에 "메시지 출력"이라는 메시지가 출력되겠습니다. 2. 콘솔창은 브라우저에서 [F12]를 눌러 개발자 도구를 열고 "Console" 탭을 선택하면 삽입해두었던 메시지 출력 콘솔 코드가 동작한 것을 확인..

[JavaScript] HTML에서 자바스크립트(.js) 파일 사용하기 [내부링크]

웹 개발을 할 때 HTML문서에서 를 정의하는 경우도 많지만 따로 JavaScript 파일을 .js파일로 별도로 생성해서 연결하는 경우도 있습니다. 이렇게 자바스크립트를 별도로 분리하면 코드의 가독성 향상, 코드의 재사용성과 유지보수성의 향상, 협업의 편리성 증가 등등 다양한 이점을 가지고 있습니다. 이번 포스팅에서는 .js 파일을 .html 파일에 연결하는 방법에 대해 알아보도록 하겠습니다. JavaScript 파일을 별도로 분리하면 좋은 이유 4가지 코드의 가독성 및 유지 보수성 향상 : HTML은 구조를 정의하고, JavaScript는 웹의 동작을 담당합니다. 이렇게 기능이 다른 HTML코드와 JavaScript 코드가 하나의 파일에 혼재되어 있는 것 보다는 JavaScript 코드를 분리하면 코드..

[VSCode] Visual Studio Code에서 스니핏(Snippet) 등록 & 사용하기 [내부링크]

Visual Studio Code (VS Code)에서 스니핏(Snippets)은 자주 사용하는 소스코드(코드 조각)를 미리 정의하여 지정해 둔 예약어로 한 번에 불러올 수 있는 기능을 말합니다. 쉽게 말해서 소스코드 자동 완성이라고 생각하시면 되겠습니다. 위의 예제를 보시면 미리 태그들을 list라는 이름의 스니핏으로 만들어놓고 불러와 리스트를 쉽게 만드는 모습을 보실 수 있습니다. 코드 조각은 VS Code에서 자체적으로 제공하는 내장 코드 조각과, 사용자가 직접 정의한 사용자 정의 코드 조각으로 구분할 수 있습니다. 내장 코드 조각(Built-in Snippets) VS Code는 자체적으로 다양한 언어에 대한 내장 코드 조각을 제공합니다. 예를 들어 HTML에서 ! 느낌표를 입력하고 탭을 누르면 ..

[VSCode] Visual Studio Code에서 자바스크립트 개발환경 세팅하기 [내부링크]

비주얼 스튜디오 코드(Visual Studio Code)는 마이크로소프트(Microsoft)에서 제공하는 개발 프로그램(IDE)입니다. 무료인 데다가 전 세계 개발자들이 만들어놓은 다양한 확장 프로그램을 제공하고 있어 간단한 웹 개발 & 테스트를 함에 있어 상당히 유용합니다. 이번 포스팅에서는 비주얼 스튜디오 코드에서 HTML, CSS, JavaScript를 테스트할 수 있는 환경을 구축하는 방법에 대해 포스팅하려고 합니다. ※ 먼저 비주얼 스튜디오 코드(Visual Studio Code)가 설치되어 있지 않은 분은 아래 글을 참고하여 설치를 먼저 진행해주시기 바랍니다. [VS Code] 비주얼 스튜디오 코드 - 설치 / 다운로드 방법 [VS Code] 비주얼 스튜디오 코드 - 설치 / 다운로드 방법 비..

[HTML] p 태그 줄바꿈(개행) 적용 안될 때 해결법 [내부링크]

태그는 HTML에서 텍스트를 표현하는데 사용되는 기본적인 태그로 여기서 p는 문단을 뜻하는 paragraph의 약자입니다. 하지만 이 태그는 기본적으로는 개행을 처리하지 못해 텍스트들이 기본적으로 일렬로 쭉 나열되는 형태로 표현이 되는데요. 이러면 문단의 가독성이 떨어지겠죠. 이번 포스팅에서 해결방법에 대해 알아보겠습니다. 문제) 태그에서 개행이 표현이 안됨 See the Pen P Tage1 by wjdxo513 (@wjdxo513) on CodePen. 위의 예제를 보시면 태그 안에서 애국가의 1절의 가사가 줄바꿈이 4번 이루어졌음에도 불구하고 줄바꿈이 표현되지 않고 일렬로 쭉 나열된 것을 보실 수 있습니다. 태그는 기본적으로 white-space 속성값이 normal으로 되어 있어 개행이 무시되기에..

[Web] HTTP 세션(Session)이란 무엇인가? +(세션 관리 방법) [내부링크]

HTTP 세션이란? HTTP 세션은 웹 서비스에서 사용자의 상태 정보를 유지하기 위한 방법입니다. 기본적으로 HTTP 프로토콜은 상태값을 유지할 수 있는 방법이 없습니다. HTTP 통신은 클라이언트와 서버 간의 통신이 각각의 요청과 응답 간에 독립적으로 이루어지기에 사용자를 특정할 수 있는 방법이 존재하지 않기 때문입니다. 하지만 웹 서비스에서는 사용자의 상태를 계속 유지해야 하는 경우들이 있습니다. 예를 들자면 로그인이나, 장바구니를 예시로 들 수 있겠습니다. 다른 페이지로 이동하더라도 로그인이 유지되고, 장바구니에 담긴 상품들이 유지되는 것처럼 말이죠. HTTP 세션의 동작 원리 로그인을 한다고 가정하고 세션을 통해 어떻게 사용자의 상태값을 유지할 수 있는지 알아보겠습니다. DB를 사용할 수도 있는데..

[Web] HTTP 캐싱(Caching), 웹 캐시(Web Cache)란 무엇인가? [내부링크]

HTTP 캐싱(Caching)이란? HTTP 캐싱(Caching)은 한번 가지고 온 첫 요청 시 리소스(이미지, 스타일 시트, 자바스크립트 파일 등)를 미리 저장해 뒀다가 다음번 동일한 HTTP 요청에서 서버에서 리소스를 새로 가지고 오는 것이 아닌 미리 저장해 뒀던 리소스를 활용하는 기법을 말합니다. 이 기법을 통해 반복적으로 요청되는 리소스의 부하를 줄여서 웹 로딩속도 향상과 서버의 과부하를 줄일 수 있습니다. 이 캐싱이라는 용어는 웹에서만 사용되는 용어는 아닙니다. 자원을 미리 저장해 놓고 활용하는 방식은 효율성이 중요한 어떤 곳에서 든 가장 먼저 생각해 볼 수 있는 방식입니다. CPU의 내부에도 캐시메모리라는 방식이 존재하고, 어떻게 보면 일상생활에서 자주 사용되는 포스트잇도 캐싱이라고 할 수 있..

[Web] HTTP 쿠키(Cookie)란 무엇인가? [내부링크]

쿠키(Cookie)란? 쿠키는 웹 브라우저와 웹 서버 간의 정보를 교환할 때 사용되는 작은 기록 파일을 말합니다. 쿠키는 사용자가 임의의 웹 사이트를 방문할 때 사용자의 디바이스(PC, 휴대폰, 태블릿)등에 저장되며 쿠키에는 사용자에게 필요한 정보를 저장하여 사용자 경험을 향상시켜 줍니다. 예를 들자면 장바구니에 물건을 추가한다거나 로그인이 풀리지 않도록 처리하는 등에서 쿠키를 활용할 수 있겠습니다. 이후 HTTP 요청을 서버로 보낼 때 웹 브라우저는 쿠키를 같이 전송해 줍니다. 그 쿠키에 있는 데이터를 서버 측에서는 활용할 수 있겠죠. 세션 관리 : 쿠키를 사용하여 사용자의 로그인 상태나 세션을 관리할 수 있습니다. 맞춤형 콘텐츠 제공 : 쿠키를 활용하여 사용자에 입맛에 맞는 콘텐츠를 제공할 수 있습니..

[Web] HTTP 헤더(header) 구조와 주요 파라메터 정리 [내부링크]

HTTP 헤더란? HTTP 헤더는 웹 브라우저와 서버 간의 통신 방법인 HTTP 통신 메시지에서 메타데이터를 담고 있는 부분을 말합니다. 여기서 메타데이터는 쉽게 말해 다른 데이터를 설명해 주는 데이터를 말하는데요. 그러니까 HTTP 헤더는 HTTP 메시지의 부가적인 정보를 담고 있다고 생각하시면 이해가 편하실 것 같습니다. HTTP 통신은 요청과 응답 시에 모두 HTTP 메시지로 통신을 합니다. 일반적으로 웹 브라우저는 사용자가 요청한 웹 페이지에 대한 정보를 받기 위해 서버에게 HTTP 요청을 보내고, 서버는 해당 요청에 대한 응답으로 HTML, 이미지, 스크립트 등의 데이터를 브라우저에 응답값으로 보내게 되는데 여기서 요청과 응답 시에 공통으로 사용되는 값과 다르게 사용되는 값들이 있습니다. 이번 ..

[블로그] 2023년 블로그 결산 (+새해 계획) [내부링크]

안녕하세요, 코딩팩토리입니다. 오늘은 12월 31일. 2023년의 마지막 날을 맞아 매년 해왔던 블로그 결산을 해보려 합니다. 지난 한 해를 되돌아보며 많은 생각이 듭니다. 별다른 사건이 없었던 2023년을 보내며, 앞으로의 제 삶도 이와 유사하게 흘러갈 것 같아 우울한 감정이 들기도 합니다. 저는 현재 직장을 다니고 있고, 퇴근 후에는 운동을 하며 운동이 끝난 뒤에는 유튜브를 보다가 잠이 듭니다. 지난 1년간 이 패턴의 일상을 반복했습니다. 이제는 제 인생이 특별하지 않다는 것을 알 것 같습니다. 앞으로 제가 일확천금을 벌 수도, 아주 잘 나가는 사람이 되기에도 힘들다는 사실을요. 그럼에도 불구하고 저는 언제나 조금 더 나은 사람이 되고자 노력하는 사람이 되고 싶습니다. 의욕을 잃지 말자고, 그 노력을..

[Web] 리다이렉트(Redirect)에 대하여 +구현방법 [내부링크]

리다이렉트(Redirect)란? 리다이렉트는 특정 요청을 받았을 때 현재 웹 페이지를 특정 URL로 이동시키는 프로세스를 말합니다. 리다이렉트는 웹에서 유용하게 사용됩니다. 예를 들면 사용자가 쇼핑몰에서 결제창을 띄워서 결제를 진행한다고 가정해 보겠습니다. 그러면 결제가 완료되거나 실패했을 때 기존에 쇼핑하고 있던 앱이나 웹사이트로 리다이렉트 시키면 사용자 경험이 올라가겠죠. 또한 내가 서비스하고 있는 웹 서비스의 도메인이 바뀌었을 때에도 리다이렉트를 활용하면 기존 도메인으로 들어온 고객들을 바뀐 도메인으로 인입되도록 처리하여 손실되는 트래픽을 최소화시킬 수도 있을 것입니다. 리다이렉트의 주체 클라이언트 사이드 리다이렉트 : 리다이렉트가 사용자의 브라우저에서 처리됩니다. 주로 자바스크립트 코드를 활용하여..

[Web] HTTP 상태 코드 총정리 (응답 코드) [내부링크]

상태코드란? HTTP 상태 코드는 클라이언트가 보낸 HTTP 요청에 대한 처리 상태를 서버의 응답에서 알려주는 기능을 가지고 있는 3자리 숫자코드를 의미합니다. 크게 1xx, 2xx, 3xx, 4xx, 5xx의 숫자로 시작되는 5가지의 분류로 나뉘어 있으며 각각의 상태 코드는 특정한 의미를 가지고 있습니다. 이 HTTP 상태코드 통해 사용자는 클라이언트와 서버 간의 통신 과정에서 어떤 일이 발생했는지를 대략적으로 유추할 수 있습니다. 1xx(Informational): 요청이 수신되어 처리 중 2xx(Successful): 요청 정상 처리 3xx(Redirection): 요청을 완료하려면 추가 행동이 필요 4xx(Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음..

[Web] HTTP 요청 메서드(Method) 정리 (GET, POST, PUT, PATCH, DELETE) [내부링크]

HTTP 요청 메서드는 클라이언트가 서버 측에 요청하는 HTTP 메시지를 전송하는 방식을 뜻합니다. 즉 서버에 HTTP 메서드를 요청할 때 서버에서 기대하는 행동을 정의해서 보낸다고 생각하시면 되겠습니다. 이 HTTP 메서드가 필요한 이유는 서버 측에서 HTTP 메시지의 의미를 쉽게 파악하기 위해서입니다. 예를 들어 회원관리를 하는 관리자 사이트가 있다고 해봅시다. 그러면 회원들의 정보를 수정하기 위해서는 클라이언트에서 서버로 HTTP 요청을 서버에 날려야 할 텐데, 같은 HTTP 메시지에 메서드만 PEATCH(수정), DELETE(삭제)냐에 서버는 요청 메시지의 의미를 구분할 수 있게 되고, 그에 따른 동작을 명확하게 처리할 수 있게 됩니다. 이러한 HTTP 메서드는 RESTful API에서 자주 사용..

[Web] URI, URL, URN의 정의와 차이점에 대하여 [내부링크]

오늘날의 인터넷에는 이미지, 동영상, 문서 등 다양한 종류들의 자원들이 웹 상에 존재하고 있습니다. 이렇게 다양한 자원들을 각각 식별하기 위해서 특별한 명칭 또는 주소가 필요하게 되었는데요. 이러한 고민에서 출발한 것이 URI, URL, URN이라는 용어들입니다. URN은 오늘날에는 거의 사용하지 않지만 웹 개발자라면 URI나 URL은 굉장히 많이 사용하게 되는 용어로 꼭 알아둬야 하는 개념입니다. URI(Uniform Resource Identifier)란? Uniform : 리소스 식별하는 통일된 방식 Resource : 자원, URL로 식별할 수 있는 모든 것 Identifier : 다른 항목과 구분하는데 필요한 정보 URI는 Uniform Resource Identifier의 줄임말로 번역해 보자..

[Web] DNS(도메인 네임 시스템)란 무엇인가? + 사용하는 이유 [내부링크]

도메인 네임 시스템(Domain Name System)이란? DNS는 도메인 네임 시스템 - Domain Name System의 약자로 도메인(www.naver.com)을 IP 주소(192.168.0.1)로 변환하는 시스템입니다. 인터넷에서 통신할 때, 클라이언트는 IP 주소를 사용하여 서버와 통신하게 되는데 사용자는 IP 주소를 일일이 기억하기 어려우므로, DNS 서버에 해당 도메인에 IP 주소를 매핑하여 도메인 입력만으로도 IP주소를 찾을 수 있도록 하는 것입니다. 도메인 네임 시스템(Domain Name System)을 사용해야 하는 이유 기억하기 어려운 IP 주소를 기억하기 쉬운 도메인으로 관리할 수 있다. 네이버 : 223.130.200.104 구글 : 142.250.199.78 DNS 서버를 ..

[Web] 네트워크 포트(PORT)번호란 무엇인가? [내부링크]

포트번호란? ex) 192.132.15.86:50921 IP주소 뒤에 : 기호와 함께 붙는 번호를 포트라고 합니다. 포트는 0~65536 사이의 숫자를 가지게 되며 실행되고 있는 프로세스를 구분 짓기 위해 사용되는 16비트의 논리적 할당을 말합니다. 포트번호는 컴퓨터의 특정 프로세스를 찾아갈 때 사용됩니다. 즉 192.132.15.86이라는 IP는 컴퓨터를 찾을 때 필요한 주소를 말하며, 50921이라는 포트는 컴퓨터 안에서 프로그램을 찾을 때 사용하는 것입니다. 포트라는 용어의 유래도 본래는 항구라는 단어에서 따온 말입니다. 항구의 입장에서 봤을 때 컨테이너를 가득 실은 배가 한 번에 둘 이상 입항하려고 하려면 어떻게 해야 할까요? A컨테이너선은 1부두로 B컨테이너선은 2부두로 유도를 시켜줘야 하겠죠...

[Web] 엔티티코드(Entity Code) 변환 사이트 추천 [내부링크]

엔티티코드란? 엔티티코드는 HTML에서 특수기호나 다국어를 사용하기 위한 코드를 뜻하며, 모든 엔티티코드는 &으로 시작해서 ; 기호로 끝납니다. 특수기호의 엔티티코드는 https://www.toptal.com/designers/htmlarrows/ 이 사이트에서 확인하실 수 있습니다. 엔티티 코드 자동 변환 사이트 https://mothereff.in/html-entities HTML entity encoder/decoder mothereff.in 일일이 엔티티코드를 찾아보는 게 귀찮아서 입력만 하면 엔티티코드로 변환시켜 주는 사이트가 있으면 정말 좋겠다 생각했습니다. 그래서 찾아봤는데 실제로 있더군요. 주소는 https://mothereff.in/html-entities 입니다. Decoded 부분에 ..

[Python] 파이썬 판다스(Pandas) 사용법 & 예제 [내부링크]

판다스(Pandas)는 파이썬에서 데이터 조작 및 분석을 할 때 많이 사용되는 라이브러리입니다. 데이터분석, 데이터정렬, 그룹화, 결측치 처리 등등 유용한 기능들을 많이 제공하고 있어 데이터를 다뤄야 하는 과학 분야에서 널리 사용되고 있습니다. 이번 포스팅에서는 판다스(Pandas)에 대한 간단한 사용법에 대해 알아보도록 하겠습니다. 그전에 판다스(pandas)가 설치되어 있지 않으신 분들은 아래 포스팅을 참고하셔서 설치를 먼저 하시길 바랍니다. ※ 파이썬 판다스 설치 방법은 아래 글을 참고하시기 바랍니다. [Python] 파이썬 판다스(Pandas) 설치 / 다운로드 하기 + 버전 확인 판다스의 데이터 구조 판다스의 데이터 구조에는 시리즈(Series)와 데이터(dataFrame)으로 나뉘어 있습니다...

[Python] 파이썬 판다스(Pandas) 설치 / 다운로드 하기 + 버전 확인 [내부링크]

이번 포스팅에서는 파이썬의 핵심 라이브러리라고 할 수 있는 판다스(Pandas)를 설치하는 방법에 대해 알아보도록 하겠습니다. 판다스(Pandas)는 파이썬의 데이터 조작 및 분석 모듈로 데이터를 다루고 표나 차트 형태의 보여주는데 사용되며 빅데이터, 머신러닝 등 다양한 분야에서 활용되고 있습니다. 판다스(Pandas) 설치 / 다운로드 1. 윈도우 검색창에서 cmd를 입력하여 명령 프롬프트를 실행시켜 줍니다. pip install pandas 2. 명령 프롬프트에 위의 명령어를 입력하고 Enter를 누릅니다. 3. 인터넷 환경에서 파이썬 판다스를 다운로드합니다. 오래 걸리지는 않으니 조금만 기다려 줍시다. 판다스(Pandas) 설치 버전 확인 import pandas as pd print(pd.__ve..

[Python] 파이썬 웹 크롤링 하는법 & 간단 예제 [내부링크]

웹 크롤링(Web Crawling)은 웹 사이트를 자동으로 서치하고 데이터를 수집하는 프로세스를 뜻합니다. 그리고 이 웹 크롤링은 파이썬이 강점을 가지고 있습니다. 파이썬이 웹 크롤링에 필요한 여러 가지 라이브러리와 풍부한 생태계를 갖추고 있기 때문입니다. 그중에서도 requests와 BeautifulSoup 라이브러리를 많이 사용하는데요. 이번 포스팅에서는 이 라이브러리를 사용하여 크롤링하는 방법에 대해 알아보도록 하겠습니다. 파이썬에서 웹 크롤링 하는 법 라이브러리 다운로드(requests, beautifulsoup) 일반적으로 파이썬 웹 크롤링은 requests 라이브러리를 사용하여 웹 페이지의 HTML을 가지고 오고, beautifulsoup를 사용하여 HTML코드를 사용하기 쉽게 나눠주는 파싱이..

[Python] 파이썬 SQLite3 모듈 사용법 & 예제 총정리 [내부링크]

데이터를 효율적으로 관리하기 위해 우리는 데이터베이스를 사용합니다. 하지만 간단한 프로그램에서 별도의 데이터베이스를 연결하는 것이 번거로운 작업일 수 있겠죠. 이럴 때는 파이썬에서 기본적으로 제공하는 SQLite3 모듈을 사용하면 별도의 DB연동 없이 데이터베이스를 사용할 수 있는데요. SQLite는 파이썬에서 제공하는 데이터베이스 라이브러리로 경량이면서 별도의 서버가 필요 없이 사용할 수 있는 내장형 데이터베이스 엔진으로 가볍게 사용하기에 좋습니다. 파이썬 SQLite3 모듈 사용법 SQLite 연결하기 import sqlite3 # SQLite 연결 객체 생성 con1 = sqlite3.connect('test.db') # 파일 DB접속 con2 = sqlite3.connect(':memory:') ..

[Python] 파이썬 부동 소수점 오차 해결 (decimal 모듈 사용법) [내부링크]

컴퓨터에서 소수는 어떻게 계산할 수 있을까요? 컴퓨터는 숫자를 이진법으로 표현하기 때문에 먼저 10진법의 소수를 이진법으로 변환한 뒤 연산을 해야 합니다. 이 과정에서 대부분의 소수는 오차가 발생하게 되는데요. 왜냐하면 십진법의 소수를 2의 음의 제곱으로 이진법으로 변환해주어야 하는데 많은 소수들이 완벽하게 변환될 수 없기 때문입니다. 무한소수가 되어버리는 경우들이 상당히 많습니다. 또한 무한소수는 변수에 저장될 수 없습니다. 메모리의 크기에 한계가 있기 때문입니다. 그래서 근사값으로 소수를 저장합니다. 메모리가 허용하는 범위 내에서 소수를 최대한 저장하고 끝의 자리에서 반올림을 해서 저장하는 것입니다. 이 과정에서도 불가피하게 오차가 발생합니다. 예를 들자면 0.1은 이진수로 정확히 표현되지 않아서 근..

[Python] 파이썬 파일 입출력(파일 생성, 읽기, 쓰기, 이어쓰기) 총정리 [내부링크]

프로그래밍에서 유의미한 데이터가 생성되었다면 이것을 어딘가에 기록해두어야 합니다. DB를 사용하면 가장 좋겠지만 간단한 데이터들은 DB를 사용하지 않고 파일 형태(ex : txt 파일)로 어딘가에 저장해 뒀다가 사용할 수도 있겠죠. 이번 포스팅에서는 파이썬에서 파일 입출력 하는 방법에 대해 알아보도록 하겠습니다. ※ 파일 입출력이란 로컬 파일의 데이터를 읽거나 반대로 파일에 데이터를 쓰는 작업을 뜻하며 쉽게 메모장이나 바이너리 파일에 텍스트를 넣거나 불러오는 과정을 뜻한다고 생각하시면 되겠습니다. 파일 열기와 닫기(open, close) # 파일 열기 # 변수명 = open("파일경로/파일이름.txt", "모드") new_file = open("sample.txt", "w") # 파일 닫기 new_fil..

[Python] 파이썬 클래스 상속(extends) & 예제 총정리 [내부링크]

클래스의 주요 특징 중 하나는 바로 '상속'이 된다는 점입니다. 부모 클래스를 자식이 상속받으면 별도의 정의 없이 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용할 수 있습니다. 이번 포스팅에서는 상속을 받으면 얻는 이점과 파이썬에서 클래스를 상속하는 방법에 대해 알아보도록 하겠습니다. 클래스 상속 시 얻는 이점들 코드 재사용 : 상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스에서 그대로 재사용할 수 있습니다. 이를 통하여 중복된 코드를 피할 수 있고 소스코드 유지보수가 쉬워집니다. 확장성 : 자식 클래스는 부모 클래스의 기능을 확장하거나 변경할 수 있습니다. 자식 클래스에 새로운 메서드를 추가하거나 부모 클래스의 메서드를 오버라이드하여 원하는 동작을 재정의할 수 있습니다. 다형성 : 상속을..

[Python] 파이썬 클래스(class) 사용법 & 예제 총정리 [내부링크]

객체지향 언어들의 특징은 클래스를 사용할 수 있다는 것입니다. 클래스는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심 개념으로, 코드를 구조화, 모듈화 하여 유지보수성을 향상하고 코드 재사용을 촉진하는 등 다양한 장점들을 제공합니다. 아마 클래스를 사용함에 따라 얻는 장점은 익히 알고 계시겠지만 모르는 분들을 위해서 간략한 예시를 들어보겠습니다. 쿠키 틀 -> 클래스(class) 쿠키 틀을 사용하여 만들어진 쿠키 -> 객체(object) 쿠키를 무한정 생성해야한다고 가정해 보겠습니다. 그럼 일일이 쿠키들을 만들어줘야 할까요? 수제 쿠키보다는 공장에서 찍어내는 쿠키가 훨씬 효율적이지 않을까요? 클래스를 사용하면 공장식으로 쿠키들을 찍어낼 수 있습니다. 쿠키 틀은 ..

[Mobile] 쿠팡 중고폰 보상 판매 방법 총정리 & 이용 후기 [내부링크]

새 핸드폰을 구매한 뒤 기존에 사용하던 중고 핸드폰은 어떻게 하시나요? 처리할 곳이 마땅치 않아서 그냥 서랍 안에 보관하시는 분들도 많던데, 이런 분들은 쿠팡의 중고폰 매입 서비스를 한번 이용해 보시는 건 어떨까요? 현재 쿠팡에서는 중고기기 매입 업체인 "주식회사 올리바"와 함께 휴대폰 중고기기 보상 판매 관련 서비스를 제공하고 있습니다. 쿠팡을 통해 새로운 휴대폰을 구매하였다면 기존에 사용하던 휴대폰은 반납하고 현금으로 보상해 주는 서비스입니다. 서랍 안에 넣어둘 바에는 적은 돈이라도 보상을 받는 것이 효율적인 선택이라고 생각합니다. 이번 포스팅에서 그 방법에 대해 알려드리도록 하겠습니다. ※ 이 서비스는 쿠팡에서 핸드폰을 신규로 구매한 유저만 사용이 가능합니다. 쿠팡 중고폰 보상판매 방법 1. 먼저 ..

[내돈내산] 삼성 갤럭시 폴드5 + 정품 스탠딩 케이스 구매 및 사용 후기 [내부링크]

저의 첫 폴더블폰은 갤럭시 z폴드3였습니다. 그때는 사전구매로 구매를 했었으니까. 약 2년을 넘게 사용하였는데요. 최근 들어 문제가 생겼습니다. 폴드를 펼쳤을 때 보이는 내부 디스플레이가 깨져버린 것입니다. 위의 사진을 보시면 가운데 접히는 부분에 검은색 선이 그어진 것을 보실 수 있습니다. 마치 물감 같기도 하네요. 당연히 내부 디스플레이는 터치도 먹지 않습니다. 어느 순간부터 내부 디스플레이에 주름이 많이 가서 기기에 뒤틀림이 있겠거니 싶었는데. 갑자기 이런 식으로 액정이 나가버리니 당혹스럽습니다. 삼성 AS센터를 가도 폴더블폰만 보이고. 확실히 아직까지 내구성은 부족하다고 생각됩니다. (수리비는 무려 60만 원이 청구되었습니다. ㅡㅡ;;) 어쨌든 폴더블폰에 내부 디스플레이 사용이 안된다니. 반쪽자리..

[Python] 파이썬 람다(lamda) 사용법 & 예제 총정리 [내부링크]

람다식(lambda expression) , 람다함수(lambda function)라는 용어를 들어보셨나요? 이 용어들은 익명 함수(anonymous function)를 표현하는 방법으로 익명 함수는 이름이 없는 함수를 뜻합니다. 즉, 함수를 정의할 때 함수의 이름을 명시적으로 지정하지 않고, 필요한 매개변수와 함수 본문만을 사용하여 함수를 생성하는 것을 의미합니다. 특정 기능을 수행하는 함수들을 한 줄로 작성이 가능하기 때문에 주로 간단한 작업을 수행하는 함수나 일회성으로 사용되는 함수를 정의할 때 사용합니다. 람다식 특징 람다식은 이름이 없는 익명 함수로 정의됩니다. 주로 한 줄로 간단한 연산을 수행하는 함수를 정의할 때 사용됩니다. 람다식은 변수에 할당하거나 다른 함수(map, filter, sor..

[Python] 파이썬 함수(function) 사용법 & 예제 총정리 [내부링크]

함수(function)는 어떠한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합으로 정의할 수 있겠습니다. 이렇게 특정 코드를 묶어 하나의 함수로 사용하면 계속 재사용할 수 있기 때문에 반복적인 프로그래밍을 피할 수 있습니다. 또한 이렇게 함수를 통해 캡슐화를 진행하게 되면 유지보수 및 코드 가독성측면에서도 유리합니다. 파이썬에서는 def 라는 키워드로 함수를 정의할 수 있는데요. 이번 포스팅에서는 파이썬에서 함수를 사용하는 방법에 대해 알아보도록 하겠습니다. 파이썬 함수(function) 사용법 - 기초 함수 정의하기 #def 함수이름(매개변수1, 매개변수2, ...): # 함수 실행할 코드 # return 반환값 def add(a, b): result = a + b return result..

[Python] 파이썬 난수 생성(random 함수) 사용법 & 예제 [내부링크]

게임에서 보면 무작위 확률, 무작위 아이템과 같은 "무작위"라는 용어가 많이 나옵니다. 그렇다면 우리는 이 무작위를 어떻게 구현할 수 있을까요? 프로그래밍에서는 무작위, 즉 예측할 수 없는 값을 생성하는데 임의의 숫자값 난수를 사용합니다. 파이썬에서 난수를 생성하려면 파이썬의 기본 라이브러리인 random 모듈을 사용하는데요. random 모듈은 다양한 난수 생성 함수를 제공하여 다양한 유형의 난수를 생성할 수 있습니다. 파이썬 난수 사용법 특정 범위의 난수 생성 - randint(x, y) import random random_integer = random.randint(1, 10) print(random_integer) 결과 : 9 특정 범위에서 임의의 정수값을 추출하려면 randint() 메서드를 ..

[Python] 파이썬 이전 날짜, 이후 날짜 구하기(n달 뒤, n년 전) [내부링크]

한 남자와 여자가 사랑에 빠졌습니다. 사귀기로 한 날을 기점으로 100일 후, 3달 뒤, 1년 뒤를 기념일로 지정하기로 했습니다. 파이썬에서는 이런 상황에서 어떻게 날짜를 특정할 수 있을까요? 이번 포스팅에서는 특정 날짜를 기준으로 이전 날짜, 이후 날짜를 계산하는 방법에 대해서 알아보도록 하겠습니다. timedelta 객체 사용 (n일 뒤, n일 전 계산) from datetime import datetime, timedelta today = datetime.today() day1 = timedelta(days=100) # 100일 뒤 day2 = timedelta(days=30*2) # 2달 뒤 day3 = timedelta(days=365*3) # 3년 뒤 print("현재 날짜:", today) ..

[Python] 파이썬에서 두 날짜를 비교, 차이 계산하는 방법 (datetime) [내부링크]

프로그래밍을 하다 보면 두 개의 날짜를 비교해야 하는 경우들이 종종 생기게 됩니다. 파이썬에서는 주로 datetime 모듈을 사용하여 두 날짜를 비교하게 되는데요. 이번 포스팅에서는 두 개의 날짜를 비교하는 방법에 대해 알아보도록 하겠습니다. 파이썬에서 두 날짜를 비교하는 방법 오늘 날짜와 특정 날짜의 비교 from datetime import datetime today = datetime.today() d_day = datetime(2020, 1, 1) if today < d_day: print("오늘은 지정된 날짜보다 이전입니다.") elif today > d_day: print("오늘은 지정된 날짜보다 이후입니다.") else: print("오늘과 지정된 날짜가 같습니다.") 아마 빈도수가 가장 높..

[Python] 파이썬 현재 날짜, 현재 시간 출력하기(datetime) + 포맷팅 방법 [내부링크]

프로그래밍을 하다 보면 현재 날짜, 현재 시간을 출력해야 하는 경우들이 생기는데요. 예를 들자면 로그를 기록할 때 이 로그가 언제 출력되었을지 기록하기 위해 필요할 수도 있고 특정 로직이 정해진 날짜와 시간에 작업을 수행하도록 예약할 때 현재 날짜와 시간이 필요하는 경우도 있을 수 있겠죠. 이럴 때 현재 날짜와 현재 시간은 어떻게 구해야 할까요? 파이썬에서는 datetime 모듈을 사용하여 현재날짜, 현재시간을 구할 수 있습니다. 이번 포스팅에서 자세히 알아보도록 하겠습니다. 파이썬 현재 날짜, 현재 시간 출력하기 datetime 모듈 사용 import datetime # 현재 날짜와 시간을 가져옵니다. current = datetime.datetime.now() # 현재 날짜와 시간 출력 (년-월-일 ..

[Python] 파이썬 소수점 자릿수 지정하는 3가지 방법 (format, round, f-string) [내부링크]

π = 3.141592653589793238462643383... 아시다시피 원의 지름에 대한 둘레의 비율을 나타내는 원주율 파이(pi)의 값은 순환하지 않는 무한소수(무리수)이기 때문에, 일반적으로는 계산에서는 3.14로 소수점 두 번째까지만 표기하여 사용합니다. 위와 같이 소수점의 자릿수를 지정해주어야 할 때 파이썬에서는 format 함수, round 함수, , f-string를 사용하여 소수점 자릿수를 지정해줄 수 있습니다. 이번 포스팅에서는 이 방법에 대해 알아보겠습니다. 파이썬 소수점 자릿수 지정하기 round() 함수 사용 num = 3.14159265 format_num = round(num, 2) # 소수점 둘째 자리까지 표기 print(format_num) 결과 : 3.14 format(..

[Python] 파이썬 문자열 포맷팅 (% 연산자, format 함수, f-string) 사용법 & 예제 [내부링크]

이번 포스팅에서는 파이썬에서 문자열 포맷팅 하는 방법에 대해 알아보려고 합니다. 그전에 문자열 포맷팅이 무엇인지 알 필요가 있을 것 같은데 문자열 포맷팅은 문자열을 지정된 포맷으로 맞춘다는 의미로 문자열에 값을 삽입하거나 형식을 지정하는 과정을 말합니다. 이를 통해서 변수나 상수의 데이터들을 문자열에 알맞게 배치하여 원하는 형식에 맞게 출력할 수 있습니다. 파이썬에서 문자열을 포맷팅 하는 방법은 연산자 %를 사용하는 방법, format 함수를 사용하는 방법, f-string을 사용하는 방법 이렇게 크게 3가지가 있습니다. 이번 포스팅에서 이 문자열 포맷팅을 하는 3가지 방법에 대해서 알아보도록 하겠습니다. % 연산자 사용하기 name = "홍길동" age = 30 height = 175.55 print(..

[Python] 파이썬 문자열 뒤집기 (슬라이싱, reversed 함수) 사용법 & 예제 [내부링크]

파이썬에서 문자열을 뒤집는 방법은 여러 가지가 있습니다. 문자열 뒤집기는 주로 다양한 문자열 조작 및 알고리즘 문제에서 사용되며, 다음과 같은 방법으로 수행할 수 있습니다. 문자열을 뒤집을 수 있는 방법은 다양하겠지만 가장 편리한 방법 두가지만 이번 포스팅에서 소개하려고 합니다. 파이썬 문자열 뒤집기 문자열 슬라이싱 text = "Hello World!" reversed_text = text[::-1] print(reversed_text) 결과 : !dlroW olleH 파이썬의 슬라이싱을 활용하여 문자열을 뒤집을 수 있습니다. 슬라이싱은 문자열의 일부분을 추출하는 것으로 사용될 수 있습니다. 위 예제는 [::-1] 슬라이싱을 사용하여 문자열을 뒤집고, 결과를 출력합니다. reversed() 함수와 jo..

[Python] 파이썬 문자열 합치기 (+ 연산자, join 함수) 사용법 & 예제 [내부링크]

때로는 여러 가지 데이터를 하나로 합쳐 하나의 텍스트로 표현해야 하는 경우들이 있을 수 있습니다. 이러한 문자열 합치기는 데이터 가공 과정에서 자주 사용되며 파이썬에서도 문자열을 합칠 수 있는 다양한 방법들이 존재하는데요. 이번 포스팅에서는 파이썬에서 문자열을 하나로 결합하는 방법에 대해 알아보도록 하겠습니다. 파이썬 문자열 합치기 단순 문자열끼리 합치기 (+ 연산자 사용) str1 = "Hello " str2 = "World!" result = str1 + str2 print(result) # 결과: "Hello World!" 결과: "Hello World!" 단순히 두 개 이상 복수의 문자열을 합치려면 위와 같이 + 연산자를 사용해서 합쳐주시면 됩니다. join 함수 사용법 리스트 or 튜플의 문자열..

[Python] 파이썬 숫자 세번째 자리마다 콤마( , ) 찍기 [내부링크]

100000000 (1억) 100,000,000 (1억) 위의 예시를 보시면 숫자 3자리(천 단위)에 콤마를 찍는 것이 얼마나 중요한지 알 수 있는데요. 위와 같이 숫자 3자리에 콤마를 표시하지 않고 1억을 표기하면 0의 숫자를 쉽게 파악하기가 어렵기 때문에 숫자에 3자리마다 콤마를 찍어 큰 숫자에 대해 가독성과 숫자의 크기를 쉽게 파악할 수 있도록 해줍니다. 이번 포스팅에서는 파이썬에서 숫자 3자리마다 콤마를 찍는 방법에 대해 알아보도록 하겠습니다. 파이썬 숫자 세 번째 자리마다 콤마(,) 찍기 str.format() 메서드 사용 formatted_value = format(value, format_spec) value: 콤마를 찍을 숫자입니다. format_spec: 포맷 스펙(format speci..

[Python] 파이썬 제곱(pow), 제곱근(sqrt) 구하기 [내부링크]

분명 흔하지는 않겠지만 숫자의 거듭제곱이나, 제곱근을 구해야 할 때도 생길 수 있을 겁니다. 파이썬의 math 모듈에는 제곱이나 제곱근을 쉽게 구할 수 있도록 pow, sqrt 함수를 제공하고 있는데요. 이번 포스팅에서 그 방법에 대해 알아보도록 하겠습니다. 파이썬 제곱 구하기 내장함수 pow() 함수 사용 num = 5 squared_num = pow(num, 2) # 5의 제곱을 계산 print(squared_num) # 출력: 25 결과 : 25 파이썬의 내장함수 pow(x,y)는 숫자 x의 y 거듭제곱을 반환합니다. 위의 예제는 5의 2 제곱인 25를 결과로 반환하였습니다. ** 연산자 사용 num = 5 squared_number = num ** 2 # 5의 제곱을 계산 print(num) # ..

[Python] 파이썬 반올림(round), 올림(ceil), 버림(floor)하기 [내부링크]

이번 포스팅에서는 파이썬에서 실수를 반올림, 올림 버림 하는 방법에 대해 알아보도록 하겠습니다. 파이썬에서 반올림은 파이썬에 기본적으로 내장되어 있는 round 함수를 사용하면 되고 버림, 내림을 하려면 math 모듈을 import 하여 그 안에 내장되어 있는 ceil, floor 함수를 사용하면 됩니다. math 모듈은 다양한 수학 연산을 할 수 있는 함수들을 제공합니다. 파이썬 반올림(round) 기본적인 반올림 방법 num = 5.6789 rounded_num = round(num) print(rounded_num) # 결과: 6 결과 : 6 파이썬에서는 내장함수 round()를 사용하여 반올림을 수행합니다. round() 함수는 기본적으로 소수점 첫 번째 자리에서 반올림을 수행합니다. 소수점 자리..

[Python] 파이썬 절대값 구하기 abs() 함수 사용법 & 예제 [내부링크]

파이썬에서 절대값을 구하는 가장 간단한 방법은 내장함수 abs()를 사용하는 것입니다. abs() 함수는 인자로 전달된 숫자의 절대값을 반환합니다. 파이썬 절대값 구하기 abs() abs 함수 사용법 abs(값) 인자값 : 절대값을 얻기 위해 abs()에 제공할 입력 값입니다. 꼭 정수일 필요는 없고 실수, 복소수도 인자값으로 사용할 수 있습니다. 반환값 : 인자값이 정수이면 반환값도 정수가 되고, 인자값이 실수이면 반환값도 실수가 됩니다. 인자값이 복소수면 크기를 반환합니다. 반환값은 절대값이므로 반환값은 무조건 양수가 됩니다. 정수의 절대값 구하기 num = -10 absolute_value = abs(num) print("절대값:", absolute_value) # 출력: 절대값: 10 결과 : 절..

[Python] 파이썬 for문 사용법 & 예제 총정리 [내부링크]

파이썬에서 for 문은 반복 작업을 수행할 때 사용하는 기초 문법입니다. 지정한 횟수만큼 블록에 내에 있는 코드를 반복 실행하는 기능을 가지고 있으며 특히 리스트, 튜플, 문자열 등의 각 요소를 순회하면서 반복 작업을 수행하는 데 매우 유용하게 사용됩니다. 파이썬 for문 사용법 fruits = ["사과", "바나나", "체리"] for idx in fruits: # for 요소 in 시퀀스: print(idx) # 각 요소에 대한 작업 수행 요소는 시퀀스의 각 항목을 대표하는 변수입니다. 시퀀스는 반복할 데이터 구조입니다. (리스트, 튜플, 문자열, 범위 등) for 루프의 동작 순서 for 문이 실행되면 리스트 fruits의 첫 번째 요소인 "사과"를 for와 in 사이에 있는 목표 변수인 idx 변..

[Python] 파이썬 while문 사용법 & 예제 총정리 [내부링크]

파이썬의 while문은 반복문의 한 종류로써 조건이 참(True)인 동안 반복적으로 코드 블록을 실행합니다. 반복적으로 블록을 실행하는 것을 보고 일반적으로 "루프를 돈다"라고 표현을 합니다. while은 작성할 때 조건만 있으면 생성이 가능하기 때문에 루프의 실행 횟수가 불확실할 때는 while문이 사용하기에 적합합니다. 예를 들자면 사용자의 입력을 기다리거나 어떤 조건이 충족될 때까지 루프를 실행해야 할 때가 있겠습니다. 파이썬 while문 사용법 while 조건: # 조건이 참일 때 실행할 코드 조건은 불리언(Boolean) 값인 표현식입니다. 조건이 True인 동안 루프 내의 코드가 실행됩니다. 조건이 False가 되면 루프가 종료됩니다. 조건은 불리언(Boolean) 값인 표현식이며, 이 표현식..

[Python] 파이썬 if, if-elif, else문 사용법 & 예제 총정리 [내부링크]

파이썬에서 if문은 조건을 검사하여 특정 조건이 참(True)인 경우에 코드 블록을 실행하는 데 사용됩니다. 오늘의 날씨가 춥다 → 따뜻한 옷을 입고 가야겠다. 오늘은 비가 온다 → 우산을 들고 나가야겠다. 위의 예시를 한번 보실까요? "날씨"에 따라 가지고 가야 할 "아이템"?이 달라지는 상황이네요. 프로그래밍을 작성할 때도 위와 같이 특정 조건에 따라 로직을 다르게 짜야하는 경우들이 많이 생깁니다. 이럴 때 사용하는 구문이 if문인데요. if문은 제어문이라고도 하며 프로그램에서 특정 조건이 충족시킬 때만 특정 코드 블록을 실행시키는 역할을 하게 됩니다. 이를 통해 프로그램은 유연성을 가지며, 다양한 상황에서 올바른 동작을 수행할 수 있습니다. 파이썬 if문 사용법 if 문법 if 조건: # 조건이 참..

[Python] 파이썬 딕셔너리(Dictionary) 사용법 & 예제 총정리 [내부링크]

파이썬 딕셔너리(Dictionary)이란? 혹시 Map이라는 자료구조에 대해서 아시나요? Key - Value 구조로 널리 알려진 Map이라는 자료구조는 파이썬에서는 딕셔너리(Dictionary)라는 자료구조명으로 불립니다. 파이썬에서는 중괄호 { }로 딕셔너리를 생성하며 각각의 Key와 Value는 콜론(:)으로 구분되어 있고 각각의 값은 콤마(,)로 구분되어 있습니다. 딕셔너리를 사용할 때 주의할 점 딕셔너리의 키는 고유해야 합니다. 중복된 키를 사용하면 마지막으로 설정한 값으로 덮어씌워집니다. 딕셔너리는 순서가 보장되지 않습니다. 다만 파이썬 3.7 이상부터는 입력 순서가 유지되는 OrderedDict를 사용할 수 있습니다. 딕셔너리에 없는 키를 사용하면 KeyError가 발생합니다. 이를 방지하기..

[Python] 파이썬 튜플(Tuple) 사용법 & 예제 총정리 [내부링크]

파이썬 튜플(Tuple)이란? 파이썬에서 튜플이라는 여러 개의 데이터를 묶은 하나로 묶은 하나의 집합으로써 데이터의 구성과 사용법은 앞서 포스팅한 파이썬의 리스트와 비슷합니다. 하지만 리스트의 경우에는 내부의 값을 변경할 수 있는 반면 튜플은 한번 저장된 데이터는 변경이 불가능하다는 특징이 있습니다. 그렇기 때문에 파이썬의 튜플은 리스트에 비해 적은 메모리를 소모하며 속도가 빠릅니다. 이러한 특성으로 파이썬에서 튜플은 주로 변경되지 않는 데이터 셋을 저장하거나 여러 값을 반환하는 함수등에서 요긴하게 활용할 수 있습니다. 튜플은 생성되면 튜플 내부 요소의 값을 추가, 삭제, 변경이 불가능합니다. 튜플의 메모리 소모량은 리스트에 비해 적습니다. 튜플은 순서를 가지므로 인덱스를 통해 요소에 직접 접근할 수 있..

[Python] 파이썬 리스트에서 최대값, 최소값, 평균값, 중간값, 합계 구하는 방법 [내부링크]

파이썬 리스트에서 사용할 수 있는 다양한 내장함수가 존재합니다. 리스트의 최대값과, 최소값, 평균값, 중간값, 합계도 for문을 돌려서 따로 계산할 필요 없이 이 내장함수를 통해 함수 호출 한 문장으로 간단히 도출할 수 있습니다. 파이썬 리스트에서 최댓값, 최솟값 구하기 max(): 리스트의 최댓값을 반환합니다. ex_list = [10, 7, 5] maxnum = max(ex_list) # maxnum = 10 print(maxnum) # 최대값 출력 결과 : 10 파이썬 리스트의 내장 함수인 max() 메서드를 사용하면 리스트 내에 있는 최댓값을 반환합니다. 참고로 숫자 리스트만 최댓값을 호출할 수 있는 것은 아니고 문자로 되어있는 리스트도 최댓값을 추출할 수 있습니다. 숫자와 문자를 비교할 때는 무..

[Python] 파이썬 리스트(list) 거꾸로 뒤집기 (reverse) [내부링크]

가끔 리스트를 뒤집어서 사용해야 할 경우들이 있습니다. 예를 들면 리스트를 거꾸로 읽어야 하는 경우에는 애초에 리스트를 뒤집어서 정방향으로 읽어나가는 로직을 짤수도 있고, 알고리즘 문제풀이에서도 리스트를 뒤집어야 하는 경우들이 종종 생기고는 합니다. 파이썬에서는 자체 제공하는 내장 함수와 파이썬의 슬라이스 방식을 활용하여 리스트를 뒤집는 작업을 간단하게 수행할 수 있는데요. 이번 포스팅에서 그 방법에 대해 알아보도록 하겠습니다. reverse() 메서드를 활용하여 리스트 뒤집기 my_list = [1, 2, 3, 4, 5] my_list.reverse() print(my_list) # 출력: [5, 4, 3, 2, 1] 파이썬의 내장 함수인 reverse() 메서드는 리스트 내부의 원소들의 순서를 뒤집어..

[Python] 파이썬 리스트(list) 원소 정렬 / 역정렬(sort, reverse) 방법 [내부링크]

파이썬에서는 다양한 내장함수들을 제공하고 있습니다. 파이썬에서 제공하는 리스트의 요소를 정렬하거나 역정렬하는 것도 파이썬에서 제공하는 내장함수들을 사용하면 편리하게 할 수 있는데요. 알고리즘 문제를 풀 때도 유용하게 사용하는 방법이니 이번 포스팅에서 리스트를 정렬하는 방법에 대해 알아보도록 하겠습니다. 파이썬 리스트 원소 정렬하는 방법 sort() 메서드 사용 ex_list = [3, 1, 4, 1, 5, 9, 2, 6] ex_list.sort() # 오름차순으로 정렬 print(ex_list) # [1, 1, 2, 3, 4, 5, 6, 9] 파이썬의 리스트를 오름차순으로 정렬하고 싶다면 sort() 메서드를 사용합니다. 위와 같이 뒤죽박죽의 값을 가지고 있던 리스트가 오름차순으로 정렬된 것을 보실 수 ..

[Python] 파이썬 리스트(list) 원소 추가 / 삭제 (append, remove) 방법 [내부링크]

파이썬에서 사용하는 리스트는 가변적인 특성이 있어서 수시로 값을 추가하거나 삭제할 수 있습니다. 이렇게 새로운 값이 추가되면 리스트의 크기가 자동으로 증가하고, 리스트의 값을 삭제하면 크기가 감소합니다. 다만 리스트의 크기가 커질수록 원소를 추가하거나 삭제하는 방법은 성능이 느려질 수 있습니다. 참고로 이럴 때는 collections.deque나 numpy와 같은 라이브러리를 사용하면 더 빠른 성능을 얻을 수 있습니다. ※ 파이썬 리스트를 생성하는 방법에 대해 궁금하시다면 아래 글을 참고해 주세요. [Python] 파이썬 리스트(list) 만들기, 접근하기(+ 슬라이싱) [Python] 파이썬 리스트(list) 만들기, 접근하기(+ 슬라이싱) 파이썬에서 리스트는 여러 개의 값을 순서대로 저장하는 데이터 ..

[Python] 파이썬 리스트(list) 만들기, 접근하기(+ 슬라이싱) [내부링크]

파이썬에서 리스트는 여러 개의 값을 순서대로 저장하는 데이터 구조입니다. 파이썬에서는 타 프로그래밍 언어에서 사용하는 배열과 같은 개념이 없고 대신 이 리스트라고 개념이 있습니다. 파이썬의 리스트는 숫자형, 문자형을 하나의 리스트에서 사용할 수 있는 것처럼 리스트에 다양한 데이터 유형을 포함할 수 있으며, 필요에 따라서는 리스트 추가, 수정, 삭제 등을 할 수 있어 크기가 가변적이라는 특징이 있습니다. 파이썬 리스트(list) 선언 # 리스트명 = [요소1, 요소2, 요소3, ...] ex_list = [1, 2, 3, 4, 5] # 정수로 이루어진 리스트 생성 ex_list2 = ["apple", "banana", "cherry"] # 문자열로 이루어진 리스트 생성 ex_list3 = [1, "appl..

[Python] 파이썬 문자열 치환(replace, translate) [내부링크]

파이썬에서 문자열 치환은 주어진 문자열에서 특정한 부분 문자열을 찾아서 다른 문자열로 대체하는 작업을 말합니다. 이는 문자열 처리에서 매우 유용한 기능 중 하나이며, 다양한 용도로 활용됩니다. 파이썬에서는 문자열을 치환할 수 있는 다양한 방법을 제공합니다. 이번 포스팅에서는 그 방법에 대해 알아보도록 하겠습니다. 파이썬 문자열 치환 파이썬에서 문자열을 치환하는 방법은 replace, translate 메서드를 활용하는 방법과 정규 표현식을 사용하는 방법 크게 3가지가 있습니다. replace 메서드 사용법 str.replace(old, new) 모든 old 문자열을 new 문자열로 치환합니다. 파이썬의 문자열 치환 방법 중 가장 많이 쓰이는 방법입니다. replace 메서드 예제 org_string = ..

[Python] 파이썬 문자열 쪼개기 - '구분자'로 자르기(split, splitline) [내부링크]

프로그래밍에서 문자열을 특정 구분자를 기준하여 나누는 것을 보통 "문자열 쪼개기"라고 합니다. 만약 우리가 파이썬에서 문자열을 구분자로 쪼개고 싶다면 내장함수 str.split() 메서드와 str.splitlines() 메서드를 사용하시면 쉽게 문자열을 쪼갤 수 있습니다. 이번 포스팅에 대해서는 파이썬에서 문자열을 구분자로 쪼개는 방법에 대해 알아보겠습니다. 파이썬 문자열 구분자로 쪼개기 split 메서드 사용 # 예제: 공백을 기준으로 문자열 분리 str = "Hello, World!" words = str.split() print(str) # 결과 : ['Hello,', 'World!'] # 예제: 쉼표(,)를 기준으로 문자열 분리 str = "서울,부산,대구,대전" city = str.split('..

[Python] 파이썬 문자열 자르기(Slicing, Indexing) [내부링크]

대부분의 데이터는 텍스트 형태로 이루어지는 경우가 많고, 텍스트로 이루어진 정보를 추출하거나 필요한 정보만을 가져오는 등 데이터를 가공하는 과정에서 문자열 자르기를 정말 많이 합니다. 파이썬에서는 문자열을 자르는 방법들이 여러가지가 있습니다. 이번 포스팅에서는 파이썬에서 문자열을 자를 수 있는 방법에 대해 알아보도록 하겠습니다. 파이썬 문자열 인덱스(index)str = "Hello, World!"# 양수 인덱스 사용print(str[0]) # 결과 : "H"print(str[4]) # 결과 : "o"print(str[7]) # 결과 : "W"print(str[12]) # 결과 : "!"# 음수 인덱스 사용 (역순으로 문자열 탐색)print(str[-1]) # 결과 : "!"pri..

[Python] 파이썬 문자열, 자료형 길이 구하기(len) [내부링크]

만약 여러분이 파이썬에서 문자열의 길이를 구하고 싶다면 파이썬에서 제공하는 내장함수 len() 사용하시면 편하게 문자열의 길이를 구할 수 있습니다. len() 함수는 문자열과 자료형의 길이를 반환해 줍니다. 파이썬 문자열 길이 구하기(len) len 함수 사용법 len(문자열) len 함수 사용 예제 str = "Hello, World!" print(len(str)) # 결과 : 13 print(len("")) # 결과 : 0 print(len("123")) # 결과 : 3 print(len("안녕하세요")) # 결과 : 5 위 예제에서 내장함수 len(str)에서 "Hello, World!"라는 문자열의 길이인 13을 반환하고 len("")에서는 빈 문자열("")의 길이인 0을 반환합니다. 자료형의 길..

[Python] 문자열이 특정 문자, 단어로 시작 or 끝나는지 확인하기(startswith, endwith) [내부링크]

Python에서 startswith()와 endswith 메서드를 사용하여 문자열이 특정 문자로 시작 / 끝나는지 확인할 수 있습니다. 이 방법을 이번 포스팅에서 알아보도록 하겠습니다. 파이썬 문자열이 특정 단어로 시작되는지? 끝나는지? 확인하는 방법 특정 문자로 시작하는가? ( startswith ) str = "Hello, world!" # H로 시작하는가? if str.startswith('H'): print("이 문자열은 'H'로 시작합니다.") else: print("이 문자열은 'H'로 시작하지 않습니다.") 결과 : 이 문자열은 'H'로 시작합니다. startswith() 메서드는 문자열이 지정된 문자로 시작하면 True를 반환하고 그렇지 않으면 False를 반환합니다. 참고로 startsw..

[Python] 문자열 대/소문자 변환하는 다양한 방법(lower, upper, capitalize, title, swapcase) [내부링크]

Python에서 문자열의 대/소문자를 변환하고 싶다면 파이썬의 여러 가지 내장 메서드를 사용하여 문자열의 대소문자를 변경할 수 있습니다. 이번 포스팅에서는 파이썬에서 문자열의 대소문자를 변경하는 방법에 대해 알아보도록 하겠습니다. 파이썬의 여러가지 대/소문자 변환 메서드 upper() : 문자열을 대문자로 변환하기 str = "apple" str = str.upper() print(str) 결과 : APPLE upper 메서드를 사용하면 특정 문자열을 모두 대문자로 변환합니다. lower() : 문자열을 소문자로 변환하기 str = "APPLE" str = str.lower() print(str) 결과 : apple lower 메서드를 사용하면 특정 문자열을 모두 소문자로 변환합니다. capitalize..

[Python] 파이썬 문자열 찾기, 포함 유무 확인하기(in, not in, find) [내부링크]

Python에서는 in, not in 키워드를 사용하거나 find() 메서드를 사용하여 특정 문자열이 다른 문자열에 포함되어 있는지 확인할 수 있습니다. in, not in 키워드는 문자열이 있는지 여부를 나타내는 bool 값 (True 또는 False)으로 반환하고 find() 메서드는 타겟 문자열이 있는 index를 반환합니다. in 키워드를 사용하여 포함된 문자열 확인 main_string = "이것은 샘플 문자열입니다." search_string = "샘플" if search_string in main_string: print("검색 문자열이 메인 문자열에 포함되어 있습니다.") else: print("검색 문자열이 메인 문자열에 포함되어 있지 않습니다.") 결과 : 검색 문자열이 메인 문자열에 ..

[Python] 파이썬 두개의 문자열 비교 연산하기 [내부링크]

이번 포스팅에서는 Python에서 두 개의 문자열을 비교하는 방법에 대해 알아보도록 하겠습니다. 파이썬 두개의 문자열 비교하기 파이썬 비교 연산자 == (같음) : 두개의 값이 같은지 확인합니다. != (같지 않음) : 두개의 값이 같지 않은지 확인합니다. (보다 큼) : 왼쪽 값이 오른쪽 값보다 큰지 확인합니다. =(크거나 같음) : 왼쪽 값이 오른쪽 값보다 크거나 같은지 확인합니다. Python에서는 두 개의 값을 비교할 때 비교 연산자를 사용합니다. 이는 숫자뿐만이 아니라 문자열에도 동일하게 적용됩니다. 비교 연산 후에는 비교에 따라 항상 True 또는 False를 반환하게 되는데 이를 활용하여 조건문 및 루프를 작성할 때 활용할 수 있습니다. == 두개의 문자열이 같음 str1 = "Hello W..

[Python] 파이썬 문자열 만들기 (+ 문자열안에 따옴표 넣기) [내부링크]

문자열이란 "Hellow World"와 같이 문자들의 집합으로써 텍스트를 나타내는데 사용되는 기본 데이터 유형 중 하나입니다. 파이썬에서는 일련의 문자를 작은따옴표(' '), 큰따옴표(" ") 또는 삼중따옴표(''' ''' 또는 """ """)로 묶어 문자열을 만들 수 있습니다. 파이썬에서 문자열을 생성하는 4가지 방법 # 양쪽에 큰 따옴표 사용하기 str = "Python is Awesome!" # 양쪽에 작은 따옴표 사용하기 str = 'Python is Awesome!' # 양쪽에 큰 따옴표 3개 사용하기 str = """Python is Awesome!""" # 양쪽에 작은 따옴표 3개 사용하기 str = '''Python is Awesome!''' 파이썬에서는 위의 예제처럼 4개의 방법을 통해 ..

[Python] 파이썬 문자열 연산하기 (문자열 더하기, 곱하기) [내부링크]

특이하게도 파이썬에서는 문자열을 더하거나 곱할 수 있습니다. * 곱하기의 경우 거의 파이썬에서만 사용할 수 있는 재미있는 기능이라고 생각합니다. 이번 포스팅에서는 +와 * 연산자를 활용하여 문자열을 더하거나 곱하는 방법에 대해 알아보도록 하겠습니다. 문자열 더하기 ( + 연산자 활용 ) str = "Python is " + "Awesome!" print(str) 결과 : Python is Awesome! 위의 코드를 보시면 아시겠지만 단순하게 "Python is "라는 문자열과 "Awesome"이라는 문자열을 합친 것입니다. 위의 예제처럼 파이썬에서는 + 연산자를 활용하여 복수의 문자열을 하나로 합칠 수 있습니다. 문자열 곱하기 ( * 연산자 활용 ) str = "Python is Awesome!\n" ..

[Python] 파이썬 출력문 (print 함수) 사용법 & 예제 [내부링크]

Python의 기본 문법을 공부하기 위해서는 먼저 출력문을 알아야 합니다. 그래야 내가 작성한 코드의 결과를 눈으로 볼 수 있으니까요. 파이썬에서는 print() 함수를 사용하여 콘솔에 값을 표시할 수 있는데요 이번 포스팅에서 그 방법을 알아보도록 하겠습니다. 파이썬 출력문 (print 함수) 사용법 Python에서 print() 함수는 콘솔이나 터미널에 출력을 표시하는 데 사용됩니다. 하나 이상의 값 또는 표현식을 출력할 수 있습니다. print() 함수는 내용의 끝에 줄 바꿈 문자를 자동으로 추가하므로 print()를 호출할 때마다 기본적으로 새 줄이 표시됩니다. 문자열 출력 print("Hellow World!") 결과 : Hellow World! 파이썬에서 문자열을 출력하시려면 print("문자열..

[Python] 파이썬 변수 선언 및 사용법 & 예제 [내부링크]

변수란 쉽게말해서 '변할 수 있는 값(수)을 저장하는 공간'이라고 정의할 수 있겠습니다. 개발을 할 때 필요한 값을 변수에 저장해 놓으면 소스코드에서 그 값을 변수 네이밍으로 참조할 수 있어 데이터 조작과 개발이 편리해집니다. 이번 포스팅에서는 Python에서 변수를 어떻게 사용하는지에 대해 알아보도록 하겠습니다. 파이썬 변수 사용법 변수 선언 및 할당 # 변수 할당 age = 30 # 정수형 name = "홍길동" # 문자열 name2 = None # 빈값 pi = 3.14 # 실수형 real = True # 논리형 파이썬의 변수를 선언하려면 위의 예제처럼 하시면 됩니다. 파이썬에서 변수를 사용할 때 특이한 점이 있다면 동적으로 유형이 지정되므로 Java나 C처럼 int a, char b 처럼 변수 유..

[Python] Visual Studio Code에 파이썬 개발 환경 세팅하기 [내부링크]

최근에는 VS Code로 파이썬 개발을 많이 합니다. Visual Studio Code(VS Code)는 Microsoft에서 개발 한 가볍고 다재다능한 코드 편집기입니다. Python 확장이 설치된 VS Code는 IntelliSense, 디버깅, Linting 및 다양한 Python 프레임워크 지원을 통해 뛰어난 Python 개발 환경을 제공합니다. 이번 포스팅에서는 VS Code에서 파이썬 개발 환경 세팅을 하는 방법에 대해 알아보도록 하겠습니다. ※ 이 과정을 진행하기 전에 PC에 파이썬 설치가 안되어 있다면 파이썬을 먼저 설치해 주세요. 파이썬 설치가 되어 있지 않으면 개발 환경 설정이 꼬일 수 있습니다. 아래글 참고 부탁드립니다. [Python] 파이썬 설치 / 다운로드 방법 (Python f..

[Python] 파이썬 설치 / 다운로드 방법 (Python for Windows) [내부링크]

이번 포스팅에서는 윈도우 운영체제에서 Python을 설치하는 방법에 대해 알아보도록 하겠습니다. 파이썬은 자바처럼 환경변수를 만져야 하는 부분이 없어 설치가 굉장히 간단합니다. 참고로 2021년 9월의 마지막 업데이트를 기준으로 Python 2의 수명이 종료되어 더 이상 지원되지 않으므로 Python 3을 다운로드하여 사용하는 것이 좋겠습니다. 파이썬 설치 / 다운로드 방법 (Python for Windows) 1. 아래 링크된 파이썬 다운로드 사이트에 접속하여 Download Python 버튼을 클릭합니다. 저처럼 Windows 버전으로 파이썬을 다운로드하고 싶으시다면 저 버튼을 클릭하시면 되고 Linux나 macOS처럼 다른 운영체제에서 파이썬을 사용하시려면 아래 하이퍼링크를 클릭하셔서 다운로드하여 ..

[Python] 우리가 파이썬을 배워야 하는 이유 (feat 파이썬에 대하여) [내부링크]

파이썬(Python)이란 무엇인가? 파이썬은 1991년에 귀도 반 로썸(Guido van Rossum)이 개발한 고급 프로그래밍 언어입니다. 파이썬이라는 이름은 영국의 코미디 프로그램인 "몬티 파이썬의 날아다니는 서커스"에서 따온 것입니다. 실제로 사용해 보시면 아시겠지만 파이썬은 간결하고 읽기 쉬운 문법을 갖추고 있어 사용자들이 코드를 빠르게 이해하고 작성할 수 있도록 도와줍니다. 또한 파이썬은 인터프리터형 언어로, 컴파일 과정이 필요하지 않고 소스 코드를 직접 실행할 수 있습니다. 이러한 특성으로 인해 파이썬은 배우기 쉽고 개발 속도가 빠른 장점이 있습니다. 또한 파이썬은 확장성과 유연성이 뛰어나기 때문에 다양한 운영체제에서도 사용할 수 있으며 웹 개발, 데이터 분석, 인공지능, 자동화 등 다양한 분..

[CSS] position : sticky 속성 - 요소를 스크롤에 따라오게 만들기 [내부링크]

sticky는 영어로 '끈적끈적하다'라는 형용사입니다. position : sticky로 설정하면 끈적끈적하다는 말처럼 스크롤을 계속해서 따라오는 html요소를 생성할 수 있는데요. sticy position으로 설정되어 있는 요소는 스크롤하지 않을 때는 static position처럼 동작하다가 스크롤할 때는 이전 포스팅에서 배웠던 fixed position처럼 작동합니다. 아래 예시를 보시면 이해가 빠르실 겁니다. position : sticky 사용법 See the Pen position : sticky by wjdxo513 (@wjdxo513) on CodePen. top : 상단에서 픽셀만큼 요소를 아래에 고정시킵니다. right : 우측에서 픽셀만큼 요소를 왼쪽에 고정시킵니다. left : 좌..

[CSS] position : fixed 속성 - 특정 위치에 요소 고정시키기 [내부링크]

position : fixed는 문서의 흐름과 상관없이 위치로 좌표로 결정합니다. 브라우저 창(뷰포트)이 기준이 되며 브라우저 창의 왼쪽 위 꼭짓점을 원점으로 두고 좌표가 계산됩니다. 이 position : fixed 속성을 사용하면 이름처럼 브라우저 창을 스크롤하더라도 한 곳에 계속 고정되어 표시됩니다. 이를 활용하여 헤더, 사이드바, 모달 창 등을 구현할 수 있습니다. position : fixed 사용법 See the Pen position : fixed by wjdxo513 (@wjdxo513) on CodePen. top : 상단에서 픽셀만큼 요소를 아래에 고정시킵니다. right : 우측에서 픽셀만큼 요소를 왼쪽에 고정시킵니다. left : 좌측에서 픽셀만큼 요소를 오른쪽에 고정시킵니다. bo..

[CSS] position 속성 - HTML 요소 위치 제어하기 [내부링크]

CSS의 position 속성은 요소의 위치를 배치하는데 사용되는 속성입니다. position 속성을 이용하면 텍스트나 이미지와 같은 특정 html 요소를 나란히 배치할 수도 있고 가로나 세로로 원하는 위치에 배치할 수도 있으며 경우에 따라서는 스크롤을 따라다니거나 화면 한 곳에 고정도 시킬 수 있습니다. CSS position 속성 사용법 CSS position 속성값 static : 기본적으로 설정되는 값으로, 요소를 문서의 흐름에 맞추어 배치합니다. 다른 위치 속성들과 달리 추가 속성을 사용하지 않습니다. relative : 이전 요소에 자연스럽게 연결하여 배치하되 상대적인 위치를 지정할 수 있습니다. top, right, bottom, left 속성을 사용하여 요소를 이동시킬 수 있습니다. abs..

[CSS] display : table 속성을 활용한 테이블 레이아웃 [내부링크]

일반적으로 웹에서 테이블을 만드려면 태그를 사용하지만 display : table 속성을 사용해서 HTML 요소를 테이블 형태로 표시할 수도 있습니다. 이번 포스팅에서는 display: table을 사용하여 테이블 형태의 레이아웃을 만드는 방법에 대해 알아보겠습니다. display : table 사용법 See the Pen css display:table by wjdxo513 (@wjdxo513) on CodePen. display: table = 해당 요소를 테이블 컨테이너로 만듭니다. display: table-row = 해당 요소를 테이블 행으로 만듭니다. display: table-cell = 해당 요소를 테이블 열로 만듭니다. 위와 같이 display:table을 사용하여 요소를 테이블 컨테이너..

[CSS] display : none에 대하여 (visibility : hidden)과의 차이 [내부링크]

※ "display: none"은 요소를 화면에서 숨기고 레이아웃에 공간을 차지하지 않게 만드는 데 사용됩니다. 화면에서 특정 요소를 감추고 싶다면 어떻게 해야 할까요? 이럴 때는 주로 CSS의 display속성을 none로 바꿔주면서 요소를 화면에서 감추게 됩니다. "display:none"을 적용한 요소는 브라우저에서 렌더링 되지 않으며, 화면에도 표시되지도 공간을 차지하지도 않습니다. 접근성, 동적 상태 관리, 성능 개선, 애니메이션 등 다양한 목적으로 사용될 수 있으나, 남용에 주의해야 하며, 접근성과 검색 엔진 최적화를 고려해야 합니다. display : none를 사용하는 이유 웹 접근성: 일부 웹 요소는 시각적으로는 표시되지 않지만 스크린 리더와 같은 보조 기술을 사용하는 사용자에게는 필요할..

[CSS] display : grid에 대하여(CSS Grid) - 그리드 레이아웃 [내부링크]

그리드(grid)는 이전 포스팅에서 배웠던 플렉스(flex)와 같이 모던 CSS에서 레이아웃을 다루기 위해 사용되는 기능으로 반응형 웹 페이지 레이아웃을 효과적으로 만들기 위한 레이아웃 시스템입니다. 플렉스(flex)가 가로 또는 새로 단일 방향 레이아웃을 배치하는 데 적합하다면 그리드는 마치 표처럼 행과 열로 구성된 레이아웃을 배치하는데 더 적합한 기능이라고 할 수 있습니다. CSS 그리드는 행(row)과 열(column)로 구성된 2차원 그리드로 웹 요소를 배치하는 방법을 제공하며 그리드 아이템의 위치와 크기를 유연하게 조정할 수 있습니다. 이를 통해 반응형 레이아웃을 구현하는데 매우 유용합니다. ※ CSS Flexbox에 궁금하시다면 아래 글을 참고해 주세요. [CSS] display : flex에..

[CSS] display : flex에 대하여(Flexible Box) - 플렉스 박스 레이아웃 [내부링크]

반응형 웹을 구현하는 가장 대중적인 방법은 flex box를 활용한 플렉스 박스 레이아웃으로 화면을 구성하는 것입니다. 플렉스 박스 레이아웃이란? 플렉스 박스(Flexbox) 레이아웃은 CSS의 display 속성 중 하나인 display: flex를 사용하여 요소들을 가로 또는 세로축을 따라 정렬하고 유연하게 배치하는 레이아웃 모델입니다. 이 플렉스 박스를 사용하면 여유 공간에 따라 너비나 높이, 위치 등을 자유롭게 변형할 수 있고 손쉽게 화면을 분할하여 필요한 HTML요소들을 배치할 수 있기 때문에 웹 페이지의 레이아웃을 쉽게 조정하고 정렬할 수 있습니다. 플렉스 박스의 구성요소 flex container : 웹 문서에 텍스트나 이미지, 표 등 웹 요소들을 플렉스 하게 사용하려면 플렉스 컨테이너로 묶..

[CSS] display : block, inline, inline-block 속성(블록 레벨, 인라인 레벨 요소) [내부링크]

블록 레벨 요소와 인라인 레벨 요소 HTML 태그들은 블록 레벨 요소인지 인라인 레벨 요소인지에 따라 나열 방법이 달라집니다. 위의 이미지를 보시면 블록 레벨 요소는 세로로 하나씩 배치되어 있는 반면 인라인 레벨 요소는 가로로 하나씩 배치되어 있는 모습을 보실 수 있습니다. 블록 레벨 요소에 대하여 태그를 사용하여 요소를 삽입했을 경우 혼자서 한 줄을 차지하는 요소입니다. 해당 요소의 왼쪽이나 오른쪽에 다른 요소가 올 수 없습니다. 먼저 블록 레벨 요소는 좌측의 사진처럼 요소를 삽입 했을 때 혼자 한 줄을 차지합니다. 한 줄을 차지한다는 것은 해당 요소의 너비가 100%라는 의미입니다. 따라서 그 요소의 왼쪽이나 오른쪽에 다른 요소들이 올 수 없습니다. 대표적인 블록 레벨 HTML 태그들 , , , , ..

[Web] Chat GPT 자동번역 프롬프트 지니 다운로드 / 설치 + 활용 방법 [내부링크]

챗 GPT가 요즘 화제입니다. 저도 잘 사용하고 있는데요. 검색창에 원하는 질문을 입력하면 마치 사람처럼 주저 없이 답변을 해줘서 매우 놀랍습니다. 다만 챗 GPT가 미국의 마이크로소프트가 투자한 오픈 AI인 만큼 대부분의 학습 자료들이 영어로 되어 있어 한글로 질문을 할 시 답변 내용이 잘리고 속도도 다소 느립니다. 그래서 많은 사람들이 번역기를 통해 질문을 만들고 답변을 한글로 번역해서 해석하는 등의 작업을 거치고는 하는데요. 이러한 과정은 매우 번거롭겠죠? 오늘 소개해드릴 프롬프트 지니를 설치하시면 Chat GPT에서 자동으로 영어로 번역을 해주기 때문에 매우 편리합니다. Chat GPT 자동번역 프롬프트 지니 다운로드 / 설치 방법 1. 아래 링크되어 있는 크롬 웹 스토어에 들어가서 "프롬프트 지..

[내돈내산] 애플 맥 미니 M2 구매 및 사용 후기(vs 맥북에어) [내부링크]

저에게 MAC OS로 개발을 해야 할 상황이 생겼습니다. 하지만 애플 제품의 가격대가 만만치 않은 만큼 어떤 제품을 구매해야 할지 고민이 많이 되더군요. 좋은 것을 산다고 해도 그렇게 많이 사용할 것 같지도 않고요. 아마 저와 같은 고민을 하는 분이 많을 것 같습니다. 그렇다면 가장 저렴하게 MAC OS를 사용하고 싶다면 어떻게 해야 할까요? 저와 같은 고민을 하는 분들에게는 이번에 소개해 드릴 맥 미니(MAC MINI) M2를 고려해 보시면 좋을 것 같습니다. ※ 맥 미니 M2는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 맥북에어가 아닌 맥미니를 선택한 이유 항목 맥미니 맥북에어 가격 850,000 부터 1,690,000 부터 칩 Apple M2칩 Apple M2칩 디스플레이 X 34.5cm ..

[VS Code] 비주얼 스튜디오 코드 - 단축키 총정리 [내부링크]

비주얼 스튜디오 코드(Visual Studio Code) - 자주 사용하는 단축키 주석 Ctrl + / : 한줄 or 블록 주석 처리 / 해제 (파일 확장자명에 따라 주석 형태는 달라짐) Ctrl + K, Ctrl + C : 한줄 or 블록 주석 처리 / 해제 (파일 확장자명에 따라 주석 형태는 달라짐) Ctrl + K, Ctrl + U : 주석 해제 파일 및 에디터 단축키 Ctrl + N : 새 파일 열기 Ctrl + O : 기존 파일 열기 Ctrl + S : 파일 저장 Ctrl + Shift + S : 다른 이름으로 저장 Ctrl + W : 파일 닫기 Ctrl + Shift + T : 이전에 닫았던 파일 다시 열기 Ctrl + L : 현재 라인 블록처리 Ctrl + Alt + 위(↑) or 아래(↓)..

[VS Code] 비주얼 스튜디오 코드 - 깃허브(GitHub) 연동 방법 [내부링크]

비주얼 스튜디오 코드(Visual Studio Code)에서 깃 허브(Git Hub)를 연동하는 방법은 매우 간단합니다. 단순히 확장 프로그램 하나만 추가해 주면 되는데요. 이번 포스팅에서는 비주얼 스튜디오 코드(Visual Studio Code)에서 깃 허브(Git Hub)를 연동하는 방법에 대해 알아보도록 하겠습니다. 비주얼 스튜디오 코드 - 깃허브(GitHub) 연동 방법 1. 키보드 [F1]을 눌러 명령어창을 켠 뒤 git clone을 입력하여 실행합니다. 여기서 git clone를 입력했는데 no matching commands라고 뜬다면 깃허브 설치가 안되어 있는 것이기에 깃허브를 먼저 설치해주셔야 합니다. 깃허브는 아래 링크에서 설치가 가능합니다. 깃허브 설치 후 VS Code를 재실행해주세..

[VS Code] 비주얼 스튜디오 코드 - 설치 / 다운로드 방법 [내부링크]

비주얼 스튜디오 코드(Visual Studio Code)란? 비주얼 스튜디오 코드(줄여서 VS Code)는 Microsoft에서 개발한 소스 코드 편집기입니다. VS Code는 다양한 프로그래밍 언어를 지원하며 특히 프론트엔드 코드 작성, 편집 및 디버깅을 위한 환경을 제공합니다. 또한 구문 강조 표시, 지능형 코드 완성, 버전 관리 통합, 확장 기능을 위한 광범위한 마켓플레이스와 같은 다양한 기능을 제공합니다. 이와 같은 특징으로 현재 VS Code는 가장 인기가 좋은 프론트엔드 개발툴로 사랑받고 있습니다. 비주얼 스튜디오 코드의 주요 기능 크로스 플랫폼: Windows, macOS 및 Linux 운영 체제에서 사용할 수 있으므로 개발자가 선호하는 플랫폼에서 작업할 수 있습니다. 확장 기능: VS Co..

[CSS] 미디어 쿼리(media query) 사용법 (반응형 웹) [내부링크]

웹 사이트에 접속할 수 있는 다양한 디바이스들이 있습니다. 그리고 디바이스마다 화면의 크기가 다르죠. 이렇게 다양한 크기를 가진 모든 디바이스를 모두 같은 UI로 웹 사이트를 표현한다면 굉장히 비효율적일 것입니다. 그래서 반응형 웹 디자인은 사이트에 접근하는 기기의 해상도에 따라 서로 다른 스타일을 적용해주어야 하며 이는 CSS의 미디어 쿼리를 활용해서 각각의 디바이스의 크기에 맞는 최적의 UI들을 따로 설정해 줄 수 있습니다. 미디어 쿼리란? @media [only | not] 미디어 유형 [and 조건] * [and 조건] 미디어 쿼리(Media Query)는 웹 개발에서 사용되는 CSS 기술로써 반응형 웹 디자인(Responsive Web Design)의 핵심 요소로 사용됩니다. 미디어 쿼리는 미디..

[CSS] 반응형 웹 사이트 레이아웃 만들기 - 가변 그리드(Grid System) [내부링크]

웹 사이트의 레이아웃을 구성하는 방법이 여러 가지가 있겠지만 최근에는 그리드 시스템을 많이 사용합니다. 그리드 시스템은 웹 페이지의 레이아웃과 구성 요소를 조정하기 위한 구조적인 시스템으로 그리드를 사용하면 웹 페이지의 구성 요소를 일관되고 조화롭게 배치할 수 있습니다. 일반적으로 웹 사이트의 그리드 시스템은 열(column)과 행(row)으로 구성됩니다. 각 열은 일정한 너비를 가지고 있고, 이를 기준으로 콘텐츠를 배치합니다. 웹 그리드 시스템 웹 그리드 시스템은 주로 Column, Margin, Gutter로 구성되며 이 세 가지 요소의 비율을 조절하여 원하는 그리드를 구성할 수 있습니다. Margins 여백(Margins)은 콘텐츠 영역의 양 끝에 있는 공간으로, 여백의 넓이는 일정한 값으로 설정되..

[HTML/CSS] 이미지 버튼(image button) 만들기 [내부링크]

웹 화면에 일반적인 버튼을 넣으면 밋밋할 수 있습니다. 버튼을 CSS로 꾸며서 조금 더 멋진 웹 사이트를 만들 수도 있지만 이미지 버튼을 만들 수도 있습니다. 이미지 버튼이란 버튼 모양을 가진 이미지를 의미합니다. 이미지 버튼을 만들기 위해서 단순히 이미지 태그에 onclick 메서드를 걸면 되는 거 아니야?라고 생각할 수 있지만 이미지에는 onclick 메서드가 정상 작동하지 않기 때문에 태그를 활용해서 코드를 작성해야 합니다. 이미지 버튼(image button)을 만드는 두가지 방법 만들기 버튼 태그 안에 이미지 버튼을 포함하는 방법 일반적으로 이미지 버튼을 만들기 위해 정보를 찾으면 위와 같은 코드가 나옵니다. 과거에 이미지 버튼을 만들었을 때 주로 사용하던 방식으로 버튼 태그 안에 이미지를 삽입..

[Web] 반응형 웹 사이트를 만드는 다양한 방법 [내부링크]

요즘은 PC나 노트북보다 더 작은 스마트폰에서 웹 사이트에 접속하는 경우가 많습니다. 그런데 PC와 스마트폰의 화면 크기가 다르기 때문에 데스크톱 PC용으로 만들어진 웹 사이트를 스마트폰에서 접속하면 매우 작은 글씨로 표시됩니다. 데스크톱에서 보여주던 내용을 스마트폰 화면 안에 다 보여줘야 하기 때문이죠. 이러한 문제점 때문에 과거에는 모바일용으로 사이트를 별도로 제작하였습니다. 하지만 브라우저의 환경이 점차 다양해지는데 매번 PC와 모바일 사이트를 별도로 매번 유지보수하기는 쉽지 않습니다. 그래서 반응형 웹의 중요성이 대두되었습니다. 반응형 웹이란? 반응형 웹(Responsive web)은 다양한 기기와 화면 크기에 자동으로 적응하는 웹 디자인 방식을 의미합니다. 반응형 웹은 사용자가 웹사이트를 모바일..

[HTML] 버튼 만들기 button 태그, (input type = "button") [내부링크]

HTML 버튼은 웹 페이지에서 사용자가 클릭할 수 있는 클릭 가능한 요소를 말합니다. 사용자가 버튼을 클릭하면 개발자가 미리 지정해 놓은 특정 작업이 실행됩니다. HTML 버튼 만들기 버튼의 종류(button type) 버튼 타입 설명 button 버튼 형태를 만들며 자체기능은 없습니다. onClick 메서드를 활용하여 특정 액션을 취하는 기능을 넣을 수 있습니다. submit 폼(form)에서 입력받은 데이터들을 서버로 전송합니다. reset 폼(form)에서 입력받은 데이터들을 초기화 시킵니다. 버튼을 만드는 두 가지 방법 HTML에서 버튼을 만들 수 있는 방법은 두 가지가 있는데 처럼 input type을 사용해서 만들 수도 있고 간단히 태그를 사용해서 삽입할 수도 있습니다. 첫 번째 방법 (inp..

[HTML] 여러 줄 입력하는 textarea 만들기 [내부링크]

태그는 한 줄 이상의 문장을 입력할 때 사용하는 폼을 말합니다. 주로 게시판에서 게시물을 입력하거나 회원가입 양식에서 사용자 약관을 표시할 때 자주 사용됩니다. 태그는 일반적으로 태그와 함께 사용되며, 사용자가 입력한 데이터를 서버로 보내기 위해 사용됩니다. 이 태그는 "name" 속성을 사용하여 입력 필드의 이름을 지정할 수 있습니다. textarea 만들기 name : 다른 폼 요소와 구분하기 위해 텍스트 영역의 이름을 지정합니다. cols : 텍스트 영역의 가로 너비를 문자 단위로 지정합니다. rows : 텍스트 영역의 세로 길이를 줄 단위로 지정합니다. 지정한 숫자보다 줄 개수가 많아지면 스크롤 막대가 생깁니다. See the Pen textarea1 by wjdxo513 (@wjdxo513) o..

[HTML] 체크박스 만들기 (input type="checkbox") [내부링크]

체크박스는 사용자가 하나 이상의 옵션을 선택할 수 있도록 할 수 있는 UI 요소입니다. 주로 폼(form) 태그에서 사용되며, 사용자가 선택한 옵션의 값을 폼 데이터로 제출할 수 있습니다. 체크박스는 대개 양식, 설정, 필터링 등의 기능을 구현할 때 사용됩니다. 체크박스 만들기 name : 체크박스가 여러개 있을 경우 폼태그에서 체크박스를 구분하기 위한 이름을 지정합니다. value : 선택한 체크박스들이 선택되었을 때 서버로 넘길 값을 선택합니다. 이 값은 필수 속성입니다. See the Pen Untitled by wjdxo513 (@wjdxo513) on CodePen. 위 코드는 체크박스 3개를 생성합니다. name 속성은 같은 그룹에 속한 체크박스를 식별하기 위한 이름입니다. 만약 각각의 체크박..

[HTML] 라디오 버튼 만들기 (input type="radio") [내부링크]

라디오 버튼은 여러 항목 중 원하는 항목 하나를 사용자가 선택할 수 있도록 하는 폼 요소입니다. 딱 하나만 선택할 수 있는 것이 특징으로 사용자가 라디오 버튼 중에서 하나를 선택하면, 다른 라디오 버튼은 선택이 해제됩니다. 라디오 버튼은 주로 폼(form) 태그에서 사용되며, 사용자가 선택한 옵션의 값을 폼 데이터로 제출할 수 있습니다. 예를 들어, 사용자가 성별을 선택하는 폼이 있다면, 라디오 버튼으로 "남성"과 "여성" 옵션을 제공할 수 있습니다. 이렇게 사용자가 성별을 선택하면 그 정보를 서버로 전송하여 후 처리를 할 수 있습니다. 라디오 버튼 만들기 name : 라디오 버튼이 여러개 있을 경우 폼태그에서 라디오 버튼을 구분하기 위한 이름을 지정합니다. 라디오 버튼은 여러 개 중에서 하나만 선택하는..

[HTML] 드롭다운 리스트(목록) 만들기 [내부링크]

사용자가 여러 옵션 중에서 하나를 선택하도록 하고 싶을 때 드롭다운 리스트를 사용합니다. 드롭다운 리스트란 클릭 했을 때 옵션들이 요소 아래쪽으로 펼쳐지기 때문에 생긴 명칭입니다. 공간을 최소한으로 사용하면서 여러 옵션을 표시하려면 드롭다운 목록이 가장 적당합니다. 드롭다운 리스트는 태그와 태그를 사용하여 생성합니다. 태그로 드롭다운 목록의 시작과 끝을 표시하고 그 안에 태그를 사용해 원하는 항목들을 추가합니다. 드롭다운 리스트 만들기 See the Pen 드롭다운 리스트1 by wjdxo513 (@wjdxo513) on CodePen. 드롭다운 리스트는 위 예제처럼 태그를 사용하여 드롭다운 리스트를 만들고, 태그를 사용하여 드롭다운 리스트 내에 선택할 수 있는 항목들을 만들어주면 됩니다. 여기서 val..

[Web] 구글 애널리틱스 사용자 추가하기 (사이트 데이터 공유) [내부링크]

구글 애널리틱스는 웹사이트나 애플리케이션 등에 유입되는 방문자들의 행동과 성과를 분석할 수 있는 무료 웹 분석 도구입니다. 이 구글 애널리틱스를 사용하면 방문자 수, 페이지 뷰, 이탈률, 사용자 유형 등의 정보들을 파악할 수 있는데요. 이러한 정보를 토대로 다양한 의사결정을 할 수 있습니다. 만약 사이트나 앱의 관리자들이 여러 명이라면 이 데이터들을 서로 공유해야겠죠. 이번 포스팅에서는 구글 애널리틱스의 데이터를 서로 공유할 수 있는 방법에 대해 알아보도록 하겠습니다. 구글 애널리틱스 데이터 공유하기 1. 아래 링크되어 있는 구글 애널리틱스 사이트에 접속하여 로그인 한 후 좌측 하단에 있는 관리 탭으로 들어갑니다. https://analytics.google.com/ 2. 데이터를 공유 할 계정을 선택하..

[Web] 개발자 커뮤니티 사이트 추천 (커리어리 사용 후기) [내부링크]

성인 52.5%, 일 년에 책 한 권도 안 읽는다…1년 평균 독서량 4.5권 유튜브 플랫폼을 필두로 영상이 친숙해지면서 글을 읽지 않는 사회가 되고 있습니다. 최근에는 정보의 습득도 책보다는 온라인 강의나 유튜브를 많이 이용하는 것 같더라고요. 왜냐하면 머릿속에 넣는 과정에서 영상이 더 편하거든요. 본인이 직접 글을 읽어야 하는 과정 없이 설명자가 내 귀에 정보를 꽂아주니까요. 하지만 저는 영상보다도 글을 더 좋아합니다. 영상이 주는 시각적인 자극과 청각적인 자극 없이 순수하게 그 사람의 생각을 내 머릿속에 넣어보고 이 사람의 의도를 상상하고 그 과정에서 내 생각을 성장시킬 수 있으니까요. 저는 일하다가 조금 여유가 생기면 다른 사람들이 쓴 글들을 읽어보는 편입니다. 최근에는 "커리어리"라는 커뮤니티 사..

[HTML/CSS] float 속성 사용법 총정리 (왼쪽 or 오른쪽에 배치하기) [내부링크]

HTML과 CSS를 사용하여 웹 페이지를 디자인할 때, 요소들의 위치와 배치를 제어할 때 float 속성을 사용하고는 합니다. float은 떠 있다는 의미로 왼쪽 구석이나 오른쪽 구석에 요소를 배치시키는 기능을 가지고 있습니다. 요소 왼쪽이나 오른쪽에 배치하기(float 속성) none : 해당 요소를 어느쪽으로도 배치하지 않습니다. (기본 값) left : 해당 요소를 문서의 왼쪽으로 배치합니다. right : 해당 요소를 문서의 오른쪽으로 배치합니다. See the Pen float 1 by wjdxo513 (@wjdxo513) on CodePen. float 속성을 사용하면 필요한 너비만 콘텐츠를 차지하고 다른 요소가 들어올 만큼의 공간을 비워둡니다. 위의 예제에서 파란색 box1은 float:le..

[CSS] CSS 주석 처리하는 법 & 단축키 [내부링크]

CSS 주석 사용법 /*주석 기호 사이의 데이터는 웹 브라우저에 출력되지 않습니다.*/ CSS의 주석은 /* 주석 내용 */ 같은 형식으로 작성하시면 됩니다. CSS 주석 사용 예시 See the Pen Untitled by wjdxo513 (@wjdxo513) on CodePen. CSS 주석 단축키 Visual Studio 주석 단축키 Ctrl + K + C : 주석 지정 Ctrl + K + U : 주석 해제 Visual Studio Code 주석 단축키 Ctrl + / : 한줄 주석 처리 / 해제 Ctrl + K + C : 주석 지정 Ctrl + K + U : 주석 해제 Eclipse 주석 단축키 Ctrl + Shift + / : 블록을 주석으로 처리 Ctrl + Shift + / : 블록 주석을 ..

[HTML] HTML 주석 처리하는 법 & 단축키 [내부링크]

HTML 주석 사용법 HTML의 주석은 와 같은 형식으로 작성하시면 됩니다. HTML 주석 사용 예시 See the Pen HTML 주석 사용예시 by wjdxo513 (@wjdxo513) on CodePen. HTML 주석 단축키 Visual Studio 주석 단축키 Ctrl + K + C : 주석 지정 Ctrl + K + U : 주석 해제 Visual Studio Code 주석 단축키 Ctrl + / : 한줄 주석 처리 / 해제 Ctrl + K + C : 주석 지정 Ctrl + K + U : 주석 해제 Eclipse 주석 단축키 Ctrl + Shift + / : 블록을 주석으로 처리 Ctrl + Shift + / : 블록 주석을 해제 Ctrl + / : 한줄 주석 처리 / 해제 Codepen 주석 단..

[HTML/CSS] div 박스에 테두리(border) 설정하는 방법 총정리 [내부링크]

HTML 요소를 적절하게 배치함에 있어 테두리가 있다면 요소의 영역을 시각적으로 표현할 수 있습니다. 작게는 텍스트의 단락에서부터 그림이나 표, 양식 등 형태를 가진 요소에게 다양하게 테두리를 적용할 수 있는데요. CSS의 border라는 속성을 통해 테두리를 적용할 수 있습니다. 이번 포스팅에서는 border 사용법에 대해 알아보도록 하겠습니다. 요소 테두리(border) 설정하기 border 속성은 요소에 테두리를 추가하는 데 사용됩니다. border 사용 예제 See the Pen 테두리1 by wjdxo513 (@wjdxo513) on CodePen. 기본적으로 테두리만 사용하시려고 하신다면 위와 같이 html style border에 원하는 값을 넣어주시면 됩니다. 참고로 border-style..

[HTML/CSS] 그라데이션을 활용한 패턴 만들기 [내부링크]

이전 포스팅에서 그라데이션을 만드는 두가지 방법에 대해 알아보았습니다. 이 선형 그라데이션과 원형 그라데이션은 패턴을 한번 만든 후 요소를 채울 만큼 반복해서 표시할 수 있는데요. 이 기법을 활용하면 그라데이션으로 패턴을 만들 수 있습니다. 이번 포스팅에서는 그라데이션을 활용하여 패턴을 만드는 방법에 대해 알아보도록 하겠습니다. ※ 선형, 원형 그라데이션을 만드는 방법이 궁금하시다면 아래 글을 참고해 주세요. [HTML/CSS] 배경에 선형 그라데이션 효과 넣기(linear-gradient) [HTML/CSS] 배경에 원형 그라데이션 효과 넣기(radial-gradient) 선형 그라데이션을 활용한 패턴 만들기 repeating-linear-gradient : 선형 그라데이션 반복하기 See the Pe..

[HTML/CSS] 배경에 원형 그라데이션 효과 넣기(radial-gradient) [내부링크]

그라데이션(Gradient) 효과는 여러 색상을 서서히 혼합하여 부드러운 색상 전환 효과를 만드는 것으로 크게 선형 그라데이션, 원형 그라데이션 두 가지 형태로 나뉩니다. 이 중 이번 포스팅에서는 원형 그라데이션을 넣는 방법에 대해 알아보겠습니다. CSS3에서는 radial-gradient 함수를 활용하여 선형 그라데이션을 넣을 수 있습니다. 원형 그라데이션 만들기 (radial-gradient) 원형 그라데이션은 색상이 가운데 중심에서부터 원이나 타원의 형태로 바깥으로 색상이 변하는 형태를 말하며 radial-gradient() 함수를 사용하면 배경에 원형 그라데이션을 적용할 수 있습니다. radial-gradient 사용법 radial-gradient([최종모양] [크기] at [위치], color1..

[HTML/CSS] 배경에 선형 그라데이션 효과 넣기(linear-gradient) [내부링크]

그라데이션(Gradient) 효과는 여러 색상을 서서히 혼합하여 부드러운 색상 전환 효과를 만드는 것으로 크게 선형 그라데이션, 원형 그라데이션 두 가지 형태로 나뉩니다. 이 중 이번 포스팅에서는 선형 그라데이션을 넣는 방법에 대해 알아보겠습니다. CSS3에서는 liner-gradient 함수를 활용하여 선형 그라데이션을 넣을 수 있습니다. 선형 그라데이션 만들기(linear-gradient) 선형 그라데이션은 색상이 수직이나 수평 또는 대각선 방향으로 일정하게 변하는 형태를 말하며 liner-gradient() 함수를 사용하면 배경에 선형 그라데이션을 적용할 수 있습니다. linear-gradient 사용법 linear-gradient([방향], color1, color2, color3 ...) See..

[HTML/CSS] 배경 이미지 넣는 방법(background-image) 총정리 [내부링크]

웹 사이트를 꾸미다 보면 때로는 배경에 단순히 배경에 색을 넣는 것보다는 이미지를 넣어 디자인을 하는 것이 필요한 경우가 있습니다. CSS의 background-image 속성을 사용하면 웹에서 사용이 가능한 jpg나 gif, png 파일을 사용하여 배경 이미지를 설정할 수 있으며, 다양한 크기의 이미지를 스케일링하여 사용할 수 있습니다. 이번 포스팅에서는 웹 문서의 배경에 이미지를 설정하는 방법에 대해 알아보도록 하겠습니다. 배경 이미지 지정하기 (background-image) body {background-image : url('이미지 URL');} #area {background-image : url('이미지 URL');} .area {background-image : url('이미지 URL');..

[HTML/CSS] 배경색 넣는 방법(background-color) 총정리 [내부링크]

HTML과 CSS를 이용하여 웹 문서를 만들어감에 있어서 배경(background)의 설정은 매우 중요합니다. 배경을 설정함으로써 전체적인 웹 페이지의 느낌이나 분위기를 결정할 수 있기 때문입니다. 웹 문서 전체에 배경을 넣을 수 있기도 하고 텍스트, 목록 등 원하는 부분에만 배경을 설정할 수 있습니다. 이번 포스팅에서는 배경색 설정에 대해 알아보도록 하겠습니다. 배경색 지정하기 (background-color) 배경 색상을 지정하는 4가지 방법 background-color:#000000; (HAX코드 16진수 사용) background-color:rgb(0,0,0); (RGB 코드 사용) background-color:rgba(0,0,0,0); (RGBA 코드 사용) background-color:b..

[Web] RGB 색상 코드표 확인할 수 있는 사이트 - BEST 3 [내부링크]

웹 문서에서 색상을 바꿀 일이 있으면 RGB 색상 코드값이 필요한데요. 이때 유용하게 사용할 수 있는 RGB 색상코드를 제공하는 사이트들이 있습니다. 이번 포스팅에서는 RGB 코드값을 쉽게 확인할 수 있는 대표적인 사이트를 몇 가지 추천해드리고자 합니다. 1. 네이버 색상 팔레트 가장 많은 사람들이 사용할 수 있는 네이버 색상 팔레트입니다. 네이버에서 색상 팔레트라고 치면 특정 색상의 HAX코드와 RGB 색상을 확인하실 수 있습니다. 2. https://html-color-codes.info/Korean/ 위 사이트에서도 특정 색상의 HAX코드를 확인하실 수 있습니다. 네이버 색상 팔레트보다 조금 더 많은 색상의 코드를 확인하실 수 있으니 조금 더 상세한 색을 사용하고 싶다면 위의 사이트를 추천드립니다...

[Web] 웹에서 색상을 표현하는 방법 (RGB 표현법에 대하여) [내부링크]

웹 사이트는 다양한 색상을 조합하여 디자인하게 됩니다. 그렇다면 웹에서 색상은 어떻게 넣을 수 있을까요? 웹 문서에서 색상을 표현하는 방법은 RGB, HSL, HWB, CMYK 등 여러가지 방법이 있는데 이 중에서 RGB 방법을 가장 많이 사용합니다. 이번 포스팅에서는 RGB 표현법에 대해 알아보도록 하겠습니다. RGB 색 모델 웹에서 색상의 표현은 RGB 색상을 표준으로 사용합니다. RGB 색 모델은 빛의 삼원색인 빨강(Red), 초록(Green), 파랑(Blue)을 이용하여 색상을 표현하는 방식입니다. 이 세 가지 색을 조합하여 세상의 모든 색상을 표현할 수 있습니다. 각 색상은 0부터 255까지의 숫자로 표현됩니다. 0은 해당 색이 전혀 들어있지 않음을 의미하고, 255는 해당 색이 가장 강함을 의..

[HTML/CSS] UL, OL, DL 목록(list)에 기호 스타일 지정하기 [내부링크]

웹 문서에서 목록(List)으로 정보를 정리해서 보여주면 보는 사람들로 하여금 정리가 잘 된 화면으로 줄 수 있습니다. 이번 포스팅에서는 웹 문서에서 리스트를 만들 수 있는 여러 가지 속성에 대해 알아보도록 하겠습니다. 리스트 만들기 웹 문서에서 목록(List)은 UL, OL, DL, LI 태그들로 만들 수 있는데요. 만드는 방법은 제가 예전에 포스팅해 둔 내용이 있어서 링크를 걸어둘테니 참고해 주기 바랍니다. [Html] UL 태그, OL태그, DL태그, LI태그 사용법 목록의 기호와 번호 스타일 지정하기 (list-style-type) HTML에서 리스트를 작성할 때, 항목의 스타일을 변경하는 방법 중 하나는 list-style 속성을 사용하는 것입니다. 이 속성은 UL, OL, DI 태그에 적용됩니..

[HTML/CSS] 공백과 줄바꿈 지정하기(white-space) [내부링크]

white-space란 HTML 요소 내에서 빈칸, 탭, 개행 등을 일컫는 용어입니다. 즉, 공백이나 개행 문자 등을 말합니다. 이 공백이나 개행 문자는 웹 페이지나 문서의 레이아웃을 지정할 때 중요한 역할을 합니다. 이번 포스팅에서는 white-space의 여러 속성과 사용 방법에 대해 알아보겠습니다. 공백과 줄 바꿈 지정하기(white-space) normal: 여러 개의 공백이나 개행 문자를 하나로 합칩니다. (기본 값) nowrap: 공백이나 개행 문자를 무시합니다. pre: 원본 텍스트 그대로 표시합니다. pre-wrap: 원본 텍스트 그대로 표시하지만, 줄 바꿈을 인식합니다. pre-line: 줄 바꿈 문자를 기준으로 줄을 나눕니다. normal(가로의 오른쪽 끝에 닿으면 자동으로 줄 바꿈 합..

[HTML/CSS] 넘치는 텍스트 표기하기 (overflow, text-overflow) [내부링크]

웹 사이트에 텍스트를 표시할 때 텍스트가 할당된 공간을 초과하는 경우가 있을 수 있습니다. 이로 인해서 웹 사이트가 깨져 보이는 등의 문제가 있을 수 있는데요. 이 문제를 해결하기 위해 CSS는 overflow와 text-overflow 속성을 사용할 수 있습니다. 이 overflow, text-overflow 속성을 사용하면 텍스트를 오버플로 처리할 수 있습니다. 이번 포스팅에서는 웹 페이지에서 넘치는 콘텐츠를 표시하는 방법에 대해 알아보도록 하겠습니다. 넘치는 텍스트 표기하기 overflow visible : 넘치는 콘텐츠를 그대로 박스를 넘겨 표시합니다. (기본값) hidden : 넘치는 콘텐츠를 자르고 보이지 않게 처리합니다. auto : 넘치지 않으면 그대로 두고 넘치면 콘텐츠를 자르고 스크롤바..

[HTML/CSS] 텍스트 쓰는 방향 지정하기 (direction) +아랍어 [내부링크]

한글, 영어를 비롯하여 대부분의 언어들은 보통 왼쪽 -> 오른쪽으로 쓰는것이 표준입니다. 웹 문서 또한 이를 기준으로 왼쪽 -> 오른쪽으로 텍스트가 작성되죠 하지만 아랍어의 경우에는 언어의 방향이 오른쪽 -> 왼쪽입니다. 이럴때는 어떻게 해야할까요? direction 속성을 사용하면 텍스트를 쓰는 방향을 왼쪽 -> 오른쪽으로 바꿀 수 있습니다. 이번 포스팅에서는 direction 속성에 대해 알아보도록 하겠습니다. 텍스트 쓰는 방향 지정하기 (direction) 사용법 direction: ltr | rtl ltr : 왼쪽에서 오른쪽으로 텍스트를 표시합니다. (기본 값) rtl : 오른쪽에서 왼쪽으로 텍스트를 표시합니다. ※ 다만 한글이나 영어처럼 왼쪽에서 오른쪽에서 쓰는 언어일 경우 속성값으로 rtl을 ..

[HTML/CSS] 텍스트에 그림자 효과 넣기 (text-shadow) [내부링크]

웹 문서의 텍스트에 그림자를 설정하면 텍스트를 더욱 강조시켜 눈에 띄게 만들 수 있습니다. 사이트 제목같이 강조를 해야 할 텍스트에 사용하면 좋은데요. text-shadow 속성은 텍스트에 그림자 효과를 추가하여 입체적으로 만들어 줍니다. 텍스트에 그림자 효과 넣기 (text-shadow) 사용법 text-shadow: horizontality vertical blur color | none | initial | inherit horizontality : 그림자 수평 위치 (필수) vertical : 그림자 수직 위치 (필수) blur : 흐림 정도 (값을 정하지 않으면 0) color : 그림자 색 (값을 정하지 않으면 브라우저 기본값) none : 그림자 효과를 없앤다. initial : 기본값으로 ..

[HTML/CSS] 텍스트 들여쓰기 / 내어쓰기 (text-indent) [내부링크]

텍스트가 많은 문서일 때는 문단의 첫 글자를 들여쓰게 되면 문단의 시작이 눈에 확 들어오기 때문에 가독성이 향상됩니다. 이번 포스팅에서는 웹 문서에서 문단을 들여 쓸거나 내어쓸 수 있는 text-indent 속성에 대해 알아보도록 하겠습니다. 텍스트 들여쓰기 See the Pen 텍스트 들여쓰기 by wjdxo513 (@wjdxo513) on CodePen. text-indent 속성에 양수의 크기나 백분율을 넣으면 해당 값만큼 들여쓰기를 할 수 있습니다. 백분율로 크기를 설정하였을 경우에는 부모 요소의 너비가 달라지면 들여쓰기 값도 달라집니다. 텍스트 내어쓰기 See the Pen 텍스트 내어쓰기 by wjdxo513 (@wjdxo513) on CodePen. text-indent 속성에 음수의 크기나..

[HTML/CSS] 텍스트 정렬하기 (text-align) 왼쪽, 가운데, 오른쪽 정렬 [내부링크]

html 태그에서 텍스트 관련 속성 중에서 가장 많이 사용하는 속성 중에 하나가 바로 이번 포스팅에서 서술할 (text-align) 속성일 것입니다. 이번 포스팅에서는 text-align 속성을 사용하여 텍스트를 좌측, 중앙, 우측 정렬을 하는 방법에 대해 알아보도록 하겠습니다. 텍스트 정렬하기(text-align) left : 왼쪽 정렬 right: 오른쪽 정렬 center : 가운데 정렬 justify : 양쪽 정렬 start : 현재 텍스트 줄의 시작 위치에 맞추어 문단 정렬 end : 현재 텍스트 줄의 끝 위치에 맞추어 문단 정렬 match-partent : 부모 요소에 따라 문단 정렬 왼쪽 정렬 See the Pen 왼쪽 정렬 by wjdxo513 (@wjdxo513) on CodePen. te..

[HTML/CSS] font 속성 - 글꼴 속성을 한꺼번에 지정하기 [내부링크]

font 속성 - 간략하게 요약하여 표현하기 [HTML/CSS] 글자색 변경하기 (font-color) [HTML/CSS] 글자 굵기 변경하기 (font-weight) [HTML/CSS] 글자 이탤릭체, 밑줄, 취소선 변경하기 [HTML/CSS] 대/소문자 변경하기 (text-transform) [HTML/CSS] 작은 대문자로 표시하기 (font-variant) [HTML/CSS] 글자 글꼴(폰트) 변경하기 (font-family) [HTML/CSS] 구글 웹 폰트 사용하기 (@font-face) 앞에서 포스팅 했던 위의 소스들을 여러개 적용하기 위해서 글꼴 스타일을 하나하나 코딩하려고 하면 소스가 너무 지저분해질 것입니다. See the Pen Untitled by wjdxo513 (@wjdxo513..

[HTML/CSS] 구글 웹 폰트 사용하기 (@font-face) [내부링크]

[HTML/CSS] 글자 글꼴(폰트) 변경하기 (font-family) 이전 포스팅에서는 웹 문서에서 시스템 폰트를 사용하는 방법에 대해 알아보았습니다. 시스템 폰트는 속도가 빠르다는 장점이 있지만 사용자 디바이스에 설치가 되어있어야 하기에 다양한 폰트는 사용하기가 힘듭니다. 또한 설정한 시스템 폰트가 존재하지 않는다면 적용되지 않는 문제도 있죠. 하지만 웹 폰트를 사용하면 모든 디바이스에 예쁜 디자인의 폰트를 적용시킬 수 있습니다. 이번 포스팅에서는 구글 웹 폰트를 사용하는 방법에 대해 알아보도록 하겠습니다. 웹 폰트(Web Font)란? 온라인 특정 서버에 위치한 폰트 파일을 다운로드하여 화면에 표시하는 웹 전용 폰트를 말합니다. 이렇게 한다면 방문자의 디바이스에 특정 폰트의 설치 여부와 상관없이 동..

[HTML/CSS] 글자 글꼴(폰트) 변경하기 (font-family) [내부링크]

문장의 가독성에 영향을 끼치는 요소가 무엇이냐고 물어본다면 저는 가장 먼저 글꼴이라고 말할 수 있을 정도로 텍스트 가독성에 있어 글꼴은 매우 중요한 요소입니다. 웹 문서에서 글꼴(폰트)은 font-family 속성을 통해 바꿀 수 있습니다. font-family는 말 그대로 폰트들의 집합, 즉 여러 개의 글꼴을 한 군데 모아둔 것으로 생각하시면 됩니다. 이번 포스팅에서는 웹 문서에서 웹 문서의 글꼴을 변경하는 방법에 대해 알아보도록 하겠습니다. 글자 글꼴(폰트) 변경하기 font family와 generic family font family : 특정 글꼴 (arial, courier, 나눔고딕, 궁서, 굴림 등) generic family : 비슷한 모양을 가지는 글꼴의 집합 (serif, sans-se..

[HTML/CSS] 작은 대문자로 표시하기 (font-variant) [내부링크]

웹문서의 영문자 글꼴에서는 '작은 대문자'라는 설정도 할 수 있습니다. 여기서 작은 대문자란 대문자를 소문자 크기에 맞추어 작게 표시한 것인데요. font-variant 속성으로 지정할 수 있습니다. 작은 대문자로 표시하기 See the Pen 작은 대문자로 표시하기1 by wjdxo513 (@wjdxo513) on CodePen. font-variant 속성 값 normal : 기본 값 small-caps : 작은 대문자로 표시하기 font-variant 속성에 small-caps 값을 사용하면 위와 같이 작은 대문자로 표시됩니다. 한글(영어) 형태로 문장을 기술할 때 사용해주면 좋습니다. CSS 처리 See the Pen 작은 대문자로 표시하기2 by wjdxo513 (@wjdxo513) on Cod..

[HTML/CSS] 대/소문자 변경하기 (text-transform) [내부링크]

영문자의 대/소문자를 일괄적으로 변경해야 할 경우에는 CSS의 text-transform 속성을 이용하시면 됩니다. 이번 포스팅에서는 텍스트의 대/소문자를 변형하는 text-transform 속성에 대해 알아보도록 하겠습니다. 문장 대/소문자 변경하기 See the Pen 대/소문자 변경하기1 by wjdxo513 (@wjdxo513) on CodePen. text-trasnform 속성 값 none : 기본값 capitalize : 문장의 첫글자만 대문자로 변형 uppercase : 문장 대문자로 변형 lowercase : 문장 소문자로 변형 ※ HTML 태그는 , , , , , 등 텍스트를 쓸 수 있는 태그면 아무거나 됩니다. CSS 처리 See the Pen 대/소문자 변경하기2 by wjdxo51..

[HTML/CSS] 텍스트 이탤릭체, 밑줄, 취소선 적용하기 [내부링크]

웹 문서를 만들다 보면 이탤릭체, 밑줄, 취소선등을 통해 텍스트 스타일을 바꿔주고 싶을 때가 있습니다. 이렇게 문장 일부분의 스타일을 바꿔주면 다른 문장과 대비되어 강조되는 효과를 줄 수 있는데요. 글자 기울기는 font-style로 설정할 수 있고 밑줄과 취소선은 text-decoration 속성을 통해 설정할 수 있습니다. 이번 포스팅에서는 텍스트 스타일을 바꿔주는 방법에 대해 알아보도록 하겠습니다. 이탤릭체(font-style) 사용하기 See the Pen 이탤릭체1 by wjdxo513 (@wjdxo513) on CodePen. style 속성 값 normal : 기본값 italic : 이탤릭체 글꼴로 디자인된 폰트 사용 oblique : normal 상태 글씨를 그냥 기울여 씀 initial ..

[HTML/CSS] 글자 굵기 변경하기 (font-weight) [내부링크]

웹 문서를 만들다보면 CSS로 글자를 굵게 만들어야 할 경우가 생길 수 있겠죠? 이번 포스팅에서는 CSS로 텍스트를 굵기를 변경하는 방법에 대해 알아보도록 하겠습니다. 글자 굵게 만들기 font-weight 종류 See the Pen 글자 굵게 by wjdxo513 (@wjdxo513) on CodePen. font-weight 속성 값 font-weight : normal; = 보통 굵기로 설정합니다. (숫자 400과 같은 값입니다) font-weight : bold; = 굵은 굵기로 설정합니다. (숫자 700과 같은 값입니다) font-weight : bolder; = 상속된 값보다 굵은 굵기입니다. font-weight : lighter; = 상속된 값보다 얇은 굵기입니다. font-weight :..

[HTML/CSS] 글자색 변경하기 (font-color) [내부링크]

개발을 하다 보면 웹 문서에서 글자 색상을 바꾸고 싶은 경우가 종종 있을 수 있습니다. 예를 들자면 문장의 중요한 내용의 글자색을 적절히 조절하여 강조를 할 수도 있겠죠. 아마 조금 더 가독성이 있는 웹 문서를 만들 수 있을 것입니다. 이번 포스팅에서는 웹 문서에서 글자 색상을 변경하는 방법에 대해 알아보도록 하겠습니다. ※ 컴퓨터에서 색을 표현하는 방식 RGB 색상에 대하여 컴퓨터에서 색상은 빛의 삼원색인 빨강(red), 초록(green), 파랑(blue)의 3가지 색의 조합으로 표현합니다. 위의 3가지 색상을 섞으면 모든 색상을 다 사용할 수 있지요. 이러한 방식을 빨강(red), 초록(green), 파랑(blue) 3가지 색상의 앞글자를 따서 RGB라고도 합니다. 형태는 RGB(빨강값, 초록값, 파..

[HTML/CSS] 글자 크기 조절하기 (font-size) [내부링크]

가독성이 좋은 웹 문서를 만들기 위해서는 폰트 사이즈를 적절하게 설정해주어 보는 사람들로 하여금 정보를 빠르게 캐치할 수 있도록 해야 합니다. 이 font-size는 개발자가 적절하게 설정해 줄 수 있는데요. 이번 포스팅에서는 웹 문서의 텍스트 사이즈를 조절하는 방법에 대해 알아보도록 하겠습니다. HTML 사용 태그 사용 See the Pen 글자크기 조절1 by wjdxo513 (@wjdxo513) on CodePen. 첫 번째로 소개해드릴 방법은 font size를 활용하는 방법으로 크기는 1 ~ 7까지 설정할 수 있습니다. 3으로 지정하시면 일반 텍스트 크기입니다. 그리고 +, -를 하시면 기본 사이즈인 3에서 증감할 수 있습니다. 인라인 방식 See the Pen 글자크기 조절2 by wjdxo5..

[HTML/CSS] 글자 간격(자간), 줄 간격(행간) 조정하기 [내부링크]

웹 문서에서 장문의 텍스트를 작성하다 보면 자간과 행간이 적절하지 않아 문장의 가독성에 악영향을 미치는 경우가 종종 있는데요. 이럴 때는 HTML과 CSS를 활용하여 글자와 행의 간격을 조절해줄 수 있습니다. 이번 포스팅에서는 웹 문서에서 자간과 행간을 조절하는 방법에 대해 알아보도록 하겠습니다. 자주 쓰는 크기 단위 - em : font_size, 해당폰트의 대문자 M의 너비를 기준으로 함. - rem : root em, HTML 문서의 root 요소인 에 지정된 크기를 기준으로 상대적인 값을 가지게 됨 - ex : x-height, 해당폰트의 소문자 x의 높이를 기준으로 함. - px : pixel, 표시장치(모니터)에 따라서 상대적인 크기를 가짐. - % : percent, 기본글꼴의 크기에 대하여..

[CSS] 가상 클래스 선택자에 대하여(+가상요소 선택자) [내부링크]

CSS 가상 클래스는 선택자에 추가하는 키워드로, 선택한 요소가 특정 상태를 만족할 때 적용됩니다. 예를 들어 :hover를 사용하면 마우스 포인터를 요소에 오버하는 이벤트가 발생하였을 때 특정 CSS를 지정하실 수 있습니다. 가상 클래스 종류 가상 클래스 종류 : link = 방문한 적이 없는 링크 : visited = 방문한 적이 있는 링크 : hover = 마우스를 롤오버 했을 때 : active = 요소를 클릭했을 때 : focus = 요소가 포커스 될 때 (입력 태그 등) : checked = 라디오 버튼이나 체크박스가 체크되었을 때 : first = 첫 번째 요소 : first-child = 부모 요소의 첫 번째 자식을 호출 : first-line = 문단의 첫 번째 줄에 적용 (블록 레벨 요..

[CSS] 복합 선택자(Combinators)에 대하여 (일치, 자식, 후손, 인접형제, 일반형제) [내부링크]

일치 선택자(Basic Combinator) A와 B를 동시에 만족하는 요소를 선택 See the Pen 일치 선택자 by wjdxo513 (@wjdxo513) on CodePen. 일치선택자는 두 가지 조건을 동시에 만족하는 요소에 적용됩니다. 위의 예제에서 li태그에서 green이라는 클래스명으로 지정된 요소들에만 CSS가 적용되는 것을 보실 수 있습니다. 자식 선택자(Child Combinator) A의 자식 요소 B를 선택 자식은 부모 바로 밑에 있는 요소 ‘>'는 자식 선택자의 기호 See the Pen 자식 선택자 by wjdxo513 (@wjdxo513) on CodePen. 자식 선택자는 A > B의 형태로 설정되며 여기서 > 기호는 자식 선택자를 의미합니다. 위의 예제에서는 div의 자식..

[CSS] 선택자(Selector)에 대하여 (전체, 태그, 클래스, 아이디) [내부링크]

CSS 선택자(Selector)란? CSS에서는 스타일 속성을 적용하는 요소들을 선택자라고 합니다. CSS 문법에서는 가장 앞에 나오는 대상이 되는 타겟을 의미하며 이를 통해 스타일을 적용할 수 있게 됩니다. 이 선택자는 태그의 전체가 될 수도 있고, 때로는 여러 개의 요소들을 묶어 별도의 선택자로 만들 수도 있습니다. 전체 선택자(Universal Selector) /* 사용법 */ *{속성 : 속성값;} 전체 선택자는 말 그대로 스타일의 모든 요소에 적용할 때 사용합니다. 주로 모든 하위 요소에 한꺼번에 스타일을 적용할 때 사용하며 전체 선택자로는 *(별표)를 사용합니다. See the Pen 전체 선택자 by wjdxo513 (@wjdxo513) on CodePen. 전체 선택자를 활용하여 글씨는 ..

[블로그] 2022년 블로그 결산 (+Next Level) [내부링크]

안녕하세요. 코딩팩토리입니다. 시간 참 빠르기만 합니다. 이번에도 어김없이 새해가 밝았습니다. 저는 여전히 불안하지만 해가 지날수록 점차 안정적이고 규칙적인 삶을 찾아가고 있다고 생각합니다. 하지만 그렇다 보니 안주하게 되고 도전과 변화에 대한 열정이 식어가고 있다는 사실을 이번 회고에서 뼈저리게 느낍니다. 성장을 멈추는 순간 위기가 찾아온다고 합니다. 2023년에는 잠시 주춤하고 있는 제 삶에 대한 열정을 다시 한번 일으킬 수 있는 한 해가 되었으면 좋겠습니다. 2022년도 블로그 결산 작년 한 해에는 300만 명이 넘는 분들이 제 블로그를 방문해주셨고 페이지뷰는 669만을 기록하였습니다. 사용자와 세션은 작년에 비해 절대적인 수치는 약 10만 명 정도 소폭 늘었지만 페이지뷰 수는 무려 150만 뷰 정..

[CSS] CSS 적용하기 & 예제 총정리 (적용방법, 우선순위, 문법) [내부링크]

CSS를 적용하는 3가지 방법 인라인 스타일(Inline Style) 내부 스타일 시트(Internal Style Sheet) 외부 스타일 시트(External Style Sheet) 웹 문서에 CSS를 적용시키기 위해서는 위의 3가지 방법이 있습니다. ※ 우선순위 : 인라인 스타일 > 내부 스타일 시트 > 외부 스타일 시트 인라인 스타일(Inline Style) See the Pen CSS사용예제1 by wjdxo513 (@wjdxo513) on CodePen. 인라인 스타일 방식은 html태그에 style 속성을 사용하여 직접 스타일을 지정하는 방식으로 특정 영역에 스타일을 단독 적용하고 싶을 때 사용할 수 있는 방법입니다. 하지만 이 방법을 너무 많이 사용하면 HTML과 CSS의 코드가 혼합되어 유..

[CSS] CSS(Cascading Style Sheets)란 무엇인가? [내부링크]

CSS란 무엇인가? (HTML과의 차이) CSS(Cascading Style Sheets)는 HTML과 함께 웹 표준의 기본 개념으로 웹 문서의 콘텐츠와 레이아웃, 글꼴과 같은 시각적 요소들의 디자인을 분리하기 위한 목적으로 등장하였습니다. HTML이 웹 문서의 텍스트나 이미지, 표와 같은 뼈대를 만드는 것이라면 CSS는 HTML로 만들어 놓은 텍스트의 색상이나 크기와 같은 웹 문서의 디자인을 담당한다고 생각하시면 됩니다. 이렇게 CSS를 사용하면 디자인 코드를 따로 뺄 수 있어 문서의 레이아웃을 효과적으로 할 수 있고, 간단한 코드만으로도 웹 문서 전체의 글자 크기나 글 자체, 줄 간격, 배경 색상 등도 자유롭게 디자인 할 수 있습니다. CSS의 장점 한번 스타일을 정의해놓고 여러 개의 문서에서 여러 ..

[Html] iframe 태그 사용법 & 예제 총정리 [내부링크]

iframe 태그란? iframe 태그는 inline frame의 약자로써 해당 웹 페이지 안에 다른 html 파일을 불러와서 삽입할 수 있는 기능을 제공합니다. 과거에는 html 파일을 재사용할 목적으로 header나 sidebar와 같은 요소들을 따로 만들어 iframe태그로 묶어주는 형태로 웹 사이트 개발을 많이 진행했었습니다. 예를 들자면 위의 형태처럼요. 이밖에도 지도, 영상, 결제창 등 외부 요소들을 html에 삽입해야 할 때 과거에는 iframe으로 감싸서 개발을 많이 진행했었는데요. 다만 이와 같은 개발 형식은 iframe 방식의 다양한 문제가 도출되고, html5가 새롭게 등장하면서 현재는 잘 사용하지 않습니다. iframe 태그 사용법 See the Pen iframe 태그 사용법 by..

[Html] 글자 배경색 mark 태그(형광펜 효과) 사용법 & 예제 총정리 [내부링크]

학창 시절 공부를 할 때 글의 중요한 부분에 노란색 형광펜으로 표시해가며 공부를 한 기억이 있습니다. HTML5에도 형광펜과 똑같이 하이라이터 효과를 내는 태그가 생겼습니다. 바로 태그입니다. 이번 포스팅에는 태그의 사용법에 대해 알아보도록 하겠습니다. mark태그(하이라이터 효과) 사용법 강조할 텍스트 강조할 텍스트를 위와 같이 태그로 감싸주면 하이라이터 표시가 됩니다. See the Pen mark 태그 사용법1 by wjdxo513 (@wjdxo513) on CodePen. 위와 같이 적용해볼 수 있겠습니다. 스타일을 적용하지 않으면 기본 색상인 노란색 바탕에 검은색 글씨가 됩니다. CSS로 mark 태그 꾸미기 아래 코드의 CSS탭을 클릭하시면 CSS 코드를 확인하실 수 있습니다. See the ..

[Html] 짧은 인용문 q태그 사용법 & 예제 총정리 [내부링크]

태그는 인용한 내용을 표기하기 위한 것으로 quote의 줄임말입니다. 주로 짧은 인용구(short quotation)를 정의할 때 사용되며 보통 브라우저에서는 줄 바꿈 없이 앞뒤에 따옴표를 추가하여 표현합니다. 긴 인용문 블록을 정의할 때는 태그가 아닌 태그의 사용을 권장합니다. ※ 구 익스플로러에서는 태그 따옴표가 표시되지 않을 수 있습니다. 태그가 태그의 다른 점 태그와 태그는 모두 인용문을 나타내는 것으로 쓰임새는 같지만 다른 점이 있다면 태그는 블록 레벨 태그이기 때문에 인용 내용이 줄이 바뀌어 나타나고 다른 내용들과도 구분되도록 안으로 들여 써지지만 태그는 인라인 레벨 태그이기 때문에 줄 바꿈 없이 다른 내용들과 함께 한 줄로 표시되며 따옴표로 강조된다는 차이점이 있습니다. [Html] bloc..

[Html] 인용문 blockquote 태그 사용법 & 예제(CSS) 총정리 [내부링크]

글을 인용할 경우 blockquote 태그를 활용해 표시해줄 수 있습니다. 이 blockquote 태그는 사용하게 되면 다른 텍스트보다 글이 안쪽으로 써지는 효과를 줍니다. 또한 꼭 인용글이 아니더라도 CSS를 통해 blockquote 태그를 꾸며서 글을 강조할 수 있는 효과도 줄 수 있는 등 다양하게 활용될 수 있는 태그입니다. 이번 포스팅에서는 blockquote 태그의 사용법에 대해 알아보도록 하겠습니다. ※ 참고로 길이가 짧은 인용구를 나타낼 때는 블록으로 감싸는 태그보다는 태그를 사용하는 것이 바람직합니다. [Html] q태그(짧은 인용문) 사용법 & 예제 총정리 blockquote태그(인용문) 사용법 인용 할 내용 사용하는 방법은 blockquote 태그로 텍스트를 감싸주면 됩니다. 인용의 출..

[Html] track 태그 사용법 (video에 자막 연결하기) [내부링크]

최근에는 영상에 자막을 넣는 것이 거의 필수가 되었습니다. 자막이 청각장애인들이 영상을 볼 수 있도록 해줄뿐더러 주변 소음이나 소리를 들을 수 없는 상황에서 영상의 내용을 이해하는데 도움이 되기 때문입니다. HTML5에서는 track 태그를 활용하여 영상에 자막을 연결해 줄 수 있습니다. 이번 포스팅에서는 track 태그를 활용하여 영상에 자막을 넣는 방법에 대해 알아보도록 하겠습니다. track 태그 사용법 kind 속성 (자막 종류) 속성 값 설명 subtitles 자막을 의미합니다. 소리를 켤 수 있지만 이해할 수 없는 경우, 다른 언어로 번역한 자막일 경우에 사용하며 비디오 영상에 표시됩니다. captions 캡션을 의미합니다. 청각장애인용 자막이거나 소리를 들을 수 없거나 켤 수 없는 경우에 사..

[Html] video 태그 사용법 & 예제 총정리 [내부링크]

HTML5에 새로 추가된 태그 오디오나 비디오와 같은 멀티미디어를 직접 재생할 수 없었던 과거에는 웹 브라우저에서 플러그인(plug-in) 프로그램을 사용했습니다. 대표적으로 flash가 있죠. 그래서 과거에는 인터넷에서 음악을 듣거나 온라인 강의를 실청하려고 할 때 특정 프로그램을 설치하라는 메시지가 뜨곤 했는데 HTML5에서는 이런 플러그인 없이도 멀티미디어를 사용할 수 있는 태그들이 추가되었습니다. video 태그 사용법 HTML5에서 웹 문서에 영상을 첨부하고 싶다면 태그를 사용합니다. 위의 예제처럼 video 태그와 src에 비디오 파일의 경로만 작성해주면 웹 문서에 영상이 첨부됩니다. 하지만 보통 video태그는 controls(컨트롤 막대) 속성과 함께 사용한다는 것은 알아두셨으면 좋겠습니다..

[Html] audio 태그 사용법 & 예제 총정리 [내부링크]

HTML5에 새로 추가된 태그 오디오나 비디오와 같은 멀티미디어를 직접 재생할 수 없었던 과거에는 웹 브라우저에서 플러그인(plug-in) 프로그램을 사용했습니다. 대표적으로 flash가 있죠. 그래서 과거에는 인터넷에서 음악을 듣거나 온라인 강의를 실청하려고 할 때 특정 프로그램을 설치하라는 메시지가 뜨곤 했는데 HTML5에서는 이런 플러그인 없이도 멀티미디어를 사용할 수 있는 태그들이 추가되었습니다. audio 태그 사용법 HTML5에서 배경음악이나 효과음 등 오디오를 삽입할 때는 태그를 사용합니다. 웹 사이트에 특히 bgm을 설치할 때 많이 사용합니다. audio 태그에서 사용할 수 있는 파일 확장자 설명 mp3 대부분의 음원에서 사용되며 Moving Picture Experts Group에 의해 ..

[Html] img 이미지 태그 사용법 총정리(src, 사이즈, 정렬, 테두리, 캡션 등) [내부링크]

텍스트만 있는 사이트보다는 다양한 이미지들이 있는 사이트들이 조금 더 직관적이고 예쁜 사이트를 만들 수 있습니다. HTML에서 사이트에서 이미지를 나타낼 수 있는 태그는 태그입니다. 이번 포스팅에서는 태그의 사용법에 대해 알아보도록 하겠습니다. img 태그 사용법 img 태그는 imgage의 줄임말로써 이미지를 삽입해주는 태그입니다. 반드시 src라는 속성을 동반하며 이 src에 이미지 경로를 작성해주셔야 정상적으로 출력됩니다. 참고로 태그는 꼭 사용하지 않아도 됩니다. 이미지 태그의 다양한 속성들은 아래 내용들을 참고해주세요. src 속성 (이미지 경로) See the Pen 이미지 태그 사용법 by wjdxo513 (@wjdxo513) on CodePen. 이미지를 웹 문서에 넣으려면 src속성에 정..

[Html] 시맨틱 태그(Semeantic Tag)란 무엇인가? [내부링크]

시맨틱 태그란? 시맨틱(semantic)이라는 '의미의', '의미론적인'라는 뜻을 가진 형용사입니다. 즉 시맨틱 태그는 의미를 부여한 태그라는 뜻이 됩니다. 태그에 의미를 부여했다고 생각하시면 이해가 편합니다. 이런 시맨틱 태그는 HTML5에서는 처음 등장했습니다. 예를 들자면 나 같은 태그들을 말합니다. 이 태그들은 이름만 봐도 상단과 하단이라는 것을 알겠죠. 이렇게 시맨틱 태그의 등장으로 인해 우리는 태그만 보고서도 문서를 더 쉽게 이해할 수 있게 되었습니다. 시맨틱 태그를 사용해야 하는 이유 웹 문서 레이아웃을 만들 때 시맨틱 태그를 사용하지 않더라도 태그를 활용하여 웹 문서를 똑같이 만들 수 있습니다. 하지만 우리가 시맨틱 태그를 사용해야 하는 이유는 크게 아래의 3가지 이유가 있습니다. HTML..

[Html] HTML이란 무엇인가? (feat HTML5) [내부링크]

HTML이란? HTML은 Hyper Text Markup Language의 약자로 이것을 그대로 번역해보자면 하이퍼 텍스트를 마크업 하는 언어라고 할 수 있겠습니다. 여기서 Hyper Text(하이퍼 텍스트)는 웹사이트에서 링크를 클릭해 다른 문서나 사이트로 이동할 수 있는 기능을 의미하고 Markup(마크업)은 태그(tag)를 사용해 문서에서 제목 본문 이미지 등을 표시하는 것을 말합니다. 즉 HTML을 한마디로 정리해보자면 웹에서 자유롭게 오갈 수 있는 웹 문서를 만드는 태그를 활용한 언어라고 HTML의 정의를 내려볼 수 있겠습니다. 현재는 웹 표준을 제정하는 W3C(World Wide Web Consortium)에서 표준을 권고하고 발전시키고 있습니다. W3C(World Wide Web Consor..

[내돈내산] 애플 에어팟 맥스(스페이스 그레이) 구매 및 사용 후기 [내부링크]

애플의 제품이 품질이 좋기는 하지만 비싼 가격 대비 가성비가 좋다고는 생각이 들지 않습니다. 저에게는 애플의 제품들은 사고는 싶으나 가격이 만만치 않아 막상 구매하기에는 부담스러운 포지션의 브랜드입니다. 애플의 제품을 좋아하시는 분들도 아이폰, 에어팟까지는 필수적으로 구매를 하시지만 애플 워치나, 에어팟 맥스와 같이 있으면 좋고 없으면 마는(?) 그런 제품들은 잘 구매하시지 않으시죠. 하지만 비싼 제품이라도 누군가에게는 굉장히 유용하게 사용될 제품이 될 수 있을 겁니다. 저에게는 음악을 좋아하는 친구가 있습니다. 애플 광팬이었던 그 친구는 애플스토어에서 한번 들어보고 완전히 아이팟 맥스에 매료되어 버렸습니다. 하지만 역시 비싼 가격에 무척 망설이던 것처럼 보였습니다. 하긴.. 애플 제품들이 워낙 고가라 ..

[Instagram] 인스타그램 로그인 없이 스토리, 게시물, 팔로워 보는 방법 [내부링크]

일반인들은 물론이고 상당히 유명한 사람들까지 정말 많은 사람들이 인스타그램을 합니다. 그래서 인스타그램을 하지 않는 사람들도 유명인이나 지인들의 인스타 스토리가 궁금해서 들어가 보는 경우가 종종 있는데요. 하지만 인스타그램 정책으로 인해 인스타를 하지 않는 사람들은 타인의 인스타그램 스토리를 보기 위해서는 반드시 로그인을 해야만 볼 수 있습니다. 이로 인해 인스타의 가입을 원치 않는 사람들도 부득이하게 인스타그램을 가입해야 하는 상황이 발생하는데 이는 굉장히 번거롭습니다. 이번 포스팅에서는 인스타그램을 로그인 없이 게시물, 스토리, 팔로워 등을 보는 방법에 대해 알아보도록 하겠습니다. 인스타그램 로그인 없이 스토리, 게시물, 팔로워 보는 방법 인스타그램을 로그인 없이 스토리, 게시물, 팔로워 등을 보는 ..

[Instagram] 인스타그램 PC 버전 URL 접속방법 & 설치 / 다운로드 방법 [내부링크]

모바일보다는 PC가 확실히 사용자 친화적입니다. 손가락보다는 마우스가 낫고 모바일의 키패드보다는 컴퓨터의 키보드가 사용성이 좋죠. 인스타그램도 아무리 모바일에 최적화되어 있는 프로그램이라고는 하지만 PC로 사용하는 것이 사용성면에서 훨씬 좋습니다. 특히 댓글을 달거나, 글을 쓸 때는 모바일보다 훨씬 편리함의 체감이 많이 됩니다. 이번 포스팅에서는 인스타그램을 PC에서 사용할 수 있는 방법에 대해 포스팅해보려 합니다. 인스타그램 PC버전 사용하기 인스타그램은 모바일 버전만 오랫동안 지원하고 있었는데요. 최근에는 드디어 PC버전도 출시하였습니다. 아래 링크된 URL에 접속하셔서 사용하시면 됩니다. 인스타그램 PC버전에서도 모바일에서 사용할 수 있는 대부분의 기능을 제공하고 있기 때문에 조금만 적응하시면 사용..

[YouTube] 유튜브 뮤직 PC 버전 다운로드 / 설치 방법 [내부링크]

정말 많은 분들이 유튜브 프리미엄을 사용하고 계십니다. 이에 따라 유튜브 프리미엄을 결제하면 무료로 사용할 수 있는 유튜브 뮤직을 사용하시는 분들 또한 굉장히 많아졌는데요. 이렇게 유튜브 뮤직을 사용하시려는 분들은 모바일뿐만이 아니라 PC에서도 유튜브 뮤직을 즐기고 싶을 수 있겠죠. PC에서 유튜브 뮤직을 들을 때는 보통은 유튜브 뮤직 URL에 직접 접속해서 음악을 감상하시고는 합니다. 하지만 이렇게 브라우저를 통해서 유튜브 뮤직을 사용하려 한다면 브라우저의 탭 하나는 계속 유튜브 뮤직으로 할당하고 있어야 하고, 이로 인해 사용자 실수나 브라우저 오류로 인해 브라우저가 꺼질 수도 있고, 다른 음악을 틀기 위해서는 유튜브 뮤직을 실행하고 있는 탭을 찾아야 하는 등의 다양한 문제점들이 발생할 수 있습니다. ..

[YouTube] 유튜브 나만의 플레이리스트 만드는 방법 [내부링크]

유튜브에는 자주 보고 싶은 영상들을 하나의 리스트로 만들어 끊김없이 이어서 감상할 수 있는 기능들이 있습니다. 이 기능들을 활용하면 자신이 듣고 싶은 음악이나 영상들을 하나의 재생목록으로 만들어서 감상할 수 있는데요. 저는 이 기능을 활용하여 자주듣는 음악 플레이리스트를 만들거나, 여러 편으로 되어있는 다큐멘터리를 하나로 묶어서 생각날 때마다 보고는 합니다. 이번 포스팅에서는 유튜브의 나만의 플레이리스트를 만드는 방법에 대해 알아보도록 하겠습니다. ※ 위 포스팅은 모바일 기준으로 작성되었습니다. PC도 이미지만 다를 뿐 동일한 방법으로 그대로 진행하실 수 있어요. 유튜브 나만의 플레이리스트 만드는 방법 1. 플레이리스트로 만들고 싶은 영상을 찾으신 뒤 영상 우측 아래에 있는 저장 버튼을 클릭합니다. 2...

[YouTube] 유튜브 반복 재생 켜기 / 끄기 간단한 방법 (Mobile, PC) [내부링크]

공부나 일을 할 때 유튜브에 있는 뮤직비디오나 음악 영상들은 여러 번 반복해서 감상하고는 합니다. 많은 분들이 한곡을 여러 번 반복해서 듣고 싶을 때 "00 음악 1시간"과 같은 영상들을 찾고는 하는데 이런 영상들을 억지로 찾지 않아도 그냥 유튜브에서 제공하는 반복 재생 기능을 활용하면 한 영상을 여러 번 반복하셔서 감상하실 수 있습니다. 이번 포스팅에서는 유튜브의 반복재생 기능을 켜고 끄는 방법에 대해 알아보도록 하겠습니다. Mobile에서 유튜브 반복재생 켜기 / 끄기 모바일에서 반복 재생하고 싶은 유튜브 영상을 켠 뒤 우측 상단에 톱니바퀴 모양의 설정 버튼을 클릭합니다. 그런 뒤 동영상 연속 재생이라는 버튼을 클릭해주면 자동재생 설정이 완료됩니다. PC에서 유튜브 반복재생 켜기 / 끄기 PC에서도 ..

[YouTube] 유튜브 자동 재생 켜기 / 끄기 간단한 방법 (Mobile, PC) [내부링크]

유튜브는 동영상이 끝난 뒤 스크롤을 내린다던지와 같은 특정 액션을 취하지 않으면 8초의 카운트 다운 뒤 다음 영상으로 자동 재생됩니다. 이 자동재생으로 인해 발생하는 문제가 많습니다. PC로 유튜브 영상을 볼 때면 가끔 졸 때가 있는데 자동 재생으로 인해 숙면을 취하지 못하는 경우, 와이파이가 연결되어있으면 상관이 없겠지만 자동재생으로 인해 쓸데없는 데이터들이 나가는 경우들이 자동재생의 단점이라고 생각할 수 있겠습니다. 그렇기에 저는 유튜브의 자동재생 기능을 끄고 사용하고 있는데요. 이번 포스팅에서는 유튜브의 자동재생 기능을 켜고 끄는 방법에 대해 알아보도록 하겠습니다. Mobile에서 유튜브 자동재생 켜기 / 끄기 모바일에서 유튜브 영상을 켜보시면 상단에 위의 이미지와 같은 토글 버튼이 하나 있는데요...

[ETC.] NAVER Cloud SUMMIT 2022 온라인 컨퍼런스 안내 [내부링크]

바야흐로 클라우드 시대 빅데이터 시대를 맞아 데이터의 양이 방대해지고 "데이터를 어떻게 하면 효율적으로 관리할 수 있을까?"라는 문제가 화두로 떠올랐습니다. 하지만 역시나 문제는 비용입니다. 효율적인 데이터의 관리를 위해서는 데이터센터를 구축해야 하고 운영해야 하는 등 많은 인력과, 시간, 자원들이 소모됩니다. 이럴 때 고려해볼 수 있는 사항이 바로 클라우드 컴퓨팅 서비스입니다. 기업 입장에서 클라우드를 이용하면 많은 장점들이 있습니다. 우선 데이터센터를 짓지 않아도 되기에 많은 비용이 절감되고 신속하게 서비스를 구축할 수 있으며 서비스를 이용한 만큼만 비용이 지불되기에 예산을 특정할 수 있기에 경제적입니다. 그리고 트래픽이 급증하면 서버를 늘려야 하지만 클라우드를 사용하면 이에 맞춰 필요한 만큼 확장하..

[DB] 데이터베이스 정규화(Normalization)에 대하여 [내부링크]

정규화란? 데이터베이스 정규화는 관계형 데이터베이스 데이터 모델의 중복을 최소화하고 데이터의 일관성, 유연성을 확보하기 위한 목적으로 데이터를 분해하는 과정을 뜻합니다. 일반적으로 크고 제대로 조직되지 않은 테이블들을 잘 조직된 여러 개의 테이블을 나누는 과정이라고 생각하시면 이해가 쉬울 듯합니다. 이렇게 정규화를 하는 목적은 데이터들을 조금 더 효율적으로 관리하는 것에 그 목적이 있습니다. 불필요하거나 중복되는 데이터(data redundancy)들을 제거한다. 이상현상(Anomly)을 방지한다. 데이터 저장을 "논리적으로" 한다. 데이터를 효율적으로 관리하기 위해서는 위의 3가지를 고려하여 데이터모델을 재설계해야 합니다. 이렇게 정규화를 수행하면 비즈니스 로직에 변화가 생기더라도 데이터 모델의 변경을..

[DB] 데이터베이스 속성(Attribute)이란 무엇인가? [내부링크]

속성(Attribute)이란? 국어사전에서 속성이라는 단어를 찾아보면 "사물의 특징이나 성질"이라는 뜻을 이라고 명시하고 있습니다. 이것을 데이터 모델링에서 적용한다면 엔터티가 가지고 있는 특징이나 성질이라고 할 수 있겠습니다. 데이터 모델링에서의 속성은 엔터티의 정보를 나타내고 더 이상 분리되지 않는 최소의 단위로써 엔티티의 성질, 분류, 수량, 상태, 특성 등을 나타내는 세부 항목으로 업무에 필요한 데이터를 저장할 수 있습니다. ※ 속성(Attribute)는 왜 분리되지 않는 단위인가? 속성은 하나의 값만 가져야 하기 때문입니다. 그래야 해당 속성에 저장되는 데이터가 의미가 있습니다. 그렇기에 멀티 파트가 되는 속성들은 쪼개서 하나의 의미만 가질 수 있도록 만들어야 합니다. 속성(Attribute)를..

[DB] 데이터베이스 엔터티(Entity)란 무엇인가? [내부링크]

엔터티(Entity)란? 엔터티(Entity)를 그대로 번역하면 실제, 독립체라는 뜻으로 데이터 모델링에서 사용되는 객체라고 생각하시면 되겠습니다. 즉 엔터티(Entity)는 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 "어떤 것(Thing)"이라고 말할 수 있습니다. "어떤 것"이라고 부르는 것처럼 엔터티는 추상적인 의미를 가지며 학교나 학생처럼 현실 세계에서 눈에 보이는 개념일 수도 있고 주문이나 결제처럼 눈에 보이지 않는 개념일 수도 있습니다. 엔터티(Entity) : 엔터티는 데이터베이스 테이블이라고 생각하시면 이해가 편합니다. 인스턴스(Instance) : 인스턴스는 데이터베이스에 저장된 데이터 내용의 전체 집합을 의미합니다. 속성(Attribute) : 속성은 인스턴스의 구성요소로써 ..

[DB] 데이터 모델링이란 무엇인가? [내부링크]

데이터 모델링이란? 데이터 모델링(data modeling)은 복잡한 현실세계의 데이터를 단순화시켜 데이터베이스로 표현하기 위한 작업이라고 생각하시면 되겠습니다. 어떠한 시스템을 만들게 될 때, 프로젝트 초기단계에서 데이터베이스를 구축하고자 진행하는 작업으로 예를 들자면 직원들을 관리하는 사내 ERP 시스템을 구축한다고 하면 사내에서 직원을 관리하는 업무 프로세스를 완벽히 이해를 하고 사원의 정보(이름, 나이, 주소 등)를 어떤 테이블에 어떠한 컬럼을 생성하여 관리할 것인지를 모델링합니다. 여기서 보관해야 할 데이터들은 추상화하여 복잡하지 않게 규칙을 정하고 그것을 문서화해 나가야 합니다. 데이터 모델링 특징 추상화 : 현실세계를 일정한 형식에 맞춰 간략하게 표현해야 합니다. 단순화 : 누구나 쉽게 이해..

[Java] 추상클래스와 인터페이스의 공통점과 차이점 [내부링크]

이전 포스팅에서 추상 클래스와 인터페이스에 대한 내용을 정리해보았습니다. 추상 클래스와 인터페이스는 사실 용도가 완전히 다른 친구들인데 처음 공부하는 분들이라면 추상 클래스와 인터페이스가 대체 뭐가 다른지 헷갈릴 수 있다고 생각합니다. 그래서 이번 포스팅에서는 추상 클래스와 인터페이스가 어떤 점이 다른지에 대해 한번 써보려고 합니다. [Java] 자바 추상 클래스(Abstract Class) 사용법 & 예제 [Java] 자바 인터페이스(Interface) 사용법 & 예제 추상 클래스와 인터페이스의 공통점 둘 다 자기 자신이 new를 통해 객체를 생성할 수 없고, 오로지 자식만이 객체를 생성할 수 있습니다. 둘 다 추상 메서드(abstract method)를 갖습니다. 둘 다 하위 클래스에서 추상 클래스를..

[Java] 자바 인터페이스(Interface) 사용법 & 예제 [내부링크]

인터페이스(Interface)란? 자바에서 인터페이스는 클래스들이 필수로 구현해야 하는 추상 자료형입니다. 쉽게 말하자면 객체의 사용방법을 가이드라인 하는 것이라고 생각하시면 이해가 쉽습니다. 자바의 인터페이스는 추상 메서드와 상수로만 이루어져 있습니다. 구현된 코드가 없기 때문에 당연히 인터페이스로 인스턴스도 사용할 수 없습니다. 인터페이스 특징 다중 상속 가능 -> 인터페이스는 껍데기만 존재하여 클래스 상속 시 발생했던 모호함이 없습니다. 고로 다중 상속이 가능합니다. 추상 메서드와 상수만 사용 가능 -> 인터페이스에는 구현 소스를 생성할 수 없습니다. 고로 상수와 추상 메서드만 가질 수 있습니다. 생성자 사용 불가 -> 인터페이스 객체가 아니므로 생성자를 사용하실 수 없습니다. 메서드 오버라이딩 필..

[Java] 자바 추상 클래스(Abstract Class) 사용법 & 예제 [내부링크]

추상 클래스(Abstract Class)란? 추상(abstract)이란 무엇일까요? 추상의 사전적 의미는 사물이나 표상(表象)을 어떤 성질·공통성·본질에 착안하여 그것을 추출(抽出)하여 파악하는 것이라고 합니다. 프로그래밍적으로 본다면 객체 간의 공통적 특성을 추출한 클래스라고 생각하시면 되겠습니다. 예를 들자면 강아지, 고양이, 염소라는 객체가 있다고 해봅시다. 이 3가지 객체의 공통점은 동물이라는 공통점이 있습니다. 여기서 동물은 구체적인 실체라기보다는 "수명", "짖기"와 같은 필드와 메서드를 가지고 있는 모든 동물 객체들의 공통되는 특성을 갖고 있는 추상적인 클래스입니다. 추상 클래스는 추상 메서드를 무조건 하나 이상 가져야 할까요? NOPE!! 추상 클래스는 추상 메소드를 가지지 않아..

[Java] 자바 클래스(Class)의 상속(Extends) 사용법 & 예제 [내부링크]

객체지향 프로그래밍에서는 부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있습니다. 이렇게 상속하는 과정을 통해 잘 개발된 클래스를 재 사용하여 중복되는 코드를 최대한 줄여주며 부모의 클래스의 수정으로 모든 자식 클래스를 수정할 수 있는 효과를 볼 수 있기 때문에 유지보수를 하는데도 있어 강점이 있습니다. 자바의 상속 방식 클래스 간의 상속은 여러 개의 부모의 정보를 상속하는 다중 상속 방식을 제외하고는 모두 허용하고 있습니다. 주로 다단계 상속, 계층적 상속 두 가지 방식을 띄게 되는데 부모 클래스를 통해 자식, 손자까지 내려가는 방식을 다단계 상속이라고 하며 하나의 부모가 여러 개의 자식을 가지는 것을 계층적 상속이라고 합니다. 자바에서 다중상속이 안 되는 이유 예를 들어 만약, 상속받은 여러 개의 ..

[Java] 자바 클래스(Class) 사용법(선언, 생성, 사용) & 예제 [내부링크]

자바 프로그래밍을 OOP(객체 지향 프로그래밍)이라고도 합니다. 현실 세계에서도 특정 제품을 만들 때 여러 가지 부품들을 각각 만들어 하나로 조립해서 제품을 생산하듯이 프로그래밍적으로도 여러 가지 객체(Object)를 각각 만들어서 하나로 조립하는 프로그래밍 기법을 객체 지향 프로그래밍이라고 합니다. 자바에서 객체는 클래스를 통해 생성하실 수 있습니다. 클래스 구조 클래스의 구성 맴버 설명 필드(Field) 객체의 데이터가 저장되는 곳 생성자(Constructor) new 연산자로 호출되는 메소드로 객체 생성 시 필드의 초기화를 담당 메소드(Method) 객체의 동작에 해당하며 클래스의 다양한 동작을 구성 클래스 내부에는 클래스의 속성을 나타내는 필드와 클래스의 동작을 나타내는 메소드 그리고 클래스를 생..

[Java] 자바 기본 입력문 Scanner 클래스 사용법 & 예제 총정리 [내부링크]

자바를 처음 배울 때 콘솔에서 키보드 입력값을 받을 때 가장 많이 사용하는 클래스가 Scanner 클래스입니다. Scanner 클래스를 사용하는 방법이 자바에서 입력값을 받는 방법 중에 가장 간편하기 때문입니다. 가장 간편하기는 하지만 C언어나 파이썬과 같이 다른 프로그래밍 언어에서 사용하는 것보다는 그래도 절차가 까다롭습니다. 이번 포스팅에서는 자바의 Scanner 클래스의 사용법에 대해 알아보도록 하겠습니다. Scanner 클래스의 특징 java.util 패키지에 포함되어 있어 java.util을 import를 해줘야 사용할 수 있다. 기본적인 데이터 타입을 모두 입력받을 수 있다. 토큰(공백, 개행, 탭)을 기준으로 데이터를 입력받는다. Scanner 클래스 사용법 Scanner 사용 순서 impo..

[Java] 자바의 변수 종류, 크기, 범위 총정리 [내부링크]

컴퓨터에는 메모리(RAM)가 있고 이 메모리에는 값을 저장할 수 있는 공간이 있습니다. 이 메모리 공간은 번지(주소)로 그 위치를 가리키게 되는데요. 변수란 "메모리의 특정번지에 이름을 붙인다" 라고 생각하시면 됩니다. 변수를 선언하면 메모리의 어디에 저장하고 어떤 방식으로 저장할지는 프로그래밍 언어와 운영체제가 정합니다. 자바의 경우에는 JVM이 결정합니다. 변수(Variable) : 값을 저장할 수 있는 공간 자바 변수 총 정리 정수타입 타입 메모리 사용 크기 값의 범위 byte 1byte 8bit -128 ~ 127 short 2byte 16bit -32,768 ~ 32,767 char 2byte 16bit 0 ~ 65535(유니코드) int 4byte 32bit -2,147,483,648 ~ 2,..

[내돈내산] 갤럭시 워치 스트랩 추천 (신지모루 실리콘 밴드 스트랩) [내부링크]

이번 포스팅에서는 얼마 전 구입 한 갤럭시 워치 스트랩에 대해서 리뷰를 해볼까 합니다. 기존에 저는 기본 워치 스트랩을 약 1년가량 사용하고 있었는데 저렴한 가격에 새로운 스트랩을 갈아 끼워서 사용하니 마치 새것을 산 듯하네요. 제가 구입한 갤럭시 워치 스트랩은 신지모루 실리콘 밴드 스트랩으로 갤럭시 워치 5와 4 모두 호환이 가능한 제품입니다. 실리콘 특유의 쫀득한 느낌과 워치 기본 스트랩과는 다르게 끝 부분이 라운딩 처리가 되어 있어 조금 더 부드러워 보이는 것이 특징입니다. ※ 갤럭시 워치 신지모루 실리콘 밴드 스트랩은 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 신지모루 실리콘 밴드 스트랩 색상 신지모루 실리콘 밴드의 색상은 위와 같습니다. 차례로 다크 그린, 네이비, 라벤더, 라이트 그레..

[내돈내산] 필립스 소닉케어 다이아몬드클린 9000 사용 후기(전동칫솔 추천) [내부링크]

저는 치아가 안 좋은 유전력을 가지고 있어 평소 치아건강에 관심이 많은데 유튜브 등 다양한 채널에서 일반 칫솔로 양치질을 하는 것보다는 전동칫솔로 양치를 하는 것이 더 양치가 깔끔하게 된다는 사실을 듣고 전동칫솔을 구매해봤습니다. 분당 수만 번의 진동을 한다고 하는데 확실히 손으로 구석진 곳을 닦아내는 것보다는 그 위치에 가져다 대고 진동으로 플라그를 제거하는 것이 훨씬 양치가 깔끔하게 되는 것은 맞는 것 같습니다. 제가 구매한 전동칫솔은 필립스 소닉케어 다이아몬드클린 9000으로 필립스 전동칫솔 중 가장 성능이 좋은 상위 라인이고 앱을 통해 내 양치 상태를 체크할 수 있다는 장점이 있습니다. ※ 필립스 소닉케어 다이아몬드 클린 9000은 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 필립스 소닉케..

[Java] 자바 기본 입출력문 System 클래스 (System.out, in, err) 정리 [내부링크]

모든 프로그래밍 언어에는 시스템 표준 입력장치와 표준 출력장치가 있습니다. 일반적으로 표준 입력장치는 키보드를 의미하고, 표준 출력장치는 모니터 스크린을 말합니다. 자바에서는 java.lang.System이라는 표준 입출력을 제공하는 클래스가 있고 System의 멤버 변수인 in, out, error를 이용해서 표준 입력, 표준 출력, 표준 에러를 사용할 수 있습니다. 자료형 멤버 변수 설명 static PrintStream out 표준 출력 스트림 static InputStream in 표준 입력 스트림 static OutputStream err 표준 에러 스트림 System.out은 표준 출력, System.In은 표준 입력 스트림이며 System.err는 표준 에러 스트림으로 빨간색으로 오류 메시지..

[내돈내산] 필립스 SkinIQ 9000 사용 후기 (전기면도기 추천) [내부링크]

기존에 잘 사용하고 있던 전기면도기가 고장 난 뒤 쭉 날 면도기를 주로 사용하다가 턱을 크게 베여 다시 전기면도기를 구매했습니다. 최고급 기준으로 가격이 제법 나가는 친구라 정말 많이 알아보고 구매를 했는데요. 이번 포스팅에서는 제가 전기면도기를 선택하면서 고민했던 내용들과 어떤 제품을 선택했는지 정리하여 포스팅하려고 합니다. 전기면도기 3대장 1. 브라운 2. 필립스 3. 파나소닉 전자제품을 실패할 가능성을 줄이기 위해서는 사람들이 많이 사용하고 있는 제품을 사야 한다고 생각합니다. 알아보니 국내 전기면도기는 브라운, 필립스, 파나소닉 이렇게 3가지 브랜드가 과점하고 있었습니다. 어떤 브랜드를 선택할 것인가? 브랜드 / 비교 작동 방식 절삭력 안전성 디자인 브라운 전동식 2위 2위 2위 필립스 회전식 ..

[Windows] 윈도우 이모티콘 (이모지) 단축키, 사용법 총정리 [내부링크]

메신저에서 주로 사용하는 이모티콘도 윈도우에서도 사용이 가능합니다. 대표적인 것이 이모지라고 하는 기능이고 cc️c️c️ 이런 이모티콘을 입력할 수 있습니다. 이모지 외에도 표정, 기호 등을 입력할 수 있는 기능이 있는데 이번 포스팅에서 소개해보려 합니다. 자음 + 한자로 표현할 수 있는 특수기호 말고 이번 포스팅에서 소개하는 기능들로 글을 조금 더 에쁘게 꾸며보세요. 윈도우 이모티콘 사용법 이모지 단축키 : Windows Key + . (마침표) 를 입력해서 이모지창을 띄워주신 후 원하는 이모티콘을 클릭해주시면 됩니다. 윈도우에서 사용하는 모든 프로그램에서 사용이 가능합니다. 다만 메모장 등 색상을 지원하지 않는 프로그램의 경우 경우에 따라서 컬러가 표현이 되지 않을 수 ..

[Windows] 자음 + 한자 특수문자 리스트 총정리 [내부링크]

자판이 좁은 키보드는 가끔 한자키가 없어 자음 + 한자버튼을 조합하면 입력할 수 있는 특수기호를 입력하기가 난감할 경우가 종종 있습니다. 이런분들을 위해 자음 + 한자로 조합할 수 있는 특수기호를 정리하여 포스팅합니다. 필요한 특수기호를 복사해서 사용하시면 되겠습니다. 자음 + 한자 특수문자 리스트 입력 방법 특수기호 [ ㄱ ] + [ 한자 ] ! ' , . / : ; ? ^ _ ` |  ̄ 、 。 · ‥ … ¨ 〃 ― ∥ \ ∼ ´ ~ ˇ ˘ ˝ ˚ ˙ ¸ ˛ ¡ ¿ ː [ ㄲ ] + [ 한자 ] Æ Ð Ħ IJ Ŀ Ł Ø Œ Þ Ŧ Ŋ æ đ ð Ł Ø ij ĸ ŀ ł ø œ ß þ ŧ ŋ ʼn [ ㄴ ] + [ 한자 ] " ( ) [ ] { } ‘ ’ “ ” 〔 〕 〈 〉 《 》 「 」 『 』 【 】 [..

[Windows] 가상 키보드, 화상 키보드 사용법 (키보드 고장났을때 대처법) [내부링크]

그럴 일은 없어야 할 테지만 키보드에 커피와 같은 끈적이는 음료를 쏟아 키보드가 먹통이 되는 적이 가끔 있으실 겁니다. 이럴 때 여분의 키보드가 있으면 좋겠지만 그렇지 않다면 컴퓨터를 사용하기가 매우 불편하겠죠. 이럴 때 윈도우의 가상 키보드 기능을 사용하시면 불편하지만 키보드를 사용하실 수 있습니다. 윈도우 10에서 제공하는 소프트웨어 키보드는 가상 키보드(터치 키보드), 화상 키보드 이렇게 두 가지 종류가 있습니다. 화상 키보드 단축키 : Ctrl + Shift + O 가상 키보드(터치 키보드) 사용법 1. 작업표시줄 우클릭 -> 터치 키보드 단추 표시를 클릭합니다. 2. 작업표시줄 우측에 위와 같이 터치 키보드 아이콘이 생성되었을것입니다. 이것을 클릭하시면 됩니다. 3. 위와 같이 터치 키보드를 사..

[Windows] 윈도우10 작업표시줄에 시계가 사라졌을때 대처법 [내부링크]

작업표시줄에서 가장 유용하게 사용하는 아이콘은 단연 시계 일 것입니다. 하지만 정말 가끔 OS를 잘못 건드려서 이 시계 아이콘이 사라지는 경우가 발생할 수 있는데요. 이번 포스팅에서는 작업표시줄에 시계가 사라졌을 때 다시 생성하는 방법에 대해서 알아보도록 하겠습니다. 작업표시줄에 시계 아이콘 생성하기 1. [ Windows Key ] + [ I ] 버튼을 눌러 설정창에 들어간 뒤 개인 설정 버튼을 클릭합니다. 2. 좌측 탭에 작업 표시줄 버튼을 클릭한 뒤 알림 영역의 시스템 아이콘 켜기 또는 끄기를 클릭합니다. 3. 시스템 아이콘 켜기 또는 끄기에서 시계를 켬으로 바꾸어줍니다. 4. 작업표시줄에 시계가 다시 생성된 것을 확인하실 수 있습니다.

[Windows] 윈도우10 작업표시줄에 볼륨 아이콘이 사라졌을때 대처법 [내부링크]

윈도우를 사용하다 보면 가끔씩 작업표시줄에 볼륨키가 없어져 소리(음량) 설정이 어려워지는 경우가 있습니다. 이럴 때 작업 표시줄에 볼륨 아이콘을 다시 생성하는 방법에 대해서 알아봅니다. 볼륨 아이콘 없이 단축키로 조절하셔도 됩니다. 볼륨 Up : [ Fn Key ] + [ F12 ] 볼륨 Down : [ Fn Key ] + [ F11 ] 작업표시줄에 볼륨 아이콘 생성 방법 1. [ Windows Key ] + [ I ] 버튼을 눌러 설정창에 들어간 뒤 개인 설정 버튼을 클릭합니다. 2. 좌측 탭에 작업 표시줄 버튼을 클릭한 뒤 알림 영역의 시스템 아이콘 켜기 또는 끄기를 클릭합니다. 3. 시스템 아이콘 켜기 또는 끄기에서 볼륨 아이콘을 켬으로 바꾸어 주시면 됩니다. 4. 작업표시줄 우측 하단에 볼륨 아이..

[Windows] 갑자기 한영키(한글키)가 안먹힐때 대처법 총정리 [내부링크]

가끔 한영키가 작동을 안 해서 당황하신 적이 있으실 겁니다. 이럴 때 해결할 수 있는 방법들을 소개하고자 합니다. 저 또한 키보드의 한영키가 갑자기 인식이 안되서 전혀 먹히지 않았는데 아래 방법들을 통해서 고쳤습니다. 찾아보니 원인이 워낙 다양하여 정확한 이유는 모르겠지만 윈도우 소프트웨어적인 오류가 아닐까 의심이 되네요. ※ 아래 5가지는 성공확률은 낮지만 크게 번거롭지 않으므로 한 번씩 시도해보시기 바랍니다. Shift + Ctrl + Alt 키를 동시에 눌러본다. Shift + Tab 혹은 Tab + F6을 동시에 눌러본다. 메모장을 켜서 한글을 입력해본다. 다른 키보드가 있다면 연결하여 하드웨어적인 문제인지 확인한다. 컴퓨터를 재부팅해본다. 위의 방법대로 했음에도 해결이 안 된다면 아래의 포스팅대..

[Web] 국민은행 통장사본 온라인으로 출력 / 저장하기 [내부링크]

살다 보면 가끔 통장사본을 제출해야 할 일이 있는데 통장 실물을 잘 보관하고 있지 않는 경우가 많아 막상 통장 사본을 만들려고 하면 골치가 아플때가 있습니다. 이것을 위해 은행을 방문하자니 그것도 일이고요. 이럴 때 온라인으로 통장사본을 출력하거나 저장하는 등의 방법을 사용한다면 쉽게 문제를 해결하실 수 있습니다. 국민은행 통장사본 온라인으로 출력 / 저장하기 1. 아래 링크되어 있는 국민은행 홈페이지에 접속하여 로그인을 합니다. https://www.kbstar.com/ 2. 로그인을 한 후 상단 우측에 있는 돋보기 모양을 클릭합니다. 3. 검색창에서 통장사본을 검색하고 결과로 검색 된 텍스트를 클릭합니다. 4. 위 그림에서 표시 된 개인뱅킹 > 뱅킹 관리 > 제증명발급 > 통장사본을 클릭합니다. 5...

[Web] 컴퓨터 알람 울려주는 무료 사이트 추천 (온라인 알람 시계) [내부링크]

일반인들은 주로 핸드폰으로 아침 알람을 듣지만 핸드폰이 고장 났거나 분실하는 등의 피치 못할 사정으로 핸드폰 알람을 듣지 못하는 경우가 생길 수 있습니다. 이럴 때 알람 시계를 사는 것보다 기존에 사용하는 PC를 활용하여 알람을 세팅할 수도 있습니다. 온라인 알람 사이트에서 간단한 설정만으로 알람을 들으실 수 있어 알람 프로그램을 설치할 필요성이 없어 매우 편리합니다. 온라인 알람쿠르 (https://onlinealarmkur.com/ko/) 1. 알람이 울릴 시간을 설정합니다. 2. 알람 소리를 선택합니다. 3. 스누즈 길이(알람이 다시 울리는 간격)를 선택합니다. 4. 알람 설정 버튼을 클릭합니다. 알람 설정 버튼을 누르면 위와 같이 남은 시간이 표시되며 알람이 설정됩니다. ※ 안내문구에는 절전모드 ..

[Web] 핸드폰 수리 보상 청구 하는 방법 (SKT) [내부링크]

얼마 전 핸드폰을 떨어트리는 바람에 핸드폰이 고장 났습니다. 저는 갤럭시 폴드 3을 사용하고 있었는데 외부 디스플레이는 전혀 켜지지 않고 내부 디스플레이는 켜지기는 하나 계속 재부팅되는 현상이 발생하는 등 혼자서는 해결하기 힘든 고장으로 인해 삼성 서비스 센터를 찾아 수리를 진행하였습니다. 다행히 핸드폰은 깔끔하게 수리가 되었으나 비용이 16만 원이나 나왔습니다. 하지만 다행히도 저는 휴대폰 보험을 들고 있었기 때문에 보상청구를 할 수 있었습니다. 통신사별 휴대폰 보험 청구방법 통신사 청구 방법 SKT 1. 1599-4962 전화 2. 모바일 접수 1번 3. 휴대폰 번호 입력 4. T World 어플 실행 5. 본인인증 6. 사고 경위 작성 후 영수증, 견적서 사진 첨부 KT 1. 플레이스토어 -> 폰케..

[Web] 인터넷으로 전입신고 간편하게 하는 방법 [내부링크]

저처럼 9시 ~ 6시까지 일을 해야만 하는 직장인 신분으로써는 오프라인으로 전입신고를 하기 위해서 부득이하게 연차를 내야만 합니다. 하지만 온라인으로도 전입신고를 간편하게 할 수 있는 방법이 있습니다. 귀찮게 주민센터까지 찾아가서 대기표를 뽑고 기다리지 않아도 간단한 정보 기입만으로 전입 신고를 끝낼 수 있습니다. 이번 포스팅에서는 온라인으로 전입신고를 간편하게 하는 방법에 대해 알아보겠습니다. 인터넷으로 전입신고 간편하게 하는 방법 1. 아래 링크된 URL을 클릭하셔서 정부 24의 전입신고 페이지로 들어간 뒤 신고 버튼을 누릅니다. https://www.gov.kr/mw/AA020InfoCappView.do?CappBizCD=13100000016 2. 로그인이 되어 있지 않다면 위와 같이 회원, 비회원..

[Web] 인터넷으로 개인 사업자 등록 간편하게 하는 방법 [내부링크]

개인 사업자란? 개인 사업자란 개인이 사업의 주체가 되어 소득과 부채를 모두 가지는 사람으로서 회사를 설립하는데 상법상 별도의 절차가 필요하지 않아 그 설립 절차가 간편하고, 휴·폐업이 비교적 간단하며 부가가치세와 소득세 납세의무가 있는 사업자를 말하며, 법인사업자는 법인 설립등기를 함으로써 법인격을 취득한 법인뿐만 아니라 국세 기본법의 규정에 따라 법인으로 보는 법인격 없는 단체 등도 포함되며 부가가치세와 법인세 등 납세의무가 있는 사업자를 뜻합니다. 온라인 개인 사업자 신청 방법 1. 아래 링크되어 있는 국세청 홈택스로 들어간 뒤 상단 탭의 신청/제출 -> 사업자등록신청(개인)을 클릭합니다. https://www.hometax.go.kr/ 2. 로그인을 해줍니다. 공인인증서가 없으시다면 카카오 간편 ..

[내돈내산] 자취방 가성비 무선 청소기 추천 (차이슨 아이닉 i20 Elite) [내부링크]

최근 이사와 함께 자취방을 깨끗하게 유지하기 위한 청소기를 구매하였습니다. 기존에는 다이소에서 판매하는 롤 클리너와 물티슈 그리고 이마트에서 구매한 8만 원짜리 간편 무선 청소기로 청소를 하고 있었는데요. 기존에 사용하던 청소기의 연식도 오래되어 잔고장이 많고 청소 속도도 느려서 새로 구매할 제품을 물색하고 있던 차 후기가 좋은 차이슨 아이닉 i20 Elite라는 제품을 구매하게 되었습니다. ※ 차이슨 아이닉 i20 Elite는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 차이슨 아이닉 i20 Elite를 선택한 이유 허리가 아프지 않도록 충분한 길이를 갖추고 있는가? 흡입력이 좋은가? 가성비가 좋은가? 제품의 후기가 좋은가? 차이슨 아이닉 i20 Elite 사용 후기 저는 위의 4가지 옵션을 보..

[내돈내산] 애플 에어팟 3세대 구매 및 사용 후기 [내부링크]

최근에 아이폰으로 전환하여 여러 가지 애플 액세서리들을 사고 있습니다. 요즘 필수품이라고 하는 무선 이어폰도 하나 구매를 하였는데요. 2022년 현시점 애플 무선 이어폰을 구매할 수 있는 선택지는 3가지가 있습니다. 에어팟 2세대, 3세대, 그리고 에어팟 프로입니다. 아래 링크되어 있는 애플 스토어에 들어가 보시면 자세한 사항을 확인하실 수 있습니다. https://www.apple.com/kr/ 위의 이미지는 애플 공식 스토어에서 캡처 한 이미지입니다. 보시는 바와 같이 에어팟 2세대와 3세대 그리고 에어팟 프로로 올라갈수록 약 8만 원 정도의 가격 차이가 발생합니다. 이 3가지 제품 중에서 저는 에어팟 3세대를 구매하였습니다. 2세대 보다는 좋은 제품을 구매하고 싶었고 에어팟 프로는 커널형 구조여서 ..

[내돈내산] 애플워치 SE 40mm 구매 및 사용 후기 [내부링크]

아이폰으로 최근 전환하여 애플의 부속 제품들을 사고 있습니다. 그중 첫 번째로 포스팅할 제품은 애플 워치입니다. 2022년 현시점 애플 워치에는 3가지 선택 옵션이 있습니다. 애플 워치 7, 애플 워치 SE, 애플 워치 3가 그 대상입니다. 아래 링크되어 있는 애플 스토어에 들어가 보시면 자세한 사항을 확인하실 수 있습니다. https://www.apple.com/kr/ 보시는 바와 같이 애플 워치 7, 애플 워치 SE, 애플 워치 3의 가격차이가 10만 원씩 차이가 나고 있습니다. 가장 높은 등급의 애플 워치 7은 거의 50만 원에 육박하는 금액이네요. 결론적으로 말씀드리자면 제가 선택한 시계는 애플 워치 SE입니다. 이전에도 스마트 워치를 계속 사용하고 있었지만 제가 사용하는 기능들은 시간과, 날씨를..

[Web] 구글 Chrome SameSite 이슈에 대하여 (크롬 80) [내부링크]

2020.2.4 구글 크롬(Google Chrome) 80버전으로 업데이트되면서 크롬에 새로운 쿠키 정책이 적용되었다. 내용은 Cookie의 SameSite 속성의 기본 값이 "None"에서 "Lax"로 보안등급을 상향 조절하는 것이다. 구글 Chrome SameSite 이슈에 대하여 SameSite 속성의 기본 값이 "None"에서 "Lax"로 변경되면 각종 문제가 일어날 수 있습니다. 사용자가 사이트를 이용하다가 갑자기 쿠키가 날아가는 경우가 생길 수 있다는 점입니다. 대표적인 예가 로그인 정보입니다. 많은 웹사이트들이 로그인을 한 후 Cookies를 사용해 유저의 신원을 확인하여 페이지를 전환해도 재인증을 하지 않아도 되도록 하고 있습니다. 하지만 SameSite 이슈로 인해 이 쿠키값을 찾지 못한..

[블로그] 와디즈 펀딩을 시작합니다 - 블로그로 제 2의 월급 만들기! 최소한의 스트레스로 운영하는 법 [내부링크]

안녕하세요 코딩팩토리입니다. 와디즈에서 티스토리를 주제로 펀딩을 오픈하게 되어 홍보차 이 글을 작성합니다. 리워드는 전자책과 강의 두 가지 카테고리로 구성되어 있습니다. 강의는 너무 많은 사람들이 몰리면 부담스럽지만 이왕이면 책은 많이 팔렸으면 좋겠습니다. 전자책만큼은 정말 정성껏 만들었습니다. 작년 6월부터 매일 퇴근 후 저녁, 그리고 주말 집 앞에 있는 카페를 매일 드나들며 책의 퀄리티를 높이기 위해 노력하였습니다. 책을 작성하며 남들은 어떻게 전자책을 작성했는지 궁금하여 크몽에서 팔리고 있는 전자책도 몇 권 사보았으나 후기가 좋은 책들도 제가 보기에는 제 책의 퀄리티가 훨씬 높다고 생각하고 더 나아가 제가 만든 이 책이 지금까지 시중에 풀려있는 그 어떤 전자책보다도 정보의 질과 양 모두 최고라고 확..

[Oracle] 로컬 인덱스와 글로벌 인덱스에 대하여 (파티션 테이블 인덱스) [내부링크]

파티션 테이블에는 일반적인 테이블에서 사용하는 인덱스로는 사용이 힘듭니다. 파티션 테이블의 특성상 새로운 세그먼트를 계속해서 생성하여 테이블을 계속 나뉘어야 하지만 인덱스는 나눌 수가 없기 때문입니다. 그렇다면 파티션 테이블에는 인덱스를 어떻게 걸어야 할까요? 파티션 테이블에는 다른 방식으로 인덱스를 걸어주어야 합니다. 오라클에는 파티션 테이블에 인덱스를 거는 두 가지 방식이 있습니다. 바로 로컬 인덱스와 글로벌 인덱스입니다. 로컬 인덱스와 글로벌 인덱스 한 파티션에서 조회하는 액세스 패스는 Local 인덱스를 사용하도록 함 운용측면에서 Global Index보다는 Local Index 사용이 권장 Table Partition Key를 Index로 설정할 경우 Local Prefixed Index를 사용..

[DB] 파티션 테이블(Partition Table)이란 무엇인가? [내부링크]

파티션 테이블이란? 데이터베이스 테이블의 데이터들이 너무 많아서 어떤 데이터를 조회하려고 할 때 시간이 너무 많이 소요된다면 어떻게 해야 할까요? 이것을 개선할 수 있는 많은 방법이 있겠지만 파티션 테이블로 만드는 방법도 좋은 방법이 될 수 있습니다. 파티션 테이블은 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 파티션으로 나뉘어 데이터들이 각각의 세그먼트에 저장되는 테이블이라고 생각하시면 됩니다. 파티션 테이블에는 Pruning이라는 기능이 있어서 특정 데이터를 조회를 할 때 그 데이터가 속해있는 세그먼트만 빠르게 조회할 수 있는 기능이 있습니다. 이 뿐만이 아니라 파티션 테이블은 논리적으로는 하나의 테이블이기 때문에 조회 쿼리문을 특별하게 지정해 줄 필요는 없지만 데이터들이 물리적으로 다른 ..

[Java] 많은 기업들이 자바를 사용하는 이유 [내부링크]

이번 포스팅에서는 제가 생각하는 자바의 장점과 자바를 왜 배워야 하는지에 대해서 말해보려 합니다. 저의 시각에서 작성된 글이니 가볍게 읽어주시면 감사하겠습니다. 국내 프로그래밍 언어의 점유율 부동의 1등을 지키고 있는 것은 Java입니다. 그렇다면 왜 이렇게 국내에서는 Java의 점유율이 높을까요? 자바는 어떻게 대세가 되었나 자바는 썬 마이크로시스템즈 1995년 5월 23일 발표된 프로그래밍 언어입니다. 지금은 자바와 비슷한 개념을 가지고 있는 언어들이 많지만 최소한 1995년 출시될 그 시절 자바는 획기적인 언어임에는 분명합니다. 자바가 처음에 출시될 때 걸었던 슬로건은 "한 번 프로그래밍한 것은 어떤 플랫폼에서도 실행된다."입니다. 저는 솔직히 이것이 큰 장점이라고는 생각이 들지 않으나 C/C++ ..

[Java] 자바(JDK) 환경변수 설정방법 (for Windows) [내부링크]

자바(Java) 환경변수 설정 이유 환경 변수란 윈도우 운영체제에서 사용하는 설정 정보가 담겨있는 변수입니다. 윈도우에서 명령 프롬프트 (cmd)로 파일을 찾거나 실행을 시킬 때 현재 위치에 파일이 존재하지 않으면 위와 같이 "내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다." 라는 에러가 발생하며 실행하려는 파일이 존재하는 위치로 이동해야만 합니다. 하지만 자바 실행파일의 경로가 환경변수 path에 제대로 세팅되어 있다면 어느 곳에서 나 jdk의 bin에 있는 프로그램들을 실행시킬 수 있습니다. 즉 자바를 설치한 후 환경변수를 설정해줘야 하는 이유는 운영체제 어디에서든지 자바를 인식할 수 있도록 하는 것이 목적입니다. 특히 jdk bin폴더에 있는 javac 컴파일러의 경우..

[Java] javac 명령어를 활용하여 자바(.java) 파일 컴파일하기 [내부링크]

자바에서 컴파일이라고 생각하시면 이클립스와 같은 IDE를 활용하여 컴파일하는 것만 있는 것은 아니고 jdk의 javac 컴파일러를 활용하여 cmd 창으로 직접 컴파일을 진행하실 수도 있습니다. 이번 포스팅에서는 cmd 명령 프롬프트를 활용하여 jdk에 내장되어있는 javac 컴파일러를 통해 컴파일을 하는 방법에 대해 포스팅해보도록 하겠습니다. javac 명령어를 활용하여 자바(.java) 파일 컴파일하기 1. 메모장등을 활용하여 컴파일하고자 하는 자바(. java) 파일을 생성합니다. 저는 메모장으로 위와 같이 하나 만들어봤습니다. 2. cmd 명령 프롬프트창을 켠 후 cd [자바 파일이 있는 위치]로 이동합니다. 3. javac 파일명.java 명령어를 입력하여 컴파일합니다. ※ 만약 이 과정에서 ja..

[Java] 자바 클래스(.class)파일 컴파일 버전 확인하기 [내부링크]

자바를 빌드하게 되면 클래스(class) 파일이 생성됩니다. 이 클래스 파일은 같은 Java 소스여도 JDK 버전에 따라 다르게 작성될 수 있는데요. 만약 실행하는 JVM이 지원하지 못하는 java class version을 로드하려고 할 경우 java.lang.UnsupportedClassVersionError 에러가 발생할 수 있습니다. 이처럼 빌드된 클래스 파일의 버전과 실행할 JVM의 버전이 다르면 에러가 날 수 있기 때문에 서로 맞춰주시는 것이 좋습니다. jdk의 bin폴더 안에 있는 javap를 사용하시면 버전을 확인하실 수 있습니다. 클래스 파일 버전 확인하는 방법 1. 버전을 확인하고 싶은 class 파일이 있는 경로를 복사합니다. 2. cmd(명령 프롬프트) 창을 연 뒤 cd 명령어를 사..

[Web] 자바 클래스(.class)파일 디컴파일 사이트(javadecompilers.com) [내부링크]

자바로 작성되어있는 .java 파일은 javac 컴파일러로 빌드하면 바이트코드인 .class 클래스 파일이 생성됩니다. 이 과정을 통해 생성되는 클래스 파일은 JVM에서만 해석할 수 있는 코드들로 작성되어 있어 해석을 하기 위해서는 .class 클래스 파일을 .java 자바 파일로 바꿔주는 디컴파일 과정이 필요합니다. 이번 포스팅에서는 자바 클래스 파일을 자바 파일로 디컴파일을 해주는 사이트를 소개하고자 합니다. 자바 클래스(.class)파일 디컴파일 사이트(javadecompilers) http://www.javadecompilers.com/ Java decompiler online www.javadecompilers.com 1. 위에 링크되어있는 Java decompiler 사이트에 접속합니다. 2...

[IDE] 이클립스(Eclipse) Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor 에러 해결 [내부링크]

이클립스에서 자바 설정이 제대로 되지 않으면 위와 같이 Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor 에러가 날 수 있습니다. 이클립스에서 JRE System Library가 제대로 인식되지 않아 생기는 오류입니다. Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor 오류 해결방법 1. 문제가 되는 프로젝트를 우클릭한 뒤 Build Path -> Configure Build Path... 을 클릭합니다. 2. 좌측..

[IDE] 이클립스(Eclipse) 단축키 총정리 [내부링크]

이클립스 자주 사용하는 단축키 주석 Ctrl + Shift + / : 블록을 주석으로 처리 (/* */) Ctrl + Shift + \ : 블록 주석을 해제 Ctrl + / : 한줄 or 블록 주석 처리 / 해제 (//) 검색 Ctrl + F : 키워드 검색 (해당 소스에서만) Ctrl + H : 키워드 검색 (프로젝트 전체에서) Ctrl + Shift + R : 전체 리소스에서 파일 찾기 Ctrl + Shift + T : Jar 포함 클래스 찾기 Ctrl + Alt + H : 특정 클래스 호출 위치 찾기 Ctrl + K : 찾을 문자열을 블럭으로 지정하고 검색 Ctrl + Shift + K : 밑에서 문자열 검색 위치 이동 Ctrl + 특정 클래스 마우스 왼쪽 클릭(F3) : 특정 클래스로 이동 Ctr..

[IDE] 이클립스(Eclipse) 디컴파일러(Decompile) 설치 및 사용법 [내부링크]

이클립스로 개발을 하다 보면 디컴파일러 세팅이 안되어있어 라이브러리의 jar파일안에 .class파일들의 내용을 확인해야 할 경우가 종종 있는데 .class파일들이 바이너리화 되어있어 위와 같이 "Source not found"라는 메시지와 함께 안의 내용을 확인하지 못하는 경우들이 있습니다. 이때 이클립스에 디컴파일러를 설치하여 .class 파일을 .java 파일로 역컴파일 하여 내용을 확인할 수 있습니다. 이번 포스팅에서는 이클립스에서 디컴파일러를 수동 설치하는 방법에 대해 알아보도록 하겠습니다. 이클립스(Eclipse) 디컴파일러(Decompile) 설치 및 사용법 1. Eclipse에서 상단바의 Help -> Eclipse Marketplace를 클릭합니다. 2. Decompiler 키워드로 검색하..

[Java] 자바(.jar, .class 파일) 디 컴파일 하는법 [내부링크]

자바로 작성되어있는 .java 파일을 컴파일하게 되면 바이트코드인 .class 클래스 파일이 생성됩니다. 이렇게 생성된 class 파일을 열면 JVM에서만 해석할 수 있는 알 수 없는 코드들로 작성되어 있어 개발자 입장에서는 알아볼 수가 없는데요. 그렇기 때문에 class 파일의 내용을 확인하기 위해서는 class 파일을 다시 java 파일로 바꿔주는 디컴파일 과정이 필요합니다. 자바 디컴파일러 JD-GUI 다운로드 & 사용법 JD-GUI는 현재 가장 널리 사용되는 자바 디컴파일러로 가벼우면서도 강력한 기능을 가지고 있습니다. 배포파일의 class 파일 확인이나, 라이브러리 jar파일 안에 있는 파일들의 코드를 확인하고 싶을 때 유용하게 사용됩니다. 1. 아래 링크된 사이트에 들어간 뒤 JD-GUI의 D..

[Java] 메모리 구조 메소드(Method), 스택(Stack), 힙(Heap) 영역에 대하여 [내부링크]

자바뿐만이 아니라 모든 프로그램이 구동되기 위해서는 프로그램 구동시에 운영체제로부터 메모리(RAM) 공간을 할당받아야 합니다. 이러한 메모리는 무제한이 아니라 한정되어 있습니다. 그렇기에 한정된 메모리를 최대한 효율적으로 사용하는 프로그램을 작성해야 하고 프로그램을 잘못 작성하게되면 프로그램이 매우 느려진다던지, 프로그램이 갑자기 꺼지는등의 각종 문제가 발생할 수 있습니다. 자바로 만들어진 프로그램은 JVM을 통해 실행되고 이 JVM은 프로그램을 동작할 때 OS로부터 메모리를 할당합니다. JVM에 대해서 좀 더 자세히 알고 싶다면 아래 글을 참고해주세요. [Java] 자바 가상머신 JVM(Java Virtual Machine) 총정리 [Java] 자바 JVM 내부 구조와 메모리 구조에 대하여 자바 메모리..

[Java] 가비지 컬렉션(GC, Garbage Collection) 총정리 [내부링크]

가비지 컬렉션(Garbage Collection)이란? 가비지 컬렉션은 영어로 Garbeage Collection으로 줄여서 GC라고도 부릅니다. 가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말합니다. C나 C++에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 하는 반면 Java는 JVM에 탑재되어 있는 가비지 컬렉터가 메모리 관리를 대행해주기 때문에 개발자 입장에서 메모리 관리, 메모리 누수(Memory Leak) 문제에서 대해 완벽하게 관리하지 않아도 되어 오롯이 개발에만 집중할 수 있다는 장점이 있습니다. 가비지 컬렉션의 단점 ..

[Java] 자바 JVM 내부 구조와 메모리 구조에 대하여 [내부링크]

저번 포스팅에서는 JVM에 대해서 간략하게 알아보는 시간을 가졌다면 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 하겠습니다. 혹시 JVM의 정의와 왜 필요한지 궁금하시다면 아래의 글을 참고하여주세요. [Java] 자바 가상 머신 JVM(Java Virtual Machine) 총정리 [Java] 자바 가상머신 JVM(Java Virtual Machine) 총정리 JVM(Java Virtual Machine)이란? 자바 가상 머신 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어입니다. 자바 코드를 컴파일하여 .class 바이트 코드로 만들면 이 코드가 자바 coding-factory.tistory.com 자바 가상 머신(JVM)의 동..

[Java] 자바 가상머신 JVM(Java Virtual Machine) 총정리 [내부링크]

JVM(Java Virtual Machine)이란? 자바 가상 머신 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어입니다. 자바 코드를 컴파일하여 .class 바이트 코드로 만들면 이 코드가 자바 가상 머신 환경에서 실행됩니다. JVM은 자바 실행 환경 JRE(Java Runtime Environment)에 포함되어 있습니다. 현재 사용하는 컴퓨터의 운영체제에 맞는 자바 실행환경 (JRE)가 설치되어 있다면 자바 가상 머신이 설치되어 있다는 뜻입니다. Java는 어떠한 플랫폼에 영향을 받지 않는다. JVM을 사용함으로써 얻는 가장 큰 이점이 무엇일까요? JVM을 사용하면 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작하도록 할 수 있습니다. .cl..

[Java] 자바 JDK, JRE의 차이점(JDK란? JRE란?) [내부링크]

자바를 처음 설치하면 Java 폴더에 아래와 같이 JDK와 JRE 가 각각 설치되는 것을 보실 수 있습니다. 그렇다면 이 JDK와 JRE의 역할은 무엇일까요? 이번 포스팅에서는 JDK, JRE 용어에 대해 정리해보도록 하겠습니다. JRE, JDK 용어정리 JRE(Java Runtime Environment)란? JRE는 자바 실행 환경(Java Runtime Environment)의 약자로 자바로 만들어진 프로그램을 실행시키는데 필요한 라이브러리들과 각종 API, 그리고 자바 가상 머신 (JVM)이 포함되어 있습니다. JRE는 자바로 "개발(쓰기)은 안되고 실행(읽기)만 된다"라고 생각해주시면 될 것 같습니다. JDK(Java Development Kit)란? JDK는 자바 개발키트(Java Develo..

[Java] 자바 업데이트 알림 끄기(제거) 하는 방법 [내부링크]

Java는 항상 최신의 상태를 유지하고 있는 것이 좋지만 일단 자바가 설치되어 프로그램이 정상적으로 구동만 되면 상관없다고 생각하는 경우가 많기 때문에 대부분 업데이트를 신경 쓰지 않는 경우들이 많습니다. 오히려 매번 자바의 업데이트가 생길 때마다 아래의 사진처럼 "Java Update 사용 가능 새 버전의 Java를 설치할 준비가 되었습니다. 계속하려면 여기를 누르십시오." 라는 알림이 뜨는 것이 귀찮다고 생각하는 경우가 많죠. 이럴 때는 자바의 자동 업데이트 확인 기능을 꺼서 알림이 안 오도록 해줄 수 있습니다. 아래에서 소개드리는 2가지 방법 중 하나를 선택해서 진행하시면 됩니다. 자바 자동 업데이트 사용 하지 않기 1. 윈도우 작업표시줄의 검색창에서 제어판을 검색한 뒤 실행시킵니다. 2. 제어판에..

[Java] 자바 최신 버전 수동 업데이트 방법 [내부링크]

자바로 개발되어있는 프로그램을 실행시키기 위해서는 컴퓨터에 자바가 설치되어 있어야 합니다. 하지만 가끔 구버전의 자바를 사용하고 있어 프로그램들이 정상적으로 실행되지 않는 경우들이 있습니다. 이럴때는 자바를 수동으로 업데이트 시켜주어야 합니다. 이번 포스팅에서는 자바를 최신 버전으로 수동 업데이트 하는 방법에 대해 알아보도록 하겠습니다. 자바 최신 버전 수동 업데이트 방법 1. 작업표시줄 검색창에서 제어판을 검색한 후 제어판으로 들어갑니다. 2. 제어판에서 프로그램 아이콘을 클릭합니다. 3. Java 아이콘을 클릭하여 Java 제어판으로 들어갑니다. 4. Java 제어판의 상단 업데이트 탭을 누른 뒤 지금 업데이트 버튼을 누릅니다. 5. 설치버튼을 눌러 Java 업데이트를 시작합니다. 6. 자바 최신버전..

[Java] 자바 버전 변경하는 방법 ( JDK 8 -> JDK 17) [내부링크]

자바 언어로 개발하는 프로젝트에서 협업을 해야 할 상황이 있다면 개발자들끼리 JDK 버전을 맞춰주셔야 합니다. JDK 버전이 다르면 컴파일의 최적화 과정에서 서로 .class파일이 다르게 생성될 수 있고 이로 인해 같은 소스코드로 작성된 프로그램이라도 다르게 동작할 수 있기 때문입니다. ※ 자신이 사용하고 있는 Java 버전을 확인하고 싶다면 아래 글을 참고해주세요. [Java] 자바(JDK) 버전 확인 방법 (cmd 명령어) [Java] 자바(JDK) 버전 확인 방법 (cmd 명령어) 자바(Java) 언어로 하나의 프로젝트를 다수의 인원이 협업을 해야하는 상황이라면 Java jdk 버전을 맞춰주시는 것이 좋습니다. 개발자마다 jdk버전이 다르면 컴파일 과정에서 .class파일을 다르게 생 coding-..

[Java] 자바(JDK) 버전 확인 방법 (cmd 명령어) [내부링크]

자바(Java) 언어로 하나의 프로젝트를 다수의 인원이 협업을 해야하는 상황이라면 Java jdk 버전을 맞춰주시는 것이 좋습니다. 개발자마다 jdk버전이 다르면 컴파일 과정에서 .class파일을 다르게 생성할 수 있고 이로 인해 같은 소스코드라도 동작이 상이할 수 있기 때문입니다. 자바의 버전을 맞추기 위해서는 먼저 내 PC에 설치되어 있는 자바의 버전을 아는 것이 첫 번째 순서입니다. 이번 포스팅에서는 내 PC에 설치되어있는 자바 버전을 확인하는 방법에 대해 알아보도록 하겠습니다. 윈도우에서 자바 버전 확인 방법 (간단한 cmd 명령어) 1. 윈도우 검색창에서 cmd를 입력 후 명령 프롬프트를 실행합니다. 2. 명령 프롬프트 창에서 java -version 명령어를 입력합니다. (명령어 띄워쓰기 주의..

[Mobile] 카카오페이 자동이체 설정 / 해제 방법 [내부링크]

매달 주기적으로 빠져나가야 할 아파트 관리비와 같은 공과금들은 자동이체를 설정해두는 것이 반복적인 이체를 줄일 수 있는 방법이 됩니다. 저 같은 경우에는 카카오페이를 통해서 자동이체를 걸어두고 있는데요. 이번 포스팅에서는 카카오페이를 통해서 자동이체 설정 방법과 해제 방법을 통해서 알아보도록 하겠습니다. 카카오페이 자동이체 설정하기 1. 카카오톡에서 더보기 버튼 클릭 후 카카오 페이 버튼을 눌러 카카오페이 화면으로 들어갑니다. 2. 카카오페이 화면에서 더보기 버튼을 클릭합니다. 3. 팝업창 리스트에서 예약 송금 버튼을 클릭합니다. 4. 예약송금 화면에서 등록하기 버튼을 클릭해서 예약송금을 설정해주시면 됩니다. 카카오페이 예약 송금 수정 / 삭제하기 1. 등록된 자동이체 내역을 클릭합니다. 2. 우측 상단..

[Mobile] 카카오페이 지문 등록 사용하기 [내부링크]

저는 친구들과 더치페이 등을 할 때 송금 수단으로 카카오페이를 자주 사용하는데요. 카카오페이를 처음 사용할 때 인증 수단으로 얼굴 인식을 지정해두었더니 오류가 많이 나더라고요. 특히 요즘 같은 코로나 시기에 마스크를 쓰게 되면 거의 인식이 안됩니다. 그래서 이번에 지문 인식으로 인식 수단을 바꾸었습니다. 이번 포스팅에서는 카카오페이에서 지문을 등록하여 사용하는 방법에 대해 포스팅해보려 합니다. 카카오페이 인식 수단으로 지문 등록 사용하기 1. 우측 아래에 있는 더보기 버튼을 클릭하고 카카오 페이 버튼을 눌러 카카오페이 화면으로 들어갑니다. 2. 상단 탭에 있는 전체 메뉴로 들어갑니다. 3. 설정 버튼을 눌러 카카오페이 설정으로 들어갑니다. 4. 카카오페이 설정에서 있는 비밀번호 메뉴를 클릭합니다. 5. ..

[Web] 정규표현식 테스트 사이트 모음 총정리 [내부링크]

정규표현식을 사용하다 보면 이 문법이 맞는지 아닌지 헷갈리는 경우가 있습니다. 또 언어마다 정규표현식이 조금씩 다른 부분도 있어 테스트를 많이 해야 합니다. 개발을 할 때 자체 테스트로 확인하는 방법도 있겠지만 오늘 소개해드릴 정규표현식 테스트 사이트를 사용하면 코딩 시점에서 정규식 문법이 맞는지 쉽게 체크하실 수 있습니다. 자주 사용하는 정규표현식 정규 표현식 설명 예제 ^[0-9]*$ 숫자 1234567890 ^[a-zA-Z]*$ 영문자 abcdefg... ^[가-힣]*$ 한글 가나다라마바사... \w+@\w+\.\w+(\.\w+)? E-Mail [email protected] ^\d{2,3}-\d{3,4}-\d{4}$ 전화번호 02-1234-1234 ^[A-Za-z0-9]{6,12}$ 휴대전화번호 010..

[Web] 오픈소스 웹 사이트 모음 총정리 [내부링크]

혼자서 개인 프로젝트를 진행하다 보면 한계에 많이 부딪칩니다. 특히 디자인 부분에서 어려움을 겪는데요. 아무것도 없는 무의 상태에서 예쁘고 세련된 결과물을 만들기란 정말 어렵습니다. 게다가 하나의 기능을 만들 때마다 그에 맞는 UI / UX, 버그, 각종 이슈 등등 고려해야 할 것들도 한두가지가 아니죠. 이럴 때 남들이 이미 잘 짜 놓은 오픈소스를 잘 활용하여 조합한다면 훨씬 적은 노력으로 완성도 높은 프로젝트를 만드실 수 있으실 겁니다. 이번 포스팅에서는 오픈소스를 쉽게 다운로드 받을 수 있는 사이트에 대해서 추천해보고자 합니다. 오픈소스를 쉽게 받을 수 있는 사이트 목록 Bootstrap (https://getbootstrap.com/) Bootstrap은 세계적으로 반응형 웹 사이트 구축할때 사용되..

[Web] 저작권 걱정 없는 상업용 무료 폰트 다운 (인기 많은 BEST 모음) [내부링크]

최근 개인적으로 여러 가지 프로젝트를 진행하면서 디자인도 신경을 써야 하는 부분이 생겼는데요. 저는 개인적으로 디자인 요소 중에 중요한 것을 한 가지 꼽으라면 바로 폰트라고 생각을 합니다. 폰트만 예쁜 것으로 바꾸어도 글의 가독성이 좋아지고 전체적인 디자인이 예뻐진다는 느낌을 받거든요. 하지만 폰트의 경우 상업적으로 사용이 가능한 폰트를 꼭 사용해주어야 저작권 관련 문제를 방지할 수 있습니다. 상업적 이용의 뜻은 기업에서도 사용이 가능하며 이 폰트들을 사용한 결과물로 생산활동을 해도 된다는 뜻을 의미합니다. 단 글꼴을 임의로 변형하거나 돈을 받고 글꼴을 판매하는 행위는 대부분 금지하고 있으니 이점만 참고해주시면 될 것 같습니다. 배달의 민족 글꼴 9종 배달의 민족을 운영하고 있는 우아한형제들에서 제작한..

[Windows] 화면 부분 녹화 하는 방법 (파워포인트 PPT 활용) [내부링크]

혹시 PPT에 PC 화면을 녹화할 수 있는 기능이 있다는 것 아시나요? PPT로 슬라이드를 만들 때면 가끔 시연 영상 촬영 등의 이유로 윈도우10 PC 화면을 녹화해야 하는 경우가 종종 있습니다. 이럴 때에 다른 화면 녹화 프로그램을 사용하는 것보다 그냥 파워포인트에 탑재되어있는 화면 녹화 프로그램을 사용하시면 매우 편리합니다. 특히 PPT의 화면 녹화 기능에서는 화면의 일부분만 잘라서 녹화도 할 수 있고 따로 저장도 할 수 있기 때문에 다양한 방법으로 활용이 가능합니다. 파워포인트(PPT) 화면 부분 녹화하는 방법 1. 파워포인트를 실행시킨 뒤 PPT 상단의 메뉴바에서 레코드를 클릭한 후 화면 녹화 버튼을 클릭합니다. 2. 화면녹화 기능이 실행되면 위와 같이 녹화 창이 실행됩니다. 먼저 영역 선택을 눌..

[C언어] C언어로 만든 간단한 슈팅게임 (+ 소스 코드) [내부링크]

C언어로 간단한 슈팅게임을 만들어봤습니다. 혹시나 필요한 분이 있으시다면 받아가셔도 됩니다. 주석 나름대로 꼼꼼히 달았습니다. 프로젝트 안에 Stage_Info에는 스테이지 정보 그리고 각각의 Stage별로 적군의 숫자와 좌표들을 지정할 수 있습니다. C언어로 만든 간단한 슈팅게임 게임 화면은 위에 링크된 영상을 참고해주시면 될 것 같고 소스코드는 아래 링크된 깃에 올려두었으니 받아 가시면 됩니다. https://github.com/wjdxo513/ShootGame GitHub - wjdxo513/ShootGame: C언어로 만든 슈팅게임 C언어로 만든 슈팅게임. Contribute to wjdxo513/ShootGame development by creating an account on GitHub. ..

[IDE] 비주얼 스튜디오(Visual Studio) GitHub 연동 방법 [내부링크]

Visual Studio로 개발한 프로젝트를 GitHub에 바로 올리고 싶은 경우가 생길 수 있습니다. 이번 포스팅에서는 비주얼 스튜디오에서 생성한 프로젝트를 GitHub에 연동하고 Commit 하는 방법에 대해서 알아보도록 하겠습니다. 마이크로소프트에서 깃을 인수한 뒤 방법이 매우 간편해졌네요. 비주얼 스튜디오(Visual Studio) GitHub 연동하기 1. Visual Stduio 우측 하단에 보면 소스 제어에 추가라는 버튼이 있습니다. 이것을 누른 뒤 이어서 Git을 누릅니다. 2. Git 레포지토리 만들기 마법사에서 자신의 Git 계정으로 로그인을 한 뒤 레포지토리 이름과 설명, 프라이빗 여부를 설정한 뒤 만들기 및 푸시 버튼을 클릭합니다. 3. 아래 URL을 클릭하여 GitHub로 들어간 ..

[블로그] 2021년 블로그 결산 (+앞으로의 계획) [내부링크]

안녕하세요 코딩팩토리입니다. 조금 늦었지만 이번 포스팅에서는 2022년 새해를 맞아 작년이었던 2021년 블로그 결산을 해보려 합니다. 이번 하반기 들어서 블로그에 신경을 많이 못썼는데도 불구하고 많은 분들이 제 블로그를 찾아주셨습니다. 그리고 지표들을 보면 제 블로그를 주기적으로 찾는 분들이 적지 않게 있는 것으로 판단됩니다. 작년 한 해 제 블로그를 찾아주신 모든 분들께 진심으로 감사드립니다. 2021년도 블로그 결산 위의 지표는 구글 애널리틱스로 2021년 제 블로그를 분석한 결과입니다. 작년 한 해에도 많은 분들이 제 블로그를 방문해주셨습니다. 약 300만 명의 방문자들이 제 블로그를 다녀갔고 총 페이지 뷰 수는 무려 800만 뷰를 넘겼습니다. 방문해주신 모든 분들께 감사드립니다. 월간 포스팅 및..

[IDE] 이클립스 A java Runtime Environment (JRE) ... 실행 오류 해결 [내부링크]

이클립스(Eclipse)를 실행시키려고 하니 아래와 같은 에러가 떴습니다. 에러 메시지의 Java 가상 머신을 찾을 수 없다는 걸 보아하니 JDK가 인식이 되지 않는 것 같습니다. 에러 메시지의 경로를 확인해 보니 이클립스에서 찾고 있는 자바 버전이랑 실제 제 PC에 설치되어 있는 Java version이 다르더군요. A java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the following locations: C:\Programe Files\Java\jdk-13.0.2\bin ..

[Web] UTF-8 / EUC-KR 문자열 인코딩 변환 사이트(dencode.com) [내부링크]

개발을 하다 보면 인코딩이 잘못되어 문자들이 깨지는 현상이 많이 발생합니다. 경우에 따라서는 개발된 인코딩 방식을 바꿔야 하는 상황도 발생하는데 이때 유용하게 사용할 수 있는 인코딩 변환 사이트를 소개합니다. 자주 사용하는 UTF-8 / EUC-KR 방식뿐만이 아니라 다양한 인코딩 변환을 지원하고 있습니다. 문자열 인코딩 변환 사이트(https://dencode.com/) https://dencode.com/ 위의 사이트에 들어가셔서 변환 할 문자열을 넣고 사용하고 싶은 인코딩 방식으로 변환하시면 됩니다.

[ETC.] UTF-8과 EUC-KR의 차이점에 대하여 [내부링크]

보통 한글이 깨졌다고 하죠. 개발을 하다 보면 한글이 제대로 표현된 프로젝트를 import 시켰을 때 아래 그림처럼 한글이 깨지는 경험이 있으실 겁니다. 대체 이런 상황은 왜 발생하는 것일까요? 그 이유는 컴퓨터에서 한글을 표현하는 다양한 문자열 셋과 인코딩 방식들이 맞지 않기 때문입니다. 컴퓨터가 문자를 읽는 방식 컴퓨터는 정보를 0과 1로만 이루어진 바이너리 숫자로 데이터를 저장합니다. 그렇다면 0과 1밖에 모르는 컴퓨터에서는 숫자나, 알파벳, 한글 등을 어떻게 표현할 수 있는 걸까요? 컴퓨터는 문자를 표현하기 위해서 우리가 사용하는 문자들과 대응하는 숫자를 매깁니다. 예를 들면 65 = 'A', 66 = 'B'처럼 말이죠. 이렇게 숫자와 대응되는 문자열 셋을 만들면 컴퓨터에서도 문자를 표현할 수 있..

[IDE] 이클립스 한글 깨짐(인코딩) 문제 해결 (UTF-8, EUC-KR, MS949) [내부링크]

이클립스를 사용하고 여러 프로젝트를 import 할 때 한글이 깨지는 사례들이 종종 생깁니다. 인코딩이 맞지 않아서 발생하는 현상인데 예를 들어 UTF-8로 작성된 한글을 내 이클립스에서는 EUC-KR로 읽고 있다면 한글이 깨지게 됩니다. 이 경우 이클립스에서 인코딩하고 있는 방식을 소스가 작성된 인코딩 방식으로 변경해주시면 문제가 해결됩니다. 인코딩 방식은 모든 프로젝트를 동일한 인코딩으로 맞출 수도 있고 프로젝트마다 개별로 인코딩 방식을 지정해주실 수도 있습니다. 이클립스 개별 프로젝트 인코딩 맞추기 개발된 프로젝트마다 인코딩 설정이 다른 경우가 있기 때문에 프로젝트 별로 인코딩을 따로 맞춰주시는 것을 추천드립니다. 1. 이클립스 프로젝트 우클릭 -> Properties로 들어갑니다. 2. Resou..

[Sublime Text] 서브라임 텍스트 한글 깨짐(인코딩) 문제 해결 [내부링크]

Sublime Text를 사용하면 한글이 깨지는 현상이 발생할 때가 있습니다. 저도 기존에 사용하고 있는 텍스트 파일을 열었는데 한글이 깨지는 현상이 발생하여서 조치를 취했는데요. 이번 포스팅에서는 Sublime Text에서 한글이 깨지는 현상의 해결방법에 대해 포스팅해보도록 하겠습니다. EUC-KR로 되어있는 파일을 열었을 때 Sublime Text에서의 기본 인코딩이 UTF-8이며 EUC-KR의 경우 지원하지 않고 있습니다. 그렇기에 EUC-KR이나 다른 인코딩으로 되어있는 문서라면 텍스트가 깨질 수 있습니다. 해결방법 1 1. Ctrl + Shift + P를 누른 뒤 Package Install을 입력하여 제일 위에 보이는 Package Control: Install Package를 클릭합니다. 2..

[Sublime Text] 서브라임 텍스트4 설치 / 다운로드 방법 [내부링크]

Sublime Text란? 서브라임 텍스트는 많은 기능을 탑재하고 있지만 가볍고 확장성이 좋은 텍스트 편집기로 많은 개발자들이 사용하고 있습니다. 수많은 프로그래밍 언어와 마크업 언어를 네이티브로 지원하며 다양한 플러그인을 사용하여 개발자의 입맛에 맛게 기능을 확장할 수 있습니다. 2021/5/20일자로 서브라임 텍스트 4의 최신 버전이 출시되었으며 전작에 비해 안정성과, UI가 개선되었고 타입 스크립트 지원이 추가되었습니다. Sublime Text 4 설치 / 다운로드 방법 1. 아래 링크된 서브라임 텍스트 사이트의 다운로드 탭으로 들어간 뒤 상단의 버전에서 자신의 OS에 맞는 최신 버전의 서브라임 텍스트를 다운로드합니다. https://www.sublimetext.com/download 2. 다운로드..

[ETC.] 시퀀스 다이어그램 작성법 & 예제 총정리 [내부링크]

시퀀스 다이어그램이란? 시퀀스 다이어그램은 UML 다이어그램의 한 종류로 시스템이나 객체들이 메세지를 주고받으며 상호 작용하는 과정을 표현하는 행위 다이어그램입니다. 현재 구축되어 있는 시스템이 어떻게 동작하고 있는지 표현하거나 신규 개발해야 할 시스템이 어떠한 시나리오로 흘러갈 지 쉽게 표현할 수 있어 자주 사용됩니다. 각 동작에 참여하는 시스템이나 객체들의 수행기간을 확인할 수 있음 메시지의 명확한 순서를 확인할 수 있음 전반적인 시스템 흐름을 시각화 시킬 수 있음 실시간 명세의 표현에 적합함 복잡한 시나리오의 표현에 적합함 시퀀스 다이어그램 툴 시퀀스 다이어그램을 그릴 수 있는 툴은 GitMind, Lucidchart, Visual Paradigm 등등 다양한 종류의 툴이 있지만 가볍게 그리는 용도..

[Linux] 리눅스 (tar, gz, zip) 압축 및 압축 해제 방법 [내부링크]

리눅스 서버를 운영하다 보면 로컬 PC와 리눅스 서버 간 파일들을 주고받아야 할 경우들이 많습니다. 이때 대부분의 파일은 묶음, 압축 파일의 형태로 보내게 되는데요. 서버에서 GUI를 사용할 수 있다면 간단히 마우스 클릭만으로도 압축을 해제할 수 있겠지만 터미널만 사용할 수 있는 환경이라면 압축파일들을 관리할 수 있는 명령어들을 알고 있어야 할 필요성이 있습니다. 이번 포스팅에서는 리눅스에서 가장 많이 사용하는 압축파일인 tar, gz, zip 파일의 압축방법과 압축해제 방법에 대해 알아보도록 하겠습니다. tar 명령어 사용법 tar는 Tape ARchiver 테이프 아카이버의 앞글자를 딴 말로 정확히 말하자면 압축방식은 아니고 일종의 묶음 형태입니다. tar파일은 리눅스 및 유닉스에서 가장 많이 사용되..

[Linux] 리눅스 find 명령어 사용법 (파일 찾기, 검색) [내부링크]

find 명령어 리눅스의 find 명령어는 리눅스 파일 시스템에서 파일을 검색하는 데 사용되는 명령어입니다. 다양한 표현식을 사용하여 원하는 파일의 목록을 추출할 수 있습니다. 리눅스 find 사용법 find [옵션] [경로] [표현식] # 현재 위치에서 log가 들어가는 파일 모두 찾기 find . -name "*log*" 옵션 P : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용. L : 심볼릭 링크에 연결된 파일 정보 사용. H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외. D : 디버그 메시지 출력. 경로 find의 인자값으로는 경로를 받습니다. 상대 경로, 절대 경로 모두 가능하며 대부분의 리눅스의 경우 이 경로 인자 값을 생략한다면 ..

[Linux] 리눅스 cat 명령어 사용법 (파일 확인, 합병, 생성) [내부링크]

cat 명령어 리눅스의 cat명령어는 concatenate에서 따온 명칭으로 그 이름에서 유추할 수 있듯 본래의 기능은 여러 파일의 내용을 하나로 합쳐주는 역할을 합니다. 하지만 리눅스에서 cat 명령어는 단순히 파일을 합치는 것에만 사용되는 것은 아니고 파일의 내용을 단순 출력하여 확인하거나, >이나 >>와 같은 리다이렉션 기호와 함께 사용하여 파일을 생성하고, 저장하는 용도로도 사용될 수 있습니다. 입출력 리다이렉션 리다이렉션 기호 방향 의미 > 표준 출력 명령 > 파일 : 명령의 결과를 파일로 저장 >> 표준 출력 (추가) 명령 >> 파일 : 명령의 결과를 기존 파일에 추가하여 저장 new_file # file1 + file2 + file3 내용을 new_file라는 이름으로 생성 cat file1..

[Linux] 리눅스 grep 명령어 사용법 (파일 내 특정 문자열 찾기) [내부링크]

리눅스 grep명령어는 로그파일이나, 텍스트 파일에서 특정 문자열을 찾을 때 사용하며 tail 명령어나 find 명령어등 다양한 명령어들과 함께 사용하여 로그 파일에서 실시간으로 특정 문자열을 찾는다던지, 혹은 디렉터리 내에서 특정 이름을 포함하는 파일을 찾을 때 등등 다양하게 응용도 가능합니다. grep 명령어 리눅스에서 grep 명령어는 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어입니다. 특히 tail이나 ls 등 다양한 명령어와 조합하여 응용되는 경우가 많아서 이 grep명령어는 리눅스에서 능숙하게 사용할 줄 알아야 하는 기본 명령어입니다. 리눅스 grep 사용법 grep [옵션][패턴][파일명] 문자열로 찾기 # 특정 파일에서 'error' 문자열 찾기 grep 'e..

[Linux] 리눅스 tail 명령어 사용법 (실시간 로그 보기) [내부링크]

리눅스에서 tail 명령어는 일반적으로 로그와 같이 시간에 따라 변하는 파일들을 grep과 같은 명령어로 조합해서 실시간으로 업데이트되는 로그를 분석하는데 많이 사용됩니다. tail 명령어 tail 명령어는 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력해주는 명령어입니다. 기본값으로는 마지막 10줄을 출력하며 주로 tail은 리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 매우 유용하게 사용됩니다. 리눅스 tail 사용법 # 파일 마지막 부분을 출력하는 명령어 tail [옵션][파일명] tail filename.txt tail -f filename.txt tail명령어를 사용하시면 해당하는 파일의 마지막 부분을 확인하실 수 있습니다. 위와 같이 쓰면 filename.txt 이라는..

[Linux] 리눅스 alias(명령어 별칭) 설정 및 사용법 (+ 영구 등록) [내부링크]

리눅스는 터미널에서 작업해야 할 경우가 대부분입니다. 그래서 작업을 해야 할 때 필요한 모든 명령어를 일일이 손으로 쳐야만 하는데 이 과정은 매우 심각한 불편함을 초래합니다. 그래서 긴 명령어의 경우 alias를 사용하여 명령어 세트를 별칭으로 지정해두고 그 별칭을 사용함으로써 작업의 효율성을 추구하고는 합니다. 특히 자주 이동해야 하는(cd) 깊은 Depth의 디렉토리의 경우에는 꼭 alias로 지정해두어 업무 효율을 높이도록 합시다. alias란? alias는 별칭이라는 뜻으로 리눅스에서 alias는 사용자가 명령어를 다른 이름으로 바꿔서 사용할 수 있는 쉘 내부 명령어를 말합니다. 이 alias를 통해서 일일이 입력하기 번거로운. 길이가 긴 명령어를 간단한 이름으로 바꿔서 등록하여 업무 효율을 높일..

[Mobile] 카카오톡 채널 & 스팸 메시지 차단하는 방법 [내부링크]

얼마 전부터 제 번호를 어떻게 알았는지 핸드폰을 판매하는 업체에서 계속 카카오톡이 시도 때도 없이 날아오더군요. 완전 광고성 스팸 메시지였는데 매일매일 울려대니 너무 짜증이 났습니다. 이렇게 가끔 사설 업체들이 카카오톡 채널을 개설하여 스팸 메시지를 자주 보내는데 이번 포스팅에서는 이렇게 스팸 메시지를 보내는 카카오톡 채널을 차단하는 방법에 대해 알아보도록 하겠습니다. 카카오톡 채널 & 스팸 메시지 차단하기 1. 먼저 차단하고 싶은 채널의 프로필을 클릭합니다. 2. 차단하고 싶은 채널의 프로필에서 우측의 플러스 채널 버튼을 클릭하여 주세요. 3. 플러스 채널 버튼을 클릭하면 위와 같이 채널 차단 알림창이 뜹니다. 여기서 채널 차단을 클릭합니다. 4. 채널 차단이 완료되었습니다. 이렇게 스팸메시지를 주기적..

[Web] Json 정렬과 문법, 형태, 형식을 검사해주는 사이트 추천 [내부링크]

JSON이란? JSON은 JavaScript Object Notation의 약자로 name - value 한쌍으로 이루어진 네트워크를 통해 데이터를 주고받는 데 자주 사용되는 경량의 데이터 형식으로 생각하시면 됩니다. JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 특히 용량이 적어서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용합니다. 웹 개발을 하다보면 주로 Json형태로 데이터를 던지는 경우가 많이 있습니다. 이때 Json은 정확한 형식, 형태를 맞춰줘야 파라미터가 제대로 날아갑니다. [ , { , 이런 괄호부터, 쉼표까지 오류가 없는지 살펴봐야 하며 이러한 형식이 잘못되어 파싱 할 때나 API 연동할 때 종종 오류가 날 때가 있습니다. 하지만 Json은 괄호가 어지럽게 묶..

[Web] 저작권 없는 무료 파워포인트(PPT) 템플릿 다운로드 사이트 모음 [내부링크]

살다 보면 종종 파워포인트를 사용할 일이 생기고 PPT 자료를 만들게 됩니다. PPT는 시각적으로 디자인이 잘 되어야 좋은 PPT자료로 인정받을 수 있는데요. 이때 가장 쉽게 만드는 방법은 이미 잘 디자인되어있는 파워포인트 PPT 템플릿을 사용하는 것입니다. 이번 포스팅에서는 무료 PPT 템플릿을 받을 수 있는 사이트를 추천드립니다. 파워포인트(PPT) 무료 템플릿 다운로드 무료 사이트 URL 추천 개인 블로그 개인적으로 개인 블로그에서 디자인 한 PPT 템플릿이 한국적인 느낌에 감각적이고 디자인적 요소가 뛰어나다고 생각합니다. 개인 블로그는 회원가입이 필요없어 다운이 간편하므로 상업적인 용도로 사용할 것이 아니라 대학교 과제 정도를 수행하실 목적이라면 PPT 템플릿을 제공하는 개인 블로그에서 다운로드하..

[Web] 이미지 안에 있는 글자를 추출할 수 있는 사이트 추천 (구글 기본앱) [내부링크]

수업의 강의자료를 사진으로 찍어 필기를 하거나, 어떤 그림이나 설명서, 혹은 종이문서에 있는 내용들을 스캔하여 그 안에 있는 정보들을 추출해야 하는 등의 이미지 안에 있는 글자들을 옮겨 적어야 할 경우들이 종종 발생합니다. 하지만 그림이나 종이 문서 스캔본과 같은 이미지화 되어있는 텍스트들을 직접 복사할 수 없어 컴퓨터에 일일이 타이핑해야 하는데 이 과정은 매우 번거롭습니다. 그렇기에 저는 이러한 경우가 발생하였을 때는 OCR 도구를 활용할 것을 추천드립니다. OCR 도구를 활용하면 문서를 디지털화시키고 텍스트 형식으로 변환할 수 있습니다. 이번 포스팅에서는 이 OCR을 활용하여 텍스트를 추출해주는 사이트에 대해 소개해드리고자 합니다. 변환 사이트를 활용하면 따로 프로그램을 다운받지 않아도 되어 매우 편..

[Web] 유튜브 영상 다운로드 받을 수 있는 무료 사이트 추천 BEST 5(2024년) [내부링크]

가끔 유튜브 영상을 자료로 사용해야 할 때가 있는데요. 만약 발표를 해야 할 PC에 인터넷이 지원된다면 그냥 내부에 유튜브 영상을 첨부만 하면 되겠지만 내부망 PC와 같은 인터넷이 지원되지 않는 환경이라면 유튜브 영상을 직접 다운로드하여야 하는 경우가 생길 수 있습니다. 이번 포스팅에서는 유튜브 영상을 내 로컬 PC로 다운로드하는 법에 대해 알아보도록 하겠습니다. 유튜브 영상 다운로드할 수 있는 무료 사이트 추천 Best 5 먼저 유튜브 영상을 추출하려면 그 영상의 URL을 복사해야 합니다. 유튜브 영상의 URL을 복사하는 방법은 유튜브 영상 -> 우클릭 -> 동영상 URL 복사 이렇게 하시면 됩니다. y2mate(https://www.y2mate.com/en371) 1. 모든 mp4 다양한 화질 지원 ..

[Web] 유튜브 음원 추출 무료 사이트 추천 BEST 7(2024년) [내부링크]

유튜브의 재생목록에 상당 부분은 뮤직비디오를 포함한 음악 콘텐츠들입니다. 그만큼 유튜브로 음악을 듣고 싶어 하는 수요가 많은 것 같습니다. 유튜브 프리미엄의 사용자라면 YT Music이나 백그라운드상에서 유튜브를 실행시켜 유튜브 영상의 음원을 편하게 들을 수 있지만 유튜브 프리미엄 사용자가 아니라면 핸드폰 화면이 꺼지면 유튜브 재생도 같이 종료되기에 음악을 감상하기가 상당히 까다롭습니다. 그래서 많은 분들이 유튜브 영상의 음원을 추출하여 오프라인으로 음악을 듣는 분들이 많은 것으로 알고 있습니다. YT Music 오프라인 저장 기능 사용 - 추천 (유튜브 프리미엄 사용자) YT Music의 기본기능에 오프라인 저장이 있기에 따로 변환 사이트를 이용해야 할 필요가 없기 때문에 개인적으로 유튜브 프리미엄을 ..

[Web] 재직 증명서 발급 방법 (온라인 간단 해결) [내부링크]

재직 증명서란? 재직증명서는 재직증명서는 근로자가 회사에 소속되어 있다는 사실을 증명하기 위한 서류로써 본인이 어떤 직장에 소속되어 있으며, 어떤 직급과 직책을 맡고 있는지 등의 재직 사항을 증명할 수 있도록 고용하고 있는 회사(기관)가 보증하는 증명서를 말합니다. 재직증명서는 법적으로 표준화된 규정이나 서식이 있는 것은 아니기 때문에 일반적으로 회사에 따라 자사의 고유 서식을 사용하는 경우가 많고 국민연금 가입자 증명 등으로도 재직 증명서를 대체할 수 있습니다. 재직 증명서는 은행에 통장을 개설하거나, 정부의 지원금을 받을 때 재직증명서가 필요한 경우가 있는데. 대부분 인사팀에 이야기를 하면 재직증명서를 발급해주기는 하지만 혹시나 이직을 하는 것이 아닌지 괜한 의심을 받을 수 있기 때문에 그냥 인터넷에..

[내돈내산] 삼성 정품 보조배터리 EB-U3300 사용 후기 (보조배터리 추천) [내부링크]

이번 갤럭시 워치 4 사전 구매 혜택으로 갤럭시 워치 액세서리 3만 원 할인 구매 혜택을 받았습니다. 구매가 가능한 물건은 아래 링크된 삼성전자 공식 홈페이지의 갤럭시 4 워치 액세서리의 품목들과 같았습니다. https://www.samsung.com/sec/mobile-accessories/all-mobile-accessories/?watch 위 사이트에 들어가서 보시면 아시겠지만 정말 구매할 물품이 딱히 없었는데요. 그렇다고 구매를 안하기에는 무료로 주는 3만 원 할인 쿠폰이 아까워서 그나마 가끔씩은 필요할듯한 삼성 정품 보조배터리를 구매해봤습니다. 뭔가 삼성의 상술에 계속 당하는 느낌입니다..;; 삼성 정품 보조배터리 라인업 비교 삼성은 생각보다 다양한 보조배터리 라인업을 가지고 있습니다. 저는 갤..

[내돈내산] 삼성 정품 무선충전기 듀오 사용 후기 (무선 충전기 추천) [내부링크]

어느 순간 눈을 떠보니 저는 삼성빠가 되어있었습니다. 갤럭시 폴드, 갤럭시 버즈2, 갤럭시 워치4... 기기가 많은 것은 상관이 없는데 사실 충전하기가 너무너무 귀찮습니다. 특히 저는 원룸 자취방에서 생활을 하고 있기 때문에 콘센트도 많지 않아 한번에 여러 개의 기기를 동시에 충전하기도 힘들고 충전선을 찾아 기기에 꽂는 것 자체도 굉장히 귀찮게 느껴졌습니다. 이러한 문제 때문에 갤럭시 버즈와 워치의 경우에는 가끔 배터리가 없어서 애를 먹고는 합니다. 이렇게 충전하기 귀찮아하는 저를 위해 무선 충전기를 구매하였습니다. 무선 충전기 추천 무선 충전기의 경우에는 다양한 회사의 제품들이 시중에 나와있는데요. 무선 충전기 자체가 특별한 기능 없이 단순히 충전만 하는것이기에 저렴한 것을 사셔도 되지만 저는 삼성 정..

[내돈내산] 갤럭시 워치4 실버 44mm 구매 및 사용 후기 [내부링크]

갤럭시 언팩에서 강렬한 인상을 주었던 갤럭시 워치4 저도 구매했습니다. 기존의 시계가 단순히 시간을 보여주는 기능만 가졌다면 갤럭시 워치와 같은 스마트워치는 더 저렴한 가격에 시계 기능뿐만이 아니라 스마트폰의 기능의 일부와 건강관리 기능도 함께 사용할 수 있어 더욱 활용성이 높다고 생각합니다. 제가 이번 갤럭시 워치를 구매하게 된 이유도 건강관리 기능을 잘 활용해보고 싶어서였습니다. 이번 갤럭시 워치4 에서는 심박 수, 혈중 산소포화도, 심전도 측정 기능, 체성분 분석 기능, 수면 측정 기능까지 있습니다. 또 운동할 때 유용한 데이터들도 보여준다고 하니 수영과 자전거 타는 것을 좋아하는 저에게 유용하게 사용될 듯합니다. ※ 삼성 갤럭시 워치4는 아래 링크에서 쿠팡 최저가에 구매하실 수 있습니다. 갤럭시 ..

[내돈내산] 갤럭시 버즈2 화이트 사용 후기 [내부링크]

이번 갤럭시 폴드3를 사전 예약하면서 갤럭시 버즈2를 사은품으로 받았습니다. 저는 무선 이어폰으로 갤럭시 버즈 플러스를 사용하고 있었기에 무선 이어폰이 2개는 필요가 없겠다고 생각이 들어 당근 마켓으로 판매를 하려고 했으나 막상 갤럭시 버즈2를 사용해보니 기존에 제가 사용하고 있었던 갤럭시 버즈 플러스를 사용하기가 싫을 정도로 차이가 많이 나더군요. ※ 갤럭시 버즈2는 아래 링크에서 쿠팡 최저가에 구매하실 수 있습니다. 위와 같이 사기당할 염려 없이 마켓에서 구매하시는 것도 좋지만 저는 당근마켓의 미개봉 제품을 구매하시는 것을 더 추천드립니다. 현재 갤럭시 폴드, 플립의 사전예약 상품으로 갤럭시 버즈2가 증정되어 당근마켓에 대량의 매물이 풀렸습니다. 이를 활용하시면 미개봉 제품을 저렴하게 구매하실 수 있..

[Mobile] 스마트폰 화면을 PC화면에 미러링 하는 방법 (Smart View) [내부링크]

작은 핸드폰 화면으로 모바일 게임과 같은 작업들을 하기 불편하시다면 스마트폰 화면 미러링을 통해 PC에 내 핸드폰 화면을 띄워서 좀 더 쾌적하게 영상 시청이나 모바일 게임을 즐겨보는건 어떠신가요? 연결할 디바이스가 와이파이를 지원하고, 미라캐스트(Miracast)기능을 지원한다면 특별한 어플리케이션 설치 없이 간편한 설정만으로도 핸드폰 화면을 미러링하여 다른 PC에 띄울 수 있습니다. 이 포스팅은 PC를 기준으로 작성되었으나 TV나 다른 디스플레이와 미러링도 이 기능을 활용하여 사용하실 수 있습니다. 특히 TV와 스마트폰을 연결해서 넷플릭스, 유튜브 시청을 하시는분들도 많더군요. 스마트폰 화면 미러링 방법 ( PC 환경 세팅 ) 1. [Windows Key] + [ i ] 키를 눌러 윈도우 설정창을 띄운..

[Mobile] 안드로이드 다크모드 설정 방법 [내부링크]

많은 사람들이 밝은 화면이 눈을 피로하게 한다고 생각하시고 화면을 어둡게 해주는 다크 모드를 많이 사용하고 계시는 것 같습니다. 다크 모드가 눈 건강에 좋다는 과학적인 근거는 아직 부족하지만 다크 모드를 사용하게 되면 사용자의 시력을 보호하고 배터리를 아낀다는 것이 정설로 알려져 있습니다. 이번 포스팅에서는 안드로이드 삼성 갤럭시에서 다크 모드를 설정하는 방법에 대해 알아보도록 하겠습니다. 안드로이드 다크모드 설정 방법 (feat 삼성 갤럭시) 1. 홈 화면에서 상단을 아래로 쓸어내린 뒤 우측 상단에 있는 톱니바퀴 아이콘을 클릭하여 설정창으로 들어갑니다. 2. 설정에서 디스플레이 메뉴로 들어갑니다. 3. 디스플레이에서 다크를 체크하시면 다크 모드로 즉시 전환이 완료됩니다.

[Mobile] 안드로이드 갤럭시 테마 변경 방법 (+ 테마 추천) [내부링크]

삼성 갤럭시 스마트폰을 사용하고 있다면 갤럭시 테마를 사용하여 간편하게 핸드폰을 예쁘게 꾸밀 수 있습니다. 테마를 변경하면 배경뿐만이 아니라 아이콘 이미지 삼성 기본 앱 내부 디자인, 사운드도 바꿀 수 있어 기본 아이콘과 배경에 질리신 분들이라면 이 기능을 활용하여 나만의 핸드폰을 한번 만들어보는 것도 괜찮을 것 같습니다. 안드로이드 갤럭시 테마 변경 방법 1. 홈 화면에서 상단을 아래로 쓸어내린 뒤 우측 상단의 톱니바퀴 아이콘을 클릭하여 설정창으로 들어갑니다. 2. 설정에서 테마를 클릭합니다. 3. 테마를 선택하면 위와 같이 갤럭시 테마가 나오는데 여기서 자신이 적용하고싶은 테마를 선택합니다. 인기 -> 무료를 차례로 클릭하시면 인기 있는 무료 테마 리스트도 나오니 참고해주세요. 4. 적용할 테마를 선..

[Mobile] 핸드폰 화면 녹화 방법 (안드로이드 기본 기능) [내부링크]

가끔 핸드폰 화면을 녹화하여 영상을 만든다거나 어플을 개발하여 프로토타입 영상을 찍을 때 등등 핸드폰 화면을 녹화해야 하는 경우가 생깁니다. 과거에는 이렇게 스마트폰 화면을 녹화할 때 녹화 기능을 제공하는 애플리케이션을 따로 설치해야만 했었는데 안드로이드 10 버전(갤럭시 S10 이후)부터는 안드로이드 자체 화면 녹화 기능이 추가되어 애플리케이션 설치 없이도 핸드폰 화면을 녹화하실 수 있습니다. 스마트폰 화면 녹화 방법 (안드로이드 기본 기능) 1. 홈 화면에서 화면 상단을 아래로 두번 드래그하면 위와 같이 화면 녹화 아이콘이 나옵니다. 이 아이콘을 클릭해줍니다. 2. 삼성 캡처에서 카메라와 오디오 권한을 허용해달라는 팝업창이 나오면 "앱 사용 중에만 허용"을 선택하고 다음으로 진행해주세요. 3. 사운드..

[Mobile] 카카오톡 채팅내역 백업 및 복구 방법 [내부링크]

카카오톡은 원칙적으로 하나의 모바일 디바이스에서만 사용이 가능하도록 설정되어 있습니다. 이러한 정책으로 인해 새로운 스마트폰을 구매하면 새로 사용하는 기기에서 다시 인증을 받아야 하죠. 문제는 이렇게 새로운 기기에서 카카오톡을 접속하면 기존에 사용하고 있었던채팅 기록들이 모두 초기화된다는 점입니다. 카카오톡에는 중요한 내용의 채팅, 사진들이 있을 수 있어 데이터들이 모두 소실되면 난감하신 분들도 계실 텐데요. 이 경우 카카오톡의 백업 기능을 사용하면 새롭게 사용하는 스마트폰에서도 이전에 주고받았던 대화 내용을 모두 복구하실 수 있습니다. 카카오톡 채팅 내역 백업 및 복구 방법 1. 카카오톡 우측 상단의 톱니바퀴 모양의 아이콘을 클릭한 후 채팅 탭을 클릭하여 들어갑니다. 2. 그럼 위와 같이 대화 백업하기..

[Mobile] 삼성 갤럭시 데이터 옮기기 (Smart Switch Mobile) [내부링크]

새로운 핸드폰을 구입했다면 처음에 가장 먼저 해야 할 것이 기존에 사용하던 핸드폰의 데이터를 새로운 핸드폰에 복사하는 일일 것입니다. 이 작업은 삼성에서 제공하는 Samsung Smart Switch Mobile이라는 어플리케이션을 사용하면 간단하게 데이터를 이동하는 작업을 진행하실 수 있습니다. Samsung Smart Switch Mobile을 사용하여 스마트폰 데이터 옮기기 1. 먼저 데이터를 옮기고 받는 핸드폰에 Smart Switch 어플을 깔아줍니다. PlayStore에서 스마트 스위치라고 검색하시면 가장 상단에 Samsung Smart Switch Mobile이라고 나옵니다. (다른 어플 하고 헷갈리지 마세요) 2. 다운받은 Samsung Smart Store를 데이터를 주고받을 2개의 핸드..

[내돈내산] 삼성 갤럭시 폴드3 케이스 추천 (슈피겐 에어스킨) [내부링크]

오늘은 얼마 전 구매한 갤럭시 폴드 3 케이스에 대해 리뷰해보려 합니다. 갤럭시 폴드가 비싼 제품인 만큼 케이스를 안 끼고 사용할 수는 없어 여러 개의 케이스 후보군을 두고 고심을 하다가 저는 슈피겐에서 제작한 에어스킨이라는 케이스를 사용하는 것으로 결정했습니다. ※ 슈피겐 에어스킨은 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 슈피겐 에어스킨 구매 이유 갤럭시 폴드 자체가 무겁기 때문에 최대한 가벼운 케이스로 선택 갤럭시 폴드3의 무게는 그 자체만으로 271g으로 그 자체만으로도 굉장히 무겁다고 할 수 있습니다. 여기서 케이스마저 무거운 케이스를 사용한다면 사용성이 매우 떨어질 것이라고 생각했습니다. 또한 이번 사전예약 상품으로 삼성 케어 플러스 1년을 주기도 하고 저는 보험까지 있기 때문에 보..

[내돈내산] 삼성 갤럭시 Z 폴드3 팬텀실버 구매 후기 [내부링크]

기존에 사용하고 있던 휴대폰이 사망함에 따라 새로운 핸드폰을 찾고 있던 도중 우연히 갤럭시 언팩 행사를 보게 되었습니다. 그리고 폴더블 폰, 그중에서도 갤럭시 Z 폴드 3에 관심이 생겼고 이 정도면 완성도 높은 폴더블 폰이라는 확신이 생겨 고심 끝에 구매를 결정하게 되었습니다. 갤럭시 Z 폴드 3의 출고가는 약 200만 원으로 다른 스마트폰에 비해 많이 비싼 감이 있지만 제가 이 핸드폰을 누구보다 잘 사용할 수 있다는 확신이 들었습니다. 이번 포스팅에서는 제가 이번에 구매한 삼성 갤럭시 Z 폴드 3에 대해 리뷰해볼까 합니다. ※ 갤럭시 폴드3는 아래 링크에서 쿠팡 최저가에 구매할 수 있습니다. 갤럭시 Z 폴드3를 선택한 이유 저는 아래의 두가지 제 생활패턴에 갤럭시 폴드가 잘 어울린다고 생각하여 구매를 ..

[Windows] 컴퓨터 자동 시작 / 예약 부팅 설정 방법 [내부링크]

직장인처럼 매일 일정한 시간에 출근하여 컴퓨터를 사용하시는 분이라면 컴퓨터를 자동으로 시작되도록 세팅하여 컴퓨터를 켜는 노동을 줄일 수 있습니다. PC 재부팅의 경우 윈도우10 작업 스케줄러에서 설정이 가능하지만 컴퓨터가 완전히 꺼진 상태에서 자동 부팅되게 만들려면 컴퓨터가 전원이 꺼진 상태에서 부팅을 시켜야 하는 것이므로 소프트웨어가 아닌 하드웨어 상에서 설정하여 사용하여야 합니다. ※ 노트북의 경우 바이오스에서 자동 부팅 설정을 지원하지 않을 수 있습니다. 컴퓨터 자동 부팅 설정 방법 1. 위의 표에서 자신의 컴퓨터 제조사에 맞는 바이오스 단축키를 확인하시고 바이오스에 진입해주세요. ※ 노트북의 제조사의 모델에 따라 hotkey가 우선되어 있어 Fn키를 누른 상태에서 단축키를 눌러야 바이오스 진입이 ..

[Windows] 윈도우10 날짜, 시간 재설정 방법 (동기화) [내부링크]

윈도우10의 기본 세팅으로 설치가 되어있다면 날짜와 시간이 주기적으로 재동기화되고 있어 날짜와 시간이 틀려질 경우는 많지 않지만 가끔 수동으로 시간대가 잘못 지정되었다던지, 외부 인터넷이 작동하지 않아 시간대가 안 맞는 경우, 표준시간대가 "서울"로 되어있지 않은 등의 다양한 문제들로 실제 시간과 컴퓨터에 세팅되어있는 시간에 오류가 생길 수 있습니다. 이번 포스팅에서는 Windows 10에서 시간대를 동기화하는 방법에 대해 알아보도록 하겠습니다. 윈도우 10 날짜, 시간 변경 방법 1. 작업표시줄의 날짜/시간에서 우클릭을 합니다. 2. 위와 같은 메뉴가 나오면 날짜/시간 조정 메뉴를 클릭합니다. 3. 자동으로 표준 시간대 켬으로 설정을 하게 되면 표준 시간대가 서울로 잡힐 것입니다. 이상태에서 자동으로 ..

[블로그] 구글 애널리틱스 주요 기능 설명 & 간단한 사용법 [내부링크]

구글 애널리틱스(Google Analytics)란? 구글 애널리틱스(Google Analytics)는 구글에서 제공하는 무료 웹 애널리틱스 서비스입니다. 웹 애널리틱스 서비스란 웹 사이트의 트래픽을 추적하고 보고서를 만들어주는 서비스를 말하며, 구글 애널리틱스에서 제공하는 추적번호를 내가 운영하는 웹사이트에 삽입하면 사이트 방문자의 유입 소스나 사이트 내 행동과 같은 유용한 정보를 수집하고 저장, 분석할 수 있습니다. 내가 운영하는 사이트의 방문자들의 트래픽을 추적하여 행동을 분석한다면 앞으로 사이트를 운영할 때에 많은 도움이 되니 추적번호를 넣을 수 있는 사이트나 블로그를 운영하시고 있으시다면 적극 사용을 권해드립니다. 구글 애널리틱스 장점 1. 무료 서비스이다. (월간 1000만 조회수까지) 2. 애..

[블로그] 제휴 마케팅 애드릭스 1년차 후기 (수익인증 & 하는법) [내부링크]

티스토리 블로그의 장점은 블로그 html을 직접 삽입하여 비교적 쉽게 광고를 추가할 수 있다는 점인데요. 이러한 티스토리의 장점을 활용하여 제휴 마케팅이라는 수익 창출 모델을 적극 활용하여 수익 창출을 노려볼 수 있습니다. 제휴 마케팅 플랫폼은 매우 다양한데 이번 포스팅에서는 제가 사용하고 있는 애드릭스에 대해 포스팅을 해볼까 합니다. 애드릭스는 제휴 마케팅을 대행해주는 여러 플랫폼 중 하나로 광고주와 블로그, 인플루언서 등을 연결해주는 사이트입니다. 더 많은 제휴 마케팅 플랫폼이 궁금하시다면 아래글을 참고해주세요. [블로그] 제휴 마케팅 플랫폼 5가지 모음 (블로그 수익 창출 수단) 애드릭스 1년 차 수익 인증 결론부터 말씀드리자면 저는 2020년 8월부터 현재까지 딱 1년간 애드릭스를 운영하였으며 1..

[블로그] 제휴 마케팅 플랫폼 5가지 모음 (블로그 수익 창출 수단) [내부링크]

제휴 마케팅이란? 제휴 마케팅이란 웹사이트 운영자가 자신이 운영하고 있는 웹 사이트에 마케팅을 원하는 여러 기업이 제공하는 배너나 링크를 삽입하여 새로 방문자, 회원, 고객 매출 등을 발생시키면 소정의 보상을 받는 마케팅 기법을 말합니다. 먼저 제휴 마케팅을 대행해주는 업체에서 여러 광고주를 모집하여 링크를 생성하고, 이렇게 생성된 링크를 블로그나 인플루언서 등의 마케터들이 자신의 웹 사이트에 삽입을 해놓으면 이 링크들을 통해 유입되는 방문자들에 의해서 상품 판매 등의 행동이 일어날 때 일정 부분의 커미션을 받게 되는 구조입니다. 편법은 쓰지 맙시다. 혹시 과거에 비해 현재 제휴 마케팅을 하고자 하는 업체가 거의 없다시피 한다는 거 아시나요? 왜 이렇게 되었을까요? 간단합니다. 바로 광고주의 입장에서 돈..

[일상] 컴투스 2020 하반기 필기 테스트 후기 [내부링크]

작년 하반기에 응시하였던 게임회사 엔씨소프트, 넷마블, 컴투스 필기 테스트 중 마지막으로 컴투스 필기 테스트의 후기에 대해 남깁니다. 필기 테스트를 응시하기전에 기존에는 어떻게 하고있었는지 구글링을 해봤는데 원래는 직접 컴투스 사옥으로 가서 시험을 치는것 같아요. 하지만 이번에는 코로나 시국인만큼 비대면으로 테스트를 봤습니다. [일상] 엔씨소프트 2020 하반기 NC TEST 후기 [일상] 넷마블 2020 하반기 넷마블 테스트 후기 컴투스 2020 하반기 필기 테스트 후기 필기 테스트는 주말에 프로그래머스에서 대행하여 이루어졌습니다. 프로그래머스에서는 코딩테스트만 대행하는 줄 알았는데 이런 문제들도 출제하는구나 그때 처음 알았습니다. ㅎㅎ 시험 자체가 비대면 시험이라 편안한 분위기로 응시가 가능해 별로 ..

[일상] 넷마블 2020 하반기 넷마블 테스트 후기 [내부링크]

넷마블에도 NC소프트와 마찬가지로 넷마블 테스트라고 불리는 자체 시험이 있는데요. 마찬가지로 테스트에 대한 정보가 너무 없어 제가 봤던 경험을 조금 적어볼까 합니다. [일상] 엔씨소프트 2020 하반기 NC TEST 후기 [일상] 컴투스 2020 하반기 필기테스트 후기 넷마블 채용절차 서류전형 + 코딩 테스트 -> 넷마블 테스트 -> 1차 면접 -> 2차 면접 순으로 이루어지며 이 채용 프로세스는 제가 지원하였던 신입 채용 기준이고 경력직이나 인턴일 경우 채용 프로세스가 조금 달라질 수 있습니다. 넷마블은 자소서 쓰기가 조금 힘들었어요. 문항수도 많고, 채워야 할 글자 수도 많아서 고생을 좀 했습니다... 코딩 테스트 후기 넷마블에서는 프로그래머스에 대행하여 온라인으로 코딩 테스트를 진행하였습니다. 넷마..

[일상] 엔씨소프트 2020 하반기 NC TEST 후기 [내부링크]

2020년도 하반기 게임 쪽으로 진로를 변경하고자 생각하여 엔씨소프트, 넷마블, 컴투스 이렇게 3군데의 회사의 하반기 채용에 지원했었습니다. 이러한 게임회사들의 채용과정에는 각 회사별로 테스트를 보는 단계가 있는데요. 채용과정 중 매년 보는 시험이고 많은 사람들이 궁금해하는 내용임에도 불구하고 정보가 많이 없는 듯하여 제 경험을 간략하게 기술하고자 합니다. [일상] 넷마블 2020 하반기 넷마블테스트 후기 [일상] 컴투스 2020 하반기 필기테스트 후기 엔씨소프트 채용절차 서류전형 -> 인적성 검사 -> NC TEST -> 1차면접 -> 2차 면접 순으로 진행됩니다. 저는 신입으로 지원해서 절차가 이러한데 경력직, 인턴일 경우 절차와 NC TEST의 구성이 조금 달라질 수 있어요. NCTEST : 30배..

[Mobile] 카카오톡 다크모드 설정 방법 (Mobile, PC) [내부링크]

요즘 밝은 화면이 눈을 피로하게 한다고 생각하시는 분들은 프로그램에 다크 모드를 많이 활용하시는 것 같습니다. 다크 모드를 사용하게 되면 사용자의 시력을 보호하고 배터리를 아낀다고 알려져 있습니다. 물론 자세히 찾아보면 다크 모드가 눈 건강에 좋다는 과학적인 근거는 부족하지만 개인적인 의견에 다크 모드로 설정하게 되면 야간에 밝은 화면으로 눈부심을 방지할 수 있고 화면마다 디스플레이 화면 밝기를 일일이 조절해주지 않아도 되어 편리하다고 생각합니다. 카카오톡 다크모드 설정 방법 (Mobile) 1. 카카오톡 친구탭 우측 상단에 있는 톱니바퀴 모양의 아이콘을 눌러준 뒤 전체 설정의 테마 메뉴로 들어갑니다. 2. 테마 메뉴에서 다크 모드를 체크하면 카카오톡이 재부팅이되고 다크모드로 설정이 됩니다. 카카오톡 P..

[Windows] PC 카카오톡 엑셀 테마 설정방법 [내부링크]

카카오톡 PC버전에도 내가 원하는 테마를 선택하여 채팅방의 분위기를 바꿀 수 있습니다. 주로 많이 사용하시는 테마는 다크 테마와 엑셀 테마인 것 같습니다. 특히 이번에 소개해드릴 엑셀 테마는 직장인들 사이에서 많이 알려져 있는데요. 업무시간에 카카오톡을 하기 눈치 보이시는 분들이 카카오톡 PC버전에 엑셀 테마로 설정해놓고 바탕화면에 엑셀을 띄워놓은 후 엑셀 테마를 설정해놓은 카카오톡을 켠다면 티가 많이 나지 않는다고 합니다. PC 카카오톡 엑셀 테마 설정방법 1. 카카오톡 PC버전의 좌측 하단의 톱니바퀴 아이콘을 클릭한 후 설정으로 들어갑니다. 그리고 좌측의 채팅 탭에서 엑셀 스타일을 체크해주면 모든 채팅방에 엑셀 테마가 적용됩니다. 2. 위의 화면은 엑셀 테마로 설정된 카카오톡 테마입니다. 확실히 카카..

[Web] 카카오톡 테마 다운받을 수 있는 블로그 URL 모음(2024년) [내부링크]

카카오톡의 테마는 직접 만들 수가 있습니다. 하지만 초보자들이 만드는 것과 전문가들이 만드는 카카오톡 테마의 퀄리티 차이가 아무래도 많이 날 수밖에 없겠죠. 이번 포스팅에서는 카카오톡 테마를 전문적으로 만드는 고수분들의 블로그들을 소개하고자 합니다. 아래에 소개드리는 블로그들을 서핑하시면서 원하는 테마가 있다면 한번 적용해보는 것도 괜찮을 거 같네요. 혹시 카카오톡 테마를 적용시키는 방법에 대해 모르신다면 아래 글을 참고해주세요. [Mobile] 카카오톡 테마 변경 방법 & 테마 추천 카카오톡 테마 다운받을 수 있는 블로그 모음 1. 늘봄님의 블로그 https://pf.kakao.com/_RPjKxb 봄을 그리다 안녕하세요 늘봄입니다 ̈ pf.kakao.com 제 취향인 테마들이 많은 블로그입니다. 심..

[Mobile] 카카오톡 테마 변경 방법 & 테마 추천 [내부링크]

대한민국의 국민이라면 자주 사용하는 어플리케이션 중 하나가 바로 카카오톡일 텐데요. 매번 똑같은 배경과 폰트 등 같은 화면을 보고 있자면 가끔 지겨울 때가 있죠. 카카오톡에는 테마라는 기능이 있어 카카오톡에 원하는 배경, 글 꼴등으로 설정하여 카카오톡을 내가 원하는 분위기로 바꿀 수 있습니다. 이번 포스팅에서는 카카오톡 테마를 변경하는 방법과 예쁜 테마 몇 가지를 추천해볼까 합니다. 카카오톡 테마 변경 방법 1. 카카오톡의 친구탭의 우측 상단에 있는 톱니바퀴 모양의 아이콘을 누른 후 테마 메뉴로 들어갑니다. 2. 테마에서 내가 적용하고싶은 테마를 선택하여 설치를 하고 설치한 앱을 켜서 테마 적용하기를 누르면 카카오톡에 테마가 적용됩니다. 3. 적용된 숨바꼭질의 테마의 카카오톡 화면은 위와 같습니다. 카카..

[Mobile] 카카오톡 차단 당했는지 확인하는 방법 총정리 [내부링크]

인생을 살다보면 내가 누군가에게 손절을 당해 카톡이 차단 당하는 경우도 있을 수 있습니다. 카카오톡에서는 공식적으로 위와 같이 차단 여부는 상대방이 알 수 없다고는 하지만 편법으로 알 수 있는 방법이 여럿 있답니다. 우선 카카오톡에는 2가지 차단 기능이 있습니다. 메시지 차단 : 차단한 친구에게 메시지가 오는것을 차단합니다. 메세지 차단, 프로필 비공개 : 메시지가 뿐만 아니라 나의 프로필 사진도 보이지 않도록 차단합니다. 메시지 차단, 프로필 비공개 되어있는 경우 확인 프로필 차단까지 되어있으면 확인이 비교적 간단합니다. 차단여부를 확인하고 싶은 사람의 프로필을 클릭하면 위의 사진과 같이 프로필이나 배경이 기본으로 설정되어있고 거기에다 프로필 위에 있는 송금 표시까지 보이지 않는다면 프로필을 차단당한것..

[Mobile] 카카오톡 친구 완전 차단하기 & 해제 방법 [내부링크]

카카오톡을 사용하다보면 귀찮은 스팸 메시지를 보내는 채널이나 스토킹에 가까운 메시지를 보내는 사람들이 있습니다. 이럴경우 카카오톡에서 친구 차단으로 그들의 메시지가 나에게 오는것을 미연에 방지할 수 있습니다. 참고로 카카오톡의 차단기능은 2단계로 나누어져있습니다. 메시지 차단 : 차단한 친구에게 메시지가 오는것을 차단합니다. 메세지 차단, 프로필 비공개 : 메시지가 뿐만 아니라 나의 프로필 사진도 보이지 않도록 차단합니다. 광고 채널에게서 스팸문자가 오는것은 메시지 차단까지만 하셔도 되지만 인연을 끊고 싶은 친구가 있다면 프로필까지 완벽하게 차단까지 하셔서 나의 일상이 공유되는것을 방지하는것이 좋을것 같습니다. 카카오톡 친구 메시지 차단하기 1. 카카오톡 친구 탭에 가셔서 차단하고 싶은 친구의 프로필을 ..

[Mobile] 카카오페이 송금 취소 하는 간단한 방법 [내부링크]

요즘 돈을 주고받을때 카카오페이를 사용하시는분들이 많습니다. 저도 친구랑 돈을 주고받을때 주로 카카오페이를 통해 송금을 하는데요. 가끔씩 이미 송금을 했는데 보내야 할 금액이 잘못되었거나 엉뚱한 사람에게 돈을 송금하는 사고가 가끔 생기곤 합니다. 이럴경우 송금 대상자가 돈을 받기 전까지는 카카오페이 송금내역에서 취소할 수 있습니다. 카카오페이 송금취소 하는 법 1. 저는 다른 친구에게 보냈어야 할 금액을 다른 친구에게 송금을 잘못했었는데요. 저처럼 카카오 페이의 송금이 잘못되었을 경우에 당황하지말고 카카오톡 홈으로 갑니다. 2. 카카오톡 메인 화면에서 아래쪽 탭 바에서 더보기 버튼을 클릭합니다. 3. 더보기 탭 화면에서 위의 그림과 같이 PAY버튼을 클릭하여 카카오 페이로 화면으로 들어갑니다. 4. 카카..

[Mobile] 내 핸드폰 안드로이드 OS 버전 확인 및 강제(수동) 업데이트 방법 [내부링크]

안드로이드 스마트폰에 탑재되어있는 안드로이드 OS는 새로운 버전이 계속해서 나오고 있습니다. 가끔 안드로이드 OS의 버전이 낮다면 일부 어플리케이션이 동작하지 않는등의 문제가 생길 수 있어 최신 버전으로 업데이트가 필요한 경우가 있는데요 이번 포스팅에서는 현재 내 휴대폰에 탑재되어 있는 안드로이드 OS 버전을 확인하고 강제로 업데이트 하는 방법에 대해 알아보도록 하겠습니다. 내 핸드폰 안드로이드 OS 버전 확인 방법 1. 핸드폰을 위에서 아래로 쓸어내린 뒤 톱니바퀴 모양을 눌러 설정앱을 엽니다. 2. 설정에서 가장 아래에 있는 휴대전화 정보로 들어갑니다. 3. 휴대전화 정보에서 소프트웨어 정보를 눌러 이동합니다. 4. 여기서 안드로이드 버전을 확인하실 수 있습니다. 2021년 7월 기준으로 최신 버전은 ..

[Mobile] 내 핸드폰 모델명(기종) 확인하는 초간단 방법 [내부링크]

핸드폰으로 무거운 게임이나 어플을 많이 사용하지 않으시는 분들이라면 보급형 스마트폰을 많이 사용하실 텐데요. 이러한 보급형 스마트폰은 다 성능이 비슷비슷하고 그냥 카카오톡 정도만 돌아가면 어떤 핸드폰이든지 상관이 없어 기종이 그렇게 중요하지가 않습니다. 이런 상황이다 보니 현재 내가 사용하고 있는 핸드폰의 기종을 모르는 분들도 계실 겁니다. 하지만 가끔 누군가 내 핸드폰의 기종을 물어보거나 모델명이 문득 궁금해질때는 어떻게 확인을 하면 좋을까요? 이번 포스팅에서는 현재 사용하고 있는 휴대폰의 기종을 확인하는 방법에 대해 포스팅하도록 하겠습니다. 내 핸드폰 기종 확인하는 초간단 방법 1. 핸드폰을 위에서 아래로 쓸어내려준뒤 위의 그림처럼 톱니바퀴를 클릭하여 설정창으로 들어갑니다. 2. 핸드폰 설정에서 가장..

[Mobile] 분실한 내 핸드폰 위치 찾기 (구글 계정 활용) [내부링크]

누구나 한번쯤은 핸드폰을 분실하셨던 경험이 있으실 겁니다. 다행스럽게도 내가 어디에 놔뒀는지 기억이 난다면 어렵지 않게 핸드폰을 되찾을 수 있겠지만 핸드폰을 어디에 뒀는지 기억이 나지 않는다면 어떻게 해야 할까요? 만약 내가 사용하고 있던 안드로이드 폰에 구글 계정이 연동되어 있다면 구글 계정으로 내 핸드폰의 마지막 위치를 확인해볼 수 있습니다. 내 핸드폰 위치 추적하기 1. 구글에 들어가셔서 로그인한 후 Google 계정 관리로 들어갑니다. 2. 검색창에 휴대전화 찾기라고 검색한 후 Enter를 눌러 해당 메뉴로 들어가 줍니다. 3. 휴대전화 찾기 메뉴에 들어가 보면 위와 같이 구글 계정으로 로그인되어있는 핸드폰, 태블릿 등의 리스트들이 나옵니다. 이 리스트에서 내가 찾고자 하는 휴대폰을 선택하여 들어..

[Mobile] 상대방 핸드폰 위치 추적하기(가족,친구,연인) Zenly 사용법 [내부링크]

아주 친한 친구나 가족, 연인과 같이 프라이버시가 딱히 중요하지 않는 사이면서 상대방의 위치가 궁금하다면 위치 추적 어플리케이션을 서로 설치하여 위치(GPS)를 공유하는 것이 도움이 될 수 있습니다. 안드로이드에서는 Zenly라는 애플리케이션을 설치하면 어플 이용자끼리 상호간의 위치를 공유할 수 있습니다. 젠리(Znely) 설치 / 다운로드 아래 링크에 들어가서 위치 추적 어플리케이션인 젠리를 다운로드하여 줍니다. 젠리는 안드로이드, IOS 둘 다 지원하며 무엇보다 무료라는 장점이 있습니다. https://play.google.com/store/apps/details?id=app.zenly.locator&hl=ko&gl=US Zenly 젠리 - 친구들과 소통하는 나만의 지도 - Google Play 앱 ..

[Mobile] 내 핸드폰 GPS 조작하기 Fly GPS 사용법 [내부링크]

가끔 포켓몬 고, 당근 마켓과 같이 위치를 기반으로 하는 어플들을 사용할 때에 현재 위치를 조작해야 하는 경우가 종종 있을 수 있습니다. 이럴 경우 GPS를 조작하는 어플리케이션을 다운로드하여 사용하시면 간편하게 현재 위치를 바꾸실 수 있습니다. GPS 조작 어플 Fly GPS 다운로드 안드로이드 구글 플레이 스토어에서 Fly GPS를 검색하거나 아래 링크를 통해 Fly GPS - 가짜 위치/위치속이기 라는 어플리케이션을 다운로드하여줍시다. https://play.google.com/store/apps/details?id=com.fly.gps&hl=ko Fly GPS - 가짜 위치/위치속이기/Fake GPS - Google Play 앱 Fly GPS/Fake GPS/가짜 위치/위치 속이기 GPS위치 정보..

[Mobile] 모바일 https 차단 우회 간단한 방법 (유니콘 HTTPS) [내부링크]

정부의 방침에 따라 검증되지 않은 Https 사이트가 차단되고 있고 앞으로 더 많은 사이트를 차단할 계획이라고 합니다. 이렇게 차단당한 사이트를 접속하면 '사이트에 연결할 수 없음 연결이 재설정되었습니다.'라는 메시지가 뜨고 접속이 차단되는데요. 오늘은 이렇게 차단당한 사이트를 VPN 우회를 통해 접속하는 방법에 대해 알아보도록 하겠습니다. 간단한 애플리케이션 설치 하나만으로 우회 접속하실 수 있습니다. 유니콘 HTTPS 애플리케이션 설치 1. PlayStore 같은 마켓에서 유니콘이라고 검색하면 위와 같은 애플리케이션이 나옵니다. 이것을 설치해줍니다. 2. 설치한 유니콘 HTTPS 애플리케이션을 선택하고 가운데 OFF 자물쇠 버튼을 클릭해준 뒤 나타나는 연결 요청 팝업창에서 확인을 눌러주시면 차단당한 ..

[DB] 데이터베이스 HASH JOIN (해시 조인)에 대하여 [내부링크]

HASH JOIN이란? HASH 조인은 조인될 두 테이블 중 하나를 해시 테이블로 선정하여 조인될 테이블의 조인 키 값을 해시 알고리즘으로 비교하여 매치되는 결과값을 얻는 방식입니다. HASH JOIN은 비용 기반 옵티마이저를 사용할 때만 사용될 수 있는 조인 방식이며 '=' 비교를 통한 조인에서만 사용될 수 있습니다. 주로 많은 양의 데이터를 조인해야 하는 경우에 주로 사용됩니다. HASH JOIN의 사용처 1. JOIN 컬럼에 적당한 인덱스가 없어 NL JOIN이 비효율적일 때 2. JOIN Access량이 많아 Random Access 부하가 심하여 NL JOIN이 비효율적일 때 3. Sort Merge Join을 하기에는 두 테이블이 너무 커 Sort 부하가 심할 때 4. 수행빈도가 낮고 쿼리 수..

[DB] 데이터베이스 SORT MERGE JOIN (정렬 병합 조인)에 대하여 [내부링크]

SORT MERGE JOIN이란? 조회의 범위가 많을 때 주로 사용하는 조인 방법론이며 양쪽 테이블을 각각 Access 하여 그 결과를 정렬하고 그 정렬한 결과를 차례로 Scan 해 나가면서 연결고리의 조건으로 Merge를 하는 방식입니다. 주로 조인 조건 칼럼에 인덱스가 없거나, 출력해야 할 결과 값이 많을 때 사용됩니다. 조회의 범위가 좁을 때 유리한 Nested Loop Join의 조인 방식과 장단점이 서로 바뀌어있다고 생각하시면 이해하기 쉽습니다. SORT MERGE JOIN의 사용처 1. 연결 고리에 인덱스가 전혀 없는 경우 2. 대용량의 자료를 조인할때 유리한 경우 3. 조인 조건으로 , =와 같은 범위 비교 연산자가 사용된 경우 4. 인덱스 사용에 따른 랜덤 액세스의 오버헤드가 많은 경우 S..

[DB] 데이터베이스 NESTED LOOPS JOIN (중첩 루프 조인)에 대하여 [내부링크]

NESTED LOOP JOIN이란? 줄여서 NL JOIN이라고도 불리는 NESTED LOOP JOIN은 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 Row를 결합하여 원하는 결과를 조합하는 조인 방식입니다. 조인해야 할 데이터가 많지 않은 경우에 유용하게 사용됩니다. NESTED LOOP JOIN은 드라이빙 테이블로 한 테이블을 선정하고 이 테이블로부터 where절에 정의된 검색 조건을 만족하는 데이터들을 걸러낸 후, 이 값을 가지고 조인 대상 테이블을 반복적으로 검색하면서 조인 조건을 만족하는 최종 결과값을 얻어냅니다. Driving Table 과 Driven Table Driving Table이란 JOIN을 할 때 먼저 액세스 되어 ACCESS PATH를 주도하는 테이블을 Driv..

[DB] 데이터베이스 결합 인덱스에 대하여 [내부링크]

결합 인덱스란? 결합 인덱스란 두 개 이상의 컬럼을 합쳐서 인덱스를 만드는 것을 말합니다. 주로 단일 컬럼으로는 나쁜 분포도를 가지지만 여러 개의 컬럼을 합친다면 좋은 분포도를 가지고, Where절에서 AND 조건에 많이 사용되는 컬럼들을 결합 인덱스로 구성합니다. 결합 인덱스 컬럼 선택 1. where절에서 and 조건으로 자주 결합되어 사용되면서 각각의 분포도 보다 두 개 이상의 컬럼이 결합될 때 분포도가 좋아지는 컬럼들 2. 다른 테이블과 조인의 연결고리로 자주 사용되는 컬럼들 3. order by에서 자주 사용되는 컬럼들 4. 하나 이상의 키 컬럼 조건으로 같은 테이블의 컬럼들이 자주 조회될 때 결합 인덱스의 컬럼 순서 결정 결합 인덱스를 만들 때 결합 인덱스를 구성하는 컬럼들의 배열 순서는 아주..

[Linux] 리눅스 touch 명령어(파일 생성, 갱신) 사용법 & 옵션 정리 [내부링크]

touch touch는 아무것도 없는 빈 파일을 생성하거나 touch는 파일의 날짜와 시간을 수정하는 명령어입니다. touch의 파일명이 이미 존재한다면 서버의 현재 시간으로 파일의 최근 사용한 시간(access time)과 최근 변경 시간(modification time)을 변경하고 파일명이 존재하지 않는다면 파일의 크기가 0인 빈 파일을 생성합니다. touch [옵션][파일명] # 파일이 없다면 file txt 파일 생성, 있다면 file.txt의 시간 정보 수정 touch file.txt 수정 할 파일이 존재하지 않는다면 크기가 0 인 빈 파일을 생성합니다. 수정 할 파일이 존재한다면 해당 파일의 최근 사용한시간과 최근 변경 시간을 현재 시간으로 수정합니다. 별다른 옵션이 없다면 atime, cti..

[Linux] 리눅스 mkdir 명령어(디렉토리 생성) 사용법 & 옵션 정리 [내부링크]

mkdir mkdir의 뜻은 make directory의 약자로 디렉토리(폴더)를 생성할 때 사용하는 명령어입니다. mkdir [옵션][생성 할 디렉토리] new_folder 디렉토리 생성 ex) mkdir new_folder /home/user/위치에 new_folder 디렉토리 생성 ex) mkdir /home/user/new_folder new_folder, new_folder2, new_folder3 디렉토리 생성 ex) mkdir new_folder new_folder2 new_folder3 경로를 지정하지 않으면 현 위치를 Defualt로 합니다. 생성할 디렉토리를 여러개 나열하여 한번의 명령어로 복수의 디렉토리를 생성할 수 있습니다. 자주 사용하는 옵션 -m : 디렉토리를 생성할 때 권한을 ..

[Linux] 리눅스 rm 명령어 사용법 & 옵션 정리 (파일, 디렉토리 삭제) [내부링크]

rm rm의 뜻은 remove의 약자로 파일이나 디렉토리( -r 옵션시 삭제가능)를 삭제 시킬때 사용하는 명령어입니다. 한번 지운 파일은 복구가 어렵기 때문에 rm 명령어를 실행시키기전에 두번 세번 확인하는 습관을 가집시다. rm [옵션][삭제 할 디렉토리/파일] test.txt 삭제 ex) rm test.txt new_folder /home/user/test.txt 삭제 ex) rm /home/user/test.txt new_folder 디렉토리 삭제 ex) rm -r new_folder new_folder 디렉토리 삭제 시 삭제 확인 메시지를 출력하지 않음 ex) rm -rf new_folder 경로를 지정하지 않으면 현 위치를 Defualt로 합니다. 비어있지 않은 디렉토리는 -r 옵션 없이는 삭제..

[Linux] 리눅스 mv 명령어 사용법 & 옵션 정리 (파일 이동, 이름 바꾸기) [내부링크]

mv mv의 뜻은 move의 줄임말로 파일이나 디렉토리를 이동 시킬때 사용하는 명령어입니다. mv [옵션][이동 할 파일][이동 될 위치] 현재 디렉토리에 있는 test.txt 파일을 디렉토리 내부의 new_folder 디렉토리로 이동 ex) mv test.txt new_folder 현재 디렉토리에 있는 test.txt 파일을 new_test.txt라는 파일로 이름 바꾸기 ex) mv test.txt new_test.txt /user/jtaewu 경로의 test.txt 파일을 /user/jtaewu 디렉토리로 이동 ex) mv test.txt /user/jtaewu/new_folder /user/jtaewu 경로 test.txt 파일을 /user/guest 디렉토리에 new.txt로 바꾸어 이동 ex) ..

[Linux] 리눅스 cp 명령어 사용법 & 옵션 정리 (파일, 디렉토리 복사) [내부링크]

cp cp의 뜻은 copy의 줄임말로 파일이나 디렉토리를 복사할 때 사용하는 명령어입니다. cp [옵션][복사 할 디렉토리/파일][복사 될 디렉토리/파일] 현재 디렉토리에 있는 test.txt 파일을 new_test.txt라는 이름으로 현 위치에 복사 ex) cp test.txt new_test.txt /user/jtaewu 경로의 test.txt 파일을 new_test.txt라는 이름으로 현재 위치에 복사 ex) cp /user/jtaewu/test.txt new_test.txt /user/jtaewu 경로의 test.txt 파일을 new_test.txt라는 이름으로 /user/guest에 복사 ex) cp /user/jtaewu/test.txt /user/guest/new_test.txt cp 명령어..

[Linux] 리눅스 cd 명령어 사용법 정리 (디렉토리 이동) [내부링크]

CD의 뜻은 change directory의 줄임말로 현재 작업하고 있는 디렉토리의 위치를 이동하는 명령어 입니다. CD 명령어 뒤에 디렉토리 이동경로를 입력해주시면 해당 디렉토리로 즉시 이동합니다. 이 디렉토리 이동경로를 입력하실때는 키보드 TAB 버튼을 함께 사용하시면 어느정도 경로를 자동으로 지정해주기에 좀 더 편하게 디렉토리 이동을 하실 수 있습니다. cp [이동 할 디렉토리 경로] ex) cd / : root로 이동 ex) cd project : 현재 디렉토리 내부에 있는 project 디렉토리로 이동 ex) cd /user/jtaewu : /user/jtaewu 경로의 디렉토리로 이동 현재 위치한 디렉토리의 위치를 이동할 수 있습니다. CD 명령어에는 별도의 옵션이 존재하지 않습니다. 이동할 ..

[Linux] 리눅스 ls 명령어 사용법 & 옵션 정리 (디렉토리 목록 확인) [내부링크]

ls ls의 뜻은 list의 줄임말로 현재 위치한 디렉토리에 있는 내용(디렉토리, 파일) 리스트를 출력하는 명령어입니다. ls [디렉토리] ex) ls / : root에 있는 파일 목록 출력 ex) ls /project : /project 경로의 디렉토리에 있는 파일 목록 출력 디렉토리를 지정하여 파일 목록을 출력할수도 있습니다. 옵션을 사용하지 않으면 숨김 파일은 나오지 않습니다. 디렉토리명을 생략하면 현재 위치한 디렉토리의 파일 목록을 출력합니다. 자주 사용하는 옵션 -l : 파일들을 나열할때 자세히 출력한다. -a : 경로안의 모든 파일을 나열한다.(숨김파일도 포함) -R : 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력한다. -h : 파일크기를 해석파기 편하게 출력한다. -r : 출력 결과를..

[Linux] 리눅스 현재 경로 표시 pwd 명령어 사용법 [내부링크]

리눅스 설정에 따라 좌측에 터미널에서 현재 내가 있는 위치가 안보이는 경우가 종종 있습니다. 이럴 때 현재 내가 있는 디렉토리의 경로를 알고 싶다면 pwd 명령어를 사용하시면 됩니다. pwd pwd의 뜻은 print working directory의 줄임말로 현재 위치한 디렉토리의 경로를 출력하는 명령어입니다. [jtaewu@localhost ~]$ pwd /home/jtaewu 터미널에 pwd라는 명령어를 입력하여 내가 /home/jtaewu라는 폴더안에 있다는 것을 확인하실 수 있습니다. pwd 명령어 옵션 pwd -L : 심볼릭 링크안에 있다면 심볼릭 링크의 경로를 표시합니다. pwd -P : 심볼릭 링크 안에 있다면 심볼릭 링크가 가리키는 디렉토리 경로를 표시합니다. 심볼릭 링크(Symbolic ..

[DB] 데이터베이스 인덱스(Index) 란 무엇인가? [내부링크]

인덱스(Index)란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조입니다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장됩니다. 이렇게 인덱스가 생성하였다면 앞으로 쿼리문에 "인덱스 생성 컬럼을 Where 조건으로 거는 등"의 작업을 하면 옵티마이저에서 판단하여 생성된 인덱스를 탈 수가 있습니다. 만약 인덱스를 타게 되면 아래의 그림과 같이 인덱스를 타게 되고 먼저 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작을 하여 검색 속도의 향상을 가져올 수 있습니다. 즉 인덱스는 책에 있는 목차라고 생각하시면 편합니다. 우리가 책에서 정보를 찾을때도 먼저 원하는 카테고리를 목..

[Oracle] 오라클 실행 계획 확인하기 (EXPLAIN PLAN, SET AUTORACE, SQL TRACE) [내부링크]

실행 계획 확인하기 실행 계획이란 SQL이 실행되어 데이터를 처리하고자 할 때 옵티마이저에서 수립되는 SQL 실행 방법론입니다. 이 실행 계획을 구성하는 내용의 분석을 통해 SQL의 비 효율적인 부분을 확인할 수 있고 쿼리의 성능 향상을 위한 튜닝 포인트도 도출해낼 수 있습니다. 실행 계획을 알아내는 방법은 크게 EXPLAIN PLAN과 SET AUTORACE, SQL TRACE 이렇게 세 가지 방법이 있습니다. [DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 [DB] 데이터베이스 실행 계획에 대하여 EXPLAIN PLAN 사용 예시 EXPLAIN PLAN -- EXPLANIN PLAN 선언부 SET STATEMENT_ID = 'PLAN1' INTO PLAN_TABLE -- SQL에 PLAN..

[DB] 데이터베이스 실행 계획에 대하여 [내부링크]

실행 계획이란? 실행계획이란 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 옵티마이저가 수립하는 작업 절차입니다. 이렇게 만들어진 실행 계획은 여러 가지 방법을 통해 확인할 수 있습니다. 실제 프로젝트에서 SQL 튜닝 업무를 하다 보면 개발자들이 DBMS 툴을 활용하여 실행 계획을 확인하는 것을 자주 보실 수 있습니다. SQL을 실행한 후 실행 계획을 판단하여 이 SQL이 어떠한 방식으로 실행되는지 확인이 가능합니다. [DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 쿼리문의 실행 계획을 확인하는 방법 쿼리문의 실행 계획을 확인하는 방법은 EXPLAIN PLAN, AUTOTRACE, SQL TRACE 이렇게 3가지가 있습니다. 실행 계획을 판단하는 방법은 아래 포스팅에 오라클을 활용하여..

[DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 [내부링크]

옵티마이저(Optimizer)란? 옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진입니다. 컴퓨터의 두뇌가 CPU인 것처럼 DBMS의 두뇌는 옵티마이저라고 할 수 있습니다. 개발자가 SQL을 작성하고 실행하면 소프트웨어 실행파일처럼 즉시 실행되는 것이 아니라 옵티마이저(Optimizer)라는 곳에서 "이 쿼리문을 어떻게 실행시키겠다!"라는 여러 가지 실행계획을 세우게 됩니다. 이렇게 실행계획을 세운 뒤 시스템 통계정보를 활용하여 각 실행계획의 예상 비용을 산정한 후 각 실행계획을 비교해서 최고의 효율을 가지고 있는 실행계획을 판별한 후 그 실행계획에 따라 쿼리를 수행하게 되는 것입니다. 옵티마이저의 종류 옵티마이저는 실행 계획을 세우는 방식에 따라 규..

[Web] 서블릿(Servlet)이란 무엇인가? 서블릿 총정리 [내부링크]

서블릿(Servlet)이란? 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술입니다. 웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있기 마련이고 이 요청과 응답에는 규칙이 존재합니다. 이러한 요청과 응답을 일일이 처리하려면 굉장히 힘들겠죠? 서블릿은 이러한 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술이라고 생각하시면 이해가 빠를듯 합니다. 서블릿은 자바 클래스로 웹 애플리케이션을 작성한 뒤 이후 웹 서버 안에 있는 웹 컨테이너에서 이것을 실행하고, 웹 컨테이너에서는 서블릿 인스턴스를 생성 후 서버에서 실행되다가 웹 브라우저에서 서버에 요청(Request)을 하면 요청에 맞는 동작을 ..

[Web] Web Server와 WAS(Web Application Server)에 대하여 [내부링크]

Web Service의 전체적인 흐름 웹 개발을 진행한다고 하면 위의 그림과 같은 구조로 시스템을 구성하게 됩니다. 전체적인 흐름을 보면 웹 브라우저에서 Web Server로 HTTP 요청을 보내고 정적 요청인 경우에는 즉각적으로 Web Server에서 응답을 합니다. 하지만 동적 요청인 경우에는 Web Sever에서 대응하지 못하고 Web Server에 연결되어 있는 Web Application Server 중 한 곳에 처리를 위임합니다. Web Application Sever는 Web Server에서 요청을 받게 되면 컨테이너가 응답하여 동적 콘텐츠를 삽입할 수 있는 프로그래밍 언어인 Java를 사용할 수 있게끔 JSP / Servlet을 실행한 뒤 DB에서 값을 가져오는 등의 동적인 값을 확정하고 ..

[Windows] 웹 사이트 도메인 IP 주소 확인하기 (nslookup) [내부링크]

가끔 필요로 인해 내가 개발하고 있는 사이트의 도메인 IP주소를 알아야 할 경우가 있습니다. 이럴때는 윈도우 cmd창에서 nslookup 명령어를 활용하여 도메인의 정보를 조회하시면 됩니다. nslookup명령어는 DNS 서버에 도메인이나 ip주소를 질의해서 DNS 서버에 있는 정보를 응답받는 명령어 입니다. nslookup 명령어를 활용하여 도메인 IP 주소 확인하기 명령 프롬프트(CMD)창을 켠 후 nslookup [도메인 명]으로 입력하면 설정된 DNS 서버에 질의하여 해당 도메인의 IP주소를 조회합니다. 서버의 숫자에 따라 응답되는 ip주소는 여러개일 수 있습니다. nslookup 명령어 옵션 및 사용법 cmd창에 nslookup ? 이렇게 명령어 + 물음표를 입력하면 nslookup 도움말을 확..

[Windows] ping 테스트 하는 방법 (인터넷 연결 진단) [내부링크]

Ping 이란? ping이란 Paket Internet Groper의 약자이며 컴퓨터 네트워크 상태를 점검, 진단하는 명령어입니다. ping을 보내는 대상 컴퓨터를 향해 일정 크기의 패킷(packet, 네트워크 최소 전송 단위)을 보낸 후 (ICMP echo request) 대상 컴퓨터가 이에 ping에 대해 응답하는 메시지(ICMP echo reply)를 보내면 이를 수신, 분석하여 대상 컴퓨터가 작동하는지, 또는 대상 컴퓨터까지 도달하는 네트워크 상태는 어떠한지를 알 수 있습니다. 예를 들어 인터넷이 끊긴다고 가정하였을 때 공유기에 ping을 날려 주고받은 패킷의 손실률을 파악하여 인터넷의 연결 상태를 진단하실 수 있습니다. 인터넷 연결 진단 Ping 테스트 하는법 1. PC -> 공유기 까지의 연결..

[Windows] 특정 포트를 사용하고 있는 프로세스 죽이기 (Kill) [내부링크]

아파치 톰캣을 사용하다 보면 종종 위와 같은 에러가 뜰 수 있습니다. 톰캣에서 사용해야 할 포트를 다른 프로세스에서 실행 중이거나 시스템 프로세스가 포트를 사용하고 있어 실행을 할 수 없다는 내용인데요. 이럴 경우 톰캣에서 사용할 포트번호를 바꾸는 방법도 있겠지만 꼭 해당 포트를 사용해야 할 경우에는 그 포트를 사용하고 있는 프로세스를 강제로 KILL 해서 죽이고 톰캣을 재 실행하는 방법도 있습니다. 윈도우10 에서 특정 포트 번호 죽이기 (Kill) 저는 톰캣에서 80 포트를 사용하고 있으므로 80 포트를 사용하고 있는 프로세스를 죽이는 방법으로 예를 들겠습니다. 1. 작업표시줄 검색창에서 cmd를 입력하고 명령 프롬프트를 관리자 권한으로 실행시킵니다. 2. netstat -ano 명령어를 입력하여 8..

[Java] 자바 두 날짜 사이의 차이 계산하기 [내부링크]

자바에서 가끔 두 날짜의 간격 예를 들어 두 날짜의 일수나, 시간, 분, 초등을 구해야 할 때가 있습니다. 이럴 때는 대개 두 날짜를 getTime을 활용하여 밀리 세컨드로 변환한 후 두 날짜의 차이를 계산한 뒤 원하는 단위로 바꾸는 작업을 통해 계산합니다. Date.getTime() Date.getTime()은 Date를 밀리세컨드로 변환해서 long형 숫자 데이터로 반환합니다. 이를 이용하면 산술 연산으로 시간 차이를 쉽게 구할 수 있습니다. 1000밀리초는 1초로 계산되므로 getTime()으로 구한 값을 밀리초를 1000으로 나누면 초를 얻습니다. 이 초를 기본으로 하여 다른 시간 단위들도 계산할 수 있습니다. 초 : / 1000 분 : / (1000 * 60) 시 : / (1000 * 60 * ..

[Java] 날짜 포맷의 유효성 체크하기(Validation Date) [내부링크]

개발을 하다보면 데이터베이스에 지정된 포맷의 날짜를 넣어야 할 경우들이 종종 있고 그렇게 되면 자연스럽게 이 데이터가 정해진 날짜 포맷에 맞는지 검증하는 로직이 들어가야 합니다. 날짜 포맷의 유효성 검사하기 (Validation Date) public class test { public static void main(String[] args) { String exDate1 = "2021/01/01"; String exDate2 = "20210101"; System.out.println(checkDate(exDate1)); System.out.println(checkDate(exDate2)); } public static boolean checkDate(String checkDate) { try { Sim..

[Java] 자바 문자열(String)에 " 큰 따옴표 넣기 [내부링크]

자바에서는 문자열 String값의 값의 처음과 끝을 " " 이렇게 큰 따옴표로 인식하고 있습니다. 그렇기에 문자열 안에 큰 따옴표 자체를 넣을때는 \" 이런식으로 이스케이프 시퀀스를 활용하여 표현해주어야 합니다. 자바 문자열안에 큰 따옴표(") 넣기 String example = "\"url\" : \"https://www.naver.com\""; System.out.println(example); 위와 같이 \" 이스케이프 시퀀스를 통해 따옴표를 나타내면 문자열의 열고 닫음을 표현하는 예약문자로써의 기능이 아닌 따옴표 그 자체로 문자열 안에 포함시킬 수 있습니다. 이스케이프 시퀀스 위와 같이 이스케이프 시퀀스는 \와 다른 문자를 결합하여 프로그래밍 언어 특성상 표현할 수 없는 문자를 표현하거나 컴퓨터를..

[Java] 자바 숫자에 천단위 콤마찍기 (금액 표기하기) [내부링크]

자릿수가 많은 금액은 가독성을 향상시키기위해 3자리수 금액의 1000단위마다 콤마( , )를 찍습니다. 단 콤마( , )는 문자열이기 때문에 String타입에 저장해야 합니다. 숫자 사이에 콤마( , )를 찍는 방법은 대표적으로 java.text.DecimalFormat 클래스를 활용하는 방법과 정규식을 활용하는 방법이 있습니다. DecimalFormat 클래스 활용 int amount = 1000000000; DecimalFormat df = new DecimalFormat("###,###"); String money = df.format(amount); System.out.println(money); 정규식 활용방법 String amount = "1000000000"; amount = amount.r..

[IDE] 이클립스 The Literal of type int is out of range 에러 해결 [내부링크]

가끔 큰 숫자를 쓰다보면 위와 같이 The Literal of type int is out of range 라는 에러가 발생할 경우가 있습니다. 말 그대로 그대로 int유형 범위(–2,147,483,648 ~ 2,147,483,647) 의 값을 벗어났다는 의미입니다. 기본적으로 숫자의 Defualt 인식값이 int로 되어 있어서 나타나는 현상인데요 해결 방안 에러를 해결하기 위해서는 이 숫자는 Long타입이라는 것을 명시해주어야 합니다. 숫자끝에 위와 같이 알파벳L을 붙이시면 이 값은 Long타입이라는것을 명시할 수 있습니다.

[IDE] Can't load IA 32-bit .dll on a AMD 64-bit platform 에러 해결방법 [내부링크]

개발환경 세팅 후 컴파일을 하면 아래처럼 Can't load IA 32-bit .dll on a AMD 64-bit platform이라는 에러가 뜰 때가 있습니다. 자바 프로젝트에서 DLL을 호출할때 나타나는 에러로 빌드한 DLL 파일은 32bit이지만 JVM은 64bit 이기 때문에 발생하는 에러입니다. 해결 방안 1. dll 파일을 64bit로 빌드한다. 2. JVM을 32bit로 설정하여 컴파일 한다. 이 중에서 2번째 방법이 더 간단하고 향후 똑같은 문제가 발생하는 것을 예방하실 수 있습니다. 현재 설치되어 있는 JDK 32bit / 64bit 확인하기 cmd창을 켜신 후 java -d64 -version 이라고 입력했을 때 위와 같이 나온다면 64bit JDK가 설치된 것입니다. JVM을 32B..

[IDE] 이클립스 Editor does not contain a main type 에러 해결 [내부링크]

이클립스에서 자바 프로젝트를 컴파일할때 위와 같은 Editor does not contain a main type이라는 에러가 발생하거나 Selection does not contain a main type 에러가 발생할때의 대처방법에 대해서 알아보도록 하겠습니다. 자바 파일이 src폴더 밖에 있는 경우 scr폴더가 없다면 프로젝트 우클릭 -> Java Build Path -> Source -> Add Folder를 눌러 src폴더를 만들어주고 그 안에 자바 클래스 파일을 넣으시면 됩니다. 프로젝트에서 JDK를 인식하지 못하고 있는 경우 프로젝트 우클릭 -> Project Facets -> Java를 사용하고 있는 버전으로 바꿔줍니다. 이밖에 발생할 수 있는 경우들 1. main함수가 존재하지 않거나 오..

[IDE] 이클립스 JVM is not suitable for this product 에러 해결 [내부링크]

이클립스를 신규 설치 후 이클립스를 실행하였더니 위와 같은 에러가 떴습니다. 위의 에러를 그대로 해석하자면 JVM 버전 15.0.2이 이 이클립스에 적절하지 않고 JVM 16 이상이 필요하다는 내용입니다. 즉 이클립스에서 필요한 JDK의 버전과 현재 PC에 설치되어있는 JDK의 버전이 다르기 때문이고 이 문제를 해결하려면 이클립스에서 요구하는 JDK와 현재 PC에 설치되어있는 JDK의 버전을 맞춰주시면 됩니다. version 1.7.0_80 of the jvm is not suitable could not create the java virtual machine 이클립스 실행시 위와 같은 오류도 아래 해결방안을 통해 해결이 가능합니다. 해결방안 1. 이클립스를 구 버전으로 재설치한다. 2. JDK를 이클..

[Windows] 윈도우10 파일 확장자 변경 방법 [내부링크]

업무를 하다 보면 xlsx를 xls로 바꾸어야 하는 등 확장자 변경을 해야 할 때가 종종 있습니다. 간단하게 파일 이름 바꾸기를 통해 확장자명을 변경해주면 되지만 윈도우10의 파일의 기본 확장자 설정이 파일 확장자 숨기기로 되어 있어 확장자명이 표시되지 않는 경우가 종종 있어 난감한 상황에 빠질 수 있는데요. 이번 포스팅에서는 윈도우10에서 파일 확장자 변경 방법에 대해 알아보도록 하겠습니다. 윈도우10 파일 확장자 변경 방법 1. 위의 그림과 같이 확장자명이 보이지 않다면 보기 -> 파일 확장자명을 체크박스를 체크합니다. 2. 바꾸고싶은 파일의 확장자명을 바꾸고싶은 확장자로 변경합니다. 저는 zip파일로 한번 바꾸어보겠습니다. 3. 파일 확장자를 변경하면 위와 같은 알림창이 나올텐데 여기서 예를 누릅니..

[Windows] 윈도우10 방화벽 예외 설정 방법 [내부링크]

이전 글에서도 설명했듯 방화벽은 보안규칙에 기반하여 네트워크 트래픽을 제어하여 허락받지 않은 외부의 침입을 막고 내부에서 유출되는 정보를 관리하기 위여 보안을 높입니다. 하지만 외부와 트래픽을 주고받아야 할 프로그램이 있다면 방화벽이 이 트래픽을 차단하여 특정 프로그램의 사용이 힘들어지는 상황이 벌어질 수 있습니다. 이러한 경우를 대비하여 Microsoft에서는 방화벽에 특정 프로그램만 예외사항에 추가하여 차단을 하지 않는 방법을 제공하고 있습니다. 이번 포스팅에서는 Windows 10에서 방화벽 예외 사항을 추가하는 방법에 대해 포스팅하도록 하겠습니다. 윈도우10 방화벽 예외 사항 추가 하기 1. 작업표시줄 검색창에서 방화벽 상태 확인이라고 검색한 뒤 Windows Defender 방화벽을 실행시킵니다..

[Windows] 윈도우10 방화벽 해제 / 설정 방법 [내부링크]

방화벽이란 미리 정의된 보안규칙에 기반하여 네트워크 트래픽을 제어하여 허락받지 않은 외부의 침입을 막고 내부에서 유출되는 정보를 관리하기 위여 보안을 높이는 수단입니다. 하지만 이러한 방화벽이 원격제어와 같은 특정 네트워크에서 PC에 접속을 해야하는 상황이 벌어지면 차단하지 말아야 할 트래픽을 차단하여 문제가 될 수 있는데 필요한 경우에는 방화벽을 해제해야하는 상황이 오기도 합니다. 이번 포스팅에서는 Windows 10에서 방화벽을 설정하고 해제하는 방법에 대해 포스팅하도록 하겠습니다. 윈도우 10 방화벽 해제하기 1. 작업표시줄 검색창에서 방화벽 상태 확인이라고 검색한 뒤 Windows Defender 방화벽을 실행시킵니다. 2. Windows Defender 방화벽의 좌측탭에 Windows Defen..

[Windows] 윈도우10 화면 창 깜빡거리는 현상 해결하기 [내부링크]

새 노트북에 윈도우를 설치하고 사용하는데 어느 순간부터 계속 윈도우의 창들이 깜빡깜빡 거리는 현상이 발생하였습니다. 약 3초에 한 번씩 깜빡거렸는데 한번 깜빡일 때마다 커서 포커스가 튀어서 도저히 컴퓨터를 쓰기가 힘들었기에 왜 이러한 문제가 발생하였는지 알아보고 문제를 해결하였습니다. 혹시나 저와 같은 현상이 발생하는 분들께 조그마한 도움이 되었으면 좋겠다는 생각에 문제 해결 과정을 포스팅으로 남겨볼까 합니다. 그래픽 드라이버 업데이트 화면이 깜빡깜빡 거리는 현상들은 대부분 그래픽카드와 윈도우 운영체제 간의 호환이 잘 되지 않아 나타나는 현상입니다. 우선 장치 관리자 -> 드라이버 업데이트를 통해 그래픽 카드를 최신 버전으로 업데이트합니다. 윈도우 업데이트 그래픽 카드를 업데이트했음에도 문제가 해결되지 ..

[Windows] 윈도우10 보안 해제 방법 (Windows Defender 끄기) [내부링크]

윈도우10에 기본으로 탑재된 마이크로소프트에서 만든 백신 프로그램인 Windows Defender는 멀웨어 방지 기능이 포함되어 있어 바이러스, 스파이웨어, 랜섬웨어와 같은 위협에서 PC를 보호해줍니다. 좋은 프로그램이지만 이러한 기능들이 가끔은 내가 다운받아야 할 파일을 받지 못하게 막는다던지, 네트워크에 장치를 연결되지 못하도록 막는다던지 하는 문제가 발생할 수 있어 Windows Defender사용을 잠시 중단하고 싶을때가 종종 있는데요. 이번 포스팅에서는 Windows Defender를 잠시 끄는 방법과 영구적으로 사용하지 않는 방법에 대해 포스팅하도록 하겠습니다. 보안 프로그램 랭킹보기 Windows Defender 실시간 보호 잠시 해제하는 방법 1. [ Windows Key ] + [ i ]..

[Windows] 내 컴퓨터 PC 성능 측정(벤치마크) 프로그램, 사이트 모음(2024년) [내부링크]

컴퓨터를 구성하고 있는 하드웨어 부품들은 절대적인 스펙이 같다고 결코 동일한 성능을 내는 것은 아닙니다. 오버클럭효과, 내부 최적화, 쿨러 등등 성능에 영향을 끼칠 수 있는 요인이 매우 많기 때문입니다. 그렇기에 절대적인 스펙을 비교하는 것보다는 컴퓨터에게 굉장히 어려운 일을 시키고 그 일을 수행하는 연산성능을 시험하여 수치화하는 벤치마크 프로그램으로 측정해 보는 것이 가장 정확합니다.  벤치마크 프로그램 3DMARK3DMARK 다운로드 링크전세계적으로 가장 인기 있는 벤치마크 프로그램 3DMARK입니다. 상당히 좋은 벤치마크 툴을 무료로 사용할 수 있으며 결괏값도 직관적으로 확인할 수 있습니다. 단 소프트웨어 용량이 많다는 점은 단점입니다. 사용법은 아래 링크를 참고해 주세요.3DMARK 사용법 시네벤..

[Windows] 내 컴퓨터 PC의 성능 측정하기 (Windows10 자체 내장기능) [내부링크]

컴퓨터에 장착되어있는 하드웨어 장비들의 성능이 좋아도 발열 관리나 노후화등의 다양한 요인으로 인해 실제로는 제 성능이 안 나오는 경우가 있습니다. 자신의 컴퓨터의 사양이 구동하고자 하는 소프트웨어의 권장사항을 충족하고 있음에도 버벅거림과 같은 렉이 발생한다면 한번 내 PC의 성능을 테스트해보는 것도 좋을 듯합니다. 내 PC 체험지수 측정하기 1. 작업표시줄 검색창에서 Powershell을 입력하고 Windows PowerShell을 실행시킵니다. 2. PowerShell에서 winsat formal 명령어를 입력하여 Windows 시스템 평가 도구를 실행시킵니다. 3. Windows 시스템 평가 도구를 실행시키면 위와 같이 약 1분 남짓의 시간 동안 컴퓨터가 하드웨어의 작업 실행 시간을 측정하는 방식으로..

[Windows] 내 컴퓨터 PC의 사양 확인하기 (Windows 10) [내부링크]

PC성능에 과분한 무거운 프로그램이나 게임을 돌릴때 소프트웨어가 버벅거리는 현상이 생깁니다. 버벅임 없이 소프트웨어를 구동하기 위해서는 해당 소프트웨어가 요구하는 권장사양에 내 PC를 충족시켜주어야 하는데요. 이 과정에서 내 PC의 성능을 확인할 수 있는 방법 정도는 알고 있어야겠죠. 이번 포스팅에서는 내 Windows 10에서 내 PC의 성능을 확인하는 방법에 대해서 알아보도록 하겠습니다. 내 PC 사양 알아보기 1. [Windows Key] + [X] 버튼을 함께 누르면 좌측 하단에 위와 같은 창이 나타납니다. 여기서 시스템을 클릭해주세요. (내 PC 아이콘에 우클릭 -> 속성창을 클릭하시거나 제어판 -> 시스템으로 들어가셔도 됩니다.) 2. 그러면 위와 같이 간략한 내 PC의 사양을 확인할 수 있는..

[Windows] 내 PC의 MAC주소 확인하기 (Windows 10) [내부링크]

MAC주소 (Media Access Control Address) 물리적 네트워크 주소라고도 하며 데이터 링크 계층(2 계층)에서 사용하는 네트워크 인터페이스 카드(NIC) 즉, 하드웨어에 할당된 고유 식별번호 주소입니다. ex) D1-F2-FK-CC-12-34 MAC 주소(물리적 주소)는, 무선 LAN 카드 또는 무선 LAN 기능 내장 기기에 개별적으로 부여되는 16진수 12자리의 단말 식별 번호입니다. 네트워크 연동 시 종종 필요한 경우가 있어 윈도우10에서 내 PC의 MAC주소를 확인하는 방법에 대해 포스팅하려 합니다. CMD창에서 간단한 명령어를 통해 조회하실 수 있습니다. getmac /v 명령어를 통한 조회 1. 윈도우 + R 을 눌러 실행창을 켠 뒤 cmd를 입력하여 명령 프롬포트창에 들어갑..

[Network] ARP(주소 결정 프로토콜)에 대하여 [내부링크]

ARP(주소 결정 프로토콜)이란? 주소 결정 프로토콜(Address Resolution Protocol, ARP)은 네트워크 상에서 IP 주소를 MAC 주소로 대응시키기 위해 사용됩니다. 처음 통신을 시작할 때는 상대방의 Mac Address를 모르는데 그때 상대방의 Mac Address를 알아내기 위하여 사용하는 프로토콜입니다. ARP는 요청과 응답으로 구성된 프로토콜로 라우팅 되지 않는 단일 네트워크에서만 동작하며. IP와 MAC 주소를 캡슐화하기 때문에 위의 그림과 같이 L2와 L3 사이에 있는 프로토콜이라고 생각하시면 됩니다. ARP 프로토콜과는 반대로 해당 MAC 주소에 맞는 IP값을 알아오는 프로토콜을 역순 주소 결정 프로토콜(Reverse Address Resolution Protocol, ..

[Network] 인터넷과 웹이 동작하는 과정과 원리에 대하여 [내부링크]

인터넷이란? 인터넷이란 전 세계에 걸쳐 원거리 접속이나 파일 전송, 전자 메일 등의 데이터 통신 서비스를 받을 수 있는, 컴퓨터 네트워크의 시스템이라고 정의되어 있습니다. 인터넷은 접속하는 여러 디바이스가 이 거대한 망에서 상호간의 통신을 주고받고 데이터들이 오고 가면서 상당히 복잡한 과정의 절차를 거칩니다. 즉 인터넷이란 디바이스끼리 통신을 할 수 있는 네트워크라는 개념에서 조금 더 확장된 모든 디바이스가 통신을 할 수 있는 거대한 네트워크다 라고 생각할 수 있겠습니다. 그렇다면 각각의 디바이스끼리 어떻게 위치를 찾아가는것일까요? 이 문제를 해결하기 위해 우리가 사는 집에도 주소가 있듯 디바이스가 위치한 네트워크마다 고유의 주소를 지정해두었습니다. 그 주소의 이름을 바로 IP주소라고 합니다. (우리나라..

[Web] 톰캣 서버 자체 실행후 웹 프로젝트 페이지(html, jsp) 실행하기 [내부링크]

대부분 웹 프로젝트를 할때 이클립스에서 톰캣을 연동하신 후 사용하시곤 합니다. 하지만 이클립스와 같은 IDE가 없이도 톰캣 자체적으로 서버를 올리고 웹 프로젝트의 파일들도 볼 수 있는 방법이 있습니다. 톰캣 서버 올리고 내리기 1. 톰캣이 설치된 폴더의 bin으로 들어가시면 위와 같이 startup과 shutdown이라는 윈도우 배치파일이 있습니다. startup.bat을 실행하면 톰캣 서버가 올라가고 shutdown.bat을 실행시키면 톰캣 서버가 내려갑니다. 그냥 아이콘을 더블클릭하여 실행시키셔서 실행이 된다면 그냥 이렇게 켜고 끄고 하셔도 되지만 만약 되지 않는다면 로그 확인을 위해 CMD에서 실행을 시켜보는것을 추천드립니다. 2. 먼저 CMD창을 켜신 후 CD bin경로를 입력하여 Tomcat의 ..

[IDE] 이클립스 프로젝트에 라이브러리 추가하기 +(cannot be resolved to a type 해결) [내부링크]

가끔가다 위와 같이 클래스에 cannot be resolved to a type이라는 오류메시지를 보신적이 있으실겁니다. 이 경우 대부분 프로젝트내에 라이브러리가 추가되지 않아서 생기는 문제입니다. JDK내부에 있는 클래스에서 오류가 난다면 JDK가 제대로 잡히고 있지 않다는것이니 아래글을 참고하셔서 해결해주시기 바랍니다. [Jsp] cannot be resolved to a type 오류해결 이클립스 프로젝트에 라이브러리 추가하기 1. 라이브러리를 추가하고 싶은 프로젝트에 우클릭을 한 후 Properties로 들어갑니다. 2. 좌측 트리에서 Java Build Path를 클릭하고 Libraries탭에서 추가해주시면 됩니다. 프로젝트 내부(lib폴더)에 라이브러리가 존재할 경우에는 Add Jars 버튼을..

[IDE] 이클립스(Eclipse) 프로젝트 폴더 이동 및 절대주소 확인 [내부링크]

가끔 프로젝트의 절대주소가 필요한 경우가 종종 있습니다. 하지만 여러군데에서 import한 프로젝트의 경우 프로젝트의 위치를 가끔씩 까먹을 경우가 있는데요. 오늘은 유용하게 사용할 수 있는 프로젝트의 절대주소를 확인하고 해당 위치로 이동하는 방법에 대해 포스팅하도록 하겠습니다. 절대주소 : 로컬에 저장되어 있는 프로젝트의 위치 상대주소 : 프로젝트를 실행시켰을 경우의 도메인 주소 이클립스 프로젝트 절대주소 및 저장된 폴더 이동 1. 프로젝트에 우클릭을 한뒤 Properties를 클릭합니다. 2. Resource의 Location에 프로젝트가 저장되어있는 절대주소 위치가 나타나 있습니다. 해당 폴더로 이동하고 싶다면 주소 옆에있는 이동 아이콘을 클릭하시면 됩니다. 3. 프로젝트가 있는 폴더의 위치로 이동됩..

[IDE] 이클립스(Eclipse) 자바 프로젝트를 웹 프로젝트로 변환하기 [내부링크]

기존에 Java Application으로 작업한 프로젝트도 필요에 따라서는 Dynamic Web Project로 변환할 수 있습니다. 기존에 Web Project였음에도 불구하고 이클립스에서 인식을 못하여 Java Project로 인식하는 경우에도 Web Project로 구조를 바꾸어 줄 수 있습니다. Java Project와 Web Project구분 Java Project와 Web Project의 구분은 아이콘으로 구분하시면 됩니다. 자세히 보시면 두개의 아이콘이 다르답니다. Java Project를 Dynamic Web Project로 변환하기 1. 변환하고자 하는 프로젝트에 오른쪽 클릭을 한 후 Properties창을 켭니다. 2. 좌측 트리에서 Project Facets를 클릭한 후 Convert..

[IDE] 이클립스(Eclipse) 프로젝트 추가(import)하기 + No Projects are found to import 해결 [내부링크]

이클립스에서는 다른곳에서 받아온 프로젝트를 손쉽게 가져와서 작업할 수 있습니다. 꼭 WorkSpace안에 있는 프로젝트만 가져올 수 있는것이 아니라. 경로가 어디가 되었든 상관없이 가지고 올 수 있습니다. 오늘은 이클립스에서 프로젝트를 어떻게 가지고 오는지에 대해 포스팅 해보려합니다. 이클립스(Eclipse) 프로젝트 추가(import)하기 1. 상단바에서 File -> Import를 선택합니다. 2. 프로젝트의 형태마다 다르겠지만 폴더로 되어있는 프로젝트라면 General -> Existing Projects into Workspace를 클릭합니다. 프로젝트가 War파일로 되어있다면 Web-> War file로 import하시면 됩니다. 3. import할 프로젝트의 위치를 선택하고 Finish를 누릅..

[Design Pattern] 데코레이터 패턴(Decorator pattern)에 대하여 [내부링크]

데코레이터(Decorator pattern) 패턴이란? 데코레이터 패턴(Decorator Pattenr)은 주어진 상황 및 용도에 따라 어떤 객체에 책임(기능)을 동적으로 추가하는 패턴을 말합니다. 데코레이터라는 말 그대로 장식이라고 생각하시면 편합니다. 기본 기능을 가지고 있는 클래스를 하나 만들어주고 추가할 수 있는 기능들을 추가하기 편하도록 설계하는 방식입니다. Component : 실질적인 인스턴스를 컨트롤하는 역할 ConcreteComponent : Component의 실질적인 인스턴스의 부분으로 책임의 주체의 역할 Decorator : Component와 ConcreteDecorator를 동일시 하도록 해주는 역할 ConcreteDecoreator : 실질적인 장식 인스턴스 및 정의이며 추가된..

[Design Pattern] 템플릿 메소드 패턴(Template Method Pattern)에 대하여 [내부링크]

템플릿 메소드 패턴(Template Method Pattern)이란? 템플릿 메소드 패턴이란 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내용을 바꾸는 패턴입니다. 디자인 패턴이라고 하기도 뭐할정도로 객체지향 언어로 개발을 하다보면 무의식적으로 사용하는 패턴입니다. 주로 개발을 하다보면 구체적인 구현은 다르지만 기본적인 기능은 비슷한 경우가 종종 있습니다. 예를 들면 HTTP와 SMTP Client 프로그램의 경우, 주고받는 메시지의 내용이 서로 다를 뿐 둘 다 인터넷 프로토콜을 이용하여 서버에게 요청을 전달하고 결과를 수신한다는 점에서 동일합니다. 이처럼 두개 이상의 프로그램이 기본적으로 동일한 골격 하에서 동작할때 기본 골격에 해당하는..

[Design Pattern] 프록시 패턴(Proxy Pattern)에 대하여 [내부링크]

프록시 패턴이란? 프록시는 대리인이라는 뜻으로, 무엇인가를 대신 처리하는 의미입니다. 일종의 비서라고 생각하시면 됩니다. 사장님한테 사소한 질문을 하기보다는 비서한테 먼저 물어보는 개념이라고 생각할 수 있겠습니다. 이렇게 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조 하는것이 아니라, 해당 객체를 대행(대리, proxy)하는 객체를 통해 대상객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고 또한 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있습니다. 예를 들어 용량이 큰 이미지와 글이 같이 있는 문서를 모니터 화면에 띄운다고 가정하였을때 이미지 파일은 용량이 크고 텍스트는 용량이 작아서 텍스트는 빠르게 나타나지만 ..

[Design Pattern] 옵저버 패턴(Observer Pattern)에 대하여 [내부링크]

옵저버 패턴(Observer Pattern)이란? 옵저버패턴이란 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴입니다. 어떤 객체의 변경 사항이 발생하였을때 이와 연관된 객체들에게 알려주는 디자인 패턴이라고 생각하시면 됩니다. 옵저버 패턴에는 주체 객체와 상태의 변경을 알아야 하는 관찰 객체(Observer Object)가 존재하며 이들의 관계는 1:1이 될 수도 있고 1:N이 될 수도 있습니다. 옵저버 패턴의 장단점 장점 1. 실시간으로 한 객체의 변경사항을 다른 객체에 전파할 수 있습니다. 2. 느슨한 결합으로 시스템이 유연하고 객체간의 의존성을 제거할 수 있다. 단점..

[Design Pattern] 싱글톤 패턴(Singleton Pattern)에 대하여 [내부링크]

싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴은 객체를 딱 하나만 생성하여 생성된 객체를 프로그램 어디에서나 접근하여 사용할 수 있도록 하는 패턴을 말합니다. 개발을 하다 보면 전역적으로 하나의 객체만을 사용해야 하는 경우가 종종 있습니다. 하지만 특별히 제한을 걸어두지 않는다면 객체들이 여러 개로 복제되는 경우가 생길 수 있겠죠. 싱글톤 패턴을 사용하면 객체 생성을 단 한 번으로 제한하여 객체들이 복제되는 경우를 방지할 수 있습니다. 또한 클래스를 사용하는 여러 곳에서 인스턴스를 계속 생성하여 불필요하게 메모리 낭비를 유발할 수 있다고 판단되는 경우에도 싱글톤 패턴을 사용할 수 있습니다. 싱글톤 패턴의 장점 1. 메모리 낭비를 방지할 수 있다. 2. 싱글톤으로 만들어진 클래스와 다른 ..

[Design Pattern] 디자인 패턴 정의와 종류에 대하여 [내부링크]

소프트웨어 디자인 패턴이란? 소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것입니다. 디자인 패턴은 소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하며, 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식입니다. 즉 "효율적인 코드를 만들기 위한 방법론"이라고 생각하시면 됩니다. 디자인 패턴은 외우기보다는 어떠한 패턴이 있는지 알고 수많은 디자인 패턴에서 다양한 코딩 노하우를 습득하는것이 중요하다고 생각합니다. "이 코드에는 무조건 이..

[Algorithm] 연결 리스트(LinkedList) 구현하기 (C++) [내부링크]

이중 연결 리스트 이번 포스팅에서는 더블 링크드 리스트라고도 하는 이중 연결 리스트에 대해서 알아보고 실제로 구현해보려고 합니다.이중 연결 리스트에는 prev, next라는 이전과 다음 노드를 가리키는 포인터를 가지고 있는 연결 리스트를 말합니다. prev라는 이전 노드를 가리키는 포인터, next라는 다음 노드를 가리키는 포인터를 갖고 있기 때문에 양쪽으로 탐색이 가능하다는 장점이 있습니다. 이중 연결 리스트는 Head라는 처음을 의미하는 노드와 Tail이라는 마지막을 의미하는 노드를 가지고 있습니다. 이것을 시작과 끝으로 노드들을 추가하고 삭제하게 됩니다. 노드 추가 노드의 추가는 기존의 마지막 노드와 Tail과의 연결을 끊고 새로운 노드를 추가하여 기존 노드의 Next를 새로운 노드의 Prev에 연..

[C++] 예외 처리 (Exception Handling) try, catch ,throw [내부링크]

예외란? 예외란 문법적인 오류가 아닌 프로그램이 의도하지 않은 오류를 말합니다. 즉 개발자가 예상하는 동작을 제외한 나머지 전체라고 할 수 있습니다. 대부분의 경우 예외가 발생하면 시도했던 모든일들을 취소하고 그 전 상태로 되돌아가도록 프로그램을 작성합니다. 좀 더 심각한 경우라면 프로그램을 종료해야겠죠. 예외와 오류는 명백히 다릅니다. 오류가 났을때 프로그램이 터지는 현상을 막으려고 억지로 예외처리를 하여 동작시키려 하는것은 잘못된 행위입니다. 오류가 나지않도록 프로그래밍을 하는것이 가장 중요하고 오류가 난다면 그냥 프로그램이 터지도록 내버려두는 편이 낫습니다. try catch문 사용법 C언어에서는 예외처리를 조건문 if문으로 처리를 해왔습니다. if문으로 예외처리를 하는것도 잘못된것은 아니지만 좀 ..

[자유여행] 경기도 파주시 헤이리 마을, 프로방스 여행 후기 [내부링크]

주말을 틈타 경기도 파주로 가볍게 1박 2일 여행을 다녀왔다. 나로서는 마땅히 여행으로 갈만한 선택지가 파주밖에 없었다. 차가 없어 대중교통을 이용해야만 했고 그렇다 보니 멀리 가기는 힘들어서 서울 근교를 찾아봤는데 그중에서 파주가 제일 괜찮다는 생각이 들었기 때문이다. 파주가 큰 도시는 아니지만 은근히 볼거리가 굉장히 많다. 대충 리스트를 뽑았는데 8군데나 되었다. 1. 프로방스 2. 헤이리마을 3. 프리미엄 아웃렛 4. 영어마을 5. 파주 벽조 치수 목원 6. 파주 김 악산 출렁다리 7. 임진각 통일전망대 8. 평화누리 공원 내 성격 같아서는 8군데 모두 들리는 것을 목표로 하고 싶었지만 같이 온 일행이 걷는걸 누구보다도 극혐하여 위의 리스트 중에 (1번, 2번, 3번) 프로방스, 헤이리 마을, 프리..

[일상] 원룸 에어컨 청소하기 (feat 공간 치유사) [내부링크]

제가 살고 있는 원룸은 저층이기도 하고 주변이 건물로 빽빽이 차 있어 환기가 쉽지 않아 항상 집안의 공기가 탁한 편이었습니다. 그래서 방 안의 공기의 질을 향상하고자 에어컨에 있는 공기청정 모드를 많이 사용하는데 요즘 들어 에어컨을 가동할 때마다 에어컨 특유의 꾸릿꾸릿한 냄새가 많이 났습니다. 이를 해결해보고자 에어컨 청소도 해보고 탈취제도 뿌려봤지만 냄새가 사라지지 않아 해결 방안을 찾아봤습니다. 청소하지 않은 에어컨에는 세균과 곰팡이가 득실거린다고 합니다. 에어컨을 켰을 때 축축한 곰팡이 냄새가 나면 즉시 청소를 해야한다고 하던데 그 특유의 에어컨 꾸릿꾸릿한 냄새가 곰팡이 냄새라는 생각이 갑자기 들더군요. 곰팡이를 제거하려면 에어컨 필터만 청소해서는 안되고 에어컨 전체를 뜯어서 내부의 곰팡이와 먼지를..

[C++] string 클래스 (문자열 다루기) 사용법 & 예제 총정리 [내부링크]

C++ 문자열 클래스(string) 기존 C언어에서는 문자열을 다루기 위해서는 char[] 배열을 사용하였습니다. 그리고 끝에 null문자 '\0'을 넣어줌으로써 문자열이 끝이났다는것을 판별하였죠. 이렇게 사용하다보니 문자열 길이도 신경써줘야 하고 사용하는 과정에서 문자열도 자주 깨지는 등의 불편한 점이 굉장히 많았습니다. 이와 같은 불편함을 줄이기 위해 C++에서는 Java나 Python과 같이 문자열을 다루는 string 클래스를 만들어 사용할 수 있게끔 되었습니다. string 클래스에서는 문자열을 객체로 다룹니다. 사용하기 편리해진 만큼 컴퓨터가 해야할 일이 많아졌다는 것을 뜻합니다. string클래스를 사용하면 char[] 배열을 사용하는 방식보다는 다소 느려지는것은 어쩔수 없는 부분이긴 합니다..

[C++] 연산자 오버로딩에 대하여 [내부링크]

연산자 오버로딩이란? 연산자 오버로딩이란 연산자를 재정의하여 사용자가 원하는 형태로 사용이 가능하게끔 하는것을 말합니다. 대부분의 기본 제공 연산자 함수는 전역 함수 또는 클래스로 재정의 가능합니다. 오버로드 된 연산자는 함수로 구현됩니다. 이렇게 재정의된 연산자 함수는 연산자를 이용하듯 호출할 수 있습니다. 이렇게 연산자들을 함수로 만들어서 넣어주면 사용자는 훨씬 더 간결한 방법으로 코드를 작성할수도 있고 코드의 확장성도 높아집니다. 연산자 오버로딩 사용시 주의점 1. C++에서 사용되지 않는 연산자는 재정의 할 수 없습니다. 2 기본 제공 데이터 형식에 적용할때 연산자의 의미를 다시 정의할 수 없습니다. 3. 오버로딩 한 연산자는 클래스 멤버함수이거나 전역함수여야만 합니다. 연산자 오버로딩 할 수 없..

[C++] 복사 생성자, 복사 대입 연산자 (+깊은 복사) [내부링크]

클래스 생성 시 컴파일러가 자동으로 생성해주는 함수는 생성자, 소멸자, 복사 생성자, 복사 대입 연산자 이렇게 4가지가 있으며 이번 포스팅에서 다룰 내용은 복사 대상자와 복사 대입 연산자입니다. 생성자나 소멸자에 대해 궁금하시다면 아래 글의 생성자와 소멸자 부분을 참고해주세요. [C++] 클래스(Class) 사용법 & 예제 총정리 복사 생성자와 복사 대입 연산자란? 복사 생성자는 객체의 복사본을 생성할 때 호출되는 생성자입니다. 생성자나 소멸자와 마찬가지로 클래스를 작성할 때 복사 생성자를 생략하면 디폴트 생성자처럼 컴파일러가 알아서 만들어줍니다. 복사 대입 연산자는 같은 타입의 객체를 이미 생성되어 있는 객체에 값을 복사할 때 사용됩니다. 마찬가지로 따로 정의를 해주지 않을 경우 컴파일러가 알아서 생성..

[C++] 순수 가상 함수, 추상 클래스에 대하여 [내부링크]

이 포스팅은 가상 함수에 대해 알고있다는 전제하에 작성되었습니다. 해당 내용을 모르시면 아래 링크되어 있는 글을 먼저 확인해주세요. [C++] 가상함수(virtual) 사용법 총정리 순수 가상함수란? 순수 가상함수란 선언(declaration)만 있고 구현(definition)이 없는 가상 함수를 의미합니다. virtual void func() = 0; 위와 같이 가상함수에 0을 대입하면 순수 가상함수가 됩니다. 순수 가상함수는 파생 클래스에서 재정의할 것으로 예상되는 함수에 대해 미리 호출 계획을 세워 두기 위해 정의합니다. 추상 클래스 위와 같은 순수 가상함수를 하나라도 가지고 있는 클래스를 추상클래스(abstract class)라고 합니다. 추상 클래스는 객체를 생성할 수 없습니다. 추상 클래스는 ..

[C++] 가상함수(virtual) 사용법 총정리 [내부링크]

가상함수란? 가상함수는 부모 클래스에서 상속받을 클래스에서 재정의할 것으로 기대하고 정의해놓은 함수입니다. virtual이라는 예약어를 함수 앞에 붙여서 생성할 수 있으며 이렇게 생성된 가상함수는 파생 클래스에서 재정의하면 이전에 정의되었던 내용들은 모두 새롭게 정의된 내용들로 교체됩니다. 가상함수를 사용해야 하는 이유 컴파일러는 함수를 호출할 때 매우 복잡한 과정을 거치게 됩니다. 그렇기에 컴파일러는 함수를 호출하는 코드는 컴파일 타임에 고정된 메모리 주소로 변환시킵니다. 이것을 정적바인딩이라고 합니다. 일반 함수의 경우 모두 이러한 정적바인딩을 하게 됩니다. 하지만 일반 함수를 오버 로딩하게 되면 정적바인딩으로 인해 문제가 될 수 있습니다. 가상함수가 아닌 보통의 경우 부모 클래스형 포인터로 멤버 함..

[C++] 프렌드(friend) 사용법 (함수, 클래스) 총정리 [내부링크]

friend를 사용하는 이유 프렌드를 쓰는 이유는 친구나 동료처럼 수평적인 관계의 클래스간의 멤버 변수를 공유해야 할 경우 주로 쓰입니다. 예를 들면 하나의 클래스에서 다른 클래스의 내부 데이터에 접근 해야할 경우 프렌드를 써서 권한을 주는 경우를 예로 들수 있습니다. 이렇게 friend를 사용하면 자신의 개체뿐만이 아닌 다른 타입의 개체를 접근하는 것이 가능해지기 때문에 코드의 확장이 수월하게 이루어집니다. 단 이렇게 프렌드를 사용할 경우 개발자의 입장에서는 개발에 편리하겠지만 캡슐화 파괴의 주범이 되어 설계가 꼬여버리는 경우가 생길 수 있습니다. 클래스 내부에서만 써야할 멤버들이 다른곳에서 계속 접근을 허용하게 되면 데이터 보호도 어렵고 캡슐화를 지향하는 객체지향적 설계라고 보기 어렵겠죠. 프렌드는 ..

[C++] 클래스(Class) 사용법 & 예제 총정리 [내부링크]

클래스(Class)란? 클래스(class)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 일종의 틀이며 내부적으로 객체를 정의하기 위한 상태 값을 의미하는 멤버 변수와 클래스의 동작인 메서드(함수)로 구성됩니다. 객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며 이 객체들의 조합으로 프로그래밍을 하는 방식을 의미합니다. C++에서 클래스(class)란 구조체(struct)의 상위 호환으로 이해할 수 있습니다. 구조체와 다른점은 접근 제어 지시자가 추가되었고 함수를 포함할 수 있게 된 점입니다. 접근 제어 지시자 지시자 설명 public 어디서든 접근이 가능 (외부에서도 모두 접근 가능) private 클래스 내부에 정의된 함수에서만 접근 허용..

[C++] 템플릿(template) 사용법 & 예제 총정리 [내부링크]

템플릿이란? 템플릿은 어린시절에 한번쯤 사용했을 모양자와 같습니다. 모양자에는 다양한 종류의 도형들이 틀로 만들어져 있습니다. 이 틀을 활용하면 누구나 정말 반듯한 네모를 그릴수도 있고 별도 그릴수 있습니다. 템플릿의 생산성이 뛰어난 이유도 이와 같습니다. 정말 완성도 높은 코드를 모양자로 찍어내듯 생성할 수 있기 때문입니다. 특히 소스코드의 완성도를 높인 상태에서 STL처럼 확실하게 검증된 라이브러리를 사용한다면 완성도와 생산성, 두마리 토끼를 한꺼번에 잡을 수 있습니다. 템플릿을 많이쓰면 컴파일 속도가 느려지지만 최신 C++ 개발 트렌드를 따르려면 템플릿은 선택이 아니라 필수입니다. 생산성이 높고 유지보수성이 뛰어난 코드가 당연히 좋은 코드이기 때문입니다. ※ 누군가가 템플릿으로 만들어주거나 만든 템..

[C언어/C++] 매크로(define) 함수 사용법 & 예제 [내부링크]

매크로 함수란? 매크로 함수는 함수처럼 인자를 설정할 수 있는 매크로를 의미합니다. 매크로 상수와는 달리 매크로 함수 이름에 괄호 와 함께 인자 목록이 주어져 있습니다. 매크로 함수라고 부르지만 단순히 치환하기만 하므로 실제로 함수는 아닙니다. 함수 선언과 비슷하지만 매크로 함수는 인자의 자료형을 신경 쓰지 않습니다. 즉, 자료형의 독립성을 보장합니다. 또 매크로 함수 내부에서 자기 자신을 호출할 수 없다는 특징이 있습니다. 매크로를 정의하는 경우에는 컴파일이 되면 해당 매크로 이름을 가진 것들이 지정해놓은 값으로 변해서 컴파일 됩니다. 매크로 함수 사용법 #define (매크로 함수 이름) (매크로 함수 기능) #define ADD(a,b) a+b //ex #define으로 시작되는 전처리 문장을 매크..

[C언어/C++] 인라인(inline) 함수 사용법 & 예제 [내부링크]

인라인 함수 사용법 inline 함수의원형 inline 함수의정의 함수 앞에 inline이라는 키워드를 위치시키는 것으로 인라인 함수를 선언, 생성 할 수 있습니다. 인라인 함수란? 인라인 함수는 정의한 코드들이 인라인 함수 호출 시 그 자리에 인라인 함수 코드 자체가 안으로 들어간다는 뜻입니다. 즉, 함수의 내용을 호출을 통해서 실행시키는 것이 아니라, 호출하는 코드 자체가 함수 내용의 코드가 됩니다. 예를 들어 아래의 예제처럼 인라인 함수를 사용했다고 해보겠습니다. #include inline void PrintHello() { cout

[C언어/C++] 캐릭터 움직이기 (GetAsyncKeyState 함수 사용법) [내부링크]

다중키 입력이 가능한 GetAsyncKeyState C언어 / C++에서 입력키의 정보를 알아오기 위해 _getch()를 종종 사용하고는 합니다. 하지만 _getch() 함수는 마지막에 누른 키 하나만을 입력받습니다. 그렇기에 좌,우,상,하 키를 동시에 입력받지 못하여 "대각선 이동" 모션을 할수가 없습니다. 게임을 개발하기 위해서는 _getch()함수보다는 GetAsyncKeyState()함수를 사용하도록 합시다. GetAsyncKeyState()함수는 입력을 멀티로 받을 수 있습니다. →키와 ↑키를 동시에 누른다면 오른쪽 위의 대각선 방향으로 이동을 할 수 있게됩니다. GetAsyncKeyState 사용법 SHORT GetAsyncKeyState(int vKey) 함수의 형태는 위와 같습니다. 인자값..

[C언어/C++] 화면 깜빡임 없애기 (더블 버퍼링) [내부링크]

콘솔로 개발을 진행할때 화면을 모두 지우고 재출력을 해야하는 상황에서 대개 while문 안에 system("cls") 명령어를 많이 사용하는데 콘솔의 내용을 지우고 다시 쓰고 하는 과정에서 정신산만한 깜빡임이 발생합니다. 이러한 문제가 생기는 원인은 싱글 버퍼링을 사용할 경우에 ( 화면 출력 -> 초기화 -> 화면 출력 ) 이 과정을 빠른속도로 무한 반복하는 도중 계속해서 공백이 노출되기 때문입니다. 이러한 현상을 없애주려면 그래픽스에서 많이 사용하는 더블 버퍼링이라는 기법을 사용하여야 합니다. 더블 버퍼링이란? 더블 버퍼링이란 싱글 버퍼링으로 화면을 그릴 경우 데이터를 저장하는 동안에는 다음 그림의 데이터를 전송할 수 없기 때문에 지우고 그리고 지우고를 반복 할 경우 필연적으로 발생하는 깜빡임 등의 상..

[C언어/C++] 화면의 커서 안보이게 숨기기 (+커서 두께 조절) [내부링크]

콘솔 개발을 할때 화면에 커서가 계속해서 깜빡깜빡 거리고 있다면 화면이 지저분한 느낌을 줍니다. 이번 포스팅에서는 화면의 커서의 굵기를 조절하거나 없애버리는 방법에 대해 포스팅 해보려고 합니다. 커서 안보이게 숨기기 #include #include void CursorView() { CONSOLE_CURSOR_INFO cursorInfo = { 0, }; cursorInfo.dwSize = 1; //커서 굵기 (1 ~ 100) cursorInfo.bVisible = FALSE; //커서 Visible TRUE(보임) FALSE(숨김) SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursorInfo); } int main() { CursorView();..

[C언어/C++] 원하는 좌표로 커서 이동하기 (SetConsoleCursorPosition) [내부링크]

콘솔 화면의 특정위치에 출력을 하기 위해 줄바꿈 printf("\n") 으로 이동한다면 화면이 밀릴 수 있어 화면이 깨질 위험이 있습니다. 그러므로 특정위치에 출력을 할때는 커서를 해당 좌표로 이동시킨 뒤 확실하게 출력하는 방법을 써야합니다. SetConsoleCursorPosition 함수를 통해 커서 이동 void gotoxy(int x, int y){ //x, y 좌표 설정 COORD pos={x,y}; //커서 이동 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } windowswindows.h 헤더에 존재하는 SetConsoleCursorPosition 으로 좌표를 이동시킬 수 있습니다. 대부분 위와 같이 gotoxy라는 함수를..

[C언어] 파일 입출력 (txt 파일 쓰기, 읽기) [내부링크]

파일을 입출력할 때는 먼저 파일 스트림을 생성해야 합니다. 그리고 이 파일 스트림을 생성하려면 파일 포인터가 필요합니다. 파일 포인터는 파일에 접근하는 데 사용되는 FILE 구조체 포인터를 말합니다. 즉, 파일 스트림의 실체가 FILE 구조체 포인터입니다. 이처럼 파일 스트림(FILE 구조체 포인터)을 생성하고 파일을 fopen() 함수를 활용하여 연 뒤 여러 가지 파일 입출력 함수를 이용해서 입출력 작업을 할 수 있습니다. 파일 입출력이 끝난 후에는 파일 포인터를 fclose() 함수를 활용해서 닫아주면 됩니다. 파일 입출력 과정 1. 파일 스트림을 생성한다.(파일 포인터 생성) 2. 파일을 연다. fopen()함수 사용 3. 파일 입출력을 수행한다. 4. 파일을 닫는다. fclose()함수 사용 TX..

[수학] 길이의 단위 종류 + 변환 사이트 [내부링크]

길이의 단위가 워낙 많아 단위를 외우기가 힘들어 포스팅 기록으로 남겨놓습니다. 가장 많이 사용하는 길이 단위 밀리미터(millimeter) : 국제단위계의 길이 단위로 1미터의 1,000분의 1에 해당하는 길이 단위입니다. 센티미터(centimeter) : CGS 단위계의 기본 단위로 1미터의 100분의 1에 해당하는 길이 단위입니다. 미터(meter) : 길이나 거리의 국제단위로 진공에서 빛이 299,792,458분의 1초 동안 진행한 거리로 정의되어 있습니다. 기이러한 정의는 최근에 측정 기술이 길이와 단위를 매우 높은 정확도로 재현할 수 있게 되면서 제안된 것으로, 시간의 경우에는 1013의 정확도로 재현할 수 있습니다. 킬로미터(kilometer) : 미터법에서 길이의 단위로 1,000미터와 같습..

[수학] 초 단위 종류 (극 미세 시간) + 변환 사이트 [내부링크]

초에도 단위가 있습니다. 밀리초, 마이크로초, 나노초, 피코초, 펨토초, 아토초가 그 단위들입니다. 흔히 미세한 시간의 단위들을 극 미세시간이라고 하며 밀리초(1000분의 1), 마이크로(100만분의 1), 나노(10억분의 1), 피코(1조분의 1), 펨토(1,000조분의 1), 아토(100경분의 1)로 극미세 세계의 단위로까지 시간을 나눌 수 있습니다. 너무나도 미세한 단위들이라 숫자들이 너무 커 외우기가 너무 힘들어 이렇게 포스팅 기록으로 남겨놓습니다. 밀리초(millisecond) 밀리초 (millisecond)는 시간의 단위로 1,000분의 1초. 물리나 공학 분야에서는 통상 msec, 또는 라고 쓰입니다. 컴퓨터 내부의 논리 회로(logic circuit) 등은 상당히 고속으로 작동하지만, 보..

[C++] 나노초(ns)단위 시간 측정 chrono 함수 사용법 & 예제 [내부링크]

이전 포스팅에서 컴퓨터에서 정밀한 시간 측정방법과 C언어 / C++에서 측정된 시간을 clock, getTickcount, timeGetTime함수를 통해 사용할 수 있는 방법을 알아보았습니다. 하지만 이 함수들은 전부 밀리초까지만 측정이 가능하여 그 보다 더 정밀하게는 측정이 불가능하다는 단점이 있었습니다. 이러한 단점을 보완하고자 C++ 11부터 chrono 함수가 새롭게 추가되어 나노초까지 측정할 수 있게 되었습니다. 측정방식은 CPU의 클럭 기준 (3G CPU면 300만 분의 1)이라고 합니다. [수학] 초 단위 종류 (극 미세 시간) + 변환 사이트 나노초 단위 측정이 필요한가? 사실 나노초 단위의 측정이 필요한지는 의문입니다. 기존의 밀리초 단위의 계측만으로도 충분하다는 생각때문입니다. 프로그..

[C언어/C++] 타이머 만들기 (스톱워치) [내부링크]

이전 포스팅에서 C언어 / C++에서 정밀한 시간 측정하는 방법인 clock, getTickcount, timeGetTime 함수들에 대해서 알아보았습니다. 코딩을 하다보면 은근히 경과시간을 구해야할 경우가 많습니다. 이 함수들을 활용해서 경과시간을 측정하는 타이머도 만들 수 있습니다. 정밀한 시간 측정 방법이 궁금하시다면 아래 글을 참고해주세요. [C언어/C++] 정밀한 시간 측정 (clock, getTickcount, timeGetTime) 함수의 차이와 사용법 C언어 / C++ 타이머(스톱워치) 만들기 #include #include #include int main() { clock_t start = clock(); for (;;) { clock_t end = clock(); double time ..

[C언어/C++] 정밀한 시간 측정 (clock, getTickcount, timeGetTime) 함수의 차이와 사용법 [내부링크]

C언어나 C++에서 제공하고 있는 시간을 측정하는 함수들이 많이 있습니다. 그중에서는 time함수도 있습니다. 하지만 time함수의 경우 시간을 초(s) 단위 측정까지만 가능하므로 정밀한 시간측정에는 부적합한 함수 입니다. [C언어/C++] 현재 날짜/시간 원하는 형태로 출력하기 (time, localtime) 정밀한 시간 측정하기 어떻게 하면 컴퓨터에서 정밀한 시간을 측정할 수 있을까요? 사실 C언어나 C++같은 프로그래밍 언어에서 시간을 측정할 수 있는 기능을 제공하는 것은 아닙니다. 시간을 측정한다는것 자체가 OS의 힘을 빌려야만 가능합니다. 윈도우에서 여러가지 시간을 측정할 수 있는 함수들을 만들어놓고 그것을 C언어나 C++같은 프로그래밍 언어에서 그대로 가져다 쓰는것 뿐입니다. 그렇다면 OS에서..

[C언어/C++] 소수점 n번째 자리까지 올림, 반올림, 버림 (cell, round, floor) [내부링크]

double형이나 floot같은 실수형 변수들을 사용하다보면 자릿수가 너무 길어 적절한 시기에 올림이나 반올림, 버림등을 해서 사용하고 싶은 경우가 있습니다. 이런경우 math 헤더안에 있는 cell(올림), round(반올림), floor(버림) 함수를 사용하시면 됩니다. C언어의 경우 반올림을 구하는 round()함수가 따로 없어서 round함수 대신 다른 방법을 사용해야 합니다. 올림(cell), 반올림(round), 내림(floor) 함수 사용법 #include //C언어 #include //C++ //C언어 double ceil(double n); //올림 double floor(double n); //내림 //C++ double ceil(double n); //올림 float ceil(floa..

[C언어/C++] 절대값 구하기 (abs, labs, fabs) 함수 사용법 & 예제 [내부링크]

코딩을 하다보면 가끔 숫자의 절대값이 필요한 경우가 있습니다. 이런 경우 따로 알고리즘 구현없이 abs, labs, fabs라는 절대값 반환 함수를 활용하여 절대값 숫자를 반환받을 수 있습니다. 절대값 반환 함수(abs, labs, fabs) 사용법 //C언어 헤더 #include //abs, labs #include //abs, labs, fabs //C++ 헤더 #include //abs, labs, fabs #include //abs, labs, fabs //사용법 int abs(int n); long labs(long n); double fabs(double n); sqrt절대값 함수를 사용하려면 절대값 함수들이 포함되어 있는 math헤더를 include해야합니다. C++은 cmath을 포함하시면..

[C언어/C++] 제곱근(루트) 구하기 sqrt 함수 사용법 & 예제 [내부링크]

C언어나 C++에서 특정 값의 제곱근(루트)을 구하려면 math 헤더에 있는 sqrt함수를 사용하시면 됩니다. 해당함수를 사용하면 따로 알고리즘 구현없이도 함수 호출 한번으로도 원하는 값을 얻어낼 수 있습니다. sqrt 함수 사용법 #include //C언어 #include //C++ //C언어 double sqrt(double n) //C++ double sqrt(double n) float sqrt(float n) long double sqrt(long double n) sqrt함수를 사용하려면 sqrt함수가 포함되어 있는 math헤더를 include해야합니다. C++은 cmath을 포함하시면 됩니다. 제곱을 구할때 사용하는 pow함수와 같이 C언어는 오버로딩이 안되기에 리턴값이 double로 고정되..

[C언어/C++] 거듭 제곱 구하기 pow 함수 사용법 & 예제 [내부링크]

C언어나 C++에서 특정 값의 제곱을 구하려면 math 헤더에 있는 pow함수를 사용하시면 됩니다. 해당함수를 사용하면 따로 알고리즘 구현없이도 함수 호출 한번으로 원하는 값을 얻어낼 수 있습니다. pow함수 사용법 #include //C언어 #include //C++ //C언어 double pow(double base, double n) //C++ double pow(double base, double n) float pow(float base, float n) long double pow(long double base, long double n) pow함수를 사용하려면 먼저 pow함수가 포함되어 있는 math헤더를 include해야합니다. C++은 cmath입니다. C언어는 리턴값이 double로 고..

[C언어/C++] 문자열 대소문자 변환 (toupper, tolower) 함수 사용법 & 예제 [내부링크]

대문자와 소문자의 아스키코드값은 32만큼의 차이가 납니다. 아스키 코드값이 다르기 때문에 컴퓨터에서는 'A'와 'a'를 같은 값으로 인식하지 않습니다. 대문자와 소문자를 같은값으로 인식시켜주기 위해서는 대문자이든 소문자이든 하나로 통일을 시켜주어야 합니다. 이러한 특징을 활용하여 대문자는 32를 더해서 소문자로 치환할 수 있고 반대로 소문자는 32를 빼주어 대문자로 치환할 수 있습니다. #include void main() { char input[1000]; int count = 0; printf("문자열을 입력하세요 \n"); gets_s(input); while (input[count]) { if (input[count] >= 65 && input[count] = 97 && input[count] 대..

[C언어/C++] 문자열 대소문자 판별 (isupper, islower) 함수 사용법 & 예제 [내부링크]

모든 문자들은 아스키코드값으로 이루어져 있습니다. 숫자는 48 ~ 57까지 대문자는 65 ~ 90까지 소문자는 97 ~ 122번까지로 구성되어 있죠. 이러한 특성을 활용한다면 문자열을 판별하여 해당 문자가 대문자인지 소문자인지 숫자인지 특수 기호인지를 구분할 수 있는 프로그램을 만들 수 있습니다. #include void main() { char input[1000]; int temp1 = 0, temp2 = 0, temp3 = 0, temp4 = 0; int count = 0; printf("문자열을 입력하세요 \n"); gets_s(input); while (input[count]) { if (input[count] >= 65 && input[count] = 97 && input[count] = 48..

[C언어/C++] 특정 문자열 찾기/검색 &치환 strstr 함수 사용법 & 예제 [내부링크]

개발을 하다보면 특정 문자열에서 원하는 문자열이 포함되어 있는지 확인해야하는 경우가 있습니다. 이 경우 strstr()함수를 사용하면 간편하게 체크할 수 있습니다. 문자열에서 특정 문자열 검색 strstr 함수 사용법 #include //C언어 #include //C++ char* strstr(char* str1, const char* str2); strstr 함수를 사용하기 위해서는 해당 함수가 포함되어있는 헤더를 포함해야 합니다. C++의 경우 헤더를 포함하시면 됩니다. strstr함수는 찾고자하는 문자열이 있다면 해당 문자열로 시작하는 문자열 포인터를 반환하고 찾고자 하는 문자열이 없다면 NULL값을 반환합니다. 인자값 str1 : search 대상 문자열 str2 : 찾고자 하는 문자열 리턴값 해..

[C언어/C++] 특정 문자 찾기/검색 &치환 strchr 함수 사용법 & 예제 [내부링크]

프로그래밍을 하다보면 특정 문자열에서 찾고자 하는 문자가 몇번 포함되어있는지 체크하고 싶을때가 있습니다. 대상 문자를 검색하고 싶다면 문자를 끝까지 반복문을 돌려 문자가 있는지 일일이 비교하여 확인하는 방법도 있겠지만 그 방법보다는 strchr()함수를 사용하면 편리하게 찾을 수 있습니다. 문자열에서 특정 문자 검색 strchr 함수 사용법 #include //C언어 #include //C++ char* strchr(const char*, int character); //C언어 const char* strchr(const char* str, int character); //C++ char* strchr (char* str, int character); //C++ strctr 함수를 사용하기 위해서는 해당..

[C언어/C++] 메모리 이동 memmove 함수 사용법 & 예제 [내부링크]

memmove의 함수는 memory + move의 합성어로 메모리를 이동시키는 목적으로 만들어진 함수입니다. 하지만 실질적인 수행동작은 메모리의 이동이 아닌 메모리의 복사입니다. 실질적인 동작은 앞서 포스팅 했었던 memcpy와 같이 메모리의 값을 복사하는 동작을 똑같이 수행하는데요. 다만 memcpy와는 달리 memmove 함수는 복사할 대상을 버퍼에 복사하고 해당 위치에 가서 버퍼에 복사된 것을 붙여 넣는 식으로 동작이 구현되어있기에 성능은 살짝 떨어지지만 memmove 함수가 더 안정성이 좋습니다. 두 함수의 다른 점은 포스팅의 가장 마지막 부분을 참고해주세요. memmove 함수 사용법 #include //C언어 #include //C++ void* memmove (void* dest, const..

[C언어/C++] 메모리 복사 memcpy 함수 사용법 & 예제 [내부링크]

이미 생성한 객체들을 여러개 만들어야 할때 물론 여러번 만들어줄수도 있지만 번거로울 수 있습니다. 이런 경우에는 이미 만들어 놓은 객체들을 복사해서 사용하면 편리한데요. memcpy함수를 사용하여 메모리를 다른곳으로 복사할 수 있습니다. 이번 포스팅에서는 memcpy함수의 사용법에 대해 알아보도록 하겠습니다. memcpy 함수 사용법 #include //C언어 #include //C++ void* memcpy (void* dest, const void* source, size_t num) memcpy함수를 사용하기 위해서는 먼저 memcpy함수가 포함되어 있는 헤더를 포함시켜야 합니다. 헤더는 string.h에도 있고, memory.h에도 memcpy함수가 있습니다. 둘중 아무거나 포함해 주세요. 인자값..

[C언어/C++] 메모리 초기화 memset 함수 사용법 & 예제 [내부링크]

메모리를 할당받은 변수의 공간은 쓰레기 값들이 남아있습니다. 이러한 쓰레기값들을 없애기 위해서 사용할 수 있는 방법중 하나가 memset함수를 사용하는 것입니다. memset 함수를 사용하면 메모리의 내용을 원하는 크기만큼 특정값으로 설정할 수 있습니다. 특히 동적이나 정적으로 생성한 배열을 초기화할 때 자주 사용합니다. memset 함수 사용법 #include //C언어 #include //C++ void* memset(void* ptr, int value, size_t num); memset함수를 사용하기 위해서는 먼저 memset함수가 포함되어 있는 헤더를 포함시켜야 합니다. 헤더는 string.h에도 있고, memory.h에도 memset함수가 있습니다. 둘중 아무거나 포함해 주세요. 인자 값 p..

[C언어] 동적 배열 생성하기 (1차원, 2차원) [내부링크]

동적 배열이란? 동적 배열은 heap을 이용하여 배열의 크기를 컴파일 단계가 아닌 실행시간에 가변적으로 바꿀 수 있는 배열을 말합니다 위 코드는 자바에서 동적배열을 생성하는 코드입니다. 하지만 이 코드를 그대로 C언어에서 생성해본다면 "식에 상수값이 있어야 합니다."라는 문구와 함께 에러가 나게 되는데요. 이렇듯 C언어에서는 Java와는 달리 변수를 배열의 길이에 오지 못하게 제한되어 있습니다. 그렇기 때문에 C언어에서는 동적 배열을 생성할때는 malloc함수를 활용하여 동적 메모리를 할당하는 방법을 써야 합니다. malloc함수에 대해 알고싶다면 아래 링크를 클릭해주세요. [C언어] 메모리 동적할당 (malloc, free) 함수 사용법 & 예제 1차원 동적 배열 생성하기 #include #includ..

[C언어] 메모리 동적할당 (malloc, free) 함수 사용법 & 예제 [내부링크]

메모리의 동적 할당이란? "메모리를 동적 할당한다"라는 뜻은 컴퓨터 프로그램이 실행되는 도중인 런타임 도중에 사용할 메모리 공간을 할당하는 것을 말합니다. 동적 할당되는 메모리는 힙 영역에 생성되게 되며 컴파일 타임에 메모리의 크기가 결정되는 데이터 영역이나 스택 영역의 정적 메모리 할당과는 대조적인 개념입니다. malloc 함수 사용법 #include //malloc 함수가 포함된 헤더 파일 void* malloc(size_t size) malloc 함수를 사용하기 위해서는 malloc 함수가 포함되어 있는 헤더나 헤더를 포함시켜야 합니다. 인자 값 size_t : 동적으로 할당할 메모리의 크기 반환 값 성공시 할당한 메모리의 첫번째 주소 리턴, 실패시 NULL리턴 malloc 함수 사용 예제 #inc..

[C언어/C++] 구조체, 클래스의 패딩 바이트에 대하여 [내부링크]

구조체, 클래스의 크기와 패딩바이트 구조체나 클래스의 크기는 어떻게 결정될까요? 구조체나 클래스 내부에 선언된 변수들의 크기로 결정된다고 생각하실 수 있는데 실제로 크기를 확인해보면 대부분 내부의 선언된 변수의 크기들보다 더 큰 크기의 공간이 할당되어 있습니다. 바로 패딩 바이트 때문에 그렇습니다. 패딩 바이트란 클래스나 구조체에 패딩 바이트를 추가하여 CPU 접근을 더 용이하게 해 주는 것을 말합니다. 자칫 공간 낭비일 수도 있는 불필요한 패딩 공간을 확보하면서 메모리의 크기를 맞추는 이유는 캐시 hit율을 높이고 CPU의 연산 횟수를 줄이기 위해서입니다. 패딩바이트 생성 예제 #include struct temp { int a; // 4byte int b; // 4byte char c; // 1byt..

[C언어/C++] 두개의 날짜/시간 간격 차이 계산하기 (difftime) [내부링크]

프로그래밍을 하다 보면 두개의 날짜나 시간의 간격을 계산해야할 경우가 생깁니다. C언어나 C++에서는 두개의 날짜나 시간의 간격은 difftime 함수를 사용하여 구할 수 있습니다. time 헤더 파일 포함 #include //C언어 #include //C++ 두 날짜나 시간의 간격을 구하는 difftime 함수는 C언어에서는 , C++에서는 경우에는 헤더 파일 안에 내장되어 있습니다. difftime 함수 사용법 double difftime(time_t time1, time_t time2); difftime 함수의 리턴값은 double형입니다. time1 : 이후 시간 time2 : 이전 시간 difftime 함수 사용 예제 시간 차이 구하기 #include #include #include void m..

[C언어/C++] 현재 날짜/시간 원하는 형태로 출력하기 (time, localtime) [내부링크]

개발을 하다 보면 현재 날짜나 현재시간이 필요할 경우가 생깁니다. 이번 포스팅에서는 C언어나 C++에서 현재 날짜, 현재시간을 어떻게 구할 수 있는지에 대해 포스팅하도록 하겠습니다. 1. time 헤더 파일 포함 #include //C언어 #include //C++ 현재시간을 구하는 time 함수는 C언어는 , C++ 일 경우에는 헤더 파일 안에 내장되어 있습니다. 2. time() 함수를 호출하여 현재의 날짜, 시간을 얻어 time_t 변수에 저장 time_t timer = time(NULL); time 함수는 time_t 결과값으로 타입을 리턴합니다. 결과값은 Unix 운영체제가 공식 출시한 1970년 1월 1일 0시 0분 0초를 기점으로 현재까지 흐른 시간을 초단위로 나타냅니다. 3. localti..

[C언어/C++] 랜덤(rand)함수 활용 아이템 가챠 프로그램 (난수 생성) [내부링크]

확률 게임 아이템 가챠 프로그램 #include #include #include #include #include struct Item { int num; char name[100]; }; int main(void) { struct Item item[100]; //아이템 배열 //배열 정보 입력 for (int i = 0; i < 60; i++) { item[i].num = i; strcpy_s(item[i].name, "일반등급 아이템"); } for (int i = 60; i < 90; i++) { item[i].num = i; strcpy_s(item[i].name, "레어등급 아이템"); } for (int i = 90; i < 99; i++) { item[i].num = i; strcpy_s(it..

[C언어/C++] 랜덤함수(rand, srand, time) 사용법 & 예제 (난수 생성) [내부링크]

C/C++로 개발을 하다 보면 종종 난수가 필요할 경우가 많습니다. C/C++에서는 이처럼 난수를 생성하는 rand() 함수와 srand() 함수가 있습니다. rand()함수는 난수의 생성 패턴을 한개로 설정하는 것이고 srand()함수는 난수의 생성 패턴을 여러개로 설정하는 차이가 있습니다. 이 함수들이 들어있는 헤더파일을 확인해보면 #define RAND_MAX 0x7fff라는 매크로 상수가 선언되어 있습니다. 즉 RAND_MAX는 0x7fff인데 이는 10진수로 32767입니다. 따라서 난수 의 범위는 0~32767가 되게 됩니다. 랜덤함수를 사용하여 난수 생성하기 헤더 파일 //C언어 #include //rand(), srand() #include //time() //C++ #include //r..

[C언어/C++] 키보드 입력 받기 (getch, kbhit) 함수 사용법 & 예제 [내부링크]

C/C++를 통해서 개발할 때 키보드 입력을 받아야 할 경우가 있습니다. 주로 키보드로 입력을 받을 때는 C언어에서는 scanf, C++에서는 cin을 사용했지만, 입력된 키의 정보를 얻어 올 경우에는 getch()와 kbhit() 함수를 사용합니다. 그 이유는 scanf나 cin은 입력 시 버퍼를 사용하기 때문에 키 입력 후에 엔터키를 눌러야 입력이 마무리되지만 getch는 입력 버퍼를 사용하지 않기 때문에 키를 누름과 동시에 값이 입력된다는 점과 SPACE나 ENTER와 같은 특수 키도 입력이 가능하다는 점 때문입니다. 키보드의 입력을 받으면 데이터가 ASCII코드로 들어옵니다. 주요 아스키(ASCII) 코드 값 주요 아스키 코드값은 위와 같으니 개발 시 활용하시면 되겠습니다. 아스키코드로 표현할 수..

[C언어/C++] 콘솔 화면 지우기(초기화) [내부링크]

C언어를 사용하다보면 주로 콘솔로 데이터를 출력하고 입력받는 작업들을 수행하게 될것입니다. 이렇게 계속해서 프로그램이 진행되다보면 자연스럽게 콘솔창에 텍스트들이 누적될것이고 누적된 텍스트들로 인하여 가독성이 떨어집니다. 따라서 경우에 따라서는 콘솔창을 한번씩 초기화 시켜 줄 필요성이 있습니다. 콘솔 화면지우기 #include //windows 헤더파일 include system("cls"); //콘솔창 clear 헤더파일의 system()함수를 이용하면 cmd 명령어를 사용 할 수 있습니다. 여기서 위와 같이 system함수안에 "cls"를 입력하면 콘솔 창을 clear할 수 있습니다. 사용 예제 #include #include void main() { printf("출력되지 않음\n"); system(..

[C언어/C++] 콘솔 창 색상, 크기, 제목, 폰트 색상 변경하기 [내부링크]

콘솔 환경설정 C언어나 C++을 사용하여 콘솔 개발을 할 때가 많은데 콘솔도 환경설정값이 있어 개발자가 원하는 세팅을 해줄 수 있습니다. 다만 소스코드를 삽입한게 아니라 단순 환경설정이므로 내 PC한정입니다. 1. 콘솔창에 우클릭을 하게 되면 위와 같이 기본값이라는 항목이 있는데 클릭해서 콘솔 창 속성에 들어갑니다. 2. 콘솔 창 속성에서 콘솔의 글꼴과 크기, 창 크기와 색상변경 등 다양한 옵션값을 줄 수 있습니다. 자신만의 스타일로 콘솔창을 꾸며보세요. 명령어 사용 하나의 소스코드로 모든 디바이스의 콘솔 형태를 맞춰주고 싶다면 windows 헤더파일에 있는 함수들을 활용하여야 합니다. #include 콘솔창 크기 변경 //col = 가로, lines = 세로 system("mode con:cols=10..

[C언어/C++] Sleep(딜레이) 함수 사용법 (잠시 멈춤) [내부링크]

컴퓨터의 연산속도는 너무나도 빨라서 아무리 많은 연산을 하더라도 실제 사용자가 보기에는 찰나의 순간에 지나가버립니다. 이런 CPU의 연산을 잠시 지연시키고 싶다면 windows의 Sleep함수를 사용하면 됩니다. 이렇게 Sleep 함수를 활용하여 CPU의 연산을 잠시 지연시키게 되면 마치 프로그램이 천천히 실행되는 효과를 줄 수 있게됩니다. Sleep함수는 밀리초 단위의 간격으로 설정이 가능하며 여기서 밀리초는 1/1000초입니다. 딜레이(Sleep) 함수 사용법 (잠시 멈춤) #include // Sleep함수가 포함된 헤더 Sleep(밀리초); // Sleep함수 호출 헤더파일의 Sleep() 함수를 사용하면 명령어의 실행시간을 지연시킬 수 있습니다. 1초를 지연시키고 싶다면 인자값으로 1000을 넣..

[C언어/C++] 상수 선언하기 const, define의 차이점 [내부링크]

상수란? 상수는 변하지 않는 값을 뜻합니다. 값을 계속 바꿀 수 있는 변수와는 달리 상수는 처음 선언할 때 값을 할당받게 되면서 그 다음부터는 값을 바꿀 수가 없습니다. 그렇기에 상수를 선언하실때는 꼭 선언과 동시에 초기화를 같이 해야만 합니다. 상수는 값을 변경시키지 못하도록 제한하고 싶을때 사용합니다. 코딩을 하다보면 고정되어 있어야 할 값을 실수로 값을 바꿀 가능성이 있습니다. 그렇기에 변하지 않을 값이라면 상수로 만들어줌으로써 값을 바꾸는 것을 방지하고 코드의 의도를 명확하게 만들 수 있습니다. 상수 사용법 #include // define은 전처리기이므로 main밖에 써야함 (매크로 상수) #define PI 3.141592 #define COL 100 #define ROW 200 void ma..

[C언어/C++] const 포인터와 키워드 위치에 따른 차이점 [내부링크]

const 포인터란? const라는 키워드는 변수를 상수화 시킬때 사용하는 키워드입니다. 이렇게 상수화 된 변수는 이후 변경이 불가능하며 포인터 변수에 const 키워드를 붙여도 같은 동작을 합니다. 다만 const의 위치가 어디로 가느냐에 따라 의미가 다릅니다. int a = 100; //1) const 자료형 변수명 = 초기값 const int *ptr = &a; //2) 자료형 const 변수명 = 초기값 int const *ptr2 = &a; //3) const 자료형 const 변수명 = 초기값 const int const *ptr3 = &a; const 포인터에서 const 키워드는 위와 같이 3가지 형태로 붙일 수 있습니다. const 키워드의 위치별 의미 상수 포인터(const pointe..

[C언어/C++] 이중 포인터 사용법 & 예제 [내부링크]

다중 포인터란 2차원 이상의 포인터 변수를 의미합니다. 포인터 변수도 메모리위에 올라가야하기에 주소값이 있습니다. 이러한 포인터의 메모리 주소값을 참조하는 포인터의 포인터를 이중 포인터라고 하며 이런 원리로 무한대의 다차원 포인터를 만들 수 있습니다. 다만 이중포인터까지만 종종 사용되고 실질적으로 2차원을 넘어서는 고차원 포인터는 잘 사용되지 않습니다. 이중포인터 사용법 int **ptr = NULL; 포인터를 선언할 때 ** 이런식으로 자료형 뒤에 *을 두 번 사용하면 포인터의 포인터(이중 포인터)를 선언할 수 있습니다. 이중 포인터 사용 예제 #include void main() { char ch = 'A'; char* ptr = NULL; char** ptr2 = NULL; ptr = &ch; //..

[C언어/C++] 포인터 배열, 배열 포인터의 사용법과 차이점 [내부링크]

포인터 배열이란? 포인터 배열이란 말 그대로 포인터를 배열로 나열해놓은 것을 말합니다. 즉 포인터 변수의 배열이죠. 각각의 index에 여러 개의 포인터를 넣을 수 있습니다. char* arr[5]; int* arr[5]; void* arr[5]; 위와 같이 선언하여 사용합니다. char* arr[5]는 5개의 char형 포인터를, int* arr[5]는 int형 포인터 5개를 저장하고 있는 배열이 됩니다. 그냥 단순 주소값만 저장하고 싶을 때는 주로 void로 선언하며 이렇게 선언할 경우 이후 어떤 타입이든지 변환이 가능합니다. 포인터 배열 활용 예제 #include int main() { int num1 = 100; int num2 = 200; int num3 = 300; int* arr[3] = {..

[C언어/C++] 비트 쪼개기 (Bit Split) 사용법 & 예제 (비트연산 활용) [내부링크]

int형의 값의 범위는 –2,147,483,648 ~ 2,147,483,647입니다. 이렇게 큰 숫자를 저장할 수 있는 공간이죠. 하지만 우리는 int타입에 이렇게 큰 값을 잘 넣어서 사용하지는 않습니다. 그렇다면 그만큼의 공간이 낭비되는 셈입니다. 그렇다면 int형을 반으로 나눠서 사용할 수는 없을까요? 가능합니다. 비트 연산자의 간단한 기법을 통해서 말이죠. 이렇게 된다면 하나의 int값 안에 2개의 값을 넣을수가 있게 되겠죠. 참고로 이러한 방법들은 실제 코딩에서는 잘 사용되지 않습니다. 메모리를 타이트하게 잡고싶다면 __int8, __int16과 같은 변수타입을 선언해서 사용하면 됩니다. 비트 쪼개기 (Bit Split) 사용법 & 예제 (비트연산 활용) #include int main() { u..

[C언어/C++] 비트 플래그 (Bit Flag) 사용법 & 예제 (비트연산 활용) [내부링크]

2진수는 숫자를 표현할때 0과 1 두 가지 값으로만 표현합니다. 여기서 0과 1을 On / Off로 사용하는 개념을 비트 플래그라고 합니다. 이것을 어디에다 사용하냐?라고 반문하실 수도 있는데 전혀 사용성이 없는 것은 아니고 한 번에 여러 가지 속성을 동시에 지정할 때, 편리하게 사용할 수 있는 방법 중에 하나가 비트 플래그입니다. 비트 플래그를 사용하면 좀 더 공간을 효율적으로 사용할 수 있습니다. 단순 비교를 해보아도 8개의 상태를 저장하려면 bool 타입 변수 8개를 선언해야 할텐데 8비트의 char을 비트단위로 쪼개서 저장한다면 1개의 char 변수(1byte = 8bit)만으로도 8개의 상태를 저장할 수가 있죠. 비트 플래그 (Bit Flag) 사용 간단한 예제 #include int main(..

[C언어/C++] 10진수를 2진수로 변환 출력하기 (비트연산 활용) [내부링크]

8진수나 16진수의 경우와는 달리 C언어에서는 2진수를 출력해줄 수 있는 서식 문자가 없습니다. 그렇기에 2진수는 직접 구해서 출력해야 하는데 일일이 2로 나누어 거꾸로 읽지 않아도 아래와 같이 비트 연산자를 사용하면 쉽게 구할 수 있습니다. 10진수를 2진수로 변환하여 출력하기 (비트연산 활용) #include int main() { unsigned int num; printf("정수를 입력해주세요\n"); scanf_s("%d", &num); printf("2진수 변환 : "); //이진수 출력 for (int i = 7; i >= 0; --i) { //8자리 숫자까지 나타냄 int result = num >> i & 1; printf("%d", result); } } 52를 바이너리로 8자리 숫자까..

[C언어/C++] 10진수를 8진수, 16진수로 출력하기 [내부링크]

C언어에서는 10진수를 8진수나 16진수로 변환해주는 서식문자를 제공합니다. 8진수는 %뒤에 o를 붙이면 되고 16진수는 %뒤에 x를 붙이면 됩니다. 또한 출력한 값이 8진수인지 16진수인지 %뒤에 #을 붙이면 알 수 있게 출력할수도 있습니다. 그리고 원하는 자릿수까지 0으로 채워서 출력할수도 있습니다. 아래 예제를 확인해주세요. 입력받은 10진수를 8진수, 16진수로 출력하기 #include int main() { int num; printf("정수를 입력해주세요\n"); scanf_s("%d", &num); printf("10진수 : %d\n", num); // 서식문자 : %d printf("8진수 : %o\n", num); // 서식문자 : %o printf("16진수(소문자) : %x\n", n..

[수학] 보수 계산법 (1의보수, 2의보수) + 필요한 이유 [내부링크]

보수란 보수는 보충을 해주는 수를 의미합니다. 현재의 숫자에서 자릿수가 1단계 올라갈 수 있는 수가 몇인지를 구하시면 됩니다. 보수 구하기 예시 10진수 1의 보수 : 1+9=10 -> 1의 보수 = 9 3의 보수 : 3+7=10 -> 3의 보수 = 7 2진수 1₂의 보수 : 1₂+ 1₂=10₂ -> 1₂의 보수 = 1₂ 10₂의 보수 : 1001₂+0111₂=11110₂ -> 1001₂의 보수 = 0111₂ 컴퓨터에서 보수가 필요한 이유 컴퓨터는 이진수만 이해할 수 있습니다. 그렇다면 음수는 어떻게 표현할 수 있을까요? 음수를 표현하기 위해 보수가 사용됩니다. 컴퓨터에서 보수는 양수를 음수화로 표현하기 위한 방법이 됩니다. 즉, 보충하는 수. 양수에 대한 보수가 음수입니다. 컴퓨터의 CPU는 뺄셈도 모..

[수학] 진법 변환 방법 정리 + 소수점 (2진수, 8진수, 10진수, 16진수) [내부링크]

진법이란? 진법이란 수를 표기하는 기수법의 하나로 몇 개의 기본 숫자를 이용하여 수를 표시하는 방법입니다. 자리값이 올라감에 따라서 수가 일정하게 커지는 규칙을 이용하고 수를 표시합니다. 우리가 일반적으로 사용하는 1 ~ 9까지의 숫자를 사용하여 수를 나타내는 방법을 10진법이라고 하며 프로그래밍에서 주로 사용되고 있는 진법은 아래와 같습니다. 위치의 가중치 모든 진법은 숫자의 위치에 따라 가중치가 달라지는 수입니다. 이 성질은 모든 진법에서 동일하게 적용되며 이 식을 사용하면 모든 진법들을 10진법으로 빠르게 바꿀 수 있습니다. 위의 경우 12345라는 10진법이 나오기 아래와 같은 식이 구해져야합니다. 계산식 : (1 * 10⁴) + (2 * 10³) + (3 * 10²) + (4 * 10) + 5 ..

[Assembly] 어셈블리어 기초 사용법 & 예제 총정리 [내부링크]

어셈블리어란? 어셈블리어(assembly language)는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어입니다. 전류가 흐른다 그렇지 않다로 구성되는 0과 1의 이진수로 프로그램을 하는 기계어는 인간의 관점에서는 컴퓨터가 바로 읽을 수 있다는 점만 빼면 장점이 없는 언어이기 때문에 이를 보완하기 위해 나온 언어가 어셈블리어입니다. 기계어와 명령어가 1:1로 대응되는 단어들로 구성되어 있습니다. 고급언어는 컴파일하는 시간이 오래 걸리는 단점이 있는 반면 저급 언어는 컴퓨터와 가까운 언어이기 때문에 컴파일을 해도 간단한 명령으로 실행돼서 실행 속도가 굉장히 빠릅니다. 하지만 저급 언어는 배우기가 어렵고 유지보수가 힘들다는 이유로 특수한 경우를 제외하고는 사용되지 않고 있습니다. 하지만 임베디드..

[Assembly] 어셈블리어 명령어 총정리 [내부링크]

명령어 Data Transfer 명령어 설명 MOV Move 데이터 이동 (전송) PUSH Push 오퍼랜드의 내용에 스택을 쌓는다. POP Pop 스택으로부터 값을 뽑아낸다. XCHG Exchange Register / memory with Register 첫번째 오퍼랜드와 두번째 오버랜드 교환 IN Input from AL/AX to Fixed port 오퍼랜드로 지시된 포트로부터 AX에 데이터 입력 OUT Output from AL/AX to Fixed port 오퍼랜드가 지시한 포트로 AX의 데이터 출력 XLAT Translate byte to AL BX:AL이 지시한 데이블의 내용을 AL로 로드 LEA Load Effective Address to Register 메모리의 오프셋값을 레지스터로 ..

[IDE] 비주얼 스튜디오 어셈블리코드 확인하기 (DisAssembly) [내부링크]

C나 C++과 같은 고급 프로그래밍 언어는 컴파일을 거쳐 어셈블리가 됩니다. C나 C++와 같은 매우 민감한 언어들은 전혀 예상하지 못한 에러들이 자주 발생합니다. 해결방안에 대한 힌트를 찾을 때 상황에 따라서는 어셈블리 코드를 직접 확인해야 할 경우가 있습니다. Visual Studio에서는 컴파일된 어셈블리 코드를 직접 확인할 수 있는 기능을 제공합니다. 어셈블리 창 사용 설정 확인 도구 -> 옵션을 클릭하고 옵션창에서 디버깅 -> 일반에 들어간 뒤 주소 수준 디버깅 사용 체크박스가 체크되어있는지 확인합니다. 이것이 체크되어 있어야 디스 어셈블리 기능의 사용이 가능합니다. 어셈블리 코드 확인(DisAssembly) 디스 어셈블리 창을 보려면 분기점을 설정하고 F5를 눌러 디버그 모드로 실행해야 합니다..

[IDE] 비주얼 스튜디오 Release, Debug 모드의 차이점 [내부링크]

Visual Studio 프로젝트에서 빌드를 하는 방법에는 릴리스(Release)와 디버그(Debug) 방식이 있습니다. 하지만 정확한 차이점은 모르시는 분이 많더군요. 대부분 Debug 버전은 디버깅용으로 Release 버전은 최종 배포용으로 빌드하는 것과 Relase 방식이 Debug 방식보다 빠르다 이 정도로만 알고 있지 이 두 가지의 정확한 차이점은 대부분 알지 못하는 듯하여 두 모드의 핵심적인 차이점 몇 가지를 이 포스팅에서 한번 정리해보고자 합니다. Release에서는 코드 최적화를 하고 Debug에서는 하지 않는다. 프로젝트 속성의 최적화로 들어가 보시면 Release는 위와 같이 최대 최적화로 되어 있는 반면 Debug는 사용 안 함으로 되어있는 것을 확인하실 수 있습니다. 여기서 코드 최..

[IDE] 이클립스(Eclipse) 폰트 글꼴, 크기 변경하기 [내부링크]

이클립스를 사용하는데 글씨가 너무 작아서 글자가 제대로 보이지도 않고 눈에 피로감이 몰려오면 큰일이겠죠. 간단한 설정만으로도 이클립스의 폰트와 크기를 변경하실 수 있습니다. 이번 포스팅에서는 오늘은 이클립스의 글자 폰트와 크기를 바꾸는 방법에 대해서 알아보도록 하겠습니다. 단축키 활용 폰트 사이즈의 경우 단축키만으로도 간단히 조절할 수 있습니다. 에디터 창에 마우스 커서를 가져다 놓고 Ctrl + '+' or '-' 를 눌러주면 폰트 사이즈가 조정됩니다. 이클립스 폰트, 크기 설정하기 1. Window -> Preferences 창으로 들어갑니다. 2. General -> Color and Fonts를 눌러 Color and Fonts로 들어가준 뒤 바꾸고 싶은 언어를 클릭합니다. 전체를 바꾸고 싶으면 ..

[IDE] 이클립스(Eclipse) 테마 변경 (다크모드) 설정방법 [내부링크]

이클립스를 처음 설치하면 Defualt로 적용되어있는 Light라는 테마(Theme)가 적용되어 있습니다. 그렇다고 해서 꼭 이 테마만 사용을 해야 하는 것은 아니고 사용자의 기호에 따라 다른 테마도 적용이 가능합니다. 그중에서도 많은 선택을 받고 있는 테마가 다크(Dark) 테마가 아닐까 생각합니다. 경험상 80%정도의 개발자는 기본(Light) 테마를 20% 정도는 다크(Dark) 테마를 사용하셨던 것 같네요. 이 테마를 사용하셨던 개발자분들은 대부분 오래 모니터를 보고 있으면 흰색 화면보다는 검은색 화면이 눈에 피로를 덜 준다라는 생각을 가지고 다크 테마를 사용하셨던 것 같아요. 또한 다크 테마를 포함해 기본적으로 제공되는 테마 이외에도 Marketplace를 통해 여러가지 테마를 적용할 수 있는데..

[IDE] Visual Studio 테마(Theme) 변경방법 [내부링크]

Visual Studio를 처음 설치하면 Default로 적용되어있는 광원이라는 배경 테마(Theme)가 적용되어 있습니다. 그렇다고 해서 꼭 이 테마를 사용해야하는것은 아니고 사용하시는분의 성향에 따라 테마를 바꿔서 적용하실 수 있습니다. Visual Studio도 사용하시는분을 보면 광원 혹은 어둡게(Dark) 테마를 주로 사용하시는 것 같습니다. 오늘은 Visual Studio 테마 변경방법에 대해 알아보도록 하겠습니다. 비주얼 스튜디오(Visual Studio) 테마(Theme) 변경방법 1. 비주얼 스튜디오 상단의 메뉴의 도구 -> 옵션으로 들어갑니다. 2. 환경 -> 일반에서 색 테마를 바꿔주시면 됩니다. 광원은 기본테마 어둡게는 흔히 말하는 다크테마이며 파랑테마를 선택하시면 2010년도쯤 주..

[IDE] Visual Studio 폰트 글꼴, 크기 변경하기 [내부링크]

PC마다 조금씩 차이는 있을 수 있으나 아마 대부분 비주얼 스튜디오(Visual Studio)를 설치하면 기본으로 설정되어 있는 폰트는 돋움체 폰트일 것입니다. 하지만 코딩을 하다보면 필연적으로 여러 가지 특수 기호를 자주 사용하게 되는데 특히 (i l), (. ,), (; :)이 구분이 잘 되는 폰트를 사용하시는 것이 정신적으로 이롭습니다. 여기서 많은 개발자들이 추천하는 폰트는 Consolas입니다. Consolas폰트는 윈도우에서 기본적으로 제공하여 따로 다운을 받을 필요도 없고 간단한 설정만으로도 바꾸실 수 있습니다. 비주얼 스튜디오(Visual Studio) 폰트 글꼴, 크기 변경하기 1. 비주얼 스튜디오 상단의 도구 -> 옵션으로 들어갑니다. 2. 글꼴 및 색에서 원하는 글꼴과 크기, 글꼴 색..

[IDE] 비주얼 스튜디오(Visual Studio) 디버깅 하는법 [내부링크]

코딩을 하는 과정에서 필연적으로 여러 가지 오류가 생기기 마련입니다. 이러한 오류들을 해결하는 과정을 디버깅이라고 합니다. Visual Studio를 포함한 모든 IDE들은 이러한 디버깅 기능을 지원하고 있으며 만약 코드에 오류가 발생한다면 이러한 디버깅 도구 또는 디버거를 사용하여 훨씬 편하게 코드가 잘못된 이유들을 빠르게 파악할 수 있습니다. 그중에서도 특히 Visual Studio의 경우 매우 강력한 디버깅 기능을 제공하고 있어 많은 개발자들이 선호하는 IDE입니다. 오늘은 강력한 Visual Studio의 디버깅 기능에 대해 포스팅해보려 합니다 중단점(Break Point) 설정하기 디버깅을 하기 위해서는 가장 먼저 해야할 일이 중단점을 설정하는 일입니다. 가장 쉽게 중단점을 설정하는 방법은 대상..

[IDE] 이클립스(Eclipse) 디버깅 하는법 [내부링크]

프로그래밍을 하다 보면 필연적으로 각종 오류에 부딪치게 되고 그 오류를 해결하는 과정에서 디버깅은 필수입니다. 디버깅을 얼마나 잘하느냐에 따라 프로그램의 생산성과 개발자의 능력이 좌우되기도 합니다. 그렇기에 모든 IDE에는 디버깅을 할 수 있는 기능들이 아주 잘 되어있습니다. 자바 개발이나 웹 개발을 할 때 많이 쓰이는 이클립스에도 디버깅 기능이 있습니다. 오늘은 이클립스의 디버깅 기능에 대해 포스팅 해보려 합니다. Break Point 지정 디버깅을 진행하기 위해서는 가장 먼저 우선 자신이 조사하고 싶은 시점에 브레이크 포인트를 지정해주어야 합니다. 이클립스 좌측의 라인에서 오류가 의심가는 부분에 더블클릭 or 우클릭 -> Toggle Breakpoint를 누르면 좌측 그림과 같이 조그마한 점이 찍힙니..

[C언어/C++] 열거형 enum 사용법 & 예제 [내부링크]

열거형이란? 열거형은 사용하면 변수가 갖는 값에 의미를 부여할 수 있고 프로그램 가독성이 향상됩니다. 열거형은 명명된 정수형 상수의 집합으로 구성됩니다. 열거형을 선언하면 컴파일러는 열거형 멤버들을 정수형 상수로 인식합니다. enum 형식의 변수를 인덱싱 식에서 사용할 수 있으며 모든 산술 및 관계형 연산자의 피연산자로 사용할 수 있습니다. 열거형 상수 또는 열거형 형식의 값은 C 언어에서 정수 식을 허용하는 모든 곳에서 사용할 수 있습니다. 열거형(enum) 사용법 열거형 만들기 //문법 enum 열거형 이름{상수 이름}; //ex enum week{SUN, MON, TUE, WED, THU, FRI, SAT}; 열거형을 만드는 방법은 구조체와 비슷한데 구성은 열거형은 열거형 키워드(enum), 열거형..

[C언어/C++] 구조체 포인터 사용법 & 예제 총정리 [내부링크]

구조체에서 포인터가 사용되는 경우는 아래와 같이 크게 3가지로 구분됩니다. 1. 멤버 변수로 포인터 사용하기 2. 구조체 변수로 포인터 사용하기 3. 구조체 간의 상호 참조 멤버 변수로 포인터 사용하기 #include struct Score { int *kor; //국어성적 int *mat; //수학성적 int *eng; //영어성적 }; int main() { int score1 = 100; int score2 = 90; int score3 = 80; struct Score s; s.kor = &score1; s.mat = &score2; s.eng = &score3; printf("국어점수 : %d\n", *s.kor); printf("수학점수 : %d\n", *s.mat); printf("영어점수 ..

[C언어/C++] 구조체 사용법 & 예제 총정리 [내부링크]

구조체란? 구조체란 하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형입니다. 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이며 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있습니다. 구조체는 똑같은 변수를 여러번 사용해야 하는 경우에 효과적으로 사용할 수 있습니다. 예를 들어, C언어를 이용해서 콘솔로 간단한 성적 시스템을 만든다고 가정해봅시다. 이 주소록에는 학생의 국어, 수학, 영어 점수를 저장해야 합니다. 만약 구조체를 사용하지 않는다면 여러명의 학생의 성적을 구해야 할 경우 일일이 변수를 계속해서 선언해주어야 할 것입니다. 하지만 구조체를 사용하면 여러개의 변수를 하나로 묶어서 관리할 수 있게 됩니다. 그룹화할 때 같은 자료형을 가진 변수들을 ..

[C언어/C++] 함수 포인터 사용법 & 예제 총정리 [내부링크]

함수의 주소 변수를 선언하면 메모리 공간이 할당되고 그 공간의 위치가 주소로 존재하듯이 함수를 선언해도 변수와 마찬가지로 메모리에 공간이 할당되며 그 위치를 표현하는 주소가 생겨납니다. C언어 코드는 컴파일이 되면 기계어로 변경되고 프로그램이 실행되면 코드 세그먼트라는 메모리 영역에 위치하게 됩니다. 즉, 함수의 형태는 변경되겠지만 결국 메모리에 저장되기 때문에 주소를 가지게 된다는 의미입니다. #include void print_hello() { printf("Hello, world!\n"); } int main() { // 메모리 상에 저장된 함수의 주소값 printf("함수의 주소값 : %p\n", print_hello); return 0; } 위의 코드의 실행 값과 같이 함수도 주소 값을 가진다는..

[C언어/C++] 함수(Function) 사용법 & 예제 [내부링크]

함수(Function)란? 함수는 특정 작업을 수행하는 코드의 집합이라고 정의할 수 있습니다. 반복적으로 수행되는 코드들을 함수로 만들어 사용하면 코드의 재활용성이 높아집니다. 기능들을 분류하여 다양한 각각의 함수로 만들어 사용할 수도 있고 함수 내부에서 또 다른 함수를 호출 할 수도 있는 등의 다양한 이유로 인해 함수를 사용하면 복잡한 기능도 비교적 쉽게 구현할 수 있으며, 구조화 프로그램에 있어 매우 중요한 개념입니다. 함수(Function)의 종류 함수의 종류에는 사용자 정의 함수와 라이브러리 함수가 있습니다. 먼저 사용자 정의 함수는 사용자가 구현하고 싶은 기능을 구현하는 것이며 라이브러리 함수는 우리가 흔히 써오던 printf(), scanf() 같은 함수인데 헤더파일안에 정의되어 있어 원하는 ..

[C언어/C++] 포인터(Pointer) 사용법 & 예제 총정리 [내부링크]

포인터란(Pointer)? 포인터는 주소를 저장하는 변수입니다. 기존의 변수는 데이터를 저장하는데 반하여 포인터는 메모리 공간의 주소를 저장합니다. 포인터 변수가 주소를 저장하려면 변수의 주소를 알아야 하는데 변수 이름 앞에 & 연산자를 붙이면 해당 변수의 시작 주소를 반환합니다. 더 나아가서 포인터 변수가 저장하는 변수의 주소에 저장된 값을 참조하려면 * 연산자를 사용합니다. 포인터(Pointer) 변수의 선언 및 사용 포인터 변수도 변수이므로 사용하려면 먼저 선언을 해야합니다. 다음은 포인터 변수의 선언 형식을 나타내고 있습니다. 포인터 변수의 선언은 자료형 다음에 *연산자를 붙이고 포인터 변수의 이름을 쓰게 됩니다. #include int main() { int* p = NULL; int i = 1..

[C언어/C++] 연산자 우선순위에 대하여 [내부링크]

연산자 우선순위란? 연산자 우선순위란 수학 및 컴퓨터 프로그래밍에서 연산의 우선순위는 모호하게 해석가능한 수식에서 어느 연산을 먼저 계산할 것인가를 결정하는 규칙입니다. 예를 들어 수학의 사칙연산을 보면 2+3*2 라는 식이 있을때 *가 +보다 우선순위가 높기때문에 먼저 3*2 = 6이 되고 그다음에 2를 더해 최종 결과값이 8이됩니다. 이처럼 프로그래밍 언어에도 연산자에 대한 우선순위가 존재합니다. 이러한 우선순위를 모르고 개발을 하다보면 전혀 엉뚱한 결과가 도출되기도 하죠. 연산자 우선순위를 모르고 코딩을 하다보면 연산자 우선순위로 인하여 내가 원하는 동작이 하지 않고 엉뚱하게 동작하는 경우가 있습니다. 특히 포인터를 사용할때 많이 발생하는데요, char arr[6] = { "hello" }; cha..

[Spring] 스프링 부트 게시판 만들기-4 계층형 댓글 만들기 [내부링크]

실행화면 (계층형 댓글) 테이블 생성 CREATE TABLE `tb_reply` ( `idx` INT NOT NULL AUTO_INCREMENT, `board_idx` INT, `reply_idx` INT, `contents` TEXT NULL, PRIMARY KEY (`idx`)); 댓글 테이블 tb_reply를 추가해줍니다. idx(댓글 번호), board_idx(글 번호), reply_idx(상위 댓글번호), contents(댓글 내용)입니다. 가장 위에 있는 Root 댓글은 reply_idx가 0이고 하위 댓글들은 reply_idx로 상위댓글의 idx를 참조하도록 설계하였습니다. 소스코드 function 추가 (view.jsp) function drawReply(replys) { $("#cnt")..

[Spring] 스프링 부트 게시판 만들기-3 글 상세보기 페이지 만들기 [내부링크]

실행 화면 (글 상세보기) 소스코드 글 상세보기 (view.jsp) 과제 홈 게시판 본문 이미지와 제목, 글 내용이 적절하게 보여질 수 있도록 컨트롤을 적절히 배치하고 boardView URL로 Controller에 요청을 보내 image와 title, contents에 조회한 내용들을 삽입하여 보여줍니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardService s; @RequestMapping(value="/view", method=RequestMethod.GET) public String view() { return "view"; } @RequestMapping(value..

[Spring] 스프링 부트 게시판 만들기-2 게시판 글 등록 (이미지 첨부) [내부링크]

실행 화면 (글 등록) 소스 코드 글 등록 화면 (write.jsp) 과제 홈 게시판 글쓰기 제목: 내용: 글쓰기 화면은 위와 같이 제목, 내용, 그리고 이미지 첨부를 할 수 있게끔 만들었습니다. 해당 화면에서 글을 작성하고 글쓰기 버튼을 누르면 writeAction이라는 url로 controller에 요청이 가게 됩니다. 파일 첨부 기능 구현 시 form의 메서드를 post / enctype을 multipart/form-data로, input type="file"로 해주고 컨트롤러에서는 MultipartFile 받아주면 됩니다. Controller (IndexController) @Controller public class IndexController { @Autowired private BoardSe..

[Spring] 스프링 부트 게시판 만들기-1 게시판 리스트 출력 [내부링크]

SpringBoot를 활용하여 간단한 게시판을 만들어야 할 일이 있어 급하게 만든 초간단 게시판을 공유합니다. 총 4개의 포스팅으로 작성할 예정이며 전체 소스는 마지막 게시글에서 GitHub링크를 남겨드리도록 하겠습니다. 최소한의 게시판이 돌아가게끔 기본적인 틀만 정해서 구현하였기에 이 게시판을 기초로 살을 붙여나가며 사용하시면 좋을 듯합니다. SpringBoot와 데이터베이스는 MySql을 사용하였고 SpringBoot에서 데이터 베이스 접근은 마이바티스 라이브러리를 사용해 접근했습니다. 주요 기능 1. 게시판 리스트 출력 2. 게시판 글 등록 (이미지 첨부) 3. 게시판 상세보기 4. 댓글과 대댓글 (계층형 댓글) 실행 화면 (게시판 리스트 출력) 테이블 생성 CREATE TABLE `tb_board..

[블로그] 2020년 블로그 결산 (누적 방문자 수 1천만명 돌파) [내부링크]

안녕하세요 코딩팩토리입니다. 코로나와 함께한 2020년도가 끝이 나고 새해가 밝았습니다. 작년에도 제 블로그에 방문해주신 모든 분들께 진심으로 감사드립니다. 개인적으로 작년에 많은 일들이 생겨 블로그를 많이 소홀히 했다는 생각이 듭니다. 블로그 권태기가 와서 일정기간 포스팅을 쉰 적도 있습니다. 또 재미가 아닌 의무감으로 억지로 글을 쓰다 보니 제가 발행하는 포스팅에 점점 영양가가 떨어지고 있다는 생각이 듭니다. 이 부분에 대해서는 진심으로 사과의 말씀을 드립니다. 블로그를 다소 소홀히 했음에도 불구하고 의미 있는 성과가 많이 있었습니다. 이번 포스팅에서는 작년 한 해의 제 블로그의 기록들을 글로 남기고자 합니다. 2020년도 블로그 결산 2020년도 제 블로그를 구글 애널리틱스로 분석한 자료입니다. 사..

[Web] 크롬 원격 데스크톱 설치 및 설정 & 사용법 정리 [내부링크]

얼마 전 원격 제어를 해야 할 경우가 생겨 팀뷰어를 설치하려다가 프로그램 설치가 아닌 구글 원격 데스크톱이라는 크롬 확장 프로그램으로 좀 더 가볍게 원격을 할 수 있는 방법을 알게 되어 포스팅으로 작성해보고자 합니다. 크롬 원격 데스크톱은 어느 컴퓨터에서든지, 구글 계정에 등록해 둔 컴퓨터만 있으면 별도의 프로그램 설치 없이 PC 원격 제어가 가능합니다. 심지어, 핸드폰 어플리케이션을 활용하여 핸드폰으로도 컴퓨터를 먼 곳에서 제어가 가능합니다. 크롬 원격 데스크톱 메인 페이지를 보시려면 아래 링크로 들어가시면 됩니다. remotedesktop.google.com/home 크롬 원격 데스크톱 원격 설치 1. 아래 링크로 들어가 로그인을 하고 다운로드 버튼을 눌러 크롬에 원격 데스크톱 확장 프로그램을 설치합..

[Web] 유튜브 화면 비율 문제, 짤림 현상 해결하기 (전체화면) [내부링크]

최근에는 영화나 뮤직비디오 같은 영상들은 기본적인 16:9 비율을 넘어서 영상에 대한 몰입감이 가장 좋다는 21:9 비율로 만들어지는 추세입니다. 또한 이러한 추세에 비례하여 일반 16:9의 비율을 가지고 있는 모니터가 아닌 21:9 비율의 와이드 모니터까지 서서히 판매가 증가되고 있습니다. 저희 집 모니터도 와이드 모니터를 사용하여 영상을 시청하고 있는데요. 하지만 모니터의 비율과는 달리 유튜브에서는 비율을 조정하는 기능이 없어 영상의 겉 부분에 검은색 테두리가 그려져 모니터를 최적의 효율로 사용하지 못하고 있었습니다. 저와 같이 와이드 모니터를 사용하시는 분이라면 유튜브 특히 유튜브에서 구매한 영화등을 시청하다보면 위와 같이 검정색 화면이 거의 반 이상 차지하는 불편함을 느끼시는 분이 있으실 겁니다...

[Web] 동영상 파일을 GIF(움짤)로 변환하기 (GIF 변환 웹 사이트 사용) [내부링크]

짧은 동영상이라면 영상을 삽입하는것 보다는 GIF파일 (움짤)로 변환해서 활용하는것이 좋을때가 있습니다. 동영상을 GF로 만드는 방법은 크게 동영상을 GIF로 변경해주는 사이트를 사용해주는 방법과 프로그램을 사용하는 방법이 있습니다. 이 두가지 방법 중 사이트를 이용하는 것이 설치도 필요없고 혹여나 프로그램을 다운받으면서 생기는 피해 (바이러스나 악성코드)를 예방할 수 있기에 추천드립니다. 동영상 파일을 GIF로 변환하기 (GIF 변환 웹 사이트 사용) 1. 아래에 링크된 사이트에 접속하여 가장 첫번째있는 탭 Video to GIF를 선택하고 변환 할 파일을 선택한 뒤 Upload video! 버튼을 누릅니다. ezgif.com/video-to-gif 2. 위에 업로드 된 영상을 재생하여 움짤(GIF)파..

[Git] GitHub README 작성법 (마크다운, 이미지, Gif, 코드 블록 사용법) [내부링크]

리드미(README)란? README는 쉽게 말해서 프로젝트 소개글이라고 할 수 있습니다. 일반적으로 디렉토리나 압축 파일에 포함된 기타 파일에 대한 정보를 포함하고 있으며, 일반적으로 소프트웨어와 함께 배포됩니다. 또한 현재 Git과 같은 코드 저장소에서도 해당 파일을 기본값으로 생성되게 하여 해당 저장소에 대한 설명을 기입하도록 유도하고 있습니다. 다른 확장자를 사용할 수도 있겠으나 기본적인 README의 확장자는 md인데 이것은 마크다운(Markdown)의 약자입니다. 만약 리드미 파일이 없다면 아래에 리드미를 작성하는 것을 권장하는 창이 뜹니다. README 작성방법 1. 최근에는 프로젝트를 업로드하면 자동으로 리드미 파일이 생깁니다. 직접 리드미 파일을 만들어서 레파지토리에 Push를 하여도 되..

[Git] Git Remote origin already exists 에러해결 remote origin 삭제 [내부링크]

깃의 Remote origin already exists 에러는 기존에 연결되어 있는 레파지토리가 다시 새로운 레파지토리에 소스코드를 올리려고 하면 발생되는 에러입니다. 해결방법은 간단합니다. 위와 같이 원격 저장소와의 연결이 되어 있다고 하니 기존의 연결을 끊고 새로 올리고 싶은 곳에 소스코드를 올리면 됩니다. 해결 방법 1. git remote remove origin 명령어를 입력해서 기존에 연결되어 있는 원격 저장소와의 연결을 끊어줍니다. 2. git remote add origin [새롭게 연결할 깃 레파지토리 주소] 명령어를 입력합니다. 3. git remote -v 명령어를 입력해서 로컬 저장소를 원격 저장소에 연결시켜줍니다. 4. git push origin master 명령어를 입력해서 ..

[IDE] Visual Stdio 콘솔창 사라지는 현상 해결하기 [내부링크]

비쥬얼 스튜디오에서는 Ctrl + F5를 사용하여 디버깅 하지 않고 시작할 수 있습니다. 이렇게 하면 바로 명령 프롬프트(cmd)창이 실행되면서 결과값을 확인할 수 있죠. 하지만 어떠한 이유인지는 모르겠으나 비쥬얼 스튜디오를 켜고 빈프로젝트를 하고 실행을 시켰는데 콘솔창이 시작과 동시에 계속 꺼졌습니다. 본래는 프로그램이 시작되고 프로그램이 종료되면 cmd창은 꺼지는것이 맞습니다. 하지만 이렇게 콘솔창이 사라지게 되면 짜놓은 소스코드의 결과물을 확인할 수 없기때문에 Visual Studio는 자동으로 프로그램이 종료되기 직전에 프로그램을 멈추어주는것으로 알고 있었는데 어떠한 이유인지는 모르겠으나 이 부분이 제대로 작동이 되지 않고 있었던 것 같습니다. system("pause"); 코드를 마지막에 삽입하..

[DB] MySQL 다운로드 / 설치 방법 (for Windows) [내부링크]

MySQL이란? MySQL은 전세계에서 많이 사용하는 빠른 작동과 경쾌함이 장점인 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL은 오픈소스로 이루어져있고 여러 운영체제에서 동작이 가능하며 많은 프로그램 언어를 지원한다는 장점이 있습니다. 유료버전도 따로 있으나 대부분은 무료버전을 사용하셔도 큰 무리가 없습니다. MySQL 설치 / 다운로드 방법 1. 오늘은 윈도우 10에서 MySql을 한번 설치해보려고 합니다. 아래에 링크된 사이트로 접속하여 최신버전의 MySql Install 파일을 다운 받습니다. 최소용량으로 설치하려면 2.5M의 installer를 설치해주세요. dev.mysql.com/downloads/installer/ 2. 오라클 계정에 로그인 하라고 하는데 로그인 ..

[Spring] Spring Tools 4 (Spring Boot) 설치 및 환경설정 방법 [내부링크]

스프링 부트(Spring Boot)란? 스프링 부트는 스프링 설정에서 반복되는 코드를 싹 빼고 간편하게 이용할 수 있도록 확장된 버전입니다 스프링은 스프링부트와 비교하여 여러가지 장점이 있습니다. 개발을 하며 가장 와닿는 장점은 설정이 매우 간편해졌다는 점입니다. 스프링의 경우 많은 XML설정 파일등을 작성하는 등 설정하기도 힘들고 웹을 구축하기 위해 많은 Dependency 설정을 추가해주는 등 설정을 위한 코드의 양도 굉장히 많았지만 스프링부트에서는 starter 라이브러리 사용으로 많이 간소화 되었습니다. 이렇게 스프링 부트는 반복되는 개발환경 구축을 위한 코드작성등의 노력을 줄여주고 쉽고 빠르게 프로젝트를 설정할 수 있도록 도와줍니다. 또한 Maven보다 강력한 Gradle이라는 빌드배포 툴을 제..

[Algorithm] 각 정렬의 특징 및 장단점 & 시간복잡도 [내부링크]

정렬 별 특징 선택정렬 (Selection Sort) 선택정렬은 앞에서부터 차례대로 정렬하는 방법입니다. 먼저 주어진 리스트 중에 최소값을 찾고 그 값을 맨 앞에 위치한 값과 교체하는 방식으로 진행하는 정렬방법입니다. 코드가 직관적이기에 구현도 비교적 간단합니다. n개 원소에 대해 n개의 메모리를 사용하기에 데이터를 하나씩 정밀 비교가 가능하며 정렬을 위한 비교 횟수는 많으나 교환 횟수는 상당히 적다는 것이 장점인 정렬 방식입니다. 따라서 교환이 많이 이루어져야하는 자료 상태에서 가장 효율적으로 적용될 수 있는 정렬 방식입니다. 선택 정렬이 가장 적합한 자료 상태는 역순 정렬입니다. 즉, 내림차순으로 정렬되어 있는 자료를 오름차순으로 재정렬할 때 최적의 효율을 보여줍니다. 반대로 이미 정렬된 상태에서 소..

[Network] TCP / UDP의 개념과 특징, 차이점 [내부링크]

전송 계층에서 사용되는 프로토콜 (TCP / UDP) TCP와 UDP는 OSI 표준모델과 TCP/IP 모델의 전송계층에서 사용되는 프로토콜입니다. 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하는 계층입니다. 쉽게 말해 데이터의 전달을 담당한다고 생각하시면 됩니다. TCP와 UDP는 포트 번호를 이용하여 주소를 지정하는것과 데이터 오류검사를 위한 체크섬 존재하는 두가지 공통점을 가지고 있지만 정확성(TCP)을 추구할지 신속성(UDP)을 추구할지를 구분하여 나뉩니다. 데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 ‘TCP(Transmission Control Protocol)’를 사용합니다. TCP는 통신할 컴퓨터..

[Network] TCP / IP란 무엇인가? [내부링크]

TCP / IP란? TCP/IP(Transmission Control Protocol/Internet Protocol)는 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약입니다. TCP / IP는 이름에서 알 수 있듯 TCP / IP에는 두가지 프로토콜로 이루어져 있으며 인터넷으로 디바이스를 연결하는 네트워크 프로토콜의 집합이며 개별적인 네트워크 프로토콜로 사용될 수도 있습니다. TCP / IP는 인터넷의 기본 통신 언어입니다. 기본적으로 TCP / IP를 사용하면 한 컴퓨터가 데이터 패킷을 컴파일하고 올바른 위치로 전송하여 인터넷을 통해 다른 컴퓨터와 통신 할 수 있습니다. 프로토콜이란? 컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신하지 않으면 안됩니다. 어떻..

[Algorithm] BFS 알고리즘 (Breadth-First Search) [내부링크]

너비 우선탐색 (BFS)란? BFS는 그래프 전체를 탐색하는 방법 중 하나로써 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법입니다. 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회함으로써 노드를 넓게(wide) 탐색합니다. 주로 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 사용합니다. 주로 구현은 큐라는 자료에 이웃하는 정점을 다 담아놓고 차례대로 POP을 하는 방식으로 구현합니다. [Algorithm] 자료구조 그래프(Graph)란 무엇인가? BFS의 장점 1. 노드의 수가 적고 깊이가 얕은 경우 빠르게 동작할 수 있다. 2. 단순 검색 속도가 깊이 우선 탐색(DFS)보다 빠름 3.너비를 우선 탐..

[Algorithm] DFS 알고리즘 (Depth First Search) [내부링크]

깊이 우선탐색 (DFS)란? DFS는 그래프 전체를 탐색하는 방법중 하나로써 시작점 부터 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하고 넘어가는 방법입니다. 스택이나 재귀함수를 통해서 구현할 수 있는데 재귀함수가 구현이 간편하기에 대부분 재귀함수로 구현하는것 같습니다. 구현시 주의할점은 노드를 방문시 방문 여부를 반드시 검사해야합니다. 그렇지 않다면 무한루프에 빠질 수 있습니다. [Algorithm] 자료구조 그래프(Graph)란 무엇인가? DFS의 장점 1. 현재 경로상의 노드들만 기억하면 되므로, 저장 공간의 수요가 비교적 적음 2. 목표 노드가 깊은 단계에 있는 경우 해를 빨리 구할 수 있음 3. 구현이 너비 우선 탐색(BFS) 보다 간단함 DFS의 단점 1. 단순 검색 속도는 너비 우선..

[Algorithm] 자료구조 그래프(Graph)란 무엇인가? [내부링크]

그래프란? 그래프는 정점과 간선으로 이루어진 자료구조입니다. 정확히는 정점(Vertex)간의 관계를 표현하는 조직도라고 볼수도 있겠습니다. 그런면에서 트리는 그래프의 일종인 셈입니다. 다만 트리와는 달리 그래프는 정점마다 간선이 없을수도 있고 있을수도 있으며 루트 노드, 부모와 자식이라는 개념이 존재하지 않습니다. 또한 그래프는 네트워크 모델 즉, 객체와 이에 대한 관계를 나타내는 유연한 방식으로 이해할 수 있습니다. 실생활에서 다양한 예를 그래프로 표현할 수 있습니다. 대표적으로 지하철 노선도, 도심의 도로등이 있습니다. 이런식으로 활용할 수 있는 방법이 많기에 문제도 다양하게 출제를 할 수 있습니다. 그래프는 알고리즘에서 굉장히 많이 사용됩니다. 특히 그래프를 순회하는 방식인 DFS와 BFS를 잘 알..

[Algorithm] 알고리즘 공간복잡도에 대하여 [내부링크]

공간복잡도란? 공간복잡도(Space Complexity)란 프로그램의 성능을 분석하는 방법 중 하나로, 작성한 프로그램이 얼마나 많은 공간(메모리)을 차지하느냐를 분석하는 방법입니다. 하지만 최근에는 컴퓨터 성능의 발달로 인해 메모리의 여유 공간이 충분하다못해 넘치기 때문에 공간복잡도의 중요성이 예전에 비해서 많이 낮아졌습니다. 시간복잡도의 경우 알고리즘을 잘못 구성하였을 경우 결과값이 나오지 않거나 현저하게 느린속도가 나오기에 최근에는 공간복잡도보다는 시간복잡도를 우선시하여 프로그램을 작성합니다. [Algorithm] 알고리즘 시간복잡도에 대하여 공간복잡도 계산법 (빅-오) int a = 10; 일반적으로 공간이 하나씩 생성되는것을 1이라고 표현합니다. 위의 공간복잡도는 O(1)입니다. int get_..

[Algorithm] 알고리즘 시간복잡도에 대하여 [내부링크]

시간복잡도란? 시간 복잡도란 특정 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 의미합니다. 같은 결과를 가져오는 프로그래밍 소스도 어떻게 작성하느냐에 따라 걸리는 시간이 달라질 수 있습니다. 같은 결과를 나타내는 소스라면 최대한 시간이 적게 걸리는 좋은 소스입니다. 그렇기에 더 효율적인 알고리즘을 구성하기 위해서 시간 복잡도의 측면을 고려하고 중요하게 봅니다. 특히 최근 알고리즘 문제 해결에서 대부분 실행시간을 정해놓고 그 시간안에 소스가 돌아가야 정답으로 체크하기에 시간복잡도의 중요성이 더더욱 커졌다고 볼 수 있습니다. [Algorithm] 알고리즘 공간복잡도에 대하여 빅-오 표기법 시간 복잡도에는 여러 개념이 있지만 그중에서 ‘아무리 많이 걸려도 이 시간 안에는 끝날 것‘의 개념이 제일 중요합니다..

[Algorithm] 순열 조합 알고리즘 개념과 예제 (구현) [내부링크]

순열과 조합 실생활 예 순열과 조합의 차이는 순서를 정하느냐 그렇지 않느냐의 차이입니다. 순열 : 중국집 메뉴 5개 중 2개의 메뉴를 순서대로 먹는 경우의 수 조합 : 중국집 메뉴 5개 중 2개의 메뉴를 주문하는 경우의 수 순열이란? 순열이란 서로 다른 n개중 r개를 골라 순서를 고려해 나열한 경우의 수를 말합니다. 예를 들어 어느 중국집에 5개의 메뉴(a,b,c,d,e)가 있다고 해봅시다. 이때 5개의 메뉴(a,b,c,d,e)중 2개의 메뉴를 순서대로 먹는 경우의 수는 몇가지가 있을까요? 먼저 첫번째로 먹을 메뉴를 정하려면 이때 첫번째 메뉴가 될 수 있는 경우의 수는 5가지 입니다. 그리고 나서 첫번째 메뉴로 지정된 메뉴를 제외한 나머지 4가지의 메뉴로 두번째로 먹을 메뉴를 선택한다고 가정하면 이때의 ..

[수학] 순열, 조합 공식 총정리 [내부링크]

팩토리얼 ( ! ) 팩토리얼이란 서로 다른 n개를 나열하는 경우의 수를 의미합니다. 기호로는 n! 이렇게 쓰고 계산은 n부터 1씩 줄여나가면서 1이 될때까지의 모든 수를 곱합니다. 순열 ( nPr ) 순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 있음) 조합 ( nCr ) 조합이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 없음) 중복 순열 ( nπr ) 중복 순열이란 중복 가능한 n개중에서 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 있음) 중복 조합 ( nHr ) 중복 조합이란 중복 가능한 n개중에서 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 없음) 같은 것이 있는 순열 순열이 같은 것이 포함된 원소들을 나열하는 ..

[Java] 큰 숫자(실수) 다루기 BigDecimal 사용법 & 예제 총정리 [내부링크]

BigDecimal을 사용해야 하는 이유 Type 범위 float 1.4E-45 ~ 3.4028235E38 double 4.9E-324 ~ 1.7976931348623157E308 소수점을 저장할 수 있는 타입인 float과 double은 소수점의 정밀도가 완벽하지 않아 값의 오차가 생길 수 있습니다. 특히 소수점 이하의 수를 다룰 때 double과 float은 사칙연산 시 정확한 값을 출력하지 않을 수 있는데요. 그 이유는 내부적으로 수를 저장할 때 이진수의 근사치를 저장하기 때문입니다. 그렇기에 미세한 숫자의 변동도 허용하지 않는 특히 돈과 소수점을 다룬다면 BigDecimal을 사용하셔야 합니다. BigDecimal은 속도는 느리지만 숫자가 어긋날 가능성을 미연에 방지할 수 있습니다. BigDeci..

[Java] 큰 숫자(정수) 다루기 BigInteger 사용법 & 예제 총정리 [내부링크]

BigInteger를 사용해야 하는 이유 Type 범위 int -2,147,483,648 ~ 2,147,483,647 long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 int는 메모리 크기는 4byte로 표현할 수 있는 범위는 -2,147,483,648 ~ 2,147,483,647이고 long은 메모리 크기는 8byte로 표현할 수 있는 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807입니다. 그 범위를 넘어서게 되면 모두 0으로 출력이 됩니다. 숫자의 범위가 저 범위를 넘을 경우는 잘 없겠지만 프로그램 개발 특히 돈과 관련된 개발이나 알고리즘 문제를 풀 때 항상 최악의 상황을 고려해야 하므로..

[Java] PriorityQueue(우선순위 큐) 클래스 사용법 & 예제 총정리 [내부링크]

우선순위 큐(Priority Queue)란? 일반적으로 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 구조 즉 먼저 들어온 데이터가 먼저 나가는 구조를 가집니다. PriorityQueue는 먼저 들어온 순서대로 데이터가 나가는 것이 아닌 우선순위를 먼저 결정하고 그 우선순위가 높은 엘리먼트가 먼저 나가는 자료구조입니다. 우선순위 큐는 힙을 이용하여 구현하는 것이 일반적입니다. 데이터를 삽입할 때 우선순위를 기준으로 최대힙 혹은 최소 힙을 구성하고 데이터를 꺼낼 때 루트 노드를 얻어낸 뒤 루트 노드를 삭제할 때는 빈 루트 노드 위치에 맨 마지막 노드를 삽입한 후 아래로 내려가면서 적절한 자리를 찾아서 옮기는 방식으로 진행됩니다. Priori..

[Java] 자바 Queue 클래스 사용법 & 예제 총정리 [내부링크]

Queue란? Queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조입니다. 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가집니다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말합니다. Enqueue : 큐 맨 뒤에 데이터 추가 Dequeue : 큐 맨 앞쪽의 데이터 삭제 Queue의 특징 1. 먼저 들어간 자료가 먼저 나오는 구조 FIFO(First In FIrst Out) 구조 2. 큐는 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행함 3. 다른 한 쪽 끝은 리어(rear)로 정..

[Java] 자바 Stack 클래스 사용법 & 예제 총정리 [내부링크]

Stack이란? 자료 구조 중 하나인 Stack의 사전적 정의는 '쌓다', '더미'입니다. 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있습니다. Stack의 가장 큰 특징은 나중에 들어간 것이 먼저 나오는 (Last In First Out)의 형태를 띈다는 것입니다. 이 방식을 가진 자료구조인 Stack을 활용하여 다양한 문제를 해결할 수 있습니다. 자바에서 Stack은 java.util.Stack을 import하면 바로 사용할 수 있습니다. Stack의 특징 1. 먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 구조 2. 시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영역에서 함 3. 인터럽트처리, 수식의 계산, 서브루틴의 복..

[Algorithm] 에라토스테네스의 체 - 소수 구하기 (범위) [내부링크]

에라토스테네스의 체란? 고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법이며 이 방법은 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라고 부릅니다. 특정 숫자의 배수는 소수가 아니라는 법칙에 착안하여 2 ~ N까지의 숫자에서 숫자들의 배수를 모두 제거한 뒤 제거되지 않은 숫자를 소수로 판별하는 방식이며 일종의 노가다 방식이라 상당히 무식한 방법이지만 이 방식이 프로그래밍에서는 상당히 효율적인 방법론이 됩니다. 에라토스테네스의 체는 반대로 2부터 배수들을 지워나가는 방식이기 때문에 숫자마다 일일이 약수가 있는지 검사할 필요가 전혀 없고, 이미 지워진 숫자는 바로 건너뛰면 되니 실행시간이 매우 짧습니다. 특정 범위에서의 모든 소수를 찾을때 가장 효율적인 알고리즘 에라토스테네스..

[Algorithm] 유클리드 호제법 - 최대공약수(GCD) 구하기 [내부링크]

유클리드 호제법이란? 유클리드 알고리즘(Euclidean algorithm)은 2개의 자연수의 최대공약수를 구하는 알고리즘입니다. 비교대상의 두 개의 자연수 a와 b에서(단 a>b) a를 b로 나눈 나머지를 r이라고 했을때 GCD(a, b) = GCD(b, r)과 같고 "r이 0이면 그때 b가 최대공약수이다."라는 원리를 활용한 알고리즘입니다. ex) GCD(24,16) -> GCD(16,8) -> GCD(8,0) : 최대공약수 = 8 구현 (C / C++) 재귀 함수 활용 int GCD(int a, int b) { if(b==0)return a; else return GCD(b,a%b); } 반복문 활용 int GCD(int a,int b){ while(1){ int r = a%b; if(r==0) r..

[C++] STL queue 사용법 & 예제 총정리 [내부링크]

queue란? queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데 이처럼 줄을 지어 순서대로 처리되는 것이 큐라는 자료구조입니다. 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 형태를 가집니다. FIFO 형태는 뜻 그대로 먼저 들어온 데이터가 가장 먼저 나가는 구조를 말합니다. queue는 C++ 표준 라이브러리(Standard Template Library)에 있는 정의 되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하시면 편리합니다. Enqueue : 큐 맨 뒤에 데이터 추가 Dequeue : 큐 맨 앞쪽의 데이터 삭제 queue의 특징 1. 먼저 들어간 자료..

[C++] STL stack 사용법 & 예제 총정리 [내부링크]

stack이란? 자료 구조 중 하나인 stack의 사전적 정의는 '쌓다', '더미'입니다. 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있습니다. stack은 나중에 들어간 것이 먼저 나오는 (Last In First Out)의 형태를 띠는 자료구조입니다. 이 방식이 stack의 가장 큰 특징이자 스택을 사용하는 이유라고 할 수 있습니다. stack은 C++ 표준 라이브러리(Standard Template Library)에 있는 정의되어 있어 필요할 때마다 만들어 사용하지 않고 include 하여 사용하시면 편리합니다. stack의 특징 1. 먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 구조 2. 시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 ..

[C++] STL vector 사용법 & 예제 총정리 [내부링크]

vector란? vector는 C++ 표준 라이브러리(Standard Template Library)에 있는 컨테이너로 사용자가 손쉽게 사용하기 위해 정의된 class입니다. vector의 가장 큰 장점은 동적으로 원소를 추가할 수 있으며 크기가 자동으로 늘어난다는 점입니다. 쉽게 말해 크기가 가변적으로 변하는 배열이라고 할 수 있습니다. 속도적인 측면에서는 배열에 비해 떨어지지만 메모리를 효율적으로 관리할 수 있다는 장점이 있어 굉장히 많이 사용합니다. vector는 배열과 마찬가지로 원소들이 하나의 메모리 블록에 연속하게 저장됩니다. 그렇기에 원소가 추가되거나 삽입될 때 메모리 재할당이 발생할 수 있고 상당한 부하가 발생하게 된다는 점은 단점으로 꼽히고 있습니다. vector 구조 vector를 생성..

[C++] STL 정렬 sort 함수 사용법 & 예제 (오름차순 , 내림차순) [내부링크]

정렬이 필요할때마다 직접 만들어서 사용할수도 있겠지만 매번 만들어서 사용하기는 번거롭습니다. 간편하게 정렬을 하고 싶다면 직접구현보다는 헤더를 include하여 그 안에 있는 sort()함수를 사용하시면 간편하게 정렬을 할 수 있습니다. sort() 함수는 C++ STL에서 제공하는 함수로써 각종 알고리즘 문제를 풀 때도 활용할 수 있어 자주 쓰이는데, 이 함수의 시간 복잡도는 nlogn입니다. 이 함수는 intro sort라는 정렬 방식을 바탕으로 구현되어 있는데 이 방식은 quick sort를 기반으로 heap sort와 insertion sort를 섞은 방식으로 최악의 경우 n^2의 시간 복잡도를 가지는 quick sort와는 달리, 최악의 경우에도 nlogn을 보장하는 정렬 알고리즘입니다. 배열의..

[C언어/C++] 문자열 비교 strcmp, strncmp 함수 사용법 & 예제 + 구현 [내부링크]

두 개의 문자열이 같은지 비교하고 싶다면 strcmp, strncmp함수를 사용하면 됩니다. strcmp함수는 비교대상 문자열인 string1 string2이 같은지 비교합니다. strncmp는 문자열을 비교한다는 것에서 일정 길이만큼 비교할 수 있는 옵션이 추가된 함수입니다. 위의 두 함수는 널로 끝나는 스트링에서 작동합니다. 그렇기에 함수에 대한 스트링 인수는 스트링 끝을 나타내는 널 문자(\0)를 포함해야 합니다. strcmp() : 두 문자열이 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다. strncmp() : 두 문자열의 원하는 길이만큼 같으면 0을, 같지 않으면 0이 아닌 값을 반환합니다. 두 함수의 리턴값은 비교 대상의 어떤 문자열이 더 크냐에 따라 달라지게 되는데 문자열의 크기는 ..

[C언어,C++] 문자열 합치기 strcat, strncat 함수 사용법 & 예제 +구현 [내부링크]

strcat와 strncat 함수는 두 문자열을 이어 붙여주는 기능을 합니다. 첫 번째 주소에 저장된 문자열에 두 번째 주소에 저장된 문자열을 붙여서 반환합니다. 두 함수는 문자열을 이어 붙인다는 형태는 동일하며 strncat는 일정 길이만큼 추가할 수 있는 옵션이 추가된 함수입니다. 위의 두 함수는 널로 끝나는 스트링에서 작동합니다. 그렇기에 함수에 대한 스트링 인수는 스트링 끝을 나타내는 널 문자(\0)를 포함해야 합니다. strcat() :문자열A에 원하는 문자열B를 문자열A 뒤쪽에 이어 붙이는 함수 strncat() :문자열A에 원하는 문자열B의 n개를 문자열A 뒤쪽에 이어 붙이는 함수 strcat(s2, s1)과 같이 strcat 함수에 최종 결과가 나올 문자열과 붙일 문자열을 넣습니다. 위의 ..

[C언어/C++] 문자열 자르기 (strtok, strtok_s) 함수 사용법 & 예제 +구현 [내부링크]

C언어 혹은 C++에서 자신이 원하는 문자열을 잘라낼 때 사용하는 함수로 strtok라는 함수가 있습니다. 이 함수는 string token의 약자로 인자 값으로 전달받은 매개변수를 구분자로 하여 문자열을 잘라내어 return 합니다. 만약 더 이상 자를 문자열이 없다면 NULL을 반환합니다. 문자열을 자르는 방식 M Y N A M E I S T O M \0 M Y \0 N A M E I S T O M \0 M Y \0 N A M E \0 I S T O M \0 M Y \0 N A M E \0 I S \0 T O M \0 C언어 또는 C++에서 문자열은 \0으로 종료가 되게 되어있습니다. 그렇기에 인자로 받은 문자열에서 구분자가 있는 위치를 널 포인트로 치환해줌으로써, 문자열을 끊기게 만듭니다. 예를 들..

[C언어/C++] 문자열 복사하기 strcpy, strncpy 함수 사용법 & 예제 + 구현 [내부링크]

C언어에서 문자열을 복사하고 싶다면 strcpy이나 strncpy함수를 사용하시면 됩니다. 두 함수의 차이는 복사할 문자열의 길이를 설정하느냐만 다를 뿐 기본적으로 문자열을 복사한다는 것은 같습니다. strcpy() : 대상 문자열 전체를 복사한다. strncpy() : 대상 문자열을 일정 길이만큼 복사한다. strcpy, strncpy 함수 형식 char* strcpy(char * dest, const char* src); char* strncpy(char* dest, const char* src, size_t num); dest : 복사를 받을 대상의 시작 주소 src : 복사를 할 원본의 시작 주소 num : 복사를 할 문자의 개수 ※ size_t는 해당 시스템에서 어떤 객체나 값이 포함할 수 있는..

[C언어/C++] 문자열 길이 구하기 strlen 함수 사용법 & 예제 + 구현 [내부링크]

strlen은 의 헤더 파일 안에 있는 함수로써(c++일 경우 cstring) const char* 타입의 문자열을 받아서 해당 문자열의 길이를 반환하는 함수입니다. 여기서 문자열의 길이라고 하는 것은 문자열을 구성하는 문자의 개수를 의미하며 문자열 마지막에 붙어 있는 종료 NULL문자인 \0을 제외한 문자 개수입니다. (공백 포함) 위와 같이 10의 크기를 가진 배열안에 있는 Hello라는 문자열은 5의 길이를 리턴하게 됩니다. strlen 함수 형식 size_t strlen(const char *str); 인자값 : const char* 타입의 문자열 리턴값 : 문자열의 길이(양수) ※ size_t는 해당 시스템에서 어떤 객체나 값이 포함할 수 있는 최대 크기의 데이터를 표현하는 타입으로 반드시 un..

[C언어/C++] 문자열 입출력 gets, puts함수 사용법 & 예제 [내부링크]

문자열을 입력받을 때 gets, puts 함수는 문자열 입출력 함수입니다. gets는 문자열을 입력받고 puts는 문자열을 출력할 때 쓰이는 함수입니다. 특히 gets나 puts를 사용하면 Enter단위로 문자열을 입력받기때문에 한줄씩 입력받을 수 있습니다. gets 함수 사용법 gets(str); str : 입력받을 문자형 배열 gets는 문자열을 입력을 받는 함수입니다. 문자열만 입력받을 수 있고, 개행을 기준으로 입력받습니다. 작동방식은 사용자로부터 문자열을 입력받아 함수의 인자로 명시한 주소의 메모리에 저장한 뒤 입출력 버퍼가 비어있는지 확인하고 비어있다면 문자 혹은 문자열을 입력받아 입출력 버퍼에 저장합니다. ※ 최근에는 gets대신에 gets_s를 사용하라고 권장하는 추세입니다. gets는 버..

[C언어] scanf 사용법 char형 문자 입력 시 공백 무시하기 [내부링크]

문자열을 scanf()함수로 입력을 받게 된다면 공백도 하나의 문자로 인식하여 같이 입력을 받게 됩니다. 입력시 공백(space)를 무시하고 싶다면 " %c" 이런식으로 한글자를 띄워서 명시해주셔야 합니다. scanf 함수 char형 문자 입력 시 공백 무시하기 #include int main() { //배열 char arr[10]; //입력 //입력값 a b c d e f g h i j for(int i=0;i

[C언어] scanf 사용법 int형 정수 한글자씩 입력받기 [내부링크]

scanf()는 기본적으로 공백(space)이나 개행(enter)을 기준으로 입력을 받기에 공백이나 개행 없이 한 줄로 쭉 입력을 한다면 입력이 정상적으로 이루어지지 않습니다. 하지만 scanf("%1d",&temp)와 같이 %1d를 사용하면 붙어있어도 한 번에 한 개씩 입력받을 수 있습니다. scanf 함수 정수 한글자씩 입력받기 #include int main() { //배열 int arr[10]; //입력 //입력값 : 0123456789 for(int i=0;i

[일상] 알고리즘 잡스 수강 후기 -10 (마무리) [내부링크]

2020년 8월 24일 총 8주간의 알고리즘 잡스의 몰입캠프가 종료되었다. 두달이라는 짧은시간 동안 내 나름대로 유의미한 성장을 이루었다고 생각된다. 예전에는 엄두도 못내는 문제들도 어떻게 접근해야 하는지 알게되었고 풀 수 있게 되었다. 물론 지금 내 실력으로 명문높은 기업들의 코딩테스트에 단번에 합격할 수 있다 장담은 못하지만 나는 애초부터 알고리즘 잡스를 수강할때 기업의 코딩테스트에 통과하자라기보다는 그냥 순수하게 알고리즘 자체를 잘 하고 싶어 수강을 한 케이스기 때문에 나의 초기 목적은 완벽하게 이루었다고 생각한다. 8주라는 시간동안 확실히 혼자하는것보다는 높은 성과를 얻어낸것 같다. ※ 혹시나 이 글을 보고 알고리즘 잡스의 몰입캠프의 수강을 고민하고 있는 사람이 있다면 추천하고 싶다. 1. 알고리..

[일상] 알고리즘 잡스 수강 후기 -9 (손진호 대표님 특강5) [내부링크]

금일 특강의 주제는 이때까지 진행했었던 알고리즘 문제를 같이 풀어보는것이 아닌 면접 스킬에 대한 강의였다. 알고리즘 잡스 대표님께서 삼성에서 면접관으로 수행하셨던 경험이 있으셔서 면접관으로 있었던 썰 듣는게 재미있었다. 면접의 포인트 3가지 기업의 인재상 1. 열정 2. 창의혁신 3. 인간미, 도덕성 기업의 규모가 크면 클 수록 기업의 인재상에 대해 매우 구체화 하고 회사의 임직원들에게 해당 기업의 인재상을 적절하게 주입시키려고 노력한다. 예를들어 삼성의 인재상은 위와 같은데 어떠한 인재를 뽑아야 할것인가를 기준으로 하고 뽑기에 기업의 인재상과 나를 일치시키려고 노력하자 2. 자기소개와 마지막으로 하고 싶은 말 신입일 경우 패기있고 열정적인 말투가 필요 마지막으로 하고싶은말이 없다 -> 열정이 없어보임 ..

[일상] 알고리즘 잡스 수강 후기 -8 (후반기) [내부링크]

지금까지 배운 내용들을 복습한다는 생각으로 단계별로 못 풀고 지나쳤던 문제들을 다 풀어나가고 있다. 이 문제들을 처음 접할 때는 어렵다고 느꼈었는데 지금 다시 풀어보니 가볍게 풀리는 문제들이 많아서 자신감이 생긴다. 알고리즘 잡스를 시작하고 나서 실력이 많이 향상되었음을 느낀다. 예전에는 어떻게 풀어야 할지 감이 잡히지 않는 문제들도 어떻게 해결해야 하는지 알게 되었으며 문제도 풀어나가고 있다. 새로운 과정 추가 학습과정이라는 새로운 과정이 개설되었다. 일단 내 계획은 지금까지 못 풀었던 문제들을 전부 다 Clear하고 추가 학습과정으로 넘어가는 것을 목표로 하고 있다. 요즘은 특별한 일 없이 계속 알고리즘 문제만 풀고 매주 목요일 시험치고 이 패턴을 계속 반복하고 있어 포스팅할 내용이 딱히 없다. 알고..

[일상] 알고리즘 잡스 수강 후기 -7 (LV 20 달성) [내부링크]

알고리즘 잡스에서의 커리큘럼은 크게 3가지 구성되어 있다. 1. 프로그래밍 언어 (if문 for문 배열등등) 2. 자료구조 (자료를 어떻게 저장할 것인가?) 3. 알고리즘 (저장되어 있는 자료들을 활용하여 의미 있는 결과를 만드는 법) Part1 프로그래밍 언어 레벨 1 ~ 레벨 10까지는 프로그래밍 공부한다. 기초적인 배열, 함수, 정렬, 재귀 함수의 활용과 시간 복잡도, 이진 탐색까지 배운다. 거의 1주일 만에 여기까지 진도를 나간 것 같다. 진도가 나가는 속도가 굉장히 빠르기 때문에 만약 알고리즘 잡스 학원을 올 생각이 있다면 기초적인 프로그래밍 언어의 활용 정도는 배우고 오는 것이 좋을 듯하다. Part2 자료구조 레벨 11 ~ 레벨 14까지는 그래프를 제외한 스택, 큐, 트리, 힙 등의 자료구조..

[일상] 알고리즘 잡스 수강 후기 -6 (손진호 대표님 특강4) [내부링크]

8/1 토요일 오늘 특강에서 풀 문제는 밀렵 꾼이라는 문제이다. 밀렵꾼이라는 문제는 지정된 맵 안에 다수의 멧돼지들이 움직이고 있고 손전등을 확인하여 눈앞에 있는 멧돼지들을 포획하고 여러 번 이 동작을 반복하였을 때 잡은 멧돼지들의 무게의 합을 구하는 문제이다. 코치님이 삼성 입사 문제로 나왔던 문제라고 하니 이 정도 문제만 쉽게 풀 수 있다면 알고리즘을 어느 정도 준비가 되었구나 하는 기준이 될 수 있다고 하셨다. 입력값으로 멧돼지들의 위치와 움직이는 방향, 달리는 속력, 돼지의 무게가 주어지고 만약 같은 격자 안에 2마리 이상의 멧돼지가 있을 경우 가장 무게가 많이 나가는 멧돼지가 다른 멧돼지를 잡아먹는다는 옵션도 있다. 문제만 들어서는 그렇게 난이도가 있는 문제인것 같지는 않았지만 문제의 제한시간이..

[일상] 알고리즘 잡스 수강 후기 -5 (손진호 대표님 특강3) [내부링크]

7/25 토요일 이번 주 토요일에도 대표님 특강이 있었기에 저번 주와 마찬가지로 알고리즘 책을 받고 문제를 어떻게 풀지 설계를 30분간 진행하였다. 알고리즘 책은 위와 같이 생겼다. 공기청정기 문제 풀이 오늘 특강 시간에 풀어 볼 문제는 공기청정기라는 문제이다. 이번 문제는 다소 난해하여 어떠한 문제인지 파악하는데만 오랜시간이 걸렸다. 문제의 핵심 부분만 발췌하자면 위와 같다. 오늘 풀어 볼 공기청정기라는 문제를 간략히 설명하자면 2차원 공간에 공기청정기가 있고 그 공기청정기에서 매 초마다 위쪽으로는 시계방향 아래쪽으로는 반시계 방향으로특정 조건을 만족하면 신선한 공기가 확산이 되어 공기의 상태가 변하게 된다. 이렇게 바뀐 공기의 상태값을 기반으로 입력받은 N초 뒤의 모든 공기 상태 값의 총합을 구하는 ..

[일상] 알고리즘 잡스 수강 후기 -4 (손진호 대표님 특강2) [내부링크]

7/18 토요일 알고리즘 잡스를 시작한 지 2주일이 되었다. 지난주 토요일 하루만 특별히 알고리즘 잡스 대표님의 특강이 있는 줄 알았는데 알고 보니 매주 토요일마다 특강이 진행되는 듯하다. 오늘도 지난주와 마찬가지로 알고리즘 잡스 대표님의 특강이 있다고 한다. 알고리즘 책을 받고 설계 30분을 한 뒤 온라인 특강을 시작하였다. 특강의 내용은 저번 주와 마찬가지로 문제가 주어졌을 때 어떻게 문제에 접근을 하고, 설계를 하고 풀이를 하는지에 대한 설명이었다. 이번 주 특강 문제는 "회전 탑"이라는 문제이고 저번 주 문제였던 "회전판과 로봇"처럼 다양한 알고리즘이 한 군데 혼합되어있는 문제였다. 손진호 대표님은 이 문제를 풀기 위해서는 한 문제를 여러 개의 문제로 쪼개서 보는 능력을 키워야 한다고 강조하셨다...

[일상] 알고리즘 잡스 수강 후기 -3 (손진호 대표님 특강) [내부링크]

7/11 토요일 알고리즘 잡스를 시작한 지 오늘로 꼭 1주일 되는 날이다. 오늘은 알고리즘잡스 대표님의 특강이 있다고 한다. 특강 이전에 알고리즘 책도 주셨다. 알고리즘 잡스에서 만든 알고리즘 책이었는데 안에 내용이 괜찮아 보여 실제로 책을 시중에 낸다 해도 나름 잘 팔릴 거 같은 느낌을 받았다. 특강 방식은 YouTube를 통한 원격 강의였다. 온라인 강의를 많이 본 적이 있기에 나는 오프라인 강의보다 오히려 이러한 강의 방식이 더 귀에 잘 들어오는 것 같다. 가끔씩 이렇게 특강이 있을 듯하다. 특강의 내용은 "회전판과 로봇"이라는 문제를 푸는 것인데 대표님이 문제를 어떻게 접근하는지, 설계를 어떻게 할 것인가와 어떠한 알고리즘이 필요한지, 필요한 알고리즘은 어떻게 구현할 것인지에 대한 설명을 해주셨다..

[일상] 알고리즘 잡스 수강 후기 -2 (+ 한국조폐공사 코딩테스트) [내부링크]

정말 오래간만에 공부다운 공부를 하고 있는 것 같다. 딱히 특정 기업에 취업하고 싶다기보다는 그냥 순수하게 알고리즘 자체를 잘하고 또 인정받고싶다. 아직 눈의 띄게 성장한 부분은 없다. 공부를 시작한 지 얼마 되지 않았기도 하고 나에게 알고리즘에 대한 절대적인 공부의 양이 부족하기 때문이다. 부족한 실력을 늘리기 위해 공부의 양을 늘렸다. 공부 시간을 늘릴 수밖에 없었던 것이 개인별로 7/11일 토요일까지 Lv7까지 진도를 나가는 것으로 예정이 되어 있었기에 어떻게든 따라갔어야 했다. 월요일 Lv4에 머물러 있었지만 화요일, 수요일을 활용하여 Lv6까지 먼저 예습을 해왔다. 이대로라면 토요일까지 Lv7까지 나가는 진도에 대한 걱정은 안 해도 될 것 같다. 알고리즘 잡스에서는 매주 목요일, 토요일마다 시험..

[일상] 알고리즘 잡스 수강 후기 -1 (몰입캠프 시작) [내부링크]

언제부터일까? 나의 개발 능력의 발전은 멈춘 것만 같다. 뛰어난 개발자가 되고 싶어 학교에서 공부도 열심히 했고 실무경험도 2년 반이나 쌓았지만 아직도 모르면 도움을 요청해야 하는 그저 그런 개발자 신세에서 벗어나지 못하고 있다. 무엇이 문제였을까? 가만히 생각해보면 지금까지 나는 공부를 하는 척만 해왔지 진짜 공부를 해본 적이 없었던 것 같다. 지금까지 나는 공부라기보다는 돈을 벌기 위한 행위에만 집중해왔던 게 아닐까? 개발자의 길을 걸어가면서 느끼는 것이 있다. 개발자로서 행복하고 싶다면 실력이 있어야 한다는 것을 나 스스로에게 당당해야 한다. 어떻게 보면 개발은 문제가 생기고 그것을 해결해나가는 과정의 연속이라고 볼 수 있다. 그런 면에서 본다면 개발자로서 가져야 할 중요한 역량 중 하나에 문제를 ..

[Web] 간단하게 코드를 짜고 컴파일 할 수 있는 사이트(Tutorialspoint) [내부링크]

개발자나 코딩을 배우는 학생들이라면 알고리즘 연습이나 간단한 코드를 짜고 실행해보고 싶을 때가 종종 있으실겁니다. 이럴때 간단한 코드 한줄을 실행해보기 위해 무거운 프로그램들을 깔기는 시간도 많이 걸리고 환경을 세팅하기도 귀찮습니다. 이럴때 웹 컴파일러를 사용하면 간단하게 코드를 짜고 실행할 수 있습니다. Tutorialspoint(https://www.tutorialspoint.com/) 이곳에서는 거의 모든 언어를 작성하고 컴파일 할 수 있습니다. 그리고 회원가입하면 작성한 코드도 저장할 수 있습니다. 자신이 작성하고 싶은 언어를 클릭한 후 코드를 작성하고 상단에 Execute 버튼을 눌러주면 오른쪽 Result 창에 컴파일 된 결과가 나오게 됩니다. 하지만 대부분의 웹 컴파일러들은 속도가 느리기에 ..

[Java] 자바 어노테이션(Annotation) 만들기 & 활용법 [내부링크]

어노테이션(Annotation)이란? 자바에서 어노테이션은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종을 말합니다. 보통 @기호를 앞에 붙여서 사용하며 JDK 1.5 버전 이상에서부터 사용이 가능합니다. 자바 어노테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동합니다. 어노테이션은 메타데이터라고 볼 수도 있습니다. 메타데이터란 어플리케이션이 처리해야 할 데이터가 아니라 ,컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할것인지를 알려주는 정보입니다. 어노테이션의 사용처 1. 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공 2. 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공 3. 실행 시 특정 기..

[Java] 자바 스트림(Stream) 사용법 & 예제 [내부링크]

스트림(Stream)이란? 스트림은 자바8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자입니다. Iterator와 비슷한 역할을 하지만 람다식으로 요소 처리 코드를 제공하여 코드가 좀 더 간결하게 할 수 있다는 점과 내부 반복자를 사용하므로 병렬처리가 쉽다는 점에서 차이점이 있습니다. [Java] 람다식(Lambda Expressions) -> 사용법 & 예제 Iterator과 Stream의 코드 비교 ArrayList list = new ArrayList(Arrays.asList(1,2,3)); Iterator iter = list.iterator(); while(iter.hasNext()) { int num = iter.next(); System.out.p..

[Java] 제네릭(Generic) 사용법 & 예제 총정리 [내부링크]

제네릭을 사용해야하는 이유 제네릭 타입을 사용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있기 때문입니다. 자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체크를 합니다. 실행 시 타입 에러가 나는것보다는 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋습니다. 또 제네릭 코드를 사용하면 타입을 국한하기 떄문에 요소를 찾아올 때 타입 변환을 할 필요가 없어 프로그램 성능이 향상되는 효과를 얻을 수 있습니다. ArrayList list = new ArrayList(); //제네릭을 사용하지 않을경우 list.add("test"); String temp = (String) list.get(0)..

[Java] 데몬 스레드(보조 스레드) 사용법 & 예제 [내부링크]

스레드의 종류 스레드는 일반 스레드(Normal Thread)와 데몬 스레드(Daemon Thread) 두 가지 종류로 나눠집니다. 데몬 스레드란? 데몬 스레드는 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드입니다. 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동종료됩니다. 그 이유는 주 스레드의 보조 역할을 수행하는데 주 스레드가 종료되면 데몬 스레드의 존재가 의미 없어지기 때문입니다. 이 점을 제외하면 데몬 스레드는 일반 스레드와 크게 차이는 없습니다. 이처럼 데몬 스레드는 간단히 말해 자신을 만드는 스레드의 종속되어있는 스레드라고 생각하면 되며 데몬 스레드를 만들려면 Thread 클래스의 setDaemon()에 true 값을 넣어 주면 됩니다. 간단한 예제 import java.awt..

[Java] 스레드(Thread) 안전하게 종료 시키는법 (interrupt) [내부링크]

스레드는 자신의 run()메소드가 모두 실행되면 자동으로 종료됩니다. 하지만 경우에 따라서는 실행중인 스레드를 종료할때도 있을텐데요. 스레드를 즉시 종료시키기 위해서 stop() 메소드를 제공하고 있는데, 이는 실제로 잘 사용하지 않습니다. 그 이유는 stop() 메소드는 쓰레드가 사용 중이던 자원들이 불완전한 상태로 남겨지기 때문입니다. interrupt() 메서드를 활용하여 스레드(Thread)안전하게 종료하기 가장 안전하게 스레드를 정상 종료시키려면 interrupt() 메소드를 사용하면 됩니다. interrupt() 메소드는 스레드가 일시 정지 상태에 있을 때 InterruptedException 예외를 발생시키는 역할을 합니다. 여기서 주목할 점은 interrupt() 메소드를 이용하기 위해서는..

[Java] 스레드(Thread)를 잠시 일시정지 시키는 법 (sleep) [내부링크]

실행중인 스레드를 잠시 멈추게 하고 싶다면 Thread 클래스의 정적 메소드인 sleep() 메소드를 사용하면 됩니다. Thread.sleep()메소드를 호출한 스레드는 주어진 시간 동안 일시 정지 상태가 되고 다시 실행 대기 상태로 돌아갑니다. 사용법 (Thread.sleep) try{ Thread.sleep(1000); }catch(InterruptedException e){ e.printStackTrace(); } 매개값에는 얼마 동안 일시 정지 상태로 있을것인지 밀리세컨드 (1/1000) 단위로 시간을 알려주면 됩니다. 위와 같이 1000이라는 값을 주면 스레드는 1초동안 일시 정지 상태가 됩니다. 일시 정지 상태에서 주어진 시간이 되기전에 interrupt() 메소드가 호출되면 Interrupt..

[Java] 멀티 스레드의 우선순위 결정하기 (setPriority) [내부링크]

멀티 스레드란? 멀티스레드란 응용 프로그램 실행 시 동시에 다수의 처리를 병행하기 위하여, 여러 개의 처리 단위인 스레드를 생성하여 운영하는 방법을 말합니다. 멀티 스레드는 동시성 또는 병렬성으로 실행됩니다. 동시성이란 머맅 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질을 말하고 병렬성은 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질을 말합니다. 싱글 코어 CPU를 이용한 멀티 스레드 작업은 병렬적으로 실행되는 것처럼 보이지만 사실은 번갈아가며 실행하는 동시성 작업입니다. 멀티 스레드의 우선순위 정하기 멀티스레드의 순서를 정하는 것을 스레드 스케줄링(thread scheduling)이라고 합니다. 스레드 스케줄링 방식에는 우선순위(priority)방식과 순환 할..

[Windows] 윈도우10 로그인 암호(비밀번호) 설정 방법 [내부링크]

윈도우를 설치할 때 패스워드를 등록하는 절차를 그냥 건너뛰게 되면 PC에 로그인 암호가 걸리지 않습니다. 로그인 암호가 걸려있지 않으면 타인이 내 PC를 자유롭게 사용할 수 있습니다. 보통 편의를 위해 카카오톡, 네이버아이디등 각종 ID를 자동 로그인으로 설정해두고 많이들 사용하는데 이럴 경우 여러 가지 사고가 발생할 가능성이 높습니다. 그렇기에 여러사람이 같이 사용하는 공간에 있는 PC라면 로그인 암호를 설정하는 것이 좋습니다. 이번 포스팅에서는 윈도우10에서 로그인 암호를 설정하는 방법에 대해 알아보려 합니다. 윈도우10 로그인 암호(비밀번호) 설정 방법 1. [Windows Key] + [I] 키를 눌러 Windows 설정에서 계정을 클릭합니다. 2. 좌측탭에서 로그인 옵션을 클릭하고 비밀번호 추가..

[Windows] 윈도우10 로그인 암호(비밀번호) 변경 방법 [내부링크]

윈도우10에서는 보안을 위해 설치시 로그인 패스워드 등록을 의무화 하고 있습니다. 로그인 암호만 설정해줘도 모르는 사람들이 내PC를 사용한다던지 PC를 확인하는등의 불상사를 예방할 수 있습니다. 모든 암호는 오래 사용하면 보안에 취약해지므로 주기적인 패스워드 변경은 필수입니다. 그렇기에 로그인 암호도 생각날때마다 주기적으로 교체해주는것이 좋습니다. 이번 포스팅에서는 윈도우10 로그인 패스워드 변경방법에 대해 알아보려합니다. 로그인 패스워드 변경 방법 1. [Windows Key] + [I]를 눌러 WIndows 설정창에 들어간 뒤 계정 버튼을 누릅니다. 2. 좌측탭에서 로그인 옵션탭을 클릭하고 비밀번호의 변경 버튼을 클릭합니다. 3. 현재 설정되어있는 로그인 암호를 입력한 뒤 다음을 누릅니다. 4. 자신..

[Windows] 윈도우10 로그인 암호(비밀번호) 제거하는 방법 [내부링크]

윈도우10에서는 보안설정을 위해서 로그인 시 암호 등록을 의무화하고 있습니다. 이러한 보안설정이 필요한 부분이 맞지만 부팅할 때마다 매번 암호를 입력하는 것은 다소 번거로운 부분이 있습니다. 특히 자취방등과 같은 나 혼자만 사용이 가능한 장소에 있는 PC는 본인 외에는 사용할 수 있는 사람이 없기에 굳이 로그인 암호를 걸어둘 필요가 없고 로그인 암호는 그저 컴퓨터 부팅에 있어 하나의 절차만 추가되는 꼴이 되어버립니다. 이런 경우에는 그냥 로그인 암호를 제거하고 사용하는 것이 편리합니다. 이번 포스팅에서는 윈도우10에서 로그인 암호를 제거하는 방법에 대해서 알아보도록 하겠습니다. 자동 로그인 설정으로 패스워드 입력절차 생략하기 암호는 해제하지 않고 자동 로그인 설정으로 암호 입력 화면을 스킵하는 방법입니다..

[Windows] 윈도우10 화면 녹화 방법 (윈도우 자체 내장기능) [내부링크]

가끔 자신이 플레이하는 게임 영상을 찍고 싶거나 자신이 만든 파워포인트 PPT 발표자료를 영상으로 만들고 싶을 때가 종종 있습니다. 이럴 때 자신이 보고 있는 컴퓨터(PC) 화면을 영상으로 만들어야 하는데요. PC 화면을 녹화하려면 프로그램을 다운받아야 했지만 윈도우10에서는 화면을 녹화할 수 있는 기능이 자체적으로 내장되어 있습니다. 자주 자신의 PC화면을 영상화시켜야 하는 상황이 아니라면 이 기능을 활용하여 영상을 만드는 것이 편리합니다. 좀더 전문적인 녹화를 위해 프로그램을 사용하고싶다면 아래 글을 참고해주세요. [Windows] 무료 화면 녹화 프로그램 OBS Studio 설치 & 초기세팅 윈도우 10 화면 녹화 방법 녹화 화면 설정 1. [ Windows Key ] + [ I ]를 눌러 Wind..

[Windows] 무료 화면 녹화 프로그램 OBS Studio 설치 & 초기세팅 [내부링크]

OBS Studio란? OBS Studio는 방송과 녹화를 둘 다 할 수 있는 프로그램입니다. 아프리카TV나 트위치로 개인방송을 BJ들이 실제로 많이 사용하시고 있습니다. OBS Studio는 자유 소프트웨어로 되어 있기 때문에 소스 코드를 자유롭게 고쳐 쓸 수도 있어 자기 마음대로 커스터마이징을 할 수 있고 플러그인도 많습니다. 플러그인을 추가하면 해상도, 서버 선택 등 방송 관련 설정을 할 수 있고 게임화면 구석에 웹캠 화면이나 광고 이미지 등의 삽입도 할 수 있는등 굉장히 다양한 설정을 지원합니다. 반디캠으로도 녹화 및 방송을 할 수 있긴 하지만 고사양 게임을 녹화 시 반디캠 보다는 OBS Studio의 싱크가 안정적이므로 반디캠보다는 OBS Studio를 사용하시는것을 추천드립니다. 화면 녹화프로..

[Windows] PC최적화 프로그램 고클린 설치 / 다운로드 & 사용법 [내부링크]

PC를 사용하다 보면 각종 광고 프로그램들과 액티브 프로그램 등이 설치되어 컴퓨터가 엉망이 되어버리곤 합니다. 이때 가장 좋은 해결책은 포맷을 하는 것이겠지만 포맷을 하게 되면 자료도 백업해야 하고 필수 유틸리티들도 새로 깔아야 하고 그렇게 만만한 일이 아니죠. 그렇기에 오늘은 포맷대신 사용할 수 있는 간단한 프로그램을 추천하고자 합니다. 바로 고클린이라는 PC 최적화 프로그램입니다. 고클린은 하드디스크 최적화 기능을 포함해서 익스플로러 최적화, 액티브 프로그램 삭제, 컴퓨터 사용시간 체크 등 다양한 기능을 갖춘 컴퓨터 관리 프로그램입니다. 고클린은 개인, 기업, 공공기관 모두 무료로 사용 가능합니다. PC 최적화 프로그램 고클린 설치 / 다운로드 방법 1. 아래 링크를 클릭하고 고클린 설치 파일을 다운..

[Windows] 무료 압축 프로그램 반디집 설치 / 다운로드 방법 [내부링크]

PC를 사용하다 보면 내가 가지고 있는 파일을 제3의 공간으로 전송을 해야 할 때가 종종 있습니다. 이럴 때 파일을 통째로 보내면 시간이 굉장히 많이 들지만 파일을 압축해서 보낸다면 전송시간을 많이 아낄 수 있습니다. 압축 프로그램중 알집이 가장 유명하지만 사용 시 몇 가지 문제점이 있습니다 우선 4G 이상의 고용량 압축은 EGG라는 이스트소프트에서 자체 제작한 확장자로 압축할 수밖에 없게 강제하고 있습니다. 이렇게 되면 해당 압축파일을 해제할 때는 알집이 아니고서는 다시 풀 수가 없게 됩니다. 그리고 위의 도표와 같이 압축/압축해제 시간이 다른 프로그램에 비해 빠른편도 아닙니다. 또한 알집은 가정에서는 무료이지만 회사에서는 유료인 프로그램입니다. 사용하다가 라이선스 문제가 발생하면 난처한 상황에 처할 ..

[Windows] 라인(LINE) PC버전 설치 / 다운로드 방법 [내부링크]

라인은 네이버에서 출시한 라인(LINE)은 NHN(네이버 + 한게임)이라는 회사에서 2011년 6월 23일에 출시한 모바일 메신저입니다. 현재는 네이버와 한게임이 서로 분할함에 따라 네이버 측에서 사업을 영위해가고 있습니다. 대한민국에서 서비스는 2011년 8월 31일부터 시작했으며 현재 국내에는 카카오톡에 밀려 조그마한 시장점유율을 가지고 있지만 해외시장을 포함한 점유율은 라인이 카카오톡 보다 훨씬 앞서있습니다. 라인도 카카오톡과 마찬가지로 PC와 연동해서 사용할 수 있습니다. 이번 포스팅에서는 PC라인의 설치방법에 대해 알아보려 합니다. 라인(LINE) PC버전 설치 / 다운로드 방법 1. 아래 링크에 들어가 Windows버전 다운로드하기 버튼을 클릭합니다. https://line.me/ko/down..

[Windows] 윈도우10 절전 모드, 화면보호기 시간 변경 & 해제 방법 [내부링크]

윈도우10에는 장기간 사용이 없으면 전력 소모를 아끼기 위해 자동으로 모니터 화면 절전모드나 화면 보호기 기능에 들어가게끔 되어 있습니다. 전력 소모면에서만 본다면 굉장히 좋은 기능이겠지만 굳이 전력을 아낄 필요가 없는 PC인데 절전모드로 넘어가는 텀이 너무 짧으면 굉장히 불편합니다. 경우에 따라서는 아예 절전모드나 화면보호기를 없애버리는 것이 좋을 때도 있을 것입니다. 이번 포스팅에서는 윈도 10에서 화면 절전모드로 넘어가는 시간의 조절 방법과 절전모드로 아예 안 넘어가도록 하는 방법에 대해 소개하려 합니다. 윈도우10 화면 절전 모드 시간 세팅 / 해제 방법 1. 바탕화면 오른쪽 클릭 -> 개인설정을 클릭합니다. [Windows Key] +[ i ] 키를 눌러 Windows 설정 -> 개인설정으로 들..

[블로그] 티스토리 블로그 일일 방문자 (1만명, 2만명, 3만명)에 따른 수익변화 [내부링크]

티스토리를 하다 보면 가장 크게 착각하시는 부분이 하나 있습니다. 방문자수가 늘어나면 광고단가가 급격히 상승하여 블로그 수익이 정비례로 늘어나지 않고 기하급수적으로 늘어날 것이라는 착각입니다. 많은 분들이 방문자가 늘어나면 수익이 기하급수적으로 증가할 것이라는 왼쪽 그래프로 생각합니다. 하지만 실제 방문자 대비 애드센스 수익 추이는 방문자가 늘어남에 따라 수익이 정비례하게 늘어나는 오른쪽 그래프가 정답입니다. 방문자별 애드센스 수익 티스토리를 하다 보면 가장 먼저 목표로 세우는 것이 일일 방문자 천명입니다. 단도직입적으로 말하자면 일일 방문자 천명일 때 평균적으로 1달러 ~ 2달러 정도를 벌어들일 수 있습니다. 이렇게 생각하면 방문자만 명의 블로그 2만 명의 블로그 혹은 그 이상의 블로그도 그 수익을 쉽..

[블로그] 티스토리 블로그 애드센스 수익 월 100만원 달성 후기 [내부링크]

2020년 5월 기준 티스토리 블로그 "코딩팩토리"를 시작한 지 약 2년 반 만에 애드센스만으로 월 수익 100만원을 달성하였습니다. 지금까지 저는 연말마다 블로그 결산 및 애드센스 수입 공개라는 글을 쓰면서 블로그 수익을 공개하여 왔습니다. [블로그] 2018년 블로그 결산 및 애드센스 수입공개 [블로그] 2019년 블로그 결산 및 애드센스 수입 공개 수익이 크지 않았을 때는 저의 수익을 공개하는 부분이 크게 어렵지 않았으나 수익이 조금씩 늘어남에 따라 수익금을 공개하기가 조금 꺼려지게 되는 것이 사실입니다. 아마 이 블로그의 수익을 공개하는 글은 이 글이 마지막이 되지 않을까 싶습니다. 그럼에도 불구하고 이렇게 마지막으로 수익금을 공개하는 이유는 최근 직장인들 부업 열풍과 함께 티스토리 블로그로 돈을..

[Java] 자바 TreeMap 사용법 & 예제 총정리 [내부링크]

TreeMap이란? TreeMap은 이진트리를 기반으로 한 Map 컬렉션입니다. 같은 Tree구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면 TreeMap은 키와 값이 저장된 Map, Etnry를 저장한다는 점입니다. TreeMap에 객체를 저장하면 자동으로 정렬되는데, 키는 저장과 동시에 자동 오름차순으로 정렬되고 숫자 타입일 경우에는 값으로, 문자열 타입일 경우에는 유니코드로 정렬합니다. 정렬 순서는 기본적으로 부모 키값과 비교해서 키 값이 낮은 것은 왼쪽 자식 노드에 키값이 높은 것은 오른쪽 자식 노드에 Map.Etnry 객체를 저장합니다. TreeMap은 일반적으로 Map으로써의 성능이 HashMap보다 떨어집니다. TreeMap은 데이터를 저장할 때 즉시 정렬하기..

[Java] 자바 HashMap 사용법 & 예제 총정리 [내부링크]

HashMap 이란? HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조입니다. 여기서 키와 값은 모두 객체입니다. 값은 중복 저장될 수 있지만 키는 중복 저장될 수 없습니다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치됩니다. HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보입니다. 위 그림과 같이 HashMap은 내부에 '키'와 '값'을 저장하는 자료 구조를 가지고 있습니다. HashMap은 해시 함수..

[Java] 자바 TreeSet 사용법 & 예제 총정리 [내부링크]

TreeSet이란? JDK 1.2부터 제공되고 있는 TreeSet은 HashSet과 마찬가지로 Set 인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장 순서가 유지되지 않는다는 Set의 성질을 그대로 가지고 있습니다. 하지만 HashSet과는 달리 TreeSet은 이진 탐색 트리(BinarySearchTree) 구조로 이루어져 있습니다. 이진 탐색 트리는 추가와 삭제에는 시간이 조금 더 걸리지만 정렬, 검색에 높은 성능을 보이는 자료구조입니다. 그렇기에 HashSet보다 데이터의 추가와 삭제는 시간이 더 걸리지만 검색과 정렬에는 유리합니다. TreeSet은 데이터를 저장할 시 이진탐색트리(BinarySearchTree)의 형태로 데이터를 저장하기에 기본적으로 nature ordering..

[Java] 자바 HashSet 사용법 & 예제 총정리 [내부링크]

HashSet이란? HashSet은 Set 인터페이스의 구현 클래스입니다. 그렇기에 Set의 성질을 그대로 상속받습니다. Set은 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있습니다. 또한 저장 순서가 유지되지 않습니다. 만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공하는 LinkedHashSet 클래스를 사용하면 됩니다. Set 인터페이스를 구현한 클래스로는 HashSet과 TreeSet이 있는데 HashSet의 경우 정렬을 해주지 않고 TreeSet의 경우 자동정렬을 해준다는 차이점이 있습니다. Set의 가장 큰 장점은 중복을 자동으로 제거해준다는 점입니다. 만약 한 편의점에서 오늘 방문한 손님의 총숫자를 계산하고 싶을 경우도 있을 것입니다. 이럴 경우 오늘 하루..

[Java] 자바 Vector 사용법 & 예제 총정리 [내부링크]

Vector란? Vector는 ArrayList와 동일한 내부구조를 가지고 있습니다. ArrayList와 마찬가지로 Vector내부에 값이 추가되면 자동으로 크기가 조절되며 그다음 객체들은 한 자리씩 뒤로 이동됩니다. 하지만 모든 것이 다 똑같은 것은 아니고 Vector와 Arraylist의 한가지 다른 점이 있는데 Vector는 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메소드들을 실행할 수 없고, 하나의 스레드가 실행을 완료해야만 다른 스레드들이 실행할 수 있습니다. 그래서 멀티 스레드 환경에서 안전하게 객체를 추가하고 삭제할 수 있습니다. Vector의 단점 (ArrayList와의 비교) 벡터는 항상 동기화되는 장점이자 단점을 가지고 있습니다. 스레드가 1개일때도 동기화를 하기..

[Java] 자바 LinkedList 사용법 & 예제 총정리 [내부링크]

LinkedList란? 연결 리스트(LinkedList)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조입니다. 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당합니다. Node는 LinkedList에 객체를 추가하거나 삭제하면 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않습니다. 중간에 데이터를 추가나 삭제하더라도 전체의 인덱스가 한 칸씩 뒤로 밀리거나 당겨지는 일이 없기에 ArrayList에 비해서 데이터의 추가나 삭제가 용이하나, 인덱스가 없기에 특정 요소에 접근하기 위해서는 순차 탐색이 필요로 하여 탐색 속도가 떨어진다는 단점이 있습니다. 그러므로 탐색 또는 정렬을 자주 하는 경우엔 배열을 사용하고 데이터의 추가/삭제..

[Java] 자바 ArrayList 사용법 & 예제 총정리 [내부링크]

ArrayList란? ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트입니다. 일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는점등이 유사하지만 한번 생성되면 크기가 변하지 않는 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있습니다. ArrayList 사용법 ArrayList 선언 ArrayList list = new ArrayList();//타입 미설정 Object로 선언된다. ArrayList members = new ArrayList();//타입설정 Student객체만 사용가능 ArrayList num = n..

[Java] 자바 컬렉션 프레임워크(List, Set, Map) 총정리 [내부링크]

컬렉션 프레임워크란? 배열을 사용하다 보면 여러가지 비효율적인 문제가 생깁니다. 가장 큰 문제점은 크기가 고정적이라는 것입니다. 배열의 크기는 생성할 때 결정되며 그 크기를 넘어가게 되면 더이상 데이터를 저장할 수 없습니다. 또 데이터를 삭제하면 해당 인덱스의 데이터는 비어있어 메모리가 낭비되는 등 여러 문제점들이 발생합니다. 그렇기에 자바는 배열의 이러한 문제점을 해결하기 위해, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)할 수 있는 자료구조들을 만들어 놓았습니다. 이러한 자료구조들이 있는 라이브러리를 컬렉션 프레임워크라고 합니다. 대표적으로는 List, Set, Map, Stack, Queue 등이 있습니다. List 컬렉션 컬렉션 프레임워크를 ..

[Java] 자바 배열 정렬하기(오름차순, 내림차순) Arrays.sort() [내부링크]

자바에서 배열이나 리스트를 정렬하려고 한다면 java.util.Arrays 클래스의 sort() 메서드를 사용하시면 따로 정렬 로직을 짜지 않아도 한번의 메소드 호출로 간편하게 배열이나 리스트를 정렬할 수 있습니다. Arrays클래스는 배열의 복사, 항목 정렬, 검색과 같은 배열을 조작 기능을 가지고 있습니다. 배열의 오름차순 정렬 Arrays.sort()메서드의 매개값으로 기본 타입 배열이나 String배열을 지정해주면 자동으로 오름차순 정렬이 됩니다. 기본타입 배열 오름차순 정렬 import java.util.Arrays; public class Sort{ public static void main(String[] args) { int arr[] = {4,23,33,15,17,19}; Arrays.s..

[Java] 자바 배열을 복사하는 다양한 방법 (깊은복사, 얕은복사) [내부링크]

자바에서 객체를 복사하는 유형으로 깊은 복사와 얕은 복사가 있습니다. 깊은 복사의 경우 객체의 실제값을 새로운 객체로 복사하는 것이고 얕은 복사는 단순히 객체의 주소 값만을 복사하는 것입니다. 이 두가지 방식은 각각의 장단점이 있습니다. 먼저 얕은 복사의 경우 여러 객체가 같은 주소를 참조하기 때문에 하나의 값을 변경해버리면 다른 대상의 값 또한 바뀌어 버리는 문제 등이 발생합니다. 하지만 깊은 복사의 경우 실제로 대상이 두개가 생기므로 이러한 문제에서는 자유로울 수 있겠습니다. 반대로 메모리 측면에서 본다면 한 객체로 할 수 있는 일은 하나로 끝내는것이 좋습니다. 쓸데없이 두개 세개가 되면 그야말로 메모리 측면에서 본다면 비효율적이게 됩니다. 이렇듯 얕은 복사로 객체가 복사된다면 실제로는 하나의 주소 ..

[Java] 래퍼 클래스(Wrapper Class)란 무엇인가? (박싱, 언박싱) [내부링크]

래퍼 클래스란(Wrapper Class)? 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어집니다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interface 등이 있는데 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있습니다. 이럴 때에 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다. 자바는 모든 기본타입(primitive type)은 값을 갖는 객체를 생성할 수 있습니다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에..

[Java] String, StringBuffer, StringBuilder의 차이점과 사용이유 [내부링크]

자바에서는 문자열을 다루는 클래스로 String, StringBuffer, StringBuilder이라는 3가지 클래스가 있습니다. 위 3가지 클래스는 모두 문자열을 저장하고 관리하는 클래스이며 각 클래스 간에는 조금의 차이가 있습니다. String과 StringBuffer, StringBuilder의 차이점 String 객체는 한번 생성되면 할당된 공간이 변하지 않지만 StringBuffer나 StringBuilder의 경우 객체의 공간이 부족해지는 경우 버퍼의 크기를 유연하게 늘려줍니다. 이러한 특징을 일컬어 String은 불변(immutable)하고 StringBuffer와 StringBuilder는 가변(mutable)하다라고 합니다. StringBuffer와 StringBuilder의 차이점 S..

[내돈내산] 삼성 갤럭시 탭 S6 사용 후기 [내부링크]

오늘은 갤럭시 탭 S6 사용후기에 대해 포스팅해보려 합니다. 갤럭시 탭 S6는 2019년 7월에 삼성에서 공개한 태블릿 PC이며 갤럭시 탭 S 시리즈의 여섯 번째 모델입니다. iOS에 아이패드가 있다면 안드로이드에는 삼성 갤럭시탭 시리즈가 대표라고 할 수 있습니다. 세계 태블릿PC 점유율에도 애플이 1위 삼성전자가 2위를 하고 있습니다. 갤럭시 탭의 판매율이 많이 떨어지긴했지만 애플대비 저렴한 가격으로 충분히 매리트가 있다고 생각됩니다. 국내 시장만 보면 거의 반반인 것 같습니다. ※ 갤럭시탭 S6은 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 삼성 갤럭시 탭 S6 사용 후기 갤럭시 S6의 전면 사진은 위와 같습니다. 적당한 크기도 좋고 개인적으로 버튼이 하나도 없는 풀스크린이 가장 마음에 듭니다..

[내돈내산] 아이패드 에어 3세대 + 애플펜슬 사용 후기 [내부링크]

오늘은 얼마전 친동생이 구매한 아이패드 에어 3세대를 리뷰해보려 합니다. 동생이 전자기기에 큰 관심이 없는 줄 알았는데 뜬금없이 산다고 해서 조금 의외였습니다. 동생의 취미생활은 유튜브 & 넷플릭스, 트위치 같은 영상 시청인데 아무래도 작은 핸드폰 화면으로 장시간 시청하기에는 무리가 있다고 생각한 듯합니다. 실제로 동생 아이패드를 몇 번 써보니 침대에서 영상 같은 것 보는 목적이라면 제가 가지고 있는 노트북 그램보다 아이패드가 훨씬 보기 편했습니다. 부가적으로 공부와 노트필기를 주로 하시는 분이라면 노트북보다 아이패드를 구매하여 필기를 하는 것도 좋습니다. 제 동생은 그렇게 하더라고요. ※ 아이패드 에어는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 아이패드 에어의 장점 1. 가벼운 무게와 큰 화..

[내돈내산] 삼성 갤럭시 버즈 플러스(블루) 구매 및 사용 후기 [내부링크]

얼마 전 제가 잘 사용하고 있었던 저의 무선 이어폰 갤럭시 버즈를 분실하고 말았습니다. 갤럭시 버즈를 굉장히 만족하면서 사용하였었기에 재구매를 하려 했는데 갤럭시 버즈의 개선작인 갤럭시 버즈 플러스가 나왔더군요. 가격은 갤럭시 버즈보다 약 2~3만 원 정도 더 비싸기는 하지만 이미 샀었던 것을 또 사기도 그렇고 성능상으로 얼마나 개선되었을까 하는 궁금증에 갤럭시 버즈 플러스를 구매하게 되었습니다. ※ 갤럭시 버즈 플러스는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 갤럭시 버즈 플러스 색상 선택 갤럭시 버즈 플러스는 위의 사진과 같이 블랙, 화이트, 블루, 레드 이렇게 4가지 색상이 있습니다. 무난하게 쓸것이라면 검은색 혹은 흰색같이 무채색을 추천드리지만 (무채색이 옷과 매치가 잘됩니다.) 저는 ..

[내돈내산] 샤오미 스마트 쓰레기통(Townew) 2세대 구매 및 사용 후기 [내부링크]

저는 이때까지 쓰레기통 자체를 사용하지 않고 생활해왔습니다. 쓰레기통을 사용한다는 것은 쓰레기를 오랫동안 방안에 보관하고 있다는 것인데 쓰레기들에서 나는 각종 악취와 쓰레기통 주변에 묻는 이물질들이 비위생적이다 생각하여 쓰레기가 생기면 그때그때 버려버리고, 쓰레기의 양이 많으면 편의점이나 마트등에서 장을 보고 난 뒤 생기는 봉투나 박스를 일회용 쓰레기통으로 삼아 쓰레기를 담고 한 번에 버려버리는 방식으로 오랫동안 생활해왔었습니다만 얼마 전 샤오미 스마트 쓰레기통을 리뷰하는 유튜브 영상을 보니 샤오미 스마트 쓰레기통은 제가 생각했던 쓰레기통의 단점들, 쓰레기에서 나는 냄새와, 이물질 등을 최소한으로 줄여주는 쓰레기통이라고 생각되어 한번 써볼까? 싶어 구매를 결정하였습니다. 오늘은 제가 올해 초 구매하여 4..

[자유여행] 대구 이월드 여행 후기 (대구 갈만한 곳) [내부링크]

연휴 마지막 날, 5월 5일 어린이날 갔었던 대구 이월드, 놀이공원을 좋아하지는 않지만 대구에서 가볼만한 곳이 이월드밖에 없었다. KTX를 탈 수 있는 동대구역에서 이월드까지 지하철로 30분정도 걸린다. 대구 지하철에는 사회적 거리두기를 위해 좌석을 한 칸씩 비워서 앉을 수 있게 해 놓았더라. 지금은 잠잠해서 다행이지만 코로나가 한창 유행했을 때는 정말 정말 무서웠을 것 같다. 이월드 도착 위 사진은 이월드 정문의 모습이다. 나는 놀이기구보다는 전망대를 가보고싶어 전망대로 바로 직행했다. 전망대 관람을 앞두고 먹었던 파스타와 치킨 배가 고파서인지 정말 맛있었다. 맛있는건 맛있는거고 코로나 때문에 전망대는 운영을 안 하더라. 정말 눈물이었다. 아쉬운 대로 바라본 전망대 밑에서의 대구 전경, 전망대에서 봤으..

[자유여행] 경상남도 통영 여행 후기 (통영 케이블카, 전망대, 통영 수산시장) [내부링크]

2020년 있었던 4월 30일 ~ 5월 5일까지의 황금연휴, 기나긴 연휴를 그냥 보내기 아쉬워 떠난 통영으로의 1박 2일 힐링여행 통영 여행으로 가는 기나긴 여정이다. 부산에서 거가대로를 타면 금방 갈 줄 알았는데 생각보다 굉장히 멀었다. 연휴라서 그런지 놀러 가는 차들도 많아 차까지 막히더라. 오전에 출발했음에도 불구하고 하마터면 깜깜한 밤에 도착할뻔했다. 통영으로 가는길의 거가대로에서 찍었던 사진들 부산을 먹여살리는 항만도 구경하고 해안도로의 길이 멋있어 지루하지 않았다. 통영에 도착하자마자 숙소로 가서 짐부터 풀었다. 이곳이 나의 고등학교 친구들 4명과 함께 하룻동안 머물 숙소이다. 호텔급은 아니지만 생각보다 저렴한 가격에 넓고 깔끔해서 만족했다. 숙소 베란다에서 찍은 주변 풍경. 멀리 바다도 보이..

[자유여행] 인천 송월동 동화마을 여행 후기 [내부링크]

인천 차이나타운 바로 옆에 있던 아름다운 벽화의 송월동 여행후기 귀찮지만 이렇게라도 써놔야 나중에 잊어버리지 않는다. 위치는 위와 같다. 인천역에서 내리면 금방 갈 수 있다. 차이나타운과 송월동 거리 사이에 있던 동화마을 입구 별도의 입장료나 입장 시한 같은 것은 없으니 마음 편하게 구경하면 된다. 동화마을에서 찍었던 사진들. 사진찍으러 가기 정말 괜찮은 여행지이다. 벽화만 잘 그려도 오래된 집들이 환골탈태한다. 벽화를 그리는데 그렇게 큰 가격이 들지는 않을 텐데. 관광으로 창출하는 부가가치가 어마어마할 것이다. 아이디어가 정말 좋은 것 같다. 부산에서 살았을때 종종 갔었던 감천문화마을이 생각나는 곳이었다. 잭과 콩나무. 빵댕이가 너무 귀여워서 찍었다. 무심코 하늘을 바라봤다. 익룡이 있어서 굉장히 놀랬..

[자유여행] 인천 차이나타운 여행 후기 (연경, 자유공원) [내부링크]

일상을 바쁘게 살면서 여유가 없던 시점 코로나가 조금 잠잠해진 틈을 타 다녀온 인천여행! 본래 1박 2일로 계획되어 있었던 여행이지만 피치 못할 사정으로 당일치기 여행이 되어버린 아쉬운 여행... 구글 맵 타임라인으로 본 인천 여행 뚜벅이인 나로서는 최선의 여행지였다. 총 지하철은 1시간 50분, 도보로는 1시간 22분을 걸었다고 기록이 나온다. 더 많이 걸었던 것 같은데 나의 착각이었나? 인천역에서 내리면 차이나타운까지 바로갈수도 있겠지만. 서울에서 인천으로 가는 급행열차가 동인천역까지만 간다고 하여 지하철을 갈아타기보다는 날씨도 좋은데 한번 걸어서 가보기로 했다. 가는 길에 겸사겸사 자유공원도 보고 그게 더 기억에 남을 것 같았다. 하늘색 라인선이 오늘 내가 걸었던 코스이다. 걸어가는 길이 예상과는 ..

[일상] 양산 덕계동 두산위브 이사 후기 [내부링크]

평생을 금정구 특히 남산동의 한 주택에서 20여년을 살아오다 얼마 전 양산 덕계동에 있는 신축 아파트로 이사를 했다. 나는 이제 서울에서 살기는 하지만 가끔씩 부산에 내려왔을 때 깔끔한 건물에서 지낼 수 있다는 것은 매우 기분 좋은 일이다. 가족들이 이사한 아파트는 양산 덕계동 두산위브라는곳이다. 양산 덕계동은 부산과 울산이라는 두개의 대도시 사이에 있고 아파트 바로 옆에 부산과 울산을 가로지르는 7번 국도가 있어 차를 가지고 있다면 부산과 울산으로 15분 남짓한 시간으로 갈 수 있다. 부산과 울산과의 접근성이 좋다는 것이 가장 마음에 든다. 아직 발전할게 많아 보이는 양산 덕계동이다. 옆동네 정관신도시는 이제 발전할 만큼 다 발전해서 밤중에 지나가다 보면 불빛으로 휘황찬란하던데 조만간 덕계도 그렇게 되..

[Java] 문자열 비교하기 == , equals() 의 차이점 [내부링크]

Java에서 int와 boolean과 같은 일반적인 데이터 타입의 비교는 ==이라는 연산자를 사용하여 비교합니다. 하지만 String처럼 Class의 값을 비교할때는 ==이 아닌 equals()라는 메소드를 사용하여 비교를 합니다. equals와 == 은 어떤 차이점이 있을까요. String 변수 생성시 주소할당 String변수를 생성할때는 두가지 방법이 있습니다. 1. 리터럴을 이용한 방식 2. new 연산자를 이용한 방식 위의 두 가지 방식에는 큰 차이점이 있습니다. 리터럴을 사용하게 되면 string constant pool이라는 영역에 존재하게 되고 new를 통해 String을 생성하면 Heap 영역에 존재하게 됩니다. String을 리터럴로 선언할 경우 내부적으로 String의 intern() ..

[Java] 문자열 길이 구하기, 제한하기 length() [내부링크]

자바에서 배열의 길이를 구하고 싶을떄는 length()이라는 메소드를 사용합니다. length() 메소드는 Static으로 이루어져 있어 Import나 클래스 선언 없이 바로 사용이 가능합니다. 문자열 길이 구하기 public class len { public static void main(String[] args) { String s = "abcdefg"; int s_len = s.length();//길이 구하기 System.out.println("문자열길이 : " + s_len); } } length() 메소드는 문자열의 길이를 리턴해줍니다. 문자열 길이 제한하기 import javax.swing.JOptionPane; public class len { public static void main(St..

[Java] 문자열에 특정 문자 포함 / 검색하는 다양한 방법(indexOf, contains, matches) [내부링크]

프로그래밍을 하다보면 특정 문자열에서 원하는 문자가 포함되어 있는지 확인해야하는 소스를 넣을때가 종종 있습니다. 문자열을 찾는 방법은 String클래스의 indexOf(), contains(), matches()메소드를 활용하여 찾을 수 있습니다. 다만 그 용도에 따라서 3가지의 메소드가 조금 다릅니다. indexOf( ) ,contains( ),matches( )의 메소드의 사용용도 메소드 사용처 indexOf() 대상 문자열에서 찾고자 하는 문자의 index값을 찾고싶을때 contains() 대상 문자열에서 찾고자 하는 문자열이 포함되어있는지 여부를 알고 싶을때 matches() 대상 문자열에서 정규표현식(숫자, 영문자, 한글)등이 포함되어있는지 여부를 알고 싶을때 indexOf( )을 활용하여 문자..

[Java] 문자열 대소문자 변경 & 비교 (toUpperCase , toLowerCase) [내부링크]

자바에서 String타입 알파벳의 대문자 혹은 소문자로 통일하고 싶다면 String클래스의 toUpperCase와 toLowerCase를 사용하면됩니다. toUpperCase()와 toLowerCase() 메소드는 모두 정적이므로 Import나 클래스 선언 없이 바로 사용이 가능합니다. 대문자로 변경(toUpperCase) public class toUpperCase { public static void main(String[] args) { String target = "abcdefg"; //대상 문자열 target = target.toUpperCase(); //대문자로 치환 System.out.println(target); //출력 } } toUpperCase()메소드는 문자열을 모두 대문자로 바꾼 ..

[Java] 자바 제곱근(루트) 구하기 Math.sqrt() [내부링크]

자바에서 특정값의 제곱근(루트)을 구하려면 java.lang.Math 클래스의 sqrt()메소드를 사용하면 됩니다. java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있습니다. Math 클래스가 제공하는 메소드는 모두 정적이므로 Import나 Math클래스 선언 없이 바로 사용이 가능합니다. 제곱근(루트) 구하기 public class Sqrt { public static void main(String[] args) { double result = Math.sqrt(25); //25의 제곱근 System.out.println("25의 제곱근 : "+ result); } } Math.sqrt() 메소드는 입력값과 출력값은 모두 double형이며 Math.sqrt(대상숫자)를..

[Java] 자바 거듭 제곱 구하기 Math.pow() [내부링크]

자바에서 특정값의 제곱을 구하려면 java.lang.Math 클래스의 pow()메소드를 사용하면 됩니다. java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공하고 있습니다. Math 클래스가 제공하는 메소드는 모두 정적이므로 Import나 Math클래스 선언 없이 바로 사용이 가능합니다. 거듭 제곱 구하기 Math.pow() public class Pow { public static void main(String[] args) { double result = Math.pow(5, 2); //5의제곱 System.out.println("5의 제곱은 : "+result); } } >Math.pow() 메소드는 입력값과 출력값은 모두 double형이며 Math.pow(대상숫자,지수)를..

[Java] 자바 난수(랜덤 숫자) 생성하기 (Math, Random) [내부링크]

자바에서 난수를 얻어내는 방법은 Random클래스를 활용하는 방법과 Math클래스를 활용하는 방법 2가지가 있습니다. 두 방법의 차이점은 Math.random() 메소드는 0.0에서 1사이의 double 난수를 얻는데만 사용한다면, Random 클래스는 boolean, int, long, float, double 난수를 얻을 수 있습니다. 또 Math.random()은 종자값(seed)가 현재시간으로 고정인 반면 Random클래스는 종자값(seed)을 설정 할 수 있습니다. 종자값은 난수를 만드는 알고리즘에 사용되는 값으로 종자값이 같으면 같은 난수를 얻습니다. Math.random() public class RandomExample { public static void main(String[] args..

[Java] 자바 정규 표현식 (Pattern, Matcher) 사용법 & 예제 [내부링크]

정규표현식(Regular Expression)이란 컴퓨터 과학의 정규언어로부터 유래한 것으로 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 입니다. 개발을 하다보면 전화번호, 주민등록번호, 이메일등과 같이 정해져있는 형식이 있고 사용자가 그 형식대로 제대로 입력했는지 검증을 해야하는 경우가 종종 있습니다. 이런 입력값을 정해진 형식에 맞는지 검증해야 할 때에는 정규표현식을 사용하면 쉽게 구현할 수 있습니다. 자주 사용하는 정규 표현식 정규 표현식 설명 ^[0-9]*$ 숫자 ^[a-zA-Z]*$ 영문자 ^[가-힣]*$ 한글 \\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail ^\d{2,3}-\d{3,4}-\d{4}$ 전화번호 ^01(?:0|1|[6-9])-(?:\d{3}|\d{..

[Java] 자바 OS 환경변수 값 불러오기 System.getenv() 사용법 [내부링크]

대부분의 운영체제는 실행되는 프로그램들에게 유용한 정보를 제공할 목적으로 환경변수를 제공합니다. 환경 변수는 운영체제에서 이름(Name)과 값(value)로 관리되는 문자열 정보이며 운영체제가 설치될 때 기본적인 내용이 설정되지만, 사용자가 직접 설정하거나 응용프로그램이 설치될 때 자동적으로 변경되기도 합니다. 자바에서는 OS의 환경변수의 값을 System.getenv( ) 라는 메서드를 통해서 불러올 수 있습니다. 환경 변수 읽기 System.getenv( ) //String value = Sytstem.getenv(String name); //사용법 System.out.println("전체 OS 환경변수 값 : " + System.getenv()); System.out.println("OS 환경변수 ..

[Java] 자바 시스템 프로퍼티(시스템 속성) System.property() 사용법 [내부링크]

시스템 프로퍼티는 JVM이 시작할 때 자동으로 설정되는 시스템 속성값입니다. 시스템 프로퍼티는 키(key)와 값(value)로 구성되어 있으며 운영체제에서 사용되는 파일 경로, 구분자, 운영체제의 종류 및 자바 프로그램을 실행시킨 사용자 아이디 JVM의 버전등이 여기에 속합니다. 시스템 프로퍼티 읽기(getProperty()) 키 설명 키(Key) 값 설명(Value) java.version Java 버전 java.vendor Java 공급자 java.vendor.url Java 공급자 주소 java.home Java가 위치한 디렉토리 java.class.version Java 클래스 버전 java.class.path Java 클래스의 경로 java.ext.dir Ext ClassLoader에 로드할 클..

[Java] 자바 프로그램 강제 종료 System.exit() 사용법 [내부링크]

System 클래스를 이용하면 운영체제의 프로그램 종료, 키보드로부터 입력, 모니터로 출력, 메모리 정리, 현재 시간 읽기, 시스템 프로피티 읽기, 환경 변수 읽기등의 일부 기능을 사용할 수 있습니다. 프로그램 종료(System.exit( )) 강제적으로 JVM을 종료시키고 싶을 때는 System 클래스의 exit() 메소드를 호출하면 됩니다. exit() 메소드는 현재 실행하고 있는 프로세스를 강제 종료시키는 역할을 합니다. exit() 메소드는 int 매개값을 지정하도록 되어 있습니다. 이 값을 종료 상태값이라고 합니다. 일반적으로 정상 종료일 경우 0으로 지정하고 비정상 종료일 경우 0이외의 다른값을 줍니다. System.exit(0); //정상종료 System.exit(1); //비정상종료 Sys..

[Java] 자바 상수 final의 의미와 사용법 [내부링크]

final의 의미는 최종적이란 뜻을 가지고 있습니다. final 필드는 초기값이 저장되면 최종적인 값이 되어 프로그램 실행 도중에 수정을 할 수 없습니다. final 사용법 final 필드 final int number = 1; //final 타입 필드 [= 초기값]; final 필드는 위와 같이 선언하며 final 필드의 초기값을 줄 수 있는 방법은 딱 두가지 방법밖에 없습니다. 첫번째는 필드 선언시에 주는 방법이 있고, 두번째는 생성자를 통해서 주는 방법이 있습니다. 단순 값이라면 필드 선언시에 주는 것이 가장 간단하지만 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부 데이터로 초기화를 시켜야한다면 생성자를 통해서 초기값을 부여하는 방법을 써야 합니다. 생성자는 final 필드의 최종 초기화를 ..

[Java] 자바 static의 의미와 사용법 [내부링크]

정적(Static)이란? 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static메소드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다. (클래스 멤버라고도 합니다.) 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있습니다. 정적(Static) 멤버 생성 Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공..

[Java] 자바 this의 의미와 사용법 [내부링크]

People클래스에 Age필드와 setAge( ) 메소드가 다음과 같이 선언되어 있다고 가정해보겠습니다. public class People{ //필드 int age; //메소드 void setAge(int a){ age = a; } } 위와같이 age에 외부의 값을 입력받을 수 있는 setAge( )라는 Setter함수를 선언하였습니다. 위에서는 메서드의 인자 변수이름을 int a라 하였는데 여기서 인자값의 변수를 필드의 이름과 같이 하려면 어떻게 해야할까요? this를 사용하면, 메서드의 인수나 변수에 필드와 같은 이름을 붙여도 그것들을 구분하여 사용할 수 있습니다. this는 주로 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할때 사용됩니다. publi..

[Java] 열거 타입(Enum) 사용법 & 예제 [내부링크]

프로그래밍을 하다보면 몇가지의 한정된 데이터들을 가지는 경우가 있습니다. 대표적으로는 "요일"이나 "계절" 같은것이지요 요일은 월,화,수,목,금,토,일 이렇게 7가지밖고 계절도 봄,여름,가을,겨울 4가지 계절로 한정되어 있습니다. 이렇게 이와 같이 한정된 데이터들을 갖는 데이터들은 열거형으로 묶어주면 편합니다. 열거형(Enum) 선언 방법 enum Season { //class 외부에서 선언 봄, 여름, 가을, 겨울 } public class enum_ex { public enum Season { //class 내부에서 선언 봄, 여름, 가을, 겨울 } } enum 키워드는 열거 타입을 선언하기 위한 키워드입니다. 열거 타입(Season)이름을 지정하고 열거 상수(봄,여름,가을,겨울)를 나열하면 됩니다...

[Java] 비트(Shift) 연산자 사용법 & 예제 [내부링크]

비트 연산자는 데이터를 비트 단위로 연산합니다. 그러므로 0과 1로 표현이 가능한 정수 타입이나 정수형으로 캐스팅이 가능한 자료형만 비트 연산이 가능합니다. 비트 연산자는 기능에 따라 비트 이동연산자, 비트 논리연산자로 구분합니다. 비트 이동 연산자(, >>>) 연산식 설명 x > y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 정수 a의 최상위 부호비트와 같은 값으로 채워집니다. x >>> y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 0으로 채워집니다.) 비트 이동 연산자는 정수 데이터의 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산을 합니다. 2 3 -16 >> 3 16 >> 3 은 16을 32비트로 분해한다음 오른쪽으로 3비트를 이동시키는 연산입니다. 비트를..

[Windows] 윈도우10 스티커 메모(Stick Note) 사용법 [내부링크]

가끔 업무를 하다보면 전화번호 같이 특정 정보를 메모해야할 경우가 종종 있습니다. 이럴때 포스티잇을 사용하면 좋은데 윈도우10에서 기본으로 포스티잇 프로그램 스티커메모 (Stick Note)가 탑재되어 있으니 모르시는 분이 있으셨다면 한번쯤 사용해보시면 좋을듯 합니다. 프로그램이 심플하여 업무를 할 때 굉장히 유용하게 사용이 가능합니다. 스티커 메모(Stick Note) 실행방법 방법 1 : 윈도우 검색에서 스티커(한글버전의 윈도우) or Stick(영문버전의 윈도우)를 검색하여 실행합니다. 방법 2 : [Windows Key] + W를 눌러 Windows lnk 작업 영역창을 띄우고 가장 위에있는 스티커 메모를 실행시킵니다. 스티커 메모(Stick Note) 사용법 스티커 메모(Stick Note)의 ..

[Windows] 윈도우10 마이크로소프트 계정 연동 해제 방법 [내부링크]

한개의 마이크로소프트 계정으로 다수의 PC를 등록하여 사용할 수 있습니다. 이렇게 하나의 계정으로 여러대의 PC를 등록해놓으면 어떤 PC가 어떤 작업을 수행한 기록들이 전부 공유되는데 이것이 장점이 될 수도 있지만 만약 여러명이서 같이 사용하는 PC라면 나의 사적인 PC들의 기록들이 공유된다는것이 문제가 될 수 있습니다. 공용 PC에 개인 마이크로소프트 계정이 연동되어있다면 연결을 해제하고 로컬 계정으로 바꿔주시는것이 좋습니다. 윈도우10 마이크로소프트 계정을 로컬계정으로 변환하기 1. [Windows Key] + [ I ] 키를 눌러 Windows 설정에 들어간 뒤 계정을 클릭합니다. 2. 대신 로컬 계정으로 로그인을 클릭합니다. 만약 마이크로소프트 계정의 패스워드를 중간에 변경한적이 있다면 업데이트 ..

[Windows] 윈도우10 마이크로소프트 계정 연동 방법 [내부링크]

한개의 마이크로소프트 계정으로 다수의 PC를 등록하여 사용할 수 있습니다. 이렇게 여러대의 PC를 하나의 계정으로 묶어놓으면 기본기본 설정을 모두 저장해 기본 인터넷 익스플로러의 즐겨찾기 문서까지 동기화가 되고, 또 어떤 PC가 무슨 작업을 했는지 타임라인 등을 볼 수 있는등 다양한 기능을 활용할 수 있습니다. 본래 윈도우 설치 시 계정을 연동할 수 있는 순서가 있지만 이 순서를 그냥 뛰어넘으셨다면 마이크로소프트 계정으로 연결이 되어 있지 않고 로컬계정으로 로그인이 되어있을 것입니다. 이번 포스팅에서는 PC를 로컬 계정에서 마이크로소프트 계정으로 전환하는 방법에 대해 알아보도록 하겠습니다. 윈도우10 로컬 계정에서 마이크로소프트 계정으로 전환하기 1. [Windows Key] + [ I ] 를 눌러 Wi..

[일상] 국민은행 적금 만기 시 해지방법 (모바일) [내부링크]

국민은행 적금 만기 시 꼭 은행에 방문하지 않아도 모바일 어플리케이션으로 간편하게 해지를 할 수 있습니다. 저도 얼마전에 적금 하나가 만기가 되어 모바일로 해지하였는데 혹시 방법을 모르시는 분이 있으실까 싶어 포스팅합니다. 1. 만기 된 적금을 클릭합니다. 2. 만기된 날짜를 확인한 후 해지예상조회를 클릭합니다. 3. 조회버튼을 클릭합니다. 4. 해지구분에 만기해약으로 표시된 것을 확인 후 해지 버튼을 클릭합니다. 5. 해지할 적금계좌 비밀번호만 입력 한 후 해지버튼을 클릭하면 국민은행 적금 해지가 완료됩니다.

[블로그] 블로그로 돈을 번다는 생각의 정리 (블로그 VS 유튜브) [내부링크]

내가 아는 것은 빙산의 일각이기에 내가 모르는 것이 많을지도 모른다. 하지만 지금까지 블로그를 운영한 경험을 토대로 나는 블로그와 수익의 상관관계에 대해 스스로 결론을 내렸다. 결론부터 말하자면 블로그 하나만으로 부자가 된다는 생각은 허황된 망상에 가깝다. 물론 블로그로 돈을 벌수는 있다. 전업 블로거들은 여러개의 블로그를 운영하며 한달에 수백만원의 수입을 올린다는 이야기도 들었다. 하지만 수천만원, 수억원 정도의 큰돈은 결코 벌 수 없다. 수익을 목표로 부업을 하고자 한다면 블로그보다는 유튜브를 하는것이 낫다. 블로그와 유튜브의 한계치는 극렬히 다르다. 지금은 텍스트 종말의 시대이며 영상의 시대이다. 인터넷 속도가 빨라짐에 따라 영상의 로딩시간 거의 없다시피한다. 글을 읽을바에야 영상을 시청하는것이 이..

[블로그] PC와 모바일 인피드광고 서로 다르게 출력하는 방법 (with 애드센스) [내부링크]

기술의 발달함에 있어 인터넷에 접속하는 디바이스가 점차 다양해지고 있습니다. 디바이스가 다양해 지는만큼 접속하는 디바이스의 크기도 다양한데요. 각각의 디바이스에는 최적의 UI가 서로 다를것입니다. 그렇기에 웹사이트도 고정형이 아닌 거의 모든 웹페이지를 반응형 웹페이지로 만듭니다. 반응형 사이트는 접속한 디바이스의 크기에 따라 UI가 바뀌는데 여기서 블로그의 카테고리 목록도 크기가 바뀌게 됩니다. 애드센스에는 카테고리에 글 목록인것처럼 해서 들어가는 광고유형이 있습니다. 인피드 광고라고 하는 광고 유형입니다. 인피드 광고는 구글 애드센스에서 인피드광고를 만들때 접속 디바이스가 PC냐 모바일이냐를 구분하여 자연스럽게 만들어줍니다. 이 인피드광고의 장점은 글 목록과 광고가 매우 흡사하여 마치 글 목록인것처럼 ..

[블로그] PC와 모바일 광고의 숫자와 배치, 크기를 다르게 하는 방법 (with 애드센스) [내부링크]

인터넷에 접속할 수 있는 수단이 PC뿐이었던 과거와 비교해 최근에는 모바일, 태블릿등의 디바이스의 접속량이 많아지는등의 극적인 변화가 생기고 있습니다. 스마트폰의 출현이후 인터넷에 접속하는 디바이스의 종류가 다양해졌습니다. 그리고 인터넷에 접속하는 디바이스들은 화면의 크기가 다양합니다. 스마트폰은 화면이 작고 PC는 크지요. 화면이 다른만큼 스마트폰과 PC는 사용성이 좋은 UI가 서로 다를것입니다. 광고도 마찬가지입니다. PC에서는 큰 광고, 여러개의 광고가 지저분하게 느껴지지 않을 수 있지만 스마트폰에서는 지저분하게 느껴질 수 있습니다. 이러한 문제의 해결책으로 구글 애드센스에서 제공하는 반응형 광고를 사용하게되면 크기라는 부분에서는 최적화가 되지만 광고의 배치와 출력하는 광고의 숫자는 직접 소스를 건..

[블로그] 쿠팡 파트너스 4개월차 후기 (수익 인증 & 하는법) [내부링크]

쿠팡 파트너스란? 쿠팡 파트너스는 쿠팡에서 운영하는 온라인 제휴 마케팅 서비스입니다. 개인 홈페이지나 블로그, SNS 등과 같이 쿠팡 API를 통하여 만든 상품 링크를 공유할 수 있는 플랫폼을 가지고 있는 사람이라면 누구나 이용할 수 있습니다. 쿠팡 API를 통하여 만든 상품 링크를 소비자가 클릭하여 24시간 내에 구매가 발생하게 되면 구매 상품의 일정 퍼센티지의 커미션을 받는 구조입니다. 안 할 이유가 없습니다. 제 블로그는 코딩에 관련된 정보를 올리는 블로그입니다. 제휴 마케팅을 하면 제 블로그의 정체성이 흔들린다 생각하여 본래 제휴마케팅을 하지 않았습니다. 하지만 쿠팡 파트너스는 조금 다릅니다. 제 블로그에는 제가 구매해보고 사용해본 IT제품들의 후기를 적는 [제품리뷰]라는 카테고리가 있습니다. 코..

[Linux] 리눅스 쉘(Shell) 간단한 스크립트 작성 및 실행 방법 [내부링크]

쉘을 사용해서 프로그래밍도 할 수 있습니다. 주로 서버 작업 자동화 프로그래밍을 만들 때 사용하며 생각보다 자주 사용합니다.쉘 스크립트는 파일안에 스크립트를 작성 후 실행하는 방식을 사용하며 파일의 가장 위 첫라인은 "#!/bin/bash"로 시작됩니다. 쉘스크립트 파일은 실행권한을 가지고 있어야 실행시킬 수 있습니다. 쉘(Shell) 스크립트 작성 방법 vi [쉘 파일명]을 입력하여 쉘 파일 생성 후 편집모드로 들어갑니다. 저는 파일명을 ex_shell이라고 주었습니다. 첫줄에 #!/bin/bash 을 주고 그 뒤에 echo "hello world"라고 입력을 합니다. echo 명령어는 쉘 프로그래밍 언어에서 출력문입니다. "hello world"라는 문구를 출력하겠다는 의미입니다. 그리고 마지막 줄에..

[Linux] 리눅스 쉘(Shell) 확인 및 변경하는 법 [내부링크]

리눅스에서 쉘은 사용자와 리눅스 커널 사이에서 중간자 역할을 수행합니다. 우리가 쉘이라고 부르는 특별한 프로그램은 한가지만 있는것이 아니라 여러가지가 있습니다. 리눅스에서는 대표적으로 배시쉘이라는 쉘을 사용합니다. 여러가지 쉘은 기본적인 기능은 비슷하지만 편리기능이나 사용자 환경설정 등에 약간씩 차이를 보입니다. 쉘이 제공하는 기능은 크게 명령어 해석기능, 프로그래밍 기능, 사용자 환경설정 기능으로 구분할 수 있습니다. 현재 사용하고 있는 쉘 확인하기 현재 사용중인 쉘의 종류를 알아보는 가장 간편한 방법은 프로세스 정보를 보는 방법입니다. grep [사용자 이름] / etc /passwd 라는 명령어를 입력하면 현재 사용하고 있는 쉘을 볼 수 있습니다. 가장 마지막에나온 /bin/bash가 현재 사용하고..

[Linux] 리눅스 편집기 vi 환경설정 하는 법 [내부링크]

vi는 사용자가 환경설정을 할 수 있습니다. 환경설정은 set이라는 명령어를 통해서 설정이 가능합니다. vi의 환경설정을 하는 방법은 아래 3가지 방법이 있습니다. 이중 첫번째 방법 .exrc파일로 저장을 하게 되면 vi를 시작할때 자동으로 이 설정파일을 읽어 적용하고 세번째 방법 마지막 행 모드에서 명령으로 실행하면 vi가 종료될때 설정이 초기화 됩니다. vi 환경설정 방법 1. 사용자 홈 디렉토리에 .exrc파일로 저장합니다. 2. 쉘의 환경변수 EXINIT에 지정합니다. 3. vi의 마지막 행 모드에서 명령으로 설정합니다. vi 환경 설정 명령어 명령어 설명 set nu 각 행의 행 번호를 표시합니다. set nonu 각 행의 행 번호를 표시하지 않습니다. set list 눈에 보이지 않는 특수문자..

[Linux] 리눅스 문서 편집기 vi 사용법 & 명령어 총정리 [내부링크]

파일을 작성하거나 수정하기 위해서는 편집기가 필요합니다. 윈도우에서는 메모장을 편집기의 기본으로 지원하는 반면 리눅스에서는 기본 편집기로 vi 라는 편집기를 지원합니다. vi는 리눅스에서 일반적으로 사용하는 화면 편집기 입니다. 명령이 매우 단순하여 빠르게 편집할 수 있어 사용법만 익힌다면 효율적으로 활용하실 수 있습니다. 이번 포스팅에서는 리눅스 문서 편집기 vi를 사용하는 방법에 대해 알아보도록 하겠습니다. 리눅스 문서 편집기 vi 열기 vi example.txt -> example txt 파일 실행 (example.txt 파일이 없으면 빈 파일이 실행됩니다.) vi -> vi 편집기 실행 (빈파일) vi를 시작할때는 파일을 지정할 수 있습니다. 지정한 파일이 존재하는 파일이면 해당 파일이 열리고 없..

[Linux] 리눅스 터미널 명령어 모음 총정리 [내부링크]

리눅스 명령어 모음집 명령어 설명 alias 명령어 간소화 apropos 관련 명령어 검색하기 arch 컴퓨터 종류 확인하기 arp 같은 서브넷 IP 조회하기 at 작업시간 설정하기 atd 계획성 있는 작업 실행하기 awk 특정 패턴 문자열 처리하기 a2p 펄 파일로 바꾸기 badblocks 배드 블록 검사하기 bc 계산기 실행하기 biff 메일 수신 소리로 확인하기 bg 배경화면 설정하기 bind 키나 함수 순서 바인딩하기 break 루프 빠져나가기 cal 달력 확인하기 bubuiltin 내부 명령어 확인하기 case 조건절 처리하기 cat 화면상에서 파일 확인하기 cd 디렉토리 이동하기 cfdisk 디스크 설정하기 chattr 파일 속성 변경하기 chfn 사용자 정보 변경하기 chgrp 파일, 디렉토..

[Linux] 우분투 안드로이드 스튜디오 설치 / 다운로드 방법 [내부링크]

안드로이드란? 안드로이드는 구글에서 서비스하고 있는 스마트폰용 운영체제입니다. 운영체제와 미들웨어, 사용자 인터페이스, 어플리케이션, MMS 서비스 등을 하나로 묶어 서비스를 제공하며 다양한 어플리케이션을 만들어 설치하면 실행될 수 있도록 구성된 운영체제 입니다. 현 시간 기준으로 안드로이드는 세계 모바일 시장에서 가장 성공한 OS라는 평가를 받고있습니다. 안드로이드는 리눅스(Linux)를 기반으로 제작되었고 언어는 자바를 사용합니다. 안드로이드 스튜디오란? 안드로이드 어플리케이션을 개발하는 방법은 다양한 방법이 있지만 가장 많이 사용하고 대중화 되어있는 방법은 바로 안드로이드 스튜디오를 활용하여 어플리케이션을 개발하는 방법입니다. 안드로이드는 기본적으로 자바를 필요로 하기 때문에 Java SDK를 먼저..

[Linux] 우분투 Git 설치 / 다운로드 & 사용 방법 [내부링크]

깃허브란? 깃(git)은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템입니다. 깃의 작업 폴더는 모두 기록하고 있어서 추적이 가능하고, 완전한 형태의 저장소입니다. 우분투에서 git 설치 1. sudo apt-get install git 명령어를 입력하여 패키지 리스트를 업데이트합니다. 2. sudo apt install git 명령어를 입력하여 깃을 설치합니다. 3. git --version이라는 명령어를 입력하면 설치할 git의 버전을 알 수 있습니다. 저는 2.17.1버전이군요. 4. 아래 명령어를 입력하여 깃에 push했을때 올라갈 내 정보를 입력해줍니다. git config --global user.name [이름] git config --global user.mail [메일 주소..

[Linux] 파일 관련 명령어 총정리(생성, 출력, 복사, 이동, 삭제) [내부링크]

텍스트 파일 생성하기 : touch [파일명] 예제로 사용할 텍스트 파일을 하나 만들어주겠습니다. 텍스트 파일을 만드는 명령어는 touch [파일명]입니다. 편집기를 사용해서 텍스트 파일에 텍스트도 삽입해보세요. 저는 위와 같은 텍스트를 넣고 저장하였습니다. 파일 내용 출력하기: cat [파일명], more [파일명] 파일 내용을 출력하는 명령어는 cat과 more이 있습니다. cat명령어는 텍스트 파일의 내용을 화면에 연속적으로 출력합니다. 하지만 파일 내용이 길다면 cat을 사용하면 스크롤이 되므로 내용 확인이 조금 어렵게 됩니다. 이럴때는 화면단위로 내용을 출력해주는 more이라는 명령어를 사용하시면 됩니다. cat -n : 라인번호 붙여서 출력합니다. more +[시작할 행번호] : 출력을 시작할..

[Linux] 디렉토리 관련 명령어 총정리(확인, 이동, 생성, 삭제, 복사, 잘라내기) [내부링크]

디렉토리 경로 확인 : pwd 현재 디렉토리를 경로를 확인하는 명령어는 pwd입니다. 현재 디렉토리의 절대 경로명을 출력합니다. 우분투 터미널을 바로 실행한 뒤 pwd를 입력하면 /home/계정명이 출력됩니다. 이는 현재 디렉토리의 절대 경로명이면서 동시에 접속한 계정의 홈 디렉토리에 대한 절대 경로명이 됩니다. 디렉토리를 이동하면 해당 경로가 바뀌게 됩니다. 디렉토리 이동 : cd [이동할 디렉토리] 현재 디렉토리에서 다른 디렉토리로 이동할때는 cd라는 명령어를 사용하여 이동합니다. 접근이 금지된 디렉토리를 제외하고는 어느 디렉토리든지 이동할 수 있습니다. cd 명령어와 함꼐 이동하고자 하는 디렉토리를 위와같이 입력하게 되면 해당 디렉토리로 이동하게됩니다. cd [디렉토리명] : 해당 디렉토리로 이동합..

[Linux] 리눅스 파일의 종류와 디렉토리 구조 [내부링크]

리눅스는 기본적으로 유닉스 계열의 운영체제이므로 유닉스의 많은 부분을 그대로 이어서 사용하고 있습니다. 유닉스에서는 시스템과 관련된 정보와 하드웨어 같은 장치를 모두 파일로 관리합니다. 리눅스도 유닉스와 마찬가지로 시스템과 관련된 정보들을 파일로 관리합니다. 리눅스는 파일을 효율적으로 관리하기위해 디렉토리를 사용하는데 디렉토리는 계층구조를 가지고 있습니다. 리눅스는 전체 파일을 용도에 따라 계층 디렉토리로 구분하여 관리하며 이것을 파일 시스템이라고 합니다. 리눅스 파일의 종류 일반 파일 일반파일은 데이터를 저장하는데 주로 사용됩니다. 각종 텍스트 파일, 실행파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일은 일반파일입니다. 실행파일이나 이미지 파일의 경우 데이터가 바이너리 형태로 저장되어 바이너리..

[Linux] 우분투 크롬(Chrome) 설치 / 다운로드 방법 [내부링크]

우분투에 기본으로 파이어폭스(Firefox)라는 웹 브라우저가 탑재되어있습니다. 하지만 저는 크롬(Chrome)에 워낙 익숙해져있기에 파이어폭스(Firefox)가 굉장히 불편하게 느껴지더군요. 그래서 우분투에 크롬(Chrome)을 설치한뒤 주 웹브라우저로 사용하려 합니다. 이번 포스팅에서는 우분투 운영체제에서 크롬(Chrome)을 설치하는 방법에 대해 알아보도록 하겠습니다. 우분투에서 크롬(Chrome) 설치 / 다운로드 방법 wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 1. 단축키 Ctrl + Alt + T를 눌러 터미널창을 띄운 뒤 위의 명령어를 입력하여 크롬 브라우저 패키지 설치용 인증키..

[Linux] 우분투 비밀번호 분실 및 변경(초기화) 방법 [내부링크]

리눅스에서는 master계정인 root 계정을 리눅스의 경우는 일반 사용자보다 서버로 이용하기 위한 경우가 더 많기 때문에 root 계정에 대한 보안이 상당히 중요합니다. 고로 root계정에는 암호가 필수적으로 걸려있는데요. 이 암호를 잊어버리게 되면 sudo로 시작하는 모든 명령어들을 사용할 수 없게되어 우분투 사용에 심각한 제약이 걸립니다. 오늘은 우분투 root계정 분실 시 초기화 하는 방법에 대해 알아보도록 하겠습니다. 우분투 비밀번호 분실 및 변경(초기화) 방법 1. 우분투 실행 시 Shift 혹은 Esc를 눌러 Ubuntu용 고급설정(Advanced options for Ubuntu)으로 진입합니다. 2. Ubunut, with Linux generic (recovery mode)로 들어갑니다..

[Linux] 우분투 그림판 (간단한 이미지 편집기) Kolourpaint 설치 / 다운로드 방법 [내부링크]

우분투에는 윈도우와 달리 기본적으로 탑재되어있는 이미지 편집툴이 없습니다. 하지만 저는 우분투에서 가끔 화면 캡처도 하고 캡처한 이미지를 간단하게 편집도 하고 싶어 우분투에서 사용할 수 있는 간단한 이미지 편집기를 다운받으려 합니다. 우분투 이미지 편집기에 대해 조금 알아보니 우분투 판 그림판인 Kolourpaint라는 프로그램이 있더군요. 실제로 사용해보니 기능이 윈도우 그림판에 비해 다소 부실하기는 하지만 가벼운 이미지 편집용으로 사용하기에는 무리가 없을듯 합니다. 이번 포스팅에서는 Kolourpaint 설치방법에 대해 포스팅 해보도록 하겠습니다. 우분투 그림판(Kolourpaint) 설치 방법 1. Ctrl + Alt + T 를 눌러 터미널을 실행시킨 뒤 sudo apt-get install kol..

[Linux] 우분투 한글 설정 키보드 세팅 (한글 입력 안될 시 해결 방법) [내부링크]

우분투를 설치하고 처음 실행시켰더니 한글 자판이 입력 되지 않았습니다. 윈도우에서 한/영 Key로 한글과 영어를 전환해서 사용하고 있어 우분투도 마찬가지겠거니 했는데 확인해보니 디폴트로 잡힌 한/영 전환키가 엉뚱한 키로 되어있더군요. 이번 포스팅에서는 우분투 설치 후 한글 입력키 세팅에 대해 포스팅 하도록 하겠습니다. 우분투 한글 설정 키보드 세팅 1. 우분투 바탕화면의 7시쪽을 보면 위와 같은 아이콘이 있습니다. 이 아이콘을 클릭합니다. 2. 아이콘을 클릭하게 되면 현재 우분투에 설치되어 있는 전체 프로그램의 아이콘이 뜰텐데요. 여기서 위 사진에 보이는 설정이라는 아이콘을 클릭합니다. 3. 설정 창 좌측의 지역 및 언어를 선택한 뒤 한개의 입력소스만을 남기고 모두 - 버튼을 눌러 삭제합니다. 그런 뒤 ..

[Linux] 리눅스 우분투(Ubuntu) 설치하기 for PC (듀얼 운영체제) [내부링크]

PC의 운영체제는 윈도우가 거의 필수적으로 자리를 잡았습니다. 하지만 PC 운영체제가 윈도우만 있는 것은 아니고 리눅스라는 운영체제도 있습니다. 개인 PC에서 주 운영체제로 리눅스를 사용하기는 불편한 점이 많지만 실무에서 서버를 구성하고 있는 OS로 리눅스를 많이 채택하고 있으므로 공부 목적으로라도 리눅스라는 플랫폼의 운영체제를 사용해보고 싶을 경우도 있을 수 있습니다. 이럴 경우 윈도우와 리눅스 두 가지 운영체제를 모두 설치하여 번갈아가며 부팅 & 사용하는 방법으로 두 가지 운영체제를 효율적으로 사용할 수 있습니다. 리눅스의 장점 리눅스의 가장 큰 장점은 무료라는 점입니다. 윈도우의 경우 마이크로소프트에서 판매를 하고 있는 운영체제이지만 리눅스는 대부분의 버전이 무료로 배포되고 있기에 비용이 전혀 들지..

[Windows] 윈도우 10 하드디스크 파티션 합치기 [내부링크]

하나의 드라이브를 너무 많은 파티션으로 나누어 놓으면 저장공간의 비효율성이 발생하게 됩니다. 파티션을 나누면서 소실되는 저장공간도 그렇고, 각 파티션에 너무 작은 공간이 남아있다면 여기에 용량이 많은 프로그램을 설치하기도 힘듭니다. 이렇게 저장공간의 효율성면에서 본다면은 파티션을 하나로 합치는것이 좋습니다. 이번 포스팅에서는 여러개로 분할되어있는 파티션을 초기화 시키고 하나로 합치는 과정에 대해 포스팅하도록 하겠습니다. 하드디스크 파티션 초기화 & 합치기 1. [윈도우 KEY] + [S] 단축키를 사용하여 검색창을 띄운 다음 내 PC -> 내 PC 우 클릭 -> 관리를 클릭하여 컴퓨터 관리로 이동합니다. 컴퓨터 관리 컴퓨터를 관리할 수 있는 전반적인 기능들을 모아놓은 관리창입니다. 작업 스케줄러, 장치 ..

[Windows] 윈도우 10 하드디스크 파티션 나누기 [내부링크]

하드디스크의 파티션을 나눈다는것은 하나의 하드디스크를 마치 두개의 하드디스크 처럼 사용하는 것을 말합니다. 하나의 하드디스크를 쪼개어 C드라이브, D드라이브 이렇게 나눌 수 있습니다. 자주 있는 일은 아니지만 듀얼 운영체제를 사용할때나 하드디스크를 따로 나누어 관리하고 싶을 경우 파티션을 나눠야 할 경우가 종종 있습니다. 이번 포스팅에서는 하드디스크 파티션을 나누는 방법에 대해 알아보도록 하겠습니다. 하드디스크(HDD, SSD) 파티션 나누기 1. [윈도우 KEY] + [S] 를 눌러 윈도우 검색창을 띄운 다음 내 PC를 검색하고-> 내 PC 아이콘 오른쪽 클릭 -> 관리를 클릭하여 컴퓨터 관리로 이동합니다. 컴퓨터 관리 컴퓨터를 관리할 수 있는 전반적인 기능들을 모아놓은 관리창입니다. 작업 스케줄러, ..

[Windows] 새 하드디스크(SSD,HDD) 인식 불가 시 대처법 [내부링크]

컴퓨터를 오랜기간 사용하다보면 파일이 계속해서 쌓이게 됩니다. 이렇게 파일이 쌓이다보면 하드디스크의 저장공간이 자연스레 부족해지게 되는데요. 저장공간의 부족함을 느낀다면 SSD나 HDD를 추가로 구매하여 장착해야 합니다. 최근들어 SSD와 HDD의 가격이 많이 내려가면서 저장공간을 늘리는데 있어 가격부담이 줄어듦에 따라 많은분들이 추가로 하드디스크의 용량을 늘리기위해 새로운 SSD나 HDD를 추가로 구매하여 장착하곤 합니다. 하지만 이렇게 장착만 한다고해서 바로 내 PC에 드라이브가 인식이 되는것이 아니라 파티션 할당을 해주어야 정상적으로 인식됩니다. 내 PC에서 하드디스크가 제대로 인식이 되지 않는다면 십중팔구 파티션이 제대로 할당되지 않았을 경우입니다. 새 하드디스크(SSD,HDD) 인식이 안될때 대..

[Windows] 오피스 365 설치 / 다운로드 방법 (+오피스365란?) [내부링크]

오피스 365란? Office365는 기존 Office 2016/ Office 2019에 비하여 항상 최신 버전으로 업데이트가 이루어지는 버전이며, 최신 버전인 만큼 기존의 오피스2016/2019에 비하여 더 많은 기능을 제공합니다. Office365는 마이크로소프트에서 주기적으로 업데이트를 진행해줍니다. 주기적인 업데이트를 받으므로 현재까지 출시된 오피스 프로그램 중에서 가장 진보된 기능을 가지고 있으며 오피스의 모든 기능을 사용할 수 있습니다. Office365버전은 한대의 PC에서만 사용이 가능한것이 아니라 다수의 유저와 여러 디바이스에 설치해서 사용이 가능합니다. 한개의 계정으로 총 5개의 디바이스에서 사용이 가능하니 하나의 계정을 통해서 온가족이 같이 사용할 수 있습니다. 오피스 365의 장점 ..

[Windows] 무료 화면 캡처 프로그램 추천 픽픽 설치 / 다운로드 [내부링크]

픽픽은 컴퓨터 화면을 캡처하고 편집하는 프로그램입니다. 현재 나와있는 캡처 프로그램 중에 가장 강력한 기능을 탑재하고 있다고 생각됩니다. 단순 캡처만을 위해서라면 윈도우10에 내장되어있는 캡처 도구라는 프로그램을 사용해도 무방하나 캡처 이후 편집에서의 기능이 많이 떨어집니다. 하지만 픽픽은 간편하고 강력한 편집 도구를 지원합니다. 개인적으로 그림판의 편집기능보다 훨씬 나은 편집기능을 가지고 있다고 생각됩니다. 캡처 프로그램 픽픽 주요 기능 픽픽의 주요 기능은 위와 같습니다. 아래 링크를 클릭하시면 픽픽에 대한 더 자세한 정보를 확인할 수 있습니다. https://picpick.app/ko/ 캡처 프로그램 픽픽 설치 / 다운로드 방법 1. 아래 링크를 클릭하여 픽픽 다운로드 페이지로 들어간 뒤 다운로드 버..

[Windows] 카카오톡 PC 버전 설치 / 다운로드 방법 [내부링크]

카카오톡은 전세계 어디서나 사용자 간에 무료로 메시지를 주고받을 수 있는 국내 1위 메신저입니다. 최근에는 일상 대화뿐만 아니라 업무도 카카오톡으로 진행을 많이 합니다. 모바일에서도 카카오톡이 사용이 가능하지만 컴퓨터 작업을 오랫동안 하시는 분들은 카톡이 올 때마다 스마트폰을 들어 메시지를 확인하는 것도 수고스러운 일입니다. 장시간 PC를 사용하는 분들이라면 카카오톡 PC버전을 설치해서 사용하시는 것이 좋습니다. 스마트폰 자판보다 키보드가 입력속도도 빠르고 사용하기 편리하기에 PC버전 카카오톡이 모바일 버전 카카오톡보다 사용성도 더 좋습니다. 카카오톡 PC버전 설치 / 다운로드 방법 1. 아래 링크를 클릭해 카카오톡 다운로드 링크에 들어간 뒤 카카오톡 PC버전 다운로드에서 Windows를 클릭해 윈도우 ..

[Windows] 윈도우10 정품 인증하는 다양한 방법 총 정리 [내부링크]

윈도우를 정상적으로 구매하여 설치하신것이 아니라면 윈도우 정품인증이 안되어 있을것입니다. 윈도우 정품 인증을 하지 않아도 윈도우가 부팅이 안되는 등의 크리티컬한 이슈는 발생하지 않으며 대부분의 기능도 사용이 가능합니다.하지만 바탕화면이나 잠금화면, 테마 등 자신이 원하는 사진으로 분위기를 바꿀 수 있는 커스터마이징등의 기능은 사용할 수 없고, 시작 메뉴, 작업표시줄 옵션 등 개인설정과 관련된 옵션을 사용할 수 없는 사소한 제약이 생깁니다. 그리고 가장 신경쓰이는것이 정품인증을 하지 않으면 우측 하단에 아래와 같이 인증하라는 워터마크가 뜹니다. 이 문구를 제거 하고 싶다면 정품 인증을 하셔야 합니다. 윈도우 라이선스가 곧 만료됩니다. 라는 팝업창이 떠도 아래에서 설명하는 방식으로 해결이 가능합니다. 쿠팡 ..

[Windows] USB 윈도우 10 설치 / 다운로드 방법 [내부링크]

컴퓨터를 살 때 윈도우 운영체제가 탑재하여 판매를 하기도 하지만 대부분의 경우 윈도우가 설치되어 있지 않은 프리도스 모델을 같이 판매합니다. 윈도우의 설치 유무에 따라 많게는 20만원 ~ 30만원의 금액의 차이가 발생합니다. 현명한 소비자라면 윈도우가 미 설치되어있는 프리도스 모드를 구매하여 자신이 직접 윈도우를 설치하는 것이 돈을 SAVE 할 수 있는 좋은 방법이 될 수 있습니다. 예전에는 USB를 윈도우10 크랙으로 부팅USB로 만들어 설치하는 복잡한 과정을 거쳤지만 최근에는 마이크로 소프트에서 자체적으로 윈도우 설치를 지원하고 있어 윈도우를 설치하는 방법은 크게 어렵지 않습니다. 하지만 이렇게 설치한 윈도우는 정품인증을 꼭 거쳐야합니다. 쿠팡같은 이커머스마켓에서 윈도우10을 구매하신다면 5천원정도의..

[H/W] 노트북 SSD 추가 업그레이드 (with LG 그램) [내부링크]

컴퓨터를 오랜 기간 사용하다 보면 항상 부족한 용량에 시달리는 경우가 많습니다. 이럴 때 SSD를 추가로 달아 용량을 늘려주면 좋은데요. 최근에는 SSD 가격도 많이 떨어져 부담 없는 선에서 컴퓨터 용량을 추가할 수 있으니 저장공간이 부족하시다면 한번 시도해보는 것도 괜찮을 것 같습니다. 저는 이번에 LG 2020그램을 사전 구매하며 사은품으로 받은 1TB짜리 SSD를 추가하였습니다. 2020년도 2월 기준 1TB SSD는 제조사마다 다양하지만 가장 많이 쓰는 삼성 SSD의 경우 약 26만 원 정도 하네요. ※ 노트북용 SSD는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 노트북 SSD 업그레이드 진행 방법 SSD추가는 노트북마다 조금씩 상이하겠으나 노트북 뒤 하판을 뜯어 추가 SSD 슬롯에 추가..

[H/W] 노트북 램(RAM) 추가 업그레이드 (with LG 그램) [내부링크]

램(RAM)은 하드디스크로부터 일정량의 데이터를 복사해 임시 저장한 후, 이를 필요 시마다 CPU에 빠르게 전달하는 역할을 합니다. 램(RAM)의 용량이 충분하다면 속도가 느린 하드디스크를 배제하고 CPU와 램끼리만 데이터를 교환하므로 전반적인 작업을 고속으로 처리할 수 있습니다. 램(RAM)의 용량이 작으면 하드디스크와 CPU끼리의 데이터 교환 작업을 해야 하므로 전반적인 작업 속도가 크게 저하됩니다. 특히 여러 개의 프로그램을 동시에 띄워놓고 작업할 때에는 작업 속도의 체감이 많이 됩니다. 요즘은 대부분 8GB의 램(RAM)을 사용하지만 무거운 프로그램, 혹은 프로그램을 여러개 띄워놓고 작업하실 분이시라면 램(RAM)을 업그레이드 시키는것이 좋습니다. 램(RAM)의 용량은 클수록 유리하지만 저는 16..

[블로그] 티스토리 2차 도메인 설정 후 발생한 여러가지 문제들 [내부링크]

티스토리 블로그에 도메인을 설정하고 여러 사이트로 확장하려 마음을 단단히 먹고 도메인을 5년치를 구매하였습니다. 하지만 2차 도메인을 설정하자마자 여러 가지 문제점이 튀어나왔습니다. 오늘은 티스토리에 2차 도메인을 설정하고 이틀간 제가 겪었던 여러 가지 문제점에 대해 써보려 합니다. [Web] 도메인 구입 방법 및 구매 후기 (with 가비아) [블로그] 티스토리 2차 도메인 주소 설정 방법 및 후기 (with 가비아) 애드센스 노출이 안됨 저는 미리 알고 있었지만 혹시나 모르는 분이 있을까 싶어 적어봅니다. 2차 도메인을 설정하면 애드센스가 정상적으로 작동하지 않습니다. 새로운 도메인에서 애드센스를 송출하려면 새로 애드센스를 승인받아야 합니다. 애드센스를 승인받은 URL이 아니라 신규 도메인을 넣었기에..

[블로그] 티스토리 2차 도메인 주소 설정 방법 및 후기 (with 가비아) [내부링크]

최근 들어 제 『코딩팩토리』라는 블로그를 기반으로 여러 가지 사업을 한번 해보고 싶다는 욕구가 커짐에 따라 블로그의 확장성을 위해 도메인을 구입하였습니다. 블로그에 2차 도메인 설정 시 걱정되는 부분 2차 도메인을 사용하기 앞서 걱정이 많습니다. 많은 분들께서 2차 도메인을 사용하고 난 뒤 방문자 유입에 악영향을 끼쳤다라는 후기를 많이 봤기에 그렇습니다. 알고 보니 2차 도메인을 설정하는 작업은 블로그를 시작하는 초창기 때나 추천하는 방법이지 어느 정도 블로그가 성장한 뒤는 추천하지 않는다라고 하더군요. 블로그의 주소가 바뀜으로써 기존에 제가 발행했던 글들의 주소와 신규로 발행하는 글의 주소가 엉키는 현상이 발생한다고 합니다. 제 블로그는 이미 400개가 넘는 글이 발행되었고 평일 기준으로 15000명 ..

[Web] 도메인 구입 방법 및 구매 후기 (with 가비아) [내부링크]

아주 오래전 『나만의 도메인을 가지면 어떨까?』 라는 생각을 한 적이 있습니다. 그 당시에는 도메인을 구매하는 비용과 계속해서 도메인을 갱신해주어야 한다는 압박감, 그리고 도메인을 바꾸면 블로그가 죽어버린다는 소문에 득보다는 실이 많은 것 같다 생각되어 그냥 티스토리 기본 도메인을 사용하자는 결론을 내렸었는데 최근 들어 이 『코딩팩토리』라는 블로그를 기반으로 여러 사업을 확장시키고 싶다는 욕구가 커짐에 따라 도메인 구입을 다시 고려하게 되었고 더 늦기 전에 개인 도메인을 구매하여 넣어주자라는 결론에 도달하게 되었습니다. 도메인 구매 사이트 결정 도메인의 가격의 원가는 ICNN(인터넷 관리 협회) 등록 수수료와 네임서버 운영비를 합쳐 대략 2천원 ~ 3천원 사이라고 합니다. 이 도메인을 여러 도메인 판매 ..

[C++] 메모리 동적 할당 (new, delete) [내부링크]

C와 C++은 다른 개발언어와 달리 포인터를 사용하여 메모리를 직접 관리할 수 있다는 장점이 있습니다. C에는 malloc()과 free()라는 함수를 통해서 메모리를 할당하고 해제하였는데 C++에서는 new와 delete라는 연산자를 활용하여 메모리를 관리합니다. new는 malloc() 함수와 달리 메모리 크기를 정하지 않고 동적으로 할당합니다. new와 delete 사용법 //메모리 할당 사용법 타입 *변수명 = new 타입; //메모리 할당 delete 변수명 //메모리 할당해제 #include using namespace std; int main(){ int *point = new int; //메모리 동적할당 *point = 100; cout

[C++] 입력문 / 출력문 (cin, cout) 사용법 & 예제 [내부링크]

C언어에서는 에 있는 scanf, printf를 통해서 입출력문을 사용합니다. 물론 C++에서도 scanf, printf를 통해서 입력, 출력을 할수도 있지만 C++의 표준 입력 및 출력은 cin, cout를 사용합니다. std 네임스페이스에 속한 cin, cout객체는 클래스내에 있는 인스턴스입니다. 출력문 std::cout include int main() { std::cout

[내돈내산] 삼성 정품 케이스 LED 뷰 커버 구매 후기 [내부링크]

저는 기존에 삼성 정품 케이스 중 하나인 프로텍티브 스탠딩 케이스를 사용하고 있었는데 너무 낡아 이번에 새 케이스로 교체하였습니다. 이번에 교체한 케이스도 삼성 정품 케이스입니다. 삼성 정품 케이스들은 시중에 파는 일반 케이스보다는 가격이 조금 비싼 편이지만 비싼 만큼 그 값어치를 하는 것 같습니다. LED 뷰 커버는 특정 이벤트가 발생했을 때마다 케이스에 나타나는 LED 아이콘을 통해서 정보를 확인할 수 있는 재미있는 기능이 탑재되어 있는 케이스입니다. ※ 삼성 정품 LED 뷰 커버 케이스는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 삼성 정품 케이스 LED 뷰 커버 구매 후기 인터넷으로 구매를 해서인지 사용설명서 같은 건 없고 심플하게 케이스만 포장되어 배송되었습니다. LED뷰 커버는 핸드폰..

[내돈내산] 갤럭시 노트 펜 분실 후 재구매 후기 [내부링크]

얼마 전 갤럭시 노트 펜을 분실하였습니다. 저는 노트 펜을 잘 사용은 하지 않아 그냥 없는 채로 살았는데요. 계속 노트 펜이 없으니 장착하라는 알림 창이 떠서 이번 기회에 하나 샀습니다. 다행히도 노트 펜만 저렴한 가격에 따로 구매가 가능하더라고요. ※ 갤럭시 노트 펜은 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 갤럭시 노트 펜 분실 후 재구매 후기 갤럭시 노트 펜이 잘 포장되어 왔습니다. 자신의 핸드폰 색상에 맞게 알맞은 색상을 구매하시면 될 듯합니다. 만원 안쪽으로 저렴하게 구매가 가능합니다. 제가 예전에 사용하던 펜과 같은 것이 왔습니다. 이제 펜이 장착이 안되어있다는 짜증 나는 알림 소리를 안 들을 수 있겠군요. 이상으로 포스팅을 마치겠습니다. "본 포스팅은 쿠팡 파트너스 활동을 통해 일..

[내돈내산] 갤럭시 버즈 케이스 추천 (미니모리) [내부링크]

저는 무선 이어폰으로 갤럭시 버즈를 계속 사용해오고 있습니다. 이때까지는 케이스를 사용하지 않고 그냥 사용하고 있었는데요. 케이스를 사용하지 않으니 버즈 본체에 잔 스크래치가 계속 나서 이번에 케이스를 씌워주기로 하였습니다. 디자인이 괜찮은 버즈 케이스를 여러 군데 찾아보다 미니모리라는 사이트에서 버즈 케이스를 구매하였습니다. 제가 구매했었던 링크는 아래 첨부해두겠습니다. https://smartstore.naver.com/mini-mori/products/4480970769?NaPm=ct%3Dk5anj0r1%7Cci%3Dcheckout%7Ctr%3Dppc%7Ctrx%3D%7Chk%3D60aca9 9138472a533bdb65b97544a7941ae789ee 삼성 갤럭시 버즈케이스 에어팟 프로 1 2 P..

[내돈내산] 입문형 로드자전거 2018 자이언트 SCR1 사용 후기 [내부링크]

남는 시간을 활용하여 혼자 할 수 있는 취미 생활을 찾아보니 자전거를 생각하게 되었고 로드 자전거를 구매하게 되었습니다. 입문형 로드 자전거 브랜드는 여러 가지가 있지만 그중에서 제가 판단하기로는 대만의 자이언트라는 브랜드가 입문형으로 적합하다 생각됩니다. 자이언트 입문형 로드 자전거는 SCR1과 SCR2가 있는데 SCR1이 SCR2보다 더 상위급 모델입니다. 자전거의 경우 연도별로 나오는 제품이 아닌 모델이 중요합니다. 2020년도 SCR2보다 2018년도 SCR1이 더 좋을 수 있습니다. SCR1은 소라 구동계를 사용하고 SCR2는 클라리스 구동계를 사용하기 때문입니다. 자전거 같은 경우 중고거래가 워낙 활성화가 잘 되어 있어 신제품 구매보다는 중고거래를 하는 것도 좋습니다. 저도 중고로 자이언트의 ..

[내돈내산] 2020 그램 17인치 다크실버 구매 후기 [내부링크]

저는 이때까지 노트북을 살 때는 무조건 성능을 우선으로 보고 무조건 성능위주, 가성비 위주로 노트북을 골라서 사용하였습니다. 지금까지 제가 쓰고 있던 노트북은 2016년도에 산 아수스 게이밍 노트북이고요. 하지만 이렇게 성능 좋은 게이밍 노트북을 사용하다 보니 너무나도 단점이 많았습니다. 우선 너무 무거웠습니다. 가끔씩 카페에 가서 공부를 할 때 노트북을 꼭 챙겨가는데 노트북 자체가 너무 무겁다 보니 노트북을 들고 다닐 때마다 가방에 벽돌을 하나 메고 있는 듯한 느낌이었습니다. 게임용 CPU다 보니 배터리도 빨리 닳아 채 2시간을 못 버텨 충전기도 꼭 들고 다녀야 하고요. 충전기가 있더라도 카페에 콘센트가 있는 자리가 없다면 노트북을 제대로 사용도 하지 못합니다. 이러한 여러 가지 이유로 인해 노트북의 ..

[자유여행] 충청남도 태안 여행 후기 (갯벌 체험) [내부링크]

어느 날 부모님께서 친척들과 갯벌로 충청남도를 간다며 서울에서 멀지 않으니 괜찮으면 합류하라는 연락이 왔다. 무료한 서울생활 중 할 것도 없는데 바람이나 쐴 겸 간다고 했다. 친척이 차를 태워다 주신다고 하셔서 편하게 갔다. 위 사진은 구글 타임라인으로 본 나의 하루 여정기이다. 당일치기 여행이여서 조금 피곤하기는 했다. 갯벌 체험 태어나서 처음 가본 갯뻘 친척 동생들 두 명이랑 같이 놀러 가봤는데 내가 생각했던 갯벌 하고는 조금 많이 달랐다. TV에서만 보던 푹푹 빠지는 갯벌을 상상했는데 여기 갯벌은 진흙도 딱딱하고 그랬다. 이 날 날씨가 엄~청 더웠다. 나는 왜 장마, 땡볕 이럴때만 여행을 가는지... 숙소에서 친척들하고 이런저런 이야기도 하고 사촌동생들이랑 갯벌에도 가고 주변 산책도 가고 맛있는 고..

[자유여행] 강원도 강촌 여행 후기 (여름에 갈만한 곳) [내부링크]

나에게는 고등학교 친구들 8명이 있다. 벌써 알고 지낸 지 10년 된 그래도 제일 친하다고 할 수 있는 친구들이다. 이제 다들 취직을 앞두고 있는 시점에서 이렇게 한 번에 다 모이기 힘들 수 있다는 생각에 단체 여행을 계획하였다. 원래는 해외로 생각을 했으나 유일한 회사원이었던 저의 회사일이 너무 바빠져 1주일로 계획되어 있었던 여름휴가가 뒤로 밀리는 바람에 해외는 가지 못하고 가까운 춘천을 다녀왔다. 춘천이라기보다는 정확히는 가평 / 강촌 쪽이다. 비록 국내이지만 8명이서 함께하니 즐거웠다. 춘천 여행 첫날 2019.07.26 여행 첫날 느긋하게 일어나 준비하고 출발했다. 애들이 부산에서 올라오는데 너무 멀다고 멀미 난다고 징징거렸다. 하지만 나는 서울이기에 안락하게 지하철을 타고 갔다, 경춘선은 신의..

[일상] 구글 타임라인(Google Maps Timeline) +2019년 나의 발자취 [내부링크]

구글에게서 흥미로운 한통의 메일을 메일을 받았습니다. 구글에서 제공하는 Google Maps Timeline이라는 서비스를 기반으로 수집된 저의 2019년 데이터를 정리해서 보내주더군요. Google Maps Timeline이라는 서비스는 핸드폰에 로그인된 구글 계정에 GPS접근이 허용되어 있으면 받을 수 있는 서비스인 듯합니다. 구글에서 받은 메일에는 핸드폰에 로그인된 제 구글 계정에 위치 기록 사용을 허용해두었기에 보내드리는 이메일이라고 명시되어 있었습니다. 자신의 타임라인이 궁금하시다면 아래 링크를 클릭하셔서 확인하시면 됩니다. www.google.com/maps/timeline 위 사진은 Google Maps Timeline서비스를 기반으로 제가 이때까지 다녀왔던 장소를 표시한 것입니다. 제가 모..

[블로그] 효율적인 애드센스 광고배치 전략 [내부링크]

좋은 광고 배치가 애드센스 클릭률(CTR)을 높일 수 있습니다. 저는 구글 애드센스를 시작하고 최적의 효율을 내는 광고 형태를 알아내기 위해 연구해왔고 오늘날 제 블로그에 부착한 광고의 형태가 가장 수익이 좋다고 판단하여 지금의 광고 배치 형태를 사용하고 있습니다. 오늘은 지금까지 수많은 시행착오를 거치며 수정해왔던 제가 생각하는 효율적인 구글 애드센스의 광고 배치에 대해 포스팅해보려 합니다. 구글 애드센스 광고 위치 구글 애드센스를 부착할 수 있는 공간은 위와 같습니다. 상단광고 가장 블로그 수입이 높은 광고 공간입니다. 이용자가 블로그에 들어와 가장 먼저 볼 수 있는 광고입니다. 이 광고 위치가 수익에 있어서 절대적으로 중요하며 제 블로그 기준으로 60% 정도의 수익 비중을 차지하고 있습니다. 본문 ..

[블로그] 애드센스 수익을 높이는 여러가지 방법들 [내부링크]

애드센스 홈페이지 메인에 『여러분의 열정을 수익으로 돌려드립니다』 이런 문구가 있습니다. 멋진 말입니다. 저는 취미가 블로그 운영입니다. 퇴근하거나 주말이 되면 블로그를 운영하는데 열정과 시간을 쏟고 있습니다. 일이 아니라 취미로 블로그를 운영하는 것이기에 애드센스 수입은 저에게는 불노소득입니다. 불노소득이 생기면 꽁돈이 생겼다는 느낌에 기분이 매우 좋아집니다. 저는 애드센스를 시작하고 지금까지 계속해서 수익증대에 대한 연구를 하고 있습니다. 이번 포스팅에서는 애드센스 수익증대를 위한 제 생각을 써보고자 합니다. 애드센스 수익구조 애드센스의 수익을 증가시키려면 애드센스의 수익이 어떻게 발생되는지 알아야 합니다. 애드센스의 수익구조는 광고 노출에 대한 수익과 광고 클릭에 의한 수익 두 방식이 있는데 90%..

[블로그] 구글 검색엔진 상위 노출 순위를 높이는 SEO 최적화 방법 [내부링크]

사람들마다 블로그를 하는 목적은 다양하지만 내 블로그의 방문자수를 늘리는 것은 공통된 관심사일 것입니다. 저 역시 제가 정성 들여 쓴 포스팅을 많은 사람들이 봐줄 때 행복을 느끼기에 블로그를 시작하면서 지금까지 방문자수를 높이는 여러 가지 방안에 대해 고민하고 있습니다. 오늘은 제가 지금까지 고민했던 방문자수를 늘릴 수 있는 나름의 노하우를 글로 써보고자 합니다. 검색엔진 최적화(Search Engine Optimization, SEO)의 필요성 당연한 말이겠지만 내 글이 검색엔진에서 상위에 노출된다면 방문자수가 늘어납니다. 위 그림과 같이 첫 페이지의 클릭률이 무려 91.5%로 첫 페이지에 노출이 되지 않는다면 사실상 아무도 봐주지 않는 죽은 글이 되어버립니다. 방문자수를 높이기 위한 방안으로 SNS를..

[블로그] 사이트 속도 확인 및 향상 방법 [내부링크]

사이트 속도가 느리면 방문자가 사이트가 로딩되는 도중 이 사이트가 죽은 사이트라고 판단하고 그냥 바로 이탈할 가능성이 높아집니다. 반대로 사이트 속도가 빠르면 방문자가 늘어나는 효과를 볼 수 있습니다. 또 사이트 속도에 신경을 써야 하는 이유는 구글 검색 로직에서 사이트 속도가 빠른 웹 페이지를 검색 우선순위에 올려주기 때문입니다. 사이트 속도는 구글 검색 노출 순위에도 영향을 미칩니다. 이 블로그의 경우에도 속도 최적화 작업을 한 뒤 약 15% 정도의 방문자가 추가로 유입되었습니다. https://webmasters.googleblog.com/2010/04/using-site-speed-in-web-search-ranking.html 사이트 속도 측정 사이트 측정방법은 구글 애널리틱스를 활용하는 방법이..

[블로그] 2019년 블로그 결산 및 애드센스 수입공개 [내부링크]

안녕하세요 코딩팩토리입니다. 2019년도가 끝이 나고 새로운 한 해가 시작되었습니다. 작년에도 제 블로그에 방문해주신 모든 분들께 감사드립니다. 좋은 글을 쓰려고 노력하였으나 돌이켜보니 부족한 부분이 많았습니다. 2020년에는 미흡한 부분을 보완하여 더 좋은 블로그를 만들도록 노력하겠습니다. 작년 한 해 170개의 글을 올렸습니다. 거의 이틀에 한 번꼴로 글을 작성하였으며, 블로그의 디자인과 사이트 속도 개선 등 블로그의 성장을 위해 많은 시간을 사용하였고 그 결과 제 블로그도 많은 성장을 이루었던 한 해였습니다. 이번 포스팅에서는 작년 한 해의 제 블로그의 기록을 공유하고자 합니다. 2019년 블로그 결산 및 애드센스 수입 공개 방문자수가 약 2배 정도 증가하였습니다. 2019년 1월 16만 명 정도 ..

[ETC] 코딩을 잘하는 사람들의 특징 [내부링크]

세상에는 코딩을 잘하는 사람들이 참 많다. 그중에서는 얼마 배우지도 않았는데 이해력이 남들보다 훨씬 빠른 사람들, 흔히들 코딩에 재능이 있다고 하는 사람들도 있다. 나는 코딩을 잘하는 사람들을 열심히 관찰하고 따라 해보려 노력하고 있다. 오늘은 내가 지금까지 그들을 관찰하며 느꼈던 코딩을 잘하는 방법에 대해 이야기해보려 한다. 혼자서 해결하는 능력 프로그래밍이란 끊임없이 오류와 마주치고 그 오류를 해결하는 과정의 연속이다. 이 오류들을 혼자서 해결할 수 있느냐 없느냐에서 실력이 갈린다. 가끔 『모르면 물어봐야지』라는 생각을 가진 개발자들이 있다. 나는 이 생각에는 동의하지 않는다. 이러한 생각은 사람을 의존적으로 만들어 문제를 스스로 해결할 수 있는 능력의 발전을 막기 때문이다. 영화를 제대로 보려면 중..

[Oracle] 오라클 스케줄러 사용법 & 예제 [내부링크]

오라클 잡과 스케줄러 데이터베이스를 운영하다보면 하루에 한번씩 운영서버의 데이터를 개발서버에 데이터를 넣어주거나 하는 주기적인 작업을 처리할 때가 있습니다. 이렇게 일정한 주기의 작업을 잡(Job)이라고 합니다. 이러한 주기적인 잡을 수행하는 방법은 스케줄러를 활용하는 방법이 있습니다. 오라클 스케줄러 (DBMS_SCHEDULER) 기존에는 주기적인 작업을 잡 패키지(DBMS_JOB)라는 것을 활용하여 작업을 하였지만 다양한 문제점으로 인해 오라클 10g부터 새로운 스케줄러 패키지인 오라클 스케줄러 (DBMS_SCHEDULER)라는 패키지가 추가되었습니다. 최근에는 이 오라클 스케줄러라는 패키지를 통해서 주기적인 잡(Job)을 처리합니다. 오라클 스케줄링 사용법 잡 객체를 이용한 스케줄링 BEGIN DB..

[Oracle] 오라클 계층형 쿼리(START WITH.. CONNECT BY) [내부링크]

계층형 쿼리란? 계층형 구조는 상하 수직관계의 트리형태의 구조로 이루어진 형태를 말합니다. 예를 들자면 특정회사의 부서, 특정학교의 학과등이 있습니다. 계층형 쿼리는 테이블에 저장된 데이터를 계층형 구조로 반환하는 쿼리를 말합니다. 오라클에서의 계층형 쿼리는 START WITH ... CONNECT BY 절로 생성할 수 있으며 계층형 정보를 표현하기 위한 목적으로 오라클 8부터 지원되었습니다. 수행순서 1. START WITH 절에 시작 조건을 찾습니다. 2. CONNECT BY 절에 연결조건을 찾습니다. 샘플데이터 생성 위와같은 구조를 이루도록 부서 테이블을 생성하도록 하겠습니다. CREATE TABLE DEP ( DEP_CD NUMBER NOT NULL, -- 부서코드 PARENT_CD NUMBER,..

[Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT) [내부링크]

저번 포스팅에서 행을 열로 바꾸는 PIVOT절에 대해 알아보았습니다. 항상 언어는 반대의 속성도 가지고 있습니다. 행을 열로 바꾸는 방법이 있으면 열을 행으로 바꾸는 방법도 있습니다. 열을 행으로 바꿔주는 방법은 UNPIVOT절을 활용하면 됩니다. [Oracle] 오라클 행을 열로 변환하기 (PIVOT) 샘플 데이터 SELECT * FROM SCORE 위의 데이터는 시험명으로 국어, 수학, 영어 성적을 나타낸 데이터입니다. UNPIVOT의 컬럼과 로우를 바꿔주는 기능을 활용하여 위 데이터의 열과 행을 바꿔보도록 하겠습니다. UNPIVOT을 활용하여 열을 행으로 바꾸기 SELECT 컬럼 FROM (조회할 데이터 SELECT문) OR 테이블 UNPIVOT(가상 컬럼1) FOR (가상 컬럼2) IN (열으로 ..

[Oracle] 오라클 행을 열로 변환하기 (PIVOT) [내부링크]

아주 가끔 SELECT문의 행을 열로 변환해야 할 경우가 있습니다. 과거에는 행을 열로 바꿀때 CASE WHEN이나 DECODE, WITH절을 통해서 컬럼을 로우로 변환하였었는데 오라클 11g에서 새로나온 피벗테이블을 활용하면 과거에 사용하던 방법보다 훨씬 간단한 문장으로 행과 열을 전환 할 수 있습니다. 이번 포스팅에서는 PIVOT절을 활용하여 행을 열로 바꾸는 방법에 대해 알아보도록 하겠습니다. [Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT) 샘플 데이터 SELECT * FROM KOR_LOAN_STATUS 위의 데이터는 대출년도, 지역, 대출종류, 대출금을 나타낸 데이터입니다. PIVOT의 로우와 컬럼을 바꿔주는 기능을 활용하여 위 데이터의 행과 열을 바꿔보도록 하겠습니다. PIVOT..

[Oracle] 오라클 그룹별 소계 합계 구하기 (ROLLUP, CUBE) [내부링크]

ROULLUP과 CUBE을 사용하면 그룹별 소계 및 합계를 출력할 수 있습니다. 그룹별 소계 및 합계를 구하려면 우선 그룹핑된 데이터가 필요합니다. 샘플 데이터 SELECT PERIOD, GUBUN, SUM(LOAN_JAN_AMT) FROM KOR_LOAN_STATUS GROUP BY PERIOD, GUBUN ORDER BY PERIOD 위의 데이터는 대출년도, 대출명으로 대출금액의 합계값을 나타낸 데이터입니다. 이 데이터를 바탕으로 소계와 합계를 구해보도록 하겠습니다. ROLLUP ROLLUP은 추가적인 집계 정보를 보여주는 기법입니다. ROLLUP절에는 그룹핑 된 컬럼을 나열 할 수 있으며 명시된 나열한 컬럼의수에 따라 레벨 별로 집계한 결과가 반환됩니다. 나열한 컬럼의 수가 N개이면 N+1레벨까지,..

[Oracle] 오라클 동적 쿼리 사용법 & 예제 (PL/SQL) [내부링크]

동적쿼리란? 동적쿼리란 실행시에 쿼리문장이 만들어져 실행되는 쿼리문을 말합니다. 쿼리문이 변하냐 변하지 않느냐에따라 변하지 않으면 정적쿼리 변한다면 동적쿼리로 생각하시면 됩니다. 대부분 동적쿼리를 사용할때에는 텍스트문장으로 쿼리문을 가지고 있다가 실행할때마다 텍스트 쿼리문장을 바꿔서 실행하는 방식을 사용합니다. 동적쿼리 사용법 BEGIN EXECUTE IMMEDIATE '쿼리문 (선언한 변수활용)' END; 동적쿼리를 사용하는 방법은 DECLARE상에서 동적으로 받을 변수를 먼저 생성한 후 생성한 변수를 활용해서 쿼리문을 작성한 후 EXECUTE IMMEDIATE로 실행시켜주시면 됩니다. 동적쿼리 예제 CREATE OR REPLACE FUNCTION FUNC1( W_PRODUCT_ID IN NUMBER ..

[Oracle] 오라클 패키지 사용법 & 예제 (PL/SQL) [내부링크]

패키지란? 패키지란 변수, 상수, 서브프로그램등의 항목을 묶어놓은 객체입니다. 여러가지 항목들을 모아 하나의 이름으로 묶어놓은 객체라고 생각하시면 됩니다. 패키지는 컴파일 과정을 거쳐 데이터베이스에 저장되며 다른 프로그램에서 패키지의 항목을 참조하고 실행할 수도 있습니다. 패키지를 사용하는 이유 프로그래밍을 하다보면 프로시저같은 서브 프로그램의 수가 기하급수적으로 많아지게 됩니다. 이렇게 항목들이 많아지게되면 관리하기가 힘들어지게되고 자신이 필요한 항목을 찾는것마저 어려워지는 상황이 옵니다. 이 상황을 방지하기 위해 여러가지 항목들을 좀 더 손쉽게 관리하자라는 요지에서 나온 것이 바로 패키지라는 개념입니다. 패키지 사용법 패키지는 선언부, 본문, 실행부로 이루어집니다. 선언부 CREATE OR REPLA..

[Oracle] 오라클 커서 사용법 & 예제 (PL/SQL) [내부링크]

커서란? 커서란 특정 SQL 문장을 처리한 결과를 담고있는 메모리 영역을 가리키는 일종의 포인터입니다. 대부분의 SQL문 결과 ROW는 여러개인데 커서를 사용하면 이 ROW에 순차적으로 접근이 가능합니다. 커서의 종류에는 묵시적 커서와 명시적 커서가 있습니다. 묵시적 커서는 오라클 내부에서 자동으로 생성되어 SQL문장이 실행될때마다 자동으로 만들어져 실행되는 커서이고, 명시적 커서는 사용자가 직접 정의해서 사용하는 커서를 말합니다. 이번 포스팅에서는 사용자가 직접 만드는 명시적 커서를 만들어보고 사용하는 방법에대해 알아보도록 하겠습니다. 커서를 만드는 단계 커서를 만드는 단계는 크게 커서 선언 -> 커서 열기 -> 패치 단계에서 커서 사용 -> 커서 닫기 크게 이렇게 4가지로 분류할 수 있습니다. 커서 ..

[Oracle] 오라클 예외처리 (PL/SQL) [내부링크]

프로그램을 개발할때면 다양한 경우의 수를 예상 해 예외처리를 해야합니다. 이번 포스팅에서는 오라클 PL/SQL 예외처리 방법에 대해 알아보도록 하겠습니다. 예외처리 종류 오라클 예외처리는 크게 시스템 예외와 사용자 정의 예외로 나뉩니다. 시스템 예외는 오라클에서 발생시키는 에러로 나누기 연산 시 제수를 0으로 나누면 에러가 발생하는 에러 같은 것처럼 오라클 내부에 미리 정의된 에러를 의미합니다. 사용자 정의 예외는 사용자가 직접 예외를 정의해서 사용하는것을 말하는데 저는 실제로 실무에서 써본적은 없습니다. 예외처리 방법 EXCEPTION WHEN 예외명 THEN 예외처리 --예외명을 알 경우 WHEN OTHERS THEN 예외처리 --예외명을 모를 경우 오라클에서 예외를 처리하는 문법은 위와같습니다. 첫..

[Oracle] 오라클 프로시저(Procedure) 생성 및 실행 (PL/SQL) [내부링크]

프로시저란? 오라클에서의 프로시저는 PL/SQL을 통해 만들어집니다. 자주 사용하는 SQL을 프로시저로 만든 뒤 필요 할때마다 호출,사용하여 작업 효율을 늘릴 수 있습니다. 함수는 특정 연산을 수행한 뒤 결과 값을 반환하지만 프로시저는 특정한 로직을 처리하기만 하고 결과 값은 반환하지 않는 서브 프로그램입니다. 프로시저 생성 CREATE OR REPLACE PROCEDURE EX_PROC ( P_DEPARTMENT IN VARCHAR2, P_STUDENT_CNT IN NUMBER ) IS P_UNIVERSITY VARCHAR2(100) := '서울대학교'; BEGIN INSERT INTO UNIVERSITY1 (UNIVERSITY, DEPARTMENT, STUDENT_CNT) VALUES (P_UNIVE..

[Oracle] 오라클 반복문 (LOOP, WHILE, FOR)문 사용법 (PL/SQL) [내부링크]

다른언어와 마찬가지로 PL/SQL에서도 반복문을 지원합니다. PL/SQL에서의 반복문 종류는 LOOP문, WHILE문, FOR문이 있습니다. LOOP문 --사용법 LOOP 처리문; EXIT[조건]; END LOOP; --예제 DECLARE NUM1 NUMBER :=1; BEGIN LOOP DBMS_OUTPUT.PUT_LINE(NUM1); --출력 NUM1 := NUM1+1; --NUM = NUM +1 EXIT WHEN NUM1 >10; --NUM1이 10보다 크면 LOOP종료 END LOOP; END; LOOP문 사용법은 위와같습니다. 반복문은 특정조건까지만 반복하며 로직을 수행하는데 LOOP의 반복문은 EXIT[WHEN 조건]; 이라는 구절에서 실행됩니다. 따라서 EXIT를 누락하면 해당 LOOP는 무..

[Oracle] 오라클 조건문 (IF, CASE)문 사용법 (PL/SQL) [내부링크]

프로그램을 짜다보면 특정 조건에 맞을때 처리하는 조건문이 굉장히 많이 사용됩니다. 오라클에서 지원하는 PL/SQL에도 이 조건문이 존재합니다. 조건문 IF문 --사용법 IF 조건 THEN 처리문 ELSIF 조건2 THEN 처리문 ...... ELSE 처리문 END IF; IF문은 조건값이 참이면 해당 조건의 처리문장이 실행됩니다. 사용법은 위와같으며 다른 언어와 비교하여 전체적인 구조는 다르지 않으나 3가지가 다릅니다. 조건 다음에 THEN을 붙인다는것이 다르고, 여러개의 조건을 붙일 경우 다른 언어에서는 ELSE IF라고 많이 하지만 PL/SQL에서는 ELSIF 라는 명령어를 사용합니다. 그리고 마지막에는 IF를 끝낸다는 END IF를 붙인다는 점이 다릅니다. DECLARE SCORE NUMBER :=..

[Oracle] 오라클 변수 및 상수 선언 및 사용법 (PL/SQL) [내부링크]

PL / SQL이란? PL/SQL은 상용 관계형 데이터베이스 시스템인 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어 중 하나입니다. 오라클에서 변수를 선언 후 사용하시려면 이 PL/SQL을 사용하시면 됩니다. 변수 및 상수 선언 --변수 선언 변수명 데이터타입 : = 초기값; EX_NUM NUMBER := 1; EX_STR VARCHAR2(10) := 'STR1'; --상수 선언 상수명 CONSTRANT 데이터타입 : = 상수값; EX_NUM CONSTANT NUMBER := 1; 변수 선언법은 위와같습니다. PL/SQL에서는 일반적인 프로그래밍 언어에서 사용하는 = 이 아니라 :=입니다. 특정 변수에 :=을 기준으로 오른쪽 값을 왼쪽에 할당한다는 뜻을 가지고 있습니다...

[Oracle] SELECT문 중복된 값 제거 MINUS (차집합) [내부링크]

SELECT문을 실행하면 데이터가 조회됩니다. 만약 이렇게 조회한 여러개의 SELECT문을 가지고 데이터를 가공하고 싶다면 집합 연산자를 사용하시면 됩니다. 집합 연산자는 SELECT문 활용하여 조회한 데이터를 연산하는 연산자이며 우리가 어릴적 배웠던 그 집합과 동일합니다. 집합 연산자에는 UNION, UNION ALL, INTERSECT, MINUS가 있는데 이번 포스팅에서는 첫번째 SELECT문을 기준으로 두번째 SELECT문과의 공통된 데이터를 제거한 후 반환하는 MINUS에 대해 포스팅 해보도록 하겠습니다. 차집합 MINUS 첫번째 SELECT문에서 두번째 SELECT문을 빼고 싶다면 MINUS를 사용하면 됩니다. MINUS를 사용하면 첫번째 SELECT문을 기준으로 두번째 SELECT문과의 공통..

[Oracle] SELECT문 중복된 데이터만 추출하기 INTERSECT (교집합) [내부링크]

SELECT문을 실행하면 데이터가 조회됩니다. 만약 이렇게 조회한 여러개의 SELECT문을 가지고 데이터를 가공하고 싶다면 집합연산자를 사용하시면 됩니다. 집합연산자는 SELECT문 활용하여 조회한 데이터를 연산하는 연산자이며 우리가 어릴적 배웠던 그 집합과 동일합니다. 집합 연산자에는 UNION, UNION ALL, INTERSECT, MINUS가 있는데 이번 포스팅에서는 SELECT문들의 중복된 데이터만 추출해주는 INTERSECT에 대해 알아보도록 하겠습니다. 교집합 INTERSECT 두개의 SELECT문의 중복값을 출력하고 싶은 경우에는 INTERSECT를 사용하면 됩니다. INTERSECT를 사용하면 두개의 데이터 집합에서 공통된 항목만 추출해냅니다. 위의 그림과 같은 데이터를 가진 두개의 테이..

[Oracle] SELECT문 합치기 유니온(UNION, UNION ALL) 합집합 [내부링크]

SELECT문을 실행하면 데이터가 조회됩니다. 만약 이렇게 조회한 여러개의 SELECT문을 가지고 데이터를 가공하고 싶다면 집합연산자를 사용하시면 됩니다. 집합연산자는 SELECT문 활용하여 조회한 데이터를 연산하는 연산자이며 우리가 어릴적 배웠던 그 집합과 동일합니다. 집합 연산자에는 UNION, UNION ALL, INTERSECT, MINUS가 있는데 이번 포스팅에서는 복수의SELECT문을 합쳐주는 UNION, UNION ALL에 대해 포스팅해보려 합니다. 합집합 UNION (중복제거) 두개의 SELECT문을 서로 합치고 싶은데 그 중에서도 두개의 조회문의 중복되는 데이터를 한번만 출력하고 싶다면 UNION을 사용하시면 됩니다. UNION은 합집합을 의미하며 사용하게되면 두개의 SELECT문을 서로..

[Oracle] 오라클 WITH절 사용법 & 예제 (임시 테이블 만들기) [내부링크]

WITH절이란 WITH절은 오라클9 이후 버전부터 사용이 가능하며 이름이 부여된 서브쿼리라고 생각하시면 됩니다. 임시테이블을 만든다는 관점에서본다면 VIEW와 쓰임새가 비슷한데 차이점이 있다면 VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은경우 한번 실행할 쿼리문내에 정의되어 있을경우, 그 쿼리문안에서만 실행된다는 차이점이 있습니다. WITH절을 사용하는 이유 WITH절은 복잡한 SQL에서 동일 블록에 대해 반복적으로 SQL문을 사용하는 경우 그 블록에 이름을 부여하여 재사용 할 수 있게 함으로서 쿼리 성능을 높일 수 있는데 WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만들 수 있습니다. 자주 실행되는 경우 한번만 Parsing되고 Plan 계획이 수립..

[Oracle] 오라클 그룹별 순번, 순위 매기기(ROW_NUMBER, RANK) 함수 [내부링크]

그룹별 순번매기기 ROW_NUMBER() 카테고리(CATEGORY_ID)별 저렴한 금액(STANDARD_COST)순으로 순번 매기기 SELECT A.CATEGORY_ID, B.CATEGORY_NAME, A.STANDARD_COST, ROW_NUMBER() OVER (PARTITION BY A.CATEGORY_ID ORDER BY A.CATEGORY_ID, A.STANDARD_COST) AS NUM --그룹별 순번 FROM PRODUCTS A INNER JOIN PRODUCT_CATEGORIES B ON A.CATEGORY_ID = B.CATEGORY_ID 카테고리별 가격의 순번을 매기는 쿼리입니다. CPU카테고리에서는 70번까지의 순번이 값이 작은 순에서 큰 순으로 순번이 매겨졌고 그 뒤로 두번째 카테고..

[Oracle] 오라클 순번 매기기 (ROWNUM, ROW_NUMBER) 함수 [내부링크]

오라클 순번매기기 ROWNUM SELECT ROWNUM, A.PRODUCT_NAME, A.STANDARD_COST FROM PRODUCTS A ROWNUM이라는 시스템 함수를 사용하면 위와 같이 라인별 순번을 가져올 수 있습니다. 하지만 위와 같이 아무런 정렬이 되지 않은 데이터에 순번을 매긴다면 그 순번은 상당히 의미 없는 숫자가 되어 버릴 것입니다. 정렬된 데이터에 순번매기기 위의 예제와 같이 순번을 매기는 시스템 함수는 ROWNUM이고 정렬은 ORDER BY를 사용하시면 되는데 ROWNUM와 ORDER BY를 같이 사용할 경우 매겨놓은 순번이 섞여버리는 현상이 발생합니다. SELECT ROWNUM,--순번매기기 A.PRODUCT_NAME, A.STANDARD_COST FROM PRODUCTS A O..

[Oracle] 오라클 첫번째 NULL값의 다음 값 찾기 COALESCE 함수 사용법 [내부링크]

COALESCE 함수는 인자값으로 들어오는 표현식에서 NULL이 아닌 첫번째 표현식을 리턴해주는 함수입니다. COALESCE 함수 사용법 SELECT COALESCE('A','B','C'), --결과값 : A COALESCE(NULL,'B','C'), --결과값 : B COALESCE(NULL,NULL,'C'), --결과값 : C COALESCE(NULL,NULL,NULL) --결과값 : NULL FROM DUAL COALESCE 작동원리는 NVL, NVL2함수와 비슷합니다. 인자값으로 들어온 값 중에서 NULL값이 아닌 첫번째 값을 반환합니다. 만약 NULL값만 들어왔다면 NULL값을 반환합니다. 파라미터의 타입은 일치하여야 합니다. SELECT COALESCE(NULL,'A',1) FROM DUAL ..

[Oracle] 오라클에서 날짜를 비교하는 방법 [내부링크]

오라클에서 날짜를 비교할 때 주의사항이 있습니다. DATE형/ 문자형끼리 비교는 문제가 없지만 DATE형과 문자형의 비교일 경우 서로 데이터 타입을 맞춰줘야 합니다. 오라클에서 주로 날짜 포맷을 맞추는 TO_CHAR 함수의 리턴 값이 문자형이므로 이런 실수가 자주 나옵니다. 날짜 비교 WITH EXAMPLE AS( SELECT TO_CHAR(SYSDATE,'YY/MM/DD') AS DAY1, --19/12/01' SYSDATE AS DAY2 --19/12/01' FROM DUAL ) SELECT '두 날짜는 서로 같습니다.' FROM EXAMPLE WHERE DAY1 = DAY2 위 쿼리를 조회해보면 데이터가 조회되지 않습니다. 데이터가 조회되지 않은 이유는 바로 서로의 데이터 타입이 다르기 때문입니다...

[Oracle] 오라클 날짜를 계산하는 다양한 방법 (연산자, 함수) [내부링크]

날짜 계산 (연산자) SELECT SYSDATE + 100, --현재날짜 +100일 SYSDATE - 100, --현재날짜 -100일 SYSTIMESTAMP + 100, --현재날짜 +100일 SYSTIMESTAMP - 100 --현재날짜 -100일 FROM DUAL 위와같이 + , - 연산자를 활용하여 간단한 날짜 계산이 가능합니다. 날짜 계산 (함수) SELECT ADD_MONTHS(SYSDATE,6), --현재시간 + 6개월 뒤 LAST_DAY(SYSDATE), --해당월 마지막 일자 계산 NEXT_DAY(SYSDATE,'일요일'), --다음 주 일요일 계산 MONTHS_BETWEEN(SYSDATE, SYSDATE-100) --DATE1과 DATE2의 개월 수 반환 FROM DUAL ADD_MONT..

[Oracle] 오라클 다양한 날짜 / 시간 포맷 변경 (TO_CHAR) 사용법 & 예제 [내부링크]

쿼리문을 짜다보면 원하는 날짜와 시간의 형태를 뽑아내고 싶을 경우가 많습니다. 오라클에서 날짜 포맷의 변환은 TO_CHAR함수를 활용하여 변경하실 수 있습니다. 다양한 날짜 / 시간 포맷 SELECT --날짜 포맷 TO_CHAR(SYSDATE,'YYYYMMDD'),--20191130 TO_CHAR(SYSDATE,'YYYY-MM-DD'),--2019-11-30 TO_CHAR(SYSDATE,'YYYY/MM/DD'),--2019/11/30 TO_CHAR(SYSDATE,'YYYY'),--2019 TO_CHAR(SYSDATE,'YY'),--19 TO_CHAR(SYSDATE,'MM'),--11 TO_CHAR(SYSDATE,'MON'),--11월 TO_CHAR(SYSDATE,'D'),--7 (주중의 일을 1~7로 표..

[Oracle] 현재날짜 / 현재시간을 나타내는 (SYSDATE, SYSTIMESTAMP 함수) [내부링크]

오라클에서 현재날짜 / 현재시간을 나타내주는 시스템함수는 SYSDATE, SYSTIMESTAMP함수입니다. 현재날짜 구하기 (SYSDATE, SYSTIMESTAMP) SELECT SYSDATE, SYSTIMESTAMP FROM DUAL 오라클에서 SYSDATE,와 SYSTIMESTAMP를 입력하기만 하면 위와같은 형태로 날짜가 출력됩니다. 위 데이터 포맷은 기본데이터 포맷으로 리턴한 값이므로 환경에따라 다를 수 있습니다. SYSDATE와 SYSTIMESTAMP함수는 리턴하는 타입이 서로 다릅니다. SYSDATE DATE형태로 리턴하고 SYSTIMESTAMP함수는 TIMESTAMP타입으로 리턴됩니다. 두 타입간의 차이점은 아래 표와 같습니다. 데이터타입 설명 DATE BC 4712년 1월 1일부터 9999..

[Oracle] 오라클 나머지값 구하기 (MOD, REMAINDER) 사용법 & 예제 [내부링크]

대부분의 개발 언어에서는 %로 나머지계산을 합니다. 하지만 오라클에는 %연산자가 존재하지 않습니다. 그러므로 나머지값을 구하기 위해서는 나머지를 구해주는 함수를 사용하시는것이 좋습니다. 오라클에서 나머지를 구하는 함수는 MOD, REMAINDER함수가 있습니다. 오라클 나머지 함수(MOD, REMAINDER) 사용법 --사용법(대상 값, 나눌 값) MOD(n2,n1) REMAINDER(n2,n1) --예제 SELECT MOD(10,3), REMAINDER(10,3) FROM DUAL MOD함수와 REMAINDER함수의 차이점 두 함수는 오라클에서 모두 나머지를 구하는 함수이고 두번째 인자가 첫번째 인자값을 나눈 나머지를 반환한다는 점에서 사용법까지 완전히 일치합니다. 하지만 두 함수는 나머지를 구하는 내..

[Oracle] 오라클 제곱 / 제곱근 구하기 (POWER / SQRT) 함수 사용법 & 예제 [내부링크]

제곱구하기 POWER(n1, n2) --사용법 POWER(대상숫자, 제곱숫자) --예제 SELECT POWER(5,2), POWER(5,-3), POWER(-5,3), POWER(5,3.1) FROM DUAL POWER함수는 첫번째 인자를 두번째 인자만큼 제곱한 결과를 반환합니다. 위와 같이 정수와 실수 모두 올 수 있습니다. 단. 첫번째 인자값이 음수일경우에는 실수를 제곱할 수 없습니다. EX : POWER(-5,3.01) 같은 연산은 할 수 없습니다. 제곱근 구하기 SQRT(n) --사용법 SQRT(대상숫자) --예제 SELECT SQRT(9), SQRT(5.4) FROM DUAL SQRT함수는 인자값의 제곱근을 반환합니다. 인자값으로는 양의자리 정수와 실수만 올 수 있습니다. EX : SQRT(-5..

[Oracle] 오라클 절대값 구하기 ABS 함수 사용법 & 예제 [내부링크]

오라클에서 절대값을 구하는 함수는 ABS입니다. 총 매출같이 음수의 금액도 양수로 바꿔서 계산해야할 경우가 종종 있는데 이때 유용하게 사용될 수 있는 함수입니다. 절대값 함수 ABS 사용법 --사용법 ABS(숫자) --예제 SELECT ABS(100), ABS(-100), ABS(-100.15) FROM DUAL ABS함수는 숫자를 매개변수로 받아 매개변수로 받은 숫자의 절대값을 반환해주는 함수입니다.

[Oracle] 자릿수 채우기, 문자열 삽입 (LPAD, RPAD) 함수 사용법 & 예제 [내부링크]

갸끔 요구사항으로 자릿수를 일정하게 맞춰달라는 요구가 종종 있습니다. 이럴때 오라클에서 유용하게 사용할 수 있는 함수는 LPAD, RPAD함수입니다. LPAD, RPAD함수는 n자리만큼 왼쪽, 오른쪽 부터 채워서 반환하는 문자열 함수입니다. LPAD, RPAD 본래 용도는 문자열 삽입을 주 용도로 사용하지만. 자릿수를 일정하게 맞추는 용도로도 사용할 수 있습니다. LPAD, RPAD 함수 사용법 LPAD(expr1, n, expr2) --왼쪽에서부터 문자열 채우기 RPAD(expr1, n, expr2) --오른쪽에서부터 문자열 채우기 LPAD, RPAD함수는 매개변수로 들어온 expr2문자열을 n자리만큼 왼쪽 / 오른쪽부터 채워넣어 expr1을 반환하는 함수입니다. n은 총 자릿수를 의미합니다. 자릿수 ..

[Oracle] 오라클 문자열 문자 / 공백제거 (LTRIM, RTRIM, TRIM) 함수 [내부링크]

오라클 가끔씩 데이터에 공백이 들어가는 경우가 있습니다. 이럴 경우 공백이 들어가는 문제점을 찾아 수정하는것이 가장 좋지만 그것이 어렵다면 오라클 TRIM함수를 사용하여 공백을 제거하는 방법도 사용할 수 있습니다. 오라클에서 공백제거는 TRIM, LTRIM, RTRIM함수를 통해서 제거할 수 있습니다. 또 LTRIM, RTRIM함수는 문자열에서 공백을 제거할때도 유용하게 사용할 수 있지만 문자열에서 특정 문자를 제거하는데도 사용할 수 있습니다. 왼쪽에서부터 문자 / 공백제거 LTRIM 함수 --사용법 (문자열,제거문자) LTRIM(STR,TARGET_STR) --예제 WITH EXAMPLE AS( SELECT ' BLANK ' AS STR1, 'ABCDEF' AS STR2 FROM DUAL ) SELEC..

[Oracle] 대문자 / 소문자 / 첫글자만 대문자 변경 (UPPER, LOWER, INITCAP) 함수 [내부링크]

오라클에서 대소문자를 가려주는 함수들이 있습니다. UPPER(대문자로 변환), LOWER(소문자로 변환), INITCAP(첫글자만 대문자로 나머지는 소문자로 변환) 이번 포스팅에서는 이 3가지 함수들의 사용법에 대해 알아보도록 하겠습니다. 대문자로 치환 (UPPER) --사용법 UPPER(문자열) --예제 SELECT UPPER('i am software developer') FROM DUAL UPPER 함수는 매개변수로 들어오는 문자열을 대문자로 변환해주는 함수입니다. 소문자로 치환(LOWER) --사용법 LOWER(문자열) --예제 SELECT LOWER('I AM SOFTWARE DEVELOPER') FROM DUAL LOWER함수는 매개변수로 들어오는 문자열을 소문자로 변환해주는 함수입니다. 첫글..

[Oracle] 오라클 문자열 치환 (REPLACE, TRANSLATE) 사용법 & 예제 [내부링크]

오라클에서 문자열을 치환하는 함수는 REPLACE와 TRANSLATE가 있습니다. 하지만 둘의 사용용도는 전혀 다릅니다. REPLACE함수의 경우 일반적인 문자열 치환함수라고 생각하면 되고 TRANSLATE는 일종의 치환규칙을 정하는 함수라고 생각하시면 됩니다. 대부분 REPLACE를 많이쓰고 TRANSLATE는 거의 쓰이지는 않습니다만. TRANSLATE함수도 유용하게 쓰일 수 있는 용도가 분명있습니다. 이 용도는 아래에서 설명하겠습니다. 문자열 치환 REPLACE 함수 --사용법(문자열, 바꿀문자열, 바뀔문자열) REPLACE(STR, TARGET_STR, REPLACE_STR) SELECT REPLACE('내가 그린 기린 그림은 잘 그린 기린 그림이다','기린','사자') FROM DUAL --결과..

[Oracle] 오라클 문자열 합치기(||, CONCAT) 사용법 & 예제 [내부링크]

자바를 비롯한 대부분의 언어의 문자열은 + 라는 연산자를 활용하여 이어붙입니다. 하지만 오라클은 + 기호를 문자열에 사용할 수 없습니다. 오라클에서 +기호는 계산이 가능한 숫자형 컬럼에만 사용이 가능합니다. 문자형 타입에 + 연산을 하게되면 '수치가 부적합합니다.' 수라는 에러메시지가 출력되기에 다른 방법을 써야합니다. 문자열 합치기 연산자 ( || ) --사용법 문자열1 || 문자열2 || 문자열3......... --예제 WITH EXAMPLE AS( SELECT '코딩팩토리의 ' AS STR1, '블로그입니다.' AS STR2 FROM DUAL ) SELECT STR1, -- 문자열1 STR2, -- 문자열2 STR1 || STR2 --문자열 합치기 FROM EXAMPLE 오라클에서 문자열을 붙이려..

[Oracle] 문자열 자르기 / 구분자로 자르기 (SUBSTR, INSTR) 사용법 & 예제 [내부링크]

이번 포스팅에서는 오라클에서 문자열을 자를때 사용하는 SUBSTR()와 구분자로 자를때 구분자만큼의 위치를 리턴하는 INSTR() 함수에 대해 포스팅하겠습니다. 문자열 자르기 SUBSTR( ) 함수 --사용법(문자열, 시작위치, 길이) SUBSTR(CHAR,POS,LEN) --예제 WITH EXAMPLE AS( SELECT '동해물과 백두산이 마르고 닳도록' AS STR FROM DUAL ) SELECT SUBSTR(STR,1,4), --STR의 1번째 글자부터 4개 자르기 SUBSTR(STR,5,5), --STR의 5번째 글자부터 5개 자르기 SUBSTR(STR,10), --STR의 10번째 글자부터 끝까지 자르기 SUBSTR(STR,-7,3), --STR의 뒤에서 3번째 글자부터 3글자 자르기 SUB..

[Oracle] 데이터 존재여부를 확인하는 EXISTS / NOT EXISTS [내부링크]

프로그래밍을 하다보면 데이터가 존재할 경우 / 존재하지 않을경우 특정 액션을 해야하는 상황이 종종 발생합니다.. 이럴때는 EXISTS를 사용하면 편리합니다. EXISTS문 사용법 SELECT 컬럼 FROM 테이블 WHERE EXISTS / NOT EXISTS (서브쿼리); EXISTS의 기본 사용법은 위와같습니다. EXISTS은 논리연산자 중의 하나로써 후행 조건절로 서브쿼리 형태로만 올 수 있습니다. EXISTS문 예제 예제 테이블 & 데이터 위와같은 MASTER DETAIL (1 : N) 테이블 구조를 가진 두개의 테이블과 만들고 데이터를 넣도록 하겠습니다. EXISTS문은 위와같은 MASTER - DETAIL (1 : N) 구조로 이루어진 테이블에서 많이 쓰입니다. 테이블에는 각각 위와같이 데이터가..

[Oracle] MERGE INTO 사용법 데이터가 있으면 UPDATE 없으면 INSERT [내부링크]

MERGE문은 테이블에 원하는 데이터가 있으면 그 데이터를 UPDATE하고 없으면 INSERT하는 구문입니다. 이 문법 PK중복 문제 해결등 각종 문제 해결에 정말 유용하게 사용되는 문법입니다. MERGE문 사용법 MERGE INTO 테이블명 USING 타겟 테이블 ON 타겟 데이터 WHEN MATCHED THEN SET 컬럼1 = 값1, 컬럼2 = 값2, ... WHERE 조건 WHEN NOT MATCHED THEN INSERT (컬럼1, 컬럼2 ...) VALUES (값1, 값2...) WHERE 조건; MERGE문의 기본 사용법은 위와 같습니다. 다른 DML보다 문법이 복잡한편이라 처음 접하면 사용하기 힘들수도 있다 생각됩니다. 이에 아래 간단한 예제를 준비했습니다. MERGE문 예제 테스트 테이블..

[Oracle] 오라클 DELETE문(삭제) 사용법 & 예제 [내부링크]

테이블에 있는 데이터를 삭제할때는 DELETE문을 사용합니다. 기본 사용법은 아래와 같습니다. DELETE문 기본형태 --DELETE문 DELETE FROM 테이블명 WHERE 조건; DELETE문의 사용법은 위와같습니다. 회사테이블 (COMPANY_TABLE)에 회사코드(COMPANY_CODE)가 1인 데이터삭제 DELETE FROM COMPANY_TABLE WHERE COMPANY_CODE = 1 DELETE문은 위와같은 방식으로 사용하시면 됩니다. DELETE문을 사용하실때에 WHERE절이 잘 명시되었는지 확인하셔야 합니다. WHERE절에 조건을 명시하지않으면 테이블에 있는 전체 데이터의 컬럼 값이 삭제됩니다. 데이터 변경을 실수 했을 경우 대처법 데이터 삭제 실수는 종종 일어납니다. 당황스럽겠지만..

[Oracle] 오라클 UPDATE문(수정) 사용법 & 예제 [내부링크]

테이블에 있는 데이터를 수정할때는 UPDATE문을 사용합니다. 기본 사용법은 아래와 같습니다. UPDATE문 기본형태 --UPDATE문 UPDATE 테이블명 SET 컬럼1 = 변경할 값, 컬럼2 = 변경할 값 ..... WHERE 조건; UPDATE문 사용법은 위와같습니다. 회사테이블 (COMPANY_TABLE)에 회사코드(COMPANY_CODE)가 1인 데이터의 회사이름(COMPANY_NAME)을 '삼성전자'로 변경 UPDATE COMPANY_TABLE SET COMPANY_NAME = '삼성전자' WHERE COMPANY_CODE = 1 UPDATE문은 위와같은 방식으로 사용하시면 됩니다. UPDATE문을 사용하실때에 주의점은 WHERE절을 잘 확인하셔야 합니다. WHERE절에 조건을 명시하지않으면 ..

[Oracle] 오라클 INSERT문(삽입) 사용법 & 예제 [내부링크]

테이블에 데이터를 입력할때는 INSERT문을 사용합니다. 기본 사용법은 아래와 같습니다. INSERT문 기본 형태 INSERT INTO 테이블명 ( 컬럼1, 컬럼2, 컬럼3 ) VALUES ( 값1, 값2, 값3 ) 가장 기본적인 형태의 INSERT문입니다. 하지만 위와같은 방식으로 데이터를 삽입할때에는 나열된 컬럼과 값의 타입, 갯수가 일치하여야 합니다. 그렇지 않다면 에러가 납니다. 그리고 컬럼의 위치와 값의 위치가 조금이라도 어긋난다면 원치않는 컬럼에 원치않는 데이터가 INSERT되는 불상사가 발생할 수 있습니다. 회사테이블 (COMPANY_TABLE)에 회사코드(COMPANY_CODE) = 1 회사이름(COMPANY_NAME) = '삼성전자' 업종(SECTORS) = 'IT' 데이터 삽입 INSE..

[Oracle] 오라클 SELECT문(조회) 사용법 & 예제 [내부링크]

오라클에서 데이터를 조회하는 명령어는 SELECT입니다. 기본 사용법은 아래와 같습니다. SELECT문 기본형태 SELECT 컬럼 FROM 테이블 WHERE 조건 ORDER BY 컬럼 SELECT문을 말로 표현하자면 어떤 컬럼을 들고올것인지 어디서 들고올것인지? FROM 어떤데이터를 가지고 올것인지? WHERE 어떤 컬럼을 기준으로 정렬할것인지? ORDER BY로 구분될 수 있습니다. 회사 테이블 (COMPANY_TABLE) 의 모든 데이터를 조회 SELECT * FROM COMPANY_TABLE 가장 기본적인 구조의 SELECT문입니다. 테이블에 있는 모든 데이터의 컬럼을 조회하려면 컬럼명을 일일히 나열할 필요없이 * 을 사용하시면 됩니다. 회사 테이블(COMPANY_TABLE)에서 업종(TYPE)이 ..

[Oracle] 오라클 파티션 테이블 사용법 (생성, 조회, 수정, 삭제) [내부링크]

파티션 테이블이란? 파티션이란 테이블에 있는 특정 컬럼값을 기준으로 데이터를 분할해 저장해놓은 테이블입니다. 이때 논리적인 테이블은 1개이지만 물리적으로는 분할한 만큼 파티션이 만들어져 입력되는 컬럼 값에 따라 분할된 파티션별로 데이터가 저장됩니다. 파티션 테이블을 만드는 목적은 대용량 테이블의 경우 데이터 조회 시 효율성과 성능을 높이기 위한 것입니다. 파티션 테이블 만들기 예제 create table SALES ( sales_no number, sale_year number, sale_month number, sale_day number, customer_name varchar2(30), birth_date date, price number, state varchar2(2) ) partition by..

[Oracle] 오라클 시노님(Synonym) 사용법 총정리 (생성, 조회, 권한, 삭제) [내부링크]

시노님(Synonym)이란? 데이터베이스 객체는 각자 고유한 이름이 있습니다. 이 객체들에 대한 동의어를 만드는것이 바로 시노님입니다. 한마디로 객체에게 가명을 주는것이라고 생각하면 되며 ALIAS와 비슷합니다. 다만 ALIAS는 1회성인 반면 시노님(Synonym)은 영구적이라고 볼 수 있습니다. 보통 다른 유저의 객체를 참조할 때 많이 사용을 합니다. 실제로 시노님을 사용하는 목적은 다른 유저의 객체를 사용할때 유저의 이름과 객체의 실제이름을 사용하는데 그 두개를 감춤으로써 데이터베이스의 보안을 개선하기위해 사용되어집니다.시노님에는 PUBLIC과 PRIVATE타입이 있습니다. PUBLIC은 모든 사용자가 접근할 수 있고 PRIVATE는 특정사용자에게만 참조가 가능합니다. 시노님(Synonym)생성 -..

[Oracle] 오라클 시퀀스(Sequence) 사용법 총정리 (생성, 조회, 수정, 삭제)등 [내부링크]

시퀀스(Sequence)란? 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체입니다. 보통 PK값에 중복값을 방지하기위해 사용합니다. 예를들어 게시판에 글이 하나 추가될때마다 글번호(PK)가 생겨야 한다고 해보겠습니다. 만약 100번까지 글 번호가 생성되어있다면 그 다음 글이 추가가 되었을 경우 글 번호가 101으로 하나의 ROW를 생성해주어야 할것입니다. 이때 101이라는 숫자를 얻으려면 기존 글번호중 가장 큰 값에 +1을 하는 로직을 어딘가에 넣어야하는데 시퀀스를 사용하면 이러한 로직이 필요없이 데이터베이스에 ROW가 추가될때마다 자동으로 +1을 시켜주어 매우 편리합니다. 시퀀스(Sequence) 생성 --문법 CREATE SEQUENCE [시퀀스명] INCREMENT BY [증..

[Oracle] 오라클 인덱스(Index) 사용법 총정리(생성, 조회, 삭제, 리빌드) [내부링크]

인덱스(Index)란? 인덱스는 데이터베이스 테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체이며 일종의 색인기술입니다. 테이블에 index를 생성하게 되면 index Table을 생성해 관리합니다. 인덱스는 테이블에 있는 하나이상의 컬럼으로 만들 수 있습니다. 가장 일반적인 B-tree 인덱스는 인덱스 키(인덱스로 만들 테이블의 컬럼 값)와 이 키에 해당하는 컬럼 값을 가진 테이블의 로우가 저장된 주소 값으로 구성됩니다. 인덱스(Index) 사용 예시 인덱스 생성 --문법 CREATE INDEX [인덱스명] ON [테이블명](컬럼1, 컬럼2, 컬럼3.......) --예제 CREATE INDEX EX_INDEX ON CUSTOMERS(NAME,ADDRESS); --예제 컬럼 중복 X CR..

[Oracle] 오라클 샘플 테이블 및 데이터 만들기 (스크립트 제공) [내부링크]

오라클 샘플 테이블 & 데이터 만들기 예제 오라클에서 제공하는 샘플 테이블 및 데이터입니다. 쿼리문 연습용으로 활용하시면 좋습니다. 아래에 있는 스크립트를 복사하여 실행시켜 테이블을 만들고 / 데이터를 넣으시면 됩니다. 혹여나 에러가 나시면 가장 마지막에 있는 테이블 Drop 스크립트를 실행시켜주세요. https://www.oracletutorial.com/getting-started/oracle-sample-database/ 샘플 테이블 ERD 샘플 테이블의 구조는 아래사진과 같으니 참고해주시기 바랍니다. Create Table (테이블 생성) Insert Data (데이터 삽입) Drop Table (테이블 삭제) 스크립트가 길어 텍스트파일로 첨부합니다. 해당 텍스트파일을 다운받으시고 안에있는 SQL..

[Oracle] 오라클 뷰(View) 사용법 총정리 (생성,조회,수정,삭제) [내부링크]

뷰(View)란 무엇인가? 뷰(View)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체입니다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있습니다. 또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있습니다. 뷰(View)의 사용 목적 코딩을 하다보면 여러개의 테이블에서 필요한 정보를 뽑아 사용할때가 많습니다. 이때 좀 더 편리하게 사용할 수 있는 방법중의 하나가 바로 뷰입니다. 뷰를 사용하면 복잡한 질의를 쉽게 만들어 줍니다.. 여러테이블의 JOIN과 GROUP BY 같은 같은 복잡한 쿼리를 view로 저장시켜놓으면 다음부터는 저장한 view의 정보만 가져오면 되므로 쉽게 좀 더 편리하게 사용할 수 있습니다. 일..

[Oracle] 오라클 데이터타입(DataType) 총정리 [내부링크]

데이터 타입 데이터 타입이란 컬럼이 저장되는 데이터 유형을 말합니다. 오라클에서 기본적으로 제공하는 기본 데이터 타입과 이 기본데이터 타입을 혼합하여 만들 수 있는 사용자 정의 데이터 타입으로 구분할 수 있습니다. 기본 데이터 타입은 문자형, 실수, 소수, 자료형 등의 여러 데이터를 식별하는 타입입니다. 문자 데이터 타입 데이터타입 설명 CHAR(n) 고정길이 문자 / 최대 2000byte / 디폴트 값은 1byte VARCHAR2(n) 가변길이 문자 / 최대 4000BYTE / 디폴트 값은 1byte NCHAR(n) 고정길이 유니코드 문자(다국어 입력가능) / 최대 2000byte / 디폴트 값은 1byte NVARCHAR(n) 가변길이 유니코드 문자(다국어 입력가능) / 최대 2000byte / 디폴..

[Oracle] 오라클 전체 테이블 목록 / 코멘트 / 컬럼 조회 [내부링크]

테이블의 갯수가 점점 많아지다보면 어떠한 기능을 만들때 어떤 테이블을 써야하는지 어떤 테이블을 조인해야하는지 모르는 경우가 많습니다. 이럴때 활용할 수 있는 방법이 전체 테이블 목록을 보면서 찾는법, 코멘트를 찾는법 컬럼을 찾는법등이 있습니다. 오늘은 이러한 방법에 대해 소개해드리려 합니다. 전체 테이블 목록 조회 --전체 테이블 목록 조회 select * from all_all_tables select * from dba_tables select * from all_objects where object_type = 'TABLE' --접속 계정 테이블 조회 select * from tabs select * from user_objects where object_type = 'TABLE' select * ..

[Oracle] ORA-12505 Listener refused the connection with following error 오류 해결! [내부링크]

오래간만에 오라클과 오라클 디벨로퍼을 설치해서 접속하려는데 에러가 터졌습니다. Listener refused the connection with the following error : ORA-12505, TNS: listener does not currently know of SID given in connect descriptor 이라는 에러인데요. 해석하자면 리스너는 현재 연결 디스크립터에 제공된 SID를 알 수 없어 연결을 거부했습니다. 라는 뜻이네요. 접속 정보가 잘못된 모양입니다. Listener refused the connection with following error 오류 해결! 구글링 해보니 오라클 12c부터는 기본 SID가 orcl이더군요. 하지만 오라클 디벨로퍼에서 기본 접속 SID..

[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 에러 해결 [내부링크]

오래간만에 개인 PC에 오라클을 설치하고 계정을 만들려고 하니 오류메시지가 하나 출력되었습니다.ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 이라는 오류 메시지인데요. 오라클 12c부터는 공통계정앞에 c##을 붙이도록 네이밍 규칙이 바뀌었더군요. C## 키워드가 붙는 이유는 12c 버전부터 등장하는 CDB, PDB 개념 때문이라고 합니다. 11g까지만 사용해봤었던 저로써는 오늘도 하나 배워갑니다. ㅎㅎ; C##을 붙여주니 정상적으로 계정이 만들어집니다. 권한을 줄때도 앞에 C##을 붙여주어야 합니다. 토드나 sql developer 같은 sql 개발툴에 접속할때도 꼭 앞에 C##을 붙여주셔야 합니다. 그렇지 않으면 위와같이 사용자명/비밀번호가 부적합, 로그온할 수 없습니다. 라는 오류 메..

[Oracle] 오라클 데이터베이스 19C 설치 / 다운로드 방법 [내부링크]

오라클은 오라클이라는 회사에서 배포하는 데이터베이스입니다. 아래에 링크된 오라클 공식 홈페이지에서 다운로드하실 수 있습니다. (오라클 회원이 아니라면 다운로드 하실 수 없으니 회원가입은 꼭 해주세요!!) https://www.oracle.com/database/technologies/oracle-database-software-downloads.html Database Software Downloads | Oracle Oracle Database 11g Release 2 Standard Edition, Standard Edition One, and Enterprise Edition 7/13: Patch Set 11.2.0.4 for Linux and Solaris is now available on su..

[Oracle] 오라클 테이블 스페이스 사용법(조회, 생성, 삭제)등 총정리 [내부링크]

오라클 테이블 스페이스(Table Space)란 무엇인가? 오라클은 데이터를 관리하는 데이터베이스입니다. 데이터를 어딘가에 저장해놓고 사용하는 시스템이라고 볼 수 있습니다. 그리고 데이터 저장 단위 중 가장 상위에 있는 단위를 테이블 스페이스라고 합니다. 데이터 저장 단위는 물리적, 논리적단위로 나눌 수 있습니다. 물리적 단위는 파일을 의미하고 논리적 단위는 데이터블록 -> 익스텐트 -> 세그먼트 -> 테이블스페이스 이렇게 나뉩니다. 데이터 블록 여러개가 모여 익스텐트 하나를 만들고, 익스텐트 여러개가 모여 하나의 세그먼트를 구성하는 식입니다. 테이블 스페이스는 가장 상위개념입니다. 오라클 테이블 스페이스 사용법 SQL 개발 툴이 있으시면 개발 툴을 실행시키시면 되고 없으시다면 윈도우 실행창을 열고 SQ..

[Windows] SSD, HDD 상태 검사 프로그램 추천 [내부링크]

한번씩 외장하드디스크나 컴퓨터에서 삐삐 소리와 함께 오류가 발생하는것을 보신적이 있으실겁니다. 하드디스크에 자료를 많이 저장해놓았는데 갑자기 고장나버리면 상당히 난감한 상황이 발생합니다. 기계는 외부적인 충격이나 바이러스같은 내부적인 충격으로 인해 고장이 날 수 있습니다. 또 모든 기계에는 모두 수명이라는것이 있습니다. 하드디스크도 마찬가지입니다. 수명이 다 된다면 성능이 매우 감소할 수 있기에 주기적인 상태 검사가 필요합니다. 이번 포스팅에서는 SSD, HDD 상태검사를 위한 간단한 프로그램을 소개해드리도록 하겠습니다. 프로그램은 아래 깃허브 링크에 올려놓았으니 다운받으시면 됩니다. https://github.com/wjdxo513/disk_check wjdxo513/disk_check 보조저장장치 상..

[Windows] 고정 IP주소를 설정하는 이유와 방법 [내부링크]

고정 IP를 사용하는 이유 고정아이피란 말 그대로 IP를 고정해서 쓰는 것을 뜻합니다. 특히 회사에서 많이 사용하는데요. 사무실에서는 한 PC에 프린트를 연결해놓고 연결해놓은 PC의 IP를 통하여 프린트 공유도 하고, 직원들의 PC IP흔적을 확인하여 직원의 책임을 가지도록 하고. 서버에 특정 IP를 가진 PC만 접근하도록 하는 등 IP의 중요성이 매우 큽니다. 하지만 유동 IP를 사용할 경우. IP가 수시로 바뀌어 각종 문제에 직면하게 됩니다. 그래서 거의 모든 회사에서는 고정 IP를 사용합니다. 고정 IP주소 설정 방법 1. 작업 표시줄 제일 오른쪽 버튼을 클릭하면 위와같은 화면이 나올텐데요. 위의 사진과 같은 아이콘이 있을겁니다. 이 아이콘을 오른쪽 클릭한 뒤 네트워크 및 인터넷 설정 열기를 클릭합..

[Windows] 내 IP주소 변경/수정하기 [내부링크]

IP주소를 할당받는 방법은 자동으로 할당받는 방법과 고정으로 할당받는 방법이 있습니다. 주로 개인용 PC에서는 자동으로 할당받는 방법을 사용하고 사무용 PC에서는 고정 IP주소로 설정을 주로 합니다. 고정 IP주소 할당방법은 다음 포스팅에서 다루기로 하고. 이번 포스팅에서는 자동으로 받은 IP주소를 변경하는 방법에 대해 알아보도록 하겠습니다. 자주있는 상황은 아니지만 IP밴을 먹거나 IP우회 해야하는 등의 부득이하게 IP를 변경해야할때가 종종 있습니다. 자동으로 할당받은 내 IP주소 변경/수정하기 1. IP주소가 바뀌었는지 확인을 하기 위해 현재 내 IP주소를 조회합니다. 위 화면은 네이버에서 IP주소 조회라고 치면 뜨는 간단한 IP주소 조회방법이구요. 변경전 제 IP주소는 위와 같습니다. 2. 시스템 ..

[Windows] 내 IP주소 확인하기 + 위치추적 [내부링크]

IP주소란? IP 주소는 Internet Protocol address, IP address의 약자로 인터넷 규약주소라고도 합니다. IP주소는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이며 인터넷(TCP/IP)에 연결되어 있는 모든 장치들은 고유의 IP주소를 가지고 있어야 통신할 수 있습니다. 내 IP주소 확인하기 IP주소를 확인하는 가장 대중적인 방법은 cmd창에서 ipconfig라는 명령어를 입력하는 방법입니다. 1. 윈도우 + R 을 눌러 실행창을 켠 뒤 cmd를 입력하여 명령 프롬포트창에 들어갑니다. 2. 명령 프롬포트에 ipconfig라고 입력한 뒤 Enter를 누릅니다. 3. IPv4 주소가 자신의 IP입니다. ※ 기타 네트워크 관련 도스 명령어 네트..

[Windows] 윈도우10 안전모드 부팅 해제 방법 [내부링크]

컴퓨터가 계속 안전모드로 부팅을 권유한다면 컴퓨터에 문제가 있을 가능성이 많습니다. 안전모드는 부팅에 필요한 최소 옵션만 세팅을 하기때문에 컴퓨터 오류를 수정하기 최적의 모드입니다. 그러므로 컴퓨터에 이상이 있을경우 계속 안전모드상태로 문제를 해결하는 편이 좋습니다. 하지만 컴퓨터에 전혀 문제가 없는데도 불구하고 계속 안전모드로만 부팅이 된다면 세팅상의 실수가 아닌지 의심해보아야 합니다. 시스템 구성(System Configuration)에서 부팅 세팅을 안전 부팅으로 해두었다면 이유를 막론하고 계속 안전 모드로만 부팅되기 때문입니다. 반대로 안전모드로 진입하고 싶으신분들은 아래 글을 참조 바랍니다. [Windows] 윈도우10 안전모드로 진입하는 다양한 방법 총정리 윈도우10 안전모드 진입 해제 방법 ..

[Windows] 윈도우10 안전모드로 진입하는 다양한 방법 총정리 [내부링크]

컴퓨터를 사용하다 보면 운영체제가 부팅되지 않는 경우가 종종 있습니다. 이럴 경우 문제 해결을 위해 안전 모드로 부팅을 해볼 필요성이 있습니다. 안전 모드로 부팅을 하였을 경우 시스템을 부팅에 필요한 최소한의 파일과 드라이버만 사용하여 부팅을 하기에 일반 모드로는 부팅이 되지 않더라도 안전 모드로는 부팅이 되는 경우가 많은데요. 안전 모드에서 어떤 문제점이 발생했는지 진단도구를 활용하여 확인을 해보거나 문제 해결을 위해 최근에 설치한 소프트웨어를 삭제하는 등의 조치를 취할 수 있습니다. ※ 안전모드란? 안전 모드(문화어: 안정방식)는 마이크로소프트 윈도나 맥 OS X, 몇몇 리눅스 배포판 등 몇몇 컴퓨터 운영 체제를 진단하기 위한 모드로, 전자 장비에 이상이 생겼을 때 주로 실행된다. 안전 모드로 부팅되..

[Windows] 윈도우10 야간모드 설정방법 (블루라이트 차단) [내부링크]

혹시 "어두운곳에서 컴퓨터하지마라, 스마트폰 하지마라"는 어른들의 말을 들어보신적이 있으신가요? 이런 말을 뒷받침할 만한 연구가 있었습니다. 바로 스마트폰과 책을 밝은 곳과 어두운 곳에서 20분간 보았을 때 눈피로도를 비교한 연구입니다. 눈 피로도 연구결과 결과는 어두운곳에서 스크린을 볼 때는 밝은 곳에서 스크린을 볼 때보다 눈의 피로도가 2배이상 증가하는 것으로 나타났습니다. 결론적으로 어두운 곳에서 갑자기 밝은 화면을 보게 되면 동공이 급격히 작아지게 되어서 눈에 무리가 가게 된다는 것입니다. 이렇듯 어두운곳에서의 장시간 밝은 화면에 대한 노출은 눈에 큰 피로감을 줍니다. 특히 블루라이트라고 불리우는 청색광이 눈 건강에 악영향을 주는데요. 이런 눈에 대한 피로감을 줄이기 위해 윈도우 10에는 야간모드..

[Windows] 윈도우10 다크모드 설정방법 [내부링크]

장시간 컴퓨터를 사용해야 하는 사용자들의 눈에 대한 피로감을 줄이기 위해 최근 여러기업에서 다크모드라는 기능을 도입하고 있습니다. 장시간 작업을 해야하는 프로그램들은 대부분 눈의 피로를 줄일 수 있는 다크모드를 지원하고 있는데요. 마이크로소프트 윈도우 10에서도 RS5 버전부터는 다크모드를 지원하고 있다고 합니다. 필요하신 분들은 사용하시길 바랍니다. ※ 다크모드란? 다크모드는 기존에 흰색을 바탕으로 만들어진 PC나 모바일 배경 화면을 검은색을 배경으로 반전시킨 화면 디자인을 말한다. 다크모드가 인기를 끌게 된 가장 큰 원인은 디스플레이 화면에 지친 '눈' 때문이다. 스마트폰이 보편화되면서 사람들은 디스플레이에서 눈을 뗄 틈이 없게 됐다. 미국에서 실시된 조사에 따르면 2000년만해도 사람들이 온라인에서..

[Windows] 윈도우10 바탕화면 아이콘 사라짐 문제 해결방법 [내부링크]

윈도우 컴퓨터를 사용하는 분들 바탕화면에 자신이 주로 사용하는 프로그램의 아이콘을 두고 사용하실 텐데요. 혹시 윈도우 컴퓨터를 사용하다가 바탕화면에 있는 아이콘들이 사라진 적이 있으신가요? 저도 뭘 잘못 건드렸는지 바탕화면의 아이콘이 모두 날아가버렸습니다. 윈도우10 바탕화면 아이콘 사라짐 해결방법 바탕화면의 전체 아이콘이 보이지 않을 경우 1. 바탕화면 오른쪽 클릭 -> 보기 -> 바탕화면 아이콘 표시를 체크합니다. 2. 사라진 아이콘이 표시되는것을 확인하실 수 있습니다. 바탕화면의 기본 아이콘 (내 PC, 휴지통, 내문서, 제어판, 네트워크)이 사라졌을 경우 1. 바탕화면 오른쪽 클릭 -> 개인 설정 화면으로 들어갑니다. 2. 좌측 탭 바에서 테마를 선택한 후 오른쪽 관련 설정에 보이는 바탕 화면 아..

[Web] 개발자 커뮤니티 사이트 총정리 [내부링크]

개발자로 살아남기 위해서는 빠른 기술의 변화 속도를 따라잡아야 합니다. 빠른 기술의 변화로 인해 전혀 새로운 패러다임의 영역을 공부해야 할 때도 있고 지금껏 배워왔던 기술들이 필요없어질 수도 있습니다. 기술 트렌드의 변화는 개발자들에게 많은 영향을 줍니다. 이러한 변화에 적응하려면 그만큼 많은 정보를 보고 받아들여야 하는데. 저는 여러 개발자들과의 대화를 통해 가장 많은 지식을 습득한다고 생각합니다. 혼자서만 묵묵히 개발하다 보면 어느 순간 내가 우물 안의 개구리가 되어가고 있다는 느낌을 받을 때도 트렌드에 뒤처진다는 느낌도 받을때가 있는데 그러지 말고 많은 개발자들의 고충은 무엇인지 관심사는 무엇인지 직접 보고 공유하면서 정보를 습득하는 것도 좋은 방법이라 생각됩니다. 이번 포스팅에서는 이러한 개발자들..

[Web] HTML 테이블 자동으로 생성해주는 사이트 [내부링크]

Front 개발작업을 하다보면 테이블을 생성해야 할 경우가 많은데요. 하지만 일일이 소스코드를 써가면서 테이블을 그리기란 매우 귀찮은 작업입니다. 이렇게 귀찮은 작업을 자동으로 해주는 사이트가 있습니다. Tables Generator라는 사이트입니다. 해당 사이트는 HTML 뿐만 아니라 LaTeX, Text, Markdown 등 매우 다양한 포맷의 테이블 소스코드를 자동으로 만들어주는 사이트입니다. 버튼 몇개만 간단히 눌러주면 알아서 스타일까지 입혀주기에 Front개발 작업시간을 비약적으로 줄일 수 있답니다. 테이블 자동으로 생성해주는 사이트 Tables Generator 사이트 주소는 아래와 같습니다. http://www.tablesgenerator.com/html_tables 최상단에는 메뉴를 선택할..

[Web] 집중력 향상 음악 / 공부할때 듣는 음악 사이트 총정리 (백색소음) [내부링크]

음악을 들으면서 공부를 해도 될까요? 어떤사람은 음악을 들으면 집중력이 떨어진다고 하고 또 다른 사람들은 음악이 오히려 집중도를 키운다고도 말합니다. 누구의 말이 맞을까요? 연구결과에 따르면 일반적인 음악을 들으면서 공부를하면 집중도가 떨어지지만 백색소음을 들으며 공부를 했을경우 그렇지 않았을때와 비교하여 30%정도의 집중력 향상의 결과가 있다고 합니다. 카페에서 공부가 더 잘된다고 느끼는 경우가 많은데 그 이유도 바로 카페에서 백색소음이 나고 있기 때문이죠. 이번 포스팅에서는 이러한 백색소음을 들을 수 있는 사이트들을 소개하고자 합니다. ※ 백색소음이란? 백색잡음(白色雜音) 또는 화이트 노이즈(영어: white noise)이라고 불리며 물리적으로 전도체 내부에 있는 이산적인 전자의 자유 운동으로부터 야..

[Web] 색상조합 / 색상테마 추천해주는 사이트 총정리 [내부링크]

노력보다 재능이 더 많이 필요한 영역, 공부하면 할수록 더 어려운 영역 바로 디자인인것 같습니다. 어플리케이션을 만들거나 웹사이트를 만들때 하다못해 PPT를 만들때도 디자인이 꼭 들어갑니다. 디자인은 생각보다 중요합니다. 오히려 기능보다 중요하다고 생각될때도 있습니다. 기능이 아무리 좋아도 사용하기 싫게 생긴 디자인이라면 소비자들의 외면을 받기 마련입니다. 애플이나 삼성같은 글로벌기업에서 나온 전자기기들의 후기도 기능보다는 디자인을 평하는 댓글들이 더 많은것을 보면 간접적으로 디자인이 얼마나 중요한지 실감케합니다. 이렇게 중요한 디자인을 잘하기 위한 요소는 어떤것이 있을까요? 개인적인 생각에 디자인에서 매우 중요한부분이 바로 컬러조합이 아닐까 생각합니다. 어플리케이션을 만들때나 사이트를 만들때 고민하는 ..

[Web] 부등호(< , >)를 < , > 로 바꿔주는 사이트 [내부링크]

마크업기반의 코드에서는 부등호(< , >)가 인식되지 않습니다. html, xml같은 마크업기반의 언어에서는 부등호를 태그의 시작과 끝으로 인식을 하기때문입니다. 대표적으로 Spring Mybatis의 xml에서 부등호를 코드로 치환해주지 않고 그냥 쓰게되면 illegalargumentexception이라는 매퍼오류가 뜨는것을 예로 들 수 있습니다. 마크업기반의 언어에서 부등호를 사용하기 위해서는 부등호를 코드로 치환해주어야 합니다. 표현 기호 기호의 코드값 뜻 < < 오른쪽으로 열린 부등호 A < B로 표현할 시 B는 A보다 크다라는 뜻으로 사용 마크업 기반의 코드에서 태그의 시작기호 사용 > > 왼쪽으로 열린 부등호 A > B로 표현할 시 A는 B보다 크다라는 뜻으로 사용 마크업 기반의 코드에서 태그..

[Web] 특수문자 코드로 바꿔주는 사이트 (HTML, XML, JSON 등) [내부링크]

마크업기반의 코드에서는 특수문자가 제대로 출력이 되지 않는경우가 많습니다. 많은 특수기호를 브라우저에서 코드의 일부분으로 인식하기때문입니다. 부등호() 같은 경우가 대표적이죠. 마크업 언어에서 부등호는 태그의 시작과 끝을 의미하기에 이것을 코드로 치환해주지않으면 에러가 발생할 수 있습니다. 특수문자 코드는 아래 사이트에서 확인하실 수 있습니다. https://www.codetable.net/ 특수문자를 각종 언어의 코드로 바꿔주는 웹 사이트 코드표를 찾아가면서 특수문자를 하나하나 코드로 바꿔주기란 매우 귀찮습니다. 하지만 아래에 소개해드릴 홈페이지를 이용하면 코드를 일일히 찾아보지 않아도 특수문자를 바로 코드로 변환시켜 알려줍니다. 사이트 주소는 아래와 같습니다. https://www.percederbe..

[Web] 간단하게 영상/미디어 파일을 편집할 수 있는 사이트 (자르기, 이어 붙이기) [내부링크]

영상편집 프로그램을 다운받지 않고 간단하게 영상을 편집할 수 있는 방법은 없을까요? 있습니다. 물론 프리미엄 프로나 파이널컷처럼 전문적인 영상편집 프로그램에서처럼 다양한 기능은 제공되지 않겠지만 간단한 영상편집 같은 경우에는 아래에 링크되어있는 사이트에서 수정이 가능합니다. 영상 / 음원편집사이트 mp3cut.com 사용법 일단 웹사이트로 들어가야겠죠? 링크는 아래와 같습니다. https://mp3cut.net/ko/ 1. 사이트에 접속하셔서 상단바에 탭중에 Video Cutter라는 탭에 들어갑니다. 그런뒤 자신이 편집하고 싶은 영상을 작업창에 올려주세요. 2. 영상을 편집합니다. 기능은 영상자르기, 영상회전 이정도가 있는것 같네요. 확실히 기능면에서 많이 떨어지네요. 단순히 영상길이 수정만 하고싶으신..

[Web] 음원/영상 파일 확장자 변경해주는 사이트 [내부링크]

가끔 영상파일이나 미디어파일의 파일 형식을 바꿔야 할 경우가 있습니다. 프로그램을 다운받아서 할 수도 있지만 한번만 사용할 기능을 위해서 프로그램을 다운받으면 굉장히 번거롭게 느껴집니다. 이러한 고민을 해결해 줄 수 있는 사이트가 있습니다. 이전 포스팅에서 설명했던 mp3cut.com에서 이 기능을 제공합니다. mp3cut.com에서는 음성이나 미디어 파일의 확장자를 바꿔주는 기능말고도 다양한 기능을 제공합니다. 영상 / 음원편집사이트 mp3cut.com 사용법 일단 웹사이트로 들어가야겠죠? 링크는 아래와 같습니다. https://mp3cut.net/ko/ 변환해주는 방법은 매우 간단합니다. 오디오파일의 확장자 변경을 원하시면 오디오 변환기, 영상파일의 확장자 변경을 원하시면 비디오 변환기를 각각 12시..

[Web] 간단하게 음원/음성 파일을 편집할 수 있는 사이트 (자르기, 이어 붙이기) [내부링크]

이전 포스팅에서 텍스트를 음성파일로 변환해주는 사이트를 알아보았습니다. [Web] 텍스트를 음성으로 변환해주는 사이트 총정리 이렇게 텍스트를 음원파일을 만들었으면 이 음원을 수정을 해야 할 텐데요. 음원 편집 프로그램을 다운로드하여서 작업하는 방법이 가장 좋을 테지만 간단한 음원 이어 붙이기나 음원 자르기 같은 경우에는 프로그램을 다운로드하지 않고서도 아래에 링크되어있는 사이트에서 수정이 가능합니다. 영상 / 음원편집사이트 mp3cut.com 사용법 일단 웹사이트로 들어가야겠죠? 링크는 아래와 같습니다. https://mp3cut.net/ko/ 오디오 자르기 (음성파일 자르기) 1. 상단 1시방향에 있는 메뉴에서 Audio Cutter라는 메뉴를 선택해주시고 파일 선택을 선택합니다. 2. 오디오 양끝의 ..

[Web] 텍스트를 음성으로 변환해주는 사이트 총정리(2024년) [내부링크]

유튜브를 보다 보면 나레이션 없이 자막으로만 이루어져 있는 영상들을 종종 만나볼 수 있는데요. 이 경우 해당영상을 시청자입장에서 자막을 계속 보고 있어야 한다는 불편함이 있을 수 있습니다. 유튜브 프리미엄 고객의 증가로 인해 라디오처럼 듣는 분들에게는 정말 최악이겠죠. 하지만 육성으로 나레이션을 한다는 것은 생각보다 어렵습니다. 저희가 성우나 아나운서가 아닌 일반인이 발성이나 목소리를 마치 프로처럼 낸다는 것은 현실적으로 매우 힘듭니다. 여기 도움을 줄만한 사이트가 있습니다. 텍스트만 넣어주면 알아서 척척 음성으로 바꿔주는 사이트들입니다. 잘 짜여진 대본을 음성변환을 하여 동영상에 삽입해 준다면 단순히 자막으로만 구성되어 있는 동영상에 비해 조금이나마 좋은 퀄리티의 영상을 제작할 수 있지 않을까 생각해 ..

[Web] 저작권 없는 무료 영상 다운로드 사이트 총정리(2024년) [내부링크]

유튜브가 뜨면서 개인 영상제작에 관해서도 관심도가 많이 증가하고 있습니다. 하지만 많은 사람들이 자신이 원하는 콘텐츠를 영상으로 만드는 것에 대해 어려움을 겪습니다. 좀 더 쉽게 영상을 제작할 수 있는 한 가지 방법을 제시하자면 인터넷에 돌아다니는 무료 동영상들을 편집해서 사용하신다면 영상제작에 큰 도움이 될 수 있습니다. 이번포스팅에서는 영상제작에 도움이 될만한 무료 영상 공유사이트에 대해 알아보도록 하겠습니다. 무료 영상 다운로드 사이트 총정리 픽사베이 비디오 (https://pixabay.com/videos/) 가장 유명한 영상공유 사이트는 픽사베이입니다. 무료 이미지 공유사이트도 픽사베이였는데 영상도 제일 큰곳은 픽사베이네요. 공유사이트의 최강자인 듯합니다. 4K와 HD버전으로도 다운로드하실 수 ..

[Web] 저작권 없는 무료 픽토그램 다운로드 사이트 모음(2024년) [내부링크]

픽토그램이란? 픽토그램이란 픽토(picto)와 전보를 뜻하는 텔레그램(telegram)의 합성어로, 무언가 중요한 사항이나 장소를 알리기 위해, 그 어떤 사람이 보더라도 같은 의미로 통할 수 있는 그림으로 된 언어체계입니다. 디자인을 할 때 픽토그램은 굉장히 유용하게 쓰입니다. 디자인 측면에서 특정 기능이 있을 때 그 기능을 글로 표현하는 것보다는 아이콘으로 간결하게 표현하는 것이 좀 더 깔끔하게 보이기 때문이죠. 위와 같이 팔로우 기능이 있다고 예로 들어보겠습니다. 한눈에 봐도 왼쪽부터 차례대로 페이스북, 인스타그램, 트위터라는 것을 알 수 있습니다. 글귀로 페이스북, 인스타그램, 트위터 이렇게 쓰는 것보다 픽토그램을 쓰는 것이 훨씬 깔끔합니다. 이처럼 픽토그램은 아이콘만 봐도 직관적으로 무슨 기능인지..

[Web] 저작권 없는 상업용 무료 이미지 다운로드 사이트 총정리(2024년) [내부링크]

프로그램이나 애플리케이션을 만들다 보면 디자인이라는 요소가 분명히 들어가게 되어있는데요. 이 디자인이라는 영역은 시간도 많이 잡아먹는 작업입니다. 또 미술 쪽으로 재능이 없다면 애초에 하지도 못하는 디자인을 배워서 하기보다는 기존에 이미 되어있는 디자이너의 작품이나, 사진, 혹은 그림을 활용하면 디자인에 소요되는 시간을 획기적으로 단축할 수 있습니다. 오늘은 제가 이때까지 디자인을 하면서 참고했었던 여러 가지 사이트들을 소개해드리려 합니다. 디자인할 때 꼭 필요한 저작권 없는 무료 이미지 사이트 정리 픽사베이 (https://pixabay.com/) 별점 : 아마 무료이미지 사이트 중에 가장 유명하지 않을까 싶습니다. 무려 160만 개의 이미지와 비디오가 저장되어 있다고 합니다. 모두 상업적으..

[Web] 헤어진 커플사진에서 애인의 모습을 지울수 있는 서비스 [내부링크]

살아가면서 재수가 좋으면 여자친구 혹은 남자친구와 사귀게되고 수많은 추억을 남기게 됩니다. 또 그 수많은 추억을 사진으로 남기게 되죠. 하지만 이 수많은 사진들은 애인과 헤어지는 순간 바로 애물단지로 바뀌어버립니다. 내가 아무리 잘나와도 인생사진을 찍어도 이것을 지워야하나 말아야하나 수차례 고민을 하게 됩니다. 이 문제를 해결하기 위해서 나온 영국의 한 서비스가 있습니다. editmyex라는 서비스입니다. 저같은 경우에는 여자친구와 찍은 사진들은 헤어지고 난 후 전부 삭제해버리는 스타일인데요. 얼마전 컴퓨터를 정리하던 도중 옛날에 앨범으로 만들려고 따로 빼놓은 전 여자친구와 찍은 사진들을 다수 발견하였습니다. 2014년도에 찍은 사진이니 무려 5년전 사진이군요. 이 사진들을 다 지우려고 하니 조금 아깝더..

[C언어] Visual Stdio 2019 무료 설치 / 다운로드 [내부링크]

전세계에서 가장 인기가 있는 IDE는 어떤것일까요? 2017년 IT_WORLD에 따르면 가장 인기있는 IDE로 비쥬얼 스토디오로 무려 22%의 점유율을 가지고 있다고 합니다. 특히 C계열에서는 대부분의 개발자들이 이 비쥬얼 스튜디오를 사용합니다. 마이크로 소프트웨어에서 배포한 비쥬얼 스튜디오는 C언어와 완벽한 궁합을 자랑합니다. 마이크로소프트가 직접 개발한 C#같은 경우에는 100% 비쥬얼 스튜디오를 사용한다고해도 과언이 아닐것입니다. 이왕 개발 언어를 공부를 할거면 가장 많이 사용하는 IDE로 공부를 하는것이 가장 좋을듯합니다. IDE를 잘다루는것도 실력이니까요. 이번 포스팅에서는 Visual Stdio 2019 설치방법에 대해 알아보도록 하겠습니다. 통합 개발 환경(IDE)은 Integrated De..

[C언어/C++] 별찍기 예제 (For문 연습) [내부링크]

대표적인 for문 연습 방법인 별찍기에 대해 포스팅해보려합니다. 별찍기는 반복문을 사용해서 여러가지형태로 별(*)을 출력하는 말하는데요. 기본적인 사각형, 삼각형 이런것은 쉽게 구현이 가능하지만 피라미드, 마름모, 모래시계 이런것들은 생각보다 까다로워요. 특히 처음 반복문을 접하시는 분들은 많이 힘들어 하실거에요. 그래서 이번 포스팅에서는 상대적으로 쉬운 사각형, 삼각형부터 상대적으로 어려운 피라미드, 나비, 마름모까지 한번 만들어서 그 소스를 포스팅해보자 합니다. 사각형 만들기 for(int i=0;i

[C언어] for문 사용법 & 예제 총정리 [내부링크]

반복문 종류 반복문의 종류로는 for문, while문 do-while문이 있습니다. 어떤 상황이냐에 따라 반복문의 문법을 결정하여 코딩을 하게 되는데요. for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 상관은 없습니다만 for문은 반복횟수를 명확히 알고 있을 때 주로 사용하고 while문은 조건에 따라 반복 횟수를 결정해야 할 때 주로 사용하게 되는 것 같습니다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐만 다를 뿐 기본적인 로직은 같습니다. do-while은 솔직히 잘 쓰지는 않는 것 같아요. 대부분 for문과 while문을 많이 쓰게 되는데 특히 for문을 가장 많이 사용하게 됩니다. 그 이유는 for문이 while..

[C언어] while문 사용법 & 예제 총정리 [내부링크]

반복문의 종류 반복문의 종류로는 for문, while문 do-while문이 있습니다. 어떤 상황이냐에 따라 반복문의 문법을 결정하여 코딩을 하게 되는데요. for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 상관은 없습니다만 for문은 반복횟수를 명확히 알고 있을 때 주로 사용하고 while문은 조건에 따라 반복 횟수를 결정해야 할 때 주로 사용하게 되는 것 같습니다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐만 다를 뿐 기본적인 로직은 같습니다. while문 while문은 조건식이 true일 경우에 계속해서 반복하는 문법입니다. 조건식에는 비교 또는 논리 연산식이 줄로 오는데 조건식이 false가 되면 반복을 멈추고 wh..

[C언어] switch문 사용법 & 예제 총정리 [내부링크]

조건문 switch문 switch문은 if문과 같이 조건 제어문에 속합니다. 하지만 switch문은 if문처럼 조건식이 =와 같은 이상, 이하, 초과, 미만 같은 부등식이 사용될 수 없습니다. if문은 조건식이 true일 경우에 블록이 실행된다고 하면 switch문은 비교할 변수가 어떤 값을 가지냐에 따라 실행문을 선택됩니다. 오직 ==만 비교할 수 있는것인셈입니다. 그러므로 모든 switch문은 if문으로 바꿀 수 있지만 if문에서 부등식이 사용된 경우에는 switch문으로 치환하실 수 없습니다. 하지만 switch문을 사용함으로써 if문보다는 좀 더 코드의 가독성이 좋게끔 작성하실 수 있고 if문보다 미세하게 switch문이 빠르기에 switch문으로 작성할 수 있는 코드가 있다고하면 if문보다 sw..

[C언어] if문 사용법 & 예제 총정리 [내부링크]

조건문 if문 If문은 조건식의 결과에 따라 중괄호 { } 로 묶어놓은 블록이 실행여부가 결정되는 조건문입니다. 조건식에는 true 또는 false값을 산출할 수 있는 연산식이나 boolean변수가 올 수 있습니다. 조건식이 true면 블록을 실행하고 false면 블록을 실행하지 않습니다. C언어에서 0은 false(거짓)로 0이 아닌 나머지 값은 모두 true(참)로 인식합니다. if문 문법 //문법 if(조건식){ 실행문.... } //사용법 if(1){ printf("if문 예제"); } 만약 조건식이 true가 될때 실행해야 할 문장이 하나밖에 없다면 중괄호 {}를 아래와 같이 생략할 수도 있습니다. //중괄호 {} 생략 if(1) printf("if문 예제") if문 예제 #include int..

[Algorithm] 이진탐색 알고리즘 [내부링크]

이진탐색이란? 이진탐색(이분검색)은 말 그대로 검색할 자료를 반씩 나누어 그 중간값을 찾는 대상값과 비교하는 작업을 반복하여 자료를 찾는 검색을 뜻하며 빠른속도로 자료를 찾을 수 있습니다. 단 이진탐색을 하기위해서는 데이터가 정렬되어있어야 합니다. 이진탐색 과정 이진탐색을 할 데이터들이 위와 같이 정렬되어있다고 가정하고 숫자 7을 찾는 이진탐색과정을 알아보겠습니다. 1. 첫번째 주소와 마지막 주소의 위치를 활용하여 중간 위치를 계산합니다. 중간위치 = (0+9)/2 = 4.5 -> 소수점절삭 -> 4 2. 중간위치 4번째주소에 있는 값 8이 찾으려는 값인지 확인합니다. 7은 8보다 작으므로 찾으려는 값의 범위는 0~4번째 주소입니다. 3. 찾으려는 범위의 첫 번째 주소와 마지막 주소의 위치를 이용하여 중..

[Algorithm] 입력받은 그레이코드를 2진수로 변환하기 [내부링크]

입력받은 그레이코드를 2진수로 변환하기 그레이 코드를 이진수로 변환할 때는 첫번째 이진수는 그레이 비트를 그대로쓰고, 두번째 이진수 비트부터는 왼쪽에 구해놓은 2진수와 변경할 그레이코드를 XOR연산하여 씁니다. [C언어] 입력받은 2진수를 그레이코드로 변환하기 C언어 / C++ 코드 #include main(){ int i; int input[4], cont[4]; printf("그레이코드: "); for(int i=0; i

[Algorithm] 입력받은 2진수를 그레이코드로 변환하기 [내부링크]

입력받은 이진수를 그레이코드로 변환하기 이진수를 그레이 코드로 변환할때는 첫번째 그레이 비트는 이진수 비트를 그대로 내려쓰고, 두번째 그레이 비트부터는 변경할 이진수의 해당번째 비트와 그 왼쪽의 비트를 XOR연산을 하여 내려적습니다. [C언어] 입력받은 그레이코드를 2진수로 변환하기 C언어 / C++ 코드 #include main(){ int i; int input[4], cont[4]; printf("이진수 입력 :"); for(int i=0; i

[Algorithm] 입력받은 2진수의 보수 구하기 [내부링크]

입력받은 이진수의 보수구하기 1의 보수는 0은 1로 1은 0으로 변경하면 되고, 2의 보수는1의 보수에 1을 더하면 됩니다. 즉 01100의 1의 보수는 10011이고, 2의 보수는 10100입니다. 이 로직을 어떻게 알고리즘으로 구현하느냐가 관건인데요. 1의 보수를 if문을 통해서 구해도 되지만 0은 1로, 1은 0으로 변환할때는 1에서 변환할 값을 그냥 빼주면 1의 보수를 좀 더 간편하게 구하실 수 있습니다. 2의 보수를 구할때는 1의 보수에 1을 더하면 되는데 이진수의 각자리가 배열의 각 요소에 분리되어 있으므로 맨 오른쪽 배열의 값에 1을 더해서 만약 맨 오른쪽 배열의 수가 1을 초과하면 앞자리 수로 1을 반올림 해줍니다. C언어/C++ 코드 #include main() { int a[5],b1[..

[Algorithm] 입력받은 10진수를 2진수로 변환하기(진법변환) [내부링크]

입력 받은 10진수를 2진수로 변환하기 10진수를 2진수로 변환하려면 10진수를 2로 나누어 몫 과 나머지를 구한 후 나머지는 출력할 배열에 저장하고 몫은 또 2로나누어 나머지를 구하여 출력할 배열에 저장하는 과정을 몫이 0이 될때까지 무한반복 후 몫이 0이되었을경우 저장한 출력배열을 거꾸로 출력시키면 됩니다. C언어 / C++ 코드 #include main() { int num, num2, b, mok, nmg, i; int a[10]; scanf("%d",&num); num2 = num; b = -1; do{ b++; mok = num/2; nmg = num-mok*2; a[b] = nmg; num = mok; }while(mok!=0); printf("%d를 2진수로 변환한 값 = ",num2); ..

[Algorithm] 입력받은 수를 소인수 분해하기 [내부링크]

정수를 입력받아 소인수를 구해 출력하기 어떤 수를 소인수 분해하려면 입력받은 수를 2부터 차례대로 입력받은 수(NUM)의 제곱근까지의 숫자로 나누어 떨어지는지를 계산하시면 됩니다. 제곱근까지의 수 중 입력받은 수(NUM)을 처음으로 나누어 떨어지게 하는 수가 있으면 그 수는 소수이고, 입력받은 수(NUM)는 소인수가 됩니다. 소인수를 구했으면, 그때의 몫을 입력받은 수(NUM)에다가 치환하고 다시 NUM의 제곱근까지의 숫자로 나누는 작업을 반복합니다. 만약 제수가 NUM의 제곱근보다 커지면 그떄는 몫인 NUM자체가 그 수의 소인수가 됩니다. C언어 / C++ 코드 #include #include main() { int num,b,c,d,mok,nmg; int a[100]; scanf("%d",&num);..

[Algorithm] 입력받은 수의 약수 구하기 [내부링크]

정수를 입력받아 약수를 구해 출력하세요 어떤수 X를 1부터 X까지 차례대로 나누어 나머지가 0이 되게 하는 제수들이 X의 약수입니다. 예를 들어 10의 약수는 10을 나누었을 떄 나머지가 없게 하는 수이므로 1, 2, 5, 10입니다. C언어/C++ 코드 #include main() { int a[100];\ int b, mok, nmg, i; scanf("%d",&b); int c = 0, d = -1; while(1){ c++; if(c

[Algorithm] 최대공약수, 최소공배수 구하기 [내부링크]

입력받은 두수의 최대공약수와 최소공배수를 구하기 최대공약수와 최소공배수를 구할 두 수 중 큰수와 작은수를 정한 뒤 큰 수를 작은수로 나누어 나머지를 구합니다. 이때 나머지가 0이면 그때의 작은수가 최대공약수이고, 원래의 두수를 곱한 값을 최대공약수로 나눈 값이 최소공배수입니다. 만약 큰수를 작은수로 나누었을 때, 나머지가 0이 아니면, 그떄의 작은 수를 큰수로 하고 나머지를 작은수로 하여 나머지가 0이 될때까지 반복합니다. 더 빠른 최대공약수 구하는 유클리드 호제법이 궁금하시다면 아래 글을 참고해주세요. [Algorithm] 유클리드 호제법 - 최대공약수(GCD) 구하기 C언어 / C++ 코드 #include main() { int a,b,big,small,mok,nmg,gcm,lcm; scanf("%d..

[Algorithm] 소수의 개수 구하기 [내부링크]

배열 A[99]에 2~100 사이의 정수를 기억시킨 후 이 배열을 이용하여 소수의 개수를 구하시오. 배열에 들어있는 연속된 숫자의 소수 여부를 판별하기 위해서는 정수의 수열에서 처음 나온 소수의 배수들은 소수가 아니라는 원리를 이용합니다. 배열의 첫번째에 들어있는 2는 소수이지만 2의 배수들은 모두 소수가 아닙니다. 그러므로 2의 배수가 들어 있는 위치에는 모두 0을 채워 소수가 아님을 표시합니다. 소수의 판별은 배열의 해당 위치에 0이 들어 있는지만 확인하면 됩니다. C언어 / C++ 코드 #include main() { int k,i,j,m; int a[99]; k=1; do{ //배열 a에 값을 입력한다. k++; a[k-2] = k; }while(k98){ printf("%d번쨰까지의 소수의 갯수..

[Algorithm] 소수의 합 구하기 [내부링크]

임의의 정수를 입력받아 그 안에 포함된 소수의 합을 구하기 입력받은 숫자 X의 범위에 속하는 모든 소스의 합계를 구하려면 숫자 2에서 X까지 증가시키면서 각각의 숫자가 소수인지를 판별한 후, 그 수가 소수일 때만 합계에 누적시키면 됩니다. [C언어] 소수를 판별하는 알고리즘 C언어 / C++ 코드 #include main(){ int a, sum, i, j; scanf("%d",&a); //정수형 변수 a에 정수를 입력받습니다. sum=0; i=2; j=2; while(1){ //무한루프 j=2;; while(i%j!=0) //i를 j로 나눈 나머지가 0 이아니라면 반복문을 수행합니다. j++; if(i==j){ //i와 j가 같으면 sum의 값에 i를 누적시킵니다. sum+=i; } if(i

[Algorithm] 소수를 판별하는 알고리즘 [내부링크]

1보다 큰 임의의 정수를 입력하여 소수를 판별 1. 입력받은 숫자보다 작은 모든숫자를 다 나누어본다. 어떤 수 X가 소수 인지를 판별하려면 X를 2부터 X보다 작은 수(X-1)까지 차례대로 나누어 떨어지는지 검사하면 됩니다. 예컨데 5는 2,3,4,로 나누었을때 한번도 나누어 떨어지지 않으므로 소수이고, 4는 2로 나누었을때 나누어 떨어지므로 소수가 아닙니다. C언어 / C++ 코드 #include main(){ int a, i, j; scanf("%d",&a); //정수형 변수 a에 정수를 입력받습니다. i=2; j=a-1; f(a==1){ //1은 소수가 아님 printf("소수아님"); return; } while(1){ //무한루프 if(i

[Algorithm] 피보나치 수열의 합계 구하기 [내부링크]

피보나치 수열이란? 피보나치 수열은 첫번째 항과 두번쨰 항을 더해서 세번째 항을 만들고 두번쨰 항과 세번쨰 항을 더해서 네번쨰 항을 만드는 방법으로, 계속해서 다음항을 만들어가는 수열입니다. 피보나치 수열의 10번째 항까지의 합계 구하기 3개의 변수로 먼저 첫번째 항(A), 두번째 항(B), 세번째 항(C)를 만든 후, 두번째 항(B)를 첫번째 항(A)에 치환하고 세번째 항(C)를 두번째 항(B)에 치환한 후 첫번째 항(A)와 두번째 항(B)를 더하여 다시 세번째 항(C)를 만드는 방법을 반복합니다. C언어 / C++ 코드 #include main() { int a = 1, b =1; //첫번째항, 두번쨰항 int c; //세번째항 int sum = 2, cnt = 2; //합계 sum, 항의갯수 cnt..

[Algorithm] 팩토리얼 수열의 합계 구하기 [내부링크]

팩토리얼 수열이란? 수학에서, 자연수의 계승 또는 팩토리얼은 그 수보다 작거나 같은 모든 양의 정수의 곱입니다. n이 하나의 자연수일 때, 1에서 n까지의 모든 자연수의 곱을 n에 상대하여 이르는 말입니다. 기호는 느낌표(!)를 사용합니다. 팩토리얼이라고 읽으며 팩토리얼을 줄여서 팩이라고 읽기도 합니다. 팩토리얼 수열의 5번째 항까지의 합계구하기 (1!+2!+3!+4!+5!) 팩토리얼의 합계를 구하는 알고리즘을 풀기 위해서는 각 항 사이에서 일정한 비율로 증가하여 곱할 값으로 사용할 증가 배수 변수 i, 증가 배수를 곱하여 수열의 각 항을 만들어 저장할 변수 Sum, 그리고 수열의 각 항인 j가 만들어질때마다 그 값을 누적할 변수 K가 필요합니다. C언어 / C++ 코드 #include main() { ..

[Algorithm] 여러가지 수열의 합계 (다양한 유형) [내부링크]

1번문제 : 1 ~ 100까지의 합계 (1+2+3+4···+100) 0에서 1씩 증가시켜 100까지 변경되는 수열을 더하려면 두개의 변수를 선언하셔야 합니다. 변수 i에는 수열의 각항을 만들기 위하여 반복문을 사용하여 +1씩 더하여주고, 또다른 변수 Sum에는 수열의 각 항이 1씩증가할때마다 그값을 누적하여 저장하면 됩니다. C언어 / C++ 코드 #include main(){ int i,sum; //정수형변수 i와 sum을 선언 i=0; sum=0; //i와 sum을 0으로 초기화 do{ i++; //i를1씩 증가 sum +=i; //sum값에 i를 누적시켜 저장 }while(i

[Web] 가장 속도가 빠른 Https 차단 우회방법 간단한 프로그램 설치(SaveVisit) [내부링크]

얼마전 정부에서 검증되지 않는 Https를 차단하겠다고 선언하고 얼마지나지 않아 다수의 검증되지 않은 Https 사이트의 접속이 차단되었습니다. 현재 윈도우, 맥, 크롬, 사파리, 익스플로러 등등 모든 기기와 웹브라우저에서 편법을 쓰지 않고서는 절대 접속할 수 없는 상황이 왔는데요. 검증되지 않은 Https 사이트에 접속하려고 하면 '사이트에 연결할 수 없음 연결이 재설정되었습니다.' 라는 메시지가 뜨고 있습니다. 하지만 언제나 불가능한것은 없습니다. 차단하는 방법도 다양한 만큼 Https 차단을 뚫는 방법도 무궁무진하게 많습니다. 마치 창과 방패의 대결이랄까요..? 이번 포스팅에서는 Https차단을 뚫는 방법에 대해 알아보도록 하겠습니다. 접속차단 우회 방법 Https 검열을 우회하는 방법은 다양한 방..

[C언어] 아두이노 설치 / 다운로드 방법 [내부링크]

이번 포스팅에서는 아두이노 IDE(통합개발환경)의 설치방법에 대해 알아보도록 하겠습니다. 아두이노 IDE는 아두이노안에 내가 짠 소스코드를 넣어줄 수 있는 아두이노에서 제공하는 굉장히 가벼운 개발 툴입니다. 소스코드작성, 컴파일, 업로드등의 기능을 지원합니다. 아두이노(IDE) 설치 / 다운로드 방법 1. 우선 아두이노 홈페이지에 접속하여 아두이노 IDE 설치파일을 받으셔야 합니다. 아두이노 공식 홈페이지 : https://www.arduino.cc/ 2. 아두이노 공식 홈페이지에 접속하면 상단에 SoftWare라는 탭이있습니다. 여기서 위의 사진과 같이 Downloads를 클릭합니다. 3. Downloads를 클릭한 뒤 스크롤을 조금 내려보시면 위와같은 화면이 있을텐데요. 자신이 사용하고있는 운영체제에..

[C언어] 아두이노란 무엇인가? [내부링크]

아두이노란 무엇인가? 이두이노란 물리적인 세계를 감지하고 제어할 수 있는 인터랙티브 객체들과 디지털 장치를 만들기 위한 도구로, 간단한 마이크로컨트롤러(Microcontroller) 보드를 기반으로 한 오픈 소스 컴퓨팅 플랫폼과 소프트웨어 개발 환경을 말합니다. 아두이노는 다양한 스위치나 센서로부터 입력 값을 받아들여 LED나 모터와 같은 전자 장치들로 출력을 제어함으로써 환경과 상호작용이 가능한 물건을 만들어 낼 수 있습니다. 예를 들어 단순한 로봇, 온습도계, 동작 감지기, 음악 및 사운드 장치, 스마트 홈 구현, 유아 장난감 및 로봇 교육 프로그램 등의 다양한 제품들이 아두이노를 기반으로 개발 가능합니다. 또한 아두이노는 회로가 오픈소스로 공개되어 있으므로 누구나 직접 보드를 만들고 수정할 수 있습..

[내돈내산] 가성비 좋은 코드리스 이어폰 QCY-T2C 사용후기 [내부링크]

저는 한달전에 인터넷 구매대행 사이트에서 QCY T2C를 약 3만원에 해외 직구했었습니다. 하지만 무슨 이유인지는 모르겠지만 계속해서 배송이 미뤄지더군요.. 그렇게 기다리기를 한달쯔음 됐을까요? 드디어 QCY-T2C가 배송이 되었습니다. 수요에 비해 공급이 따라오지 못해 배송이 지연되었다고 판매자 측에서는 말하였으나 한달은 좀 과했다는 생각이 듭니다. QCY-T2C는 QCY-T1S의 후속작인가요? QCY-T2C라고? 나는 QCY-T1밖에 모르는데 QCY-T1의 후속작인가? 라고 생각하시는 분들 있으실겁니다. 하지만 QCY-T2C는 QCY-T1S의 후속작은 아닙니다. 정확히 말씀드리자면 QCY-T2C는 QCY-T1S모델하고 같은 모델인데 어떤 매체로 판매되었냐에 따라 이름만 바뀌어져서 나오는 거라고 합니다..

[내돈내산] 삼성 갤럭시 버즈 블랙 사용후기 [내부링크]

안녕하세요 코딩팩토리입니다. 오늘은 삼성 무선이어폰 갤럭시 버즈에 대해 리뷰를 해보려고 합니다. 저는 삼성 갤럭시 아이콘x를 작년에 산 뒤 매우 잘 사용하고 있다가 잃어버린터라 새로운 무선 이어폰이 필요했었는데 제가 삼성 핸드폰을 사용하고 있는것도 그렇고 저번 갤럭시 아이콘X를 잘 사용했었던 좋은 기억이 있기에 그냥 갤럭시 아이콘x의 후속작인 갤럭시 버즈를 삼성 디지털 프라자에가서 구매하였습니다. 갤럭시 버즈 색상 선택을 구매한 이유 갤럭시 버즈에는 총 화이트, 블랙, 옐로우 이렇게 3가지 색상이 존재하는데 저는 이중에서 블랙을 구매하게 되었습니다. 블랙을 사용한 이유는 아래와 같습니다. 1. 손때가 타도 잘 티가 나지 않는다. 무선이어폰을 끼고 뺄때는 꼭 손을 한번이상 거쳐야 합니다. 그리고 저같은경우..

[내돈내산] 카멜마운트 듀얼 모니터암 PMA-2D 사용후기 [내부링크]

집돌이인 코딩팩토리의 취미생활은 유튜브와 영화감상입니다. 항상 어떻게 하면 좀 더 편안한 자세로 미디어시청을 할 수 있을지 항상 고민을 하고 있습니다. 이런 고민을 하던 와중에 한가지 혁신적인 아이템을 발견하게 되었습니다. 바로 모니터암이라는 제품입니다. 모니터암이 어떤 제품인가 간단하게 설명해드리겠습니다. 모니터암 대충 이런느낌입니다. 만능 가제트팔 처럼 생겼죠? 모니터암을 설치하면 모니터의 각도와 위치 높이 등등을 마음대로 조절 할 수 있습니다. 저같이 침대에 누워서 미디어를 시청하는 집돌이한테는 모니터암을 접하냐 못접하냐에 따라서 엄청난 삶의질의 변화를 느낄정도로 입니다. ※ 카멜마운트 듀얼 모니터암은 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 카멜마운트 듀얼모니터암 PMA-2D 설치 후기..

[H/W] 캐시메모리란 무엇인가? [내부링크]

캐시메모리란 무엇인가? 캐시 메모리는 CPU의 처리속도와 주기억장치의 접근 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory입니다. 캐시메모리의 특징 캐시는 주기억장치와 CPU사이에 위치하며, 자주 사용하는 프로그램과 데이터를 기억합니다. 캐시 메모리는 메모리 계층 구조에서 가장 빠른 소자이며, 처리속도가 거의 CPU의 속도와 비슷할 정도의 속도를 가지고 있습니다. 캐시메모리를 사용하면 주 기억장치를 접근하는 횟수가 줄어들어 컴퓨터의 처리속도가 향상됩니다. 캐시 주소표는 검색시간을 단축시키기 위해 주로 연관기억장치를 사용합니다. 캐시의 크기는 보통 수십 KByte ~ 수백 KByte입니다. 캐시메모리의 매핑 프로세스 매핑 프로세스는 주기억장치로부터 캐시 메모리로 데이터를 전송하는 방법을 말..

[H/W] 보조기억장치의 종류와 특징 [내부링크]

보조기억장치란? 보조기억장치는 주기억장치의 단점을 보완하기 위한 기억장치입니다. 보조기억장치는 주 기억장치에 비해 속도는 느리지만 전원이 차단되어도 내용이 그대로 유지되고 저장용량이 크다는 장점이 있습니다. 보조기억장치의 특징 중앙처리장치와 직접 자료 교환이 불가능합니다. 접근시간이 오래걸립니다. 일반적으로 주기억장치에 데이터를 저장할 때는 DMA방식을 사용합니다. CPU가 직접 접근할 수 없습니다. 여러가지 보조기억장치의 종류 자기테이프 자기테이프에는 주소의 개념이 없고, 처음부터 차례대로 처리하는 순차처리만 할 수 있는 대용량 저장 매체입니다. 평균처리시간이 가장 깁니다. 가격이 저렴하고 용량이 커서 자료의 백업용으로 많이 사용합니다. 자성물질이 코팅된 얇은 플라스틱 테이프를 동그란 릴에 감아 놓은 ..

[H/W] 주 기억장치의 종류와 특징 [내부링크]

주기억장치란? 주기억장치는 CPU가 직접 접근하여 처리할 수 있는 고속의 기억장치(Memory)로 현재 수행되는 프로그램과 데이터를 저장하고 있습니다. 종류에는 롬(ROM)과 램(RAM)이 있습니다. ROM(Read Only Memory) ROM은 기억된 내용을 읽을 수만 있는 기억장치로서 일반적으로 쓰기는 불가능 합니다. 전원이 실제로 꺼져도 기억된 내용이 지웢지ㅣ 않는 비휘발성 메모리입니다. 실제로 ROM은 주기억장치로 사용되기보다는 주로 기본 입,출력 시스템(BIOS), 자가 진단 프로그램(POST)같은 변경 가능성이 희박한 시스템 소프트웨어를 기억시키는데 이용합니다. ROM의 종류와 특징 종류 특징 MASK ROM 제조공장에서 프로그램화하여 생산한 ROM으로, 사용자가 내용을 변경시킬 수 없습니다..

[H/W] 기억장치의 계층구조와 분류 [내부링크]

기억장치는 컴퓨터에서 사용하는 Data나 Program을 저장하는 장치로 크게 주 기억장치와 보조기억장치로 구분됩니다. 기억장치의 계층구조 기억장치의 계층구조란 여러가지 기억장치를 속도, 용량, 성능에 따라 계층적으로 분류하는 것으로, 전체 메모리 시스템의 가격을 최소화하면서 가능한 최소의 평균접근속도를 달성하는 것이 기억장치 계층화의 목적입니다. 기억장치의 구분 구분방식 내용 내용의 보존 여부 파괴성 메모리 : 판독 후 저장된 내용이 파괴되는 메모리로 파괴된 내용을 재생시키기 위한 재 저장 시간이 필요합니다.(자기코어) 비 파괴성 메모리 : 판독 후에도 저장된 내용이 그대로 유지됩니다..(자기코어를 제외한 기억장치) 전원 단절 시 내용 소멸 여부 휘발성 메모리 : 전원이 단절되면 모든 정보가 지워지는 ..

H/W] 인터럽트의 정의와 종류 및 처리과정 [내부링크]

인터럽트란 무엇인가? 인터럽트는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할경우 현재 실행중인 작업을 즉시 중단하고 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는것을 말합니다. 일명 끼어들기라고도 합니다. 인터럽트는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 분류하는데, 외부나 내부 인터럽트는 CPU의 하드웨어에서의 신호에 의해 발생하고 소프트웨어 인터럽트는 명령어의 수행에 의해 발생합니다. 여러가지 인터럽트의 종류와 발생원인 외부 인터럽트 외부 인터럽트는 다음과 같이 입,출력장치, 타이밍 장치, 전원 등 외부적인 요인에 의해 발생합니다. 전원 이상 인터럽트 : 정전이되거나 전원 이상이 있는경우 발생합니다. 기계 착오 인터럽트 : CPU의 기능적인 오류 동작..

[H/W] 여러가지 CPU 레지스터의 종류와 기능 [내부링크]

레지스터란? 레지스터는 CPU내부에서 처리할 명령어나 연산의 중간 값 등을 일시적으로 기억하는 임시 기억장소입니다. 컴퓨터의 프로세서 내에서 자료를 보관하는 아주 빠른 기억장소라고 생각하면 되며 일반적으로 현재 계산을 수행중인 값을 저장하는데 사용됩니다. 레지스터는 메모리 계층의 최상위에 위치하면서 가장 빠른 속도로 접근이 가능하게끔 설계되어있는 메모리입니다. 여러가지 레지스터의 종류 프로그램 카운터, 프로그램 계수기 다음번에 실행할 명령어의 번지를 기억하는 레지스터로 분기 명령이 실행되는 경우 그 목적지 주소로 갱신됩니다. 명령 레지스터 현재 실행중인 명령의 내용을 기억하는 레지스터 입니다. 누산기 연산된 결과를 일시적으로 저장하는 레지스터로 연산의 중심이 되는 레지스터입니다. 상태 레지스터(Statu..

[H/W] 중앙처리장치(CPU)란 무엇인가? CPU의 구조 총정리 [내부링크]

중앙처리장치란? 중앙처리장치(CPU: Central Processing Unit)는 사람의 두뇌와 같이 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치입니다. 중앙 처리장치는 제어장치, 연산장치, 레지스터 그리고 이들을 연결하여 데이터를 전달하는 버스로 구성되어 있습니다. 중앙처리장치의 대표적인 구성장치 제어장치 제어장치(Control Unit)는 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치입니다. 제어장치는 명령 레지스터에서 읽어들인 명령어를 해독하여 해당하는 장치에게 제어 신호를 보내 정확하게 수행하도록 지시합니다. 제어장치의 구성요소 명령 레지스터 : 현재 실행중인 명령어의 내용을 기억하고 있습니다. 명령 해독기(Decoder) : 명령 레지스터에 있는 명령어..

[내돈내산] 착용감 좋은 무선 헤드폰 추천 커세어 보이드 프로 사용후기 [내부링크]

자취방에서 아무래도 방음이 완벽하지는 못해 영화나 미디어를 시청하고 있자면 시끄러운 사운드가 굉장히 신경쓰이는데요. 그래서 영화나 미디어를 시청하거나 음악을 감상할때는 제가 원하는 사운드의 크기로 소리를 높여서 시청할 수 없었습니다. 하지만 무선 헤드폰 하나만 있으면 이러한 문제를 완벽히 해결해 줄 수 있습니다. 저도 얼마전 이러한 문제때문에 무선 헤드폰을 하나 구입했습니다. 제품명은 CORSAIR VOID PRO RGB WIRELESS 입니다. ※ 커세어 보이드 프로는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 커세어 보이드프로 개봉기 커세어 보이드 프로가 배송되었습니다. 저는 RGB모델을 구입하였습니다. 저는 노란색 색감이 너무 예뻐서 RGB모델을 선택하게 되었습니다. RGB와 다른 모델의 ..

[내돈내산] 침대나 소파에서도 컴퓨터 사용을 가능하게 해주는 커세어 랩보드(K63용) 사용후기 [내부링크]

혹시 소파나 침대위에서 키보드나 마우스를 사용해야 할 일이 있으신가요? 저는 주말만 되면 침대에서 못벗어나는 지박령이 되는지라 침대 위에서 컴퓨터를 할때가 많은데요. 하지만 아무리 무선 마우스, 무선 키보드를 사용한다고 해도 바닥이 평평하지가 않아 컴퓨터를 사용하기에 무척이나 불편하였습니다. 하지만 이번에 커세어 랩보드라는 제품을 구매하면서 침대위에서도 키보드와 마우스를 사용하기 매우 편리해졌습니다. 커세어 랩보드라는 제품은 다른말로 이동식 장패드라고도 말할 수 있을거 같아요. ※ 커세어 랩보드는 아래 링크에서 쿠팡 최저가로 구매하실 수 있습니다. 커세어 K63전용 랩보드 개봉기 커세어 K63전용 랩보드가 도착하였습니다. 상자는 위 사진 처럼 생겼습니다. 크기가 생각보다 크더군요. 그리고 무게도 생각보다..

[Network] X.25란 무엇인가? [내부링크]

X.25란 무엇인가? X.25는 DTE(데이터 터미널 장치, Data Terminal Equipment)와 DCE(데이터 회선 종단장치, Data Circuit-terminating Equipment)간의 인터페이스를 제공하는 프로토콜로 통신을 원하는 두 단말장치가 패킷 교환망을 통해 패킷을 원활히 전달하기 위한 통신 절차입니다. X.25는 ITU-T에서 제정(1976년 승인)한 국제 표준 프로토콜로, 우수한 호환성을 가집니다. 연결형 프로토콜로 흐름제어, 오류 제어 등의 기능이 있습니다. 강력한 오류 체크 기능으로 신뢰성이 높습니다. 한 회선에 장애가 발생하더라도 정상적인 경로를 선택하여 우회 전송이 가능합니다. 디지털 전송을 기본으로 하므로 전송 품질이 우수합니다. 가상회선방식을 이용하여 하나의 물리..

[Network] OSI의 7계층 총 정리 [내부링크]

OSI 참조 모델이란? OSI(Open System Interconnection) 참조모델은 다른 시스템 간의 원활한 통신을 위해 ISO(국제표준화기구)에서 제안한 통신 규약(Protocol)입니다. 개방형 시스템(Open System)간의 데이터 통신 시 필요한 장비 및 처리 방법등을 7단계로 표준화하여 규정하였습니다. OSI참조 모델의 목적 서로 다른 시스템 간을 상호 접속하기 위한 개념을 규정합니다. OSI 규격을 개발하기 위한 범위를 정합니다. 관련 규정의 적합성을 조절하기 위한 공통적 기반을 제공합니다. OSI 참조 모델의 기본원칙 적절한 수의 계층으로 나누어 시스템의 복잡도를 최소화합니다. 서비스 접점의 경계를 두어 상호 작용이 적어질 수 있도록 합니다. 프로세스나 기술적인 면에서 명백히 다른..

[Network] 통신 프로토콜이란 무엇인가? [내부링크]

통신 프로토콜의 개념 통신 프로토콜(Communication Protocol)은 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약입니다. 통신 프로토콜은 통신을 제어하기 위한 표준 규칙과 절차의 집합으로 하드웨어와 소프트웨어, 문서를 모두 규정하는 말입니다. ※ 통신 프로토콜의 기본 요소 구문(Syntax) : 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨등을 규정 의미(Semantics) : 두 기기 간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정 시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정 통신프로토콜의 기능 단편화와 재결합 송신 측에서 전송할 데이터를 전송에 알맞은 일정 크기의..

[Network] 여러가지 네트워크 장비종류 [내부링크]

허브 허브(Hub)는 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치로, 각 회선을 통합적으로 관리하며, 신호 증폭 기능을 하는 리피터의 역할도 포함합니다. 리피터 리피터는 전송되는 신호가 전송 선로의 특성 및 외부 충격 등의 요인으로인해 원래의 형태와 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송하는 역할을 수행합니다. OSI 참조 모델의 물리 계층에서 동작하는 장비입니다. 근접한 네트워크 사이에 신호를 전송하는 역할로, 전송 거리의 연장 또는 배선의 자유도를 높이기 위한 용도로 사용합니다. 브리지 브리지(Bridge)는 LAN과 LAN을 연결하거나 LAN안에서의 컴퓨터 그룹(세그먼트)을 연결하는 기능을 수행합니다. 데이터 링크중 MAC계층에서 사용되므로 MAC브리지라고도 ..

[Network] 인터넷(Internet)이란 무엇인가? [내부링크]

인터넷이란? 인터넷(Internet)이란 TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망입니다. 인터넷의 특징 인터넷은 유닉스 운영체제를 기반으로 합니다. 통신망과 컴퓨터가 있는 곳이라면 시간과 장소에 구애받지 않고 정보를 교환할 수 있습니다. 인터넷에 연결된 모든 컴퓨터는 고유한 IP를 가지고 있습니다. 컴퓨터 또는 네트워크를 서로 연결하기 위해서는 브리지, 라우터, 게이트웨이가 사용됩니다. 다른 네트워크 또는 같은 네트워크를 연결하여 그 중추적 역할을 하는 네트워크로 보통 인터넷의 주가 되는 기간망을 일컫는 용어를 백본(Backbone)이라고 합니다. 인터넷 서비스 인터넷 서비스는 TCP/IP의 응용계층에서 제공하며, 중요 인터넷 서비스는 다음..

[Network] ISDN(종합 정보 통신망)이란 무엇인가? [내부링크]

IDSN이란? ISDN(종합 정보 통신망, Integrated Service Digital Network)은 음성, 문자, 화상등의 다양한 통신 서비스를 하나의 디지털 통신망을 근간으로 종합적으로 제공할 수 있도록 통합한 것입니다. IDSN의 특징 통신 방식 및 전송로가 모두 디지털 방식입니다. 단일 통신망으로 음성, 문자, 영상 등의 다양한 서비스를 종합적으로 제공합니다. 고속 통신이 가능하며, 확장성과 재배치성이 좋습니다. 두개 이상의 단말 장치를 제어할 수 있기 때문에 동시에 복수 통신이 가능합니다. 통신망의 중복 투자를 피할 수 있어 경제적입니다. OSI 참조 모델의 계층 구조를 따릅니다. 64kbps 1회선 교환 서비스가 기본입니다. 통신망의 교환 접속 기능에는 회선 교환방식과 패킷 교환방식이 ..

[Network] VAN(부가 가치 통신망)이란 무엇인가? [내부링크]

VAN(부가 가치 통신망)의 개념 VAN(부가 가치 통신망, Value Added Network)은 공중 통신 사업자로부터 통신 회선을 임대하여 하나의 사설망을 구축하고 이를 통해 정보의 축적, 가공, 변환 처리등 부가 가치를 첨가한 후 불특정 다수를 대상으로 서비스를 제공하는 통신망을 뜻합니다. VAN의 출현 배경 정보통신 기술의 발달 정보에 대한 수요 증대 사무 및 공장 자동화 기술의 발달 VAN의 특징 불특정 다수의 대상으로 서비스를 제공 패킷 교환망을 이용한 교환 서비스 기업 간 전산망(EDI)등과 공통적 특성을 가진다. VAN의 계층구조 전송 기능(기본 통신 계층) : 사용자가 단순히 정보를 전송할 수 있도록 물리적 회선을 제공하는 VAN의 가장 기본적인 기능입니다. 교환 기능(네트워크 계층) ..

[Network] LAN(근거리 통신망)이란 무엇인가? [내부링크]

LAN이란 무엇인가? LAN(근거리 통신망)은 광대역 통신망과는 달리 학교, 회사, 연구소 등 한 건물이나 일정 지역 내에서 컴퓨터나 단말기들을 고속 전송 회선으로 연결하여 프로그램 파일 또는 주변장치를 공유할 수 있도록 한 네트워크 형태입니다. LAN의 특징 단일 기관의 소유, 제한된 지역 내의 통신입니다. 광대역 전송 매체의 사용으로 고속 통신이 가능합니다. 공유 매체를 사용하므로 경로 선택 없이 매체에 연결된 모든 장치로 데이터를 전송합니다. 오류 발생률이 낮습니다. 네트워크에 포함된 자원을 공유합니다. 네트워크의 확장이나 재배치가 쉽습니다. 전송매체로 꼬임선, 동축 케이블, 광섬유 케이블들을 사용합니다. 망의 구성 형태에 따라서 성형, 버스형, 링형, 계층형으로 분류할 수 있습니다. LAN의 이용..

[Network] 네트워크란 무엇인가? 네트워크의 정의와 종류 총정리 [내부링크]

네트워크란 무엇인가? 네트워크는 Net + Work 의 합성어로써 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태를 의미합니다. 좀더 쉽게 말하자면 "두 대 이상의 컴퓨터들을 연결하고 서로 통신(이야기)할 수 있는 것" 이것이 바로 네트워크 입니다. 누구는 네트워크의 정의를 이렇게 내립니다. '어떤 연결을 통해 컴퓨터의 자원을 공유하는 것'이라고 말이죠. IEEE(Institute of Electrical and Electronics Engineers:국제 전기 전자 공학회)에서는 네트워크를 다음과 같이 정의 하였습니다. "몇 개의 독립적인 장치가 적절한 영역내에서 적당히 빠른 속도의 물리적 통신 채널을 통하여 서로가 직접 통신할 수 있도록 지원해 주는 데이타 통신 체계"라고 말입니다...

[내돈내산] 가성비 좋은 전동칫솔 샤오미 수케어 사용후기 [내부링크]

안녕하세요 요즘들어 전자제품에 부쩍 관심이 많아진 코딩팩토리입니다. 오늘도 자취방에 하나쯤은 있으면 좋을만한 아이템을 가지고 왔습니다. 바로 전동칫솔입니다. 제품명은 샤오미 수케어 청춘판이라는 제품인데요. 지금 시중에 나와있는 제품들중에서 가장 가성비가 좋은 전동칫솔이라고 생각됩니다. 전동칫솔은 현대인이라면 하나쯤은 있으면 좋을 아이템입니다. 일반 칫솔의 경우 칫솔질을 하기 힘든 공간이 많습니다. 특히 윗니 그중에서도 어금니쪽과 입안쪽의 치아를 닦기는 힘든데요 하지만 전동칫솔을 사용하게되면 칫솔질이 필요없이 그냥 가져다 대기만 하고 있어도 플라그가 제거되기때문에 매우 편리합니다. 전동칫솔에는 두가지 종류의 방식이 있습니다. 칫솔모 자체가 회전하는 회전식이 있고 칫솔의 미세진동으로 인해 플라그를 제거하는 ..

[제품리뷰] 여러가지 매트리스 종류와 차이점(스프링 vs 메모리폼 vs 라텍스) [내부링크]

좋은 수면을 위해서는 좋은 잠자리가 있어야 합니다. 잠자리는 힘든 하루 일과를 마치고 내일을 준비할 수 있도록 하는 휴식공간이므로 현대인에게는 매우 중요한 공간입니다. 항상 시간에 쫓겨 잠이 부족한 현대인들에게는 수면만큼은 돈을 투자해 수면의 질을 향상하는 것도 좋은 선택인 듯합니다. 저도 얼마 전 침대를 바꾸고 난 후 수면의 질이 상당히 개선되었답니다. 좋은 잠자리를 위해서는 침대 매트리스의 질이 매우 중요한데요 이번 포스팅에서는 여러 가지 종류의 침대 매트릭스의 종류와 차이점에 대해 알아보고 나에게 맞는 침대 매트리스를 고르는 방법에 대해 같이 고민해보도록 합시다. [제품리뷰] 가성비 좋은 자취방 모션베드 세진 침대 베리 모션베드 구매후기 좋은 매트릭스 교체시기 그렇다면 매트리스는 언제 바꾸는 것이 ..

[내돈내산] 가성비좋은 자취방 모션베드 세진침대 베리 모션베드 사용후기 [내부링크]

보통 첫 자취방은 경제적인 상황을 고려하여 원룸 크기로 계약을 합니다. 이렇게 계약한 원룸 사이즈의 방은 굉장히 비좁습니다. 가구도 공간을 적게 차지하는 것들 위주로 배치하는데요. 그래서 침대를 두고 싶어도 침대 프레임까지 포함하지 않고, 매트리스만 두는 경우가 많습니다. 하지만 이렇게 매트리스만 둔다면 잠자는 공간과 생활 공간 등이 구분되지 않아 숙면을 쉽게 취할 수 없는 것은 물론이고, 항상 깨끗해야 할 잠자리가 바닥과 가까워 쉽게 더러워지기 쉽상입니다. 그렇기에 매트리스만 놓지 말고 침대 프레임을 함께 비치하는 것이 좋다고 생각합니다. 그리고 요즘 침대는 잠을 자는공간만은 아닙니다. 침대에서 컴퓨터도하고, TV도보고, 책도읽고, 공부도하고... 저같은 집돌이들에게는 집에 있을때 대부분의 시간을 침대..

[제품리뷰] 기계식 키보드 종류와 차이점 총정리(청축, 적축, 갈축, 흑축) [내부링크]

저는 기계식 키보드를 PC방에서 처음 접했습니다. 저는 당시 가장 널리 보급된 멤브레인방식의 키보드밖에 사용한적이 없었는데 그 PC방 기계식 키보드의 딸각 거리는 타건감이 너무 좋더군요. 이 타건감은 기계식 키보드가 어떤 스위치 축을 사용하느냐에 따라 다릅니다. 기계식 키보드의 작동 축 방식은 대표적으로 청축, 갈축, 적축, 흑축 등이 있습니다. 오늘은 기계식 키보드의 작동 스위치축에 대해 알아보도록 하겠습니다. 청축, 갈축, 적축, 흑축의 작동원리와 차이점 2014년 기계식 키보드의 스위치축의 특허를 보유하고있던 독일의 체리사의 특허보유 기간이 만료되어 누구나 로열티 없이 비교적 싼 값에 기계식 키보드를 사용할 수 있게되었습니다. 거기에다 기계식 키보드의 LED 불빛, 특유의 타건감을 토대로 유행을 타..

[내돈내산] 무선 기계식 키보드 커세어 k63 Wireless(적축) 사용후기 [내부링크]

오늘은 이전에 구입한 모니터와 무선 마우스에 이어 기계식 무선 키보드 커세어 k63 Wireless(적축)의 구매후기를 포스팅하겠습니다. [제품리뷰] LG 울트라 와이드 모니터 34uc98 리얼 후기 [제품리뷰] 무선 게이밍 마우스 커세어 다크코어(DarkCore) 구매 후기 커세어 k63 Wireless를 선택한 이유 1. 새로운 키보드 구매 목적은 노트북에서 멀리 떨어진 장소에서 타이핑을 하기 위해서 입니다. 그러므로 연결선이 필요하지 않은 무선 키보드 위주로 선정하였습니다. 2. 기계식 키보드를 사고싶었습니다. 키보드의 꽃은 기계식 키보드 아니겠습니까?? ㅎㅎ 이왕사는거 기계식 키보드를 구매하여 타이핑할때 그 탱탱한 타건감을 느껴보고 싶었습니다. 3. 기계식 키보드의 입력방식 중 적축을 사고싶었습니..

[내돈내산] 무선 게이밍 마우스 커세어 다크코어(DarkCore) 사용후기 [내부링크]

얼마전 좀 더 넓은 화면에서 작업과 영화를 보고싶어 LG 울트라 와이드 모니터 34uc98 를 구매했었습니다. 정말 좋더군요. 드디어 좀 더 멀리서 큰 화면으로 제 취미생활을 즐길 수 있게 되었습니다. 그리고 좋은 모니터를 샀으니 키보드와 마우스도 최고급으로 사고싶어졌습니다. 지름신하고의 접신은 끝이없나 봅니다 ^^;; 구글링을 조금 해보니 커세어 제품이 그렇게 좋다더군요. 허세어라고.... 저도 허세한번 부려보고 싶었습니다. 그래서 커세어 무선 기계식 키보드와 마우스를 지름지름 했습니다. 이번달은 저축은 정말 얼마 못할거같아요... 완전 망했습니다. 하지만 후회하지는 않습니다! 저는 행복을 얻었으니까요!! 마우스는 기존에 로지텍 무선 마우스를 나쁘지 않게 사용하고 있었지만 이번에 커세어 키보드를 사면서..

[내돈내산] LG 울트라 와이드 모니터 34uc98 사용후기 [내부링크]

지금까지 저는 유튜브나 넷플릭스같은 영상을 시청할때 테이블에 노트북 받침대를 올려놓고 그 위에 노트북을 거치고 누워서 영상을 시청했었는데요. ↑이게 바로 저의 영상시청 모습이랍니다. 하지만 이렇게 영상을 시청할 경우 모니터와 거리가 너무 가까워 시력이 안좋아지는 느낌에 테이블때문에 움직임이 제한되어 허리도 아프고.. 이렇게 몇년간 더 생활하다가는 몸이 다 망가지겠다고 생각되어 대형 모니터 구입을 결심하게 되었습니다. LG 울트라 와이드 모니터 34uc98을 선택한 이유 1. 일단 모니터 구매목적이 침대에 누워서 유튜브나 넷플릭스 같은 영상을 시청하는 것이였기에 무조건 대형 디스플레이를 가지고 있는 모니터를 사야만 했어요. 하지만 제 자취방의 테이블 크기가 그렇게 큰편이 아니라 무작정 큰 디스플레이는 살 ..

[제품리뷰] 전자제품 효율적으로 사는 나만의 노하우 [내부링크]

사람들은 대부분 전자제품을 살때 고려하는 방향이 두가지가 있는것 같습니다. 바로 가성비로 갈것이냐, 프리미엄으로 갈것이냐입니다. 가성비를 추구하시는 분은 가격에 중점을 두어 저렴한 제품이지만 비교적 좋은 성능을 가진 제품을 구매합니다. 구매 프로세서는 성능 선택 -> 제품 선택 -> 가격 비교 -> 구매 이렇게들 많이 사시죠. 프리미엄을 추구하시는 분은 성능에 중점을 두어 가격은 좀 비쌀지라도 좋은 성능의 전자제품을 사고자 하는 경향이 있습니다. 구매 프로세서는 브랜드선택 -> 제품선택 -> 가격비교 -> 구매 이렇게 됩니다. 저는 둘중에 후자입니다. 개인적으로 옷은 보세를 사더라도 전자제품은 꼭 가장 좋은것을 사고자하는 욕구(?)가 있습니다. 프리미엄 제품을 좋아합니다. 다른건 몰라도 전자제품만은 브랜..

[Web] base64 인코딩 / 디코딩 해주는 프로그램 공유 [내부링크]

이미지를 base64로 인코딩 / 디코딩 시켜주는 프로그램입니다. 아래 압축파일을 다운받으시면 사용하실 수 있습니다. 혹여나 윈도우에서 열람을 거부한다는 메시지가 떠도 그냥 무시하시고 실행시켜주시면 됩니다. 악성코드 없습니다. 프로그램 설명서 1. 데이터로 변환 : 이미지를 base64로 인코딩 시켜줍니다. 2. 이미지로 변환 : base64로 인코딩 된 아스키코드를 이미지화 시켜 보여줍니다. 3. PNG로 저장 : base64로 인코딩 된 아스키코드를 PNG형식으로 저장합니다.

[Network] 클라이언트 서버 시스템이란 무엇인가? [내부링크]

클라이언트 / 서버 시스템이란? 서버 클라이언트 시스템이란 위 사진과 같이 여러개의 클라이언트가 네트워크 통신을 활용해 서버에 접속을 하고 그 서버와 붙어있는 데이터베이스를 활용할 수 있는 시스템을 말합니다. 서버는 데이터베이스를 저장하고 DBMS를 운영하면서 여러 클라이언트에서 온 질의를 최적화, 권한 검사를 수행, 동시성제어, 회복기능, 무결성, 접근을 관리하고 클라이언트는 사용자 인터페이스를 관리하고 응용들을 수행합니다. 클라이언트는 서버와 동일한 디바이스 일 수도 있지만 대부분 서비스를 사용하고자 하는 사용자가 지니고 있는 인터넷이 가능한 모든 디바이스를 클라이언트라고 지칭합니다. 이렇게 하면 하드웨어 비용을 획기적으로 줄일 수 있습니다. 그리고 전세계 어디에서든지 접속이 가능한 인터넷이라는 매체..

[C++] 객체지향 언어의 5가지 특징 [내부링크]

객체지향 기법의 특징은 크게 5가지가 있습니다. 캡슐화, 정보은닉, 추상화, 상속성, 다형성이 바로 그것이며 이중 구조적 기법과 차별되는 개념은 캡슐화, 상속성, 다형성 입니다. 객체지향 언어의 5가지 특징 캡슐화(Encapsulation) 캡슐화는 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶은 것을 의미합니다. 1. 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급 효과가 적습니다. 2. 캡슐화된 객체들은 재사용이 용이합니다. 3. 객체들 간의 메시지를 주고받을 떄 각 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체간의 결합도가 낮아집니다. 정보은닉(Information Hiding) 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자..

[C++] 객체지향 프로그래밍이란 무엇인가? [내부링크]

객체지향 기법이란? 객체지향 기법은 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있도록 하는 기법입니다. 1. 객체 지향 기법은 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되어 사용되고 있습니다. 2. 소프트웨어의 재사용 및 확장을 용이하게 함으로써 고품질의 소프트웨어를 빠르게 개발할 수 있으며 유지보수가 쉽습니다. 3. 복잡한 구조를 단계적, 계층적으로 표현하고, 멀티미디어 데이터 및 병렬 처리를 지원합니다. 4. 현실세계를 모형화 하여 사용자와 개발자가 쉽게 이해할 수 있습니다. 5. 객체지향 기법의 구성요소에는 객체(Object), 클래스(..

[Windows] 컴퓨터(윈도우) 자동종료 / 예약종료 하는법 [내부링크]

윈도우에는 컴퓨터를 일정시간 뒤에 종료하는 방법이 있습니다. 저는 윈도우 자동종료를 아주 많이쓰는데요. 사실 회사에서 컴퓨터를 끄고 퇴근하면 눈치가보여 1시간뒤에 자동종료를 시켜놓고 퇴근하는 편입니다.... ㅎㅎㅎ 아주 간단한 방법 아래에서 소개하겠습니다. 컴퓨터(윈도우) 자동종료/예약종료 하는법 1. Windows키 + R을 클릭하셔서 실행창을 엽니다. 그런뒤 CMD라고 입력하셔서 CMD창을 띄워주세요. 2. 그런뒤 shutdown -s -t 종료할 초를 입력하면 됩니다. 사진에서처럼 3600을 입력하면 3600초(1시간)뒤에 컴퓨터가 자동종료 되겠네요. 3. 설정이 제대로 되었으면 로그오프하려고 한다는 알림창이 뜹니다. 4. 예약종료를 취소하는 방법은 CMD창에 shutdown -a를 입력하시면됩니다..

[Windows] 윈도우 업데이트 멈춤현상 해결하기 [내부링크]

윈도우 업데이트를 하다보면 특정 퍼센트에서 더이상 진도가 안나가는 경우가 있습니다. 몇시간을 기다려도 마찬가지일때는 뭔가 잘못되었다는 생각이 드는데요. 저도 몇번을 껏다켜도 계속 업데이트가 멈추는 현상이 나서 고생을 많이했습니다. 하지만 결국에는 해결하기는 했습니다. 그 해결방법! 이번 포스팅에서 공유해보려 합니다. 윈도우 업데이트 멈춤현상 해결하기 1. CMD창을 켠뒤(관리자모드로 실행시켜야 합니다. net stop wuauserv라는 명령어를 입력하여 백그라운드에서 돌아가고 있는 Winodws Update 서비스를 중지시켜줍니다. 2. cd\Windows라고 입력하여 Windows폴더로 들어가주세요. 3. rd/s SoftwareDistribution이라고 입력한뒤 계속하겠냐는 메시지가 나오면 Y를 ..

[Windows] 윈도우 자동 업데이트 끄기 / 중지하기 [내부링크]

윈도우 업데이트를 하면 시간이 굉장히 많이 걸립니다. 만약 이렇게 시간이 오래걸리는 윈도우 업데이트가 일과시간에 진행된다면 굉장히 곤란하겠죠. 몇시간은 그냥 꼼짝없이 날리게 됩니다. 하지만 윈도우 업데이트를 중간에 취소할 수도 없게 되어있더라구요. 하지만 윈도우 업데이트를 중지시키는 방법이 없는것은 아닙니다. 백그라운드에서 돌아가는 윈도우 업데이트 서비스를 강제로 종료시키면 윈도우 업데이트를 중지됩니다. [Windows] 윈도우 자동 업데이트 도중 취소하기 1. 찾기 -> 서비스를 입력하시어 서비스 창에 들어간 뒤 Windows Update를 찾습니다. 2. Windows Update 서비스를 중지시키고 확인을 누르시면 윈도우 업데이트가 중지됩니다. ※ 추가적으로 윈도우 업데이트가 실행되지 않게끔 하고 ..

[Windows] 윈도우 최신상태로 수동 업데이트 하기 [내부링크]

완벽해보이는 윈도우도 사실 그렇지 않습니다. 그래서 윈도우는 계속해서 여러가지 문제점을 보안하기 위해 패치파일을 내고있습니다. 윈도우는 최신버전으로 계속해서 유지해주는것이 좋아요. 최신상태의 윈도우가 아니면 호환이 안되는 프로그램도 있구요. 이번 포스팅에서는 윈도우 업데이트를 수동으로 진행하는 방법에 대해 알아보도록 하겠습니다. 윈도우 최신상태로 업데이트 하기 1. 윈도우 업데이트를 하기 위해서는 윈도우 설정창을 열어야 합니다. 시작 -> 설정창(톱니바퀴모양)을 클릭하시거나 단축키 Windows + I 를 입력하셔서 설정창을 실행시킵니다. 2. 윈도우 설정창에서 업데이트 및 보안 버튼을 클릭합니다. 3. 윈도우 업데이트 확인 버튼을 누르시고 최신버전이 아니라면 업데이트를 하시면 됩니다.

[Windows] 윈도우10 (Windows 10) 단축키 정리 [내부링크]

Windows 10 자주쓰는 단축키 모음 1. Ctrl + W = 현재 창 닫기 2. Ctrl + A = 전체 선택 3. Ctrl + T = 새로운 웹 페이지 열기 4. Ctrl + Shift + Esc = 작업 표시줄 열기 1. Windows Key + X = 간소화 메뉴 창 열기 2. Windows Key + W = 메모지, 스케치북, 화면스케치 선택 창 열기 3. Windows Key + E = 탐색기 열기 4. Windows Key + R = 실행 창 열기 5. Windows Key + D = 바탕화면으로 가기 6. Windows Key + P = 듀얼모니터 설정 7. Windows Key + A = 알림창 확인 8. Windows Key + L = PC 잠금 9. Windows Key + U =..

[Windows] 최근에 사용한 파일 목록 제거 & 목록 안나오게 하는방법 [내부링크]

윈도우 탐색기를 열면 최근에 사용한 파일 목록들이 나오는데요. 내가 시간에 따라 어떤 작업을 했는지 한눈에 확인이 가능하여 매우 편리합니다. 하지만 만약 컴퓨터를 내가 아닌 다른사람이 보았을경우 뭔가 찝찝(?)한 느낌을 받을 수 있어요. 이번 포스팅에서는 최근에 사용한 파일 목록을 제거하는 방법과 목록이 아예 안나오게 하는 방법에 대해 알아보도록 하겠습니다. 최근에 사용한 파일 목록 제거 & 목록 안나오게 하는방법 1. 탐색기 왼쪽 트리에 보시면 바로가기라는 아이콘이 있습니다. 이 아이콘을 마우스 우클릭 -> 옵션을 클릭해주세요. 2. 최근에 사용한 파일 목록을 제거하시려면 1번 박스에 보이는 체크박스 두개를 선택하고 지우기 버튼을 누르면 됩니다. 또 목록이 안 쌓이게끔 하고 싶다고 하시면 1번에 있는 ..

[Windows] 윈도우 복구 / 복원 이전시점으로 되돌리기 [내부링크]

컴퓨터를 사용하다보면 불필요한 프로그램이 설치되거나 특정 시점 이후로 컴퓨터가 매우 느려지는 현상이 발생할 때가 있습니다. 이 경우 문제점을 찾아서 해결하는것 보다는 그냥 윈도우 자체를 문제가 있었던 시점 이전으로 되돌리는것이 더 나은데요. 이번 포스팅에서는 복구드라이브를 통하여 윈도우를 이전시점으로 복원하는 방법에 대해 알아보도록 하겠습니다. 윈도우 복구 / 복원 이전시점으로 되돌리기 1. 시작 -> 찾기에서 복원이라는 키워드를 검색하여 복원 지점 만들기를 클릭합니다. 2. 시스템 복원을 클릭합니다. 3. 복원 마법사가 나오는군요. 다음을 눌러줍니다. 4. (1번)추가 복원지점을 눌러 최대한 많은 복원지점을 표시해준 뒤 (2번)자신이 원하는 지점을 클릭하고 (3번)영향을 받는 프로그램 검색 버튼을 눌러..

[Linux] 리눅스란 무엇인가? (센토스 VS 우분투) [내부링크]

리눅스란? 리눅스(Linux)는 리누스 토르발스가 커뮤니티 주체로 개발한 컴퓨터 운영 체제입니다. 리눅스(Linux)는 UNIX운영체제를 기반으로 만들어진 운영체제 입니다. 리눅스(Linux)는 유닉스(UNIX)와 마찬가지로 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)입니다. 리눅스의 원형이 되는 UNIX가 애초부터 통신 네트워크를 지향하여 설계된것처럼 리눅스 역시 서버로 작동하는데 최적화되어있습니다. 고로 서버에서 사용되는 운영체제로 많이 사용되고 있습니다. 리눅스의 특징 1. 리눅스는 유닉스와 완벽하게 호환가능합니다. 2. 리눅스는 공개 운영체제입니다. 오픈소스이므로 누구든지 자유롭게 수정이 가능합니다. 3. 리눅스는 PC용 OS보다 안정이며 보안쪽면에서..

[Windows] 윈도우이란 무엇인가? 윈도우의 여러가지 특징들 [내부링크]

Windows란? 윈도우는 마이크로소프트사가 개발한 운영체제로 애플이 개인용 컴퓨터에 처음으로 도입한 그래픽 사용자 인터페이스(GUI) 운영 체제인 맥 OS에 대항하여, 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었습니다. 현재 전 세계 90%의 개인용 컴퓨터에서 쓰고 있으며, 서버용 운영 체제로도 점차 영역을 넓혀 나가고 있습니다. 윈도우 운영 체제의 경우 큰 시장 점유율을 차지하고 있는 까닭에 일반 사용자들에게 매우 익숙할뿐 아니라 호환되는 유명한 응용 프로그램이 많다는 장점을 지니고 있지만, 그만큼 보안 문제에서는 취약한 부분이 많은 운영 체제로 인식되기도 합니다. 하지만 사실 보안문제에선 취약한 부분이 다른 운영체제와 차이날 정도로 독보..

[OS] MS-DOS란 무엇인가?(MS-DOS총정리) [내부링크]

MS-DOS의 특징 MS-DOS는 마이크로소프트사에서 개발한 것으로, Windows 이전에 사용되던 운영체제이며 아래와 같은 특징이 있습니다. 1. CUI(문자중심의 사용자 인터페이스) : 작업을 위한 실행 명령을 문자로 직접 입력하여 실행시킵니다. 2. Single-User : 하나의 컴퓨터를 한 사람만이 사용합니다. 3. Single-Tasking : 한번에 하나의 프로그램만을 수행합니다. 4. 파일시스템의 디렉터리 구조는 트리 구조입니다. MS-DOS의 파일시스템 시스템 파일(System File) 시스템 파일은 MS-DOS의 핵심 파일로 주변장치의 입출력과 시스템 전체를 통제합니다. 부팅시 반드시 필요하며, 부팅 후 메모리에 항상 적재되어 있습니다. 시스템파일에는 MSDOS.SYS와 IO.SYS가..

[OS] UNIX란 무엇인가? (UNIX 총정리) [내부링크]

UNIX의 특징 UNIX는 주로 서버용 컴퓨터에서 사용되는 운영체제로 아래와 같은 특징이 있습니다. 1. 시분할 시스템(Time Sharing System)을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템입니다. 2. 대부분 C언어로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높습니다. 3. 크기가 작고 이해하기가 쉽습니다. 4. 다중 사용자, 다중 작업을 지원합니다. 5. 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합합니다. 6. 트리구조의 파일 시스템을 가지고 있습니다. 7. 전문적인 프로그램 개발에 용이합니다. 8. 다양한 유틸리티 프로그램들이 존재합니다. UNIX 시스템의 구성 커널(Kernel) Unix의 가장 핵심적인 부분입니다. 컴퓨터가 부팅될..

[OS] 운영체제 문서 보안 시스템 (암호화 복호화) [내부링크]

암호화 기법 암호화(Encryption)는 데이터를 보낼 때 송신자가 지정한 수신자 이외에는 그 내용을 알 수 없도록 평문을 암호문으로 변환하는 것이고, 복호화(Decryption)는 암호화된 데이터를 원래의 평문으로 복구하는 것을 의미합니다. 암호화 기법에는 비밀키 암호화 기법과 공용키 암호화 기법이 있습니다. 비밀키 암호화 기법 1. 동일한 키로 데이터를 암호화하고, 해독(복호화)하는 대칭 암호화 기법입니다. 2. 해독키를 아는 사람은 누구든지 암호문을 해독할 수 있으므로 해독키의 비밀성을 유지하는 것이 중요합니다. 3. 암호화/복호화 속도가 빠르며 알고리즘이 단순하고 파일의 크기가 작습니다. 4. 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아지고 키의 분배가 어렵습니다. 5. 비밀키 ..

[OS] 운영체제의 여러가지 보안기법 [내부링크]

운영체제 보안 보안은 컴퓨터 시스템 내에 있는 프로그램과 데이터에 대하여 통제된 접근 방식을 어떻게 제공할 것인가를 다루는 것입니다. 물리적 환경적 취약점을 이용한 침입, 방해, 절도 등의 행위로부터 컴퓨터 시스템내의 자원을 보호하고 대응하기 위한 일련의 정책과 행위를 말하는데요. 컴퓨터 시스템에 의해 정의된 자원에 대하여 프로그램, 프로세스 또는 사용자의 허용된 권한 외에는 접근을 제한하여 자원의 손상 및 유출 등을 방지하는 기법입니다. 보안 유지 기법 외부 보안(External Security) 외부 보안에는 컴퓨터 시스템의 물리적 보안을 위한 시설 보안과 운용자의 정책을 통한 시설 보안이 있습니다. 시설 보안 : 천재지변이나 외부 침입자로부터의 보안을 의미하는 것으로, 연기나 열을 감지하고 사람의 ..

[OS] 운영체제에서 기억장치를 관리하는 방법 [내부링크]

기억장치 계층 구조의 특징 기억장치는 레지스터, 캐시 기억장치, 주기억장치, 보조기억장치등이 있습니다. 1. 계층 구조에서 상위의 기억장치일수록 접근 소도와 접근 시간이 빠르지만 기억 용량이 적고 비쌉니다. 2. 주기억장치는 각기 자신의 주소를 갖는 워드 또는 바이트들로 구성되어 있으며, 주소를 이용하여 액세스 할 수 있습니다. 3. 레지스터, 캐시 기억장치, 주기억장치의 프로그램과 데이터는 CPU가 직접 액세스할 수 없습니다. 4. 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스될 수 있습니다. 운영체제의 기억장치의 관리 전략 기억장치의 관리 전략은 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사..

[OS] 교착상태란 무엇인가? [내부링크]

교착상태란? 교착상태(Dead Lock)은 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미합니다. 아래 그림과 같이 자동차(프로세스)들이 현재 위치한 길(자원)을 점유함과 동시에 다른 차가 사용하는 길을 사용하려고 대기하고 있지만 다른 길을 사용할 수 없으며 현재 길에서도 벗어나지 못하는 상태입니다. 교착상태 발생의 필요 충분 조건 교착상태가 발생하기 위해서는 다음의 네가지 조건이 충족되어야 하는데, 이 네가지 조건중 하나라도 충족되지 않으면 교착상태가 발생하지 않습니다. 상호배제(Mutual Exclusion) 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 합니다. 점유와 대..

[OS] 여러가지 프로세서 운영기법들 [내부링크]

병행 프로세스 병행 프로세스는 두개이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미합니다. 1. 여러 프로세스들이독립적으로 실행되는 것을 독립적 병행 프로세스, 서로 협력하며 동시에 실행되는 것을 협동적 병행 프로세스라고 합니다. 2. 병행 프로세스는 다중 처리 시스템이나 분산 처리 시스템에서 중요한 개념으로 사용됩니다. 임계 구역 임계구역은 다중 프로그래밍 운영체제에서 여러개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원을 의미합니다. 1. 임계구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있습니다. 2. 임계 구역은 특정..

[OS] 운영체제 스케줄링이란 무엇인가? [내부링크]

스케줄링이란? 1. 스케줄링은 프로세스가 생성되어 실행될때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 의미합니다. 2. 프로세스가 생성되어 완료될때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 됩니다. 3. 스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있습니다. 장기 스케줄링 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미합니다. 작업 스케줄링, 상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 수행됩니다. 중기 스케줄링 어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업을 의미합니다. CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화해서 일시적으로 부하를 조절합니다..

[OS] PCB란 무엇인가? [내부링크]

PCB란? PCB(프로세스 제어블록)는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로 Task Control Block 또는 Job Control Block이라고도 합니다. 각 프로세스가 생성될 때마다 고유의 PCB가 생성되며 프로세스가 완료되면 PCB는 제거됩니다. PCB에 저장되어 있는 정보 저장정보 설명 프로세스의 현재 상태 준비, 대기, 실행 등의 프로세스 상태 포인터 부모 프로세스에 대한 포인터 : 부모 프로세스의 주소 기억 자식 프로세스에 대한 포인터 : 자식 프로세스의 주소 기억 프로세스가 위치한 메모리에 대한 포인터 : 현재 프로세스가 위치한 주소 기억 할당된 자원에 대한 포인터 : 프로세스에 할당된 각 자원에 대한 주소 기억 프로세스 고유 식별자 프로세스를 구분할 수 있는 ..

[OS] 프로세스란 무엇인가? [내부링크]

프로세스란? 프로세스는 일반적으로 CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램 즉 실행중인 프로그램을 의미하며, 작업(Job) 태스크(Task)라고도 합니다. 프로세스는 다음과 같이 여러 형태로 정의할 수 있습니다. 1. PCB를 가진 프로그램 2. 실기억장치에 저장된 프로그램 3. 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위 4. 프로시저가 활동중인 것 5. 비동기적 행위를 일으키는 주체 6. 지정된 결과를 얻기 위한 일련의 계통적 동작 7. 목적 또는 결과에 따라 발생되는 사건들의 과정 8. 운영체제가 관리하는 실행 단위 ※ 프로시저란? 한 프로그램은 여러개의 작은 프로그램으로 분할될 수 있는데 이떄 분할된 작은 프로그램을 의미하며, 부 프로그램이라고도 합니다. 프로세스 상태 전..

[OS] 링커와 로더란 무엇인가? [내부링크]

절대로더 링커(연결 편집기) 링커는 언어 번역 프로그램이 생성한 목적 프로그램들과 라이브러리 또 다른 실행 프로그램등을 연결하여 실행 가능한 로드 모듈을 만드는 시스템 소프트웨어이며 연결 편집기라고도 합니다. 링커는 연결 기능만 수행하는 로더의 한 형태로, 링커에 의해 수행되는 작업을 링킹이라고 합니다. 로더란 무엇인가? 로더는 컴퓨터 내부로 정보를 들여오거나 로드 모듈을 디스크 등의 보조기억장치로 부터 주 기억장치에 적재하는 시스템 소프트웨어 입니다. 로더의 기능 1. 할당 : 실행 프로그램을 실행시키기 위해 기억장치 내에 옮겨놓을 공간을 확보하는 기능 2. 연결 : 부 프로그램 호출 시 그 부 프로그램이 할당된 기억장소의 시작주소를 호출한 부분에 등록하여 연결하는 기능 3. 재배치 : 디스크등의 보조..

[기타] 매크로 프로그래밍에 대해서 [내부링크]

매크로 프로그래밍의 개념 및 특징 매크로(Macro)는 프로그램 작성 시 한 프로그램 내에서 동일한 코드가 반복 될 경우 반복되는 코드를 한번만 작성하여 특정 이름으로 정의한 후 그 코드가 필요할 때마다 정의된 이름을 호출하여 사용하는 기법입니다. 1. 일종의 부 프로그램(Sub-Program)으로 개방 서브루틴(Poened Sub-routine)이라고도 합니다. 2. 매크로는 문자열 바꾸기와 같이 매크로 이름이 호출되면 호출된 횟수만큼 정의된 매크로 코드가 해당 위치에 삽입되어 실행됩니다. 3. 매크로 정의 내에 또 다른 매크로를 정의할 수 있습니다. 4. 사용자의 반복적인 코드 입력을 줄여줍니다. 5. 매크로 정의형태는 주로 어셈블리어 형태입니다. 매크로 용어 매크로 정의 : 프로그래머가 일정한 형식..

[Assembly] 어셈블리어란 무엇인가? [내부링크]

어셈블리어란? 어셈블리어란 사용자가 이해하기 어려운 기계어 대신에 명령 기능을 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어입니다. 1. 어셈블리어로 작성한 원시 프로그램은 어셈블러를 통해 목적 프로그램(기계어)로 어셈블 하는 과정을 거쳐야 합니다. 2. 사용자가 프로그램을 쉽게 읽고 이해할 수 있습니다. 3. 프로그램에 기호화된 명령 및 주소를 사용합니다. 4. 어셈블리어의 기본 동작은 동일하지만 작성 CPU마다 사용되는 어셈블리어가 다를 수 있습니다. 5. 어셈블리어에서 사용되는 명령은 의사 명령과 실행 명령으로 구분할 수 있습니다. 컴파일 vs 어셈블 고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일(Complie)한다고 하고 어셈블리어로 작성..

[Language] 컴파일러와 인터프리터란 무엇인가? [내부링크]

컴파일러와 인터프리터는 고급언어로 작성된 원시 프로그램(Source Program)을 목적 프로그램(Object Program)으로 번역하는 번역 프로그램이며, 프로그램 번역 방식에 따라 구분됩니다. ※ 원시프로그램 고급언어나 어셈블리어로 작성된 프로그램 컴파일러 1. 컴파일러는 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역한 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성합니다. 2. 번역 실행 과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸리지만, 한번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠릅니다. 3. 컴파일러를 사용하는 언어에는 C언어 Java 등이있습니다. 인터프리터 1. 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로..

[Language] 프로그래밍 언어란 무엇인가? [내부링크]

프로그래밍 언어란? 프로그래밍 언어는 컴퓨터를 이용하여 특정 문제를 해결하기 위한 프로그램을 작성하기 위해 사용되는 언어입니다. 프로그래밍 언어는 일반적으로 저급언어(기계어, 어셈블리어)와 고급 언어(컴파일러 언어) 로 분류할 수 있습니다. 저급 언어 저급언어(Low Level Language)는 기계어와 어셈블리어로 구분됩니다. 기계어 컴퓨터가 직접 이해할 수 있는 언어입니다. 0과 1의 2진수 형태로 표현되며 수행시간이 빠릅니다. CPU에 내장된 명령들을 직접 사용하는 것으로, 프로그램을 작성하고 이해하기가 어렵습니다. 기종마다 기계어가 다르므로 언어의 호환성이 없습니다. 어셈블리어 기계어와 1:1로 대응되는 기호로 이루어진 언어로, 니모닉(Mnemonic) 언어 라고도 합니다. 하드웨어 제어에 주로..

[OS] 다양한 운영체제의 운용기법 종류 [내부링크]

운영체제에는 여러가지 운용기법들이 존재하는데 크게 7가지가 존재합니다. 오늘날 사용하는 OS의 운용기법은 주로 다중 모드 처리 방식과 분산 처리 시스템 방식을 사용합니다. 1. 일괄처리 시스템 일괄 처리 시스템은 초기의 컴퓨터 시스템에서 사용된 형태로, 일정량 또는 일정 기간 동안 데이터를 모아서 한꺼번에 처리하는 방식입니다. 1. 일괄처리를 위해 적절한 작업 제어 언어(Job Control Language)를 제공해야 합니다. 2. 컴퓨터 시스템을 효율적으로 사용할 수 있습니다. 3. 반환시간(Turn Around Time)이 늦지만 하나의 작업이 모든 자원을 독점하므로 CPU 유휴 시간이 줄어듭니다. 4. 급여 계산, 지불 계산, 연말 결산등의 업무에 사용됩니다. 2. 다중 프로그래밍 시스템 다중 프..

[OS] 운영체제란 무엇인가? [내부링크]

운영체제란? 운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임입니다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 줍니다. 운영체제의 종류 운영체제의 종류에는 WIndows 98, Windows10, UNIX, LINUX, MS-DOS등이 있습니다. 단일 작업 처리 시스템에는 DOS, 다중 작업 처리 시스템에는 WINODWS, UNIX, LINUX등이 사용됩니다. 주로 WINDOWS는 개인용 UNIX, LINUX는 서버용 운영체제로 사용됩니다. 운영체제의..

[OS] 시스템 소프트웨어의 개념과 구성 [내부링크]

시스템 소프트웨어 1. 시스템 소프트웨어는 시스템 전체를 작동시키는 프로그램으로, 프로그램을 주기억장치에 적재시키거나 인터럽트 관리, 장치관리, 언어 번역 등의 기능을 담당합니다. 2. 시스템 소프트웨어의 가장 대표적인 프로그램으로 운영체제가 있으며, 그 외에는 언어 번역 프로그램, 매크로 프로세서, 링커, 라이브러리, 정렬/합병 프로그램, 로더 등이 있습니다. 3. 시스템 소프트웨어는 기능별로 제어프로그램과 처리 프로그램으로 분류 할 수 있습니다. 제어프로그램 1. 감시프로그램 2. 작업 제어 프로그램 3. 자료 관리 프로그램 제어 프로그램은 시스템 전체의 작동 상태 감시, 작업의 순서 지정, 작업에 사용되는 데이터 관리 등의 역할을 수행하는 것으로 감시 프로그램과 작업 제어 프로그램으로 구분할 수 있..

[Oracle] 오라클 데이터 타입 변환(TO_CHAR, TO_NUMBER, TO_DATE) 사용법 & 예제 [내부링크]

MYSQL이나 MSSQL에서 대표적인 데이터 타입 변환함수는 CONVERT인데요. 오라클에서는 동작하지 않습니다. 오라클에서 데이터 타입 변경을 하고 싶을때는 CONVERT가 아닌 다른 함수를 사용하여야 합니다. 함수명은 TO_[데이터타입]인데요. 대표적으로 TO_CHAR , TO_NUMBER, TO_DATE 등이 있습니다. TO CHAR (CHAR형으로 변경) --사용법-- SELECT TO_CHAR([컬럼명]) FROM [테이블명] --예제-- SELECT TO_CHAR(10000) FROM DUAL --INT TO CHAR SELECT TO_CHAR(SYSDATE) FROM DUAL --DATE TO CHAR SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL --D..

[Oracle] 편리한 조건함수 DECODE 함수 사용법 & 예제 [내부링크]

오라클에서 조건을 주는 방법은 여러가지가 있습니다. 대표적으로는 CASE문 IF문이 있는데 이런 조건문을 사용하게 되면 쿼리문이 쓸데없이 길어질요소가 존재합니다. 하지만 조건이 동등문(=)일경우에 간단하게 사용할 수 있는 DECODE함수라는것이 있습니다. 이번 포스팅에서는 오라클에서 제공하는 DECODE함수를 통해 간결하게 조건문을 주는 방법에 대해 알아보도록 하겠습니다. 경우에 따라서는 DECODE함수를 중첩해서 쓰거나 서브쿼리와 같이 사용하셔도 됩니다. DECODE함수는 어제 포스팅했었던 NVL함수와 마찬가지로 오라클에서만 존재하는 함수이므로 MY_SQL이나 MS_SQL과의 호환을 염두하신다면 사용을 피하셔야합니다. 사용법 DECODE(컬럼,조건,TRUE 결과값,FALSE 결과값) 예제 --TYPE ..

[Oracle] Null값을 치환해주는 (NVL,NVL2) 함수 사용법 & 예제 [내부링크]

오라클을 사용하다보면 NULL값을 다른 함수로 치환해주어야하는 경우가 많습니다. 이럴경우 오라클에서 제공하는 NVL함수를 써서 쉽게 처리할 수 있는데요. NVL함수는 매우편리하지만 오라클에서만 제공하는 함수이다보니 다른 데이터베이스와의 호환을 염두해둔다면 피해야할 함수이기도 합니다. (이 쿼리로 짜놓고 MY_SQL이나 MS_SQL에서 사용한다면....?? 끔찍합니다. ㅠㅠ) 1. NVL함수 사용법 NVL(컬럼,NULL일경우 반환값) NVL(컬럼,0) -- 컬럼의 값이 NULL일경우 0으로 치환 NVL(컬럼,'') -- 컬럼의 값이 NULL일경우 ''으로 치환 NVL(컬럼,SYSDATE) --컬럼의 값이 NULL일경우 현재날짜로 치환 예제 (COMPANY_NO)가 NULL이면 ''으로 치환 SELECT N..

[Oracle] 소수점 처리 올림,반올림,버림 함수 (CEIL,ROUND,TRUNC) 사용법 & 예제 [내부링크]

오라클 소수점 처리를 할때 유용하게 사용할 수 있는 함수가 3가지가 있습니다. 바로 CEIL, ROUND, TRUNC 인데요. 각각 소수점을 올림, 반올림, 버림 해줄 수 있는 함수입니다. 소수점 올림 (CEIL) --사용법 SELECT CEIL([컬럼])AS [명칭] FROM [테이블명] --자릿수 지정은 없으며 무조건 소수점첫번째에서 올림 --예제 SELECT CEIL(10.423)AS PAY FROM DUAL --결과 : 11 SELECT CEIL(PAY)AS PAY FROM EMP_TABLE SELECT CASE SUM(ERR) WHEN 0 THEN 0 ELSE --0으로 나눌경우 에러가 나기에 예외처리 CEIL(COUNT(MOD)/COUNT(ERR)*100) END AS TEST_PERCENT ..

[Oracle] Union해서 나온 결과 ROW 값 합치기 [내부링크]

가끔 저장된 데이터는 다르지만 테이블 구조는 같은 경우가 있습니다. 이 구조가 같은 테이블을 같이 조회할 경우에는 컬럼이같기에 UNION을 사용하면 굉장히 효율적입니다. UNION을 사용하였기에 두 테이블에 있는 값은 합쳐지지 않고 따로따로 조회가 되어 합쳐지는데요. 하지만 가끔은 이렇게 조회된 두테이블의 결과 값을 서로 합쳐줘야할 때가 있습니다. 대표적으로 두 테이블의 통계를 낼때가 있겠군요. 예제 SELECT S.MODULE, SUM(S.ERR)AS ERROR_COUNT, --에러갯수 SUM(S.MOD) AS MOD_COUNT --수정갯수 FROM ( SELECT A.MODULE COUNT(A.ERR) AS ERR, COUNT(A.MOD) AS MOD, FROM ERROR_TABLE_1 A --1번테..

[Oracle] 오라클 데이터가 없을경우에만 Insert하기 [내부링크]

테이블에 PK로 설정되어있는 컬럼에 데이터가 중복으로 들어가면 무결성 제약조건에 걸리게됩니다. 이것을 예외처리 해주지 않는다면 프로그램에 치명적일 수 있는데요. 이 경우 데이터가 없을경우에만 Insert를 하는 형식으로 변환하여 프로그램의 안정성을 더해줄 수 있습니다. 오라클에 데이터가 없는 경우에만 Insert를 하는방법은 WHERE조건문에 NOT EXISTS(데이터 SELECT) 를 하는 방법으로 구현할 수 있습니다. INSERT INTO DEPT_TABLE ( SQ, COMPANY, DEPT, ) SELECT 1, '테스트회사', '테스트부서' FROM DUAL WHERE NOT EXISTS ( SELECT SQ FROM DEPT_TABLE WHERE SQ = 1, COMPANY = '테스트회사',..

[Oracle] 오라클 insert 자동증가 컬럼의 최대값 +1하기 (MAX+1) [내부링크]

NVL함수와 MAX함수를 활용하여 오라클 데이터 insert시 컬럼의 최대값+1을 저장하는 방법입니다. INSERT INTO DEPT_TABLE ( DEPT_SQ, COMPANY, DEPT_NM ) VALUES ( (SELECT NVL(MAX(DEPT_SQ),0)+1 FROM DEPT_TABLE),--데이터가없으면 0 데이터가 있으면 최대값 +1 '테스트회사', '테스트회사명' )

[Oracle] 오라클 SELECT한 데이터를 활용하여 UPDATE하기 [내부링크]

오라클 SELECT한 데이터를 바로 UPDATE하는 법입니다. 서브쿼리를 활용하면 간단하게 해결할 수 있습니다. 문법 UPDATE [UPDATE 테이블].[별칭] SET [UPDATE 테이블 별칭].[컬럼] = ( SELECT [조회 테이블 별칭].[컬럼] FROM [조회테이블] B ) 예제 UPDATE DEPT A SET A.PC_CD = ( SELECT B.PC_CD FROM BIZAREA B WHERE A.COMPANY_CD = B.COMPANY_CD AND A.BIZAREA_CD = B.BIZAREA_CD )

[Oracle] 오라클 조회 프로시저 만들기 예제 [내부링크]

오라클 조회 프로시저 예제입니다. 필요하신분은 복사하셔서 사용하시면 좋을 것 같습니다. CREATE OR REPLACE PROCEDURE TEST_PROC /* IN Parameter */ ( P_PLANT_CODE IN VARCHAR2,--공장코드 P_DT_OUT IN VARCHAR2, --출고일 P_ITEM_CODE IN VARCHAR2, --품목명 P_COMPANY_CODE IN VARCHAR2--회사코드 ) IS BEGIN SELECT A.PLANT_CODE, B.PLANT_NAME, A.DT_OUT, A.ITEM,_CODE, B.ITEM_NAME, A.RMK FROM TEST_TABLE A LEFT OUTER JOIN TEST_TABLE2 B ON A.COMPANY_CODE = B.COMPANY..

[블로그] 2018년 블로그 결산 및 애드센스 수입공개 [내부링크]

안녕하세요 코딩팩토리입니다. 지난 2018년 한 해 동안 제 블로그를 방문해주신 모든 분께 감사드립니다. 나태해지지 않으려 꾸준히 노력한결과 한 해간 총 188개의 글을 올렸습니다. 거의 이틀당 하루꼴입니다. 더 좋은 정보를 제공하기 위해 노력했지만 미흡한 점이 많았던것 같습니다. 2019년도에도 좋은 정보를 드리기위해 노력하겠습니다. 회사의 일이 바빠지기 시작하여 작년만큼 글을 쓰기에는 어려울거같지만요. 이번 포스팅에서는 짧았던 한 해를 마무리하는 차원에서 2018년 블로그 기록을 되돌아보는 시간을 가져보도록 하겠습니다. 2018년 블로그 결산 및 애드센스 수입공개 방문자 수가 급격히 늘었습니다. 올해초까지만해도 한달 방문자 수가 3만명정도 였는데 12월에는 월간 방문자수가 무려 12만명으로 400%센..

[블로그] 티스토리 스킨을 결정했습니다. 깔끔한 유료스킨 추천 JB SKIN [내부링크]

티스토리 스킨 교체 [블로그] FastBoot스킨의 한계를 느끼고 티스토리 스킨을 교체합니다. 얼마전 제가 사용하고 있던 FastBoot스킨의 HTML 구조가 깨져 네이버의 검색엔진에서 제 블로그를 저품질로 인식하는 현상이 발생하여 스킨의 교체 필요성을 느끼게 되었습니다. 어떤 스킨을 적용할것인가에 대해 여러가지 방안에 대해 고심을 했습니다. 1. 스킨을 직접 만들어본다. 2. 검증된 유료/무료 스킨을 적용한다. 스킨을 직접 만들어본다. 개인적으로 해보고 싶은 일입니다. 바로 나만의 티스토리 스킨을 직접 만들어 보는 것입니다. FastBoot 스킨을 보며 나도 이런 스킨을 하나 만들어보고 싶다는 생각을 수십번 해보았습니다. 스킨을 수정작업하면서 이렇게 수정을 열심히 할바에야 차라리 하나 만들어보는게 낫겠..

[블로그] FastBoot스킨의 한계를 느끼고 티스토리 스킨을 교체합니다. [내부링크]

티스토리 스킨을 교체했습니다. 기존에 제가 쓰고있던 스킨이름은 FastBoot이라는 스킨이였는데요. 깔끔한 디자인에 빠른 속도 그리고 티스토리 블로그에 영향력이 꽤나 높으신 친절한 효자손님의 FastBoot커스터마이징 강의가 대대적으로 포스팅되면서 자연스레 FastBoot라는 스킨이 홍보가되어 티스토리 블로거들사이에서 유행을 탔었죠. 아직도 많은 티스토리 블로그가 FastBoot스킨으로 블로그가 운영되고 있더군요. 저도 그 유행에 탑승하여 약 1년간 이 스킨을 잘 사용해오고 있었지만 최근들어 여러가지 문제점이 생기며 스킨을 교체하고자 합니다. 소프트웨어에서 유지보수는 필수다. 소프트웨어는 지속적으로 업데이트가 됩니다. MS사의 익스플로러도, 구글의 크롬도 계속해서 버전이 올라가고 업데이트가 되죠. 웹 환..

[Java] 자바로 폴더(디렉토리),파일 이동시키기 / 잘라내기 [내부링크]

최근 두가지 글을 포스팅했습니다. [Java] 자바로 폴더(디렉토리),파일 복사하기 [Java] 자바로 폴더(디렉토리) 삭제하기(하위파일, 폴더 포함) 위의 두가지 글이 바로 최근 포스팅했던 글들인데요. 자바로 폴더 및 파일을 이동시키는 방법은 위에 있는 두개의 포스팅을 합치면 구현하실 수 있습니다. 자바로 폴더(디렉토리),파일 이동시키기 1. 폴더 및 파일을 복사한다. 2. 복사했던 폴더 및 파일을 삭제시킨다. import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Move { public static void main(String[..

[Java] 자바로 폴더(디렉토리),파일 복사하기 [내부링크]

자바 File클래스에는 폴더에있는 모든 파일정보를 가지고 오는 메서드인 listFiles()라는 메서드가 존재합니다. 이 listFiles() 메서드와 File클래스의 파일생성 메서드인 mkdir()를 활용하면 쉽게 파일을 복사하실 수 있습니다. 자바로 파일 복사하기 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Copy{ public static void main(String[] args) { File folder1 = new File("D:\\Eclipse\\Java\\복사할폴더\\복사될폴더"); File folder2 =..

[Java] 자바로 폴더(디렉토리) 삭제하기(하위파일, 폴더 포함) [내부링크]

자바 소스로 폴더나 파일을 삭제할수도 있습니다. File.delete()함수를 활용하면 쉽게 구현이 가능한데요. 파일은 쉽게 삭제가 가능한데 문제는 폴더입니다. 폴더는 하위에 파일이 하나라도 남아있으면 File.delete()함수가 작동하지 않습니다. 그러므로 폴더를 삭제하기전에 폴더안에있는 파일을 삭제해주는 작업을 선행하셔야합니다. 폴더안의 파일들을 제거한 뒤 대상 폴더제거 import java.io.File; public class Delete { public static void main(String[] args) { String path = "D:\\Eclipse\\Java\\새 폴더"; File folder = new File(path); try { while(folder.exists()) { ..

[Java] 자바로 폴더(디렉토리) 생성하기 [내부링크]

이번 포스팅에서는 해당 위치에 원하는 폴더가 없을 경우 새로이 폴더를 하나 만들어주는 방법에 대해 알아보겠습니다. File클래스안의 mkdir이라는 메서드를 활용하여 간단히 구현할 수 있습니다. 원하는 위치에 디렉토리가 없을경우 디렉토리 자동생성 import java.io.File; public class MkDir { public static void main(String[] args) { String path = "D:\\Eclipse\\Java\\새폴더"; //폴더 경로 File Folder = new File(path); // 해당 디렉토리가 없을경우 디렉토리를 생성합니다. if (!Folder.exists()) { try{ Folder.mkdir(); //폴더 생성합니다. System.out.p..

[Java] 자바 파일 입출력 (txt파일로 저장 및 읽어오기) [내부링크]

File 클래스 Java.io패키지에서 제공하는 File클래스는 파일 크기, 파일 속성, 파일 이름 등의 정보를 얻어내는 기능과 파일 생성 및 삭제 기능을 제공하고 있습니다. 그리고 디렉토리를 생성하고 디렉토리에 존재하는 파일 리스트를 얻어내는 기능도 있습니다. 이번 포스팅에서는 이 File클래스와 출력스트림을 활용하여 텍스트(txt)파일을 생성해보고 이것을 입력스트림을 활용하여 읽어오는 예제를 한번 만들어보도록 하겠습니다. 1. txt 파일로 데이터 저장하기 package InputOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class OutputST..

[Java] 입력 스트림(Input Stream)과 출력 스트림(Output Stream) [내부링크]

데이터 입출력 프로그램에서는 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번하게 일어납니다. 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력될 수도 있고, 파일 또는 네트워크를 통해 입력될 수도 있습니다. 또 반대로 데이터를 사용자에게 모니터나 파일등으로 출력할수도 있습니다. 자바 입출력과 스트림(Stream) 자바에서 데이터는 스트림(Stream)을 통해 입출력 됩니다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데 물이 높은 곳에서 낮은곳으로 흐르듯이 데이터는 출발지에서 나와 도착지로 흘러간다는 개념입니다. 프로그램이 출발지냐 또는 도착지냐에 따라서 스트림의 종류가 결정되는데, 프로그램이 데이터를 입력받을 때에는 입력(InputStream)이라고 부릅니다. 입력스트림의 출발지..

[Java] 자바 예외처리 Try Catch문 사용법 [내부링크]

Error(에러)와 Exception(예외의 차이) 에러(Error)란 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는것을 말합니다. 이 경우 개발자는 대처할 방법이 극히 제한적입니다. 하지만 예외(Exception)은 다릅니다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말합니다. 예외가 발생하면 프로그램이 종료가 된다는것은 에러와 동일하지만 예외는 예외처리(Exception Handling)을 통해 프로그램을 종료 되지 않고 정상적으로 작동되게 만들어줄 수 있습니다. 자바에서 예외처리는 Try Catch문을 통해 해줄 수 있습니다. 여러가지 예외들 예외 구문 이유 ArithmeticEx..

[Java] 자바 Thread(스레드) 사용법 & 예제 [내부링크]

Thread란? 하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말하며, 세부적으로는 운영체제에 의해 관리되는 하나의 작업 혹은 태스크를 의미합니다. 스레드와 태스크(혹은 작업)은 바꾸어 사용해도 무관합니다. 1. JVM에 의해 하나의 프로세스가 발생하고 main( ) 안의 실행문 들이 하나의 스레드입니다. 2. main( ) 이외의 또 다른 스레드를 만들려면 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현합니다. 3. 다중 스레드 작업 시에는 각 스레드 끼리 정보를 주고받을 수 있어 처리 과정의 오류를 줄일 수 있습니다. 4. 프로세스끼리는 정보를 주고받을 수 없습니다. 멀티스레딩이란? 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법을 말합니다. 장점 1...

[Java] 자바 네트워크 프로토콜이란 무엇인가? [내부링크]

프로토콜란? 프로토콜이란 클라이언트와 서버간의 통신 규약입니다. 프로토콜의 분석방법 먼저 클라이언트가 보낸 메시지를 서버에서는 “##”를 구분자로 문자열을 토큰하여 문자를 분석하게 됩니다. 만약 이런 규약을 클라이언트가 위배하여 메시지의 순서를 바꾼다든지, 부적절 한 메시지를 보내게 되면 서버에서는 이를 파악하지 못하고 항상 동일한 처리를 하게 되기 때문에 다른 클라이언트에게 적절치 못한 메시지를 전송하게 됩니다. 프로토콜의 설계기법 프로토콜의 설계는 클라이언트와 서버간의 통신 규약을 만드는데 필요한 데이터가 무엇인지 를 설계하는 것입니다. 프로토콜의 설계 하기위해서는 클라이언트에서 필요한 기능이 무엇인지를 생각하고, 그 기능 에 대해 필요한 데이터가 어떤 것이 있는지를 분석할 수 있는 능력이 있어야 합..

[Java] 자바 네트워크 유니캐스팅과 멀티캐스팅 [내부링크]

유니캐스팅과 멀티캐스팅 1. 클라이언트와 서버간의 지속적으로 일대 일로 통신하는 개념을 유니 캐스팅이라고 합니다. 2. 일대 다의 통신을 멀티 캐스팅이라고 합니다. 유니 캐스팅 유니 캐스팅을 구현하기 위해서는 필수 조건이 서버측에 스레드를 생성해서 TCP 소켓을 유지 해야 합니다. 멀티 캐스팅 유니 캐스트 모델은 실시간 프로그램에서 서버의 정보를 모든 클라이언트가 공유할 때 문제점이 있는데 이런 문제를 해결할 수 있는 방법이 일대 다 전송을 지원하는 멀티 캐스팅 방법입니다. 한명의 클라이언트가 서버의 정보를 변경했을 경우 모든 클라이언트에게 전송함으로써 서로가 변경된 정보를 공유할 수 있는 애플리케이션을 만들 때 적합합니다. 또한 멀티 캐스팅 프로그램을 작성하기 위해서는 유니캐스트에서 생성된 스레드를 저..

[Java] 자바 네트워크 UDP 통신 소켓프로그래밍 [내부링크]

UDP(User Datagram Protocol 1. UDP는 비 연결 지향이고, IP 위에 매우 얇은 레이어로 구성되어 있습니다. 2. UDP를 사용하는 애플리케이션은 TCP 프로그램에 비해 제어를 할 수 있는 부분이 적습니다. 3. UDP는 데이터를 전송할 때에 데이터가 잘 도착했는지 알아낼 방법이 없으며, 데이터를 보낸 순서대로 도착한다는 보장도 할 수 없습니다. 4. UDP는 TCP에 비해 훨씬 빠르게 전달된다는 장점이 있습니다. DatagramPacket 클래스 1. UDP 데이터그램은 java.net.DatagramPacket 클래스로 추상화한 것입니다. 2. DatagramPacket 클래스는 애플리케이션에서 주고 받을 데이터와 관련된 클래스이고, DatagramSocket 클래스는 실제 데..

[Java] 자바 네트워크 TCP 통신 소켓프로그래밍 [내부링크]

TCP 통신방식이란? 1. TCP란 소켓 프로그래밍 중의 하나로 스트림 통신 프로토콜이라고 부르며, 양쪽의 소켓이 연결된상태여야만 가능 하기 때문에 연결지향 프로토콜이라고도 합니다. 2. TCP 프로토콜은 신뢰성 있는 프로토콜이기 때문에, 송신한 쪽의 데이터가 수신 측에 차례대로, 중간에 유실되는 일 없이 도착 하는 것을 의미합니다. 그러려면 수신 측과 송신 측이 미리 연결을 맺고 연결된 순서대로 데이터를 교환해야 합니다. 3. 연결지향 방식은, 한번 연결되면 연결이 끊어질 때까지는 송신한 데이터가 차례대로 목적지의 소켓에 전달되는 신뢰성 있는 통신이 가능합니다. 4. 이렇게 신뢰성 있는 TCP 연결을 하기 위해서는 TCP 프로그래밍에서 사용하는 라이브러리의 사용 방법과 동작 순서를 정확하게 숙지, 이해..

[Java] 자바 네트워크 URL 클래스와 URLConnection 클래스 [내부링크]

URL클래스 1. URL 클래스는 URL을 추상화 하여 만든 클래스입니다. 2. URL 클래스는 final 클래스로 되어 있기 때문에 상속하여 사용할 수 없습니다. 3. 모든 생성자는 MalformedURLException 예외를 발생하기 때문에 반드시 예외처리를 해야 합니다. URL클래스의 주요생성자 URL클래스의 주요 메서드 URLConnection 클래스 URLConnection 클래스는 원격 자원에 접근하는 데 필요한 정보를 가지고 있습니다. 필요한 정보란 원격 서버의 헤더 정보, 해당 자원의 길이와 타입 정보, 언어 등을 얻어 올 수 있습니다. URL 클래스는 원격 서버 자원의 결과만을 가져 오지만, URLConnection 클래스는 원격 서 버 자원의 결과와 원격 서버의 헤더 정보를 가져 올 ..

[Java] 자바 네트워크 InetAddress 클래스 [내부링크]

InterAddress 클래스란? InetAddress 클래스는 IP 주소를 표현한 클래스입니다. 자바에서는 모든 IP 주소를 InetAddress 클래스를 사용합니다. InetAddress 클래스의 생성자 InetAddress 클래스의 생성자는 하나만 존재하지만, 특이하게 기본 생성자의 접근 제한자 default이기 때문에 new 연산자 객체를 생성할 수 없습니다. 따라서 InetAddress 클래스는 객체를 생성해 줄 수 있는 5개의 static 메서드를 제공하고 있습니다. InetAddress 객체를 생성하는 메서드 InterAddress 주요 메서드 InetAddress 클래스는 IP 주소를 객체화 했기 때문에 다양한 메서드를 제공하지 않습니다. 다만 호스트 이름과 호스트에 대응하는 IP 주소를 ..

[Java] 자바 네트워크에 대한 이해 [내부링크]

네트워크란? 1. 네트워크란 다른 장치로 데이터를 이동시킬 수 있는 컴퓨터들과 주변 장치들의 집합입니다. 2. 네트워크의 연결된 모든 장치들을 노드라고 합니다. 3. 다른 노드에게 하나 이상의 서비스를 해주는 노드를 호스트라 부릅니다. 4. 하나의 컴퓨터에서 다른 컴퓨터로 데이터를 이동시킬 때 복잡한 계층을 통해 전송되는데, 이런 복잡한 레이어의 대표적인 모델이 OSI 계층 모델입니다. 5. OSI 계층 모델은 모두 7계층으로 이루어져 있습니다. 6. 데이터 통신을 이해하는데 OSI 계층 모델은 상당한 역할을 하지만, 인터넷 기반의 표준 모델로 사용하는 TCP/IP 계층 모델을 주로 사용하고 있습니다. 7. 자바에서 이야기하는 네트워크 프로그래밍은 TCP/IP모델을 사용하고 있습니다. IP주소 1. 모든..

[Java] 삼항연산자 사용법 & 예제 [내부링크]

if문을 사용하여 코딩을 할 경우 코드 라인이 의미 없이 길어지는 경우들이 종종 생깁니다. if(){ }else if(){ } 이렇게만 해도 벌써 5라인이죠. 하지만 단순한 if문일 경우 라인수를 획기적으로 줄여주는 방식이 있습니다. 바로 삼항 연산자라는 것인데요. 이번 포스팅에서는 삼항 연산자의 사용법에 대해 알아보도록 하겠습니다. 삼항 연산자의 예를 가볍게 들어보겠습니다. 위와 같은 경우 괄호 안의 조건문이 참일 경우 int a에 50이 담기게 되고 거짓일 경우에는 40이 담기게 되는 코드입니다. 삼항 연산자는 (조건문) : ? 참 : 거짓이라는 문법을 가지게 됩니다. //if else int a; if(5 사용법 & 예제

[Java] 람다식(Lambda Expressions) -> 사용법 & 예제 [내부링크]

람다식이란? 람다식이란 "식별자없이 실행가능한 함수" 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 되겠습니다. 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌습니다. 자바스크립트에서 주로 봤었던 문법들을 이제 자바에서도 종종 보이곤 해요. 람다가 처음에는 생소하게 느껴질 수 있지만 문법이 간결한만큼 익숙해지면 가독성 면에서 장점이 큰 듯 합니다. (고급 프로그래머들중에서는 람다를 최대한 쓰지말라고 하는 사람도 있습니다.) 람다식 사용법 (매개변수, ...) -> { 실행문 ... } (매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합..

[Java] Swing으로 만드는 미니언 성적관리프로그램 예제 [내부링크]

자바를 배울 초창기때 만들었던 미니언 성적관리프로그램입니다. 소스를 정리하다가 발견했네요.... 안에 소스를 보니 가관이군요... 이런식으로 코딩을 했었다니. 원래라면 고치고 인터넷상에 올려야하지만 엄두가 나지않아 그냥 올립니다. 그냥 Swing을 어떤식으로 사용했는지 참고용으로만 사용해주시면 감사하겠습니다. 프로그램 실행화면은 아래와 같습니다. 실행방법1. 위의 압축파일을 다운받아서 압축을 풀어줍니다. 2. 소스를 보시다보면 위와같이 그림파일 경로를 지정해놓은 소스가 여럿 보이실겁니다. 이 경로를 1번에서 다운받았던 경로로 교체해주시고 실행시키시면 됩니다. [Java] 그래픽 GUI AWT 사용법[Java] GUI 이벤트란 무엇인가?[Java] Swing 특징 및 구조 & 사용법 총정리

[Java] Swing 특징 및 구조 & 사용법 총정리 [내부링크]

Swing이란? 자바의 JFC(Java Foundation Class)는 GUI 프로그래밍에 필요한 각종 킷을 모아놓은 것으로 현재는 GUI의 기능들을 구현할 수 있는 스윙, 2D, Drag&Drop 등을 지원합니다. 스윙을 사용하는 방법은 AWT와 거의 유사하나 AWT보다는 많은 컴포넌트 및 기능을 지원하고 있습니다. 스윙은 AWT와 달리 자바 프로그래밍으로 자체적인 제작된 컴포넌트이므로 플랫폼에 관계없이 모양이 동일하게 사용할 수 있습니다. Swing의 특징 1. 룩앤필(Look & Feel) 스윙에서 가장 획기적으로 바뀐 것 중에 하나가 컴포넌트의 화려함입니다. 이러한 외관(Look & Feel)을 프로그램을 실행하는 도중에 여러가지 형태로 바꾸어 사용 할 수 있는 기능을 제공합니다. 스윙은 순수한..

[Java] GUI 이벤트란 무엇인가? [내부링크]

이벤트란? 이벤트(Event)라는 것은 윈도우 프로그래밍에서 어떤 특정한 행동이 발생한 그 자체를 의미합니다. 예를 들어 메뉴를 선택했다는가, 아니면 마우스를 클릭하거나, 윈도우의 크기를 조절하거나 등의 행위를 뜻하는 것입니다. 이런한 방식의 프로그래밍을 이벤트 중심의 프로그래밍이라고 하는데 윈도우 프로그래밍에서 중요한 개념 중에 하나입니다. 이벤트 소스(Event Source)는 이벤트가 발생할 수 있는 대상을 의미하고 그 대상으로부터 이벤트가 발생하면 발생된 이벤트를 처리해서 결과를 낼 수 있도록 해주는 것을 이벤트 핸들러(Event Handler)라고 합니다. 자바에서의 이벤트 처리 1. 프로그램이 실행중에 운영체제(OS)가 해당 프로그램에서 이벤트가 발생이 되는지를 검사한다. 2. 이때 이벤트가 ..

[Java] 그래픽 GUI AWT 사용법 [내부링크]

AWT란? 자바 언어가 탄생한 1995년에는 인터넷이 활성화되지 않았기 때문에 대부분의클라이언트 애플리케이션은 운영체제가 제공하는 네이티브 UI 컴포넌트를 이용하여 개발되었습니다. 그래서 Java1.0에 포함된 AWT는 운영체제가 제공하는 네이티브 UI컴포넌트를 이용하는 자바 라이브러리였죠. 그렇다보니 자바 애플리케이션이 실행되는 운영체제에 따라 UI의 모양이 서로다르고 종류도 제한적입니다. 하지만 비교적 쉽게 접할 수 있기에 콘솔에서 벗어나 Winodws개발을 하고싶은 자바개발자에게 입문코스?로 한번쯤은 해보고 넘어가는듯 합니다. AWT 구현순서 Container : 프로그램의 창의 역할을 합니다. 한개 이상의 컨테이너위에 컴포넌트들이 올려질영역입니다. (ex Frame, Panel, Dialog 등등..

[Java] 현재날짜, 현재시간을 원하는 형태로 출력하는(Format) 다양한 방법 [내부링크]

자바에서 현재 날짜와 시간을 출력해주는 방법은 아주 다양합니다. 그 다양한 방법중에서 대표적으로 3가지가 주로 사용되고 있죠. Date객체를 사용하는 방법, Calendar클래스의 getInstance() 메서드를 활용하는 방법, System클래스의 currentTimeMillis() 메스드를 활용하는 방법이 바로 그것입니다. 이번 포스팅에서는 현재날짜, 현재시간을 원하는 형태로 포맷팅하여 출력하는 방법에 대해 알아보도록 하겠습니다. 1. Date객체를 활용하는 방법 SimpleDateFormat format1 = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss"); SimpleDateFormat format2 = new SimpleDateFormat ( "yyyy년 MM월..

[Java] ArrayList로 구현한 Memory구조(Stack,Pop) [내부링크]

ArrayList를 처음 배울때 만들어봤었던 콘솔 Stack , Pop입니다. ArrayList의 add메서드와 remove메서드를 활용하면 쉽게 구현이 가능합니다. Main.java import java.util.Scanner; public class Main { public static void main(String[] args) { Queue qu = new Queue(); Stack st = new Stack(); while(true){ System.out.println("1.스택 2.큐"); Scanner sc = new Scanner(System.in); int select = sc.nextInt(); switch (select) { case 1: System.out.println("1.푸쉬 ..

[Java] 객체지향 콘솔 성적관리 프로그램 [내부링크]

자바를 초창기때 배웠을때 만들어봤었던 콘솔 성적관리 프로그램입니다. 지금 보면 정말 별거아니지만 그 당시 밤을 새워가며 열심히 코딩했었던 기억이 나네요. 그때가 정말 그립습니다. ㅎㅎㅎ 프로그램 구조는 HashMap 이런식으로 되어있습니다. Student클래스에 학생성적의 정보를 담아두고 Map을 put하거나 remove하는 방식입니다. Main.java package CollectionScore; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Score score = new Score(); int i=0; while(true){ ..

[C언어/C++] 문자열을 입력하면 알파벳순으로 정렬하여 출력하는 알고리즘 [내부링크]

10개의 문자열을 입력받고 알파벳(사전) 순으로 정렬하는 문자열을 변형하는 알고리즘입니다. 문자열을 입력하면 알파벳순으로 정렬하여 출력하는 알고리즘 #include #include #include int convert_string(const void *a, const void *b) { return strcmp((char *)a, (char *)b); } int main() { char s[10][8]; for(int i=0;i

[Java] Int 배열의 최댓값 최소값 구하기 [내부링크]

배열의 최대값 최소값 구하기 For문을 활용한 방법 //최대값 최소값을 구할 int배열 int array[] = {4,3,2,1,10,8,7,6,9,5}; int max = array[0]; //최대값 int min = array[0]; //최소값 for(int i=0;i

[Java] 배열의 여러가지 선언 및 초기화 방법 [내부링크]

배열이란 동일한 자료형으로 선언된 데이터 공간을 메모리 상에 연속적으로 나열하여 데이터 관리의 효율성을 높이는 것입니다. 변수는 한개의 데이터만 저장할 수 있습니다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 양의 변수를 선언해줘야하는 비효율성이 발생하죠. 그렇기에 좀 더 효율적인 방법이 필요한데 이것이 배열입니다. 배열은 같은 타입의 데이터를 연속된 공간에 나열시키고 각 데이터에 인덱스(index)를 부여해 놓은 자료구조입니다. 여러가지 배열 선언 //int 타입 배열 선언 int[] i_array; int i_array[]; //배열 생성후 초기화하면 배열의 주소가 할당된다. int[] i_array = new int[8]; //초기값 0 String[] s_array = new Stri..

[블로그] 티스토리 FastBoot스킨 Https 적용하기(SSL) [내부링크]

티스토리도 드디어 보안접속 SSL이 적용이 되었습니다. 구글의 정책중의 SSL 웹페이지를 상위로 노출시켜주는 알고리즘이 있기에 이번 패치를 계기로 구글에서 좀 더 많은 유입이 되었으면 하는 소망입니다. 제가 사용하고 있는 스킨은 FastBoot라는 스킨입니다. 이 스킨은 몇년째 패치가 중단되어 제가 임의로 소스코드를 계속 수정해가며 사용하고 있는데요. 얼마전 저와같은 FastBoot스킨 사용자께서 FastBoot스킨 SSL적용방법에 대해 물으시기에 포스팅으로 방법을 자세히 소개해드리고자 합니다. 티스토리 FastBoot스킨 Https 적용하기(SSL) 1. 블로그관리 -> 블로그에서 보안접속을 "사용합니다"로 바꿔주고 변경사항 저장을 누릅니다. 2. 이렇게 해주면 블로그는 https로 적용이 되는데요. ..

[Java] BufferedReader, BufferedWriter를 활용한 빠른 입출력 [내부링크]

BufferedReader/BufferedWriter는 Buffer에 있는 IO 클래스입니다. 입력된 데이터가 바로 전달되지 않고 중간에 버퍼링이 된 후에 전달되됩니다. 출력도 마찬가지로 버퍼를 거쳐서 간접적으로 출력장치로 전달되기에 시스템의 데이터처리 효율성을 높여주며 버퍼스트림을InputStreamReader / OutputStreamWriter를 같이 사용하여 버퍼링을 하게 되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적인 입출력이 가능합니다. BufferedReader Java를 처음 접하시는 분들이 주로 받는 입력방식은 Scanner입니다. Scanner를 통해 입력을 받을경우 Space Enter를 모두 경계로 인식하기에 입력받은 데이터를 가공하기 매우 편리합니다..

[Java] 자바 소수점 n번째 자리까지 반올림하기 [내부링크]

이번 포스팅에서는 자바에서 긴 소수를 반올림하여 n번째 자리까지 나타내는 방법에 대해 알아보겠습니다. 여러가지 방법이 있겠습니다만 Math.round();함수를 활용하거나 String.format(); 함수를 활용하는것이 대표적인 방식입니다. Math.round() Math함수의 round()함수는 실수의 소수점 첫번째 자리를 반올림하여 정수로 리턴시켜줍니다. 하지만 이 메서드를 잘 활용하면 소수점 몇번째 자리까지 나타내는것도 가능합니다. 예를들어 33.777*100을 하면 3377.7가 되겠죠. 여기서 round를 적용시키면 3378이라는 정수가 리턴될것입니다. 여기서 다시 100.0을 나눠주면 실수로 적용되어 나옵니다. (33.78이 나오게 됩니다.) 소수점 둘째 자리까지 나타내고싶으시면 100.0을..

[Git] 소스트리 (SourceTree) 설치/다운로드하기 [내부링크]

얼마전 포스팅에서 GitBash를 사용하여 원격 레파지토리에 소스를 등록하는 작업을 해보았습니다. 이렇게 명령어 입력으로도 깃허브를 사용할 수 있습니다. 하지만 많이 불편하죠... 명령어를 다 외우는것도 만만치않은일입니다. 명령어를 사용하여 깃허브를 사용하는것이 불편한 분들을 위한 유틸리티가 있습니다. 바로 소스트리(Source Tree)라는 프로그램인데요. 소스트리란 Git을 그래픽화 시켜준다고 생각하시면 됩니다. 명령어 입력을 할 필요 없이 클릭만으로 Git의 모든 작업을 할 수 있습니다. 소스트리 (SourceTree) 설치하기 1. 소스트리 SetUp파일을 다운받습니다. 소스트리 설치URL 바로가기 위 경로로 가셔서 Download for Windows버튼을 눌러주세요. 2. 다운받은 SetUp파..

[Git] 이클립스 프로젝트를 깃(GitHub) 원격저장소에 올리기(Commit & Push) [내부링크]

이클립스에서 프로젝트를 깃 원격 저장소로 Commit하는 방법에 대해 알아봅시다. 1. 깃 원격저장소에 올리고싶은 프로젝트 -> 우클릭 -> Share Project를 클릭합니다. 2. 화면에 보이는 Use or create repository inparent folder of project 체크박스를 클릭합니다. 3. Create Repository 버튼을 클릭하여 로컬 저장소를 만듭니다. 4. Git Repositories를 엽니다. 5. Git Repositories에 로컬저장소가 잘 만들어졌는지 확인합니다. 위와같이 자신이 원격저장소에 올리고싶은 프로젝트가 있으면 로컬저장소가 잘 만들어진것입니다. 이제 원격저장소에 프로젝트를 올릴 차례군요. 6. 올리고싶은 원격저장소의 주소를 복사합니다. 7. G..

[Git] 이클립스와 깃(GitHub) 연동하여 원격 저장소의 프로젝트 내려받기 [내부링크]

이클립스와 깃을 연동하면 작업이 매우 편리해집니다. 이클립스에서 몇번의 클릭만으로 깃 레파지토리에 Push를 할수도 있고 Pull을 할 수도 있습니다. 이번 포스팅에서는 이클립스와 깃을 연동하는 방법에 대해 알아보도록 하겠습니다. 1. 일단 연동할 원격 레파지토리 주소를 복사하도록 하겠습니다. 제가 연동할 레파지토리 주소는 위와같습니다. 2. GIt Repositories창을 엽니다. 3. Clone a Git repository를 클릭합니다. 4. 첫번째 빨간박스의 주소는 Git원격 레파지토리의 주소를 복사하고있다면 자동으로 들어갑니다. 그 밑의 빨간박스에는 깃허브 아이디와 패스워드를 각각 입력하고 Next를 누릅니다. 5. 기본 Branch master를 체크해주고 Next를 눌러줍니다. 6. 원격 ..

[Git] GitHub 레파지토리(Repository) 삭제 [내부링크]

Git Repositories를 만든 뒤 삭제하는 법을 몰라서 헤매시는 분들을 위해 이번 포스팅에서는 Git 원격 저장소 레파지토리 삭제 방법에 대해 알아보도록 하겠습니다. 1. 먼저 깃허브 사이트에가서 로그인을 한 뒤 삭제하고 싶은 레파지토리로 들어갑니다. 깃허브 바로가기 2. 자신의 레파지토리 리스트 중에서 자신이 삭제하고자 하는 레파지토리에 들어갑니다. 3. 삭제할 레파지토리에서 우측 상단의 Setting버튼을 클릭합니다. 4. Setting에서 스크롤을 밑으로 끝까지 내리게 되면 위와 같은 Danger Zone 나오는데요 여기서 가장 밑에 있는 Delete this repository버튼을 클릭합니다. 5. 그런 뒤 확인작업을 두 번 거쳐야 하는데요. 제거할 레파지토리명과 계정 패스워드를 차례로 ..

[Git] 윈도우 Git 설치하기 (Git for Windows) [내부링크]

GIt을 사용하려면 먼저 Git이 PC에 설치되어 있어야합니다. Git설치방법에 대해 알아봅니다. 윈도우버전 Git설치하기 1. Git 설치파일을 다운로드 받습니다. 아래에 링크되어 있는 페이지에 들어가서 자신의 OS에 맞는 Git 설치버전을 받아주세요. Git다운로드 링크 바로가기 2. 약관을 읽어주고 Next를 눌러줍니다. 3. 설치경로를 선택하고 Next를 눌러줍니다. 4. 설치할 Component들을 선택합니다. 저는 기본으로 선택되어 있는것 이외에는 추가로 설치하지않고 Next를 눌러 진행하겠습니다. 5. 시작 메뉴에 폴더를 만듭니다. 시작메뉴에 폴더를 추가하고 싶지 않다면 Don't create a Start Menu folder 체크박스를 클릭하고 Next를 눌러주세요. 6. 깃의 기본에디터..

[Git] Git 레파지토리 생성 & 소스 올리기 (Git Bash활용) [내부링크]

GitHub에서 원격저장소를 만든 뒤 Git Bash를 활용하여 Push하는 방법입니다. GitHub Repository 생성 1. 아래 URL을 클릭하여 GitHub로 들어간 뒤 로그인 하고 좌측 상단에서 저장소 NEW 버튼을 클릭합니다. https://github.com/ 2. 생성 할 Repository의 주소와 설명등 상세 설정을 한 뒤 저장소 생성을 클릭하여 Repository를 생성합니다. git bash에서 소스 push 1. 원하는 소스폴더에서 git bash를 실행시킵니다. 2. $ git init/p> 깃을 init 시켜줍니다. (로컬저장소 만들기) 3. $ git status 올라가 파일이 있는지 현재 폴더에 있는 파일들을 확인합니다. 지금은 파일들이 빨간색으로 되어있지만 add작업을..

[Git] 여러가지 소스 형상관리 툴 종류와 사용목적 [내부링크]

소스 형상관리의 정의 소프트웨어 형상관리는 Software Configuration Management, 줄여서 SCM라는 단어를 쓰기도 하는데, SW개발 및 유지보수 과정에서 발생하는 소스코드, 문서, 인터페이스 등 각종 결과물에 대해 형상을 만들고, 이들 형상에 대한 변경을 체계적으로 관리, 제어하기 위한 활동입니다. 단순히 말하자면 프로젝트를 진행하면서 생성하는 소스코드를 CVS나 SVN, 또는 GIT와 같은 버전 관리 시스템을 이용하는 것을 말합니다. 다수의 개발자가 프로젝트에서 동일한 기능을 동시에 개발한다고 할 때, 작성된 소스 코드와 변경사항을 확인하고, 수정하는 협업을 도와주는 시스템이라고 할 수 있습니다. 형상관리는 일반적으로 버전 관리 (version control, revision c..

[Oracle] 전체 테이블중에서 원하는 Comment만 검색 & 수정하기 [내부링크]

오라클 전체테이블 중에서 '원가요소'가 포함되어있는 Comment를 '관리계정'으로 바꾸라는 요청을 받았습니다. 사용하는 용어가 달라졌다고 하더군요.... 이런 요청을 받고 전체 테이블을 일일이 뒤져가면서 원가요소가 포함되어있는 Comment를 찾아서 관리계정으로 바꿔주는것은 굉장히 무식한 짓입니다. 쿼리문을 통해 한번에 간편하게 Comment를 바꾸는 방법에 대해 알아보겠습니다. 전체 테이블중에서 원하는 Comment만 검색 & 수정하기 사용한 방법 SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE, DATA_LENGTH, COMMENTS FROM USER_TAB_COLUMNS A,USER_COL_COMMENTS B WHERE A.COLUMN_NAME LIKE '%%..

[Oracle] 계정에 테이블 DML 권한부여/취소하기(GRANT/REVOKE) [내부링크]

사용자가 테이블을 DROP하거나 ALTER한다면 큰 문제가 발생할 수 있습니다. 이런 문제를 방지하기 위해 DDL을 사용할 수 있는 관리자(MASTER) 계정을 따로두고 사용자(USER) 계정에는 해당 테이블의 SELECT, INSERT, UPDATE, DELETE 권한만 부여하여 운용하는 경우가 많습니다. 이번 포스팅에서는 관리자(MASTER)계정에서 사용자(USER)계정에 DML권한을 부여하는 방법에 대해 알아보도록 하겠습니다. 테이블에 권한 부여 --테이블에 DML권한 주기 --방법1 GRANT SELECT ON [TABLE] TO [USER_ID]; GRANT INSERT ON [TABLE] TO [USER_ID]; GRANT DELETE ON [TABLE] TO [USER_ID]; GRANT U..

[Oracle] 테이블 생성시 VARCHAR2형을 CHAR형으로 치환하기 [내부링크]

VARCHAR2는 한글을 저장할 수 있는 크기와 영문을 저장할 수 있는 크기가 다릅니다. 영문은 1바이트고 한글은 2바이트이기 때문입니다. 이렇게 되면 나중에 여러가지 문제가 생길 수 있기에 가끔 테이블 생성 시 VARCHAR2타입을 CHAR형으로 바꿔서 생성시켜주곤 합니다. (자칫하면 공간낭비가 될 수 있기 때문에 자주쓰는 방법은 아닙니다.) 요새는 툴이 좋아 CREATE문을 따로 작성하지 않아도 알아서 작성해주는 툴이 많이 있습니다. 하지만 툴이 만들어준 Create문을 보면 VARCHAR2타입으로 되어있을겁니다. 여기서 테이블의 VARCHAR2형을 CHAR형으로 바꿔주려면 CREATE문 안에 있는 VARCHAR2을 전부 CHAR로 바꿔주어야 하는데 이것은 굉장히 귀찮은 일입니다. 이럴때 요긴하게 사..

[Oracle] 테이블 원하는 위치에 새로운 컬럼 추가하는 방법 [내부링크]

아래와 같은 예제테이블의 ID밑에 PASSWORD라는 컬럼을 추가하고 싶다고 예를 들어보겠습니다. ALTER TABLE MEMBER ADD(PASSWORD VARCHAR(30)); 이렇게 컬럼을 추가한다고 하면 제가 원하는 ID밑에 컬럼이 추가되지 않고 제일 밑 TEL컬럼 밑에 PASSWORD가 추가됩니다. 이렇게 오라클에서는 가운데에 컬럼을 추가하기 굉장히 까다로운데 오라클 12C부터 사용할 수 있는 기능인 테이블의 컬럼을 숨기고 보이게 할 수 있는 기능인 INVISIBLE 과 VISIBLE을 활용하면 자신이 원하는 곳에 컬럼을 추가할 수 있습니다. 컬럼 숨기기 ALTER TABLE [테이블명] MODIFY [컬럼명] INVISIBLE; ALTER TABLE MEMBER MODIFY USERNAME I..

[Oracle] 새로운 테이블에 데이터 이관, 복사, 백업하기 [내부링크]

테이블 백업은 굉장히 많이사용합니다. 예를들어 테이블의 구조를 바꿔야하는데 테이블안에 많은 데이터들이 있을때 필히 백업을 해주어야 혹시나 있을 문제에 대비할 수 있습니다. 복사 / 백업할 테이블 확인 --테이블 구조 조회 DESC [테이블명]; DESC MEMBER_EX; --테이블 데이터 조회 SELECT * FROM [테이블명]; SELECT * FROM MEMBER_EX; 테이블 복사 CREATE TABLE [복사된 테이블 명]AS SELECT * FROM [복사할테이블] CREATE TABLE MEMBER_EX_20180914 AS SELECT * FROM MEMBER_EX 복사된 테이블 확인 --테이블 구조 조회 DESC [테이블명]; DESC MEMBER_EX_20180914; --테이블 데이..

[Oracle] 테이블 & 컬럼 Comment 추가,확인,삭제 방법 [내부링크]

테이블을 생성할 시 테이블과 컬럼에다가 설명을 달 수 있습니다. 이렇게 해놓으면 처음에는 좀 귀찮아도 나중에 컬럼의 뜻이 기억이 안날때 Comment를 찾아본다면 이 컬럼이 왜 존재하는지 추후에도 알 수 있습니다. 대개 의무적으로 등록하게 합니다. 오라클 테이블 & 컬럼 Comment 추가,확인,삭제 방법 Comment 설정 --테이블 Comment 설정 COMMENT ON TABLE [테이블명] IS [Comment]; COMMENT ON TABLE EX_TABLE IS '예제 테이블'; --컬럼 Comment 설정 COMMENT ON COLUMN [테이블명].[컬럼명] IS '[Comment]'; COMMENT ON COLUMN EX_TABLE.DEPT IS '부서'; COMMENT ON COLUMN..

[Oracle] 오라클 테이블 생성 방법(PK설정) [내부링크]

오라클에서의 테이블 생성 문법은 CREATE TABLE [테이블명]을 먼저 선언해준 뒤 그 밑으로 자신이 만들고 싶은 컬럼들을 써주시면 됩니다. 오라클 테이블 생성문법 CREATE TABLE EX_TABLE ( COMPANY VARCHAR(7) NOT NULL, DEPT VARCHAR(20) DEFAULT '미정' NOT NULL, TP VARCHAR(20), USER_ID VARCHAR(20) NOT NULL, TODAY DATE DEFAULT SYSDATE NOT NULL ); 오라클 테이블 PK설정 CREATE UNIQUE INDEX PK_EX_TABLE ON EX_TABLE (COMPANY,DEPT,TP,USER_ID); 오라클 테이블에 PK를 주는 방법입니다. PK생성 문법은 CREATE UNI..

[Oracle] 토드(Toad) 설치하기 [내부링크]

오라클만 설치해서는 오라클을 효율적으로 다룰 수 없습니다. 오라클을 잘 사용할 수 있는 툴을 같이 다운받아줘야하죠. 대표적인 오라클 툴으로는 SQL Develoment와 Toad가 있습니다. 이번 포스팅에서는 Oracle for Toad의 다운방법에 대해 알아보도록 하겠습니다. 토드(Toad) 설치하기 1. Toad 설치/다운로드 경로 바로가기 위에 링크되어있는 사이트로 이동하시면 토드 홈페이지가 나옵니다. 그런 뒤 위와같이 Downloads -> Oracle -> Toad for Oracle을 차례로 클릭해줍니다. 2. Toad 무료버전 설치합니다. 그러면 위와같은 페이지가 나올텐데 여기서 Get Free Trial을 선택합니다. 3. 개발자를 위한 버전과 DBA를 위한 버전으로 나뉘어집니다. 저희는 ..

[Algorithm] 인덱스 구조란 무엇인가? [내부링크]

인덱스의 개념 인덱스는 데이터 레코드를 빠르게 접근하기 위해서 구성하는 것으로 다음과 같은 특징이 있다. 1. 인덱스는 데이터가 저장된 물리적 구조와 밀접한 관계가 있다. 2. 인덱스는 레코드가 저장된 물리적 구조에 접근하는 방법을 제공한다. 3. 인덱스를 통해서 파일의 레코드에 대한 액세스를 빠르게 수행할 수 있다. 4. 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는것이 효율적이다. 트라이(Trie)색인 트라이 색인은 탐색을 위한 키 값을 직접 표현하지 않고 키를 구성하는 문자나 숫자 자체의 순서로 키 값을 구성하는 구조이다. 키 값이 문자열 또는 숫자일 경우 일련의 키 값들에 대해 일부분이 같은 문자나 숫자로 구성되었을 떄 적합하다. 1. 가변 길이의 키 값을 효율적으로..

[Algorithm] 해시테이블과 해싱함수에 대해서 [내부링크]

해싱이란? 해싱은 Hash Table이라는 기억공간을 할당하고, 해시 함수(Hash Table)이라는 기억공간을 할당하고, 해시함수(Hash Function)을 이용하여 레코드 키에 대한 Hash Table내의 Home Address를 계산한 후 주어진 레코드를 해당 기억장소에 저장하거나 검색 작업을 수행하는 방식이다. 1. 해싱은 DAM(직접 접근)파일을 구성할 때 사용되며, 접근 속도는 빠르나 기억공간이 많이 요구된다. 2. 다른 방식에 비해 검색 속도가 가장 빠르다. 3. 삽입 삭제 작업의 빈도가 많을 때 유리한 방식이다. 4. 키-주소 변환 방법이라고도 한다. 해시테이블(HashTable) 해시테이블은 레코드를 한개 이상 보관할 수 있는 Bucket들로 구성된 기억공간으로 보조기억장치에 구성할 수..

[Algorithm] 여러가지 검색(Search)기법 [내부링크]

여러가지 검색의 종류 검색이란 컴퓨터를 이용해서 기억공간에 보관중인 특정 레코드를 찾아내는 작업이다. 선형 검색(Linear Search) 1. 선형 검색은 순서화되어 있지 않은 파일에서 순차적으로 검색하는 방식으로 찾고자 하는 Key값을 첫번째 레코드 Key값으로부터 차례로 비교하여 검색하는 방식이다. 2. 순차검색(Sequential Search)라고도 한다. 3. 프로그램 작성이 비교적 간단하다. 제어 검색(Control Search) 1. 제어 검색은 반드시 순서화된 파일이어야 검색할 수 있다. 2. 한번의 비교 동작이 끝난 후 비교 대상이 된 레코드를 다음에 비교할 대상을 선택하는 기준으로 이용하여 검색하는 방식이다. 이분 검색(이진 검색, Binary Search) 1. 이분검색은 전체 파일을..

[Algorithm] 트리(Tree)구조란 무엇인가? [내부링크]

트리(Tree)의 정의 트리는 정점(Node)과 선분(Branch)을 이용하여 사이클을 이루지 않도록 구성한 Graph의 특수한 형태이다. 가족의 계보(족보), 연산수식, 회사 조직 구조도, 히프등을 표현하기에 적합하다. 트리(Tree) 관련용어 노드(Node) : 트리의 기본요소로서 자료 항목과 다른 항목에 대한 가지(Branch)를 합친 것 EX : A, B, C, D, E, F, G, H, ,I ,J ,K ,M 근 노드(Root Node) : 트리의 맨 위에 있는 노드 EX : A 디그리(Degree, 차수) : 각 노드에서 뻗어나온 가지의 수 EX : A=3 , B=2, C=1 단말 노드(Terminal Node) : 자식이 하나도 없는 노드 EX : K, L, F, G, M, I, J 비단말 노..

[Algorithm] 큐(Queue)와 데크(Deque)에 대해서 [내부링크]

큐(Queue) 1. 선형 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조이다. 2. 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO)방식으로 처리한다. 3. 시작과 끝을 표시하는 두 개의 포인터가 있다. 프런트(F) 포인터 1. 가장 먼저 삽이된 자료의 기억공간을 가리키는 포인터이다. 2. 삭제 작업을 할때 사용한다. 리어(R) 포인터 1. 가장 마지막에 삽입된 자료가 위치한 기억장소를 가리키는 포인터이다. 2. 삽입 작업을 할 때 사용한다. Queue의 응용분야 1. 창구 업무나 택시 정거장처럼 서비스 순서를 기다리는 등의 대기행렬의 처리에서 사용한다. 2. 운영체제의 작업 스케줄링에 사용한다. 데크(Deque) 1. 삽입과 삭제가 ..

[Algorithm] 스택(Stack)이란 무엇인가? [내부링크]

스택의 개념 1. 스택은 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조이다. 2. 스택은 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO)방식으로 자료를 처리한다. Overflow : 스택으로 할당받은 메모리 부분의 마지막 주소가 M번지라고 할 때, Top Pointer의 값이 M보다 커지면 스택의 모든 기억장소가 꽉 채워져 있는 상태이므로 더 이상 자료를 삽입할 수 없어 Overflow를 발생시킨다. Underflow : Top Pointer가 주소 0을 가지고 있다면 스택에는 삭제할 자료가 없으므로 Underflow를 발생시킨다. ※ Stack에 기억되어 있는 자료를 삭제시킬 때는 제일 먼저 삭제할 자료가 있는지 없는지부터 확인해야 한다. Stack의 응용분야 ..

[Algorithm] ArrayList와 LinkedList란 무엇인가? [내부링크]

ArrayList(선형리스트) 선형 리스트는 배열과 같이 연속되는 기억장소에 저장되는 리스트를 말한다. 연접 리스트(Dense List) 또는 축차 구조(Sequential Structure)라고도 한다. 선형리스트의 특징 1. 가장 간단한 자료구조이다. 2. 접근속도가 빠르다. 3. 중간에 자료를 삽입하기 위해서는 연속된 빈 공간이 있어야 한다. 4. 기억장소를 연속적으로 배정받기 때문에 기억장소 이용 효율은 밀도가 1로서 가장 좋다. 5. 자료의 개수가 n개일 때 삽입 시의 평균 이동 횟수는 (n+1)/2이고, 삭제 시에는 (n-1)/2이다. 6. 삽입, 삭제 시 자료의 이동이 필요하기 때문에 작업이 번거롭다. LinkedList(연결리스트) 연결 리스트는 자료들을 반드시 연속적으로 배열시키지는 않고..

[Algorithm] 자료구조란 무엇인가? [내부링크]

자료구조의 정의 효율적인 프로그램을 작성할 때 가장 우선적인 고려사항은 저장공간의 효율성과 실행시간의 신속성이다. 자료구조는 프로그램에서 사용하기 위한 자료를 기억장치의 공간내에 저장하는 방법과 저장된 그룹 내에 존재하는 자료 간의 관계, 처리방법 등을 연구하여 분석하는 것을 말한다. 자료구조란? 1. 자료구조는 자료의 표현과 그것과 관련된 연산이다. 2. 자료구조는 일련의 자료들을 조직하고 구조화하는 것이다. 3. 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이 가능하다. 4. 자료구조에 따라 프로그램 실행시간이 달라진다. 자료구조의 분류 자료 구조의 이용 정렬(Sort) : 기억장치 내의 자료를 일정한 순서에 의해 나열하는 것 검색(Search) : 기억장치 내의 자료를 찾는 것 파일 편성 ..

[DB기초] 트랜잭션이란 무엇인가? [내부링크]

트랜잭션의 정의 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션의 특징 1. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 3. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 성질 Atomicity(원자성) 1. 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 2. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오..

[DB기초] 시스템 카탈로그란 무엇인가? [내부링크]

시스템 카탈로그란? 1. 시스템 카탈로그는 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스이다. 2. 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블이다. 3. 데이터 정의어의 결과로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 데이터베이스 구조 및 통계 정보를 저장한다. 4. 카탈로그들이 생성되면 자료사전에 저장되기 떄문에 좁은 의미로는 카탈로그를 자료 사전이라고도 한다. 5. 카탈로그에 저장된 정보를 메타 데이터라고 한다. 카탈로그의 특징 1. 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해볼 수 ..

[DB기초] 뷰(View)란 무엇인가? + 간단한 예제 [내부링크]

뷰(View)란 무엇인가? 1. 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다. 2. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다. 3. 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다. 4. 뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화 한다. 뷰(View)의 특징 1. 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다. 2. 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다. 3. 데이터의 논리적 독립성을 제공할 수 있다. 4. 필요한 데이터만 뷰로 정의해서 처리..

[DB기초] 내장 SQL이란 무엇인가 [내부링크]

내장 SQL의 정의 내장 SQL은 응용 프로그램 내에 데이터베이스에서 사용하는 데이터를 정의하거나 질의하는 SQL 문장을 내포하여 프로그램이 실행될 때 함께 실행되도록 호스트 프로그램언어로 만든 프로그램에 삽입된 SQL이다. 호스트 프로그램언어란C,Java,Pathon,Visual Basic같은 프로그래밍 언어를 의미합니다. 내장 SQL의 특징 1. 내장 SQL 실행문은 호스트 언어에서 실행문이 나타날 수 있는 곳이면 프로그램의 어느곳에서나 사용할 수 있다. 2. 일반 SQL문은 수행결과로 여러 개의 튜플을 반환하는 반면, 내장 SQL은 단 하나의 튜플만을 반환한다. 3. 내장 SQL문에 반환되는 튜플은 일반 변수를 사용하여 저장할 수 있다. 4. Host Program의 컴파일 시 내장 SQL문은 선행..

[DB기초] 관계대수, 관계해석이란 무엇인가? [내부링크]

관계대수란? 1. 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다. 2. 관계대수는 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션이다. 3. 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다. 4. 대표적으로 순수 관계 연산자와 일반 집합 연산자가 있다. 순수 관계 연산자 ※ 순수관계 연산자란 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자를 말한다. 순수 관계 연산자 : Select, Project Join, Devision Select Select는 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을..

[DB기초] 무결성이란 무엇인가(무결성 제약조건) [내부링크]

무결성이란? 무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다 무결성을 유지하는 방법 대표적으로 사용되는 방법은 중앙 통제에 의한 데이터 갱신으로서, 이 방법은 검증 프로그램을 이용하여 모든 갱신 처리 과정에서 반드시 검증 단계를 거치도록 통제를 가한다. 검증 프로그램이 무결성을 검증하기 위해 무결성 규정을 사용한다. 규정이름 : 무결성 규정을 참조할 때 사용하는 식별자 트리거조건 : 트랜잭션의 접근 유형 및 데이터, 검사할 시기 명시 프레디킷(제약조건) : 무결성을 위한 검사조건 위반조치 : 검사결과 무결성 위반이 발견되었을 때 처리할 조치 무결성의 종류 1. 널 무결성 : 릴레이션의 특정속성 값이 Null이 될 수 없도록 하는 규정 2. 고유..

[DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념 [내부링크]

키(Key)란? : 키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 애트리뷰트를 말한다. 키(Key)의 종류 후보키(Candidate Key) 1. 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다. 2. 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다. 3. 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다. 유일성 : 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야한다. 최소성 : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 ..

[DB기초] 데이터베이스 설계시 고려사항 [내부링크]

데이터베이스 설계 데이터베이스 설계란 사용자의 요구를 분석하여 그것들을 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 특정 DBMS로 데이터베이스를 구현하여 일반 사용자들이 사용하게 하는것이다. 데이터베이스 설계 시 고려사항 1. 무결성 : 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약조건을 항상 만족해야함 2. 일관성 : 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야함 3. 회복 : 시스템에 장애가 발생했을 떄 장애 발생 직전의 상태로 복구할 수 있어야 함 4. 보안 : 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함 5. 효율성 : 응답시간의 단축, 시스템의 생산성, 저장 공간의..

[DB기초] 데이터 모델의 개념과 구성요소 [내부링크]

데이터모델이란? 1. 데이터 모델은 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화 하여 체계적으로 표현한 개념적 모형이다. 2. 데이터 모델은 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약조건 등을 기술하기 위한 개념적 도구들의 모임이다. 3. 현실 세계를 데이터베이스에 표현하는 중간 과정, 즉 데이터베이스 설계 과정에서 데이터의 구조를 논리적으로 표현하기 위해 사용되는 도구이다. 4. 데이터의 구조(Schema)를 논리적으로 묘사하기 위해 사용되는 지능적 도구이다. 데이터모델의 종류 개념적 데이터 모델 1. 개념적 데이터 모델은 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다. 2. 개념적 데이터 모델은 속성들로 기술된 개..

[DB기초] 데이터베이스 언어란 무엇인가 (DDL,DML,DCL) [내부링크]

데이터베이스 언어란? 1. 데이터베이스 언어(Database Language)는 데이터베이스를 구축하고 이용하기 위한 데이터베이스 시스템과의 통신 수단이다. 2. 데이터베이스 언어는 DBMS를 통해 사용되며, 기능과 사용 목적에 따라 데이터 정의 언어, 데이터 조작 언어, 데이터 제어 언어로 구분된다. 데이터 정의 언어(DDL) 1. 데이터 정의 언어(DDL)는 DB구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어이다. 2. 데이터 정의 언어는 번역한 결과가 데이터 사전(DataDictionary)이라는 특별한 파일에 여러개의 테이블로서 저장된다. 데이터 정의 언어(DDL)의 기능 1. 외부 스키마 명세를 정의한다. 2. 데이터베이스의 논리적, 물리적 구조 및 구조 간의..

[DB기초] 스키마란 무엇인가? [내부링크]

스키마란? 1. 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다. 2. 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. 3. 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나눠진다. 스키마의 특징 1. 스키마는 데이터 사전(Data Dictionary)에 저장되며, 다른 이름으로 메타데이터라고도 한다. 2. 스키마는 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어진다. 3. 스키마는 시간에 따라 불변인 특성을 갖는다. 4. 스키마는 데이터의 구조적 특성을 ..

[DB기초] DBMS의 기능 및 DBMS가 필요한 이유 [내부링크]

DBMS가 필요한 이유 DBMS란? 1. DBMS란 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어이다. 2. DBMS는 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템으로 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해 준다. 3. DBMS는 데이터베이스의 구성, 접근방법 , 유지관리에 대한 모든 책임을 진다. 데이터베이스 데이터구성 데이터베이스를 이용하는 방식에서는 각 업무 처리에 필요한 자료들의 중복을 최소화 하여 한 곳에 모아서 구성한다. DBMS사용시 효과 1. 데이터의 논리적 물리적 독립성이 보장된다. 2. 데이터의 중복을 피할 수 있어 기억공간이 절약된다. 3. 저장된 자료를 ..

[DB기초] 데이터베이스의 정의와 특징 [내부링크]

데이터베이스의 정의 데이터베이스는 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임이다. 1. 통합된 데이터(Integrated Data): 자료의 중복을 배제한 데이터의 모임이다. 2. 저장된 데이터(Stored Data): 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료이다. 3. 운영 데이터(Operational Data): 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안 될 반드시 필요한 자료이다. 4. 공용 데이터(Shared Data): 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료이다. 데이터베이스의 특징 1. 실시간 접근성(Real-Time Accessibility) : 수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능..

[DB기초] 자료와 정보의 차이점과 정보시스템 [내부링크]

자료와 정보 자료(Data) : 현실 세계에서 관찰이나 측정을 통해 수집한 단순한 사실이나 결과값으로 가공되지 않은 상태를 말한다. 정보(Information) : 의사 결정에 도움을 줄 수 있는 유용한 형태로, 자료를 가공(처리)해서 얻을 수 있는 결과이다. 정보시스템의 정의 1. 정보시스템이란 조직체에 필요한 Data를 수집, 저장해 두었다가 필요시에 처리해서 의사결정에 유용한 정보를 생성하고 분배하는 수단을 말한다. 2. 정보시스템은 사용하는 목적에 따라 경영 정보 시스템, 군사 정보 시스템, 인사 행정 정보 시스템, 의사 결정 지원 시스템등으로 구분되어 사용된다. 자료 처리 시스템 자료 처리 시스템은 사용할 자료를 처리하는 정보 시스템의 서브 시스템으로, 처리 형태에 따라 세 가지로 분류할 수 있..

[Android] 애니메이션을 활용한 슬라이드 메뉴 만들기 [내부링크]

핸드폰 디바이스는 크기가 작습니다. 고로 한 화면에 많은 기능을 넣기가 굉장히 힘이 드는데요. 자취방에 많은 물건을 가져다놓기위해 옷장안에 옷을넣고 수납장안에 물건을 넣고 하는 것처럼 어플리케이션도 한 페이지에 최대한 많은 기능을 넣기 위해서는 UI를 효율적으로 구성할 필요가 있습니다. 자취방의 서랍장처럼 한 액티비티에 모든기능을 다 띄워놓는것 보다는 사용자가 필요한경우에 액션을 취하면 숨겨졌던 기능이 나오는 방식으로도 생각해볼 수 있습니다. 그렇게하면 액티비티의 공간이 훨씬 절약되니까요. 애니메이션을 활용한 슬라이드 메뉴 만들기 프로젝트의 구성은 다음과 같습니다. FrameLayout 에는 Layout을 중첩해서 사용할 수 있습니다. FrameLayout안에 SubLayout을 만들고 android:v..

[Android] 확장 리스트뷰 만들기(ExpandableListView) [내부링크]

안드로이드 개발을 하다보면 리스트뷰안에 세부 리스트뷰를 넣고 싶을때가 있습니다. 예를들면 카테고리 메뉴나 게시판 댓글기능구현 같은 기능들이죠. 이럴때 유용하게 사용할 수 있는 기능이 있습니다. 바로 ExpandableListView입니다. ExpandableListView는 단순히 아이템을 나열하는 일반 리스트뷰와는 달리 아이템을 그룹으로 묶어 Display할 수 있기에 좀 더 깔끔한 UI를 구성할 수 있게끔 도와줍니다. 확장 리스트뷰 만들기(ExpandableListView) ※ ExpandableListView의 특징 1. ExpandableListView는 기본적으로 스크롤을 지원합니다. 2. ExpandableListView의 아이템은 원하는 모양으로 변경하는 것이 가능합니다. 3. 그룹명 왼쪽에..

[Android] 안드로이드 오픈소스 사이트 모음 [내부링크]

프로그램을 혼자 개발할려고 하면 힘들죠. 특히 개발을 하면서 디자인도 같이 병행해야 하는 어플리케이션을 만들어야 할 경우에는 더 그렇습니다. 기능보다 디자인이 더 암걸려요. 하지만 오픈소스를 사용하면 개발과 디자인을 쉽게 만들고 개발시간도 짧게 만들어줍니다. 소프트웨어가 꾸준히 발전하고 있는 이유는 바로 이런 오픈소스 덕이 아닐까요? 이번 포스팅에서는 제가 주로 사용하는 안드로이드 오픈소스 사이트에 대해서 알려드리고자 합니다. 오픈소스 라이브러리 1. Android 개발자 포털 안드로이드 라이브러리 오픈소스 무료/유료/데모 버전이 있습니다. 오래된 사이트임에도 불구하고 최근까지도 계속 업데이트되고 있는 사이트입니다. 2. 초보 개발자를 위한 안드로이드 오픈소스 라이브러리 Best27 aedi님께서 정리해..

[Android] 어플리케이션 UI 만들기(사용하기 편리한 인터페이스) [내부링크]

좋은 프로그램은 사용하기 편리해야합니다. 좁은 핸드폰 화면에 많은 기능을 넣어야하는 어플리케이션일 경우 그 중요성이 더더욱 커지죠. 특히 복잡한 스마트폰을 사용하는데 익숙치 않은 연배가 있으신 중장년층을 타겟으로 할 경우에는 어플리케이션 UI가 더 중요해지겠죠. UI (User Interface)란? 휴대폰, 컴퓨터, 내비게이션 등 디지털 기기를 작동시키는 명령어나 기법을 포함하는 사용자 환경을 뜻한다. 이용자들이 IT기기를 구동하기 위해서 접촉하는 매개체로 컴퓨터를 조작할 때 나타나는 이른바 '아이콘'이나 텍스트 형태 구동화면도 포함된다. 스마트폰의 경우 애플리케이션 아이콘 형태 및 화면 구성을 가리킬 때가 많다. - 네이버 백과사전 - 어플리케이션 UI 만들기(사용하기 편리한 인터페이스) 앞선 포스팅..

[Android] 네비게이션 드로어(Navigation Drawer) 사용법 [내부링크]

물건은 많은데 보관할 공간이 없다면 어떻게 할까요? 수납장을 하나 장만해서 정리를 하면 될것입니다. 스마트폰의 화면은 작습니다. 대부분 한뼘크기도 안되는 화면을 가지고 있죠. 하지만 스마트폰의 어플리케이션에는 생각보다 다양한 기능이 들어가야만 합니다. 공간은 없는데 기능은 많이 들어가야하니 어플리케이션에도 수납장을 하나 장만해야겠군요. 안드로이드에 네비게이션 드로어라는 기능이 있습니다. 줄여서 네비바라고 부르는 기능입니다. 위 사진은 네비게이션 드로어의 기본화면입니다. 작동법은 화면에서 왼쪽에서 오른쪽으로 쓸던지 액션바의 네비바 버튼을 누르면 튀어나옵니다. 어플리케이션 어느곳에서나 작동한다는 특징이 있기때문에 로그인이 필요한 어플리케이션일 경우 프로필정보를 주로 넣습니다. 네비게이션 드로어(Navigat..

[Android] ViewPager와 Fragment를 활용하여 효율적인 UI 구성하기 [내부링크]

어플리케이션을 만들때 가장 중요시 생각해야 할 문제가 효율적인 UI구성이 아닌가 싶습니다. 컴퓨터보다 불편한 디바이스인 핸드폰 어플리케이션의 UI는 그 중요성이 특히 강조됩니다. 카카오톡은 국민 채팅 어플리케이션입니다. 카카오톡이 국민 어플리케이션이 된 계기는 시장의 빠른선점과도 같은 이유도 있겠지만 편리한 UI도 한몫을 했다고 생각합니다. 바로 이 카카오톡의 UI가 TabLayout + ViewPager형식으로 이루어져 있습니다. 카카오톡의 UI입니다. 위와같은 구조를 이루고 있죠. 카카오톡을 사용하다보면 위의 메뉴를 눌러서 페이지를 전환할수도 있지만 손가락으로 쓸어서 페이지를 넘길수도 있죠. ViewPager를 사용하면 손가락으로 쓸어서 페이지를 넘기는 기능을 사용할 수 있게됩니다. 사용해보면 알겠지..

[Android] 안드로이드 4대 컴포넌트(구성요소)란 무엇인가? [내부링크]

안드로이드의 4대 컴포넌트는 액티비티, 서비스, 콘텐트제공자, 방송수신자 이렇게 4가지를 말합니다. 어플리케이션을 만들때 주요 구성요소이자 안드로이드의 사실상의 모든 구성요소입니다. 각각의 구성요소는 인텐트를 통해서 상호 통신을 합니다. 즉 액티비티에서 다른 구성요소를 호출할때는 인텐트를 거쳐야 한다는 것입니다. 1. Activity(액티비티) 액티비티는 UI 화면을 담당하는 컴포넌트입니다. 액티비티 역할을 하기 위해서는 자바소스에서 Activity클래스를 상속해야 하며 액티비티가 기본적으로 가지고 있는 생명주기 메소드를 재정의하여 원하는 기능을 구현하는 방식으로 제작합니다. 가장 많이 쓰이는 컴포넌트 이기때문에 굉장히 중요하다고 볼 수 있습니다. Activity(액티비티)의 특징 1. 안드로이드 어플리..

[IDE] 안드로이드 스튜디오 design editor is unavailable until a successful build 에러 해결 [내부링크]

안드로이드 스튜디오 XML편집기에서 뜨는 design editor is unavailable until a successful build 에러 해결방법입니다. 간만에 안드로이드 스튜디오를 켰더니 세팅이 충돌이 났는지 XML편집기에 위에 보이시는 것처럼 에러가 떴습니다. 아마 프로젝트 동기화과정에서 문제가 발생한 것 같은데 구글링을 통해 알아보니 고치는 방법이 매우 쉽더군요. 방법은 아래와 같습니다. 안드로이드 스튜디오 상단에 보이는 망치모양의 아이콘을 클릭해주시면 됩니다. 단축키는 Ctrl + F9입니다. 굉장히 Simple하죠? 버튼을 눌러주기만 하면 바로 고쳐집니다.

[Android] 인텐트(Intent) 화면 간 이동과 데이터 전달 [내부링크]

어플리케이션을 만들때 하나의 화면을 가지고 어플리케이션을 만들지는 않죠. 하나의 화면에 모든기능을 담기란 불가능합니다. 대부분의 어플리케이션은 많은 View를 모으고 모아서 만든 결과물입니다. 그래서 안드로이드에서는 화면간 이동과 화면간 데이터 전달이 무척이나 빈번하고 중요합니다. 안드로이드에서 페이지 전환과 페이지간 데이터 전달은 Intent를 통해서 구현할 수 있습니다. ※ 인텐트란 인텐트는 앱 컴포넌트가 무엇을 할 것인지를 담는 메시지 객체입니다. 메시지는 의사소통을 하기 위해 보내고 받는 것이지요. 메시지를 사용하는 가장 큰 목적은 다른 액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더 등을 실행하는 것입니다. 인텐트는 그들 사이에 데이터를 주고 받기 위한 용도로도 쓰입니다. 화면 전환 ..

[Android] 안드로이드란 무엇인가? [내부링크]

안드로이드란? 안드로이드는 구글에서 만든 스마트폰용 운영체제입니다. 운영체제와 미들웨어, 사용자 인터페이스, 어플리케이션, MMS 서비스 등을 하나로 묶어 서비스를 제공하며 다양한 어플리케이션을 만들어 설치하면 실행될 수 있도록 구성된 어플리케이션 플랫폼이라고도 볼 수 있습니다. 많은 사람들이 iOS(애플 운영체제)에 견주어 스마트폰과 태블릿으로 안드로이드 운영체제를 사용하면서, 안드로이드는 세계 모바일 시장에서 가장 성공한 OS라는 평가를 받고있습니다. 안드로이드는 리눅스(Linux)를 기반으로 제작되었고 언어는 자바를 사용합니다. 안드로이드의 등장 안드로이는 2005년 구글이 앤디 루빈이라는 사람이 설립한 안드로이드라는 회사를 인수하면서 시작합니다. 작은 소프트웨어 회사에 불과했던 안드로이드사는 구글..

[JavaScript] 방문할때마다 랜덤으로 변하는 이미지 구현하기 [내부링크]

이번 포스팅에서는 자바스크립트를 활용해 접속할때마다 변하는 이미지를 구현해보겠습니다. 작동원리는 자바스크립트 배열에 각각 이미지를 저장해놓고 랜덤함수를 호출해 랜덤으로 배열에 저장되어있는 이미지를 호출하는 방식입니다. 방문할때마다 변하는 이미지 구현하기 예제 이미지 경로에는 자신의 띄워줄 이미지의 경로를 써주시면 됩니다. [JavaScript] 자바스크립트란 무엇인가? [JavaScript] 자바스크립트 배열 선언 및 사용법 총정리 [JavaScript] 라디오버튼 클릭시 원하는 배경색으로 바꾸기 [JavaScript] 회원가입 폼 유효성검사 (정규식)

[JavaScript] 동적으로 테이블 만들기 [내부링크]

내가 입력하고싶은 데이터보다도 테이블의 컬럼이 많다면 남는 칼럼들은 그냥 공간만 차지할 뿐입니다. 하지만 데이터만큼 테이블의 Row가 동적으로 생성된다면?? 이 기능은 자바스크립트의 appendChild함수를 이용해 구현할 수 있습니다. 이번 포스팅에서는 자신이 입력하고있는 데이터만큼의 테이블 Row를 자바스크립트를 사용해 동적으로 생성하는 방법에 대해 알아보도록 하겠습니다. 동적으로 테이블 만들기 예제 내 친구 나열하기 자신이 입력한 친구의 숫자에 따라 테이블이 동적으로 생성됩니다. 예제를 다양하게 응용해서 활용해 보세요. [JavaScript] 자바스크립트란 무엇인가? [JavaScript] 자바스크립트 배열 선언 및 사용법 총정리 [JavaScript] 라디오버튼 클릭시 원하는 배경색으로 바꾸기 [..

[JavaScript] 라디오버튼 클릭시 원하는 배경색으로 바꾸기 [내부링크]

이번 포스팅에서는 자바스크립트로 배경색을 바꿔보는 방법에 대해 알아보도록 하겠습니다. document.bgColor 함수를 활용해 배경색을 지정해줄 수 있습니다. 예제를 보시면 바로 이해하실 수 있으실겁니다. 이 예제를 응용해 다양하게 활용해보세요. 예제는 라디오버튼에 Value값을 자바스크립트로 넘겨줘서 배경색을 바꾸는 방식입니다. 라디오버튼 클릭시 원하는 배경색으로 바꾸기 예제 노란색 녹색 파란색 빨간색 실행결과 [JavaScript] 동적으로 테이블 만들기 [JavaScript] 방문할때마다 랜덤으로 변하는 이미지 구현하기 [JavaScript] Span태그의 속성(글꼴,색상,크기,스타일) 변경하기

[JavaScript] Alert(경고창), Prompt(입력창), Confirm(선택창) [내부링크]

Alert(경고)창 Alert함수는 사용자에게 중요한 내용이나 경고창을 띄워줄 때 주로 사용하는 함수입니다. 여러가지 창 중에서 가장 많이쓰이는 기본적인 형태의 팝업창입니다. alert("어서오세요!"); Prompt(입력)창 Prompt함수는 사용자에게 입력값을 받을 수 있는 창을 띄워주는 함수입니다. 사용자에게 받은 값을 String타입의 리턴값으로 반환해주며 입력값이 없을경우에는 Null값을 리턴합니다. var userInput = prompt("당신의 이름은 무엇인가요?"+""); alert(userInput+"님 환영합니다."); Confirm(선택)창 Confirm함수는 사용자에게 Ture / False 값을 리턴받을 수 있는 팝업창을 띄워주는 함수입니다. 사용자의 액션에 따라 Ture 값과 ..

[JavaScript] Span태그의 속성(글꼴,색상,크기,스타일) 변경하기 [내부링크]

이번 포스팅에서는 자바스크립트로 HTML Span태그의 글꼴,색상,크기,스타일을 변경시키는 방법에 대해 알아보도록 하겠습니다. 다양한 위젯의 Id를 활용해 활용해 span태그 안에있는 글자를 바꾸는 예제입니다. 다양하게 응용하셔서 활용해보세요. Span태그의 속성 변경 예제 색상: 파랑 노랑 빨강 크기: 1 2 3 4 5 6 취소선 크게 작게 두껍게 기울임 위첨자 아래첨자 소문자로 대문자로 실행방법은 위의 텍스트박스에 문구를 입력하고 바꿀 글자의 색상, 크기, 속성을 설정한 뒤 미리보기를 누르시면 됩니다. [JavaScript] 주민등록번호 유효성 검사 [JavaScript] 회원가입 폼 유효성검사 (정규식) [JavaScript] 배경색 바꾸기 [JavaScript] Alert(경고창), Prompt(..

[JavaScript] 회원가입 폼 유효성검사 (정규식) [내부링크]

자바스크립트 유효성검사가 가장 필요한곳은 바로 어디일까요? 아마 회원가입 페이지 일 것 입니다. 웹사이트에서 회원가입을 하려고하면 계속 양식에 어긋난다고 다시 입력해달라는 팝업창들 많이보셨죠? 짜증났던 경험 다들 한번씩 있으실겁니다. 하지만 이 유효성검사를 통해 사용자가 회원가입시 정보를 잘못 입력하는 경우를 막아줄 수 있답니다. 회원가입 폼 유효성검사 예제 SIGN UP 회원기본정보 아이디: ※4-12자의 영문 대소문자와 숫자로만 입력 비번: ※4-12자의 영문 대소문자와 숫자로만 입력 비번확인: 메일주소: ex)[email protected] 이름: 개인정보 주민등록번호: - 예) 123456-1234567 생일: 년 월 일 관심분야: 컴퓨터 인터넷 여행 영화감상 음악감상 자기소개:

[JavaScript] 주민등록번호 유효성 검사 [내부링크]

주민등록번호에는 유효성 검사 로직이 있습니다. 그 방법은 다음과 같습니다. 맨 마지막 한 자리를 제외하고 각 자릿수의 숫자들에 각각 지정된 숫자들을 곱해서, 그 값을 모두 더합니다. 1 2 3 4 5 6 - 1 2 3 4 5 6 7 X X X X X X X X X X X X X 2 3 4 5 6 7 8 9 2 3 4 5 n1 +n2 +n3 +n4 +n5 +n6 +n7 +n8 +n9 +n10 +n11+n12 =N 각 자릿수에 지정된 수의 곱을 더한 값을 N이라고 하면, N을 11로 나눈 나머지를 11에서 뺀 수가 주민등록번호 마지막 자릿수와 일치하면 정상적인 주민등록번호입니다. 주민등록번호 유효성 검사 예제 주민등록 유효성검사 주민등록번호: - 예) 123456-1234567 [JavaScript] 회원가..

[JavaScript] 자바스크립트 배열 선언 및 사용법 총정리 [내부링크]

어느 언어에도 마찬가지겠지만 자바스크립트에도 배열이 존재합니다. 배열을 사용할 때는 어떤 경우일까요? 배열은 다수의 데이터를 저장하고 처리하는 경우에 유용하게 사용할 수 있습니다. 100개의 데이터를 처리해야한다고 칩시다. 배열을 사용하지않고 100개의 데이터를 저장시키려면 100개의 변수가 필요하겠죠? 그렇다면 값을 넣는 코드도 출력코드도 100번씩 적어야할것입니다. 굉장히 코딩하기도 힘들고 코드량도 길어집니다. 하지만 배열을 선언한다면 효율적으로 코드를 짤 수 있습니다. 100개의 주소값을 가지는 배열을 하나 선언하고 그 주소값에다가 For문을 이용해 값을 넣어주고 출력을 해준다면 굉장히 효율적인 코드가 되기 때문입니다. 자바스크립트 배열의 선언 방법 자바스크립트의 배열선언 방법은 다른 언어들과는 조..

[JavaScript] 자바스크립트란 무엇인가? [내부링크]

자바스크립트란? 자바스크립트를 한마디로 요약하자면 웹을 풍부하게 만들어주는 작고 가벼운 언어입니다. 미국의 넷스케이프 커뮤니케이션즈사(Netscape Communications)가 개발한 스크립트 언어이며. 웹 브라우저에서 실행하는 스크립트 언어를 기술합니다. 작고도 빠르기 때문에 웹문서를 동적으로 꾸밀 때 가장 널리 쓰입니다. 언어 규격은 자바의 부분 집합(subset)으로 되어 있습니다. 하이퍼텍스트 생성 언어(HTML) 문서를 작성하는 수준의 사용자가 사용하는 것을 주안점으로 하여 자바의 언어 규격으로부터 변수의 형(정수형이나 문자열형 등)을 생략하거나 새로운 클래스 정의를 할 수 없도록 하였습니다. 스크립트는 HTML 문서 속에 직접 기술하며, ‘’라는 꼬리표를 사용합니다. 프로그래밍 입문자들은 ..

[Html] 웹 폰트 아이콘 Font Awesome(폰트 어썸) 사용법 [내부링크]

웹사이트를 만들때 아이콘은 필수적인 요소입니다. 아이콘을 사용하면 방문자들에게 좀 더 직관적으로 기능에 대해 어필이 가능하죠. 웹사이트의 기능을 글로 설명하는것이아니라 아이콘 하나로 대체함으로써 좀 더 깔끔한 웹페이지 구축도 가능합니다. 웹사이트에 픽토그램(그림문자)을 쉽게 넣는 방법이 있습니다. 바로 웹 아이콘 폰트를 사용하는 것인데요. 웹 아이콘 폰트는 여러 종류가 있으나 그 중에서 Font Awesome가 제일 유명합니다. Font Awesome이란 이러한 웹 아이콘 폰트를 모아놓은 라이브러리입니다. 이번 포스팅에서는 Font Awesome의 사용법에 대해 다뤄보려 합니다. Font Awesome 공식 사이트 Font-Awesome의 장점 1. Html Font 속성이 모두 사용 가능하다. Font..

[Html] 으로 만드는 테트리스 게임 [내부링크]

HTML5은 기존 텍스트와 하이퍼링크만 표시하던 HTML이 멀티미디어 등 다양한 애플리케이션까지 표현·제공하도록 진화한 “웹 프로그래밍 언어“입니다. 이 HTML5를 사용하면 웹게임을 쉽게 만들 수 있습니다. 아래는 Html으로 만드는 테트리스 게임입니다. 아래에 war파일 형태로 소스 첨부하오니 하시고 싶으신분은 import해서 한번 해보세요.!! 테트리스 게임 [Html] 으로 만드는 간단한 장애물 피하기게임

[Html] 으로 만드는 간단한 장애물 피하기게임 [내부링크]

HTML5은 기존 텍스트와 하이퍼링크만 표시하던 HTML이 멀티미디어 등 다양한 애플리케이션까지 표현·제공하도록 진화한 “웹 프로그래밍 언어“입니다. 이 HTML5를 사용하면 웹게임을 쉽게 만들 수 있습니다. 이 HTML5를 사용하면 웹게임을 쉽게 만들 수 있습니다. 아래는 Html으로 만든 간단한 총알 피하기 게임입니다. 처음에는 총알이 느리지만 시간이 갈수록 총알도 빨라지고 많이 나오기때문에 갈 수록 어려워집니다. 아래에 소스 첨부하오니 필요하신 분들은 Import해서 한번 해보세요. 장애물 피하기게임 [Html] 으로 만드는 테트리스 게임

[Html] Span 태그 사용법 & 예제 [내부링크]

태그는 아주 다방면으로 활용이 가능한 유용한 태그입니다. 주로 와 태그와 함께 웹페이지의 일부분에 스타일을 적용시키기 위해 사용됩니다. span 태그안에 아무런 컨텐츠가 없다면 해당 부분은 아무런 변화가 없지만 span태그 내부에 객체가 들어가면 그 객체의 크기만큼 공간이 할당이 됩니다. 태그로 요소를 감싸면 CSS나 Javascript로 그 부분을 변형시키는것이 가능해 집니다. 태그 사용법 태그 속성 비고 display diplay요소 변경 width 가로크기 height 세로크기 background-color 배경색 변경 color 글자 색 변경 font-style 글자 형식 변경 margin 외부 여백설정 padding 내부 여백설정 border 테두리 설정 1. display는 태그의 요소를 변경..

[Html] div 태그 사용법 & 예제 [내부링크]

오늘은 div태그에 대해 알아보겠습니다. div태그는 Division의 약자로 웹사이트의 레이아웃(전체적인 틀)을 만들때 주로 사용합니다. div는 웹페이지에서 논리적 구분을 정의하는 태그입니다. div 태그를 사용하여 각각의 블록(공간)을 알맞게 배치하고 CSS를 활용하여 스타일을 적용할 수 있습니다. 특히 요즘에는 레이아웃 배치를 거의 Div를 활용해 구성하는 추세이기때문에 그 쓰임새는 더 중요해졌다고 말할 수 있겠습니다. div태그 사용법 & 예제 태그 속성 비고 style 스타일 width 가로 크기 height 세로 크기 border 테두리 굵기 background-color 배경 색상 float 정렬 margin 여백 1. style은 태그의 스타일을 지정해주는 것으로 다른 속성들을 사용할 수..

[Html] Margin, Padding 속성의 차이점과 사용법 [내부링크]

HTML이나 XML같은 언어를 사용하다보면 Margin과 Padding이라는 속성을 많이 보셨을겁니다. 몇몇분들은 이 두가지 속성의 의미를 잘 모르고 쓰시는 분들도 있더군요. 두 속성 다 여백을 주는 의미에서는 같지만. 분명 다른점도 존재합니다. 이번 포스팅에서는 Margin, Padding 속성에 대해 정확히 알아보도록 하겠습니다. Margin과 Padding 두가지 속성의 차이점은 위 사진 하나로 충분히 설명이 가능합니다. Margin은 Object와 화면과의 여백(외부여백)을 말하며 Padding은 Object내의 내부여백을 의미합니다. 그럼 아래 예제를 보면 완벽히 이해할 수 있으실겁니다. 예제 100*100 nomal 100*100 margin 100*100 padding 100*100 marg..

[Html] pre 태그 사용법 & 예제 [내부링크]

html안에서 아무리 Enter를 치거나 스페이스를 하여 공백을 표시한다고해서 브라우저에 Enter나 공백이 나오지는 않습니다. 그래서 우리는 Enter는 태그를 사용함으로써 구현하고 공백은 &nbsp 라는 문구를 삽입해 공백을 표현하고는 합니다. 하지만 이렇게 일일이 여러 태그를 활용하여 개행이나 공백을 넣지않아도 되는 방법이 있습니다. 바로 태그인데요. 0태그를 활용하면 태그안에서는 Enter나 Tab, Space를 다 활용할 수 있기때문에 긴 문장등을 표현할때 굉장히 효율적으로 사용할 수 있습니다. pre 태그 예제 동해물과 백두산이 마르고닳도록 하느님이 보우하사 길이 보우하세 무궁화 삼천리 화려강산 대한사람 대한으로 길이보전하세 만약 pre태그를 활용하지않고 이렇게 애국가를 치게 되면 Enter가..

[Html] 테이블안에 테이블 충첩하기 [내부링크]

코딩은 응용하기에 따라 창의적인 결과물을 낼 수 있는 언어입니다. 혹시 테이블안에서도 테이블이 들어간다는 사실 알고 계신가요? 잘 사용하지는 않지만 이 방법도 적재적소에 적절히 사용하면 괜찮은 결과물을 얻어낼 수 있습니다. 예를 들어볼까요? 어떤 개발자는 레이아웃 기본 틀을 구성하는 방식으로 테이블안에 테이블을 넣어 위치를 조절한다고 합니다. 또 저는 웹사이트에서 사진갤러리를 만들때 테이블을 여러개 중첩해서 사진게시판을 구현한 적이 있습니다. 은근히 유용한 방법입니다. 테이블안에 테이블 넣기 [Html] 테이블(Table) 사용법 총정리(만들기,테두리,병합,정렬,배경색 등등) [Html] Pre태그 사용법 & 예제 [Html] Margin, Padding 속성의 차이점과 사용법 [Html] Div 태그 ..

[Html] 테이블(Table) 사용법 총정리(만들기,테두리,병합,정렬,배경색 등등) [내부링크]

HTML을 하다보면 굉장히 많이 사용하는 태그가 바로 일것입니다. 바로 표를 만들어주는 HTML태그인데요. 표 뿐만 아니라 갤러리를 만들 수도 있고 지금은 잘 사용하지 않습니다만 웹사이트 전체의 레이아웃 공간을 배치할때도 사용할 수 있는 등 매우 다양하게 응용이 가능하여 굉장히 많이 사용되는 태그중 하나입니다. 이번 포스팅에서는 HTML의 테이블을 만드는 모든 기법에 대해 다뤄보려 합니다. 테이블 만들기 주제 태그 비고 테이블의 구성 요소 테이블을 만드는 태그 테이블의 헤더부분을 만드는 태그 테이블의 행을 만드는 태그 테이블의 열을 만드는 태그 테이블을 만드는 순서는 다음과 같습니다. 먼저 제일 바깥쪽에는 태그가 들어갑니다. 그리고 가장 위에는 라는 테이블 헤더 태그를 사용합니다. Default값은 굵은..

[Html] 문단을 나누는 P태그 사용법 [내부링크]

HTML에서 문단을 나누는 태그는 P태그입니다. Paragraph, 즉 문단의 약자로, 하나의 문단을 만들 때 쓰여지는데 이 P태그를 활용하여 문단의 정렬, 배경색 등을 바꿀 수 있습니다. 많은 분들이 BR태그와 P태그를 동일한 태그라고 생각하시는 분들이 많은데 이 두가지 태그는 분명한 차이점이 있습니다. 바로 개행의 횟수죠. BR태그는 사용한 횟수만큼 개행을 합니다. 방금 4번을 했으니 개행을 4번을 했겠군요. 하지만 P태그는 아무리 많이 사용하더라도 한번만 개행합니다. 문단을 나누는 P태그 사용법 태그 속성 비고 align="left" 왼쪽정렬 align="right" 오른쪽정렬 align="center" 가운데정렬 align="justify" 맞춤정렬 P태그에서 가장 많이 사용하는 속성은 바로 al..

[Html] UL 태그, OL태그, DL태그, LI태그 사용법 [내부링크]

이번 포스팅에서는 HTML의 각종 목록 태그에 대해서 알아보도록 하겠습니다. 목록태그를 잘 활용하신다면 웹사이트에서 보기 좋은 목록을 쉽게 만들 수 있습니다. 메뉴를 만들때, 안내표를 만들때 주로 사용합니다. UL태그, OL태그, DI태그, LI태그 사용법 속성 태그 비고 목록 태그 UL 글머리 기호를 앞에 붙여 목록을 만드는 형식 OL 번호를 앞에 붙여 목록을 만드는 형식 DL 기호 없이 문단으로 목록을 만드는 형식 LI UI와 OL내부에서 활용되는 태그 1. UL태그는 글머리 기호를 붙여 목록을 만드는 방식으로 순서가 필요없는 목록을 만들때 주로 사용합니다. 2. OL태그는 주로 순서가 필요한 목록을 만들때 사용하며 ol type="속성"을 줘 다양한 형태의 목록을 만들 수 있습니다. 3. DL는 기..

[Html] 일정시간 후 다른페이지로 보내기 (메타태그 활용) [내부링크]

혹시 웹사이트를 이용하시다가 몇 초 후 다른페이지로 보내지는 기능을 보신 경험이 있으신가요? 이것은 바로 매타태그를 활용하여 자동으로 다른페이지로 전환되게끔 구현한 것입니다. HTML을 하시는 분이라면 로 시작하는 태그를 보신 적이 있으실 겁니다. 이것은 메타태그라는 것인데 메타태그란 HTML 태그중의 하나이며 MetaData(정보에 대한 정보를) 제공하는 역할을 합니다. 이 기능을 응용하면 일정시간 후 다른페이지로 보내는 기능을 구현할 수 있습니다. 일정시간 후 다른페이지로 보내기 태그 속성 비고 META refresh 새로고침 content ~초 뒤 url 사이트 주소 메타태그는 여러가지 속성을 가지고 있지만 위에 있는 속성들이 대표적입니다. 1. refresh태그는 새로고침이라고 생각하시면 됩니다...

[Html] 옆으로 움직이는 텍스트 만들기 (MarQuee) [내부링크]

요즘은 그렇게 많이 사용하지 않는 태그인데 전광판처럼 텍스트를 움직이게 만들 수 있는 태그가 있습니다. 텍스트뿐만 아니라 사진도 가능합니다. HTML에서 텍스트나 사진을 움직이게 할 수 있는 태그는 바로 MarQuee태그인데요. 이번 포스팅에서는 HTML MarQuee태그를 사용하는 방법에 대해 알아보도록 하겠습니다. 옆으로 움직이는 텍스트 만들기 (MarQuee) 태그 속성 비고 bgcolor 배경색상 설정 width 가로 / 세로크기 설정 height 세로크기 설정 direction 스크롤의 움직임 방향 behavior 움직임의 속성 loop 움직임 반복횟수 scrollamount 스크롤 되는 거리간격 scrolldelay 스크롤의 속도 vspace 위 여백 hspace 아래 여백 MarQuee에는 ..

[Html] 하이퍼링크 A태그 사용법 (색상변경,링크설명,창 형태) [내부링크]

하이퍼링크란 "연결된 개체"를 뜻합니다. 특정 부분을 클릭해 다른 페이지로 이동을 시켜주는 기능이며 여러 개의 HTML 문서를 하나의 고리처럼 연결할 수 있습니다. 인터넷의 특성상 모든 정보를 한 페이지에서 띄울 수 없어 정보가 여러페이지로 분산될 수 밖에 없는데 하이퍼링크를 사용하면 여러페이지를 하나의 고리처럼 엮을 수 있어 굉장히 다양하게 사용되고 있습니다. 이러한 하이퍼링크를 HTML의 A태그를 활용하여 간단하게 구현할 수 있습니다. 하이퍼링크 만들기 태그 속성 비고 하이퍼링크 태그 link 방문하지 않은 하이퍼링크의 색상 alink 마우스로 클릭한 하이퍼링크의 색상 vlink 이미 방문한 하이퍼 링크의 색상 href 클릭시 이동시킬 페이지 title 마우스 Over시 나올 링크의 설명 target..

[Html] 수평선 긋기 HR태그 사용법 [내부링크]

문단을 나눌때 영역을 나누고 싶을때 자주 사용하는것이 바로 수평선 그리기 HR태그입니다. 닫는 태그 없이 한번의 태그 사용으로 간단하게 수평선을 구현할 수 있어 많이들 사용하는 방법입니다. 수평선에 색을 입히거나 비율 수평선의 굵기까지 지정할 수 있습니다. 수평선 긋기 HR태그 사용법 태그 속성 비고 태그 수평선 화면 비율/크기 조절 수평선의 색 교체 수평선 크기 조절 HR태그에는 여러가지 속성이 있으나 위의 3가지 속성이 대표적입니다. 1. width속성은 width="500px" 크기를 지정하거나 width="50%" 화면에 나타날 비율을 정할 수 있습니다. 2. color은 HR태그의 색상을 설정할 수 있습니다. 3. size속성을 활용하여 수평선의 굵기도 설정해줄 수 있습니다. 예제 1. 웹브라우..

[Html] Font 속성/스타일 (굵기,기울기,밑줄,취소선)등등 [내부링크]

HTML을 사용하다보면 글자의 속성을 바꿔주고 싶을때가 종종 있습니다. 하지만 이럴때마다 CSS를 사용해서 바꿔주는건 좀 귀찮죠. 이럴때 간편하게 사용할 수 있는 HTML 태그들을 소개합니다. Font 속성/스타일(굵기,기울기,밑줄선,취소선) 설정 속성 태그 비고 글꼴 속성/스타일 글자 굵기 글자 굵기 글자 기울기 취소선 긋기 밑줄긋기 위 첨자 밑 첨자 타자체 주변보다 크게 주변보다 작게 CSS없이 HTML에서 간단하게 구현할 수 있는 여러가지 태그들입니다. 1. 태그와태그는 글자를 진하게 만들어주는 태그로 서로 차이점은 없습니다. 2. 태그는 글자에 기울임을 줘서 이탤릭자처럼 만들어줍니다. 3. 태그는 글자에 취소선을 그어주는 태그입니다. 4. 태그는 글자에 밑줄을 그어주는 역할을 합니다. 5. 와는 ..

[블로그] Highlight.js의 각종 문제점 & 해결방법 [내부링크]

이전 포스팅에서도 언급했다시피 저는 본래 코드 하이라이터를 Syntax Highlighting을 사용했었습니다. 하지만 새로 바꾼 코드 하이라이터인 Highlight.js도 많은 문제점을 가지고 있더군요. 이번 포스팅에서는 Highlight.js의 각종 문제점에 대해 알아보고 그 문제점을 해결해보는 시간을 가져보도록 하겠습니다. 티스토리 저작권자 표시 플러그인을 사용할 수 없다. Highlight.js를 사용하면 티스토리 저작권자 표시 플러그인을 사용 할 수 없습니다. 정확히 말하자면 사용할수는 있으나 이 플러그인을 사용하는 순간 그 코드를 복사해서 다른곳에 붙여넣으면 코드에 Enter가 안먹힙니다. 개행 없이 일렬로 쭉 나열되는 상황을 목격하실 수 있을겁니다. 아래 그림처럼요. ↑티스토리 저작권자 표시..

[블로그] Syntax Highlighting vs Highlight.js (장단점 비교분석) [내부링크]

블로그를 하면서 중요한것을 꼽자면 그 중 하나에 블로그 디자인도 꼭 포함되는 것 같습니다. 제 블로그의 방문자들이 블로그가 예뻐야 오래보고싶고(?) 다른페이지도 구경하고싶고 그렇지 않겠습니까? 디자인도 이상하고 광고만 덕지덕지 붙어있는 블로그라면 들어오자마자 뒤로가기 버튼을 누르고 싶어질겁니다. 코딩블로그는 제 블로그가 아니라도 많으니까요. 이전 포스팅에서도 언급했다시피 저는 본래 본문에 소스코드를 넣을때 SyntaxHighlighting을 사용했었습니다. 하지만 이젠 그렇지 않죠. 지금은 Highlight를 사용해서 본문에 소스코드를 삽입하고있습니다. 이번 포스팅에서는 제가 SyntaxHighlighting에서 Highlight로 넘어간 이유와 SyntaxHighlighting와 Highlight의 장..

[Java] Split함수 \n 개행 단위로 문자열 자르기 [내부링크]

저는 문자열을 자를때 Split 함수를 즐겨쓰는데요. 오늘 몰랐던 사실 하나를 발견해서 포스팅합니다. 바로 Split함수에서 \n 개행단위로 문자열을 자르는 방법인데요. 당연히 문자열.split("\n");이렇게 하면 될줄 알았는데 안먹히더라구요. 알고보니 split함수에서 개행단위로 문자열을 끊으려면 문자열.split("\\n"); 이렇게 써주셔야 컴퓨터가 인식한다고 합니다. Split \n 개행단위로 문자열 자르기 예제 public class split_ex { public static void main(String[] args) { String target ="동해물과 백두산이 \n마르고 닳도록\n하나님이 보우하사 우리나라만세\n"; String[] change_target = target.spli..

[블로그] 코딩소스에 하이라이트(코드블럭) 넣는법 (Highlight.js) [내부링크]

저는 이때까지 본문에 코드를 올릴때 SyntaxHighlighting을 사용하였는데요. 계속 쓰다보니 단점이 한 두개가 아니더라구요. 그래서 다른 코드하이라이터를 찾던 중 Highlight.js를 발견하였고 비교분석 결과 Highlight.js가 더 낫다는 결론을 내렸습니다. 하이라이터를 바꾸려면 본문의 소스가 있는 부분마다 일일이 다 수작업으로 바꿔주는 작업을 해야하기에 글이 더 많아지기전에 최대한 빨리하는게 낫다는 판단하에 오늘부터 하이라이터를 차근차근 바꿔보려고 합니다. 1. 176개의 언어와 79개 스타일을 제공하고 자동으로 언어를 감지해서 스타일이 적용되며 둘 이상의 언어라도 가능하다. 2. 노트.js에서 사용 가능하며 어떠한 마크업(태그)라도 동작한다. 3. 어떠한 자바스크립트 프레임워크라고 ..

[블로그] FastBoot 상단바에 배너(사진) 넣기 [내부링크]

티스토리 블로그를 하는 사람 중 많은 사람들이 FastBoot이라는 스킨을 쓰고있습니다. 그만큼 좋은 스킨이기 때문이겠죠? 하지만 너무나도 많은 사람들이 쓰고 있어 블로그에 개성이 없어지고 있다는 사실에 슬픕니다. 그래서 블로그 상단에 배너를 달아 다른사람들과 좀 차별성을 두고자 합니다. FastBoot 상단바에 배너(사진) 넣기 1. 이런 배너창을 만드는 방법입니다. 우선 배너에 들어갈 사진이 한장 있어야 합니다. 가로는 1920, 높이는 100~130정도의 배너용 사진을 한장 준비해주세요. ※ 해상도가 큰 디바이스로 접속을하면 사진이 두개로 나올 수 있습니다. 바로 위사진처럼요. 사진이 두개로 나오면 빨간색 박스의 안처럼 뭔가 부자연스럽게 연결이 되는것을 보실 수 있습니다. 그렇기에 사진의 왼쪽부분과..

[블로그] 하이라이트 코딩소스 넣는법 (SyntaxHighlighting ) [내부링크]

제 블로그는 코딩블로그입니다. 소스코드를 올릴 일이 굉장히 많죠. 하지만 이 소스코드를 가공하지않고 그냥 올릴경우에는 굉장히 가독성이 떨어집니다. 이번 포스팅에서는 SyntaxHighlighting을 이용하여 Html을 조작하여 코드를 넣는 방법에 대해 알아보겠습니다. 티스토리 블로그에 코딩소스 넣는법 1. 먼저 SyntaxHighlighting을 사용하려면 하이라이터를 다운받아줘야합니다. 먼저 위에 첨부되어 있는 압축파일을 받으시고 압축을 풀어주세요. 2. 그런뒤 블로그-> 꾸미기-> 스킨편집에 들어갑니다. 3. html편집 -> 파일업로드를 누른뒤 압축해제파일에 있는 Script와 Styles에 있는 파일들을 자신의 블로그 파일업로드에 업로드해주세요. 4. 그런 뒤 HTML탭으로 이동하셔서 안에 자신..

[Ajax] Csv형식의 데이터 파싱하기 [내부링크]

이번 포스팅에서는 Ajax를 활용하여 다른페이지에있는 CSV형식의 데이터를 받아오는 방법에 대해 알아보겠습니다. 바로 예제를 통해서 설명해드릴게요. Csv형식의 데이터 파싱하기 먼저 이클립스 WebProject의 WebContent안에 js폴더를 만들어주시고 js파일하나를 집어넣겠습니다. myAjax.js //크로스 브라우징 처리 var getXhr = function() { var xmlhttp = null; if (window.XMLHttpRequest) { // code for modern browsers xmlhttp = new XMLHttpRequest(); } else { // code for old IE browsers xmlhttp = new ActiveXObject("Microsoft.X..

[Ajax] 웹 페이지 로딩시 로딩바 구현하기 [내부링크]

웹 페이지를 만들다보면 서버나 페이지간의 데이터를 주고받을 일이 많습니다. 서버간의 통신을 하고있을경우 데이터를 받을때까지는 약간의 delay가 발생하게 되는데 적은 양의 데이터를 주고받는 일이라면 큰 문제가 되지않겠지만 많은 양의 데이터를 주고받을때는 그만큼 delay시간도 많이 발생하게 됩니다.. 이경우 사용자에게 Progress바를 이용하여 데이터가 불러지고 있다는것을 알려주는 것이 좋습니다. 이번 포스팅에서는 JavaScript Ajax를 활용한 로딩 프로그래스 바의 구현방법에 대해 알아보겠습니다. 이번 예제에서 사용될 로딩바입니다. 다운 받아주시고 이클립스안에 넣어주세요. Ajax 통신예제는 저번포스팅에서 진행했던 예제 그대로 진행하고 거기에 로딩바만 추가해보도록 하겠습니다. 웹 페이지 로딩시 ..

[Ajax] Ajax를 활용하여 다른페이지에 있는 데이터 받아오기 [내부링크]

이번 포스팅에서는 Ajax를 활용하여 다른페이지에있는 데이터를 받아오는 방법에 대해 알아보겠습니다. 저번 포스팅에서 말씀 드렸다시피 Ajax를 사용하지 않은 웹의 흐름에서는 갱신시 새로운 URL을 다시 호출 되면서 페이지가 새로 뿌려지지만, AJAX를 사용하면 비동기 통신 방식으로 일부만을 로드해올 수 있습니다. 그럼 예제를 통해서 Ajax에서 페이지간의 통신은 어떻게 이루어지는지 확인해보겠습니다. 다음예제는 Main.jsp와 InputData.jsp를 상호간 통신해여 Main.Jsp에서 InputData.jsp에 있는 데이터들을 호출하는 예제입니다. Ajax를 활용하여 다른페이지에 있는 데이터 받아오기 Main.jsp Ajax 기본적인 통신방법 InputData.jsp 데이터 결과화면 InputData..

[Ajax] Ajax란 무엇인가? [내부링크]

Ajax란? Ajax는 JavaScript의 라이브러리중 하나이며 Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자입니다. 브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법 이며 Ajax를 한마디로 정의하자면 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이라고 할 수 있겠습니다. ※ 비동기(async)방식이란? 비동기 방식은 웹페이지를 리로드하지 않고 데이터를 불러오는 방식입니다. 이 방식의 장점은 페이지 리로드의 경우 전체 리소스를 다시 불러와야하는데 이미지, 스크립트 , 기타 코드등을 모두 재요청할 경우 불필요한 ..

[C++] MFC란 무엇인가? [내부링크]

MFC란? - 마이크로소프트 파운데이션 클래스 라이브러리(Microsoft Foundation Class Library)는 C++용 프로그램 라이브러리입니다. - 윈도용 응용 프로그램의 통합 개발 환경인 마이크로소프트 비주얼 C++에 부속되는 클래스 라이브러리입니다. - MFC를 사용하면 코딩의 효율을 극대화 시킬 수 있어 대부분의 C++ 개발자들이 사용합니다. MFC의 특징 객체 지향 프로그래밍 - C++의 특성을 그대로 이어받습니다. (객체지향, C++의 모든 문법) - 윈도우의 Object를 포함하는 시각적 객체를 사용합니다. 이벤트 처리방식 사용자 또는 시스템이 윈도우에 어떠한 동작을 했을 경우 그에 대응하여 움직이는 사건의 중심의 프로그램을 하며 (이것을 Event Driven Programmi..

[C#]으로 만드는 윈도우 폼 메모장 프로그램 [내부링크]

C# 윈도우 폼으로 만든 메모장 프로그램입니다. 열기,저장, 실행취소, 인쇄, 잘라내기, 복사, 붙여넣기, 자동줄맞춤 등등 실제 메모장에있는 대부분의 기능이 구현되어있습니다. 메모장 소스코드 프로그램 UI [C#] .NET (닷넷 프레임워크)이란 무엇인가? [C#]으로 만드는 간단한 윈도우 폼 계산기 프로그램

[C#]으로 만드는 간단한 윈도우 폼 계산기 프로그램 [내부링크]

C# 윈도우 폼으로 만든 단순한 사칙연산 계산기 프로그램입니다. 소스코드 올려드릴테니 필요하신 분 참고하시기 바랍니다. C#을 처음공부하시는분 윈도우 프로그램을 처음으로 만들어보시는분에게 참고용으로 좋을예제일듯 합니다. 계산기 프로그램 소스코드 프로그램 UI [C#] .NET (닷넷 프레임워크)이란 무엇인가? [C#]으로 만드는 윈도우 폼 메모장 프로그램

[Algorithm] 여러가지 정렬 속도 비교(정렬의 시간복잡도) [내부링크]

정렬 속도 비교 이때까지 포스팅했던 정렬들의 시간복잡도에 대해 알아보도록 하겠습니다. 아래는 정렬속도 비교에 사용하였던 코드입니다. 정렬속도 비교 프로그램 (C언어/C++) 출처 #include #include #include #define MAX_SIZE 60000 //데이터의 개수 지정 #define SWAP(x,y,t) ((t)=(x), (x)=(y), (y)=(t)) //SWAP함수 설정 int original[MAX_SIZE]; //랜덤함수로 만든 데이터를 저장할 원본 배열 int list[MAX_SIZE]; //각 정렬 알고리즘에서 사용할 데이터 배열 int n; //데이터의 개수를 받는 전역변수 설정 int sorted[MAX_SIZE]; //합병정렬에서 사용할 데이터를 저장할 배열 cloc..

[Algorithm] 퀵정렬 (빠르고 효율적인 정렬방법) [내부링크]

계속해서 o(n log n) 시간복잡도를 가지는 정렬방법에 대해 알아보겠습니다. 이번에는 퀵정렬입니다. 실무에서도 가장 많이쓰이고 속도와 효율성이 가장 좋다고도 할수있는 정렬 방식입니다. 퀵정렬 이번에도 그림을 통해 설명해드리겠습니다. 먼저 PVIOT을 정합니다. 대부분 정렬속도를 위하여 가운데 숫자를 PIVOT으로 정하는게 효율적입니다. PVIOT값과 LEFT값을 비교하여 LEFT값이 PIVOT보다 크다면 PIVOT값과 RIGHT값을 비교합니다. RIGHT값이 PIVOT보다 크다면 RIGHT커서를 왼쪽으로 이동시킨후 다시 PIVOT값과 비교합니다. RIGHT값이 PIVOT보다 작다면 LEFT값과 RIGHT값을 바꿉니다. 그런뒤 LEFT값을 오른쪽으로 한칸 옮깁니다. LEFT값과 RIGHT..

[Algorithm] 병합정렬 O(N*LogN) [내부링크]

앞선 포스팅 3개에서 버블정렬, 삽입정렬, 선택정렬에 대해서 알아보았습니다. 하지만 위의 3정렬방법은 굉장히 기초적인 정렬방법으로 시간복잡도는 O(N^2)를가지며 실무에서 잘 쓰이는 정렬방법은 아닙니다. 이번 포스팅부터는 시간복잡도 O(N * LogN)을 가지는 정렬방법에 대해 알아보겠습니다. 먼저 이번포스팅에서는 병합정렬에 대해 알려드리겠습니다. 병합정렬은 정렬할 배열을 반으로 나누어 좌측과 우측 배열을 계속하여 분할해 나간 후 각 배열내에서 정렬 후 병합하는 과정을 통해 정렬하는 알고리즘입니다. 병합정렬(합병정렬) 그림을 통해 설명해드리겠습니다. ①분할과정 먼저 정렬할 숫자들을 원소단위로 분할합니다. ②병합과정 그런 뒤 분할한 원소들을 합치면서 정렬합니다. 병합정렬 소스 코드 (C언어/C++) #in..

[Algorithm] 삽입정렬 (배열에 있는 알파벳 차례대로 정렬하기) [내부링크]

정렬에는 버블정렬, 선택정렬, 삽입정렬이 있습니다. 앞서 버블정렬, 선택정렬은 포스팅을 끝냈고 이번 포스팅은 마지막 정렬방법인 삽입정렬에 대해 한번 알아보도록 하겠습니다. 삽입정렬 삽입정렬은 기준이 되는 숫자와 그 앞에있는 숫자를 비교하여 조건에 맞게 정렬을 하는 방법입니다. 0번째 인덱스는 앞쪽에있는 숫자가 없기 때문에 정렬의 시작은 1번째 인덱스로 시작을 합니다. 삽입정렬로 배열 문자(알파벳)값 아스키순서로 차례대로 정렬하기 (C언어/C++) #define num 7 char number[num] = {'C','A','D','G','F','E','B'}; for (int i = 1; i < num; i++) { int target = number[i]; // 기준 int cur = i - 1; // ..

[Algorithm] 선택정렬 (배열에 있는 정수값 내림차순 정렬하기) [내부링크]

저번 포스팅에서는 버블 정렬에 대해 알아보았는데요 이번 포스팅에서는 선택 정렬에 대해 한번 포스팅해보려 합니다. 버블 정렬이 뒤에서부터 차례대로 정렬하는 방법이라면 선택 정렬은 버블 정렬과는 반대로 앞에서부터 차례대로 정렬하는 방법입니다. 예제는 배열에 있는 정수 값을 내림차순으로 정렬하는 방법을 들고 왔습니다. 오름차순으로 바꾸려면 예제 문의 IF문의 부등호를 반대로 바꿔주시면 간단하게 구현 가능합니다. 선택 정렬 선택 정렬은 배열 내의 기준이 되는 수(A[0]) 와 나머지의 수를 비교하여 오름차순일 경우 낮은 수, 내림차순일 경우 높은 수를 앞으로 보내는 방식입니다. 첫 번째 FOR문 위와같은 방법으로 첫번째 for문에서 기준값 [0]번째 Index의값과 나머지 값을 비교하여 가장 낮은수를 앞으로 보..

[Algorithm] 버블정렬 (배열에 있는 정수값 오름차순 정렬하기) [내부링크]

정렬(Sort)하는 방법을 포스팅합니다. 정렬하는 방법은 대표적으로 버블정렬,선택정렬,삽입정렬 이렇게 3가지가 있습니다. 차례대로 한번 알아보도록 하죠 먼저 이번 포스팅에서는 버블정렬에 대해 포스팅하도록 하겠습니다. 예제는 배열에 있는 정수값을 오름차순으로 정렬하는 예제를 들고왔습니다. 내림차순으로 정렬하실경우 예제의 IF문의 부등호방향만 바꿔주시면 됩니다. 버블정렬 버블정렬은 배열내의 두개의 인접한 Index를 비교하여 더 큰 숫자를 뒤로 보내 차곡차곡 쌓아 정렬하는 방법입니다. 결론적으로 말하자면 배열의 뒷쪽부터 정렬하는 방법이라고 생각하시면 될 듯 합니다. ① for문에서 [0]번째 Index와 [1]번째의 Index값을 비교하여 더 큰 숫자를 뒤로 보내줍니다. ② for문에서도 마찬가지로 [1]번..

[C#] .NET (닷넷 프레임워크)이란 무엇인가? [내부링크]

닷넷(.NET)이란? 닷넷 프레임워크(.NET Framework)는 마이크로소프트사에서 제공하는 윈도우 프로그램 개발 및 실행환경입니다. 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하여 코딩의 효율성을 증대시켰습니다. .NET의 특징은 CLS(닷넷 프레임워크의 언어가 반드시 지켜야 하는 언어 스펙)을 따르는 언어라면 어떠한 언어라도 닷넷 프레임워크에서 실행 가능하며 CLR이라는 가상 기계 위에서 작동하기 때문에 플랫폼에 독립적이며 궁극적으로 프로그래머가 코딩(특히 윈도우 프로그램)을 하는데 더 편한 환경을 제공해줍니다. 닷넷(.NET)이 나온배경 2000년대 들어서며 썬마이크로시스템즈(현오라클)의 자바가 새로운 차세대 언어로 각광받으면서 마이크로소프트측에서도 자바의 장점을 수용하여 새로운 언어를 ..

[자유여행] 일본 오사카 여행 후기 (쿠로몬 시장, 아사히 맥주공장, 돈키호테) [내부링크]

일본 오사카를 다녀왔습니다~ 친구가 일어일문인지라 통역이 가능하고, 갑자기 가자고 한 여행, 비행기 15만원에 4박 5일 여정을 다녀왔습니다 친구가 일정과 모든 것을 다 찾은지라 솔직히 갔다와서도 어디가 어딘지... 잘은 모르겠지만 일단 갔다 왔으니까? 조금이라도 보탬이 되고자 올려봅니다 4박 5일간 묵게된 숙소입니다~ 게스트 하우스! 저희가 생각하는 여럿이 자는 곳이 아니라, 요로코롬 혼자 방에서 잘 수 있도록 되어있습니다 가격은 인당 6만원 정도 들었습니다 생각보다 깔끔하고 혼자 있기 좋은 방이었어요 낮에 출발하여 짐을 풀고 처음 들린 곳, 도톤보리 현지에 가서 미즈와리 한잔~ 캬~~ 이곳은 물가가 비싼 일본에서 찾아보기 힘든, 모든 메뉴가 약 3천 9백원인 곳입니다 덕분에 2시간이라는 시간제한이 있..

[Java] 형변환 Casting(문자형,정수형,실수형) [내부링크]

문자열에있는 숫자를 계산하고 싶은경우, 스트링변수에 Int값을 넣고싶은경우등등 코딩을 하다보면 어떤 변수형을 다른 형으로 강제 치환해야 할 경우가 많습니다. 이번글에서는 자바의 형변환에 대해 포스팅하겠습니다. 문자 -> 숫자 1. String to Int 가장 많이 사용한다고 생각됩c니다. 자바 Integer클래스의 parseInt함수와 valueOf 함수로 변환 시켜줄 수 있습니다. --Integer.paseInt(String값) --Integer.valueOf(String값) String s_num = "10"; int i_num = Integer.parseInt(s_num); --String -> Int 1번방식 int i_num2 = Integer.valueOf(s_num); --String ->..

[Java] 문자열 공백제거(Trim) 사용법 & 예제 [내부링크]

프로그래밍을 하다 보면 예상치 못한 경로로 문자열에 공백이 들어오는 경우가 종종 발생합니다. 이럴 경우 공백이 어디서부터 들어왔는지 소스가 길어질수록 찾아보기엔 굉장히 귀찮죠. 이럴 경우 그냥 공백이 들어온 스트링 값을 그냥 제거해주는 방식으로 프로그래밍을 진행할 수도 있습니다. 이럴 때 유용하게 사용하는 함수가 Trim이라는 함수입니다. Trim 문자열을 입력받거나 문자열을 합칠경우 가끔 쓸데없는 공백이 따라 들어오곤 합니다. 그럴 때 유용하게 사용되는 Trim함수입니다. 사용법도 매우 간단합니다. 사용법 String str = " 문자열에 공백이 있습니다. "; System.out.println(str); str = str.trim(); System.out.println(str); 그냥 문자열.tri..

[Java] 문자열 치환(Replace) 사용법 & 예제 [내부링크]

String변수나 배열 같은 곳에 많은 양의 데이터들이 들어가 있을 경우 자신이 바꾸고자 하는 값만 골라서 바꾸기란 쉽지 않습니다. 이럴 때 유용하게 쓰일 수 있는 함수가 바로 Replace함수입니다. 이번 포스팅에서는 문자열 치환 함수 Replace, ReplaceAll, ReplaceFirst 함수의 사용법에 대해서 알아보겠습니다. Replace String a = "무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 "; //replace([기존문자],[바꿀문자]) a= a.replace("대한", "민국"); System.out.println(a); //결과값 : 무궁화 삼천리 화려강산 민국사람 민국으로 길이 보전하세 String replace(CharSequnce target, CharSeq..

[Java] 문자열 붙이기(Concat, StringBuffer(Append)) 사용법 & 예제 [내부링크]

자바에서는 문자열을 붙이는 방법이 여러 가지 있습니다. String a = "첫번째 텍스트입니다. "; String b = "두번째 텍스트입니다. "; System.out.println(a+b); //결과값 : 첫번째 텍스트입니다. 두번째 텍스트입니다. 대부분 이런식으로 문자열에다가 + 를 시키는 방법으로 문자열을 합치지만 이번 포스팅에서는 자바 String클래스의 문자열 붙이기 함수인 Concat과 Append 함수를 활용하여 문자열을 붙이는 방법에 대해 알아보도록 하겠습니다. Concat Concat과 +연산자는 같은 문자열을 합치는 기능을 합니다. 하지만 동작하는 방식이 다른데요. Concat은 합친 문자열을 String으로 생성해줍니다. 하지만 + 연산자는 문자열을 먼저 StringBuilder로..

[Java] 문자열 자르기(Substring, Split) 사용법 & 예제 [내부링크]

자바 스트링 클래스에는 사용하기 편리하도록 만들어놓은 여러 가지 함수가 있습니다. 이번 포스팅에서는 그 함수들 중 문자열 자르기에 관련된 함수들을 한번 알아보도록 하겠습니다. SubString 문자열 자르기 하면 가장 먼저 생각나는 함수입니다. 문자열 함수에 익숙해지시면 SubString함수와 다른 함수들을 섞어서 정말 다양하게 활용할 수 있는데요. 사용법에 대해 한번 알아보도록 하겠습니다. 활용 예제로는 마지막 3글자 자르기, 특정 문자 이후의 문자열 자르기, 특정(단어) 부분만 자르기를 준비했습니다. 우선 문자열을 자르기에 앞서 문자열이 어떻게 배치되어있는지 Index값부터 살펴야 문자열을 자를 수 있습니다. String 클래스 자체가 char을 여러 개 붙여놓은 효과를 주기 때문에 String 클래..

[Web] 알고리즘 공부 사이트 추천 5가지 [내부링크]

제 4차산업혁명이 터지면서 코딩 교육이 무척이나 중요해졌습니다. 많은 사람들이 프로그래머를 꿈꾸고 있죠 코딩을 하다보면 매순간 오류에 직면하고 그 오류를 해결하는 것이 반복됩니다. 그래서 그 오류를 잡을 수 있는 능력이 중요해요. 오류를 잘 잡는 사람들이 코딩도 잘하더라구요. 그 능력은 알고리즘 문제를 풀면서 능력을 상승시켜줄 수 있습니다. 다들 네이버나 카카오 삼성전자 이런 대기업에 취직하는것을 목표로 합니다. 꿈은 크게 가져야 하니까요 ㅎㅎ 알고리즘 대회에서 입상을 하게 되면 이런 대기업에 취직할 수 있는 길이 열리니까 꼭 관심가져보시는게 좋을듯해요. 1. 백준 알고리즘 가장 유명한 알고리즘 사이트입니다. 어마어마하게 많은 문제가 있어요. 쉬운문제는 정말 해도해도 너무할정도로 쉽고 어려운문제는 해도해..

[Web] 무료 코딩 공부 / 학습 사이트 추천 [내부링크]

요새 제 4차산업혁명이 터지면서 코딩 교육이 무척이나 중요해진 시기라고 합니다. 저도 대학다닐때 프로그래머를 꿈꾸며 열심히 아래의 사이트를 보며 열심히 공부했었던 기억이 나네요. 또 저도 학생들에게 교육을 몇번 한 적이 있었는데 저는 그렇게 남들에게 가르쳐주는것이 어려운지 몰랐어요. 강의 초창기때의 저는 말도 막 버벅거리고 횡설수설하고 쪽팔림이란 쪽팔림은 다팔았죠... ㅠㅠㅠ 하지만 아래 사이트의 강사님들은 가르치는 스킬이나 수준이 최상급에 속해있는 강사분들입니다. 제가 이때까지 코딩을 배우며 느낀 결론은 프로그래밍은 책을보며 이론위주의 공부를 하는것 보다는 동영상을보며 실습위주의 공부를 하는것이 이해하기도 쉽고 코딩도 빨리 배운다라는 사실입니다. 이에 프로그래밍 공부를 할 수 있는 유용한 사이트를 몇개..

[일상] 부산 동래 닭발 맛집 발빠닭 [내부링크]

매콤한 닭발이 먹고 싶어 동래에서 찾은 발빠닭~ 처음 맛집을 찾다가 닭발에 이끌려 갔던 곳, 메뉴는 여러가지가 있습니다. 저는 개인적으로 뼈닭발을 좋아합니다. 닭발은 뜯는 맛이죠!! 몇번을 간지라 똥집튀김, 주먹밥, 국물닭발 등 많이 먹어 보았고 대체적으로 음식이 맛있습니다. 발빠닭은 맵기를 조절할 수 있습니다. 5가지 중 저는 도전까지 먹어보았습니다. HOT이 불닭 맵기정도라고 하시고, 도전부터는 다른 고추가 첨가되어 HOT과 차이가 많이 납니다. 저는 워낙 매운 것을 좋아하는지라... 도전은 정~말 매운 것을 좋아하시면 도전해 보세요. (참고로 저는 불닭을 전혀 매워하지 않습니다^^) 계란찜이 먼저 나왔습니다. 받자마자 계란에서 연기 화산폭발!! 계란이 많이 들어가 단단하고 양이 많습니다. 계란찜은 ..

[일상] 부산 서면 맛집 뎐벼락 참숯 대구막창 [내부링크]

오랜만에 서면 나들이, 막창을 찾았습니다 찾다가 뎐벼락에 가게 되었죠. 그런데!! 어머나, 2년전 아무생각 없이 들어갔던 그 막창집!! 그때는 2차로 가서 정신없이 먹었는데,왠걸.. 더 맛있어 진 것 같습니다. 메뉴는 간단하면서도 여러가지 있습니다. 저는 곱창, 막창을 모두 좋아하는 관계로.. 2명에서 맨 위에 있는 막창(2인분)+양념막창(2인분)을 먹었죠. 둘이서 천천히 먹기 좋은 양인 것 같습니다. 기본적인 세팅입니다. 생수를 좋아하는 않는 저를 위해, 보리차 물이 나왔습니다.(행복..>.

[일상] 서울 문정동 HOTTO(호또) 치킨 [내부링크]

HOTTO(호또) 치킨집을 다녀왔습니다. 처음에는 명란마요를 보고 들어갔지만, 더 유명하다는 통후추 치킨을 먹어보았습니다. 어딜가든 기본적인 음식을 먼저 먹어봐야 하니까요~! 메뉴는 여러가지가 있었지만, 역시 기본, 다음에는 명란마요 도전! 치킨 등장! 혼자서 일하시는지 조금 바빠보여서 기다리며, 맥주부터 홀짝홀짝~ 내부나 분위기상 호프집처럼 생겼습니다. 하지만 배달도하고 다른 여느 닭집과 다를 것 없습니다. 처음에는 후추를 싫어하는 것은 아니지만, 통후추라고 해서 걱정했어요. 너무 덩어리째 씹히는건 아닐지, 걱정도 잠시, 통후추를 살짝 으깨서 반죽에 입혀 튀기는 것 같습니다. 그래서 씹히더라도 약간 매콤한 정도, 거슬리거나 그러지 않고 매력터지는 맛! 특이하고 오묘하면서도 매력이 있는 것 같습니다. 치..

[일상] 서울 광장시장 맛집 부촌 육회 [내부링크]

얼마 전 광장시장을 다녀왔습니다. 이것저거 먹거리가 무진장 많아 유명한 광장시장, 예~전에 한번 갔다와서 요번에 갔다왔는데요, 육회가 유명하다는 것을 처음알았던... 왜 이 맛있는것을... 그리하여 맛집을 하나 소개하고자 합니다. 시장이 넓어서 길 찾기가 힘들긴 했습니다 골목으로 들어서면 이렇게 간판이 걸려 있답니다. 사람이 많아서 잠깐 대기하는 동안 포토타임~ 회전율이 빠르고 바빠서 고기를 잘라 보관하고 있습니다. 간, 천엽, 육회를 썰어서 보관하고 있는데, 저렇게 썰어놓고 보관하면 마르거나, 먼가 좋지 않을것 같다는 생각을 하게 되죠. 하지만, 실제로는 사람이 끊임 없이 들어오기 때문에, 그럴 걱정을 할 시간이 없습니다. 드디어 입성! 메뉴는 여러가지가 있습니다. 하지만, 시장에서 순대와 국수, 빈대..

[MSSQL] 동적 피벗 테이블 만들기 [내부링크]

이번 포스팅에서는 앞선 두 포스팅에서 배웠던 문자열 합치기 : STUFF, FOR XML PATH 문자열 구분자 추가 : QUOTENAME 기법들을 활용해 동적 피벗테이블을 만들어보도록 하겠습니다. 동적 피벗 테이블 만들기 예제 테이블 DEPT, EMP를 이용해서 연도별(DT) 부서 입사 현황을 조회한다 (회사코드(COMPANY):0327, 사업장코드(BIZAREA):1000 데이터로 한정함) 1. PIVOT을 이용해 년도를 칼럼으로 표시 2. 동적컬럼 생성 시 STUFF, QUOTENAME 함수를 이용하여 입사자가 있는 년도만 표시 결과 화면 예시 동적 피벗 만들기 DECLARE @COL AS NVARCHAR(MAX) --변수선언 DECLARE @QUERY AS NVARCHAR(MAX) --변수에 쿼리..

[MSSQL] STUFF와 FOR XML PATH를 활용한 문자열 합치기 [내부링크]

MSSQL에서 문자열을 합치는 방법은 여러가지가 있습니다. 이번 포스팅에서는 테이블을 Select 해온 결과값을 문자열로 쉽고 간편하게 만들 수 있는 방법을 소개해 드리도록 하겠습니다. STUFF, FOR XML STUFF : 지정된 문자열의 시작위치와 크기를 지정하여 원하는 문자로 치환하는 함수입니다. 사용법 STUFF('[문자열]','[시작위치]','[크기]','[치환문자]') FOR XML : 쿼리의 실행 결과를 XML형식으로 만들어줍니다. 모드 1. RAW : 행 집합의 각 행마다 SELECT문으로 반환되는 단일 행(ROW)를 생성합니다. 2. AUTO : SELECT문의 결과 XML에서 중첩된 구조를 생성합니다. 3. EXPLICIT : XML모양을 자신의 의지대로 특성과 요소를 혼합할 수 있습..

[MSSQL] 문자열 구분자 추가 (QUOTENAME) 함수 사용법 & 예제 [내부링크]

QUOTENAME란? 문자열을 합치다 보면 가끔 문자열 앞에 따옴표 혹은 쉼표를 붙여준다거나 대괄호로 묶어줘야 할 경우가 있습니다. 그럴 때 유용하게 쓰이는 함수가 바로 QUOTENAME이라는 함수인데요 QUOTENAME이라는 함수는 문자열 앞뒤로 구분자를 넣어주는 기능을합니다. 구분자를 입력하지 않았을경우에는 대괄호가 추가되는 함수입니다. 사용법 --문법-- QUOTENAME ( '대상문자열' ,구분자 ) --EX-- PRINT(QUOTENAME ('ABCD')) ==> [ABCD] PRINT(QUOTENAME ('ABCD','''')) ==> 'ABCD' 예제 테이블 EX_TABLE에는 다음과같이 DT칼럼의 데이터 7개가 있다. 이 데이터를 대괄호로 묶어서 한 줄로 출력하시오 DECLARE @COL ..

[MSSQL] BETWEEN절 사용법 & 예제 [내부링크]

BETWEEN구문 데이터베이스를 사용하다 보면 ~어디서부터 ~어디까지의 데이터를 출력하고 싶은 경우가 있습니다. 대표적인 경우가 날짜죠 ~일부터 ~일까지의 데이터를 출력해라!! 물론 X보다 크고 Y보다 작은 데이터를 찾아라 이런 식으로도 할 수 있지만 더 간결하고 유용하게 사용할 수 있는 문법인 BETWEEN 절을 소개합니다. 사용법 SELECT * FROM [테이블명] WHERE [칼럼명] BETWEEN [조건1] AND [조건2] 예제 --나이(AGE)가 20살~25살까지의 사원조회 SELECT * FROM MY_TABLE WHERE AGE BETWEEN 20 AND 24 --사원번호(NO_EMP)가 '0000'~'0010'까지이거나 나이(AGE)가 30살~40살인 사원조회 SELECT * FROM ..

[MSSQL] IN절 사용법 & 예제 [내부링크]

IN절 데이터베이스를 사용하다 보면 이런 경험들 있으실 겁니다. XX이거나 XX이거나 XX이거나 XX이거나 이런 경우요 물론 OR을 활용해서 처리를 할 수도 있지만 IN이라는 좀 더 간편한 방식이 있습니다. 사용법 SELECT * FROM [테이블명] WHERE [칼럼명] IN ( [조건1],[조건2],[조건3] ) 예제 --나이가 20살,24살,26살인 사원 조회 SELECT * FROM MY_TABLE WHERE AGE IN(20,24,26) --사원번호가 '0000','0004','0008'이고 나이가 20살 24살 28살인 사원 조회 SELECT * FROM MY_TABLE WHERE NO_EMP IN('0000','0004','0008') AND AGE IN(20,24,28) [MS_SQL] L..

[MSSQL] LIKE절 사용법 & 예제 [내부링크]

LIKE구문 쿼리문 WHERE절에 주로 사용되며 부분적으로 일치하는 칼럼을 찾을때 사용됩니다. SELECT * FROM [테이블명] WHERE LIKE [조건] _ : 글자숫자를 정해줌(EX 컬럼명 LIKE '홍_동') % : 글자숫자를 정해주지않음(EX 컬럼명 LIKE '홍%') 사용법 --A로 시작하는 문자를 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A%' --A로 끝나는 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A' --A를 포함하는 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A%' --A로 시작하는 두글자 문자 찾기-- SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A_'..

[MSSQL] 조건문 (CASE WHEN, IF) 함수 사용법 & 예제 [내부링크]

프로그래밍 언어 중에서 조건에 따라 작업방식을 달리 할 수 있는 조건문이라는 것이 있습니다. 대표적인 문법이 IF문과 CASE문인데요. MSSQL에서도 조건절인 CASE문과 IF문을 지원하니 한번 활용해보시는 것도 좋을 것 같습니다. CASE WHEN 가장 많이 쓰이는 조건문입니다. 조건에 따라 값을 지정해 주는 역할을 합니다. --CASE사용법-- CASE WHEN 조건절 THEN 참일때 값 ELSE 거짓일때 값 END 컬럼명 --테이블(MY_TABLE)에서 성별(GENDER)이 001이면 여, 그게아니면 남자로 검색-- SELECT DISTINCT GENDER, CASE WHEN GENDER = '001' THEN '여' ELSE '남' END AS 성별 FROM MY_TABLE 다중 CASE WHE..

[MSSQL] 공백제거 (LTRIM,RTRIM) 사용법 & 예제 [내부링크]

데이터베이스를 하다 보면 가끔 엉뚱한 부분에 공백이 들어가서 애먹는 경우가 많습니다. 대표적으로는 decleare 한 변수에 varchar값을 계속해서 + 시킬 때 공백이 들어가는데요. 이렇게 예상치 못한 공백 값이 들어갔을 때 공백을 효율적으로 제거해주는 함수가 있습니다. 이번 포스팅에서는 MSSQL 공백 제거 함수 LTRIM, RTRIM에 대해 알아봅니다. LTRIM 해당 문자열의 왼쪽에 있는 공백을 제거해주는 함수 사용법 --문법-- LTRIM(문자열) --예제-- DECLARE @SQL NVARCHAR(200) SET @SQL = ' SPACE' LTRIM(@SQL) 문자열을 합 칠경 우 왼쪽에 공백이 생기는데 이를 제거할 때 요긴하게 사용됨 DECLARE @NUM INT, @STR NVARCHA..

[MSSQL] 날짜함수(GETDATE,DATEADD,DATEPART,DATEDIFF) 사용법 & 예제 [내부링크]

MSSQL에서는 날짜를 여러 가지 형태로 가공할 수 있는 함수들을 많이 제공하고 있습니다. 이번 포스팅에서는 대표적인 날짜 함수(GETDATE, DATEADD, DATEPART, DATEDIFF)의 사용법에 대해서 알아보도록 하겠습니다. GETDATE GETDATE함수는 현재 컴퓨터에 설정되어있는 시스템 시간을 불러와주는 함수입니다. 2018-03-31 오전 01:40:30 위와 같이 GETDATE() 함수는 년월일은 물론이거니와 분, 초 까지도 구해줍니다. 하지만 모든 사용자들이 위와 같은 형식으로 사용하지는 않겠죠. 여기서 우리는 우리가 표시할 시간이나 날짜만 적절히 뽑아 올 수도 있고 날짜 형태를 바꿔서 출력할 수도 있습니다. 사용법 --현재 날짜 출력-- SELECT GETDATE() AS 시스템..

[MSSQL] 문자열 치환 (REPLACE,STUFF) 사용법 & 예제 [내부링크]

데이터베이스를 사용하다보면 테이블안에있는 데이터의 특정 문자들만 치환 해줘야 하는 일이 생깁니다. 이번 포스팅에서는 특정 문자열을 바꿔주는 REPLACE함수와 STUFF함수에 대해서 알아보도록 하겠습니다. REPLACE 지정된 문자열 값을 특정 문자열로 바꿔주는 함수입니다. 사용법 --문법-- REPLACE('문자열','치환예정문자','치환할문자') --예시-- REPLACE('ABCDEFG','DEF','XXX') 예제 --MY_TABLE에서 이름(NM_KOR)을 이씨를 김씨으로 바꿔서 출력-- SELECT REPLACE(NM_KOR,'이','김')AS 사원명 FROM MY_TABLE STUFF 지정된 문자열의 시작위치와 크기를 지정하여 원하는 문자로 치환하는 함수입니다. 사용법 --문법-- STUFF..

[MSSQL] 데이터 타입변환 (CONVERT,CAST) 사용법 & 예제 [내부링크]

MSSQL에서 사용되는 데이터 타입 변환 함수는 CONVERT함수와 CAST함수입니다. 두 함수 다 하나의 유형에서 다른 유형으로 데이터를 변환하는 데 사용합니다. 쓰는 방식만 조금 다르고 하는 일은 같습니다. 자세한 설명은 해당 사이트에 있으니 참조하시기 바랍니다. Conver함수와 Cast함수 사용링크 Convert 개인적으로 가장 많이 사용하는 데이터 변환 함수라고 생각합니다. 날짜 변환하는데도 유용하게 사용 가능합니다. 참고로 부동 소수점 또는 숫자에서 정수로 변환할 때 CONVERT() 함수는 결과를 자르고 다른 변환일 경우에는 반올림합니다. 사용법 --문법-- CONVERT(data_type[(length)], expression[style]) --예시-- SELECT CONVERT(NVARC..

[MSSQL] 문자열 자르기 (LEFT,RIGHT,SUBSTRING) 사용법 & 예제 [내부링크]

LEFT Left함수는 문자열을 받아서 왼쪽부터 원하는 길이만큼 자르는 함수이며 주민등록번호만으로도 생년월일을 구하거나 이름을 잘라서 성만 출력하는 등 다양한 방법으로 활용 가능합니다. 사용법 --문법-- LEFT(문자열,길이) --예시-- LEFT(NAME,2) 예제 --테이블(MY_TABLE)에서 이름(NM_KOR)을 잘라 성만 출력-- SELECT LEFT(NM_KOR,1) AS 이름 FROM MY_TABLE RIGHT RIGHT함수는 LEFT함수와 기능은 같지만 방향만 다른 함수입니다. RIGHT함수는 문자열을 받아서 오른쪽부터 원하는 길이만큼 자르는 함수이며 LEFT함수와 마찬가지로 다양하게 사용이 가능합니다. 사용법 --문법-- RIGHT(문자열,길이) --예시-- RIGHT(NAME,3) 예..

[MSSQL] NULL값 체크 (ISNULL) 함수 사용법 & 예제 [내부링크]

ISNULL함수 ISNULL함수는 Microsoft SQL Server의 내장함수이며 칼럼이 NULL값일 경우 다른값으로 대체할 수 있는 기능이 있습니다. 데이터베이스를 사용하다보면 파라미터로 NULL값이 오거나 칼럼안에 NULL값이 들어있는 등 경우에 따라 NULL값을 적절히 처리해줘야하는 경우가 많은데 이럴때 유용하게 쓰일 수 있는 함수입니다. 사용법 --문법-- ISNULL(칼럼,칼럼이 NULL일경우 대체할 값) --예시-- ISNULL(Colum,0) (ISNULL(@PARAMETER,'')='') 예제 1. 부서(DEPT)를 검색하되 부서가 NULL값이면 '부서없음'으로 검색하기 SELECT ISNULL(DEPT,'부서없음') AS DPET FROM table 2. 파라미터와 동일한 이름(NAM..

[MSSQL] 커서 사용법 & 예제 [내부링크]

커서란? 행 단위 작업을 효율적으로 하기 위한 방식으로 테이블에서 여러 개의 행을 조회한 후 쿼리의 결과를 한 행씩 처리하는 방식입니다. SELECT 한 결과(행 집합)를 반복 작업해줘야 할 경우 유용하게 사용 가능 한 방식입니다. 커서의 특징 1. 커서는 내장 SQL 문의 수행 결과로 반환될 수 있는 복수의 튜플들을 액세스 할 수 있도록 해주는 개념입니다. 2. 커서는 질의 수행 결과로 반환되는 첫 번째 튜플에 대한 포인터로 생각할 수 있습니다. 3. 커서를 사용하여 질의 결과로 반환될 수 있는 튜플들을 한 번에 하나씩 차례대로 처리할 수 있습니다. 커서 관련 명령어 DECLARE : 커서를 정의하는 등 커서에 관련된 선언을 하는 명령입니다. OPEN : 커서가 질의 결과의 첫 번째 튜플을 포인트 하도..

[MSSQL] SET NOCOUNT 정의와 사용법 (프로시저 성능 향상) [내부링크]

SET NOCOUNT란? 쿼리문 또는 프로시저의 영향을 받은 행 수를 나타내는 메시지가 결과 집합의 일부로 반환되지 않도록 하는 것 구문 : SET NOCOUNT {ON/OFF} 사용하는 이유 MSSQL에서 프로시저를 만 들 경 우 프로시저의 속도(성능)에 대해서 생각을 안 할 수 없습니다. 프로시저의 속도가 프로그램의 속도에 밀접한 관련이 있는 만큼 프로시저의 성능에 대해 초점을 맞추고 쿼리문을 짜야합니다. 이번 포스팅에서는 SET NOCOUNT라는 함수를 사용하여 쿼리 문의 속도를 향상하는 방법에 대해 알아보겠습니다. MSSQL에서 프로시저를 만들고 실행을 해보면 위와 같은 메시지를 보신 적이 있으실 텐데요. 위 메시지는 INSERT나 UPDATE DELETE처럼 테이블에 영향을 주게 되면 출력이 됩..

[MSSQL] 반복문(WHILE)사용법 & 예제 [내부링크]

WHILE문 MS SQL에서도 반복문을 지원합니다. 반복문을 사용해서 변수에 문자열을 계속 붙이거나 숫자를 더하는 등 다양한 방식으로 응용하여 사용할 수 있습니다. 반복문을 사용하는 다양한 예제를 포스팅합니다. 1. 숫자더하기 DECLARE @NUM INT, @SUM INT,@TIME INT --변수선언 SET @NUM = 1 SET @SUM = 0 SET @TIME = 10 WHILE @NUM

[MSSQL] 피벗 테이블을 활용하여 세로로 된 데이터 가로로 출력하기 [내부링크]

피벗테이블이란? 테이블을 조회한 데이터를 특정 데이터 칼럼으로 사용, 요약된 결과를 만들어 표시하는 것입니다. 사용자 입장에서 데이터를 좀 더 쉽게 볼 수 있도록 출력 형태를 가공할 때 사용합니다. 예제 피벗테이블을 활용하여 세로로 되어있는 칼럼을 가로로 바꿔보는 예제 (행을 열로 변환) MM_TEST 테이블안에는 위와 같이 DT(날짜), QT(수량)의 데이터가 10만 개가 있습니다. 위 테이블의 월별 합계 수량을 가로로 나타내시오 해결방법 1. 테이블의 월별 합계 수량을 Select 합니다. DECLARE @DT_FROM NVARCHAR(6) = '200802' DECLARE @DT_TO NVARCHAR(6) = '200904' SELECT MAX(DT) AS DT, SUM(QT) AS QT FROM ..

[MSSQL] 프로시저 생성,조회,수정,삭제 [내부링크]

프로시저란? 데이터베이스에서의 프로시저란 프로그래머가 생성해놓은 쿼리문을 마치 하나의 메서드 형식으로 관리하는 것입니다. 실무에서는 굉장히 복잡한 쿼리문을 많이 사용해요. 많은 컬럼을 조회하고 여러 테이블을 조인하고 거기다가 WHERE조건까지... 심한 것은 하나의 쿼리를 만드는데 1000라인이 넘어가는 경우도 종종 있어요. 이렇게 장문의 쿼리를 사용할 때마다 써줘야 한다면 굉장히 불편할 거예요. 그러므로 이 장문의 쿼리를 프로시저에 저장해주고, 쿼리문이 저장된 프로시저를 호출하여 프로그래밍을 하는 것이 훨씬 효율적입니다. 프로시저 사용법 프로시저 생성 문법 CREATE PROC [프로시저명] AS [쿼리문] 프로시저 생성 예제 CREATE PROCEDURE UP_EXPRO ( @P_COMPANY NVA..

[MSSQL] 서브쿼리(SubQuery) 사용법 & 예제 [내부링크]

서브 쿼리란? 하나의 쿼리문 안에 포함되어 있는 또 하나의 쿼리문을 말합니다. 서브 쿼리는 메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계입니다. 여러 번의 쿼리를 수행해야만 얻을 수 있는 결과를 하나의 중첩된 SQL 문장으로 간편하게 결과를 얻을 수 있게 해 줍니다. 쉽게 말해서 쿼리 문안에 쿼리문을 또 쓴다고 생각하면 됩니다. ※ Sub Query를 Inner Query라고도 합니다. 주의사항 서브 쿼리를 괄호로 묶어서 사용해야 한다. 서브 쿼리 안에서 Order By 절은 사용할 수 없다. 연산자 오른쪽에 사용하여야 한다. 서브 쿼리의 반환값에 따른 서브쿼리 단일 행 서브쿼리 : 서브쿼리의 결과가 1행 다중 행 서브쿼리 : 서브쿼리의 결과가 여러 행 다중 칼럼 서브 쿼리 : 서..

[MSSQL] Union,UnionAll 사용법 & 예제 [내부링크]

Union이란? Union은 여러 개의 SQL문을 합쳐 하나의 SQL문으로 만들어주는 방법입니다. 두 개의 쿼리의 합집합을 만들어준다고 생각하면 될듯합니다. Union과 UnionAll의 차이점 Union과 UnionAll은 두 쿼리문을 하나로 합쳐준다는 것에 공통점이 있습니다. 하지만 Union은 두 쿼리의 결과의 중복값을 제거해서 보여주고, UnionAll은중복된 값도 전부 다 보여준다는 차이점이 있습니다. 속도는 당연히 중복 값 제거를 위해 연산을 한번 더 해야 하기 때문에 UnionAll이 Union보다 더 빠르겠죠? Union 사용 시 주의점 칼럼명이 같아야 한다. (같지 않을 경우 AS를 사용하여 같게 만들어주면 됩니다.) 칼럼 별 데이터 타입이 같아야 합니다. UNION / UNION..

[MSSQL] JOIN의 종류설명 및 사용법 & 예제 [내부링크]

조인이란? 두개이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법입니다. 자신이 검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용하며 여러 개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법입니다. 보통 Primary key혹은 Foreign key로 두 테이블을 연결합니다. 테이블을 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야 합니다. 고등학교 수학 시간 때 배웠던 벤다이어그램을 활용하면 쉽게 이해할 수 있습니다. INNER JOIN 쉽게말해 교집합이라고 생각하시면 됩니다. 기준 테이블과 Join 한 테이블의 중복된 값을 보여줍니다. 결과값은 A의 테이블과 B테이블이 모두 가지고 있는 데이터만 검색됩니다. --문법-- SELECT 테이블별칭.조회할칼럼, 테이블별칭.조회..

[MSSQL] GROUP BY, HAVING, DISTINCT절 사용하기 [내부링크]

GROUP BY절이란? 테이블 SELECT시 조회 결과를 그룹으로 묶어서 그 결과를 가져오는 역할을 한다. DISTINCT절이란? DISTINCT는 GROUP BY절과 마찬가지로 조회결과를 그룹으로 묶어서 그 결과를 가져온다. 주로 UNIQUE한 컬럼을 조회할 경우 사용되는 구절이다. GROUP BY절과 DISTINCT의 차이점 두 구절은 똑같이 그룹을 지어준다는것에 대해 공통점이 있다. 하지만 두 구절의 차이는 GROUP BY는 결과물을 정렬해서 표현하고 DISTINCT는 결과물을 정렬하지 않는다. 즉 정렬이 필요하다면 GROUP BY절을 사용하면 되고 그것이 아니라면 DISTINCT절을 사용하면 된다. 정렬이 필요하지않다면 DISTINCT절을 사용하는것이 속도면에서 GROUP BY절보다 빠르다. 문법..

[MSSQL] 집계함수(COUNT,AVG,MAX,MIN,SUM) 사용법 & 예제 [내부링크]

집계 함수 집계 함수는 계산을 수행하고 단일 값을 반환합니다. Count() 함수를 제외한 집계 함수는 Null 값을 무시하며 SELECT문 혹은 HAVING 절에만 사용할 수 있습니다. 집계 함수 종류 COUNT() : 수량 계산 --테이블(MY_TABLE)에 남아있는 칼럼수 조회-- SELECT COUNT(*) AS 칼럼수 FROM MY_TABLE --테이블(MY_TABLE) 이름(MY_NAME)값이 있는 ROW 수 조회-- SELECT COUNT(MY_NAME) AS ROW수 FROM MY_TABLE AVG(): 평균 --테이블 (MY_TABLE)의 평균나이(AGE) 조회-- SELECT AVG(AGE) AS 평균나이 FROM MY_TABLE --테이블(MY_TABLE)의 수량(QT)의 전체 평균(..

[MSSQL] 별칭(ALIAS) 사용법 & 예제 [내부링크]

ALIAS란? ALIAS 는 값에 별칭을 주어 접근을 별칭 형태로 할 수 있도록 하는 역할을합니다. 데이터,칼럼,테이블,서브쿼리,WHERE절 등에 사용할 수 있습니다. 대표적으로 알아보기 힘든 칼럼에 AS(별칭)을 많이 사용합니다. 예약어는 AS입니다. ALIAS(문법) ColumnName AS 컬럼명칭 --컬럼에 별칭 부여하기 TableName AS 테이블명칭 --테이블에 별칭 부여하기 ALIAS(예제) 1. 칼럼명에 별칭(AS)짓기 SELECT NO_NUM AS 사원번호,NO_NAME AS 사원명,AGE AS 나이 FROM EX_TABLE 2. 칼럼 NUM1+NUM2의 값을 TOTAL이라는 별칭(AS)짓기 SELECT NUM1 + NUM2 AS TOTAL FROM EX_TABLE 3.EX_TABLE이..

[MSSQL] Delete문 사용법 & 예제(트랜잭션) [내부링크]

데이터베이스 MS_SQL Delete문 사용법 및 예제입니다. Delete문은 굉장히 위험한 명령어이므로 이왕이면 트랜잭션 안에서 실행해주는것이 좋습니다. 트랜잭션이란? 하나의 처리를 여러 단계로 다루는 기능을 트랜잭션(Transaction)이라고 합니다. 하나의 처리를 Commit이라는 명령어를 수행하기전 마지막으로 한번 더 확인할 수 있는 기회를 줌으로써 좀 더 안정적인 데이터베이스 작업을 가능하게 합니다. 트랜잭션의 실행결과를 데이터베이스에 반영하는 것을(Commit)이라고 하고 반영하기 전으로 되돌리는 것을 롤백(RollBack)이라고 합니다. BEGIN TRAN--트랜잭션 시작 ROLLBACK TRAN --트랜잭션 이전상태로 ROLL BACK COMMIT TRAN --트랜잭션 완료 Delete ..

[MSSQL] Update문 사용법 & 예제(트랜잭션) [내부링크]

데이터베이스 MS_SQL Update문 사용법 및 예제입니다. Update문은 굉장히 위험한 명령어이므로 꼭 트랜잭션 안에서만 사용해주셔야 합니다. 특히 Update문구에 실수로 Where 절을 쓰지 않고 실행을 하게 되면 테이블에 있는 칼럼 모두가 바뀌게 되는데 이런 큰 실수를 하게 되면 되돌릴 수도 없고 바로 사직서를 써야 하는 상황이 연출됩니다...... ㅠㅠㅠ 그러므로 먼저 Update에 하기 앞서서 Select문으로 자신이 바꿔야 할 데이터를 조회한 뒤 꼭 트랜잭션 안에서 Update문을 실행해주도록 합시다. 트랜잭션이란? 하나의 처리를 여러 단계로 다루는 기능을 트랜잭션(Transaction)이라고 합니다. 하나의 처리를 Commit이라는 명령어를 수행하기전 마지막으로 한번 더 확인할 수 있는..

[MSSQL] Select문 사용법 & 예제 [내부링크]

SELECT는 테이블에 있는 데이터를 조회하는 명령어입니다. Select(검색) --My_Table로 부터 모든 칼럼 조회 SELECT * FROM My_Table --My_Table의 No_Emp,Nm_Kor,Age 칼럼 조회 SELECT No_Emp,Nm_Kor,Age FROM My_Table Where(조건문) --이름이 '홍길동'인사람 검색 SELECT * FROM My_Table WHERE Nm_Kor ='홍길동' --나이가 25살인 사원의 한국이름과 나이 조회 SELECT Nm_Kor,Age FROM My_Table WHERE Age=25 --나이가 25살이 아닌 사원 조회 SELECT * FROM My_Table WHERE Age25 --사원번호가 '0315' 이고 나이가 25살보다 작거나 ..

[MSSQL] Insert문 사용법 & 예제 [내부링크]

데이터베이스 MS_SQL 데이터 삽입(Insert) 사용법 및 예제입니다. Insert 문법 INSERT INTO 테이블명(칼럼1,칼럼2,칼럼3,....) values(데이터1,데이터2,데이터3,......) INSERT INTO My_Table(no_emp,nm_kor,age) values('dz000','홍길동',20) Insert문의 사용법은 다음과 같습니다. 하지만 위 방법은 일일이 수작업으로 데이터를 한줄한줄 넣는 방식이므로 테이블에 다량의 데이터를 삽입하려고 하면 굉장히 번거롭고 비효율적입니다. 여기서 만약 삽입해야 할 데이터가 다른 테이블에 이미 삽입되어 있다면..?? 새로 데이터를 일일이 넣는 것보다 이미 삽입되어있는 테이블의 데이터를 가지고 오는 방법이 더 효율적이지 않을까요? 이럴 때 ..

[MSSQL] 테이블 생성,수정,삭제 (Create, Alter, Drop Table) [내부링크]

데이터베이스 DDL에는 Create(생성), Alter(수정), Drop(삭제)를 시킬 수 있는 명령어가 있습니다. 이 테이블의 구조를 생성, 변경, 삭제를 하는 것이 DDL입니다. 이번 포스팅에서는 여러 DBMS 중에서 MSSQL의 DDL에 대해서 포스팅하려 합니다. CREATE TABLE(테이블 생성) --문법 CREATE TABLE 테이블명( 컬럼명 타입(크기) NOT NULL, --널값이 들어갈 수 없음 컬럼명 타입 NULL DEFAULT(값), --초기값 지정 CONSTRAIN PK이름 PRIMARY KEY(컬럼명) --PK설정 ) --예제 CREATE TABLE MY_TABLE( NO_EMP NVARCHAR(10)NOT NULL, -- NULL 값이 들어갈 수 없음 NM_KOR NVARCHAR..

[DB기초] DBMS 개념과 종류 및 장단점 분석 [내부링크]

DBMS란? 데이터베이스를 직접 응용 프로그램들이 조작하는 것이 아니라 데이터베이스를 조작하는 별도의 소프트웨어가 있는데 이를 데이터베이스 관리 시스템(DBMS : DataBase Management System)이라고 합니다. 즉 데이터베이스 관리 시스템이란 데이터베이스를 관리하며 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 소프트웨어입니다. DBMS 종류 및 장단점 분석 대표적인 DBMS는 Oracle사의 Oracle, My_SQL MicroSoft사의 MS_SQL이 있다. 세계 DB시장 점유율 링크 Oracle 오라클에서 만들어 판매 중인 상업용 데이터베이스 윈도우, 리눅스, 유닉스 등 다양한 운영체제에 설치를 할 수 있다. MS_SQL , MY_SQL보다 대량의 데이터..

[DB기초] DataBase 개념 및 용어 설명 [내부링크]

이번 포스팅에서는 프로그래머라면 필수적으로 알고 있어야 할 데이터베이스(DataBase)란 무엇이며 왜 사용하는지 또 지금 현재 쓰고 있는 DBMS(DataBase Management System)들은 어떤 것이 있는지에 대해 알아보도록 하겠습니다. DataBase란? 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을 말합니다.. 자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높이죠. 현대적인 의미의 데이터베이스 개념을 확립한 사람은 당시 제너럴일렉트릭사(社)에 있던 C.바크만으로 그는 1963년 IDS(Integrated Data Store)라는 데이터베이스 관리시스템을 만들었습니다. 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을..

[C언어] Dev-C++ 설치/다운로드 방법 [내부링크]

Dev C++이란? Dev-C++이란 GNU 라이선스로 보급되는 사용이 자유로운 무료 C/C++ 언어의 통합 개발도구입니다. 오픈소스이자 강력한 컴파일러인 MinGW 컴파일러를 포함하고 있습니다. Dev-C++은 델파이로 구현되어있으며 윈도우 환경에서만 사용할 수 있습니다. C 계열 개발도구로는 Visual Basic을 많이 사용하고 기능도 Dev-C++ 보다 압도적으로 많지만 공부 목적으로의 다운로드가 아니면 부분적으로 유료인 부분이 있고 Dev-C++ 보다는 상대적으로 무거운 부분도 존재합니다. 그냥 가볍게 C언어를 공부하고 싶으신 분들에게 추천하는 프로그램입니다. Dev C++다운로드/설치 1. DEV-C++ 설치바로가기 위 경로로 접속해주세요 그런 뒤 빨간 박스 안 다운로드 버튼을 눌러줍니다. 2..

[Java] 최대공약수와 최소공배수 구하기 [내부링크]

자바를 공부하다 보면 자연스레 알고리즘 문제도 풀게 되는데요. 알고리즘 문제에 단골손님으로 등장하는 것이 바로 두 숫자의 최대공약수와 최소공배수를 구하는 문제가 꼭 있습니다. 이번 포스팅에서는 두 수의 최대공약수와 최소공배수를 구하는 방법에 대해서 알아보도록 하겠습니다. 예제는 두 개의 숫자를 입력받아서 두 개의 숫자의 최대공약수와 최소공배수를 구하는 알고리즘을 준비했습니다. 최대공약수와 최소공배수 구하기 첫번째 방식 import java.util.Arrays; import java.util.Scanner; class TryHelloWorld { public int[] gcdlcm(int a, int b) { int[] answer = new int[2]; int temp=1; int gcd=a*b; w..

[Java] 아스키코드, 유니코드를 문자나 숫자로 변환하기 [내부링크]

아스키코드 미국에서 표준화가 추진된 정보교환용 7bit 부호로 정의합니다. 1962년 안시(ANSI)가 정의한 미국 표준 정보교환 코드이며 1963년 미국표준협회(ASA)에 의해 결정되어 미국의 표준 부호가 되었습니다. 이 코드는 7비트의 이진수 조합으로 만들어져 총 128개의 부호를 표현합니다. 아스키코드의 처음 32개(0~31)는 프린터나 전송 제어용으로 사용되고 나머지는 숫자와 로마 글자 및 도량형 기호와 문장 기호를 나타냅니다. 아스키코드는 7자리의 2진 코드인데 1비트의 패리티 비트를 추가하여 8비트로 많은 컴퓨터에 사용되고 있습니다. 아스키코드 표 유니코드 시간이 지나가면서 영어나 숫자 그리고 기본적인 기호뿐만 아니라 그 나라, 그 언어에서 쓰는 다양한 문자들을 처리하려면 1바이트로 정의된 아..

[Java] String값 한글자씩 배열에 저장하기 +(활용예제) [내부링크]

스트링 값에 있는 문자를 좀 더 세밀하게 활용하기 위하여 스트링에 담겨있는 값을 배열에 저장하고 싶을 때가 가끔 있습니다. (ex : 가운데 글자만 출력하기, 글자 뒤집기) 이번 포스팅에서는 스트링에 담겨 있는 값을 한 글자씩 끊어서 배열에 저장하는 방법에 대해 알아봅니다. String값 한글자씩 배열에 저장하기 Split 함수를 활용하여 단어를 String배열에 한 글자씩 저장하기 String word = "POWER"; //스트링 문자 POWER String[] array_word; // 스트링을 담을 배열 //사실상 가장 간단함 array_word = word.split(""); //배열에 한글자씩 저장하기 for(int i=0;i

[Jsp] MVC 패턴 게시판 [내부링크]

저번 포스팅 MVC2 패턴으로 만드는 회원가입 및 로그인에 이어서 이번에는 MVC2 패턴으로 만드는 게시판을 공부해보겠습니다. 회원가입 , 로그인 기능과 마찬가지로 게시판도 어느 웹사이트에서나 꼭 하나씩은 있는 필수적인 기능입니다. 어차피 웹사이트 기능들은 다 거기서 거기입니다. (데이터 추가, 출력, 수정, 삭제) 이 게시판을 응용하면 웹사이트에 존재하는 모든 기능들을 다 구현할 수 있다고 해도 될 정도로 중요한 부분이며 웹사이트를 제작하려는 사람이라면 꼭 알고 가야 하는 기능입니다. MVC 패턴 게시판 1. MVC2 패턴 게시판 소스 올려드리겠습니다. 이 파일을 Import해주시기 바랍니다. 2. 그런 뒤 위의 테이블 구조와 같이 게시판 데이터베이스를 만들어주겠습니다. 3. META-INF -> co..

[Jsp] MVC 패턴 회원가입 및 로그인 [내부링크]

이전 포스팅에서 JSP MVC패턴의 구조와 개념에 대해서 공부를 해보았는데요 이번에는 본격적으로 예제 소스를 예로 들어 MVC2 패턴에 심도 있게 공부를 해보도록 하겠습니다. 첫 번째 예제로는 웹페이지에서 회원가입 및 로그인을 준비했습니다. 어느 웹사이트에 들어가도 회원가입과 로그인 기능은 꼭 있을 정도로 광범위하게 쓰이는 기능입니다. MVC 패턴 회원가입 및 로그인 1. 우선 예제파일 올려드릴게요. 이 파일을 압축 해제하셔서 Import 해주세요. 2. 위 사진과 같이 데이터베이스를 하나 만들어주세요. Master은 관리자 여부를 관리하는 칼럼인데 0이면 관리자이고 1이면 일반회원입니다. 3. context.xml에 들어가셔서 방금 생성한 테이블을 연결해줍니다. 그런 뒤 index.jsp를 실행시켜주시..

[Jsp] MVC 패턴이란 무엇인가? (Model1, Model2) [내부링크]

MVC패턴이란? Model , View , Controller의 합성어로 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴입니다. Model : 백그라운드에서 동작하는 로직을 처리합니다. View : 사용자가 보게 될 결과 화면을 출력합니다. Controller : 사용자의 입력처리와 흐름 제어를 담당합니다. MVC패턴에는 모델1방식과 모델 2방 식이 있는데 특히 모델 2 구조 기반의 MVC패턴 구현은 JSP 개발자라면 무조건 알고 있어야 할 개발 방식입니다. JSP 웹사이트 구조는 크게 모델 1 방식과 모델 2 방식으로 나뉩니다. 간단하게 분류하자면 JSP에서 출력과 로직을 전부 처리하느냐(모델 1) JSP에서 출력만 처리하느냐(모델 2)로 분류할 수 있습니다. Model1 방식 모델 1 구조는 사용..

[Java] 별찍기 예제 (For문 연습) [내부링크]

옛날에 공부했던 소스들을 정리하면서 발견한 별찍기 소스입니다. 자바 공부를 처음할때 열심히 밤새면서 돌리던게 기억나네요 ㅎㅎㅎ 혹시나 참고하실분 계실까 싶어 올립니다. FOR문 연습에는 별찍기가 최고~ 별찍기 Java 1. 간단한 2차원 배열 별찍기입니다. for(int i=0;i

[일상] 2017 지스타 참가 후기 [내부링크]

2017. 11 .17일 금요일 지스타를 다녀왔습니다. 제가 사는동네에서 지스타가 열리는 부산 센텀시티 벡스코까지가는데 1시간 남짓걸리더군요. 벡스코앞에서 점심을 해결하고 1시반쯤 입장을 했습니다. 평일 오후에가서 그런지 입장하는데는 얼마 걸리지않았어요 내 생에 태어나서 처음가보는 지스타!! 너무나 설랬습니다. 들어가니 사람들로 꽉꽉 차있더군요...... 게임 체험을 한번 해보고싶어도 기본 1시간씩은 기다려야되는 기막힌 상황에 너무나도 슬펐습니다... 하지만 눈으로만 봐도 즐겁더군요.. 코스프레 하시는 모델분들도 굉장히 많았습니다. 실제로보니 엄청 잘생기시고 이쁘셨다는... 비율이 장난이아니세요 모델이 괜히 모델이 아닌가봐요 ㅎㅎ 여기는 넥슨의 피파온라인4 부스인데요. 솔직히 피파온라인3유저로써 기대를 ..

[Android] 꺽은선 그래프 만들기 (MpAndroidChart) [내부링크]

저번 포스팅에서는 MpAndroidChart 라이브러리를 활용해 원그래프(PieChart)를 만드는 방법을 알아봤습니다. 이번에는 MpAndroidChart 라이브러리를 활용하여 안드로이드 꺾은선 그래프(LineChart)를 만드는 방법에 대해서 알아보겠습니다. 안드로이드 꺽은선 그래프 만들기 build.gradle repositories{ maven {url "https://jitpack.io"} } dependencies { compile 'com.github.PhilJay:MpAndroidChart:v3.0.2' } 먼저 MpAndroidChart 라이브러리 사용을 위해 build.gradle에서 아래에 있는 두줄을 추가해주도록 하겠습니다. XML JAVA public class MainActivi..

[Android] 원 그래프 만들기 (MpAndroidChart) [내부링크]

개발 도중 차트를 만들일이 있어 쉽게 만드는 방법을 알아보다가 재미있는 라이브러리를 발견하였습니다. 바로 MpAndroidChart이라는 라이브러리인데요 이 라이브러리를 사용하면 차트를 굉장히 쉽게 만들 수 있습니다. 이번 포스팅에서는 MpAndroidChart를 이용하여 원그래프(PieChart)를 만드는 방법에 대해 알아보겠습니다. 안드로이드 원 그래프 만들기 build.gradle repositories{ maven {url "https://jitpack.io"} } dependencies { compile 'com.github.PhilJay:MpAndroidChart:v3.0.2' } 라이브러리 사용을 위해 build.gradle에서 아래에 있는 두줄을 추가해주도록 하겠습니다. XML Java p..

[Unity] 유니티 프로젝트 안드로이드 스튜디오에 연동시키기 [내부링크]

이번에는 유니티에서 만든 프로젝트를 안드로이드 스튜디오에서 Import 하는 방법에 대해서 알아보도록 하겠습니다. 안드로이드 스튜디오의 프로젝트가 주력 프로젝트이고 부가적으로 유니티 기능을 활용하고 싶은 분들에게 좋은 포스팅이 되리라고 생각합니다. 유니티 프로젝트 안드로이드 스튜디오에 연동시키기 1. 먼저 시작하기전에 안드로이드 SDK와 JDK의 경로가 잘 설정되어있는지 확인합니다. (설정이 제대로 안되어있을경우 Export 안됨) Edit -> Preferences 2. External Tools에서 SDK , JDK의 경로를 설정해줍니다. SDK경로 = C:/Users/내 이름/AppData/Local/Android/sdk 안드로이드 설치 시 기본 설정으로 설치를 했다면 대부분 경로는 이렇게 되어 있..

[Unity] 유니티 설치 / 다운로드 방법 [내부링크]

유니티란? 유니티는 게임 엔진 기술이자 통합개발환경입니다. 게임 업계에서 스타트업으로 여겨졌던 유니티는 스마트폰이 등장하면서 크게 성장하였습니다. 2012년부터 유니티 가입자수는 100만 명이 넘었고 유니티를 이용해 만든 게임 중 상업적인 성과를 이룬 게임도 꾸준히 나오게 되었습니다. 대표적으로 앵그리버드, 템플런 등이 있으며 이러한 인기 덕에 최근 게임 개발 시장은 경쟁자인 에픽게임스의 언리얼 엔진과 유니티가 양대산맥으로 지배하는 구조가 되었습니다. 유니티의 장점 유니티의 가장 큰 장점은 다양한 플랫폼을 지원한다는 점이에요. 개발자는 모바일 기기, 웹브라우저, 데스크톱, 콘솔 구분 없이 원하는 형태의 게임을 쉽게 만들 수 있습니다. 개발환경 자체도 입문자가 쉽게 이해할 수 있을 만큼 직관적이고 간단합니..

[Linux] 우분투에서 이클립스 톰캣 연동 [내부링크]

리눅스 톰캣 서버를 사용하기 위해서는 우분 투안에서 미리 깔아놓은 이클립스와 톰캣을 연동하는 작업이 필요합니다. 이번 포스팅에서는 우분투 상에서 이클립스와 톰캣을 연동하는 방법에 대해서 알아보겠습니다. 우분투에서 이클립스 톰캣 연동 1. 먼저 이클립스를 실행시킨 뒤 Servers를 누르시고 밑에 보이는 No servers are available. Click this link to create a new server... 를 눌러주세요 2. 자신의 톰캣 버전에 맞는 버전을 선택해주세요 저는 톰캣 8.0버전이 설치되어있으므로 톰캣 8.0을 선택하도록 하겠습니다. 3. Browser...를 눌러서 경로를 설정해주도록 하죠 4. 수동으로 우분투를 설치하신분들은 설치경로를 지정해주시면 되고 톰캣을 터미널로 깔으..

[블로그] 티스토리 블로그 구글 애드센스 신청하기 [내부링크]

구글 애드센스란? 구글에서 운영하는 광고 프로그램으로, 웹사이트를 소유한 사람이 애드센스에 가입하면 구글에서 광고비를 지불하고 광고를 자동으로 그 사람의 웹사이트에 올려줍니다. 해당 웹사이트를 찾은 방문자가 그 광고를 클릭하면 구글이 광고주로부터 돈을 받아 그 일부를 웹사이트 소유자에게 나눠주는 방식입니다. 티스토리가 네이버 블로그보다 좋은 이유 중의 하나입니다. 티스토리 블로그의 장점이죠 바로 구글 애드센스를 넣을 수 있다는 거!! 사실 제가 네이버 블로그를 하지 않고 티스토리를 시작한 이유이기도 합니다. 구글 애드센스 신청하는 방법에 대해서 알아봅니다. 티스토리 블로그 구글 애드센스 신청하기 1. 신청하는 곳입니다. 아래에 링크된 URL로 들어가 주세요. 구글 애드센스 신청 링크 바로가기 그런 뒤 S..

[Linux] 우분투에서 하둡(hadoop) 설치하기 [내부링크]

리눅스 우분투상에서 하둡(hadoop)을 설치해보도록 하겠습니다. 하둡(hadoop)은 빅데이터 환경을 구축하기 위해서 필요한 필수 프로그램입니다. 이번 포스팅에서는 우분투에서 하둡의 설치방법에 대해서 알아보도록 하겠습니다. 빅데이터는 무엇인가? 디지털 환경에서 생성되는 데이터로 그 규모가 방대하고, 생성 주기도 짧고, 형태도 수치 데이터뿐 아니라 문자와 영상 데이터를 포함하는 대규모 데이터를 말합니다. 제4차 산업혁명시대를 맞이하여 그 중요성이 점점 커지고 있습니다. 하둡이란 무엇인가? 여러 개의 저렴한 컴퓨터를 마치 하나인 것처럼 묶어 대용량 데이터를 처리하는 기술이며 하둡은 수천 대의 분산된 x86 장비에 대용량 파일을 저장할 수 있는 기능을 제공하는 분산 파일 시스템과, 저장된 파일 데이터를 분산..

[Linux] 우분투에서 오라클 설치하기 [내부링크]

우분투에서 오라클 설치방법에 대해 알아봅니다. 1. 우선 오라클 홈페이지에 접속하셔서 자신이 다운받고자하는 오라클 버전을 선택합니다.오라클 설치링크 바로가기저는 오라클 11g를 설치하겠습니다. 2. 동의를 해주시고 오라클 Linux버전을 눌러주세요 3. 오라클 설치를 위해서는 오라클 계정이 있어야합니다. 로그인해주세요 없으신분들은 계정을 만들어주시기 바랍니다. 4. 파일을 저장해줍니다. 5. Ctrl+Alt+T를 누르셔서 터미널로 들어가신뒤 root계정으로 접속해줍니다.sudo su root / 자신의 패스워드 6. 그런뒤 cd 다운로드 폴더로 들어가줍니다. (사람마다 경로가 조금다름) 7. 압축파일로 받았으니 압축을 풀어주세요.터미널에 unzip oracle* 라고 입력해주시면 됩니다. 8. 그런뒤 D..

[Linux] 우분투에서 아파치톰캣 설치하기 [내부링크]

이번에는 우분투에서 아파치톰캣을 다운로드 및 설치하는 방법에 대해서 알아보겠습니다. 1. 우선 Ctrl+Alt+T를 누르셔서 터미널창으로 들어가줍시다. 그런뒤 Root로 접속을 해야하는데요 Root로 접속하는 방법은 sudo su root -> 자신이 설정한 비밀번호 -> cd 이런식으로 해주시면 root로 접속이 됩니다. 2. 아파치톰캣을 설치하기 위해서는 JDK가 설치되어있어야합니다. java -version을 입력하여 JDK가 설치가 되어있는지 확인해줍니다. 3. apt-get update을 입력하여 업데이트 패키지 목록을 읽어주세요. 4. 그런뒤 apt-get install tomcat8을 입력하여 설치를 해주도록 하겠습니다. 계속하시겠습니까 라는 문구가나오면 Y를 누르시면됩니다. 5. apt-g..

[Linux] 우분투에서 이클립스 설치하기 [내부링크]

저번 포스팅에서는 JDK를 설치하였습니다. 이번에는 우분투에서 이클립스를 설치하는 방법에 대해서 알아보도록 하겠습니다. 1. 우선 이클립스 홈페이지의 다운로드 페이지로 들어가주세요. 이클립스 설치링크 바로가기 그런 뒤 빨간박스안에있는 다운로드 버튼을 눌러줍시다. 2. 다운을 받으셨으면 폴더에 오른쪽 클릭을하고 압축을 풀어주세요 3. 압축을 푸셨으면 이러한 폴더가 생길텐데요 이폴더안에 이 아이콘을 실행시켜줍니다. 4. 자신이 다운받으실 이클립스 버전을 선택해주시기 바랍니다. 저는 이클립스로 웹개발도 진행 할 것이므로 두번째에있는 EE버전을 선택하였습니다. 5. 설치경로를 선택해주시고 Install을 눌러서 설치를 시작해줍시다. 6. 설치가 잘 진행되고 있군요. 기다려줍니다. 7. 중간에 동의하라고 하면 동..

[Linux] 우분투에서 JDK 설치 / 다운로드 하는 방법 [내부링크]

리눅스에서 자바 기반의 개발을 진행하기 위해서는 JDK를 먼저 다운로드하여주셔야 합니다. 직접 사이트에서 JDK를 다운로드하여도 되지만 리눅스 터미널을 통해 간단히 다운로드할 수 있는 기능이 있습니다. 이번 포스팅에서는 우분투 터미널을 통해 JDK를 다운로드하는 법에 대해 알아보도록 하겠습니다. 우분투에서 JDK 설치하기(터미널 사용) 1. 우선 우분투 터미널에 들어갑니다. Ctrl+Alt+T를 누르시면 터미널창이 실행됩니다. 명령어 sudo add-apt-repository ppa:webupd8team/java 를 입력하시고 우분투 설치할 때 설정한 비밀번호를 입력하면 2. 이런식으로 터미널 창에 찍힐 겁니다. 엔터를 눌러 달라고 하니 엔터를 눌러주겠습니다. 그다음 sudo apt-get update를..

[Linux] Vmware에서 우분투 설치하기 +초기설정 [내부링크]

이번 포스팅에서는 저번에 설치했던 Vmware에서 우분투를 설치하는 방법에 대해서 다룹니다. 1. 우선 설치한 Vmware를 실행시키셔서 빨간박스안에있는 Create a New Virtual Machine을 클릭해주세요. 2. 3번째 라디오박스를 클릭해주시고 Next를 눌러주세요. 3. Linux와 Ubuntu64-bit를 선택하고 Next를 눌러주세요. 4. 위에 텍스트박스는 Virtual machine 이름이고 밑에는 경로입니다.설정해주시고 Next를 눌러주세요. 5. 메모리 할당 부분입니다. 원하는 만큼 할당하고 Next를 눌러줍시다. 6. 그 다음 빨간색 체크박스를 클릭해줍니다. 7. 그럼 위사진과 같은 화면이 나올텐데 빨간박스 안에 있는 3가지 장치를 제거합니다. 8. New CD/DVD를 누르..

[Linux] 가상머신 Vmware 설치 / 다운로드 [내부링크]

가상 머신 Vmware 설치법에 대해서 알아봅니다. 리눅스를 사용하는 방식은 크게 두 가지가 있습니다. 1. 실제로 리눅스를 직접 설치하는 방법 리눅스 부팅 USB를 만든 뒤 리눅스 설치, 듀얼 운영체제로 사용하는 방법입니다. 실무에서 주로 쓰며 아래에서 소개하는 방법보다 속도가 빠릅니다. 2. 가상 머신에서 리눅스를 설치하여 사용하는 방식 가상 머신 프로그램 설치 후 생성된 가상 머신 안에서 리눅스를 설치하는 방법입니다. 익숙한 윈도 우안에서 리눅스를 돌리는 방식으로 리눅스에 익숙하지 않은 학생들이 많이 사용하는 방식입니다. 이 포스팅에서는 두 번째 방식을 다룹니다. 가상 머신 프로그램 Vmware란 : 가상 컴퓨터를 배치하고 서비스를 제공할 목적으로 VM웨어(회사)가 개발한 프로그램으로 하나의 물리적..

[Oracle] 오라클 테이블 export 방식으로 백업하기 (SQL Developer) [내부링크]

컴퓨터를 쓰다 보면 어쩔 수 없는 상황 때문에 포맷을 해야 하는 경우가 있습니다. 포맷을 하게 되면 오라클에 저장되어있는 데이터들이 모두 날아가 버리기 때문에 굉장히 골치가 아픈데요. 이럴 때 유용하게 쓸 수 있는 방법이 바로 SQL Developer의 export기능입니다. 이 기능을 이용하셔서 미리 테이블을 백업해놓고 포맷을 한 다음 export 한 sql문장을 불러오시면 됩니다. 오라클 테이블 export 방식으로 백업하기 1. 먼저 자신이 백업하고 싶은 테이블을 오른쪽 클릭하셔서 익스포트 버튼을 눌러주세요. 2. 필요한 기능을 체크해주시고 저장 경로를 설정해주시고 다음 버튼을 눌러주세요 3. 다음 버튼, 완료 버튼을 차례로 눌러주시면 아까 설정해두었던 경로에 이렇게 sql파일이 생성되게 됩니다. ..

[일상] 2017 부산 불꽃축제 후기 [내부링크]

어젯밤이죠 2017-10-29일 오후 8시에 부산 불꽃축제가 시작되었습니다. 이번 포스팅은 어제 다녀온 부산 불꽃 축제에 대한 후기를 써보려고 해요. 부산 불꽃축제는 매년 있는 행사고 어제 다녀온 것 까지 합치면 4번째가 되는군요. 갈 때마다 느끼는 거지만 인파가 정말 장난이 아녔습니다. 후.. 사람들 보세요.. 매년 느끼는 거지만 부산 불꽃축제가 하는 날이면 모든 부산사람들이 광안리로 다 모이는 것 같아요.... 나름 이른 시간에 움직였는데도 불구하고 사람들한테 끼여서 겨우겨우 광안리로 갔습니다. 광안리 해수욕장으로 가면 너무나 미련한 짓이겠죠? 거기로 가면 사람들한테 깔려 죽어요 ㅠㅠㅠ 저는 저만의 불꽃놀이 명당인 금련산 전망대 쪽으로 갔습니다. 하....... 등산 진짜 싫어하는데 ㅠㅠㅠ 한 시간 ..

[Android] 설치 앱 아이콘 바꾸기 [내부링크]

이번에는 안드로이드 스튜디오 설치 아이콘을 바꾸는 방법에 대해서 한번 알아보도록 하겠습니다. 안드로이드 앱을 다운로드할 경우 생기는 아이콘을 바꾸는 방법입니다. 이 아이콘을 바꾸지 않았을 경우에는 아래 사진의 왼쪽과 같은 아이콘이 나오는데요. 이 아이콘을 사진의 오른쪽처럼 바꾸는 방법입니다. 앞선 포스팅과 같이 이번에도 아주 간단한 방법이니 쉽게 따라 하실 수 있을 거라고 생각됩니다. 안드로이드 설치 앱 아이콘 바꾸기 1. 먼저 설치아이콘을 그림판이나 포토샵으로 한 땀 한 땀 만들어줍니다. 저는 이렇게 한번 만들어봤습니다. 2. 그다음 이 파일을 drawable에 icon.png라는 이름으로 넣어주도록 하겠습니다. Manifest.xml 3. Manifest.xml로 가셔서 위에 있는 소스 처럼 바꾸어줍..

[Android] 로딩화면 구현하기 Splash [내부링크]

모든 앱은 처음 실행시킬 때 초기 세팅 시간이 꼭 필요합니다. 이 초기 세팅 시간을 활용하여 로딩 화면(스플래쉬 액티비티)을 보여줌으로써 사용자는 기다리는 지루함을 덜 수 있고 개발자는 이 앱의 로고나 간단한 설명 등을 스플래쉬 액티비티에 넣어 사용자에게 정보를 전달할 수 있습니다. 안드로이드 로딩 화면 구현하기 그럼 안드로이드 로딩 화면 스플래쉬 액티비티를 구현해보도록 하겠습니다. 굉장히 간단한 방법이니 쉽게 따라 하실 수 있을 것입니다. activity_loading.xml 1. 먼저 로딩 화면을 만들어야겠죠?? 로딩 화면 XML입니다. 이렇게 자신이 띄워줄 로딩 화면을 만들어줍니다. LodingActivity public class LoadingActivity extends Activity { @O..

[Android] Fragment에서 구글 클라우드비전 사용하기 [내부링크]

저번 포스팅하고 이어지는 내용입니다. Fragment에서 Google Cloud Vision 사용법에 대해서 알아보겠습니다. 구글 클라우드비전을 사용할 줄 모르는 분들은 이전 포스팅을 참고해주세요 구글 클라우드 비전 사용법 Fragment에서 구글 클라우드비전 사용하기 개발을 하다보면 Fragment안에서 Google Cloud Vision을 적용시키고 싶은 경우가 있는데요. Acitivty랑 Fragment가 서로 문법이 많이 달라 고생을 좀 많이 했습니다. uploadImage 이 3개의 자바 파일 중 Google Cloud Vision에서 우리는 MainActivity만 Fragment로 바꿔주면 됩니다. dependencies { compile fileTree(dir: 'libs', include..

[Android] 구글 클라우드비전 API키 발급 및 사용법 [내부링크]

구글 클라우드 비전이란? 구글 클라우드 비전이란 2016년 구글에서 공개한 기계 학습 기반 이미지 인식 API입니다. 이미지 파일에서 얼굴인식 , 텍스트 인식, 사물, 상품로고, 꽃, 랜드마크 인식 그리고 사람인 경우 기쁨, 슬픔, 분노 등 다양한 감정 식별도 가능합니다. 제가 직접 사용해본결과 인식률이 완벽하지는 않았으나 애플리케이션을 개발할 경우 굉장히 유용한 API인 것만은 틀림없는 듯합니다. 그럼 Google Cloud Vision API를 사용하는 방법에 대해서 한번 알아보도록 하겠습니다. 구글 클라우드비전 API 키 발급 1. 구글 클라우드 플랫폼 API를 사용하면 먼저 API 키를 발급받아야 합니다. 구글 클라우드 API받기 링크 바로가기 위 사이트에 들어가셔서 위에 보이시는 빨간색 박스 안..

[Android] ListView에 EditText넣기 [내부링크]

안녕하세요 이번에는 리스트뷰에 EditText를 넣어보는 작업을 한번 해보도록 하겠습니다. 개발을 하다가 보면 사용자에게 정보를 입력하고 싶을 때 리스트 뷰안에 EditText를 넣고 싶은 경우가 생깁니다. 하지만 EditText를 ListView안에 집어넣으면 포커스가 뒤죽박죽이 되어버려 굉장히 곤란한 상황에 빠지게 되는데요. 그 이유는 ListView는 목록을 스크롤할 때 메모리를 아끼기 위해 ListItem의 뷰를 재사용하기 때문입니다. 그래서 포커스가 바뀌기 전에 입력한 값을 다른 변수에 저장을 해줘야 하는데 TextWatcher라는 함수를 통해서 이 방법을 구현할 수 있습니다. ListView에 EditText 넣기 예제 파일 올려드립니다. 예제 파일은 동적으로 추가 삭제되는 EditText리스..

[Android] ListView를 팝업(AlertDialog)창으로 만들기 [내부링크]

안녕하세요 이번에는 리스트뷰를 팝업으로 만드는 방법에 대해서 한번 알아보도록 하겠습니다. 리스트뷰를 팝업창으로 만들어 UI를 구성하시면 좀 더 사용자가 사용하기 편리한 앱을 만들 수 있습니다. 생각보다 굉장히 간단한 방법이니 쉽게 따라 하실 수 있을 것입니다. ListView를 팝업창으로 만들기 바로 예제 소스 올려드리겠습니다. 먼저 팝업창으로 만들 리스트뷰를 간단하게 만들어주도록 하겠습니다. activity_main.xml MainActivity package com.example.user.popup_listview; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import android.wi..

[Android] LayoutInflater로 동적으로 레이아웃(뷰) 추가하기 [내부링크]

이번 포스팅으로는 LayoutInflater의 사용법에 대해서 한번 알아보도록 하겠습니다. 보통 LayoutInflater은 동적으로 뷰를 컨트롤할 때 사용되고 ListView안에도 많이 쓰이는 기법입니다. 한번 알아두시면 여러 방면으로 응용해 사용하실 수 있으실 겁니다. LayoutInflater로 동적으로 레이아웃(뷰) 추가하기 아래 예제는 버튼을 누르면 레이아웃이 아랫부분에 계속 복제되는 토이 프로젝트입니다. MainActivity.java import android.os.Bundle; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widg..

[Android] 안드로이드에서 웹뷰로 자신이 만든 웹사이트 띄우기 [내부링크]

이번에는 안드로이드 웹뷰를 통해서 자신이 만든 개인 홈페이지를 핸드폰에 띄우는 방법을 한번 알아보도록 하겠습니다. 자기가 만든 홈페이지가 아닌 네이버나 다음 같은 사이트도 띄울 수 있습니다. 우선 자신이 안드로이드 상에서 띄울 웹사이트가 있어야겠죠? 웹사이트가 반응형이라면 자신의 핸드폰 해상도에 맞게 웹사이트의 컴포넌트가 자동으로 재배치되기 때문에 반응형 웹으로 만들어 놓으시면 더더욱 좋습니다. 저는 BootStrap을 활용하여 간단하게 웹페이지를 제작해봤습니다. (BootStrap에서 반응형 웹을 지원하거든요) BootStrap을 활용하실 분들은 앞선 포스팅을 참조해주세요. 스프링에서 부트스트랩 적용하기 ※반응형웹이란? : 반응형 웹 디자인을 기반으로 다양한 디바이스(PC, 태블릿 PC, 스마트폰, 스..

[Spring] 스프링에서 BootStrap적용하기 [내부링크]

이번 포스팅에서는 스프링 프로젝트에서 BootStrap을 연동하는 방법에 대해서 한번 알아보도록 하겠습니다. BootStrap이란 웹 사이트나 웹 응용 프로그램을 작성하기 위해 사용하는 무료 소프트웨어 도구 모음입니다. 기본적인 디자인이 다 되어있는 오픈소스로 되어있기 때문에 디자인 능력이 부족한 개발자이거나 단기간에 웹사이트를 만들어야 하는 경우 요긴하게 사용할 수 있습니다. 스프링에서 BootStrap적용하기 1. BootStrap을 쓰기 위해서는 자신이 원하는 소스코드를 다운로드하아야 합니다. BootStrap을 다운로드하는 홈페이지를 두 군데 소개해드리겠습니다. 부트스트랩 무료 오픈소스 링크 바로가기 1 부트스트랩 무료 오픈소스 링크 바로가기 2 위에 링크된 사이트에서 자신이 원하는 오픈소스를 다..

[Android] 공공기관 API 신청 및 파싱하기(검색기능구현) [내부링크]

공공 데이터 홈페이지라는 것이 있습니다. 국가 혹은 공공기관에서 만들어놓은 정보들을 국민들에게 개방해 둔 것인데 여기서 무료로 제공하는 공공 API를활용하여 쉽고 간단하게 유용한 앱을 만들 수 있습니다. 이번 글에서 공공기관 API를 파싱하고 검색하는 것까지 구현하는 방법에 대해 포스팅하려 합니다 공공기관 API는 아무거나 파싱 해와도 상관없는데 저는 전기차 충전소 정보를 파싱 해왔습니다. 공공 API 신청 및 파싱 & 검색 구현하기 1. 우선 위에 사진에 나와있는 것처럼 차례대로 공공기관 API를 신청해서 승인을 받습니다. 공공데이터를 신청하면 거기에 딸려있는 참고 문서가 있는데 참고 문서에 필수 요청 변수와 파싱 할 때 필요한 여러 가지 정보들이 있으니 꼭 챙겨보세요. https://www.data...

[Android] Soundpool으로 만드는 드럼 앱 [내부링크]

이번에는 안드로이드로 간단한 드럼을 만들어보도록 하겠습니다. 지금까지 SoundPool로 오카리나와 피아노를 만들어봤는데, Soundpool로 만드는 악기 앱 시리즈의 마지막 버전입니다. SoundPool로 만드는 드럼 앱 좌측 drawable에 드럼 이미지를 삽입합니다. 그다음 res 파일에 오른쪽 클릭하여 새로운 폴더 raw를 만들어줍니다. Directory를 클릭~! raw라고 폴더명을 입력해준 뒤 드럼 소리를 raw폴더 안에 넣어줍니다. 이까지 했으면 이제 소스코드를 입력해보겠습니다. XML 아래 사진과 같이 드럼을 배치하면 됩니다. java package com.example. user.music; import android.content.Intent; import android.media.Au..

[Android] Soundpool으로 만드는 피아노 앱 [내부링크]

안드로이드 SOUNDPOOL 메서드를 활용한 피아노 앱을 만들어보았습니다. 완성한 피아노 앱의 모습입니다. SoundPool로 만드는 피아노앱 먼저 좌측 res 파일에 오른쪽 클릭하여 새로운 폴더 raw를 만들어주세요. Directory를 클릭! raw라고 입력해준뒤 피아노소리를 raw폴더안에 넣습니다. 이제 소스코드를 입력할 차례입니다. XML 흰건반위에 검은건반을 올려야하기때문에 위로 중첩이 가능한 FrameLayout을 활용하였습니다.. 또한 버튼 하나하나에 onClick을 주어 자바코드에서 활용 가능하게 만들어주세요. JAVA SoundPool pool; int d1; int d2; int re; int mi; int pa; int sol; int ra; int si; @Override prote..

[Spring] 스프링 MVC 패턴 개념 알아보기 [내부링크]

Controller - 메소드 파라미터의 종류 @RequestParam - RequestParam 매핑 1. HTTP 요청 파라미터를 메서드의 파라미터로 전달받을 때 사용 2. 어노테이션이 적용된 파라미터가 String이 아닐 경우 실제 타입에 따라 알맞게 타입 변환 수행 3. 필수가 아닌 파라미터인 경우 required 속성 값을 false로 지정 (기본 값은 true), 값은 null로 저장 4. 필수가 아닌 파라미터인 경우 defaultValue 속성 값으로 기본값을 지정 CookieValue - 쿠키 매핑 1. 쿠키 값을 파라미터로 전달 받을 때 사용 2. 해당 쿠키가 존재하지 않으면 500 응답 에러 코드 전송 3. 쿠키가 필수가 아닌 경우 파라미터와 같이 required 속성의 값을 false..

[Jsp] 자바빈을 사용한 회원가입 [내부링크]

자바빈이란? 자신이 사용하고싶은 데이터를 클래스화 시켜 그 클래스에 값을 넣어두고 활용하는 기법을 말합니다.. JavaBean 문법

[Jsp] 웹에서 파일 업로드하기 [내부링크]

이번 포스팅에서는 파일 웹상에서 파일 업로드하는 방법에 대해 포스팅하겠습니다. 우선 파일 업로드를 하기 위해서는 cos.jar파일이 필요합니다. 위에 첨부되어있는 cos.jar파일을 위와 같이 WEB-INF -> lib 폴더 안에 넣어줍니다. 아래는 웹페이지에서 파일 업로드하는 예제입니다. 웹에서 파일 업로드하기 fileUploadForm.jsp 파일 업로드 폼 올린 사람: 제목: 파일명1: 파일명2: fileUpload.jsp 업로드 확인 및 다운로드 페이지이동 fileCheck.jsp 올린사람 : 제목 : 파일명1 : 파일명2 : 그런뒤 위와 같이 jsp파일을 3개 만들어 해당 코드를 붙여 넣어줍니다. 실행방법은 FileUploadForm을 띄우고 다음 페이지에서 바로 보이는 a태그를 클릭해주시면 됩니다

[Java] 자바로 만드는 간단한 채팅 프로그램 [내부링크]

자바 네트워크 부분을 활용하여 간단하게 서로 말을 주고받을 수 있는 채팅 프로그램을 한번 만들어보았습니다. 첨부파일을 통해 소스를 공유하니 필요하신분들은 다운로드하여 활용하셔도 됩니다. Java로 만드는 간단한 채팅 프로그램 1. 위 압축파일의 압축 해제하여 이클립스에 넣어주세요. 2. 위에있는 키티 사진을 저장한 뒤 MutiClient 27번째 라인에 저장 경로를 써줍니다. ↑ 이 부분입니다. 작동방법 1. 이렇게만 해주면 채팅 프로그램이 잘 작동될것입니다.. 이제 작동방법에 간단히 설명해드릴게요. 우선 서버를 먼저 돌립니다. MulitServer.java를 먼저 실행시켜주시면 됩니다. 실행을 시키면 위와 같이 콘솔창에 서버가 실행되었다는 메시지가 나옵니다. public void init() throw..

[Android] 안드로이드와 오라클 스프링으로 연동/통신하기 [내부링크]

저번 포스팅에서는 안드로이드와 jsp와 연결/통신하는 방법을 포스팅 했었죠. 이번에는 안드로이드와 서블릿을 연결/통신하는 방법을 소개해드리고자 합니다. 저번 포스팅에서도 알려드렸다시피 안드로이드는 보안 관련 문제로 외부 DB(오라클, MYSQL, 몽고 DB 등)과의 직접적인 연결이 불가능합니다. 그래서 사진과 같은 방식으로 안드로이드와 오라클 사이에 중간다리 역할을 하는 서버가 있어야 하는데 앞선 포스팅에서는 JSP로 중간다리역할을 하는 방법을 알려드렸다면 이번 포스팅에서는 서블릿 방식으로 안드로이드와 오라클을 연결하는 방법에 대해 포스팅하겠습니다. 안드로이드의 통신 값을 서블릿에서 받고 그 통신 값을 오라클에 넣어주는 전체적인 툴은 이전 포스팅과 동일합니다. Spring Server 1. 우선 서버부터..

[Android] 안드로이드와 오라클 JSP로 연동/통신하기 [내부링크]

이번 포스팅에서는 안드로이드 스튜디오와 오라클을 연결하는 방법에 대해서 한번 알아보도록 하겠습니다. 안드로이드 스튜디오에 내부 DB인 SQLite와는 직접적으로 바로 연결이 가능하지만 Oracle과 MySQL 같은 외부 DB는 안드로이드에서 직접적으로 접근이 불가능합니다. 보안상의 이유 때문이라고 하네요. 그러므로 위 사진과 같이 JSP 혹은 서블릿등으로 오라클과 통신하기 위해서는 중간 다리를 만들어 줘야 하는데 이번 포스팅에서는 안드로이드를 JSP 서버를 이용하여 오라클과 연결할 수 있는 방법에 대해서 알아보도록 하겠습니다. 안드로이드에서 JSP로 통신 값을 보내고 그 통신 값을 JSP에서 오라클로 넣어주는 방식입니다. 먼저 안드로이드(클라이언트)부터 작업을 시작하도록 하겠습니다. Android Stu..

[Jsp] 이클립스로 오라클에 값 입력하고 출력하기(커넥션풀) [내부링크]

이클립스에서 준 값으로 오라클에 값을 넣고(insert) 값을 출력(select)하는 방법을 한번 알아보도록 하겠습니다. 이클립스에서 오라클 데이터베이스에 접근을 하기 위해서는 커넥션 풀 방식을 자주 사용합니다. 커넥션 풀(Connection)이란 객체를 여러 개 생성하여 풀에 담아놓고 필요할때마다 꺼내는 방식입니다. 커넥션 풀의 사용 이유 JDBC를 통해 DB에 연결하기 위해서는 DB드라이버를 로드하고 커넥션 객체를 받아와야 합니다. 하지만 DB에 연결할 때마다 매번 커넥션을 생성하고 드라이버도 로드하려고 하면 굉장히 귀찮고 메모리도 많이 먹을 거예요. (굉장히 비효율적인 코드가 되어버리고 말 것입니다.) 하지만 커넥션 풀을 사용하면 하나의 커넥션을 돌려가면서 사용하기 때문에 이런 비효율적인 작업이 없..

[Jsp] 오라클과 이클립스 JSP로 연동/통신 & 확인 방법 [내부링크]

오라클을 설치받았으면 이클립스와 연결해서 써먹어야겠죠? 이번에는 오라클과 이클립스를 연결하는 방법을 한번 알아보도록 하겠습니다. 오라클과 이클립스 JSP로 서로 연동/통신하기 1. 먼저 오라클과 이클립스를 연동하려면 jar파일이 필요합니다. jar파일은 오라클을 설치한 폴더 lib폴더에 있고. lib폴더는 JDBC안에 있습니다.참고로 저의 lib 경로는 아래와 같습니다. C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib 2. 여기서 2번째 jar파일 ojdbc6.jar파일을 복사한 뒤 이클립스 lib폴더에 넣어줍니다. Connection jdbc/OracleDB javax.sql.DataSource Container 3. web.xml 밑에 가셔서 위 코드를..

[Oracle] SQL developer 계정만들기/새접속하기 [내부링크]

DB공부를 계속하다 보면 데이터베이스에 생성한 테이블이 너무 많아 정신이 없는 경우가 생깁니다. 저도 첫번째 계정 HR계정에 테이블이 너무 많아 테이블에 작업하기 굉장히 불편했는데요. (어지러워서 눈알이 핑글핑글 돌아갈지경...ㅠㅠ) 이에 새로운 계정을 하나 만들어서 깔끔한 계정에서 작업을 이어나가기로 했습니다. 물론 이미 있는 hr계정을 이용하여 이런 식으로 새 접속을 할 수도 있지만 깔끔하게 새로운 계정을 하나 만들어서 접속하도록 하겠습니다. 하지만 그냥 무턱대고 없는 계정으로 새 접속을 하게 되면 invalid username/password; logon denied라는 메시지가 뜨게 됩니다. 바로 계정이 없어서 생기는 에러 메시지인데 새 접속을 하기 위해서는 새로운 계정을 하나 만들어줘 야합니다...

[Jsp] 웹에서 공공기관 api 파싱하기 [내부링크]

웹 개발을 하다 보면 웹사이트에 공공기관 api를 파싱 해야 될 상황이 올 때가 있습니다. 저는 부산 여행 웹사이트를 제작하면서 부산 여행지 api를 가지고 와야 하는 부분이 있어 파싱을 하게 되었고, 다른 예로는 홈페이지에 날씨정보를 띄우고 싶어 기상청 정보를 들고 오고 싶을 때(?) 정도가 있겠군요. 이번 웹사이트를 만들면서 제일 어려웠던 부분이 파싱부분이였습니다. 제가 며칠 동안 밤을 지새우면서 알아낸 코드를 공유합니다. JSP에서 공공기관 API를 노드 형식으로 파싱 하는 코드입니다. 웹에서 공공기관 api파싱하기 위에 보이시는 strUrl에다가는 자신이 파싱하고싶은 공공기관 api의 URL을 넣으면 됩니다. (API를 신청하면 딸려오는 기술문서를 참고) 이렇게 파싱 해서 받아온 정보를 맵(Map..

[Android] Soundpool으로 만드는 오카리나 앱 [내부링크]

안드로이드에서는 SoundPool이라는 사운드 함수를 지원합니다. SoundPool이라는 함수는 간단하게 소리를 입혀주는 함수인데, 이것을 이용해 간단한 악기 앱을 만들 수 있습니다. SoundPool로 만드는 오카리나 앱 mainpage.xml StartActivity.java package com.example.samsung.ocarina; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.view.View; import an..

[일상] 제 4회 대한민국 SW융합 해카톤대회 참가 후기 [내부링크]

대구 경북대학교에서 열리는 제4회 대한민국 SW융합 해카톤 대회를 다녀왔습니다. 저는 부산에 사는 닝겐이기에 꼭두새벽에 일어나 버스를 타고 동대구 버스터미널로 향했습니다. 부산에서 대구에서도 그리 멀지 않고 대구시외버스터미널에서 경북대까지도 택시로 기본요금거리이기 때문에 생각보다 일찍 도착했습니다. 아니 좀 많이 일찍 도착했습니다. 2시에 행사 시작인데 12시도 안돼서 도착해버렸다는....... 새벽에 좀 더 잘 걸 그랬어요 ㅠㅠㅠㅠㅠㅠㅠ 경북대 으리으리한 건물이 보입디다... 네 바로 저기가 저희가 대회하는 건물입니다. 경북대에서는 가장 신축건물인거 같더라고요 건물 내부 사진도 굉장히 멋있었는데 사진찍는걸 깜빡했습니다...ㅠㅠ 도착해보니 생각보다 큰 대회더라구요 가볍게 생각하고 갔는데 생각보다 사람도 ..

[Html] input type 종류 & 예제 총정리 [내부링크]

1. input type = "text" , input type = "password" 이름 : 비밀번호 : 2. input type = "radio" 치킨 피자 짜장면 짬뽕 3. input type = "checkbox" CPU Memory 하드디스크 CDROM GRAPIC_CARD 4. select option 가장 재미있는 것을 선택해 주세요. HTML 자바스크립트 CSS HTML 자바스크립트 CSS 5. input type ="button" ,input type = "submit", input type = "reset" 6. input type ="image" 이미지: 7. input type ="file" 파일명:

[JavaScript] 홈페이지 접속한시간 알려주기 [내부링크]

앞서 포스팅한 자바스크립트로 현재시간 불러오기의 응용 버전입니다. 이번에는 회원이 웹사이트에 접속한 후 몇 초가 지났는지 알려주는 예제입니다. [JavaScript] currentDate를 활용한 현재시간 불러오기 홈페이지 접속한시간 알려주기 Insert title here 위와 같이 사이트에 접속한 후 지난 시간이 뜨게 됩니다.

[JavaScript] currentDate를 활용한 현재시간 불러오기 [내부링크]

웹사이트를 만들다 보면 현재시간을 간단하게 사용자들에게 보여주고 싶을 경우가 있는데, 그때 유용하게 쓸 수 있는 함수가 currentDate 함수입니다. currentDate를 활용한 현재시간 불러오기 현재시간 불러오기 위와 같은 텍스트형식으로 현재시간을 간단하게 웹사이트에 표시할 수 있습니다.

[JavaScript] 마우스 우클릭 막기/ 내용 선택 막기 [내부링크]

웹사이트를 만들다 보면 내가 쓴 글을 다른 사람이 스크랩하지 못하게 만들고 싶을 때 유용하게 사용할 수 있는 방법인 마우스 오른쪽 클릭과 내용 선택(드래그)을 막는 방법을 소개합니다. 마우스 우클릭 막기/ 내용 선택 막기 마우스 오른쪽 버튼과 내용 선택 막기 마우스 오른쪽 버튼과 내용 선택 막기 마우스로 오른쪽 버튼을 클릭하거나 드래그 해서 내용을 선택해 보세요 접속자가 스크랩을 시도할 경우 위와같은 경고창을 띄워줍니다.

[JavaScript] 자바스크립트로 배열의 Push,Pop,Sort, Reverse구현하기 [내부링크]

이번에는 자바스크립트를 활용해서 배열의 Push Pop Sort Reverse까지 구현해보도록 하겠습니다. 자바스크립트로 배열의 Push, Pop, Sort 구현하기 현재 배열의 값: 실행화면 배열에 값을 추가하고 여러 가지 기능을 사용해보시길 바랍니다.

[Spring] 스프링 프로젝트 느낌표 에러 해결 [내부링크]

이번 포스팅에서는 스프링 프로젝트에 느낌표가 뜨는 에러를 해결하는 방법에 대해 알아보려 합니다. 저도 처음 스프링을 설치하고 프로젝트를 만들었는데 느낌표가 떠서 굉장히 애먹었습니다. 스프링 프로젝트를 만드니까 이런식으로 ! 스프링 프로젝트에 느낌표가 떳었습니다. 지금 와서 깨달았는데 아마 라이브러리를 제대로 찾지 못해 생기는 현상 같습니다. 스프링 프로젝트 느낌표 에러 해결 이걸 해결해주는 방법은 굉장히 간단합니다. 먼저 User폴더로 가주세요. User폴더에 보시면 위 사진과 같이. m2라는 폴더가 있는데 이 폴더가 라이브러리를 모아두는 그런 곳입니다. 이 폴더를 삭제해주면 됩니다..(이클립스를 끈 상태에서 삭제하시는 것을 추천드립니다. 충돌 날수도 있으니..) 그런 뒤 스프링 프로젝트를 다시 실행시키..

[Html] Form태그 회원가입양식 메일 보내기 [내부링크]

이번 포스팅은 HTML을 활용한 회원가입 양식에다가 SUBMIT버튼을 누르면 전자메일도 구현되는 기능을 한번 구현해보도록 하겠습니다. 전자메일 기능은 폼 태그에서 mailto 함수를 걸어서 처리하였고, 회원가입 양식은 html으로 제작하였습니다. Form태그 회원가입양식 메일 보내기 회원 기본 정보 아이디 : 4~12자의 영문 대소문자와 숫자로만 입력 비밀번호 : 4~12자의 영문 대소문자와 숫자로만 입력 비밀번호확인 : 4~12자의 영문 대소문자와 숫자로만 입력 메일주소 : 예)[email protected] 개인 신상 정보 주민등록번호 : 예)1234561234567 생일 : 년 1 2 3 4 5 6 7 8 9 10 11 12 월 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..

[JavaScript] 공학용 계산기 만들기 [내부링크]

자바스크립트를 활용하여 공학용 계산기를 만들어보도록 봤습니다. 자바스크립트를 공부하는 사람들이라면 계산기 정도는 만들 수 있어야 한다는 말에 한번 만들어 본 계산기 예제입니다. 자바스크립트 공학용 계산기 소스 완성한 계산기의 모습입니다. 유용하게 사용하세요.

[JavaScript] alert창을 누르면 이전화면으로 되돌아가기 [내부링크]

웹사이트를 만들다 보면 웹사이트 사용자를 팝업창 클릭 시 이전 페이지로 보내야 할 때가 종종 있습니다. 이럴 때 유용하게 사용할 수 있는 예제입니다. 예제는 alert창을 클릭할 시 이전 페이지로 돌아가는데, 다르게 사용할 수도 있습니다. 좀 더 응용하여 이전 페이지가 아니라 href.location을 이용하여 자신이 원하는 곳으로도 보내는 것도 가능합니다. alert창을 누르면 이전화면으로 되돌아가기 //body에 onload해준다.

[Jsp] Session을 ArrayList로 받기/세션 배열 [내부링크]

세션을 사용하다 보면 반드시 동일한 세션 이름으로 세션을 사용할 경우가 가끔 있습니다. 대표적인 예가 체크박스나 연속해서 값을 저장할 경우를 예로 들 수 있겠군요. 이럴 경우에 Session을 ArrayList나 vector에 담아서 사용할 수 있게 만들어줘야 합니다. 이런 방식을 사용하면 좀 더 효율적으로 Session값을 효율적으로 관리할 수 있겠죠? Session은 웹페이지가 꺼지지 않는 한 존속되기에 굉장히 활용성이 높은 방식입니다. 이번 포스팅에서는 Session을 ArrayList로 사용하는 방법에 대해 알아보겠습니다. Session을 ArrayList로 사용하기 선언부분 출력 부분 //리스트를 새로 생성해줘도 이어서 추가하게된다.

[Web] 'Starting Tomcat Server at localhost' 에러 잡기 [내부링크]

이번 포스팅에서는 Starting Tomcat v Server at localhost has encountered a problem이라는 톰캣 에러의 해결방법에 대해 알아보겠습니다. 웹 개발을 진행하다 보면 톰캣이 계속 말을 안 들어 난감한 상황이 참으로 많이 생기는데 그중에서 가장 많이 보게 되는 에러 메시지 중 하나가 Starting Tomcat v Server at localhost has encountered a problem라는 메시지입니다. 이 오류가 뜨는 이유는 여러 가지가 있겠지만 톰캣의 포트를 이미 어떤 프로그램이 사용하고 있거나 톰캣이 중복 실행되었을 경우가 대표적입니다. 'Starting Tomcat Server at localhost' 에러 해결방법 이 메시지를 쭉 읽어보시면 포트 ..

[Spring] 스프링 프레임워크 설치 / 다운로드 방법 [내부링크]

스프링 프레임워크란? 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 동적인 웹사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있는 프레임 워크이며 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크의 기반 기술로서 쓰이고 있습니다. 현시점 실무에서 굉장히 많이 쓰이고 있는 프레임워크입니다. 설치방법에는 크게 두가지가 있습니다. 첫 번째 방법 : 스프링 설치경로 바로가기 스프링 사이트에 가서 다운로드하는 방법. 두 번째 방법 : 이클립스에서 스프링 플러그인을 설치하는 방법. 이 두 가지 방법 중에 두 번째 방법이 좀 더 쉽고 간단하니 설치하시려고 하는분들은 두번째 방법을 사용하면 좀 더 쉽게 스프링을 설치할 ..

[Oracle] 오라클 설치 / 다운로드 방법 [내부링크]

오라클이란? 오라클이란 미국의 오라클에서 제작한 데이터베이스 관리시스템이며 현재 유닉스 체제에서 가장 많이 사용되는 DBMS입니다. 오라클 설치 / 다운로드 1. 우선 오라클 다운로드 사이트로 접속해주세요. 오라클 설치 링크 바로가기 접속하게 되면 위와 같은 사이트가 나타나게 될 텐데 여기서 동의란에 체크하고, 자신이 원하는 버전을 다운로드해주면 됩니다. 저는 Windows상에서 오라클을 운영할 것이므로 첫 번째 파일을 선택하도록 하겠습니다. 2. 자신이 다운로드 할 버전을 선택하면 로그인을 하라고 하는 창이 뜹니다. 로그인해야만 다운로드를 할 수 있기에 회원이 아닌 사람들은 꼭 회원가입을 해야 합니다. 로그인을 하면 다운로드가 진행됩니다. 오래 걸리는군요....ㅠㅠㅠ 3. 파일을 다 받았으면 받은 파일..

[Oracle] 오라클 Developer 설치 / 다운로드 방법 [내부링크]

이번 포스팅은 오라클을 좀 더 쉽게 사용할 수 있도록 만들어주는 오라클 Developer를 설치하는 방법에 대해서 알아보도록 하겠습니다. 오라클 디벨로퍼의 설치는 정말 간단합니다. 압축파일만 해제시키면 바로 실행시킬 수 있어요 오라클 Developer 설치하기 1. 압축파일은 오라클 사이트에서 다운로드를 하아야 합니다. 오라클 디벨로퍼 설치경로 바로가기 해당 사이트로 접속을 해주세요. 2. 접속해주신 뒤 동의를 하고 설치 파일을 다운로드하여줍니다. 이미 JDK가 설치되어있는 사람은 두 번째 설치가 안 된 사람은 첫 번째를 눌러주세요. 저는 컴퓨터에 JDK가 이미 설치되어있으므로 2번째있는 설치 파일을 다운로드하도록 하겠습니다. 그럼 열심히 설치가 될 것입니다. 설치가 완료되면 압축을 풀어주세요. 3. 압..

[Oracle] 오라클 HR계정 사용하기 [내부링크]

이번 포스팅에서는 저번 포스팅에서 받았던 오라클의 HR계정을 Unlock 시켜주는 작업을 한번 진행 보도록 하겠습니다. HR계정이란 오라클에서 기본적으로 제공해주는 학습용 계정인데. HR계정 말고도 여러 개 있습니다. 하지만 이 HR계정은 기본적으로 잠겨있어서 HR계정을 사용하기 위해서는 계정을 Unlock 시켜주는 작업을 진행해야 합니다. 우선 이 포스팅은 오라클을 성공적으로 설치했다는 것을 전제로 합니다. 오라클 설치가 안되신분들이라면 아래 링크된 글을 참조하여 오라클을 설치해주시기 바랍니다. 오라클 설치하기 오라클 HR계정 사용하기 1. 먼저 Cmd창에서 sqlplus 라는 문구를 입력한 뒤 Enter를 누릅니다. 그런 뒤 HR계정으로 접속하려고 하면 the account is locked라는 문구..

[Android] 안드로이드 스튜디오 설치 / 다운로드 방법 [내부링크]

안드로이드 스튜디오란? 2013년 5월 16일 구글 컨퍼런스에서 구글의 제품 관리자인 Ellie Powers에 의해서 발표되었으며, 안드로이드 스튜디오는 안드로이드를 위한 공식 통합 개발환경입니다. 예전에는 이클립스로도 안드로이드 개발을 많이 진행했지만 요새는 많은 개발자들이 안드로이드 스튜디오를 통해 안드로이드 앱 개발을 하고 있습니다. 안드로이드 스튜디오 설치 / 다운로드 1. 안드로이드 스튜디오는 안드로이드스튜디오 설치 링크 바로가기에서 다운로드할 수 있습니다. 해당 경로에 가서 빨간 박스 안의 다운로드 버튼을 눌러주세요. 참고로 크롬으로 다운을 받아야 합니다. 익스플로러로 다운로드하면 다운이 잘 안 되니, 필히 크롬으로 다운로드하시길.. 2. 안드로이드 스튜디오 설치방법은 별거 없습니다. 계속 N..

[IDE] 이클립스(Eclipse) cannot be resolved to a type 오류해결 [내부링크]

웹 개발을 진행하다 보면 여러 가지 오류들이 많이 납니다. 이번 포스팅에서는 String cannot be resolved to a type라는 오류의 해결방법에 대해 알아보도록 하겠습니다. String cannot be resolved to a type오류는 Jsp상에서 자바 코드를 입력할 수 없을 때 발생하는 오류입니다. String뿐만이 아니라 자바에서 제공하는 모든 클래스에 빨간 줄이 뜨고 있을 거예요. 아마 이클립스가 빌드할 때 JDK를 인식하지 못하고 있는 듯합니다. 이 오류가 뜬다면 가장 먼저 JDK가 제대로 작동하고 있는지 확인해보아야 합니다. 문구를 읽어보니 역시나 이클립스상에서 자바를 읽지 못하고 있군요. cannot be resolved to a type 오류해결 방법 1. 이렇게 오..

[Web] 이클립스(Eclipse)에 아파치톰캣(Tomcat) 연동하기 [내부링크]

이번 포스팅으로는 저번에 설치했던 아파치 톰캣을 이클립스와 연동하는 방법에 대해서 알아보겠습니다. 1. 이클립스를 켜서 하단에 Server라는 탭에 다음과 같은 문구를 확인할 수 있죠. 아직 아무 서버도 없다는 것인데, 이 문구를 클릭해주세요. 그 다음 자신이 깔아놓은 톰캣 버전을 클릭하고 Next를 눌러주면 됩니다. 2. 여기서 자신이 깔아놓은 톰캣 경로를 설정해주고 Finish를 누르면 됩니다. 3. 톰캣이 연동된것을 볼 수 있습니다.

[Web] 아파치 톰캣 9 설치 / 다운로드 방법 [내부링크]

아파치 톰캣이란? 아파치 톰캣이란 아파치 소프트웨어 재단에서 개발된 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션입니다. 이클립스에서 웹 개발을 진행할 때 설치해야 할 거의 필수 소프트웨어라고 할 수 있습니다. 요새 실무에서는 웹을 만들 때는 웬만하면 거의 톰캣을 돌리더라고요. 아파치 톰캣 다운로드 1. 우선 아래에 링크된 아파치 톰캣 사이트로 들어갑니다. 아파치 톰캣 홈페이지 링크 바로가기 2. 들어가게 되면 위 사진과 같은 사이트가 보이게 될 텐데. 여기서 왼쪽 메뉴바에 보면 3. Download라는 메뉴가 있습니다. 여기서 자신이 원하는 톰캣 버전을 선택해주시면 됩니다.. 저는 톰캣 9 버전을 설치해주도록 하겠습니다. 클릭~! 4. 설치하고 싶은 버전을 선택하고 스크롤을 내리시면 빨간 ..

[Java] 이클립스 설치 / 다운로드 방법 [내부링크]

이클립스란? 이클립스는 프로그래밍을 할 때 코드를 작성하고, 저장하고 컴파일 및 디버깅을 도와주는 통합 개발 환경입니다. 가장 많이 쓰이는 자바 개발 툴이며, 자바뿐만이 아니라 이클립스로 웹, 스프링, 모바일도 개발할 수 있습니다. 강력한 기능을 가지고 있지만, 무료로 배포되고 있기 때문에 실무에서도 많이 쓰이고 있습니다. 단점이 있다면 프로그램이 살짝 무거운 편입니다. 메모리를 많이 먹기 때문에 어느 정도 컴퓨터 성능이 받쳐줘야 합니다. 이클립스 설치 / 다운로드 1. 우선 아래 경로로 들어가셔서 이클립스 홈페이지로 들어갑니다. 이클립스 홈페이지 링크 바로가기 2. 빨간 박스 안에 있는 다운로드를 클릭해주셔서 설치 링크로 들어갑니다. 3. 여기까지 들어왔으면 좌측 하단에 자동으로 이클립스 설치 파일이 ..

[Java] JDK 설치 및 환경변수 설정하기 [내부링크]

JDK란? 자바 개발 키트(Java Development Kit)의 줄임 말으로써 오라클에 의해 바이너리 제품으로 제공됩니다. 자바 플랫폼의 등장 이래 지금까지 가장 널리 사용되는 소프트웨어 개발 키트(SDK)이며, 자바를 사용하기 위해서는 기본적으로 JDK가 설치되어 있어야만 사용이 가능합니다. JDK 설치 / 다운로드 Java는 원래 Sun사의 제품이었으나, 오라클이 합병하면서 이제는 오라클의 것이 되었습니다. Jdk는 오라클 홈페이지에서 설치하실 수 있습니다. (오라클 홈페이지) 아래의 주소로 들어가주셔서 다운로드해주시기 바랍니다. JDK설치 링크 바로가기 1. 홈페이지에 들어가시면 위와같은 화면이 나올 텐데 , 여기서 왼쪽 빨간색 박스로 표시되어있는 이미지를 클릭 2. 여기서 동의 눌러주고 자신의..

[초대장배포] 11월 초대장 9장 무료 배포합니다. [내부링크]

원하시는분들은 댓글로 메일주소와 사유 남겨주시면 초대장 보내드릴께요

[초대장배포] 10월 초대장 7장 무료 배포합니다. [내부링크]

원하시는분들은 댓글로 메일주소와 사유 남겨주시면 초대장 보내드리겠습니다.

[제품리뷰] 삼성 정품케이스 프로텍티브 스탠딩커버 + 강화유리 [내부링크]

안녕하세요 이번에는 엊그제 개통한 저의 짱짱한 갤럭시 노트8의 강화후기를 남기고자 합니다. 삼성 노트8 정품케이스는 총 다섯가지의 종류의 케이스가 있는데 저는 그중에서 프로텍티브 스탠딩커버를 골랐습니..

[제품리뷰] 갤럭시노트8 딥씨블루 구매 후기 [내부링크]

오늘은 기분이 좋아요 여러분~~ 왜냐하면 제가 드디어 쓰고있던 구닥다리폰을 청산하고 삼성의 신제품중에서도 신제품인 샤랄랄라 삼성 갤럭시 노트8로 갈아타는 날이거든요 ㅎㅎㅎ 오야쓰~~!!!  색상은 미드나..

[생각정리] 도전자의 자세 [내부링크]

몇 년 전까지만 해도 나는 삶을 살아가는데 있어 안전지향적 테크트리만을 고집했다. 조금이라도 위험요소가 있으면 회피하고 성공 가능성이 최대한 높은길로만 나아갔고 이것이 내 방식이며 또한 옳은 길이라..

[생각정리] 나의 과거와 미래 [내부링크]

나는 흔히 말하는 엘리트 코스를 밟지 못하였다. 그렇기에 이 세상이 살아가기에는 남들보다 더욱더 많은 노력을 필요로 한다. 어릴 적에는 공부보다는 그저 인생을 즐기는 것이 재미가 있었다. 매일매일 새로운..

[생각정리] 타인과 나를 비교하지 않는 습관 [내부링크]

나는 똑똑한 사람들을 동경해왔다. 그들의 지식을 배우고 싶었고 그것들을 배우기 위해 그들과 친구가 되려고 노력해왔다. 지금은 똑똑한 사람들을 많이 안다. 그런 사람들을 많이 안다는 것은 내 인생에 있어 큰..

[생각정리] 인생의 변곡점 [내부링크]

대학을 졸업하고 서울에 온 순간부터 세상이 다르게 보이기 시작했다. 대학과 부모라는 울타리가 사라지고 책임감이라는 의무가 생기는 순간 수많은 고민들이 생겨났다. 불확실한 미래와 높아져만가는 집값, 그리..

[생각정리] 슬럼프 탈출하기 [내부링크]

별다른 노력도 하지 않는 저 사람은 행운으로 큰돈을 벌고 나는 또 제자리걸음이다. 요행을 바라지 말라하였건만 요행을 바라고 싶다. 행운은 노력하는 자만이 얻을 수 있는 것이라 부산물쯤이라 생각했지만 노력..

[생각정리] 따스한 봄기운, 자전거와 여의도 [내부링크]

오늘은 날씨가 너무 따뜻했다. 드디어 봄 내가 제일 좋아하는 계절이 왔다. 상쾌한 주말의 아침 이른 시간이라 거리에 인기척은 없지만 따스한 봄의 기운과 기분 좋은 햇살 그리고 적당히 시원한 바람에 기분이..

[생각정리] 자동으로 돈을 버는 머니머신 만들기 [내부링크]

어릴 적 나는 부자가 되고 싶다는 막연한 꿈이 있었다. 예전에는 막연히 좋은 집에서 살고 싶어서 좋은 차를 타고 싶어서 부자가 되고자 하였다면 지금은 그 이유가 좀 더 명확해졌다. 지금 나는 자유로운 삶을 살..

[생각정리] 경제적인 자유를 지향하는 삶 [내부링크]

일을 하지 않고도 살아갈 수 있을까? 우리가 살고 있는 자본주의 세계의 금융시스템에는 이자라는 시스템이 있다. 이 시스템으로 인해 돈은 언제나 어디서나 돈을 벌어들이고 있다. 그렇기에 충분한 돈이 있다는것..

[생각정리] 올해의 끝에 드는 생각 [내부링크]

새벽 칼바람이 매섭다. 조금 뒤면 올해의 마지막 해가 뜰 것이다. 생각할 것이 많은지 오늘따라 유난히 잠이 오지 않는다. 잡다한 생각이 많이 드는 새벽이다. 남들보다 멋지게 살고 싶었다. 남들보다 특별한 삶을..

[생각정리] 내향적인 사람 [내부링크]

어릴 적 나는 외향적인 사람이 되고자 노력했다. 그래야만 사회에서 더 대접받을 줄 착각하고 살았다. 서울에 와서 나의 모습은 많이 바뀌었다. 낯선 공간에서 또다시 인간관계를 쌓아가기에는 나 자신이 지쳤고..

[생각정리] 시련을 극복하는 마음가짐 [내부링크]

일요일이 끝난 뒤 월요일 새벽 잠이 오지 않는다. 『이번 한주 동안은 어떻게 버텨야 할까?』라는 생각이 머릿속을 맴돌아 잠들 수가 없다. 월요일 새벽만 되면 항상 반복되는 고통이다. 매주 월요일은 밤을 새우..