<blockquote>

  <p>이글은 2017년 7월에 작성 됨</p>

</blockquote>


<h1 id="마시멜로우-api-23-이상에서-권한-체크와-권한-요청하기">마시멜로우 API 23 이상에서 권한 체크와 권한 요청하기</h1>


<p>Android 6.0(API 레벨 23)부터 사용자는 앱이 설치될 때가 아니라 <strong>앱이 실행되는 중에 앱에 권한을 부여</strong>합니다. 이 접근방식에서는 사용자가 앱을 설치하거나 업데이트할 때 권한을 부여할 필요가 없으므로 앱 설치 과정이 간소화됩니다. 또한 사용자가 앱의 기능을 더 세부적으로 제어할 수 있습니다. 예를 들어, 기기 위치가 아니라 카메라에 대한 액세스 권한을 카메라 앱에 부여하도록 선택할 수 있습니다. 사용자는 앱 설정 화면으로 이동하여 언제든지 권한을 취소할 수 있습니다.</p>


<ul>

<li><p><a href="https://developer.android.com/training/permissions/requesting.html#perm-checkl">안드로이드 개발자 페이지 런타임에 권한체크</a></p></li>

<li><p><a href="https://developer.android.com/training/permissions/requesting.html#perm-request">안드로이드 개발자 페이지 런타임에 권한 요청</a></p></li>

</ul>


<h2 id="androidmanifestxml">AndroidManifest.xml</h2>


<p><code>androidmanifest.xml</code>에 필요로 하는 권한을 입력합니다.</p>


<pre class="prettyprint"><code class=" hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">uses-permission</span> <span class="hljs-attribute">android:name</span>=<span class="hljs-value">"android.permission.READ_CALENDAR"</span>/&gt;</span></code></pre>


<h2 id="mainactivityjava">MainActivity.java</h2>


<h3 id="권한-체크가-필요한-버전인지-확인">권한 체크가 필요한 버전인지 확인</h3>




<pre class="prettyprint"><code class="language-java hljs "><span class="hljs-keyword">if</span> (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.M){

    <span class="hljs-keyword">return</span>;

}</code></pre>


<p><code>protected void onCreate(Bundle saveInstanceState)</code> 아래에 다음과 같은 코드를 사용해서 권한 설정이 제대로 되어 있는지 확인합니다.0</p>


<pre class="prettyprint"><code class="language-java hljs "><span class="hljs-keyword">int</span> permissionCheck = ContextCompat.checkSelfPermission(<span class="hljs-keyword">this</span>,

        Manifest.permission.READ_CALENDAR);

<span class="hljs-keyword">if</span> (permissionCheck == PackageManager.PERMISSION_GRANTED){

    Toast.makeText(<span class="hljs-keyword">this</span>, <span class="hljs-string">"캘린더 권한이 있음"</span>, Toast.LENGTH_SHORT).show();

}<span class="hljs-keyword">else</span>{

    Toast.makeText(<span class="hljs-keyword">this</span>, <span class="hljs-string">"캘린더 권한이 없음"</span>, Toast.LENGTH_SHORT).show();

    <span class="hljs-keyword">if</span> (ActivityCompat.shouldShowRequestPermissionRationale(<span class="hljs-keyword">this</span>,Manifest.permission.READ_CALENDAR)){

        Toast.makeText(<span class="hljs-keyword">this</span>, <span class="hljs-string">"캘린더 권한설명이 필요함"</span>, Toast.LENGTH_SHORT).show();

ActivityCompat.requestPermissions(

                <span class="hljs-keyword">this</span>,

                <span class="hljs-keyword">new</span> String[] {Manifest.permission.READ_CALENDAR},

                <span class="hljs-number">1</span>);

    }<span class="hljs-keyword">else</span>{

        ActivityCompat.requestPermissions(

                <span class="hljs-keyword">this</span>,

                <span class="hljs-keyword">new</span> String[] {Manifest.permission.READ_CALENDAR},

                <span class="hljs-number">1</span>);

    }

}</code></pre>


<p>이제 앱을 실행하면 권한이 제대로 되었는지 체크 할 수 있습니다.</p>


<p>다음은 권한 체크의 결과 화면에 따른 이벤트를 줄 수 있습니다. 권한이 <code>승인</code>되었으면 어떻게 동작하고, <code>거부</code>하였을 동작하는 기능을 합니다.</p>


<p><code>CTRL</code>+<code>O</code> 키를 눌러서 아래와 같은 화면에서 onRequestPermissionResult 를 찾습니다.</p>


<p><img src="http://i.imgur.com/9MBT72U.png" alt="Imgur" title=""></p>


<pre class="prettyprint"><code class="language-java hljs ">

<span class="hljs-annotation">@Override</span>

