2016. 10. 1.

MS Ergonomic Mouse vs Storm M2

img-alternative-text

사실 두개의 마우스를 비교하기에는 용도에서 무리가 있다. 하나는 게이밍용 마우스고, 다른 하나는 사무용 마우스에 가깝기 때문 입니다. 그런데, 최근에 M2 마우스에서 어고노믹 데스크탑으로 갈아타면서 느끼게 된 점을 한점 적어보려고 합니다.

제닉스 STORM M2 가 마우스 오른쪽 버튼이 고장이 나면서 새로 장만하게 되었습니다.

처음에 물건을 받고 난 첫 인상은 마우스 참 둥글고 크다라는 점입니다. 이질적인 느낌을 뒤로 하고 일주일 정도를 사용해 본 느낌은 고놈 참 잘 만들었다는 느낌이었습니다.

1.	손목이 편합니다
2.	버튼감이 정말 좋습니다.
3.	사용자의 편리성을 생각하는 마그네틱 건전지 뚜껑. (충격!!!)
4.	잘 쓰지는 않지만 달려 있어서 이쁜 마우스 버튼
5.	인터넷 화면에서 뒤로 가기 밖에 못하는 측면키

이런 느낌을 가지고 서비스센터에서 돌아온 M2를 사용해 봤습니다.
버튼에 누르는데 들어가는 힘이 엄청나게 필요하다는 것을 느낄 수 있었습니다. ergonomic 에서는 느낄수 없는 손가락에 힘이 들어간다는 것을 확연하게 느낄 수 있었습니다. 그리고, 이 마우스를 사용하면 분명 다시 손목이 아플 수 있다고 생각하게 되었습니다.

Ergonomic 의 클릭감은 낮은 압력으로 확연한 키감을 느낄 수 있다는 점입니다.

아직 디자인에 거부감을 갖고 있는 분이라면 사용해 보길 권해드립니다.

2016. 8. 27.

qcy QY19 ... 사용기

블루투스 이어폰을 한번 사용해 보고 싶어서 가성비 끝판왕 이어폰을 알게 되어서 구매하게 되었습니다. 외출 중에 음악을 가끔 듣고 싶을 때, 설거지 하면서 전화를 하려고 할 때를 위해서 구매했습니다.

General Specification
  Brand Name QCY
  Model Number QY19
  Optional Color Black, White, Blue, Green
  Wearing Type In-ear
  Product Weight (g) 12.7g
  Dimensions (mm) 36*30*45mm
Technical Parameters
  Bluetooth Version V4.1
  Bluetooth Chip CSR8645
  Voice Prompt Support
  Support Protocol HFP/HSP/A2DP/AVRCP/APT-X
  Noise Canceling CVC6.0
  Unit Driver 8mm
  Sensitivity 100dB
  Effective Distance 10m
  Battery Capacity 74mAh
  Music Time About 6 hours
  Charging Time 1-2 hours
  Standby Time 155 hours
  Voice Language English 
 Function Answer/end call/reject/transfer/redial/mute/volume adjustment/pause music/switching songs/

구성

상자 안에 이어폰캡들과 추가 2세트의 이어버드가 들어 있습니다.
다른 분들은 멋진 케이스에 들어 있는데요. 저는 상자에 투박하게 들어있었습니다. (케이스가 중요하다하시는 분들은 잘 보고 구매해야 겠습니다.) 그렇다고 정품이 아닌건 아니구요. QCY 회사에서 자주 구성을 바꾼다고 합니다. 저는 스웨덴에서 날라온 상품이었습니다. 저도 정품이 아닌가 해서 걱정을 했는데 http://www.qcymall.com 에서 정품을 확인하고 마음을 놓았습니다.

gvOdmtW.jpg
ZbrHySV.jpg
HCqyZpD.jpg

사이즈별 이어캡, 이어버드 구성품이 눈에 띕니다.

이어버드를 처음 사용해 봤습니다만, 너무 편리합니다. 저는 귓구멍이 작아서 일반 이어폰을 사용하면 이어폰이 귓구멍에서 자주 탈주를 하는데요. 이어버드를 사용해서 귀에 착용을 하니, 이어버드가 있는지도 모르면서 잘 빠지지 않네요. 그렇다고 100% 빠지지 않는다는 말은 아닙니다.

귀에 달려있는 이어캡과 이어버드의 무게가 있어서 조금 무게가 나갑니다. 이어폰이 쫌 큰거 같아요. 캡과 이어버드가 있어 안정감이 있습니다만, 크네요.

감상평

페어링

너무나 깔끔하게 잘 됩니다. 한번 기계 두개를 놓고 페어링을 해봤습니다.
이어폰을 종료한 상태에서 전원을 키고 난 다음에 우선순위가 뒤에 있는 핸드폰으로 페어링되어 있는 QY19 이어폰을 클릭하니 깔끔하게 연결이 되는 것을 보고 참으로 괜찮다 싶습니다. 집에 있는 BOSE Soundlink 3 는 페어링이 오락가락 한데, QY19 는 상대적으로 접속이 잘 되는 것 같습니다.

  • 맥북 : 잘됩니다.
  • WINDOW 10 : 윈도우 자체가 이상하긴 하지만 잘 됩니다.

핸드폰 통화

이어폰이 오른쪽에 달려 있어서 이게 사람 음성이 잘 안 들리는 것 같습니다. 길을 오가며 사용할 때에는 살짝 목소리를 크게 해야 할 필요가 있습니다.

음질

맥북에 iTunes 를 이용했습니다.

  • 음악대장의 매일매일 기다려 : 저음이 조금 밋밋한 듣는데 문제는 없어 모입니다. 베이스를 원하시는 분들에게는 적합하지 않을 것 같습니다. 고음은 깔끔하게 나는 편인 것 같습니다.
  • 라흐마니노흐 피아노 콘체르토 2악장 : 저음부가 깨지는게 느껴집니다.
  • 인터스텔라 OST 08번 트랙 Mountains : 운전할 때 들으면 좀 무서운 느낌의 음악입니다만, 여기서 느껴지는 저음부는 조금 무난한 느낌이네요. 역시 저음부 해상력이 떨어지는 것 같습니다.
  • Blue Swede Hooked on a Feeling : 이번에는 신나는 음악을 들어봤습니다. 팝에 어울리네요.

총평

이어폰에 대해서 잘 모르지만 저음부 해상력이 떨어지는 것 같습니다. 베이스가 들리기는 하는데 뭉게지는 느낌이 많이 납니다. 저는 이게 거슬리는 거 빼고 괜찮은 것 같습니다. 2만원 대에 구매할 수 있는 블루투스 이어폰이라는 것이 큰 장점이네요.

2016. 8. 25.

adb 간단한 명령어들

adb 에 접속을해서 할 수 있는 일이 많이 있다. 그 중에 간단하게 할 수 있는 일을 적어봅니다.저는 맥북으로 이용하고 있습니다.

HlE5RXj.jpg

adb 파일 위치 찾기

android studio 에서 cmd+, 로 들어가서 Android SDK 에 들어가면 Location 을 알 수 있습니다. 이 폴더 안에 platform-tools 폴더로 들어가면 adb 파일을 찾을 수 있습니다.

adb shell 로 접속하기

$ ./adb shell

shell 로 접속을 해서 작업하는 방식도 있지만, 이를 접속하지 않고, 명령어를 실행할 수 있습니다.

$ ./adb shell [쉘내에서 실행할 명령어]

핸드폰에 설치되어 있는 패키지명 확인하기

$ ./adb shell pm list package

컴퓨터에 있는 apk 파일 설치하기

$ ./adb install [apk 파일]

핸드폰으로 파일 보내기

$ ./adb push [보낼파일명] /[폴더명]

핸드폰에서 파일 받아오기

$ ./adb pull [파일명] [폴더명]

Monkey를 통한 자동클릭 만들기

Monkey란

Monkey란 Android 에서 지원하는 UI 테스팅 툴로 터치, 클릭, 제스쳐 등의 이벤트를 랜덤으로 발생시키거나, 스크립트 파일을 이용해서 사용자가 화면을 이용하는 것 처럼 스크립트 파일을 통해서 작동시키는 명령어 입니다.
adb shell 에 접속 할 수 있으면 바로 사용할 수 있습니다.

