Tip/Windows2020. 11. 24. 23:14

PCAP 파일에서 image 파일 추출 하기

1. WireShark로 통신 패킷을 캡여하여, PCAP 파일로 저장한다


2. WireShark으로 저장한 파일을 연다

http_tetris.pcapng
0.58MB

3. HTTP object를 추출 한다


4. 이미지 파일을 저장한다
→ left.png 를 선택한 다음 저장 버튼을 누른다


5. 저장된 파일을 확인한다

Posted by chobocho

댓글을 달아 주세요

Tip/Android2020. 11. 1. 22:32

PC에서 휴대폰의 Termux 위에 돌아가는 Jupyter notebook 접속하기

휴대폰의 IP는 192.168.35.195 임

1. Termux 실행

2. Jupyter notebook 실행

jupyter notebook --no-browser --port=8889

3. Port forwarding

ssh -L 8282:127.0.0.1:8889 192.168.35.195 -p 8022

4. PC의 웹브라우저를 열고 접속

'Tip > Android' 카테고리의 다른 글

[Termux] PC에서 Jupyter notebook 접속 하기  (0) 2020.11.01
[Termux] SSH port forwarding  (0) 2020.10.28
[Termux] Web server 돌리기  (0) 2020.10.27
[Termux] ssh 사용하기  (0) 2020.10.26
Posted by chobocho

댓글을 달아 주세요

Tip/Android2020. 10. 28. 00:02

1. web server 가 8080 포트로 실행되어 있다

2. PC에서 8282 포트로 접속을 하고 싶은 경우

  • 휴대폰은 192.168.35.102 ip를 사용하고 있다

ssh -L 8282:127.0.0.1:8080 192.168.35.102 -p 8022

'Tip > Android' 카테고리의 다른 글

[Termux] PC에서 Jupyter notebook 접속 하기  (0) 2020.11.01
[Termux] SSH port forwarding  (0) 2020.10.28
[Termux] Web server 돌리기  (0) 2020.10.27
[Termux] ssh 사용하기  (0) 2020.10.26
Posted by chobocho
TAG ssh

댓글을 달아 주세요

Tip/Android2020. 10. 27. 23:45

Termux 에서 web server를 실행하는 방법

1. Apache2 설치

apt install apache2

2. httpd.conf 수정

/data/data/com.termux/files/usr/etc/apache2/httpd.conf

DocumentRoot "/data/data/com.termux/files/usr/share/apache2/default-site/htdocs"
<Directory "/data/data/com.termux/files/usr/share/apache2/default-site/htdocs">

↓↓↓↓↓

DocumentRoot "/data/data/com.termux/files/home/storage/downloads/localhost/myweb"
<Directory "/data/data/com.termux/files/home/storage/downloads/localhost/myweb">

저의 localhost의 위치는 폰의 downloads 폴더의 /localhost/myweb 입니다.

3. Html 파일 복사

저는 아래의 tetris.html 과 스크립트를 복사했습니다.
https://github.com/chobocho/JsTetris/tree/master/src/app/src/main/assets

4. Apache 웹서버 실행

apachectl start

'Tip > Android' 카테고리의 다른 글

[Termux] SSH port forwarding  (0) 2020.10.28
[Termux] Web server 돌리기  (0) 2020.10.27
[Termux] ssh 사용하기  (0) 2020.10.26
[Gradle] Version 명 자동 업데이트  (0) 2020.04.11
Posted by chobocho

댓글을 달아 주세요

Tip/Android2020. 10. 26. 23:31

1. ".bashrc" 파일에 아래와 같이 sshd를 추가한다.

2. termux를 재실행 한다.

3. ssh 192.168.35.12 -p 8022 와 같이 port 8022번으로 접속한다.

'Tip > Android' 카테고리의 다른 글

[Termux] Web server 돌리기  (0) 2020.10.27
[Termux] ssh 사용하기  (0) 2020.10.26
[Gradle] Version 명 자동 업데이트  (0) 2020.04.11
[ChooseOne] 안드로이드 제비뽑기 앱 만들기 (I)  (0) 2019.09.02
Posted by chobocho
TAG ssh

댓글을 달아 주세요

Tip/Windows2020. 9. 22. 23:41

탐색기로 많은 파일을 지울 때 생각보다 시간이 오래 걸린다.

이럴 때에는 command 창을 열고 아래 명령어를 실행 하면 빠르게 지울 수 있다.

del /F /S /Q  [삭제할 폴더] 
rd /S /Q  [삭제할 폴더]

* 주의: 조심해서 사용 해야 함.

Posted by chobocho
TAG command, dos

댓글을 달아 주세요

Tip/Life2020. 5. 11. 23:41

사무실에서 나의 느린 문제해결 속도에 답답해 하면서,

문득 내가 신입 때 이런 걸 알고 준비했면 지금 더 좋지 않았을까 하는 것들이 무엇일까 생각해 보았다.

 

1) 문제해결 방법

