전체 글

뭐든 공부하면 언젠간 다 도움이 될거야
· 자격증
회사에 기획팀 한 분이 새로 입사했다 오잉 근데 SQLD를 따셨다고,, 개발자도 시험보는거라고? 개발자가 가지고 있어야하는 자격증은 정보처리기사가 국룰로 알고있었고 그 다음이 네트워크관리사 정도로 알고 있었는데 SQLD는 뭐지? 하고 찾아본게 SQLD 자격증 시험을 치르게 된 사유 되시겠다,, 나는 전공자로 회사를 다닌지는 약 3년차정도 된다 근디 MySQL을 쿼리를 써봤지만 뭐 실무에서 썼던건 DML 쪼금만 아는 SQL 초보중의 초보였다 스터디하랴 야근하랴,, 분명히 한달전부터 시험공부를 시작하려고 했는데 막상 시작은 일주일전에 했다 근디 솔직히.. 전공자라 쉬울줄 알았는데 노랭이 책 문제풀고 한대 얻어맞았다 이렇게 어렵다고 ?!?!? 개망햇다 문제를 먼 100문제중에 98문제를 몰라서 해설지를 봤다 ..
· DB/MongoDB
find db.c.find() - 여러개를 추가하면 AND 조건으로 해석된다 db.c.find({"user" : "Joe", "age" : 23}) 반환받을 키 지정 db.c.find({},{"user" : 1, "age" : 1}) - find를 통해 특정한 값만 select하고 싶은 경우 {} 뒤에 매개변수에 원하는 키를 지정하면 된다 - _id는 지정하지 않아도 항상 반환되는데 db.c.find({},{"user" : 1, "_id" : 0}) 위에 처럼 0 으로 설정해서 뽑으면 제외할 수 있다 제약 사항 - 쿼리에는 몇가지 제약이 있는데, 그 중 하나는 데이터베이스에서 쿼리 도큐먼트 값은 반드시 상수(변하지 않는 수)여야 한다 - 아래 예시는 작동하지 않는다 db.c.find({"user" : "..
· DB/MongoDB
도큐먼트 삽입 - insertOne : 한 개 삽입할 때 db.movies.insertOne({"title" : "Stand By me"}) => 도큐먼트에 "_id" 키가 추가되고(제공하지 않는 경우) 도큐먼트가 몽고DB에 저장된다. - insertMany : 값을 대량 삽입할 때 db.movies.insertOne( {"title" : "Stand By me1"}, {"title" : "Stand By me2"}, {"title" : "Stand By me3"} ) => insertMany를 사용해서 대량 삽입할 때 배열 중간에 있는 도큐먼트에서 특정 유형의 오류가 발생하는 경우, 정렬 연산을 선택했는지 혹은 비정렬 연산을 건택했는지에 따라 발생하는 상황이 달라진다. => 순서가 정해지지 않았다면 정..
회사에서 flutter앱으로 프로젝트를 만드는데flutter 앱의 웹뷰를 디버깅할 일이 있어서 chrome inspect 켜는데 연결이 안돼서코드를 찾았다 flutter 앱에서 찾아야하는데main 바로 아래에 await InAppWebViewController.setWebContentsDebuggingEnabled(true); 위의 코드를 넣어 주면된다.main을 async로 바꿔줘야 한다. 나는 플랫폼이 안드로이드 일때만 웹뷰 디버깅을 할테니까 Platform.isAndroid위의 조건을 걸었다. 출처: https://kimsw509.tistory.com/39 [개발자이너:티스토리] > 본문 내용에 있는 내용은 deprecated 되어서 일부 코드를 수정했다 추가적인 부분은 아래 내용에서 확인할 수 있..
· DB/MySQL
트랜잭션이란? 작업의 완전성을 보장해 주는 것 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상(paritial upadte)이 발생하지 않게 만들어주는 기능이다. 잠금과 트랜잭션의 차이 잠금 : 동시성을 제어하기 위한 기능 트랜잭션 : 데이터의 정합성을 보장하기 위한 기능 * 격리수준 : 하나의 트랜잭션 내에서 또는 여러 트랜잭션 간의 작업 내용을 어떻게 공유하고 차단할 것인지를 결정하는 레벨을 의미한다. MySQL에서의 트랜잭션 - 트랜잭션은 꼭 여러개의 변경 작업을 수행하는 쿼리가 조합됐을 때만 의미 있는 개념이 아니라, 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두개의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100% 적..
function addHyphen(obj) { var phone = obj; var num = phone.value.replace(/-/g, ''); var len = num.length; if (len < 4) { phone.value = num; } else { if(num.substr(0, 2) == '02') { if (len < 7) { phone.value = num.substr(0, 2) + '-' + num.substr(2); } else if (len < 10) { phone.value = num.substr(0, 2) + '-' + num.substr(2, 3) + '-' + num.substr(5); } else { phone.value = num.substr(0, 2) + '-' +..
· DB/MySQL
본 글은 1회독을 겨우한 자의 정리본으로 도움이 되지 않을 수 있습니다 4-1-1. MySQL 전체 구조 mysql은 크게 mysql 엔진 / 스토리지 엔진으로 나뉘어져 있음 1) mysql 엔진 : 커넥션 핸들러 / SQL 파서 / 전처리기 / 옵티마이저 2) 스토리지 엔진 : mysql엔진은 dbms의 두뇌에 해당하는 처리를 수행, 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로 부터 데이터를 읽어오는 부분은 스토리지 엔진이 전담함. mysql 엔진과 스토리지 엔진 사이에 데이터를 주고받는 것이 핸들러 API 4-1-2. mysql 스레딩 구조 - mysql 서버는 프로세스 기반이 아니라 스레드 기반으로 작동함 - 이는 포그라운드 스레드와 백그라운드 스레드로 구분할 수 있음 1) 포그라운..
· DB/MongoDB
MongoDB는 우리가 알고있는 MySQL과 다르게 관계형 데이터베이스가 아닌 도큐먼트 지향 데이터베이스다. 아래에서 부턴 편하게 말하기 위해서 MongoDB를 몽고디비라고 부르겠다 1. 손 쉬운 사용 몽고디비는 도큐먼트의 키와 값을 미리 정의하지 않는다. 따라서 고정된 스키마가 없기 때문에 필요할때마다 필드를 추가하거나 제거할 수 있다 -> 개발속도를 향상 시킬 수 있다 2. 확장 가능한 설계 오늘날 저장할 데이터가 증가함에 따라 개발자는 '데이터베이스를 어떻게 확장할 것인가?' 하는 문제에 부딪히는데, 데이터베이스를 결국 확장한다는 것은 더 큰 장비로 성능확장을 할지, 아니면 데이터를 나눠서 분산확장할 지 결정해야하는데, 성능확장이 더 편한길이지만 가격이 비싸고 결국 더는 확장할 수 없는 물리적 한계..
· GIT
로컬개발을 하다보면 로컬에서 개발하고 머지요청 올리고 브랜치 날려주세용 하는 옵션을 선택하는데 원격브랜치에서는 내가 머지요청올렸던 브랜치가 날아갔지만 내 로컬브랜치에는 더덕더덕 남아있다... 원격에 없는 로컬 브랜치를 날리는 명령어는 아래와 같다 git fetch --prune 그러면 원격에만 존재하는 브랜치들이 로컬브랜치에 남게된다 행복한 브랜치 정리 끝~
라라벨은. .. 진짜 다 좋은데 메서드 잘 정리된 페이지를 못 찾겠다,,,,, HTTP 쿠키 설정 HTTP 쿠키는 사용자의 브라우저에 저장되는 작은 데이터 조각이다. 라라벨에서는 HTTP 응답 객체의 cookie() 메서드를 사용하여 쿠키를 설정한다, $response = new Illuminate\Http\Response('Hello World'); $response->cookie('name', 'value', $minutes); 위 코드에서 cookie() 메서드의 세 번째 매개변수는 쿠키의 만료 시간을 분 단위로 지정한다.!!!!!!(php setcookie랑 다름) HTTP 쿠키 읽기 HTTP 요청 객체에서 쿠키에 액세스하려면 Illuminate\Http\Request 객체의 cookie() 메서..