명령어들

명령어
DispatchPointer(0, 0, 0, 500,1000, 0,0,0,0,0,0,0) 화면 터치하기
DispatchPointer(0, 0, 1, 500,1000, 0,0,0,0,0,0,0) 화면 터치하고 때기
UserWait(20000) 기다리기

화면을 터치는 것을 표현 하려면

DispatchPointer(0, 0, 0, 500,1000, 0,0,0,0,0,0,0)
DispatchPointer(0, 0, 1, 500,1000, 0,0,0,0,0,0,0)

와 같이 명령어를 입력해야 합니다.
이제 Monekey 를 이용해서 스크립트 파일을 이용해서 만들어 보겠습니다.
메모장을 열어서 txt 확장자의 파일 하나를 만듭니다.

type= user
speed= 1000
start data >>
// 지역 선택창
DispatchPointer(0, 0, 0, 330,770, 0,0,0,0,0,0,0) //push
DispatchPointer(0, 0, 1, 330,770, 0,0,0,0,0,0,0) //release
quit

내용을 보면 (330,770) 좌표에 클릭을 한다는 명령입니다.
$ ./adb shell monkey -f test.txt 100

test.txt 스크립트를 100번 반복하라는 명령어

2016. 8. 24.

Table 'name' is specified twice, both as a target for 'DELETE' and as a separate source for data

select 문으로 가상테이블을 하나 생성하고 as 로 별명을 설정해서 셀렉트 해 오면 됩니다.

Table 'name' is specified twice, both as a target for 'DELETE' and as a separate source for data 

이와 같은 에러는

delete from table where num in (select num from table);

같은 테이블을 조회해서 같은 테이블에 결과를 적용하려고 할 때 나는 에러입니다. 이럴 때에는 가상의 alias 를 줘서 처리하면 간단히 빠져나갈 수 있습니다.
같은 메모리상의 값을 조회하면서 변경하려고 해서 일어나는 일 같습니다.

delete from table where num in (select * from (select num from table)) stm;

이렇게 stm 이라는 alias 를 만들어주면 에러를 회피할 수 있습니다.

2016. 8. 19.

Electron 기반으로 만들어진 에디터들

최근에 ATOM 이라는 에디터가 프로그래머 사이에서 인기몰이 중이다. 이쁜 화면가 광활한 확장성에 무료인 덕이 크다. 그 전에는 Sublime 도 인기가 있었지만, 유료인 덕분에 처음 접하는 사람들에게 큰 만족을 주고 있다.

Node.js 에 대해 어디서 들어봐서 사용을 해 봤지만, 이를 토대로 IDE 툴을 만들 수 있다는 생각은 해보지 않았다. 프로그래밍 입문자로서의 1차원적인 생각이었다. GitHub에서는 Node.js 를 기반으로 데스크톱 어플리케이션 플래폼을 만들었다. 이게 바로 Eletron다.

Eletron을 사용하는 어플리케이션으로 유명한 것들 중에는 Slack,Visual Studio Code 등이 있다. 마소에서도 Atom 과 같은 Electron 기반의 에디터를 만들었다는 것은 최근에 알게 되었다.

장점

  • Windows, Mac, Linux 등 크로스 플랫폼으로 데스크톱 앱 제작의 편리성
  • cross-platform 이 최대의 장점이다.
  • Squirrel을 이용한 간단하고 빠른 설치과정
  • 크로미움 V8 엔진을 통한 렌더링

참조

2016. 8. 18.

Golang | 최신버전으로 업그레이드 할 때 주의점

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

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

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

rm -rf /usr/local/go

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

2016. 8. 17.

phpstorm 에서 codeigniter 자동완성 사용하는 방법

준비

https://github.com/topdown/phpStorm-CC-Helpers 에서 다음 파일을 다운로드 받습니다.

다운로드

압축을 풀어 줍니다.

KSLgAKN.png

두가지 방법

하나

File > Settings > Directories > Add Content Root > Select the directory in phpStorm-CC-helpers that is relevant > mark Resource Root

  • 프로젝트 화면 제일 아래의 External Librraies 를 클릭
  • COnfigure PHP Include Path … 을 눌러줍니다

PO9thvI.jpg

  • 압축을 풀었던 phpStorm-CC-helpers 폴더를 추가해 줍니다.

GIohyZW.png

> 저는 여기까지 설정을 하니 자동완성을 바로 사용할 수 있었습니다.

CodeIgniter Specific

다음파일을 Mark as Plain Text 로 만들기

Mark as Plain Text

  • /system/core/Controller.php
  • /system/core/Model.php
  • /system/database/DB_active_rec.php

back numner - 黒い猫の歌


黒い猫の歌

映画『ルドルフとイッパイアッテナ』主題

黒猫の歌/back number(バックナンバー)
発売日: 2016年8月1日
歌手:back number
作詞:清水依与吏(しみず いより)
作曲:清水依与吏(しみず いより)

生まれたままじゃ生きてくのに不便で
태어난 그대로 살아가는 건 불편해서
数(かぞ)えきれない物や人に染まってゆく
셀수없는 물건이나 사람에 물들어 가
もともとの色が見えなくなった事(こと)も
원래색이 보이지않게 된 것도
忘れるくらい何度も繰(く)り返(かえ)し
잊을 정도로 몇번이나 반복 해

本当の自分はどこにいるんだ
진정한 나는 어디에 있는거야
僕らしいって何色なんだ
나 답다는 것은 무슨 색이야
足して混ぜて出来たものが
채워져 뒤섞여 만들어진 것이
綺麗(きれい)な色じゃなくても
아름다운 색이 아니어도

あの家の屋根(やね)に登(のぼ)ったところで
저 집의 지붕에 올라가 봐도
見渡(いわた)せるのはせいぜい隣町(となりまち)くらいで
멀리 보이는 것은 고작 이웃동네 정도
もっと高いとこに登らなきゃ見えないのかな
더 높은 곳으로 올라가지 않으면 보이지 않는 걸까
一人ひとつずつもらえるわけじゃないのか
한사람당 한명씩 받을 수 있는 거 아닌건가

本当の自分はどこにいるんだ
진정한 자신은 어디에 있는거야
しかめっ面で迷(まよ)いながら
찌푸린 얼굴로 방황하며
長い事探してるけど
오래도록 찾고 있지만
誰かが隠(かく)しているのかい
누군가가 숨기고 있는걸까

格好(かっこう)悪(わる)い思い出と忘れたくない時間
볼썽사나운 추억과 잊기 힘든 시간
同じ絵の具で描いているだけじゃなく
같은 물감으로 그리고 있을뿐이 아니라
どこか似てるよ
어딘가 비슷해

自分らしさなんてきっと
나 답다라는 것은 분명
思いついたり流されたり
생각이 난다거나 흘러가거나
探し続けて歩いたその
계속 찾으며 걸어간 그
足跡の話だから
발자취의 이야기니까

本当の自分はここにいるんだ
진정한 자신은 여기에 있어
今までにこれからを重(かさ)ねて
지금까지 앞으로는 겹쳐
赤も黄色も青も全部
빨강도 노랑도 파랑도 전부
混ぜて僕だけの色を
섞여 나만의 색깔을

2016. 8. 15.

Codeigniter 무한스크롤 적용하기

코드이그니터 무한 스크롤 적용하기

Codeigniter 무한 스크롤 적용기

자바에서 ajax 를 이용해서 무한 스크롤등을 적용했었는데, Codeigniter의 MVC 패턴을 이용해서 똑같이 적용할 수 있습니다.

일단 홈페이지의 구성은 http://localhost/sold 가 메인 페이지로 만들어져 있습니다.

Route 설정

CI(CodeIgniter)에서 제일 조심해야 되는 부분입니다.

$route['page'] = 'sold/page';
$route['page/(:any)'] = 'sold/page/$1';
$route['default_controller'] = 'sold';

Controller

콘트롤러로 주소를 받아올 것이다.

public function page() {
    # ?pagenum=값 post로 pagenum 값을 받아온다
    $page = $this->input->post('pagenum');
    $data['clien'] = $this->sold_model->get_page(intval($page));
    $this->load->view('sold/page',$data);
}

