분류 전체보기 229

Java 기본 문법

java에서 실행되는 모든 코드는 class내부에 있어야 한다.그리고 class의 첫번째 문자는 항상 대문자여야 한다. java파일 이름과 class이름은 항상 일치하여야 한다. 파일을 저장할 때, class이름에 .java를 붙여 파일 이름을 정한다. 모든 java프로그램은 main()메소드가 필요하다. main()메소드가 실행되는것이다.1. 주석한 라인을 주석 처리할 때는 //여러 라인을 주석 처리할 때는 /* */를 사용한다.public class Main { public static void main(String[] args) { /*오늘의 날씨 여러 라인에 걸처 출력한다.*/ System.out.println("today"); System.out..

Java 2024.09.06

Java Platform

자바 플랫폼은 자바 프로그래밍 언어로 쓰여진 프로그램들을 개발하고 실행하는것을 가능하게 하는 프로그램들의 세트이다. 자바 플랫폼은 (가상머신이라 불리는)실행 엔진, 컴파일러와 라이브러리 집합을 포함한다. 자바 플랫폼은 자바 프로그램이 다양한 하드웨어와 운영체제에서 동일하게 실행시키게 할 셈으로 그것들을 위해 구현되었다. 자바 플랫폼은 전체 능력의 일부분을 제공하는 각각의 프로그램들로 구성되어있다. 예를 들어 자바 코드를 자바 바이트코드로 바꿔주는 자바 컴파일러는 JDK의 부분으로서 제공된다. JVM을 JIT컴파일러로 보완하는 JRE는 중간의 바이트코드를 즉석에서 네이티브 머신 코드로 바꾼다. 자바 플랫폼은 광범위한 라이브러리 집합도 포함한다. 플랫폼에서 필수적인 요소는 자바 언어 컴파일러, 라이브러리들,..

Java 2024.09.06

Java 설치, 실행

1. Java platform 설치1.1. Ubuntu에 설치apt search openjdk-.*-jdk-headless를 쳐보면 설치할 수 있는 jdk의 리스트들을 보여준다.원하는 버전을 설치한다.https://www.oracle.com/java/technologies/ 을 보면 현재 LTS인 버전을 볼 수 있다. 웬만하면 LTS버전을 설치하자.java --version을 입력해 잘 설치되었는지 확인한다.설치하면 java와 javac명령을 어디에서든 사용 가능하다. /usr/bin에 실행 파일이 저장되어있는데, PATH에 /usr/bin이 있어 따로 환경변수 설정을 하지 않아도 된다.1.2. Windows에 설치powershell에 java와  javac를 입력하면 실행되지 않는다.Oracle 홈페이..

Java 2024.09.05

JavaScript Obfuscator (자바스크립트 난독화)

난독화는 프로그래밍 언어로 작성된 코드에 대해 읽기 어렵게 만드는 작업이다.온라인 js 난독화 사이트: https://obfuscator.io/1. 설치npm으로 설치npm install --save-dev javascript-obfuscatorCDN으로 불러오기2. 사용법const jsObfuscator = require('javascript-obfuscator');let obfuscationResult = jsObfuscator.obfuscate( `let i=0; for(;iobfuscate(sourceCode, options)다음 메소드를 가진 obfuscationResult객체를 반환한다.getObfuscatedCode() - 난독화된 코드를 string형태로 반환한다.메소드는 두 파..

web/javascript 2024.09.03

Video.js

HTML video 태그 플레이어를 꾸미는 프레임워크이다.1. CDN으로 설치 태그에 link를 삽입하고 태그가 끝나기 전에 script를 삽입한다. " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스2. 옵션data-setup='{}'에 다양한 옵션을 전달할 수 있다(반드시 작은 따옴표로 감싸준다). 각 옵션의 key는 반드시 큰따옴표(")로 감싸주어야 한다. 또한 js로 조종할 때, 사용되기도 한다.이름값설명autoplayboolean(true, false)자동으로 동영상이 재생될지말지controlsboolean유저가 상호작용할 수 있는 컨트롤을 플레이어가 가질지 말지heightstring|number비디오 플레이어 높이를 pixel단위..

web 2024.09.01

운영체제란?