몇 달 전 친구와 이야기를 하다가, 네가 면접관이면 새로운 멤버를 구할 때, 어떤 질문을 할 것인가 하고 물어 본적이 있었다. 친구 曰 "문제가 주어졌을 때, 어떻게 해결 할 것인가?"를 물어보겠다고 했다. 그 답을 듣고, 내가 문제를 받고 어떻게 처리하는가를 되돌아 보았다. 그리고 주위에 일을 잘하는 분들을 보면, 일을 잘하는 분들은 차이점이 있었다.

첫째, 문제를 받으면 문제를 명확하게 정의 한다.

문제가 주어지면, 문제의 해결 방향을 정의 한다.

이 문제가 컨셉에 따른 올바른 동작인지,

단순 버그여서, 프로그래밍으로 수정하면 되는지,

과거에 이력에 있는 문제이어서, 수정을 하려면 관계된 다른 부서와 협의가 필요한 것인지,

단순 협의로 정리 할 수 있는 문제인지 등등 문제를 보고 진행 방향을 빠르고 정확하게 판단을 한다.

물론 올바른 판단능력을 가지기 까지는 많은 시행 착오와, 좋은 기억력이 있어야 하고, 자주 선임자들에게 물어서 이력을 파악하고 있어야 하는것도 중요하다.

둘째, 문제 진행 사항 보고

문제의 진행사항을 자주 윗 사람에게 보고하여서, 호미로 막을 일을 가래로 막는 일을 방지한다.

알지 못하는 숨은 이력이 있을 수 있기 때문에, 문제의 진행 상황 보고는 중요하다

셋째, "이 일은 내꺼" 라는 마인드

일을 잘하는 분들은, 모든 일이 자기 일이라는 마인드로 임한다. 문제의 주인 의식이 있다.

어려운 문제가 주어지더라도, 대부분의 사람은 해답의 근처까지는 간다.

그런데 거기서 해답을 찾느냐 못찾느냐가 실력이다.

해답의 근처에서 해답을 찾으려는 노력의 차이가 쌓이고 쌓여서, 고수와 하수가 갈린다.

끝까지 포기 하지 않고 답을 찾는 자세 이것이 중요하다.

 

2) 프로그래밍 스킬

초딩 시절, 생활의 길잡이라는 교재에서 성공한 사람들은 10년간 하루 4시간씩 공부한다는 내용의 글이 있었다.

365일 x 4시간 x 10년 = 14600 시간이고, 주말을 제외하고 계산해도 10440 시간, 10000 시간이 넘는다.

아웃라이어에서 이야기한 1만 시간의 법칙을 우린 초딩 시절에 배웠으나 잊고 살고 있었다.

일을 잘하는 분들은 보면, 끊임 없이 배우고, 공부한다. 남들이 짜놓은 코드를 보면서, 공부하고,

왜 그렇게 짰는가를 생각한다. 그리고 최신 트렌드에 뒤쳐지지 않도록 끊임없이 공부한다.

내가 신입때로 돌아간다면...

Design pattern, Refactoring, 알고리즘 공부에 시간을 많이 쏟았어야 하는 아쉬움이 남는다.

 

3) 어학

글로벌 시대에 어학의 중요성은 아무리 강조해도 부족함이 없다.

영어는 RFC 문서는 자유롭게 읽고, 외국인과 전화 회의를 할 정도의 어학 실력은 반드시 갖추어야 한다.

큰 IT 기업에서 외국인과의 협업은 필수 이고, 컴퓨터 관련 최신 기술은 모두 영어로 나오기 때문에,

영어는 생존을 위한 필수이다. 그리고 미래를 위해 중국어도 반드시 공부해야 한다.

 

4) 체력 

미생에 보면 "좋아 하는 일을 발견하면 체력을 길러라" 라는 문구가 있다.  나이가 들면 결국 체력 싸움이다.

본인이 좋아해도 체력이 안되면 할 수 가 없다. 평소에 꾸준히 건강관리를 하는 것이 중요하다.

'Tip > Life' 카테고리의 다른 글

신입 사원때 알았으면 좋았을 것들  (0) 2020.05.11
Posted by chobocho

댓글을 달아 주세요

Tip/Android2020. 4. 11. 15:15

Android로 APK를 생성하면서 자동으로 파일 이름 생성 및 버전 명을 업데이트 하는 스크립트를 구성해 보았다

