[python] 파이썬으로 진법변환하기
·
언어/PYTHON
개요간단한 듯하면서도 구현을 할 때마다 까먹는 부분이 생겨서 이번 포스팅을 통해 확실하게 잡아보려고 한다.   1) 파이썬 함수를 통해 진법 변환하기십진수를 이진수로, 이진수를 십진수로 파이썬 함수를 통해 변환하는 것은 상당히 간단하다. 1-1) 십진수를 이진수로 변환하기십진수를 이진수로 변환할 때는 bin이라는 함수를 사용한다. 이 함수는 정수를 "0b"가 붙은 이진수로 변환해준다. (문서 참조) Built-in FunctionsThe Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-i..
[JAVA] Effective JAVA. 9장 일반적인 프로그래밍 원칙 1편(item 57, 58, 59, 60)
·
언어/JAVA
개요 회사 업무로 진행하는 이펙티브 자바 세미나 자료 내용이다. 책과 블로그를 참고하였으며, 자세한 코드는 여기서 확인할 수 있다. GitHub - cobinding/effective-java-semina: [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드 [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드. Contribute to cobinding/effective-java-semina development by creating an account on GitHub. github.com 9장은 내용이 많아서 1편과 2편으로 나누어서 포스팅할 예정이다. item 57. 지역변수의 범위를 최소화하라. 코드 가독성과 유지보수성을 위해 지역변수의 유효 범위를 최소..
[JAVA] 날짜/시간 클래스 알아보기(Date, LocalDateTime, ZoneDateTime)
·
언어/JAVA
개요 회사에서 새로운 기능 추가를 위해 팀원 분이 Date를 쓴 것을 발견하였다. 이펙티브 자바 스터디에서 Date클래스는 사용을 지양해야 한다고 공부했기에 이 부분에 대해 자세한 기록을 남겨 곱씹어야겠다고 다짐했다. DATE java의 util 클래스다. 공식 문서를 살펴 보면, Date 클래스가 구현한 인터페이스는 다음과 같다. Serializable: 특별한 메소드를 포함하지 않는 마커 인터페이스다. 객체의 상태를 저장하거나(메모리에 존재하는 객체를 디스크에 저장) 네트워크를 통해 전송할 수있도록 바이트 스트림으로 변환하는 것이다. Clonable: 이또한 마커 인터페이스다. 객체를 복사할 때 사용된다. Comparable: Date의 compareTo 메소드를 지원하는 인터페이스다. DATE 클래..
[JAVA] Effective Java. 6장 열거 타입과 애너테이션
·
언어/JAVA
개요 회사 업무로 진행하는 이펙티브 자바 세미나 자료 내용이다. 책과 블로그를 참고하였으며, 자세한 코드는 여기서 확인할 수 있다. GitHub - cobinding/effective-java-semina: [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드 [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드. Contribute to cobinding/effective-java-semina development by creating an account on GitHub. github.com item34. int 상수 대신 열거 타입을 사용하라 같은 그룹으로 묶이는 int 타입 상수들은 나열하지 말고, enum 클래스를 활용하자. 열거 타입은 그 자체가 클래스이..
[TypeScript] 클래스와 인터페이스
·
언어/JS & TS
JS, TS와 OOP JS의 변수와 함수는 모두 객체다. 이는 JS의 모든 객체가 프로토타입(prototype)이기 때문이다. 프로토타입 언어란 모든 객체가 최소한 하나 이상의 다른 객체(그들의 프로토타입으로부터) 상속을 받는 언어이다. 이때 상속되는 정보를 제공하는 객체를 프로토타입이라고 한다. 따라서, JS로 객체지향 코드를 구성하려면 애로 사항이 많았다. 이 문제를 해결하기 위해 ES6(ECMAScript 2015)부터는 클래스 문법을 추가하였고, 보다 자바스럽게 클래스를 구성할 수 있게되었다. 클래스 TS의 클래스 문법은 JS와 크게 다르지 않다. 다만, JAVA의 객체 지향 문법을 끌어와서 쓰다보니 JS에는 없는 것까지 사용하면서 몇몇 제약이 생긴다. JS의 클래스 선언 방식 class Stud..
[TypeScript] 함수 표현식 & Call∙Constructor Signature
·
언어/JS & TS
개요 JS와 비교하여 TS에서 함수 타입을 정의하는 방법, 이와 관련한 호출 시그니처와 생성자 시그니처에 대해 정리한다. 함수 타입 정의 가장 기본적으로 함수를 정의하는 방법은 다음 내용과 같다. 1. 함수의 반환값 타입은 추론되기 때문에 생략 가능하다. function add(a: number, b: number): number { return a+b; } 2. 화살표 함수도 반환값 타입은 생략 가능하다. const add = (a: number, b:number) => a+b; 3. type 별칭을 통해서 함수 타입을 정의할 수 있다. type GreetFunction = (a: string) => void; function greeter(fn: GreetFunction) { // .... } 이와 ..
[JavaScript] JS의 논리연산자, OR과 AND
·
언어/JS & TS
개요 JS의 논리연산자는 다른 언어에 비해 두드러지는 특성이 있다. 이러한 논리 연산자를 잘 다뤄야 명확하게 코드를 구현할 수 있다. JS의 OR Operator 전통적인 프로그래밍에서 OR 연산자는 불린값을 조작하는 데에 쓰인다. 우리가 일반적으로 생각하는 하나라도 참이면 true, 하나라도 거짓이면 false인 것이다. JS의 논리연산자가 불린값을 다루는 방법은 다음과 같다. alert(true || true ); // true alert(false || true ); // true alert(true || false ); // true alert(false || false ); // false 가장 아래 false || false인 경우를 제외하고 모두 true를 반환한다. 조금 더 구체적으로 알아..
[JavaScript] JS의 this
·
언어/JS & TS
개요 JS의 this 는 전통적인 프로그래밍 언어의 this와 다른 양상을 띈다. 이러한 this 의 역할을 잘 이해하고 사용하는 것이 중요하다. JS 강의 영상에 설명이 잘 되어 있어, 이번 포스팅을 통해 정리해본다. this this 는 호출한 객체를 가리키는 키워드이다. 즉, 호출하는 방법에 의해 결정된다. let person = { name: 'sebin', age: 20, printThis: function () { console.log(this); // person 객체 출력 console.log('this === person: ', this === person); console.log('this === window: ', this === window); }, }; // 그냥 함수 호출하면 t..
[TypeScript] Narrowing | Type Assertions & Type Guards
·
언어/JS & TS
Narrowing TS에서 타입 검사를 통해 조건을 좁혀서 특정 행동을 하는 것을 통칭하여 Narrowing이라고 한다. Type Assertions 타입 단언은 말 그대로 타입을 단언적으로 명시해주는 것이다. 타입 스크립트가 타입 추론을 통해 판단할 수 있는 타입의 범주를 넘어서는 경우, 더이상 추론하지 않도록 직접 지시한다. 💡타입 단언은 C나 JAVA의 타입 형변환과는 다른 개념이다. 형변환은 실제로 데이터 자료를 변환시키지만, 타입 단언은 실제 데이터를 바꾸는 것이 아니라 타입 정보를 명확히 남기는 것이므로 오직 컴파일 과정의 타입체킹에만 사용된다. (코드 자체에 에러는 발생하지 않지만 실행하다보면 오류를 일으키기도 한다.) 타입 단언 선언 방법 document.getElementById를 id가..
[TypeScript] TS 기본 지식 | 정적타입언어, tsc, 타입
·
언어/JS & TS
개요 TypeScript 언어를 공부하는 과정을 정리한다. microsoft에서 제공하는 자료를 토대로 진행한다. TypeScript Basics Each and every value in JavaScript has a set of behaviors you can observe from running different operations. That sounds abstract, but as a quick example, consider some operations we might run on a variable named foo. If we break this down, the first runna microsoft.github.io 정적 타입이란? 동적 타입 언어와 정적 타입 언어 (정적 타입 검사(S..
[JAVA] 익명 클래스(Anonymous Class), 람다식(Lambda)
·
언어/JAVA
개요 Effective Java 7장에서 등장하는 개념을 공부하기 위한 포스팅이다. 1-1) 익명 클래스(Anonymous Class) 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체다. 분명히 Java Spring을 공부할 때는 코드의 재사용성을 고려하며 프로그래밍을 해야 좋은 개발자라고 배웠다. 그렇다면 재사용이 불가능하고 확장성도 좋지 않은 익명클래스를 왜 사용하는 걸까? 프로그램 내에서 일시적으로 사용되는 객체 처리에 사용한다. 확장성을 활용하는 것이 유지보수에서 더 불리할 경우에 사용한다. 해당 블로그 에서 이를 이해하기 위한 아주 좋은 예시를 들고 있다. 일부를 발췌해서 이해해보자. 1-2) 확장성이 필요없는 극단적인 예시 (출처) 곤충이라는 부모클래를 상속받는 거미 구현 클래스가 있다...
[JAVA] JAVA String | StringBuilder | 문자열 결합 연산 | 문자열 연산의 복잡도
·
언어/JAVA
문자열 연산 최적화 산학 프로젝트 냉시피 개발 중 내가 크롤링한 값을 저장하기 위해 어떤 자료형을 쓸 지 많이 고민을 했는데, 그 과정 중 알게된 java StringBuilder에 대해 정리해보려고 한다. 처음에는 크롤링값: [재료이름, 재료수량]을 Map으로 묶어서 리스트로 저장을 하려고 했다. 하지만 걱정되었던 것이 1. 크롤링 자동화가 안되었는데 복잡도가 O(n)이면 성능 상 좋지않다.(크롤링 시 N=6만을 넘고, 그 이상이 될 확률이 매우매우 높은 상황.) 2. 이걸 도메인으로 구현을 해야하는데 어떤 column 값에 리스트를 어떻게 저장할까 였고, 이 문제를 해결하기 위한 조사를 통해 StringBuilder라는걸 알게 되었다. 결론적으로 [재료이름, 재료수량]을 하나의 문자열로 결합해야 한..
[넘블챌린지] week 1-1. 주요 기능 파악과 구현 목록, 목표 세우기
·
언어/JS & TS
2023-02-24 ~ 2023-03-16 총 3주간 타임딜 서버를 구축하고, 성능 테스트를 하는 챌린지에 참여하였다. 첫번째 주의 목표는 팀빌딩과 구현 목록 파악 후, To Do List를 작성하는 것! [주요 기능] 구매 가능한 시간에만 구매 가능 & Sold out [구현 목록] 데이터베이스 모델링 상품 정보, 판매 가능 시간, 판매 가능 수량을 저장할 테이블(product) 사용자 정보도 저장해야함 상품별 구매한 유저 리스트 & 유저의 구매한 상품 리스트 Service 클래스 상품 정보 조회하고 판매 가능한 상태인지 확인 현재 시간, 판매 가능 시간을 비교해서 판매 가능한 상태인지 확인 판매 가능한 상태인 경우, 수량을 비교하여 판매 가능. Controller 클래스 REST API로 상품/구매 ..
[Python] 파이썬 딕셔너리
·
언어/PYTHON
개요 '코드트리'에서 파이썬 딕셔너리를 공부한 내용이다 코드트리 자료가 생각보다 이해하기 정말 쉽게 되어있고, 중요한 부분을 잘 집어줘서 기록하고 두고두고 볼 예정 파이썬 딕셔너리(Python Dictionary) 파이썬 딕셔너리는 검색/삽입/삭제에 유용한 HashMap 자료구조이다. * HashMap: (key, value) 쌍으로 이루어져 있고, 순서와 상관없이 빠른 검색/삽입/삭제(시간복잡도 O(1))가 가능한 자료구조 딕셔너리 선언 파이썬 딕셔너리는 다음과 같이 선언한다. d1 = dict() d2 = {} d3 = { 'apple' : 1, 'banana' : 2, 'grape' : 3 } key와 value 딕셔너리의 기본적인 구조는 dic_name[key] = value 이다. key 값을 ..
[Python] 파이썬 lambda(익명함수) 함수로 정렬하기
·
언어/PYTHON
파이썬 정렬 정렬 메소드인 sort()와 함수 sorted()는 디폴트 값이 오름차순이고, 내림차순으로 정렬을 하기 위해서 reverse 인자를 추가한다. arr = [10, 3, 4, 2, 100] arr.sort(reverse = True) print(arr) # [100, 10, 4, 3, 2] arr = [10, 3, 4, 2, 100] arr.sorted(arr, reversed = True) print(arr) # [100, 10, 4, 3, 2] * reversed 인자 이외에도 [::-1]을 이용하여 정렬할 수 있다. lambda(익명함수) 어떤 리스트를 정렬하기 위해서는 다양한 기준을 활용할 수 있는데, reversed 인자처럼 key 인자를 활용하면 된다. 여기서 lambda(익명 함수..
sebinChu
'언어' 카테고리의 글 목록