반응형

SW 2314

Linux 사진/이미지 editor 종류 및 추천

이번 포스팅에서는, 다른 리눅스 배포에서 이용 가능한 사진 편집 소프트웨어에 대해 포스팅한다. 사진 편집자뿐만 아니라 리눅스 사용자들이 일반적으로 사용되는 편집기들이다. GIMPGNU 영상조작 프로그램(GIMP)은 다음과 같은 기능이 있는 오픈 소스 사진 편집 툴이다. 이미지 구성사진 찍기이미지 제작 GIMP는 제3자 플러그인을 통해 사용자 정의가 가능하고 플러그가 가능하며 그래픽 디자이너, 사진가, 그래픽 일러스트레이터, 심지어 과학자까지 사용자 범위에 포함된다. 포토샵 WINEWindows에서 Linux로 마이그레이션한 많은 사용자는 이 기능을 즐길 수 있으며, 이 도구는 가장 인기 있는 사진 편집 도구 중 하나이다. 리눅스에 직접 설치할 수는 없지만 WINE을 사용하여 여러 리눅스 배포에서 사용할 ..

SW/리눅스 2019.01.14

리눅스 비디오 플레이어 종류 및 추천

오디오와 비디오는 오늘날 우리가 보고 있는 정보 공유의 일반적인 원천이다. 어떤 제품이나, 공동체 사이의 정보 공유, 그룹의 사회화의 방법, 지식의 공유 등 오디오와 비디오는 아이디어를 공유하고, 증명하고, 가능한 모든 단계를 나타내고자 하는 표현적인 세상에서 훌륭한 자리를 차지하고 있다. 비디오 플레이어는 사람들이 비디오를 볼 수 있는 통로이다. 우리 삶에는 비디오들을 사용하는 많은 경우가 있는데, 그 중 몇 가지는 영화 보기, 온라인 튜토리얼, 재미와 웃음(즉, 재미있는 짧은 비디오)으로 엄청난 수의 사람들에게 사회적 메시지를 방송하는 것이다. 비디오 플레이어는 우리가 원하는 대로 비디오를 보고 심지어 사용자 편집할 수 있는 수단을 제공한다. 아래는 리눅스에서 이용 가능한 몇몇 오픈소스 비디오 플레이..

SW/리눅스 2019.01.14

Linux 명령줄 텍스트 편집기 종류 및 추천

명령줄을 통해 파일을 빠르고 효과적으로 편집하는 방법을 아는 것은 모든 리눅스 시스템 관리자에게 매우 중요하다. 파일 편집은 구성 파일, 사용자 파일, 텍스트 문서 또는 편집해야 하는 파일 등 매일 수행된다. 그렇기 때문에 좋아하는 명령줄 텍스트 편집기를 선택하여 마스터하는 것이 좋다. 다른 텍스트 편집기와 함께 작업하는 방법을 아는 것은 좋지만, 필요할 때 더 복잡한 작업을 수행할 수 있도록 적어도 하나를 숙달해야 한다. 이번 포스팅에서는 Linux에서 가장 일반적인 명령줄 텍스트 편집기를 보여주고 장단점에 대해 알아보겠다. Vi/Vim 편집기첫 번째는 악명 높은 Vi/Vim이다. 이것은 텍스트에서 많은 다양한 작업을 수행할 수 있는 매우 유연한 텍스트 편집기다. 예를 들어 정규식을 사용하여 vim을 ..

SW/리눅스 2019.01.13

Linux용 무료 클라우드 스토리지 소프트웨어 종류 및 추천

클라우드는 매우 크고 넓은 지역에 존재하는 것을 나타낸다. 기술 분야에서 클라우드는 가상 스토리지, 애플리케이션 호스팅 또는 물리적 공간 가상화와 같은 형태로 최종 사용자에게 서비스를 제공한다. 현재 클라우드 컴퓨팅은 데이터 스토리지 또는 고객에게 이점을 제공하는 대기업뿐만 아니라 소규모 조직에서도 사용되고 있다. 주로 세 가지 유형의 서비스가 클라우드와 연계되어 제공된다. 사용자가 데이터를 저장하기 위해 공개적으로 사용 가능한 다른 대규모 조직의 클라우드(SaaS)가 있다. 또 PaaS(Platform as a Service)에 액세스하여 데이터를 저장할 수 있도록 허용하는 앱 또는 소프트웨어가 있다. IaaS(Infrarastructure as a Service)는 물리적 시스템을 가상화하고 이를 고..

