본문 바로가기

프로그래밍

이시봉 족발 홈페이지 만들었습니다. 얼마 전에 이시봉 족발 홈페이지를 런칭했습니다.ㅎ 거의 플래시를 많이 사용했습니다.홈페이지 디자인하는 부분에서 상당히 많은 어려움이 있었는데요, 이시봉 족발 사장님의 몇번에 걸친 피드백 이후에 현재의 홈페이지 디자인이 완성 되었습니다. 작업을 진행하다가 매장에 들른 적이 있었는데요, 그 때 인심 좋은 사장님께서 족발을 싸주시더라구요.배달 전문이 무슨 의미인가 했는데, 정말 깔끔하게 잘 포장되어 있어서 깜짝 놀란 기억이 나네요.ㅎㅎ 메뉴도 다양해서 골라먹는 맛도 있겠더라구요.ㅎ 저희 집이 근처라면 많이 배달시켜 먹을텐데,, 하는 아쉬움이 있을 정도.ㅎ 홈페이지를 보고 주문을 하는 고객을 위해, 특별 할인이 되는 쿠폰도 만들어뒀습니다.ㅎ 부산 북구 / 부산 진구 / 김해 전지역에 배달이 된다고 하니까, 근처.. 더보기
포토샵 모바일(photoshop.com mobile)을 안드로이드 애플리케이션에 통합할 수 있다!!! 어도비가 써드-파티 개발자에게 photoshop.com mobile for android 1.1을 사용하여 개발자의 애플리케이션에 포토샵 모바일의 기능을 넣을 수 있도록 한다고 밝혔다. photoshop.com mobile을 릴리즈한지 4달만에 나온 뉴스이다 . 물론 예전보다 더 업그레이드 되었다. 어도비의 Digital Imaging Rich Media Solutions의 부사장이자 general manager인 Doug Mack가 다음과 같이 말했다. 아이폰과는 다르게 안드로이드 플랫폼에서는 photoshop.com 에디터를 개발자가 넓게 활용할 수 있도록 해주었다. photoshop.com mobile for android 1.1의 업데이트 버전에서는 Vibrant(boost photo colors.. 더보기
플래시(Flash)에 동영상을 넣어보자. 플래시에 동영상을 넣는 방법을 배워보자. (이 작업은 CS4에서 이루어졌으므로 그 아래 버전에서는 약간 다를 수도 있다.) 먼저 새로운 플래시(fla)를 연다. 그리고 나서 파일-가져오기-비디오 가져오기...를 누른다. 음.. 본인은 현재 플래시를 한글 버전으로 사용하고 있는데 아마 영어 버전으로는 file-import-import video...?일 것 같다.(추측일 뿐...) 이제 비디오 파일을 선택해야 하는데 플래시에서 지원되는 파일 형식은 flv와 f4v이다. 흔히들 동영상 파일하면 avi, wmv, mpeg등을 떠올리기 쉽고, 실제로도 많이 쓰이는 포멧들이다. 그런데 플래시에서는 이러한 파일들을 import할 수가 없다. 그래서 제공해주는 것이 바로 Adobe Media Encoder이다. 비디.. 더보기
플래시(Flash)에서 프리로더(preloader)만들기 플래시 파일의 용량이 클 경우에 웹에서 플래시를 조금씩 받아오게 된다. 그런데 다운로드 속도가 플레이 속도보다 느리다면 플래시 화면이 끊기거나 음성과 위치가 맞지 않는 등 많은 문제를 유발할 수 있다. 그래서 사용하는 것이 프리로더(preloader)이다.(플래시를 플레이하기 전에 미리 로딩을 다 해놓는 것이다.) 이번에 홈페이지를 하나 만들게 됐는데, 만들다보니 swf파일의 크기가 어느정도 크다고 판단되었기에 프리로더가 필요하게 되었다. 그런데 나는 as1.0 , as2.0으로는 예전에 프리로더를 만들어봤지만, as3.0으로 작업을 한 것은 이번이 처음이었다. 그래서 간단한 기능 하나를 하는데에도 약간씩 이해 못할 문제들이 발생하곤 했는데 그 중 하나가 프리로더였다. 먼저 플래시에서 장면(Scene)을.. 더보기
Subclipse(SVN)에서 충돌(conflict)이 일어나는 경우 해결법 예전에 한 친구와 프로젝트를 같이 진행한 적이 있었다. 그때 svn을 사용해서 개발하려고 subclipse를 설치해서 사용했다. 그리고 열심히 프로젝트를 진행하려고 하는데 크나큰 문제점이 닥쳤다. revision1 인 파일을 나와 내 친구가 update를 통해 받은 상태에서 각자의 작업을 진행하고 있었고, 내 친구가 먼저 수정을 끝내고 commit을 했다. 나도 얼마있지 않아서 작업을 끝내고 commit을 하려고하는데 error가 발생했다. 이유는 revision 때문이었다. 친구가 commit을 한 순간 그 파일은 revision2가 HEAD로 된다. 그런데 나는 revision1을 가지고 수정을 한 상태이니, 당연히 commit을 못하도록 막는 것이다. 그런데 오늘에서야 그 해결책을 찾아냈다. 방법은.. 더보기
안드로이드 개발 환경 구축(updated) 안드로이드 application을 만들기 위한 개발 환경을 구축해보자. 먼저 최신 버전의 Eclipse를 다운로드 한다. 다운로드 링크 : http://www.eclipse.org/downloads/ Eclipse홈페이지에서 Downloads 페이지를 보면 여러 개의 Eclipse Packages를 볼 수 있다. 이 중에서 자바 개발자용 통합 팩인 Eclipse IDE for Java Developers를 다운받으면 된다. 위 그림에서 오른쪽 빨간 사각형 부분을 보면 OS 선택하는 부분이 있는데 만약 자신의 운영체제가 Windows라면 Windows를 클릭하면 된다. 다음으로 할 일은 안드로이드 SDK를 다운받는 것이다. 다운로드 링크 : http://developer.android.com/sdk/ind.. 더보기
HTTPService를 이용해 데이터를 받아올 때 조심해야 하는 부분 HTTPService를 이용하면 XML, JSON등의 형식으로 데이터를 송신 및 수신할 수 있다. 그런데 이번에 다음 책 검색API를 이용하여 웹 사이트를 만들려고 했었는데, 이 때 큰 문제가 있었다. 보통 액션스크립트를 이용해서 받아온 xml데이터를 조작해 줄 필요가 있을 것이다. 그러면 for문이나 for each문을 이용해서 하나하나의 값을 조작해줘야 하는데, xml에 들어있는 값이 여러개일 때에는 문제가 되지 않는데 1개의 값만 갖고 있을 때 문제가 발생한다. 받아온 xml의 형식은 아래 그림과 같다고 하고 예를 살펴보자. root는 channel이고 그 밑에 Item의 총 개수를 나타내는 totalCount가 있고, Item이 0개 이상 존재하게 된다. 각 아이템마다 title과 imageSrc.. 더보기
플렉스에서 애니메이션 만들기 플렉스에서 애니메이션을 만드는 방법은 2가지가 있다. 1. 먼저 첫번째는 enterFrame이벤트를 이용하는 것이다. 이는 원래 플래시에서 사용하던 방식인데, 프레임 개념을 사용해서 애니메이션을 만드는 것이다. enterFrame이벤트를 사용하기 위해서는 이벤트 리스너를 등록시켜줘야 한다. addEventListener(Event.ENTER_FRAME, onEnterFrame); 이렇게 해주면 enterFrame에 대한 이벤트 리스너가 등록된 것이다. 두번째 인자인 onEnterFrame은 매 프레임마다 호출되는 함수이다. 그러면 이제 우리가 해야할 일은 onEnterFrame함수를 작성하는 것이다. private function onEnterFrame(event : Event) : void { //매 .. 더보기
플래시 플레이어 디버거(flash player debugger) 설치 플래시 플레이어 디버거는 플렉스에서 작업을 하는 동안 디버깅을 할 필요가 있는데 이 때 꼭 필요한 디버깅 툴이다. 그래서 오늘은 플래시 플레이어 디버거를 설치하는 방법에 대해 알아보자. 먼저 자신의 컴퓨터에 flash player debugger가 설치되어 있는지 확인해야 한다. 이를 위해서는 플래시 또는 플렉스가 동작하고 있는 브라우저에서 오른 클릭을 해보자. 아마 대부분의 사람들이 아래와 같은 화면을 볼 수 있을 것이다. 하지만 디버깅이 가능하기 위해서는 다음과 같은 화면이 나와야 한다. 두 화면의 차이를 알겠는가? 바로 "디버거"의 유무이다. 대부분의 사용자는 플래시 플레이어는 설치되어 있지만 플래시 플레이어 디버거는 설치되어 있지 않다. 그래서 이를 설치해줘야 한다. 플래시 플레이어 및 디버거를 .. 더보기
함수의 원자성(atomicity) 보장 멀티 쓰레드(multi-thread) 기반의 프로그래밍을 하게 되면 중요한 것이 바로 원자성의 보장이다. 그렇다면 원자성이 무엇인가? 원자성이란 여러개의 쓰레드가 있을 때 특정 시점에 어떤 메소드를 두개 이상의 쓰레드가 동시에 호출 못한다는 것이다. 간단한 예를 들어보자. class Job implements Runnable { public void run() { while(true) { go(); stop(); } } public void go() { /* 매우 중요한 작업이다 */ } public void stop() { /* 그냥 일반적인 작업이다. */ } } 위의 Job 클래스를 보면 run()메소드에서 go()와 stop()메소드를 무한 호출하고 있다. 그런데 여기에서 go()메소드가 아주 중.. 더보기