TechNote. 354

Android - ListView, CursorAdapter 그리고 _id

SQLite의 Data를 ListView에 표시하기 위해서는 CursorAdapter를 사용해서 ListView에 연결시켜 주면 된다. [관련글 링크] 이 SQLite에서 select해서 가져오는 data를 보면 아래와 같이 _id, title, body, done 등 4개이다. "_id integer primary key autoincrement, " + "title text, " + "body text, " + "done integer" 그런데 사실 나의 의도는 위의 4개 data를 모두 list상에 보여주는 것이 아니라 body와 done만 보여주고 싶다. 이래저래 열심히 구글링을 해보니 sqlite를 select한 결과물인 cursor를 나름대로 조작해서 새롭게 ArrayAdapter를 만드는 방..

Android 2016.01.14

Android - SQLite 사용하기

Android 에서 Data를 저장하는 방식에 어려가지가 있다. 사실 PC라고 해서 딱히 다르지는 않다. file system에 file 로 저장하는 방법, Database에 저장하는 방법, Network Storage에 저장하는 방법 등 여러가지가 있다. 그 중 이 글에서는 database에 저장하는 방법에 대해 알아보고자 한다. database에 대해 기본적인 지식이 있는 사람들은 알고 있겠지만 Database의 종류에도 여러가지가 있다. oracle, mysql, mssql 등등등등.... 종류가 너무나도 많다. 그 중 android에 기본적으로 들어 있는 sqlite를 android app에서 접근해서 사용하는 방법에 대해 알아보자. sqlite는 기본적으로 android에 들어 있고, 우리가 흔..

Android 2016.01.12

wordpress 비밀번호 분실시 대응.

wordpress를 무심코 설치하다 보니, 그냥 임의로 들어있는 비밀번호가 나의 비밀번호가 되어 버렸다.충격적이게도 너무 복잡한 비밀번호라 기억도 안나고 바로 밑에 비밀번호찾기는 이메일로 전송해 주는것 같은데 내서버에는 메일서버도 들어 있지 않아 비밀번호를 찾을 방법이 없다. 이럴때는 그냥 Database를 뒤져서 설정하는 수 밖에 없다. mysql> use wordpress;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A Database changedmysql> update wp_users set user_pass = md..

Database 생성 및 권한 주기

그 유명하다는 wordpress를 설치하다보니 신규 database가 필요하게 되었다. 사실 어려운 명령어는 아니지만 할 때 마다 잊곤한다. 다시 한 번 정리하면 다음과 같다. $> mysql -u root -pmysql> create database wordpress;mysql> use wordpress;mysql> grant all on wordpress.* to myid@localhost; 모든 권한을 주는게 보안상 문제가 있을 수 있지만 우선은..... 위와같이 하면 wordpress를 설치하는데에는 문제가 없다.;;

Database 2016.01.11

Android - ListView and Adapter

android app을 시작하면서 adapter라는 개념이 잘 와닿지 않았다. list를 만들기 위해서 listview에 data를 넘겨주면 자동으로 보여주면 되지, data를 adapter에 연결하고, 이를 다시 listview에 연결하고, 대체 왜 이 adapter라는게 필요한지 잘 이해가 안갔다. 자료를 좀 찾아보니 data(Text, Image 등)별로 처리하는 방법이 다 다를테고, 그렇다고 view마다 해당 data에 대한 처리 routine을 구현해야 한다면 view마다 동일 내용을 일일이 넣어 줘야 하는 불상사가 생긴다. 즉, view에 넘겨주는 부분은 adapter라는 class로 일원화 시키고, data에 따른 구현은 해당 adapter class를 extend시켜 하나의 class로 구..

Android 2016.01.09

Android - Layout (레이아웃)

Android App에서 Layout (화면구성)을 구성/선언하는 방법은 두가지가 있다. 1. XML로 선언하여 표시-. UI를 표시하는 XML을 별도로 두어 Code 구현과 화면 Design을 구분하는 방법이다. UI를 분리하여 구현 가능하다는 장점이 있지만 사용자 반응에 따라 혹시 어떤 event에 따라 dynamic 하게 UI가 변경되지는 못한다는 단점이 있다. 2. Runtime시 Instance 로 선언(코드)하여 표시-. 위 XML로 선언하는 방식에 비해 코드와 Design의 분리가 불가능하다는 단점이 있지만, Runtime시 UI를 변경할 수 있다는 장점이 있다. 이에 따라 기본적인 UI는 XML로 표시하고, Runtime시 변경이 필요한 UI 부분에 대해서는 추가적으로 코드 구현을 하는 것..

Android 2016.01.08

Android - Content Providers (콘텐츠 제공자)

