본문 바로가기
반응형

분류 전체보기128

[Linux] LINUX 디렉터리 종류와 특징 LINUX 디렉터리 종류와 특징 디렉터리란 파일 저장소를 의미하며, 리눅스 디렉터리는 최상위 디렉터리(/)를 기준으로 하위 디렉터리들이 존재하는 계층적 트리 구조로 구성되어 있다. 디렉터리별 내용 / : 루트 디렉터리 파일 시스템이 있는 최상위 디렉터리로 루트 디렉터리라고도 함 모든 디렉터리의 출발점인 동시에 다름 시스템과의 연결점이 되는 디렉터리 /boot : 정적 부트 파일 부트 디렉터리로 부팅 시 커널 이미지와 부팅 파일 저장 /proc : 커널 및 프로세스 파일(process) 시스템 정보 디렉터리이며 커널 기능을 제어하는 역할 현재 실행되는 프로세스와 실제 사용되는 장치, 하드웨어 정보 저장 가상 파일 시스템 시스템에서 운영되고 있는 다양한 프로세스들에 관한 내용과 프로그램에 대한 정보를 포함 .. 2021. 11. 20.
[Linux] 리눅스, 유닉스, GNU, 리눅스배포판이란? 리눅스란? 유닉스란? 유닉스 계열이란? GNU란? 리눅스 배포판이란? 정리 리눅스이란? 리눅스는 운영체제 커널인 리눅스 커널에 기반을 둔 오픈소스 유닉스 계열 운영체제이다. 리눅스는 일반적으로 리눅스 배포판 안에 패키지 처리된다. 소스코드 운영체제이다. 소스코드 및 모든 관련 자료가 공개되어 있는 운영체제이다. 멀티유저(다중 사용자), 멀티태스킹(다중 작업) 운영체제이다. 멀티유저 기능은 여러 사용자가 동시에 동일한 시스템에 접근이 가능한 것을 의미한다. 멀티태스킹은 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능이다. 가상 터미널 환경으로 하나의 모니터에 여러 개의 가상 화면(가상 콘솔)을 두어 화면마다 다른 작업을 실행할 수 있다. 다중 스레드를 지원하는 네트워크 운.. 2021. 11. 20.
[Swift] SwiftUI Infinite ScrollView 무한스크롤뷰 데이터 추가로드 trainingApp.swift import SwiftUI @main struct trainingApp: App { var body: some Scene { WindowGroup { ContentView() } } } ContentView.swift import SwiftUI struct ContentView: View { @State var current: Int = 0 @State var maxCnt: Int = 0 @State var itemList: [ItemModel] = [] @State var hasMorePages:Bool = true var body: some View { GeometryReader { geometry in let columns: [GridItem] = [GridItem(.. 2021. 11. 1.
[Swift] SwiftUI TabView(bottom navigation bar) + SideMenubar 예제 trainingApp.swift import SwiftUI @main struct trainingApp: App { var body: some Scene { WindowGroup { ContentView() } } } ContentView.swift import SwiftUI struct ContentView: View { @State var showMenu = false var body: some View { ZStack{ GeometryReader { geometry in let width = geometry.size.width let height = geometry.size.height if self.showMenu { MenuView() .frame(width: width / 1.5) .trans.. 2021. 11. 1.
[Swift] SwiftUI KeyChain Service 예제 KeyChain Services 키체인 서비스란? 사용자를 대신하여 소량의 데이터를 안전하게 저장할 수 있습니다. 대부분의 사람들은 수많은 온라인 계정을 관리하고, 일반적으로 여러 계정에 걸쳐 간단한 암호를 재활용하기에 안전하지 않습니다. 이에 대응하여 키체인 서비스 API는 앱에 키체인이라는 암호화된 데이터베이스에 사용자 데이터의 작은 비트를 저장하는 메커니즘을 제공하여 이 문제를 해결하는데 도움이 됩니다. 비밀번호가 안전하게 기억되면 사용자가 복잡한 비밀번호를 자유롭게 선택할 수 있습니다. 비밀번호에 국한되지 않고 인증서, 키 및 신뢰 서비스로 관리하는 암호화 키 및 인증서도 보관이 가능하며 이것들를 통해 사용자는 보안 통신에 참여하고 다른 사용자 및 장치와 신뢰를 구축할 수 있습니다. API Com.. 2021. 10. 30.
[Swift] SwiftUI WebView, WebView + javascript message handler 예제 앱의 종류에 따라서 필요시 웹 뷰를 구현하는 앱들이 있다. 단순히 보여주는 용도도 가능하나 하이브리드 앱은 웹과 앱이 서로 상호작용하도록 구현을 많이하는데 일반 사용자는 웹화면을 보고있는지 모르는 것처럼 느낄 수 있다. 단순히 보여주기만 할 수도 있지만 서로 상호작용 할 수도 할 수 있다. 1. WebView WebView.swift import SwiftUI import WebKit struct WebView: UIViewRepresentable { var url: String func makeUIView(context: Context) -> WKWebView { guard let url = URL(string: self.url) else { return WKWebView() } let webView .. 2021. 9. 28.
[Swift] SwiftUI SHA256을 이용한 간단한 로그인 구현 예제 SHA256을 사용하여 password라는 문자열의 해쉬값을 만든다. 회원가입 절차는 없음으로 id는 "kim" 고정이고 password는 "password" 으로 고정 ContentView.swift import SwiftUI import CryptoKit struct FieldStyle: ViewModifier { let lightGreyColor = Color(red: 240.0/255.0, green: 240.0/255.0, blue: 240.0/255.0, opacity: 1.0) func body(content: Content) -> some View { return content .padding() .background(lightGreyColor) .cornerRadius(5.0) .padd.. 2021. 9. 28.
[Swift] SwiftUI/StoryBoard LaunchScreen + Sleep 예제 런치 화면 / 스플래시 화면은 사용자가 제일 처음 마주하는 화면이다. 사용자가 메인화면을 보기전에 하얀 빈 화면을 마주하게된다면 현재 사용하는 앱이 반응성이 좋지않다는 인식을 해줄 수 있다. 이러한 이유 때문에 런치 화면을 만들어서 앱이 실행되자 마자 마주할 수 있는 화면을 만들어야한다. 런치 화면에서는 보통 클라이언트에서 초기에 처리해야될 작업이 있거나, 서버로부터 데이터를 불러오는 작업, 불러오고 처리하는 과정들이 있을 수 있는데 이러한 작업을 하는 동안에 유저의 데이터가 없는 상태에서 메인화면으로 넘어가지 않도록 할 수 있다. 고정화면만 보여줄 수 있는데, 상태를 변환하여 표시해주는 방법은 찾지 못하였다. 없다는 얘기도 있는것 같은데 확실치는 않다. LaunchScreen과 Splash 두 가지가 .. 2021. 9. 27.
[기초] Git이란? Git이란? Git은 컴퓨터 파일의 변경사항을 추적하고 여려 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템입니다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있습니다. 기하학적 불변 이론을 바탕으로 설계됐고, 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있는 것이 특징이며 데이터 무결성, 분산, 비선형 워크플로를 지원합니다. Git은 현재 가장 널리 쓰이는 분산형 버전 컨트롤 프로그램(Distributed Version Control System, DVCS)중 하나이다. 저장소에서 프로젝트를 꺼내오면 내 컴퓨터에 저장소가 만들어지고 모든 변경 이력이 저장된다. 그리고 여러 곳의 원.. 2021. 1. 21.
[SpringBoot] AOP 트랜잭션 처리, 롤백, AspectJ 트랜잭션처리transactionAdvice, transactionAdviceAdvisor example TransactionConfig.java package com.example.base.config; import java.util.Collections; import java.util.HashMap; import org.aspectj.lang.annotation.Aspect; import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.beans.factory.annotation.Autowired; import org... 2021. 1. 19.
[Java] java Enum 적용하기, java Enum 왜 써야할까? Enum의 기본적인 장점들 문자 열과 비교해 IDE의 적극적인 지원을 받을 수 있습니다. 자동완성, 오타검증, 텍스트 리팩토링 등등 허용 가능한 값들을 제한 할 수 있습니다. 리펙토링 시 변경 범위가 최소화 됩니다. 내용의 추가가 필요하더라도, Enum 코드 외에 수정할 필요가 없습니다. Enum을 사용하는 이유는 지저분한 코드들을 모두 지우고(예를들면 if(any || any || ... ) 등등의 긴 문장) 한 곳에서(Enum) 모든 정리를 끝내고 값을 내주는것, 확실하게 명시된것만 사용할 수 있도록 하는것이 유용한것같습니다. 값이 변하는것들을 사용 할 용도는 절대 아닌것으로 보이고 setter는 사용하지않고 getter만 사용하는것이 바람직해보입니다. Enum을 사용해보도록 하겠습니다. 생성시에는 .. 2021. 1. 15.
[SpringBoot] AOP AspectJ @Aspect 적용하기 @Pointcut, @Around, @Before, @AfterReturning, @After, @AfterThrowing, example code AOP 주요 개념 AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점지향은 쉽게말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들을 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드 상에서 다른 부분에 계속 반복해서 쓰는 코.. 2021. 1. 14.
[SpringBoot] Filter(필터) OncePerRequestFilter간단히 사용하기 Filter란 서블릿의 ServletContext 기능으로 사용자에 의해 서블릿이 호출 되기 전/후로 사용자 요청/응답의 헤더 정보 등을 검사 및 설정할 수 있다. Servlet Filter와 HandlerInterceptor의 차이 Filter와 Interceptor 비교 필터는 DispatcherServlet 앞에서 먼저 동작하고, 인터셉터는 DispatcherServlet에서 Controller(Handler) 사이에서 동작한다. 필터 웹 어플리케이션의 Context의 기능 스프링 기능을 활용하기에 어려움 일반적으로 인코딩, CORS, XSS, LOG, 인증, 권한 등 을 구현 인터셉터 스프링의 Spring Context의 기능이며 일종의 빈 스프링 컨테이너이기에 다른 빈을 주입하여 활용성이 좋음 .. 2021. 1. 13.
[SpringBoot] Interceptor(인터셉터) HandlerInterceptor로 간단히 intercept하기 HandlerInterceptor : 세션이나 쿠키, 검증 등을 위하여 사용한다. 일반적인 요청흐름이 흐르기전에 controller 전에 가로채서 처리한다. Servlet Filter와 HandlerInterceptor의 차이 Filter와 Interceptor 비교 필터는 DispatcherServlet 앞에서 먼저 동작하고, 인터셉터는 DispatcherServlet에서 Controller(Handler) 사이에서 동작한다. 필터 웹 어플리케이션의 Context의 기능 스프링 기능을 활용하기에 어려움 일반적으로 인코딩, CORS, XSS, LOG, 인증, 권한 등 을 구현 인터셉터 스프링의 Spring Context의 기능이며 일종의 빈 스프링 컨테이너이기에 다른 빈을 주입하여 활용성이 좋음 다른 빈.. 2021. 1. 13.
[Flutter] 간단한 앱 만들기 (provider pattern, translator(google 번역), ChuckNorris(19joke json api), jsontoclass) ChuckNorris 라는 19세 농담을 던져주는 json api가 있습니다. 그 rest api를 사용해서 화면에 뿌려지는 간단한 어플을 만들어보도록 하겠습니다. 우선 JSON To Dart Class (JsonToDartClass)를 설치하여줍니다. 이런게 플러그인으로 있는지 몰랐는데.. 매우 좋습니다!!! 짱짱 json 형식을 dart class 로 바꾸어집니다. 원하는대로 바꾸어지지 않을 수 있지만 몇개만 추가하면되서 무조건 이 방식이 좋습니다. 먼저 provider, http, translator 이렇게 3가지를 추가해줍니다. provider 패턴을 이용할것이고 http로 json response를 받을것이고 translator로 영어로된것을 한글로 번역할것입니다. 파일트리입니다. 저는 연습장 .. 2021. 1. 8.
flutter 프로그레스바 progress bar circle progress bar example flutter 기본 ProgressBar는 구글링하면 쉽게 찾을 수 있다. 위 두개의 경우 매우 간단한데 사용할땐 Stack에 넣어서 맨 상단에 쌓아주면 된다. 그리고 라이브러리를 가져와서 사용하는 것들이 있다. flutter_spinkit 을 사용해보도록 하자. 매우 쉽고 빠르게 적용 가능하다. 단순 프로그레스 애니메이션인데 LIKES가 이렇게 높을 줄은 몰랐다. 먼저 pubspec.yaml에 추가해주자. dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertin.. 2021. 1. 8.
flutter secure storage, 자동로그인, android KeyStore example flutter secure storage를 사용한 자동로그인을 해보도록 하겠다. 계정은 하나만 사용하지않고 여러계정을 사용하도록 하겠다. 디버깅을 많이 해보지 않았다. 대충 이런 식이다 라고만, 이렇게 사용하는 식이라는것만 대충 보고 넘어가면 될꺼같다. flutter secure storage flutter에서 각 플랫폼(android, ios)의 내부저장소(keychain or keystore)를 사용할 수 있게 해주는 라이브러리다! iOS에서는 사용해보지 않았지만 Keychain이라는 것을 사용하고 있는것 같다. android keystore는 사용해본적이 있다. 안드로이드는 루팅하기 쉬운 운영체제여서 Shared Preference 같은 쉽게 사용할 수 있는 내부 저장소들은 간단한 루팅과정만 거쳐도.. 2021. 1. 7.
[Flutter] provider + [Change Notifier] 를 사용한 Provider Pattern example 이때까지 다양한 BLOC 패턴으로 코드를 작성해보았다. 하지만 BLOC의 로직 분할을 위한 다수의 클래스 생성으로 인해 복잡성 문제가 있기 때문에 2019년 Google에서 적극 추천한 Provider Pattern을 사용해보도록 하겠다. 구글에서 만든것은 아니고 커뮤니티에서 올라온것이라는데 구글에서 적극 추천을 한 것이라고 한다. 또한 BLOC가 다수의 클래스로 복잡하기 때문에 아에 쓰지 않는것은 아니다. 어느정도 규모가 있는 프로젝트는 BLOC패턴을 사용하여 정확한 로직분리를 하는것이 분명히 더 좋을것으로 보인다. 소규모에 Provider, 중규모에 Provider, Bloc, 대규모에 Bloc 가 맞지 않을까 싶다. 트리이다. main.dart import 'package:flutter/founda.. 2021. 1. 6.
[Flutter] 기초가 되는 StreamBuilder BLOC 패턴, StreamSubscription, yield example 저번에는 Cubit를 사용하여 BLOC 패턴을 제작해보았다. 훤하게 눈에 잘 보이는 Cubit로 필요 동작만 깔끔하게 옵저빙 했지만 역시나 BLOC는 복잡하다. 이번에 작성하는 StreamBuilder를 사용한 BLOC 패턴 또한 복잡하다. 결국 하나의 기능을 만들려면 클래스를 최소 3, 4개를 만들어야하니 문제이다. 파일트리이다. 로직을 나누고, 이벤트와 상태를 관리한다. main.dart import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc_with_stream/ticke.. 2021. 1. 6.
[Flutter] Cubit를 사용한 BLOC 패턴, Bloc.observer example CUBIT를 사용한 BLOC 패턴 Bloc.observer를 BlocObserver를 상속한 class로 초기화해서 onChange를 override해서 상태가 변할때마다 print 할것이고 navigation push 도 해볼 것 입니다. pubspec.yaml dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.0 bloc: ^6.1.0 //추가 flutter_bloc: ^6.1.0 //추가 counter_observer.dart .. 2021. 1. 4.
[Flutter] fluro package (navigation 이동, route, transition) sample code fluro 를 사용하여 route를 관리할 수 있다. arguments 정하는것도 가능하고 transitionType을 통해 원하는 애니메이션을 보이게, 안보이게 할 수도 있다. pub.dev/packages/fluro fluro | Flutter Package Fluro is a Flutter routing library that adds flexible routing options like wildcards, named parameters and clear route definitions. pub.dev code sample 이다. import 'package:flutter/material.dart'; import 'package:fluro/fluro.dart'; Handler _TestNativeH.. 2020. 12. 22.
반응형