본문 바로가기

전체 글532

겸손.배우는 자세 몇일 전 부터 처음 보이는 분이 체육관에 와서 운동을 하셨다. 몇주가 지나고 나와 스파링을 했다. 잽스파링만 3라운드 했다. 이전에 격투기를 하셨는지 힘도 좋고 잽이 좋았다. 다만 몸에 힘이 너무 많이 들어가셔서 2라운드 이후에 지쳐서 움직임이 좋지 않았다. 스파링이 끝나고 그 분이 나를 기다리고 계셨다. 이것저것 피드백 요청을 하시면서 보완할 점을 알려달라고 하셨다. 나는 친절히 알려드리고 복싱에 대한 이야기를 했다. 나도 옛날에 이런적이 있었지 라는 생각이 드는걸 보면 지금은 안그런것 같다. 늘 배우는 자세로, 겸손히 수련에 임하자... 2024. 3. 13.
쨉이 많고 스탭이 좋은 상대와 스파링 후기 보완점 1.쨉이 많이 나올 수 있다는 점을 염두해두고 패링 + 더킹 여러번 하기 2.잡았을때 바디 공격이 너무 임팩트가 없음(찔러 넣는 바디잽 연습필요) 3.스위치 사우스포시 계속 앞발이 상대 앞발 안으로 들어감 신경쓰기.. 4.상대 오른쪽투 나올때 몸을 오른쪽으로 돌려서 막는데 이때 중심을 잘 잡아서 오른손 투로 반격해보기 2024. 3. 13.
바디쨉 좋은상대가 밀고 들어올때 스파링 연습 후기 상대방 상대가 바디 쨉 공격을 많이 시도 했다. 좋은 시도였음. -왼손 훅, 오른손 투 로 방어 상대가 밀고 들어 올때 -클린치나, 훼이크 or 공격 후 거리를 좁히기 연습 더 필요함. 나 - 사우스포로 전환되었을때 자연스럽게 사우스포 연타 연습 시도 (아직 익숙치 않음, 공격하면서 앞발이 상대방 안쪽으로 계속 들어감.) - 코너에 몰렸을때 더 자세를 낮추고, 왼쪽 발을 상대 가랑이 쪽으로 살짝 밀어 넣고, 왼쪽 발의 앞쪽을 닫아주고 방어 준비 하기 - 쨉을 하고나서 왼쪽발로 착지 할때 가끔 왼쪽 발의 위치가 상대에게 공격 당하기 좋은 위치에 놓여질 때가 있음 (주의) - 연타 공격시(원투) 투가 오른쪽 몸과 함께 직선으로 나가지 않고, 이상하게 붕 떠서.. 포물선을 그리면서 나가고 중심이 무너지는 경향.. 2024. 3. 13.
jsp mybatis sample file and spring mvc 2020. 11. 1.
ios push 갱신 https://captainwonjong.github.io/2018-10-22/APNS-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89,-%EA%B0%B1%EC%8B%A0/ http://throughkim.kr/2016/12/27/ios-notification/ http://devstory.ibksplatform.com/2017/09/ios-3-apn.html https://nicgoon.tistory.com/203 2020. 4. 14.
깃 사용법 - 기초 깃은 소스코드의 버전을 관리하는 도구다. 버전: 의미있는 변화 또는 작업이다. 어떤 작업이 완결된 상태. 아래는 깃의 간단한 사용법이다. 따라해보자. 1.아무 폴더를 만든다. pwd 로 만든 폴더 위치에 들어온다. 2.바탕화면에 빈폴더를 만들고(gittest) 터미널을 열고, 폴더 위치에서 git init 이라고 명령어를 입력하면 빈폴더에 .git 이라는 파일이 생긴다. 이작업은 저장소에 필요한 기본적인 파일 구조를 만든다. 이파일은 이 폴더에 있는 파일들을 깃이 관리하는것을 도와주는 역할을 한다. 만든 폴더(로컬저장소)에는 세부분으로 나뉘어져있다. 1.작업디렉토리: 실제 파일 존재 -> 2.인덱스(스테이지) : 준비영역 -> 3.HEAD : 최종 확정 (commit) 3. vim mytext.txt 명.. 2020. 4. 3.
표준입출력& 배열 #include //4.문자열을 입력 받을 때 키 입력 횟수 제한하기 int GetMyString(char buffer[] , int limit){ int i; for (i = 0; i 0 && num 2019. 11. 29.
dataset 참고 1. Dataset에는 필터 기능이 있다. 예를들어 1개의 변수를 받아 dadtaset의 칼럼과 비교해서 필터거는 문법은 아래와 같다. this.ds_my_dataset.filter(" name =='" + name + "' || age == 10 ""); -> 나이가 10인 친구중에 이름이 변수 name 에 들어있는 값과 비교해서 있으면 dataset에 한 건이 필터된다. 2.Dataset 확인 dataset에 들어 있는 데이터는 saveXML() 함수로 확인 할 수 있다. 예) this.ds_my_dadtaset.saveXML(); 3.dataset filter 이슈 문제는 2번에서 필터된 dataset을 확인하고 싶었는데 dataset 전체가 계속나온다는 것이다. 참고로 dataset의 filter.. 2019. 11. 28.
넥사크로에서 post로 파라미터 던져서 스프링부트 jpa로 데이터 조회 넥사크로에서 post 방식으로 조회조건을 파라미터로 던지고, 스프링 부트에서 받아서 jpa로 데이터베이스에 접근해서 해당 데이터를 넘겨주는 시나리오다. 1.시나리오 게시판 생성 목록을 조회 할것이다. 게시판을 관리하는 화면에는 게시판 그룹이 있고, 게시판 대상이 있다. 게시판 그룹은 매니져, 팀장, 팀원 등이고, 게시판 대상은 매니져1년차, 매니져2년차 등 그룹을 더욱 세분화한 데이터다. 먼저 서버단 로직이다. @Override public List selectBoard(VariableList variableList){ //객체 데이터를 넣어줄 리스트 rows List resultObject = new ArrrayList(); //게시판 그룹 - 넥사크로에서 post 방식으로 파라미터를 넘겨준값. 배열로.. 2019. 11. 23.
넥사크로 Dataset에 대하여 요즘 모 대기업에서 프로젝트를 진행하고 있다. 개발환경은 넥사크로 + 스프링부트+ JPA + etc.. 을 사용해서 개발진행을 하고 있다. 넥사크로와 스프링 부트를 사용하면서 기록해두면 좋을 내용들을 포스팅 해볼려고 한다. 1.Dataset 넥사크로에는 데이터셋이라는 개념이 있다. 이름에서도 알 수 있듯이 데이터셋은 데이터를 쉽게 다룰 수 있게 도와주는 객체 같은 녀석이다. 데이터셋의 가장 중요한 역할은 데이터베이스 자원에 여러 사람들이 연결해서 생기는 오버헤드를 줄이는 것이다. 그래서 DB에서 필요한 데이터를 수시로 콜해서 가져오는것이아니라 테이블 전체의 데이터를 넥사크로의 특정 데이터셋에다가 담아두고 목적에 맞게 가공하여 사용한다. 이것을 비연결방식이라고 한다. 이 데이터셋은 그리드(테이블), 콤보박.. 2019. 11. 22.
반복문 실습 - 별그리기 //문자를 한번에 한개씩만 출력해서 삼각형만들기 /* * ** *** **** ***** */ //출력문을 이용해서 printf("*\n"); printf("**\n"); printf("***\n"); printf("****\n"); printf("*****\n"); printf("\n"); //반복문을 이용해서 char star = '*'; for (char i = 1; i 1; i--) { //공백.. 2019. 11. 19.
비트연산 #include //3단계 변수의 특정 비트를 0으로 만드는 예제 //dest_data 변수의 bit_num 번째 있는 비트를 0으로 설정하는 함수로 해당 비트가 0으로 설정된 값을 반환한다. unsigned char ResetBit (unsigned char dest_data , unsigned char bit_num){ //1바이트 변수라서 비트 이동은 0~7 까지 가능함 if (bit_num > 2; /* 이동후 : 0000 0110*/ printf("%d \n" , r_data); //6 (26에 2의 2승을 나눈것과 같다.) //변수에 부호가 있는경우 : 부호비트가 1이면 이동한 빈 공간에 1로 채우고, 부호비트가 0이면 이동한 공간에 0으로 채운다. char my_data = 0x85; my_.. 2019. 11. 18.
자료형 int main(int argc, const char * argv[]) { //정수를 표현하는 자료형 세가지 : 1바이트 , 2바이트 4바이트 /*부호가 있는 1바이트 저장공간 -128 - 127 저장가능 */ signed char temperature; // 오류 : Implicit conversion from 'int' to 'signed char' changes value from -129 to 127 //temperature = -129; temperature = -2; printf("%d \n", temperature); /* 부호가 없는 1바이트 저장공간 0 ~ 255 저장가능 */ unsigned char age; age = 255; printf("%d \n" ,age); /* 부호가 있는 .. 2019. 11. 18.
NSNotification 예제 (자식창 닫을때 부모창도 같이 닫기) NSNotification 예제 최상위뷰가 있다. 최상위 뷰에서 부모뷰를 띄웠다. 부모뷰에서 자식 뷰를 띄웠다. 이때, 자식뷰를 닫을때 부모뷰까지 같이 닫아 줘야하는 요구사항이 있다. 이럴때는 NSNotification 을 사용한다. 먼저 부모뷰에 NSNotification 설정과 콜백메소드(편의상 이렇게 부르겠다)를 작성해준다. viewdidload{ //노티피케이션 등록 - 자식창을 닫을때 이곳(부모)도 닫히게 노티 등록 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeViewControllerBySelf:) name:@"close" object:nil]; } 이렇게 셋팅을 해주고 호출될 메소드를 작성해준다... 2019. 10. 24.
NSTimer & label 속성 (가운데, 줄간격, 위치고정 등) 30초 카운트 다운 타이머 만들기 (countdownlabel 객체는 storybord에 미리 만들어 놓는다.) #import @interface SosRequestViewController : UIViewController //타이머 객체 @property(strong,nonatomic) NSTimer *CountDownTimer; @property (nonatomic, assign) NSInteger second; @end .m //타이머 시작! -(void)startTimer{ //폰트를 넣어줘야, lable 위치가 흔들리지 않는다. UIFont *myfont = [UIFont monospacedDigitSystemFontOfSize:_countDownLabel.font.pointSize weigh.. 2019. 10. 24.
단순 팝업 메시지 //단순 메시지 전달해서 팝업 띄우기 메소드 - (void)popUpWithMessage:(NSString *)message { UIAlertController * alert= [UIAlertController alertControllerWithTitle:@"알림" message:message preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { [alert dismissViewControllerAnimated:YES completion:nil]; }]; [.. 2019. 10. 24.
ios 인디케이터 .h //인디케이터 객체 선언 @property (nonatomic, retain) UIActivityIndicatorView *activityIndicator; .m //인디케이터 시작 -(void)startIndicater{ NSLog(@"인디케이터 시작"); // ProgressBar Setting _activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; [_activityIndicator setCenter:self.view.center]; [_activityIndicator setColor:UIColor.whiteColor]; if (@available(iOS 13.0, *)) { [_.. 2019. 10. 24.
ios 디바이스 사이즈 구하기 & xib 파일 이름으로 뷰 띄우기 //디바이스 사이즈 구하기 CGRect screenRect=[[UIScreen mainScreen]bounds]; CGFloat deviceWidth=screenRect.size.width; CGFloat deviceHeight=screenRect.size.height; //xib 파일 이름으로 뷰컨트롤러 객체 생성 _cancelViewController=[[CancelViewController alloc]initWithNibName:@"CancelViewController" bundle:nil]; //상단에 얻은 디바이스 크기로 뷰를 호출하기전에 리사이즈 합니다. [_cancelViewController.view setFrame:CGRectMake(0, 0, deviceWidth, deviceHeigh.. 2019. 10. 24.
viewDidLoad 에서 alert 띄울때 발생하는 오류 viewDidLoad 에서 alertViewController를 띄우면 계층구조 오류 메시지를 던지고 alert가 뜨지 않는다. 처음에는, 뷰가 로드 되었는데 왜 안떠? 라고 생각하고 구글에서 삽질을 좀 했다. 알고봤더니 뷰가 로드는 되었지만 나타나지는 않았기 때문에 viewDidLoad에서 alert 를 띄우면 alert를 띄울수 있는 부모 viewcontroller가 없다고 난 에러였다. 그래서 viewController에서 alert를 띄울려면 viewDidLoad 말고viewDidAppear 이나 다른 메소드를 만들어서 alert를 띄어줘야 한다. 2019. 10. 23.
문자 타입의 바이트를 NSData타입으로 변환 문자 타입의 바이트를 NSData타입으로 변환 #import NS_ASSUME_NONNULL_BEGIN @interface Util : NSObject // 문자 타입의 바이트를 NSData타입으로 변환 +(NSMutableData *)convertStringToNSData:(NSString *) bytesString; @end NS_ASSUME_NONNULL_END #import "Util.h" @implementation Util // 문자 타입의 바이트를 NSData타입으로 변환 +(NSMutableData *)convertStringToNSData:(NSString *) bytesString{ //넘어온 문자형식의 byte NSString *signNum = bytesString; signNum .. 2019. 10. 22.
CALayer 관련 참고 페이지 //쿼츠코어를 임포트해야 CALayer 와 CoreAnimation을 사용할 수 있다. #import #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // #.정의 : CALayer는 스크린에 시각적 큰텐츠를 그리는 사각형의 class 이다. //self.view 는 viewcontroller 의 view 이다 . 이를통해 컨트롤러의 view 에 접근할 수 있다. //여기서 자동생성된 layer는 calayer이다. //배경.. 2019. 10. 18.
ios 로컬 음악파일 간단하게 재생하기 .h 파일 #import //사운드를 재생할 오디오 플레이어객체 , @property (nonatomic,strong)AVAudioPlayer *player; .m 파일 /* 로컬에 sound 파일 재생하기 위한 경로를 가져온다. 경로를 url 타입으로 변환 - > avaudioplayer로 재생. */ NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sos" ofType:@"wav"]; NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; NSLog(@"soundFileURL : %@" , soundFileURL); NSError *error; self.player = [[AV.. 2019. 10. 18.
objective c 블루투스 corebluetooth objective c 블루투스 corebluetooth #import "SosRequestViewController.h" #import //코어 블루투스 라이브러리 추가한것 임포트 한다. #import //센트럴의 이벤트를 수행할 수 있도록, 델리게이트 구현 @interface ViewController : UIViewController @property (strong, nonatomic) CBCentralManager *centralManager; //센트럴 역할을 수행해줄 객체 @property (strong, nonatomic) CBPeripheral *safetyPeripheral; //주변기기 객체 @property (strong, nonatomic) CBCharacteristic *charac.. 2019. 10. 18.
protocol 개념 - 1 objective c 에서 프로토콜이라는 문법이 있다. 프로토콜은 약속,규칙이라는 뜻이다. 예를들어, Car Class 에 '작동' 이라는 프로토콜(약속)이 존재 한다면, 이 약속을 airplain, bike 등 여러 클래스에서 가져다가 사용할 수 있다. 조금 어렵게 말하면 프로토콜은 인터페이스(선언부) 이고, delegate 는 인터페이스를 구현하는 객체이다. 그럼 프로토콜을 쓰면 좋은점은 무엇일까? 바로 객체간 종속성이 줄어든다! //프로토콜 선언! @protocol ProtocolName @optional //구현해도 되고 안해도 되는 메소드 @required //필수적으로 구현해야 하는 메소드 @end //프로토콜 구현! @interface ClassName : 부모클래스 or @interface.. 2019. 10. 9.
[기초]스프링부트란? #스프링부트를 한마디로 스프링부트는 java로 어플리케이션을 쉽고, 빠르고, 간편하게 개발할 수 있게 각종 라이브러리들을 모아둔 도구이다. #컨텐츠제작에 맞는 툴 제작하려고하는 컨텐츠 특성, 종류에 따라 툴도 나뉜다. 예를들어 퀄리티있는 그림파일을 제작한다면, 포토샵툴이 필요하고, 영상을 제작한다면 파이널컷프로, 프리미어 같은 영상툴이 필요하다. 스프링부트도 마찬가지이다. java로 나의 홈페이지, 모바일웹 등 을 개발하기 위해서 필요한 여러툴 중에 하나일 뿐이다. #왜 스프링부트? 스프링부트가 아니어도 java웹어플리케이션을 만들 수 있다. 왜 스프링부트로 개발을 해야하냐고 묻는다면 몇가지 이유가 있다. 첫번째는 서버를 구축하는데 간편하다. 과거 스프링 mvc 프레임 워크를 사용할때는 톰켓 라이브러리를.. 2019. 10. 3.
c언어 기초4 #include #include //문자열 길이를 구하는 strlen 함수를 사용하기 위해서 #include // atoi 함수를 사용하기 위해 int main(int argc, const char * argv[]) { //배열포인터 //data 배열은 1 - 5 까지의 값을 저장하고 있다. char data[5] = {1,2,3,4,5}; //합산에 사용할 result 변수는 0으로 초기화 한다. int result = 0, i; char *p = data; // data배열의 시작위치를 포인터 변수 p에 저장한다. //5번 반복하면서 포인터 p를 사용하여 배열의 각 항목을 result 변수에 합산 for (i = 0; i data[1] -> ... } //합산한 결과를 출력한다. printf("dat.. 2019. 5. 22.
c언어 기초 3 #include #include //문자열 길이를 구하는 strlen 함수를 사용하기 위해서 #include // atoi 함수를 사용하기 위해 //14 - 10 문자를 정수로 변환 int ArrayToInteger(char string[]){ int count = 0, num = 0; //문자열이 끝날때 까지 반복 while (string[count] != 0) { //반복할 때마다 이전 값에 10을 곱해서 자릿수를 증가시킴 num = num * 10 + string[count] - '0'; count++; } return num; } /* buffer : 사용자가 입력한 문자열을 저장할 배열 limit : 최대 입력 가능한 문자개수 1반환 : 정상입력 0반환 : 제한된 개수만 받았다 */ int Ge.. 2019. 5. 21.
c언어 기초2 #include #include int result; //전역변수, 특별한 초기화 값이 없으면 0으로 초기화됨 //배열 길이 구하기- 5 //매개변수 data의 [ ] 의 숫자는 적지 않아도 된다. 전달되는 배열의 크기에 영향을 받기 때문에 어떤 숫자를 적어도 무방하다. int GetStringLength(char datas[]){ int count = 0; /* 0이 나올 때까지 문자의 개수를 더한다 */ while (datas[count]) { printf("배열안의 글자는 : %c \n" , datas[count]); /* 배열안의 글자는 : h 배열안의 글자는 : a 배열안의 글자는 : p 배열안의 글자는 : p 배열안의 글자는 : y */ count++; } return count; } //st.. 2019. 5. 17.
c언어 기초1 #include //더하기 함수 int Sum(int value1, int value2){ int result = value1 + value2; return result; } int main(int argc, const char * argv[]) { //step 6 자료형 - int day; //int형 변수 선언 day = 17; //int형 변수에 값 대입 printf("오늘은 몇일 ? : %d 일 \n" , day ); //출력 : 오늘은 몇일 ? : 17 일 int sumResult; sumResult = Sum(5, 6); printf("두 수를 더한 값 : %d \n" , sumResult); //출력 : 두 수를 더한 값 : 11 //문자 더하기 putchar('m'); putchar('y'.. 2019. 5. 16.
AVCaptureVideoDataOutput을 이용해서 카메라 만들기 3 - 녹화 AVCaptureVideoDataOutput을 이용해서 카메라 만들기 3 - 녹화 로직 작성 순서는 아래와 같다 //녹화 step1 //IDCaptureSessionPipelineViewController클래스 - 녹화,정지 토글 버튼 기능 - (IBAction)toggleRecording:(id)sender { NSLog(@"IDCaptureSessionPipelineViewController - toggleRecording 버튼"); if (_recording) { [_captureSessionCoordinator stopRecording]; } else { //잠자기 모드 비활성화 [UIApplication sharedApplication].idleTimerDisabled = YES; //아직 세션.. 2019. 4. 17.