천객만래 [千客萬來] (It has an interminable succession of visitors)

[javascript] 금액에 콤마붙이기



//금액에 콤마 붙이기
function setComma(v) {
var rV="";//리턴할 값
var vS=new String(v), leng=vS.length;

var remnant = leng%3;
if(remnant==0) remnant=3;

while( leng>3 ) {
  rV += vS.substr(0,remnant)+",";
  vS = vS.substr(remnant);

  leng = vS.length;
  remnant=3;
}
rV += vS;

return rV;
}


'IT - 개발' 카테고리의 다른 글

[php] PHP 성능 튜닝 관련 글  (0) 2016.10.08
[PHP]] 연산자  (0) 2016.10.05
[javascript] 금액에 콤마붙이기  (0) 2016.10.03
[Delphi] 작업관리자에 내 프로세서 감추기  (0) 2016.10.03
SOA란 무엇인가  (0) 2016.10.03
[하드웨어] 메모리 용량 단위  (0) 2016.10.01
Posted by SB패밀리

[Delphi] 작업관리자에 내 프로세서 감추기


출처: 델마당 - 질문과 답변 
[답변] 작업관리자에 내 프로세써 감추기 (델파이5 프로 구함)  
98 시절 여러 해킹 프로그램이 이 함수를 이용하여 나쁜짓을 했었는데,
2000 이상급에서는 없어진줄로 압니다.

아마 보안 땜시...


뷰티 wrote:
> 98 에서는 다음과 같이 RegisterServiceProcess 를 호출해서 프로세스를 숨길수 
> 있습니다, 그런데 이 함수가 win2000 에서는 동작이 안되고 '시작점을 찾을 수 없다는'
> 에러가 나옵니다

> function RegisterServiceProcess(dwProcessID, dwType: Integer): 
> Integer; stdcall; external 'KERNEL32.DLL';

> Fvalue := False;
> IF Fvalue then  
>    RegisterServiceProcess(GetCurrentProcessID, 1);


> 혹시 Windows 9x/nt/xp 에서 사용이 가능한가요?

> 검색하다보니 

> 민성기님이 답글 달아 놓은 링크가 있었는데

> 너무 오래되서 그런지... File not Found -_-



'IT - 개발' 카테고리의 다른 글

[PHP]] 연산자  (0) 2016.10.05
[javascript] 금액에 콤마붙이기  (0) 2016.10.03
[Delphi] 작업관리자에 내 프로세서 감추기  (0) 2016.10.03
SOA란 무엇인가  (0) 2016.10.03
[하드웨어] 메모리 용량 단위  (0) 2016.10.01
[php] getdate() 함수  (0) 2016.09.22
Posted by SB패밀리

SOA란 무엇인가

IT - 개발 2016.10.03 13:56

SOA란 무엇인가


도대체 SOA란 무엇인가? 

SOA는 서비스들이 중심인데, 여기서 서비스란 비즈니스 프로세스(예를 들면, 신용카드 거래를 인증하거나 구매 주문을 처리하는 일)를 수행하는 일련의 소프트웨어 컴포넌트들을 말한다. 가장 단순한 형태의 SOA는 네트웍 상에서 서로 통신을 하는 일련의 서비스들을 들 수 있다. 그 서비스들은 느슨하게 연결되어 있고(다시 말해 한 애플리케이션이 다른 애플리케이션과 대화하기 위해 그 애플리케이션의 기술적 세부사항을 알 필요는 없다는 의미), 잘 정의된 플랫폼 독립적 인터페이스들을 갖고 있으며, 재사용이 가능하다. SOA는 애플리케이션 개발 과정에서 더 높은 층을 의미하며[굵은 입도(coarse granularity)로도 불림], 비즈니스 프로세스에 초점을 맞추고 표준 인터페이스를 사용함으로써, IT 환경이 가진 근본적인 기술적 복잡성을 덮어준다. 이것은 고등학교 과학 교과서를 유치원 아이들에 맞게 번역하는 것과 같다. 다시 말해 심장의 승모판과 폐정맥을 다루지 않고도 심장이 피를 보내는 일에 대해 아이들에게 설명할 수 있는 것과 같다.



SOA는 코바에 새 옷을 입힌 것이 아닌가?

아니다. SOA는 기존의 밀접하게 결합된 애플리케이션 연결[코바(Corba: common object request broker architecture)]에서 느슨하게 결합된 애플리케이션 연결[웹서비스(Web services) 같은 것]로 진화한 것이다. 밀결합될 경우, 애플리케이션들은 변화하는 비즈니스 요구에 적응하기가 힘들어지는데, 하나의 애플리케이션을 손보면 이 애플리케이션에 결합된 다른 애플리케이션들도 모두 손봐야만 하기 때문이다. 또한 코바 같은 객체 중심(object-oriented) 개발방식은 가는 입도(finer level of granularity)를 사용하기 때문에, 객체들은 직원이나 고객 주문 수준에서 정의될 필요가 있다. 반면 SOA의 경우, 서비스는 더 추상적인 수준(예를 들면, 전화고지서를 찍어내는 등의 비즈니스 프로세스 수준)에서 정의된다.



SOA 용어정리 

엔터프라이즈 서비스 버스(Enterprise service bus): 소프트웨어 인프라로, 표준 인터페이스와 메시징을 사용해 애플리케이션들을 통합한다. SOA를 구현하는 한 가지 방법(주: 가트너의 보고서에 나온 이 용어는 비교적 새로운 것이다.)

느슨한 연결(Loosely coupled): 잘 정의된 인터페이스들을 사용해 서비스들을 연결하는 것. SOA는 느슨하게 연결된 접근법을 사용해 구축되는데, 이 방법을 사용하면 1개 서비스를 손보더라도 이 서비스에 연결된 다른 서비스들을 손볼 필요가 없어진다. 

메시지 중심 미들웨어(MOM: Message -oriented middleware): 때때로 메시지 중심 아키텍처(message-oriented architecture)로도 불리는 MOM은 여러 애플리케이션들, 심지어 이기종 플랫폼들의 애플리케이션들을 연결하기 위한 메커니즘을 제공한다. 데이터는 메시지 대기열(queues)에 위치하게 되며, 따라서 애플리케이션들은 데이터를 보내는 애플리케이션들에 대한 직접적인 연결선을 만들지 않고도 데이터를 검색할 수 있다.

출판-가입(Publish-subscribe): 한 서비스가 요청하면(또는 ‘가입하면’) 다른 서비스가 올리는(또는 ‘출판하는’) 시스템. 출판된 정보가 변경되면, 가입한 서비스들은 자동으로 업데이트된 데이터를 수신한다.

서비스 중심 아키텍처(SOA: Service-oriented architecture): 잘 정의된 인터페이스들을 가진, 재사용이 가능한 일련의 컴포넌트들로 구축되는 기술건축방식.



SOA 도입에 따른 이익은? 

SOA는 대부분의 기업에서 발견되는 ‘모든 것을 갖고 있는’ IT 환경을 통합하는 일을 더 쉽게 해 준다. “이것이 SOA가 제시하는 가장 큰 가치 가운데 하나다. 다시 말해 SOA는 이기종 환경에서 아주 잘 작동한다.”고 웹서비스 컨설팅 회사인 잽씽크 사의 선임분석가 제이슨 브룸버그는 말한다. SOA를 통하면, 개발자들은 애플리케이션들을 연결하는 새로운 코드를 작성하기 위해 과도한 시간을 낭비할 필요가 없어진다. 대신 개발자들은 웹서비스 같은 표준 프로토콜을 사용할 수 있다. 그리고 SOA 코드의 상당 부분은 재사용이 가능하기 때문에 개발 비용도 줄어든다. SOA는 CIO가 기존에 리거시에 투자했던 것(SAP, 시벨, 오라클 등)을 한데 묶어 더 잘(그리고 저렴하게) 활용할 수 있게 해 준다.

“SOA가 좋은 점은 기존의 포트폴리오를 활용할 수 있게 해 준다는 것이다.”라고 IT 컨설팅 회사인 실크로드 사의 사장 팀 바스는 말한다. CIO는 기존 시스템을 제거하고 새로운 시스템으로 대체할 필요가 없어진다. 기존 시스템의 기능들을 파악한 후 그것들을 활용함으로서, CIO는 위험을 최소화하면서 기존 IT 투자의 가치를 극대화할 수 있다고 바스는 말한다. 또 서비스[예를 들면, 단순객체접근프로토콜(SOAP: simple object access protocol)과 웹서비스기술언어(WSDL: Web services description language) 등을 사용하는 서비스]를 구축하면, 내부 프로세스가 부드러워질 뿐만 아니라, 고객과 비즈니스 파트너들과는 회사의 방화벽을 넘어서 더 쉽게 정보를 공유할 수 있게 된다.

SOA의 또 다른 이익은, SOA가 IT 스탭들로 하여금 기술 아키텍처가 아니라 비즈니스 아키텍처 측면에서 생각하도록 강요하기 때문에, CIO와 비즈니스 중역들 사이의 대화를 더 매끄럽게 해 줄 수 있다는 것이다. 예를 들어, 만약 비즈니스 측이 개선된 재고관리 시스템을 구축하고자 한다면, 비즈니스 측의 실무진은 비즈니스 흐름에 기반해 그것을 설계하는 최고의 방법과 비즈니스의 요구를 만족시키는 최선의 방안에 대해 IT 설계사들과 이야기할 수 있다. 그리고 그 디자인을 실제로 구현하는 일도(이 일은 종종 대규모의 통합 작업이 수반되는데) 훨씬 쉬워진다.

이런 대화가 유용성을 가지려면, 비즈니스 측도 그들의 비즈니스를 운영하는 최선의 방법에 대해 생각해야만 한다. 예를 들면, 고객을 최대로 수용하기 위해 구축할 필요가 있는 프로세스들은? 고객 서비스 수준을 높일 수 있는 방법은? 등이다. 기존의 사일로화된 애플리케이션들을 넘어서 정보를 전달하고 공유함으로써, 기업은 실시간으로 더 많은 비즈니스 성과 데이터를 추출할 수 있어 비즈니스 지능을 높일 수 있다. 또 공통의 아키텍처를 통할 경우, 기업의 반응 수준은 획기적으로 높아진다고 양키 그룹의 선임분석가 다나 가드너는 말한다. “미동부해안에서 허리케인이 발생할 경우, 그 결과로 미국의 다른 지역에서 합판을 옮겨야 할 필요성이 크게 높아질 것이다. 이에 대해 기업은 실시간으로 반응할 수 있다.”고 그는 말한다. “기업은 비즈니스에서 일어나고 있는 일에 대한 정보(이전에는 갖지 못했던 정보)를 갖게 된다.” SOA가 완벽하게 구축된다면, 변화하는 비즈니스 요구와 매순간 바뀌는 시장 조건들에 대한 기업의 적응력은 크게 높아질 것이다.

마지막으로 통합이 쉬워지고 민첩성이 높아짐으로써 ROI가 높아진다는 부수적 이익도 맛볼 수 있다. 부스카드는 SOA 투자에 대해 200%의 ROI를 달성했다고 말한다. AXA 파이낸셜의 가장 인기있는 SOA 기반 서비스 가운데 하나는 겟클라이언트(Get Client)로, 이를 통해 고객대면의 전방처리 애플리케이션은 모두 명령어를 발행할 수 있는데, 그러면 그 명령어는 리거시 시스템들을 모두 훑어본 후 특정 고객의 투자에 대한 완벽한 그림을 창출해 낸다. 겟클라이언트 사례는 AXA가 ROI를 달성하는 방법 가운데 하나라고 부스카드는 말한다. 다시 말해 개발자들은 모든 종류의 전방처리 시스템들과 작동하기에 충분할 만큼의 일반적인 형태의 서비스를 디자인할 수 있으며, 이로 인해 개발시간이 단축되고 개발자들은 비즈니스 솔루션에 더 많은 시간을 쏟을 수 있게 된다. 여기에 IT 스탭들은 새 기술을 SOA에 쉽게 결합할 수 있어, 위험과 비용을 줄이면서 새 애플리케이션의 개발 속도를 높일 수 있다.



웹서비스가 SOA에서 하는 역할은?

우선 SOA는 웹서비스를 반드시 필요로 하는 것이 아니라는 점, 그리고 웹서비스도 SOA 없이 배포될 수 있다는 점을 주목할 필요가 있다. 그러나 웹서비스를 이용해 SOA를 구축하는 것이 가장 이상적인 방법이라고 생각하는 사람도 있다. 가트너의 톰슨이 이런 사람 가운데 하나다. 그러나 그는 SOA를 구축하려면 먼저 웹서비스를 제대로 구현해야만 한다고 경고한다. 만약 정확하게 구현되어 있다면, 그 웹서비스는 SOAP와 WSDL을 사용하는 SOA와 다름이 없다.

이에 반해 부스카드는 웹서비스 없이 SOA를 구축했는데, 이 시점에서 회사 내외부 고객 가운데 어느 누구도 그것을 요청하고 있지 않기 때문이다.(하지만 그는 나중에 그런 요청이 들어올 경우를 대비해 항상 촉각을 곤두세우고 있다.) 대신 그는 아이비엠의 웹스피어 MQ를 메시징 및 통합층으로 사용해 리거시 시스템들을 전방처리 애플리케이션들과 결합하고 있다. 동시에 그는 캔들 사의 패스와이(PathWAI) 수트를 함께 사용하고 있는데, 이 제품은 웹스피어 MQ의 성능을 모니터함으로써 웹스피어 MQ의 최적화를 도와준다.

노스롭 그룸만 미션 시스템의 수석엔지니어 존 존슨도 웹서비스 없이 출판-가입 시스템에 기반한 SOA를 구축했다.<’SOA 용어정리’ 박스 참조> 그는 웹 서버와 애플리케이션 서버의 최상부에 메시징 계층으로서 자바 메시지 서비스를 설치했으며, 통합 작업과 데이터 이동 작업을 돕기 위해 소닉 소프트웨어 사의 엔터프라이즈 서비스 버스를 사용하고 있다. 존슨은 그 서비스들이 웹서비스처럼 설계되어 있지만, 웹서비스 인터페이스들을 사용하고 있지는 않다고 말한다. 

SOA의 큰 이점 가운데 하나는 정확한 데이터를 필요한 사람이나 애플리케이션에 전달해 준다는 것이라고 존슨은 말한다. 예를 들면, 한 사용자가 ID를 사용해 로그인을 할 때, 시스템은 그 사용자가 누구인지를 확인한 후 그 사람이 볼 수 있도록 허용된 데이터(예를 들면, 지도와 업무 리스트)를 전달해 준다.



도전과제는 무엇인가?

보안이 가장 큰 과제다. “개방형 환경보다는 폐쇄형 환경을 보호하는 일이 항상 더 쉽다.”고 실크로드의 바스는 말한다. CIO는 웹서비스의 보안 표준들이 아직 확정되지 않았다는 점을 먼저 인지해야만 한다.<’계산된 위험(www.cio.com/archive/100103/risks.html)’ 박스 참조> 이런 보안 문제 가운데 몇 가지를 극복하려면, SOA를 구축할 때 높은 수준의 보안을 요구하지 않는 비즈니스 프로세스들에 우선 초점을 맞추는 식으로 천천히 진행하는 것이 좋다고 바스는 조언한다.

서비스 구성과 관련된 복잡한 일들을 관리하는 것 또한 까다로운 일이 될 수 있으며, 따라서 탄탄한 SOA 지배구조 모델이 필요하다고 바스는 말한다. 예를 들면, 서비스 중심적인 노드들을 네트웍에 갖고 있으며 100명의 사용자가 특정 인터페이스들을 사용하고 있을 경우, 만약 누군가 그 인터페이스를 변경한다는 결정을 내린다면 어떻게 다른 사용자들과 통신을 할 것인가? 

또 다른 이슈는 네트웍 모니터링이다. “SOA를 통해 복잡한 인터넷 중심의 비즈니스 프로세스들을 조율하는 능력을 갖춘다는 말은 동시에 복잡한 모니터링과 감사 역량도 갖춰야 한다는 말이다.”라고 바스는 말한다. 예를 들면, 서비스 중심 네트웍에서 거래처리 작업 하나가 잘못될 경우(이 경우 여러 서비스 제공업체가 관련될 가능성이 높은데), 무엇이 잘못된 것인지, 어디에서 그것이 잘못된 것인지, 또는 누군가 네트웍에 잘못된 정보를 입력한 것인지를 파악하는 일이 아주 어려울 수 있다. “현재의 웹서비스 기술 표준들은 겉으로 드러나는 사항들만 다루고 있을 뿐이어서, 이 서비스 중심의 이상적인 분산 협업, 프로세스 조율, 모니터링 목표를 현실로 만들기에는 아직 부족한 면이 많다.”고 바스는 말한다.

마지막으로 비용 문제가 있다. SOA를 구축하는 것은 결코 값싼 일이 아니다. 기존 시스템 아키텍처를 리엔지니어링하기 위해서는 상당한 돈이 들어갈 것이다. 또 상당한 수준의 인적자산이 필요할 것이다. 예를 들면, 비즈니스 프로세스를 설계하기 위한 비즈니스 분석가, 프로세스들을 설계도로 만들기 위한 시스템 아키텍트, 새로운 코드를 개발하기 위한 소프트웨어 기술자, 그 모든 사람을 조율하기 위한 프로젝트 매니저 등이다.



SOA를 구축하는데 있어 일반적으로 수용되는 베스트 프랙티스가 있는가?

말할 필요도 없는 것처럼 들릴지 모르지만, SOA를 위한 청사진을 확보하는 것은 정말 중요한 일이다. 기업, 특히 여러 비즈니스를 펼치고 있는 대기업에서 전반적인 계획 아래 어떻게 그것이 들어맞을 것인가를 고려하지 않고 신기술을 구매하거나 애플리케이션들을 통합하는 일은 다반사로 일어난다. 따라서 SOA를 구축하는 것과 관련해 가장 큰 과제 가운데 하나는 사람들(IT와 비즈니스 양측 모두)로 하여금 그 아키텍처 목표들에 초점을 맞추도록 만드는 것이다. 

그리고 CIO는 제공해야 할 정확한 수준의 서비스를 파악할 필요가 있다. 그리고 그런 서비스는 너무 가는 입자도를 가져서는 안된다. 그렇게 되면, 더 높은 비즈니스 프로세스 수준에서 기능을 발휘한다는 그 서비스의 목표가 훼손되기 때문이다. 다시 말해 초점을 너무 좁게 잡으면 더 많은 서비스가 필요하게 되고, 이것은 다시 개발 시간을 증가시킨다. 최악의 경우, 너무 많은 서비스가 네트웍에 흐를 수 있게 된다.

또한 CIO는 가장 큰 유용성을 보이는 곳에서 SOA를 사용해야 할 것이다. 바스는 SOA를 구현할 때 서비스 품질(QoS: quality of service)도 고려할 필요가 있다고 지적한다. 거의 실시간에 가까운 반응속도를 요구하지 않는 시스템에서는 느슨하게 연결된 아키텍처가 좋다고 바스는 말한다. 제시간에 필요한 정보를 얻지 못할 경우, 그 결과가 재앙이 아니라 사소한 문제로 그치는 그런 시스템을 골라 SOA를 적용한다.(예를 들면, SOA를 토대로 항공교통 제어 시스템을 구축한다는 것은 나쁜 생각이다.)



아키텍처에 대한 더 많은 정보

신기술에 대해, 그리고 SOA의 사촌인 웹서비스와 기타 협업 도구에 대해 더 많이 알고 싶다면, 태동기술 연구센터(Emerging Technology Research Center, 64.28.79.79/research/current/)를 참조

관련 정보

혼성 애플리케이션: 새로운 비즈니스 모델을 위한 자산 활용법(Composite Applications: Leveraging Assets for New Business Models, www2.cio.com/analyst/report1726.html)

휴위츠 앤 어쏘시에이츠 사가 이질적인 이익집단들 사이에서 새로운 비즈니스 프로세스를 창출하기 위해 혼성 애플리케이션을 사용하는 방법에 대해 보고하고 있다.

웹서비스: 보편적인 통합이 비즈니스 서비스에 파워를 더해 준다(Web Services: Universal Integration Powers Business Services, www2.cio.com/consultant/report1641.html)

액센추어가 엔터프라이즈 애플리케이션 통합(EAI) 기술에 대해 보고하고 있다.

SOA로의 오솔길(The pathway to a service-oriented architecture, www.computerworld.com/developmenttopics/
development/webservices/story/
0,10801,87771,00.html)



CIO들은 SOA에 대해 생각하고 있는가?

많은 CIO가 SOA에 대해 심각하게 고려중이다. 특히 웹서비스를 시험중인 CIO들이 그렇다. SOA의 잠재적 효과가 아주 매혹적이기 때문이다. 민첩성 증대, 통합 속도 증대/비용 절감, 기존 IT 자산의 활용, 비즈니스 프로세스에 대한 집중 등 그 이익은 아주 많다. 

물론 SOA를 구축하려면 상당한 투자를 해야 한다. 또 아직 성숙하지 않은 웹서비스 시장과 관련해 많은 문제가 해결되지 않고 있는 상태다. 하지만 최소한 SOA는 전략적 측면에서 계속 주목할 만한 가치가 있다



'IT - 개발' 카테고리의 다른 글

[javascript] 금액에 콤마붙이기  (0) 2016.10.03
[Delphi] 작업관리자에 내 프로세서 감추기  (0) 2016.10.03
SOA란 무엇인가  (0) 2016.10.03
[하드웨어] 메모리 용량 단위  (0) 2016.10.01
[php] getdate() 함수  (0) 2016.09.22
[php] 내장함수  (0) 2016.09.17
Posted by SB패밀리

[하드웨어] 메모리 용량 단위



메모리 용량 단위
Bit
Byte
Kilobytes
Megabytes
Gigabytes
Terabytes
Petabytes
Exabytes
Zettabytes


'IT - 개발' 카테고리의 다른 글

[Delphi] 작업관리자에 내 프로세서 감추기  (0) 2016.10.03
SOA란 무엇인가  (0) 2016.10.03
[하드웨어] 메모리 용량 단위  (0) 2016.10.01
[php] getdate() 함수  (0) 2016.09.22
[php] 내장함수  (0) 2016.09.17
[php] 문자열함수  (0) 2016.09.17
Posted by SB패밀리

[php] getdate() 함수



getdate
(PHP 3, PHP 4 , PHP 5)

getdate -- 날짜/시간 정보를 가져온다
설명
array getdate ( [int timestamp])


timestamp의 날짜 정보를 포함하는 연관 배열이나, timestamp가 주어지지 않는다면 현재 로컬 시간를 반환한다. 다음과 같은 배열 원소로 반환된다. 


표 1. 반환되는 연관 배열의 키 원소들

키 설명 Example returned values 
"seconds" 초의 숫자 표현 0 부터 59 
"minutes" 분의 숫자 표현 0 부터 59 
"hours" 시간의 숫자 표현 0 부터 23 
"mday" 일의 숫자 표현 1 부터 31 
"wday" 요일의 숫자 표현 0 (일요일) 부터 6 (토요일) 
"mon" 월의 숫자 표현 1 부터 12 
"year" 연도의 숫자표현, 4 자리 Examples: 1999 또는 2003 
"yday" 연도의 일차 0 부터 366 
"weekday" 요일, 완전한 문자 Sunday 부터 Saturday 
"month" 월, 완전한 문자, January 나 March January 부터 December 
0 유닉스 Epoch (January 1 1970 00:00:00 GMT)로부터의 초, time()에 의해 반환되는 값과 유사하고, date()에 의해서 사용된다.  시스템 의존적이다, 일반적으로 -2147483648 부터 2147483647.  


예 1. getdate() 예제코드 

<?php
$today = getdate(); 
print_r($today);
?>  

출력은 다음과 같을것이다: 

Array
(
    [seconds] => 40
    [minutes] => 58
    [hours]   => 21
    [mday]    => 17
    [wday]    => 2
    [mon]     => 6
    [year]    => 2003
    [yday]    => 167
    [weekday] => Tuesday
    [month]   => June
    [0]       => 1055901520
)




참고: date(), time(), setlocale(). 


'IT - 개발' 카테고리의 다른 글

SOA란 무엇인가  (0) 2016.10.03
[하드웨어] 메모리 용량 단위  (0) 2016.10.01
[php] getdate() 함수  (0) 2016.09.22
[php] 내장함수  (0) 2016.09.17
[php] 문자열함수  (0) 2016.09.17
[windows XP] 지운 파일 되살리기  (0) 2016.09.17
Posted by SB패밀리

[php] 내장함수

IT - 개발 2016.09.17 16:21

[php] 내장함수


1. 날짜 및 시간 관련함수 

*time() 
-용도: 현재 시각을 timestamp값으로 구한다. 
-방법: time() 

*date() 
-용도: 사용자가 지정한 형태로 시간을 표시. 특정시간의 날짜와 요일등을 배열로 리턴한다. 
-방법: date("표시할 시간의 포맷형태","특정한 timestamp값") 

*mktime() 
-용도: 지정된 날짜를 timestamp값으로 변환한다. 
-방법: mktime(시,분,초,월,일,년) 

*checkdate() 
-용도: 날짜와 시간이 올바른 범위 안에 있는지 검사한다. 
-방법: checkdate(월,일,년) 

*getdate() 
-용도: 특정timestamp값으로 시간,요일,날짜정보를 배열로 반환한다. 
-방법: getdate(timestamp값) 또는 getdate() 

*gettimeofday() 
-용도: 현재 시스템의 현재 시간 정보를 배열로 리턴한다. 
-방법: gettimeofday() 

*gmmktime() 
-용도: 그리니치표준 시간으로 지정한 날짜의 timestamp값을 리턴한다. 
-방법: gmmktime(시,분,초,월,일,년) 

*strftime() 
-용도: 특정한 포맷으로 날짜 정보를 출력하는데 언어를 지정할수 있다. 
-방법: strftime("표시할 시간의 포맷형태","특정시간의 timestamp값") 

*microtime() 
-용도: 현재시간의 마이크로타임 값과 timestamp값을 표시한다. 
-방법: microtime() 

*localtime() 
-용도: 현재 서버의 로컬 타임을 표시 
-방법: localtime() 또는 localtime("timestamp값") 

2. 문자열 처리함수 

*addslashes() 
-용도: 작은따옴표 큰따옴표와 같은 특정문자 앞에 역슬래시 문자를 붙인다. 
-방법: addslashes() 

*stripslashes() 
-용도: allslashes로 역슬래시 처리된 문자를 원상태로 되돌린다. 
-방법: stripslashes() 

