요약

  • 스텍오버플로 등(온라인 학습 커뮤니티) 를 통해 코더들이 많이 출현함
  • 설문 응답자 중 53% 원격작업 선호, 75.2%는 새로운 일자리에 대한 관심
  • 언어로 봤을때 급여는 JVM 기반의 Clojure, Goole의 Go, Scala 순으로 높음
  • 자바 스크립트 (62.5 %), SQL (51.2), 자바 (39.7)가 가장 많이 사용되는 프로그래밍 언어
  • 기업체에서 가장 원하는 언어는 Python (20.8 %), JavaScript (18.6), Go (13.5) 이며
  • 페이스 북의 React (66.9 %), Node.js (62.1), Microsoft의 .Net Core (60.9) 등이 가장 많이 사용 되었습니다.
  • 스텍오버플로 사용 성비는 88.6 %가 남성, 7.6 %가 여성으로 나타났습니다.


전문


러스트, 리엑트, 자바 스크립트, 파이썬 사용자 중 응답자의 50 % 이상이 5년 정도의 코딩 경력을 가지고 있습니다.


일부 서클에서는 어린 시절부터 소프트웨어 개발자가 코딩 작업을 수행하고 있다는 인식이있을 수 있습니다. 

그러나 최근의 개발자 설문 조사에서 스택 오버 플로우 (Stack Overflow)라는 온라인 프로그래밍 커뮤니티를 통해 많은 코더들이 나중에 많이 출현했다고합니다.


1 월과 2 월에 전세계 64,000 명의 개발자가 참가한 연례 설문 조사에는 다양한 경험담이 이야기 오갔는데... 온라인 과정과 코딩 부트 캠프 덕분에 프로그래밍 경험이 거의 없거나 거의없는 어른들도 이제는 개발자로서의 경력으로 쉽게 전환 할 수 있다고 Stack Overflow는 말했습니다. 응답자 중 50 % 이상이 전문적으로 약 5 년 동안 코딩을 수행 한 반면 7.5 %는 20 년 이상 코딩을 수행 한 것으로 나타났습니다.


스택 오버플로 (Stack Overflow)의 커뮤니티 제품 담당 부사장 인 제이 핸런 (Jay Hanlon)은 전반적인 경험과 관련한 결과에 놀라면서 "개발자들이 대부분 사람들이하지 못하는 방식으로하는 것을 좋아한다는 것을 알 수 있습니다. 그는 젊은 개발자가 설문 조사에 참여할 확률이 높을수록 수치가 왜곡 될 수 있다고 덧붙였다.


이 설문 조사는 고용에서 선호되고 무시 된 소프트웨어 개발 기술에 이르기까지 다양한 주제를 다루었습니다. 스택 오버플로는 개발자 중 13.1 %만이 적극적으로 구직 활동을하고 있지만 75.2 %는 새로운 일자리에 대한 관심이 있다는 것을 발견했습니다. 원격으로 작업 할 수있는 기회는 개발자들에게 큰 호응을 얻었으며 53.3 %는이를 최우선 순위라고했습니다. 많은 개발자들은 응답자의 11.6 %가 낮은 급여가 많았으며 44.9 %는 다소 낮은 급여가 있었다고 대답하였습니다.


개발자들이 가장 많은 돈을 벌기를 원한다면 전세계에서 배우는 기술은 JVM을 위한 클로져 다. 미국에서는 Google의 Go와 스칼라가 가장 높은 월급을 낼 수 있습니다. "전세계에서 Clojure를 고용 한 개발자는 평균 월급이 72,000 달러로 가장 높습니다"라고 Stack Overflow는 말했습니다. Rust는 65,714 달러로 뒤를이었다. "미국에서 스칼라를 사용하는 개발자와 Go를 사용하는 개발자는 평균 급여가 110,000 달러로 가장 높습니다."


