지극히 개인적인 공부 노트 85

[Python] 다차원 리스트 생성 시 유의할 점

최근 파이썬을 통해 백준 알고리즘 문제를 풀이하던 중, 리스트로 2차원, 3차원 형태를 만들어야 하는 부분이 있었다. 재귀 함수를 통해 원소 하나하나씩 값을 구하고, 해당 리스트에 저장해야 했다. 나는 아래와 같은 방식으로 리스트를 생성하고, 값을 저장했다. val = [[[0] * 2] * 2] * 2 val[0][0][1] = 7 이를 프롬프트로 진행했을 때, 위와 같은 결과가 되었다. 슬라이싱을 한 적도, 값을 여러 개 지정하려던 의도도 없었는데, 마치 슬라이싱으로 값을 수정한 것처럼 각 리스트의 1번째 원소가 모조리 저장되었다. 솔직히 이전에도 종종 이런 경우가 있었고, 그때마다 결국 그냥 리스트 인덱싱이 아닌, append 함수나 딕셔너리 타입 등을 이용해서 문제를 해결했다. 그러던 중 우연히 ..

[Web] '웹서버'란?

인터넷이 동작하는 원리에 필요한 컴퓨터는 단 2대. 정보를 요청하는 컴퓨터(웹클라이언트)와 요청에 응답, 정보를 제공하는 컴퓨터(웹서버)가 필요하다. 웹클라이언트(브라우저)의 종류가 여러가지가 있듯이, 웹서버 또한 엔진에 따라 여러가지가 있다. 대표적인 웹서버 소프트웨어에는 Apache, Nginx, IIS 등이 있다. 이 중 Apache는 웹서버 시장점유율이 가장 높고, 오픈소스인 소프트웨어이다. 이런 웹서버 프로그램을 직접 컴퓨터에 설치하고 운영해보고 싶다면 아래 글을 참고하자. https://opentutorials.org/course/3084/18892 웹서버 운영하기 - 생활코딩 웹서버 소개 --- 이번 시간에는 내 컴퓨터에 웹서버를 설치해서 누구나 내 컴퓨터에 있는 웹페이지를 볼 수 있도록 해..

[Internet] '인터넷'의 시작

언제, 어디서나 통신이 가능할 수 있게 1. 기원 1) 누가 미국 국방부 산하의 고등 연구국(Advanced Research Projects Agency, ARPA) 2) 언제 2차 세계대전, 핵전쟁이 끝난 후 1960~1970년대 3) 어디서 미국 4) 어떻게 (1) 기존의 회선 교환(circuit switching) 방식보다 패킷 교환(packet switching) 방식이 매우 견고하고, 생존성이 높다는 연구 결과. (2) 1969년 10월 29일 UCLA와 SRI연구소 간 연결(최초의 2 노드 간 상호연결) - 현재 인터넷망의 시초(ARPANET, 아파넷) 5) 왜 핵전쟁까지 끝난 1960년, 미국은 통신시스템의 심각한 취약점(중앙집중적)을 극복하기 위해 분산된 통신시스템을 연구했다. 이 과정 속..

[AI] '인공지능'이란?