*htmlspecialchars() 
-용도: HTML코드를 소스 그대로 출력해준다. 
-방법: htmlspecialchars() 

*nl2br() 
-용도: 문자열에 포함된 개행 문자를 <br>태그로 모두 바꿔준다. 
-방법: nl2br() 

*echo() 
-용도: 문자열 출력 
-방법: echo("변수명" 또는 "문자열") 

*sprintf() 
-용도: 포맷 문자열을 통해 지정해 준 포맷으로 문자열을 표시한다. 
-방법: sprintf("포맷","변수명") 

*printf() 
-용도: 지정할 수 있는 포맷에 따라 문자열을 출력한다. 
-방법: printf("포맷","변수명") 

*explode() 
-용도: 문자열을 지정해준 구분자로 분리하여 배열에 저장한다. 
-방법: explode("구분자","문자열인수") 

*implode() 
-용도: 구분자로 나누어 배열에 담은 문자열을 다시 지정해준 구분자로 연결하여 전체 문자열을 반환한다. 
-방법: implode("구분자",배열변수명) 

*join() 
-용도: implode()와 동일한 기능을 수행한다. 
-방법: join("/", "배열변수명") 

*split() 
-용도: 주어진 문자열을 정규표현식의 패턴에 따라 분리하여 배열에 저장한다. 
-방법: implode("정규표현식","문자열") 

*strcmp() 
-용도: 두개의 문자열을 비교하여 참이면1, 거짓이면 0을 반환한다. 
-방법: strcmp("문자열","문자열") 또는 strcmp("문자열","변수명") 또는 strcmp(변수명, 변수명) 

*substr() 
-용도: 문자열에서 특정시작 문자부터 길이만큼의 문자열을 추출하여 반환한다. 
-방법: substr("문자열", 시작문자번호, 문자열의 길이) 

*strchr() 
-용도: 문자열이 처음으로 나타나는 위치부터 끝까지 반환 
-방법: strchr("문자열","찾을 문자열") 

*strstr() 
-용도:strchr()함수와 동일한 수행을 한다. 
-방법: strstr("문자열","찾을 문자열") 

*strrchr() 
-용도: 문자열이 마지막으로 나타나는 위치부터 끝까지 반환한다. 
-방법: strrchr("문자열","찾을문자열") 

*strpos() 
-용도: 문자열 대신 처음으로 나타나는 위치를 숫자로 반환, 이때 숫자는 0부터 시작. 
-방법: strpos("문자열","찾을 문자열") 

*strrpos() 
-용도: 찾고자 하는 문자열에서 마지막으로 나타나는 위치를 반환한다. 
-방법: strrpos("문자열", "찾을 문자열") 

*strlen() 
-용도: 문자열의 길이를 반환한다. 
-방법: strlen($변수명) 또는 strlen("문자열") 

*strtolower() 
-용도: 알파벳 대문자를 모두 소문자로 바꾸어 반환한다. 
-방법: strtolower("문자열") 

*strtoupper() 
-용도: 알파벳 대문자를 소문자로 바꾸어 반환한다. 
-방법: strtoupper("문자열") 

*ucfirst() 
-용도: 알파벳 문자열의 첫 글자를 대문자로 반환한다. 
-방법: unfirst("문자열") 

*ucwords() 
-용도: 알파벳 문자열의 첫 글자를 대문자로 반환한다. 
-방법: ucwords("문자열") 

*strrev() 
-용도: 인자로 전달한 문자열의 순서를 역전시킨다. 
-방법: strrev("문자열") 

*strtr() 
-용도: 문자열에서 변경하고자 하는 문자열을 변경할문자열로 1:1 변경해준다. 
-방법: strtr("문자열","변경하고자하는 문자열","변경할 문자열") 

*str_replace 
-용도: 문자열 중에 변경하고자 하는 문자열을 찾아 변환한다. 
-방법: str_replace("찾을 문자열","변경할 문자열","문자열 원본") 

*chop() 
-용도: 문자열의 뒷부분의 공백 문자를 제거한 후 반환한다. 
-방법: chop("문자열") 

*trim() 
-용도: 문자열의 앞과 뒤에 있는 공백을 제거한 후 문자열을 반환한다. 
-방법: trim("문자열") 

*quotemeta() 
-용도: 메타문자 앞에 역슬래시를 붙인다. 
-방법: quotemeta() 

*ord/chr() 
-용도: ord()함수는 문자열에서 첫번째 문자에 아스키코드값을 반환하고 chr()함수는 아스키함수에 해당하는 문자를 반환한다. 
-방법: ord("문자열"), chr("아스키값") 

*parse_str() 
-용도: get방식과 같은 형태의 변수형을 변수와 값으로 받을 수 있게 해준다. 
-방법: parse_str(변수명) 

3.파일관련함수 

*fopen() 
-용도: 로컬경로의 파일이나 url경로의 파일을 읽기 모드나 쓰기 모드로 열어준다. 
-방법: fopen("절대경로명/파일", "모드")또는 fopen("url주소", "모드") 

*fclose() 
-용도: fopen으로 열린 파일을 닫는다. 
-방법: fclose($fp) 

*fread() 
-용도: 파일포인터가 가리키는 파일의 내용을 지정한 크기만큼 읽어 들인다. 
-방법:fread($fp,"읽어들일 바이트") 

*feof() 
-용도: 현재 파일 포인터가 파일의 끝인지를 알려주는 함수 
-방법: feof($fp) 

*fgets() 
-용도: 파일을 읽어올때 한줄씩 읽어온다. 
-방법: fgets($fp,"읽어들일 바이트") 

*fputs() 
-용도: 파일을 a 또는 w 모드로 열어 문자열을 파일에 기록한다. 
-방법: fputs($fp, "문자열") 

*fwirte() 
-용도: 파일을 기록한다. 
-방법: fwrite($fp, "문자열") 

*fpassthru() 
-용도: 파일포인터의 현재 위치에서 파일의 끝까지 읽어 들이도록 한다. 
-방법: fpassthru($fp) 

*readfile() 
-용도: fpassthru와 비슷하지만 fopen()없이 직접 바로 파일을 읽어들일 수 있다. 읽어들인 파일의 절대경로를 포함한다. 
-방법: readfile("파일의 절대경로 또는 상대경로/파일명") 

*fgetc() 
-용도: 파일로부터 한문자를 읽어들인다. 
-방법: fgetc($fp) 

*filesize() 
-용도: 파일의 크기를 바이트수로 반환한다. 
-방법: filesize("파일경로/파일명") 

*file_exists() 
-용도: 파일이름으로 지정한 파일이 존재하는지 검사한다. 
-방법: file_exists("파일경로/파일명") 

*is_file() 
-용도: 파일이름으로 지정한 이름이 파일면 true를 반환한다. 
-방법: is_file("파일경로/파일명") 

*is_dir() 
-용도: 파일이름으로 지정한 이름이 디렉토리일경우 true를 반환한다. 
-방법: is_dir("파일경로/파일명") 

*is_link() 
-용도: 파일이름으로 지정한 이름이 심볼릭 링크일경우 true를 반환한다. 
-방법: is_link("파일경로/파일명") 

*is_escutable() 
-용도: 파일이름으로 지정한 파일이 실행 가능한 파일이면 true를 반환한다. 
-방법: is_excutable("파일경로/파일명") 

*is_readable() 
-용도: 파일이름으로 지정한 파일이나 디렉토리가 읽기 가능한경우 true를 반환한다 
-방법: is_readable("파일경로/파일명 또는 디렉토리명") 

*is_writeable() 
-용도: 파일이름으로 지정한 파일이나 디렉토리가 쓰기 가능한 경우 true를 반환한다 
-방법: is_writeable("파일경로/파일명 또는 디렉토리명") 

*copy() 
-용도: 파일을 복사하고 제대로 수행이 되면 true를 반환한다. 
-방법: copy("파일경로/복사할 파일명", "파일경로/복사된 파일명") 

*rename() 
-용도: 파일을 이름을 바꾼다. 제대로 수행이 되면 true를 반환한다. 
-방법: rename("파일경로/변경할 파일명", "파일경로/변경후 파일명") 

*unlink() 
-용도: 파일을 삭제한다. 제대로 수행될 경우 true를 반환한다. 
-방법: unlink("파일경로/삭제할 파일명") 

*mkdir() 
-용도: 디렉토리를 생상하고 동시에 권한도 함께 지정할 수 있다. 
-방법: mkdir("경로/디렉토리명") 

*rmdir() 
-용도: 디렉토리 삭제 
-방법: rmdir("경로/디렉토리명") 

*basename() 
-용도: 경로명과 파일명을 받아 파일명만을 반환한다. 
-방법: basename("파일경로/파일명") 

*dirname() 
-용도: 경로명과 파일명을 받아 경로명만을 반환한다. 
-방법: dirname("파일경로/파일명") 

*file() 
-용도: 줄단위로 읽어서 각 줄으 문자열을 배열로 하여 반환한다. 
-방법: dirname("파일경로/파일명") 

4.디렉토리 관련함수 

