AJAX는 이제 어느새 한물간듯한 지겨운 단어가 되어버렸지만 그 개념은 여전히 남아있으며, HTML5의 기본 프레임워크 안에 그 개념은 내제되어있다. 이제는 자바스크립트를 이용하는 어떠한 패러다임을 일컫는데 AJAX를 쓰기 보다는 자바스크립트를 말 할때 AJAX라는 말을 쓰지 않아도 기본적으로 비동기라는 개념이 들어가있게 된 것이다. 비동기처리를 하기 위해 AJAX라는 단어가 나오기 이전부터 XMLHttpRequest를 이용해왔고 HTML5로 넘어가는 앞으로도 이 XMLHttpRequest를 통해서 비동기적인 처리가 이루어질것이다. 따라서 굳이 AJAX라고 강조를 하지 않아도 '자바스크립트'라 하면 데이터는 비동기적으로 가져온다고 생각을 하면 된다. (물론 페이지 refresh를 하는 경우 등 비동기적이..
컴퓨터에 아파치나 IIS를 깔기에는 부담이 될때 파이썬이 있으면 간단한 웹서버로 웹페이지들을 테스트할 수 있다. 콘솔로 가서 웹 서버의 루트로 하고자하는 디렉토리로 가서 다음과 같이 실행하면 된다. * 이는 순전히 http 서버만을 지원해주며 추가적인 웹 언어는 지원하지 않는다. Python 2.x 버전 python -m SimpleHTTPServer 8000 Python 3.x 버전 python -m http.server 8000 : 뒤의 8000은 포트 번호이다. 그럼 다음과 같이 웹서버가 실행된다. : localhost:8000 이나 127.0.0.1:8000으로 접속하면 웹 서버 처럼 파일 시스템에 접근이 가능하다. 테스트용으로 로컬에서 간단하게 사용하면 편하다. 끝.
[PHP] Session에 변수 저장하기, 불러오기 $obj = new Object();$_SESSION['myObj'] = $obj; //저장하기 $newObj = $_SESSION['myObj']; //불러오기 object를 저장하는 경우 serialize는 자동으로 해준다고 한다. 찝찝하다면 serialize를 수동으로 해줘도 괜찮다. 그리고 앞에 안전하게 세션의 시작을 설정해주는 것도 좋다. (세션을 사용하는 첫 페이지에 들어왔을 경우) session_start(); //세션 시작 $obj = new Object();$_SESSION['myObj'] = serialize($obj); //저장하기 $newObj = unserialize($_SESSION['myObj']); //불러오기 나중에 세션에..
[자바] String으로 된 수식 계산하기 : 옛날에 스택 배울때 힘들게 스택에 넣고빼고 수식을 파싱해가면서 했는데 자바 1.6이상에서는 그냥 Javascript 엔진을 이용하면 된다. (자바스크립트의 eval 함수와 같은 기능의 함수가 있다) import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; public class Test { public static void main(String[] args) throws Exception{ ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("JavaScript");..
:데이터베이스 목록 보기 (show databases) mysql> show databases; +--------------------+| Database |+--------------------+| information_schema | | aquarium | | mysql | | test | +--------------------+4 rows in set (0.00 sec) :데이터베이스 만들기 (create database ) mysql> create database mwangaza_survey; Query OK, 1 row affected (0.00 sec) :데이터베이스 선택하기 (use ) mysql> use mwangaza_survey; Database changed :테이블 생성하기 mysq..
[Android] C2DM 푸시 알림 구현하기 - PHP 서버 편 튜토리얼 PHP서버에서 C2DM을 이용해서 푸시를 하려면 curl을 이용하는 방법과 Zend 프레임워크를 이용하는 방법이 있다. 더 간단한 방법인 curl 을 이용해서 ClientLogin을 하고 메세지를 방법을 살펴보도록 하자. C2DM 푸시를 보내는 순서는 구글 계정 인증 (이전에 C2DM에서 푸시를 보내는 계정으로 설정했던 계정)curl을 이용해서 메세지 전송 이렇게 이루어진다. 두 단계만 거치면 간단하게 전송이 가능하다. 0. C2DM 세팅 (클라이언트)[안드로이드] C2DM(push notification) 구현하기 - 안드로이드(클라이언트) 편 1. google 계정 등록하는 함수 작성function googleAuthentic..
[Android] Unable to start service Intent { act=com.google.android.c2dm.intent.REGISTER (has extras) }: not found 안드로이드에서 C2DM 푸시 알림을 이용하는데 다음과 같은 에러가 일어나면 다음 3가지에 유의해야한다. 실제 안드로이드 장치에 올릴때에는 안드로이드 2.2 버전 이상이어야한다. (에뮬레이터 포함)Market 어플리케이션이 인스톨 되어있어야한다. (실제 장치만 해당, 에뮬레이터는 없어도 된다.)해당 장치에 구글 계정을 연동해야한다. (Settings / Accounts & Sync / Google..) : 참고--It requires devices running Android 2.2 or higher tha..
[Android] ContentProvider(컨텐트프로바이더)로 ExpandableList(확장 가능한 목록) 구현 예제 (CursorTreeAdapter (커서 트리 아답터) 사용) 튜토리얼 ContentProvider를 구현했으면 사용을 해야할 것이다. Activity안에서 query로 데이터를 가져올 수 있지만 목록에는 CursorAdapter나 CursorTreeAdapter로 해당하는 목록에 적용 시켜야할 것이다. 지금부터 ExpandableList에 CursorTreeAdapter를 사용해서 ContentProvider를 적용하는 방법을 알아볼 것이고 BaseExpandableListActivity를 확장하는 Activity안에서 작업을 할 것이다. 조금거 기본적인 ExpandableList..
[Android] R.java 파일 자동 생성 안될때 이클립스에서 가끔 R 파일이 자동으로 업데이트 안될때가 있을때에는..Clean project > Build automatically이클립스 재시작 위와 같이 했는데도 안된다면, 에러가 있는 resource가 있는 경우가 많다.대표적으로 layout xml 파일에 에러가 있다면 R 파일이 자동으로 생성되지 않는다. 그래도 못 찾겠다면 Android SDK 설치가 제대로 되었는지 확인한다. (업데이트하다가 도중에 중단되면 R.java가 생성 안되는 경우도 발생한다.) 끝.
[Android] 에뮬레이터에 구글 계정 등록하기 기본 안드로이드 에뮬레이터 상에서 구글 계정을 설정하는 부분이 settings/accounts & sync 아래에 Google이 없는 경우. 1. 컴파일하는 라이브러리로 Android X.X SDK 가 아니라 Google API를 이용해야한다.2. AVD 에뮬레이터도 Google API를 사용하도록 바꿔준다.3. Settings/Accounts & Sync/Google 들어가서 계정을 설정한다. 끝.
[Android] ContentProvider example and tutorial 지금부터 ContentProvider를 앱에 적용하는 방법을 살펴보자.최종적인 목표는 SyncAdapter와 ContentProvider를 조합해서 사용하는 것으로 일단 ContentProvider부터 앱에 맞게 설정을 하도록 해보자. 컨텐트프로바이더의 기본에 대해서는 여기서 읽어보면 유용하다. http://developer.android.com/guide/topics/providers/content-provider-basics.html이론 공부는 일단 코딩하면서 하나하나 매치 시켜나가보자.이론적인 공부는 나중에 더 자세하게 다뤄볼 생각이다. * 아래의 소스 코드는 처음으로 ContentProvider가 어떻게 돌아가는지..
[Android] C2DM, 푸시 알림 구현하기. 안드로이드에서는 C2DM (Cloud to Device Messaging)이 iOS에서의 푸시 알림과 같은 개념으로 사용자에게 알림 메세지를 서버에서 보내는 방식을 취하고 있다. 자세한 정보는 http://code.google.com/android/c2dm/index.html 에 가면 얻을 수 있다. 단계적으로 구현하는 방법을 알아보자. 1. C2DM을 이용하기 위한 등록 먼저 http://code.google.com/android/c2dm/signup.html 가서 앱을 등록해야한다. 입력해야하는 정보는 - 개발하고 있는 안드로이드앱의 패키지(예 : com.example.app)- 하루에 이용할 메세지의 수- 초당 이용할 메세지의 수- 이메일 연락처- ..
[Android] Popup, confirm window 안드로이드에서 확인창, 경고창을 띄우는 방법 new AlertDialog.Builder(this) .setTitle("Titel") .setMessage("Do you really want to whatever?") .setIcon(android.R.drawable.ic_dialog_alert) .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Toast.makeText(MainActivity.this, "Yaay", Toast.LENGTH_S..
[자바] 경고창, 확인창 띄우기 1. 단순 확인창 JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green."); 2. 예, 아니오, 취소 창 //Custom button text Object[] options = {"Yes, please", "No, thanks", "No eggs, no ham!"}; int n = JOptionPane.showOptionDialog(frame, "Would you like some green eggs to go " + "with that ham?", "A Silly Question", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,..
[자바] 랜덤 숫자 생성하기 자바에서는 기본적으로 랜덤 숫자를 생성하는 2가지 방법이 있다.double Math.random()java.util.Random class : 그냥 간단하게 랜덤 숫자를 만들때에는 위의 Math.random()을 사용하면 좋지만, 함수 정의를 보면 알겠지만 synchronized를 이용한다. 멀티쓰레드 프로그램을 이용한다면 Math.random()을 자주 이용한다면 성능에 영향을 미칠수 밖에 없을 것이다.: Math.random()은 0 ~ 1 사이의 double을 랜덤으로 생성한다. 범위에 맞게 수정해서 사용하면 된다.double java.lang.Math.random() public static synchronized double random ()Since: API Lev..
[안드로이드] 안드로이드 이전 버전도 호환가능한 액션바 만들기 이전에 올렸던 안드로이드 인터페이스 디자인 패턴 영상에(참고: [Android] UI Design patterns) 나왔던 액션 바 (Action Bar)를 만드는 방법에 대해서 알아보자. - 참고: 액션 바(ActionBar)는 안드로이드 SDK 3.0 (HoneyComb) 이후 추가되어 보다 쉽게 사용이 가능하다. 하지만 3.0 이전 버전에서는 ActionBar가 존재하지 않는다. 하지만 그 이전의 안드로이드 버전에 호환이 불가능하기 때문에 무턱대고 사용했다간 호환성문제에 부딪칠 것이다. 따라서 안드로이드 개발자 사이트에서는 호환가능한 예제를 제공해주어서 이 문제를 해결하도록 도와주고 있다.(참고: http://developer.andro..
자바로 GUI를 만들때 로그창을 JTextArea로 만들려면1, JTextArea가 스크롤 가능하게하고2. 로그가 발생하면 JTextArea 뒤에 내용을 붙이고 스크롤을 맨 아래로 내리면 된다. 1. JTextArea에 스크롤 넣기: 자바 JTextArea에 스크롤을 넣는 방법은, JScrollPane안에 JTextArea를 넣으면 된다.JTextArea txtLog = new JTextArea();JScrollPane scrollPane = new JScrollPane(txtLog);contentPane.add(scrollPane); * 주의 : JTextArea.setPreferredSize를 설정하면 스크롤바가 생기지 않는다. 2. JTextArea에 내용 붙여넣기 + 맨 아래로 스크롤하기 : JT..
빈 공백의 Border를 설정함으로써 내부 공백을 띄울 수 있다. JPanel pane = new JPanel();pane.setBorder(BorderFactory.createEmptyBorder(10 , 10 , 10 , 10); //상하좌우 10씩 띄우기 Border javax.swing.BorderFactory.createEmptyBorder(int top, int left, int bottom, int right) createEmptyBorderpublic static Border createEmptyBorder(int top, int left, int bottom, int right) Creates an empty border that takes up space but which does no..
[안드로이드] 검색 기능 구현하기(SearchableActivity) 안드로이드의 내장되어있는 검색 기능을 사용하는 방법을 알아보자. 안드로이드에서 제공하는 검색 기능을 이용하는 방법은 크게 2가지가 있는데 1) 기본적으로 내장되어있는 Search dialog를 이용하는 방법2) SearchView를 이용하는 방법. 2번이 좀더 디자인에 융화되고 다양한 구현을 가능하게 하지만 Android SDK 3.0 (11 version)의 이후 버전에서만 사용이 가능하다. 따라서 좀더 넓은 호환성을 가지려면 1번을 이용하면 되고, 좀더 다양한 인터페이스를 구현하고자 한다면 2번대로 하면 될 것이다.그 외 직접 EditText를 만들어서 키 입력마다 필터링을 하는 방법도 있는데 일단은 검색기능만 알아보자.이번에는 1..
이 에러가 나는 것은 컴파일을 할때 최신 버전의 자바로 컴파일을 하고실행할때 이전의 자바로 실행을 하려고 할때 일어난다.예를 들면 자바 1.7로 컴파일을 하고나서자바 1.6으로 실행하려고 한다면 이 에러가 일어난다.따라서 class 파일들을 지우고 이전 버전의 자바로 컴파일을 하거나지금 실행하는 자바를 최신버전으로 업데이트해야한다.팀 프로젝트를 하는 경우에 자주 일어나므로 처음부터 작업할 컴파일러를 정해두는것이 속편하다. 끝
AndroidManifest.xml 파일 안에 해당하는 Activity 태그 안에android:windowSoftInputMode="adjustResize"를 넣어주면 키보드가 나왔을때 화면 사이즈가 재조정 된다.키보드의 바로 위에 메신저와 같이 EditText의 입력 박스를 유지하고 싶으면EditText 위에 있는 내용을 ScrollView에 넣으면 키보드 위에 EditText는 항상 유지되고나머지는 키보드의 유무에 따라 사이즈가 변한다. 끝.
구글 앱 엔진에 올리는 경우 어드민 화면이 있어서 Datastore에서 무엇이 돌아가는지 보기 쉬운 반면 로컬에서는 보기가 힘들다. 이런 경우 로컬에서도 Datastore를 확인할 수 있는 어드민 페이지가 있다. 구글 앱 엔진을 로컬에서 실행하고나서 로컬에서 http://localhost:8888/_ah/admin 로 어드민 페이지를 들어갈 수 있다. Datastore를 확인할 수 없어서 불편했는데 의외로 좋은 기능이다. 끝.
JDO를 사용하면서 pm.deletePersistent(user); 를 할때 발생하는 에러. 이 에러는 user 객체가 Persistent로 binding되어있지 않은 상태라서 일어나는 에러이다. 따라서 PersistentManager로 binding시켜주고 삭제하면 된다. user = pm.getObjectById(User.class , user.getKey()); pm.deletePersistent(user); 끝.
1. GWT와 GAE를 연동시킨다. [GWT / GAE] Google Web Toolkit 와 Google App Engine 연동하기, 구글 서버에 올리기* 위의 페이지의 5번에서 transactions-optional을 설정했는지 확인한다. 다른 이름도 가능하지만 아래의 2번과 이름이 같아야한다. 2. PersistenceManagerFactory 객체를 만든다 - 아래와 같은 간단한 인터페이스를 만들어두면 좋다. public final class PMF { private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional"); private PMF..
JDO를 사용하기 위해서는 일단 JDO에서 사용하는 PersistentCapable한 객체를 만들어야한다. 다음 단계들을 거치면 만들수 있다. 1. 클래스 위에 @PersistenceCapable 을 설정 @PersistenceCapable public class User{ //.... } 2. 저장하고자하는 각 변수 위에 @Persistent 을 설정 @PersistenceCapable public class User{ @Persistent private String name; //setter/getter 생략 } * Persistent가 될수 있는 변수의 종류는 다음과 같으니 고려해가면서 JDO를 디자인하자. Datastore가 지원하는 기본 데이터형 @PersistenceCapable 을 설정한 객..
- Total
- Today
- Yesterday
- 서울
- lecture
- 탐론 17-50
- K100D
- google app engine
- Javascript
- php
- gae
- mini project
- ny-school
- java
- 강좌
- GX-10
- 자바스크립트
- 뽐뿌
- Python
- 안드로이드 앱 개발 기초
- 속깊은 자바스크립트 강좌
- 사진
- HTML5
- HTML5 튜토리얼
- c++
- 팁
- 안드로이드
- 삼식이
- Android
- gre
- TIP
- 샷
- Writing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |