Giter Site home page Giter Site logo

2018-cap1-4's People

Contributors

gychoics avatar jjcec avatar junyeongrue avatar kimtaewoo-cs avatar wonyong-jang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

2018-cap1-4's Issues

3.15 회의 및 안건 (서버 로드밸런싱 구성)

매주 회의를 목요일로 정했는데 시간이 가능한지 답글 남겨 줄 것
또한 저번 교수님과 회의에서 웹에서 의사가 아닌 일반사람들도 웹을 접근 후 이용
가능하게 하려면 앞단에 아파치서버 를 추가해서 로드밸런싱을 구성하는 부분에
대해서 검토가 필요 할 것 같습니다.
또한, 아래 내용에 대해서 준비해서 회의를 가졌음 하고 에로 사항 등 답글 부탁드립니다.
장원용: 로드밸런싱 (아파치서버 단점 보완한 엔진엑스 검토)
김태우 : 수지침 Rule 추가 및 정리, 아파치 서버 검토
류준영 : 사상체질 Rule 추가 및 정리 (기존 Rule 진단과 연결)
차은채 : UI 구성 하기위한 개발 환경 구축

도메인 Rule 결정 회의

Expert System 도메인 Rule 결정에 대해서 회의가 필요합니다.

기존 인턴에서 사용하던 Rule을 토대로 시스템을 구현할지

새로운 도메인 Rule을 결정해서 진행 할지 각자 의견이 필요할 것 같습니다.

설문지 연동 관련 (hospitalSurvey)

