11월, 2018의 게시물 표시

CSS: position에 대한 이해

항상 CSS를 만지다 보면 가장 힘들고 빡치는 부분이 컨텐츠가 내가 원하는 위치로 배치되지 않는 경우 인 것 같다. 아마 position에 대한 이해도가 낮아서 그런거라고 생각해서 이번에 공부를 좀 해봤는데 이제 감이 좀 잡힐 것 같다. Position의 여러 속성 중 일단 배운 부분까지, 이해한 부분까지만 정리하자면 1) static 이름에서도 느껴지듯 "고정 된"이다. 그렇다고 사실 완전히 HTML의 위치에 딱 박혀있는 놈은 아니고 원래 있어야 할 곳에 있고, 거기서 움직이지 않는 녀석 이다. 따라서 offset (left, right, top, bottom) 속성이 적용되지 않는다. 만약 HTML에 Layer가 있다치면, 가장 보통의 Layer라고 이해하자. layer1인 녀석이다. (layer가 높을수록 위에 떠 있는 것) 2) relative relative를 이해하는 가장 좋은 방법은 layer 2단계< 로 이해하는 것이었다. static은 안정적으로 HTML에 박혀있는 녀석이지만 relative는 걔보다 layer가 한 단계 더 높은 layer 2이다. 그래서 offset을 적용하면 원하는 위치대로 움직인다. 그리고 한 가지 더 특이한 부분이 있는데 이것은 absolute에서 이어한다. 3) absolute absolute는 부모와의 관계를 끊고 HTML 조상님과의 관계를 찾으려하는 영악한 녀석이다. 이 녀석은 offset이 적용된다. 근데 신기한 건 offset을 적용하는 순간 부모와의 연은 끊어버리고 HTML의 사이즈를 기준으로 자신의 위치를 잡는다. 아주 날라리 날라다니는 놈이다. 그래서 left 0, top 0을 주는 경우에는 본디 자신이 위치한 곳에서 벗어나 화면상 가장 왼/위에 위치한다. 하지만 이 버르장머리 없는 녀석을 부모가 잡아주는 경우가 있다. 그건 바로 부모가 relative속성인 경우다 (나는 놈을 그나마 잡을만한 놈은 뛰는 놈) absolute 포...

[코딩문제] 2016년 문제

문제 출처- 프로그래머스 / 공부용/ 문제시 자삭 <2016년의 날짜 구하기> 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각  SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열  TUE 를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) calendar 라이브러리를 가져와서 쓰면 쉽게 풀 수 있다. 근데 사람들 풀이를 보니 calendar를 안 쓰고 풀더라.. 대다난 사람들 ㄸ

[코딩문제] 송전탑 문제

출처는 프로그래머스의 코딩테스트 입니다. 이 내용은 개인 공부를 위해 가져온 글이며 문제가 되면 삭제하겠습니다. 1. 문제 전문 설명 수평 직선에 높이가 서로 다른 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 탑이 왼쪽으로 동시에 레이저 신호를 발사합니다. 그러면, 탑은 다음과 같이 신호를 주고받습니다. 높이가 4인 다섯 번째 탑에서 발사한 신호는 높이가 7인 네 번째 탑이 수신하고, 높이가 7인 네 번째 탑의 신호는 높이가 9인 두 번째 탑이, 높이가 5인 세 번째 탑의 신호도 높이가 9인 두 번째 탑이 수신합니다. 높이가 9인 두 번째 탑과 높이가 6인 첫 번째 탑이 보낸 레이저 신호는 어떤 탑에서도 수신할 수 없습니다. 송신 탑(높이) 수신 탑(높이) 5(4) 4(7) 4(7) 2(9) 3(5) 2(9) 2(9) - 1(6) - 맨 왼쪽부터 순서대로 탑의 높이를 담은 배열 heights가 매개변수로 주어질 때 각 탑이 쏜 신호를 어느 탑에서 받았는지 기록한 배열을 return 하도록 solution 함수를 작성해주세요. 제한 사항 heights는 길이 2 이상 100 이하인 정수 배열입니다. 모든 탑의 높이는 1 이상 100 이하입니다. 신호를 수신하는 탑이 없으면 0으로 표시합니다. 입출력 예 heights return [6,9,5,7,4] [0,0,2,2,4] [3,9,9,3,5,7,2] [0,0,0,3,3,3,6] [1,5,3,6,7,6,5] [0,0,2,0,0,5,6] 2. 풀이 과정 처음에 for 문 안에서  for문을 돌리면 된다는 생각을 못하고 자꾸 조건과 While만을 떠올려서 많이 헤매였던 것 같다. 문제 핵심포인트 1) 기본...