*opendir() 
-용도: 지정한 디렉토리에 대한 핸들을 얻는다. 
-방법: opendir("디렉토리 경로") 

*closedir() 
-용도: opendir()함수 호출로 열어둔 디렉토리에 대한 핸들을 닫는다. 
-방법: closedir($od) 

*readdir() 
-용도: 디렉토리에 있는 모든 디렉토리 및 파일들의 이름을 읽어 배열의 형태로 반환 
-방법: readdir($od) 

*rewinddir() 
-용도: 디렉토리 핸들의 포인터 위치를 제일 처음으로 되돌린다. 
-방법: rewinddir($od) 

*chdir() 
-용도: 지저한 디렉토리로 바꾼다. 
-방법: chdir("경로명/디렉토리명") 

*dir() 
-용도: 디렉토리 관련 함수를 사용할 수 있는 클래스 
-방법: dir("경로/디렉토리명") 

5. URL관련함수 

*parse_url() 
-용도: url을 입력하면 해당 url에 대한 정보를 연관 배열로 저장하여 반환 
-방법: parse_url("URL주소") 

*urlencode() 
-용도: 데이터를 url인코딩해준다. 
-방법: urlencode("문자열") 

*urldecode() 
-용도: url을 통해 넘어온 값 중 인코딩된 문자열을 디코딩한다. 
-방법: urldecode("문자열") 

6.변수 및 수학 관련함수 

*gettype() 
-용도: 변수형을 반환한다. 
-방법: gettype("변수명") 

*settype() 
-용도: 변수형을 변환한다. 
-방법: settype("변수명", "변수타입") 

*intval() 
-용도: 변수값을 정수형 값으로 변환 
-방법: intval("변수값") 

*doubleval() 
-용도: 변수값을 실수형 값으로 변환한다. 
-방법: doubleval("변수값") 

*strval() 
-용도: 변수를 문자형 값으로 변환한다. 
-방법: strval("변수값") 

*isset() 
-용도: 변수가 존재하는지 확인한다. 
-방법: isset("변수명") 

*unset() 
-용도: 변수를 삭제한다. 
-방법: unset("변수명") 

*empty() 
-용도: 변수에 값이 존재하는지 확인하여 없으면 true를 있으면 false를 반환한다. 
-방법: empty("변수명") 

*is_array() 
-용도: 변수의 형이 배열인지 확인한다. 
-방법: is_array("변수명") 

*is_double 
-용도: 변수의 형이 더블형인지 확인한다. 
-방법: is_double("변수명") 

*abs() 
-용도: 변수의 절대값을 반환 
-방법: abs("변수명") 

*round() 
-용도: 변수의 반올림한 값을 구한다. 
-방법: round("변수명") 

*ceil() 
-용도: 변수 값의 무조건 올림 값을 구한다. 
-방법: ceil("변수명") 

*floor() 
-용도: 변수값의 무조건 내림 값을 구한다. 
-방법: floor("변수명") 

*pow() 
-용도: 인자 값만큼 제곱승 한 값을 구한다. 
-방법: pow("변수명", "제곱할 횟수") 

*max & min() 
-용도: 최대값과 최소값을 구한다. 
-방법: max("숫자값", "숫자값",...) min("숫자값", "숫자값",...) 

7.기타 알아두어야 할 함수 

*count()/sizeof() 
-용도: 배열의 크기를 구한다. 
-방법: count("변수명") sizeof("변수명") 

*each()/list() 
-용도: 배열의 내용을 출력할때 사용한다. 
-방법: each("배열변수명"), list("배열의 인자를 받을 변수명", "배열의 인자를 받을 변수명"...) 

*end()/next()/reset() 
-용도: 현재 배열의 포인터를 끝이나 다음으로 이동시킨다. reset은 배열포인터를 다시 처음으로 되돌린다. 
-방법: end("배열변수명") next("배열변수명") 

*exec() 
-용도: 리눅스 서버의 내부 명령어를 사용하게 한다. 
-방법: exec("리눅스명령어", "결과를 저장할 변수명" ,"에러발생시 저장할 변수명") 

*number_format() 
-용도: 천단위마다 ","를 붙여준다. 
-방법: number_format("변수명", "소수점자리수", "소수점 표시마크변경", "천단위 표시 마크변경") 

*show_source() / highlight_string() 
-용도: php파일의 소스를 보여준다. 
-방법: show_source("경로명/파일명") highlight_string("변수명") 

*uniqid() 
-용도: 유일한 아이디 값을 만들어준다 
-방법: uniqid() 



'IT - 개발' 카테고리의 다른 글

[하드웨어] 메모리 용량 단위  (0) 2016.10.01
[php] getdate() 함수  (0) 2016.09.22
[php] 내장함수  (0) 2016.09.17
[php] 문자열함수  (0) 2016.09.17
[windows XP] 지운 파일 되살리기  (0) 2016.09.17
[Mysql] 테이블 존재여부 확인하기  (0) 2016.09.06
Posted by SB패밀리

[php] 문자열함수


그나마 PHP에서 재미있는 함수라면 문자열 함수들이 아닐까 싶네요.



문자열 관련함수들이 



AddCSlashes -- C 형식으로 문자열에 슬래쉬를 덧붙입니다. 
addslashes -- 문자열에 슬래쉬를 덧붙입니다. 
bin2hex --  바이너리 데이터를 16진수 표현으로 바꿉니다. 
chop -- rtrim()의 별칭. 
chr -- 특정 문자를 반환합니다. 
chunk_split -- 문자열을 작은 조각으로 나눕니다. 
convert_cyr_string --  키릴 문자셋을 다른 것으로 변환합니다. 
convert_uudecode --  Decode a uuencoded string 
convert_uuencode --  Uuencode a string 
count_chars --  문자열 안에 사용한 문자에 대한 정보를 반환합니다. 
crc32 -- 문자열의 crc32값을 계산합니다. 
crypt -- 단방향 문자열 암호화(해슁). 
echo -- 하나 이상의 문자열을 출력합니다. 
explode -- 문자열을 주어진 문자열을 기준으로 분리합니다. 
fprintf -- 문자열을 형식화하여 스트림에 기록합니다. 
get_html_translation_table --  htmlspecialchars()와 htmlentities()에서 사용하는 변환표를 반환합니다. 
hebrev --  논리 헤브라이어 텍스트를 표시 텍스트로 변환합니다. 
hebrevc --  개행 문자를 포함하여 논리 헤브라이어 텍스트를 표시 텍스트로 변환합니다. 
html_entity_decode --  모든 HTML 엔티티를 해당하는 문자로 변환합니다. 
htmlentities --  해당하는 모든 문자를 HTML 엔티티로 변환합니다. 
htmlspecialchars --  특수 문자를 HTML 엔터티로 변환합니다. 
implode -- 문자열로 배열 요소를 결합합니다. 
join -- implode()의 별칭. 
levenshtein --  두 문자열 사이의 Levenshtein distance를 계산합니다. 
localeconv -- 숫자 형식화 정보를 얻습니다. 
ltrim --  문자열 시작 부분의 공백을 제거합니다. 
md5_file -- 주어진 파일명의 md5 해쉬를 계산합니다. 
md5 -- 문자열의 md5 해쉬를 계산합니다. 
metaphone -- 문자열의 메타폰 키를 계산합니다. 
money_format -- Formats a number as a currency string 
nl_langinfo --  언어와 로케일 정보를 얻습니다. 
nl2br --  문자열의 모든 줄바꿈 앞에 HTML 줄바꿈 태그를 삽입합니다. 
number_format -- Format a number with grouped thousands 
ord -- 문자의 아스키 값을 반환합니다. 
parse_str -- 문자열을 처리하여 변수를 생성합니다. 
print -- 문자열을 출력합니다. 
printf -- 형식화한 문자열을 출력합니다. 
quoted_printable_decode --  인용되어 있는 출력 가능 문자열을 8비트 문자열로 변환합니다. 
quotemeta -- 메타 문자를 인용합니다. 
rtrim --  문자열 끝 부분의 공백을 제거합니다. 
setlocale -- 지역적보를 지정한다. 
sha1_file -- 파일의 sha1 해쉬를 계산합니다. 
sha1 -- 문자열의 sha1 해쉬를 계산합니다. 
similar_text --  두 문자열 간의 유사성을 계산합니다. 
soundex -- 문자열의 soundex 키를 계산합니다. 
sprintf -- 형식화한 문자열을 반환합니다. 
sscanf --  문자열을 형식에 따라 처리합니다. 
str_ireplace --  대소문자를 구별하지 않는 str_replace(). 
str_pad --  문자열을 어떠한 길이가 되도록 다른 문자열로 채웁니다. 
str_repeat -- 문자열을 반복합니다. 
str_replace --  발견한 모든 검색 문자열을 치환 문자열로 교체합니다. 
str_rot13 -- 문자열에 rot13 변환을 수행합니다. 
str_shuffle -- 문자열을 랜덤하게 섞습니다. 
str_split --  문자열을 배열로 변환합니다. 
str_word_count --  문자열에서 사용한 단어에 대한 정보를 반환합니다. 
strcasecmp --  대소문자를 구별하지 않는 바이너리 호환 문자열 비교 
strchr -- strstr()의 별칭. 
strcmp -- 바이너리 호환 문자열 비교 
strcoll -- 로케일 기반 문자열 비교 
strcspn --  마스크에 매칭하지 않는 처음 세그먼트의 길이를 찾습니다. 
strip_tags -- 문자열에서 HTML과 PHP 태그를 제거합니다. 
stripcslashes --  addcslashes()로 처리한 문자열을 되돌립니다. 
stripos --  대소문자를 구별하지 않고 문자열이 처음 나타나는 위치를 찾습니다. 
stripslashes --  addslashes()로 처리한 문자열을 되돌립니다. 
stristr --  대소문자를 구별하지 않는 strstr() 
strlen -- 문자열의 길이를 구합니다. 
strnatcasecmp --  "natural order" 알고리즘을 이용한 대소문자를 구별하지 않는 문자열 비교. 
strnatcmp --  "natural order" 알고리즘을 이용한 문자열 비교 
strncasecmp --  대소문자를 구별하지 않는 처음 n 문자의 이진 호환 문자열 비교 
strncmp --  처음 n 문자의 이진 호환 문자열 비교 
strpbrk --  Search a string for any of a set of characters 
strpos --  문자열이 처음 나타나는 위치를 찾습니다. 
strrchr --  문자열에서 문자가 마지막으로 나오는 부분을 찾습니다. 
strrev -- 문자열을 뒤집습니다. 
strripos --  문자열에서 대소문자 구별 없이 문자열이 나타나는 마지막 위치를 찾습니다. 
strrpos --  문자열에서 마지막 문자의 위치를 찾습니다. 
strspn --  마스크에 매칭되는 초기 세그먼트의 길이를 찾는다. 
strstr -- 문자열이 처음으로 나타나는 부분을 찾습니다. 
strtok -- 문자열을 토큰화 합니다. 
strtolower -- 문자열을 소문자로 만듭니다. 
strtoupper -- 문자열을 대문자로 만듭니다. 
strtr -- 특정 문자를 번역한다. 
substr_compare --  Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters 
substr_count -- 부분문자열의 수를 센다 
substr_replace -- 문자열의 일부를 치환한다. 
substr -- 문자열의 일부를 반환한다. 
trim --  문자열의 처음과 끝에 있는 공백을 제거한다. 
ucfirst -- 문자열의 처음 글자를 대문자로 만든다. 
ucwords --  문자열에 있는 각 단어의 처음 글자를 대문자로 바꾼다. 
vprintf -- Output a formatted string 
vsprintf -- Return a formatted string 
wordwrap --  정지문자를 이용해 주어진 수 만큼의 문자를 래핑한다.  