<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onRequestPermissionsResult</span>(<span class="hljs-keyword">int</span> requestCode, @NonNull String[] permissions, @NonNull <span class="hljs-keyword">int</span>[] grantResults) {

    <span class="hljs-keyword">switch</span> (requestCode){

        <span class="hljs-keyword">case</span> <span class="hljs-number">1</span>: {

            <span class="hljs-keyword">if</span> (grantResults.length &gt; <span class="hljs-number">0</span> &amp;&amp; grantResults[<span class="hljs-number">0</span>] == PackageManager.PERMISSION_GRANTED){

                Toast.makeText(<span class="hljs-keyword">this</span>, <span class="hljs-string">"캘린더 권한을 사용자가 승인함"</span>, Toast.LENGTH_SHORT).show();

            }<span class="hljs-keyword">else</span>{

                Toast.makeText(<span class="hljs-keyword">this</span>, <span class="hljs-string">"캘린더 권한 거부됨"</span>, Toast.LENGTH_SHORT).show();

            }

            <span class="hljs-keyword">return</span>;

        }

    }

}</code></pre>


<p>메소드들을 검색하다 보면 신기한 이벤트들을 찾아 볼 수 있습니다. 정말 할 수 있는게 무궁무진 하다는 것을 알 수 있습니다.</p>

반응형

'개발 > 안드로이드' 카테고리의 다른 글

안드로이드 HTML 파싱하기 (JSOUP)  (0) 2017.07.10

Linux 에 기본으로 설치되어 있는 Libreoffice 삭제하는 방법

라즈베리파이에 우분투 OS를 설치했다.

라즈베리파이에 xrdp 를 설치했는데, 여러가지 사용하지 않는 많은 파일들이 설치가 되는 것을 알수 있었다.
오피스는 역시 데스크탑에서 사용해야 제대로 사용할 수 있다.
오픈소스에 사용할만 하지만, 사양이 느린 라즈베리파이에서 이런것을 할수는 없으니까 말이다.

아래와 같이 명령어를 입력하면 간단히 해결된다.

sudo apt-get remove --purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

이렇게 명령어를 입력하면 대략 250MB 정도를 확보 할 수 있다.

반응형

window 7 에서 

Windows 필수 패키지 다운로드 하기.

Live Writer 설치하기

버전을 잘 골라서 받아야 한다.


반응형

일곱가지 모델

동시성과 병렬성에 대한 거시적인 안목을 제공하기 위해서 다음과 같은 일곱가지 모델을 선택했다.

스레드와 잠금장치

스레드와 잠금장치는 문제점이 많지만 이 책에서 설명하는 다양한 모델의 배후에서 동작하는 기본 기술에 해당한다. 많은 동시성 소프트웨어에서 여전히 기본적인 선택으로 활용되고 있다.

함수형 프로그래밍

함수형 프로그래밍은 동시성과 병렬성을 잘 지원할 뿐만 아니라 여러 이유로도 사용이 확산되고 있다. 가변 상태를 원천적으로 제거했기 때문에 함수형 프로그래밍은 기본적으로 스레드-안전을 보장하며 병렬처리가 쉽다.

클로저 방식 - 아이덴티티와 상태 분리하기

클로저 언어는 명령형 프로그래밍과 함수형 프로그래밍을 효과적으로 결합하여 양쪽의 접근 방식이 지닌 장점을 극대화하고 널리 보급했다.

액터

액터모델은 광범위한 사용처를 가진 범용의 동시성 프로그래밍 모델이다. 공유 메모리와 분산 메모리 아키텍처 양측에서 활용이 가능하고, 지라적 분산을 적극 지원하고, 장애 허용과 탄력성에 대한 지원이 특히 강하다.

데이터 병렬성

우리가 사용하는 노트북 내부에는 슈퍼컴퓨터가 숨어 있다. GPU는 주로 그래픽 처리를 위해서 병렬성을 활용하지만, 그러한 기능은 사실 여러 가지 다른 작업을 위해서 활용될 수 있다. 유한 요소에 대한 분석을 수행하거나, 유체역학 계산을 수행하거나, 기타 엄청난 계산을 요구하는 코드를 작성하는 경우라면 GPU 성는은 거의 다른 방법 전부를 능가할 것이다.

람다 아키텍처

병렬성이 아니면 빅데이터 처리는 불가능하다. 여러 개의 컴퓨팅 자원을 활용할 수 있을 때에 한해서 우리는 테라바이트에 달하는 데이터를 처리할 수 있다. 람다 아키텍처는 맵리듀스와 스트리밍 프로세스의 장점을 결합해서 다양한 빅데이터 문제를 해결할 수 있도록 해준다.

이러한 모델은 제각각 가장 알맞은 분야가 있다. 각 장을 읽으면서 다음의 질문들을 염두에 두기 바란다.

반응형