Content Provider는 한 Process의 Data에 다른 Process에서 연결가능하도록 하는 표준 interface 이다. [Application A_ContentResolver] [Application B_ContentProvider] [Application B_Data] 외부에서 Application B의 Data에 접근하기 위해서는 기본적으로 Application B에서 Content Provider의 구현이 필요하다. 즉, 외부에 Data 공유가 필요없다면 Content Provider를 제공하지 않아도 된다. 이렇게 외부에서 Data에 접근이 가능하도록 Content Provider가 제공된다면 접근하는 쪽에서는 Content Resolver 가 필요하다. 즉, Content Pro..

Android 2016.01.06

Android - Services (서비스)

Background에서 실행되는 구성요소로 Activity와 같이 사용자 UI를 제공하지 않는다.다른 구성 요소에서 Service를 시작할 수 있고, 해당 구성 요소를 소멸시키더라도 background에서 계속해서 실행하게 된다.추가로 실행되고 있는 Service에 다른 구성요소가 binding 하여 상호 작용을 할 수 있다. 다른 구성요소인 Activity와 같이 상태가 존재한다. StartedStarted 상태가 되기 위해서는 App 구성요소에서 startService()를 호출하면 된다.Service는 자신을 호출한 구성요소가 소멸하더라도 상관없이 남아 있고, 한번 시작되면 계속 실행될 수 있다. 다만 Service내 구현이 무기한 실행이 아니라 정해진 작업이 있고, 이가 완료되었다면 중단 될 수 ..

Android 2016.01.05

Android - Tasks (작업) 그리고 BackStack

이전 글인 구성요소, Activity 에서 확인했듯이,기본적으로 하나의 APP은 여러개의 Activity로 구성되어 있으며, 각 Activity는 서로 다른 Activity를 호출할 수 있다. 같은 APP내의 Activity 뿐만 아니라 다른 APP내의 Activity까지 호출이 가능하다. 예를 들어 카메라 앱에서 사진은 찍은 후, 갤러리 앱으로 넘어가 찍은 사진을 확인한다거나Web browser 내에서 관심있는 APP을 검색 중 APP market으로 바로 넘어가 다운로드 받는 등의 경우이다. 이렇게 다른 APP의 Activity 를 자유롭게 호출하여 넘어갈 수 있다보니 APP간에 경계가 없다고 볼수 있는데,이로인해 Activity는 Application 단위보다는 Task라는 개념의 단위로 이해하는 ..

Android 2016.01.05

Android - Fragment (플래그먼트)

Fragments Fragment는 사용자 UI를 나타낼수 있는 하나의 Activity내의 모듈을 의미한다. 여러 Fragment가 모여 하나의 Activity를 구성하기도 하고, 하나의 Fragment가 여러 Activity에 사용되기도 한다. Activity내에 포함되는 모듈이다 보니 기본적으로 Activity의 Lifecycle을 따르게 되는데, 예를 들어, Activity가 pause되면 fragment 또한 pause되고, Activity가 소멸되면 fragment 또한 소멸 된다. 단지, Activity가 resumed 된 상태에서는 fragment 나름의 lifecycle을 가지게 된다. Fragment 추가 방법 in Activity Activity에 fragment 삽입하는 방법은 lay..

Android 2016.01.04

Android - Activity (액티비티) - Activity 이해 및 Lifecycle

. 일종의 App의 구성요소 . 사용자와 상호작용을 하기 위한 하나의 화면 (가득 채울 수도 있고, 다른 창 위에 작게 띄울 수도 있음) App은 여러개의 Activity가 묶여 있는 형태로 Main Activity가 있고, 이 Activity 가 App 실행시 기본적으로 표시되게 된다. App내의 각 Activity는 다른 Activity를 호출할 수 있고, 새로운 Activity가 호출될 때 마다 이전 Activity는 Stack에 보관하게 된다. 사용자가 Back key를 누르게 되면 이전 Stack에 보관된 Activity가 하나씩 resume 되게 된다. Activity Lifecycle 의 이해 우선 Activity는 기본적으로 3가지의 상태로 존재한다. Activity 상태 종류. Resum..

Android 2016.01.02

Android - App. apk 구성 요소 - (Activity, Service, Contents Provider, Broadcast receiver)

Java를 이용해서 Android app을 만들어 본 적은 있었지만 만들었다기 보다 인터넷에 돌아다니는 코드들을 내가 원하는 형태로 조합해서 엮어놓았다고나 할까. 전반적인 Android app에 대한 이해가 부족하여서 인지 간단한 프로그램은 작성이 가능했어도조금만 어려워지면 헤매는 시간이 많아졌다. developer.android를 보면서 정리를 좀 해 보았다. App. apk 기본 구성 요소Android app에는 4가지 기본 구성 요소가 존재한다.Activity, Service, Contents Provider, Broadcast receiver Activity-. 사용자 인터페이스가 있는 하나의 화면을 의미. Activity Class를 상속해서 구현. Service-. Background에서 동작..

