1 소프트웨어 분류 및 특성

시스템의 기본요소 : 입력(input), 출력(output), 처리(process), 제어(control), 피드백(feedback)

 

플랫폼의 성능 특성 분석 항목 : 가용성(availability), 응답 시간(response time), 정확성(accuracy), 사용률(utilization)

 

소프트웨어 프레임워크의 특징 : 모듈화(modularity), 재사용성(reusability), 확장성(Extensibility), 제어의 역 흐름(inversion of control)

##플랫폼과 프레임워크의 차이 : 플랫폼은 서비스제공자&사용자 모두 동시에 운영 / 프레임워크는 서비스 제공자는 제공만(사용자가 뭘 하든 관여하지 않음), 사용자는 사용

 

프레임워크의 기대 효과 : 개발 용이성, 품질 보증, 변경 용이성, 유지보수, 재사용성, 상호 운용성

 

기업용 소프트웨어 : 오피스웨어, ERP(enterprise resource planning), SCM(supply chain management), BI(business intelligence), CRM(customer relationship management)

 

컴포넌트 : 라이브러리의 집합, 독립적으로 사용 가능

 

컴포넌트 설계시 협약(contract)에 의한 설계를 따를 경우의 조건 : 사용전 참이 되어야 할 선행조건 / 사용후 만족할 결과 조건 / 실행되는동안 항상 만족 되어야 할 불변조건

 

소프트웨어 공학의 기본 원칙 : 현대적인 프로그래밍 기술 적용 / 지속적인 검증 / 결과에 관한 기록 유지 / 품질 높은 소프트웨어 개발

 

 

1-2) 소프트웨어 개발 방법론

운영체제의 종류 : 윈도우, 유닉스, 리눅스, iOS, 안드로이드

 

운영체제 분석시 고려사항 : 신뢰도(수명), 성능, 기술 지원, 주변기기 지원 여부, 구축 비용

 

CISC(complex instruction set computer)와 RISC(reduced instruction set computer)의 차이
ㄴCISC : 복잡 / 가변길이의 많은 종류의 명령어(100~250개) / 소프트웨어적 제어방식의 호환성의 좋음 / 속도느림 / CPU에 사용 / 명령어 해석후 실행(컴파일)
ㄴRISC : 간단 / 고정길이의 적은 종류의 명령어 / 하드웨어적 제어방식 호환성 떨어짐 / 속도빠름 / GPU에 사용

 

DBMS 분석시 고려사항 : 가용성, 성능, 기술 지원, 상호 호환성, 구축 비용

 

미들웨어의 종류
ㄴDBMS(데이터 베이스 / database management system)
ㄴRPC(원격 / Remote procedure call)
ㄴMOM(메세지 전달 / Message Oriented Middleware)
ㄴTP-Monitor(트랜잭션 모니터링)
ㄴORB(객체 지향 / Object Request Broker)
ㄴWAS(웹서비스 / Web application server)

 

WAS : DB 접속등의 동적 데이터 처리(이미지등의 정적 데이터는 웹서버가 처리), 데이터접근&세션&트랜잭션 관리

 

WAS의 종류 ##제공하는 회사랑 특징 하나씩##
ㄴGlassfish : glassfish에서 제공, netbeans 개발툴과 연동시

ㄴJBoss : 레드햇, jboss에서 제공, 오픈소스 이용시
ㄴjetty : 이클립스에서 제공, 빠른 처리 속도

ㄴjeus : 티맥스제공, 기술지원

ㄴresin : caucho 제공, 빠른처리속도

ㄴWeblogic : 오라클제공, 대량의 안정적인 거래 처리

ㄴWebsphere :  IBM 제공, 대량의 안정적인 거래 처리

 

WAS 분석시 고려사항 : 가용성, 성능, 기술 지원, 구축 비용

 

 

소프트웨어 개발 방법론
ㄴ구조적 방법론(1970년도) : 프로그램을 구분하여 개발(모듈화)한 후 조립하듯이 개발하는 방법, 이해쉬움, 문서화, 프로세스 중심, 재사용성&유지보수성이 낮음
ㄴ정보공학 방법론(1980년도) : 정보 시스템 개발에 필요한 절차와 기법을 체계화한 방법, 생명주기를 이용해 대형 프로젝트 수행, 데이터 중심, 재사용성 낮음, 기능별로 유지보수 필요

ㄴ객체지향 방법론(1990년도) : 데이터&관련되는 동작을 포함하는 방법, 정보시스템&데이터베이스 설계, 객체지향기법, 캡슐화&추상화 기술 필요, 재사용성 높음
ㄴ컴포넌트 기반 방법론 : 소프트웨어 위기를 극복하기 위한 방법론으로 상용화 돼 있거나 재사용이 가능한 컴포넌트를 조합해서 새로운 애플리케이션을 작성하는 방법론, 공공 행정 정보 시스템 개발에 많이 활용, 개발비용 저렴하고 유지보수 비용 낮음, 반복적&점진적으로 개발, 테스트 환경 미흡
ㄴ애자일 방법론(2000년 이후)
[요구사항 > 설계 > 구현 > 시험]단계를 통해 개발
고객의 지속적인 요구사항에 신속하게 대처(출시 주기 짧음)하기 위한 방법론으로 개발 과정의 소통&협력을 중요시하고 극대화한다
계획이 없거나 혹은 계획이 너무 많은 방법론 사이에서 타협점을 찾은 방법론
가볍고 실용적이며 인간의 수행능력을 높이기 위한 현실적인 방법론
소프트웨어를 점증적으로 개발

기존모형(폭포수(watarfall), 프로토타입, 나선형(spiral)으로 추후에 나옴)의 문제점을 보완

 

애자일 선언문 : 개인과 상호 작용을 프로세스와 도구보다 중시 / 동작하는 소프트웨어를 포괄적인 문서보다 중시 / 고객과의 협력을 계약의 협상보다 중시 / 변화의 대응을 계획의 수행보다 중시

 

애자일 방법론의 원칙 : 소통, 협력, 적응, 지속, 가치 전달, 피드백

 

애자일 방법론의 5가지 가치 : 의사소통, 용기, 피드백, 단순함, 존경

 

애자일 방법론의 종류
ㄴXP(익스트림 프로그램) : 애자일의 대표적인 방법
ㄴscrum(스크럼) : 매일 정해진 시간과 장소에서 단기간에 개발하는 방법, 5가지 가치(확약,전념,정직,존중,용기) 추구한다.
4가지요소(백로그, 스프린트 , 미팅, 스크럼 마스터)가 있다.## youtu.be/oS5lQi72OVM 설명 잘 돼 있음

ㄴLean(린) : 개발 프로세스의 낭비적인 부분을 제거한 방법으로 7가지 원칙(낭비요소 제거, 품질 내재화, 지식 창출, 가능한 늦게 결정, 가능한 빠르게 인도, 사람 존중, 전체 공정 최적화)이 잇다.

 

테일러링 개발 방법론
ㄴ서로 다른 개발 환경에서 개발되는 다양한 종류의 프로젝트를 하나의 일관된 개발 방법론으로 적용하기 위해 등장. 프로젝트 여건에 맞게 수정&보완하는 융통성있는 방법론

ㄴ가장 중요시하는 부분은 프로젝트 분석으로 프로젝트의 다양한 특성을 분석하여 쉽게 해결하고 진행이 용이하도록 해야 함

 

보안 개발 방법론
ㄴMS-SDL(마이크로소프트 시큐어 디벨롭 라이프사이클) : MS사에서 수립한 SDLC(소프트웨어 디벨롭 라이프 사이클)
ㄴSeven touchpoints : 소프트웨어 보안의 모범사례(실무적으로 검증)를 SDLC에 통합한 보안 방법론, 7가지 체크 포인트가 있음

