cording-cossk3의 등록된 링크

키자드에 등록된 총 215개의 포스트를 확인하실 수 있습니다.

Tistory

네이버 서치어드바이저 RSS 및 사이트맵 제출 방법

네이버 서치어드바이저 RSS 및 사이트맵 제출 방법 01. 네이버 서치어드바이저 검색해서 들어가기! 또는 링크 클릭하기 >>네이버 서치어드바이저 바로가기 [사이트맵 제출] 클릭! url은 내사이트/sitemap.xml 로 넣으면 된다! 간단해서 좋다!~!!! 구글 애널리틱스 연동하기 https://cording-cossk3.tistory.com/234 티스토리 구글 애드센스 구글 애널리틱스 연동하기 구글 애널리틱스에 티스토리 애드센스를 연동할 수 있다는 정보를 듣고!! 바로 실천해버리는 나 :) 우선, 구글 애드센스와 구글 애널리틱스 연동하기 01. 구글 애널리틱스 접속하기 https://analytics. cording-cossk3.tistory.com

Tistory

티스토리 구글 애드센스 구글 애널리틱스 연동하기

구글 애널리틱스에 티스토리 애드센스를 연동할 수 있다는 정보를 듣고!! 바로 실천해버리는 나 :) 우선, 구글 애드센스와 구글 애널리틱스 연동하기 01. 구글 애널리틱스 접속하기 https://analytics.google.com/analytics/web/#/p318068548/reports/intelligenthome Redirecting... analytics.google.com 02. 좌측 하단 [관리] 버튼 클릭! 03. 속성 란에 보니까 [애드센스 링크] 라는 메뉴가 있어야 하는데 없다... 그럼 당황해하지 말고 [+ 속성 만들기] 클릭! 04. 속성 이름 넣어주고, 시간대는 대한민국으로 설정! 그리고 중요한건 하단에 [고급 옵션 보기] 클릭! 05. 그럼 다음과 같이 [유니버셜 애널리틱스 속성..

Tistory

[Android] apk 빌드 에러 > The minSDK Version can not be specified in the AndroidManifest.xml file.

apk를 생성하려고 하는데 다음과 같은 에러가 발생했다. Execution failed for task ':app:lintVitalRelease'. > Lint infrastructure error Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethod..

Tistory

[Android] A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable 이슈 해결

