울산 달동 맛집 양식당999 파스타 리조또 

부원장님께서 저녘을 사먹으라며 카드를 주셨어요.

팀원들이 이곳저곳을 검색하더니 선생님 사촌오빠가 디오미오 양식당을 하는데 그친구분이 울산 달동에 양식당 999를 오픈했다고 가보자고 하였어요. 

999 입구

건물이 제법 큰데 999 입구는 조그마해서 찾기가 힘들었어요.. 간판도 999 숫자가 다라서 간판이 조그마하게 있다는걸

모르고 갔다가 못찾고 돌아올지도 모르겠다고 생각했어요. 

999 내부

문에 커다란 통유리가 박혀 있는데 안에 들여다 보니 어서들어오라고 유혹하는것 같았어요. 

도시에서 갑자기 유럽시내 한복판으로 들어온 느낌 이랄까요

유리하시는 사장님

기다리는동안 식당을 둘러보았어요. 

테이블은 많지 않았고 이른저녘이라 손님이 저희들뿐이였어요.  사장님 혼자서 고군분투 해가며 저희가 주문한 식사를

준비해 주셨어요. 

물통

기다리는동안 목이 마르면 물을 마실수 있어요. 

물은 보리차랑은 다른 좀더 담백한 차였는데 조금만 마셔도 강증해소가 되었어요. 

메뉴판

부채살 스테이크와 버섯크림 리조또, 불고기 리조또, 불고기 파스타, 파스타 하나더 시켰는데 뭔지 모르겠네요 ㅎㅎ 

조명

가게안을 두리번 거리다보면 조명이 예쁜것을 알수 있는데요. 

이런 조명 어디서 구하는지 모르겠지만 감성이 넘치는것 같아요. 

식사메뉴
부채살 스테이크

부채살 스테이크는 지방이 적어 담백하고 양념에 찍어먹으니 맛있었어요. 

5명이라 많이 먹지 못했지만 양식당999에 들리시면 꼭 사드시길 바래요. 

버섯크림 리조또

버섯크림 리조또에요. 이건 맛이 없을수 없는 맛이죠 ^^

 

리조또와 파스타들

시간이 나시면 꼭 한번 들러서 드셔보세요. 

울산 남구 달동에 위치한 양식당 999 가족과 연인과 오기에 딱인 장소에요.

촛대

 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

울산 태화강 십리대밭 맛집 청면옥, 함흥냉면전문점, 갈비탕, 떡갈비

수요일 저녘 고단한 하루 일과를 마치고 퇴근을 하고 있었어요. 

자전거를 타고 슝슝 가는데 와이프와 통화중에 저녘을 먹고 오라는거에요. 

태화강 국가정원으로 지정된 태화강 십리대밭에 있는 상가로 들렀어요. 

청면옥 입구

두리번 거리며 가는데 청면옥 떡갈비 세트가 눈에 보이는거에요. 

평소 냉면을 즐기는 저는 한번 들러보았어요.  30년 청면옥이라는데 청면옥이라는곳을 전 처음 알았어요.

현수막 메뉴판

메뉴판을 현수막으로 인쇄해서 붙여 놓았어요. 

뭔가 이상해 보이긴했는데 사장님은 메뉴판을 여기저기 이렇게 인쇄해서 붙여 놓은게 만족스러웠는지 여기 저기 로 봐

도 메뉴라면서 뿌듯해 하시는거 같았어요. 

주방사진

주방은 오픈되어 있었구요. 23가지 최상품 국내산 재료를 사용해서 육수와 비빔양념장을 만든다고 하네요. 

남은 음식을 재사용하지 않는다고 하는데 요즘은 기본이죠 ^^

양념장과 밑반찬

전 물냉면과 떡갈비 세트 메뉴를 시켰어요. 

물냉면 떡갈비 세트메뉴

가격은 일만원정도로 적당한거 같았어요. 

냉면을 먹어보았는데 간이 안되어 있었어요. 

떡갈비와 같이 먹으니 간이 적당한거 같았어요. 아무래도 세트메뉴라서 간을 조절해서 나온것인가 봐요. 

전 그래도 시원한 육수 맛을 원해서 식초와 겨자를 첨부해서 먹었어요. 

가끔 시원한 냉면을 즐기기위해서 들릴것 같은 냉면집 청면옥이에요. 

둘이 먹다 하나 죽어도 모르는 맛~ 떡갈비 ^^

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

기장 맛집 더도이 축산직영점 소고기 특수부위 미국산

토요일저녘 식사를 위해서 한신아파트앞으로 갔어요. 

가는길에 더도이 축산직영점이 보여서 들렀어요. 

더도이 축산직영점

저녘시간이라 손님이 있었어요. 차를 가지고 들렀는데 주차장이 협소해서 4대만 주차가 가능했어요. 

