Language 132

[04-2] Python - 논리연산자/비트연산자 (boolean/bitwise operation)

언듯 보기에 논리연산자와 비트연산자가 유사해서 그 차이점이 헷갈렸다. 논리연산자의 "and"와 비트연산자의 "&"는 결국 같은 "그리고"가 아닌가?논리연산자의 "or"와 비트연산자의 "|"는 결국 같은 "혹은"이 아닌가?논리연산자의 "not"과 비트연산자의 "~"는 결국 같은 "아닌"이 아닌가? 몇가지 실험을 통해 그 차이점을 확인해 보았다. 결론적으로 논리연산자는 영어로 하였을 때 boolean 연산자로 TRUE, FALSE를 위한 연산자이다. 따라서 숫자를 이용한 비트 연산에 사용할 경우 잘못된 값을 도출할 수 있다. 비트 연산을 할 때는 꼭 비트 연산자를 사용해야 한다. TRUE와 FALSE가 아닌 숫자에 논리연산자를 사용하더라도 에러가 발생하지 않고, 의도치 않은 결과가 계산되기에 더욱 사용에 유..

Language/Python 2016.12.30

[04-1] Python - range 와 xrange 의 비교 및 차이점 확인

[range 함수의 기본 사용법, 순차적인 숫자를 가지는 list를 생성하는 함수][xrange 함수의 기본 사용법, 순차적인 숫자를 만들 수 있는 generator를 생성하는 클래스] 숫자의 범위를 정의하거나 사용할 때 range() 나 xrange()를 사용하게 된다. 간단한 사용 예를 보면 다음과 같다. >>> for x in range(5): ... print x ... 0 1 2 3 4 >>> for x in xrange(5): ... print x ... 0 1 2 3 4 간단한 사용법만 보면 range나 xrange나 그 용도는 별반 다른게 없어 보인다. 하지만 좀 더 깊게 보면 한가지 큰 차이점이 있는데, range의 경우 해당 api가 실행되는 순간 숫자 범위의 list를 바로 생성하는 ..

Language/Python 2016.08.11

[03-2] Python - for (반복문, Loops)

조건문과 더불어 가장 많이 쓰이는 문법으로 반복문이 있다. 말 그대로 주어진 명령을 주어진 조건이 맞지 않을 때까지 반복하는 문법이라는 뜻이다. Python에서는 여타 다른 언어들과 마찬가지로 2가지의 반복문을 제공하고 있다. [Python - for] [Python - while] for 문은 대체로 특정 횟수/주어진 sequence type 만큼 반복해야할 경우 주로 사용되는 반면, while 문은 특정 조건을 만족할 때 까지 반복해야할 경우 사용된다. 본 글에서는 for에 대해서 알아 보자. for 의 기본 문법 for 의 다양한 사용 방법 range() 의 범위만큼의 반복 중첩 반복문 (nested loops) 반복문 실행 중 중단 (Early exits) for ... else 구문 string..

Language/Python 2016.08.11

nvd3.js - 기본적인 Data Format

nvd3.js 에서 지원하는 그래프를 위해서 data는 json으로 표현된다. 이를 위한 기본적인 json format은 다음과 같다. [ { key: "Series name1", color: "CSS color", values: [ {x: 0, y: 10}, {x: 1, y: 20}, {x: 2, y: 30} .... ] }, { key: "Series name2" ... } ] key : key는 그래프의 이름이다. 예를 들어 사과의 수확량, 배의 수확량을 표현하는 그래프가 있다고 한다면 이는 서로 다른 그래프로 표현될 수 있고, 이 때 이 두 각기 다른 그래프는 서로 다른 key로 표현된다. color: 그래프의 색을 정의할 수 있다. 예를 들어 color: "#ff7f0e" 와 같이 표현 가능하다..

Language/nvd3.js 2016.08.09

[HTML/CSS] <link href> 그리고 <script src>