미래의 나를 위하여 기록을 남긴다

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    def versionPropsFile = file('versioninfo.properties')
    def Properties versionInfo = new Properties()

    if (versionPropsFile.canRead()) {
        versionInfo.load(new FileInputStream(versionPropsFile))
    } else {
        versionInfo['VERSION_HEADER'] = "0.1105"
        versionInfo['VERSION_NUMBER'] = 0
        versionInfo['VERSION_COUNT'] = 0
        versionInfo['BUILD_COUNT'] = 0
    }

    def versionHeader = versionInfo['VERSION_HEADER']
    def versionNubmer = versionInfo['VERSION_NUMBER'].toInteger()
    def versionCount = versionInfo['VERSION_COUNT'].toInteger()
    def buildCount = versionInfo['BUILD_COUNT'].toInteger()

    def taskName = gradle.startParameter.taskNames
    def addVersion = 1
    def isReleaseVersion = false

    if (":app:bundleRelease" in taskName) {
        println '---[bundleRelease]---'
        versionNubmer += addVersion
        versionCount += addVersion
        isReleaseVersion = true
    }

    buildCount += addVersion

    versionInfo['VERSION_HEADER'] = versionHeader.toString()
    versionInfo['VERSION_NUMBER'] = versionNubmer.toString()
    versionInfo['VERSION_COUNT'] = versionCount.toString()
    versionInfo['BUILD_COUNT'] = isReleaseVersion ? "1" : buildCount.toString()

    versionInfo.store(versionPropsFile.newWriter(), null)

    def date = new Date();
    def alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    def thisYear =  alphabet.charAt(date.getYear() + 1900 - 2001)
    def thisMonth = alphabet.charAt(date.getMonth())
    def monthVersion = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(versionCount)

    println '-------------------'
    println taskName
    println "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
    println '-------------------'

    defaultConfig {
        applicationId "com.chobocho.ColorMatch"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode versionNubmer
        versionName "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
        setProperty("archivesBaseName", "imagematch_$versionName")
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

미래의 우둔한 나를 위하여, 주석을 남긴다.

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    // 프로퍼티 파일 이름
    def versionPropsFile = file('versioninfo.properties')
    def Properties versionInfo = new Properties()

    if (versionPropsFile.canRead()) {
        versionInfo.load(new FileInputStream(versionPropsFile))
    } else {
        // 프로퍼티 파일이 없으면 생성을 하기위해 기본 값을 설정한다
        versionInfo['VERSION_HEADER'] = "0.1105"
        versionInfo['VERSION_NUMBER'] = 0
        versionInfo['VERSION_COUNT'] = 0
        versionInfo['BUILD_COUNT'] = 0
    }

    def versionHeader = versionInfo['VERSION_HEADER']
    def versionNubmer = versionInfo['VERSION_NUMBER'].toInteger()
    def versionCount = versionInfo['VERSION_COUNT'].toInteger()
    def buildCount = versionInfo['BUILD_COUNT'].toInteger()

    def taskName = gradle.startParameter.taskNames
    def addVersion = 1
    def isReleaseVersion = false

    // Signed APK 빌드인 경우만 versionCount를 증가 시킨다
    if (":app:bundleRelease" in taskName) {
        println '---[bundleRelease]---'
        versionNubmer += addVersion
        versionCount += addVersion
        isReleaseVersion = true
    }

    buildCount += addVersion

    // 수정된 값을 프로퍼티에 업데이트 한다
    versionInfo['VERSION_HEADER'] = versionHeader.toString()
    versionInfo['VERSION_NUMBER'] = versionNubmer.toString()
    versionInfo['VERSION_COUNT'] = versionCount.toString()
    versionInfo['BUILD_COUNT'] = isReleaseVersion ? "1" : buildCount.toString()

    versionInfo.store(versionPropsFile.newWriter(), null)

    // 빌드한 연도와 월을 남기기 위한 부분
    // 2001년 1월 > AA
    // 2020년 3월 > TC
    def date = new Date();
    def alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    def thisYear =  alphabet.charAt(date.getYear() + 1900 - 2001)
    def thisMonth = alphabet.charAt(date.getMonth())
    def monthVersion = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(versionCount)

    println '-------------------'
    println taskName
    println "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
    println '-------------------'

    defaultConfig {
        applicationId "com.chobocho.ColorMatch"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode versionNubmer
        // 버전명 정보 -> 0.1105.TD1.2
        versionName "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
        // 생성 되는 파일이름을 설정한다
        setProperty("archivesBaseName", "imagematch_$versionName")
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

'Tip > Android' 카테고리의 다른 글

[Termux] Web server 돌리기  (0) 2020.10.27
[Termux] ssh 사용하기  (0) 2020.10.26
[Gradle] Version 명 자동 업데이트  (0) 2020.04.11
[ChooseOne] 안드로이드 제비뽑기 앱 만들기 (I)  (0) 2019.09.02
Posted by chobocho

댓글을 달아 주세요

Tip/Windows2020. 2. 22. 16:43

어쌔신 크리드 신디케이트 (~ 2020.02.28 까지 유효 합니다)

https://www.epicgames.com/store/ko/product/assassins-creed-syndicate/home

 

Assassin's Creed Syndicate - Assassin's Creed Syndicate

1868년 런던. 산업 혁명의 중심부에서 자신감과 카리스마로 무장한 암살자 제이콥 프라이로서 활약합니다.

www.epicgames.com

 

Posted by chobocho
TAG 게임

댓글을 달아 주세요

Tip/Windows2020. 2. 4. 21:15
갤럭시 북 이온에서 터치패드를 이용 하여 무선 충전하는 방법
 
Fn + F11 을 누르고 터치패드에 무선 충전을 지원하는 휴대폰이나, 무선 이어폰을 올려 두면 된다.
 
 
 
Posted by chobocho

댓글을 달아 주세요