Model

다음은 모돌을 설정할 차례다.

public function get_page($page_number)
{
    $item_per_page = 10;
    $position = ($page_number * $item_per_page) - $item_per_page;
    $sql = "SELECT * FROM clien ORDER by date DESC LIMIT ?,?";
    $query = $this->db->query($sql,array($position, $position+$item_per_page));
    return $query->result_array();
}

Ajax

다음은 HTML 페이지에서 Ajax를 통해 불러와야 합니다.
우선적으로 JQuery 를 불러옵니다. 저는 높은 버전을 좋아하므로, 3.1.0버전을 불러왔습니다. 낮은 버전을 불러와도 상관없습니다.

<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script>

다음은 ajax 를 통해 결과값을 출력하는 위치 입니다.

<div class="wrapper">
    <ul id="results"><!-- 결과가 출력되는 곳 -->
    </ul>
    <div class="loading-info"><img src="views/assets/image/bigLoader.gif"/></div>
</div>

이제 HTML 의 하단에

<script type="text/javascript">
    var track_page = 1; //track user scroll as page number, right now page number is 1
    var loading  = false; //prevents multiple loads

    load_contents(track_page); //initial content load

    $(window).scroll(function() { //detect page scroll
        if($(window).scrollTop() + $(window).height() >= $(document).height()) { //if user scrolled to bottom of the page
            track_page++; //page number increment
            load_contents(track_page); //load content
        }
    });
    //Ajax load function
    function load_contents(track_page){
        if(loading == false){
            loading = true;  //set loading flag on
            $('.loading-info').show(); //show loading animation
            $.post( 'page', {'pagenum': track_page}, function(data){
                loading = false; //set loading flag off once the content is loaded
                if(data.trim().length == 0){
                    //notify user if nothing to load
                    $('.loading-info').html("No more records!");
                    return;
                }
                $('.loading-info').hide(); //hide loading animation once data is received
                $("#results").append(data); //append data into #results element

            }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
                alert(thrownError); //alert with HTTP error
            })
        }
    }
</script>

2016. 8. 12.

back number - クリスマスソング

back number - クリスマスソング

歌手:back number
作詞:清水依与吏
作曲:清水依与吏

どこかで鐘(かね)が鳴(な)って
어딘가에서 종소리가 울리고
らしくない言葉が浮かんで
나답지 않은 말이 문득 떠올라
寒さが心地(ここち)よくて
추위가 기분좋게 느껴져
あれ、なんで恋なんかしてんだろう
어라, 어째서 사랑이란 걸 하고 있는 걸까

聖夜(せいや)だなんだと繰(く)り返(かえ)す歌(うた)と
성탄이라느니 어쩌니 하면서 반복되는 노래들과
わざとらしくきらめく街(まち)のせいかな
짐짓 반짝반짝 빛나는 거리 탓일까

会いたいと思う回数(かいすう)が
보고 싶다는 생각이 드는 횟수가,
会えないと痛(いた)いこの胸が
볼 수 없으면 아픈 이 가슴이
君の事どう思うか教えようとしてる
널 어떻게 생각하는지 가르쳐 줘
いいよ。そんな事自分で分かってるよ
괜찮아, 그런 것쯤 나도 잘 알고 있으니까
サンタとやらに頼んでも仕方ないよなぁ
산타라는 놈한테 부탁해 봤자 어쩔 수 없겠지

できれば横(よこ)にいて欲しくて
될 수 있으면 옆에 있어 주길 바라
どこにも行って欲しくなくて
아무 데도 안 갔으면 좋겠어
僕の事だけをずっと考えていて欲しい
내 생각만 계속 해 주면 좋겠어
でもこんな事を伝えたら格好悪いし
하지만 이런 마음을 전한다면 모양 빠질 테고
長くなるだけだからまとめるよ
얘기만 길어질 테니까 정리해서 말할게
君が好きだ
널 좋아해

はしゃぐ恋人達は
들떠 있는 연인들은
トナカイのツノなんか生(は)やして
순록뿔 따위를 머리에 달고
よく人前で出来るなぁ
잘도 사람들 앞을 나돌아다니는군
いや 羨ましくなんてないけど
아니, 뭐 부러운 건 아니지만

君が喜ぶプレゼントってなんだろう
네가 기뻐할 만한 선물이 뭘까
僕だけがあげられるものってなんだろう
나만 줄 수 있는 게 과연 뭘까
大好きだと言った返事(へんじ)が
정말 좋아한다는 고백에 대한 답이
思ってたのとは違っても
생각했던 것과는 다르더라도
それだけで嫌(きら)いになんてなれやしないから
고작 그 정도로 네가 싫어지진 않을 테니까

星に願いをなんてさ 柄(がら)じゃないけど
별에 소원을 빈다는 건 영 내 스타일 아니지만
結局君じゃないと嫌なんだって
결국 네가 아니면 싫다며
見上げてるんだ
하늘을 올려다 봐

あの時君に
그때 널
出会って ただそれだけで
만났다는 그 사실만으로도
自分も知らなかった自分が次から次に
나도 몰랐던 나 자신이 줄줄이 튀어나와

会いたいと毎日思ってて
허구헌날 보고 싶고
それを君に知って欲しくて
그 마음을 네가 알아 줬으면 좋겠어
すれ違う人混みに君を探している
스쳐 지나는 인파 속에서 널 찾아
こんな日は他の誰かと笑ってるかな
이런 날은 다른 누군가와 함께 웃고 있으려나
胸の奥の奥が苦しくなる
가슴 속 깊은 곳이 아파와

できれば横にいて欲しくて
될 수 있으면 옆에 있어 주길 바라
どこにも行って欲しくなくて
아무 데도 안 갔으면 좋겠어
僕の事だけをずっと考えていて欲しい
내 생각만 계속 해 주면 좋겠어
やっぱりこんな事伝(つた)えたら格好悪いし
이런 마음을 전한다면 역시 모양 빠질 테고
長くなるだけだからまとめるよ
얘기만 길어질 테니까 정리해서 말할게
君が好きだ
널 좋아해
聞こえるまで何度だって言うよ
네게 들릴 때까지 몇 번이고 말할게
君が好きだ
널 좋아해

2016. 8. 11.

[GO] Strings 패키지

이거 뭐 한글로 되어 있는 곳이 안 보인다.

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의 구두점을 제대로 다루지 않습니다.

워드프레스 고유주소 사용했을 때 404에러가 나면

워드프레스 고유주소 사용했을 때 404에러가 나면

고유주소 설정

워드프레스 SEO 를 설치해 봤는데, 고유주소로 하면 좋다고 한다. 그래서 고유주소를 설정을 해 줬습니다.

Imgur

하지만, 이렇게 설정을 바로 바꾸고 나면, 블로그의 메인화면에는 문제가 없는데, 블로그의 글을 눌렀을 때, 페이지가 없다는 404에러가 납니다.

다른 블로그를 한번 찾아 보니까. Nginx에서는 아파치 처럼 htaccess나 mod_rewrite 활성화가 안된다고 합니다. 저는 이게 무슨 기능인지 잘 모르니까, 넘어 갔습니다.

nginx.conf

이 문제는 nginx 의 설정 파일 /etc/nginx/nginx.conf 의 location 부분을 수정하면 해결이 된다고 합니다.

nginx.conf 파일을 들어가면 아래와 같이 설정이 되어 있는 것을 확인 할 수 있습니다.

server{
    ...
    ...
    location / {
        try_files $uri $uri/ =404;
    }
}

location

이 설정을 자신의 홈페이지에 맞게 수정을 하면 됩니다.
예를 들어서 워드프레스가 다음과 같은 경로를 누르게 되면 접속이 된다고 한다면

http://forteleaf.blogger.com/

위와 같은 경로로 설정이 되어 있다면, 아래와 같이 수정을 하면 됩니다.

location / {
    try_files $uri $uri /index.php?args;
}

http://forteleaf/blogger.com/wordpress/

위와 같은 경로로 설정이 되어 있다면, 아래와 같이 수정을 하면 됩니다.

2016. 8. 9.

리눅스 daemon 에 대해서