운영체제란 컴퓨터 하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램의 일반적인 서비스를 제공하는 시스템 소프트웨어이다. input & output 또는 메모리 할당같은 하드웨어 기능을 위해서 운영체제는 프로그램과 하드웨어 사이의 중재자 역할을 한다.운영체제를 정의하는것은 어렵지만, "유저와 앱을 위해서 컴퓨터 자원을 관리하는 소프트웨어 계층이다" 라고 불려왔다. 운영체제가 충족시켜야할 세가지 메인 목적이 있다.- 다른 앱들 사이에서 자원을 할당한다. CPU시간과 memory공간을 각 앱에 제공하는것. - 프로그래머들이 무언가를 만들기 쉽게 하드웨어 디테일에 접근하는 디테일의 추상화 인터페이스를 제공한다.- 네트워크와 디스크 디바이스에 접근하기위한 인터페이스같은 흔한 서비스를 제공한다. 1. 운영체제의..

운영체제 2024.08.29

CSS (Cascading Style Sheet)

css 문법Selector 중괄호 안에 Property:Value로 이루어져 있다. CSS selectorsSelector예시예시 설명.class.introclass="intro"인 모든 요소를 선택한다..class1.class2.name1.name2name1과 name2가 둘다 class속성에 있는 모든 요소를 선택한다..class1 .class2.name1 .name2name1을 class로 가진 요소의 자식으로 name2를 class로 가진 모든 요소들을 선택한다.#id#firstnameid="firstname"인 요소를 선택한다.**모든 요소를 선택한다.elementp모든 요소를 선택한다.element.classp.introclass="intro"인 요소를 모두 선택한다.element,elem..

web/css 2024.08.25

puppeteer

puppeteer는 페이지에 js코드를 실행시키는 등 selenium과 다르게 자유도가 굉장히 높다. 하지만 24.08.21기준 puppeteer-extra-plugin-stealth가 1년째 업데이트 되지 않고있다.cloudflare를 우회하고싶다면 puppeteer-real-browser를 사용하자.설치npm install puppeteerimportconst puppeteer = require('puppeteer'); 1. 브라우저 시작const browser = await puppeteer.launch();const page = await browser.newPage();puppeteer는 기본적으로 ui가 없는 headless상태로 실행된다.ui를 보길 원한다면 launch에 headless:f..

Node.js 2024.08.17

selenium v4.0 (javascript)

설치npm install selenium-webdriverimportconst { Builder, Browser, By, Key, until } = require('selenium-webdriver'); 1. 세션 시작하기const driver = await new Builder().forBrowser(Browser.CHROME).build();브라우저 종류: Browser.CHROME, Browser.EDGE, Browser.FIREFOX,  Browser.INTERNET_EXPLORER,  Browser.SAFARI 2. 브라우저에 액션 취하기url 이동await driver.get('https://www.selenium.dev');//또는await driver.navigate().to("https:..

Node.js 2024.08.09

cheerio module

cheerio document: https://cheerio.js.org/cheerio는 HTML과 XML을 파싱하고 다루는 라이브러리이다. cheerio 설치:npm install cheerio --no-auditcheerio import:const cheerio = require('cheerio'); document 로딩:const $ = cheerio.load('Hello world');load메소드로 문자열을 로드해 Cheerio 객체를 반환한다. 이 객체를 이용해 DOM을 횡단하거나 데이터를 다룰 수 있다. elements 선택:$('h2.title').text(); // "Hello world"css selector를 이용해 document에서 element를 선택할 수 있다. DOM 횡단하기..

Node.js 2024.08.08

localStorage, sessionStorage, indexedDB

1. localStorage브라우저에 따라서 10~20MB까지의 데이터를 저장할 수 있다.localStorage는 key-value형식으로 key와 value모두 UTF-16 문자열인 (탭을 닫아도 유지되는)영구적인 저장장치이다.localStorage는 유저가 브라우저에서 영구적인 데이터 저장을 막는 등 보안 설정에 위배되면 에러를 반환한다.domain이 다르면 데이터에 접근할 수 없다.메소드설명localStorage.setItem("myCat", "Tom");현재 도메인의 지역 저장 장치에 데이터 추가const cat = localStorage.getItem("myCat");해당 데이터 얻기localStorage.removeItem("myCat");해당 데이터 삭제localStorage.clear();..

web 2024.07.20

C++ Standard Template Library(STL)