저는 먹다가 중간에 차를 빼줬어요. 

입구

코로나19로 인해 입구에 손세정제를 비취해두었어요. 

메뉴판

메뉴판에 테이블에 붙어 있어요. 소고기 특수부위가 100그람에 4990원이에요 걍 5000원이라고 해도 될텐데.

원산지는 미국산이에요. 김치는 중국산이고요.

첫주문은 500g부터 시작이에요.일단 500그랍과 환타를 시켰어요. 

상차림

상차림은 간단했어요. 작은 접시에 이쁘게 담아서 주네요. 

파지레기

파지레기는 한사발 주었어요. 모자라면 담아서 먹고 역시 파는 너무 맛난거 같아요.

고기

고기는 특수부위라고 하는데 지방이 적고 살코기가 두툼해서 먹기는 좋았어요. 

추가로 200g람을 더 먹고 후식으로 라면을 시켰어요. 

안성탕면

라면은 안성탕면인데 고추를 많이 넣어서 칼칼한 맛이였어요. 

 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

울산 태화동 맛집 서민식당 담양 통삼겹 숯불갈비

서민식당

일요일 주말 동생네와 부모님을 모시고 서민식당에 들렀어요. 

아버지가 고기가 드시고 싶다고 하셔서 유아가 있다 보니 고기를 구워주는 곳을 가는 게 편하더라고요. 

여기는 고기를 직접 구워 주는 형식이아니고 구워져서 나와요.

직원과 접촉이 적어서 편하게 이용할수 있는 것 같아요. 직원이 직접 구워주는 곳도 편하긴 한데 뭔가 난잡스럽거든요.

서민식당 시트작업

담양에서 유명한 승일식당 콘셉트로 하는 것 같다고 하더라고요. 

담양에서 떡갈비를 먹어본 저로서는 개인적으로 종류는 다르지만 서민식당이 더 나은 거 같았어요. 

상차림

반찬은 몇 가지 안되고 시래깃국이 나와요. 

숯고기

유아와 함께 8명이 가서 정식 6인분을 시키고 추가로 숯 고기 2인분을 더 시켜 먹었어요. 

정말 배부르게 먹고 온 거 같아요. 고기도 양념이 얼마나 입에 맞는지

입에 넣는 대로 술술 넘어가더라고요. 

메뉴판

고기를 먹고 나서 후식으로 냉면이 빠질 수 없죠 ^^ 

냉면을 시켰는데 주인분이 그건 계절 음식이라 준비가 안되어 있다고 하시더라고요. 

아 그리고 돼지김치찌개 2~3인 되어 있는데 숯 고기 정식과 같이 먹기엔 양이 엄청 많아요. 

가볍게 음주하러 들릴 경우에 추천드려요. 돼지김치찌개와 함께 소주 드시면 괜찮으실 것 같아요. 

 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

울금 강황 커큐민 노니 마늘 면역력 항산화 만성염증

커큐민

코라나 19로 인해 면역력에 관심이 많으실 거예요. 

한의원에 들러 보약을 사먹는게 빠르겠지만 비용이 부담스러운 분들은 저의 포스팅을 끝까지 봐주세요.

우리 주위엔 아주 많은 미생물들이 있어요.  이로운 미생물들과 몸에 해를 끼치는 생물들이 있어요. 

이런 것들로 부터 저희몸은 아주 잘 만들어져 있어 건강하다면 이겨낼 수 있어요. 

요즘 음식들은 즉석식품이 많고 신선한 채소류 보다는 육류 위주의 식사가 많은 거 같아요. 

저도 고기 없인 못살거등요. 그래서 칼로리 섭취는 엄청 잘되는 편이지만 다른 영양소들은 섭취가 잘 안되는 거 같아요. 

음식이 보약이라는말 들어보셨죠? 골고루 잘 먹으면 병에 잘 걸리지 않아요. 하지만 저는 현대인이고 잘 먹어서 살은 찌는데 감기도 잘 걸리고 해서 인터넷에서 검색해서 보니 영양소 검사라는 걸 하라고 하더라고요.

영양소 검사를 하니까 전부 치명적으로 낮아서 영양제를 처방을 받았어요.  칼슘과 나트륨 빼고는 전부 low에 있었어요. 

그때부터 영양제를 챙겨 먹었던 거 같아요. ^^ 

전 입안에 염증이 잘생겼어요. 인터넷에 찾아보니 피곤해서 그렇다고들 하더라고요. 그런데 영양제를 챙겨 먹고 나서부터는 입안에 염증이 거의 안 생겨요. 생겨도 치명적이지 않아요 막 많이 아프거나 하지 않았다는 애기예요. 

항염증에 높은 음식들이 있는데요. 

