퓨쳐텍정보통신 보안 연구소
1은 참(true)이고, 0은 거짓(false)으로 처리됩니다
Visual Studio Code에서 자동으로 코드 정렬하기
ctrl + k + f
- 컨트롤에 있는 값을 변수로 넣어 갱신하고 싶을 때에는 UpdateData(TRUE) 사용
- 변수에 있는 값을 컨트롤에 넣어 갱신하고 싶을 때에는 UpdateData(FALSE) 사용
코드 프로젝트
Simple Active Directory Browsing
*. 타이머 사용
*.***. javascript
function sayHi() {
alert('안녕하세요.');
}
*1초에 한번씩 함수 실행
timerId = setTimeout(sayHi, 1000);
* 완료시 타이머 종료
clearTimeout(timerId);
*. 문자열 자르기
*.**. java
//사용법
String.substring(start) //문자열 start위치부터 끝까지 문자열 자르기
String.substring(start,end) //문자열 start위치 부터 end전까지 문자열 발췌
//예제
String str = "ABCDEFG"; //대상 문자열
/*A=0 B=1 C=2 D=3 E=4 F=5 G=6의 index를 가진다.*/
str.substring(3);
/*substring(시작위치) 결과값 = DEFG*/
str.substring(3, 6);
/*substring(시작위치,끝위치) 결과값 = DEF*/
*. 문자열 포함 확인하기
*.*. MFC
int nIndex = 0;
CString strDate( "2013-12-16" );
nIndex = str.Find( '0' );
printf( "%d\n", nIndex );
*.**. java
// contains를 이용한 방법(true, false 반환)
if(txt1.contains("나다")) {
System.out.println("문자열 있음!");
} else {
System.out.println("문자열 없음!");
}
*.***. javascript
- indexOf 이용
var stringVal = "javascript",
substring = "java";
stringVal.indexOf(substring) !== -1;
javascript의 기본객체인 string의 indexOf를 이용하는 방법
포함하고 있는 문자의 인덱스를 반환한다.
만약 문자를 가지고 있지 않으면 -1을 반환한다.
1.1. javascript
let arr = [1, 2, 3];
arr = [];
*. 형변환
-2.1 MFC
* 이렇게 하면 CString 문자열을 알어서 변환해준다.
CStringA strA = CStringA(strChHost);
char *pChar = strA.GetBuffer();
//CString => wstring
std::wstring wstr = L"wstring문자열";
wstr = cstr.operator LPCWSTR();
- wstring to wchart_t
std::wstring wStr;
const wchar_t *input = wStr.c_str();
- CString -> char *
CString str;
str = "test";
char* st = LPSTR(LPCTSTR(str));
- char * to std::string
char c[256] = "Hi there";
std::string str(c); // OR std::string str = c;
- unsigned char* to string
unsigned char* dec_outputKey2;
std::string strData( reinterpret_cast< char const* >(dec_outputKey2) ) ;
- std::string to char *
std::string str = "string";
char* chr = str;
* 제일 중요한 내용 wstring로 저장한 변수는 char로 변경할 경우
std::wcstombs(buffersessionKey, inputsessionKey, size); 이렇게 한번더 변환이 필요하다 ㅠ.ㅠ
3. 암호화
3.1. java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256 {
public String encrypt(String text) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(text.getBytes());
return bytesToHex(md.digest());
}
private String bytesToHex(byte[] bytes) {
StringBuilder builder = new StringBuilder();
for (byte b : bytes) {
builder.append(String.format("%02x", b));
}
return builder.toString();
}
}
- 파일을 읽어서 sha-256
3. 시간차 구하기
3.1. java
4. For 문
6. 문자열 저장하기
6.1. MFC
std::vector<std::string> v;
v.push_back( "Some string" );
or
v.insert( v.end(), "Some string" );
7. 문자열 공백제거
6.1. javascript
let str1 = " 문자열의 앞 뒤 공백 제거하기 ";
document.write(str1.trim());
7. 문자열 길이
7.1. javascript
8. 문자열 비교
8.1. java
str1.equals(str3) : true
8.2. javascript
'=='와 '==='의 차이
- '=='는 비교하는 두 개의 값(피연산자)을 강제로 같은 형으로 변환한 후, 비교를 수행합니다.
즉, 두 값의 타입이 다르더라도, 형 변환된 값이 같다면 true를 리턴합니다. - '==='는 비교하는 두 개의 값(피연산자)의 타입과 값이 모두 같을 경우에만, true를 리턴합니다.
9.배열 선언
9.1. javascript
let arr1 = [];
let arr2 = new Array();
10.변수 선언
10.1. javascript
- var, let, const 차이
var name = 'bathingape'
console.log(name) // bathingape
var name = 'javascript'
console.log(name) // javascript
var는 선언이 중복되도 오류가 없이 실행이 된다. 이래서 중간에 중복 선언이 되면 값이 왜 바뀌는지 알수가 없다. 테스트 용으로만 사용할것
let는 중복 선언이 되지 않지만 값을 바꾸어서 저장 가능하다.
const는 중복 선언이 되지 않고 값도 바꿀 수 없다.
코딩시 적절한 선택이 필요한다.
8. 문자열 형변환
8.1 C++ 형변환
CString cstring(_T("CString::CStringT"));
std::string str("std::string");
std::wstring wstr(_T("std::wstring"));
// std::string <-- CString
str = std::string(CT2CA(cstring.operator LPCWSTR()));
// std::wstring <-- CString
wstr = std::wstring(cstring.operator LPCWSTR());
// CString <-- std::string
cstring = CString::CStringT(CA2CT(str.c_str()));
// CString <-- std::wstring
cstring = CString::CStringT(wstr.c_str());
// std::string <-- std::wstring
str = std::string(CT2CA(wstr.c_str()));
// std::wstring <-- std::string
wstr = std::wstring(CA2CT(str.c_str()));
11. mysql 접속하기
12. log 출력 on/off