2019년 9월 30일 월요일

python - 리스트와 그 속성

python 에서는 다른 언어와 달리 배열이라는 개념이 없고 대신 리스트를 사용한다.
리스트는 대괄호 []로 감싼다. 예: list = ["a", 1, "c"]

remove - 리스트에서 데이터값(인덱스 아님)을 찾아 제거하고, 크기를 1 줄인다. 값을 발견하지 못하면 인터프리터는 에러를 발생시킨다.
예:
>>> nums = [1, 2,"삼",4]
>>> nums.remove("삼")
>>> nums
[1,2,4]

pop - 리스트에서 인덱스값을 기준으로 제거 후 그 값을 반환한다. 인덱스값을 지정하지 않으면 맨 마지막 객체를 삭제하고 반환한다. 인덱스값이 존재하지 않거나 리스트가 비어 있으면 에러를 발생시킨다.
예:
>>> nums = [1,2,3,4]
>>> i = nums.pop(2)
>>> i
3
>>> nums
[1, 2, 4]

append - 리스트 마지막에 객체를 추가한다.
>>> nums = [1,2,3,4]
>>> nums.append("five")
>>> nums
[1, 2, 3, 4, 'five']

extend - 또 다른 리스트를 인자로 받아 리스트의 모든 객체를 기존 리스트에 추가한다.
>>> nums = [1,2,3,4]
>>> nums.extend(["five","six"])
>>> nums
[1, 2, 3, 4, 'five', 'six']

insert - 인덱스값과 객체를 인자로 받아 원하는 위치에 객체를 삽입한다. 맨 마지막에 삽입할 수 없고 이는 append로 가능하다.
>>> nums = [1,2,3,4]
>>> nums.insert(2,"three")
>>> nums
[1, 2, 'three', 3, 4]

list > string 형변환
>>> list = ["i","a"]
>>> string = ",".join(list)
>>> string
'i,a'

string > list 형변환
>>> a = 'hello! world'
>>> print(a.split())
['hello!', 'world']

>>> a = 'hello! world'
>>> print(a.split("!"))
['hello', ' world']

리스트 사용 시 주의 할 점
리스트를 복사할 때 할당 연산자로 복사 시 기존 리스트를 변경하면 복사한 리스트도 변경된다.
>>> a = [1,2,3]
>>> b = a
>>> b
[1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]

리스트 복사 시 copy() 함수를 사용한다.
>>> a = [1,2,3]
>>> b = a.copy()
>>> b
[1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3]

2019년 9월 21일 토요일

[javascript] [jquery] ready()와 change() 시 동시에 함수 호출 - trigger()

javascript를 배우면서 문제가 하나 생겼다. 특정 엘리멘트 상태가 변경이 될 때 한 함수를 호출하는 것인데 문제는 이 함수를 페이지 로딩 후에도 호출하고 싶은데 그러러면 ready()에도 이 함수를 넣어줘야 하고 change()에도 넣어줘야 하는 번거로움이 있다.

다행히 jquery의 trigger() 함수로 해결할 수 있었다.

A라는 함수를 만들고 그 안에 change() 함수와 함께 trigger()로 마무리를 하고, A함수를 ready() 에 포함시켜 봤더니 잘 동작한다.



도움받은 글:
https://stackoverflow.com/questions/28703242/combine-jquery-on-ready-change

https://lookingfor.tistory.com/entry/JQuery-함수-trigger-강제로-click-이벤트-발생시키기

2018년 9월 5일 수요일

android sdk Command line tools 설치 (MAC)

오래만에 안드로이드 sdk를 설치하려고 보니 설치 방법이 예전과 같지 않아 글로 적어둔다. 

A. 설치

필요한 폴더 다운로드(설치?)는 두가지 방법이 있다.
1. brew cask install android-sdk 로 설치, /usr/local/Caskroom 위치에 설치된다 .
2. 직접 https://developer.android.com/studio/#command-tools에서 다운로드 및 필요한 위치에 android-sdk 폴더 생성 후 다운로드 받은 폴더(tools)를 위치한다. 

B. 설정

1. 터미널에서 tools/bin 폴더 이동 후 ./sdkmanager platform-tools 로 관련 패키지 설치, 필요하면 ./sdkmanager tools, ./sdkmanager --list 사용한다. 

2. 터미널에서 sudo vi .bash_profile 입력하여 ANDROID_HOME 설정(설정 후 'source 파일이름' 으로 저장)

2016년 12월 22일 목요일

