갑자기 해방을 맞아 어리둥절한 노예가 되지 말기를

이미지
  환상적인 만능 인공지능; 마케팅 빅데이터 학습과 + 자연어 커뮤니케이션 모두들 이 결합의 결과에 놀란 것 같다. 하지만 브레인과 컴퓨터 인터페이스는 아직 나오지 않았지. 여전히 내 머릿속에 있는걸 전달하려면 언어라는 채널이 필요해. 멋지긴 하지만, 혁명이라 할만한게 있나. 기존 컴퓨팅 로봇과 같은 도구일 뿐. 오래전 업계에서는 프로그래밍과 코딩을 분리하는 개념이 있었다. 통번역으로 보면 코딩은 단순한 직역. =핫바리 개발자 지금도 고수들의 잘 짜여진 코드는 자연어 처럼 읽히고 관리된다. 그럼 차이가 없는가? 아 물론 있지. 하지만 너무 환상에 빠져 도깨비 방망이로 생각하지 않기를. 질문하는 능력을 키울것. 대답은 도구가. 상상하는 능력을 키울것. 현실화는 도구가. 모두가 경영자처럼 살 것이다. 산다. 그래야한다. 노예처럼 살지 말고. 그리고 노동이 필수가 아닐때 어떻게 시간을 보낼지 삶의 의미를 스스로 정립할 것. 갑자기 해방을 맞아 어리둥절한 노예가 되지 말기를.

10년 뒤 내 모습

  10년 뒤 내 모습 3년 뒤 1년 뒤 3개월 1개월 다음 주 내일 한 시간 10분 뒤 내 모습 ... 지난 10분을 돌이켜 보면 10년 뒤 내 모습도 보이지 않을까

SheetJS 기본 자료구조, 좌표계, 그리고 표시형식

이미지
  SheetJS를 사용해서 JavaScript로 엑셀 파일을 만들고 편집할 수 있다. 자료구조 Workbook: 여러 시트의 모음. 엑셀 파일이다. Sheet: 셀들의 객체 모음 (A1, B1, …) Cell: {t, v, f, z} 형태의 단일 데이터 범위 const range = XLSX.utils.decode_range('A1:D10'); {     s: { r: 0, c: 0 },  // start:  A1  (row=0, col=0)     e: { r: 9, c: 3 }   // end:    D10 (row=9, col=3) } 순회 예시 const range = XLSX.utils.decode_range(ws['!ref']); for (let C = range.s.c; C <= range.e.c; C++) {     const headerAddr = XLSX.utils.encode_cell({ r: 0, c: C });     const header = ws[headerAddr]?.v; } !ref 는 시트 내용이 들어있는 범위를 표현하는 특수 표현이다. XLSX.utils.decode_range(ws['!ref']) 셀 구조 { t: 's', v: '홍길동' } t: type ('s': 문자열, 'n': 숫자, 'b': 불린, 'd': 날짜, 'e': 오류) v: value f: formular z: 표시형식 z: '@' 하면 텍스트로 그대로 보여준다 z: '#,##0' 천단위 콤마 z: 'yyyy-mm-dd' 날짜 z를 지정하지 않으면 엑셀이 **타입(t)**을 기준으로 기본 표시 형식을 자동 적용됨.

Django 이미 테이블이 만들어져 있다면 inspectdb

  이미 테이블이 만들어져 있다면 inspectdb 명령을 활용하자 python manage.py inspectdb --database interface > myapp/models_if.py 이렇게 하면 interface DB 를 조사하여 자동으로 models_if.py 파일을 만들어준다. 앞으로  Django ORM 으로 테이블을 관리할거면 managed = True 옵션으로 변경해준다.

별똥별이 떨어지는 그 순간에도 행복을 빌었지

이미지
  어릴 적 내 꿈은 그냥 행복한 거였어 별똥별이 떨어지는 그 순간에도 행복을 빌었지 그 꿈은 정말로 이뤄졌어 나는 불과 20대의 나이에 꿈을 이룬 청년이라고 스스로 생각하며 흐뭇해했지 그런데 그 성공은 오래가지 않았어 나는 다시 고민에 빠졌어 목표 설정이 잘못된 건가 허황된 꿈이었던 것인가 하지만 아무리 찾아 헤매고 다녀도 더 좋은 목표를 만날 순 없었어 그리고 깨달았지 내 꿈은 달성보다 유지가 어려운 목표였던거야 아무리 달콤했던 감정들도 시간이 지나면서 익숙해져 그뿐인가 사회는 내가 만족한 상태로 있는 걸 가만히 두지 않아 끊임없이 조금 더를 외치게 만들지 앞으로도 계속 나아가겠지만 지금까지 나의 결론은 바로 이거야 행복은 선택이고 습관이다

PostgreSQL 접속 성공/실패 로그 남기기

  로그파일 위치: /var/log/postgresql/... 설정파일 위치: /etc/postgresql/버전/main/postgresql.conf 접속실패 로그는 log_destination = 'stderr' 설정이 기본으로 있기 때문에 systemd/rsyslog 가 stderr 출력 내용을 파일에 기록해준다. (접속 실패는 에러다) 접속성공 로그를 남기려면 log_connections = on 설정해줘야한다. (기본은 off) 참고로 logging_collector = off 설정의 의미는 PostgreSQL 자체 로그 수집기를 사용하지 않겠다는 의미다. 서비스 재시작하면 반영됨

django queryset distinct on 은 표준이 아니다

  Model.objects.distinct() -> DISTINCT   : SQL 표준 Model.objects.distinct('field') -> DISTINCT ON ('field')   : PostgreSQL 전용, 다른 DB에서는 에러