'IT - 개발' 카테고리의 다른 글

[php] getdate() 함수  (0) 2016.09.22
[php] 내장함수  (0) 2016.09.17
[php] 문자열함수  (0) 2016.09.17
[windows XP] 지운 파일 되살리기  (0) 2016.09.17
[Mysql] 테이블 존재여부 확인하기  (0) 2016.09.06
[MS SQL] DB 테이블 존재여부 확인하기  (0) 2016.09.06
Posted by SB패밀리

[windows XP] 지운 파일 되살리기


지운 파일 되살리기
탐색기나 내 컴퓨터에서 실수로 중요한 파일을 지우기 십상이다. 하지만 걱정하지 않아도 된다. 도구 모음에 있는 ‘실행 취소’ 버튼을 누르면 사라졌던 것이 다시 나타나기 때문이다. 단축 키는 <Ctrl + Z>다. 
TR>  
‘실행취소’ 버튼을 누르면 방금 전 내린 명령이 무효가 된다. 


'IT - 개발' 카테고리의 다른 글

[php] 내장함수  (0) 2016.09.17
[php] 문자열함수  (0) 2016.09.17
[windows XP] 지운 파일 되살리기  (0) 2016.09.17
[Mysql] 테이블 존재여부 확인하기  (0) 2016.09.06
[MS SQL] DB 테이블 존재여부 확인하기  (0) 2016.09.06
[php] 파일 관련 함수  (0) 2016.09.04
Posted by SB패밀리

[Mysql] 테이블 존재여부 확인하기


Mysql 테이블 존재 유무 확인

1.

sptbl_qry = "select count(*) TotCount from INFORMATION_SCHEMA.tables where table_name='[table_name]'"



2.

function mysql_table_exists($table, $link) { 
$exists = mysql_query("SELECT 1 FROM `$table` LIMIT 0", $link); 
if ($exists) return true; 
return false; 


mysql_query는 query가 성공하면 true, 실패하면 false입니다.



Posted by SB패밀리

[MS SQL] DB 테이블 존재여부 확인하기




MS SQL SERVER 에서 DB 테이블 존재여부 확인하기

++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1
++++++++++++++++++++++++++++++++++++++++++++++++++

MS SQL 테이블 존재여부

sql = " IF object_id('테이블명') IS NOT NULL SELECT count(*) as count FROM 테이블명 where etc1='" & domain_addr & "' "

테이블이 있으명 실행


sql = sql & " IF object_id('테이블명')IS NULL SELECT count(*) as count FROM 다른테이블명 "

테이블이없으면 다른테이블 실행

++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2
++++++++++++++++++++++++++++++++++++++++++++++++++

MS SQL 테이블 존재 여부 확인방법 #2

테이블 존재 여부를 확인하는 다양한 방법들을 볼까요.
여기서는 기본적인 몇 가지만 살펴보겠습니다.
쿼리 분석기를 이용해서 테스트 해 보세요.

-- northwind DB에 orders 테이블을 테스트합니다.
USE northwind

-- 아래 코드는 SQL Server 스크립팅 엔진이 생성하는 일반적인 코드입니다.
IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = object_id(N'dbo.orders')
     AND objectproperty(id, N'IsUserTable') = 1)
  SELECT '존재'

-- INFORMATION_SCHEMA owner의 TABLES 뷰를 이용해도 확인할 수 있죠.
IF EXISTS(SELECT * FROM information_schema.tables
     WHERE  table_name = 'orders' AND table_schema='dbo')
  SELECT '존재'

-- 가장 단순한 방법은 obejct_id 함수를 이용하는 방법입니다.
-- N'' 은 문자열이 유니코드형임을 나타내는 지시어입니다.
IF object_id(N'dbo.orders') IS NOT NULL
  SELECT '존재'

-- 이렇게도 가능하죠. 'U'는 sysobjects 테이블의 xtype 컬럼 값입니다.
IF object_id(N'dbo.orders', 'U') IS NOT NULL
  SELECT '존재'

-- 임시 테이블의 경우는 TEMPDB에 작성되므로 다음과 같이 사용할 수 있죠.
IF object_id(N'tempdb.dbo.#temptable') IS NOT NULL
  SELECT '존재'

/*
결론적으로 위의 모든 방법들은, sysobjects 시스템 테이블을 이용한다는
사실입니다.
sysobjects 시스템 테이블은 오브젝트의 가장 근본이 되는 중요한 테이블입니다.
이 시스템 테이블에 대해서 많은 공부 하시면 큰 도움이 되실겁니다.
*/
SELECT * FROM dbo.sysobjects
  WHERE id = object_id('dbo.orders')




SELECT COUNT(NAME) CNT FROM SYSOBJECTS WHERE TYPE = 'U' AND NAME='테이블이름'



count(name) > 0 이면 존재


출처 : 데브피아

++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3
++++++++++++++++++++++++++++++++++++++++++++++++++

MS SQL 2000 테이블 존재여부

테이블 존재여부 확인을 위한 최적의방안]

시스템 테이블을 이용하시는 방안이 있습니다. 

MSSQL2000의 각 DB마다 시스템관련 저장 프로시져를 가지고 있으며, 전체 DB 즉 master DB에서 전체 DB 및 전체 Column등 대부분을 관리를 하고있습니다.

use master
go

Select * From sysobjects where xtype = 'U' 를 하시면 사용자가 직접만든 테이블 목록이 촤르르 펼쳐집니다. 여기서 응용력을 발휘하셔서

SELECT *
FROM sysobjects
WHERE xtype = 'U' AND
name = '{알고자하는테이블명}' 

또는 

SELECT Count(*)
FROM sysobjects
WHERE xtype = 'U' AND
name = '{알고자하는테이블명}' 

을 지정하셔서 건수가 0건이면 없는것이며, 1건이면 존재하는 방식으로 체크하는 방안이 있습니다.

위 의 시스템DB를 뒤져서 체크하는 방안이 제일 안전한 방안이며, 통상 MSSQL을 사용하고 있는 기업중 대부분의 프로젝트상에서 위방식이 가장 안전한 방식이며, 단점은 DB Query를 해야하기때문에 네트워크 트래픽부분상 시간소모가 된다는 점입니다.( 약 0.001초 이내 )




Posted by SB패밀리

[php] 파일 관련 함수



