일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 알고리즘공부
- 자바공부
- 코테준비
- 스프링 공부
- Axon framework
- 자료구조공부
- JPA스터디
- nestjs스터디
- 스프링부트
- querydsl
- 카프카
- 스프링공부
- nestjs공부
- 코테공부
- 기술공부
- nestjs
- 플러터 개발
- 스프링부트공부
- Kafka
- JPA예제
- DDD
- 스프링
- JPA
- JPA 공부
- 플러터 공부
- Flutter
- K8S
- JPA공부
- 기술면접공부
- 프로그래머스
- Today
- Total
목록분류 전체보기 (715)
DevBoi
우선 그럴싸한 페이지가 필요하다. 내가 직접 레이아웃을 짜는건 시간 대비 진행이 느리다. 1. figma에서 레이아웃을 만들어보자 사실 샘플이라, 이렇게 간략하게 만들수 있다. 로그인 버튼을 누르면 다음 레이아웃으로 이동하고, 해당 이동된 레이아웃에서는 Button이 있어, 이를 클릭하면 다른 팝업이나 신규 경로로 이동하고, 아래 버튼을 누르면 돌아간다. 2번째 레이아웃 상단에는 이미지를 넣어서 체크를 할 예정이다(리사이징 같은 ) 뭐 무튼 이렇게 레이아웃 잡은 걸 기준으로 Next! 2.Funtion12 피그마의 레이아웃을 플러터 소스로 간편하게 구현해주는것이다. 실제로 이렇게 하면, 레이아웃을 잡는데 들이는 소스를 확 줄여준다. 내가 디자이너나 기획자 퍼블리셔를 할거면 이걸 직접 소스를 짜면 좋겠지만..
제네릭에 대해서 좀 더 심화된 부분을 공부해보자 ObjectMapper에 대해서 공부를 하다가. 생긴 궁금증은 꼬리의 꼬리를 물었고, 내가 모르는 부분까지 봉착했다. 결과적으로 ObjectMapper를 사용할때 제네릭 관련 변수로 뺄때 왜 TypeReference를 선언해야하는지 이해가 안됬다. 정확히는 이유를 정확하게 몰랐다. 제네릭의 type erasure에 대해서 먼저 알아야 한다. 타입 소거라고도 한다. 런타임에 타입에 대한 정보를 버리는 것이다. bounded type -> bound type unbouned type -> Object 1) Unbounded Type public class SmithTest { public static T unboundedType(T t) { return t; ..
별건아니고, 저번 포스팅에서 너무 계층이 많다보니, 가독성이 떨어져서 위젯별로 리턴하는 펑션을 분리하고, 해당 펑션으로 대체하여 계층소스에 추가하였다. 이렇게 하니, 좀더 명확하고 직관적이여서 보기 편했다. 추천! 개인적으로 State의 소스가 너무 길어지면... 뎊스에 대해서 헷갈린다. import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; void main() => runApp(LoginApp()); class LoginApp extends StatelessWidget{ @override Widget build(BuildContext context) { return MaterialApp( debugShowChec..
간단하게 위젯 배치로 로그인 화면에 대한 구성을 개발 해보자 간단하게 보면 아래와 같은 구조로 시작해야한다. Stateful 이던 state이던 필수로 구현해야하는 메소드가 있기 때문이다. import 'package:flutter/cupertino.dart'; class LoginPage extends StatefulWidget { LoginPage({Key? key}) : super(key: key); @override State createState() => _LoginPageState(); } class _LoginPageState extends State{ @override Widget build(BuildContext context) { // TODO: implement build throw ..
1) Container 위젯 별도로 컨테이너에 크기를 지정하면 아래와 같이 변경된다. 컨테이너 안에 컨테이너를 생성할 수 있다. 우선 차일드에 하나의 텍스트를 추가해보자 해당 마진을 주면, 각각의 영역에 마진이 생기게 된다. 이와 반대로 패딩의 개념이 있다. 추가로 컨테이너나 디바이스에 대한 길이값을 알 수있다. 고정된 길이나 높이가 아니라 디바이스 대비 길이나 높이를 구할수 있는 것이다. height: MediaQuery.of(context).size.height/2, 해당 값으로 주게 되면, 디바이스 기준으로 데이터가 설정되게 된다. 2) Column 위젯 여러개의 자식 옵션을 가질수 있다는 특징이 있다. 컬럼말고도 Row 위젯이 있다. 가로로 정렬하냐, 세로로 정렬하냐의 차이가 전부이다. 3) Ro..
플러터 프로젝트를 시작하면 아래와 같다. 카운터 어플리케이션 및 주석이 달려있다. import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage..
플러터에서 위젯은 계층 구조로 이루어져 있다. 뭐 전체적인 모습은 아닐수도있다.하지만 해당 구조로 이루어져 있고 계층 형으로 각각의 부모를 상속 받는다. 위젯의 트리를 반환하는 build()함수를 구현하여, 고유 특성 정의가 가능하다. 계층 구조는 위젯의 UI를 더 구체적으로 표현이 가능하다. 계층들은 앱을 만드는 데 많은 옵션을 주고, 위젯 계층 블록들을 사용할 수 있게 한다. UI는 크게 두가지로 분류한다. 변경되는 화면 or 불변의 화면 사용자가 버튼을 누를때마다 변경되면 StateFul widget이다. 쉽게 얘기하면, 팝업 메뉴 버튼이 있고, 이에 따라 State가 계속 바뀐다고 가정하자 그러면, 해당 앱은 Stateful widget이고 State를 받아서 계속 변경되는 것이다.
오늘은 RFC라는 지식에 대해서 포스팅해보려고 한다. 때떄로 다른 모듈이나 외부 연동을 할 때 사용하는 통신 방법이라고 한다. Remote Function call로 해당 작업을 하는 것을 의미한다. SAP나 ERP같이 외부 모듈과 통신할때 주로 쓰이고, Flutter에서 Native에 대한 라이브러리나 통신을 위해 사용하기도 한다. RFC에서는 두가지 호출 인터페이스가 있다. non-sap || abap용 프로그램용 쉽게 얘기하면, SAP와 SAP가 아닌 장비끼리 서로 통신하는 경우 또는 SAP이지만 서로 다른 장비인 경우 즉 , 머신이 떨어진 모든 경우의 통신규약을 정의해놓은것으로 이해하면 편하다. 결국 메커니즘은 비슷하다. CALL FUNCTION .... DESTINATION의 구조로 이루어져 있..
쉽게 json과 ObjectMapper를 많이 쓴다. 이유는 String Object간의 자유로운 이동과 변환을 위해서 많이 사용한다. 내가 주로 사용하는것 외에도 다른 기능들이 존재할 것 같아서, 해당 기능들을 사용하면서 포스팅해보자 1. 의존성 추가 implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3' 2. 간단한 사용 예제 (Object -> String, writerValue) package com.example.demo; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import org.springframework..
queryBuilder를 간략하게 썼었다. 근데 조금 더 심화를 써보자 1) 조인되는 엔티티가 여러개이다. 2) 조인되는 엔티티중 원하는 값만 가져오자 3) 각 조인되는 엔티티는 마스터 이외에는 left조인으로 해보자 or innerJoin으로 해보자 해당 조건을 충족하는 쿼리빌더는 아래와 같다. async getCart(id: string): Promise { const result = await this.cartRepository.createQueryBuilder('cart') .innerJoin(Food,'food','food.id=cart.foodId') .innerJoin(Member,'member','member.id=cart.memberId') .select (['food.id','food...