본문 바로가기

전체 글

(611)
[Git] branch생성 후 push하기 git checkout -b 브런치이름 git add . git commit -m "어쩌구" git push origin 브런치이름 [Git] 브랜치 생성하기 & 원격 저장소에 push 하기 branch 생성하기&전환하기 git bash 창을 열고 아래와 같이 입력하기 (원하는 작업 폴더로 이동) $ git branch $ git branch ychaen ychaen 이라는 이름의 branch를 생성한다 생성한 브랜치로 이동하기 $ git chec.. ychae-leah.tistory.com
[BOJ] 2261 가장 가까운 두 점 이 문제 학부 때 알고리즘 시간에 들었던 문제이다. 들었지만 전혀 이해 안가는 문제였는데 이제서야 이게 분할정복이라는 것을 어렴풋이나마 이해했다. 2261번: 가장 가까운 두 점 첫째 줄에 자연수 n(2 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 줄에는 차례로 각 점의 x, y좌표가 주어진다. 각각의 좌표는 절댓값이 10,000을 넘지 않는 정수이다. 여러 점이 같은 좌표를 가질 수도 www.acmicpc.net BOJ 2261:: 가장 가까운 두 점 – 분할 정복 (Closest Pair Problem) – The Casterian http://acmicpc.net/problem/2261 모든 쌍 다 고려하기 점 두 개를 고르는 방법은 $\frac{n(n-1)}{2}$가지니까, 각각에 대해 모..
[C++] vector, reserve(), resize() reserve()는 공간이 예약된다. 배열을 만들때 int array[크기] 하는것과 같다. 만약 앞으로 데이터가 자주 추가된다면 벡터가 가득 찼을때 스스로 공간을 늘리지 않기 때문에 성능을 더 향상할 수 있다. 만약 전부 찬상태에서 또 집어넣으면 늘어난다. resize()는 공간 예약 + 안의 모든 공간을 특정한 값으로 채운다. 변수를 만들때 쓰레기값이 없게 하기위해 NULL로 초기화 하는것과 비슷하다. ex) int array[10] = {0 ,} 현재보다 큰 공간을 예약하면 그만큼 더 집어넣는다. ex) 5개가 들어있는 상태에서 resize(10)하면 5개가 더들어감 -> 5 + 5 = 10 용량이 딱 정해져 있다. 더들어 오게 된다면 버려지게 된다. vector resize()와 reserve()..
[Linux] mv [참고사항] touch touch 는 파일의 날짜정보를 변경하는 명령어로 touch [파일명] 으로 비어있는 파일을 생성할 수 있습니다.
[Linux] Cmake 업데이트 [Ubuntu] CMake 업데이트 하는 방법 nipa에서 지원 받은 서버에 카카오에서 딥러닝 기반으로 개발한 Khaiii 형태소 분석기를 설치하려고 하던 중 (PythonHome) ubuntu@nipa2020-0000:~/somjang-utils/khaiii/build$ cmake .. CMake Error at CMakeLi.. somjang.tistory.com
[C] 매개변수 배열의 크기 실제로 포인터 변수는 항상 4 / 8 바이트의 정해진 크기를 갖습니다. 여기서 4 / 8 바이트는 long형과 마찬가지로 32비트 운영체제에서 4바이트, 64비트 운영체제에서 8바이트를 의미합니다. 구름EDU - 모두를 위한 맞춤형 IT교육 구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/ edu.goorm.io 배열을 함수의 매개 변수로 사용할 때 주의할 점 : C 언어 관련 전체 목차 http://blog.naver.com/tipsware/2210108319691. 일반 변수를 함수의 매개 변수... blog.naver.com 포인터가 어렵나요? (네) ..
[C & C++] 함수에서 배열 매개변수 사용하기 C 언어 코딩 도장: 64.1 배열 매개변수 사용하기 64 함수에서 배열 매개변수 사용하기 함수에서 배열을 매개변수로 사용하면 연속된 값을 전달할 수 있고, 전달한 배열의 요소를 함수 안에서 변경할 수 있습니다. 이번에는 1차원 배열과 2차원 dojang.io
lhs, rhs 연산자 함수를 만들 경우 함수의 매개변수를 적어줄때 변수 이름으로 lhs(Left Hand Side) 와 rhs(Right Hand Side) 를 많이 사용한다. 매개변수가 두개일 경우 첫번째 매개변수에 lhs, 두번째 매개변수는 rhs 로 사용하고 매개변수가 하나일 경우 rhs 로 대부분의 개발자들이 많이 쓰고있다. 여기서 궁금한 것 한가지 나라면 매개변수가 하나일땐 lhs 로 사용할것 같다는것이다. 왜냐하면 사람이 글을 쓸때 왼쪽부터 오른쪽으로 쓴다. 코드도 한줄만 보면 왼쪽에서 오른쪽으로 짠다. class CBase 이것만 봐도 시작은 맨 왼쪽의 c 이다. 그렇다면 첫번째 매개변수는 lhs 로 사용 하는게 더 맞는것이 아닐까 ? 왜 대부분의 사람들은 rhs 로 사용을 하고있을까 그 이유가 궁금해졌다..
ARM assembly ARM 명령어 공부 ipad2에는 A5라는 CPU가 탑제되어 있습니다 ARM 회사에서 만들었기 때문에 리버싱을 하려면 당연히 ARM CPU에 대해서 적당한 지식이 있어야합니다. 여기선 조금씩 알아보고 더욱 자세한 내용은 ARM CPU ezbeat.tistory.com
[Basic] cpu, core, processor 2 1. 컴퓨터 구조와 기능 컴퓨터 구조 컴퓨터 구조는 위에처럼 크게 4가지로 나눠서 볼 수 있습니다. CPU : 중앙처리장치. 데이터를 처리하는 역할 Memory : 데이터를 저장하는 기능을 수행 I/O : 컴퓨터와 외부장치 사이에 데이터를 교환하는 기능을 수행 System Bus : 위의 모든 컴퓨터 시스템 구성요소들을 연결하여 데이터 전송을 수행 컴퓨터 기능 컴퓨터의 기능또한 크게 4가지로 나눠서 생각해볼 수 있습니다. Data Processing : 데이터 연산 Data Storage : 데이터 저장 Data Movement : 데이터 통신, 이동 Control : 제어(명령수행, 리소스 관리 등) 2. CPU 구성 Processor chip 안에는 다음과 같이 3가지 종류가 있을 수 있겠습니다. s..
[Basic] cpu, core, processor 1 CPU(Central Processing Unit, 중앙 처리 장치) 컴퓨터는 크게 CPU, RAM, 하드디스크 정도로 구분할 수 있겠는데요. 이 요소를 사람에 비유하면 RAM은 단기기억, 하드디스크는 장기기억, CPU는 사고를 담당한다고 볼 수 있습니다. CPU의 사고는 중요한 3가지 기능을 말하는 것인데요. 그것은 기억, 연산, 제어를 말합니다. 컴퓨터를 뜯어보면 쿨러 근처에 아주 작은 칩(마이크로프로세서) 모양의 CPU가 있는데요. 그게 전체 컴퓨터의 논리적 사고를 처리합니다. 그 작은게 이 모든 것을 다한다는게 참 대단한 것 같아요. 프로세서(Processor) 컴퓨터 운영을 위해 기본적인 명령어들을 처리하고 반응하기 위한 논리회로를 말합니다. 크게 소프트웨어의 신호를 받아 다른 하드웨어 부분으로..
offset 오프셋 (Offset) offset …을 상쇄하다, 벌충하다, 상쇄하는 것 출발, 최초, 시초(outset) 분가(分家), (종족의) 지족(支族), 분지(分枝); (산의) 지맥; (일반적으로) 파생물 오프셋이란, 두 번째 주소를 만들기 위해 기준 genesis8.tistory.com
[Git] 계정 이름 변경 [GitHub] 깃허브 계정 이름 변경하기 깃허브를 사용하다가 계정 이름을 변경하는 방법이 있길래 공유해 보겠습니다. 이 방법은 예상치 못한 문제가 생길 수 있으니 꼭 필요한 경우에만 진행하세요! 먼저 깃허브 홈페이지로 이동해 steady-hello.tistory.com
[Git] 원격저장소 파일 삭제 폴더를 제거할 때 필요한 명령어는 다음과 같습니다. git rm --cached -r 폴더명 그리고 파일을 제거할 때는 다음과 같이 명령해주면 됩니다. git rm --cached -r 파일명 또는 git rm --cached 파일명 여기서 --cached는 원격저장소의 폴더 또는 파일을 삭제한다고 알려주는 옵션입니다. 만약 --cached가 없으면 로컬저장소의 폴더 또는 파일도 삭제합니다. 그런데 로컬저장소에서는 꼭 필요한 파일이거나 폴더일 수 있기 때문에 잘 판단해서 --cached를 넣어줘야 합니다. 여기서 로컬저장소에서 꼭 필요한 파일이나 폴더에는 코드를 실행하기 위해 꼭 필요한 패키지, 라이브러리, 실행파일 같은 것들입니다. 그러나 개발환경이 조금씩 다른 다른 협업자들을 위해서 이러한 파일이나 ..
ARM Neon ISA 카이제곱 vision0814.tistory.com ARM NEON 优化 原贴:ARM NEON Optimization. An Example将RGB图像转为灰度图,作者运用NEON优化,速度大幅提升。这里来学习一下如何使用NEON。 Since there is so little information about NEON optimizations out there I tho… zhuanlan.zhihu.com
Little Endian, Big Endian big endian 가장 중요한 앞자리의 수가 메모리의 앞에서부터 차례로 저장되어 있다. little endian 가장 중요한 앞자리의 수가 메모리의 뒤에서부터 있다. 가장 중요하지 않은 뒷자리 수가 메모리의 앞에서부터 차례로 저장되어 있다.
UART 와 USART의 차이 UART (Universal Asynchronous Receiver Transmit) : 비동기 모드로서 사용되는 시리얼통신 USART (Universal Synchronus Receiver Transmit) : 동기 모드로서 사용되는 시리얼통신 # UART 와 USART의 차이 = 동기와 비동기 모드의 차이 동기 모드는 데이터 동기화를 위해 별도의 클록 신호를 전송한다. AVR에서 데이터 동기화를 위한 클록 신호는 XCK 핀을 통해 전달된다. 동기 모드에서는 비동기 모드에서 데이터 동기화를 위해 사용하는 시작 비트(start bit)와 정지 비트(stop bit)는 필요하지 않으므로 데이터 전송 효율을 높일 수 있는 장점이 있지만, 클록 핀을 필요로 하는 단점이 있다. 비동기 모드는 별도의 클록을 사용..
UART, USART 실습 kangssu.com/wed07/post/2016-10-14-7%EC%A1%B0-6%EC%A3%BC%EC%B0%A8-%EC%8B%A4%ED%97%98.html 7조 6주차 실험 개요 비동기(UART) 통신에 대해서 알아보는 실험이다. 다른것으로 USART 가 있는데 이것은 동기화 통신이라고 UART, 즉 비동기까지 지원하는 통신방법이다. 이번 실험에서는 UART 를 이용하여 테스트 kangssu.com
Baud Rate, Bit Rate란? 1. Bit Rate Bit Rate는 초당 데이터 비트(0 or 1)를 얼마만큼 전송할 수 있는지 나타내는 값. BPS(Bit Per Second)로도 나타냄. PCIe나 버스의 데이터 전송 속도를 나타낼 때 주로 사용 2. Baud Rate 전기통신 및 전자공학에서 보(baud, 단위 기호 "Bd")는 초당 펄스 수 또는 초당 심볼 수를 뜻한다. Baud Rate는 초당 많은 심볼(Symbol, 의미 있는 데이터 묶음)을 얼마만큼 전송할 수 있는지 나타내는 값. Teraterm 같은 시리얼 통신에서 115200과 같은 수치로 사용 1 킬로 보(kBd)=1,000Bd 의 전송 속도는 초당 1,000심볼의 심볼 속도와 같다. 심볼이 ascii code 라면, 1 baud는 8bit이다. ※ 보오는 1초당..
[C++] virtual 가상 함수는 기본 클래스(상속되지 않은 클래스) 내에서 선언되어 파생 클래스에 의해 재정의되는 맴버 함수입니다. 포인터(Pointer) 또는 기본 클래스에 대한 참조(Reference)를 사용하여 파생 클래스의 객체를 참조하면 해당 객체에 대해 가상 함수를 호출하고 파생 클래스의 함수를 실행할 수 있습니다. 이는 주로 실행시간(Runtime)에 함수의 다형성(Polymorphism)을 구현하는데 사용됩니다. 가상 함수는 기본 클래스내에 virtual 키워드로 함수를 선언합니다. parent 클래스를 가리키는 포인터 p를 선언하고, child 클래스의 객체 c를 선언했습니다. 이 포인터 p는 c객체를 가리킵니다. 몸체는 parent 클래스지만 실제 객체는 child 클래스입니다. 이 포인터 p를 이용하여 ..
[C++] auto C++ 11에서 타입 추론 (Type inference in C++ 11) C++ 11에서 auto 키워드는 유용하다. 5.0이 부동 소수점 숫자 리터럴이라는 것을 이미 알고 있다면, 왜 d의 타입(=자료형)을 double이라고 명시적으로 선언해야 할까? 변수를 초기화할 때 사용하는 값을 기준으로 적절한 타입을 추론하도록 하면 편하지 않을까? auto 키워드는 선언된 변수의 초기화 식을 사용하여 해당 형식을 추론하도록 컴파일러에 지시한다. 즉, auto 키워드를 사용하면 초깃값의 형식에 맟춰 선언하는 인스턴스(변수)의 형식이 '자동'으로 결정된다. 이것을 타입 추론(type inference)이라고 한다. 주의: 이 기능은 생성 시 변수를 초기화할 때만 작동한다. 초기화 값을 사용하지 않고 생성된 변수는..
[C++] 스마트 포인터, unique_ptr C++ 프로그램에서 new 키워드를 사용하여 동적으로 할당받은 메모리는, 반드시 delete 키워드를 사용하여 해제해야 합니다. C++에서는 메모리 누수(memory leak)로부터 프로그램의 안전성을 보장하기 위해 스마트 포인터를 제공하고 있습니다. 스마트 포인터(smart pointer)란 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 줍니다. 스마트 포인터의 동작 보통 new 키워드를 사용해 기본 포인터(raw pointer)가 실제 메모리를 가리키도록 초기화한 후에, 기본 포인터를 스마트 포인터에 대입하여 사용합니다. 이렇게 정의된 스마트 포인터의 수명이 다하면, 소멸자는 delete 키워드를 사용하여 할당된 메모리를 자동으로 해제합니다. 따라서 new 키워드가 반환..
[C++] 깊은 복사 , 얕은 복사 얕은 복사 코드에서 name은 주소값을 참조하기때문에 복사를 하였더라도 같은 주소를 참조하게된다. 그렇기 때문에 name을 바꿨을때 A,B객체의 name값이 둘다 바뀌게된다. 또한 소멸자가 호출될 때 name은 같은 메모리를 참조하기때문에 한번 delete된 메모리를다시 delete하기때문에 오류가 발생한다. 깊은 복사 이번에는 복사 생성자에서 새로운 메모리를 할당하기때문에 원본과 복사본의 참조 공간이 다르며 소멸자도 오류가 발생하지않는다. C++ 얕은 복사와 깊은복사 Intro lesslate.github.io [ C++ ] 깊은 복사( deep copy )와 얕은 복사 ( shallow copy ) 얕은 복사( shallow copy )는 디폴트 복사 생성자에 의한 멤버 대 멤버의 복사 방식을 말한다..
[Git] commit 옵션 -m : vim에서 별도의 메세지를 작성할 필요없이 인라인 형식으로 바로 커밋 메세지 작성. -a : 별도의 add명령어를 사용하지 않고 수정된 파일에 대해 add, commit을 한번에 수행함. (단, 한번도 add되지 않은 파일은 add를 따로 작업 해줘야함.) -am : a, m의 옵션을 합친 형태. [Git] 메뉴얼 보는법, commit의 옵션, git의 3가지 공간 메뉴얼 보는법 git의 다양한 사용법을 알고 싶을 때 command창에서 git의 메뉴얼을 볼 수 있습니다. $ git --help git --help 명령어를 치면 명령어나 옵션에 대한 설명을 확인할 수 있습니다. (영어...라니 yuja-kong.tistory.com
[Git] git pull (fatal: refusing to merge unrelated histories) 에러 원격 저장소를 remote로 설정하고 바로 push를 하면 몇가지 오류가 발생할 수도 있다. 예를 들어 아래와 같은 오류 메시지이다. rejected : push가 거부되었다. master -> master : 로컬 저장소의 master 브랜치의 변경 사항을 원격 저장소의 master 브랜치에 반영하려 했는데 non-fast-forward : 원격 저장소의 master 브랜치가 로컬 저장소의 버전보다 이전 버전이 아니다. 라는 의미이다. 즉, 오류가 발생한 원인은 github에서 새로운 프로젝트를 생성하면서 만들어진 원격 저장소의 readme.md 파일때문 일 것이다. 더 정확히 말하면 readme.md 파일의 존재가 문제가 되는 것이 아니고, 원격 저장소에서 이루어진 readme.md를 추가하는 커밋이..
[Git] clone과 fork 차이점 git을 push하는데 기존의 repository의 내용이 담겨있어야 한다는 것을 이해하지 못했다. 그래서 git init, git remote add까지는 했지만 처음 시작을 깨끗한 상태에서 한 것이 아니라 그냥 내가 push하길 원하는 파일 이외에도 각종 잡다한 파일이 모두 들어있는 저장소였던 것이다. git clone과 git fork의 차이점을 보면서 아, 내가 뭔가 잘못생각하고 있었구나!를 깨달았다. fork fork는 다른 사람의 Github repository에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 때 해당 respository를 내 Github repository로 그대로 복제하는 기능이다. fork한 저장소는 원본(다른 사람의 github repository)와 연결되어 ..
[Git] commit 목록 확인 git log --branches --not --remotes git log --branches --not --remotes --oneline --graph --decorate git에서 push하지 않은 커밋 확인 :: Outsider's Dev Story git은 svn과는 달리 commit을 한 뒤에 나중에 모아서 push를 하기 때문에 작업을 하다보면 어디까지 푸시를 했는지 헷갈리는 경우가 있습니다. 브랜치를 왔다갔다 하면서 작업하면 더 헷갈리기 마련 blog.outsider.ne.kr
[C++] Rvalue 참조 선언자: && m.blog.naver.com/PostView.nhn?blogId=0511cjh&logNo=221590246985&proxyReferer=https:%2F%2Fwww.google.com%2F
[C++] 참조형 변수 : & References vs pointers 참조형과 포인터는 흥미로운 관계에 있다. 참조형은 접근할 때 암시적으로 역참조되는 포인터와 같은 역할을 한다. (참조형은 내부적으로 포인터를 사용하여 컴파일러서 구현된다.) A brief review of l-values and r-values '01.02 - 변수, 초기화 및 할당' 포스트에서 l-value와 r-value를 공부한 적이 있다. 요약하면, l-value는 메모리 주소를 가진 객체이고 r-value는 메모리 주소가 없고, 표현식 범위에만 있는 임시 값이다. 참조형 변수 (Reference variable) 지금까지 두 가지 변수 타입을 공부했다. 일반 변수(normal variable): 직접 값을 보유. 포인터(pointer): 다른 값의 주소(..
[C++] 멤버 이니셜라이저 위에서 쓰인 멤버 이니셜라이저에 대해 간단히 알아보도록 합시다. 이 멤버 이니셜라이저는, 방금처럼 부모 클래스의 멤버 변수를 초기화 하기 위해서 생성자 함수를 호출한다던가, 클래스 내의 변수를 초기화한다던가, const 변수를 초기화 할때도 사용됩니다. 멤버 이니셜라이저는 생성자의 몸체 부분보다 먼저 실행된다는 특징을 가지고 있습니다. 간단히 멤버 이니셜라이저에 대한 예제를 살펴보도록 합시다. 코드를 살펴보시면, 5~15행에 memInit란 클래스가 정의되어 있고, 그 안에는 num1, num2라는 private 멤버와 생성자, num1과 num2를 출력하는 ShowInfo 함수가 존재합니다. 10행을 잘 보시면, 콜론(:) 연산자 뒤에 "num1(_num1), num2(_num2)"와 같이 쓰였는데, ..