CS스터디:
구글 같은 서비스는 어떻게 개발할까?
내가 짠 프로그램이 다른 프로그래머들이 작성한 부분들과 함께 잘 작동하는지 확인하는 일은 어렵고 이를 바로잡지 못하면 에러가 발생할 소지가 크다.
1999년 미국항공우주국의 화성기후궤도선이 고장을 일으켰다. 비행 시스템 소프트웨어는 추진력을 계산할 때 미터법을 사용하였지만 궤도 수정용 데이터는 영국식(야드파운드법) 단위로 입력되어 발생한 사고였다.
2015년 발표 당시 구글의 전체 코드는 약 20억 행이었다고 한다.
라이브러리, 인터페이스, 개발키트
어떤 중요한 프로그램도 완전히 처음부터 새로 만들어지지는 않는다. 다른 사람들이 만들어 놓은 여러 가지 구성 요소를 바로 구해서 사용할 수 있다. 프로그래밍 작업의 대부분은 이미 있는 구성 요소를 이해하고 자신만의 방식으로 이어 붙이는 것이다.
가장 단순한 수준에서 프로그래밍 언어는 함수 메커니즘을 제공한다. 함수 메커니즘은 그 내부 작동방식을 모르더라도 프로그램에 사용할 수 있는 형태로 코드를 패키지화 할 수 있게 해준다.
함수는 이름이 있고, 작업을 수행하는 데 필요한 입력 데이터 값을 받는다. 함수를 이용하면 따로 만들어진 구성 요소를 필요에 따라 적절하게 조합하여 프로그램을 만들 수 있다.
연관된 함수들의 모음을 보통 라이브러리 라고 한다. 함수 라이브러리가 제공하는 서비스는 애플리케이션 프로그래밍 인터페이스, 즉 API로 프로그래머에게 제공된다. API는 포함하는 함수와 더불어 함수의 용도, 사용법, 요구사항 등을 나열한다. 이러한 명세는 상세하고 정확해야 한다.
요즘 대규모 시스템은 프로그래머들이 복잡한 소프트웨어 라이브러리를 잘 다룰 수 있도록 소프트웨어 개발키트, 즉 SDK를 포함한다. (개발환경도구) 예를 들어 안드로이드의 안드로이드 스튜디오와 애플의 Xcode가 있다.
버그
크든 작든 모든 프로그램에는 결함이 있다. 이러한 결함을 버그라고 한다. 이 용어는 흔히 1947년에 그레이스 호퍼가 동료들이 작업 중이던 기계식 컴퓨터인 하버드 마크2에서 말 그대로 벌레를 발견했고, 동료들이 컴퓨터를 디버깅하고 있다고 말한 것에서 만들어 졌다고 알려져 있으나 버그라는 단어를 이런 의미로 쓴 것은 호퍼가 처음이 아니다. 옥스퍼드 영어 사전에 따르면 1889년에 먼저 쓰였음을 알 수 있다.
버그는 너무나 다양한 방식으로 발생한다. 그래서 테스트는 실제로 프로그래밍에서 큰 부분을 차지한다. 보통 구현 코드보다 테스트 코드가 더 많고, 프로그래머보다 테스터가 더 많다.
버그는 스스템을 공격에 취약하게 만들기도 하는데, 그렇기에 악용할 수 있는 버그를 취급하는 시장은 활발하다. 선량한 해커(white hat), 악의적인 해커(black hat), gray hat이 있다.
업데이트가 잦다는 것은 그만큼 취약점이 널리 퍼져 있다는 것을 뜻한다. 소프트웨어가 패치될 때 보안 취약점이 수정되므로 일반 사용자들은 소프트웨어를 최신 상태로 유지하는 것이 중요하다.
환경은 항상 변하고 프로그램은 거기에 발 빠르게 대응해야 한다. 끊임없는 변화에 뒤처지지 않고 따라가는 것은 소프트웨어 유지 보수에서 매우 중요하다.
오늘 공부한 내용:
계층형 테이블만들기(대댓글):https://whitemackerel.tistory.com/55
계층형 테이블 구조 및 쿼리
칼럼 구성 Id: 댓글 인덱스는 게시글 번호와 상관없이 댓글 혹은 대댓글이 작성되면 auto_increment 로 1씩 증가되어 저장됩니다.(PK) Title: 댓글의 제목을 담을 칼럼입니다. Ref: 대댓글의 그룹번호(부
whitemackerel.tistory.com
소스트리를 사용하여 branch를 생성하고 merge하는 것을 익힘.
깃플로우:https://velog.io/@kw2577/Git-branch-%EC%A0%84%EB%9E%B5
Git branch 전략(Git-Flow, Github-Flow, Gitlab-Flow)
Branch란?브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니
velog.io
aws의 s3 버킷을 생성함
Springboot로 S3 파일 업로드하기
이번 포스팅은 스프링에서 AWS S3 파일 업로드하는 방법입니다. 주로 이미지 파일을 올릴 때 많이 사용되곤 합니다. 1. 의존성 추가하기 build.gradle awspring/spring-cloud-aws Spring-Cloud-AWS 의존성을 추가합
www.sunny-son.space
'TIL' 카테고리의 다른 글
2022.08.08.TIL (0) | 2022.08.08 |
---|---|
2022.08.06.TIL (0) | 2022.08.06 |
2022.08.04.TIL (0) | 2022.08.05 |
2022.08.03.TIL (0) | 2022.08.04 |
2022.08.02.TIL (0) | 2022.08.03 |