분류 전체보기 83

운영체제 - ClockAlgorithm

운영체제 - ClockAlgorithm 구현 1. Clock Algorithm 구조 분석 2. 수정 개념 설명 3. 다양한 테스트 케이스 및 설명 4. 소스코드 - With 충분한 주석 처리 paging-policy.py의 클락알고리즘 의 구조 분석 Clock Point : 클락이 가르키는 시침 빨간색 배경으로 설정 Use Bit : Use bit가 1이면 *, 0이면 아무것도 없음으로 설정 paging-policy.py Clock Algorithm을 짤 때 고려해야 할점 Hit 일때는 miss일 때 보다 간단하다. 왜냐하면 클락이 가르키는 바늘이 움직이지 않기 때문이다. 하지만 usebit는 변경 되기 때문에 고려 해주어야 한다. 1) Use bit가 1일 때 : memory index에 있는 n값의 ..

CS 2022.10.01

운영체제 - Reader Writer Lock 구현

★ Read-Writer Lock이 개선되었을 때의 Thread Trace 구현 ★ ◎ 쓰레드별 상태 추적 출력하기 - 파라미터 입력 방법 구현 (예: command line parameter 처리) - 다양한 시나리오 생성 및 설명 - 각 시나리오에 대한 실제 실행 결과 ◎ Reader-Writer Lock 개선 - Starvation 현상이 제거되도록 개선(Writer가 기다리는데 Reader가 계속 도착하면 발생 ◎ 개선된 Reader-Writer Lock을 사용해서 사용한 여러 시나리오를 실행하고 결과를 비교 Q1) 파라미터 입력 방법 구현 (예: command line parameter 처리) - 파라미터 입력 방법은 Command line argument으로..

CS 2022.09.26

CS 공부) 좋은 코드란 무엇인가?

과연 좋은 코드는 무엇일까? 좋은 코드란 중복이 없는 코드, 가독성이 좋은 코드라고 말 할 수 있다. 더 정확히 말하자면 좋지 않은 코드가 없는 코드가 좋은 코드라고 말 할 수 있다. 좋은 코드를 작성하려고 노력하는 대신 좋지 않은 코드를 줄여보자. 그리고 격리해보자. 작성된 모든 코드는 결국 유지 보수 비용이 필요하다. 궁극적으로 우리의 코드는 점진적으로 개선이 가능해야 한다 여기서 말하는 좋지 않은 코드는 무엇일까 ? 첫 번째는 거리이다. 함수를 구현한 위치와 함수를 실행하는 위치의 물리적 거리가 너무 멀면 좋지 않은 코드라고 할 수 있다. 이러한 부분이 많아지면 함수의 구현 내용이 무엇인지 빠르게 파악하기 힘들며 가독성이 점점 떨어지는 일이 일어나기 때문이다. 두 번째는 순수하지 않은 함수이다. 함..

CS 2022.09.19

raspberry pi 자동차 구현

위의 프로젝트는 국민대학교 '창업연계공학설계입문'에서 진행 한 프로젝트로 위와 같은 환경에서 실시하였습니다. 검은색 라인을 따라 라즈베리 자동차의 라인트레이싱을 한뒤 빨간색을 만나면 멈추고 장애물을 만날시 후진 한뒤 장애물을 넘어 갈 수 있도록 설계 해주었습니다. 창의성 판단 창의성① : 장애물과의 거리 판단 LED센서 와 초음파 센서를 이용하여 장애물과의 거리가 점점 가까워 질 수록 LED모듈의 깜빡이는 속도가 점점 빨라진다. 예를 들어 장애물과 구동체 사이 거리가 30CM 일 때 3초에 한번 깜빡인다면 20CM 일 때 2초에 한번 10cm 일 때 1초에 한번 깜빡이게 실행시킨다. 창의성② : 기존 보다 더욱더 안정적인 턴 라인트레이싱 중앙 주행상태를 center에서 rightless로 ​바꾸어 턴을..

코딩 2022.09.19

KaKao Open Api 책 검색 앱 - 2

