웹표준이 요즘 대세이기는 하다. 나도 ms 브라우저 보다는 다른 브라우저가 끌리기 때문일지도 모른다.
개발자로서 어떤 사용자가 접근해도 디자인이 동일하고 불편함이 없는 것을 이끌어내는 것이 의무감 처럼 느껴진다. 
요즘 회사에서 게시판을 만들고 있는데 달력이 웹표준에 맞지 않아 jQuery UI에 있는 달력을 가져왔다. 
한글입력과 년도와 월을 나오게 하는데 고생좀 하였지만 그동안 몰랐던 css에 대해서도 많이 알게 되었다.



어떤 화면이 나올까? 색깔 있는것으로 CSS를 조정하였다. CSS float이 정렬인지 모르고 해메다니.. 
암튼 겨우 적용시킨 것 같다. 
프로그래밍 심리학
프로그래밍 심리학
제랄드 M. 와인버그 저
예스24 | 애드온2
프로그래밍을 열심히 공부해야 되는 시점(??)에 그냥 심심풀이로 읽어 볼 생각으로 고르게 된 것이다. 
지하철 다니면서 무료한 시간을 보내기 아주 좋겠다 싶었다. 
 하지만 책의 저자는 옛날(??) 사람이었고 PL/1이라는 언어와 포트란 언어 이런 것에 대해 예를 들어가면서
설명하였다. 그내용이 무엇인지 제대로 이해는 가지 않았지만 빠른 시간내에 읽고 있다. 출퇴근 시간안에 주로
그저 어떻게 나에게 도움을 줄까? 생각하면 그렇지 않고 소설을 읽는 느낌이지만 저자가 심리학적으로 
프로그래밍을 분석한 것에 대해 박수를 보내주고 싶다. 또한 심리적으로 비자아적인 프로그래밍을 하는가?
또한 거기에 대한 관리자들은 어떻게 생각하느냐를 잘 알려주고 싶다. 
 빠르게 읽고 다시 한 번 읽어보고 싶은 책이다. 
StringUtils : 문자열로 할 수 있는 수많은 일들. 너무 많다. 일일이 나열하지 않겠다.
HtmlUtils : HTML Escaping 도구

와  html태그를 다 제거해준다. 정말 짱인데...  

php만 있는 줄 알았는데 이런 것도 있구나.. 공부좀 더 해야 겠다
if(temp.length > 0){
temp = temp.split("-").join("'");
if(isNaN(temp)){
alert('전화번호는 숫자와 -만 가능합니다.');
document.form1.column4.focus();
    return;
}
}

if(temp.length > 0){
temp = temp.split(" ").join("");
if (temp.search(/(\S+)@(\S+)\.(\S+)/) == -1 ) 
{
alert('올바른 이메일 형식이 아닙니다.');
document.form1.column6.focus();
    return;    
}
}

apply 와 call 은 함수 실행시 함수 컨텍스트를 전달된 인자로 변경 시킬 수 있게 해준다.

함수 컨텍스트란 함수가 실행 될때 this 인자로 참조 하는 객체를 의미 한다.

단지 차이점은 call은 파라미터를 직접 넘기게 되고 apply이는 파라미터를 배열 형태로 넘길수 있다.

참고

IE 계열에서 전달되는 인자 값이 undefined 이면 에러가 난다.

fFunc.call(thisObject, a, b, c, d, ...);
fFunc.apply(thisObject, aArgs);

[출처] apply 와 call 에 대해서 알아 보자 (Web Programmer 2.0) |작성자 치토스

사용

<html>
<head>
<script>
  var o1 = {handle :'o1'};
  var o2 = {handle :'o2'};
  var o3 = {handle :'o3'};
  window.handle = 'window';
 
  function whoAmI(){
    return this.handle;
  }
  o1.identifyMe = whoAmI;

  alert(whoAmI());
  alert(o1.identifyMe());
  alert(whoAmI.call(o2));
  alert(whoAmI.apply(o3));

</script>
</head>
<body>
</body>
</html>

결과
window
o1
o2
o3

형태로 나온다. call과 apply 파라미터 인자 (객체)에 특정함수로 실행하는 것이다. 함수.call(객체)임 셈이다. 


할 일이 없다. 회사에서 가장 불안하게 느끼는 순간이다 졸립고 지루하고 일이라도 있음 메신저에 대화할 사람도 없는 것이다. 공부를 하려고 인터넷을 보는 것보다 책을 보는 것이 좋은데 몰래 강의를 볼까?
 우연히 okjsp를 보다가 짜장면과 개발자라는 글을 읽게 되었다. 흠.. 개발자 생각없이 수동적으로 일을 하는 것에 대한 비판이다. 나름대로 주장은 개발자라고 해서 마음대로 단무지나 젓가락이나 군만두를 주고 싶어도 그러지 못하는 경우도 있다. 어쨌든 수동적인 개발자를 비유하다가 도가 지나친 정도.. 어느정도 수긍이 가기는 한다.
 새삼 문서의 중요성을 느끼게 된다. 문서를 만드는 일을 싫어했는데 문서관리를 통해 어느 정도 클라이언트와 요구사항을 맞춰가는 일이 중요함을 깨달았다.