AI(Artificial Intelligence). 인간의 지능으로 할 수 있는 모든 것을 컴퓨터가 할 수 있도록 하는 방법 및 기술. 현대에는 4차 산업혁명을 맞이하여 여러 분야에서 인공지능 요소를 도입하고, 그 분야의 문제 풀이에 활용하려는 시도가 매우 활발하게 이루어지고 있다. 대표적으로 머신러닝이 인공지능 기술 중 하나이다. 인공지능의 역사는 다음과 같다. 인공지능의 유형에는 약인공지능, 강인공지능, 슈퍼인공지능 등이 있고, 강인공지능과 슈퍼인공지능 사이에 특이점이 존재한다. 1. 약인공지능(ANI: Artificial Narrow Intelligence) - 많은 양의 데이터를 처리하여 특정 기능만 수행하는 인공지능 2. 강인공지능(AGI: Artificial General Intelligenc..

[HTML] HTML 통계 데이터(feat. 평균 사용 태그 수, 태그 인기도)

HTML 사용에 있어서 재밌는 통계가 있는데, 앞으로 HTML을 작성함에 있어서 참고 자료로도 좋을 것 같아 간단하게 기록한다. 이 통계는 2021년 7월 기준이다. 1. 평균적으로 한 웹페이지에서 사용하는 태그의 개수는 아래와 같은 분포를 보이고, 32개인 경우가 가장 많다. 2. 한 웹페이지에서 사용되는 태그는 평균적으로 아래와 같은 빈도를 보인다. 3. 출처 https://www.advancedwebranking.com/html/#doctype The average web page from top twenty Google results Apparently, an average web page uses thirty-two different element types: The thirty-two elem..

[Web] 수정한 CSS 파일이 HTML에 적용되지 않을 때

한 달 전에 클론 코딩으로 만든 자그마한 프로젝트를 블로그에 정리하기 위해 오랜만에 열어보았다. 고작 'index.html', 'style.css', 'app.py'라는 이름의 3개 파일이 전부인데도, 그 사이에 몇몇 부분은 까먹거나 이해가 안 갔다. (하... 이제부턴 진짜 프로젝트와 공부도 중요하지만, 거기서 배운 점, 어려웠던 점 등을 기록으로 남기는 과정도 중요하게 여기고 기록해야겠다...ㅠㅠ) 그래도 나름 쉬운 언어(언어라고 하기에도 부끄럽지만)였기 때문에 다시 수정해보고, 결과를 보는 건 재밌었다. 그. 런. 데. 도저히 이해가 안 가는 게, 어느 순간부터 CSS 파일을 수정하고 위치를 바꿔서 링크해도 HTML에서 제대로 적용이 안 된다. CSS 파일을 제거했을 때 아예 HTML 모양이 망가지..

[Startup] 인프런 강의 <스타트업 A to Z>을 듣고

1. 스타트업에 대한 간단한 정의 - 스타트업이란, 기술과 인터넷 기반의 회사. 고위험, 고수익, 고성장 가능성을 지니고 있다. 유니콘(Unicorn): 기업 가치가 10억 달러 이상인 스타트업 데카콘(Decacorn): 기업 가치가 100억 달러 이상인 스타트업 - 한국은 법률적 근거 마련을 위해 업종에 대한 제한이 있음. 미국, EU 등에서는 업종에 대한 제한이 없음. - 판을 바꾸려는 의지와 방향성이 있다면 스타트업이라고 생각함. 내가 있어야 할 곳, 내가 할 수 있는 것 등을 꾸준히 생각해볼 것. 2. 스타트업 창업 1) 사업자 - 간이과세자와 일반과세자는 연간 수익 4800만 원 미만(간이과세자)인지, 이상(일반과세자)인지에 따라 구분. - 면세사업자(부가가치세 없음)와 과세사업자(부가가치세 1..

[Web] AWS 가상 서버 이용하기(2) - 가상 컴퓨터에서 서버 파일 실행하기

저의 경우에 아주 간단한 개인 프로젝트를 진행하기 위해 AWS를 통해 가상 서버를 만들고 이용해봤고, 아래와 같은 과정을 진행했습니다. 1. AWS 인스턴스 생성(가성 서버 생성과 같은 의미입니다.) 2. 깃 배시(Git bash)를 통해 내 노트북에서 가상 서버 컴퓨터로 접속 3. 파일 질라(File Zilla)로 가상 서버 컴퓨터에 내 프로젝트 파일 복사 4. 가상 컴퓨터에 있는 프로젝트 원격 실행 및 원격 종료 4개의 과정 중 1번, 2번 과정은 아래 링크의 글에 작성했습니다. https://as-j.tistory.com/44 [Web] AWS 가상 서버 이용하기(1) - AWS 인스턴스 생성하기 스타트업이나 개인 프로젝트를 하다 보면 제작한 웹 페이지를 24시간 돌아가는 서버를 통해 모두에게 서비..

[Web] AWS 가상 서버 이용하기(1) - AWS 인스턴스 생성하기

스타트업이나 개인 프로젝트를 하다 보면 제작한 웹 페이지를 24시간 돌아가는 서버를 통해 모두에게 서비스를 공유할 수 있어야 합니다. 이 글에서는 개인 프로젝트로 원페이지 쇼핑몰 웹 페이지를 만들면서, 만든 파일을 AWS(Amazon Web Service)를 이용해 24시간 돌아가는 클라우드 가상 서버에 연결한 방법을 정리해본 글입니다. AWS를 통해 가상 서버를 만들고, 이 가상 서버에서 제가 만든 프로젝트를 실행시키기 위해 다음과 같은 과정을 진행했습니다. 1. AWS 인스턴스 생성(가성 서버 생성과 같은 의미입니다.) 2. 깃 배시(Git bash)를 통해 내 노트북에서 가상 서버 컴퓨터로 접속 3. 파일 질라(File Zilla)로 가상 서버 컴퓨터에 내 프로젝트 파일 복사 4. 가상 컴퓨터에 있..

[Web] API 설계 시 데이터 타입 POST, GET 사용법(feat. CRUD, Flask)

GET, POST와 같은 데이터 타입을 이해하려면 우선 API가 무엇인지 이해해야 합니다. 간단하게 요약하면 API는 서버와 클라이언트가 서로 다른 프로그램(예를 들면 서버는 Python, 클라이언트는 html, JS)에서 요청과 응답을 서로 주고받을 수 있도록 만든 체계입니다. 대개 클라이언트는 요청을 보내고, 서버는 이에 대한 응답(데이터)을 제공하는 구조인데, 여기서 이 요청에 대한 종류를 크게 4가지, CRUD로 나눌 수 있습니다. CRUD는 각 알파벳마다 Create, Read, Update, Delete 등의 데이터 요청 방식을 의미합니다. 여기서 각 데이터 요청 방식에 따라 API에서는 마치 스티커(실제로는 메소드라고 부름)처럼 데이터 타입을 미리 정의하고, 각 방식에 알맞게 요청과 데이터가..