SW/리눅스 2019.01.13

Linux 웹 브라우저 종류 및 추천

웹 브라우저는 웹 서핑을 위한 인터페이스를 제공하는 소프트웨어다. 1991년 경에 소개되면서 오늘날 까지 여러 번 발전했다. 이전에는 이미지와 그래픽 컨텐츠를 거의 가지고 있지 않은 텍스트 기반 사이트들이 대부분이었기 때문에, 초기 브라우저들 중 일부인 Lynx, Netscape, Opera로 충분하게 이용되었다. 그러나, 오디오, 비디오, 이미지 그리고 심지어 플래시 콘텐츠의 지원을 위한 기술의 발달과 함께, 브라우저 또한 콘텐츠를 지원하기 위해 발전할 필요가 있다. 이것이 오늘날 브라우저의 발전을 가져왔다. 최신 브라우저는 웹 사이트 내용을 표현하고 적절한 형식으로 표시하기 위해 Geeko, Trident, WebKit, KHTML 등과 같은 웹 브라우저 엔진, 랜더링 엔진을 포함한 많은 소프트 웨어..

SW/리눅스 2019.01.12

Linux용 Git Client GUI 소개 및 추천

Git은 소프트웨어 개발과 여러 가지 다른 버전 제어 작업을 위한 무료 오픈 소스 분산 버전 제어 시스템이다. 속도, 효율성 및 데이터 무결성을 기반으로 하는 소규모 프로젝트부터 대규모 프로젝트까지 모든 것을 처리할 수 있도록 설계되었다. 리눅스 사용자는 주로 명령줄을 통해 Git를 관리할 수 있지만, 리눅스 데스크톱에서 Git의 효율적이고 안정적인 사용을 촉진하지 못하고 모든 명령줄 작업을 제공하지 않는 GUI Git 클라이언트가 있다. 따라서 다음은 Linux 데스크톱 사용자를 위한 GUI를 갖춘 최고의 Git 프런트엔드 목록이다. GitKrakenGitKraken은 리눅스용 교차 플랫폼, 효율적인 Git 클라이언트 입니다. Linux와 Mac OS X, 그리고 Windows와 같은 Unix와 같은 ..

SW/Git 2019.01.12

Windows용 Git GUI 클라이언트 소개 및 추천

Git은 의심할 여지 없이 가장 많이 사용되는 버전 관리 시스템이다. 가장 큰 회사의 프로젝트 대부분은 Git 저장소에서 운영되고 있다. 응용프로그램 코딩이 쉬워질 뿐만 아니라 프로젝트에서 팀과 효율적으로 작업할 수 있도록 몇 가지 협업 기능도 지원한다. Git은 또한 모든 개발자들이 반드시 가져야 하는 기술이다. 모든 작업과 명령을 이해하는 것은 때때로 초보자에게 어려울 수 있다. 그러나 일련의 툴이 GUI 대안을 제공함으로써 이를 단순하게 만들고 있다. 이번 포스팅에서는 Windows 운영 체제에서 사용할 수 있는 가장 우수한 Git GUI 클라이언트 중 일부를 소개한다. GitHub Desktop아마도 가장 유용하다. 원격 저장소가 GitHub에 의해 호스트되는 경우 이 도구를 찾아라. GitHub..

SW/Git 2019.01.11

R, RStudio 설치 방법

데이터를 다루려면 얘기했지만 뭔가 도구가 필요하다. 엑셀을 가지고 할 수는 없고, 데이터를 처리하고 가공하고 분석할 수 있는 뭔가 도구가 필요하다. 그중에 학습하려고 하는 R이라고 하는 것이 굉장히 중요한 도구로 사용이 되고 있다. R 스튜디오는 이 R을 잘 사용할 수 있도록 도와주는 보조 도구인데, 이번 포스팅에서는 이 R과 R 스튜디오를 설치하고 간단한 사용법을 익히도록 하겠다. 이 R은 오픈 소스 소프트웨어이기 때문에 R 사이트에 방문을 하면 여러분이 다운로드를 받을 수가 있다. 그래서 첫 페이지의 메인 페이지에서 다운로드를 클릭을 하면 다운로드 받을 수 있는 사이트가 나온다. 워낙 전 세계적으로 널리 쓰이는 것이다 보니 나라별로 다운로드 받을 수 있는 사이트가 있다. 사실 아무 데서나 받아도 되는..