Stack Overflow는 또한 개발자들에게 그들이 사용하는 언어와 그들이 좋아하고 싫어하는 언어를 물었다. 자바 스크립트 (62.5 %), SQL (51.2), 자바 (39.7)가 가장 많이 사용되는 프로그래밍 언어이다. 그러나 Rust는 73.1 %의 사용자가 계속 작업하기를 원했으며 SmallTalk (67), TypeScript (64.1)가 가장 많이 사용되었습니다. "이것은 비례 적으로 더 많은 개발자들이 다른 언어보다 [Rust]으로 계속 작업하기를 원한다는 의미입니다. "작년에 가장 인기있는 언어 인 스위프트는 4 위를 차지했습니다."


가장 원하는 언어는 Python (20.8 %), JavaScript (18.6), Go (13.5)입니다. "올해 파이썬은 작년에 가장 많이 쓰였던 언어로 (언어 개발자들이 올해보다 더 많이 사용하고 싶어했던 것처럼) 작년에 네 번째 순위에 올랐습니다."라고 Stack Overflow는 말했습니다. Hanlon은 파이썬의 데이터 과학 분야에서의 사용과 개발자들 사이에 인기가 높아지고 있다고 언급했다. 개발자들이 현재 사용하고 있지만 놓기를 원하는 언어 중 가장 두려운 언어 목록은 Visual Basic 6 (88.3 %), VBA (Visual Basic for Applications) 및 CoffeeScript가 그 뒤를이었습니다.


페이스 북의 React (66.9 %), Node.js (62.1), Microsoft의 .Net Core (60.9) 등이 가장 많이 사용되었다. Node.js는 또한 가장 원하는 프레임 워크 (22.2), 앵귤러 (19.4) 및 리 액토 (18.9) 순으로 제목을.습니다. 가장 두려운 프레임 워크는 Cordova (61.2), Xamarin (51.3) 및 Hadoop (51.2)이었습니다.


스택 오버 플로우는 응답자의 72.6 %가 웹용, 28.9 %는 데스크톱 애플리케이션, 23 %는 모바일 개발자, 14.4 %는 데이터베이스 관리자로 분류 된 것으로 나타났습니다.


한쪽 편재 된 통계적 스택 오버플로는 성별에 관계가있다. 88.6 %가 남성, 7.6 %가 여성, 2.6 %가 자신을 다른 성별 부적합한 여성 또는 트랜스젠더로 분류했다. 여전히 여성 참여자의 비율은 여성이 5.6 %를 차지한 작년보다 낫습니다.



출처


http://www.javaworld.com/article/3184396/careers/rust-react-javascript-python-top-stack-overflow-survey.html

"call 과 apply의 차이점 ? " ... 요약하면


동작은 동일, 단 2번째 파라미터가 다름.


출처 : http://odetocode.com/blogs/scott/archive/2007/07/04/function-apply-and-function-call-in-javascript.aspx


In order to explain how the createDelegate function works in the last post, we have to understand JavaScript closures and Function.apply(). The apply() method is the easiest subject to tackle, so we'll start there and work up.

Every function in JavaScript has a number of attached methods, including toString()call(), and apply(). If it sounds odd to you that a function might have its own methods - then remember that every function in JavaScript is an object. Read this article for a refresher. You might also wonder what the difference is between a function and a method. I believe the descriptors 'function' and 'method' are just a JavaScript convention. Functions stand on their own (there is an alert()function, for example), while methods are functions inside an object's dictionary, and we invoke them through the object reference. Every JavaScript object has atoString() method, for example, and we can use the toString() method on a function object to see its source code:

function foo()
{
    alert('x');
}
 
alert(foo.toString());

Because functions are objects they can have their own properties and methods, and we can treat them like data. "Functions as data" is important to remember for the next post, too, but for now we'll focus on two of a function's methods: apply(), and its counterpart: call().

Let's start with the following code:

var x = 10;
 
function f()
{
    alert(this.x);
}
 
f();

Here we have a global function by the name of f(). f() uses the this keyword to reference x, but notice we don't invoke the function through an instance of an object. So what object does this reference? this will reference the global object. The global object is where we defined the variable x. The above code does work and will show the value 10 in a dialog.

Both call() and apply() are methods we can use to assign the this pointer for the duration of a method invocation. As an example, here is how we could use thecall() method:

var x = 10;
var o = { x: 15 };
 
function f()
{
    alert(this.x);
}
 
f();
f.call(o);