데이터를 시각화하기 위해 nvd3.js를 공부해보려고 한다. 그래서 tutorial을 하나씩 따라가 보려 하고 있는데, html 첫줄 부터 막히기 시작한다. 이전에는 tutorial에 tag href는 를 통해 그동안 써와서 연결할 파일의 위치를 의미하는 것은 알겠는데 link, rel 은 생소하다. 정의 The tag defines a link between a document and an external resource.http://www.w3schools.com/ 에 정의된 link tag의 설명을 보면 위와 같다. 외부의 resource와 현재 document의 연결을 정의한다. 즉, 위의 예제를 보면 현재 html과 외부의 nv.d3.css를 연결해주라는 이야기다. nv.d3.css에 정의된 s..

Language/HTML 2016.08.09

[02-4] Python - 리스트 (Lists)

Python의 리스트(List)는 값들을 순서있게 보관할 때 사용하는 자료구조이다. 리스트 표현리스트 접근리스트 수정리스트 합치기/반복하기리스트 값 추가/삽입하기 - append(), insert()리스트 값 삭제하기 - del, remove()리스트 값 정렬하기 - sort()리스트 값 순서 뒤집기 -reverse()리스트 값 인덱스 확인 - index()리스트 내 특정 값 갯수 세기 - count() 1. 리스트 표현Python 의 리스트를 한마디로 정의하자면 다양한 자료구조들의 순서 있는 나열이라고 할 수 있다. 대괄호 "[", "]" 로 둘러 쌓여 있고, 콤마 "," 로 구분한다. 간단한 예를 들어보면 다음과 같다. >>> list1 = [1,2,3,4] >>> list2 = ["1","2",3,..

Language/Python 2016.08.09

[02-1] Python - 변수 할당의 개념

python에서는 변수에 값을 할당하면 object를 생성해서 값을 해당 저장한 후 변수는 해당 object의 메모리 주소를 의미하는 id값을 가지게 된다. 1이라는 값을 가지고 있는 object(id 23282008)를 가리키는 변수를 도식화 하면 다음과 같다. [Python - id(), object의 unique 값(memory address)를 보여주는 함수] >>> a = 1 >>> id(a) 23282008 만약 같은 값을 가지게 된다면 같은 object를 가리키게 될 수도 있다. >>> a = b = 100 >>> id(a) 23283616 >>> id(b) 23283616 위 경우는 서로 다른 변수 이름을 가진 a, b이지만 id 23283616 object를 동시에 가리키고 있다. 이 상..

Language/Python 2016.08.08

[02-3] Python - 문자열 (Strings)

Python 문자열(String)은 숫자와 더불어 가장 많이 쓰이는 자료형 중에 하나이다. 문자열 표현문자열 접근문자열 수정문자열 자르기 - split()문자열 양옆 공란 지우기 - strip(), lstrip(), rstrip()문자열 합치기/반복하기 (concatenate/repeat)문자열 찾기 - find(), index()문자열 바꾸기 - replace()문자열 대/소문자 바꾸기 - upper(), lower()문자열 연결하기 - join()문자열 갯수 세기 - count() 1. 문자열 표현 문자열은 큰 따옴표 " "나 작은 따옴표 ' ' 로 표현이 가능하고 예시는 다음과 같다. >>> str1 = "I am string." >>> type(str1) >>> str2 = 'I am string..

Language/Python 2016.08.08

[02-2] Python - 숫자 (Numbers)

Python에서 숫자(Numbers) 자료형은 가장 기본이되는 자료형이다. 숫자 표현숫자 계산을 위한 연산자Type casting (형 변환)미리 메모리에 할당되어진 숫자들 (-5 ~ 256) 1. 숫자 표현 Python에서 숫자는 크게 4가지의 형태로 표현이 가능하다. int (plain integers) : 정수long (long integers) : int 보다 범위가 큰 정수float (floating point numbers) : 실수complex (complex numbers) : 복소수 [int 의 표현] 범위 : -9223372036854775808 ~ 9223372036854775807 (-sys.maxsize-1 ~ sys.maxsize) C언어의 long을 이용하여 구현된 자료형이다...

Language/Python 2016.08.07

[02-5] Python - 튜플 (tuple)

기존에 C와 Java 위주로 코딩을 하다 보니 python에서의 tuple이 새로웠다. 튜플의 정의를 알아보고 다양한 예에 대해 알아보기로 하자. 튜플(Tuple) 의 정의 A tuple is a sequence of immutable(불변의) Python objects. 위와 같이 python의 tuple은 python에서 사용가능한 object의 수정 불가능한 나열이라고 정의가 가능하다. python의 list와 매우 유사하지만 포함된 object의 수정이 불가능하다는 점, 튜플은 괄호 "(", ")"로 표현되는 반면 리스트는 대괄호 "[", "]" 로 표현된다는 점이 다르다. (참고로 괄호 없이 콤마 "," 로만도 튜플의 표현이 가능하다.) 좀 더 상세한 사용 예에 대해 알아보자. 튜플의 표현 # ..

Language/Python 2016.08.07

[03-1] Python - if (조건문)

코딩에 있어 가장 기본적인 문법 중 하나로 언어 마다 조금씩 사용법이 다르기 때문에 그 사용 방법에 대해 잘 이해하고 있어야 한다. if 구문 기본 사용법한 줄 (One line) 조건문의 특별한 사용조건 type에 따른 if 구문의 사용if 구문에서 boolean 조건if 구문에서 숫자 조건if 구문에서 문자열 조건is 와 == 차이if 구문 관련 error 1. if 구문 기본 사용법if 조건문1: 실행문1-1 실행문1-2 .... elif 조건문2: 실행문2-1 실행문2-2 .... else: 실행문 3-1 실행문 3-2 ... 주의해야할 점 if, elif, else 구문 제일 마지막에는 : (콜론)을 붙여주어야 한다. 실행문 작성시에는 들여쓰기(indent)를 꼭 해야한다. 일상 생활에서의 예와..

Language/Python 2016.08.01

Type casting 시 주의해야할 점. (signed, unsigned)

socket을 통해 받아들이는 1 byte (8 bit) 정보를 처리해야 할 일이 생겼다. 해당 값은 0xEE(10진수: 238) 이었다. 0xEE는 0xFF(256)보다 작은 값으로 8 bit만으로 처리가 가능한 값이다. 이에 아래와 같이 송수신하도록 코드를 작성하였다. unsigned int len;char sendbuf[4]; len = 238;sendbuf[0] = len; 이후 sendbuf 송신.........unsigned int len; char receivebuf[4]; receivebuf에 수신........... len = *(receivebuf+1); 송신측에서 전송한 238(0xEE)를 그대로 수신하여 변수에 저장할 것이라고 예상하였지만 결과는 -18로 저장되고 말았다. unsig..

Language/C 2016.07.04

sizeof - 함수가 아닌 연산자.

C언어를 접한지도 오래되었지만 때때로 내가 이리도 모르는 부분이 많았던가 하는 생각이 종종 들곤 한다. 그리도 많이 써왔던 sizeof에 대해 좀 더 정확한 사용 방법을 알아보기 위해 man page를 찾아보았는데, 아무리 man sizeof 를 해보아도 man page가 나오질 않았다. 혹시나 내가 미처 설치하지 못한 package가 있는가 해서 나오질 않는 것인가 해서 좀 찾아보았다. 수 많은 sizeof 관련 글 가운데 sizeof는 함수가 아니라 연산자여서 man page가 없다는 글을 보게 되었다. 순간 이게 무슨 소리 인가 했다. man page가 없는 이유가 연산자여서 라는 건가....연산자인데 왜 man page가 없는 거지???? 우선 연산자이기 때문에 man page가 없다 .==> 연..

Language/C 2016.07.04

memset - 하위1byte pattern 의 이해

대체로 남들이 짜놓은 코드만 바라보다 보니, 막상 직접 짜게되니까 부딪치는 문제들이 다발하기 시작했다. 백문이 불여일타라고 했던가. 아무리 코드를 계속 보아도 실제 쳐보는 것과는 판이하게 다르더라. 학부때 당연하게 사용했던 메모리 초기화까지도 이제는 가물가물해졌다. memcpy(&a, 0, sizeof(a)); 이렇게 해놓고 자꾸 segmentation fault가 나는 원인을 찾아보겠다고 한동안 계속 삽질을 하였다.참 어이없는 실수가 아닐 수 없지만 오랜만에 직접짜다 보니 이런 일이 계속 생긴다. 위 memcpy는 0으로 초기화하는 것이 아닌 0번 주소부터 변수 a 크기만큼 복사를 해 오는 것이다. 0번 주소는 일반 application이 접근할 수 없는 주소라 접근하는 순간 죽어버린다. memset(..

Language/C 2016.07.01

Kendo UI, 더 심플한 웹페이지 위한 Framework

Kendo UI는 이미 구현되어 있는 원하는 UI를 골라다 쓸 수 있는 하나의 HTML5/Javascript Framework이다. Kendo UI를 처음 접하게된 계기는 Google Sheet와 같은 수정 가능한 table 을 찾으려다였다. 실시간으로 수정 가능한 table을 Smart Grid라고 하는데, 제일 처음 접했던 Smart Grid는 Kendo UI Grid는 아니었고, 나름 유명한 OpenSource인 SlickGrid였다. [SlickGrid Demo Screenshot] SlickGrid도 나름 깔끔하고 좋았는데, OpenSource 여서 그런지 개발자가 개발을 멈춘 상태이고, Document가 다소 부족한 점이 있었다. 이래저래 짜깁기를 하면서 만들어보고 있었는데, 어려움에 부딪칠때..

Language/HTML 2016.04.06

Java - public, private, protected 차이 구분

자바를 체계적으로 공부하지 않고, 샘플 코드 위주로 학습하여 코딩하다 보니 아직 부족한 부분이 많다. 아직까지도 다소 이해가 부족한 부분이 있는데, public, private, protected 이다. 접근제어자 (Access Modifier)public, private, protected 는 공식적으로 한글로는 접근제어자, 영어로는 Access Modifier 라고 부른다. 이 접근제어자는 Class 에 붙을 수도 있고, Method에 붙을 수도 있고, field에 붙을 수도 있다.각 경로에 대해서 그 접근제어자가 가지는 의미를 알아보자. public class : 모든 package에서 해당 class로 접근이 가능하다.private class : 자신을 포함한 package에서만 해당 class로..

Language/Java 2016.02.24

CharSequence과 String, StringBuffer, CharBuffer 비교

여기서는 String, StringBuffer, CharBuffer 각각의 차이점보다 CharSequence와 다른것들과의 차이를 알아보고자 한다. public interface CharSequence public final class String extends Object implements Serializable CharSequence Comparable public final class StringBuffer extends Object implements Serializable Appendable CharSequence public abstract class CharBuffer extends Buffer implements Appendable CharSequence Comparable Readabl..

Language/Java 2016.01.27

pip 그리고 python library 설치.

python으로 코딩하거나 기존에 구현된 python script를 가져다 쓰다보면 import error가 발생하는 경우가 있다. 그 이유는 사용하고자 하는 python library가 설치되어 있지 않았기 때문이다. 그렇다면 원하는 python library를 설치하는 방법에 대해 예를 들어 보며 확인해 보자. >>> import hexdumpTraceback (most recent call last): File "", line 1, in ImportError: No module named hexdump>>> "No module named hexdump" .... 여기서는 hexdump library가 없다는 에러 메세지이다.hexdump로 package search를 해보았지만 별다르게 포함하고 있..

Language/Python 2016.01.25

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

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

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

Slickgrid 와 django의 연동

현재 사용하고 있는 Django에 Slickgrid를 연동하였다. 기본적으로 slickgrid는 django의 static에 위치시키고 templete에서 호출하여 사용한다. (일반 이미지를 읽어 오듯이) 여기까지는 별다른 문제가 없는데 views.py 에서 templete로 넘기는 data 형식이 아직 감이 잡히지 않는다. 결국에는 json 형식으로 data를 생성하여 slickgrid 생성시에 argument로 넘겨줘야 하는데, django에서 json 형식으로 만들어서 templete로 넘겨 주는냐 아니면 dict 상태에서 templete로 넘겨 javascript에서 json 형태로 만들어서 사용하느냐의 차이일것 같다. grid = new Slick.Grid("#myGrid", data, colu..

Language/Javascript 2015.10.16