SW/R 2019.01.10

빅데이터 개념

데이터, 그러면 우리가 흔히 듣는 용어 중에 빅 데이터라고 하는 것을 연관 지어서 생각할 수밖에 없다. 빅 데이터, 그러면 빅이라는 것이 크다. 양이 많은, 그런 데이터를 빅 데이터, 이렇게 쉽게 이해를 할 수가 있다. 데이터를 분석하는 차원에서 빅 데이터가 갖는 특징들을 이해하면 큰 도움이 될 것 같아 이 빅 데이터의 어떤 특성들을 이해하고 지나가도록 하겠다. 이 빅 데이터란 용어는 데이터의 어떤 규모에 초점을 맞춘 정의다. 정의하는 사람마다 다르다. 보통 많이 회자되는 그런 정의는 기존의 데이터베이스 관리 도구의 데이터 수집, 저장, 관리, 분석 역량을 넘어서는 규모의 데이터가 일반적으로 빅 데이터다. 과거에는 데이터를 관리할 때 데이터베이스라는 데다 넣어서 분석했다. 그렇게 할 수 있는 수준을 넘어..

SW/R 2019.01.09

데이터 시대 개념

우리가 R 언어를 본격적으로 학습하기에 앞서서 데이터라는 것이 왜 중요하고 또 데이터를 분석하는 것이 왜 필요한가? 요즘 우리가 살고 있는 이 시대를 설명할 때, 데이터의 시대에 살고 있다. 얼마 전까지만 해도 우리는 정보화 시대에 살고 있다. 거기에서 한발 더 나아가서 데이터의 시대에 살고 있다. 우리가 데이터의 시대에 살고 있다, 이게 무슨 뜻일까요? 우리의 어떤 생활환경을 둘러싸고 있는그 모든 것들이 그 데이터라고 하는, 데이터 소스하고 연결돼 있고, 또 우리의 삶의 많은 부분들이 디지털 데이터화 되고 있다. 우리가 사용하는 이메일, SNS, 휴대폰, 그런 것에 대한 기록, 신용카드 거래 기록, 또 병원에 가면 여러분이 병원에서 치료한 것들에 대한 기록이 남는다. 혹시 여러분이 학교 다니고 있다면 ..

SW/R 2019.01.09

C++11 : 추상화와 캡슐화, 생성자와 소멸자 (개념 및 예제)

C++를 필두로 하는 객체지향 프로그래밍의 중요한 개념인 추상화와 캡슐화에 대해 살펴보겠습니다. 추상화와 캡슐화는C++를 비롯한 객체지향 프로그래밍 언어에 공통으로 나타나는 특징입니다. 따라서 특별한 문법을 암기하는 것이 아니라 개념을 이해하고 이를 코드에 적용하는 훈련이 필요합니다. 추상화추상화란 사물을 사실적으로 표현하는 개념이 아니라 불필요한 부분을 제거하고 공통된 특징만 추출하여 간결하고 이해하기 쉽게 만드는 작업을 의미합니다. 추상화는 객체지향 언어의 주요 특징 중에서도 첫 번째로 꼽습니다. 그 이유는 클래스를 만드는 과정과 밀접한 관계가 있기 때문입니다. 즉 표현하려는 실생활에 대한 공통적인 특징을 속성과 기능으로 구분하고 각각 멤버 변수와 멤버 함수로 만들어서 클래스로 표현하는 과정을 추상화..

SW/C++ 2019.01.06

C++11 : 멤버 함수 선언과 정의 분리에 대해 알아볼까요? (개념 및 예제)

