* PHP에서 사용하고 있는 날짜 포매팅의 방식은 다음과 같다. string date(string $format [,int $timestamp = time()] ) : 첫번째 $format 인자는 날짜를 나타낼 포맷을 설정하는 인자이다. : 여기서 두번째 인자 $timestamp를 입력하지 않으면 현재 날짜 기준으로 time() 함수의 값을 입력한 것이 기본으로 들어가며, 아닌 경우에는 해당하는 시간에 대시간을 리턴한다. : 그래서 결과적으로 $timestamp의 시간을 $format으로 포매팅한 결과를 스트링으로 리턴하게 된다. * format 인자 : format에서 이용하는 인자는 아래와 같다. - '년'과 관련된 문자 format 문자 설명 예 Y 4자리 숫자로 표시 1999나 2003 y 2자리..
* 이번에는 데이터 구조를 자바스크립트로 구현을 해놓는 작업을 할 것이다. 부분부분 단위별로 중요한 데이터구조부터 구현할 것이다. 2012/11/03 - [Mini Project/NY-School] - [NY-School] 기본 기능과 데이터구조 설계 * 1차로 구현할 데이터 구조- 사용자- 학교- 학생 목록- 학생- 선생님- 반 * 구현 결과 /*jslint browser:true */ /*jslint plusplus: true */ (function (doc, win) { "use strict"; var nyschool, host = "ny-school.appspot.com", loginId, currentUserInformation, School, StudentList, Student, HomeRo..
* 이번에는 간단한 인터페이스 구현과 다른 Activity로 넘어가는 방법을 알아보자. 2012/11/05 - [Android(안드로이드) 앱 개발 기초] Eclipse 개발환경 설정하기, Android SDK 설치하기 2012/11/07 - [Android(안드로이드) 앱 개발 기초] 안드로이드 프로젝트 생성하고 에뮬레이터로 앱 실행하기 * 인터페이스 구성 : 안드로이드의 인터페이스는 XML을 기반으로한 문법으로 ViewGroup과 View가 구조적 엮어져 있는 구성을 하고 있다. : ViewGroup은 Linear layout과 같이 보이지 않는 컨테이너를 나타내고, View는 button 또는 text field와 같은 UI 위젯을 나타낸다. * Linear layout 구성하기 : 다시 Eclip..
* 이번에는 기본 앱을 생성해서 에뮬레이터로 실행해보는 것을 해보자. 2012/11/05 - [Android(안드로이드) 앱 개발 기초] Eclipse 개발환경 설정하기, Android SDK 설치하기 * 이클립스로 프로젝트 생성: New > Android Application Project 선택 : 새로운 프로젝트의 이름과 패키지를 입력하고 빌드에 사용할 SDK와 최소요구 SDK를 선택한다.* 최소요구 SDK의 기능들을 기준으로 컴파일이 되기 때문에 대상으로 하는 SDK를 잘 선정해야한다. 어떠한 제품군을 대상으로 개발을 할 것인지, 현재 운영체제 버전별 분포도가 어떻게 되는지에 따라 조사를 하고 결정하는 것이 좋을 것이다. : 버전별 분포 관련글 참고2012/11/07 - [Programming/An..
* 구글에서 제공하는 정보 사이트에서 정보를 확인할 수 있다. http://developer.android.com/about/dashboards/index.html : 아래는 최근 14일간 구글 플레이에 접속한 안드로이드의 버전별로 모든 데이터이다. * 2012년 11월 1일 데이터 : Gingerbread가 54%, ICS가 25%, Froyo가 12%, Eclair가 3.1%, Jelly Bean이 2.7%의 분포를 보여주고 있다. * 2.1버전은 조금씩 도태되고 있는 것이 보이고 있고, 아직은 2.2버전은 호환하는 앱을 만드는 것이 좋을 것 같다. 앱 개발을 약 3개월 완성을 고려한다면 2.3.3만 지원해도 괜찮을 것 같기도 하다. : 아래는 화면크기와 해상도에 대한 분포도이다. 화면은 당연히 일단..
* 안드로이드 프로젝트를 생성했는데 생성 시작부터 아무것도 안했는데 에러가 난무하고 있다. : 도대체 무슨 에러인가 커서를 대보니 다음과 같다. : @override를 사용할 경우 무조건 superclass에 있어야한다는 내용이다. 해결방법으로는 @Override를 삭제하는 방법이 있다고 나와있다. 하지만 일일이 모든 @Override를 지우면서 할수는 없을 것이다. 이것의 간단한 해결방법이 있다. * 안드로이드 프로젝트는 기본적으로 자바컴파일러가 1.5로 잡혀있는데 1.6이상버전으로 세팅하면 문제가 해결된다. : 고치고나니 문제가 없어졌다. 이제 코딩하자! 끝.
* 이클립스 개발환경을 설정하고 안드로이드 SDK를 설치하는 방법을 알아보자. 1. 이클립스를 실행2. Help > Install New Software3. 오른쪽의 Add.. 버튼 클릭4. https://dl-ssl.google.com/android/eclipse/를 추가5. Developer Tools 를 체크하고 Next 6. 라이센스 사용에 동의하고 Finish 7. 설치가 완료되면 이클립스 재시작8. SDK Manager를 열어서 Android SDK를 설정 (설치가 안되었다면 Android SDK도 설치하자) * 이렇게 하면 일단 개발환경은 설정된것이다. 다음에는 간단한 앱을 한번 만들어서 실습해보자. 끝. - 다음 글2012/11/07 - [Android(안드로이드) 앱 개발 기초] 안드로이..
* 이번에는 HTML5에 새로 추가된 문서 규격과 관련된 태그들과 문서의 구조화에 대해서 살펴보자. 2012/10/07 - [HTML5 튜토리얼] 공부 시작 - 계획2012/10/25 - [HTML5 튜토리얼] HTML5의 등장 배경과 여러 가지 개발 환경 및 현재 현황2012/11/03 - [HTML5 튜토리얼] 기초 및 기본 구조, 프로그래밍상 기존의 HTML과 바뀐 점 * 새로추가된 태그들- 구조적인 표현을 위해 추가된 태그들 태그: 일반적인 문서나 앱의 섹션을 나타낸다. h1, h2, h3, h4, h5, h6등과 같은 태그와 함께 문서의 구조를 나타낼때 사용할 수 있다. 태그: 문서내의 하나의 독립적인 컨텐츠 부분을 나타낸다. 블로그 엔트리 또는 뉴스 기사 등에 사용 태그: 나머지 문서와는 아주..
var items = { "foo" : 123456, "bar" : 789012, "baz" : 345678, "bat" : 901234 }; 다음과 같은 연관 배열이 있을 때, items[0]이런식으로는 루프를 돌수 없다. 이 배열을 루프 도는 방법은 아래와 같이 for, in을 사용하면 된다. for(var index in items){ document.write(index + " : " + items[index] + " "); } 를 하게 되면 아래와 같이 출력할 수 있다. foo : 123456 bar : 789012 baz : 345678 bat : 901234 끝.
* 이번에는 HTML의 기초와 기본구조를 한번 살펴보도록 하자. 2012/10/25 - [Programming Lecture/HTML5] - [HTML5 튜토리얼] HTML5의 등장 배경과 여러 가지 개발 환경 및 현재 현황 : 이전 글에 있었던 XHTML의 해더를 다시한번 살펴보자. 12 : HTML에 익숙하지 않는다면 이게 뭔가 싶을수도 있을 것이고, xhtml에 익숙했던 사람들이라면 지긋지긋하게 외우기도 했을 문서의 형식과 스펙, 그리고 validation 스펙을 정의하는 헤더이다. XHTML에서는 이 헤더가 아주 중요한 역할을 하고 있었다. XHTML은 XML과 동일하게 사용을 하고자 했기 때문에 XML의 엄역한 validation을 똑같이 적용하고자 했던 것이다. xml에 익숙한 사람들이라면 헤..
* 이제부터 프로젝트 설계에 들어간다, 이제 전체적인 구조를 만들고나면 다음부터는 각 기능의 개발에 들어갈 것이다. *목적- 학교에서 선생님들의 업무를 도와줄 수 있는 웹 앱을 제공한다.- 학생들의 출결, 상담 등의 결과를 쉽게 저장하고 관리할 수 있는 기능을 제공한다. *환경- 서버, 데이터베이스: Google App Engine- HTML5, Javscript, CSS, 서버는 Python- 통신 규격은 JSON으로 통일한다. - 1단계 Web App, 2단계 iOS and Android Hybrid App, 3단계 Offline standalone Hybrid App- 데이터 구조는 자바스크립트 클래스로 유지한다. *제공/구현 기능- 사용자 관리: 사용자등록: 사용자 수정* 학교는 목록에서 선택 o..
* 이번에는 지금까지 만든 소스를 서버에 올리는 작업을 해보자 2012/10/06 - [NY-School] Google App Engine과 Python 시작하기전에 공부하기2012/10/06 - [NY-School] Google App Engine과 Python 시작하기 - Hello world2012/10/06 - [NY-School] Google App Engine과 Python 시작하기 - webapp framework2012/10/07 - [NY-School] Google App Engine과 Python 시작하기 - Datastore 사용해서 방명록 만들기2012/10/20 - [NY-School] Google App Engine과 Python 시작하기 - Template페이지 사용하기2012..
* typeof와 instanceof는 어떠한 변수가 문자열인지아닌지, 특정한 객체인지 아닌지 판단할때 사용하는 '연산자'들이다. 이들 둘이 어떻게 다른지 살펴보고 사용하면서 있을 수 있는 약점들도 같이 살펴보자. * typeof : typeof는 unary 오퍼레이터이다. unary 오퍼레이터로는 ! 라던가 - 등과 같이 인자를 하나만 받을 수 있는 연산자를 뜻한다. 즉, 함수가 아니고 연산자이기 때문에 괄호를 사용하면 안된다. typeof yourVariable; 위와 같이 실행하고 나면 리턴 값으로는 해당하는 변수의 primitive 타입을 스트링으로 준다. 돌려주는 primitive 타입의 종류는 아래와 같다. 'undefined''boolean''number''string''object''fun..
* 이번에는 Google App Engine과 Python에서 static한 페이지를 이용하는 방법을 살펴보자. 2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기전에 공부하기2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기 - Hello world2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기 - webapp framework2012/10/07 - [Mini Project/NY-School] - [NY-Schoo..
* 이번에는 저번에 만들었던 틀에서 사용했던 연관배열과 prototype에 대해서 공부해보도록 하자. 2012/10/04 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 1. 개요2012/10/04 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 2. 시작 - 사전조사 및 설계2012/10/11 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 3. 기본 지식 - 모듈과 네임스페이스2012/10/15 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기..
* 마우스 포인터를 mousedown이나 mouseup, mousemove, click 등의 이벤트 콜백 함수 안에서 가져오고자 한다면 아래와 같은 함수를 호출하면 된다. function mouseX(evt) { if (evt.pageX) return evt.pageX; else if (evt.clientX) return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); else return null; } function mouseY(evt) { if (evt.pageY) return evt.pageY; else if (evt.clientY) r..
* CSS에서는 다양한 border 스타일들을 제공하고 있다. 일단 border 스타일의 종류를 먼저 예제로 간단하게 알아보고 그 아래에 좀더 상세하게 살펴보자. : 아래는 CSS3를 기준으로 하고 있으며 오래된 브라우저에서 제대로 표시되지 않을 수 있다. * 각 스타일에 대한 예제이다. border-style:dotted border-style:solid border-style:double border-style:groove border-style:ridge border-style:inset border-style:outset * 보더의 넓이에 대한 예제이다. border-style과 같이 쓰지 않으면 아무런 효과가 없다. border-style:solid;border-width:5px border-s..
* HTML5에 대한 공부를 시작하기 전에 먼저 HTML의 간단한 역사와 등장 배경 그리고 현재의 HTML5 표준화 상황에 대해서 알아보자. 2012/10/07 - [Programming Lecture/HTML5] - [HTML5 튜토리얼] 공부 시작 - 계획 * HTML (Hyper Text Markup Language): HTML은 웹에서 여러 가지 컨텐츠들을 보여주기 위하여 등장했던 언어이다. 기본적으로 의 여는 태그와 의 닫는 태그로 둘러쌓이는 형식을 취하고 있으며, 그 안의 컨텐츠들도 이러한 여러 가지 태그들로 둘러쌓여서 브라우져에서 뿌려지게 되는 것이다. : 처음에 등장한 것은 기존의 터미널이나 텔넷과 같은 텍스트 기반의 정보 수집에서 벗어나 웹과 브라우져를 통한 정보 수집이 새로운 이슈가 되..
[파이썬] 구글 앱 엔진: No module named urllib 에러 * 맥에서 구글 앱엔진을 사용하다가 대뜸 위와 같은 에러가 났다.: 에러를 보니 File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/cgi.py", line 31, in import urllib ImportError: No module named urllib : 위와 같은 에러가 났다. 얼마전까지는 문제없이 됐는데 대뜸 이렇게 에러가 나는걸 보니 파이썬 2.6하고 연결되어있어서 문제가 있는듯 싶다. : 따라서 GoogleAppEngineLauncher를 실행하고 Preference가서 파이썬의 경로를 바꿔줘야했다.- 현재 파이썬의 경로, /usr/..
* 이전에 진행하면서 공부한 내용 2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기전에 공부하기 2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기 - Hello world 2012/10/06 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기 - webapp framework 2012/10/07 - [Mini Project/NY-School] - [NY-School] Google App Engine과 Python 시작하기 - Datas..
* 이번에는 지난번에 공부했던 내용을 토대로 실제로 적용해서 모듈에 만들어보도록 하자. 2012/10/04 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 1. 개요2012/10/04 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 2. 시작 - 사전조사 및 설계2012/10/11 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 3. 기본 지식 - 모듈과 네임스페이스 * 처음에 설계를 했던대로 네임스페이스는 utree, 그리고 내부에서 tree와 node 객체를 생성하는 기본적인 골격을 프로그래밍 해보자. :..
[PHP] 파일 업로드 (AJAX, XMLHttpRequest나 form 등으로 file 첨부), 에러나는 이유와 처리 방법 * 클라이언트 측 파일 업로드는 이전에 다뤄봤으니 이번에는 서버측 PHP에서 어떻게 파일을 다룰지 한번 알아보고 파일 업로드를 하게 될 때 일어나는 에러들의 이유와 그 처리 방법을 살펴보자. : 클라이언트 부분은 이전에 작성했던 글을 참고하면 될 것이다. 2012/10/10 - [Programming/Web Programming] - [Javascript] AJAX 비동기로 파일 첨부하기 (IE도 지원하게 만들기) : 솔직히 클라이언트쪽 세팅만 잘해줬으면 PHP 쪽은 할일이 거의 없다. 만약 올리는 쪽에서 input의 name이 "uploadFile"이라고 했다면, PHP쪽에서는 ..
* 오늘은 라이브러리를 만드는데 필요한 기본 지식인 모듈과 네임스페이스에 대해서 공부하자. 2012/10/04 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 1. 개요2012/10/04 - [Programming Lecture/Javascript Library] - [자바스크립트 라이브러리 만들기] 2. 시작 - 사전조사 및 설계 * 배경: 초창기 웹 개발이 자바스크립트 이루어지기 시작했을 때에는 자바스크립트는 HTML 페이지의 상단 : 이번에는 YUI를 한번 보자. 아래는 야후의 유용한 자동완성 위젯의 예를 가져온 것이다.- 참고 : http://developer.yahoo.com/yui/autocomplete/var myAutoCom..
[Javascript] Removing all children using DOM * HTML로 프로그래밍하다보면 모든 자식 노드를 삭제해야하는 경우가 생긴다 그럴때 사용하면 되는 간단한 팁이다. var cell = document.getElementById("cell"); while ( cell.hasChildNodes() ) { cell.removeChild( cell.firstChild ); }
* Apache로 웹 프로그래밍을 하다보면 에러 로그를 봐야하는 경우가 자주 생긴다. 특히 운영 중인 서버인 경우 어떠한 에러들과 경고들이 있었는지 확인하고 이러한 문제들을 해결하는 것이 서버를 쾌적하게 유지하는데 1순위 과제일 것이다. : 기본적으로 설정을 바꾸지 않은 Apache 서버의 로그 위치는 아래와 같다./var/log/httpd/error_log 이 위치는 RHEL / Red Hat / CentOS / Fedora Linux Apache/var/log/apache2/error.log 이 위치는 Debian / Ubuntu Linux Apache/var/log/httpd-error.log 이 위치는 FreeBSD Apache : 하지만 설정이 바뀌었을 경우에는 httpd.conf 파일을 찾아서..
* 이전에 AJAX로 XMLHttpRequest에 파일을 첨부하는 방법을 쓴적이 있다. 2012/10/05 - [Programming/Web Programming] - [Javascript] AJAX (XMLHttpRequest)로 비동기적으로 파일 업로드하기 : 맨날 크롬만 쓰니까 테스트를 하니까 잘 동작하길래 넘어갔는데, 이게 왠걸, Internet Explorer (이하 IE)에서는 돌아가지 않는 것이다. 이놈의 IE 또 무엇이 말썽인건가?! : 개발자 도구를 통해서 확인하니 uploadFile.files가 undefined랜다. 게다가 FormData도 없댄다..헐. 도대체 이것들은 있기는 한가?! http://msdn.microsoft.com/en-us/library/ie/hh772723(v=v..
* PHP에서는 이전부터 등과 같은 short tag로 HTML의 소스 중간에 변수의 출력을 간단하게 축약해서 출력하는 방법이 있었다. 하지만 이제는 그 출력 방식이 더이상 이용하게 되지 않고 있다. : 그 이유는 아주 간단하다. 바로 xml의 헤더에도 : 따라서 PHP는 단순히 와 같은 방식을 사용해야하는 것이다. PHP 5.4 이상 버전에서도 여전히 이러한 축약태그가 지원이 되지만, short_open_tags의 설정을 해줘야하고, 다른 어떠한 서버로 자신의 소스 코드를 옮겼을 때 모든 서버에서 돌아가기를 바란다면 이러한 축약 태그보다는 와 같은 풀 태그를 사용하는 것이 추천되고 있는 것이다.
* PHP 5.2이상 버전에서 활용가능한 json_encode와 json_decode 때문에 이 함수를 따로 수작업으로 구현했던 적이 있다. 2012/10/05 - [Programming/Web Programming] - [PHP] Fatal error: Call to undefined function json_decode() - yum update php를 했을 경우 실제로 업데이트할 내용이 없다고 하여 그냥 수작업으로 만들었지만, CentOS 5.5에는 이미 PHP 5.3 이 있다는 것을 알게 되었다. - yum search php53 을 실행하면 검색할 수 있다. : 하지만 yum install php53을 실행하면 기존에 인스톨된 php 5.1 버전과 conflict가 있다는 메세지를 받게 된다...
* 파일을 post로 첨부를 하였는데 만약에 php에서 #_FILES가 비어있다면, : 첨부한 이름과 가져오는 이름을 확인할 것 : 파일의 크기가 너무 크지 않은지 체크할 것- 만약에 php.ini의 설정을 바꾸지 않았다면 기본적으로 8메가의 제한을 가지고 있다. * 파일 첨부 크기 제한 늘리기: php.ini를 찾아서 post_max_size = 8M 인것을 늘려주고 서버를 재시작하면 된다.- Apache는 service httpd restart로 재시작 가능 끝.
Redhat의 경우 yum을 이용해서 설치를 하게 되면 /etc/php.ini 에 생성하게 된다. 하지만 운영체제나 설정마다 다르기 때문에 확실하게 아는 방법은 바로 phpinfo 페이지에서 찾아보는 것이다. 여기에 php의 설정에 대한 거의 모든 정보가 들어있으니 참고하자. * phpinfo 페이지 만드는 방법: 서버에 info.php 파일을 하나 만들어서 아래와 같이 쓰자. : 그리고 이 페이지로 접근을 하게 되면 다음과 php에 대한 정보들이 쭉 나오는데 아래쪽에 보면 "Loaded Configuration File" 에 "/etc/php.ini" 라고 나와있는 것을 볼 수 있다. : 이런 정보 페이지를 만드는게 귀찮다면 리눅스 콘솔에서 grep을 사용해서 찾아보는 방법도 있지만, 이 정보 페이지의..
- Total
- Today
- Yesterday
- GX-10
- ny-school
- Python
- lecture
- 삼식이
- 뽐뿌
- gae
- google app engine
- Android
- 자바스크립트
- java
- 탐론 17-50
- Javascript
- 사진
- gre
- HTML5
- php
- 안드로이드
- 팁
- TIP
- Writing
- 서울
- 샷
- HTML5 튜토리얼
- 강좌
- K100D
- 속깊은 자바스크립트 강좌
- 안드로이드 앱 개발 기초
- mini project
- c++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |