Coin Push 프로젝트

CoinPush 다운로드

스택

코인 API : Cryptowatch

chrome extension

HTML, CSS, JS

사용법

각 값들을 입력 후 등록을 하면 20초마다 한번씩 실시간으로 확인해 순서대로 4초에 한개씩 알림이 울립니다.

따라서 권장 최대 알림은 4개이며, 만약 알림을 끄고싶으면 알림 리스트를 전부 삭제해야 합니다.

추후 알림 반복 시간 설정 업데이트 예정

상한 지정가와, 하한 지정가는 필수로 입력해야 하며 한개의 알림만 원한다면, 각각 원하지 않는 곳에 적절한 값을 넣어주시면 됩니다.

지정가의 퍼센트 설정은 현재 인풋창의 값에서 누적으로 퍼센트 계산이 되니 참고하시기 바랍니다.

로드맵

1.0

  • Push 설정
    — 거래소
    — 코인
    — 지정가 ( max, min )
    — 등록 버튼

  • 알림 설정 리스트
    — 추가, 삭제

  • 지정가 퍼센트 기능

1.1

  • 서버요청 쿨타임 설정 기능
  • 지정가 퍼센트 기능 보완
  • max or min disable

1.2

  • 디자인 개선

1.3

  • 코인 모니터링 시스템

2.0

  • 코인원, 업비트 API 추가

3.0

  • 거래기능 도입
  • 매수, 매도 버튼 추가

후기

이준호(SSsEnzo):

짧은 프로젝트로 유택님과 일을하게 되었는데

처음 만들어 보는 Chrome extension이라 정말 재밌게 했습니다.

다음번에 더 업그레이드 될 수 있게 새로운 프로젝트를 빨리 하고싶어 지네요.

다들 피쓰~

Github
블로그

정유택(takeU):

토이프로젝트로 약 일주일동안 열심히 만들었는데

기초적인 기능은 얼추 완성한 것 같고, 앞으로 이것저것 기능 추가하면서 다듬으면 좋을 듯 하다.

디자이너가 없어서 급하게 했지만, 일단 개발자의 눈에는 나름 이쁘다ㅋㅎ

시간이 될지 모르겠지만, 반응이 괜찮다면 더 빠르게 진행해봐야겠다.

또한 같이 만들고 싶다는 분이 많이 생기면, 오픈소스로 돌릴 생각도 있으니 메세지 주시면 좋을것 같습니다!

끝으로, 부족하지만 한번이라도 이용해주신 모든 분들께 감사드립니다!

Github

'개발 > 기타' 카테고리의 다른 글

Coin Push 프로젝트  (0) 2018.01.29
티스토리 블로그 폰트 바꾸기  (4) 2017.10.14
[git]Git 간편 사용 설명서  (0) 2017.05.27
Git, Github 10분만에 익히기  (0) 2017.04.25
"데일리후보" 단기 프로젝트 완성  (3) 2017.04.17
HTML,CSS용 VIM(8.0)세팅하기  (0) 2017.02.21

Coding 3min: Symmetric Sort ( 6 kyu )

문제

This is the simple version of Shortest Code series. If you need some challenges, please try the challenge version

Task:

Give you a number array(element range:1-99, array length range: 6-40), please do a "Symmetric Sort" with it.

rule: sort the number, the first smallest number at the left side, the second smaller number at the right side, and so on...

Example:

example1:                        example2:

array=[1,2,3,4,5,6,7,8,9]        array=[1,1,2,2,3,3,4,4,5]

after sort, should return:       after sort, should return:

      [1,3,5,7,9,8,6,4,2]              [1,2,3,4,5,4,3,2,1]

See more example at the testcases.

배열을 앞뒤로 한개씩 넣으면서 정렬

풀이

function sc(array){
  let result = [];
  array.sort((a,b) => { return b-a });
  while ( array.length > 0 ) {
    result.unshift(array.shift());
    if ( array.length === 0 ) break;
    result.push(array.shift());
  }
  return result.length % 2 ? result : result.reverse();
}

큰수부터 차례로 언시프트, 푸시하고 배열의 길이가 짝수라면 뒤집어서 리턴

다른 사람의 풀이

function sc(a) {
  a = a.slice().sort((x,y) => x - y);
  var left = a.filter((v,i) => i % 2 == 0);
  var right = a.filter((v,i) => i % 2 == 1).reverse();
  return left.concat(right);
}

개고슈다


Max Collatz Sequence Length ( 5 kyu )

문제

In this kata we will take a look at the length of collatz sequences. And how they evolve. Write a function that take a positive integer n and return the number between 1 and n that has the maximum Collatz sequence length and the maximum length. The output has to take the form of an array [number, maxLength] For exemple the Collatz sequence of 4 is [4,2,1], 3 is [3,10,5,16,8,4,2,1], 2 is [2,1], 1 is [1], so MaxCollatzLength(4) should return [3,8]. If n is not a positive integer, the function have to return [].

n 이하의 숫자중 콜라츠 순서를 적용해 가장 긴 길이를 리턴하는 문제

풀이

function MaxCollatzLength(n) {
  if ( n <= 0 || typeof n !== 'number' ) return [];
  let max = [1,1], temp, count;
  for ( let i = 2; i <= n; i++ ) {
    temp = i;
    count = 0;
    while ( temp > 1 ) {
      if ( temp % 2 === 0 ) temp = temp/2;
      else temp = temp*3 + 1;
      count++;
    }
    if ( count > max[1] ) max = [i, count+1]
  }
  return max;
}

temp에 n으로 시작해서 몇개의 콜라츠 순열이 나오는지 담고 연산 횟수를 count로 해서 최댓값을 리턴하는 방법

다른 사람의 풀이

별로임


Find the unique string ( 5 kyu )

문제

There is an array of strings. All strings contains similar letters except one. Try to find it!

findUniq([ 'Aa', 'aaa', 'aaaaa', 'BbBb', 'Aaaa', 'AaAaAa', 'a' ]) === 'BbBb'
findUniq([ 'abc', 'acb', 'bac', 'foo', 'bca', 'cab', 'cba' ]) === 'foo'

Strings may contain spaces. Spaces is not significant, only non-spaces symbols matters. E.g. string that contains only spaces is like empty string.

It’s guaranteed that array contains more than 3 strings.

배열중 다른 알파벳으로 구성된 단어를 찾는 문제

풀이

function findUniq(arr) {
  let newArr = arr.map(a => { return [...new Set(a.toLowerCase())].sort().join('') });
  for ( let i = 0; i < newArr.length; i++ ) {
    if ( newArr.indexOf(newArr[i]) === newArr.lastIndexOf(newArr[i]) ) return arr[i]
  }
}

Set으로 중복을 제거 후에, indexOf로 유일한 값을 찾아 리턴

다른 사람의 풀이

별로임


Extract the domain name from a URL ( 5 kyu )

문제

Write a function that when given a URL as a string, parses out just the domain name and returns it as a string. For example:

domainName("http://github.com/carbonfive/raygun") == "github" 
domainName("http://www.zombie-bites.com") == "zombie-bites"
domainName("https://www.cnet.com") == "cnet"

도메인의 이름만 뽑아 리턴하는 문제

풀이

function domainName(url){
  let arr = url.split('.');
  if ( arr[0].includes('www') ) return arr[1];
  if ( !arr[0].includes('http') ) return arr[0];
  return arr[0].slice(arr[0].indexOf('//')+2, arr[0].length);
}

.을 기준으로 배열로 잘라 www가 있으면 1번 인덱스 리턴

http가 없으면 0번 인덱스 리턴

나머지는 //를 기준으로 잘라 리턴

다른 사람의 풀이

function domainName(url){
  return url.match(/(?:http(?:s)?:\/\/)?(?:w{3}\.)?([^\.]+)/i)[1];
}

정규식이 있을 것 같았는데 따라는 못하겠다


Throwing Darts ( 6 kyu )

문제

You’ve just recently been hired to calculate scores for a Dart Board game!

Scoring specifications:

0 points - radius above 10
5 points - radius between 5 and 10 inclusive
10 points - radius less than 5
If all radiuses are less than 5, award 100 BONUS POINTS!

Write a function that accepts an array of radiuses (can be integers and/or floats), and returns a total score using the above specification.

An empty array should return 0.

Examples:

scoreThrows( [1, 5, 11] )    =>  15
scoreThrows( [15, 20, 30] )  =>  0
scoreThrows( [1, 2, 3, 4] )  =>  140

다트 점수내기, 4발 던져서 1,2,3,4에 넣으면 100점추가

풀이

function scoreThrows(radiuses){
  let point = [], result = 0;
  for ( let i of radiuses ) {
    if ( i < 5 ) {
      result += 10;
      point.push(i)
    } else if ( i >=5 && i <= 10 ) {
      result += 5;
    }
  }
  if ( [...new Set(point)].length === 4 && radiuses.length === 4 ) result += 100
  return result;
}

케이스를 많이 나눠 생각했는데 테스트케이스가 얼마 없어서 의미가 없어짐

다른 사람의 풀이

function scoreThrows(a){
 var result = a.reduce(function(p,c){
   return p + (c <5 ? 10 : c > 10 ? 0 : 5);
 },0) ;
 return result/a.length===10?result+100:result;
}

간단하게 푼 풀이


Sorting on planet Twisted-3-7 ( 6 kyu )

문제

There is a planet… in a galaxy far far away. It is exactly like our planet, but it has one difference:

The values of the digits 3 and 7 are twisted. Our 3 means 7 on the planet Twisted-3-7. And 7 means 3.

Your task is to create a method, that can sort an array the way it would be sorted on Twisted-3-7.

7 Examples from a friend from Twisted-3-7:

[1,2,3,4,5,6,7,8,9] -> [1,2,7,4,5,6,3,8,9]
[12,13,14] -> [12,14,13]
[9,2,4,7,3] -> [2,7,4,3,9]

3과 7이 바뀌었다 가정하고 정렬하는 문제

풀이

function sortTwisted37(array) {
  function change(val) {
    let result = val.toString().split('');
    for ( let i = 0; i < result.length; i++ ) {
      if ( result[i] === '3' ) result[i] = '7';
      else if ( result[i] === '7' ) result[i] = '3';
    }
    return Number(result.join(''));
  }
  let arr = array.slice().map( a => change(a) );
  arr.sort((a,b) => a-b);
  return arr.map( a => change(a) )
}

3,7을 바꿔 정렬 후 다시 바꿔줌

다른 사람의 풀이

function sortTwisted37(array) {
  const MAPPING = {7:3,3:7};

  return array.slice().sort((a,b) => twist(a) - twist(b));

  function twist(number) {
    return parseInt(number.toString().replace(/[37]/g,a=>MAPPING[a]));
  }
}

replace로 동시에 처리하려는 방법을 생각했는데 이렇게 하는 방법이 있었다.

왕꿀팁


Integer depth ( 6 kyu )

문제

The depth of an integer n is defined to be how many multiples of n it is necessary to compute before all 10 digits have appeared at least once in some multiple.

example:

let see n=42

Multiple         value         digits     comment
42*1              42            2,4
42*2              84             8         4 existed
42*3              126           1,6        2 existed
42*4              168            -         all existed
42*5              210            0         2,1 existed
42*6              252            5         2 existed
42*7              294            9         2,4 existed
42*8              336            3         6 existed
42*9              378            7         3,8 existed

Looking at the above table under digits column you can find all the digits from 0 to 9, Hence it required 9 multiples of 42 to get all the digits. So the depth of 42 is 9. Write a function named computeDepth which computes the depth of its integer argument.Only positive numbers greater than zero will be passed as an input.

몇까지 곱했을 때 0부터 9까지 나오는지 구하는 문제

풀이

function computeDepth (x){
  let result = '', count =1
  while ( [...new Set(result)].length < 10 ) {
    result += x*count;
    count++;
  }
  return count-1;
}

Set을 이용해 중복을 제거해 length로 10이 될때까지 반복문을 돌며 count

다른 사람의 풀이

별로임


Simple reversed parenthesis ( 6 kyu )

문제

Given a string, return the minimal number of parenthesis reversals needed to make balanced parenthesis.

For example:

solve(")(") = 2 Because we need to reverse ")" to "(" and "(" to ")". These are 2 reversals.
solve("(((())") = 1 We need to reverse just one "(" parenthesis to make it balanced.
solve("(((") = -1 Not possible to form balanced parenthesis. Return -1.

괄호쌍을 맞추기 위해 최소 몇개의 괄호를 뒤집어야 하는지 구하는 문제

풀이

function solve(s) {
  while ( s.includes('()') ) {
    s = s.replace(/\(\)/g, '');
  }
  if ( s.length % 2 === 1 ) return -1;
  let count = 0;
  const obj = {
      ')(': 2,
      '((': 1,
      '))': 1,
    };
  for ( let i = 0; i <= s.length-2; i += 2 ) {
    count += obj[s[i]+s[i+1]]
  }
  return count;
}

맞는 괄호쌍이 없어질 때까지 while로 지워주고,

객체를 만들어 뒤집어야하는 개수를 미리 적어 놓고 찾아서 count에 더해줌

다른 사람의 풀이

function solve(s){
  if(s.length%2) return -1;
  var t=0, d=0;
  for(let c of s) {
    if(c==='(') d++;
    else if(d) d--;
    else {t++; d++;}
  }
  return t+d/2;
}

모르겠지만 신기하게 풀었다


159

2017 회고록

2018년 1월 1일 하루가 끝나갈 때쯤 올해의 첫 글을 쓴다.

원래 회고록이라면 한 해의 마지막인 어제 썼어야 하는게 맞는데, 뭐 이런저런 이유로 미루다가 결국 해가 바뀌고 나서 글을 쓰게 되었다. 사실 쓸말이 안떠오르는데 그냥 쓰고싶으니까 아무말이나 해야겠다.

일단 회고록이니 작년에 뭐했나 쓰면

1. 멋사

혼자서 뭘 모르는지도 몰랐는데 굉장히 좋은 경험이었다. 좋은 사람들이랑 같은 관심사로 공부하고 노는게 이렇게 재밌었다니 ㅋㅋ 사실 술먹는게 재밌었던 것 같다ㅋ

2. 스타트업 인턴

이것도 운이 좋았다. 다닐땐 몰랐는데 나오고 나니 좋은 경험이었던것 같다. 물론 아쉬운점도 있었지만. 내가 아직은 한참 부족하단걸 매일매일 느꼈던 것 같다.


3. 각종 밋업

9XD 밋업에 추첨으로 당첨돼서 강남 위워크에서 신선한 충격을 받았다. 여태 살면서 가장 유니크한 사람을 봤는데, 얘기해보고 싶었지만 쫄보라 말을걸진 못했다.ㅎㅎ

뷰 밋업도 두번이나 참가했다.

첫번째엔 가서 무슨 배짱인지도 모르겠지만, 라이트닝 토크때 앞에 나가서 헛소리하면서 관종짓도 했는데 지금 생각해보면 황당하다ㅋㅋㅋㅋ

두번째는 운영진으로가서 출첵하는걸로 운영진 명단에 이름 살짝 얹었다. 원래 집(인천)에서 멀리가는걸(서울) 좋아하지 않는데 한두곳 가다보니까 가면서 힘들어도 막상 가보면 사람들이랑 어울리는게 재밌어서 자꾸 가게되는것 같다. 물론 낯을 좀 가려서 초면에 말거는건 언제나 힘든것 같다.

올해엔 조금 더 와이드하게 활동하면서 많은 사람들이랑 알아가고 싶다. 특히 내 북마크에 자리잡고있는 블로그의 주인분들과 만나서 얘기해보고싶다.


4. 부트캠프

인턴을 한 뒤로 혼자 공부하는데 질려버린 나는 취업 전 마지막 공부라 생각하고 부트캠프에 신청해 현재 열심히 다니고 있다.

일정이 너무 헬이긴한데 같이하는 사람들이 좋아서 재밌게 하고있다. 아직 2주밖에 안지났지만, 이미 체력은 바닥을 찍어 자꾸 낮에도 지쳐버린다. 민폐 안되게 열심히 따라가야겠다. 솔직히 처음 시작할 때의 열정이 지금은 많이 사그라들었는데, 같이 하시는분들 보면 왠지 더 열심히 해야할 것 같은 기분이 팍팍들어서 잘 온것 같다.

끝까지 잘 마무리해서 올해 2분기에 좋은 결과 있으면 좋겠다.


5. 코인

11월부터 코인이란걸 했는데, 크게는 못벌었지만, 안잃고 꾸준히 잘 벌고있다. 덤으로 천국과 지옥을 분단위로 왔다갔다하는 경험은 정말 짜릿하다. 인생은 역시 한방이야


6. 장비 구매

작년 1월1일에 맥북 프로를 중고로 사서 딱 1년 썼다. 배터리 사이클이 15에서 261이 됐으니 꽤 열심히 쓴 것 같다. 회사 들어가면서 해피해킹을 샀고, 부트캠프를 들어가면서 트랙패드를 샀다. 아마 다음 회사 들어갈 때는 에어팟을 사지 않을까 싶다!

주절주절 생각나는대로 썼는데, 역시 난 글을 너무 못쓴다ㅋㅋㅋ. 글 못써도 코드 잘치면 장땡이지~ 는 코드도 못치는게 함정ㅎㅎ 추진력이 엄청난 사람은 아니라 한번에 전력질주는 안돼도 꾸준히 오래 달릴순 있을 것 같다. 계속하면 글도 코딩도 늘겠지뭐~~

이제 올해의 목표를 세우면, 다이어리 1년동안 꾸준히 쓰기. 구체적인 목표는 다이어리에쓰고 나만 봐야지. 요즘 바쁘지만 하루하루 재밌게 보내서 기분이 좋다. 연말까지 텐션 안떨어지게 열심히 살아야겠다.

이제 반오십 25살인데 뭔가 이루기에 적당한 나이인것 같다. 올해도 화이팅!


'끄적끄적' 카테고리의 다른 글

rg  (0) 2018.06.17
2017 회고록  (5) 2018.01.01
오늘의 성과  (3) 2017.12.05
개발 입문, 과정 + 세달간의 스타트업 인턴 회고  (9) 2017.10.01
  1. 2018.01.18 22:50

    비밀댓글입니다

  2. BlogIcon 솜눈 2018.01.19 11:06 신고

    ^^
    정말 감사합니다^^ 처음으로 티스토리에 블로그 만들었네요.
    진심으로 감사하다는 말씀드리고, 앞으로 블로그 열심히 활동하도록 하겠습니다.
    번창하세요!

+ Recent posts