클래스의 멤버 변수는 클래스 내부에 선언한 변수이며, 클래스의 멤버 함수는 클래스 내부에 선언한 함수입니다. 객체를 생성하면 클래스의 멤버 변수는 객체의 속성이 되고, 클래스 멤버 함수는 객체의 기능이 됩니다. 이를 통해서 추상화를 구현할 수 있습니다. C에서 선언문은 보통 헤더 파일에 작성하고, 정의는 소스 파일에 작성해보았던 경험이 있을 것입니다. 마찬가지로 C++ 에서도 보통 헤더 파일에 클래스 멤버 변수와 함수를 선언하고, 소스 파일에 멤버 함수를 정의하는 방식을 따릅니다. #include using namespace std;#define NAME_LEN 20#define SEX_LEN 10#define JOB_LEN 20#define CHARACTER_LEN 20class Chulsoo { pr..

SW/C++ 2019.01.05

C++11 : 클래스와 객체에 대해 알아볼까요? (개념 및 예제)

클래스가 왜 필요할까요? 컴파일러가 int형의 모든 속성과 연산 기능에 대해 이미 정의했으므로 컴파일러가 알아서 프로그램을 수행합니다. 하지만 1실생활의 여러 상황을 프로그래밍하려면 int와 같은 기본 자료형으로는 표현에 한계가 있습니다. 이러한 한계를 극복하려면 앞서 배운 C++ 구조체처럼 사용자가 직접 정의할 수 있는 자료형이 필요합니다. 실생활의 상황을 표현하는 자료형을 사용하는 것은 추상화라는 개념의 출발이라 할 수 있습니다. 추상화란 실생활에서 객체의 속성과 기능을 표현하는 개념이라고 양지해주세요. C++ 클래스 역시 실생활의 상황을 추상화할 수 있는 사용자 정의 자료형인 것입니다. C++ 클래스와 객체 개념 바로 알기이전에 포스팅하고 다루어 보았던 구조체 예제를 클래스로 바꾸어 보겠습니다. #..

SW/C++ 2019.01.04

C++11 : 구조체에 대해 알아볼까요? (개념 및 예제)

이번 포스팅에서는 C에서의 구조체를 이해하시고 있다는 가정하에 C++ 구조체에 대해 말씀드리겠습니다. 하지만 처음 보신다 해도 잘 이해하실 수 있을 것입니다. #include using namespace std; #define NAME_LEN 20#define SEX_LEN 10#define JOB_LEN 20#define CHARACTER_LEN 20 struct Chulsoo{ char name[NAME_LEN]; char sex[SEX_LEN]; char job[JOB_LEN]; char character[CHARACTER_LEN]; int age; bool marriageStatus; void introduce() { cout

SW/C++ 2019.01.03

C++11 : 람다 함수에 대해 알아볼까요? (개념 및 예제)

람다 함수는 인라인 함수처럼 복잡한 함수 호출 과정을 생략해서 시간을 절약할 수 있을 뿐만 아니라, 코드의 가독성까지 높여줍니다. 람다 함수는 C++11부터 사용할 수 있으면 고급 함수이므로 처음 배울 때는 어려울 수 있으므로 반복 학습이 필요합니다. 먼저 다음 예제를 살펴보겠습니다. 인라인과 람다 함수를 비교하였습니다. 코드가 다소 난해하다면 넘기고 읽으셔도 됩니다. #include using namespace std; class Chulsoo{public: void eat(int steakWeight); inline void eatInline(int steakWeight) { cout

SW/C++ 2019.01.02

C++11 : 인라인 함수에 대해 알아볼까요? (개념 및 예제)

인라인이라는 단어 그대로의 의미는 줄 안쪽을 의미합니다. 실제 인라인 함수의 의미와도 일맥상통합니다. 일반 함수와 호출 과정부터 비교해보며 예제를 통해 알아보겠습니다. 함수 호출은 보통 메모리상의 점프를 이용하며, 여러 가지 상태 정보 등을 저장하고 복원해야 하므로 내부적으로 복잡한 과정을 거칩니다. 인라인 함수를 사용하면 복잡한 함수 호출 과정을 단순하게 대체할 수 있습니다. 인라인 함의 문법은 다음과 같습니다. 일반 함수와 같은 형태이지만 inline 키워드로 시작하는 점이 다릅니다. inline 반환형 함수명(매개변수 목록); 인라인 함수가 앞에서 배운 일반 함수와 어떻게 다른지 다음 예제를 보면서 비교해보겠습니다. #include using namespace std; class Chulsoo{pu..