ㄴCLASP : 개발 초기 단계에서 보안 강화를 위한 활동 중심 역할 기반의 정형화된 프로세스, 이미 운영중인 시스템에 적용하기 용이함

ㄴCWE : 보안 취약점을 유발하는 원인을 7가지로 정리한 방법론

 

 

1-3) 프로젝트 관리 및 생명주기 모형

프로젝트의 곤리 : 일정 관리, 예산 관리, 인력 관리, 위험 관리, 품질 관리

 

프로젝트 관리의 3P : 사람(People), 문제(Problem), 프로세스(Process)

 

프로젝트 계획 수립 목적 : 범위, 자원, 비용측정을 통하여 위험성을 최소화

 

프로젝트 범위(영역, Range, scpoe) 측정 요소 : 처리기능, 성능, 제한 조건, 개발 인원, 일정 계획

 

개발자팀의 구성 방법
ㄴ책임 프로그래머 팀 : 1인 독재 체제.  한명(책임(chief)프로그래머 :  요구분석 설계, 판단, 작업지시 배분)을 3명(backup : chief 보좌, 기술자문, chief감도하에 분석 설계 구현 / programer : 코드작성&디버깅&문서작성 / librarian : 문서관리)이 보조.
ㄴ민주주의식 팀 : 책임 프로그래머팀이랑 반대되는 특징이 있음
ㄴ혼합형팀

 

위험 관리 순서 : 위험 식별, 위험 분석 및 평가, 위험 관리 계획, 위험 감시 및 조치

 

비용 측정 요소
ㄴ직접 측정 요소 : 인월(사람인, 달월. 한사람이 한달 작업량), 비용, LOC(Line Of Code), 투입 인원 등 바로 측정이 가능한 요소
ㄴ간접 측정 요소 : 생산성, 품질, 기능점수(FP),문서화 비율 등 비교 대상이 있어야 측정 가능한 요소

 

비용측정의 원칙
ㄴ비용 측정은 최대한 늦게 : 최대한 마지막에 할 수록 놓치는 부분이 없다.
ㄴ분해 기술 이용 : 기능별로 최대한 분리해서 각각 비용 측정후 더해서 전체비용을 측정해야 함
ㄴ실험적 비용 측정 모델 이용 : 사전에 개발된 소프트웨어 비용 참고
ㄴ자동화 도구 이용 : SLIM과 같은 비용 측정 프로그램 이용

 

개발 비용과 개발 기간은 반비례 : 개발 기간 짧으면 비용 증가, 개발기간 증가하면 비용 감소

 

비용 측정 방법론의 종류
ㄴ전문가 측정 : 개발 비용을 전문적으로 측정하는 사람에게 의뢰
ㄴ델파이(delphi) 측정 : 1.여러 전문가에게 의뢰 > 2.전문가는 비용 제출 > 3.비용을 전체 공개 > 1~3 반복하여 평균치를 최종 비용으로 결정

ㄴLOC 측정 : 소프트웨어 기능별(입력, 출력, 처리)로 나눠서 [낙관치 + ( 4 * 기대치) + 비관치 / 6 = 예측치] 공식 사용

ㄴ단계별 인월 측정 : LOC 측정의 단점을 보완한 방법으로 라인수 대신 기능별 중요도에 따른 인월수로 계산

ㄴWaslston 측정 : 미국의 60개 개발업체에서 자료 수집하여 만든 공식으로 단점이 많음 

ㄴCOCOMO 모형 : Walston 측정의 단점을 보완하여 소프트웨어의 규모에 따라 3가지로 분류.
유기형(organc) : 5만라인 이하의 중소 규모 비즈니스 처리용
준 분리형(semi-detached) : 30만 라인 이하의 데이터베이스 관리 시스템
내재형(embedded) : 최대형 규모

ㄴPutnam 모형 : 대형 프로젝트에서 이용되는 기법, Rayleigh-norden 곡선의 노력 분포도 곡선 이용, SLIM이 Putnam 모형을 기초로 함

ㄴ기능 점수 모형 : 국제 표준. 개발자가 아닌 사용자 관점의 5가지(입력, 출력, 사용자 명령어, 데이터 파일, 인터페이스)의 갯수를 산정 요소로 사용

 

형상 관리 : 개발과정에서 산출물의 변경사항을 버전관리하기 위한 일련의 활동으로으로 비용은 관리 항목이 아님, 절차 : 형상 식별 > 변경 제어 > 형상 상태 보고 > 형상 감사

 

비용은 형상관리 항목이 아님

 

소프트웨어 개발의 생명 주기 모형
ㄴ폭포수(워터폴) 모형 : 많이 사용된 오래된 전통 기법, 단계별&순차적 작업, 현작업이 제대로 완료되야만 다음으로 넘어감, 단계별 무서화 작업 필요, 새로운 요구를 반영하기 어려움, 고객의 만족도는 결과물이 나와야만 확인 가능

ㄴ프로토타입 모형 : 고객의 요구에 맞게 빠르게 프로토타입 구축 후 고객의 요구사항에 맞게 다시 설계하는 방식, 요구사항의 변경이 용이, 요구사항이 불명혹한 경우 적용하기 좋음, 최종 결과물에 대한 예측 가능한 모형. 요구사항 관리가 중점

ㄴ나선형 모형 : 계획 수립 > 위험 분석 > 개발 및 검증 > 고객 평가 > 계획 수립... 반복, 위험 관리가 중점, 폭포수 모형과 프로토타입 모형의 장점을 살림. 대규모 시스템 개발에 용이

ㄴV 모형 : 검증을 강조한 기법. 오류 발생시 각 단계별로 매칭되는 단계로 돌아가서 다시 작업, 높은 신뢰성을 필요로 하는 의료 제어 시스템 개발에 용의

 

품질 관리 모델 종류
ㄴISO 12207 표준 : 개발 프로세스를 정의하고 향상시키기 위한 프로세스로 기본공정 / 지원공정 / 조직공정으로 구성

ㄴISO/IEC 품질 특성 : 기능성(Function), 신뢰성(reliable), 사용성(usable), 효율성(efficiency), 유지보수성(maintain), 이식성(portable)
각 특성별로 하위 특성이 있는데 그중 준수성은 신뢰성을 제외한 모든 특성의 하위 특성임
ㄴCMM : 소프트웨어 개발과 유지보수에 대한 프로세스 개선과 능력 향상을 위한 실용화된 모델
5가지 단계[초기 > 반복 > 정의 > 관리 > 최적] 와 5가지 Level별[1:혼돈 / 2:경험 / 3:정성 / 4:정량 / 5:최적]관리 평가 기준이 있음
ㄴSPICE 모델 : 소프트웨어의 품질 및 생산성 향상을 위해 프로세스를 평가 및 개선하는 모델
6가지 단계[불안정 > 수행 > 관리 > 확립 > 예측 > 최적화]로 구분

ㄴCMMI : CMM의 후속모델로 4가지 관리 영역(프로세스 / 프로젝트 / 엔지니어링 / 지원)으로 나눔

 


요구사항 개발 프로세스 : 도출 > 분석 > 명세 > 확인

 

자료 흐름도(DFD)표기법

외부 입출력(terminal) : 네모 / 처리 과정(process) : 동그라미 / 자료 흐름(data-flow) : 화살표 / 자료 저장소(data-store) : 작대기 두줄

 

자료 사전(DD)의 표기법
정의 : =
연결 : +

선택 : [ | ]

반복 : {}n

생략 : ()

설명 : **

 

요구사항 분석 자동화 도구(CASE)
ㄴSADT : softect사에서 개발된 대규모 프로젝트용 분석 자동화 도구, 요구분석과 설계 분석, 설계 명서세를 동시에 표현, 블록 다이어그램을 채택
ㄴBS : 사용자의 의견을 듣는 개발자의 자세 및 규칙, 비판금지&자유분방&다수환영&연쇄개선