리눅스 daemon 설명

라즈베리파이를 만지는데, 속도 좀 어떻게 빠르게 해 보려고 killall 을 하고 그랬는데, 부질 없는 짓 같다.

리눅스 시스템의 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 데몬

2016. 8. 7.

맥북에서 쓸만한 터미널프로그램

iTerm2

XJOmogv.png

기본으로 내장되어 있는 Terminal은 간단한 작업을 하는데 큰 문제가 없습니다. 하지만, 라즈베리파이를 접속해서 사용하려고 하면 LANGUAGE 문제가 발생해 작업에 속도 저하와 같은 문제가 발생 합니다.
이를 피해서 다른 대체제를 한번 찾아봤습니다.
iTerm2 은 무료로 제공되는 뛰어난 터미널입니다. 커스터마이즈를 할 수 있고, 한글과 일본어도 잘 지원하고 있습니다.

특징

  • 자동완성
  • 마우스 없이 선택, 복사
  • 단축키
  • 붙여넣기 히스토리
  • 듀얼 터미널 세션, 화면 분할

세션

  • 화면 최대화
  • 단축키 설정
  • 커스터마이징 기능
  • 마우스를 이용한 커서, 하이라이트, 기능
  • Growl 지원
  • 다양한 언어 지원

DiQl7wK.png

Secure Shell (chrome)

Rp9abZC.png

이건 다로 어플이 아니고, chrome 에서 사용할 수 있는 쉘입니다. 어디 들어가서 설치할 필요없이 크롬을 통해서 작업 할 수 있는 점이 큰 장점입니다. 용량도 상당히 저렴합니다.
기본으로 제공되는 터미널과 다를게 없어보이지만, 윈도우에서도 사용할 수 있는 장점이 있습니다.

장점

  • 무료
  • chrome 을 통해서 어디서나.
  • 한글지원

window, mac, ubuntu 에서도 잘 돌아가서 일관되게 작업환경을 만들기 위해서 가끔 사용합니다.

2016. 8. 5.

가사 | 浜崎あゆみ(하마사키 아유미) - FLOWER

FLOWER

歌手:浜崎あゆみ
作詞:ayumi hamasaki
作曲:Tetsuya Yukumi

目を閉じて浮かんだのは
눈을 뜨면 떠오르는 것은
これまでの歩んだ道
지금까지 걸어왔던 길
もう直ぐで花咲く頃
벌써 꽃이 필 무렵
あの頃は楽しみだった
그 때는 즐거웠었다

優しく笑ってた君は
상냥하게 웃던 당신은
何処(どこ)へ消えたのでしょう
어디로 사라졌나요

花になって棘(とげ)をもって枯(か)れて散(ち)って朽(く)ち果(は)てたい
꽃이 되서 가시가 나고 시들어져 썩어 죽어싶어
拾(ひろ)わないで離(はな)れてって 忘れてって
줍지말고 떠나세요 잊어주세요

雨になって霧(きり)になってそのままで濡(ぬ)れていたい
비가 되어 안대가 되어 그대로 젖어 있고 싶어
横(横)になって眠(めむ)くなって 独りにして
가로누워 잠이 와 혼자이면서

指絡(から)め歩いたのは
손가락을 걸며 걸었던 것은
置(お)いてきたあの故郷(ふるさと)
놓고 온 그 고향
今思えば幸せだと
지금 생각하면 행복하다고
言える日も過ごしました
말할 수 있는 날도 보냈습니다

手を引いてくれた君の
손을 이끌어줬던 당신의
温もりが残ってる
온기가 남아있어

躊躇(ためら)わないでどうせならトドメ刺(さ)して終(お)わらせて
망설이지 말고 이왕이면 결정타로 끝내줘
笑わないで冷(つめ)たい目で 嘘(うそ)が下手(へた)ね
웃지않는 차가운 눈초리로 거짓말이 서투네요

鳥になって風に乗ってあの場所を目指(めざ)したい
새가 되어 바람을 타고 그 장소를 목표로 하고 싶어
痛みもない愛もない 向こう側へ
아픔도 없이 사랑도 없어 저편에는

優しく笑ってた君は
상냥하게 울는 당신은
何処へ消えたのでしょう
어디로 사라졌나요

花になって棘をもって枯れて散って朽ち果てたい
꽃이 되서 가시가 나고 시들어져 썩어 죽어싶어
拾わないで離れてって 忘れてって
줍지말고 떠나세요 잊어주세요

躊躇わないでどうせならトドメ刺して終わらせて
망설이지말고 기왕이면 결정타로 끝내줘
笑わないで冷たい目で 嘘が下手ね
웃지않는 차가운 눈초리로 거짓말이 서투네요.

[mariaDB] 중복키 관리

웹상에서 계속 데이터를 받아와서 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 를 기본으로 등록하고 있다면, 기존에 있는 번호가 사라지고 새로운 번호로 등록되는 것을 확인 할 수 있다.

2016. 8. 3.

Error: Access denied; you need the RELOAD privilege for this operation

mysql, mariadb 를 사용하려고 하는데 아래와 같은 에러가 나왔을 때에 해결하는 방법

Error: Access denied; you need the RELOAD privilege for this operation

```sql

GRANT RELOAD ON *.* TO 'your_user'@'localhost';

```

2016. 8. 2.

[mariaDB] 기본명령어

mariaDB 명령어

명령어들이 생각나지 않을 때 한번 보기 위해서.

ALTER 명령어

테이블 이름 변경

  • ALTER TABLE [테이블이름] REANME [바꿀이름]
  • RENAME TABLE [테이블이름] TO [바꿀이름]

ADD COLUMN

  • ALTER TABLE [테이블이름] ADD COLUMN [칼럼이름] [칼럼타입]
  • ALTER TABLE [테이블이름] ADD COLUMN [칼럼이름] [칼럼타입] AFTER [칼럼이름]
  • ALTER TABLE [테이블이름] ADD COLUMN [칼럼이름] [칼럼타입] FIRST

DELETE COLUMN

  • ALTER TABLE [테이블명] DROP COLUMN [COLUMN이름]

COLUMN CHANGE

  • ALTER TABLE [테이블명] MODIFY [COLUMN이름] [NEW COLUMN이름]
  • ALTER TABLE [테이블명] CHANGE [COLUMN이름] [NEW COLUMN이름] [NEW COLUMN TYPE]

ADD INDEX

  • ALTER TABLE [테이블명] ADD INDEX([컬럼이름])

DELETE INDEX

  • ALTER TABLE [테이블명] DROP INDEX [컬럼이름]
  • DROP INDEX [인덱스명] ON [테이블명]

SET PRIMARY KEY

  • ALTER TABLE [테이블명] ADD PRIMARY KEY([컬럼이름]) [컬럼이름]

DELETE PRIMARY KEY

  • ALTER TABLE [테이블명] DROP PRIMARY KEY
CREATE DATABASE mydb; -- mydb 데이터베이스 생성
USE mydb; -- 기본 데이터베이스로 mydb를 지정
CREATE TABLE mytable ( id INT PRIMARY KEY, name VARCHAR(20) ); -- mytable 테이블 생성
INSERT INTO mytable VALUES ( 1, 'Will' ); -- 데이터 입력
INSERT INTO mytable VALUES ( 2, 'Marry' ); 
INSERT INTO mytable VALUES ( 3, 'Dean' );
SELECT id, name FROM mytable WHERE id = 1;
UPDATE mytable SET name = 'Willy' WHERE id = 1;
SELECT id, name FROM mytable;
DELETE FROM mytable WHERE id = 1;
SELECT id, name FROM mytable;
DROP DATABASE mydb;
SELECT count(1) from mytable; gives the number of records in the table
INSERT into DB명 VALUES (?,?,?,?,?) ON DUPLICATE KEY UPDATE CATEGORY=?, HIT=?
REPLACE INTO DB명 VALUES (?,?,?,?)

2016. 8. 1.

[라즈베리파이] golang 1.6.3 설치하기

Raspberry pi 3 B+ 에 Raspbian-jessie 가 설치되어 있습니다.

armv6l 용으로 이미 만들어 진 것이 있기 때문에 아주 쉽게 할 수 있습니다.

다운로드