The first invocation of f() will display the value of 10, because this references the global object. The second invocation (via the call method) however, will display the value 15. 15 is the value of the x property inside object o. The call() method invokes the function and uses its first parameter as the this pointer inside the body of the function. In other words - we've told the runtime what object to reference as this while executing inside of function f().

Fiddling with the this pointer might sound funny, even perverse, to C++, Java, and C# programmers. What's next? Dogs sleeping with cats? Working nVidia drivers for Windows Vista? It's all part of the fun that is ECMAScript.

We can also pass arguments to the target function via call():

var x = 10;
var o = { x: 15 };
function f(message)
{
    alert(message);
    alert(this.x);
}
 
f("invoking f");
f.call(o, "invoking f via call");

The apply() method is identical to call(), except apply() requires an array as the second parameter. The array represents the arguments for the target method.

var x = 10;
var o = { x: 15 };
function f(message)
{
    alert(message);
    alert(this.x);
}
 
f("invoking f");
f.apply(o, ["invoking f through apply"]);

The apply() method is useful because we can build a function like createDelegate (from the last post) that doesn't care about the signature of the target method. The function can use apply() to pass all additional arguments to the target method via an array. Are we getting close to a curry function?

var o = { x: 15 };
 
function f1(message1)
{
    alert(message1 + this.x);
}
 
function f2(message1, message2)
{
    alert(message1 + (this.x * this.x) + message2);
}
 
function g(object, func, args)
{
    func.apply(object, args);
}
 
g(o, f1, ["the value of x = "]);
g(o, f2, ["the value of x squared = ", ". Wow!"]);

The problem here is the awkward syntax. We are forcing the caller to stuff arguments into an array just so we call apply(). Fortunately, there is a way to make the syntax easier, but we have to introduce one more topic: the arguments identifier.

In JavaScript, every function essentially has a variable length argument list. The means we can pass 5 parameters to a function even if the function only uses one argument. The following runs without error and displays "H":

function f(message)
{
    alert(message);
}
 
f("H", "e", "l", "l", "o");

If we did want to access the other arguments from inside f(), we can use the arguments keyword. arguments references an Arguments object, which has a length property and feels like an array.

function f(message)
{
    // message param is the same as arguments[0]   
    
    for(var i = 1; i < arguments.length; i++)
    {
        message += arguments[i];
    }
     
    alert(message);
}
 
// this will say "Hello"
f("H", "e", "l", "l", "o");

Just so you know, arguments is technically not an array, even if it walks and talks like one. arguments has a length property but no splitpush, or pop methods. What we can do with arguments inside our previous g() function is copy the incoming arguments after arguments[1] into an array object that we pass to apply.

var o = { x: 15 };
 
function f(message1, message2)
{
    alert(message1 + (this.x * this.x) + message2);
}
 
function g(object, func)
{          
    // arguments[0] == object
    // arguments[1] == func
     
     
    var args = []; // empty array
    // copy all other arguments we want to "pass through"
    for(var i = 2; i < arguments.length; i++)
    {
        args.push(arguments[i]);
    }
 
    func.apply(object, args);
}
 
g(o, f, "The value of x squared = ", ". Wow!");

When we invoke g(), we can pass additional arguments as parameters instead of stuffing the arguments into an array.

At this point, we have the theoretical knowledge needed to understand call and apply, but perhaps you are already asking a question: what if I don't want to immediately invoke the target function f()? What if I just want to arrange all the players in this little drama so that I can invoke f() at some later point (as an event handler, for example), but still have this referencing the desired object (whithout tracking the desired object myself). In an upcoming post, we'll see how to combine our Function.apply and arguments knowledge with the concept of nested functions and closures to answer this very question.

underscore 메소드 정리

https://github.com/epeli/underscore.string


우리나라 사정상( 한글을 사용한다는 점) 의외로 쓰기 애매한 메소드가 많은것 같다.


개인적으로 프로젝트에서 쓸만한 것만 표시해 봤다.



method

priority

description

camelize

0

대쉬 또는 언더스코아 문자열을 제거하고 카멜케이스 형태로 보여준다(첫문자 유지)
capitalize

0

단어 첫번 째 대문자화
chars

1

한 단어로 자르기
chop