KaKao Open Api 책 검색 앱 - 2 paging 위의 이미지와 같이 ListItem을 재활용 해주는 형식으로 View를 띄울 수 있다. 항상 구현해 왔듯이 ListItem과 RecyclerViewAdapter를 이용해 recyclerview를 구현해준다. 하지만 여기서 Paging 또한 구현해준다. Paging이란 무엇일까 ? Api를 이용하려면 데이터가 터져야 한다. 데이터가 터지지 않는 상황에서는 Api호출이 불가능하다. 와이파이와 데이터 모두꺼져 있는 상황에서 APi를 불러와 보았다. Paging 설정을 해주면 위와같이 데이터가 안터지기 때문에 RecyclerView 마지막에 Error occured가 뜨게 설정해주었다. 데이터가 터지지 않으면 Retry버튼도 통하지 않는다. Paging..

IOS) 자산관리 앱 만들기

SWIFT UI를 이용한 자산관리 앱 탭 바 만들기 우선 바텀네비게이션 바를 만들어 준다. Swift UI에서는 TabBar를 이용하여 쉽게 만들어 줄 수 있다. import SwiftUI struct ContentView: View { @State private var selection : Tab = .asset enum Tab{ case asset case recommend case alert case setting } var body: some View { TabView(selection: $selection){ Color.white.tabItem{ Image(systemName: "dollarsign.circle.fill") Text("자산") }.tag(Tab.asset) Color.blue ...

IOS/앱개발(IOS) 2022.09.14

IOS) SWIFT UI 탐색 해보기

Swift UI 란 무엇일까? Swift UI - The shortest path to a great app The shortest path to a great UI 기존 UIKIT - 명령형 현재 사용할 SWIFT UI - 선언형 명령형 명령형과 선언형 et view = UIView() view.backgroundColor = .white let label = UILabel() label.text = "Hello, world!" label.font = .preferredFont(forTextStyle: .title1) let button = UIButton() button.setTitle("START", for: .normal) button.addTarget(self, action: #selector(..

IOS/정리(IOS) 2022.09.14

SWIFT 문법 정리 - 3

SWIFT 문법 정리 - 3 상속 부모가 자식에게 재산을 물려주는 행위 클래스는 메서드,프로퍼티, 다른 특성들을 다른 클래스로부터 상속받을 수 있다. 상속을 해주는 클래스 : superclass 상속을 받는 클래스 : subclass 상속은 스위프트의 class 이외의 다른 타입의 collection에는 없는 기능이다. 서브클래스는 슈퍼클래스의 메서드,프로퍼티,서브스크립트에 접근할 수 있고 호출도 할 수 있다. 또한 overriding을 통해 서브클래스 자체의 특별한 것으로 만들 수 있다. swift는 서브클래스에서 오버라이딩으로 정의한 것들이 슈퍼클래스에 정의되어 있는지 확인하여 오류를 발견해준다. 클래스는 프로펕티 옵저버를 추가하여 상속된 프로퍼티의 값이 변화를 인지할 수도 있다. 프로퍼티 옵저버는 ..

IOS/정리(IOS) 2022.09.13

android) KaKao Open Api 책 검색 앱 만들기 - 1

KaKao Open Api 책 검색 앱 - 1 사용 기술 스택&아키텍처 Room Retrofit2 Navigation Flow DataStore Paging WorkManager Hilt CleanArchitector https://developers.kakao.com/docs/latest/ko/daum-search/dev-guide Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 카카오 OEPN API를 활용하여 책검색 앱을 만들었다. API 처리 ㅁ API는 고유 값으로 각 개인마다 하나의 각기 다른 API를 부여 받는다. 따라서 Androi..

Android) WorkManager 워크매니저

Android WorkManager 안드로이드의 백그라운드 작업 실행시점에 따른 분류 1) Exact Timing : 즉시처리 되어야 하는 작업 2) Deferrable : 처리를 위한 조건이 만족될 때까지 기다릴 수 있는 작업 실행 완료에 따른 분류 1) Best-Effort : 처리를 위해 노력하지마 취소될 수도 있는 작업 2) Guaranteed Execution : 앱이 종료 되거나 기기가 재부팅 돼도 수행돼야 하는 작업 안드로이드 백그라운드 API의 변천 과정 API 23(Marshmallow) : Doze and App Standby API 24(Nougat) : Doze on-the-go, Limited implicit broadcasts API 26(Oreo) : Background ser..