본문 바로가기

Language

(38)
Swift 클로저 ※ 이 글은 야곰님의 Swift 스위프트 프로그래밍 책을 참고하여 포스팅 했습니다. IOS 소스 확인하다가 클로저 때문에 애좀 먹어서 정리해놓으려고 한다. 클로저는 요즘 함수형 프로그래밍에서 많이 사용되는 문법으로 스위프트도 클로저를 사용할 수 있다. 말이 필요없다. 예제 소스 ㄱㄱ // Swift 라이브러리 Sorted() func sorted(by areInIncreasingOrder: (Element, Element) -> Bool) -> [Element] // 일반적인 함수 사용 func backwards(first : String, second : String) -> Bool { return first > second } let names = ["아이언맨", "캡틴아메리카", "엔트맨"] let..
Swift 구조체와 클래스의 차이 Swift에서는 구조체와 클래스를 사용할 수 있는데 선언 방법이나 기능이 비슷해 차이점을 미리 숙지하지 않으면 디버깅할 때 곤란해질거 같아서 차이점을 정리해보려 한다. 차이점 1. 구조체는 상속을 할 수 없다. 2. 타입캐스팅은 클래스의 인스턴스에서만 사용할 수 있다 3. 클래스는 참조타입, 구조체는 값 타입 1,2번은 헷갈릴 일이 별로 없을거 같아서 3번 위주로 알아보겠다. struct StructInfo { let strName : String var nNo : Int init(strName : String, nNo : Int) { self.strName = strName self.nNo = nNo } } class ClassInfo { let strName : String var nNo : Int ..
phpstrom xdebug install 환경(centos7, php5.6, phpstorm) 회사 버전에(php 5.6) 맞는 Xdebug를 설치해야 해서 다시 포스팅한다. 처음에 사용했던 php-devel 패키지의 xdebug를 사용하려 했더니 php common쪽에 충돌이 나서 설치할 수 없었다. 회사 서버라 마음대로 파일들을 변경할 수 없는 상황이라 다른 방법을 찾아보던중에 yum에 xdebug 패키지가 있길래 사용해봤더니 잘돼더라~~ php 7버전도 이 방식으로 설치해도 될거같다 Linux 포트 9000번 열어주셈 yum update yum install gcc yum install php56w-pecl-xdebug phpinfo 확인해서 xdebug가 있으면 제대로 설치된거임 vim /etc/php.ini shift + G [xdebug] zend_extension = "/usr/lib..
PyQT5 EXE 파일 사이즈 줄이기 pyinstall --noconsole --onefile main.py 로 만들었을때 exe파일 200MB가 넘음 main.spec 파일에 excludes=['pandas', 'numpy'], 추가후 pyinstaller --noconsole "main.spec" --noconsole --distpath="main.py" 40MB로 줄어듬 콘솔로만 제외시키려면 pyinstaller --noconsole --exclude pandas, --exclude numpy --onefile "main.py" 인터프리터를 아나콘다로 사용하지 말고 venc 가상에서 필요한 라이브러리만 다운받아 사용하면 용량을 줄일 수 있긴 하지만 호환 때문에 그냥 아나콘다를 사용하기로 결정했다.
phpstorm remote(centos7) xdebug 설정 Linux 포트 9000번 열어주셈 yum install git yum install php72-devel yum install gcc mkdir /home/lib cd /home/lib cd /xdebug/xdebug-2.9.3 phpize ./configure make cp modules/xdebug.so /usr/lib64/php/7.2/modules vim /etc/php.ini [xdebug] zend_extension = "/usr/lib64/php/7.2/modules/xdebug.so" xdebug.remote_enable = 1 xdebug.remote_host = 127.0.0.1 xdebug.remote_port = 9000 xdebug.remote_handler = "dbgp" xd..
코틀린 Data Class 코틀린에는 자바엔 없는 DataClass라는 것이 있다. 여태 자바처럼 짜는 것에 익숙해져서 공부 안하고 있다가 깊은 복사와 해체 기능을 손쉽게 사용할 수 있다는 점을 알고 정리를 해놓으려고 한다. 말이 필요없다 코드 ㄱㄱ 1. 해체 fun main(args: Array) { val arrData = mutableListOf() var vo = Data() vo.indx = 1 vo.name = "김비서" arrData.add(vo) vo = Data() vo.indx = 2 vo.name = "박비서" arrData.add(vo) arrData.forEachIndexed { _, data -> val (indx, name) = data println("$indx , $name") } } data cla..
코틀린 split 신기함 자바에서는 split 함수로 자르고 리스트에 담고 등등 너무 귀찮았는데 코틀린에서는 엄청 간편하게 자를 수 있게 만들어 놨다...ㅋㅋㅋ val test = "하하, 호호, 헤헤" val (haha, hoho, hehe) = test.replace(" ", "").split(',') println(haha) println(hoho) println(hehe) 출력: 하하 호호 헤헤 val에서 선언한 변수중 필요없는 변수는 해체할 수 있다. val test = "하하, 호호, 헤헤" val (haha, _, hehe) = test.replace(" ", "").split(',') println(haha) println(hehe) 출력: 하하 헤헤
코틀린 리스트 (MutableList, List) 코틀린에서는 읽기 전용 변수(val)와 수정할 수 있는 변수(var)처럼 리스트도 읽기 전용 리스트(list), 수정할 수 있는 리스트(mutable)이 있다. 읽기 전용 리스트는 말 그대로 리스트를 선언할 때 넣은 데이터들을 수정, 삭제, 변경할 수 없다는 의미이다. 따라서 데이터를 읽을 수는 있지만 add, remove 함수를 사용할 경우 컴파일에러가 발생한다. var arrList = listOf("호호", "하하", "헤헤") println(arrList[0]) // O arrList.add("키키") // X 컴파일에러 arrList.remove(1) // X 컴파일에러 반대로 수정할 수 있는 리스트는 기존 자바에서 사용하던 ArrayList와 유사하므로 ArrayList의 함수들을 모두 사용할..