일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- TypeScript
- Python
- condition
- docker
- property
- nginx
- generic
- git
- JavaScript
- 앙상블
- AI
- machine learning
- security
- bash
- C++
- C#
- dotenv
- type
- webpack
- var
- scss
- 보안
- npm
- vuetify
- leetcode
- BOJ
- VUE
- vue.js
- loop
- Clone
- Today
- Total
목록Development (105)
ice rabbit programming
CI/CD에 직접적으로 연관된 것은 아니지만, Jenkins Job에서 batch파일을 쓰다가 정리하게 되어 이 카테고리에 넣었다. 우리가 흔히 쓰는 //, /**/, # 등으로 주석처리가 되지 않는다. :: REM 두 키워드로 주석 처리가 가능하다.
일전에 한 대기업 인턴에 다닐 때, 개인 과제로 웹 전반을 제작하였었다. 프론트엔드와 백엔드 모두를 개발하다보니 의문점이 들어 당시 멘토였던 차장님께 질문을 했었다. "Client에서 유효성 검사를 했는데, Server에서도 유효성 검사를 해야 하나요?" 당시 답변은, Client를 통하지 않은 request도 Server로 들어올 수 있으니, 해야 한다는 것이었다. 옳다고 생각하여 두 곳 모두에서 유효성 검사를 진행하기는 했지만, Insomnia나 Postman 등을 통한 request 정도로 생각하고 있었는데, 인젝션에 대해서 알게 되면서 그 때의 답을 완벽히 알게 되었고, 유효성 검사의 중요성을 다시금 알게 되었다. SQL 인젝션(Injection) : Client의 입력 값을 조작하여(인증우회) ..
21세기도 벌써 20%가 지난 현재, 프로그래머는 개발 스킬도 중요하지만 그 외적인 요소들도 무시할 수 없다. 형상 관리(Git), 빌드 및 배포(CI/CD), 설계 등 프로세스 전반에 대해 이해가 있어야 한다. 이 카테고리에서는 학부 시절에 듣지 못했던 소프트웨어 공학을 자료를 참고하며 혼자 정리해보려 한다. 소프트웨어 소프트웨어 공학에 앞서 소프트웨어란 무엇일까? 소프트웨어와 하드웨어의 경계가 모호하긴 하지만, 뭉뚱그려 다음과 같이 표현할 수 있겠다. - 프로그램과 프로그램의 개발, 운용, 보수에 필요한 관련 정보 일체 즉, 프로그램 이외의 정보도 중요하며, 점점 발달해가고 복잡해짐에 따라 설계가 중요하게 대두되었다. 설계가 취약하면 구조가 점점 악화되고, 결국 손쓸 수 없는 지경에 이르기 때문이다...
지난 글에 이어서 오늘은 Casting과 Boxing/Unboxing에 대해 정리하려 한다. Casting - 묵시적, 명시적 다른 언어를 다루어보신 분들이라면 Casting, 즉 형변환의 개념은 익숙할 것이다. 형변환에는 묵시적(암시적) 형변환과 명시적 형변환이 있다. 말 그대로 명시적은 프로그래머가 코드 상에 적어주는 것이고, 묵시적은 그렇지 않다. int number = 5; double pi = 3.14; number = pi; // 묵시적 형변환, 데이터 손실 발생!! 가장 전형적인 예제는 double을 int에 넣는 예제일 것이다. 위 코드에서는 double 변수를 int에 묵시적으로 넣고 있고, 이 때 데이터 손실이 발생한다. C++에서는 묵시적 형변환 시에 데이터의 손실이 있든 없든, 허용..
최근에 웹에서 함수명을 입력받아 실행하고, 그 return 값 object의 함수들을 출력할 일이 있었다. Eval string을 code로 실행하여 준다. var objectName = "myObject."; var methodName = "getProperty()"; var executeCode = objectName+methodName; eval(executeCode); // myObject.getProperty()가 실행된다. 즉, input 태그로 함수명을 입력하면 해당 함수를 실행할 수 있다. getOwnPropertyNames() getOwnPropertyNames는 객체의 모든 속성(Property)의 이름을 반환한다. 즉, 배열이면 원소들을 반환하고 클래스는 멤버들을 반환한다. https..
지난 자료형 글에서 기본적인 자료형에 대해서 언급하였다. 이번 글에서는 거기서 나아가서 좀 더 자세히 알아보자. C#의 모든 것은 객체 C#은 기본적으로 모든 것이 객체이다. int, string, 심지어 숫자까지 모두. 모든 것은 System.Object를 상속 받는다. 그러므로 모든 객체는 ToString(), GetType()등의 메서드를 기본적으로 가지고 있다. 10.ToString(); 이런 문장이 가능하다는 뜻이다. Value vs Reference 다른 언어를 해보신 분들은, Call by Value와 Call by Reference 등에 대해서 많이 보았을 것이다. 특히 포인터가 있는 C/C++에서는 포인터나 참조는 Reference, 값은 Value인 것이 중요하다. C#에서는 struc..
웹 API를 테스트하는 툴은 여러 개가 있는데, 대표적으로 Postman과 Insomnia가 있다. 필자는 예전부터 Insomnia를 많이 사용해 왔고, 이번 기회에 사용법을 정리 및 설명해 보고자 한다. 기본적으로 URI에 정해진 Method를 통해 request를 보내고 response를 받아 원하는 동작을 제대로 하는지 확인하면 된다. 정상적인 응답과 에러 코드가 나오니 테스트하기에 좋다. https://insomnia.rest/download/ Insomnia Download the Insomnia app insomnia.rest 위 링크에서 설치가 가능하다. 설치하면 다음과 같은 화면이 나온다. 이 화면을 부분별로 나누어 어떤 기능인지 살펴보자. 중앙 상단 부분이다. HTTP Method를 지정..
아무래도 학부 4년간 C++을 주로 사용했다보니, 차이가 있으면 C++과 비교하게 된다. 지난 글의 말미에서 말했던 것처럼, C++과 가장 큰 차이는 포인터의 유무라고 생각한다. 그리고 또 하나, 쉽게 발견할수 있는 차이는 바로 'var'이다. var 일단, int나 double 등의 자료형은 C계열 언어들과 동일하게 사용한다. 하지만 다음과 같은 문장을 쉽게 찾아볼 수 있다. var myCar = new Car(); // 이러한 표기법은 권장되는 표기법인지, Car myCar = new Car(); // C# 코드를 관리해주는 Resharper와 같은 툴은 이 줄처럼 쓰면 위 문장으로 자동으로 수정한다. var. variable(변수)의 줄임말이다. JavaScript를 해보신 분들은 var가 익숙할 ..