개발환경운영체제: macOS Sequoia 15.5프로세서: Apple M1편집도구: Android Studio빌드도구: flutter 3.27.4사용된 개발 환경의 패키지:flutter_sound: ^9.28.0permission_handler: ^12.0.0+1문제상황flutter_sound(v9.28.0) 패키지를 사용한 녹음 어플 구현 중 Info.plist에 아래와 같이 마이크 권한 옵션을 넣었음에도 불구하고 녹음 시작 시 'Unhandled Exception: Exception: Microphone permission denied' 와 같은 오류가 발생함.// Info.plistNSMicrophoneUsageDescription 이와 유사한 사례를 stack overflow에서 찾게 되었고, ..
파일 업로드 구현 방법Servlet의 기본 Part 인터페이스 활용 방법- Servlet 3.0 이상의 기본 파일 업로드 인터페이스(JDK7이상 지원)- Servlet 5.0 이상(Tomcat 10)에서는 Jakarta.servlet으로 변경된 패키지명 사용 필요- 업로드된 파일명에 대해 중복 회피 방법 등의 Servlet 프로그램 개발과 Server 설정 필요Apache Project의 Commons FileUpload 라이브러리 활용- https://commons.apache.org- Commons 라이브러리의 FileUpload(v1.5)와 IO(v2.16.x)를 사용하여 서블릿 Inputstream 제어- Servlet 2.3 이상, JDK5 이상 지원- 파일 업로드 상태표시가 가능하며, Spri..
Database 개요DBS = DB + DBMS + user(s)- DB(Database): Real world에서 서로 연관성이 있는 정보를 이끌어 낸 data의 집합- DBMS: Database를 효율적으로 운영 관리하기 위한 S/W와 H/W▷ 위 DB를 효율적으로 저장/검색/수정/삭제하도록 돕는 소프트웨어다. 예시로 MySQL, PostgreSQL, SQLite 등이 있다. 결론적으로 DBMS는 소프트웨어지만, H/W라는 표현이 있는 이유는 현실에선 효율적으로 운영되기 위해선 전용 하드웨어 자원도 함께 고려되어야 되므로 H/W라는 표현이 사용된 것이다.- User(s): DBMS를 사용하여 DB를 사용하는 사용자들의 집단 - End User, Application Programmer, Data..
JSP 개요JSP(Java Server Page)는?- HTML 내에 자바 코드를 삽입하여, 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 회신해주는 서버측 스크립트 언어이다.- 웹 서비스를 위한 인터넷 프로그래밍 언어다.- 원래, 서블릿(servlet)과 JSP는 Sun사의 Java 웹 서버 제품의 보조 기술로 등장하였다.- 1998년 첫 번째 JSP API(Application Programming Interface) 스펙(specification) 발표하였다.- 1999년 5월 JSP 1.0 스펙(Servlet 2.2)이 발표되면서 안정적인 개발 플랫폼의 면모를 갖추게 되었다.- JSP 기능 역시 서블릿 기술을 사용하여 구현 되었기 때문에 기존의 서블릿 제품들의 장점을 그대로 충분히 흡수..
들어가면서(이 글은 컴퓨터공학 또는 관련 전공에서 처음 자료구조를 배우는 학생들을 위해 작성되었습니다.)이번 글에서는 Binary Tree에 대한 ADT(추상 자료형) 관점에서 개념을 정리하고, 관련 용어를 설명할 예정이다.1. TreeTree는 element간에 parent-child 관계를 갖는 자료구조를 말한다.(1) Terminologies of Tree1) Root Root는 부모가 없는(NULL인) 노드를 말한다.2) Internal node (내부노드)Internal node는 자식이 있는 노드를 말한다. 나무의 줄기 역할을 한다.3) External node (외부노드)External node는 자식이 없는 노드를 말한다. 나무의 잎 역할을 한다.4) Ancestors of a node (..
(이번 글은 운영체제의 기초가 있고 이번 주제에 처음 접하는 컴퓨터공학을 전공하는 학부생에 대해 적합한 글입니다.)들어가면서이번 글에서는 Operating System(이하 OS 또는 운영체제)의 역사에 대해서 살펴볼 예정이다. OS에 목표와 역할, 그리고 진화과정에 대해 이야기를 나눠보도록 하자.1. OS란?OS는 응용 프로그램의 수행을 제어하고 응용 프로그램과 컴퓨터 하드웨어 사이의 인터페이스 역할을 하는 프로그램을 말한다.(1) OS의 세 가지 목표1) Convenience (편의성)OS는 컴퓨터를 보다 편리하게 사용할 수 있게 해준다.2) Efficency (효율성)OS는 컴퓨터 시스템 자원을 효율적으로 사용할 수 있게 해준다.3) Ability to evolve (발전성)Ability to ev..
(이번 글은 운영체제의 기초가 있고 이번 주제에 처음 접하는 컴퓨터공학을 전공하는 학부생에 대해 적합한 글입니다.)들어가면서이번 글에서는 Uni-processor(CPU 1개)에 대한 Process Scheduling의 용어(Terminologies)와 여러 종류의 스케줄링(Scheduling)을 살펴볼 예정이다.1. Terminologies(1) Process SchedulingProcess Scheduling은 OS의 진화 과정 속에서 multi-programming의 등장으로 system utilization을 높이기 위해 등장하게 되었다. memory의 공간적인 한계로 효율적인 multi-programming이 필요하였고 system 차원에서 여러 정책(policies)들이 요구되었다. 이러한 정..
JavaScript 개요배경최초의 스크립트: 1987년 애플사의 HyperCard발전 계기: 1990년대 초에 MS사에서 VB에서 사용할 수 있는 VBC(VBApplication) 개발등장1994년 Netscape사에서 Dynamic Web page를 웹 브라우제에서 구현하기 위한 목적으로 LiveScript 개발되었다. 1995년 Netscape는 Sun Microsystems사(Oracle에 인수됨)와 전략적 제휴를 하며 JavaScript(줄여서 JS)로 이름을 바꾸고, HTML과 Java와의 Dynamic 연동을 지원하게 되었다. 1996년 Microsoft는 인터넷익스플로어(3.0)에서 동작되는 JScript 개발하였다. 1997년 Netscape에서 ECMA(European Computer M..
Data Structures데이터 구조(또는 자료 구조, 우리말에서는 자료 구조를 더 사용한다. 하지만, 이 글에서는 데이터 구조라고 표현하겠다)는 효율적으로 access하고 사용할 수 있도록 컴퓨터에 데이터를 구성하고 저장하는 방법을 말한다. 이는 데이터를 논리적 또는 수학적 표현뿐만 아니라 컴퓨터 프로그램에서의 구현을 의미한다. 자료 구조는 크게 두 가지 범주로 분류될 수 있다.Linear Data Structure데이터 요소가 순차적으로 또는 선형으로 배열되어 각 요소가 이전 및 다음 인접 요소에 부착되는 데이터 구조를 선형 데이터 구조라고 한다. 예를 들면, 배열, 스택, 큐 등이 있다.Non-linear Data Structure데이터 요소가 순차적으로 또는 선형으로 배치되지 않은 데이터 구조..
인터넷네트워크와 인터넷통신망과 통신망을 연결해 놓은 망들의 집합체를 말한다. 정보 교환을 위한 프로토콜이 요구된다. ※ TCP/IP▷ OSI 7계층: 응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층▷ TCP/IP 4계층: 응용 계층, 전송 계층, 인터넷 계층(IP 계층), 물리 계층 - 응용 계층: 네트워크를 사용하는 WWW, FTP, 텔넷, SMTP 등의 응용 프로그램으로 구성된다. - 전송 계층: 도착지까지 데이터를 전송한다. 각각의 시스템을 연결(분할과 재조립, 연결/오류 제어)를 하면서 TCP나 UDP 프로토콜을 이용하여 데이터를 전송한다. - 인터넷 계층: 주소를 정의하고 라우팅을 정의하는 계층이다. 데이터그램 정의(신호구성) 및 경로 지정(rou..