kookmin-sw / 2018-cap1-2 Goto Github PK
View Code? Open in Web Editor NEW코웨이 (Coding Wherever Easily)
Home Page: https://kookmin-sw.github.io/2018-cap1-2/
코웨이 (Coding Wherever Easily)
Home Page: https://kookmin-sw.github.io/2018-cap1-2/
초창기에 얘기했던대로 여러 종류의 pseudo code를 받아 처리하게 하면, 지나치게 복잡해지고 혼란을 야기할 수 있음.
따라서 인식가능한 Pseudo code를 1개로 통일시키는 방향을 고려해볼 것.
capstone.kookmin.commons.Packet
패키지로 관리int statusCode;
// 상태코드
int errorLines[];
// 빨간 줄 칠 에러 발생 라인 정보가 담긴 배열String pseudoLines[];
// 성공 또는 Logical Error 시 보여줄 수도코드가 담긴 배열String javaLines[];
// 성공 시 보여줄 자바코드가 담긴 배열byte images[];
//처음 안드로이드에서 사진을 보내기 위한 바이트 배열ex)
a = 1 <- 변환 가능
b = 2 <- 변환 불가
for 구문에서 ~와 동일한 의미를 가지는 -> : 기호가 들어왔을 때,
<현재>
이를 영상처리 단계에서 ->, : 기호를 ~ 기호로 대체 변환해줘
인터프리팅 성공 가능성을 높이는 것에 대해 고려.
=, <=, != 기호를 하나의 기호로 합치는 것이 기호 표기 상 가능하다면
해당 기호들도 고려 대상에 포함.
이미지에서 텍스트 부분을 구별하기 위해 Contour 생성이 필요함
Java server 내부에서 Python 영상처리코드 호출 시 Python 외부 라이브러리 관련 문제로 인해
Java server와는 별개로 새로 들어오는 pseudo code image file을 해당 폴더에서 인식하는
Python 데몬 개발 필요
상황: 2018-cap1-2/src 내부에 Coway/ 폴더를 생성해 로그를 유지한 상태로 Coway 프로젝트를 이전하고자 함
[2018-cap1-2 (master)]$ git remote add Coway ../Coway/
[2018-cap1-2 (master)]$ git fetch Coway
From ../Coway
* [new branch] master -> Coway/master
[2018-cap1-2 (master)]$ git checkout -b temp Coway/master
Branch temp set up to track remote branch master from Coway.
Switched to a new branch 'temp'
[2018-cap1-2 (temp)]$ mkdir Coway
[2018-cap1-2 (temp)]$ git mv * Coway/
[2018-cap1-2 (temp)]$ git add .
[2018-cap1-2 (temp)]$ git commit -a -m "move Coway Project into nested Coway dir"
[2018-cap1-2 (temp)]$ git checkout master
Switched to branch 'master'
[2018-cap1-2 (master)]$ git merge temp // 충돌 알아서 해결
[2018-cap1-2 (master)]$ git push origin master
[2018-cap1-2 (master)]$ git remote remove Coway
[2018-cap1-2 (master)]$ git branch -D temp
참고: http://gypark.pe.kr/wiki/Git/%EC%A0%80%EC%9E%A5%EC%86%8C%EB%B3%91%ED%95%A9
200초 내외로 발표 준비 및 대본 녹음 완료해야함.
현재 측정으로는 220초 언저리에서 완료되고 있으니 녹음을 들어보고 피드백 바람.
자동 완성 기능을 조사, 프로젝트에 활용 가능성이 있는 지 알아봐주기 바랍니다.
TODO)
동적 리스트 생성을 활용하여 이미지에서 도출되는 라인의 갯수에 맞춰 리스트를 생성할 것.
라인 리스트 별로 x축을 기준으로 정렬하여 좌 -> 우 순서로 윤곽선을 정렬.
윤곽선의 중심을 기준으로 일정거리 이내에 발견되는 윤곽선을 병합할 것(i / j / = 등의 문자)
PROBLEM)
동적으로 리스트를 생성하는 것은 어떻게 구현할 것인지?
라인별 리스트에 윤곽선들은 어떻게 넣을 것인지?
윤곽선의 중심을 기준으로 일정거리 이내를 탐색하는 과정에서 '일정거리'를 어떠한 값으로 설정을 할 것인가? 현재 사용중인 이미지에서만 가능한 방법이 아니라 보편적으로 사용가능한 방법인가?
3줄 이상의 라인을 가진 이미지에 대한 테스트가 필요.
수기가 아닌 폰트 이미지가 들어왔을 경우를 가정한 테저렉트 활용을 고려할 것.
Interpreter내부 Type클래스 및 자식 클래스의 Convert 메소드의 인자 오타 수정 필요
ex)
for(i = 0 ~ N) { <- 매칭 가능
for(i = 0 ~ N-1){ <- 매칭 불가
Pseudo code에서 입력 받는 Java 예약어 처리 완성
방법 1) 현재 윤곽선 기준으로 리스트 내부 전체 탐색 -> 복잡도 n^2
방법 2) 현재 윤곽선 기준으로 범위 정해서 리스트 탐색 -> 1번 보다는 복잡도 우수...?
복잡도가 염려되긴 하나, 들어오는 코드의 길이와 그것에서 추출되는 윤곽선 갯수를 고려해보면 100개 남짓.
n^2의 복잡도를 가져도 수행시간에서 유의미한 차이가 발생하지는 않을 가능성이 높음.
int statusCode
: 500Interpreter.jar를 Server의 dependency로 추가하여 호출할 수 있도록 할 것.
import capstone.kookmin.interpreter.parse.Parser; // Interpreter 라이브러리 import
......
Parser parser = Parser.getInstance();
String converted = parser.parse(pseudoCodePath); // pseudoCodePath: /home/user/dir/pseudo.txt
안드로이드와 서버 간 텍스트를 주고받는 경우, 텍스트가 일정 길이 이상이면 Gzip으로 압축해 주고받아 통신비용 줄이는 방향 고려해볼 것.
i , = 등 과 같이 하나의 글자이지만 2개의 부분으로 떨어져있는 경우 윤곽선이 2개로 잡히는 문제가 발생함.
이를 해결하기 위한 코드의 개선이 필요.
확정되면 서버 열어서 마스터 브렌치 기준으로 슬슬 테라포밍 합시다.
코드가 들어있는 폴더 밖에서 이미지를 불러와 히스토그램 균일화를 실시하여
수도 코드 이미지에서 명암의 영향을 최대한 줄여야 함.
String name = "for";
String capitalized = org.apache.commons.lang3.StringUtils.capitalize(name); // For
Pseudo Code로부터 생성된 Java코드에 자동 들여쓰기 기능 추가
성공 -> 멀쩡히 잘 됨
로지컬 에러 -> 수도 코드 문법에 잘못이 있거나, 혹은 수도 코드가 멀쩡히 추출되지 않았을 경우
시스템 에러 -> 통신 등 기타 에러
2번 에러 관련하여 논의가 필요합니다.
수도 코드가 멀쩡히 안 나오는 경우라는 것은 글씨가 이상하거나 혹은 사진이 잘못 찍혀서 인식이 불량한 경우를 뜻합니다.
이러한 경우에 일단 수도 코드를 추출하여 잘못된 수도 코드를 반환하여 줄 것인지 아니면 시스템 에러로 반환 할 것인지에 대한 논의도 필요하며, 전자의 경우로 진행할 경우 어떤식으로 통신을 하고 블랭크 라인이 들어오는 상황이 발생할 가능성이 있어 다양한 논의가 필요할 것입니다.
반복문 내부에서 for(i = 0 ~ n) 이라고 적을 경우 변수 i를 int i로 변환가능할 수 있도록 구현이 필요함.
추가설명)
a = b 와 같이, 변수 타입에 대한 서술 없이 할당하는 구문이 나왔을 때,
b의 string을 읽어들여 첫 번째 string 에 따라 분류
public static final int SEND_IMAGES= 500;
...
clientSocket.send(new Packet(Packet.SEND_IMAGES, images));
메뉴 우리가 정하라고 하셨는데...
괜찮은 곳 아는 사람...?
구글 비전 api를 활용하여 텍스트 추출을 진행하고, 정밀도를 향상 시킬것.
테스트 케이스를 구축
전처리간 발생가능한 에러 발견 및 미비한 부분 수정 요망.
변수 = 메서드 콜 의 경우 변수의 타입을 어떻게 변환 시킬 것인지?
현재 인터프리팅에서는 띄어쓰기를 모두 제거하는 데, mod / random등 스트링으로 이루어질 경우 이를 다른 스트링과 구별을 어떻게 할 것인지.
myClass = new MyClass(name, 1)
pw.write(line + System.getProperty("line.separator");
Java 서버 내부에서 Python 영상처리 모듈 실행
byte[] images = Loader.load("/home/user/test.jpg");
ex)
break -> break;
e.printStackTrace() -> e.printStackTrace();
ex)
hm = new HashMap<String, String>();
-> HashMap<String, String> hm = new HashMap<String, String>();
<이름>_<번호>의 형식으로 통일하고자 하며, 번호는 다른 사람들과 반드시 같아야할 필요 없음.
생성하는 브랜치마다 번호를 증가시켜서 한눈에 가장 최근의 브랜치가 어느 브랜치인지만 확인 할 수 있으면 됨.
예를 들어 IP_<번호>로 영상처리 관련 브랜치를 생성하고 있는데, 이슈 번호에 따라 <번호> 부분이 변경되고 있고 현재 3번째 브랜치에서 작업중. 숫자가 가장 큰 브랜치가 최근 작업하고 있는 브랜치.
소켓 통신 시 발생할 수 있는 경우의 수 분석 &
경우의 수에 대응하는 response code 매칭 작업 필요.
capstone.kookmin.commons.io.Loader
capstone.kookmin.commons.io.Saver
현재까지의 코드로는 글자 이미지와 종이가 명확하게 구별이 잘 되지 않음.
또한 히스토그램 분포가 들어오는 이미지의 종류에 따라 다양하여 일괄적으로 임계값을 적용할 수 없음.
모든 이미지에 대하여 일정한 임계값으로 처리할 수 있어야 자동화가 성립됨.
<이름>_<브랜치 번호>의 형식으로 이름 짓고 완성되면 마스터에서 합치는 방식으로 합시다.
성적에 반영하기 위해 작업이 완료된 브랜치는 닫지 말고 유지해야함.
가능한 현재 해결해야하는 목표를 이슈에 설정하고 그 번호를 따라주기를 바랍니다.
예시로 나는 영상처리 3번 이슈 해결 예정이므로 브랜치는 IP_3을 사용할 예정입니다.
구글 비전 api를 활용하여 캐릭터 인식을 시도해 볼 것.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.