사무실에서 잘 사용하던 NIZ PLUM 87 Pro 45g 모델이 갑자기 윈쪽 윈도우키 불량이 발생했다.

다시 확인해보니 불량이 아닌 Fn + Win로 인한 버튼 잠금이었음을 확인.. ㅜㅜ

 ( 이전 45g 모델 사용기 : https://nonaka.tistory.com/8 )

타오바오 직구 모델이라 A/S 도 불가한 상황 


이럴 거면 작년 말에 할인 할 때 사둘걸 하는 후회가 있지만..

결국 이번 기회에 35g 모델을 다시 구매 시도하였다.


이전에 구매한 판매자는 이제 판매하지 않는 것 같고 평이 다른 판매자에게 구매 시도

하지만 가격은 이전 가격보다 비싼 665 위안 ㅠ



주문은 15일 (화) 저녁에 주문하고 배대지는 이전에는 이하넥스를 통해서 했지만 이번에는 포스트팀을 이용해서 21일 (월) 에 수령했다.

총 금액은 126,500원 정도


 - 1/15 : 타오바오 주문 ( 665 위안, 110,000원 정도 )

 - 1/17 : 포스트팀 배대지 도착 후 배송비 결제 ( 16,500원 )

 - 1/19 : 김포공항 도착

 - 1/21 : 수령 완료


이번은 저번과 달리 제대로 35g 모델로 받았고 상자를 열어보니 저번에 산 것에 비해 몇 가지 기능이 추가된 버전 같아 보임.

MAC 전환 Fn 키, 밝기 조절 Fn 키 등이 추가된 것 같음.



현재까지 사용하며 45g와 35g의 차이점

[ 차이점 ]

 - 당연히 45g보다 키압이 낮아 타이핑 시 손가락 부담이 덜함

 - 10g 차이가 크지는 않아서 많이 어색하지 않음

 - 지금 다시 구매를 한다면 아직까진 35g 모델 구매할 듯


이전에 작성한 장/단점에서 단점 하나 추가하자면 A/S 불가함이 추가될 듯... ㅜ



[ 장점 ]

 - 블루투스 4.0 지원 ( 아직까진 딱히 블루투스 딜레이를 느낀 적은 없음 )

 - 총 3개의 블루투스 기기 연결 저장 가능 ( Fn + 숫자 1/2/3 )

 - 체리 적축보다 소음이 적음

 - 적축과 동일한 45g이지만 조금 키압이 더 낮은 느낌 ( 타이핑에 힘이 적게 든다. )

 - 맥과 호환되며 맥용 option, command 키캡을 따로 제공함

 - 심플한 디자인으로 나는 만족함 마음에 들지 않을 경우 체리용 키캡 호환 가능 ( 저렴하게 키캡질 가능 )

 - 타오바오 직구 시 저렴한 가격


[ 단점 ]

 - 키압이 너무 낮아 회사에서 잠시 졸면 나도 모르게 "D" 버튼을 계속 눌러서 vi 사용 시 미친듯이 line을 삭제하고 있음..

 - 한번 낮은 키압에 적응하니 이제 더 높은 키압은 손가락이 아픔

 - A/S 불가... 

 - 설명서가 중국어 버전만 제공됨...



왼쪽 윈도우 키 고장난 제품은 회사 후배에게 잠시 임대 중인데 조만간 회사 후배도 지를 것 같음...

키 고장이 아닌 Fn + win 잠금으로 인한 눌림이 안된 것을 확인... 45g 제품은 집에서 현재 사용중

( NIZ PLUM 87 pro Fn 키 정리 바로 가기 )


CodeIgniter의 상수는 application/config/constants.php에 정의


vi application/config/constants.php

define('FOPEN_READ', 'rb');



view, controller, model에서 아래와 같이 바로 사용할 수 있다.


<body>
    <div id="container">

        <p>FOPEN_READ : <?php echo FOPEN_READ;?></p>     </div> </body>



'WEB개발 > CodeIgniter' 카테고리의 다른 글

[CodeIgniter] 초기 접속 위치 변경  (0) 2019.01.04
[CodeIgniter] 초기 설치 방법  (0) 2019.01.04
    function execute( $url_segment, $data, $excute_type, $is_info_log = false ) {
		$curl = curl_init();

		curl_setopt($curl, CURLOPT_URL, .$url_segment);
                // $excute_type = 'POST' or 'GET' 
		curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $excute_type);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_NOSIGNAL, 1);
		// curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
		curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
		curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3);
		//curl_setopt($curl, CURLOPT_TIMEOUT, CUR_TIMEOUT);

		/*curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_SSLVERSION,3);
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
		*/

		$result = curl_exec($curl);
		curl_close( $curl );
		log_message('error', 'url:'.$url_segment.', data:'. json_encode($data).' result1:'.$result );

		$obj = json_decode( $result, true );
		$log_level = 'error';
		if( $is_info_log ) {
			$log_level = 'info';
		}
		log_message($log_level, 'url:'.$url_segment.', data:'. json_encode($data).' result:'.$result );
		return $obj;
	}
    function execute_socket( $url_segment, $port, $data, $is_info_log = false ) {
		# SOL_TCP =0 , SOL_UDP = 1
		$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

		if ($sock === false) {
			$obj = "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
			return $obj;
		}

		if (($result = (socket_connect($sock, $url_segment, $port))) === false) {
			$obj = "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($sock)) . "\n";
			return $obj;
		} else {
			socket_write($sock, json_encode($data));
			$obj = socket_read($sock, 1024);
			socket_close($sock);
			
			$log_level = 'error';
			if( $is_info_log ) {
				$log_level = 'info';
			}

			log_message($log_level, 'url:'.$url_segment.', port:'.$port.', data:'. json_encode($data).' result:'.$obj );
			return $obj;
		}
	}
    list ($table_list, $prd_total) = $this->_make_item($list);

    function _make_item ($list) {
        $ret = array();
        $prd_total = 0;
        foreach ($list as $idx=>$item) {
            $_item['PRD_DATE'] = $item->PRD_DATE;
            if ( isset ($item->SEQ)) {
                $_item['SEQ'] = $item->SEQ;
            } else {
                $_item['SEQ'] = '-';
            }
            $_item['PRD_QTY'] = $item->PRD_QTY;
            $_item['LOSS_QTY'] = $item->LOSS_QTY;
            $suyul = round($_item['PRD_QTY'] / ($_item['PRD_QTY'] + $_item['LOSS_QTY']) * 100, 2);
            $_item['SUYUL'] = round($suyul, 2);
            array_push($ret, $_item );
            $prd_total += $item->PRD_QTY;
        }
        return array($ret, $prd_total);
    }