강황, 녹차, 생강, 비타민c, 마늘, 양파 등이 있어요. 다른 것들도 효과가 있겠지만. 

마늘

강황이 -0.785로 가장 높고요 녹차 -0.536, 생강 -0.453이에요 녹차나 생강차 많이 드시길 바라요. 

노니

그다음이 전 국민이 잘 사 먹는 비타민c인데 -0.424이고 마늘이 -0.412에요 양파는 -0.301이고요. 

생강

비타민c를 마시는 것을 사면 당이 많이 들어 있어서 별로예요 알약 형태로 사드시는 걸 추천해드려요 

당분 해시 간에 무리가 간다고 하더라고요. 

저는 마늘을 4-5쪽을 컵에 넣어서 물을 반쯤 담고 전자레인지에 돌려서 익혀 먹었어요 물도 마셔버리고요 ㅎㅎ

그러니 이게 남자라면 아실 거예요 ㅠㅠ 전 비아그라를 발기부전제로 사 먹는 분들 이해가 안돼요ㅎㅎㅎ

그래서 마늘은 그만 먹었어요. 비타민c를 먹었어요 ^^ 생강차도 한 번씩 사서 우려먹고요. ^^ 

면역력을 잘 유지하고 있었는데요. 이번에 코로나 19로 인해서 면역력을 더 높여야겠다는 생각이 들었어요. 

유튜브를 보니 인도 사람들이 그렇게 비위생적인 환경이지만 코로나가 잘 걸리지 않는다는 거예요. 

그게 강황 때문이래요.. 강황에 대해서 검색해보니 우리나라에서는 울금이라고 하더라고요. 강황=울금 뭐 뿌리 위아래로 구분은 하던데 같은 뿌리인데 얼마나 차이 나겠어요 ㅎㅎㅎ

그래서 저도 강황 영양제를 샀어요. 영양제는 회사도 많고 종류도 많지만 전 미국에서 제조해서 판매하는 것을 샀어요. 

이건 어떤 종류를 사던 상관없어서 상품링크는 안 할게요. 

지금 먹은 지 2주 정도 되어 가는데요. 크게 달라진 게 있어요. 

애도 정력강화 효과가 있어요 뭐 마늘만큼은 아니에요 ㅎㅎㅎ 그 미묘한 차이는 저도 40대라서 10대 20대 30대를 거치면서 제 몸의 변화를 잘 알거든요.;; 종합영양제는 그런 효과가 없었는데 말이죠 

그리고 피부톤이 맑아졌어요. 와이프도 그러더라고요 등 피부가 깨끗해졌다고. 

그리고 인터넷에 보면 노니가 보이는데 노니의 항염증 효과가 마늘 정도밖에 안되더라고요. 

노니 과립이니 그러는데 비용 대비 효능이 너무 별로인 거 같아요.  차라리 저가격이면 홍삼을 사 먹는 게 나을 거 같아요. 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

울산 북구 매곡 추천 맛집 가장 맛있는 족발 울산 북구 매곡 추천 맛집 가장 맛있는 족발 집을 다녀왔어요.

 

가장맛있는족발

울산 북구 매곡에 사는 친구가 자기네 동네에 맛있는 족발집이 있다고 가자고 해서 가보았습니다. 

음 체인점인데 보통 체인점들이 그렇듯 본사에서 주는 레시피 + 자기만의 레시피가 더해져 장사를 하는데요. 

그래서 같은 체인이라도 어떤집은 맛있고 어떤 집은 실망스럽고 그렇잖아요? 여기는 정말 정말 맛있어요. 

소화도 잘되구요. 

가계전경

메뉴를 액자에 걸어서 음식 사진으로 보여주는데요. 글씨 읽기가 어려웠지만 산만하진 않아서 괜찮았어요. 

 

메뉴

메뉴를 다양한 아이디어를 내어서 표시를 해놨어요. 

가게모습

글씨는 한글인데 일본삘이 나는 디자인 같기도 해요. 일본 드라마에 나오는 포차 같은 모습요. 

가게 가운데 나무

가게 한가운데 나무가 있어요. 사진으로 보니 예쁘긴 하네요. 저쪽에 앉으시는 분들은 조금 불편할 거 같아요^^

 

메뉴판

소형 책자로 된 메뉴판이 있어요.

메인 메뉴로는 족발, 보쌈, 냉채족발, 흑마늘족발, 허니 마늘족발, 바비큐 마늘족발, 오리엔탈 마늘 샐러드, 가마보꼬 모둠 어묵탕, 직화 불족발, 가족 의족 발, 해물 부추전, 반반족발, 쟁반국수, 얼큰 술국, 생굴 등이 있어요. 