fopen - 파일을 오픈 함 
file_exists - 파일이 존재 하는지 검사 
fileperms - 파일의 퍼미션을 구함 
filemtime - 파일의 마지막 수정 시간을 구함 
fileatime - 파일의 마지막 접근 시간을 구함 
filesize - 파일의 크기를 구함 
stat - 파일 정보를 가져옴 [1]

*************************************************

저장될 변수 = fopen ("파일명", "모드");

r
읽기전용
파일의 시작 위치
r+
읽기, 쓰기
파일의 시작 위치
w
쓰기전용, 파일이 없으면 새로 생성, 기존의 내용 삭제
파일의 시작 위치
w+
읽기, 쓰기, 파일이 없으면 새로 생성, 기존의 내용 삭제
파일의 시작 위치
a
쓰기전용, 파일이 없으면 새로 생성
파일의 마지막 위치
a+
읽기, 쓰기, 파일이 없으면 새로 생성
파일의 마지막 위치


$fp = fopen ("test.txt", "w"); // 현재 서버의 test.txt파일을 쓰기 전용으로 열기
$fp = fopen ("http://navyism.com", "r"); // http://navyism.com의 index를 읽기 전용으로 열기
$fp = fopen ("ftp://id@pass:navyism.com", "r"); // ftp://navyism.com을 읽기 전용으로 열기


++++++++++++++++++++++++++++++++++++++++++

file_exists함수는 어떤 파일이 존재 하는지를 알아보는 함수로, 존재 하는 파일일 경우에는 TRUE를 리턴하고 존재 하지 않을 경우에는 FALSE를 리턴한다.

file_exists ("파일이름");

예)
<?
echo file_exists ("test.txt");
?>

+++++++++++++++++++++++++++++++++++++

fileperms ("파일이름");

<?
$perms = fileperms ("test.txt");
echo base_convert ($perms, 10, 8);
?>


++++++++++++++++++++++++++++++++++++

filemtime ("파일이름");

filemtime함수는유닉스 타임 스탬프 형식으로 시간을 리턴하므로 date함수와 같이 사용해야 한다.

예)
<?
echo date ('Y-m-d H:i:s', filemtime ("test.txt"));
?>


++++++++++++++++++++++++++++++++++++++++

fileatime ("파일이름");

fileatime함수는 유닉스 타임 스탬프 형식으로 시간을 리턴하므로 date함수와 같이 사용해야 한다.

예)
<?
echo date ('Y-m-d H:i:s', fileatime ("test.txt"));
?>

+++++++++++++++++++++++++++++++++++

filesize ("파일이름");

예)
<?
echo filesize ("test.txt");
?>

     
++++++++++++++++++++++++++++++++++++++++

저장될 배열 = stat ("파일이름");

<?
$file = stat ("test.txt");
echo "
파일 크기 : $file[7] <br>
마지막 접근시간 : $file[8] <br>
마지막 수정시간 : $file[9]
";
?>





Posted by SB패밀리

[php] md5 - md5알고리즘의 암호화 함수


md5 - md5알고리즘의 암호화 함수 

저장될 변수 = md5 (문자열);

<?
$a = "abcde";
echo md5 ($a);
?>

crypt 함수의 결과가 13자리 인데 비해 md5는 결과는 32자리가 된다.
crypt 함수는 8개의 문자열만을 취하고 나머지는 잘라 버린 후에 암호화 하지만 md5는 그 이상의 문자열을 취하여 암호화 한다.


++++++++++++++++++++ 
   
김종연 

md5는 일정한 규칙을 이용한 암호화를 해주기 때문에 session이나 cookie에 가장 많이 쓰는 방식입니당. crypt는 기냥기냥 전 안씁니다.. 요늠을 써보니..
불편한게 많아서요... ^^; ㅈㅅ  





Posted by SB패밀리

[php] 문자열 &lt;---&gt; 배열 문자열




implode - 배열을 문자열로 합침

string implode(array pieces, string glue);
// 배열 pieces의 각 요소를 문자열 glue로 연결한 전체 문자열을 반환.



<?
$arr = array("one", "two", "three", "four", "five");

$res = implode("/", $arr);
echo("$res");
?> 
*****결과물***** 
one/two/three/four/five


+++++++++++++++++++++++++++++++++++++++++++++++++++++

(explode 함수)

array explode(string separator, string string);
// separator로 string 문자열 분리하여 배열로 반환한다.


<?
$string = "one two three four five";
$arr = explode(" ", $string);
while(list($key,$val) = each($arr)) {
echo("$arr[$key] : $val<br>");
}
?>
***결과물**** 
$arr[0] : one
$arr[1] : two
$arr[2] : three
$arr[3] : four
$arr[4] : five



Posted by SB패밀리

[php] crypt - 문자열을 암호화


crypt(암호화할 변수, 키 값);

<?
$a = "abcde";
echo crypt ($a, "1a");
?>






Posted by SB패밀리

[php] strip_tags() , htmlspecialchars() 함수 설명



strip_tags : 모든 HTML, PHP 태그를 없애주는 역할을 합니다.
사용법 => strip_tags(변수 혹은 문자열); 

+++++++++++++++++++++++++++++++++++

htmlspecialchars

기능 : 특수문자들을 HTML 코드로 바꿔준다.
게시판이나 방명록등에서 사용자가 입력한 아래 문자들을 변환시킨다.
이 함수는 사용자가 게시판이나 방명록에서 HTML코드를 포함하는 문자열을 입력 전송했을 때 
이것이 Hyper Link로 연결되지 않고 입력한 문자열이 그대로 출력 되도록 하는 역할을 한다. 
특수문자를 문자열로 인식할 수 있도록 바꾸어 준다.

& 를 & 로 
" 를 " 로 
< 를 < 로 
> 를 > 로 바꾸어 리턴.

구문 : string htmlspecialchars(string string);

소스 :
<? 
$text = "Use & " < > document."; 
$change = htmlspecialchars($text); 
?> 
<html> 
<body> 
함수를 사용하지 않으면? : <? echo ("$text"); ?><br> 
함수를 사용하면? : <? echo ("$change"); ?><br> 
</body> 
</html> 

결과 : 
함수를 사용하지 않으면? : Use & " < > document. 
함수를 사용하면? : Use & " < > document. 

소스보기 : 
<HTML> 
<body> 
함수를 사용하지 않으면? : Use & " < > document.<br> 
함수를 사용하면? : Use & " < > document.<br> 
</body> 
</html> 





Posted by SB패밀리

[javascript] 랜덤하게 명언 출력하기




랜덤하게 명언 출력하기



:: Math객체 :: 수학관련 객체입니다.
- floor() : 소수부분을 버림합니다.
- random() : 난수를 발생합니다.
  |예제| Math.floor(Math.random()*10);
  0에서 9까지의 난수가 발생됩니다.
  |예제| Math.floor(Math.random()*10) +2;
  2에서 11까지의 난수가 발생됩니다.





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



<html>
<body>



<fieldset>
<legend><b>[ 오늘의 명언 ]</b></legend>
<br>  



<script language="JavaScript">
<!--



var day_msg = new Array(5);

day_msg[0] = "너 자신을 알라. <b>  - 소크라테스 -</b>";
day_msg[1] = "인생의 위대한 목표는 지식이 아니라 행동이다. <b>  - 헉슬리 -</b>";
day_msg[2] = "삶은 호흡하는 것이 아니라 행위를 하는 것이다. <b>  - 루소 -</b>";
day_msg[3] = "우리의 인생은 우리가 노력한 만큼 가치가 있다. <b>  - 모리악 -</b>";
day_msg[4] = "사랑하며 가난한 것이 애정없는 부유함보다 훨씬 낫다. <b>  - ㅣ. 모리스 -</b>";



var random_num = Math.floor(Math.random()*5);
/* 위에서 랜덤하게 생성된 수(0~4)를 이용하여 배열번호를 설정합니다. 그 배열번호를 이용하여 아래와 같이 출력합니다. */
document.write(day_msg[random_num]);



-->
</script>



<br><br>
</fieldset>
</body>
</html>


Posted by SB패밀리

[javascript] 팝업창 생성하기



팝업창 생성하기

- open() : window객체에 포함된 메서드로 새로운 창을 열기위해 사용됩니다.
|형식| open(해당URL, 이름, 속성)
|예제| open("http://www.naver.com","pop1","width=300 height=200")
directories : 연결바의 유무를 설정합니다.
location : 주소창의 유무를 설정합니다.
menubar : 메뉴바의 유무를 설정합니다.
scrollbars : 스크롤바의 유무를 설정합니다.
status : 상태바의 유무를 설정합니다.
toolbar : 툴바의 유무를 설정합니다.
resizable : 브라우저 크기조절의 가능유무를 설정합니다.
top : 창의 x좌표를 설정합니다.
left : 창의 y좌표를 설정합니다.
width : 창의 너비를 설정합니다.
height : 창의 높이를 설정합니다.
fullscreen : 창을 브라우저 전체에 나타나게 할 것인지를 설정합니다.
channelmode : 창을 채널모드로 보여줍니다.

- close() : window객체에 포함된 메서드로 창을 닫을 때 사용됩니다.





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