라즈베리파이를 활용하면서 이것저것 재매난 것들을 만들어 보고 싶다.
예전에 라즈베리파이에 git 저장소를 만들었는데, 다시 하려니까 기억이 안나더라. 나이가 들어서 그런 것 같아 이번에 다시 한번 해결하는 방법을 기록해 두도록 하자.

서버에서 해야하는 일

파일들이 저장되는 장소를 만든다.
.ssh 파일을 받아와서 .ssh/authorized_keys 에 추가한다.

git clone – [폴더명] [폴더명].git
이라는 명령어를 사용해야 하지만, 나는 안 되길래 아래와 같은 명령어를 사용했음

/home/pi 에서 아래와 같은 명령어 실행하기

# git init --bare [폴더명].git
    Initialized empty Git repository in /home/pi .ssh/works.git/

폴더가 생성 된 것을 확인할 수 있다.

사용자

ssh-keygen 으로 키 생성하기
ssh 파일을 서버로 보내주기

scp 명령어를 사용해서 간단하게 보낼 수 있다.
본인은 11022 를 ssh 포트로 사용하고 있기 때문에 아래와 같은 -P 옵션을 사용했다.
복사되는 디렉토리 뒤의 / 까지 적는 것을 잊지말자. 이 문제 때문에 한참을 찾아 해맸다.

scp -P 11022 [원본파일명] pi@address:/home/pi/

서버

다시 서버로 돌아와서 보내온 ssh 파일을 등록해서 접속을 허가해 준다

cat [파일명].pub >> ~/.ssh/authorized_keys

라고 입력

사용자가 해야 하는일

이제 사용자가 접속할 수 있는 권한을 얻었다. 이제 remote 저장소로 등록을 하고 난 뒤에 Push 할 수 있다. 프로젝트마다 적어도 한명은 –bare 옵션을 사용해서 Bare 저장소를 만들어야 한다고 하는데, 나는 이게 뭔 소리인지 잘 이해할 수 없었다. 혹시 아시는 분이 좀 알려줬으면 좋겠다.

cd project
git init
echo ‘hello git’ > README
git add .
git commit -m ‘hello’
git remote add origin ssh://git@[서버]:11022/home/git/project.git
git push origin master

이와 같은 명령을 하고 난 뒤에 비밀번호를 입력하고 파일을 자유롭게 올릴 수 있을 것이다.

사용자 2

이제 다른 사용자가 이를 clone 해서 수정하고 Push 할 수 있다.

git clone ssh://git@[서버]:11022/home/git/project.git
cd project
cat README
git commit -am ‘fix’
git push origin master

수고 하셨습니다.

반응형

제일 간편하게 캡쳐하는 방법

adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png

와 같은 방법도 있지만, macos 에서 제대로 작동하지 않는다.(window에서는 확인 안해봄)
번거롭지만, 아래와 같은 방법을 사용하는 것이 제일 간편하다.

$ adb shell screencap -p /mnt/sdcard/sc.png
$ adb pull /mnt/sdcard/sc.png
반응형

'개발' 카테고리의 다른 글

윈도우 live writer 설치하기  (0) 2016.11.29
일곱가지 모델  (0) 2016.11.19
[mariaDB] 중복키 관리  (0) 2016.08.05
어떻게 블로그 수익을 올릴까  (0) 2016.07.15
nosintgdmn 이란  (0) 2015.06.03

이번에 1.7로 업그레이드를 한 후에 go build 를 사용해 봤더니

/usr/local/go/src/runtime/os_linux.go:27 _FUTEX_WAIT redeclared in this block
…

과 같은 에러가 났습니다.
이럴 때에는 전에 설치했던 버전의 찌꺼기가 남아 있기 때문이기 당황해 하지 마시고,

rm -rf /usr/local/go

명령어를 사용해서 삭제하고 다시 새로 설치하면 됩니다.

반응형

'개발 > Golang' 카테고리의 다른 글

GO | json 설정파일 읽어오기  (0) 2018.04.17
GO | golang 1.9 update  (0) 2017.09.06
golang | strings 패키지  (0) 2016.08.12
[Golang] mysql, mariadb 원격접속 허용하기  (0) 2016.07.29
Golang 에 유용한 IDE 에디터  (0) 2016.07.20
이거 뭐 한글로 되어 있는 곳이 안 보인다.

strings 패키지

import "strings"

문자열 조작을위한 간단한 함수를 모은 패키지입니다.

Contains 함수

func Contains (s, substr string) bool

Contains는 s에 substr가있을 때 true를 돌려줍니다.

Count 함수

func Count (s, sep string) int

Count는 s 내의 sep의 고유 한 개수를 계산합니다.

Fields 함수

func Fields (s string) [] string

Fields는 문자열 s를 하나 이상의 연속 된 공백으로 분리하여 s의 부분 문자열 배열을 반환합니다. s에 공백 만 포함되어 있지 않은 경우는 빈리스트를 반환합니다.