ㄴPSL/PSA : 미시간 대학의 ISDOS 프로젝트에서 개발된 자동화 도구,PSL 언어로 작성&PSA로 DB에 저장-분석

ㄴSREM,RSL/REVS : TRW사에서 개발

 

요구사항의 기술적 타당성 검토
ㄴ성능 및 용량 산정 적정성 > 시스템 간 상호 운용성 > IT시장 성숙도 및 트렌드 부합성 > 기술적 위험 분석(복잡성&검증여부&의존성)

 

 

에플리케이션 설계
모듈의 5가지 기본요소 : 입력, 출력, 기능, 기관, 내부자료 요소

모듈의 공유도(Fan-in)와 제어도(Fan-out)
ㄴ공유도 : 상위 모듈의 수, 공유도가 높을 경우 해당 클래스를 사용하는 클래스의 수가 많다는것을 의미

ㄴ제어도 : 하위 모듈의 수, 제어도가 높을 경우 하나의 모듈이 많은 수의 다른 모듈을 사용한다는것을 의미

 

공통 모듈의 원칙 : 정확성(correctness), 명확성(clarity), 완전성(completeness), 일관성(consistency), 추적성(traceability)

 

 

모듈 결합도(결합도가 낮을 수록 높은 품질) : 자료 결합도 > 스탬프 결합도 > 제어 결합도 > 외부 결합도 > 공통 결합도 > 내용 결합도
ㄴ자료 결합도(data) : call by value 가장 좋음, 두 모듈간의 인터페이스가 자료 요소만으로 구성된 결합, 모듈간 인터페이스로 전달되는 파라미터를 통해서만 상호 작용이 일어남
ㄴ스탬프 결합도(stamp) : 두 모듈간 동일한 자료 구조를 조회하는 경우의 결합성,객체나 구조적인 데이터등이 전달
ㄴ제어 결합도(control) : 처리하는 방법을 제어 요소로 전달되는 경우로 모듈간에는 제어변수로 종속적인 관계를 갖음
ㄴ외부 결합도(extern) : 외부 변수에 의해 영향을 받는 경우, 
ㄴ공통 결합도(common) : 모듈이 다른 모듈의 내부 자료를 참조하는 경우 call by reference
ㄴ내용 결합도(content) : 다른 모듈의 내부 기능 및 자료를 참조하는 형태, 가장 안좋음

 

모듈 응집도(응집도가 낮을수록 낮은 품질) : 우연적 > 논리적 > 시간적 > 절차적 > 통신적 > 순차적 > 기능적
ㄴ우연적(coincidental) : 어떤 의미 있는 연도 없고 관계 없이 묶인 가장 안좋은 응집도

ㄴ논리적(logical) : 모듈 내부의 루틴들이 같은 범주에 속하는 기능끼리 묶인 경우

ㄴ시간적(temporal) : 시간적으로 수행시기가 같은 기능끼리 묶인 모듈

ㄴ절차적(procedure) : 수행 시기의 순위가 있는 기능끼리 묶인 모듈,순차적으로 수행하는 경우

ㄴ통신적commucation) : 작업 대상이 같은 기능끼리 묶인 모듈

ㄴ순차적(sequetial) : 구성요소들이 이전의 명령어로부터 나온 결과를 다음 명령어의 입력자료로 사용하는 경우

ㄴ기능적(function) : 모듈내부가 하나의 단일 기능으로 존재, 프로그래밍 언어의 라이브러리같은 것

물리적인 박스형 스위치 2대 또는 그 이상을 하나의 논리적인 스위치로 구성하는것, 명칭은 벤더마다 다르다.

제조사명칭

화웨이 istack
주니퍼 VC(버츄얼샤시)
익스트림 stack
시스코 stack



 

stack 구성도
2대로 스택 구성
두대의 장비가 stack 구성, prio 숫자 높을수록 우선순위 높음(prio 를 1,2 등으로 설정하면 1이 더 우선순위 높다고 헷갈릴 수 있음)

 

 

stack과 별개로 cascade 라는게 있는데 이건 |스위치1 <-> 스위치2 <-> 스위치 3| 이런식으로 연결된다.

차이점은
1.루프가 날 수 있다.
2.스택은 대역폭이 증가, cascade 는 대역폭 증가 없음
3.스택은 마스터 하나에서만 설정 변경, cascade 은 각각 관리
4.스택은 대부분 동일 제조사,모델로만 가능(스택 전용 케이블)


http://www.fiber-optic-equipment.com/differentiate-3-technologies-switch-stacking-vs-cascading-vs-clustering.html

>> Real Server Group 1# cur

Current real server group 1:

  name , metric hash, backup none, realthr 0, ipver v4

  rmetric roundrobin, health tcp, content 

  DSR VIP health: enabled

  Workload Manager: none

  IDS Group: disabled  IDS rport: any   IDS flood: disabled

  Operation: enabled

  adv health: 

  real servers:

     1: 192.168.0.11, enabled, name , weight 1, timeout 10 mins, maxcon 200000

       group ena, backup none, inter 2, retry 4, restr 2

       remote disabled, proxy enabled, submac disabled

       fasthc enabled, subdmac enabled

       cookie assignment server: disabled

       exclusionary string matching: disabled

     2: 192.168.0.12, enabled, name , weight 1, timeout 10 mins, maxcon 200000

       group ena, backup none, inter 2, retry 4, restr 2

       remote disabled, proxy enabled, submac disabled

       fasthc enabled, subdmac enabled

       cookie assignment server: disabled

       exclusionary string matching: disabled

     3: 192.168.0.13, enabled, name , weight 1, timeout 10 mins, maxcon 200000

       group ena, backup none, inter 2, retry 4, restr 2

       remote disabled, proxy enabled, submac disabled

       fasthc enabled, subdmac enabled

       cookie assignment server: disabled

       exclusionary string matching: disabled

  real ports:

    4306: vport 4306, rtspslb none

      virtual server:  1, IP4 192.168.0.10,    enabled


L4 알테온 스위치에서 설정하면 메트릭은 뭔지 알겄는데 r메트릭은 뭐지 ?


metric은 뭐 말그대로 부하분산 방식 설정하는건데 구글링하면 겁내 많이 나온다.

근데 rmetric은 도대체 멀까 ? 


일단

     metric   - Set metric used to select next server in group

     rmetric  - Set metric used to select next rport in server(서버에서 다음 rport를 선택하는데 사용되는 메트릭을 설정)
라는데... 음 그렇군요