짜장면을 시켰다.

Situation 1 
배달이 왔다. Only 짜장면만.. '단무지는 왜 없죠?' 
'단무지 달라고 말 안했잖아요.'

Situation 2
배달이 다시왔다. 역시 이번에도 단무지만 가지고 왔다. 나무젓가락은? 
'나무젓가락 달라고 말 안했잖아요'

Situation 3 
짜장면을 보니 전에 보다 양이 부족해 보인다. 양이 부족한것 아닌가? 
'그런 이야기 하려면 처음부터 곱배기로 주문했어야죠'

Situation 4
짜장면을 비비고 맛을 보니 맛이 함량 미달이다. 이거 맛이 이상한데?
'짜장면 만들 줄 알아? 만들 줄도 모르면 말을 마셈'

Situatiopn 5
그리고 면이 불어서 떡이 진것을 지적했다.
'이거 수타면이거든요. 수타면은 내려칠때 각도가 어쩌구, 반죽이 저쩌구'

Situation 6
아무래도 먹을 수가 없어서 짬뽕으로 다시 재주문 했더니..
'이제까지 만든 짜장소스가 있기 때문에 짬뽕 만드는 것은 불가 하거든요'

Situation 7
'개발자하고 이야기 하는 것이 위의 상황과 같다' 라고 이야기 했더니..
'님하 그거는 개발자가 아니구 코더거든요. 시키는 대로만 하는..'

물론 아키텍트, 개발자, 코더, HTML 짜르는 알바. 날코딩하는 하드코어프로그래머, 스크립터 등등 여러가지 기능과 성격으로 나눠진다. 그런데 일반사람들 눈에는 모두 개발자라고 뭉뚱그려진다. 장교건 하사관이건 병이던 모두 군발이 아닌가.

그리고 짜장면 시키면 단무지하고 나무젓가락 기본으로 오고 서비스로 군만두 정도 바라는게 무리는 아닐 것이다. 그랬으면 좋겠다. 군만두 서비스까지는 안 바라더라도 단무지 정도는 말 안해도 갖다주는..

원문. 출처 http://searching.egloos.com/2355521




$.fn.disable = function(){
return this.each(function(){
       if(typeof this.disabled != 'undefined') this.disabled = true;
});
}

$.fn.extend({
      disable : function(){
return this.each(function(){
       if(typeof this.disabled != 'undefined') this.disabled = true;
}); 
      }
});

확장메서드의 중요한 규칙은 만약 함수에 특정한 값을 반환할 의도가 없다면 반환값으로 항상 확장 집합을 돌려줘야 한다. 그래야만 새로운 커맨드도 jQuery 커맨드 체인에서 사용할 수 있다. 

<html>
<head>
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript">
  // Your code goes here

  (function($){ //html시작시 실행되지 않고 선언해 놓은 것
$.say = function(what) {alert('I say ' + what);};

$.toFixedWidth = function(value, length, fill){
var result = value.toString();
if(!fill) fill = 0;
var padding = length - result.length;
if(padding < 0){
alert(-padding);
result = result.substr(-padding);
}else{
for( var n = 0; n < padding; n++)
result = fill + result;
}
return result; 
};
  }) (jQuery);


  jQuery(function($) { //html시작시 실행
$('#aaa').bind('click',function(){
$.say('hello');
});

alert($.toFixedWidth(3000, 3, 0));
  });
</script>
<style type="text/css">
    div.aaa { font-weight: bold; }
 </style>
</head>
<body>
<div id='aaa'>jquery</div>
</body>
</html>

 셀렉터  설명
 *  모든 엘리먼트와 일치
 E  태그명이 E인 모든 엘리먼트와 일치
 E F  E의 자손이면서 태그명이 F인 모든 엘리먼트와 일치
 E>F  E의 바로 아래 자식이면서 태그명이 F인 모든 엘리먼트와 일치
 E+F  E의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트 F와 일치
 E~F  E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F와 일치
 E:ha(F)  태그명이 F인 자손을 하나 이상 가지는 태그명이 E인 모든 엘리먼트 일치
 E.C  클래스명 C를 가지는 모든 엘리먼트 E와 일치 E의 생략은 *.C와 동일함
 E#I  아이디가 I인 엘리먼트 E와 일치. E의 생략은 *#I와 동일함.
 E[A]  어트리부트 A를 가지는 모든 엘리먼트 E와 일치
 E[A=V]  값이 V인 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
 E[A^=V]  값이 V로 시작하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
 E[A$=V]  값이 V로 끝나는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
 E[A*=V]  값이 V를 포함하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

+ Recent posts