FieldsFunc 함수

func FieldsFunc (s string, f func (int) bool) [] string

FieldsFunc는 함수 f (c)가 true를 돌려주는 (c는 Unicode 코드 포인트) 위치에서 문자열 s를 분할하고 s 조각의 배열을 돌려줍니다. f (c)가 true를 반환하는 코드 포인트가 s 내에 없었던 경우는 하늘의 조각이 반환됩니다.

HasPrefix 함수

func HasPrefix (s, prefix string) bool

HasPrefix 문자열 s의 시작 부분이 prefix와 일치하는지 테스트합니다.

HasSuffix 함수

func HasSuffix (s, suffix string) bool

HasSuffix 문자열 s의 끝 부분이 suffix과 일치하는지 테스트합니다.

Index 함수

func Index (s, sep string) int

Index는 s에서 sep가 최초로 출현하는 위치의 인덱스를 돌려줍니다. 일치하지 않는 경우는 -1을 돌려줍니다.

IndexAny 함수

func IndexAny (s, chars string) int

IndexAny는 s에서 chars의 Unicode 코드 포인트 중 하나가 최초로 출현하는 위치의 인덱스를 돌려줍니다. 어떤 Unicode 코드 포인트도 일치하지 않는 경우는 -1을 돌려줍니다.

IndexFunc 함수

func IndexFunc (s string, f func (r int) bool) int

IndexFunc는 s에서 f (c)를 충족 최초의 Unicode 코드 포인트의 인덱스 또는 찾지 못한 경우 -1을 반환합니다.

IndexRune 함수

func IndexRune (s string, rune int) int

IndexRune는 s에서 Unicode 코드 포인트 rune가 최초로 출현하는 위치의 인덱스를 돌려줍니다. 일치하지 않는 경우는 -1을 돌려줍니다.

Join 함수

func Join (a [] string, sep string) string

Join 매개 변수 a의 요소를 결합하여 새로운 문자열을 만듭니다. sep에 지정된 구분 기호가 결합 될 때 요소 사이에 삽입됩니다.

LastIndex 함수

func LastIndex (s, sep string) int

LastIndex는 s에서 sep가 마지막에 출현하는 위치의 인덱스를 돌려줍니다. 일치하지 않는 경우는 -1을 돌려줍니다.

LastIndexAny 함수

func LastIndexAny (s, chars string) int

LastIndexAny는 chars의 Unicode 코드 포인트 중 하나가 s에서 나타나는 마지막 위치의 인덱스를 돌려줍니다. chars의 어느 Unicode 코드 포인트도 s에 존재하지 않으면 -1을 반환합니다.

LastIndexFunc 함수

func LastIndexFunc (s string, f func (r int) bool) int

LastIndexFunc는 s에서 f (c)를 충족 마지막 Unicode 코드 포인트의 인덱스 또는 찾지 못한 경우 -1을 반환합니다.

Map 함수

func Map (mapping func (rune int) int, s string) string

Map은 문자열 s 내의 모든 문자를 매핑 함수에 의해 변환 해, 그 결과를 새로운 문자열로 반환합니다. 매핑 함수가 마이너스 값을 반환하면 해당 문자를 대체없이 파기됩니다.

Repeat 함수

func Repeat (s string, count int) string

Repeat 문자열 s를 매개 변수 count에 지정한 횟수 복사 한 새로운 문자열을 반환합니다.

Replace 함수

func Replace (s, old, new string, n int) string

Replace는 문자열 s의 복사본에 처음 n, old 부분을 new로 바꾸 (중복 없음) 한 것을 돌려줍니다. n <0 일 때 대체 무제한입니다.

Split 함수

func Split (s, sep string, n int) [] string

Split은 s를 sep를 구분하는 부분 문자열 슬라이스 분리기 사이의 부분 문자열 조각을 반환합니다. sep가 비어있을 때, Split은 UTF-8 시퀀스 단위로 분할합니다. n은 반환 된 부분 문자열의 수를 결정합니다.

n> 0 : 최대 n 개의 부분 문자열. 마지막 부분 문자열에는 분할되지 않은 나머지가 포함된다.
n == 0 : 결과는 ni​​l. (부분 문자열 없음)
n <0 : 모든 부분 문자열.

SplitAfter 함수

func SplitAfter (s, sep string, n int) [] string

SplitAfter는 s에서 sep가 나타난 부분의 바로 슬라이스하고, 이러한 부분 문자열 조각을 반환합니다. sep가 비어있을 때, SplitAfter UTF-8 시퀀스 단위로 분할합니다. n은 반환 된 부분 문자열의 수를 결정합니다.

