리눅스 기초 용어 정보 정리

Posted by HULIA(휴리아)
2018. 12. 16. 12:35 호스팅_서버_툴/서버

https://sparcs.org/static/seminars/grandmarnier-20110617-2.pdf


리눅스의 특징

1)대부분 무료(오픈소스)

2)대부분의 하드웨어어 호환됨

3)다양한 설정가능(네트워크 등)

4)다양한 파일시스템 지원

5)낮은 하드웨어 사양에서도 사용가능



리눅스 배포판

Debian

-패키지 설치 및 업그레이드가 쉽다는 장점

Dpkg, apt 등을 이용하여 소프트웨어 설치나 업데이트에서 다른 패키지와의 의존성 확인, 보안관련 업데이트 등을 자동으로 해준다


Ubuntu

-데스크톱에서 리눅스를 쉽게 사용할 수 있게 만든 리눅스 배포판

-Debian을 바탕으로 만들어짐


Centos(the Community ENTerprise Operation System)

-레드헷 엔터프라이즈 리눅스(상용)의 소스 코드를 그대로 가져와 사용함.

-업데이트되는 상위판과 호환성 유지



리눅스의 구조

USER <-> SHELL <-> LINUX KERNEL <-> COMPUTER HARDWARE

APPLICATION <-> LINUX KERNEL <-> COMPUTER HARDWARE



SHELL

-유저와 직접 소통하며 유저에게 명령을 전달받아 실행

-주로 bash가 많이 쓰임

/etc/shells에 사용가능한 쉘의 위치가 기록되어 있음



리눅스에서 관리하는 모든 것은 파일로 인식

(일반파일, 하드웨어, 현재 실행되는 프로세스 등...)



리눅스의 사용자 계층

-root

-user(root외 사용자)

*sudoer

root가 허가한 사용자이며 sudo라는 명령어를 통해서 root의 권한을 행사(명령어실행)할 수 있는 사용자

/etc/sudoers 파일에 sudo를 사용할 수 있는 사용자와 각 사용자가 root권한으로 실행할 수 있는 명령이 정의되어 있음

-사용자들은 그룹으로 묶어서 관리함

모든 유저는 적어도 하나의 그룹에 속해있음

-일반적으로 모든 파일은 파일의 소유주, 그룹, 그 외 사용자의 세가지 단위로 분리되어 각 단위마다 권한을 다르게 지정할 수 있음

권한을 변경할 수 있는 권한은 파일의 소유주와 root가 가지고 있음




리눅스의 디렉토리 구조

/

/bin - common programs

/boot - kernel and other boot files

/dev - device files

/etc - configuration files

/lib - shared libraries

/lost+found - damaged files

/misc - miscellaneous files(여러가지 다양한 파일 = 기타 파일들)

/mnt - mounted file systems

/proc - directories and files that report system status

/root - root user's home directory

/tmp - temporary files

/var - log files, spool files and other dynamic files

/home - user's home directory

/usr - 모든 유저가 쓸수 있는 애플리케이션과 파일들

/usr/bin - common programs

/usr/etc - configuration files

/usr/games - games

/usr/include - C header files

/usr/lib - shared libraries

/usr/local - other applications

/usr/sbin - system administration programs

/usr/share - shared information

/usr/src - source code

/opt - 추가적인 프로그램들의 설치 경로(오픈오피스, 파이어폭스 등등)



추가적으로 개발을 해서 프로그램을 배포할때 서버에서의 디렉토리 위치는

/usr

/usr/local

/opt

정도가 될듯


POSIX(Portable Operating System Interface)

유닉스 운영체계에 기반을 두고 있는 표준 운영체계 인터페이스




앱)공인인증서 저장 위치 NPKI 폴더

Posted by HULIA(휴리아)
2018. 11. 23. 14:29 호스팅_서버_툴/툴
윈도우7 이상
사용자폴더\사용자계정\AppData\LocalLow\NPKI

파이썬을 이용한 자동화 스크립트 강의 정리1

Posted by HULIA(휴리아)
2018. 11. 18. 01:40 백엔드개발/파이썬

파이썬 특징

-가독성(읽기 쉽다) - 문법이 간결하고 들여쓰기를 기반으로 가독성이 좋음

-풍부한 라이브러리를 바탕으로 무궁한 확장성

-접착성 - C로 구현된 모듈을 쉽게 만들어 붙일 수 있음 반대 기능도 가능함

-유니코드 - 문자열이 모두 유니코드로 나타남

-동적 타이핑(변수타입이 동적) - Dynamic Language, interpreted Language

-개발생산성이 빠르다

-다목적이다


파이썬 활용

-배우기 쉬운 교육용 프로그래밍 언어

-쉘 스크립트와 배치프로그램 대안

-데이터 과학자가 되려면 필수

-웹서버 어플리케이션 - Django, Flask