$ wget https://storage.googleapis.com/golang/go1.6.3.linux-armv6l.tar.gz

/usr/local 에 압축을 풀어줍니다.

$ sudo tar -C /usr/local -xzf go1.6.3.linux-armv6l.tar.gz

다음에는 설정을 등록합니다.

PATH”:/usr/local/go/bin:$GOPATH/bin”

참조

sudo apt-get install golang 으로 설치 설정파일


GOARCH="arm"
GOBIN=""
GOCHAR="5"
GOEXE=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/pi/golang"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_arm"
CC="gcc"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
pi@raspleaf:~ $ whereis go
go: /usr/bin/go /usr/lib/go /usr/share/go /usr/share/man/man1/go.1.gz

apt-get purge golang 을 하고 난 후에 직접 다운받고 난 뒤의 설정 파일

GOARCH="arm"
GOBIN=""
GOEXE=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/pi/golang"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_arm"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
pi@raspleaf:~ $ whereis go
go: /usr/local/go /usr/local/go/bin/go

혹시 설정이 달라질지 몰라서 한번 백업을해 놨습니다. 딱히 바뀌점이 없는 거 보니 제대로 설치가 된 것 같습니다.

그런데, 이상하게 db.sql 을 사용하는데, 1.3 보다 느립니다. 일부러 1.6 버전을 설치했는데, 느려지다니, 좀 실망입니다.

2016. 7. 31.

[GOLANG] MYSQL, MARIADB 원격접속 허용하기

개발환경은 다른 곳에 라즈베리파이를 놓고, 다시 다른 곳에서 golang을 통해서 접속을 하려고 합니다.

모든 초반 작업은 root 계정에서 합니다.

 $ mysql -u root -p

DB를 생성

MariaDB [(none)]> CREATE DATABASE test;
MariaDB [(none)]> flush privileges;

mysql 외부 접속을 위한 아이디 생성

를 통해 관리자 아이디로 mysql(mariaDB)에 접속을 하고, 계정을 생성합니다.

내부 접속용 아이디

MariaDB [(none)]> create user ‘이름’@‘localhost’ identified by ‘비밀번호’;
MariaDB [(none)]> flush privileges;

localhost 가 들어가 있으면 내부접속만 허용하는 옵션입니다.

외부 접속용 아이디

MariaDB [(none)]> create user '이름'@'%' identified by '비밀번호'
MariaDB [(none)]> flush privileges;

% 이 들어가면 모든 아이피의 접속을 허용한다는 뜻입니다.
특정 IP에 권한을 주려면 ‘123.123.123.123’ 과 같은 권한을 추가하면 됩니다.

DB 계정에 권한설정

grant all privileges on 디비명.* to 이름@'%' identified by ‘비밀번호';
MariaDB [(none)]> flush privileges;

mysql 설정하기

$sudo vi /etc/mysql/my.cnf

bind-address = 127.0.0.1설정의 맨 앞에 #을 넣어서 주석처리 합니다.

raspberry 에 mysql 포트 열기

mysql 기본포트는 3306를 사용하고 있습니다.
3306 포트를 열어줍니다.

$ iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
$ iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT
$ iptables-save

golang 소스

go get github.com/go-sql-driver/mysq;

를 통해서 소스 mysql 접속 소스를 다운받습니다. ($GOPATH) 폴더에 자동으로 설치가 됩니다.

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "아이디:비밀번호@tcp(접속주소:포트)/디비명")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    var version string
    db.QueryRow("SELECT VERSION()").Scan(&version)
    fmt.Println("Connected to:", version)
}

sql.Open(“mysql”, “아이디:비밀번호@tcp(접속주소:포트)/디비명”)
포트번호까지 전부 적어줘야 합니다.

2016. 7. 29.

[라즈베리파이] PHP7 업데이트, 설치하기

PHP7 설치하기

소스 추가하기

$ sudo nano /etc/apt/source.list

아래와 같은 항목을 추가합니다.

deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free
#deb-src http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free

추가하고 난 뒤에 키를 등록합니다.

$ sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851
$ sudo gpg --armor --export CCD91D6111A06851 | sudo apt-key add -

기존에 설치되어 있는 php5 삭제하기

$ sudo apt-get remove php5-common

php7.0-fpm 설치하기

$sudo apt-get install php7.0-fpm

fpm 을 설치하면 php7.0 기본파일들도 자동으로 설치가 됩니다.

php7-mysql

$ sudo apt-get install php7.0-mysql

Nginx 사이트의 소켓을 업데이트 해야 합니다.

PHP 5 PHP 7
/var/run/php5-fpm.sock /var/run/php/php7.0-fpm.sock

$ sudo vi /etc/nginx/sites-available/default

을 열어서 아래와 같이 unix 소켓 부분을 수정합니다.

vpl3aMI.jpg

설정이 끝났으면, nginx 서버를 재시작합니다.

$ sudo service nginx restart

설치 확인

설정이 잘 되었는지 한번 확인해 봅시다.

$ php -v
PHP 7.0.7-3~bpo8+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
$ sudo nano /usr/share/nginx/html/info.php

저 같은 경우에는 /usr/share/nginx/html 이 메인 폴더 입니다. 설치방법에 따라서 다른 것입니다. nginx 설정을 확인해 주세요.

를 입력해서

<?php
phpinfo()
?>

내용을 추가한 후에 ctrl+o 저장을 한후 ctrl+x를 눌러 나옵니다.
이제 서버에 들어가봅시다

https://서버주소/info.php

아래같이 화면이 나오면 제대로 설정이 된 것입니다.

s2eHVam.jpg

2016. 7. 28.

소유자, 그룹 변경하기

owner, group 변경하기

매번 어려웠던 문제를 정리를 해서 기억해 두려고 합니다.
SFTP 에 접속을 해서 홈페이지 파일을 업로드 하려고 하는데, 권한이 없어서, filezilla 를 통해서 업로드 할 수 없었습니다.
시스템에 대한 지식이 부족하고, 필요할 때에만 구글신을 빌어서 이용했기 때문에 정리를 하지않으면 자신의 것이 되지 않는다고 생각해서 이렇게 정리합니다.

소유자, 그룹 확인

$ ls -l

명령을 통해서 간단히 소유자 그룹을 알 수 있습니다. 아래를 보면, -rw-r--r--과 같은 권한에 대한 정보 다음에 올라오는 것이 소유자, 그룹 에 대한 정보입니다.

권한 소유자 그룹 용량 작성시간
-rw-r–r– root root 343783 Sep 11 2012
pi@raspleaf:/usr/share/nginx/html $ ls -l
total 364
-rw-r--r-- 1 root     root 343783 Sep 11  2012 ddd.zip
-rw-r--r-- 1 www-data root   2971 Jul 26 15:51 index.php
-rw-r--r-- 1 www-data root     20 Jul 21 23:21 phpinfo.php
drwxr-xr-x 2 root     root   4096 Jul 26 12:36 sold
drwxr-xr-x 2 root     root   4096 Jul 25 23:40 stack+hight
-rw-r--r-- 1 root     root   4550 Jul 25 09:31 test.html
drwxr-xr-x 5 www-data pi     4096 Jul 23 01:57 wordpress

소유자 변경

$ sudo chown [변경할소유자명] [파일 or 디렉토리]

다음 sold 폴더의 소유자를 pi 로 변경 해 보겠습니다.

$ sudo chown pi sold

sudo 로 관리자(root) 권한으로 명령어를 실행해야 합니다.

drwxr-xr-x 2 pi       root   4096 Jul 26 12:36 sold

다른 과 같이 root 에서 pi 로 소유자가 변경된 것을 확인할 수 있다.

소유자, 관리자 변경

:(콜론)을 이용해서 “소유자:그룹” 을 지정하면 변경 할 수 있습니다.

$ sudo chown pi:pi sold

drwxr-xr-x 2 pi       pi     4096 Jul 26 12:36 sold

하위디렉토리 포함해서 변경하기

특정 디렉토리와 서브 디렉토리의 소유주 소유그룹을 한꺼번에 변경 방법

$ sudo chown -R [소유자:그룹] [폴더명]