0

글자수 대로 자르기
classify

0

카멜 케이스 형태로 전환한다 (첫문자는 항상 대문자)
clean

0

앞 뒤 중간에 공백 제거, 중간은 1글자만 공백 유지
count

1

문자열에 특정 단어 포함 횟수 계산
dasherize

0

카멜 케이스 형태를 데쉬 연결로  전환한다(대쉬로 시작함)
endsWith

1

문자열이 특정 단어로 끝나는지 여부
escapeHTML

1

특수문자 교체
humanize

0

사람이 읽기 편한 형태로 전환한다 ( 첫문자 대문자화, 양쪽 공백 제거, 대쉬/언더스코어 공백으로 대치)
include

1

단어 포함여부 확인
insert

1

특정 위치에 문자열 삽입
isBlank

1

공백 여부 확인
join

1

문자열 합치기
levenshtein

0

문자열 다름 수치
lines

0

줄바꿈이 포함되면 나눈 이후 배열에 넣어준다
lpad

1

왼쪽 PAD
lrpad

0

양쪽 PAD
ltrim

0

왼쪽만 공백제거
numberFormat

1

숫자 컴마처리
pad

0

지정 길이 만큼 특정 단어로 채워 넣는다
prune

0

truncate 업그레이드 버전 / 단어가 중간에 짤리는 것을 방지 이전에서 자름 처리
quote

0

입력 단어에 따옴표를 넣어준다
repeat

0

입력 단어를 n번 반복한다
reverse

0

단어를 역전(뒤집어)한다
rpad

1

오른쪽 PAD
rtrim

0

오른쪽만 공백제거
slugify

0

URL에 넣을 수 있는 영단어로 변환한다 ( 공백 대쉬교체, 악센트 제거, 특수문자 제거)
splice

0

특정 위치의 단어를 교체한다
sprintf

1

c의 문자열 포멧팅과 유사
startsWith

1

문자열이 특정 단어로 시작하는지 여부
stripTags

1

태그를 제거한 문자열을 반환한다
strLeft

0

좌측 기준 특정 문자가 처음 나오는 곳 이후의 왼쪽 문자열 반환
strLeftBack

0

우측 기준 특정 문자가 처음 나오는 곳 이후의 왼쪽 문자열 반환
strRight

0

좌측 기준 특정 문자가 처음 나오는 곳 이후의 오른쪽 문자열 반환
strRightBack

0

우측 기준 특정 문자가 처음 나오는 곳 이후의 오른쪽 문자열 반환
succ

0

단어의 다음 알파벳을 반환한다
surround

0

입력 단어를 특정 단어로 둘러 쌓은다.
swapCase

0

대소문자 교체
titleize

0

단어 시작 알파벳을 대문자로 변환한다
toBoolean

1

문자열을 boolean 형태로 변환해 준다.
toNumber

1

문자열을 숫자로 바꿔준다(소숫점아래 지정 가능, 변환 불가시 NaN 반환)
toSentence

0

문자열 배열을 사람이 읽기 편한 형태로 연결하여 보여준다( , , and )
toSentenceSerial

0

문자열 배열을 사람이 읽기 편한 형태로 연결하여 보여준다 ( 무조건 , 를 넣어준다 )
trim

1

공백제거, 특정단어 양쪽끝 제거기능 포함
truncate

1

지정한 길이로 말줄임처리
underscored

0

카멜 케이스 형태를 소문자/언더스코어 연결로  전환한다
unescapeHTML

1

교체된 특수문자를 돌려 놓음
unquote

0

입력 단어의 따옴표를 제거한다
words

0

단어를 공백 또는 특정 문자기준으로 자른 이후 배열에 넣어 반환


자바 스크립트로 만들은 로또 프로그램 입니다.


TEST_LOTTO.zip

( 실행 방법 : 압축 해제 이후 lotto.html 을 실행하면 됩니다.)

주요 기능

- 로또 번호 생성

- 히스토리 기능

추후에 반응 좋으면 여러가지 기능을 넣어 지속적으로 배포 하도록 하겠습니다.

궁금사항이나 건의 사항은 리플로 부탁 드리겠습니다.


+ Recent posts