2018년 4월 23일 월요일

[mysql] [db 설정 필요사항] sql_mode = only_full_group_by 해제

sql_mode = only_full_group_by 해제

해제 방법 :

/etc/mysql/mysql.conf.d/mysqld.cnf 파일 내에,

[mysqld]

sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUT

입력, 저장, 재시작

2018년 4월 22일 일요일

[mysql] 특정 날짜를 포함 한, 달의 첫날, 다음달 첫날 구하기

1
2
3
select 
STR_TO_DATE(DATE_FORMAT(DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY), '%Y-%m-%d'), '%Y-%m-%d'),
STR_TO_DATE(DATE_FORMAT(DATE_ADD((DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY)), interval 1 MONTH), '%Y-%m-%d'), '%Y-%m-%d');
cs

- 2번째 라인,

STR_TO_DATE(DATE_FORMAT(DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY), '%Y-%m-%d'), '%Y-%m-%d')

: '2018-03-15'의 첫날짜 구하기


- 3번째 라인,

STR_TO_DATE(DATE_FORMAT(DATE_ADD((DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY)), interval 1 MONTH), '%Y-%m-%d'), '%Y-%m-%d')

: '2018-03-15'의 다음달 첫날짜 구하기

2018년 4월 17일 화요일

[jquery] select2 에서 selected 처리 방법

select2 plugin  에서 selected 처리 방법

<select multiple style="width:100%" class="select2">

위 select tag 내에 option tag와 value, text를 동적으로 추가 후,
원하는 option value를 찾아 selected 상태값을 주기 위한 방법으로써,
아래 와 같은 예제 의 밑줄 script 처럼 처리 할 수 있다.

$.ajax({
url : '',
method : 'POST',
dataType : "json",
data : ,
success : function( response ) {
var objectList = response.object;
if(objectList != null) {
var items=new Array();
$.each(objectList, function( index, value ) {
items.push(objectList[index].id); //==> 다중 선택value를 array 구성
$("select[name=manageItemInfomation] > option[value="+objectList[index].id+"]").attr("selected", "selected");
//==> 다중 선택value에 selected 설정
});
$('select[name=manageItemInfomation]').select2(items);
//==> selected 설정된값을 select2 박스에 표시
}
},
error : function ( xhr, textStatus, error) {
console.log(error);
}
});

2017년 6월 8일 목요일

[MariaDB] erro code 1021 수 : 하드 디스크 공간이 부족, 여유 하드 디스크 공간을 증가하십시오

1021 수 : 하드 디스크 공간이 부족, 여유 하드 디스크 공간을 증가하십시오

* 환경 : ubuntu / mariadb

* 해결방법 

1. 임시테이블 파일 크기 확인
> /tmp/저장파일
  
2. 확장할수있는 저장공간이 있으면,  저장공간을 변경.
tmpdir=

3. mysql 재실행
> cd /etc/init.d
> service mysql restart

2017년 4월 23일 일요일

[spring boot] CRUD 시, URL redirect 하기

<A.html>

/**
* Form 작성
*/
<form name="delete_form" action="/TEST/DATA/DELETE" method="post">
    <input type="hidden" id="delete_id" name="id"/>
</form>

/**
* Form 작성한 것을 Script 로 Submit 하기
*/
$(document).on( 'click', '#delete_modal_btn', function () {
    var delete_id = $(this).val();
    $('#delete_modal').modal('hide');
    $('#delete_id').val(delete_id);
    $('form[name=delete_form]').submit();
});



<Controller.java>
/**
* Form 작성한 것을 Script 로 Submit 하기
*/
@RequestMapping(value="/TEST/DATA/DELETE", method=RequestMethod.POST)
public ModelAndView delete(@RequestParam String id, Model model) {
    if(id != null && !id.equals("")) {
        int deleteResult = repo.deleteDate(id);
    }
    model.addAttribute("tables", repo.getSelectList());
    return new ModelAndView(new RedirectView("/TEST/DATA/DELETE", true));

}


주의)

1. form submit 시, Controller.java 파일에서 @RequestParam 사용.
2. /TEST/DATA/DELETE URL 상태에서, delete 수행 후, 다시 원래 URL 로 변경시,
   return new ModelAndView(new RedirectView("/TEST/DATA/DELETE"true));
   사용!!!



2016년 12월 13일 화요일

### JAVA Excel POI, Cell Style 배경색 채우기

### JAVA Excel POI, Cell Style 배경색 채우기

Excel Form 만들때, 아래 처럼 Cell에 Style을 넣을 수 있다.

아래 예제는 Cell에 배경색을 넣는 예제이다.






String color = "#FF0F0F";

//16진수값을 R,G,B값으로 변환
int colorR = Integer.parseInt( color.substring(1, 3), 16);
int colorG = Integer.parseInt( color.substring(3, 5), 16);

int colorB = Integer.parseInt( color.substring(5, 7), 16);

//직접 RGB 컬러값을 사용하는 경우 아래와 같이 getCustomPalette()를 사용해야 컬러값이 적용된다.
palette = workbook.getCustomPalette();
HSSFColor myColor = palette.findSimilarColor(colorR, colorG, colorB);

//cell에 style 만들기
style = workbook.createCellStyle();
style.setFillForegroundColor(myColor.getIndex()); //위에 컬러값의 index값으로 칼라값을 지정해주게된다.
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //컬러가 cell에 적용되는 style 정의
cell.setCellStyle(style); //style을 cell에 적용