Android 2015.12.30

javascript is eating the world.

언제부터 자바스크립트가 이리도 널리쓰였었는지 모르겠다.요즘은 Google Docs, WordPress 등의 서비스도 JavaScript로 구현되는 시대이다.(Node.js 라는 기술로 Server 쪽까지 cover되는 믿을 수 없는 세상이다.) 예전만 하더라도 자바스크립트는 일종의 web 을 위한 보조적인 역할을 하는 간단한 언어였다.자바스크립트를 할 줄 안다고 해도 별로 그다지 자랑거리는 못되었던 일이었다.그런데 언제부터인가 자바스크립트가 주언어 중의 하나로 자리매김하고 있다. "JavaScript is eating the world", Parse의 공통 창업자이자 CTO인 Kevin Lacker가 dublin에서 열린 web submit 에서 한 말이다.솔직히 kevin lacker가 누군지도 잘 모..

Language/Javascript 2015.12.23

cURL 을 사용하여 web browser와 동일한 결과 얻기

web server에서 data를 가져오는 coding을 하다보면web browser를 통해 data를 가져오는 결과와 library 혹은 command를 통해 가져오는 결과가 달라서 난감할 때가 있다. 추측해 보건데 header에 달린 element들의 값이 다르거나 없어서 web server에서 이를 인지하고 response를 주지 않기 때문으로 생각된다. 그렇다면 이런 문제가 발생할 때 마다 web browser에서 전달하는 html request 를 잡아서 내용을 분석하고command 혹은 library에서 최대한 비슷하게 header등을 구현해서 보내야 하는 것인가... cURL 이나 library 사용에 있어서 경험이 많고, html header에 대해 깊은 이해가 있다면 별로 큰일이 아닐 수..

Language/HTML 2015.12.22

ajax POST debugging 방법

Django framework를 server로 하고 ajax post 를 수행했는데, HTTP Response 500 (INTERNAL SERVER ERROR) 가 발생한다. [Client / Chrome Developer Tool (F12)] [Server / Django log] 그런데 500 INTERNAL SERVER ERROR 가 발생하는 건 알겠는데, ajax 여서인지 화면에 별다른 error로그가 출력되지 않고,서버또한 error log가 남지 않아 debugging이 어렵다. ajax post debugging1. Chrome 실행 2. 문제 상황 재현3. F12 - Developer option 실행4. Network tab 선택5. 아래 loading 된 리스트 중 Status 500 ..

Language/Javascript 2015.12.12

CRUD on mysql (select, update, insert, delete)

Software 의 기본적인 데이터 처리 기능을 통틀어 CRUD (Create, Read, Update, Delete) 라고 부른다.(Kilov, H[1990]의 논문에서 해당 용어를 최초로 사용하였다고 한다.) 기본적인 기능인 CRUD의 경우 mysql에서는 어떤 명령어에 mapping 할 수 있을까. 간단하게 표를 만들어보면 다음과 같다. SQL Create (생성) INSERT Read (읽기) SELECT Update (갱신) UPDATE Delete (삭제) DELETE mysql 기본 CRUD 명령어 사용예 (select, update, insert, delete)아주 기본적인 것이지만 sql을 직접 날릴일이 별로 없어서 할 때 마다 검색하게 되어 간략하게나마 사용예를 정리해 보았다. inse..

Database 2015.12.12

OSI(Open System Interconnection) 7 layers와 Internet protocol suite(TCP/IP)

