본문 바로가기

[PHP] fsockopen을 이용해 php코드로 POST 요청 보내기 가끔가다 php단에서 POST요청을 보내주어야 하는 상황이 생긴다. 그럴 때 소켓통신을 이용해서 POST요청을 만들어 보내는 코드 $header를 출력하면 response 헤더의 내용이 나오고 $content를 출력하면 POST요청을 보낸 페이지(http://yourDomain/test.php)의 응답이 출력된다. 더보기
[iOS] @property 값들의 차이 atomic, nonatomic 등등 ARC 환경에서의 설정값들- atomic멀티 쓰레드 환경에서 여러 쓰레드가 경쟁적으로 접근하는 프로퍼티를 사용할때 설정하는 값이다.한 쓰레드가 사용중이면 다른 쓰레드가 접근하지 못하도록 lock을 걸어 값의 변경을 막기위해 사용한다. 즉 Thread Safe 를 위한 설정값 - nonatomic위의 atomic을 사용해야 하는 경우가 아닐때 사용한다. -strong강한 참조retain과 동일하다고 보면 된다. -weak약한 참조assign 과 비슷하다고 한다.weak의 경우 객체가 없을시 자동으로 포인터에 nil이 대입된다.여러군데에서 사용되는 객체의 경우 strong으로 해야 한다. weak으로 하면 어디서든 포인터가 nil이 될 수 있기 때문. * 밑의 설정값들은 ARC를 사용할땐 사용해선 안된다. .. 더보기
[jQuery] bind(), delegate(), live()를 on()으로 대체하기 live()는 jQuery 1.9.x 부터 deprecated 되었고...이전부터 bind(), delegate(), live() 메소드를 on()으로 대체하여 사용하는걸 계속 권장해 왔으니 on()으로 어떻게 세 함수를 대체 하는지 간단하게 알아본다 // Bind$( "#members li a" ).on( "click", function( e ) {} ); $( "#members li a" ).bind( "click", function( e ) {} ); // Live$( document ).on( "click", "#members li a", function( e ) {} ); $( "#members li a" ).live( "click", function( e ) {} ); // Delegate$(.. 더보기
[javascript] 자바스크립트 이벤트 버블링(Bubbling)과 jQuery를 이용한 예제. 이벤트 버블링 이란이벤트가 발생한 엘리먼트에 핸들러가 할당되었는지 확인하고 할당되었다면 핸들러를 호출한다.그 이후 해당 엘리먼트의 부모부터 시작하여 DOM 트리의 루트까지 하나하나 올라가며 동일한 이벤트 타입의 핸들러가 할당되어 있는지 확인하고, 할당되어 있다면 이를 실행한다.이 이벤트 핸들링이 마치 샴페일 플루투의 거품처럼 위로 퍼진다 하여 이벤트 버블링(Bubbling)이라 한다. 이 이벤트 버블링을 명확하게 이해하는데엔 DOM 레벨 2의 이벤트 흐름을 살펴보는 것이 도움이 된다.그 흐름을 그려보면 다음과 같다. 위 그림에서 (회색상자)에서 이벤트가 발생하면 그 이벤트는 우선 브라우저의 Document 객체로 전달되어 이벤트가 발생된 객체로 전달된다. 이때 부모 객체까지 전달되는 것을 캡처링(capt.. 더보기
[PHP] UTF-8 문자열 자르기 (멀티바이트 문자열 자르기) PHP 를 시작한지 얼마안되었을때. substr()로 문자열을 잘라보니 문자열이 자주 깨졌다.알고보니 substr()은 2byte로 문자열을 자르기 때문에 UTF-8 인코딩을 쓸 경우 3byte라 함수가 제대로 동작을 한했던 것. 방법이 없나 구글링을 해보니UTF-8 한글 자르기같은 사람들이 직접 만든 함수들이 검색되었다. '대체 왜 php는 2byte 문자밖에 지원을 안하는거지?' 라고 생각하며 저런 함수들을 쓰던중우연히 레퍼런스를 뒤지다 찾게 되었는데... PHP 4.0.6 부터 Multibyte String Functions 해서 이미 지원하고 있었다 -_-;;;;(레퍼런스를 꼼꼼히 살펴보지 않은 실수) substr과 사용법은 사실상 다를바 없고다음 과 같이mb_substr($str, 0, [1],.. 더보기
[PHP] include, require, include_once, require_once 의 차이 include()해당 문장에 도달해야만 읽어오며,해당 문장을 만날 때 마다 지정한 파일을 포함, 매번 재평가 되어 재실행된다.조건문 등으로 필요한 경우에만 파일을 포함되도록 할 수 있다. require()C의 #include 나 JSP include 지시어 처럼 무조건 파일을 포함한다.(하나의 파일과 같다) include_once(), require_once()한번만 해당 파일을 포함한다.중복되어 include 및 require 되는것을 방지하는 문. 조건문 안에서의 include, require 차이 예제Exampleif (조건) require(...)if 문의 참 거짓 여부와 상관없이 무조건 포함. if (조건) include(..)if 문이 참일때만 포함.단, include()는 특별한 구조이므로,.. 더보기
용어 이해가 정확해야 개발이 편하다 책을 보건, 다른사람에게 이야기를 듣던 용어를 명확히 이해해야 뭔 말을 하는지 빠르게 알 수 있으니 개발이 편하단 생각이 듭니다.그런고로 자꾸 헛갈리는 용어들에 대한 '내 나름대로'의 정의를 정리하는 포스팅. 덧글로 제안해주시면 매우 감사합니다. 커널 - 프로그램과 장치간의 인터페이스, 프로세스 스케줄링, 시스템의 여러가지를 제어하는 코드. 시스템상에서 동작하는 프로세스가 아님. 메모리에 상주하면서 모든 프로세스가 접근하는 루틴의 집합. 드라이빙(driving) 테이블(outer table) - 조인시 기준이 되는 테이블드리븐(driven) 테이블(inner table) - 조인시 비교대상 테이블 ㅇㅇ 더보기
[linux] 우분투에 JDK + TOMCAT 설치 간단 정리 *Ubuntu 12.04 LTS 서버 사용 1. 오라클에 들어가서 jdk-xxxx-linux-x64.tar.gz 다운 2. 원하는 폴더에 압축을 푼다 (여기서는 /usr/java)tar -xvf jdk-xxxx-linux-x64.tar.gz 3. alternative 업데이트$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdkx.x.x_xx/bin/java" 1$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdkx.x.x_xx/bin/javac" 1$ sudo update-alternatives --install "/usr/bin/javaws.. 더보기
이상한 덧글이 막 달리네;;; 왠 노래가사를 의미없이 덧글 다는 인간들이 있어서덧글을 로그인사용자로 제한을 두었습니다. 이 블로그에 그런인간들이 나타날 줄이야;;; 나름 글이 많이 읽히나? -_-;;; 더보기
[linux] cron을 이용한 예약 작업 (crontab) * Ubuntu 12.04 LTS 서버를 기준으로 작성되었습니다. cron이란 리눅스에서 특정한 시간에 반복된 작업을 하기위한 것 이다.cron은 crontab 이란 명령어를 통해서 등록, 삭제를 하게 되는데콘솔창에서 $ crontab -e 을 치면 다음과 같은 화면을 볼 수 있다.# 위에 써있는 설명 생략# m h dom mon dow command화면이 뜨기전에 보통은 어떤 에디터로 편집할것인지 묻는게 나오기도 하는데 본인은 그냥 vi에디터를 선택하였다.위 화면에서 이제 주기적으로 실행할명령을 둘재줄에 보이는 형태대로 추가 해주면 된다.m은 분, h는 시간, dom 은일, mon은 월 dow는 주 를 뜻한다. command는 실행할 명령.01 04 * * * /usr/bin/somedirectory/.. 더보기
[linux] 리눅스 관리시 자주 쓰이는 명령어 개인적 정리 $ ls [옵션] 현재 디렉토리 또는 대상 디렉토리의 파일과 디렉토리의 목록을 출력하는 명령-a hidden파일 포함해 모든 파일 출력-d 디렉토리만 출력-h 읽기 편한 형태로 출력-i 파일명 왼쪽에 inode 번호를 함께 출력-l 디렉토리, 파일에 대한 자세한 정보를 출력-r 정렬 순서를 역순으로-t 최근 수정된 파일부터 출력-F 파일의 유형에 따라 구분기호를 함께 출력 (*:실행파일, @:심볼릭 링크, |:FIFO, =:소켓 /:디렉토리)-S 크기가 큰 파일부터 출력-R 지정된 디렉토리와 하위 디렉토리까지 출력 $ ls -l 에 대한 화면 설명① 파일유형 ② 파일 소유자 퍼미션③ 파일 소유 그룹 퍼미션④ 나머지 사용자 퍼미션⑤ 하드링크 수⑥ 파일 소유자⑦ 파일 소유 그룹⑧ 파일 크기⑨ 파일 생성 및 .. 더보기
[linux] RunLevel 과 리눅스 부팅시 스크립트 자동실행 1. 리눅스 RunLevel?간단하게 윈도우의 기본 부팅, 안전모드로 부팅 등등과 동일한 개념이라 생각하면 된다. RunLevel 0 : 시스템 종료(halt)RunLevel 1 : 단일 사용자, 싱글 모드RunLevel 2 : NFS(Network File System)를 지원하지 않는 다중 사용자 모드RunLevel 3 : 모든 기능을 포함한 다중 사용자 모드(X윈도우 지원안함)RunLevel 4 : 사용되지 않는 실행모드(사용자가 직접정의하여 사용)RunLevel 5 : X윈도우 부팅, GUI환경RunLevel 6 : 시스템 재부팅 런 레벨 전환$ init 3 기본 런 레벨 설정/etc/inittab 를 열어서# Default runlevel. The runlevels used by RHS are:.. 더보기
[Linux] Ubuntu 업데이트 서버 연결 에러 (apt-get update 에러) Q : 상황 사용 버전 : Ubuntu 12.04.2 LTS 서버윈도우 상에서 VMPlayer를 이용하여 우분투를 설치하였고 네트워크는 NAT 외부접속을 위한 NAT Setting을 마친 상태이다.apt-get install을 통한 ssh 등은 잘 설치되고, APM설치로 외부에서 서버 접속시 웹 페이지도 잘 뜨는 상황.즉 인터넷 연결은 문제가 없다고 보여지는 상황. 그러나 apt-get update를 할경우 서버 연결에 실패한다. 업데이트 서버의 주소를 찾지 못하는 에러가 계속 발생.Ex> 다음과 같은 형태의 에러메세지가 계속 출력 됨Err http://security.ubuntu.com precise-security InRelease Err http://kr.archive.ubuntu.com preci.. 더보기
[Linux] BitNami Stack을 이용한 APM 환경 설정 + phpmyadmin APM, apahce, php, mysql을 한번에 설치해주는 툴은 굉장히 많습니다. 그중에서 bitnami에서 제공하는 툴을 이용하여 설치하는 방법입니다.사실 방법이랄 것도 딱히 없고 굉장히 쉽습니다. 리눅스는 Ubuntu Server를 사용한다고 가정 하겠습니다. 1. www.bitnami.com 사이트에서 LAMP stack 파일을 다운 받습니다.LAMP 는 linux, apache, mysql, php 의 앞글자http://bitnami.com/stack/lamp 2. 설치 합니다. bitnami-lampstack-xxxxxxx.run 파일이 있는 폴더로 이동합니다.프롬프트에서 다음과 같이 파일의 권한을 주고, 바로 실행합니다. $ chmod 755 bitnami-lampstack-xxxxx.ru.. 더보기
[Linux] VMplayer 에서 Ubuntu 설치 후 SSH 접속하기 * VM플레이어에 Ubuntu 가 설치되어 있음을 가정한다.* VM플레이어 버전은 4.x 이하여야 한다. 5.x이상부터는 현 방법으로는 불가능 하다고 보여진다.(중요한 파일인 vmnetcfg.exe를 못찾겠음) 1. sudo apt-get install ssh 로 ssh 설치 2. VM플레이서 설치파일을 찾는다.찾아서 다음의 명령어를 이용하여 압축을 푼다.VMware-player-4.x.x-어쩌구.exe /e C://\압축풀폴더 3. 압축을 푼 폴더에서 network.cap 를 찾아 이를 다시 압축을 풀고 그 안에서 vmnetcfg.exe 를 찾아서 이 파일을 VM플레이어가 설치된 폴더로 옮긴다(헉헉) 4. vmnetcfg.exe 실행. 5. 나타난 목록중에 Type이 NAT인 걸 선택 (보통 이름이 v.. 더보기