기능 추가 작업 및 로그 추가를 하고 apk를 생성하려는데 정말 짜증나게도 위와 같은 에러가 나면서 생성이 안됐다. 그래서 구글링을 해본 결과... 1. 첫 번째 해결 방법 gradle.properties 파일에서 org.gradle.jvmargs=-Xmx2048M >> org.gradle.jvmargs=-Xmx2g 이렇게 사이즈를 늘려보라길래 했더니 정말 됐다! 근데 그것도 잠시뿐... 또 기능 추가 후 apk 생성하려하면 똑같은 에러가 떴다. 여기서 1차 빡침... 2. 두 번째 해결 방법 필요없는 코드를 지우고, 필요없는 파일들을 지워봤다. 근데 이것도........ 되긴 되는데 잠시 후 또 코드 한 줄 추가해도 에러뜬다 ㅠ.ㅠ 3. 세 번째 해결 방법 sdk 버전 높이기! build.gradle(..

Tistory

구글 애드센스 광고 단가 확인하기

방문자 수는 늘고, 광고 클릭 수도 늘고 있는데 애드센스 수익은 0.3, 0.4로 찍힐 때가 있다... 왜지 ?! 그동안 간간히 클릭 수가 1이 되어도 높게는 1.5 정도까진 수익이 들어왔었는데 ㅠ.ㅠ 이유가 궁금해서 나는 구글 애드센스 광고 단가를 찾아보기로 했다. 혹시 쩌리 블로그라.. 광고 단가를 적게 준건 아닐지 해서.. 01. 구글 애즈 접속 및 로그인 구글 애즈에서 광고 단가 확인이 가능하다고 한다! >> 구글 애즈 바로가기 [키워드 플래너] 클릭 07. 새 키워드 찾기 클릭 08. 원하는 키워드 입력 후 [결과 보기 클릭] 09. 관련 키워드와 그에 따른 광고 단가가 나온다. 제일 좋은 검색 키워드는 검색량 단가 경쟁률 에 해당하는 키워드라고 한다! 이따 퇴근하고 분석 좀 해서 키워..

Tistory

티스토리 블로그 구독하기 버튼 눌러도 구독이 되지 않을 때 해결 방법

요즘 사람들과 맞구독을 하다 보니 구독이 되지 않는 분들이 꽤 있었다.! url을 보면 xxx.tistory.com 이 아니라 xxx.com 으로 되어 있었다. 그래서 .com 을 .tistory.com으로 변경해서 다시 로드하면 구독하기 눌러도 되는 분들이 꽤 있었는데 유독 안되는 몇몇 분들이 있었다!! 이런건.. 참을 수 없지 바로 구글링해야지 해당 블로그에서 [Ctrl + U] 를 누르거나 [오른쪽 마우스 + 페이지 소스 보기] 를 선택한다. 그럼 html로 작성된 페이지 소스들이 보이는데! 거기서 Ctrl + F로 단어를 찾아야 한다 mobile_view_url" content=" 그럼 아래와 같이 찾을 것이다. content = "URL" 에서 URL만 긁어와 다시 붙여넣기를 하고 구독하기를 누..

Tistory

네이버 검색엔진 최적화 - robots.txt 접근 차단 해결 방법

네이버 서치어드바이저를 통해서 내 사이트를 등록하던 중 내 사이트를 진단할 수 있길래 해보았다. 우선 네이버 서치 어드바이저 사이트를 들어가보자! >> 네이버 서치 어드바이저 바로가기 네이버 서치어드바이저 RSS 및 사이트맵 제출 방법 네이버 서치어드바이저 RSS 및 사이트맵 제출 방법 01. 네이버 서치어드바이저 검색해서 들어가기! 또는 링크 클릭하기 >>네이버 서치어드바이저 바로가기 [사이트맵 제출] 클릭! url은 내사이트/si cording-cossk3.tistory.com

Tistory

[Flutter] Google Map API Release 시 뜨지 않는 이슈

이런... 오전부터 개삽질했다. https://cording-cossk3.tistory.com/198 [Flutter] Google Map API 사용하기 하나하나 자세하게 알려주는 블로그가 없어 내가 직접 포스팅한다. 우선 Google Cloud Platform으로 이동하자! Google Cloud Platform 이동 Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Pla cording-cossk3.tistory.com 위 포스팅을 따라서 google map api를 사용하게 되면 디버깅 모드에서는 잘 빌드되고, 맵도 잘 나올 것이다. 근데 flutter run --release 위처럼 release로 실행하게되면 회색 화면이 뜨면서 맵이 로드..

Tistory

[C언어] byte를 0과 1로 출력 / binary 출력 (byte to binary)

byte 보다는 8bit로 출력을 하고 싶을 때가 있다. #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c\n" #define BYTE_TO_BINARY(byte) \ (byte & 0x80 ? '1' : '0'), \ (byte & 0x40 ? '1' : '0'), \ (byte & 0x20 ? '1' : '0'), \ (byte & 0x10 ? '1' : '0'), \ (byte & 0x08 ? '1' : '0'), \ (byte & 0x04 ? '1' : '0'), \ (byte & 0x02 ? '1' : '0'), \ (byte & 0x01 ? '1' : '0') 위와 같이 define으로 정의해두고 쓰면 유용하다.!

Tistory

유용한 온라인 컴파일러 사이트

가끔 지식인 답변을 해주다가 c/c++ 컴파일이 필요할 때 내 pc에서는 환경 설정이 되어있지 않아 곤란할 때가 있다. 그럴때 내가 유용하는 사이트 https://replit.com/languages/c C Online Compiler & Interpreter Write and run C code using our C online compiler & interpreter. You can build, share, and host applications right from your browser! replit.com 은근 괜찮다 (최고)

Tistory

[C/C++] 소수점 n자리 출력, 정수 및 소수점 0 채우기

지식인 둘러보다가 다음과 같은 질문을 발견했다. 생각해보니 저렇게 출력해 본 적이 없어서 나도 의문이었다. 저렇게 출력을 하는 방법이 있나 ? 근데 있었다! #include int main() { printf("%05.2f\n", 5.12345); return 0; } >> 05.12 소수점을 포함한 5자리 수 출력을 하는데, 그 중에 소수점 자리는 2자리 출력, 나머지는 0으로 채운다는 의미 같다. 그렇다면, 만약 이렇게 코딩을 하면 결과는 어떻게 나올까? #include int main() { printf("%010.5f\n", 5.123); return 0; } 10자리 중 소수점 자리는 5자리 출력이니, 0005.12300 이렇게 나올 것이다!! 오늘도 유용한 지식 알아간다.

Tistory

[정보처리기사] Part02-03-2. 제품 소프트웨어 메뉴얼 작성

* 제품 소프트웨어 매뉴얼 작성 - 사용자가 제품 구매 후 최초 설치 시 참조하는 매뉴얼 - 제품 소프트웨어 소개, 설치 파일, 설치 절차 등 포함 제품 SW 설치 기본 작성 항목 - 목차 및 개요 : 매뉴얼 전체 내용에 대한 요약 - 문서 이력 정보 : 매뉴얼 변경 이력 정보 - 설치 도구 구성 : exe/dll/ini/chm 등 설치 관련 파일 설명 - 설치 위치 지정 : 설치 폴더와 설치 프로그램 실행 파일 설명 제품 SW 설치 환경 체크 항목 - 사용자 환경 : 사용자 CPU 및 Memory, OS 등 적합 환경 - 응용 프로그램 : 설치 전 다른 응용 프로그램 종료 - 업그레이드 버전 : 업그레이드 이전 버전에 대한 존재 유무 확인 - 백업 폴더 확인 : 데이터 저장 폴더 확인하여 설치 ..

Tistory

[Flutter] CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate

I/flutter: HandshakeException: Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:393)) class MyHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { //for https able to get local issuer certificate return super.createHttpClient(context) ..badCertificateCallback = (X509Certificate c..

Tistory

[C/Keil RTX] GPIO INPUT 이벤트 처리 (IRQHandler)

나는 PA.6을 EINT0으로 설정하려고 한다. // 1 SYS->GPA_MFPL = SYS_GPA_MFPL_PA6MFP_INT0; // 2 SYS->GPA_MFPL = (SYS->GPA_MFPL & (~SYS_GPA_MFPL_PA6MFP_Msk) ) | SYS_GPA_MFPL_PA6MFP_INT0 ; 1 또는 2 방법으로 설정해주면 된다. 그 다음 아래와 같이 설정해주기. // a GPIO_SetMode(PA, BIT6, GPIO_MODE_INPUT); // b GPIO_EnableInt(PA, 6, GPIO_INT_BOTH_EDGE); // c NVIC_EnableIRQ(EINT0_IRQn); // d GPIO_ENABLE_DEBOUNCE(PA, BIT6); a : PA.6 핀을 input 모드로 설..

Tistory

[C/Keil RTX] 포인터 사용하기 (malloc 대체)

keil에서 malloc을 사용하면 계속 hard fault error가 난다.... 삽푸다가 결국 알아낸 방법. rtx 함수를 이용하는 것이다! // 1 #include // 2 typedef struct { PILOT_STATE m_state; PILOT_STATE (*GetState)(void); void (*SetState)(PILOT_STATE pstate); } Pilot; // 3 _declare_box(g_poolPilot, sizeof(Pilot), 1); 1 : RTL.h 함수 선언 2 : 사용하려는 포인터 구조체 선언 3 : _declare_box(pool 변수 이름, 포인터 구조체 사이즈, 포인터 개수) 위와 같이 전역으로 선언을 해줬으면, 초기화를 해주자. // 1 Pilot* g..

Tistory

[C/Keil RTX] thread 대신 os_tsk_create 사용하기

커널에 올리는 코드라 그런지 thread를 사용할 수 없다. 대신, thread처럼 사용할 수 있는 os_tsk_create를 사용하자! int main(void) { ... os_sys_init(os_init); ... } os_sys_init 함수는 RTX(Real-Time eXecutive) 커널을 초기화하고 시작할 수 있는 함수이다. 그 안에 인자로 커널이 초기화된 후 시작할 태스크 함수를 넣어주자. __task void os_init(void) { // 1 os_tsk_create(Test1, 3); // 2 os_tsk_create_ex(Test2, 1, (void *)0); os_tsk_delete_self(); } os_tsk_create(테스크 함수, 우선순위); os_tsk_create..

Tistory

[Flutter] naver_map_plugin 사용하여 특정 위치로 이동하기

ㅜㅜㅜㅜ 진짜 너무 헤맸다. 정보가 너무 없어서 내가 기능 추가해서 라이브러리를 만들어야 하나.. 하면서 git 프로젝트를 다운받아 코드를 천천히 살펴보다가 발견했다........ final controller = await _controller.future; controller.moveCamera( CameraUpdate.toCameraPosition(CameraPosition(target: _latLng)) ); toScroll() 함수를 쓰려고 했으나, animate 관련해서는 널 값을 참조하고 있다고 해서 toCameraPosition 함수를 썼다. 야호

Tistory

[Flutter] Kakao 소셜로그인 구현

우선! kakao developers에 애플리케이션 생성 및 flutter 프로젝트에 api 설정하는 과정들은 아래 포스팅에서 보고 따라하면 된다. https://cording-cossk3.tistory.com/209 [Flutter] 카카오내비 앱 연동하기 (1) - Android 개삽펐다..... 대부분의 에러 원인은 키 해시 값이라는걸 명심하자 ㅜㅜ pubspec.yaml dependencies: flutter: sdk: flutter # kakao api kakao_flutter_sdk: ^1.0.0 # 전체 추가 kakao_flutter_sdk_user: ^1.0.0.. cording-cossk3.tistory.com 아래 사이트에 접속 후 로그인하면..

Tistory

[Flutter] ListView 와 ListView.builder 차이

앱 개발을 하다가 bottomsheet를 띄우는데 렉 걸린듯이 버벅이면서 로드가 됐다.. ListView를 사용하고 있기도 하고, 그 안에서 여러 위젯들을 많이 띄우기도 하고.. 연산도 많이 해서 그런가 싶어 이것저것 찾아보다가 결국 알아낸게 ListView.builder 였다. There are four options for constructing a ListView: 1. The default constructor takes an explicit List of children. This constructor is appropriate for list views with a small number of children because constructing the List requires doing wo..

Tistory

[Flutter] nats server 연동

NATs Server와 연동할 일이 생겼다.. 지식이 없어 이것저것 헤매다가 결국 알아냈더랬지 pubspec.yaml dependencies: flutter: sdk: flutter #NATS dart_nats: 0.3.5 내가 사용한 라이브러리는 dart_nats connect nats.Client natsClient; void connect() async { natsClient = nats.Client(); await natsClient.tcpConnect('ip'); print('${_TAG}connect : ${natsClient.status.name}'); } 처음에 그냥 natsClient.connect 함수를 썼는데 로그는 connected라 찍히는데 정작 서버에서는 연결이 안됐다고 해서 찾..

Tistory

[정보처리기사] Part02-03-1. 제품 소프트웨어 패키징

* 애플리케이션 패키징 - 개발 완료된 SW를 고객에게 전달하기 위해 패키징, 설치 및 사용 매뉴얼 작성하는 활동 특징 - 개발자가 아닌 사용자 중심 진행 - 신규 및 변경 개발 소스 식별하고 이를 모듈화하여 상용 제품으로 패키징 - 고객 편의 위해 신규/변경 이력 확인하고 이를 버전 관리 및 릴리즈 노트 통해 지속적 관리 - 사용자 실행 환경 이해하고 범용 환경에서 사용 가능토록 일반적인 배포 형태로 분류하여 패키징 진행 사용자 중심 애플리케이션 패키징 * 사용자 실행 환경 이해 - OS, 실행 환경, 시스템 사용, 개발 언어, 고객 사용 방법까지 상세 분석하여 실행 환경 사전 정의 - 다양한 실행 환경 나오면 별도 애플리케이션 패키징 작업 필요 * 고려사항 - 사용자 OS, 시스템 사양(CPU..

Tistory

[Flutter] Tmap API 및 Tmap 앱 연동 (1) - Android편

https://openapi.sk.com/ SK open API Recopick 레코픽은 성능과 안정성이 검증된 실시간 개인화 추천엔진과 SK그룹사 데이터를 기반으로 다양한 개인화 서비스를 제공합니다. SK planet openapi.sk.com 위 사이트 접속 아래와 같은 화면이 나오면 상단 메뉴 중 [My Project] 클릭 My Project 화면에서 빨간 버튼 [프로젝트 생성] 클릭 아래와 같은 창이 뜨면 프로젝트명과 설명 입력 후 [확인] 클릭 그럼 아래와 같이 내가 생성한 프로젝트가 추가된 것을 확인 가능함. 그럼 이제 상단 메뉴 중 [API] 클릭 나는 TMAP API를 사용할 것이니 [TMAP] 클릭 우측에 사용할 API 선택 후 [바로구매] 클릭 TMAP API는 무료. 구매를 했다면 ..

Tistory

[Flutter] 카카오내비 앱 연동하기 (2) - iOS

대부분의 자세한 내용들은 아래 포스팅에 다 들어있다. https://cording-cossk3.tistory.com/209 [Flutter] 카카오내비 앱 연동하기 (1) - Android 개삽펐다..... 대부분의 에러 원인은 키 해시 값이라는걸 명심하자 ㅜㅜ pubspec.yaml dependencies: flutter: sdk: flutter # kakao api kakao_flutter_sdk: ^1.0.0 # 전체 추가 kakao_flutter_sdk_user: ^1.0.0.. cording-cossk3.tistory.com iOS에서 실행을 시키면 자꾸 카카오내비 앱이 설치되어 있지 않다고 떴다. canOpenURL: failed for URL ~~~ 해결 방법 Info.plist LSAppl..

Tistory

[Flutter] Tmap API 및 Tmap 앱 연동 (2) - iOS편

후... 반나절을 삽펐다. tmap에서 ios sdk를 다운받고 압축 해제를 하면 아래와 같이 내용물이 들어있다. 혹시 sdk를 어떻게 다운받는지 모른다면 여기를 클릭해서 보면 된다. 실제 디바이스 기기에 앱을 올릴거면 배포 폴더 시뮬레이터에 앱을 올릴거면 개발 폴더를 들어가자. ※ 혹시 앱을 배포할 예정이면 배포 폴더의 sdk를 사용해야 한다. 자, 그리고 flutter 프로젝트\ios\Runner.xcworkspace를 열고, 프로젝트 > General 창을 띄우자 그리고 해당 폴더 안에 있는 SDK 폴더를 General > Frameworks, Libraries, and Embedded Content 안으로 드래그 드롭 해준다. 근데 난.. import TMapSDK 를 하려고 하면 자꾸 No..

Tistory

[Flutter] Search 검색 기능 (SearchDelegate)

https://dev.to/luizeduardotj/search-bar-in-flutter-33e1 Search Bar in flutter Link for the code Hey devs, today I'll show how to implement a search bar in flutter. This beautiful... dev.to 위 포스팅을 참고했다. 우선, 호출 방법부터 알아보자. 버튼을 누르면 검색을 할 수 있게끔 하자. 우선 내 코드를 가져와봤다. final List list = List.generate(10, (index) => "Text $index"); GestureDetector( onTap: () { showSearch(context: context, delegate: Search(..

Tistory

[Flutter] AppBar Module

appbar에 action 들을 추가하니 코드가 가독성이 떨어져 보여 모듈화해서 빌드해보았다. import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class AppBarArea extends StatelessWidget implements PreferredSizeWidget { final AppBar appBar; const AppBarArea({Key key, this.appBar}) : super(key: key); @override Widget build(BuildContext context) { return AppBar( backgroundColor: Colors.white, leading: Image.a..

Tistory

[Flutter] endDraw + AppBar actions 함께 쓰기

endDraw를 쓰고 appbar actions에서 action들을 추가하면 endDraw가 안보이게 된다. 그래서 찾아낸 방법은 Scaffold를 커스터마이징 하는 것! class CustomScaffold extends Scaffold { static GlobalKey _keyScaffold = GlobalKey(); CustomScaffold({ AppBar appBar, Widget body, Widget floatingActionButton, FloatingActionButtonLocation floatingActionButtonLocation, FloatingActionButtonAnimator floatingActionButtonAnimator, List persistentFooterButt..

Tistory

[Flutter] Navigator.pop 데이터 전달하기

생각보다 간단하다! 우선 A 페이지에서의 버튼을 구현해보자 //A bool _state = false; ElevatedButton( onPressed: () async { bool state = await Navigator.push(context, MaterialPageRoute(builder: (context) => B())); setState(() { _state = state; }); }, ... ) 여기서 중요한건 async와 await 이다! B 페이지에서는 다음과 같이 구현하면 된다. ElevatedButton( onPressed: () { ... Navigator.pop(context, true); }, ... )

Tistory

[Flutter] Kakao Map api 사용하기

카카오 developer 사이트 바로가기 [ + 애플리케이션 추가하기] 클릭 앱 이름, 사업자명 입력 후 저장 그럼 다음과 같이 리스트에 애플리케이션이 추가된 것을 확인 가능. 생성된 애플리케이션 클릭 여기서 네이티브앱 키 메모해두고, [플랫폼 설정하기] 클릭 [Android 플랫폼 등록] 쿨락 패키지명과 키 해시 입력 후 저장 아래와 같이 Android 플랫폼이 등록된 것을 확인 가능 해시 키 값은 아래를 참고하면 된다. https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android-v1 Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 AP..

Tistory

[Flutter] 카카오내비 앱 연동하기 (1) - Android

개삽펐다..... 대부분의 에러 원인은 키 해시 값이라는걸 명심하자 ㅜㅜ pubspec.yaml dependencies: flutter: sdk: flutter # kakao api kakao_flutter_sdk: ^1.0.0 # 전체 추가 kakao_flutter_sdk_user: ^1.0.0 # 카카오 로그인 kakao_flutter_sdk_talk: ^1.0.0 # 카카오톡(소셜, 메시지) kakao_flutter_sdk_story: ^1.0.0 # 카카오스토리 kakao_flutter_sdk_link: ^1.0.0 # 카카오링크 kakao_flutter_sdk_navi: ^1.0.0 # 카카오내비 # kakao 의존성 library dio: ^4.0.4 json_serializable: ^4.1..

Tistory

[이펙티브 자바] 규칙1

규칙 1 : 생성자 사용 전 정적 팩터리 메서드 사용을 고려해라 //서비스 제공자 인터페이스 대략적 모습 //서비스 인터페이스 public interface Service { ... //서비스에 고유한 메서드들이 이 자리에 온다 } //서비스 제공자 인터페이스 public interface Provider { Service newService(); } //서비스 등록과 접근에 사용되는 객체 생성 불가능 클래스 public class Services { private Services() { } //객체 생성 방지 private static final Map providers = new ConcurrentHashMap(); public static final String DEFAULT_PROVIDER_NAM..

Tistory

[이펙티브 자바] 규칙2

규칙 2 : 생성자 인자가 많을 시 Builder 패턴 적용을 고려하라 public class NutritionFacts { private final int servingSize; // (mL) 필수 private final int servings; // (per container) 필수 private final int calories; // 선택 private final int fat; // (g) 선택 private final int sodium; // (mg) 선택 private final int carbohydrate; // (g) 선택 public NutritionFacts(int servingSize, int servings) { this(servingSize, servings, 0); } p..

Tistory

[Flutter] 네이버 Maps API 사용하기

네이버 지도 api 사이트 바로가기 위 링크를 통해 이동하면 아래와 같은 화면이 뜬다 여기서 중간에 보이는 [이용 신청하기] 버튼 클릭 그럼 다음과 같이 API 관련 페이지가 뜰 것이다. 물론, 로그인을 했다는 전제 하에. 스크롤을 내리다보면 맨 하단에 [ + Application 등록 ] 이라는 버튼이 보일 것이다. 클릭 약관 동의 약관 동의 후 Service 선택이 보일 것이다. 우선 뭐가 뭔지 모르니 Maps 를 체크해준다. 이런.. Web Dynamic Map과 Static Map 서비스 선택 시 Web URL을 입력해야 한다고 한다.. 나는 모바일 서비스를 이용할 예정이라 Web 관련 서비스들은 다시 체크 해제를 해준다. Android 앱 패키지 이름과 iOS 번들 ID 입력을 위해 플러터 프로..

Tistory

[Flutter] Splash 화면

pubspec.yaml dependencies: flutter_native_splash: ^1.1.8+4 projet_name\flutter_native_splash.yaml 생성 flutter_native_splash: image: assets/images/logo.png fullscreen: true 패키지 실행 (cmd 창) flutter pub run flutter_native_splash:create splash.dart class Splash extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Image.asset( "assets/images/log..

Tistory

[정보처리기사] Part02-02-2. 통합구현 관리

* IDE(통합 개발 환경; Integrated Development Environment) 도구 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경 제공하는 소프트웨어 IDE 도구 기능 ▷ 개발 환경 지원 - C++, Java 등 언어 이용하여 애플리케이션 개발할 수 있는 환경 제공해 줌 ▷ 컴파일 및 디버깅 기능 제공 - 코딩 완료되면 컴파일하여 문법에 어긋나지 않는지 확인하고, 오류 발생 시 이를 추적하여 수정할 수 있는 디버깅 기능 제공 ▷ 외부 연계 모듈과 통합 기능 제공 - EAI 등 외부 인터페이스 모듈과 통합 통해 통합 개발 기능 제공 - JDBC 등 통해 DB 연동 통한 통합 개발 기능 제공 - 외부 형상, 배포 관리 기능과 ..

Tistory

[정보처리기사] Part02-05-3. 인터페이스 구현 검증

* 설계 산출물 1. 인터페이스 구현 검증 도구 - 인터페이스 구현 검증 위해서는 인터페이스 단위 기능 및 시나리오에 기반한 통합 테스트 필요 - 테스트 자동화 도구 이용해 단위 및 통합 테스트 효율성 높일 수 있음 인터페이스 구현 검증 도구 ▷ xUit - Java(Junit), C++(Cppunit) 등 다양한 언어 지원하는 단위 테스트 프레임워크 ▷ STAF - 서비스 호출, 컴포넌트 재사용 등 다양한 환경 지원하는 테스트 프레임워크 ▷ FitNesse - 웹 기반 테스트 케이스 설계/실행/결과 확인 등 지원하는 테스트 프레임워크 ▷ NTAF - Naver 테스트 자동화 프레임워크. STAF + FitNesse ▷ Selenium - 다양한 브라우저 지원 및 개발 언어 지원하는 웹 애플리케이션 ..

Tistory

[Flutter] Google Map API 사용하기

하나하나 자세하게 알려주는 블로그가 없어 내가 직접 포스팅한다. 우선 Google Cloud Platform으로 이동하자! Google Cloud Platform 이동 Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com 그럼, 다음과 같이 상단에 Google Cloud Platform 옆 프로젝트 선택 스피너가 보일 것이다. 클릭하면 다음과 같이 프로젝트 선택 창이 뜬다 우측 상단 [새 프로젝트] 클릭 그럼 다음과 같이 프로젝트 이름 입력 란이 뜰 것이다. 아무렇게나 입력해도 상관 없는 듯 하다 입력 후 [만들기] 클릭 그럼 상단에 방금 만든 프로젝트 이름이 뜬 것을 확인할..

Tistory

[정보처리기사] Part01-04-1. 인터페이스 요구사항 확인

* 클래스 설계 분석 단계에서 아직 결정되지 않는 클래스 내부 부분 중 구현에 필요한 서비스 인터페이스와 메서드 내부 로직 결정하는 작업 클래스 서비스 인터페이스 설계 시 사용자와 구현하는 사람 간 상호 약속 정의한 "협약에 의한 설계" 라는 개념 적용 각 객체 상태가 연산(메서드) 호출에 따라 상태 값이 어떻게 변화하는지 살펴보고 상세히 설계해야 함 클래스 인터페이스 - 클래스 설계 시 서브 시스템에서 제공하는 서비스는 연산, 파라미터, 타입, 클래스 인터페이스로 정의됨 - 서브 시스템에서 제공하는 서비스 내용은 API 라고 함 - 클래스에서 제공하는 속성 값 범위, 리턴 값 범위 등을 개발자, 사용자, 운영자 등이 공유 가능토록 정의 협약에 의한 설계 (Design by Contra..

Tistory

[정보처리기사] Part01-04-2. 인터페이스 대상 식별

* 시스템 아키텍처 시스템이 어떻게 작동하는지를 설명하는 프레임워크 시스템 목적 달성 위해 시스템의 각 컴포너트가 무엇이며 어떻게 상호 작용 하는지, 정보가 어떻게 교환되는지를 설명 시스템 아키텍처 기본 요구사항 - 시스템 구성 및 동작 원리 표현 - 시스템 구성 요소에 대해 설계 및 구현 지원하는 수준으로 자세히 기술됨 - 구성 요소 간 관계 및 시스템 외부 환경과의 관계 묘사 - 요구 사양 및 시스템 전체 수명 주기 고려 - HW와 SW 포함하는 시스템 전체에 대한 논리적 기능 체계와 그것을 실현하기 위한 구성 방식, 시스템 전체적인 최적화를 목표로 함 1. 시스템 아키텍처 설계 - SW 시스템 아키텍처 설계에 제약을 주는 상위 설계로서의 시스템 아키텍처 설계가 존재하고, SW 아키텍처 제..

Tistory

[정보처리기사] Part01-04-3. 인터페이스 상세 설계

* 내외부 송/수신 인터페이스 시스템 직접 인터페이스 방식 간접 인터페이스 방식 1. 직접 연계 방식 - 일반적으로 중간 연계 매개체가 생략돼 연계 처리 속도 빠르고 구현 단순하며, 개발 비용과 기간 짧음 - 송수신 시스템 사이 결합도 높아 시스템 변경에 민감한 특성 있음 - 보안 위한 암/복호화 처리와 업무 기능 구현을 인터페이스 별로 작성하여 전사 차원 시스템 인터페이스 통합 환경 구축이 어려운 단점 2. 간접 연계 방식 - 연계 서버 활용하여 송/수신 처리와 송/수신 현황 모니터링하고 통제하는 방식 - 서로 상이한 네트워크과 프로토콜 등 다양한 환경 시스템들 연계하고 통합 관리 가능 - 장점 : 인터페이스 변경 시에도 유연하게 대처 가능하고 보안이나 업무 처리 로직 반영 용이 - 단점 : 인터페이스..

Tistory

[정보처리기사] Part02-01-4. 데이터 조작 프로시저 최적화

* 쿼리 성능 측정 DB에서 프로시저에 있는 SQL 실행 계획 분석하여 시간 오래 걸리는 부분 수정하여 최소 시간으로 원하는 결과 얻도록 프로시저 수정하는 활동 RDB, 특히 Oracle 쿼리 성능 측정 방법에는 TKPROF 명령어, EXPLAIN PLAN 이 있음 1. SQL 처리 흐름 SQL 처리 단계 ▷ 구문 분석 (Parsing) - 사용자가 요청한 SQL 문이 실행 계획 있는지 확인 - 실행 계획 있음 : 과거에 사용된 문장이기에 구문 분석할 필요 없이 바로 실행 - 실행 계획 없음 : 옵티마이저는 인덱스 등 분석해 가장 빠르게 검색해 줄 수 있는 실행 계획 찾음 ▷ 실행 (Execution) - 실행 계획 따라 메모리 영역의 DB 버퍼 캐시 영역에 해당 데이터가 있는지 확인 - 버퍼..

Tistory

[정보처리기사] Part02-02-1. 모듈 구현

* 단위 모듈 구현 SW 개발에 있어 기능 분할하고 추상화하여 성능 향상시키고 유지보수 효과적으로 하기 위한 단위 컴포넌트 별 구현 기법 인터페이스 모듈, DB 접근 모듈 등 통합 구현에 필요한 단위에 컴포넌트 구현 1. 단위 모듈 종류 - 상세 설계된 단위 모듈, 환경 변수를 실제 프로그래밍 언어로 구현하는 것 - 화면 모듈, 화면에서 입력받은 데이터 처리 위한 서비스 컴포넌트, 비즈니스 트랜잭션 컴포넌트 2. 단위 모듈 구현 원리 단위 모듈 구현 원리 ▷ 정보 은닉 (Information Hiding) - 객체에 대한 구체적인 정보 노출시키지 않도록 하는 기법 ▷ 분할과 정복 (Divide & Conquer) - 복잡한 문제 분해하여 모듈 단위로 문제 해결 ▷ 데이터 추상화 (Data Ab..

Tistory

[정보처리기사] Part01-02-1. UI 요구사항 확인

* UI 사람과 사물 또는 시스템 사이에서 의사소통 할 수 있도록 일시적 또는 영구적인 접근 목적으로 만들어진 물리적, 가상적 매개체 UI 종류 ▷ 그래픽 사용자 인터페이스 (GUI) - 그래픽과 텍스트로 이루어져 있으며 객체지향 인터페이스와 응용 프로그램지향 인터페이스 공존 ▷ 웹 기반 인터페이스 (웹 사용자 인터페이스, WUI) - 인터넷과 웹 브라우저 통해 웹 페이지 열람하고 조작하는 인터페이스 ▷ 명령 줄 인터페이스 (CLI) - 사용자가 컴퓨터 자판 등을 이용해 명령 문자열 입력하여 체계 조작하는 인터페이스 ▷ 텍스트 사용자 인터페이스 (TUI) - 문자열 기반 사용자 인터페이스와 구분 위해 그래픽 사용자 인터페이스 발명된 뒤에 만들어진 용어 ▷ 터치 사용자 인터페이스 UI 세 분야 ..

Tistory

[정보처리기사] Part01-02-2. UI 설계

* UI 흐름 및 상세 설계 1. UI 설계 단계 ① 문제 정의 - 시스템 목적 기술하고 해결해야 할 문제 정의 ② 사용자 모델 정의 - 사용자 특성 명확히 하지 않고는 시스템 사용성 확보 불가하므로 사용자 특성 결정 - 사용자 컴퓨터 SW와 작업에 대한 지식 정도에 따라 초보자, 중급자, 숙련자로 분류 가능 ③ 작업 분석 - 항상 해결해야 할 문제 정제하고 사용자 특징들 세부화하고 시스템 통해 수행되어야 할 작업들 정의 ④ 컴퓨터 오브젝트 및 기능 정의 - 분석 작업을 컴퓨터의 어떤 사용자 인터페이스 통해 표혀할 것인지를 정의 - 실제로 사용자는 시스템 이용해 작업할 경우, 컴퓨터 오브젝트 통해 수행 ⑤ 사용자 인터페이스 정의 - 컴퓨터나 작업 수행 방법에 대해 상호작용하는 오브젝트 선택하고 시스템 상..

Tistory

[정보처리기사] Part01-03-1. 공통 모듈 설계

* 공통 모듈 날짜 처리 위한 유틸리티 모듈 등과 같이 전체 프로그램 기능 중 공통적으로 사용 가능한 모듈 의미 모듈화 - SW 성능 향상시키거나 시스템 수정 및 재사용, 유지 관리 용이케 하여 프로그램 효율적으로 관리 가능토록 시스템 분해하고 추상화하는 기법 의미 - 모듈 크기가 과도하게 작은 경우 모듈 개수가 많아져 모듈 간 통합 비용 과다 발생 - 모듈 크기가 과도하게 큰 경우 모듈 간 통합 비용 상대적으로 감소하는 대신 하나의 모듈 개발하는 데 소용되는 비용 커짐 1. 응집도 - 모듈 내부 구성 요소 간 관계 밀접 정도 - 응집도 높을수록 필요한 요소들로 구성되어 짐 - 응집도 낮을수록 요소들 간 관련성 적은 요소들로 구성되어 짐 - 품질 측면에서 가장 높은 품질은 기능적 응집도이며, 가장..

Tistory

[정보처리기사] Part01-03-2. 객체 지향 설계

* 객체 지향 (Object Orient) 실세계 개체를 속성과 메소드가 결합된 형태의 객체로 표현하는 개념 구현 대상을 하나의 객체로 보고 객체와 객체들 간 관계로 모델링 하는 방법 개발 측면에서 SW 위기 해결 위한 대안과 생산성 저하에 따른 재사용성, 확장성 필요에 의해 등장 사용 측면에서 컴퓨팅 환경에 대한 보다 많은 기능, 단순성, 사용 편의성 요구가 증대 객체 지향 프로그래밍 (Object Oriented Programming) - 컴퓨터 프로그래밍 패러다임 중 하나 - 컴퓨터 프로그램을 명령어 목록으로 보는 시각에서 벗어나 여러 개 독립된 단위(객체)들의 모임으로 파악하고자 함 - 각각의 객체는 메시지 주고 받고, 데이터 처리 가능 - 프로그램을 유연하고 변경 용이하게 만들..

Tistory

[정보처리기사] Part01-01-2. 요구사항 확인 (1)

* 요구 공학 (Requirements Engineering) 시스템 요구사항 문서 생성, 검증, 관리하기 위해 수행되는 구조화된 활동 집합 이해관계자 사이에 효과적인 의사소통 수단 제공하고 요구사항에 대한 공통 이해 설정 요구사항 손실 방지 및 에러 감지로 불필요한 비용 절감하고 요구사항 변경 추적 가능케 함 개발 절차 ▷ 타당성 조사 - 시스템 구축 가능성 평가 : 비용, 일정, 기술, 법률 제약 사항 - 활용 기법 = 질문지(AS-IS 문제점, 통합 시 문제점), SWOT 분석 ▷ 도출 (Elicitation) - SW가 해결해야 할 문제 이해하고 요구사항이 어디에 있고, 어떻게 수집할 것인가와 관련되어 있음 - 활용 기법 = 인터뷰, 포커스 그룹, 집단 창의력 기법, 설문조사, 관찰..

Tistory

[정보처리기사] Part01-01-2. 요구사항 확인 (2)

* 소프트웨어 개발 방법론 1. 애자일 (Agile) - 전체 개발 단계에서 변화에 대한 신속한 대응으로 요구사항 지속적으로 분석, 반영하여 배포 시간차 최소화 - SW 개발 방법에 있어 아무런 계획 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점 찾고자 함 애자일 선언문 (Agile Manifesto) - 공정과 도구보다 개인과 상호작용 - 포괄적인 문서보다 작동하는 소프트웨어 - 계햑 협상보다 고객과의 협력 - 계획을 따르기보다 변화에 대응하기 애자일 방법론 종류 ▷ XP (eXtreme Programming) - 의사소통 개선과 즉각적인 피드백에 의한 단순한 코딩으로 SW 품질 높이기 위한 방법론 - 1~3주 반복 (iteration) - 5가지 가치 : 용기, 단순성, ..

Tistory

[정보처리기사] Part01-01-3. 분석모델 확인 (1)

* 모델링 실세계 물리현상을 특정 목적에 맞춰 이용하기 쉬운 형식으로 표현하는 일 의미 개념 모델링 (Conceptual Modeling) - 실세계 문제에 대한 모델링이 SW 요구사항 분석 핵심 - 문제 도메인의 엔티티들과 그들의 관계 및 종속성 반영 UML (Unified Modeling Language) - 객체 지향 SW 개발 과정에서 산출물을 명세화, 시각화, 문서화 할 때 사용되는 모델링 기술과 방법론 통합해 만든 표준화된 범용 모델링 언어 UML 특징 가시화 언어 - 개념 모델 작성 시 오류 적고 의사소통 용이케 함 구축 언어 - 다양한 객체지향 프로그램 언어로 변환 가능 (순공학, 역공학) 문서화 언어 - 시스템에 대한 평가, 통제, 의소소통 문서 명세화 언어 ..

Tistory

[정보처리기사] Part01-01-3. 분석모델 확인 (2)

* 분석 자동화 도구 1. 유즈케이스 모델 검증 유즈케이스 모델 검증 ▷ 액터 - 기능 구현에 관계되는 액터가 모두 도출되었는가? - 액터 목록에서 액터 명이 역할 중심으로 명명되었는가? - 요구사항 정의서, 요구사항 기술서에 외부/내부 액터가 모두 도출되었는가? - 액터 목록과 액터 명세서에 기록된 액터가 타당한지 확인함 ▷ 유즈케이스 - 요구기능 구현에 필요한 유즈케이스가 모두 도출 되었는가? - 도출된 유즈케이스를 논리적으로 연결하여 누락된 기능 파악 - 도출된 유즈케이스가 유즈케이스 목록과 유즈케이스 명세서에 반영 되었는가? - 도출된 유즈케이스 논리적인 합이 과업 범위와 일치하는지 비교 - 도출된 유즈케이스들이 논리적으로 그룹화 되었는지 확인 - 유즈케이스 기능 범위가 다른 유즈케이스 기능 ..

Tistory

[정보처리기사] Part04-02-2. 언어특성 활용

* 프로그램 개발 언어 1. 프로그램 실행 방식에 따른 분류 개발 언어 ▷ 컴파일러 언어 → 번역사 같은 작업 → 프로그램 전체 라인을 처음부터 끝까지 해독해 목적 코드로 만든 후 실행 → C, C++, COBOL, Ada, FORTRAN, PASCAL 등 ▷ 인터프리터 언어 → 통역사와 같은 작업 → 프로그램 라인 단위로 한 줄씩 해석하고 바로 실행 → 자바스크립트, BASIC, LISP 등 ▷ 스크립트 언어 → 소스 코드 컴파일 하지 않고도 실행 가능한 프로그래밍 언어 → 별도 컴파일 없이 내장된 번역기에 의해 번역되므로 바로 실행 가능 → 컴파일러 언어와는 다르게 인터프리터 사용해 코드 한줄 한 줄을 즉시 해석 및 실행 → JavaScript, ActionScript, AutoHotKey, JS..

Tistory

[정보처리기사] Part04-02-3. 라이브러리 활용

라이브러리 모듈화 되어 제공되는 프로그램 효율적인 프로그램 개발 위해 필요한 프로그램 모아놓은 집합체 구성 ▷ 도움말 → 라이브러리 사용할 수 있도록 하는 도움말 문서 ▷ 설치 파일 → 라이브러리 적용 위해 제공되는 설치 파일 ▷ 샘플 코드 → 라이브러리 이해하고 손쉽게 적용 위해 제공되는 샘플 소스코드 1. 표준 라이브러리와 외부 라이브러리 ▷ 표준 라이브러리 → 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리 의미 → 여러 종류의 모듈과 패키지 가지며, 별도의 파일 설치 없이 다양한 기능 이용 가능 ▷ 외부 라이브러리 → 표준 라이브러리와 달리 별도 파일 설치해야 함 → 누구나 개발하여 설치 가능하며, 인터넷 등을 이용하여 공유 가능 2. 모듈과 패키지 ▷ 모듈 → 한 개의 파일에서 기..

Tistory

[정보처리기사] Part05-01-1. 소프트웨어 개발방법론 선정 (1)

소프트웨어 개발 생명주기 (Software Development Life Cycle) 소프트웨어를 어떻게 개발할 것인가에 대한 추상적 표현 순차적 또는 병렬적 단계로 구성되며 개발 모델 또는 소프트웨어 공학 패러다임으로 정의 타당성 검토 > 분석 > 설계 > 개발 > 테스트 > 운영 > 유지보수 > 폐기 특징 ▷ 효율적 자원 사용 → 전체 프로젝트 비용 산정과 개발 계획 수립 가능한 기본 골격 제시 → 개발 생명주기 각 단계에 관련된 활동들 정의 ▷ 산출물 표준화 → 용어, 산출물 등 일관성 있도록 산출물 표준화 → 참여자들 간 의사소통 기준과 용어 표준화 가능케 함 → 단계별 활동들 통해 다음 단계에 활용될 수 있는 산출물 작성됨 ▷ 프로젝트 관리 → 원활한 프로젝트 수행 위한 프로젝트 ..

Tistory

[정보처리기사] Part01-01-1. 현행 시스템 분석

* 현행 시스템 파악 단계 및 각 활동별 주요 특징 ▷ 구성/기능/인터페이스 파악 - 시스템 구성 현황 파악 - 시스템 기능 파악 - 시스템 인터페이스 현황 파악 ▷ 아키텍처 및 소프트웨어 구성 파악 - 아키텍처 파악 - 소프트웨어 구성 파악 ▷ 하드웨어 및 네트워크 구성 파악 - 시스템 하드웨어 현황 파악 - 네트워크 구성 파악 목표시스템 정의 절차 및 산출물 ▷ 1단계 : 현행 시스템 분석 1. 현행 시스템 구성/기능/인터페이스 현황 파악 단계 - 산출물 : 현행 시스템 분석서, 현행 시스템 기능 정의서, 현행 인터페이스 현황 정의서 2. 현행 시스템 아키텍처 및 소프트웨어 구성 현황 파악 단계 - 산출물 : 현행 시스템 아키텍처 구성도, 현행 소프트웨어 구성도 3. 현행 시스템 하드웨어 및 ..

Tistory

[정보처리기사] Part04-02-1. 기본 문법 활용

데이터 타입 응용 소프트웨어 개발에 사용되는 기본 문법 중 하나 개발 시 사용될 언어에 대한 선택과 해당 언어 데이터 타입 숙지하여 활용해야 함 1. 변수와 데이터 타입 확인 절차 ㄱ. 변수와 데이터 타입 의미 파악 유형 ▷ 블린 타입 → 조건이 참인지 거짓인지 판단 → bool ▷ 문자 타입 → 문자 하나를 저장 → char ▷ 문자열 타입 → 나열된 여러 개 문자 저장 → string ▷ 정수 타입 → 정수 값 저장 → int, long, unsigned int ▷ 부동소수점 타입 → 소수점 포함하는 실수 값 저장 → float, double 자료형별 형식 지정자 ▷ int a; → int로 선언된 변수는 %d로 출력 → %d ▷ long a; → long로 선언된 변수는 %ld로 출력..

Tistory

[Flutter] Row, Column

오랜만에 다시 flutter를 하게 됐다... 생각이 하나도 안나서 기초부터 다시 학습하려 한다 ㅜ https://flutter-ko.dev/docs/codelabs/layout-basics Basic Flutter layout concepts A codelab that teaches basic Flutter layout concepts through DartPad examples and exercises. flutter-ko.dev Row 예제를 실행해보자 import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root o..

Tistory

[Flutter] Flexible, Expanded

Flexible import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( home: Row( children: [ BlueBox(), Flexible( fit: FlexFit.loose, flex: 1, child: BlueBox(), ) ], ), ); } } class BlueBox extends StatelessWidget { @override Widget ..

Tistory

[Flutter] SizedBox, Spacer

SizedBox 자식의 크기를 지정할 수 있다 import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( home: Row( children: [ BlueBox(), SizedBox( width: 200, height: 150, child: BlueBox(), ), BlueBox() ], ), ); } } class BlueBox extends StatelessWi..

Tistory

[Flutter] Text, Icon, Image

Text import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( home: Row( children: [ Text( 'Hey!', style: TextStyle( fontSize: 100, fontFamily: 'Futura', color: Colors.blue, ), ), Text( 'Hey!', style: TextStyle( fontSize: 30, fon..

Tistory

[정보처리기사] Part04-01-1. 개발환경 구축

개발 환경 구축 애플리케이션 설계 기반으로 개발에 필요한 환경 구성하고, 프로그래밍 언어와 도구 활용하여 공통모듈, 업무, 프로그램과 배치 프로그램 구현하는 능력 개발 도구 분류 및 특성 ▷ 구현 도구 (Implementation Tool) : 코드의 작성과 디버깅, 수정 작업 가능하며 구현해야 할 SW가 어떤 프로그래밍 언어로 개발되는지에 따라 적합한 구현 도구 선택하여 사용 (Eclipse, Visual Studio Code, IntelliJ, NetBeans 등) ▷ 테스트 도구 (Test Tool) : 코드 기능 검증과 개발 품질 높이기 위해 사용하는 도구이며, 테스트 계획, 수행, 분석 등의 작업 가능 (xUnit, Spring Test 등) ▷ 형상관리 도구 (Configuration ..

Tistory

[정보처리기사] Part04-01-2. 공통 모듈 구현

재사용 기존 SW 또는 SW 지식 재활용하여, 새로운 SW 개발하는 활동 이해 → SW나 SW 지식은 재사용 가능한 자산 → 재사용 대상에는 설계, 요구명세, 검사, 아키텍처 등 포함 → 라이브러리는 SW 재사용 좋은 사례 → 프로그래머는 프로그램 일부 재사용하기 위해서 공통 라이브러리 생성 → SW 재사용하기 쉽게 하는 주요 특성 : 모듈화, 낮은 결합도, 높은 응집도, 캡슐화, 관심사 분리 등 코드 재사용 → 가장 일반적인 재사용 가능한 자산 중 하나는 프로그램 코드 → 특정 시점에 작성된 프로그램 일부 또는 전부를 다른 프로그램 만들 때 재활용하는 활동 → 장황한 코딩 작업에 소비하는 시간과 에너지 절약하는 전형적인 기법 재사용 프로그래밍 기법 ▷ 객체 지향 프로그래밍 → 객체 단위로..

Tistory

[정보처리기사] Part04-01-3. 서버 프로그램 구현

보안 취약점 취약점 (vulnerability) : 공격자가 시스템 정보에 대한 안정성 낮추는데 사용되는 보안 약점 시스템 자체 결함, 공격자 결함에 대한 접근 용이성, 공격자가 결함에 대하여 공격할 가능성 취약점 공격 위해, 공격자는 시스템 약점 이용하여 접속 가능한 적어도 하나 이상의 툴이나 기법 이용 취약점 식별과 제거 → 컴퓨터 시스템에서 취약점들을 발견 가능케 도와주는 많은 솔루션 존재 → 그러나 이러한 솔루션은 보안 담당자에게 현재 존재하는 취약점들에 대한 편의 제공할 수 있지만, 사람의 판단을 완전히 대체 불가 > 스캐너나 툴에만 의존하는 것은 현재 시스템에 존재하는 문제들에 대한 매우 제한된 관점과 오류 생성 가능 → 보안 취약점 이용한 공격 확률 줄일 수 있는 가장 좋은 방..

Tistory

[정보처리기사] Part04-01-4. 배치 프로그램 구현

배치 프로그램 사용자와의 상호작용 없이 일련 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄로 처리하는 프로그램 필수 요소 ▷ 대용량 데이터 → 대용량 데이터 처리 가능해야 함 ▷ 자동화 → 심각한 오류 상황 외에는 사용자 개입 없이 동작해야 함 ▷ 견고함 → 유효하지 않은 데이터나 로직 수행 경우에도 예외 처리해서 비정상적인 동작 중단 발생하지 않아야 함 ▷ 안정성 → 어떤 문제가 생겼는지, 언제 발생했는지 등 추적 가능해야 함 ▷ 성능 → 주어진 시간 내 처리 완료 가능해야 하고, 동시 동작하고 있는 다른 애플리케이션 방해하지 않아야 함 배치 스케줄러 일괄 처리 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구 종류 ㄱ. 스프링 배치(Spri..

Tistory

[ANDROID] onvif ptz (2)

생각보다 onvif 쪽 게시글에 방문하시는 분들이 많은 것 같아 여러가지 지식을 공유하려 한다. 물론 안드로이드 jni 기준이다! 나는 안드로이드에 onvif 라이브러리를 아래 github에 있는 코드를 포팅했다. 아래 코드는 c코드로 되어있다. https://github.com/As772309423/onvif-server-with-rtsp/tree/a1545162ff9e12efcf303cf403cdc4e4ab90ecc8 GitHub - As772309423/onvif-server-with-rtsp: The main function of this project is onvif server-side device discovery and docking The main function of this proje..

Tistory

mac android studio 삭제

터미널에서 아래와 같이 명령어 실행 rm -Rf /Applications/Android\ Studio.app android studio 관련 환경 변수가 있다면 아래와 같이 명령어 실행 rm -Rf ~/Library/Preferences/AndroidStudio* plist 파일 삭제 rm -Rf ~/Library/Preferences/com.google.android.studio.plist rm -Rf ~/Library/Preferences/com.android.Emulator.plist gradle 관련 파일 삭제 rm -Rf ~/.gradle

Tistory

[정보처리기사] 2022 정보처리기사 시험일정/응시자격

원서접수기간은 원서접수 첫날 10:00부터 마지막 날 18:00까지 임. 필기시험 합격예정자 및 최종합격자 발표시간은 해당 발표일 09:00임. 주말 및 공휴일, 공단창립기념일(3.18)에는 실기시험 원서 접수가 불가.

Tistory

[정보처리기사] 2022 정보처리기사 필기 목차 및 요약

1과목. 소프트웨어 설계 chapter 01. 요구사항 확인 1. 현행 시스템 분석 2. 요구사항 확인 3. 분석모델 확인 chapter 02. 화면 설계 1. UI 요구사항 확인 2. UI 설계 chapter 03. 애플리케이션 설계 1. 공통 모듈 설계 2. 객체지향 설계 chapter 04. 인터페이스 설계 1. 인터페이스 요구사항 확인 2. 인터페이스 대상 식별 3. 인터페이스 상세 설계 2과목. 소프트웨어 개발 chapter 01. 데이터 입출력 구현 1. 논리 데이터 저장소 확인 2. 물리 데이터 저장소 설계 3. 데이터 조작 프로시저 작성 4. 데이터 조작 프로시저 최적화 chapter 02. 통합 구현 1. 모듈 구현 2. 통합구현 관리 chapter 03. 제..

Tistory

[ANDROID] onvif ptz

처음에 onvif 라는 것을 접하게 되었을 때, onvif가 뭐지... ptz 기능을 컨트롤 할 수 있다는데 ptz는 또 뭐지.. 싶었다. 아무래도.. 카메라 쪽을 이렇게 심화적으로 다루는게 익숙치 않다 보니 처음 접하는 것도 너무 많았다 ㅜ 우선 간단하게 의미를 짚어보고 가겠다. ONVIF란 ? 1. (Open Network Video Interface Forum) 오픈 네트워크 비디오 인터페이스 포럼의 약자로 보안목적의 물리적인 IP기반 제품에 사용되는 프로토콜 2. 영상, 음성, 이벤트 송수신 : RTP/RTSP // 제어, 설정, 조회 : WSDL, SOAP 3. HTTP기반 프로토콜 PTZ란 ? - 회전 (PAN), 수직 방향 기울기 (Tilt), 줌 (Zoom) 만약 ptz 기능을 가진 ip카..

Tistory

[ANDROID] Mediacodec을 사용한 높은 비트레이트 낮추기

후 완전 삽펐다. 업무시간 7시간을 날렸다.. onPreviewFrame에서 넘어온 데이터를 미디어 코덱에 넣고 인코딩 돼서 나온 데이터 크기가 20만이 넘었다. 즉, bufferinfo size가 20만이 넘은 것이다. 물론 중간에 한 번씩 20만 넘는 사이즈로 튀는건 괜찮은데 계속 20만 이었다가 중간에 한 번씩 80만으로 튀는 현상이 발생했다...... mMediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 2000000); 위 코드에서 비트레이트 값을 아무리 바꿔봐도 1도 적용이 안돼보였다... 위 그림에서 sum * 8 값이 계산된 비트레이트 값인데 약 60메가가 나온다. 해결 방법은 간단하다. mMediaFormat.setInteger(MediaFormat.K..

Tistory

[ANDROID] JNI (c++) 에서 JAVA 함수 콜하기

자바에서 이벤트 처리를 할 때 jni쪽으로 전달할 순 있지만, 역으로 jni 쪽에서 이벤트 처리를 할 때 java 쪽으로 이벤트를 주고 싶었다. 근데 이미 짜여져 있는 코드에서 추가 수정 작업을 하려니 JNIEnv *env 위 env 변수가 발목을 잡았다. 따로 전역변수 선언해서 저장해 놓고 쓸 수가 없었다................ 그래서 삽푸다가 겨우 해결한 방안은 다음이다. static JavaVM *rjvm = NULL; static jobject robject = NULL; extern "C" JNIEXPORT void JNICALL Java_com_cy_test_MainActivity_onvifStartServer( JNIEnv *env, jobject thiz) { main_onvif_se..

Tistory

[ANDROID] JNI Error:(150) undefined reference to '함수이름'

JNI 빌드 시 Error:(150) undefined reference to '함수이름' 라고 에러가 뜨면서 빌드가 실패하는 경우가 종종 있다. 왜 그런지 열심히 구글링 한 결과............... 나는 ~.c 파일의 함수들이 선언된 헤더를 ~.cpp 파일에서 그냥 #include로만 사용했기 때문이다. 이를 해결하기 위해선.. #ifdef __cplusplus extern “C” { #endif #include “cy.h” #ifdef __cplusplus } #endif 위와 같이 c 헤더 파일을 사용한다는 의미의 조건문을 써주면 빌드 완료!!!

Tistory

[FFMPEG] 오디오 덤프 뜨는 법

ffmpeg -i rtsp://ip:port -acodec copy C:\path\test.opus 위 처럼 하면 지정한 경로에 덤프 떠진 오디오 파일이 생성된다.!

Tistory

[SWIFT] AVPlayer Background 재생

핸드폰이 슬립모드 가거나, 전원을 끄거나, 앱을 잠시 숨겨놓거나 등... 앱이 background로 이동하면 모든 활동이 멈춘다. 이때, 오디오 재생을 background에서도 재생하고 싶다면?! 한 줄만 코딩하면 된다. 백그라운드 재생 설정 do { try AVAudioSession.sharedInstance().setCategory(.playback) } catch { }

Tistory

[ANDROID] Failed to apply plugin [id 'com.github.dcendents.android-maven']

git에 있는 오픈 소스를 가져와 빌드를 하려 하니 아래와 같은 에러가 나며 빌드가 실패했다. > Failed to apply plugin [id 'com.github.dcendents.android-maven'] > Could not create plugin of type 'AndroidMavenPlugin'. > Unable to determine constructor argument #1: missing parameter of type Factory, or no service of type Factory. 해결 방법 해당 프로젝트 build.gradle에는 다음과 같이 되어있었다. buildscript { repositories { jcenter() google() } dependencies { c..

Tistory

[ANDROID] Library AAR 파일 생성

aar 만드는 방법은 생각보다 간단했다.! 1. MainActivity 삭제 지워도 상관 없을 것 같으나 나는 그냥 지워줬다 여기서 AndroidManifest.xml도 수정해줘야 한다. 2. Plugins ID 수정 //기존 코드 plugins { id 'com.android.application' } //아래와 같이 수정 plugins { id 'com.android.library' } 3. defaultConfig applicationId 제거 defaultConfig { // applicationId "com.test.testaar" minSdkVersion 16 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunn..

Tistory

[FFMPEG/VLC] TCP 스트리밍 방법 (Live555 기준)

(1) FFMPEG TCP 스트리밍 방법 ffplay -rtsp_transport tcp -i rtsp://xxx.xxx.xxx.xxx:xxxx/ (2) VLC TCP 스트리밍 방법 1. 도구 > 환경설정 2. 상단 입력/코덱 창에서 하단 우측 "RTSP (TCP) 위에서 RTP 사용 선택 후 저장

Tistory

[ANDROID] ONVIF 라이브러리

https://github.com/RootSoft/ONVIF-Java GitHub - RootSoft/ONVIF-Java: A Java client library to discover, control and manage ONVIF-supported devices. A Java client library to discover, control and manage ONVIF-supported devices. - GitHub - RootSoft/ONVIF-Java: A Java client library to discover, control and manage ONVIF-supported devices. github.com https://github.com/extinguish/onvif-camera GitHub..

Tistory

[SWIFT] iphone 슬립 모드(화면 자동 잠금) 방지

화면 자동 잠금을 설정해 놓은 경우.. 앱에서 소켓 통신 시 소켓이 끊겨버린다. 이 때문에 슬립 모드 방지하는 방법을 찾아냈다. UIApplication.shared.isIdleTimerDisabled = true 짜잔. 위의 한 줄이면 화면 자동 잠금을 설정해놔도 앱이 실행되고 있는 동안에는 화면이 꺼지지 않는다.!!!!! 위의 코드는 SceneDelegate.swift 파일에 scene 함수 안에다 작성해두면 된다. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let _ = (scene as? UIWindowScen..

Tistory

[SWIFT] Web Socket (Stomp)

오늘은 웹소켓, 그중에서도 stomp를 다뤄보려고 한다. 이유는.. stomp client 쪽을 개발하면서 진짜 삽질도 많이 하고 게다가 swift stomp web socket에 대한 정보가 많이 없기 때문이었다.. 그래서 내가 경험하고 부족한 부분들은 어떻게 처리했는지 포스팅 해보려고 한다. 사용 라이브러리 : StompClientLib Podfile ... target 'Project_Name' do pod 'StompClientLib' ... 다음과 같이 작성하고 pod install ! 기본 예제 import StompClientLib class StompManager { static let shared:StompManager = StompManager() private let url = URL..

Tistory

[SWIFT] 오늘 날짜 & 시간, string to date, date to string

이번 포스팅에서는 date 관련해서 다뤄보려고 한다. 현재 날짜 & 시간 구하기 func getNowTime() -> String { let now = Date() let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" dateFormatter.timeZone = NSTimeZone(name: "ko_KR") as TimeZone? return dateFormatter.string(from: now) } String to Date func getStringToDate(strDate:String, format:String) -> Date { let dateFormatter = DateFormatte..

Tistory

[SWIFT] 퍼센트 인코딩을 character로 변환

후.. 개삽질했다. url을 player로 재생하려고 했는데 자꾸 재생이 안돼서.... 2시간 버린 것 같다 ㅜ 알고보니 url이 퍼센트 인코딩이 되어있어 ios, mac에서는 재생이 안됐다. 예) let stringUrl = "http://www.test.com/mp3file/test%28testfile%29.mp3" 퍼센트 인코딩 character if let url = stringUrl.removingPercentEncoding { print("url : \(url)") } 다음과 같이 하면 퍼센트 인코딩을 없앨 수 있다 ㅜㅜㅜㅜㅜ

Tistory

[SWIFT] Wifi 연결하기

코드 상에서 wifi를 연결할 수 있다. 하지만... 신호가 안 좋은 와이파이일 경우 "연결할 수 없습니다"라는 팝업이 종종 뜨긴 한다 라이브러리 import NetworkExtension Wifi 연결하기 func connectToWifi(wifiName: String, wifiPassword: String, wep: Bool, completion: @escaping ((_ error: Bool) -> Void) ) { let hotspotConfig = NEHotspotConfiguration(ssid: wifiName, passphrase: wifiPassword, isWEP: wep) hotspotConfig.joinOnce = true NEHotspotConfigurationManager.sha..

Tistory

[SWIFT] error: projectName/Pods/Pods...ProjectName.debug.xcconfig unable to open file

error: projectName/Pods/Pods...ProjectName.debug.xcconfig unable to open file Pod 관련된 파일들을 모조리 삭제해주자. Podfile Podfile.lock Pods ProjectName.xcworkspace 관련 파일들을 삭제했다면 다시 pod을 생성! $ pod init $ pod install $ open ProjectName.xcworkspace 정상적으로 실행 완료!

Tistory

[SWIFT] IBDesignable 에러 대응 방법

medium.com/@esung/ibdesignable-%EC%97%90%EB%9F%AC%EC%97%90-%EB%8C%80%EC%9D%91%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-254001a648f6 IBDesignable 에러에 대응하는 방법 Originally published at www.notion.so. medium.com

Tistory

[SWIFT] URL to UIImage

요즘 블로그 포스팅이 뜸했다.... 3개월 간 맨 땅에 헤딩하면서 iOS 앱 개발을 하느라 정신이 없었다... 이제 여유가 좀 생겼으니 여태 개발하면서 도움이 된 정보들을 포스팅 하려고 한다. URL을 UIImage로 변환하기 func urlToImage(strUrl:String) -> UIImage? { if strUrl.isEmpty || strUrl.count == 0 { return nil } do { let url = URL(string: strUrl) if url != nil { let data = try Data(contentsOf: url!) return UIImage(data: data) } } catch (let error) { print("\(error)") } return nil }..

Tistory

[SWIFT] 최상위 뷰 구하기

우선, 최상위 뷰를 구하기 전에 필요한 코드가 있다. UIApplication.shared.keyWindow? ~~ 하지만 위의 코드를 사용해도 빌드에는 문제가 없지만, iOS 13부터는 deprecated 되었다고 경고문이 뜬다. 그래서 대체할 코드를 전역 변수로 선언해 놓자! let keyWindow = UIApplication.shared.connectedScenes .filter({$0.activationState == .foregroundActive}) .map({$0 as? UIWindowScene}) .compactMap({$0}) .first?.windows .filter({$0.isKeyWindow}).first 최상위 뷰 구하기 extension UIWindow { public var ..

Tistory

[SWIFT] Root View 변경하기

앱을 개발하다 보면 뷰가 계속 쌓여서 신경쓰일 때가 있다. 이럴 때, root view를 변경하고 나머지 뷰를 없애고 싶어진다. Root View 변경하기 extension UIWindow { func replaceRootViewController(_ replacementController: UIViewController, animated: Bool, completion: (() -> Void)?) { let snapshotImageView = UIImageView(image: self.snapshot()) self.addSubview(snapshotImageView) let dismissCompletion = { () -> Void in // dismiss all modal view controller..

Tistory

[SWIFT] Podfile 작성

1. 프로젝트 폴더로 이동 2. Podfile 생성 3. Podfile 열기 4. 외부 라이브러리 import 5. pod install 6. 생성된 프로젝트명.xcworkspace 를 open

Tistory

[SWIFT] BMPlayer

1. Podfile 작성 ※ swift 버전 별 BMPlayer 버전 참고 2. BMPlayerCustomControlView.swift import UIKit import BMPlayer class BMPlayerCustomControlView: BMPlayerControlView { var playbackRateButton = UIButton(type: .custom) var playRate: Float = 1.0 var rotateButton = UIButton(type: .custom) var rotateCount: CGFloat = 0 /** Override if need to customize UI components */ override func customizeUIComponents() {..

Tistory

[SWIFT] WIFI Info

1. Info.plist 작성 (위치 접근 권한) 2. SSID class public class SSID { class func fetchNetworkInfo() -> [NetworkInfo]? { if let interfaces: NSArray = CNCopySupportedInterfaces() { var networkInfos = [NetworkInfo]() for interface in interfaces { let interfaceName = interface as! String var networkInfo = NetworkInfo(interface: interfaceName, success: false, ssid: nil, bssid: nil) if let dict = CNCopyCurren..

Tistory

[SWIFT] TextField Height

textfield height 조절 방법@!!! 다음과 같이 textfield height 변경하는 란이 비활성화 되어있는 것을 볼 수 있다... 이런경우에, textfield style을 변경해주면 된다!!! textfield 클릭 오른쪽 상단 5번째 아이콘 Border Style 에서 4번째 round style을 제외한 나머지 style로 변경! 다음과 같이 height 변경하는 란이 활성화 된 것을 볼 수 있음! 야호

Tistory

[SWIFT] Camera & Gallery Image Pick

1. 버튼 추가하기 class ViewController3 : UIViewController { @IBOutlet weak var cameraBtn: UIButton! override func viewDidLoad() { super.viewDidLoad() cameraBtn.setImage(UIImage(named: "cameraicon.png"), for: .normal) } } 2. 버튼 이벤트 추가하기 @IBAction func imgPickerBtn(_ sender: UIButton) { let alert = UIAlertController(title: "Select one.", message: nil, preferredStyle: .actionSheet) let library = UIAlertA..

Tistory

[SWIFT] DatePicker 생년월일 Wheel Style

1. DatePicker 추가 - DatePicker 클릭 후 오른쪽 상단에 7개 아이콘 중 5번째 아이콘 클릭 Preferred Style : Wheels 선택 Mode : Date 선택 2. 이벤트 처리 import Foundation import UIKit class ViewController4 : UIViewController { @IBOutlet weak var ltextDate: UILabel! override func viewDidLoad() { ltextDate.text = "" } @IBAction func datePick(_ sender: UIDatePicker) { let dateformatter = DateFormatter() dateformatter.dateFormat = ..

Tistory

[SWIFT] Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?

프로젝트를 실행시키는데 다음과 같은 에러가 났다. Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set? main으로 설정된 뷰 컨트롤러가 없다는 뜻이었다. Main.storyboard에서 view controller를 클릭해주면 오른쪽 상단 7개 아이콘 중 5번째 아이콘 클릭! 그럼 View Controller > Title 적는 곳 밑에 Is Initial View Controller 체크하는 곳이 있을 것이다. 체크하면 메인 뷰 컨트롤러로 설정됨!!

Tistory

[SWIFT] CoreBluetooth 예제

import UIKit import CoreBluetooth class ViewController: UIViewController { @IBOutlet weak var tblOfList: UITableView! @IBOutlet weak var btnOfScan: UIButton! @IBOutlet weak var lblOfDeviceName: UILabel! var peripherals:[CBPeripheral] = [] var centralManager: CBCentralManager! override func viewDidLoad() { super.viewDidLoad() self.tblOfList.tableFooterView = UIView() centralManager = CBCentralMan..

Tistory

[SWIFT] View Controller 수명주기

View Controller 수명주기 viewDidLoad() view controller content view (뷰 계층 구조의 맨 위) 생성되고 story board에서 load될 때 호출됨. view controller 출력은 method가 호출될 때까지 유효한 값을 갖도록 보장 content view가 처음 생성될 때 한 번만 호출 (초기화 코드 있을 경우 작성) controller가 처음 instance화 될 때 content view가 반드시 생성되는 것은 아님 system이나 code가 controller view 속성에 처음 access할 때 느리게 생성됨. viewWillAppear() controller content view가 앱의 view 계층 구조에 추가되기 직전에 호출됨 con..

Tistory

[SWIFT] Autoresizing

우선 Widget을 하나 드래그! 난 Image View로 선택 이제 제일 아래쪽에 보면 View as: iPhone 11이라고 선택된 Device를 볼 수 있음! 클릭! 그럼 다음 그림과 같이 선택 가능한 Device가 쫘르륵 보일 것임 나는 iPad(8th generation) 선택! 그럼 다음과 같이 비율이 조정 안되는 모습 확인 가능 다시 iPhone 11로 돌아와서,, Image View 클릭 후 오른쪽 상단 7개 아이콘 중 6번째 아이콘 클릭! 그럼 다음과 같이 Autoresizing이 보임! 저 과녁처럼 생긴 그림에서 빨간 선들을 클릭해서 보면 어떻게 Resizing되는지 확인 가능! 그럼 다음과 같이 비율이 맞춰지는 것을 볼 수 있음 ㅎㅎㅎ

Tistory

[SWIFT] EXTENSION

EXTENSION - 존재하는 클래스, 구조체, 열거형, 프로토콜 타입에 새롭게 기능적인 부분 추가할 수 있는 문법 - 이전의 내부 소스를 접근할 수 없는 원본 타입들에 대해 새로운 기능 부여 가능 EXTENSION 기능 - 계산 property, 계산 타입 property 추가 기능 - instance method, type method 정의 - 새로운 initializer 제공 - subscripts(첨자) 접근방식 정의 - nested type(중첩 타입) 정의 및 사용 - 특정 프로토콜을 준수하는 현존 타입 정의 - 전역 함수가 아닌 프로토콜 자체에서 동작 정의 가능 EXTENSION 예 extension RandomNumberGenerator { func randomBool() -> Bool {..

Tistory

[SWIFT] Tap Gesture - Keyboard Hide

textfield를 구현하고 키보드로 입력 후 return을 누르던, 키보드 밖을 누르던 없어지지를 않았다... Tap Gesture로 Keyboard Hide extension ViewController { func initializeHideKeyboard() { let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) view.addGestureRecognizer(tap) } @objc func dismissKeyboard() { view.endEditing(true) }; } - extension 옆에는 확장하려는 class명을 써주면 됨. (꼭 extension에 구..

Tistory

맥북으로 아이패드 혹은 아이폰 UUID 확인하기

생각보다 간단하다! 1. 맥북에 아이패드 혹은 아이폰 연결 2. finder 열기 왼쪽 리스트에서 위치-iPhone 클릭 3. 상단에 iPhone 이름 밑에 정보 클릭 - iPhone XR 120.48GB 96% ~~ 다음과 같이 써있는 라인 클릭 4. 클릭한 라인에 일련번호 및 UUID 정보 나옴! 확인!

1 2 3