//cell에 표시할 value 값을 적용
HSSFRichTextString text = new HSSFRichTextString(value);                

cell.setCellValue(text);





* 참고 )

256 색상값만 사용가능하다. myColor.getIndex()에서 흐릿한 색상은 256 칼라 중 유사한 칼라 값을 불러오지만, 대부분 흰색 값(9) 로 처리한다.













2016년 12월 9일 금요일

[Spring Boot] JAVA에서 Excel 폼 작성 후, 다운로드 하기


### JAVA에서 Excel 폼 작성 후, 다운로드 하기



# 개발환경 : SPRING BOOT + JPA + MySQL



1. html파일에서 엑셀다운로드 실행위해 엑셀다운로드 버튼 클릭



<button id="xls_btn" type="button" onClick="javascript:goXls()">엑셀다운로드</button>
<script>
    function goXls() {
           location.href="/xls";
      }
</script>


2. Controller 클래스에서 Excel폼을 작성을 위한 데이타를 Map 에 담아서 엑셀폼만드는 Class로 보내기


@Controller

public class XlsController {

    @RequestMapping(value="/xls", method=RequestMethod.GET)  
    public ModelAndView viewExcel(HttpServletRequest request, HttpServletResponse response){
        Map<String, Object> model = new HashMap<String, Object>();
model.put("sheetname", date); //Sheet Name
    
List<String> titles = new ArrayList<String>();
titles.add("예제");
titles.add("");
titles.add("");
model.put("titles", titles); //titles List
    
List<String> headers = new ArrayList<String>(); 
headers.add("목록1");
headers.add("목록2");
headers.add("목록3");
model.put("headers", headers); //headers List
        List<List<String>> bodyList = new ArrayList<List<String>>(); 

List<String> body = new ArrayList<String>(); 
body.add("DATA1");
body.add("DATA2");
body.add("DATA3");
        bodyList.add(body);

        List<String> body = new ArrayList<String>(); 
body.add("DATA1");
body.add("DATA2");
body.add("DATA3");
        bodyList.add(body);

model.put("body", bodyList); //body List
      
      response.setContentType( "application/ms-excel" );
        response.setHeader( "Content-disposition", "attachment; filename=data.xls" );
               
    return new ModelAndView(new MakingExcelForm(), model);
    }
}


3. MakingExcelForm Class에서 엑셀폼 만들기


public class MakingExcelForm extends AbstractExcelView {
  
    @SuppressWarnings("unchecked")
    protected void buildExcelDocument(Map<String, Object> model,
        HSSFWorkbook workbook,
        HttpServletRequest request,
        HttpServletResponse response) {
    
        String sheetName = (String)model.get("sheetname");

        List<String> titles = (List<String>)model.get("titles");
        List<String> headers = (List<String>)model.get("headers");
        List<List<String>> bodyList = (List<List<String>>)model.get("body");
        
        HSSFSheet sheet = workbook.createSheet(sheetName); // create sheet
        sheet.setDefaultColumnWidth((short) 12);
        
        int currentRow = 0;
        int currentColumn = 0;
        
        HSSFCellStyle titleStyle = workbook.createCellStyle(); //title style
        HSSFFont titleFont = workbook.createFont();
        titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        titleStyle.setFont(titleFont); 
        
        HSSFCellStyle headerStyle = workbook.createCellStyle(); //header style
        HSSFFont headerFont = workbook.createFont();
        headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        headerStyle.setFont(headerFont); 
        
        HSSFRow titleRow = sheet.createRow(currentRow); // create title row
        for(String titletitles){
            HSSFRichTextString text = new HSSFRichTextString(title);
            HSSFCell cell = titleRow.createCell(currentColumn)
            cell.setCellStyle(titleStyle);
            cell.setCellValue(text);            
            currentColumn++;
        }
        
        currentRow++;
        HSSFRow headerRow = sheet.createRow(currentRow); // create header row
        currentColumn = 0;
        for(String headerheaders){
            HSSFRichTextString text = new HSSFRichTextString(header);
            HSSFCell cell = headerRow.createCell(currentColumn)
            cell.setCellStyle(headerStyle);
            cell.setCellValue(text);            
            currentColumn++;
        }
       
        currentRow++;
        for(List<String> body: bodyList){
            currentColumn = 0;
            HSSFRow row = sheet.createRow(currentRow); // create body row
            for(String value : body){
                HSSFCell cell = row.createCell(currentColumn);
        HSSFRichTextString text = new HSSFRichTextString(value);                
        cell.setCellValue(text);
                currentColumn++;
            }
            currentRow++;
        }
    }
}

4. 참고)
- html에서 jquery ajax 또는 form submit으로 다운로드 버튼 실행하면, 엑셀 파일이 다운로드 되지 않는다. 이유는 잘 모르겠지만, href호출로써만 가능했다.

- html에서 생성된 table dom을 자바스크립트를 사용하여 엑셀로 전환시켜 파일을 다운로드하면, html태그가 엑셀에 모두 표시되면, 그러므로 엑셀에서 셀하나에 모든 문자가 들어가 있는 채로 다운로드되어 제대로 만들어지지 않았다. 결국 자바에서 직접 엑셀 폼을 만들어 다운로드 하는 방법만 되더라.