<팀원을 모집하기 위해 고군분투하는 모습이다. > 첫 한달 개발팀장을 맡다 2021년 5월 , 기존에 있던 CTO분이 휴직(개인사)을 하게 되면서 개발에 대한 모든 권한을 내게 일임하였다. 개발에 대한 모든 의사결정을 전부 내게 맡긴 것으로 , 어느 정도 규모가 있는 회사의 의사결정권한을 갖게 된 것은 그만큼 내게 큰 신뢰가 있었음을 알수 있게해주는 대목이었다. 그러나 전혀 예측하지 않았던 상황이기에 준비가 되어있지 않았던만큼 처음에는 삐걱거렸다. 가장 첫번째로 어려움을 겪었던 것은 업무의 배분이었다. 관리자가 되니까 해야할일은 업무를 만들고 또 그것을 팀원들에게 분배하고 잘 되고있는지 취합하고 관리감독을 하는것이었다. 군 시절 장교로 복무하면서 겪어봤던 일이긴 했지만, 군복무 당시에도 그닥 잘 하지는 않았던 것 같다. 그럼에도 어쨌든 전반적인 시스템을 이해하고 있었고, 어떻게 구현해야할지에 대해서는 어느정도 경험이 쌓여있었기때문에 큰 문제가 없을 줄 알았다. 실무자로 일을 할 때에도 항상 업무를 받아서 하지는 않았다. 스스로 돌이켜보건대, 나는 주어진 업무가 없으면 스스로 만들어서 제안하고 기획하여 업무를 진행했다. 조그마한 스타트업이었던 첫 회사에서부터 내가 할일은 내가 만들어서 곧 잘했다. 어떤 큰 방향만 정해져있다면 그건 큰 어려움은 아니었다. 나에게 일은 항상 있었다. 매니저가되면서 달라진게...
공유 링크 만들기
Facebook
X
Pinterest
이메일
기타 앱
프론트개발자 면접 준비/ 공부 5
공유 링크 만들기
Facebook
X
Pinterest
이메일
기타 앱
-
Coding Questions:
Question: What is the value of foo?
var foo =10+'20';
형변환 (자바에서는 casting이라고 하던데) 에 대한 질문이다. 답은 1020이다.
숫자는 문자열을 만나면 문자열로 변하게 된다. 문자열을 숫자로 변환하고 싶다면 따로 파싱해주는 메소드를 사용해야 한다.
Question: How would you make this work?
add(2, 5); // 7add(2)(5); // 7
functionadd(operand1, operand2) {
letmemo;
if (operand1 && typeofoperand1 === 'number') {
if (operand2 && typeofoperand2 === 'number') {
memo = operand1 + operand2;
console.log(memo);
} else {
memo = operand1;
}
}
returnfunctionaddResult(operand) {
if (operand && typeofoperand === 'number') {
memo += operand;
console.log(memo);
}
};
}
음... 좀 지저분하게 느껴지는건 왜일까.
(a, b)=>b?a+b:c=>a+c;
페이스북 그룹에 문의를 했더니 이런 코드를 알려주셨다. 콘솔에 찍는게 목적이라 생각해서 거기에 집착을 했는데, 이렇게 간결하게 표현할 수 도 있구나. let을 쓸거면 처음부터 ES6 스럽게 짜보라고 한다.
새롭게 배운것은 함수가 화살표함수로 계속 이어져 있으면서 그 매개변수로 들어있는 것을 언제든지 쓸 수 있다는 표현인거 같다. 짧은 한줄이지만 강력하게 배웠다. 커링에 대해서도 정리해야겠다.
Question: What value is returned from the following statement?
"i'm a lasagna hog".split("").reverse().join("");
책보고 해바야겠다.
Question: What is the value of window.foo?
( window.foo|| ( window.foo="bar" ) );
bar 가 나올 것이다. window 에 따로 foo 속성을 정의한적이 없기때문에 바로 뒤에 있는 코드가 실행되서 foo속성이 주어지고 "bar" 값이 할당 될것이다.
Question: What is the outcome of the two alerts below?
var foo ="Hello";
(function() {
var bar =" World";
alert(foo + bar);
})();
alert(foo + bar);
첫번째는 Hello World
두번째는 에러가 난다. bar가 존재하지 않기때문이다. undefined 값도 할당되지 않는다. 변수 자체가 존재하지 않기때문.
IIEF 즉시실행함수는 변수를 사용하고 바로 폐기처분해버리는 성질이 있다.
Question: What is the value of foo.length?
var foo = [];
foo.push(1);
foo.push(2);
2
Question: What is the value of foo.x?
var foo = {n:1};
var bar = foo;
foo.x= foo = {n:2};
주제 : iframe, http header 이해과정의 서술 (보안에 대해 쬐금 알게 된것도 ㅎㅎ) 목적: 힘들게 알아보았던 과정을 다시 잊어버리지 않기위한 복기 및 다른 사람들에게 알리는 것 현재 진행하고 있는 프로젝트의 가장 핵심이라고 볼 수 있는 기능을 구현함에 있어 어려움에 부딪혔다. 그 기능은 바로 iframe으로 띄운 다른 웹사이트의 내용을 현재 페이지에 그대로 드래그 할 수 있게 해주는 것이었다. 기능을 구현하기 위해 공부 했던 것들과 그로 인한 결론을 차례대로 서술해가기로 했다. 1. iframe 의 역사 (제약 사항이 나타나게 된 것을 위주로) -XSS 로 인한 제약사항 발생 2. iframe 제약사항 극복하기 위한 방법 -JSONP -PROXY 3. 보안 문제를 우회하는 해결책. 1. iframe 의 역사 iframe의 기능은 현재 페이지에 또다른 페이지를 포함하도록 해준다. 비슷한 분야에서 embed 태그라던가 object 태그가 있지만 iframe이 가장 많이 쓰이지 않나 조심히 추측해본다(실제로 iframe을 위주로 보아 왔다. 특히 Youtube가 iframe으로 지원하기때문에...) iframe은 inline frame의 약자로써, 바로바로 쓸 수 있는 프레임이라는 뉘앙스를 가지고 있다. 과거 html 4.01 명세서에는 frame 태그가 존재했었다. 이 frame 태그는 body 태그 대신 frameset 태그와 같이 쓰이면서 페이지의 구조를 잡고 분할 하는 것을 쉽게 해주었었다. 하지만 html 5에 와서는 obsolete 되어버리는데 일단 로딩하는데 많은 시간을 잡아먹을 뿐더러, 동작, 보안 등의 분야에서 많은 문제점이 발견되었기 때문이다. { 태그의 역사에 대해서는 잘 정리한 다음 사이트를 참고하시기를 http://www.martinrinehart.com/frontend-engineering/engineers/html/h...
iframe 보안 이슈를 우회하여 다른 여러 사이트를 화면에 표시하는 방법을 소개한다. 크롬에만 국한적인 방법이기때문에 정당한 해결책이라고 할 수는 없지만 이거라도 찾아낸 게 어딘가 싶다. - 해결책 = Chrome extension 크롬 확장프로그램이 바로 그 해결책이었다. 해결책의 시초는 다음 확장 프로그램이었다. Split screen 이라는 프로그램이다. 화면 분할이 되어지는 모습 처음 우리가 기획했던 기능이 화면분할이었는데, 이 프로그램이 구현하고 있었다. iframe을 쓰는 것은 동일했는데, 이 확장프로그램은 어떤 도메인이던 들어갈 수가 있던 반면에 내가 만든 iframe에서는 자꾸만 SOP에 걸렸다. 도대체 무엇이 그 차이를 만들어내는 건지에 대해 구글링하고 탐색해보았다. 그러다가 발견한 것이, 저 프로그램이 켜진 상태에서는 내 페이지에서도 어떤 웹사이트던 볼 수 있더라는 것이다. 크롬 확장프로그램에 그 해답이 있다는 것을 알게된 것은 오래 걸리지 않았다. chrome 브라우저에서 제공하는 chrome 객체에는 webRequest라는 멤버가 있었다. 이 멤버는 http 요청에 관여할 수 있는 객체였는데, https://developer.chrome.com/extensions/webRequest 이곳에 가면 자세한 API를 살펴볼 수 있다. onHeaderRecived 를 통해 리스너를 입혀주기만 하면 문제는 해결되는 것이었다. onHeaderRecived는 응답헤더를 받을때의 시점이다. SOP를 해결하기위해 서버에서 온 응답http 헤더를 조작해주었다. x-content-security-options', 'x-webkit-csp', 'content-security-policy', 'x-frame-options ...
<팀원을 모집하기 위해 고군분투하는 모습이다. > 첫 한달 개발팀장을 맡다 2021년 5월 , 기존에 있던 CTO분이 휴직(개인사)을 하게 되면서 개발에 대한 모든 권한을 내게 일임하였다. 개발에 대한 모든 의사결정을 전부 내게 맡긴 것으로 , 어느 정도 규모가 있는 회사의 의사결정권한을 갖게 된 것은 그만큼 내게 큰 신뢰가 있었음을 알수 있게해주는 대목이었다. 그러나 전혀 예측하지 않았던 상황이기에 준비가 되어있지 않았던만큼 처음에는 삐걱거렸다. 가장 첫번째로 어려움을 겪었던 것은 업무의 배분이었다. 관리자가 되니까 해야할일은 업무를 만들고 또 그것을 팀원들에게 분배하고 잘 되고있는지 취합하고 관리감독을 하는것이었다. 군 시절 장교로 복무하면서 겪어봤던 일이긴 했지만, 군복무 당시에도 그닥 잘 하지는 않았던 것 같다. 그럼에도 어쨌든 전반적인 시스템을 이해하고 있었고, 어떻게 구현해야할지에 대해서는 어느정도 경험이 쌓여있었기때문에 큰 문제가 없을 줄 알았다. 실무자로 일을 할 때에도 항상 업무를 받아서 하지는 않았다. 스스로 돌이켜보건대, 나는 주어진 업무가 없으면 스스로 만들어서 제안하고 기획하여 업무를 진행했다. 조그마한 스타트업이었던 첫 회사에서부터 내가 할일은 내가 만들어서 곧 잘했다. 어떤 큰 방향만 정해져있다면 그건 큰 어려움은 아니었다. 나에게 일은 항상 있었다. 매니저가되면서 달라진게...
댓글
댓글 쓰기