주류 및 음료에는 소주, 막걸리, 맥주, 청하, 매화주, 신사 춘, 복분자주, 음료수, 쿨피스가 있네요.

기타 메뉴로는 보쌈김치 추가, 공깃밥이 있어요. 

보통 가게에 있는 대자 소자 중자 이런 메뉴가 없어서 족발 기본으로 하나 시키고 소주 2병 콜라 1병을 시켰어요. 

상차림

족발이 썰어져 있는 모습을 보니 저에게 빨리 먹어봐 나 맛있단 말이야라고 속삭이는 거 같아요. 

얼른 족발을 새우젓에 콕콕 찍어 맛을 보았는데 완전 부드러운 거예요. 콜라겐이 입에서 바로 피부로 가는 느낌 아시죠?

파재래기는 얼마나 아삭아삭한 지 족발 한점 접시에 올리고 파재래기 한 젓가락 올려서 깻잎을 올려 먹으니 족발 삼합의 완성 아니겠어요 

파재래기와 깻잎을 3번 리필해서 먹은 거 같아요. 

근래에 먹은 족발중에선 제일 맛난 거 같아요.. 곰곰이 생각해보니 족발을 최근 1년 동안 못 먹은 거 같아요. ㅎㅎ

술을 못마시는 저는 콜라를 마셨고요 친구 혼자서 소주 2병을 마셨어요. 

다 먹고 나니 대자 중자 소자가 없는 게 살짝 아쉬웠어요. 더 먹으려면 족발을 다시 시켜야 하니까요.

코로나 19로 힘든 요즘 입맛이 없을 때 조용히 들러 먹으면 집 나간 입맛이 돌아올듯한데요. 

몸도 튼튼 피부도 보들보들하게 만들어줄 족발한번 드셔 보세요. 

 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

Spring java excel download 스프링 엑셀 다운 poi

SRPING MVC 이미지

안녕하세요. 웹 개발일을 하다 보면 엑셀 파일을 요청받을 일들이 있어요. 

SPRING에서는 아파치 소프트웨어 재단에서 만든 POI를 사용할 수 있어요. 

마이크로소프트 오피스 파일들을 읽고 쓰는 기능을 제공하는데요. 워드, 엑셀, 파워포인트 파일을 지원하고 있어요. 최근 OFFICE OPEN XML FILE FORMATS(*. DOCX,*. XLSX,*. PPTX)등 지원 파일을 늘려가고 있다고 해요. 

처음 메이븐 설정을 해요. 

		<!-- 엑셀파일 -->
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi</artifactId>
		    <version>3.13</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi-ooxml</artifactId>
		    <version>3.13</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-collections4</artifactId>
		    <version>4.0</version>
		</dependency>

SERVLET-CONTEXT.XML 파일 내용을 찾아보면 InternalResourceViewResolver가 선언되어 있을거에요. 

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>

JSP페이지로 이름을 매핑해주는것인데 대부분 설정이 되어 있을 거예요.

저희가 받아야 할 건 JSP페이지가 아니에요. 

XmlViewResolver를 설정해줘야 해요. 조금 귀찮긴 한데 한번 만들어 놓으면 다른 프로젝트에도 복사해서 사용하면 돼요.

<beans:bean id="viewResolver1" class="org.springframework.web.servlet.view.XmlViewResolver">
        <beans:property name="order" value="1"/>
        <beans:property name="location" value="/WEB-INF/views.xml"/>
    </beans:bean>

views.xml파일위치

views.xml파일을 만들어요. 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
   	<bean id="mr001_exceldownload_View" class="com.sms2019.excel.mr001_exceldownload_View" />
</beans>

views.xml
0.00MB

그리고 소스파일에 views.properties 추가를 해요. 

views.properties

mr001_exceldownload_View.(class)=com.sms2019.excel.mr001_exceldownload_View

views.properties
0.00MB

컨트롤러 부분에 요청받는 부분을 만들어요. 