-개인과 팀 단위의 업무 자동화


파이썬 실습예제

-파일 및 디렉토리 정리 작업

-엑셀파일 및 CSV 파일 작업 자동화

-웹에서 데이터 가져와서(스크래핑) 정리작업 자동화

-웹 서비스를 활용하여 데이터 수집 및 정리작업 자동화

-비정형 데이터(주로 텍스트 데이터)에서 특정 데이터 검색

-반복되는 메일 보내기 작업 자동화

-메일을 통한 업무 작업화


Pycharm설치

왼쪽하단의 네모버튼을 클릭해서 사이드 메뉴 나오도록 함

Editor Font : consolas

Console Font : consolas


변수들의 메모리 공간을 보여준다

다른언어도 알 수 있음

pythontutor.com


파이썬 코딩 스타일 가이드

www.pep8.org



문자열 자르기 할때 음수 인덱스 사용가능

문자열 반복할때 문자열*4(4번 반복)


리스트의 특징

마지막 요소부터 접근가능

ex) list = ['red','blue','white']


튜플의 특징

읽기만 가능하므로 속도가 빠름

튜플은 더 적은 공간을 사용한다

실수로 튜플의 항목이 손상될 염려가 없다

함수의 파라미터들은 튜플로 전달된다.

ex) tuple = 'red', 'blue', 'white'


사전의 특징

key과 값이 한쌍인 형태로 이용하는 형태

ex) dictionary = { 'cccc':'dddd', 'ffff':'gggg' }


시퀀스 데이터 타입

-str, list, tuple

-unpacking이 가능하다

a,b,c,d = 시퀀스 데이터 타입


예제 코드 모음 사이트

http://code.activestate.com/recipes/langs/python/



정규식테스트검증 웹 사이트

https://regex101.com

http://regexr.com



앱)sqlSessionDao관련

Posted by HULIA(휴리아)
2018. 11. 14. 22:04 백엔드개발/자바스프링
case1)
@Repository
public class CustomDaoImpl extends SqlSessionDaoSupport implements CustomDao

@Autowired
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate){
super.setSqlSessionTemplate(sqlSessionTemplate);
}

getSqlSession().selectList..
getSqlSession().selectOne
(int)getSqlSession().selectOne



case2)
@Repository("name")
public class CustomDaoImpl implements CustomDao

@Autowired
private SqlSessionTemplate sqlSessionTemplate;

sqlSessionTemplate.update
sqlSessionTemplate.selectList
sqlSessionTemplate.selectOne

'백엔드개발 > 자바스프링' 카테고리의 다른 글

스프링 템플릿 엔진 종류 및 성능 및 비교  (0) 2019.08.04
REST API 란  (0) 2019.08.04
앱)paging 관련  (0) 2018.11.14
앱)jstl java jsp excel export  (0) 2018.11.14
앱)java spring에서 web page간의 연동처리  (0) 2018.11.14

앱)paging 관련

Posted by HULIA(휴리아)
2018. 11. 14. 21:55 백엔드개발/자바스프링
commonUtil.java
public static void setPagingParmas(ModelAndView view, int totalCount, int pageNo){
 if(totalCount != 0)
{
  int countPerPage = CommConfig.getCountPerPage();
int totalPageCount = totalCount / countPerPage;
if(totalCount%countPerPage != 0){
   totalPageCount ++;
}
int startPageNo = (pageNo / 10) *10 +1;
if(pageNo %10 ==0){
startPageNo = startPageNo - 10;
}

int endPageNo = startPageNo + 9;
if(endPageNo > totalPageCount){
 endPageNo = totalPageCount;
}

view.addObject("pageNo",String.ValueOf(pageNo));
view.addObject("totalCount",String.ValueOf(totalCount));
view.addObject("countPerPage",String.ValueOf(countPerPage));
view.addObject("totalPageCount",String.ValueOf(totalPageCount));
view.addObject("startPageNo",String.ValueOf(startPageNo));
view.addObject("endPageNo",String.ValueOf(endPageNo));

}else{
   view.addObject("totalCount",String.ValueOf(totalCount));
}

}



*Table.jsp
<@include file="/WEB-INF/jsp/common/paging.jsp" %>