window 모니터링 도구로 IE CPU 사용량 모니터링

  1. cmd 창에서 perfmon 입력하여 프로그램 실행 
  2. '사용자 정의' 마우스 우클릭하여 새로 만들기 > 데이터 수집기 집합 클릭
  3. 이름 입력 및 템플릿으로부터 만들기 클릭 후 기본템플릿 선택 후 다음을 계속 눌러 완료하면 새로운 데이터 수집기가 만들어 집니다.
  4. 다음은 기본적인 설정으로 넘어갑니다. 측정할 항목, 저장할 파일 이름, 측정 시간 등을 설정합니다. 먼저 측정할 시간 설정입니다.
    방금 만든 데이터 수집기 마우스 우클릭 > 속성 클릭하면 팝업이 뜨는데 중지조건 tab으로 이동하여 '전체 기간'을 설정해주고 확인 클릭.
  5. 다시 데어터 수집기 돌아와 해당 수집기 클릭하면 우측에 리스트가 노출되는데 '성는 카운터' 더블 클릭 > 속성 팝업에 Processor가 목록에 기본으로 추가되어 있는데 이는 해당 컴퓨터의 전체 CPU 사용량을 측정하는 옵션으로, '추가' 클릭하여 내가 필요한 항목 추가(IE CPU 사용량이므로 iexplore 항목 추가)
  6. 다시 '성능 카운터 속성' 팝업으로 돌아와서 로그형식을 '쉼표로 구분' 선택(csv파일로 저장됨), 샘플간격을 1초로 설정 후 '파일' tab 이동하여 '파일 이름 예' 확인 및 적용
  7. 설정 작업은 이정도로만 하고 측정 시작합니다.
    데이터 수집기 클릭하면 우측 상단에 초록색 플레이버튼 노출되는데 클릭만 하면 수집기 아이콘에 플레이 아이콘이 생기면서 측정 시작합니다. 설정해 놓은 30분 동안 측정되고 기록되고 멈춤....
     
  8. 측정 완료되면 C 드라이브 > PerfLogs에서 확인 가능합니다. 엑셀로 정리하려면 csv파일 사용하면 됩니다.

2016년 6월 3일 금요일

Windows에 tomcat 및 jenkins 설치


1. Tomcat 서버 설치 및 환경 세팅


* http://jakarta.apache.org/tomcat/index.html 접속하여 tomcat 다운(현재 버전 8.0.35)* 원하는 디렉토리에 다운받은 zip 파일 압축해제* CATALINA_HOME을 시스템 환경변수에 설정하고 path에 CATALINA_HOME/bin을 저장한다. * 실행창에서 startup.bat(Windows) 혹은 startup.sh(Linux)을 실행한다.* 브라우저로 http://localhost:8080 접근. 고양이 페이지 접근되면 성공





2. Manager 애플리케이션 설정하기


* CATALINA_HOME/conf/tomcat-users.xml 파일 이동하여 아래처럼 바꿔준다.



* http://localhost:8080/manager/html 접속하여 위에서 입력한 uername, password값 입력 및 로그인하여 아래 화면 나오면 성공\





3. jenkins 설치


* http://jenkins-ci.org/ 에서 war 파일 다운로드* 다운한 war 파일을 webapps폴더에 넣고 tomcat실행하면 자동으로 Deploy된다.

(2018.09.06 추가: cmd 창에서 startup.bat 로 실행 가능, 단 실행전 startup.bat 파일에 jenkins 홈 디렉토리를 D 드라이브 같은 용량이 많은 곳으로 설정하는것이 좋다. 
예: 해당 파일을 열어 set JENKINS_HOME=D:\jenkinsHome 입력 및 저장)

* 브라우저창에 http://localhost:8080/jenkins 입력하여 접근




* jenkins관리 > 시스템 설정에 접근하여 jdk, maven 설정



* 플러그인 설치: jenkins 관리 > 플러그인 관리에서 필요한 플러그인 설치 (예: HTML Publisher plugin)

2016년 4월 25일 월요일

selenium IDE로 할 수 있는 것 - Flow Control之조건문(2)


Flow Control 그 두번째.......... 조건문을 만들어 보자.

Flow Control之반복문(1) 에서 부가기능을 설치했으니 여기서는 패스한다.

조건문은 gotoIf, label 두 명령어로 작성할 수 있다.
예:

1gotoif조건식(예:$a==1)변수명
2openhttp://naver.com
3label변수명
4openhttp://google.com

별로 어렵진 않은데 테이블 형식으로 스크립트를 작성해서 그런진 모르겠지만 java의 조건문보다 적응이 안되는 사실이다. gotolabel, label 명령어까지 겹쳐서 사용하면 더 그렇다. (gotolabel, label은 조건문없이 바로 점프해서 원하는 위치로 이동하는 명령어다.) 

그럼 아래 반복문이랑 같이 사용해서 스크립트를 짜보자.

시나리오:
1.  내 블로그에 접근
2. 첫번째 글에 댓글 5개 작성
3. 4번째일 때는 댓글 작성하지 않고 패스



2016년 4월 23일 토요일

selenium IDE로 할 수 있는 것 - Flow Control之반복문


오늘은 selenium IDE(이하 IDE) 반복 수행 스크립트를 짜보자.

IDE은 기본적으로 flow control을 지원하지 않아 부가기능으로 flow control을 해야 한다.
예전에는 여기에서 필요한 파일을 다운 받은 후 해당 파일을 IDE의 Options > Genaral > Selenium Core extensions에 설정하여 사용했지만.....



근데 지금은 많이 간단해졌다. 파폭 부가기능만 설치하면 끝~

1. 파이어폭스에서 https://addons.mozilla.org/ko/firefox/addon/flow-control/ 로 접근 후 설치 및 브라우저 재 실행하면 된다. 

2. 제대로 설치되었는지 확인하려면 IDE command 입력 박스에 while을 입력 시 자동완성이 되면 설치 성공.

3. 다음은 스크립트를 짜보자. 내 블로그에 접속 > 첫번째 글 댓글 영역 클릭 > 댓글 입력 박스에 텍스트 입력 > 댓글등록 버튼 탭. 이 스텝을 5번 수행한다.