티스토리

검색하기

블로그 홈

nahyungmin.tistory.com/m

NaHyungMin 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • Docker 우분투 설치 설치 환경 : 맥북 프로 M2 Arm64https://docs.docker.com/desktop/setup/install/mac-install/  MacInstall Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how to install and update.docs.docker.com 인텔 맥북은 아래 그 외 위에 Apple silicon으로 설치.회원가입 후 다음 화면 확인하고 터미널 확인. 터미널에서 다음 명령어. docker imagesREPOSITORY   TAG       IMAGE ID   CREATED   SIZE 다음 명령어로 우분투 확인 d.. 공감수 0 댓글수 0 2025. 3. 24.
  • 직원의 연봉협상 보통 부장이 연봉 협상을 전부 하는지 나는 모른다. 처음이기 때문에.. 그런데 보통 인사팀에서 하는걸로 알고 있다. 아니면 임원이던가. 중요한건 내가 해야 한다는 전달이 왔다. 먼저 어떤 행동을 해야 하는가? 내가 선택한 처음 행동은 과거 연봉 협상에 대한 정보를 얻는 것이었다. 이 사람이 어떤 일을 하고 있는지, 혹은 미래에 어떤 일을 할지에 대한 정보를 요청한 다음. 인사팀에게 과거 연봉 인상률에 대해 문의했다. 모든 직원에 연봉 정보를 같이 받아보니, 이거 참.. 그 후 회사 내 서비스 회의가 종료되고 대표와 잠시 짧은 면담을 가졌다. 대표는 제법 나를 신뢰하는 편이다. 모든 권한을 줄테니 나보다 나이 많은 동료 직원에게 기죽지 말라고 한다. 내 아내에게 이야기 했더니, 웃는다. 사실 별로 기죽어본.. 공감수 0 댓글수 0 2024. 4. 12.
  • 부장 진급 올해 2월 초 12~13년의 경력으로 SBI 그룹사에서 연구개발 부장으로 승격했다. 당시 여러가지 생각으로 미래의 고민이 머리 속에 가득했다. 기존 부장이 내려오며, 그의 추천으로 부장으로 진급했기에 무게감과 기대감은 넘쳐흘렀다. 다른 곳에 올리는 글과 다르게 블로그에서는 쉽게 쉽게 글을 작성하는게 목적이라 전에 썼던 글로 마무리. 오랜만에 새로워진 감회를 느끼며 글을 쓴다. 오늘은 마음 한켠으로, 설레임과 두려움이 공존하는 하루다. 그리고 그 속에서도 새로운 시작을 맞이할 시기인 듯하다. 사실 나는 늘 운이 좋았다. 변변치 않은 학벌로 중견 기업에 입사하여, 좋은 멘토를 만나기란 쉽지 않은 경험이다. 그는 나에게 코드에 대한 철학을 늘 이야기했다. 다행히 평소 철학을 논하던 친구와의 경험으로 늘 재미나.. 공감수 0 댓글수 0 2024. 4. 12.
  • 중복 제거 후 저장하기 grep -n "email=" access-20240313.log | awk -F'=' '{print $2}' | grep -E '[^@]+@[^@]+\.[^@]+' | uniq | tee output-file-20240313.txt 공감수 0 댓글수 0 2024. 3. 14.
  • 아마존 RDS -> 로컬 DB 변경 (DataGrip) 테스트 서버 여러 대에서 가장 처음에 만들어진 서버가 아마존 RDS를 사용한다. 불필요한 비용이라고 생각하여, 다른 서버처럼 EC2에 있는 로컬 DB로 만들기로 결정 * workbench 설치 참고한 블로그 https://abbo.tistory.com/320 DataGrip Mysqldump 사용방법 오늘은 데이터베이스 관리툴로 많이 사용하고 있는 DataGrip의 Mysqldump라는 방법을 사용하여 데이터를 일괄적으로 추출하고 입력하는 방법에 대해 살펴보려 합니다. 가장 먼저 이 기능을 사용하기 abbo.tistory.com 리눅스에서 로컬 접속하여, 외부 접속 생성, 외부 접속은 전체 작업 후 제거. SELECT user, host FROM mysql.user WHERE user = 'root'; .. 공감수 0 댓글수 0 2024. 2. 23.
  • 구글 드라이브 시트 변경 / Google Drive Api, Slack Api 부장으로 진급하면서 매주 월요일 업무 보고를 받아야 한다. 그런데 매주 들어가서 복사해서 만들기 너무 귀찮은게 아닌가. -_- 그래서 자동화를 했다. Oauth2.0 V3를 사용해서 처리함. //240112 nhm, 구글 드라이브 implementation 'com.google.api-client:google-api-client:2.0.0' implementation 'com.google.oauth-client:google-oauth-client-jetty:1.34.1' implementation 'com.google.apis:google-api-services-drive:v3-rev20220815-2.0.0' implementation 'com.google.apis:google-api-services-.. 공감수 0 댓글수 1 2024. 1. 22.
  • 자바 스프링부트 버전업 예전부터 생각해왔던, 스프링부트 버전업이 완료되어 테스트 서버에서 확인중이다. 버전업을 하며, 느낀 점을 정리한다. 1. 일단 책임자한테 미루는게 제일 좋다. -_- 2. 일단 기존 설정파일 로드 형식을 변경했다. spring: application: name: server config: import: - optional:file:/home/apps/server/config/server.yml - optional:/Users/apps/server/config/ - optional:file:/home/apps/server/config/application.yml profiles: active: navtive 개인적으로 외부에서 프로필을 주입하는 형식은 좋아하지 않는다. 다른 사람이 처음 환경설정할 때, 사.. 공감수 0 댓글수 1 2023. 12. 28.
  • 파이어베이스 다중 푸시 파이어베이스 홈페이지에서 json을 가져오는 형식과 처음 보내면 서비스 등록하라는 내용은 넘기고 구현체만 남김 단일 푸시지만 ios에서 개인 프로젝트로 만들었기 때문에 프로젝트 합치면서 오류가 날 경우 다른 정보로 보내도록 구현되어 있다. 한 프로젝트로 디바이스 등록하여 사용할거면 이렇게 처리 안해도 됨. implementation 'com.google.firebase:firebase-admin:9.2.0' //230927 nhm, push import com.google.auth.oauth2.GoogleCredentials; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; import com.googl.. 공감수 0 댓글수 0 2023. 10. 16.
  • 자바 Spring Boot 1.5 동적 Cron 패키지와 클래스명, 인터페이스명 등은 정보 변경하느라 이상할수도 있음. Bean 등록 @EnableScheduling @Configuration public class configuration { @Bean public ScheduledTaskRegistrar scheduledTaskRegistrar() { return new ScheduledTaskRegistrar(); } } 추상 클래스 ScheduledComponent package ... import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory... 공감수 0 댓글수 0 2023. 7. 19.
  • Java region 다른 언어에서 사용했던 코드 범위. 테스트 코드 작업 중 삭제 처리를 위해 Todo를 처리했는데 5분간 기억이 안나서 기록용으로 만듬. //region 230216 nhm, TODO 테스트 후 삭제 Map headers = Collections.list(request.getHeaderNames()) .stream() .collect(Collectors.toMap(h -> h, request::getHeader)); headers.forEach((key, value) -> { logAccess("addressSearch, request email : {}, header name : {}, value : {}", adminUser.getEmail(), key, value); }); //endregion 공감수 0 댓글수 0 2023. 2. 16.
  • jenkins update 및 slack 알림 추가 현재 사용하고 있는 jenkins 버전을 업데이트해야 하는 시점이 왔다. 일반적인 파일 위치 cd /usr/share/jenkins #존재하지 않을 경우 파일 찾기 find / -name 'jenkins.war' #내가 찾은 위치 /usr/share/jenkins/jenkins.war sudo service jenkins stop sudo mv jenkins.war jenkins.war.old #내가 필요한 버전은 2.321이었음. #wget https://updates.jenkins-ci.org/latest/jenkins.war #wget https://updates.jenkins-ci.org/download/war/2.321/jenkins.war service jenkins start #slack 홈.. 공감수 0 댓글수 0 2023. 1. 11.
  • 커버드 쿼리 튜닝 같이 일하는 주니어 개발자가 다시 도움을 요청해왔다. INSERT * SELECT을 처리하는데 시간이 오래 걸려서 lock time out이 나요!! 다음은 기존 쿼리의 일부분이다. create index table1_index on table1 (post, status) UNION ALL .... table2.currency, ... FROM table table1 LEFT JOIN (SELECT column1, column2 FROM table2 GROUP BY column1) table2 ON table1.partner = table2.partner WHERE table1.post IS NOT NULL AND table1.status IN ('....') AND table1.complete >= D.. 공감수 0 댓글수 0 2022. 12. 1.
  • Default character 변경 테스트 서버 하나에 한글입력이 안되는 현상이 발견. 확인해보니 처음 만든 사람이 latin1_swedish?로 만들었다. 현재 사용중인 상용 정보는 utf8 이모지라서 동일하게 변경해줌. SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE schema_name = "schema명"; #alter schema schema명 collate utf8mb4_unicode_ci; #alter table table명 convert to character set utf8mb4 collate utf8mb4_unicode_ci; 공감수 0 댓글수 0 2022. 11. 30.
  • Reuters 환율 처리 작업 전 확인 * 로이터 환율은 유료입니다. // https://mvnrepository.com/artifact/com.refinitiv.ema/ema implementation group: 'com.refinitiv.ema', name: 'ema', version: '3.6.7.1' ReutersApplication public class ReutersApplication { private static ConfigurableApplicationContext context; public static void main(String[] args) { context = SpringApplication.run(ReutersApplication.class, args); log.info("시스템 시작."); } p.. 공감수 0 댓글수 1 2022. 11. 18.
  • 중계 서버 시스템 분산 목적으로 중계 서버를 구현하기로 했음. @RequestMapping(value = "/bank/info", method = RequestMethod.POST) public CrsResult bankInfo(HttpServletRequest request, @RequestHeader Map headers, @RequestBody(required = false) Map params, HttpServletResponse response) throws Exception { return httpRequest.request(request, response, headers, params); } IHttpRequest public interface IHttpRequest { CrsResult request.. 공감수 0 댓글수 0 2022. 11. 18.
  • 09. Flutter showDialog 결과값 다음과 같은 dialog에서 정보를 가져오려고 찾아봤다. 일반 액티비티처럼 가져오는 내용은 아닌듯. 부모 showDialog(context: context, builder: (BuildContext context) { return Theme(data: DefaultColorScheme.defaultThemeData() , child: const CustomerSub() ); }).then((value) => print(value) ); 자식 Navigator.pop(context, 'data'); 공감수 0 댓글수 0 2022. 9. 27.
  • 자바 열거형 Find Value 예전 코드와 데이터베이스에서 레거시 발견. 아무런 부가설명없이 1,2로 나눠져 있어서 유지보수에 어려움이 생길거라 생각. public enum PartnerInquiryTypes { Account(1), Name(2); private int value; PartnerInquiryTypes(int value) { this.value = value; } public static PartnerInquiryTypes findByValue(final int findValue){ return Arrays.stream(values()).filter(value -> value.value == findValue).findFirst().orElse(null); } public int getValue() { return v.. 공감수 1 댓글수 1 2022. 9. 23.
  • 08. syncfusion_flutter_datagrid 추상클래스 제네릭화 작업을 하다가 3~4회정도 중복 클래스에서 변경하기 귀찮은 내용이 생겨서 문제가 더 커지기 전에 처리 추가로 더 만들어야할 내용은 굳이 처리하지 않았음. 필요시 처리하면 될듯해서.. dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter syncfusion_flutter_datagrid: ^20.2.46 intl: ^0.17.0 import 'package:flutter/material.dart'; import 'package:simple/utils/custom/custom_grid_column.dart'; import 'package:syncfusion_flutter_datagrid/datagrid.dart'; abstract c.. 공감수 1 댓글수 1 2022. 9. 22.
  • 07. Flutter datatimePicker datetimePicker + dropdownItme 커스텀. 추가로 붙일거면.. 여러개 붙이면 되지 않을까 싶음. 귀찮아서 전체 코드로 올림. import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; class CustomDateTimeSearchBar extends StatefulWidget { final List dropdownItems; final T parentContext; final VoidFunction onPressed; const CustomDateTimeSearchBar({Key? key, required this.dropdownItems, required this.parentContext, required th.. 공감수 1 댓글수 1 2022. 9. 22.
  • 자바 Jpa Entity -> Sql Default Value 별로 중요하지 않다고 생각하는 내용이었지만 작업 중 1분간 생각이 안나서 정리 create_time에 기본값을 설정하려 한다. 하지만 Jpa에서 Insert를 할 경우. null 값으로 인한 오류가 발생. @Data @DynamicInsert public class BuildingMaterialsEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int idx; Entity에 @DynamicInsert를 추가한다. DynamicUpdate도 있는걸로 보아, update시 사용하면 될듯. 공감수 0 댓글수 0 2022. 9. 21.
  • 자바 Jpql dynamic query @Query(value = "SELECT * FROM t_building_materials WHERE partner_code = :partnerCode ", nativeQuery = true) List getBuildingMaterialsEntityByNumber(@Param("partnerCode") String partnerCode); 일반적으로 Repository에 간단하게 추가하면 됨. 기본 동작이 아닌 경우 조회인 경우 매개변수가 없을 경우가 존재하므로 따로 조회해야 함. @PersistenceContext EntityManager entityManager; String partnerCode = redisUserInformation.getPartnerCode(); String jpql = " S.. 공감수 1 댓글수 1 2022. 9. 21.
  • 06. Flutter Future build 이벤트 방지 커스텀으로 SearchBar를 만들던 중 상태가 변하면 setState를 콜해서 서버를 계속 호출하는 문제 발생. class _CustomersState extends State { late Future customerFuture; @override @mustCallSuper void initState() { super.initState(); customerFuture = generateCustomerList(); } @override Widget build(BuildContext context) { return FutureBuilder( future: customerFuture, builder: (BuildContext context, AsyncSnapshot snapshot) { return _get.. 공감수 0 댓글수 0 2022. 9. 19.
  • 05. Flutter build 종료 후 이벤트 다른 윈도우 프로그램이나 웹처럼 load 후에 이벤트를 찾다가 글을 씀. @override @mustCallSuper void initState() { 1) 시작 super.initState(); final bool? sharedRemember = SharedPreferencesSingleton.getValue("isRemember"); rememberValue = sharedRemember == null ? false : true; 1) 종료 WidgetsBinding.instance.addPostFrameCallback((_) { 3) 시작 //저장 상태. if(rememberValue) { final String? sharedEmail = SharedPreferencesSingleton.getVal.. 공감수 0 댓글수 0 2022. 9. 16.
  • 04. Flutter 상태 저장 shared_preferences Flutter로 Web에서 입력했던 내용을 종료하고 다시 실행 시 데이터를 꺼내오고 싶음. Debug Web에서 데이터를 꺼내오기 위한 사전 처리 --web-port만 정해주면 된다. dependencies: flutter: sdk: flutter shared_preferences: ^2.0.15 pub에서 추가. import 'package:shared_preferences/shared_preferences.dart'; class SharedPreferencesSingleton { static late final _prefs; static final SharedPreferencesSingleton _sharedPreferences = SharedPreferencesSingleton._internal().. 공감수 0 댓글수 0 2022. 9. 16.
  • 03. Fultter Datatable 사용 거래처 datatable을 만들고 싶음. 국내 사이트에선 정보가 없고, 해외 사이트에선 밑단 service가 아닌 screen에서 처리하는 샘플만 봄. 그래서 4시간 동안 서치하고 변경한 정보를 공유 차 올림. pub syncfusion_flutter_datagrid: ^20.2.46 Customers import 'package:flutter/material.dart'; import 'package:simple/datagrid/customer_datagrid.dart'; import 'package:simple/model/customer/customer_model.dart'; import 'package:simple/services/customer/customer_service.dart'; import.. 공감수 0 댓글수 0 2022. 9. 7.
  • rest api filter에서 header, body 변경 하고 싶은 것 : 1차 필터 완료 후 2차 필터에서 클라이언트에서 제공받은 토큰으로 redis 형식의 데이터를 controller로 던지고 싶음. 매번 controller나 service에서 정보를 체크하기엔 코드량이 늘어남. package com.program.application.controller; import com.program.application.entity.main.CustomerEntity; import com.program.application.model.redis.RedisUserInformation; import com.program.application.service.main.ICustomerService; import com.program.commons.response.Respo.. 공감수 0 댓글수 0 2022. 9. 7.
  • Mysql groupby 최신데이터 1row 값 EXPLAIN SELECT R1.sender_id, R2.status FROM ( SELECT sender_id, MAX(tseq) AS seq FROM 조회테이블 AS R WHERE R.create_at BETWEEN '2022-01-01 00:00:00' AND '2022-07-31 23:59:59' GROUP BY sender_id ORDER BY NULL ) AS R1 INNER JOIN 조회테이블 AS R2 ON R1.seq = R2.seq AND R2.status = '상태값' 보통 검색해보면 다른 정보로 JOIN을 시도하는데, 기본 키로 조회 시도. 회사의 해당 테이블의 컬럼 수가 160개정도로.. 해당 쿼리를 실행하려고 하면 데이터베이스가 사망하려고 한다. EXPLAIN SELECT sen.. 공감수 0 댓글수 0 2022. 9. 1.
  • 02. Flutter Dio 사용법 dio 최신 버전 추가 class HttpRequest { //https://pub.dev/packages/dio static final _dio = Dio(); static Future fetchPost(String url, HttpHeaderModel header, E parameter) async { String requestBodyJson = jsonEncode(parameter); Map headerMap = _getSendHeaderMap(header); try { var response = await _dio.request( HttpConst.baseUrlLocal + url, data: requestBodyJson, options: Options(method:'POST', headers: .. 공감수 0 댓글수 0 2022. 8. 28.
  • 보유 기술 공감수 0 댓글수 0 2022. 8. 12.
  • rest api + jpa(jpql) + replica set 지인의 요청으로 간단한 서버 구현. * 보안 및 민감한 부분은 코드가 없을 수 있습니다. 이 포스팅은 누군가에게 프로그램 구현을 위한 공유가 아닙니다. * 220811 멀티프로젝트 배포 시 설정을 각 모듈로 나눠진 내용을 최상단으로 변경 환경 : 오라클 클라우드 free... ram 1gb, vcpu2 OS : Linux centos7 DB : mariadb 10.5.8 Tool : intellij, Java 1.8 Spring boot 2.7.1 Gradle 프로젝트 구조 멀트 프로젝트 Gradle 설정 buildscript { ext { springBootVersion = '2.7.1' } repositories { mavenCentral() } dependencies { classpath("org... 공감수 0 댓글수 0 2022. 8. 2.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.