<html>
<body>
<script language="javascript">
<!--



function open_win(url) {
window.open(url,"open_blog","top=50 left=50 width=200 height=200")
}



function auto_win() {
window.open("pop.htm","new_win","top=70 left=70 width=200 height=100")
}



-->
</script>



<body onload="javascript:auto_win()">
<a href="javascript:open_win('http://section.blog.naver.com')">
다음을 클릭하면 팝업창이 나타납니다.
</a>
</body>
</html>


Posted by SB패밀리

[javascript] iframe 활용하기






iframe 활용하기

* document.URL : 링크주소를 설정합니다.


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



page_win.htm  메인프레임을 말합니다.

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



<html>
<script language="JavaScript">
<!--



function site_move() {
var myindex = frm1.mysel.selectedIndex;
var myvalue = frm1.mysel.options[myindex].value;
/* 링크주소를 설정함으로써 iframe태그의 src속성값을 설정합니다. */
cwindow.document.URL = myvalue;
}



function link_site_move(site_name) {
cwindow.document.URL = site_name;
}



-->
</script>



<body>



<form name="frm1">
# 리스트 : 
<select name="mysel" onchange="site_move()">
<option value="con1.htm">제 1편 흙으로부터</option>
<option value="con2.htm">제 2편 신비의 자기</option>
</select>
<br><br>
<a href="javascript:link_site_move('con1.htm');">[1편]</a>
<a href="javascript:link_site_move('con2.htm');">[2편]</a>
<br><br>
<iframe name="cwindow" src="con1.htm" width=300 height=200 frameborder=1 scrolling="no">
</iframe>


</form>



</body>
</html>



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



con1.htm  프레임내에 출력할 첫번째 문서입니다.

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



<html>
<body>

<pre><b>제1편 흙으로부터
Origins : the birth of china</b>

지금으로부터 만 년 전, 

고대 사람들은 최초로 흙에 불을 가해 저장용기를 만들었다. 

그것이 인류 최초의 그릇, 토기였고, 이것은 지역 간의 교류가 발생하지 않았던 시대 

놀랍게도 유라시아와 아메리카 대륙 전역에서 나타난다. 

그러나 이로부터 자기가 탄생한 곳은 중국이 유일했다. 

모두가 동일하게 출발했지만, 중국만이 도달할 수 있었던 자기의 탄생. 

그 엇갈린 역사적 운명의 배경을 밝힌다.
</pre>

</body>
</html>



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



con2.htm  보여줄 두번째 문서입니다.

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



<html>
<body>
<pre>
<b>제2편 신비의 자기
Destiny : porcelain, the mystery</b>

중국에서 자기문화를 꽃피운 것은 宋나라였다. 

문화적 소양이 탁월했던 황제와 사대부의 지원 아래 

청자는 우과청천, 즉 비 갠 하늘빛의 경지에 이른다. 

중국이 독점했던 자기기술이 최초로 전파된 곳은 한반도. 

12C 중국에서도 고려청자의 비색은 최상품으로 평가받는다. 

기술적, 미적으로 완성된 청자. 

그것은 동남아시아, 서아시아, 아프리카 대륙까지 

신비의 그릇으로 받아들여지면서 다양한 에피소드를 역사에 남겼다. 

비단이 육지의 실크로드를 열었듯 바다의 차이나 루트를 열었던 

중국자기. 그 교역 루트를 되짚어 본다. 
</body>
</html>


Posted by SB패밀리

[php/html] 제로보드 회원가입시 가입축하메일 발송하기


2004.11.25


간단하게 가입했을때 축하메일 보내기를 만들어봤습니다.

member_join_ok.php 파일의 가장 마지막 부분에 이렇게 삽입합니다.

<?

     $mrjh = "From: MRJH <mail@mrjh.net>\r\n"; //본인에게 맞게 수정
     // $name은 member_join.php의 가입폼에서 회원이 이름을 입력하면
     // 자동으로 변경되어서 메일이 발송됨
     $subject="$name"." 님의 회원가입을 축하드립니다 !! [자동발송메일]"; 
     $body="축하내용"; // 내용을 적어주세용..
     mail($email , $subject , $body, $mrjh); // 메일보내기 함수


?>
<script>
        alert("회원가입이 정상적으로 처리 되었습니다\n\n회원이 되신것을 진심으로 축하드립니다.");
        opener.window.history.go(0);
        window.close();
</script>


Posted by SB패밀리

[php/html] 게시물 메일보내기 - 간단한 소스(레이어사용)


2004.11.25


제로보드에서도 사용할 수 있는 게시물 메일 보내기 입니다.
레이어를 이용해서 간단히 보낼 수 있습니다..

View.php 에서 메일보내기

커뮤너티나 큰 웹사이트 다니다 보면.. "현재 보고있는 글을 이메일로 보내기"란
기능이 많이 있더라구요.. 저도 꼭 이걸 구현해보고 싶어서 만들어봤습니다.

현재 제 홈페이지에서 사용중이구요.
제 홈페이지 아무게시판이나 클릭해서 글 내용보면 밑부분에 이메일로 보내기 기능이있습니다.

뭐 그리 어렵지는 않습니다.
우선 view.php파일에 약간만 수정해주면 됩니다.
원리는 레이어와 메일보내기 함수를 이용한것입니다.

우선 view.php파일의 가장 윗부분에 레이어에 해당하는 자바스크립트를 넣어줘야 합니다.

================================================================================
<script language="JavaScript">
<!--
function na_hide_layer(lname)
{
  if (document.layers)
    document.layers[lname].visibility = 'hide'
  if(document.all)
    document.all(lname).style.visibility = 'hidden'
}

function na_show_layer(lname)
{
if (lname == '') return;

var layer  = document.all ? document.all(lname).style : document.layers[lname];
var show  = document.all ? 'visible' : 'show';
var hide  = document.all ? 'hidden' : 'hide';

if (na_show_layer.arguments.length <= 1)
  layer.visibility = show;
else
  layer.visibility = (na_show_layer.arguments[1] == 0 ? show : hide);
}

// -->
</script>
==================================================================================

그리고 글쓴사람.. 날짜.. 내용등등.. 이렇게 쭉 따라내려오겠죠.
그리고 마지막 부분에.. "현재글 이메일로 보내기" 라는 메뉴를 하나 만듭니다.

<a href="#" OnClick="na_show_layer('layer2');">현재글을 이메일로 보내기</a>

그리고 밑에 레이어에 해당하는 부분을 작성해주면 됩니다.
레이어 속에는 메일함수가 들어가야 하겠죠.


<div id="layer2" style="width:250px; height:10px; position:absolute; left:400px; top:460px; z-index:1; visibility:hidden;">
<!-- 메일 보내기 폼 부분 -->
<table border="0" cellpadding=0 cellspacing=0 width="100%">
<tr>
<td align=left bgcolor=#3366cc>
<font color=white>이메일로 보내기</font>
</td>
<td align=right bgcolor=#3366cc>
<a href="#none" OnClick="na_hide_layer('layer2');">
<img src=<?=$dir?>/btn_search_cancel.gif border=0 alt='취소 버튼'></a>
</td>
</tr>
<tr>
<td bgcolor=white height=10></td>
<td bgcolor=white height=10></td>
</tr>
<tr>
<td bgcolor=white align=center>
<form method='post'>
<input type="hidden" name="mode" value="up">
<font size=2 face=tahoma color=black><b>e-mail : </b></font><input type="text" name="tomail" maxlength="30">
<input type="submit" value="보내기"  class=input>
</form>
</td>
<td bgcolor=white>
</td>
</tr>
</table>
</div>
<!-- 폼 끝 -->
<?
     if ($mode = up) {
         $mh = "From: MRJH <mail@mrjh.net>\r\n";
             $mh .= "Content-Type: text/html; charset=euc-kr\r\n";
             $title="Mr. JH에서 전송한 내용입니다.";
             $body="<table border=0 width=70%>
                          <tr>
                           <td width=100% align=left>
                           <font size=2 face=tahoma><b> $subject </b></font>
                           <hr size=1 color=#990000 width=100%>
                           </td>
                          </tr>
                           <td width=100%>
                            $memo
                           </td>
                          </tr>
                          <tr>
                           <td width=100% align=right>
                            <hr size=1 color=#990000 width=100%>
                            <font size=4 face=tahoma color=#990000><b>Mr. JH</b></font>
                           </td>
                          </tr>
                         </table>";

      mail($tomail , $title , $body, $mh);

     }
?>


전체적인 구조는 이러합니다. 메일함수만 잘 이용하면 되겠죠.
메일 함수에서.. 제로보드에서 입력한 제목과 내용을 그대로 받아와서 보내기면 하면되죠.
근데 HTML이 되게 해야지.. 그냥 내용만 보내면.. 
<br> 이란 태그가 자꾸 붙어서 나옵니다.

전체 소스를 보실분은 http://mrjh.net/etc/source/view_source.php 여길 클릭하면
제가 제 view.php 파일의 전체소스를 올려뒀습니다.


Posted by SB패밀리