@RequestMapping(value = "/g402_excel_download", method = RequestMethod.GET)
  public ModelAndView g402_excel_download(HttpServletRequest request, Model model) throws Exception {
	  	Util_list_convert smsp=Util_list_convert.getInstance();
	  	smsp.print_String("/gp/g402_excel_download");
		Map<String, String[]> paramMap=request.getParameterMap();
		paramMap.forEach(
				(key, value) ->  smsp.print_String(key + " : " + value[0])
				);
		Iterator keyData = paramMap.keySet().iterator();
		CommonData dto = new CommonData();	
		paramMap.forEach(
				(key, value) -> {dto.put(key, value[0]);
				smsp.print_String(key + " : " + value[0]);
				model.addAttribute(key,value[0].toString());
				});
	    CommonData data_box = new CommonData();
	    List Title_list = new ArrayList();    
	    Title_list.add("번호");
	    Title_list.add("품목명");
	    Title_list.add("규격");
	    Title_list.add("파트");
	    Title_list.add("수량");
	    Title_list.add("팀");

	    List Title_list_coll = new ArrayList();
	    Title_list_coll.add("rownum");
	    Title_list_coll.add("item_name");
	    Title_list_coll.add("item_standard");
	    Title_list_coll.add("part_division_text");
	    Title_list_coll.add("quantity");
	    Title_list_coll.add("team_code_text");
	    
	    dto.put("exceldown","exceldown");
	    List<Map<String, Object>> list = z_service.select(dto,"Gp2018_Mapper.g402_list_select");
	    ModelAndView mav = new ModelAndView("mr001_exceldownload_View");
	    mav.addObject("Title_list", Title_list);
	    mav.addObject("Title_list_coll", Title_list_coll);
	    mav.addObject("list", list);
	    mav.addObject("Filename", "주문목록");
	    return mav;
  }

엑셀 파일 데이터를 만들어요 db에서 읽어와도 좋고요 엑셀 윗부분을 요청 시 받아와도 되고요 전 컨트롤러를 각각 만들어서 써요. 그래서 타이틀이랑 항목 칼럼 이름 그리고 데이터 그리고 파일 이름 넣어요. 

그럼 MadelAndView에 적힌 부분으로 호출이 되는데요.

package com.danawa.excel;

import java.net.URLEncoder;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.view.document.AbstractExcelView;

import com.danawa.domain.CommonData;
import com.danawa.util.Util_list_convert;

@Controller
public class mr001_exceldownload_View extends AbstractExcelView {
 
    @Override
    protected void buildExcelDocument(Map<String, Object> model,
            HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response)
            throws Exception {
    	Util_list_convert smsp=Util_list_convert.getInstance();
	  	smsp.print_String("Common_exceldownload");
    	String Filename = (String)model.get("Filename");
		String fileName = Filename+".xls";
		fileName = URLEncoder.encode(fileName,"UTF-8");
        response.setContentType("application/ms-excel; charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition","attachment; filename="+fileName);
        // get data model which is passed by the Spring container
        List<String> Title_list = (List<String>) model.get("Title_list");
        List<String> Title_list_coll = (List<String>) model.get("Title_list_coll");
    	List<CommonData> list = (List<CommonData>) model.get("list");
        // create a new Excel sheet
        HSSFSheet sheet = workbook.createSheet("sheet1");
        sheet.setDefaultColumnWidth(30);
         
        // create style for header cells
        CellStyle style = workbook.createCellStyle();
        CellStyle centerstyle = workbook.createCellStyle();
        CellStyle centerbluestyle = workbook.createCellStyle();
       
        Font font = workbook.createFont();
        font.setFontName("Arial");        
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        font.setColor(HSSFColor.WHITE.index);
       // style.setFillForegroundColor(HSSFColor.BLACK.index);
       // style.setFillPattern(CellStyle.SOLID_FOREGROUND);
        style.setBorderBottom (HSSFCellStyle.BORDER_THIN);
        style.setBottomBorderColor (HSSFColor.BLACK.index);
        style.setBorderLeft (HSSFCellStyle.BORDER_THIN);
        style.setLeftBorderColor (HSSFColor.BLACK.index);
        style.setBorderRight (HSSFCellStyle.BORDER_THIN);
        style.setRightBorderColor (HSSFColor.BLACK.index);
        style.setBorderTop (HSSFCellStyle.BORDER_THIN);
        style.setTopBorderColor (HSSFColor.BLACK.index);
        //style.setFont(font);        
        //centerstyle.setFillForegroundColor(HSSFColor.WHITE.index);
        //centerstyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
        centerstyle.setAlignment(CellStyle.ALIGN_CENTER);
        centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        centerstyle.setBottomBorderColor(HSSFColor.BLACK.index);
        centerstyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        centerstyle.setLeftBorderColor(HSSFColor.BLACK.index);
        centerstyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        centerstyle.setRightBorderColor(HSSFColor.BLACK.index);
        centerstyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        centerstyle.setTopBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setFillForegroundColor(HSSFColor.BLACK.index);
        centerbluestyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
        centerbluestyle.setAlignment(CellStyle.ALIGN_CENTER);
        centerbluestyle.setFillBackgroundColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setBottomBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setLeftBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setRightBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setTopBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setFont(font);    
         
        // create header row
        HSSFRow header = sheet.createRow(0);
        
        int cellCount;
        cellCount=0;
        int columns_length=0;
        //제목 값 세팅 한다. 
        for(String item : Title_list){
        	header.createCell(cellCount).setCellValue(item);
            header.getCell(cellCount).setCellStyle(centerbluestyle);
            cellCount++;
            columns_length++;
    	}
        
        // create data rows
        int rowCount = 1;   
        String sitem_name = null;
        String item_standard = null;
        String sitem_name_replace=null;
        Iterator list_object = list.iterator();	    
        while (list_object.hasNext()) {
        	CommonData e_object = (CommonData) list_object.next();
            HSSFRow aRow = sheet.createRow(rowCount++);
            cellCount=0; 
            
            for(String item : Title_list_coll){
                String value = e_object.get(item);
                smsp.print_String("item : " + value);
                aRow.createCell(cellCount).setCellValue(value);
	            aRow.getCell(cellCount).setCellStyle(centerstyle);            
	            cellCount++;
            }
    	}
        for(int ni=1;ni<=sheet.getLastRowNum();ni++)
        { 
        	sheet.getRow(ni).setHeightInPoints((float)20);
        	 
        }
       
        autoSizeColumns(sheet,sheet.getRow(0).getLastCellNum());
    }
    private void autoSizeColumns(HSSFSheet sheetData, int maxColNum) {
   	 try {
   		 // Autosize columns
   		 int width = 0;
   		 for (int col = 0; col < maxColNum; col++) {
   			 sheetData.autoSizeColumn(col);
   			 int cwidth = sheetData.getColumnWidth(col);
   			 cwidth += 500;
   			 sheetData.setColumnWidth(col, cwidth);
   			 width += cwidth;
   		 }

   		 // calculate zoom factor
   		 int nominator = 45000 * 100 / width;
   		 if (nominator < 100)
   			 sheetData.setZoom(nominator, 100);

   	 } catch (Exception he) {
   		 // No UI, no autosize :(
   	 }
    }
 
}