c++ STL은 algorithms, containers, functions, iterators를 제공한다.자료구조를 직접 만들지 않아도 STL을 사용하면 list, stack, queue, deque, priority_queue, set, map등을 사용할 수 있는 것이다. 1. 구성1.1. Containerssequence containers는 iterator를 사용할 수 있고 search가 가능하지만, container adaptors는 iterator를 사용할 수 없고 search가 불가능하다.구분ContainerDescriptionSequenceContainersvectorC의 배열같은 것이다. 배열의 끝에서 삽입 및 삭제는 O(1)의 시간복잡도를 가지지만, 배열의 앞에 삽입 및 삭제는 O(n)..

c, cpp 2024.07.02

C언어 자료형 종류(C data types)

C언어의 컴파일러마다 자료형의 크기가 다르다. C의 표준을 정하는 ANSI에서 정확한 자료형의 크기를 정하지 않고, 다음과 같은 정도로만 자료형의 크기를 표준화하고있기 때문이다."short와 int는 최소 2바이트이되, int는 short와 크기가 같거나 더 커야 한다."자료형의 크기는 sizeof연산자를 사용하면 알 수 있다. 1. 메인 타입 (Main types)자료형크기서식 문자(format specifier)범위char1바이트%c-128 ~ +127unsigned char1바이트%c0 ~ +255shortshort intsigned shortsigned short int2바이트%hi 또는 %hd-32768 ~ +32767unsigned shortunsigned short int2바이트%hu0 ~ ..

c, cpp 2024.06.19

C언어 연산자 우선순위(Operator Precedence in C)

순위연산기호연산자결합방향1()함수호출→[]인덱스->간접지정.직접지정++ (postfix)-- (postfix)후위증가 및 감소2++ (prefix)-- (prefix)전위증가 및 감소←sizeof바이트 단위 크기 계산~비트 단위 NOT!논리 NOT-, +부호 연산(음수와 양수의 표현)&주소 연산*간접지정 연산3(casting)자료형 변환←4*, /, %곱셈, 나눗셈, 모드 연산→5+, -덧셈, 뺄셈→6>비트이동→7, =대소비교→8==, !=동등비교→9&비트 AND→10^비트 XOR→11|비트 OR→12&&논리 AND→13||논리 OR→14? :조건연산←15=, +=, -=, *=, /=, %=, >=, &=, ^=, |=대입연산←16,콤마연산→

c, cpp 2024.06.19

C언어의 기본 문법

0. 컴파일windows에서 visual studio를 사용한다면 해당 ide가 버튼 하나로 컴파일을 자동으로 해준다.gcc 또는 g++로 cli로 컴파일 하는 방법은gcc -o (실행파일 이름) (소스파일)gcc -o test1.exe test1.cpp #windows의 경우gcc -o test1.out test1.cpp #linux의 경우여러 소스파일 컴파일 방법gcc -o (실행파일 이름) (소스파일1) (소스파일2) (소스파일3)gcc -o test1.exe test1.cpp num.cpp func.cpp1. 주석/* 여러 행주석 */// 단일 행 주석2. 반복문반복문의 탈출: break반복문의 생략: continue2.1. whilewhile(값){}값이 0이면 while안에 명령들을 실행하지..

c, cpp 2024.06.19

canvas 프레임(fps) 측정하기, 보장하기

canvas를 이용해 웹 게임을 만들다 보면, 해당 게임이 몇 프레임으로 화면에 주사되고있는지 궁금해진다.60fps모니터면 60fps를, 144fps 모니터면 144fps를 주사하여 부드러운 화면 주사율을 내보내고 싶다. 하지만 항상 canvas를 사용해 웹 게임을 만들 때마다 이상하게 60fps, 144fps에 못미치는 프레임인 것 같았다. 막연하게 뭔가 렉걸리는 듯하다는 느낌만 받았었지만, 측정 방법도 모르고 그냥 그려려니 했다. 그치만 sparebeat라는 웹 리듬게임을 해보니 굉장히 스무스하게 화면이 주사되는것이었다! 내가 만든 리듬게임은 뚝뚝 끊기는 느낌인데... 느낌으로 판단하지 말고 이제 정확한 측정방법을 통해 몇 프레임인지 알아내고, 어떻게 해야 프레임을 보장할 수 있는지 알아보자. 프레임..

web 2024.06.04