<script type="text/javascript">
$(document).ready(function(){
$('#totalCount').text('${totalCount'}');
}
</script>



paging.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import=util.CommConfig" %>

<script type="text/javascript">
function movePage(type, pageNo){
var moveType=parseInt(type);
var totalPageCount = parseInt("${totalPageCount}");
var intPageNo = parseInt(pageNo);
var nextPageNo = 0;

switch(moveType){
case 0://10페이지 전으로
if(intPageNo < 12){
      nextPageNo = 1;
    } else{
     nextPageNo = intPageNo - 10;
   }
break;

case 1://1페이지 저으로
        if(intPageNo == 1){
         nextPageNo = 1;
       } else{
           nextPageNo = intPageNo - 1;
       }
    break;
case 2:
nextPageNo = intPageNo;
break;
case 3://한페이지 다음으로
if(intPageNo == totalPageCount){
      nextPageNo = intPageNo;
      }else {
         nextPageNo = intPageNo +1;
      }
    break;
case 4://10페이지 다음으로
if(intPageNo == totalPageCount){
 nextPageNo = intPageNo;
} else if ((${pageNo} + 10) > totalPageCount){
       nextPageNo = totalPageCount;
    }else{
        nextPageNo = intPageNo + 10;
     }
break;

}
goPage(nextPageNo);

}
</script>


<c:if test="${totalCount != '0'}">
<p class="paging">
  <a class="next" href="#" onclick="movePage('0', '${pageNo}');">이전</a>
  <a class="next" href="#" onclick="movePage('1', '${pageNo}');">이전</a>

<c:forEach var="page" begin="${startPageNo}" end="${endPageNo}">
<c:choose>
 <c:when test="${pageNo == page}">
 <strong>${page}</strong>
 </c:when>
<c:otherwise>
<a href="#" onclick="movePage('2','${page}');">${page}</a>
</c:otherwise>
</c:choose>
</c:forEach>

  <a class="next" href="#" onclick="movePage('3', '${pageNo}');">다음</a>
  <a class="next" href="#" onclick="movePage('4', '${pageNo}');">다음</a>
</c:if>

앱)jstl java jsp excel export

Posted by HULIA(휴리아)
2018. 11. 14. 21:24 백엔드개발/자바스프링
exportexcel.jsp
<% page language="java" contentType="application/vnd.ms-excel; charset=utf-8" pageEncoding="utf-8"%>
<% taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
response.setHeader("Content-Type". "application/vnd.ms-xls");
response.setHeader("Content-Disposition", "inline; filename=xxxx.xls");
%>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8" />
<style>td{mso-number-format:\@; } </style>
<body>
<table>
<thead>
<tr>
 <th scope="col"><span></span></th>
 <th scope="col"><span></span></th>
 <th scope="col"><span></span></th>
 <th scope="col"><span></span></th>
 <th scope="col"><span></span></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</body>
</html>



function exportExcel(){
    $("#searchForm").attr("action", "<c:url value='/xx.do' />").submit();
}

앱)checkbox 모두 선택/선택된 count 세기

Posted by HULIA(휴리아)
2018. 11. 14. 20:57 프론트엔드/자바스크립트
//모두 선택
$('#check_all').click(function(){
        $('.input-check').prop('checked', $(this).prop('checked'));
});

//선택된 체크박스 카운트 세기
$('.input-check').each(function(){
  if($(this).prop('checked')){
    count++;
}
});

앱)check box to string

Posted by HULIA(휴리아)
2018. 11. 14. 20:53 프론트엔드/자바스크립트
selectedCheckbox to String
case1)
$(":checkbox[name='chbox1']:checked").each(function(idx, obj){
resultString += "|"+obj.value;
});

if(resultString != ""){
resultString = resultString.subString(1);
}
return resultString;

case2)
if($("input[name='checkboxname']").length <= 0){
    return;
}

var ids = "";
$("input[name='checkboxname']").each(function(){
        if($(this).prop("checked")) {
                ids += $(this).val() + "|";
        }
});

앱)autocomplete jquery sample

Posted by HULIA(휴리아)
2018. 11. 14. 20:33 프론트엔드/자바스크립트
$("#id").autocomplete({
   source : function(request, response){
$.ajax({
    url :
    type:
    data : {
              searchCondition : request.term,
              searchCondition2 : $('#kkk').val()
     },
   contentType:
   success :
});
},
open : function(){
     $(' .ui-autocomplete').css('z-index', 99999999999);
},
minLength: 1,
select : function(event, ui){
}
});

앱)javascript에서 java spring과 연동처리

Posted by HULIA(휴리아)
2018. 11. 14. 20:24 프론트엔드/자바스크립트
$.ajax({
url:"<c:url value='xxx.do' />",
type:'post',
beforeSend:function(xhr){
xhr.setRequestHeader("AJAX", "true");
},
data:자세히 다룬다
contentType:"application/x-www-form-urlencoded; charset=UTF-8",
error : function(xhr,status, error) {
if(xhr.status=403){
location.href="<c:url value='/login/intro.do' />";
},
successs:function(data){
${'#xxx').html(data);
}
});



data를 넘기는 여러가지 방법
case1)
var queryString = $("form[name=searchForm]").serialize();
data : queryString


case2)
var data = $("addForm").serialize();
data : data;

case3)
data : { searchId : $('#searchId').val(),
},

case4)
data:{ flag : syncFlag,
            registered : "${변수명}"
}

case5)
data : {'idlist' : getcheckedIds()},