본문 바로가기

전체 글

javascript 변수, 함수, 연산자 - 함수선언 지난 글에 이어 이번에는 함수 선언에 대해서 정리해보겠습니다. 변수의 선언에 대해서 정리한 글은 이전 글 https://chois82.tistory.com/62를 참고하시기 바랍니다. 2. 함수 선언 function doSomething() { alert("Hello world"); } // 나쁜 예 doSomething(); function doSomething() { alert("Hello world"); }​ 자바스크립트 엔진이 다음 예제처럼 코드를 해석하므로 위 코드는 정상적으로 동작합니다. // 나쁜 예 function doSomething() { alert("Hello world"); } doSomething();​ 이전에 이야기했든이 자바스크립트 엔진이 해석하는 방법대로 코드를 작성해야 하므.. 더보기
javascript 변수, 함수, 연산자 - 변수선언 자바스크립트 프로그램은 함수에서 모든 것이 처리됩니다. 함수는 비트를 옮기고 연산을 수행하기 위해 변수와 연산자를 사용합니다. 이러한 이유로 코드의 가독성을 높이고 복잡도를 낮추려면 기본 포맷을 정한 후 변수, 함ㅅ, 연산자 사용법을 정해야 합니다. 이번 포스팅에서는 변수 선언에 대해서 알아보겠습니다. 1. 변수선언 변수는 var 문을 이용하여 선언합니다. 자바스크립트에서 var는 스크립트 어느 곳에나 올 수 있고 또 여러번 사용할 수 있습니다. 모든 변수 선언은 변수가 선언된 위치와 상관없이 함수의 최상단으로 끌어올려 집니다. 이 때문에 개발자들이 코드를 잘못 이해하는 일이 종종 벌어집니다. 변수 선언이 함수 최상단으로 끌어올려 지는 것을 호이스트(hoist)라고 합니다. function doSomet.. 더보기
[java] APM 프로파일링 툴 프로그램을 만들고 성능이 느리다고 할 때 가장 먼저 해야 하는 작업은 병목 지점을 파악하는 것입니다. 자바 기반의 시스템에 대하여 응답 속도나 각종 데이터를 측정하는 프로그램은 많이 있습니다. 애플리케이션의 속도에 문제가 있을 때 분석하기 위한 툴로는 프로파일링 툴이나 APM 툴 등이 있습니다. 이 툴을 사용하면 병목 지점을 쉽게 파악할 수 있습니다. 하지만 대부분의 프로젝트나 운영 사이트에서 예산상의 이유로 사용하지 않습니다. 안타까운 현실입니다. 프로젝트에서는 프로파일링 툴을 사용하여 튜닝을 진행합니다. 물론 APM 툴도 사용합니다. APM 툴을 프로파일링 툴과 비교하면 프로파일링 툴은 개발자용 툴이고 APM 툴은 운영 환경용 툴이라고 할 수 있습니다. 각각의 장단점이 있기 때문에 뭐가 더 낫다고 말.. 더보기
아파치 메이븐 아파치 메이븐(Apache Maven)은 자바용 프로젝트 관리 도구입니다. 아파치 앤트(Ant)의 대안으로 만들어졌습니다. 아파치 라이선스로 배포되는 오픈소스 소프트웨어입니다. 메이븐은 컴파일과 빌드를 동시에 수행하는 것으로 알려졌습니다. 메이븐은 테스트를 병행하거나 서버측 배포(Deploy) 자원을 관리할 수 있는 환경을 제공합니다. 또한 라이브러리 관리 기능도 내포하고 있습니다. 메이븐은 필요한 라이브러리를 pom.xml에 정의해 놓으면 개발자가 사용할 라이브러리뿐만 아니라 해당 라이브러리가 작동하는 데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 Download 해주게 됩니다. 메이븐은 중앙 저장소를 통한 자동 의존성 관리를 중아 저장소(아파치 재단에서 운영 관리함)는 라이브러.. 더보기
java MVC 모델, mvc 모델2 패턴 웹 개발을 하면서 가장 흔하게 접하는 mvc 모델과 그와 관련된 내용을 적어볼까 합니다. 먼저 입구가 되는 뷰는 사용자가 결과를 보거나 입력을 할 수 있는 화면이라고 생각하면 됩니다. 이벤트를 발생시키고, 이벤트의 결과를 보여주는 역할을 합니다. 컨트롤러는 뷰에서 중간을 연결해 주는 연결자라고 생각하면 됩니다. 뷰에서 받은 이벤트를 모델로 연결하는 역할을 합니다. 여기서는 인터페이스를 제공하여 뷰에서 호출하는 부분입니다. 모델은 뷰에서 입력된 내용을 저장, 관리, 수정하는 역할을 합니다. 이벤트에 대한 실질적인 일을 하는 부분입니다. 이와 같이 웹이 아닌2 티어 구조에서는 이렇게 처리됩니다. 하지만 JSP를 사용하는 3 티어로 되어있는 JSP 모델은 주로 모델 1과 모델 2를 사용합니다. JSP 모델1은.. 더보기
java GC (Garbage Collection)에 대해서 자바 기반의 개발을 하면서 쓰레기 객체 처리(이하 GC, Garbage Collection)가 어떻게 수행되는지 잘 모르고 개발하는 개발자가 많이 있습니다. 물론 이 부분에 대해서 반드시 암기하고 숙지해야 개발을 할 수 있는 것은 아닙니다. 그러나 유닉스 서버든, 윈도우 기반의 서버든 Full GC를 수행하는 시점에는 해당 WAS의 컨테이너에서 서비스가 처리되지 않는다는 단점이 있습니다. 다시 이야기하면 GC를 많이 하면 할수록 응답 시간에 많은 영향을 끼친다는 것입니다. 그러므로 자신이 만든 자바 프로그램의 성능을 생각하는 자바 개발자라면, GC가 어떻게 처리되는지 정도의 기본 지식은 갖고 있는 것이 좋을 것입니다. GC란? 자바에서는 메모리 관리를 누가 해야 하는가에 대해서 생각을 좀 해보겠습니다. .. 더보기
[javascript] 기본 디렉터리 구조 다음과 같이 3개의 주요 자바스크립트 디렉터리가 포함된 구조가 가장 많이 쓰입니다. build 최종 빌드 파일을 위한 디렉터리로, 형상 관리 서버에는 이 디렉터리를 저장하지 않습니다. src 소스 파일을 위한 디렉터리로, 관련된 파일끼리 모아놓은 하위 디렉터리를 포함합니다. test 또는 tests 테스트 파일을 위한 디렉터리로, 주로 src 디렉터리 구조와 디렉터리 구조가 같습니다. 제가 관리하는 css 프로젝트는 기본 디렉터리 구조를 조금 변경해서 사용합니다. CSS는 build 디렉터를 형상 관리 서버에 저장하지 않지만, release 디렉터리는 항상 안정된 최신 버전의 빌드 파일을 저장합니다. src 디렉터리는 하위 디렉터리가 여러개 있고 이 하위 디렉터리에는 비슷한 기능끼리 모아두었습니다. te.. 더보기
javascript 자동화 나는 10초면 할 수 있는 일을 자동화하려고 온종일 프로그래밍하는 건 좋아하지 않는다. 2000년도 이전가지는 형상 관리 서버에 저장한 자바스크립트 파일을 주석까지 포함해서 그대로 배포하는 일이 많았습니다. 마치 미러링처럼 로컬에 10개 파일이 있으면 서버에도 똑같이 10개의 파일이 있었습니다. 따라서 로컬 파일과 서버 파일이 완벽히 같아서 변경사항을 빠르게 적용할 수 있었습니다. 이렇게 파일이 서버에 그대로 배포되어 있다 보니 이른바 '소스보기' 시대가 열리게 되었고 많은 웹 개발자가 웹사이트에 접속해 웹 페이지의 소스를 보며 공부하는 시기이기도 했습니다. 당시 자바스크립트는 요즘과 비교해서 용량이 굉장히 작았습니다. 오늘날 최신 웹 어프리케이션은 자바스크립트 코드가 수천 줄에 달하고 코드를 작성하는 .. 더보기