SW/C++ 2019.01.01

C++11 : 함수 오버로딩에 대해 알아볼까요? (개념 및 예제)

오버로딩은 사전 상에서는 짐을 많이 싣는다는 의미를 가지고 있습니다. 함수 오버로딩은 과연 무슨뜻일까요? 단어의 의미는 함수를 짐처럼 많이 싣는다고 생각할 수 있습니다. A 함수, B 함수, C 함수가 있다고 가정하겠습니다. 여러 함수를 하나의 장소, 즉 하나의 함수 이름에 쌓는 것을 함수 오버로딩이라고 설명할 수 있습니다. 함수 오버로딩은 객체지향의 특징 중 하나인 다형성이라는 개념과 일맥상통합니다. 함수의 다형성이란 하나의 함수를 다양한 형태로 나타내는 것을 의미합니다. 다양한 함수를 결합하는 방식에 대해 알아보겠습니다. #include using namespace std; class Chulsoo{public: void Eat(void); void Eat(int SteakNum); void Eat(..

SW/C++ 2018.12.31

무차별 대입 공격(Brute Force Attack)에 대한 방어 설계

해결 방안에 대한 설계 방어 방법1) 암호는 최소 10자리 이상을 사용.2) 암호에 특수문자를 사용하면 더욱 좋지만 길이가 짧다면 큰 의미가 없다.3) 무차별 공격의 경우 사전 공격을 가하기 때문에 사전 공격에 포함되는 단어들을 사용한 비밀 번호는 더욱 더 취약.4) 사전 공격과 무차별 공격을 동시에 실행하면 단어를 몇 개 조합하는 것도 쉽게 돌파 가능5) 영어의 경우 대문자, 한글의 경우 된소리의 자음을 섞는 방법도 효과적6) 일정 횟수 이상 암호를 잘못 입력할 경우 계정 일시동결7) 브루트 포스의 경우 무조건적으로 마구 대입하는 것이 아니라 비트 순서대로 대입하는 것. 따라서 아스키 코드 상에서 65인 대문자 A로 시작하는 비밀번호와 122인 소문자 z로 시작하는 비밀번호는 돌파당하는 속도가 두 배정..

SW/정보보호 2018.12.30

C++11 : 디폴트 매개변수에 대해 알아볼까요? (Default Argument)

디폴트 매개변수는 말 그대로 기본 매개변수를 의미합니다. 함수를 정의할 때 매개변수를 넣거나 안 넣으면 되지 왜 디폴트 매개변수가 필요할까요? 그러나 실제로 프로그래밍을 하다보면 항상 넣어줘야 하는 값 마저도 귀찮아 지는 날이 옵니다. 프로그래머는 아주 현명하고 게으른 사람들이 만드는 것이라고 교수님의 말씀이 생각납니다. 다음 예제를 살펴보겠습니다. #include using namespace std; class Chulsoo{public: int Eat(int SteakNum);}; int main(void){ Chulsoo chulsoo; chulsoo.Eat(); return 0;} int Chulsoo::Eat(int SteakNum){ cout

SW/C++ 2018.12.30

무차별 대입 공격(Brute Force Attack)에 대한 방어 프로젝트

1. 문제 정의무차별 대입 공격, 즉 브루트 포스 공격은 Encrypted된 암호를 Decrypt하여 암호를 찾아내는 것이 아니라 무차별적으로 암호를 입력하여 비밀 번호를 찾아내는 공격 방법을 의미한다. 이러한 무차별 대입 공격에 대한 예와 해결 방안에 대해서 찾아보고 설계한다. 2. 문제의 실제 사례최근에는 무차별 대입 공격에 대한 방비가 대체적으로 이루어져 있는 경우가 많기 때문에, 브루트 포스 공격은 원시적이고 효율적이지 않으며 쉽게 방어할 수 있는 공격방법으로 알려져 있다. 하지만 아이러니하게도 이 원시적이고 단순한 공격방법은 오히려 그 단순함 때문에 방비가 허술해지면 바로 그 모습을 드러내는데 실제로도 1~2년에 한 번씩 iCloud 해킹을 통한 할리우드 스타들의 사생활 사진 노출 등의 사고가 ..

SW/정보보호 2018.12.29
반응형