/ : 루트디렉토리
|-- HISTORY : 패치된 내역
|-- LICENSE : 그누보드4 라이센스, 저작권(Copyright)
|-- _common.php : 상대경로를 이용하여 루트에 있는 common.php 파일을 include
|-- _head.php : 상대경로를 이용하여 루트에 있는 head.php 파일을 include
|-- _tail.php : 상대경로를 이용하여 루트에 있는 tail.php 파일을 include
|-- adm : 관리자 디렉토리
|   |-- _common.php : 상대경로를 이용하여 루트에 있는 common.php 파일 include
|   |-- admin.head.php : 관리자 페이지 상단+오른쪽 디자인 관련 파일
|   |-- admin.js : 관리자 페이지 자바스크립트 파일
|   |-- admin.lib.php : 관리자 페이지 라이브러리 파일
|   |-- admin.menu100.php : 관리자 페이지 환경설정 메뉴
|   |-- admin.menu200.php : 관리자 페이지 회원관리 메뉴
|   |-- admin.menu300.php : 관리자 페이지 게시판관리 메뉴
|   |-- admin.menu400.shop_1of2.php : 관리자 페이지 쇼핑몰 관리 메뉴
|   |-- admin.menu500.shop_2of2.php : 관리자 페이지 쇼핑몰 현황 메뉴
|   |-- admin.style.css : 관리자 페이지 스타일시트
|   |-- admin.tail.php : 관리자 페이지 오른쪽+하단 디자인 관련 파일
|   |-- auth_list.php : 관리권한설정 리스트
|   |-- auth_list_delete.php : 관리권한설정 선택 삭제
|   |-- auth_update.php : 관리권한설정 반영
|   |-- board_copy.php : 게시판 복사 폼
|   |-- board_copy_update.php : 게시판 복사 반영
|   |-- board_delete.inc.php : 게시판 삭제 include 파일
|   |-- board_delete.php : 게시판 삭제
|   |-- board_form.php : 게시판 설정 폼
|   |-- board_form_update.php : 게시판 설정 반영
|   |-- board_list.php : 게시판 리스트 
|   |-- board_list_delete.php : 게시판 선택 삭제
|   |-- board_list_update.php : 게시판 선택 수정
|   |-- boardgroup_delete.php : 게시판 그룹 삭제
|   |-- boardgroup_form.php : 게시판 그룹 설정 폼
|   |-- boardgroup_form_update.php : 게시판 그룹 설정 반영
|   |-- boardgroup_list.php : 게시판 그룹 리스트
|   |-- boardgroup_list_update.php : 게시판 그룹 선택 수정
|   |-- boardgroupmember_form.php : 게시판 그룹 접근회원 설정 폼
|   |-- boardgroupmember_list.php : 게시판 그룹 접근회원 리스트
|   |-- boardgroupmember_update.php : 게시판 그룹 접근회원 설정 반영
|   |-- config_form.php : 기본환경설정 폼
|   |-- config_form_update.php : 기본환경설정 반영
|   |-- img : 관리자 이미지 디렉토리
|   |-- index.php : 관리자 시작페이지
|   |-- mail_form.php : 회원메일 발송 폼
|   |-- mail_list.php : 회원메일 발송 리스트
|   |-- mail_preview.php : 작성한 회원메일 미리보기
|   |-- mail_select_form.php : 회원메일 대상회원 선택 폼
|   |-- mail_select_list.php : 선택된 회원 리스트
|   |-- mail_select_update.php : 회원메일을 대상회원에게 발송
|   |-- mail_test.php : 작성한 회원메일을 관리자에게 테스트 발송
|   |-- mail_update.php : 메일 작성 반영
|   |-- member_delete.php : 회원 삭제
|   |-- member_form.php : 회원 등록, 설정 폼
|   |-- member_form_update.php : 회원 등록, 설정 반영
|   |-- member_list.php : 회원 리스트
|   |-- member_list_delete.php : 회원 선택 삭제
|   |-- member_list_update.php : 회원 선택 수정
|   |-- phpinfo.php : php, mysql 등의 설치 정보
|   |-- point_clear.php : 포인트 내역 정리 (내역이 많다면 포인트를 합산하여 레코드를 줄입니다.)
|   |-- point_list.php : 포인트 내역 리스트
|   |-- point_list_delete.php : 포인트 내역 선택 삭제
|   |-- point_update.php : 포인트 내역 등록
|   |-- poll_form.php : 설문조사 등록 폼
|   |-- poll_form_update.php : 설문조사 등록 반영
|   |-- poll_list.php : 설문조사 리스트
|   |-- repair.php : 복구 및 최적화
|   |-- sendmail_test.php : 메일 테스트
|   |-- sql_write.sql : 게시판 TABLE 생성 쿼리 (이 파일이 없으면 게시판 생성을 할 수 없음)
|   |-- upgrade.php : TABLE 에 FIELD 변경이 있는 경우에만 실행 (패치내역에서 알림)
|   |-- version.php : 그누보드4 버전 확인 (루트의 HISTORY 파일 내용)
|   |-- visit.sub.php : 접속자 SUB
|   |-- visit_browser.php : 브라우저별 접속자 현황
|   |-- visit_date.php : 일별 접속자 현황
|   |-- visit_domain.php : 도메인별 접속자 현황
|   |-- visit_hour.php : 시간대별 접속자 현황
|   |-- visit_list.php : 기간별 접속자 리스트
|   |-- visit_month.php : 월별 접속자 현황
|   |-- visit_os.php : OS별 접속자 현황
|   |-- visit_week.php : 요일별 접속자 현황
|   `-- visit_year.php : 연별 접속자 현황
|-- bbs : 그누보드4 핵심 디렉토리
|   |-- _common.php : 상대경로를 이용하여 루트에 있는 common.php 파일 include
|   |-- _head.php : 상대경로를 이용하여 루트에 있는 head.php 파일 include
|   |-- _tail.php : 상대경로를 이용하여 루트에 있는 tail.php 파일 include
|   |-- board.php : 게시판 글 리스트, 상세보기
|   |-- board_head.php : 게시판 상단
|   |-- board_tail.php : 게시판 하단
|   |-- calendar : 달력 디렉토리
|   |   `-- 2005.txt : 연도별 국경일, 공휴일, 행사 표시
|   |-- calendar.php : 달력
|   |-- current_connect.php : 현재 접속자 리스트
|   |-- delete.php : 게시물 삭제
|   |-- delete_all.php : 게시물 선택 일괄 삭제
|   |-- delete_comment.php : 코멘트 삭제
|   |-- download.php : 업로드된 파일 다운로드
|   |-- email_certify.php : E-mail 인증
|   |-- email_stop.php : E-mail 수신거부
|   |-- formmail.php : 폼메일
|   |-- formmail_send.php : 폼메일 보내기
|   |-- good.php : 추천, 비추천 반영
|   |-- group.php : 같은 그룹에 속한 게시판 최신글 리스트
|   |-- img : 이미지 디렉토리
|   |-- link.php : 링크 카운트 반영
|   |-- list.php : 게시물 리스트
|   |-- login.php : 로그인
|   |-- login_check.php : 로그인 체크
|   |-- logout.php : 로그아웃
|   |-- member_confirm.php : 회원정보 수정전에 회원인지를 확인
|   |-- member_email_check.php : 회원가입시 E-mail 중복 확인
|   |-- member_id_check.php : 회원가입시 회원아이디 중복 확인
|   |-- member_leave.php : 회원 탈퇴
|   |-- member_nick_check.php : 회원가입시 별명 중복 확인
|   |-- memo.php : 쪽지 리스트
|   |-- memo_delete.php : 쪽지 삭제
|   |-- memo_form.php : 쪽지 작성 폼
|   |-- memo_form_update.php : 쪽지 보내기
|   |-- memo_view.php : 쪽지 상세보기
|   |-- move.php : 게시물 이동, 복사 게시판 선택
|   |-- move_update.php : 선택된 게시판에 게시물 이동, 복사
|   |-- new.php : 최근게시물 (모든 게시판)
|   |-- norobot.inc.php : 프로그램에 의한 게시물 자동등록 방지 코드 생성
|   |-- norobot_check.inc.php : 프로그램에 의한 게시물 자동등록 검사
|   |-- password.php : 패스워드 입력 폼
|   |-- password_check.php : 패스워드 검사
|   |-- password_forget.php : 회원아이디/패스워드 분실 1/3 단계
|   |-- password_forget2.php : 회원아이디/패스워드 분실 2/3 단계
|   |-- password_forget3.php : 회원아이디/패스워드 분실 3/3 단계
|   |-- point.php : 회원 포인트 내역 (로그인한 해당 회원에 대한 내역)
|   |-- poll_etc_update.php : 설문조사 기타의견 반영
|   |-- poll_etc_update_mail.php : 설문조사 기타의견 메일 템플릿
|   |-- poll_result.php : 설문조사 결과
|   |-- poll_update.php : 설문조사 선택된 항목 반영
|   |-- profile.php : 자기소개
|   |-- register.php : 회원가입 약관
|   |-- register_form.php : 회원가입 폼
|   |-- register_form_update.php : 회원가입
|   |-- register_form_update_mail1.php : 회원가입 축하 메일 템플릿 (회원님께 발송)
|   |-- register_form_update_mail2.php : 회원가입 메일 템플릿 (관리자님께 발송)
|   |-- register_form_update_mail3.php : E-mail 인증 메일 템플릿 (회원님께 발송)
|   |-- register_result.php : 회원가입 결과
|   |-- rss.php : XML 기반으로 된 최신글 (RSS Reader 로 조회)
|   |-- scrap.php : 스크랩 리스트
|   |-- scrap_delete.php : 스크랩 삭제
|   |-- scrap_popin.php : 스크랩 폼
|   |-- scrap_popin_update.php : 스크랩 반영
|   |-- search.php : 게시판 통합 검색 (게시판 설정에서 검색 사용에 체크된 게시판에서만 검색)
|   |-- tb.php : 트랙백 핑 받는 페이지
|   |-- view.php : 게시물 보기
|   |-- view_comment.php : 코멘트 보기
|   |-- visit.inc.php : 방문자 보기
|   |-- visit_insert.inc.php : 방문자 반영
|   |-- write.php : 게시글 등록 폼
|   |-- write_comment_update.php : 코멘트 등록
|   |-- write_update.php : 게시글 등록
|   |-- write_update_mail.php : 게시글 등록 메일 템플릿
|   |-- zip.db : 우편번호 정보 DB
|   `-- zip.php : 우편번호 검색창
|-- cheditor : DHTML 에디터 디렉토리
|-- common.php : 공통으로 사용하는 코드 (lib/common.lib.php 와 extend 디렉토리를 기본으로 포함)
|-- config.php : 변수, 상수 설정 (common.php 에서 include)
|-- convert : 변환 프로그램 모음 디렉토리
|-- data : 파일 업로드 데이터 디렉토리 
|   |-- cheditor : DHTML 에디터 데이터 디렉토리
|   |   `-- 0511 : 이미지의 업로드 디렉토리를 연월별로 생성
|   |-- file : 게시판 디렉토리
|   |   |-- basic : 게시판별로 별도의 디렉토리가 생성됨
|   |   `-- qa
|   |-- member : 회원 데이터 디렉토리 (회원아이디의 앞 두자리로 디렉토리를 개별 생성함)
|   `-- session : 세션 디렉토리 (로그인 여부 등)
|-- dbconfig.php : DB 설정파일 (없으면 프로그램을 설치함)
|-- head.php : 기본 상단+왼쪽 디자인 관련 페이지
|-- head.sub.php : 공통으로 사용하는 자바스크립트 변수를 선언, 스타일시트, 자바스크립트를 포함
|-- img : 기본 이미지 디렉토리
|-- index.php : 시작 페이지
|-- js : 자바스크립트 소스 디렉토리
|   |-- common.js : 일반적인 자바스크립트
|   |-- filter.js : 글등록시 금지단어 필터링 자바스크립트
|   |-- md5.js : MD5 자바스크립트
|   |-- sideview.js : 이름(별명)에 왼쪽 마우스 클릭시 나타나는 레이어 자바스크립트
|   |-- wrest.gif : 필수 입력 이미지
|   `-- wrest.js : 폼 입력 필드 체크 자바스크립트
|-- lib : 함수 라이브러리 디렉토리
|   |-- cheditor.lib.php : DHTML 에디터 라이브러리
|   |-- common.lib.php : 공통 라이브러리
|   |-- connect.lib.php : 현재 접속자 라이브러리
|   |-- etc.lib.php : 기타 라이브러리 (로그 파일에 기록하는 함수 등)
|   |-- latest.lib.php : 최신글 라이브러리
|   |-- mailer.lib.php : 메일 라이브러리
|   |-- outlogin.lib.php : 외부로그인 라이브러리
|   |-- poll.lib.php : 설문조사 라이브러리
|   |-- popular.lib.php : 인기검색어 라이브러리
|   |-- trackback.lib.php : 트랙백 라이브러리
|   `-- visit.lib.php : 방문자 라이브러리
|-- perms.sh : 데이터 디렉토리 퍼미션 변경 쉘 프로그램
|-- skin : 스킨 디렉토리
|   |-- board : 게시판 스킨
|   |   `-- basic : 기본 스킨
|   |       |-- delete.skin.php : 게시물 삭제
|   |       |-- delete_all.skin.php : 게시물 선택 삭제
|   |       |-- download.skin.php : 첨부파일 다운로드
|   |       |-- list.skin.php : 게시물 리스트
|   |       |-- view.skin.php : 게시물 상세보기
|   |       |-- view_comment.skin.php : 코멘트 보기
|   |       |-- write.skin.php : 게시물 등록 폼
|   |       `-- write_update.skin.php : 게시물 등록
|   |-- connect : 접속자 스킨
|   |   `-- basic : 기본 스킨
|   |       |-- connect.skin.php : 접속자 통계
|   |       `-- current_connect.skin.php : 현재접속자 리스트
|   |-- latest : 최신글 스킨
|   |   `-- basic : 그누보드4 기본 스킨
|   |       `-- latest.skin.php : 최신글 (게시판별로 각각 지정)
|   |-- member : 회원 스킨
|   |   |-- basic : 그누보드4 기본 스킨
|   |   |   |-- calendar.skin.php : 달력
|   |   |   |-- formmail.skin.php : 폼메일
|   |   |   |-- login.skin.php : 로그인
|   |   |   |-- login_check.skin.php : 로그인 체크
|   |   |   |-- member_confirm.skin.php : 회원 패스워드 확인
|   |   |   |-- memo.skin.php : 쪽지
|   |   |   |-- memo_form.skin.php : 쪽지 폼
|   |   |   |-- memo_view.skin.php : 쪽지 상세보기
|   |   |   |-- password.skin.php : 비밀글 조회시 패스워드 입력
|   |   |   |-- password_forget.skin.php : 회원아이디, 패스워드 찾기 1
|   |   |   |-- password_forget2.skin.php : 회원아이디, 패스워드 찾기 2
|   |   |   |-- password_forget3.skin.php : 회원아이디, 패스워드 찾기 3
|   |   |   |-- profile.skin.php : 자기소개
|   |   |   |-- register.skin.php : 회원가입 약관
|   |   |   |-- register_form.skin.php : 회원 등록 폼
|   |   |   |-- register_result.skin.php : 회원가입 결과
|   |   |   |-- register_update.skin.php : 회원 등록
|   |   |   |-- scrap.skin.php : 스크랩
|   |   |   |-- scrap_popin.skin.php : 스크랩 등록
|   |   |   `-- zip.skin.php : 우편번호 찾기
|   |-- new : 최근게시물 스킨 디렉토리
|   |   `-- basic : 기본 스킨
|   |       `-- new.skin.php : 최근게시물 리스트 (게시판 통합 최신글)
|   |-- outlogin : 외부(아웃) 로그인 스킨 디렉토리
|   |   `-- basic : 그누보드4 기본 스킨
|   |       |-- outlogin.skin.1.php : 로그인 이전
|   |       `-- outlogin.skin.2.php : 로그인 이후
|   |-- poll : 설문조사 스킨 디렉토리
|   |   `-- basic : 그누보드4 기본 스킨
|   |       |-- poll.skin.php : 설문조사 항목 선택
|   |       `-- poll_result.skin.php : 설문조사 결과
|   |-- popular : 인기검색어 스킨 디렉토리
|   |   `-- basic : 기본 스킨
|   |       `-- popular.skin.php : 인기검색서 출력
|   |-- search : 게시판 검색 스킨 디렉토리
|   |   `-- basic : 기본 스킨
|   |       `-- search.skin.php : 게시판 검색
|   `-- visit : 방문자 수 스킨 디렉토리
|       `-- basic : 그누보드4 기본 스킨
|           `-- visit.skin.php : 방문자 수 출력
|-- style.css : 스타일시트
|-- tail.php : 기본 오른쪽+하단 디자인 관련 페이지
`-- tail.sub.php : 공통으로 사용하는 폼 검사 자바스크립트(wrest.js)를 포함

password 함수가 맞지않을때


 


my.cnf 혹은 html안에 common.php 수정


 


 @mysql_query('set old_passwords=0'); 


 


 


예)


$dirname = dirname(__FILE__).'/';

$dbconfig_file = "dbconfig.php";

if (file_exists("$g4[path]/$dbconfig_file"))

{

    if (is_dir("$g4[path]/install")) die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script type='text/javascript'> alert('install ?~T?~I?좊

━瑜???젣?~X?ъ~U??~U?~A ?ㅽ~V~I?⑸~K~H??'); </script>");


    include_once("$g4[path]/$dbconfig_file");

    $connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);

    $select_db = sql_select_db($mysql_db, $connect_db);



        @mysql_query('set old_passwords=0');


    if (!$select_db)

        die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script type='text/javascript'> alert('DB ?~Q?~M ?ㅻ쪟'); </script>");

}

else

{

    echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";

    echo <<<HEREDOC

    <script type="text/javascript">

    alert("DB ?ㅼ젙 ?~L?쇱~]?議댁~^ы~U~X吏~@ ?~J?듬~K~H??\\n\\n?~D濡~\洹몃~^??ㅼ튂 ?~D ?ㅽ~V~I?~X?~\湲?諛~T?~M?~H??");

    location.href = "./install/";

    </script>

HEREDOC;

    exit;


 


 


 


mysql db 관련 


 


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line

에러


 


 


 


MySQL 4.x는 TYPE=MyISAM

MySQL 5.x는 ENGINE=MyISAM 


 


해당 덤프 파일 vi로 열고


: $s/TYPE=MyISAM/ENGINE=MyISAM/g 

dmidecode -t 17 | egrep 'Memory|Size'


 


 


 


smartctl -i /dev/sda 

dmidecode -t 17 | egrep 'Memory|Size'

[root@localhost tmp]# cat test.txt 

aa1bb2cc3dd4ee5

[root@localhost tmp]# cat test.txt | awk -F '1||2' '{print $2}'

bb




특정 기호 사이에 있는 글자 빼오기 좋음

$0  실행된 쉘 스크립트 이름

$#   인자의 갯수

$$  쉘 스크립트의 PID

$1~ $nnn $1은 첫번째 인자 $2는 두번째 n 은 n번째

$*  스크립트에 입력된 인자들의 목록 

$@  $*과 같다. 다만 구분자가 IFS변수의 영향을 받지 않는다. 

$?  마지막 명령의 결과값(결과값이 없으면 0 , 있으면 1,2 등)

$!  백그라운드 PID




[root@ns dong]# sh test1.sh  1 2 3 4 5 6 7

[$0] 실행된 쉘 스크립트 이름 :  test1.sh

[$#] 인자의 갯수 : 7

[$$] 쉘 스크립트의 PID :  25114

[$1 $2 $3 $4] $1은 첫번째 인자 $2는 두번째 n 은 n번째 :  1 2 3 4

[$*] 스크립트에 입력된 인자들의 목록 :  1 2 3 4 5 6 7

[$@] $*과 같다. 다만 구분자가 IFS변수의 영향을 받지 않는다. :  1 2 3 4 5 6 7

[$?] 마지막 명령의 결과값(결과값이 없으면 0 있으면 0말고 다른숫자  ) :  0

[$!] 백그라운드 PID : 




---------------------------------------------------


\a 경고음

\b 백스페이스

\n 개행,줄바꿈

\t 수평 탭

\v 수직 탭

-eq 같음

-ne 같지 않음

-gt 더 큼

-ge 더 크거나 같음

-lt 더 작음

-le 더 작거나 같음

[ "$A" -ne "$B" ]



< 더 작음

<= 더 작거나 같음

> 더 큼

>= 더 크거나 같음

(("$A" >= "$B"))






문자열 비교


= 같음

== 같음(= 와 동의어)

!= 같지 않음


if [ "$A" = "$B" ]



< 아스키 알파벳 순서에서 더 작음


if [[ "$A" < "$B" ]]

or

if [ "$A" \< "$B" ]




> 아스키 알파벳 순서에서 더 큼


if [[ "$A" > "$B" ]]

or

if [ "$A" \> "$B" ]



-z 문자열이 "null"임. 즉, 길이가 0


-n 문자열이 "null"이 아님.

psftp 들어가서 



open 아이피



접속하고



help 명령어 치면 대충 보임



get test.txt 



 다운로드



put etst.txt



업로드

'job > etc' 카테고리의 다른 글

쉘스크립트 변수 설명  (0) 2018.09.03
쉘스크립트 비교 연산자  (0) 2018.09.03
putty psftp 파일 업다운로드  (0) 2018.09.03
Hdd하드와 ssd 하드에 따른 dbms 속도 비교  (0) 2018.08.31
warning: unmappable character for encoding UTF8  (0) 2018.08.31
rpmforge  (0) 2018.08.31

Hdd하드와 ssd 하드에 따른 dbms 속도 비교..


Dbms는 데이터 버퍼링(페이지 버퍼링_일종의 캐시)을 하고 있기 때문에


데이터 버퍼링이 효과적으로 수행되는 환경이라면(캐시 시스템의 히트율이 높다면)저장 매체(hdd나 ssd)의 i/o 실행 성능이 상대적으

로 중요하지 않게 된다.


그래서 hdd를 ssd로 바꿔서 효과를 얻고 싶다면 dbms의 데이터 버퍼링이 효율적으로 동작하고 있는지 파악하는게 중요하다저장 매체를 ssd가 아니여도 데이버 버퍼 설정만으로도 효과적인 성능 향상이 가능하다.




결론은 hdd에서 sdd로 바꿔봐야 거의 차이가 없다는거고 dbms의 성능을 올리려면 메모리를 늘려서 데이터 버퍼를 늘려주자


네이버 d2 사이트에서 본건데 데이터 버퍼 사이즈가 10g 이상 넘어가면 hdd에서 ssd로 바꾸는게 더 효과적이라고 한다.


요새는 ssd 워낙 싸졌으니까 그냥 ssd 쓰자

'job > etc' 카테고리의 다른 글

쉘스크립트 비교 연산자  (0) 2018.09.03
putty psftp 파일 업다운로드  (0) 2018.09.03
Hdd하드와 ssd 하드에 따른 dbms 속도 비교  (0) 2018.08.31
warning: unmappable character for encoding UTF8  (0) 2018.08.31
rpmforge  (0) 2018.08.31
ssl 인즉서 적용 확인하는곳  (0) 2018.08.31

warning: unmappable character for encoding UTF8




인코딩한 PC 환경이 ANSI(euckr) 에서  서버가 UTF8 형식에서 실행할때 에러난다.(여튼 인코딩 언어가 달르면 저런 에러)




쉽게는 파일안에 한글로 주석돼있는것들 다 없애면 된다.




아니면 윈도우 인코딩 언어를 utf8로 맞추든가..




여튼 다른곳에서 작업했다면 해당 서버의 인코딩 언어 맞춰줘야함






아니면 서버에서 vi .vimrc 열어서




set fileencodings=utf8,euc-kr




넣어노면 지가 자동으로 utf8 이나 euc-kr 알아서 연다


'job > etc' 카테고리의 다른 글

putty psftp 파일 업다운로드  (0) 2018.09.03
Hdd하드와 ssd 하드에 따른 dbms 속도 비교  (0) 2018.08.31
warning: unmappable character for encoding UTF8  (0) 2018.08.31
rpmforge  (0) 2018.08.31
ssl 인즉서 적용 확인하는곳  (0) 2018.08.31
ncdu 명령어  (0) 2018.08.31

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm



CentOS 6


http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

CentOS 5

http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm



yum 했는데 파일 없다고 할때 



'job > etc' 카테고리의 다른 글

Hdd하드와 ssd 하드에 따른 dbms 속도 비교  (0) 2018.08.31
warning: unmappable character for encoding UTF8  (0) 2018.08.31
rpmforge  (0) 2018.08.31
ssl 인즉서 적용 확인하는곳  (0) 2018.08.31
ncdu 명령어  (0) 2018.08.31
sed '/^\#/d' 파일 > 파일_주석제거된거  (0) 2018.08.31

https://www.comodossl.co.kr/products/ssl-checker.aspx



SSL 인증서 적용 상태 테스트 툴 - HanbiroSSL

www.comodossl.co.kr


https://www.geocerts.com/ssl_checker

yum install -y ncdu





du보다 속도도 빠르고 디렉토리별로 나열해서 보기도 편하고 통파티션으로 설치된 리눅스에서 어디가 용량큰지 찾자고 계속 du 치고있ㅉ말자

'job > etc' 카테고리의 다른 글

rpmforge  (0) 2018.08.31
ssl 인즉서 적용 확인하는곳  (0) 2018.08.31
ncdu 명령어  (0) 2018.08.31
sed '/^\#/d' 파일 > 파일_주석제거된거  (0) 2018.08.31
특정 프로세스 grep으로 찾아가지고 해당 프로세스들 $2 불러와서 kill 하기  (0) 2018.08.31
tee 명령어  (0) 2018.08.31

sed '/\#/d' httpd-ssl.conf


#이 포함된 경우 해당 줄 삭제


요거는 


if $a=1 ## 설명 




이런식으로 뒤쪽에 설명이 붙은것도 삭제되기때문에 아래와같이 쓴다






sed '/^\#/d' httpd-ssl.conf


맨 앞에 글자(행의 시작)이 #인 경수 해당 줄 삭제

kill -9 `ps -ef | grep 삭제할프로세스 | grep -v 'grep' | awk '{print $2}'`


리눅스 centos 




tee 명령어




화면 출력과 텍스트 저장을 동시에 하는 명령어




ex)




[root@localhost ~]# free | tee free.txt


             total       used       free     shared    buffers     cached


Mem:       2048132    2036888      11244          0      10640    1783308


-/+ buffers/cache:     242940    1805192


Swap:      1959920     183760    1776160


[root@localhost ~]# cat free.txt 


             total       used       free     shared    buffers     cached


Mem:       2048132    2036888      11244          0      10640    1783308


-/+ buffers/cache:     242940    1805192


Swap:      1959920     183760    1776160








tee 명령어는 로그 저장용? 이라고 생각하면 편하다.




예를들어




make | tee make.txt 라던가




좀 오바한다 싶으면 작업 디렉토리 들어가서 




무슨 명령어를 치든


명령어 | tee 명령어$$.txt




이런식으로 쳐놓으면 내가 입력했던 명령어의 결과들이 전부 저장되니까




커널을 수정하거나 아니면 bashrc 수정(가능한가?)하거나 잘은 모르겠는데 무슨 방법을 쓰면(알아봐야겠다)




작업 디렉토리 하나 생성되고 거기에 자동으로 굳이 tee 명령어 입력을 안해도 tee 명령어`date`.txt 를 만들도록 해놓으면 괜찮을지도 ?

(vi나 crontab 같은 에디터는 뭔가 꼬일듯 하니 제외시키고)

-rw-r--r--  1 root root   2174 Nov 10  2015 install.sh^M


drwxr-xr-x  2 root root   4096 Jan 11 12:56 ^[[01;34mmonitor^[[0m^M


drwxr-xr-x  4 root root   4096 Nov 17 11:42 ^[[01;34mreboot^[[0m^M


-rw-r--r--  1 root root    633 Nov  1 11:13 reboot.sh^M


-rw-r--r--  1 root root    643 Nov 17 11:05 reboot.sh.1^M






위처럼




script 명령어로 파일 저장하고 vi로 열어보면 마지막 ^M 엔터표시 있다.




script 명령어 아니여도 윈도우에서 파일 저장한거 리눅스에서 연다던지 하면 저런 ^M 표시 있을수있다.




저거 지우는 명령어는




perl -p -i -e "s/\r//g" filename

.bash_profile 에다가 아래내용추가




export GREP_OPTIONS='--color=auto'




적용




source .bash_profile

퍼옴


http://linuxstory1.tistory.com/entry/SED-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95



[스트림 편집기(SED)]

 

ed명령어와 grep명령어 기능의 일부를 합친 것이 sed(stream editor)명령어이다. sed명령어도 grep명령어와 같은 필터이지만 이 명령어는 파일을 수정할 수 있게 하는 반면 ed처럼 대화식처리는 불가능하다. sed명령어는 1개 라인씩 입력 라인을 읽어들여 표준출력으로 출력한다.

 

sed는 각 라인을 읽을 때마다 ed에서 사용하던 형식의 대치작업을 실행한다. 일치하는 문자열이 있으면 그 문자열을 대치한 후 출력하고 일치하는 문자열이 없으면 그 라인은 수정되지 않고 그대로 출력된다.

 

이 sed명령어가 ed보다 좋은 점은 라인들을 하나씩 읽고, 수정하고, 출력하기 때문에 기억장치 안의 버퍼를 사용하지 않는다는 것이다. 버퍼를 사용하지 않으면 파일의 크기에 제한 없이 작업을 할 수 있다. ed와 같이 버퍼를 사용하는 경우는 버퍼의 크기보다 큰 파일은 처리할 수 없으며 대개 버퍼의 크기는 1MB정도이다. 따라서 sed는 아주 큰 파일을 처리할 때 주로 사용된다.

 

sed 명령어를 호출하는 형식은 grep명령어와 같지만 완전한 형식의 대치 연산자를 사용한다는 점만이 다르다.

 

 

[sed 명령어 사용법]

 

----------------
치환(substitute)
----------------
sed 's/addrass/address/' list.txt
 : addrass를 address로 바꾼다. 단, 원본파일을 바꾸지 않고 표준출력만 한다.

 

sed 's/\t/\ /' list.txt : 탭문자를 엔터로 변환

 

------------
삭제(delete)
------------

sed '/TD/d' 1.html : TD 문자가 포함된 줄을 삭제하여 출력한다.

sed '/Src/!d' 1.html : Src 문자가 있는 줄만 지우지 않는다.

sed '1,2d' 1.html : 처음 1줄, 2줄을 지운다.

sed '/^$/d 1.html : 공백라인을 삭제하는 명령이다. (★★★)

 

--------------------------

sed 명령어의 다양한 사용예제

--------------------------

1. 특정문자열 바꾸기

 

2. 특정문자열이 포함된 행 삭제하기

 

 

3. 특정 문자열이 포함된 행에서 특정문자만 삭제하기

 

 

4. 파일의 일부만 편집해야 할 경 라인의 범위를 지정하여 사용 가능

 

5. 라인 번호 대신 문맥을 범위로 지정한 경우

 또한 문자열 goodbye를 만난 이후에도 다시 다른 hello가 등장하면 다음 goodbye가 나올 때까지 대치 작업은 반복된다.

 

6. 세번째 라인을 삭제

     
 7. hello 문자가 들어있는 line만 프린트

 

 8. 모든 line 출력과 동시에 hello line이 중복해서 나타남

 

9. princess 또는 Princess를 포함하고 있는 라인들을 삭제함

   

10. 라인 1부터 hello를 포함하고 있는 첫번째 라인까지 모든라인들을 삭제함

 

 11. datafile 안의 데이터로부터 처음 세 개의 문자들을 삭제

 

 12. datafile 안의 데이터로부터 마지막 세 개의 문자들을 삭제

 

13. 각 라인의 첫 번째 공백에서부터 마지막까지 삭제

 

14. 각 라인의 처음부터 맨 마지막 공백까지 삭제

 

15. 각 라인의 처음부터 : 문자가 있는 곳(:문자포함)까지 삭제

 

 

[sed 명령 하이라이트]

 

1. 각 라인마다 뒤에 Hello World! 문자를 입력

 

2. 3번재라인 뒤에 Good Morning 문자 삽입

 

3. 기존의 라인들을 Oh! My God!!! 문자로 대체시킴

 

4. q명령은 편집기로 하여금 그것이 명시된 라인에 도착한 뒤 중지하게 한다. 즉, 이 예제에서는 2라인만 보여주고 중지한다.

5. 특정라인의 문자 치환

※ 특정문자 전체를 바꾸려면 sed 's/hello/#####/g' datafile 과 같이 사용


/^$/   

공백라인, 즉 라인의 시작과 끝 사이에 아무것도 없는 라인과 부합한다. 이것은 공백 스페이스들로 된 라인과는 부합하지 않는바, 스페이스 자체가 문자이기 때문이다.

 

 

[간단한 sed 해법]

 

1.  모든 공백 라인 제거

      ※ sed '/^ *$/d' --> space로 만들어진 공백까지 제거

                                      (조심! ^와 *사이에 공백이 있어야 한다)

2. 각 line마다 공백라인 추가

 

 3. 각 line의 시작을 5 space로 대체

 

 

[sed 명령어의 또다른 기능]

sed명령어의 -f(file)선택자를 사용하면 명령어를 일일이 키보드에서 입력하지 않고 하나의 파일에 기억시켜 놓고 사용할 수도 있다.

 

     # sed -f command.file in.file

 

여러 개의 명령어를 연속적으로 자주 사용할 때 이 명령어 파일이 유용하게 사용된다.
예를 들어 다음과 같은 복수 개의 명령어가 파일에 기억되어 있는 경우는

     # vi command.file
       s/hello/goodbye
       s/good/bad

 

  다음과 같은 명령어를 입력하면 다음과 같이 출력된다.

     # echo "1234hello5678" | sed -f command.file
       => 1234badbye5678

+ sed -i /--fa642a31-A--/,/--fa642a31-Z--/d 2017.log




+ sed -i /삭제할 문장 시작/,/삭제할 문장 끝/d 파일명

perl -e 'open A,$ARGV[0]; open B,$ARGV[1]; @h{<A>}++; print grep {!exists $h{$_}} <B>' test input






ex)

cat test1.txt

aaa

bbb

ccc




cat test2.txt

aaa

ccc



perl -e 'open A,$ARGV[0]; open B,$ARGV[1]; @h{<A>}++; print grep {!exists $h{$_}} <B>' test2.txt test1.txt   


bbb

https://docs.google.com/document/d/1WE1V4uczxavqLY-nyr3qNqCxqzoOf8Vg6Z-Lf0c3DwU/edit#heading=h.4805uy5ihmx


유용한것도 있고... 첨보는것도 있고... 


고객 문의중 기존서버에서는 잘되던 sns 내보내기 기능이 새로 구입한 서버에서는 정상적으로 안된다고한다.


http://도메인/bbs/sns_send.php?longurl=http%3A%2F%2F도메인%2Fshop&title=sns=gplus




위와같은 주소로 연결이 되는데 서버로는 연결이 되는듯 하나 아파치 로그에는 찍히지 않는것으로 보아 아파치 문제는 아닌듯 하다.




bbs/sns_send.php 를 살펴보면




  5 $title    =  urlencode(str_replace('\"', '"',$_REQUEST['title']));


  6 $short_url = googl_short_url($_REQUEST['longurl']);


  7 if(!$short_url) {


  8         $short_url = $_REQUEST['longurl'];




위 내용중 6번 라인을 주석하면 정상적으로 작동된다는 글을 구글링을 통해 찾았다. 




실제로 6번 라인 주석하니 sns 내보내기 기능이 정상적으로 작동된다.




그럼 googl_short_url 이라는 함수가 정상적으로 작동되지 않는다는건데...




googl_short_url 이라는 함수 설정은 lib/common.lib.php 파일에 들어가 있다.




2761 // goo.gl 짧은 주소 만들기


2762 function googl_short_url($longUrl)


2763 {


2764     global $config;


2765 


2766     // Get API key from : http://code.google.com/apis/console/


2767     // URL Shortener API ON


2768     $apiKey = $config['cf_googl_shorturl_apikey'];


2769 


2770     $postData = array('longUrl' => $longUrl);




위와같이 




google.com 에서 API 키를 받아와야 한다.




도메인/adm 들어가서 환경설정의 SNS 쪽 확인해보면 구글 짧은주소 API KEY 등록하는부분이 있긴 하지만... 애초에 짧은 주소 기능을 사용 안하게 되면 위 함수와 현재 정상적으로 작동되지 않는 sns 내보기 기능과는 무관한듯 보인다...




결론은 구글링에서 찾은 6번라인 주석하면 해결된다는것은 임시방편(다른쪽에 에러가 있을 수도 있음)에 불과하다...




계속 테스트 해보니




https 로 넘어갈 때 정상적으로 작동을 하지 않는다.




소스 보면 curl 을 통해서 http 혹은 https 로 넘어가는데 .. 확인결과 구서버에는 curl 에 openssl 이 enable 돼 있으나 신 서버는 openssl 의 없다(cURL Information => libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2) 






########curl 재설치#######


상황


cent 5사용중이던 고객사가 cent 6 로 서버 이전




이전중 문제 발생, 원인은 curl 에 openssl 이 적용돼있지 않음




이번주에 위와 똑같은 문제인 고객사 1명 더 있었음


(이사람도 구서버는 잘돼는데 이번에 신서버(구서버 신서버 os 기억안남)


에서는 특정 기능이 안된다는 문의였음)






궁금한점


구서버와 신서버의 curl 달라진건가 ?


아니면  cent 5점대 6점대 버전차이 ?






curl 에 open ssl 기능이 포함돼 있찌 않으면 그 결제모듈? 이런거 통신할때


curl 에 openssl 기능 사용해야되서 문제 있을듯합니다. 




해결은




curl 다운받고 설치 


tar xvfz curl-7.49.0.tar.gz 


cd curl-7.49.0


./configure --prefix=/usr/local/curl


make && make install




기존 curl 백업


cd /usr/lib64


mkdir curl_backup


mv libcurl.so* curl_backup/


cp -a /usr/local/curl/lib/libcurl.* ./




아파치 재시작하면 curl 에 openssl 포함돼있음




##############




위와같이 curl 재설치 하면 


cURL Information => libcurl/7.49.0 OpenSSL/1.0.1e zlib/1.2.3 libidn/1.18openssl 들어가있음


##############


위 문제가 아니였다. 개삽질 했다.

localhost로 통신을 해야하는데 iptables로 제일 상단에 해외아이피 차단(!KR 제외한 모든 아이피 차단)을 걸어놨다. 그러면서 127.0.0.1 즉 로컬호스트도 차단이 된거다. 그래서 안됐던거임

웹에다 파일 업로드해서 간단하게 바이러스 검사하는 웹 페이지




https://www.virustotal.com/#/home/upload


+ Recent posts