이렇게 엑셀 내용을 채워 엑셀 파일이 만들어져요.

String Filename = (String)model.get("Filename");
		String fileName = Filename+".xls";
		fileName = URLEncoder.encode(fileName,"UTF-8");
        response.setContentType("application/ms-excel; charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition","attachment; filename="+fileName);

파일 이름을 설정하고 utf8로 다운로드돼요.

List<String> Title_list = (List<String>) model.get("Title_list");
        List<String> Title_list_coll = (List<String>) model.get("Title_list_coll");
    	List<CommonData> list = (List<CommonData>) model.get("list");

엑셀 파일의 항목 타이틀과 각 항목의 column의 이름 그리고 데이터 받아와요. 

HSSFSheet sheet = workbook.createSheet("sheet1"); 
        sheet.setDefaultColumnWidth(30);

sheet를 만들어요. 만들 때 이름을 정해줄 수 있어요. 전 sheet1이라고 했어요. 

// create style for header cells
        CellStyle style = workbook.createCellStyle();
        CellStyle centerstyle = workbook.createCellStyle();
        CellStyle centerbluestyle = workbook.createCellStyle();
       

cell 스타일을 미리 만들었어요.  단순해요. style는 흰색의 배경에 검은색의 테두리 선을 가진 것이고요. centerstyle는 중앙 정렬한 흰색 배경에 검은색 테두리 구요. centerbluestyle는 중앙 정렬에 파란 배경을 과 검은색 테두리를 가진 스타일이에요. 

style.setBorderBottom (HSSFCellStyle.BORDER_THIN);
        style.setBottomBorderColor (HSSFColor.BLACK.index);
        style.setBorderLeft (HSSFCellStyle.BORDER_THIN);
        style.setLeftBorderColor (HSSFColor.BLACK.index);
        style.setBorderRight (HSSFCellStyle.BORDER_THIN);
        style.setRightBorderColor (HSSFColor.BLACK.index);
        style.setBorderTop (HSSFCellStyle.BORDER_THIN);
        style.setTopBorderColor (HSSFColor.BLACK.index);        
        centerstyle.setAlignment(CellStyle.ALIGN_CENTER);
        centerstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        centerstyle.setBottomBorderColor(HSSFColor.BLACK.index);
        centerstyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        centerstyle.setLeftBorderColor(HSSFColor.BLACK.index);
        centerstyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        centerstyle.setRightBorderColor(HSSFColor.BLACK.index);
        centerstyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        centerstyle.setTopBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setFillForegroundColor(HSSFColor.BLACK.index);
        centerbluestyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
        centerbluestyle.setAlignment(CellStyle.ALIGN_CENTER);
        centerbluestyle.setFillBackgroundColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setBottomBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setLeftBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setRightBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        centerbluestyle.setTopBorderColor(HSSFColor.BLACK.index);
        centerbluestyle.setFont(font);    

직관적으로 만들어놓아서 대충 알아보실 거 같아요. 소스량을 줄이려면 함수를 만들면 되겠죠? 그건 직접 해보세요 ^^

 Font font = workbook.createFont();
        font.setFontName("Arial");        
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        font.setColor(HSSFColor.WHITE.index);