이렇게 하면 지정한 폴더 뿐 아니라 하위 폴더까지 권한이 변경되어 있는 것을 알 수 있습니다.

2016. 7. 27.

[라즈베리파이] SMB 연결하기

라즈베리파이에서 삼바서버에 접속하기


---

> 이 방법은 하드가 연결 된 `ac66`에 `라즈베리파이`를 연결해서 ac66 안에 있는 하드에 접근하기 위해서 찾아 본 방법입니다.

윈도우에서는`smb://192.168.0.1/abc`와 같이 연결을 할 수 있었습니다만. 라즈베리파이에서는 조금 다릅니다.

mount 할 시에 타입을 **CIFS**로 달아주면 됩니다.

> **CIFS(Common Internet File System)** 는 네트워크를 위한 SMB 파일 공유 프로토콜의 확장된 버전이며, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약의 프로토콜이다. CIFS는 이전의 폐쇄적인 SMB 프로토콜과는 달리 CIFS 규약 정의는 여러 유닉스 업체의 참여하여 결정된 내용이기 때문에 삼바도 버전이 올라감에 따라(삼바 버전 2.2 이상) CIFS 규약을 잘 준수하여 안정성이 상당히 향상 되었다.

> 권한이 없다는 문제가 나올 수도 있습니다. 그 때에는 `sudo` 를 앞에 입력 해 주세요.

### 연결할 디렉토리 만들기

`/mnt/` 에 드라이브를 연결하려면 일단 디렉토리를 하나 만들어 줘야 한다. 원하는 디렉토리를 하나 만들어 줍니다.

        $ mkdir /mnt/abc

### SMB 연결하기

        $ mount -t cifs //server/share /mnt/abc -o username=아이디,password=비밀번호

### SMB연결 끊기

        $ umount /mnt/abc

### 정리

        $ sudo mkdir /mnt/abc

        $ sudo mount -t cifs //server/share /mnt/abc

2016. 7. 25.

맥북을 사용하는 블로거들을 위한 툴

맥북을 사용하는 블로거들을 위한 툴
————
ByWord, MarsEdit, Blogo, Mou, iA Write
맥북에서 글을 쓰는 다양한 도구들이 존재한다 개인적으로는 Macjournal 을 자주 사용합니다만, Text로만 글을 작성하는 기간동안 Markdown 이라는 문법이 나와 웹작성을 도와주는 방식이 생겼습니다. 어느사이엔가 구시대 인간이 되었습니다.
Ulysses, IA Writer, Blogo, ByWord, MarsEdit, Blogo, Mou, iA Write 등등 여러가지 어플들이 있습니다. 그중에 몇개를 소개하려고 합니다.

ByWord 11.99$

YixdOaC.png
포르투칼 회사 MetaClassy 에서 만든 Byword 입니다. 오래된 마크다운 에디터 중에는 깔끔한 인터페이스와 마크다운(MarkDown)문법을 지원하는 전용 에디터입니다.

또, 위와 같은 블로거 사이트에 발행을 지원합니다. Blogger 는 마크다운이 지원이 안되는데, 발행이 되는 것을보니, Rich Text, Plain Text, HTML 로 컨버팅을 하는 방식으로 올라가는 것 같습니다.

Mou free/15$ sale

OPUIfus.png
지금은 무료로 제공을 하고 있습니다. 1.0 version 으로 업그레이드 되면서 30에 paypal을 통해서 구매할 수 있습니다.
osx 에서 작업하는 개발자를 위한 마크다운 에디터. 프리뷰, 싱크 스크롤, 자동저장, 강력한 액션, 자동 공기화, 커스텀 테마와 CSS, HTML, PDF 발매, CJK 등을 지원합니다.
특이한 점은 Command Line을 지원을 합니다. open -a Mou 라고 오션을 주면 실행가능합니다. 자세한 내용은 모르겠습니다.

MarsEdit 39.99$

my7KDt3.png
맥북에서 블로그 하시는 분들 중에 모르는 분들이 없을 것 같습니다. 저는 그격이 비싸서 한번도 사용해 본적이 없습니다. OSX 에서 사용하는 최강의 블로그툴이라고 하는데, 다른 많은 툰들도 있는데 한번 경험해 보자고 50$를 사용하는 기에는 무리가 있네요.
30-Trial 버젼을 제공하고 있어서 사용해 볼 수 있습니다.

Blogo (무료, 유료)

www.googleusercontent.com 란 곳에 사진이 자동으로 저장이 되고, markdown 언어를 command+*을 누르면 자동으로 연결이 됩니다.
다시 사용해 보니, 상당히 괜찮은 툴이네요. 무료고, markdown 표시도 바로 표시 됩니다.

TG9EsNj.png

iA Write 9.99$

l1G7uz6.png

Stackedit.io

웹에서 작성할 수 있기에 무료로 사용할 수 있습니다. 어느정도 html 언어를 지원하고 있습니다. youtube 영상도 frame 을 이용해서 올릴 수 있습니다. 단점은 다른 브라우져를 사용하면 새로 처음부터 작성해야 합니다. 아마도 브라우저별 cookie 로 글을 저장하기 때문에 그런것 같습니다.
mOextYM.png

작업방법

현재 저는 기본 시스템을 Macjournal을 기본으로 작업을 합니다. markdown 형식으로 작성을 합니다. 그리고, stackedit.io 에 들어가서 편집을 다시 합니다. 블로그에다 stackedit 로 설정이 되어있기 때문에 markdown 형식으로 작성을 합니다.
그리고, macjournal 에서는 사진을 자동으로 imgur.com 에 올리는 기능이 있습니다. 이게 상당히 유용합니다. 어디서든 파일을 불러올 수 있기 때문입니다.
macjournal 로 바고 share 를 통해 포스팅을 합니다. 그리고, 거기서 html 파일을 복사해서 stackedit.io 에서 편집합니다.
stackedit.io 에서 편집해서 편집하던 블로그에 올립니다.

2016. 7. 23.

[라즈베리파이] minidlna 1.1.5 최신버전 설치하기

라즈베리파이 minmidlna 1.1.5 설치하기

사전작업

이미 설치해 놓은 minidlna 를 삭제 합니다.

$ sudo apt-get purge minidlna -y && sudo apt-get remove minidlna && sudo apt-get autoremove -y

패키지형태로 제공이 되기 때문에 설치하기 위해서 라이브러리를 설치해줘야 합니다. 안 하면 ./configure작업에서 에러가 납니다.

$ sudo apt-get install autopoint debhelper dh-autoreconf gcc libavutil-dev libavcodec-dev libavformat-dev libjpeg-dev libsqlite3-dev libexif-dev libid3tag0-dev libogg-dev libvorbis-dev libflac-dev -y

설치하기

소스파일 다운로드

$ wget http://downloads.sourceforge.net/project/minidlna/minidlna/1.1.5/minidlna-1.1.5.tar.gz

압축풀기

$ tar -xvf minidlna-1.1.5.tar.gz

minidlna 디렉토리로 들어갑니다.

$ cd minidlna-1.1.5

configure, make, 그리고 minidlna 설치

$ ./configure && sudo make && sudo make install

기본 설정 파일 복사하기

$ sudo cp minidlna.conf /etc/

부팅시 자동으로 실행하게 스크립트를 등록해 줍니다.

$ sudo cp linux/minidilan.init.d.script /etc/init.d/minidlna

스크립트에 권한 설정

$ sudo chmod +x /etc/init.d/minidlna

minidlna 를 기본으로 사용할 수 있게 설정 해 줍니다.

$ sudo update-rc.d minidlna defaults

minidlna.conf 설정하기

$ sudo nano /etc/minidlna.conf

아래와 같은 부분만 설정해 주면 됩니다. #표시를 제거해서 주석처리를 제거해 주세요.

media_dir=/home/pi/torrent
friendly_name=Raspberry DLNA
inotify=yes

media_dir : 미디어 파일이 있는 곳 위치입니다.
inotify : 자동 갱신여부 설정

root_container=V:
- DLNA 에 접속하면 들어갈 목록입니다. V라고 설정해 주면 바로 비디오 목록으로 들어가집니다. 번거롭게 음악, 사진, 비디오 메뉴가 안 나옵니다.