OSI(Open System Interconnection) 7 layers는 Internet protocol suite(TCP/IP)와 무슨 관계인가? 우리가 network를 흔히 배운다고 하면 주로 듣는 용어가 있다. OSI 7 Layers (OSI 참조 모델)와 Internet protocol suite(TCP/IP) OSI 7 Layers도 network 계층을 표현하고 있고, 같은 맥락으로 Internet protocol suite(TCP/IP) 또한 network 계층을 표현하고 있는데,Network의 좀더 깊은 이해를 위해 서로 어떤 관계이고, 우리는 실제로 어떤 계층을 사용하고 있는지 확인이 필요하다. OSI 7 Layers 는 ISO(International Organization for ..

Network 2015.11.24

ajax를 이용한 async post data 저장

사용자가 grid(slickgrid) cell에 text 입력하면 해당 text가 서버의 database에 사용자 인지 없이 자동 저장되는 Logic 기본 구현 환경 -. Slickgrid -. mysql -. django Client Slickgrid 설정[templates/test/index.html] var columns = [... {id: "comment", name: "Comment", field: "comment", width: 300, editor: Slick.Editors.Text}, ]; var options = { editable: true,... };Slickgrid column 설정 및 option에서 editable 속성을 enable하고 editor를 설정해 준다. Ajax 설..

Language/Javascript 2015.11.16

Slickgrid example1-simple.html 분석

Demonstrates: basic grid with minimal configuration [Slickgrid를 사용하기 위한 기본 설정 포함] line 1 : HTML 5 규격 사용 선언 ([참고자료]) line 6,7,8 : link tag 로 slickgrid, jquery css 연결 ([참고자료]) line 25 ~ 29 : jquery, slickgrid javascript 연결 [Slickgrid의 위치 정의] line 14 : div tag로 실제 slickgrid가 구현될 위치를 선언. [Slickgrid의 구현] line 33 : 실제 grid 저장할 변수 선언 line 35 : slickgrid의 column(열) 정의 - 여기서는 6개의 열을 정의함 (title, duration,..

Language/Javascript 2015.11.16

div와 span의 차이

div와 span의 정의는 우선 다음과 같다. div : HTML내에서 일정 구역을 정의하기 위한 용도 Block element를 group화 하기 위한 용도 The tag defines a division or a section in an HTML document. The tag is used to group block-elements to format them with CSS. span : inline element를 group화 하기 위한 용도 The tag is used to group inline-elements in a document. The tag provides no visual change by itself. The tag provides a way to add a hook to a p..

Language/HTML 2015.11.08

ajax

Ajax 화면의 reload없이 내가 원하는 Data를 실시간으로 server로 전송할 수 있는 방법..... 화면이 reload될 때마다 생기는 잠시간의 화면 갱신 시간은 사용자로 하여금 사용에 거슬림(?)을 줄수 있는 요소 중 하나이다. 이를 해결할 수 있는 방법이 ajax다. 사실 ajax에 대해 그동안 정확히는 알지 못하고, 화면을 부분적으로 갱신(?)하거나 화면 갱신 없이 원하는 data를 server로 부터 받아 오는 방법으로만 막연히 이해하고 있었다. Question Answer ajax는 새로운 언어인가? 새로운 언어라기 보다 기존의 javascript, XML등의 기술들을 엮어 놓은 기법. Server 기술인가 Client 기술인가? javascript로 이루어진 client 기술. 알고..

Language/Javascript 2015.11.02

Mysql 사용자 조회/추가/생성/삭제

Mysql 사용자 조회 mysql 에 오랜만에 접속해 보면 내가 어떤 사용자를 생성했었는지 간혹 기억이 나지 않을 때가 있다.아래와 같이 확인하면 된다. mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select user, host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | analyzer | % | | root | 127..

Database 2015.10.29

TCP Selective Acknowledgments (SACK)

TCP Selective Acknowledgments (SACK) 일반적인 TCP를 통한 Data 전송 Flow Client 에서 Server로 request를 보내고, 이에 대한 답으로 Server에서는 4개로 나누어진 TCP segments를 Client로 되돌려 준다.하지만 두번째 packet이 drop된 상황이다. 1 : Segment #2가 손실되었다. 2 : Client는 Segment #3을 받았다. 하지만 Segment #2가 누락된 것을 알게되고 Server에 Segment #1의 ACK를 2번 보내어 Segment #2의 손실을 Server쪽에 알린다. 3: 아직 Server쪽에서는 Client로 부터 중복된 Segment #1의 ACK를 못받은 상태인지라 계속 다음 Segment인 S..

Network 2015.10.28

텍스트 파일을 database에 저장하는 방법

mysql> select version();+-------------------------+| version() |+-------------------------+| 5.5.44-0ubuntu0.14.04.1 |+-------------------------+1 row in set (0.00 sec)mysql 5.5.44 기준으로 다음과 같다. 입력할 Data 파일의 양식은 다음과 같이 TAB으로 구분자를 주면 된다. ITEMITEMITEMITEMITEMITEMITEMITEMITEM... 그리고 기본 명령어는 다음과 같다.mysql> load data local infile "data.txt" into table TABLENAME; mysql> load data local infile "data.txt"..

Database 2015.10.27

Grid - Slickgrid

Slickgrid license : MIT license Document는 부족한 면이 있지만 사용자가 많고, example을 통해 구현방법을 확인할 수 있다. Example : https://github.com/mleibman/SlickGrid/wiki/Examples [comment] 직접 구현을 해보고 있는데 자잘한 버그가 있다. -. scroll을 빠르게 움직이면 grid가 잠시 사라졌다 나타나곤 한다. (아래 링크에서 빠르게 scroll을 움직여 보면 확인할 수 있다. http://mleibman.github.io/SlickGrid/examples/example1-simple.html 이런 현상 때문에 slickgrid를 다른 grid로 교체해야 하나 고민도 했었지만 slickgrid 안의 sc..

Language/Javascript 2015.10.24