n> 0 : 최대 n 개의 부분 문자열. 마지막 부분 문자열에는 분할되지 않은 나머지가 포함된다.
n == 0 : 결과는 ni​​l. (부분 문자열 없음)
n <0 : 모든 부분 문자열.
Title 함수
func Title (s string) string

Title 문자열 s 단어의 처음 Unicode 문자를 타이틀 케이스에지도 한 카피를 돌려줍니다.

ToLower 함수

func ToLower (s string) string

ToLower는 문자열 s를 Unicode의 문자에 매핑 된 복사본을 반환합니다.

ToLowerSpecial 함수

func ToLowerSpecial (_case unicode.SpecialCase, s string) string

ToLowerSpecial는 준 SpecialCase 규칙을 우선적으로 사용하여 문자열 s를 Unicode의 문자에 매핑 된 복사본을 반환합니다.

ToTitle 함수

func ToTitle (s string) string

ToTitle는 문자열 s를 Unicode의 타이틀 케이스에 매핑 된 복사본을 반환합니다.

ToTitleSpecial 함수

func ToTitleSpecial (_case unicode.SpecialCase, s string) string

ToTitleSpecial는 준 SpecialCase 규칙을 우선적으로 사용하여 문자열 s를 Unicode의 타이틀 케이스에 매핑 된 복사본을 반환합니다.

ToUpper 함수

func ToUpper (s string) string

ToUpper는 문자열 s를 Unicode의 대문자로 맵핑 된 복사본을 반환합니다.

ToUpperSpecial 함수

func ToUpperSpecial (_case unicode.SpecialCase, s string) string

ToUpperSpecial는 준 SpecialCase 규칙을 우선적으로 사용하여 문자열 s를 Unicode의 대문자로 맵핑 된 복사본을 반환합니다.

Trim 함수

func Trim (s string, cutset string) string

Trim은 cutset에 포함 된 Unicode 코드 포인트를 문자열 s의 시작과 끝에서 모두 삭제 한 조각을 반환합니다.

TrimFunc 함수

func TrimFunc (s string, f func (r int) bool) string

TrimFunc은 f (c)를 충족 Unicode 코드 포인트 c 문자열 s의 시작과 끝에서 모두 삭제 한 조각을 반환합니다.

TrimLeft 함수

func TrimLeft (s string, cutset string) string

TrimLeft은 cutset에 포함 된 Unicode 코드 포인트를 문자열 s의 선두에서 삭제 한 조각을 반환합니다.

TrimLeftFunc 함수

func TrimLeftFunc (s string, f func (r int) bool) string

TrimLeftFunc은 f (c)를 충족 Unicode 코드 포인트 c 문자열 s의 선두에서 삭제 한 조각을 반환합니다.

TrimRight 함수

func TrimRight (s string, cutset string) string

TrimRight는 cutset에 포함 된 Unicode 코드 포인트를 문자열 s의 끝에서 삭제 한 조각을 반환합니다.

TrimRightFunc 함수

func TrimRightFunc (s string, f func (r int) bool) string

TrimRightFunc은 f (c)를 충족 Unicode 코드 포인트 c 문자열 s의 끝에서 삭제 한 조각을 반환합니다.

TrimSpace 함수

func TrimSpace (s string) string

TrimSpace 문자열 s의 시작과 끝에서 Unicode로 정의되고있는 공백을 제외 한 조각을 반환합니다.

Reader 형

Reader는 문자열에서 읽어들이는 Read, ReadByte, ReadRune 함수를 제공합니다.

type Reader string

NewReader 함수

func NewReader (s string) * Reader

NewReader는 s에서로드 할 새로운 Reader를 돌려줍니다. 이것은 bytes.NewBufferString과 거의 동일하지만, 더 효율적이며 또한 읽기 밖에 할 수없는 점이 다릅니다.

(* Reader) Read 함수

func (r * Reader) Read (b [] byte) (n int, err os.Error)

(* Reader) ReadByte 함수

func (r * Reader) ReadByte () (b byte, err os.Error)

(* Reader) ReadRune 함수

func (r * Reader) ReadRune () (rune int, size int, err os.Error)

ReadRune 버퍼에서 다음 UTF-8 인코딩 된 Unicode 코드 포인트를 읽어 들여 돌려줍니다. 로드 바이트 데이터가 없을 때는 os.EOF 오류가 반환됩니다. 바이트 데이터가 잘못된 UTF-8 인코딩 인 경우는 1 바이트 건너 뛰고 U + FFFD 1을 반환합니다.

버그
Title에서 사용하는 단어 협회는 Unicode의 구두점을 제대로 다루지 않습니다.

반응형
리눅스 daemon 설명

리눅스 시스템의 daemon 명칭 및 용도