Python - Collection의 Counter 에 관한 공부

# Collection.Counter 공부 # Collection.Counter는 이름 그대로 갯수룰 count해주는 것이다. import collections """ 1. 배열 안 요소의 갯수를 카운트해준다. - 리스트에 출현한 요소의 값과 반복 횟수가 Key, value 방식으로 나타난다. - 리턴값은 dict의 subclass로 dict에 사용할 수 있는 메소드는 모두 사용가능하다. """ participant = ["hello", "world", "nice", "to", "meet", "you", "hello", "hello", "hello"] counted = collections.Counter(participant) print(counted) # result : Counter({'hello': 4, 'world': 1, 'nice': 1, 'to': 1, 'meet': 1, 'you': 1}) """ 2. value가 큰 값을 리턴해준다. """ sample = dict(small=1, bigger=10) example = dict(hello="world", goodbye="dear", welcome="sorld") print(collections.Counter(sample)) # result : Counter({'bigger': 10, 'small': 1}) print(collections.Counter(example)) # result : Counter({'hello'...
https://blog.appdynamics.com/engineering/an-introduction-to-python-wsgi-servers-part-1/ 글을 읽고 WSGI에 대해, 그리고 WSGI(위스키 혹은 위~지~) 가 왜 필요한지 알아보았다. 왜 WSGI가 필요한가? -> 가장 기본에 충실한 대답. "많은 요청을 동시에 처리하기 위해서!" 우리가 사용하는 프레임워크는 웹 애플리케이션으로서의 처리만 Concern할 뿐 다수의 요청이나 핸들링 등은 고려하지 않았다. 종류는 다양하다. 다양한 언어와 플랫폼, 프레임워크등과의 호환을 자랑하며 계속적으로 성장하는 uWSGI, 단 18KB의 코드만으로 성능도 끝내주는 Bjoern, 내가 사용 중인 mod_wsgi (사실은 개발자 한명이 handle한다고 한다), greenlet을 기반으로 하며 비동기 I/O를 빠르고 가볍게 해주는 오픈소스 Meinheld, 아주 간편한 세팅으로 빠르게 사용할 수 있으며 파이썬 가이드라인도 따르는 CherryPy (원래 파이썬 프레임워크다 - 다음 번에 써 봐야지) Unix용 Green Unicorn의 합성어인 Gunicorn. 원래는 루비 프로젝트였으나 파이썬으로 넘어오게 되었고 가볍고 빠르며 설정도 쉬운 편이다. 자 그럼 어떤 WSGI가 좋을까? 가볍게 추려서 얘기하면,  Bjoern은 빠르고 C로 만들어졌다, 얘는 비동기 방식을 지원하지만 HTTP 1.1을 지원하지는 않는다. Meinheld는 C로 만들어져서 가볍고 빠르다.  uWSGI는 확장할 수 있는 범위나 방법이 많고 강력하며 다양한 언어를 처리한다. (그러나 일부 개발자들은 풀스택 솔루션을 목표로 하는 이 프레임워크가 쓸데없이 비대해지고 있다고도 한다.)  Mod_wsgi는 작동은하지만.. 좀 구식이다. Gunicorn은 속도가 적당하고 리소스 소모가 크지 않은편이며 장고랑 자동으로 쿵딱쿵딱 한다.  CherryPy의 bu...

JSON 관련 헷갈렸던 것

JSON이라는 것에 대해 일부 잘못알고 있던 사실이 있다. JSON은 자바스크립트의 객체이지만 string만으로 이루어져있다. JSON을 마치 파이썬의 list나 dict같이 자신만의 데이터 타입으로 생각했는데, (이것도 맞긴하지만) 그냥 '{"key" : "value"}' < 로 생긴 String인 객체라고 생각하면 더 좋을 것 같다. 그럼 아주 기본적인  '{"key" : "value"}'에게 제슨이 라고 이름을 붙여주고 파싱하고 json화 시키는 것에 대해 알아보자 1. Javascript에서 JSON.parse(제슨이) - 제슨이처럼 생긴 JSON을 STRING으로 불러온다. JSON.stringify(제슨이) - 제슨이처럼 생긴 STRING을 JSON으로 불러온다. 2. Python에서 json.loads(제슨이) - 제슨이를 불러와서 String으로 만들어준다. json.dumps(dict(key="key", value="value")) - 제슨이처럼 생긴 JSON을 만들어준다.