B” - “디렉토리 브라우저”
M” - 음악”
V” - “비디오”
P” - “사진”

서비스를 시작 합니다.

$ sudo service minidlna start

실행이 되는 것을 확인 했으면, 이제 재부팅을 해 줍니다.

$ sudo reboot

부팅이 끝난 후에 DLNA에 접속 할 수있으면 성공적으로 설치가 된 것입니다.

설정하기

/etc/minidlna.conf의 설정파일을 수정합니다.

nano /etc/minidlna.conf

원하는 디렉토리에 설정을 합니다. dnla 는 음악, 비디오, 사진 이렇게 세 종류의 파일만 지원을 합니다. 그렇기 때문에 설정하는 곳도 세 가지가 가능합니다.

설정에 대해서 설명이 들어가 있습니다.

minidlna 의 데이터베이스가 저장되는 폴더를 설정해 줍니다.

# Path to the directory that should hold the database and album art cache.
#db_dir=/var/lib/minidlna
db_dir=/home/pi/.minidlna

설정을 완료하고 난 뒤에는 다음과 같이 입력해서 초기화를 시켜줍니다.

service minidlna restart 
service minidlna force-reload

2016. 7. 22.

[라즈베리파이] 삼바 설치하기

라즈베리파이 삼바서버 설치
——

패키지를 이용해서 설치하기

$ sudo apt-get install samba samba-common-bin

n1PFjOs.png

사용자 추가하기

pi 사용자를 추가합니다.

$ sudo smbpasswd -a pi

oLxy4t9.png

사용자 정보 설정 추가하기

$ sudo vi /etc/samba/smb.conf

제일 아랫칸으로 이동을 한 뒤에 i키를 이용해서 insert모드로 들어간 후에 아래와 같이 입력을 합니다.
입력을 다 끝냈으면, ESC키를 누르고 :wq 를 입력해서 저장하고 나오기를 합니다.

[pi]
path = /home/pi
comment = SAMBA SERVER
valid user = pi
writable = yes
browseable = yes
create mask = 0777
public = yes

TfElNIe.png

$ sudo service samba restart

Failed to restart samba.service: Unit samba.service is masked.

에러가 출력된다면

$ sudo service smbd restart

그래도 Failed to restart smdb.service: Unit smdb.service failed to load: No such file or directory.

와 같은 에러가 난다면 직접 restart 시킬 수 밖에 없습니다.

$ sudo /etc/init.d/samba restart

라즈베리파이에서는 이상하게 sudo service를 통해서 start, stop 등을 하면 안내 메세지가 안 나온다. 이유는 나도 잘 모르겠다.

2016. 7. 21.

[라즈베리파이] SAMBA 연결하기

라즈베리파이에서 삼바서버에 접속하기

이 방법은 하드가 연결 된 ac66라즈베리파이를 연결해서 ac66 안에 있는 하드에 접근하기 위해서 찾아 본 방법입니다.

윈도우에서는smb://192.168.0.1/abc와 같이 연결을 할 수 있었습니다만. 라즈베리파이에서는 조금 다릅니다.

mount 할 시에 타입을 CIFS로 달아주면 됩니다.

CIFS(Common Internet File System) 는 네트워크를 위한 SMB 파일 공유 프로토콜의 확장된 버전이며, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약의 프로토콜이다. CIFS는 이전의 폐쇄적인 SMB 프로토콜과는 달리 CIFS 규약 정의는 여러 유닉스 업체의 참여하여 결정된 내용이기 때문에 삼바도 버전이 올라감에 따라(삼바 버전 2.2 이상) CIFS 규약을 잘 준수하여 안정성이 상당히 향상 되었다.

권한이 없다는 문제가 나올 수도 있습니다. 그 때에는 sudo 를 앞에 입력 해 주세요.

연결할 디렉토리 만들기

/mnt/ 에 드라이브를 연결하려면 일단 디렉토리를 하나 만들어 줘야 한다. 원하는 디렉토리를 하나 만들어 줍니다.

$ mkdir /mnt/abc

SMB 연결하기

$ mount -t cifs //server/share /mnt/abc -o username=아이디,password=비밀번호

SMB연결 끊기

$ umount /mnt/abc

정리

$ sudo mkdir /mnt/abc
$ sudo mount -t cifs //server/share /mnt/abc

2016. 7. 20.

[Go] Golang 에 유용한 IDE 에디터

Golang 에 유용한 IDE 에디터

Go언어를 공부하다보면, 이것저것 편집기를 만져보는게 하나의 통합된 편집기에서 사용하고 싶고, 이것저것 여러 에디터를 설치하기가 싫다.

  • Atom : node.js 로 만들어진 에디터. 범용성이 뛰어납니다. 이본적으로 browser를 기반으로 만들어져 그런지 사양을 좀 탑니다. 처음에 설정을 하기가 좀 힘이 듭니다. 실행중에 잦은 오류가 생깁니다. 이뻐서 사용해보려고 했는데, 뭔가 생산을 하기에는 부적합한 도구가 아닐까 생각이 듭니다.
    저는 이상하게 자동완성 기능이 되다 안되다….. 제가 잘 못쓰는 거겠지만.

  • IntelliJ IDEA : plugin 을 통해서 사용할 수 있습니다. 강좌를 보면 외국분들은 많이 사용하더라구요. 이클립스 같은 통합형툴.

  • LiteIDE : 개인적으로 필요한 기능등만 들어있는 툴입니다. golang에 특화 되어 있어서 사용하기가 편합니다.
    기본에 충실한 에디터 입니다.

  • sublime : Atom과 같이 초반에 설정을 해 줘야 하는게 상당히 번거롭습니다. 가볍고, 빠릅니다.

기타 vim, emacs 등이 있지만, 저는 사용할 줄 아직 모르고, 이 편집기를 사용하신다면 이미 에디터 끝판왕.
메모장을 드려도 잘 사용하실 듯

언젠가, emacs 로 넘어가는 그날을 위해서

2016. 7. 19.

[라즈베리파이] Raspberry Pi connect to samba server

라즈베리파이에서 삼바서버에 접속하기

윈도우에서는smb://192.168.0.1/abc와 같이 연결을 할 수 있었습니다만. 라즈베리파이에서는 조금 다릅니다.
mount 할 시에 타입을 CIFS로 달아주면 됩니다.
CIFS(Common Internet File System) 는 네트워크를 위한 SMB 파일 공유 프로토콜의 확장된 버전이며, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약의 프로토콜이다. CIFS는 이전의 폐쇄적인 SMB 프로토콜과는 달리 CIFS 규약 정의는 여러 유닉스 업체의 참여하여 결정된 내용이기 때문에 삼바도 버전이 올라감에 따라(삼바 버전 2.2 이상) CIFS 규약을 잘 준수하여 안정성이 상당히 향상 되었다.
권한이 없다는 문제가 나올 수도 있습니다. 그 때에는 sudo 를 앞에 입력 해 주세요.

연결할 디렉토리 만들기

/mnt/ 에 드라이브를 연결하려면 일단 디렉토리를 하나 만들어 줘야 한다. 원하는 디렉토리를 하나 만들어 줍니다.
$ mkdir /mnt/abc

SMB 연결하기

$ mount -t cifs //server/share /mnt/abc -o user=아이디,pass=비밀번호

SMB연결 끊기

$ umount /mnt/abc

정리

$ sudo mkdir /mnt/abc
$ sudo mount -t cifs //server/share /mnt/abc

2016. 7. 18.

닌텐도 Wii 에 게임 넣기

Wii 에 게임 넣기

하드로더도 다 설치 했습니다. 이제 게임을 넣습니다. 닌텐도 Wii 개조를 하고 난 뒤에 게임을 넣는 방법.

게임 이미지

닌텐도 위 게임 파일은 두가지가 있습니다.

    ISO 파일
    흔히 알고 있는 순수 이미지 파일
    WBFS 파일
    쓸모없는 용량을 제거한 파일

두 종류의 파일들이 전부 공유되고 있습니다. 하드 용량을 생각해서 두번재 파일을 사용하는 것이 하드용량 확보에 더 이롭습니다. 그래서 ISO 파일은 어따가 둬야 하는지 저도 잘 모릅니다.

