다른 시스템간 공유가 가능한 Mac 전용 메모 어플 Notational Velocity While이 에 작성. 2,480번 읽힘.
Windows 를 쓸떄와 마찬가지로 Mac 을 쓸때 역시 평소에 메모장이나 텍스트 에디터 프로그램으로 간단한 메모를 많이 하고 항상 활용하는데 이 메모들을 한곳에 정리하기란 쉽지 않다. 대부분 바탕화면에 지저분하게 txt 파일이 굴러다니는 경우가 많다.
요즘엔 점점 만져야하는 컴퓨터가 늘어나면서 필요한 메모들을 저장해둘 메모장이 필요해졌다. 찾아보니 나름 그런 프로그램들이 많이 있었고, 아주 간단한 몇개를 찾았다. 간단한 프로그램은 대부분은 작동 방식이 아래와 같다.
- 여러 txt 파일들을 Import 하여 리스트로 관리.
- Export 하면 역시 똑같은 형식으로 뱉어줌. (rtf 등 선택 가능)
- 제목을 지정할 수 있으며 제목은 보통 파일명.
- 폰트 설정 가능.
- 탭 형식으로 되어 있어 리스트에서 해당 제목을 클릭시 내용 수정 가능.
Notational Velocity는 위 기능들에 아래의 멋진 기능들이 더 추가되어 있다.
- Simplenoteapp.com 을 통해 여러 컴퓨터와 Sync 가능
- 문서들에 암호 설정 가능
- 실제 파일들과 내용이 항상 동기화됨
이 어플을 Dropbox 와 연결해서 쓰면 어디서든 항상 동기화가 되는 메모장을 쓸 수 있다.
윈도우용은 비슷한 프로그램으로 ResophNotes가 있다.
PHP 5.4.0 정식버전 릴리즈. PHP 5.4에서 바뀌는 점. While이 에 작성. 1,960번 읽힘.
드디어 아주 많은 기능들이 추가된 PHP 5.4.0의 정식버전이 릴리즈 되었다. 기존에는 RC 버전만 배포되고 있었다.
PHP 공식 홈페이지에서는 5.4 버전의 릴리즈가 기존 5.1~5.3 버전까지 업데이트에 비해서 상당히 큰 스케일이라 한다.
Deprecated features in PHP 5.4.x
mysql_list_dbs()
get_magic_quotes_gpc() -> 항상 false 를 반환
get_magic_quotes_runtime() -> 항상 false 를 반환
set_magic_quotes_runtime() -> 에러
mcrypt_generic_end()
특히 magic_quote 를 감지하는 함수가 없어지는 것은 이제 더이상 magic_quote 자체를 쓰지 말라는 소리같다.
완전히 없어진 함수
define_syslog_variables()
import_request_variables()
session_is_registered(), session_register() and session_unregister()
mysqli_bind_param(), mysqli_bind_result(), mysqli_client_encoding(), mysqli_fetch(), mysqli_param_count(), mysqli_get_metadata(), mysqli_send_long_data(), mysqli::client_encoding(), mysqli_stmt::stmt()
새 기능
OOP 기능인 Traits, 짧은 배열 문법, 개발용 빌트인 웹서버가 있다.
짧은 배열
제일 눈에 보이는 것은 배열을 짧게 표현할 수 있는 기능이다. 첨에는 json 정도를 기대했지만 그정도는 아니고 아래와 같이 사용 할 수 있다.
$var = array( 1 => "가나다", 2 => "라마바", 3 => "사아자" );
위와 같은 코드를
$var = [ 1 => "가나다", 2 => "라마바", 3 => "사아자" ];
이렇게 줄일 수 있다. 단지 array 라는 5글자가 사라진 것 뿐이긴 하지만 시각적으로 큰 효과를 보인다.
$object->method()[0]->otherMethod(); $object = new MyClass->method();
추가적으로 위와 같은 문법도 쓸 수 있게 되었다.
Traits
trait Hello { public function sayHello() { echo 'Hello '; } } trait World { public function sayWorld() { echo ' World'; } } class MyHelloWorld { use Hello, World; public function sayExclamationMark() { echo '!'; } }
위와 같이 “형에 상관 없는 상속”을 할 수 있다.
빌트인 웹서버
$ cd ~/public_html $ php -S localhost:8000 -t ./ PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit. [Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read [Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read [Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read [Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read [Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read
위와 같이 사용 할 수 있다.
참고로 php_sapi_name() 함수를 호출하여 “cli-server”라는 글이 보이면 위의 코드로 실행을 했다는 것을 알 수 있다.
새로 생긴 함수
- 기존에 bin2hex만 있었는데 hex2bin도 생김.
- http_reponse_code()
- get_declared_traits()
- getimagesizefromstring()
- stream_set_chunk_size()
- socket_import_stream()
- trait_exists()
- header_register_callback()
- class_uses()
- session_status()
- session_register_shutdown()
- mysqli_error_list()
- mysqli_stmt_error_list()
- libxml_set_external_entity_loader()
- ldap_control_paged_results()
- ldap_control_paged_results_response()
- transliterator_create()
- transliterator_create_from_rules()
- transliterator_create_inverse()
- transliterator_get_error_code()
- transliterator_get_error_message()
- transliterator_list_ids()
- transliterator_transliterate()
새로 추가된 상수
PHP Core
- ENT_DISALLOWED
- ENT_HTML401
- ENT_HTML5
- ENT_SUBSTITUTE
- ENT_XML1
- ENT_XHTML
- IPPROTO_IP
- IPPROTO_IPV6
- IPV6_MULTICAST_HOPS
- IPV6_MULTICAST_IF
- IPV6_MULTICAST_LOOP
- IP_MULTICAST_IF
- IP_MULTICAST_LOOP
- IP_MULTICAST_TTL
- MCAST_JOIN_GROUP
- MCAST_LEAVE_GROUP
- MCAST_BLOCK_SOURCE
- MCAST_UNBLOCK_SOURCE
- MCAST_JOIN_SOURCE_GROUP
- MCAST_LEAVE_SOURCE_GROUP
Curl
- CURLOPT_MAX_RECV_SPEED_LARGE
- CURLOPT_MAX_SEND_SPEED_LARGE
LibXML
- LIBXML_HTML_NODEFDTD
- LIBXML_HTML_NOIMPLIED
- LIBXML_PEDANTIC
OpenSSL
- OPENSSL_CIPHER_AES_128_CBC
- OPENSSL_CIPHER_AES_192_CBC
- OPENSSL_CIPHER_AES_256_CBC
- OPENSSL_RAW_DATA
- OPENSSL_ZERO_PADDING
Output buffering
- PHP_OUTPUT_HANDLER_CLEAN
- PHP_OUTPUT_HANDLER_CLEANABLE
- PHP_OUTPUT_HANDLER_DISABLED
- PHP_OUTPUT_HANDLER_FINAL
- PHP_OUTPUT_HANDLER_FLUSH
- PHP_OUTPUT_HANDLER_FLUSHABLE
- PHP_OUTPUT_HANDLER_REMOVABLE
- PHP_OUTPUT_HANDLER_STARTED
- PHP_OUTPUT_HANDLER_STDFLAGS
- PHP_OUTPUT_HANDLER_WRITE
Sessions
- PHP_SESSION_ACTIVE
- PHP_SESSION_DISABLED
- PHP_SESSION_NONE
Stream
- STREAM_META_ACCESS
- STREAM_META_GROUP
- STREAM_META_GROUP_NAME
- STREAM_META_OWNER
- STREAM_META_OWNER_NAME
- STREAM_META_TOUCH
Zlib
- ZLIB_ENCODING_DEFLATE
- ZLIB_ENCODING_GZIP
- ZLIB_ENCODING_RAW
Intl
- U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR
- IDNA_CHECK_BIDI
- IDNA_CHECK_CONTEXTJ
- IDNA_NONTRANSITIONAL_TO_ASCII
- IDNA_NONTRANSITIONAL_TO_UNICODE
- INTL_IDNA_VARIANT_2003
- INTL_IDNA_VARIANT_UTS46
- IDNA_ERROR_EMPTY_LABEL
- IDNA_ERROR_LABEL_TOO_LONG
- IDNA_ERROR_DOMAIN_NAME_TOO_LONG
- IDNA_ERROR_LEADING_HYPHEN
- IDNA_ERROR_TRAILING_HYPHEN
- IDNA_ERROR_HYPHEN_3_4
- IDNA_ERROR_LEADING_COMBINING_MARK
- IDNA_ERROR_DISALLOWED
- IDNA_ERROR_PUNYCODE
- IDNA_ERROR_LABEL_HAS_DOT
- IDNA_ERROR_INVALID_ACE_LABEL
- IDNA_ERROR_BIDI
- IDNA_ERROR_CONTEXTJ
Json
- JSON_PRETTY_PRINT
- JSON_UNESCAPED_SLASHES
- JSON_NUMERIC_CHECK
- JSON_UNESCAPED_UNICODE
- JSON_BIGINT_AS_STRING
기타 자잘한 업데이트 사항
- array_combine()은 이제 false 대신 array() 를 리턴합니다.
- call_user_func_array() 에서도 더이상 call-time pass by reference 를 지원하지 않음.
- <?= 가 항상 허용됨.
- fnv132, fnv164, joaat 알고리즘 추가.
- Class::{expr}() 문법 지원.
- 클로져에서 $this 지원.