폰트를 따로 선언해서 사용해야 할 일이 있을 경우엔 폰트도 추가해주세요 전 타이틀 부분은 폰트를 다르게 했어요 흰색으로요. ^^

HSSFRow header = sheet.createRow(0);

첫 번째 로우를 만들고요 

 int cellCount;
        cellCount=0;
        int columns_length=0;
        //제목 값 세팅 한다. 
        for(String item : Title_list){
        	header.createCell(cellCount).setCellValue(item);
            header.getCell(cellCount).setCellStyle(centerbluestyle);
            cellCount++;
            columns_length++;
    	}

첫번째 행에 항목 타이틀 값들을 넣어줘요... 

 // create data rows
        int rowCount = 1;   
        String sitem_name = null;
        String item_standard = null;
        String sitem_name_replace=null;
        Iterator list_object = list.iterator();	    
        while (list_object.hasNext()) {
        	CommonData e_object = (CommonData) list_object.next();
            HSSFRow aRow = sheet.createRow(rowCount++);
            cellCount=0; 
            
            for(String item : Title_list_coll){
                String value = e_object.get(item);
                smsp.print_String("item : " + value);
                aRow.createCell(cellCount).setCellValue(value);
	            aRow.getCell(cellCount).setCellStyle(centerstyle);            
	            cellCount++;
            }
    	}

컨트롤러에서 넘겼던 칼럼 항목 이름을 순으로 위치로 해서 셀에 넣어요. 

이상으로 엑셀 파일 다운로드 관련해서 정리해보았습니다. 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

기장 삼계탕 백 년 장수 고려삼계탕 보양식 전통음식

백년장수 고려삼계탕

주말 저녘저녁 와이프와 함께 저녁을 먹으려고 고민했어요.

코로나19 바이러스로 인해 몸에 보양이 되는 보양식으로 먹으려고 고민하다 보니 삼계탕집을 찾게 되었어요. 

여기는 전통음식점이에요. 집도 초가집같고 주황색 기와가 이쁜 음식점이에요. 

주차장은 협소하지만 주차도 할수 있어요. 저는 집이 근처라 걸어서 왔답니다. 

테이블

가계 안에 들어오면 홀에도 좌석이 있지만 각 방마다 4-5인이 모여서 먹을 수 있는 방을 제공하고 있어요.

각방에는 저런 창문이 존재 해요. 밤에 와서 그런지 분위기 있네요. 

차림표

메뉴는 고려라는 이름이 붙어요. 고려 삼계탕집이라 그런가 봐요.  특(전복, 옻), 참전복, 참옷, 들깨, 한방 삼계탕 메뉴가 있고 그 외에도 닭곰탕, 닭칼국수, 들깨 닭칼국수 등이 있어요. 소주와 맥주 공깃밥 음료도 있네요. 

와이프는 참전복삼계탕을 주문하고 저는 한방 삼계탕을 주문했어요. 

밑반찬

밑반찬을 가져다 주었어요. 

한컷한컷 담은 반찬

반찬이 맛있었어요. 삼계탕만 먹으면 심심하잖아요 ^^.

한방삼계탕

반찬이 나오고 조금더 기다리니 삼계탕이 나왔어요.

보글보글 엄청 뜨거운 열기가 느껴지네요. 

거품이 올라오는게 몸에 들어가면 영양소가 빨려 들어올 것 같아요. 

기분 좋게 먹는데 빠진게 있네요 저는 잘 마시지 않는데 삼계탕집 오면 꼭 주시더라고요.

인삼주가 빠질 수 없죠 ^^

인삼주

이상 기장에서 들린 삼계탕집이었습니다. 

코로나19 바이러스로 인해 힘든 이 시기 면역력 강화를 위해 보양식을 즐깁시다. 파이팅~!!

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

영상편집 앱 추천 VLLO

요즘 영상 편집 많이 하시는데요. 저처럼 PC에서 하시는 분들도 계실꺼에요. 

하지만 간편하게 스마트폰으로 해결하시는 분들도 많아요. 

홍보일을 하다보면 급하게 영상을 만들어야 할때가 있어요. 

이럴땐 많은 시간을 들여서 영상을 만들기 보다는 자동화된 기능으로 만드는것이 일의 능률이 높아요.

저는 VLLO라는 앱을 추천해드려요. 

https://play.google.com/store/apps/details?id=com.darinsoft.vimo&hl=ko

 

VLLO 블로 - 쉬운 동영상 편집 어플 브이로그 앱 - Google Play 앱