'WEB개발 > php' 카테고리의 다른 글

[PHP] 파일의 내용이랑 파일 수정 시간 가져오기  (0) 2019.02.27
[php] curl POST/GET 처리 예제  (0) 2019.01.07
[php] socket client 처리  (0) 2019.01.07
[php] array 관련 함수  (0) 2019.01.07
[php] foreach 반복문  (0) 2019.01.07

배열 함수 목록

  • array_change_key_case — 배열 안의 모든 키를 변경
  • array_chunk — 배열을 조각으로 나누기
  • array_column — Return the values from a single column in the input array
  • array_combine — 키를 위한 배열과 값을 위한 배열을 사용하여 배열을 생성
  • array_count_values — 배열 값의 수를 셉니다
  • array_diff_assoc — 추가적인 인덱스 확인과 함께 배열 차이를 계산
  • array_diff_key — Computes the difference of arrays using keys for comparison
  • array_diff_uassoc — Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_diff_ukey — Computes the difference of arrays using a callback function on the keys for comparison
  • array_diff — 배열 차이를 계산
  • array_fill_keys — Fill an array with values, specifying keys
  • array_fill — 값으로 배열 채우기
  • array_filter — 콜백 함수를 사용하여 배열 원소를 필터
  • array_flip — 배열 안의 모든 키를 키의 연관 값과 교체
  • array_intersect_assoc — 인덱스 검사과 함께 배열의 교집합을 계산
  • array_intersect_key — Computes the intersection of arrays using keys for comparison
  • array_intersect_uassoc — Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_intersect_ukey — Computes the intersection of arrays using a callback function on the keys for comparison
  • array_intersect — 배열의 교집합을 계산
  • array_key_exists — 주어진 키와 인덱스가 배열에 존재하는지 확인
  • array_keys — 배열의 모든 키를 반환
  • array_map — Applies the callback to the elements of the given arrays
  • array_merge_recursive — 두개 이상의 배열을 재귀적으로 병합
  • array_merge — 하나 이상의 배열을 병합
  • array_multisort — 여러 배열이나 다차원 배열 정렬
  • array_pad — 지정한 길이만큼 특정 값으로 배열 채우기
  • array_pop — 배열의 마지막 원소 빼내기
  • array_product — Calculate the product of values in an array
  • array_push — 배열의 끝에 하나 이상의 원소를 넣는다
  • array_rand — 배열에서 하나 이상의 임의 원소를 가져옴
  • array_reduce — 콜백 함수를 사용하여 배열을 반복적으로 단일 값으로 축소
  • array_replace_recursive — Replaces elements from passed arrays into the first array recursively
  • array_replace — Replaces elements from passed arrays into the first array
  • array_reverse — 원소를 역순으로 가지는 배열을 반환
  • array_search — 주어진 값으로 배열을 검색하여 성공시 해당하는 키를 반환
  • array_shift — 배열의 앞에 있는 원소를 시프트
  • array_slice — 배열의 일부를 추출
  • array_splice — 배열의 일부를 삭제하고, 위치를 다른 내용으로 대체
  • array_sum — 배열 값들의 합을 계산
  • array_udiff_assoc — Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc — Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_udiff — 데이터 비교 콜백함수를 사용하여 배열간의 차이를 계산
  • array_uintersect_assoc — Computes the intersection of arrays with additional index check, compares data by a callback function
  • array_uintersect_uassoc — Computes the intersection of arrays with additional index check, compares data and indexes by separate callback functions
  • array_uintersect — Computes the intersection of arrays, compares data by a callback function
  • array_unique — 배열에서 중복된 값을 제거
  • array_unshift — 배열의 앞에 하나 이상의 원소를 첨가
  • array_values — 배열의 모든 값을 반환
  • array_walk_recursive — Apply a user function recursively to every member of an array
  • array_walk — 배열의 원소에 대해서 특정 함수를 적용
  • array — 배열 생성
  • arsort — 배열을 내림차순 정렬하고 인덱스의 상관관계를 유지
  • asort — 배열을 정렬하고 인덱스 상관 관계를 유지
  • compact — 변수와 값을 가지는 배열 생성
  • count — 배열의 모든 원소나, 객체의 프로퍼티 수를 셉니다
  • current — 배열의 현재 원소를 반환
  • each — 배열에서 현재 키와 쌍을 반환하고 배열 커서를 전진
  • end — 배열 내부 포인터가 마지막 원소를 가리키게 설정
  • extract — 배열에서 현재 심볼 테이블로 변수를 입력
  • in_array — 값이 배열 안에 존재하는지 확인
  • key_exists — 별칭: array_key_exists
  • key — 배열에서 키를 가져옵니다
  • krsort — 키에 의한 배열 역순 정렬
  • ksort — 키에 의한 배열 정렬
  • list — 배열처럼 변수에 할당
  • natcasesort — "자연순" 알고리즘으로 대소문자를 구분하지 않고 배열 정렬
  • natsort — "자연순" 알고리즘으로 배열 정렬
  • next — 배열의 내부 배열 포인터를 전진
  • pos — 별칭: current
  • prev — 내부 배열 포인터를 후진
  • range — 원소의 범위를 가지는 배열 생성
  • reset — 배열의 내부 포인터를 원소로 설정
  • rsort — 역순으로 배열 정렬
  • shuffle — 배열을 섞습니다
  • sizeof — 별칭: count
  • sort — 배열 정렬
  • uasort — 사용자 정의 비교 함수로 배열을 정렬하고 인덱스 연관성을 유지
  • uksort — 사용자 정의 비교 함수를 사용하여 키에 의한 배열 정렬
  • usort — 사용자 정의 비교 함수를 사용하여 값에 의한 배열 정렬


출처 : http://php.net/manual/kr/book.array.php

$ret = array(); # $arr = array( # array( "CUSTOM" => "1" , "CUSTNM" => "a" ) , # array( "CUSTOM" => "2" , "CUSTNM" => "b") #) foreach( $arr as $idx => $row ) { $ret[$row->CUSTOM] = $row->CUSTNM; } # $ret = array( # array("1" => "a"), # array("2" => "b") #) return $ret;


# datatables table name은 datatables라 가정

# 전체 Table 내용
var data = datatables.rows().data().toArray();
# 현재 보이는 내용
var data = datatables.rows( { searched: true }).data().toArray(); 
# 선택된 내용
var data = datatables.rows( { selected: true }).data().toArray(); 

# 0 번 column의 값만 array로 만들기
var data = datatables.column(0).data().toArray();

+ Recent posts