@KimTaeWoo-CS / 대기자명단 디비테이블 추가됨
현재 대기자 명단에서 설문지를 클릭했을 때 해당 환자의 환자 번호를 가지고 설문지가 팝업창으로 열리게 됩니다.
설문은 기타 항목 전까지 현재 연동한 상태이며, 작성완료하고 저장을 눌르게 되면 map 으로 id 와 value 을 가진 리스트를 가지게 되면 SurveyVO 클래스를 수정해 주시면 될꺼같습니다.
아래는 SurveyVO 클래스에서 소스코드 일부이며 설문지 항목 head_1 일때 updateSymptom 테이블에 넣을 증상 이름인 symptom 를 입력해 주시고 테스트 해보시면 디비테이블에 항목이 들어갈것입니다.
또한 drools 연동을 위해서 rule 테이블, prescription 테이블을 같이 만들어 주시면 됩니다.

	///////////////////////////////////////////////////////////////////////////////////////////////////////////
	public String fromSurveyToSymptom(String str)	{
		String symptom="";
		switch(str)
		{
			case "head_1": symptom = "head";
							break;
			case "head_2": symptom = "head2";
							break;
		}
		
		return symptom;
	

gitignore 설정 후 적용 안될 때 확인

$ git rm -r --cached .
$ git add .
$ git commit -m "fixed untracked files”

다음의 명령을 사용하시면 곧바로 설정이 적용됩니다.
저장소에 이미 올라가있는 파일들도 삭제됩니다. (물론 푸시했을때)

UI 화면구성 추가사항 검토

UI 화면구성을 하는 과정에서 의견을 듣고싶습니다. 환자정보, 로그인창, 설문결과, 증상, 증상을 선택할 수 있는 리스트, 진단, 처방 칸 외에 넣었으면 하는 추가사항들 있으면 말해주세요.

로그인 오류

현재 로그인을 시도하면
LoginCheck는 정상적으로 호출되지만,
실질적인 로그인은 이뤄지지 않고 있습니다.
확인 부탁드립니다.

git pull 하기전 확인

DB 연동에 문제로 아래 소스 코드를 주석처리 해놓은 상태입니다.
git pull 하고 아래 코드 주석을 제거하면 정상 작동 합니다.
위치는 RuleController.java를 찾아 가시면 됩니다.

@PostConstruct // 생성자 annotation
	public void initialize(){ 
		
		patient = new PatientVO(); // 추후 빈객체로 사용할 예정
		symptomVO = new PatientSymptomVO();
		//patient = (PatientVO) BeanUtils.getBean("patientVO");
		
		List<DomainRuleVO> ruleList = null; // rules
		
		try {
			ruleList = ruleService.selectDomain();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Map<String,Object>ruleMap = new HashMap<String,Object>();
		for(DomainRuleVO obj : ruleList) // hashmap 
		{
			ruleMap.put(obj.getRuleID(), obj);
			obj.countAndSymptom(); //
		}
		
		drools = new DroolsSpringTest();
		drools.setRuleMap(ruleMap); // drools hash map setting
		
		
		logger.info("setRuleDomain complete!");
	}

사상체질 모델 2가지로 추려보았습니다.

사상체질 판독 설문 모델로 2가지 검색해보았는데
한가지는 1989년도 경희대학교 대학원 한의학과 체질의학전공 석사학위 논문인 "사상체질감별을 위한 전문가 시스템의 지식베이스 구축에 관한 연구" 에서 나온 설문중 27가지 정도의 문항으로 추려진 내용으로 약 70%의 판별도를 가지고 있는 모델이고
27문항중 18문항 이상이 된다면 높은확률로 4가지 체질중 나온 체질에 해당한다는 내용이고 /

다른 한가지는 2006년도 우석대학교 한의과 대학 사상체질과 학위논문인 "사상체질 진단을 위한 2단계 설문지 의 개발 연구" 논문에서 나온 설문 입니다. 해당 설문은 2단계 설문으로 먼저 음인/ 양인 으로 나누고
태양/소양 or 태음/ 소음 인으로 나눈다고 합니다. 감별 결과 좀더 높은 판별도를 가지는 것으로 판단 되는데 설문 요소가 더 많아지는 것과 함꼐 표본이 좀더 적었던 것이 문제입니다. (음/양 나누는데 22문항 / 태양/소양 나누는데 10문항 태음/소음 나누는데 18문항 총 32문항 / 40문항 )

두가지 모델중 한가지 선택하여 작업하려합니다. 제가 보기에는 두가지 모델다 괜찮아 보여서
판단이 어렵습니다. 회의때 의견 주시면 감사하겠습니다.

캡스톤 계획서 작성 관련

저번 회의에서 인턴에서 분석했던 Rule을 사용하되 추가적인 Rule 도메인을 적용하여
기존에 존재하는 Medical Expert System 과 차별화가 되어야 한다는 의견이 나왔고
모두 동의하였습니다.
이를 바탕으로 캡스톤 계획서 작성에 대해 역할분담을 하여 조사하고 정리한 내용을
보내주시면 됩니다.
장원용 - Expert System 구조, 기술적 요구사항, 개발 목표 확립
김태우 - use case, sequence diagram 수정 및 보완, 새로 적용 할 Rule 분석
류준영 - 사상체질 , 수지침에 대한 Rule 조사 (대한한의학협회 참고)
차은채 - 대중화 되어있는 IBM 닥터 왓슨 사례, 보건복지부 통계 자료 조사

조사한 내용을 보내주시고
장원용, 류준영은 계획서 수정 및 보완
김태우, 차은채 발표 PPT 작성으로 역할 분담을 하겠습니다.

계획서 발표 평가 수정 관련

계획서 내용 수정 사항은 다음과 같습니다.

  1. 서양의료학에 비교했을때 한의학에 AI를 도입하는 시도는 많지 않은 듯합니다. 이에 대한 이유를 명확하게 조사
  2. 본 시스템이 제공하는 서비스가 궁극적으로 무엇인지, 예상 결과를 보이기

4월 3일 교수님 회의때 피드백 받을 예정이니 각자 생각한 내용을 정리해서 올려주시면
종합하겠습니다.

apache ab를 사용한 서버 벤치마킹

교수님께서 로드밸런싱 구축함에따라 웹서버 성능 평가할 필요성에 대해 말씀 해주셔서 apache ab 를 사용하기 위한 정리를 하였습니다.
ab는 "Apache HTTP server Benchmarking tool"의 약어로서 아파치 서버의 응답속도를 측정하는 벤치마킹툴이다.

옵션

  • -t : 호출 시간 limit
  • -c : 동시 호출할 client 수
  • -n : 호출할 request 횟수

호출 예
ab -n 100 -c 2 http://test.com/ => 2개 클라이언트가 총 100회 호출
ab -t 10 -c 2 http://test.com/ => 2개 클라이언트가 10초 동안 호출

주요 결과

  • Time take for tests : 테스트 수행시간
  • Requests per second : 초당 요청 처리 횟수
  • Time per request : 요청 당 응답 시간

예)
[]# ab http://www.naver.com/
This is ApacheBench, Version 1.3d <$Revision: 1.69 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.naver.com (be patient).....done
; 아파치 버전

Server Software: Apache
; 도메인명

Server Hostname: www.naver.com
; 웹서비스 사용 포트

Server Port: 80

; 초기문서가 위치하는 웹문서 root(서버내의 절대경로가 아님)

Document Path: /
; 초기문서의 용량

Document Length: 72226 bytes

Concurrency Level: 1
; 응답속도(사실 이값만 확인하면 된다.)

Time taken for tests: 0.016 seconds
; 요구에 응답한 세션수

Complete requests: 1
; 요구에 응답실패한 세션수

Failed requests: 0
; 실패한 에러수

Broken pipe errors: 0
; 총 전송 바이트수

Total transferred: 72539 bytes
; 총 전송한 HTML 바이트수

HTML transferred: 72226 bytes
; 초당 응답요구수

Requests per second: 62.50 [#/sec] (mean)
; 요구에 응답한 시간 (이값도 중요하다)

Time per request: 16.00 [ms] (mean)
; 요구에 응답한 시간

Time per request: 16.00 [ms] (mean, across all concurrent requests)
; 초당 전송 가능한 용량

Transfer rate: 4533.69 [Kbytes/sec] received

캡스톤 계획서 최종 검토

2018.03.09 지도교수님과 회의 후 피드백 받은 내용을 수정하였고,
최종본을 올리기전 각자 최종 검토가 필요할 것 같습니다.
계획서의 문서 정보/ 수정 내역에 팀원들 이름을 올려두었으니
각자 최종검토 후 수정 내역을 적어주셔서 다시 보내주시면 됩니다.

톰캣 서버 2개 작동시 404 에러

로드밸런싱을 구성하기 위해서 톰캣 서버 2개를 각각 포트 번호를 다르게 정해주고(8080, 8088)
로드했지만 8088 서버는 404 에러를 보임

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.3.RELEASE</version>
</dependency>

메이븐에 버전에 맞도록 추가 후 현재 톰캣 2개 각각 실행 완료
추후 nginx 를 이용하여 두 서버를 로드 밸런싱 구성 할 예정

drools rule update

rule들을 모두 drl 파일에 업데이트 했습니다.
증상 검색 및 추가 삭제 기능을 모두 구현했기 때문에
충분한 테스트를 해봐야 할것 같습니다.
진단하기 버튼 누르기 전에 defaultPage 에서 반드시 이름으로 먼저 검색을 하신 후
증상을 추가 및 삭제 하시면 됩니다.

mysql connector 6.0.5 이상 사용시 JDBC Connection 에러

쿠키와 세션 이용한 로그인 구현시 mysql connector 에러 발생
빌드에는 이상 없는데 추후에도 이상이 없는지 조금더 찾아 봐야 할 것 같습니다.

Sat Mar 31 20:22:37 KST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

서버 연동 참고

http://webdevnovice.tistory.com/12?category=615997 ==> (리눅스) 자바 설치 및 tomcat
http://moomini.tistory.com/66 ==> mysql
http://jaesu.tistory.com/entry/ubuntu-mysql-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0 ==> mysql (한글 설정 등)

jdk ( /usr/local/java )
java -version 확인 => jdk 1.8 되어있는지 확인
안되어 있다면
$ source /etc/profile

톰캣 시작
$ /usr/local/server/tomcat/bin/startup.sh

mysql 시작
$ sudo vi /etc/mysql/my.cnf (설정 파일 위치)
sudo /etc/init.d/mysql restart (재시작)

톰캣 서버 에러시 확인

1.Stop Tomcat (if it's running)
2.Open the "Servers" view: Window > Show view > Other > Server > Servers
3.Right Click on Tomcat Server > Clean Tomcat Work Directory.
4.Right Click on Tomcat Server > Clean
5.Restart the server

설문지 연동 관련 (generalSurvey)

@junyeongRue / 현재 GeneralSurvey에서 22문항을 작성하고 나면 ajax를 통해 SurveyController 로 받아오게 됩니다. 아래는 소스코드 일부이며, 처음 for문에서 배열에 받아온 값을 모두 더해줍니다(인덱스 0번부터 시작) 그 후 sum값에 따라 페이지 전환하는 소스가 추가되었으며 확인후 수정할 부분을 해주시면 됩니다.
마찬가지로 B ,C 도 Controller에서 받아올수 있으며 디비테이블 생성 후 최종 결과페이지에 보여줄 데이터를 넣어서 보내주시면 연동하겠습니다.

         /** 
	 * GeneralSurvey 설문 작성 완료 한 후 save 버튼 클릭시
	 */
	@RequestMapping(value ="/saveGeneralSurvey", method = RequestMethod.POST)
	public @ResponseBody String G_SurveySaveButton(@RequestBody SurveyVO surveyResult) throws Exception
	{
		logger.info("saveGeneralSurvey");
		int sum =0;
		for(Integer val : surveyResult.generalSurvey) 
		{
			// receive the value from 0 index sequentially in the array (0 ~ 21)
			System.out.print(val+" "); // confirm message
			if(val != null)
			{
				sum += val;
			}
		}
		System.out.println("\ntotalSum : "+sum);
		if(sum <= 10)return "/home/generalSurvey_B"; 
		else if(sum >= 12) return "/home/generalSurvey_C";
		else { // 판단 Rule
			int a = surveyResult.generalSurvey.get(3); // 4번 문제  
			int b = surveyResult.generalSurvey.get(13);
			int c = surveyResult.generalSurvey.get(19);
			System.out.println(a+" "+b+" "+c);
			return "/home/generalSurvey";
		}
	}

톰캣 path, UTF-8 환경 설정

팀원들 개발 환경을 맞추기 위해서 반드시 한번씩 확인해 주시면 감사하겠습니다.
현재 프로젝트를 빌드 했을때 경로가 localhost:8080/mybatis 로 시작한다면 반드시 아래 과정을
확인해 주셔야 합니다.

  1. Servers 탭 -> 프로젝트에서 사용중인 톰캣 더블클릭 -> Modules -> Path 의 /mybatis를 클릭하고
    Edit 버튼 클릭하여서 /home으로 수정
  2. 이클립스 왼쪽에 Project Explorer에서 Servers 폴더 이동 -> 프로젝트에서 사용하고 있는 톰캣 -> server.xml 에서 아래와 같이 수정 ( /mybatis -> /home으로 수정)
    <Context docBase="2018-cap1-4" path="/home" reloadable="true" source="org.eclipse.jst.jee.server:2018-cap1-4"/></Host>

또한 git pull 했을때 한글 깨짐 의경우 이클립스 메뉴 -> 서브메뉴 -> 폴더 -> 서브메뉴 -> "text file encoding"을 "UTF-8"으로 설정- 저장

접수페이지 변경

          <div class="col-md-6 mx-auto">
          <br>
            <h5><strong>환자정보</strong></h5>
                <div style="width:100%; height:416px; overflow:auto;background-color:white">
	<div class="col-md-6 mx-auto">
	<br>
             <h5><strong>환자 대기자 명단</strong></h5>
                <div style="width:100%; height:418px; overflow:auto; background-color:white">

접수페이지 코드변경
페이지 밖으로 빠져나간 부분들이랑 버튼 위치 안맞는 부분 조정했습니다.

전체적인 프로세스 , URL 정립

중간발표 데모하기 위한 전체적인 프로세스와 URL 정립이 필요할 것 같습니다.
현재 defaultPage를 doctorPage로 정정했습니다. 수정할 부분이나 의견 남겨주시면 됩니다.

/home (의사, 일반유저 선택 페이지) > /home/login->로그인 체크->/home/receptionPage환자 접수 페이지
->/home/doctorPage 의사 페이지
> 일반유저버튼 클릭시 -> /home/generalSurvey -> /home/generalSurvey/resultPage

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.