영상 편집 할 때 필요한 모든 기능을 VLLO에 담았습니다. 브이로그, 유튜브 영상 편집은 VLLO! 음악, 자막, 컷편집, 배속, 모자이크 모두 VLLO 하나로 가능합니다. 워터마크도 없습니다. 대부분의 컷편집 기능을 모바일 앱으로 간단하게 + 영상 확대, 축소는 물론 반전, 회전 효과도 가능합니다. + 배속, 리버스, 자르기, 영상 순서 변경, 다른 이미지나 영상 추가하기 등 대부분의 컷편집을 모바일 앱 VLLO로 간단히 할 수 있습니다. + 인스타,

play.google.com

저는 안드로이드 폰을 사용하는데 아이폰 버전도 존재해요. 

기능 설명 들어 갈께요. ^^ .

메뉴

멋진비디오 와 모션포토 기능이 있습니다. 

멋진비디오는 사진과 영상을 조합해서 영상을 만들수 있는데요. 각종 전환 효과나 스티커 무료배경음악등을 사용할수 있어요. 

영상 추출시 워터마크와 광고가 실행이 되는데요. 프리미엄으로 업그레이드를 하시면 기능을 좀더 다양하게 사용할수 있고 광고제거하기를 하면 광고도 나오지 않아요. 

상점

메유에 보시면 상점에서 쉽게 찾을수 있어요. 

그리고 모션 포토 기능인데 이게참 유용한거 같아요. 

모션포토 예제

걸레사진에다가 효과를 주면 사진이 움직이는 사진으로 변해요. 사진자체가 움직이는게 아니라 움직이는 스티커를 붙여놓은거죠.

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

성격유형검사 MBTI를 해보았어요.

살면서 본인의 성격때문에 힘들거나 할 때가 있지 않으세요? 어떤 친구와는 잘 맞고 어떤 친구와는 맞지 않고 그걸 명쾌하게 설명해주는 검사예요.

16가지 성격으로 분류를 해서 결과를 알려주는 사이트가 있는데요.

https://www.16personalities.com/ko

 

무료 성격 유형 검사, 성격 유형 설명, 인간관계 및 직장생활 어드바이스 | 16Personalities

16Personalities 검사가 너무 정확해 "살짝 소름이 돋을 정도예요"라고 성격 유형 검사를 마친 한 참여자는 말했습니다. 쉽고 간단하면서도 정확한 성격 유형 검사를 통해 당신이 누구이며, 왜 그러한 특정 행동 성향을 보이는지 확인하십시오.

www.16personalities.com

여기에서 검사를 하시면 돼요. 

저는 여기서 성격이 ENTJ-A로 나왔어요. 

ENTJ-A

3일 시간 간격을 두고 3번 검사를 해봤는데요 세 번다 ENTJ-A가 나왔어요. 

ENTJ에 유명한 사람은 스티브 잡스, 고든 램지, 해리슨 포드, 마가렛 대처, 우피 골드버그, 짐 캐리, 프랭클린 D. 루스벨트, 말콤 X, 토니 소프라노, 데이비드 팔머, 말콤 멀린, 메리 탤벗, 프랜시스 제이 언더우드, 재클린 A, 샤프, 탬 리버, 밀 레이디 드 윈터, 닥터 스트레인지, 미란다 사제, 레이몬드 데딩 턴등이 있다네요. 

ENTJ는 인구에 3%밖에 되지 않는 많지 않은 유형의 성격이랍니다. 독특한 성격이란 애기 많이 들었지만 3프로 밖에 안된다면 독특한 성격은 맞는 거겠죠^^.

진취적인 생각을 많이 하고 무모하리만치 이성적으로 사고를 한다네요.

스스로 생각을 너무 많이 한다고 생각은 하고 있었지만 ㅎㅎㅎ

그리고 타인의 실수를 지적하는 경향이 있는데 이로 인해 이들은 종종 문제를 야기하기도 한다네요. 

이건 정말 스스로를 돌아보면서 이 부분을 고치려고 많이 노력하고 있어요.

타고난 천성이 그런 건지 어쩔 수 없지만 많이 타인을 이해하려고 하고 있어요.  

성격유형검사 후 결과지를 읽어보면서 나의 본심을 엿볼 수 있었고요. 

앞으로 사회생활을 해 나갈 때 인간관계에 대해서 어떻게 해야 할지 생각을 해보았어요. 

감정처리가 약점이 저의 큰 단점인 줄 알았는데 차갑고 무자비하기도 하다네요. 

그래서 사람들이 첫인상이 차갑다고 하나 봐요 ㅎㅎㅎ. 

좀 더 따뜻하게 생각해야겠어요. 

ENTJ는 대부분의 성격과 무난하게 지낼 수 있는 것 같아요. 

성격유형검사 시간 나시면 한번 해보시고 본인을 한번 되돌아보는 것도 좋은 거 같아요. 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,