게임 넣는 곳

  1. 외장하드에 wbfs 폴더를 만듭니다.
  2. 다운받은 파일을 폴더에 넣습니다.
  3. Wii에 하드를 연결하고 하드로더(cfg, wiiflow) 등을 실행합니다.

WiiBackup Manager

![](http://i.imgur.com/jvpwznO.png

위 게임을 좀 더 쉽게 관리 할 수 있는 툴입니다. 이미지의 DVD 커버 등을 다운 받아서 관리 할 수 있습니다.

Note : 읽을 수 없는 wbfs 파일이 있습니다.

平井堅(히라이켄) - 魔法って言っていいかな(마법이라 말해도 좋을까)?


20160624 엠스테에서 등장한 것을 보고 가사 한번 번역해 봄.

魔法って言っていいかな?
마법이라 말해도 좋을까?

가수:平井堅
작사:Ken Hirai
작곡:Ken Hirai

君があんまり眩しく笑うから
네가 너무 눈부시게 웃으니까
つぶった瞼に残ったオレンジは
감은 눈꺼풀에 남아 있는 오렌지는
いつしか僕のハートの色になった
어느덧 내 마음의 색이 되었어.

君があんまり無防備(むぼうび)に泣くから
네가 너무 무방비로 울어서
つられた僕が止まらなくなって
이끌리는 내가 멈출수없게 되어서
最後は君が背中をさすって(摩って)くれたね
마지막에는 네가 등을 어루만져 주었지

愛という曖昧なものに 君はその指で輪郭(りんかく)を描(えが)いてくれた
사랑이라는 애매한 것에 너는 그 손가락으로 테두리을 그려주었지.

大袈裟(おおげさ)な事は 何も出来ないけど
요란스런 일은 아무것도 할 수 없지만
君を笑顔にする魔法はいくつか持ってるんだ
너를 웃게 하는 마법은 몇개 가지고 있어
帰り道の 犬の鳴(な)き真似(まね) あの日の本音(ほんね)
돌아오는 길의 개흉내 그날의 진심
君の寝言(ねごと)の話 そして大好きのキス
너의 잠꼬대의 이야기. 그리고 사랑의키스

君がまっすぐ僕を見つめるから
네가 똑바로 나를 보고있었기에
隠(かく)したぐしゃぐしゃが頭を出して
숨겼던 엉크러진 머리가 내밀고
気付けば君が優しく撫(な)でてくれたね
알아차린 네가 부드럽게 쓰다듬어 주었어

愛という不確かなものに
사랑이라는 애매한 것에
君はその声で真実を歌ってくれた
너는 그 음성으로 진실을 노래해 주었어

特別なものは何も持ってないけど
특별한 것은 아무것도 없지만
君を笑顔にする魔法ならいくつか持ってるんだ
네가 웃게 하는 마법이라면 몇개 가지고 있어
くしゃみをする君の顔まね あの時君に
재채기하는 너의 얼굴은, 그때 너는
打てなかったメールの話 大好きのキス
칠수없었던 메일의 이야기. 사랑의 키스

立ってられない様な悲しみが襲って来て
일어날 수 없는 듯한 슬픔이 찾아와서
君を笑顔にする魔法が消えてしまったら
너를 웃게 만들수 있는 마법이 사라져버리면
一緒に泣こう 一緒にもがこう 一緒に生きよう
함께 울든, 함께, 함께 초조하든, 함께 살아가자
見つかるまで探し続けよう 魔法って言っていいかな
찾을 때까지 찾기를 계속하자. 마법이라고 말해도 좋을까

大袈裟(おおげさ)な事は 何も出来ないけど
엄청난 일은 아무것도 할 수 없지만
君を笑顔にする魔法はいくつか持ってるんだ
너를 웃게 하는 마법은 몇개 가지고 있어
帰り道の 犬の鳴(な)き真似(まね) あの日の本音(ほんね)
돌아오는 길의 개흉내 그날의 진심
君の寝言(ねごと)の話 そして大好きのキス
너의 잠꼬대의 이야기. 그리고 사랑의키스

우분투에서 일본어 사용하기

우분투에서 일본어 사용하기

fcitx 모듈을 추가로 설치해 주시면 됩니다.

$ sudo apt-get install fcitx-mozc

이렇게 명력어도 추가하고 난 뒤에, 상단바에서 다시시작을 누릅니다.
다시 상단바로 가면, [입력방법]Mozc가 추가 된 것을 볼 수 있습니다.

일본어 입력기

  • fcitx-anthy, 가장 유명한 일본어 입력기, 더이상 업데이트가 없습니다.
  • fcitx-mozc, Mozc를 기반으로 한 입력기.
  • fcitx-kkc, libkkc를 기반으로 최근에 새로운 입력기.

2016. 7. 17.

[라즈베리파이] 같은 아이디 다른 터미널에 명령어 보내기

라즈베리파이를 사용하다보면 같은 ssh 로 접속을 한 상태에서 같은 아이디로 두개의 터미널을 사용하고 있을 때가 있다. 아마 자주 있을지도?
그래서 다른 아이디로 접속을 해서 tty1 에다가 kodi를 실행하라고 시키려고 한다.

접속 된 터미널에 정보 알기

who 명령어를 실행하면, 계정명, 터미널정보, 접속시간 등에 대한 정보를 알 수가 있다.

계정명 터미널정보 접속시간
pi tty1 Jul 12 10:20
pi pts/0 Jul 12 10:20 (hwangs-air)

SjEBmFO.png

tty1는 현재 시스템이 기본적으로 사용되고 있는 터미널이고, 현재 SSH를 통해서 접속을 한 터미널이 pts/0 이다. 하지만, pts/0 에서 명령어를 실행하면 지금 접속해 있는 터미널에서 명령어를 입력할 수가 없다.

setsid sh -c ‘exec 명령어 <> /dev/tty1 >&0 2>&1’

/dev/tty1 에 명령어를 실행합니다.

2016. 7. 15.

USB Tester 전압 테스터기

라즈베리파이를 구매했는데, 여기에 지원파는 전압이 5v 전압만을 사용해야 한다고 합니다. 이 것보다 적으면 작동이 안됩니다. 또는 아래와 같은 무지개가 나타납니다.

wBrA4r1.jpg

스타터킷을 구매해서 외부 USB 어댑터를 구매했는데, 이게 꼽아놓고 사용하기에 콘센트가 너저분합니다. 그래서 곁에 있는 장비에서 USB 전압을 끌어오면 어떨까 생각을 해서 테스터기를 구매하게 되었습니다.

X6MJ9DY.jpg

이번에 알리에서 구매하게 된 제품입니다. 구매하고 한국에 오는데 삼주 걸렸습니다.
흰색제품과 검은색 제품이 있는데, 스팩차이가 있습니다. 흰색은 3~7v 사이만 검출가능합니다. 검은색은 3~15v 까지 사용할 수 있습니다.

99MRcZk.jpg

스펙

Display Type Digital Only
Operating Temperature Less than 60 Degree
Accuracy Class 1/100
Power Supply DC
Measuring Range 3 - 15V
DIY Supplies Electrical
Dimensions 59mmx27mmx19mm
Model Number X
Color White/Black
Brand Name Power Tester
Input Voltage 3 - 15V
Input Current 50mA - 3500mA
Capacity 0 - 19999mAh
Condition 100% Brand New & High Quality

사용하기

a56gpaj.jpg
컴퓨터 - USB 테스터기

9rrpuRN.jpg
컴퓨터 - USB 테스터기 - 핸드폰

기기를 연결하면 들어오는 전력량과 전해지는 전력량을 알 수 있습니다. 이 기기 장점은 핸드폰에서 사용되고 있는 Mini USB도 연결이 된다는 점이다.
집안의 모든 기기에 다 꼽아 봤는데,, 앞에 5v는 거의 변하지 않았다. 기기들의 USB 출력량이 5v로 비슷하다는 뜻이겠지? 그럼 대부분 사용하는 기기들이 안정적인 전압을 가지고 있다고 생각해도 되는건가… 잘 모르겠다.
좀더 다른 기기들을 테스트 해 봐야 하는데, 어디 보이는 것들이 하나도 없다.

여기까지…