16년도 봄, 어느 날 파스타 일할 당시 아주머니 두 분이서 계산을 한다고 말씨름을 하고 있던 중 일행이던 네살배기 여자아이의 한 마디 " 넣어둬 ~ 넣어둬 ~" 매장사람들 다 웃었던 그 일상 이따금씩 떠오르곤 한다. 원래 대어는 늦게 오는 거래, 기다리면 올거야 #솔로 언제나 사랑을 하기 시작하면 사소한 한마디에 기쁘고 너에게 한없이 작아지는 약자가 되네 여자는 이쁘다 속삭이며 사랑받길 원하고 남자는 잘한다 토닥이며 칭찬받길 원한다 책 한장한장 넘기면서 다음 줄거리가 기대되듯 오늘 내일 너와의 시간이 기대된다. 책에는 결말이 보여서 슬퍼져도 너와는 끝이 안보여서 좋다 모쏠들은 초원의 사자같은 존재들이지. 먹이사슬의 최정상 그들을 노리는 사람들이 없어 그냥 손을 내밀어 주는 거 어렵지 않잖아. 예쁜 말로..
PostgreSQL brew를 통한 설치 SQL과 장고를 연결할 psycopg2-binary 설치 생성 create database 데이터베이스 이름; 삭제 drop database 데이터베이스 이름; 자료형 char(n) : 고정 길이 문자열 varchar(n) : 가변 길이 문자열 int2 : 2bytes 정수형 int : 4bytes 정수형 float4 : 4 bytes 실수형 float8 : 8 bytes 실수형 bool : 참/거짓 자료형 date : 년-월-일 time : 시-분-초 timetz : 시-분-초 + 시간대 timestamp : 년-월-일-시-분-초 timestamptz : 년-월-일-시-분-초 + 시간대 자료형 타입 : https://www.postgresql.org/docs/1..
Django 파이썬으로 만들어진 무료 오픈소스 web application framework urlresolver 패턴 목록을 가져와 URL과 맞는지 처음부터 하나씩 대조하여 식별, 일치한다면 view한테 인계 view 수정할 수 있는 권한이 있는지 확인 후 그에 관한 값을 생성 manage.py : 스크립트, 사이트 관리 도와주는 역할 setting.py : 웹사이트 설정이 있는 파일 urls.py : urlresolver가 사용하는 패턴 목록 포함 object 객체 : 객체가 있고 그에 관련된 객체 속성(properties), 행위는 메서드 어플리케이션을 만들기 위해 콘솔창 (djangogirls 디렉토리에서 manage.py) 에서 아래 명령어 구조는 Class를 이용해서 짜야 한다. .CharFi..
libc의 printf 함수를 다시 구현 Proto type. ▶ int ft_printf(const char *, ...); External functs. ▶ malloc, free, write, va_start, va_arg, va_copy, va_end 처음 보는 va_* 관련 함수는 stdarg 헤더 파일에 정의된 함수들이다 ▼▼▼ man 3 stdarg 를 번역 ▼▼▼ 더보기 #include void va_start(va_list ap, last); type va_arg(va_list ap, type); void va_copy(va_list dest, va_list src); void va_end(va_list ap); 호출 된 함수는 va_start (), va_arg (), va_copy (..
typedef struct s_list { void *content; struct s_list *next; } t_list; 구조체를 주어지고, 이를 이용해서 함수를 작성해야 한다. content : 요소에 포함된 데이터. void 포인터는 어떠한 종류의 자료형이든 저장할 수 있습니다. next : 마지막 요소인 경우에는 NULL. 또는 다음 요소의 주소. t_list *ft_lstnew(void *content); t_list*ft_lstnew(void *content) { t_list*new; if (!(new = (t_list*)malloc(sizeof(t_list)))) return (NULL); new->content = content; new->next = NULL; return (new); ..
char *ft_substr(char const *s, unsigned int start, size_t len); char*ft_substr(char const *s, unsigned int start, size_t len) { char*ptr; inti; if (!s) return (NULL); if (start >= ft_strlen(s)) break; if (len >= ft_strlen(s)) len = ft_strlen(s); if (!(ptr = (char *)malloc(sizeof(char) * (len + 1)))) return (NULL); i = 0; while (len--) { *(ptr + i) = *(char*)(s + start + i); i++; } *(ptr + i++) =..
함수 포인터를 만들거나, 구조체에 함수 포인터를 넣거나 반환 값으로 함수포인터를 줄 수도 있다. 함수 포인터는 함수를 저장하는 포인터를 뜻하며, 함수 포인터를 주고 받거나 함수 포인터로 함수를 호출할 수 있다. 1. 반환값과 매개변수가 없는 함수 포인터 ▶ void (*fp)(); void hello() { printf("Hello, World!\n"); } int main() { void (*fp)(); fp = hello; fp(); return (0); } 2. 반환값과 매개변수가 있는 함수 포인터 ▶ int (*fp)(int, int); int add(int a, int b) { return a + b; } int mul(int a, int b) { return a * b; } int main()..
void *memset(void *b, int c, size_t len); void*ft_memset(void *b, int c, size_t len) { size_ti; unsigned char*ptr; ptr = b; i = 0; while (i++ < len) *ptr++ = (unsigned char)c; return (b); } memory + setting : 메모리를 (특정 값으로) 세팅한다. 문자열 b에 (unsigned char) c 의 값으로 변환 된 len 바이트만큼 씁니다. 첫 번째 인수를 반환합니다. void bzero(void *s, size_t n); voidft_bzero(void *s, size_t n) { unsigned char*ptr; size_ti; i = 0; pt..