1. lsof 파일명 
    지정한 파일을 엑세스 하고 있는 프로세스의 정보를 보여준다.

  2. lsof 경로명 
    지정한 디렉토리를 엑세스 하고 있는 프로세스의 정보를 보여준다.

  3. lsof -i 
    모든 네트워크에 연결되어 있는 프로세스와 파일의 정보를 보여준다. 
    ex)lsof -iTCP // TCP에 연결되어있는 프로세스와 포트의 정보를 보여준다.

  4. lsof -p 프로세스ID 
    지정한 프로세스와 고나련된 프로세스와 파일의 정보를 보여준다.

  5. 해킹추적 시나리오 
    $ lsof -i // 기본포트연것을 확인한다. 
    $ lsof -p // 프로세스를 분석한다. 
    $ lsof /home/홈페이지 디렉토리 // 특정디렉토리에 있는 프로세스 검사 
    $ lsof /tmp // 임시파일 관련 프로세스 분석 
    $ lsof /dev // 정규 해킹 디렉토리 분석


Posted by 빨강토끼
,

맥북에 이것저것 깔았다 지우다 보니 finder의 다음으로 열기(Open with) 항목이 이런저런 이유로 복잡해졌다(중복된 어플, 지워진 어플)

인터넷을 검색해 보니 이게 제일 간단한 방법 같았다.

http://www.clien.net/cs2/bbs/board.php?bo_table=cm_mac&wr_id=575678

$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user


Posted by 빨강토끼
,

이 간단한 insert sort가 어제 커뮤니티 행사 이벤트때엔 생각이 잘 안나서 해맸다.

C 도 그렇고 기본적인 알고리즘은 항상 반복해서 봐둬야겠다.

#include <stdio.h>

int printArr(int* arr){  
    for (int k = 0; k < 6; ++k) {
        printf("%d",arr[k]);
    }
    printf("\n");
}
int main() {  
    int i=0 ;
    int j=0;
    int arrays[]  = {5,2,4,6,1,3};

    printf("hello : ");
    printArr(arrays);
    for( i = 1 ; i< 6 ; i++)
    {

        int offset = arrays[i];
        printf("offset : %d\n", offset);
        for(j = i-1; j >=0 ;j--)
        {
            printf("comp : %d , %d\n", arrays[j], offset);
            if ( arrays[j] > offset)
            {
                arrays[j+1] = arrays[j];

            }
            else{
                break;
            }

        }
        arrays[j+1] = offset;

        printArr(arrays);


    }

    for (int k = 0; k < 6; ++k) {
        printf("%d",arrays[k]);

    }
    return 0;
}


Posted by 빨강토끼
,

SpringBoot를 사용하는데 요청하는 기존 레거시 시스템이 한글 인코딩을 EUC-KR로 보내고 있다.

한글처리가 잘안되서 검색해보니 http://theeye.pe.kr/archives/2206 
라는 글을 발견하였다.

그런데도 잘 안되었다.

그런데 이것 저것 조금더 수정해보니 된다. ㅎ