auditd : 감사기능을 활성화 하는 데몬이다. auditd 데몬이 실행되는 동안 auditing 변수,
syscall 규칙, 파일 시스템 감시 ( watch ) 작업을 수행. 이번에 대해서는 선택은 자유
acpid : ACPI(Advanced Configuration and Power Interface)방식의 시스템 전력 관리를 위한 데몬
amanda : 백업 클라이언트인 amanda 데몬
amandaidx : amanda 서버의 패키지 서비스 중 하나인 amandaidx 데몬
amd : auto mount daemon, 시스템의 요청이 있는 경우에 자동으로 장치와 NFS 호스트를 마운트해 주는 데몬.
네트워크의 설정이 잘못된 경우에는 부팅을 하는 도중에 문제를 일으킬수 있으므로 처음에서 꺼두는 것이 좋다.
amidxtape : amand 서버에 패키지 서비스 중 하나인 amidxtape 데몬
anacron : crond와 같은 작업 스케줄러 데몬이지만 crond와는 달리 시스템이 계속 켜져있지 않다고 가정하여
하루보다 작은 단위의 스케줄을 관리
apmd : APM(Advanced Power Management) 데몬. 배터리를 필요로 하는 노트북 등 휴대용 데스크톱에서 필요
arpwatch : 이더넷 카드와 IP Address의 설정 관계를 유지하는 데몬
atd : 특정 시간 또는 시스템 부하가 적을때 지정된 명령을 실행시키는 데몬
autofs : 파일 시스템을 사용하고자 할때 자동으로 마운트 시켜주는 데몬
avahi-daemon : 네트워크 서비스를 인식하는 멀리캐스트 DNS 서비스 Avahi 데몬
avahi-dnsconfd : DNS 재설정 기능을 위한 데몬
bluetooth : 블루투스 장치를 사용하기 위한 데몬
cpuspeed : CPU SPEED 데몬
chargen : chargen의 TCP 버전 서버
chargen-upd : chargen의 UDP 버전 서버
ciped : IP Address를 암호화하는 CIPE 데몬
crond : cron을 실행시키는 데몬.
cups : 리눅스의 기본 출력 시스템인 CUPS데몬
cups-config-daemon : CUPS 설정을 위한 데몬
daytime : daytime의 TCP 버전 서버. daytime은 클라이언트의 질의에 응답하여
아스키 형태로 현재 시간과 날짜를 출력하는 데몬. TCP 포트 13을 사용
daytime-udp : daytime의 UDP 버전 서버. UDP포트 13을 사용
dhcpd : 동적 IP환경에서 인터넷을 사용하기 위한 DHCP 데몬
dhcrelay : DHCP 중계를 위한 데몬
echo : echo 의 TCP 버전 서버
echo-udp : echo 의 UDP 버전 서버
finger : finger 리퀘스트에 응답하는 서버. finger는 사용자에 대한 로그인 네임, 디렉토리,
쉘과 최종 로그인 시간에 대한 정보를 볼수 있게 하는 프로토콜
gated : gated(라우팅 데몬) 을 시작하거나 종료
gpm : 콘솔 환경에서 마우스 지원을 위해 필요한 데몬
haldaemon : 장치를 자동으로 인식하기 위해 필요한 HAL 데몬
hidd : 블루투스 장치를 사용할 때 필요한 블루투스 ID 데몬
httpd : 웹 서비스를 위한 아파치 데몬.
identd : 특별한 TCP 연결에서 사용자의 신원을 결정해 주는 데몬.
TCP 포트번호를 주면 연결된 서버 시스템 소유자를 확인할수 있는 문자열을 돌려준다.
imap : 원격 사용자가 imap 클라이언트(Pine, netscape communicator)를 이용하여 자신의 메일에 접근할수 있게 하는 서비스
imaps : 원격 사용자가 SSL을 지원하는 imap 클라이언트(netscape communicator, fetchmail 등)를
이용하여 자신의 메일에 접근할수 있게 하는 서비스
innd : 유즈넷 뉴스 서버를 이용하여 지역 뉴스 서버를 설정할수 있는 데몬
iptables : 방화벽, 매스커레이드 설정을 위한 iptables 데몬
ipop2 : 원격 사용자가 pop2 클라이언트를 이용하여 메일에 접근할수 있게 하는 서비스
ipop3 : 원격 사용자가 pop3 클라이언트를 이용하여 메일에 접근할수 있게 하는 서비스
isdn : ISDN 서비스를 위한 데몬
irda : 적외선 통신을 위한 irda 데몬
irqbalance : 멀티프로세서(둘 이상의 CPU를 사용하는 환경)에서 CPU간의 인터럽트를 분리하기 위한 데몬
kdcrotate : kerberos 를 지원하지 위한 데몬으로 커버로스를 지원하는 서버로 설정하고자
할 때 사용되며, 커버로스 인증을 사용하지 않는다면 중지
keytable : /etc/sysconfig/keyboard 의 설정된 매핑 정보를 로드하며 시스템 설치할 때
설정값을 사용하므로 중지
kudzu : 새로운 하드웨어가 추가되었을 때 검색을 위한 데몬
lm_sensors : CPU온도, 마더보드 온도, 팬 상태, 전압 등의 시스템 상황을 실시간으로 알 수 있는 데몬
linuxconf : 시스템 설정을 유지하기 위해 부팅시에 다양한 Task의 실행을 정렬시키는 데몬
linuxconf-web : 웹을 통해 linuxconf를 실행할수 있게 연결을 허용하는 데몬
lpd : 프린터가 동작하도록 해주는 프린트 서비스 데몬. 웹서비스 사용시 중지
mars-nwe : netware IPX 프로토콜을 사용하는 클라이언트에게 리눅스 머신에서 파일과 프린트 서버를 호환시켜 주는 데몬
mcserv : midnight command(MC) 서버이다. MC끼리 네트워크를 공유한다
mdmpd : 다중 경로의 장치를 모니터링하고 관리하기 위한 데몬
messagebus : 시스템 이벤트를 전송하기 위한 데몬
microcode_ctl : Intel cpu의 마이크로 코드 업데이트 데몬
mysqld : MySQL 데이터베이스 데몬
named : DNS 서버 데몬
netfs : samba, 네트워크 파일 시스템(NFS), NCP(netware)등의 마운트와 언마운트에 관여하는 데몬
netdump : 콘솔을 초기화하기 위한 데몬
network : 네트워크 데몬(네트워크 접속을 위해 반드시 활성화되어야 함)
netplugd : 네트워크 케이블을 연결했을 때 접속 여부를 리눅스 커널에게 알리기 위한 데몬
nfs : 유닉스와 리눅스의 기본 네트워크 파일 시스템 NFS 데몬
nfslock : NFS파일을 locking 한다
nscd : NIS/NS 를 사용할수 있게 하는 데몬.
ntalk : 서로 다른 시스템끼리 채팅이 가능하게 ntalk 연결을 허용하는 서버
ntpd : 네트워크를 통해 리눅스 서버의 시간 정보를 동기화하기 위한 Network Time Protocol 데몬
pcmcia : 휴대용 PC에서 이더넷이나 모뎀을 쓸수 있게 하는 데몬
pcscd : PC/SC 스마트 카드 데몬. 스마트 카드를 사용하는 서버가 아니라면 정지
pop3s : SSL을 지원하는 pop3클라이언트를 사용하여 메일에 접근할수 있게 하는 서비스
portmap : 원격 시스템 호출에 사용하는 데몬(NFS, NIS를 사용할 때 필요)
postgresql : postgresql DB에 관한 데몬
pppoe : adsl서비스에 연결시켜 주는 데몬
proftpd : FTP 서버 데몬
psacct : 프로세스 통계를 확인하기 위한 psacct 데몬
pxe : 부팅전 실행환경 서버. 다른 PXE기반 머신에 네트워크 부팅을 제공한다
random : 시스템에 필요한 난수 발생 및 저장 데몬
rawdevices : 캐릭터 장치나 저수준 입출력을 바인드 하는 데몬으로 오라클과 같은 특정
응용프로그램에서 사용할 수 있으나 보통 사용되지 않기에 중지
rdisc : 동적 라우팅에서 라우터를 자동으로 찾기 위한 RDISC 데몬
readahead_early : 모든 데몬이 시작하기 전에 특정 파일을 사용하기에 앞서
메모리에 미리 불러들여 속도를 높이기 위한 데몬
reconfig : /etc/reconfigSys 파일이 존재하면 재설정을 실행하는 데몬
restorecond : SELinux 데몬과 관련된 서비스.
rexec : rexec(3) 루틴을 위한 서버 데몬. 인증된 사용자 이름과 패스워드로 원격 실행을 제공하는 서버이다.
rhnsd : 네트워크 사에서 프로그램을 업데이트가 하거나 정보를 찾고자 할 때 기타 등
서버에서는 별로 필요하지 않기에 중지
rlogin : rlogin 프로그램을 위한 서버 데몬. 신뢰할수 있는 호스트로부터 특권화된
포트 번호에 기반한 인증을 통해 원격 로그인을 제공한다.
routed : RIP 프로토콜을 통해 업데이트된 자동 IP 라우팅 테이블 설정 데몬
rpcgssd : 원격 인증을 위한 GSS(General Security Service) 데몬 (NFS version 4 클라이언트를 위해 필요)
rpcidmapd : 원격 이름 매핑을 위한 idmap(IDmapping) 데몬 (NFS version 4를 위해 필요)
rpcsvcgssd :원격 인증을 위한 GSS(General Security Service) 데몬 (NFS version 4 서버를 위해 필요)
rsh : rshd 서버는 rcmd 루틴을 위한 서버이며 따라서 rsh 프로그램을 위한 서버이다.
신뢰할수 있는 호스트로부터 특권화된 포트번호에 기반한 인증 통해 원격 실행을 제공한다.
rstat : 네트워크에 연결된 사용자에게 그 네트워크 상의 머신에 대한 퍼포먼스 매트릭스를 회수할수 있게 해주는 프로토콜
rsync : 컴퓨터간 자료 공유를 위해서 사용되는 rsync에 대한 데몬
rusersd : 네트워크에 특정 사용자가 있는 검색해 주는 데몬
rwalld : 시스템에 동작중인 모든 터미널에 메시지를 표시할수 있게 해 주는 프로토콜
rwhod : 원격 접속자의 목록을 볼 수 있게 해주는 데몬. finger와 비슷한 기능을 한다.
saslauthd : SASL(Simple Authentication and Security Layer)을 이용한 암호화된 사용자 인증을 위한 데몬
sendmail : 메일서버 sendmail 데몬
smartd : 시스템 모니터링을 위한(Self-Monitoring, Analysis and Reporting Technology) 데몬
smb : 삼바 서버 데몬 (smbd와 nmbd를 동작시키기 위한 데몬)
snmpd : SNMP(Simple Network Management Protocol)데몬
snmptrapd : SNMP TRAP 데몬
spamassassin : 스팸메일을 거르기 위한 스팸메일 필터 데몬
squid : 프록시 서버 Squid 데몬
sshd : openssh 서버 데몬
swat : samba 웹 관리 툴, 삼바 서버의 설정을 위해 swat를 사용하며, 웹 브라우저를 통해 901포트로 접속한다.
syslog : 시스템 로그를 관리하기 위한 syslog 데몬
talk : 다른 시스템에 접속한 사용자로 부터 채팅 요구에 응답하여 터미널의 내용을 다른 사용자에게
보내서 대화할수 있게 하는 데몬.
telnet : telnet 세션을 제공하는 서버. 인증을 위해 사용자 이름과 패스워드를 사용한다.
time : rdate 데몬에 의해 사용되는 RFC 868 시간 서버의 TCP 버전
time-udp : rdate 데몬에 의해 사용되는 RFC 868시간 서버의 UDP 버전
vncserver : 원격접속을 위한 VNC 서버 데몬
webmin : webmin 관리자 서버 데몬
winbind : 삼바 서버와 윈도우 간에 네트워크 공유를 위해 필요한 데몬
wpa_supplicant : 무선 네트워크 접속에 사용되는 WPA(Wi-Fi proctedted access) 데몬
xfs : X윈도우의 폰트를 관리하기 위한 데몬
xinetd : xinetd 방식의 네트워크 서비스를 관리하기 위한 슈퍼 데몬.
ypbind : NIS 서버 데몬
yppasswd : NIS클라이언트 사용자의 패스워드를 변경할수 있게 해주는 데몬
yum : 온라인 패키지 관리도구 yum 데몬


