이미지 파일을 선택하면 이미지를 연결된 소켓에 뿌리는 작업을 하고 있었다.

파일을 선택하면 blob 형태로 만들어 뿌렸는데 이게 같은 디바이스에서는 제대로 동작했는데

다른 디바이스에선 제대로 안나오더라..

 

그래서 생각해낸게 blob 을 base64 로 컨버팅해서 base64를 넘기는 형태로 변경

 

const reader = new FileReader();
const blob = ---; // blob or file
reader.readAsDataURL(blob); 
reader.onloadend = () => {
	const base64data = reader.result;
	// base64 converted!
	console.log(base64data);
}

 

 

샘플페이지

 

codepen.io/mika0203/pen/oNBzgGx

 

샘플 페이지

 

 

bool 값으로 정렬해보자.

const booleanArray = [true,false,false,true,false,true,false,true];

booleanArray.sort((a,b) => a === b ? 0 : a? 1 : -1);
// [false, false, false, false, true, true, true, true]

booleanArray.sort((a,b) => a-b);
// [false, false, false, false, true, true, true, true]

// --------------------------------------------------------------------------

booleanArray.sort((a,b) => a === b ? 0 : a? -1 : 1);
// [true, true, true, true, false, false, false, false]

booleanArray.sort((a,b) => b-a);
// [true, true, true, true, false, false, false, false]

 

 

요새 javascript 알고리즘 문제 풀고 있는 사이트에서 문제가 올라왔는데

min 값과 max 값의 사이를 오가는 숫자를 구하는 문제였다

 

yeu.kr/Ptkt6

 

코딩문제를 풀어보세요

미션: 토글카운터를 만들어보자

yeu.kr

 

unity 에선 Mathf.PingPong(float, length) 함수로 쉽게 구할 수 있었는데 js에서는.. 아마 없는듯?

오르는 중인지 내려가는 중인지 bool 값으로 할 수 있었는데 그냥 구현해보고 싶었다

 

// value 를 넣으면 min, max 값을 오가는 값을 리턴 하는 함수

const pingpong = (min,max, value) => {
      // 0을 기준으로 값을 맞춰준다
      const normalizeMin = 0;
      const normalizeMax = max - min;
      const normalizeVal = value - min;
    
      // 값 차이를 2배 해준다
      const max2 = (normalizeMax - normalizeMin) * 2;
      
      // 현재 들어온 값을 위에서 구한 max2 값의 나머지 계산을 해준다
      // 즉 현재 값이 max 보다 큰지 작은지 알 수 있게 해준다
      const overVal = normalizeVal % max2;

      // overVal 값이 Max 값 보다 
      // 작은 경우(숫자가 커지는 경우) ? 정규화 전 min 값 + overVal 한다
      // 큰 경우 (숫자가 작아지는 경우) : 정규화max 보다 초과한 수를 max 에서 빼준다
      return overVal <= normalizeMax 
         ? min + overVal
         : max + (normalizeMax - overVal)
     }
   
  

 

 

확인

yeu.kr/nv8h4#js

 

코딩문제를 풀어보세요

미션: 토글카운터를 만들어보자

yeu.kr

 

switch (foo) {
	case 1 :
    	let bar = 1;
        break;
    case 2 : 
    	let bar = 2;
        break;
}

 

위와 같이 작성하면 bar 가 이미 선언되었다고 오류가 날 것 이다.

 

switch (foo) {
	case 1 : {
    	let bar = 1;
        break;
    }
    case 2 : {
    	let bar = 2;
        break;
    }
}

 

{} 로 감싸서 해결하자

nodejs 에서 즉시 실행 함수로 초기화 하려고 하는데 자꾸 

 

TypeError: {(intermediate value)} is not a function 가 뜬다.

에러 라인도 자꾸 선언한 함수의 라인을 표시하니 내가 뭘 잘 못했지 계속 찾고있는데..

 

해당 함수를 선언 한 윗 코드에 세미콜론을 안붙여서 뜨는 에러였다.

 

let appData = {
    lastUpdatedTime: undefined
} // <------ 여기!

(function async(){
})();

 

 저곳에 세미콜론을 붙여주면 정상작동한다.

 

그런데 왜 이런일이 벌어지는걸까?

 

let appData = {
    lastUpdatedTime: undefined
}(function async(){
})();

이렇게 인식을 하기때문.. 이렇게 생각하니 이해가 가더라.

삽질 끝

 

참조 : stackoverflow.com/questions/42036349/uncaught-typeerror-intermediate-value-is-not-a-function

+ Recent posts