주요한것은 
public Filter characterEncodingFilter() -> public CharacterEncodingFilter characterEncodingFilter(
로 바꾸었다.

참조 http://emflant.tistory.com/97

Posted by 빨강토끼
,

jvm을 사용하는 R 패키지를 사용하려고 할때 
아래와 같은 에러메시지가 나오면서 JVM을 Load 하지 못할 수 있습니다.

JavaVM: requested Java version ((null)) not available. Using Java at "" instead.  
JavaVM: Failed to load JVM: /bundle/Libraries/libserver.dylib  
JavaVM FATAL: Failed to load the jvm library.  
Error : .onLoad failed in loadNamespace() for 'xlsx', details:  
  call: .jinit()
  error: JNI_GetCreatedJavaVMs returned -1

이럴때는 먼저 터미널 창에서 
$ sudo R CMD javareconf

그리고 R창에서 
>install.packages("rJava", type='source')

라고 해보시면 될겁니다.

http://stackoverflow.com/questions/35179151/cannot-load-r-xlsx-package-on-mac-os-10-11

Posted by 빨강토끼
,

Thrift는 페이스북이 개발한 규모 가변적인(scalable) 이종 언어 서비스 개발을 위한 소프트웨어 프레임워크이다.

Thrift을 이용하는 목적은 다양한 언어를 사용하여 개발한 소프트웨어를 쉽게 결합(통신)하기 위함이다.

Apache에서 제공하는 Thrift 는 다양한 플랫폼간에 매우 편리하게 사용할 수 있는 통합 RPC환경을 제공한다.

Thrift는 쉽게 다른 언어간 RPC 통신을 지원한다고 생각하시면 될지도.....

Thrift 스크립트를 한번 작성해 놓으면 다양한 언어에서 사용될 수 있는 코드를 자동으로 생성할 수 있습니다.

.thrift란 파일을 생성하고 Thrift compiler로 이 파일을 컴파일하면 C++이나 Java등 여러 언어에서 사용할 수 있는 인터페이스를 자동으로 생성해 준다. 이 인터페이스를 사용해 RPC(Remote Procedure Call) 통신을 한다..

  • 서블릿 제공(org.apache.thrift.server.TServlet)
  • 멀티쓰레드 지원 (org.apache.thrift.server.ThreadPoolServer : worker thread 지정)
  • Async 지원 (org.apache.thrift.server. TNonblockingServer : single threaded)
  • Multi-thread Half-Sync/Half-Async지원 : org.apache.thrift.server. THsHaServer
  • Exception을 제공 (Google Protocol Buffer에는 없는 기능)
  • Set, Map 지원 (Google Protocol Buffer에는 없는 기능)

https://thrift.apache.org/ 
http://coreawin.tistory.com/245 
http://mwmw7.tistory.com/311 
http://theeye.pe.kr/archives/2063 
http://knight76.tistory.com/1427 
http://rocksea.tistory.com/100

Posted by 빨강토끼
,

학습비용이 높은 편이라 팀에 하이버네이트 전문가가 없다면, 초기 도입비용이 높을수 있다.

  • 쿼리 힌트나 DB에 종속적인 쿼리에 대한 의존도가 높은 경우
  • 네이티브 쿼리(하이버네이트가 생성해주는 쿼리가 아니라 데이터베이스 벤더에 종속적으로 작성한 SQL을 사용하는) 비율이 높은 경우
  • 애플리케이션 개발이 객체지향적이지 않은 경우

Write Behind, Dirty Checking, Lazy Fetching 등의 장점을 살리기 어렵다.

참고로.

Write behind

Write-behind caching. 하이버네이트의 Session에서 기본으로 제공해주는 기능으로서, 정말로 쿼리를 실행해야 하는 순간까지 최대한 쓰기 작업을 미루는 기능.

Dirty Checking

하이버네이트를 사용해서 읽어온 객체는 항상 그 상패의 변화를 주시하고 있다. 그러다가 만약 트랜잭션이 커밋되면 , 하이버네이트가 알아서 테이터베이스에 해당 객체의 상태 변화를 적용시킨다.

Lazy Fetching

객체를 조회시 실제로는 비어있는 가짜객체(Proxy 객체)를 만들어 가짜객체의 데이터에 접근하면 하이버네이트가 그제서야 해당 객체를 채우는데 필요한 데이터를 가져다 준다.

Posted by 빨강토끼
,

한글로 주석을 작성하면 아래 와 같은 에러가 나올 수 있다.

File "/Users/red/pro/pydata/pydata-book-master/ch03/ipython_script_test2.py", line 3  
    # 한글
        ^
SyntaxError: Non-ASCII character '\xed' in file /Users/red/pro/pydata/pydata-book-master/ch03/ipython_script_test2.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details  

이럴땐 아래와 같은 2줄을 앞에 적어주면 된다.

# !/usr/bin/python
# -*- coding: utf-8

참조 
http://nbviewer.ipython.org/github/re4lfl0w/ipython/blob/master/books/pythondataanalysis/ch03_Introduction%20IPython.ipynb https://www.python.org/dev/peps/pep-0263/

Posted by 빨강토끼
,

주위에 프리랜서가 많아지고 있다.

많은 대형 IT 업계에서는 유례없이 많은 인원을 신입/경력으로 뽑고 있다. 
하지만 대부분의 개발자들에겐 좁은 문인 것은 변함이 없다.

그 업체들은 개발자가 너무 없다고 하며 개발자 모시기에 열을 올리고 있고, 개발자들은 일 할 곳이 없어서 고생중이다.

저 역시 개발자를 뽑는 것에 대하여 엄격한 것을 찬성한다. 
하지만 방법의 문제에서는...(이글에서는 논외로)

IMF 겪으며 많은 벤처가 생겨났고 IT 거품으로 많은 업체가 생겨 났었다.

하지만 시간이 지날수록 초기에 많은 아이디어와 능력으로 생겨났던 업체들이 경제가 어려워지면서 문을 닫거나 대부분 자의 반 타의 반으로 SI 업으로 밥벌이를 하고 있다.

근래 들어 더욱더 경제도 어려워지고 흔히 말하는 "갑"들의 횡포로 문을 닫는 업체가 늘고 있다.

문제는 여기서 끝나는게 아니다.

그 회사에 속해 있던 프로그래머들의 대부분이 다른 회사에 취직을 못하고 프리랜서로 일하고 종사를 하고 있고 점점 더 그 비중이 많아지고 있다.

그 중 극히 일부는 엄청난 실력으로 대우받으며 또한 자유롭게 일하고 있는 분들이 있는 반면 대부분의 프리렌서분들은 정말 공사장의 막노동꾼처럼 프로젝트 이곳 저곳을 옮겨다니고 있는 처지이다.

제가 활동하고 있는 커뮤니티에서는 스터디를 주로 하는 모임의 성격을 가지고 있는데 정기적으로 다양한 분야로 스터디원을 모집할때 오시는 분들은 대학생들의 비중이 절대 다수이다.

일년에 몇차례있는 각종 세마나를 가도 마찬가지이다. 취직을 위하여 머라도 스팩을 쌓을 만한 것이 없나 살피러 다니는 대학생들이 많고 경력이 있는 시니어 개발자들은 주로 스탭이거나 발표자들 뿐이다.

그 많은 프리랜서분들은 다들 어디에 있을까?

물론 앞서 언급했드시 정말 열심히 자기개발을 하는 프리랜서분들도 계신다. 
하지만, 나머지 대다수는 그저 근근히 개발 일로 연명하며, 미래에 대하여 그리고 자기개발에 대하여 관심이 없다.

그 분들의 이야기를 들어보면 그 분들을 탓하기도 어려웠다.

  1. 매일 업무적응과 야근과 휴일근무로 인하여 지금 당장 주어진일이 아닌 따로 공부를 하거나 모임에 참여할 수 있는 여력이 없다.
  2. 자기개발을 한다고 해서 맑은 미래가 보장되지 못한다는 심리적 유리벽을 체험했거다 이야기를 들어서 괜한 노력보다 현실에 안주하는 습성을 가지게 되었다.
  3. 그로 인하여 프로그래밍이나 자기개발에 열정을 상실해버리고 그저 근근히 입에 풀칠하며 사는 수단으로만 생각하게 되어서 아무런 열정이 없다.

이것들이 개발자 자신만의 잘못일까? 
사례 하나 하나를 자세하게 이야기 해보고 싶지만 다음에 기회가 된다면 따로 글을 적도록 하겠다.

아무튼 결국. 
점점 더 대형IT회사는 그들만의 철옹성이 되고 값싼 프리렌서들은 점 점 더 싸구려 소모품으로 스스로를 퇴화시키고 있게 되었다.

이런 현상이 더 심각해지면 어떤일이 생길까? 
저 역시 쉽게 장담은 못하겠다.

가능한 시나리오 중에 하나는

더 이상 한국IT의 성장 동력인 개발자들의 내수가 어려워지고, 수 많은 개발자들은 할 일을 찾지 못하고 쓸모없는 인력이 될것이며 졸지에 프리랜서가 아닌 제대로된 실업자가 될것이다. 아니면 정말 최저급여로 일하는 노동자가 될것이다.

국내에서 개발하는 프로젝트는 그들만(?)의 리그가 될것이고 인력들은 양극화가 극심해져서 시간이 더 흘러서는 한국IT는 경쟁력을 잃어 세계시장에서 도퇴될것이다.

이렇게 글을 끝내 버리면 안될 것 같아서(비극적 종말에 대한 예언)

어떻게 하면 이상황이 나아질수있을까 의견을 적어본다.

다른 다양한 관점에서 여러가지 방법들이 있겠지만 이 글에서 주장하고 싶은것은

개발자들이 스스로 자기개발을 해야된다는 것이다.

끝.....(열린결말?)

Posted by 빨강토끼
,

2017.09 TIL

프로그래밍/기타 2017. 10. 8. 14:34

2017.09.03
개발블로그 모음 : https://github.com/sarojaba/awesome-devblog

2017.09.09
코딩 면접 준비 다이어그램

2017.09.10
영어학원 활용법

금융(카카오뱅크) 오픈소스 DBA 30일 생존기

2017.09.17
Google I/O 2017 참관기 - Kotlin
Google I/O 2017 참관기 - 머신 러닝과 AI
누구나 쉽게 할 수 있는 빅데이타와 머신러닝 아틀라시안에서 slack에 경쟁서비스를 오픈하였다. stride

2017.09.22

네이버에서 만든 오픈소스 가이드

패스트캠퍼스 딥러닝 강의 자료

Posted by 빨강토끼
,