반응형

'개발 > 리눅스' 카테고리의 다른 글

centos 7 yum 깨짐  (0) 2017.12.05
centos 7 커널 최신버전으로 설치하기  (0) 2017.09.18
소유자, 그룹 변경하기  (0) 2016.07.28
우분투에서 일본어 사용하기  (0) 2016.07.18
MongoDB 간단히 CRUD 사용하기  (0) 2016.07.12

웹상에서 계속 데이터를 받아와서 DB에 업로드를 하는데 중복된 값이 나오면 이를 무시하고 덮어씌울 수가 있습니다. 이를 이용하면 간단한 insert를 하기에 편합니다.

INSERT IGNORE

INSERT IGNORE into 테이블명 values ()

이렇게 하면 에러 없이 덮어씌여 버립니다.

ON DUPLICATE UPDATE

중복되는 값이 존재하면 UPDATE 하는 방법도 있다.

insert into DB명
    VALUES (?,?,?,?,?)
    ON DUPLICATE KEY
    UPDATE CATEGORY=?, HIT=?

만약에 중복값이 존재하면 CATEGORY, HIT 값을 업데이트하라는 명령어 입니다.

REPLACE INTO

REPLACE INTO DB명
    VALUES (?,?,?,?)

기존에 있던 키는 지워지고 새로운 키가 등록이 된다.
AUTO_INCREMENT 를 기본으로 등록하고 있다면, 기존에 있는 번호가 사라지고 새로운 번호로 등록되는 것을 확인 할 수 있다.

반응형

'개발' 카테고리의 다른 글

윈도우 live writer 설치하기  (0) 2016.11.29
일곱가지 모델  (0) 2016.11.19
android | adb를 이용해서 캡쳐하기  (0) 2016.09.28
어떻게 블로그 수익을 올릴까  (0) 2016.07.15
nosintgdmn 이란  (0) 2015.06.03

+ Recent posts