삽질의 현장 478

[삽잡이::java] 공백따위 없애버려! trim()

코드를 구현하는 도중 문자열을 받아와서각각의 Case에 맞게 처리를 해야할 일이 있었습니다. Java 7 이상부터는 String 타입도 Switch문에서 사용이 가능하기에 사용했는데,이상하게도 원하는 Case로 접근이 불가능한 문제가 발생하였습니다. String 타입의 '삽잡이' 라는 문자열을 받아왔다고 가정해보겠습니다. 1234567891011switch( str ) { case "삽잡이": break; case "shovelMan": //... break; default: //... break;} 하지만, 정작 switch문은 default로 향하는 것 아니겠습니까...답답했습니다.혹시나해서 Java 버전까지 확인해봤습니다. 로그를 찍는데도'삽잡이 '가 정확히 나오는데...왜.. 왜...!!! 그런데..

[삽잡이::java] switch문은 정수뿐만 아니라 문자열도 올 수 있다.

한동안 더위와 그 외 여러 상황들로 방황을 하다가오랜만에 포스팅을 하게됬습니다...반성해라 삽잡이~~ 핑계일 뿐이야~~ 아무튼... 좀 지난 이야기이지만, Java7 이후로는 switch 문을 사용할 때'문자열'을 사용할 수 있게 되었습니다.1234567891011switch( str ) { case "삽잡이": //... break; case "shovelMan": //... break; default: //... break;}cs이처럼 String Type이 switch문의 괄호 항목 즉, Expression 에 들어올 수 있게 된 것입니다. 기존에 String형을 Switch문을 사용할 수 없었기 때문에if - else if - else 을 사용했었는데요,이제 깔끔하게 Switch문을 사용할 수 있..

[삽잡이::java] 나만의 스타일로! 오버라이딩(Overriding)

이리 저리, 요리 조리복잡한 생각들과 어떻게 해결할까 하는 고민들로머리가 뽀글뽀글해지기 시작하면...모든 사람들이 다들 그러실지는 모르겠으나삽잡이는 판단력이 흐려지는 듯합니다. 하하... 그래서 그런지 정신없이 코딩을 하다보면,중복되는 코드들이 너무도 많이 속출되고,내가 정녕 객체지향적인 코드를 작성하고 있나 싶을정도로스파게티 코드들을 만들고 있더군요... 그래서, 멀어져가는 정신을 끄댕겨잡고(?) 머리도 식히고 정리할겸! 오버라이딩에 대해서생각해보는 시간을 가지고자합니다. 부모로부터 불려받은 메서드를나만의 스타일로 재정의하는 작업을오버라이딩이라고 부릅니다. 예전에 면접보러가서 오버로딩과 오버라이딩에 대해서 바꿔서 말했던 추억이 생각나군요...하하하... 아무튼... 오버라이딩을 사용하는 이유는 뭘까요?..

[삽잡이::php] 문자를 치환하라! str_replace()

URL에 같이 딸려오는 파라메터들...이와 같은 파라메터들을 추출하여 사용할 수 있습니다. 그런데, 이 URL에는 한글과 특수문자들이 포함될 수 없기에 우리는 URL을 인코딩해서 보내줘야합니다. 이와 같이 날라온 memo의 값을$sMemo라는 변수에 담았다고 가정합시다. 1234cs 과연 출력은 어찌되었을까요? 잉?? 뭐야아~~ > 가 &rt; 로 바뀌었습니다... 예.. 그래요 아까 말씀드린 것과 같이 URL의 특수문자가 인코딩이 된 것입니다. 그런데, >를 꼭 사용해야한다면!? 이때 str_replace()함수를 사용하면 됩니다. 이 친구는 바로!문자를 치환해줄 수 있는 php 함수입니다. [출처_ PHP] 이와같이 치환할 문자열을 첫번째 인자로,대체할 문자를 두번째 인자로,마지막으로 문자열을 뒤질(..

[삽잡이::html] GNB와 LNB에 대해서

웹 페이지들을 들어가게 되면메뉴들을 접할 수 있습니다.이때 이 메뉴들에도 특징들에 따라명칭을 다르게 부른다는 사실을 아십니까!?오~ 뭐야~ 뭐야~ 위의 그림과 같이 3가지의 Main Menu들이 있다고 생각해봅시다.이 Main Menu안에는 3가지의 Sub Menu들이 존재합니다. 이들을 우리는 아래와 같은 명칭으로 이해할 수 있습니다. GNB란, Global Navigation Bar의 약자입니다.Main 메뉴라고 생각하시면 될 듯합니다. 어떠한 메뉴를 누르더라도 변화 없이 고정되어있는 메뉴말입니다.즉, 모든 부분에 나타나고 있는 전역적인 Navigation Bar입니다. LNB란, Local Navigation Bar의 약자입니다.GNB에 속한 Menu Bar를 누를 경우소제목 형식으로 나오는 Sub..

[삽잡이::용어] scale up과 scale out에 대해서

scale이라는 단어의 뜻은 아래와 같습니다. '일이나 계획따위의 틀이나 범위' 라는 국어 사전 내용도 적혀있군요. 팀 내에 더 좋은 서버 및 장비들로 대체하여 성능을 향상시키는 것을Scale Up이라고 합니다.말 그대로 좋은 녀석들을 가져오는 것입니다.하지만, 그 만큼의 비용이 들어간다는 점~ (하하 호호) scale out은 업무를 여러 서버로 분산하여 처리하겠다는 용어입니다.하지만, 설계가 그 만큼 어렵겠지요. 굳~

[삽잡이::sql] 두 종류의 COUNT를 한번에 얻어보자! 특정 조건 Count

Query문을 작성하며 원하는 결과가 포함된 데이터의 개수를 구하기 위해COUNT()를 사용하곤 합니다. 그런데, 예를 들어봅시다. 이와 같은 Table이 있는데,해당 Table의 전체 개수와 Age가 10대인 데이터의 개수만을 구하기 위해서는어떻게 해야할까요?? 물론, 쿼리를 두번 날릴 수 있지만,성능을 위해 한번에 처리하는 것이 좋을 것입니다.(물론, 저정도 양이라면... 이런 고민 조차가...) 1SELECT COUNT(*), COUNT(IF(age > 20, age, NULL)) FROM info_table;cs 이와 같이 전체 데이터의 개수와,IF문을 사용하여 age가 10대인 데이터의 개수를한 Query에서 동시에 구할 수 있습니다. 예... 그렇습니다.굳~

[삽잡이::etc] AS-IS와 TO-BE

as-is 란, 지금 현재 '있는 그대로'를 의미합니다. 즉, 현재 업무 프로세스에 대한 분석을 의미합니다.to-be란, '미래의' 라는 의미를 가지고 있습니다. 즉, 이 둘은 현재의 상태(as-is)와 미래에 원하는 상태(to-be) 를 의미한다 이겁니다. 뭐 AS-IS TO-BE 분석이라고 하면서많은 분들이 자세하게 내용을 작성해주셨으니...삽잡이는 저 정도로... 사실, 프로그램에 대해 개선하고자 할 때,많이들 as-is 상태와 to-be 상태로 계획서를 작성하곤 합니다. 수정 전 상태의 as-is와앞으로 수정을 통해 개선되었을 상태의 to-be이렇게 말이죠! 굳~

[삽잡이::etc] 백슬래시(backslash)와 escape sequence에 대해서

백슬래시는 상황에 따라 이와 같이 두가지로 나타나게 됩니다.이 백슬래시는 프로그래밍 언어에서 escape 기능을 가지고 있습니다. escape는 말 그대로탈출하다는 의미를 가지고 있습니다. escape sequence 는 기존 의미를 탈출한 특수한 기능을 위해 사용하는 약속입니다. 즉, 기존 프로그래밍 언어를 통해 코드를 작성해가며기존에 정해진 약속에 의해 표현이 곤란한 문자들을 표현한다던지,특정 기능을 제공할 수 있습니다. 예를 들어 문자를 출력하는 경우를 생각해보겠습니다. 1System.out.println("Hello! My name is "삽잡이"!");cs 이와 같이 출력하고자 하는 문자열에 큰 따옴표("")가 존재한다면? 프로그래밍 언어를 사용하며 정해진 약속중 하나는'문자열 출력은 큰 따옴표..

[삽잡이::sql]mysql 테이블을 가지고 놀자! ALTER TABLE

기존에 존재하는 테이블에깜빡하고 하나의 컬럼을 빼먹은 적이 있습니다. 어떻게해야할까요? 다시 만들어야될까요?그러기에는 기존에 존재하는 데이터들이 너무 아까웠습니다. 물론, 다른 방법들도 존재하지만,컬럼을 추가하고 앞으로 들어오는 데이터에는추가된 컬럼의 값도 저장하기로 결정하였습니다. 좋아좋아~ 추가를 해보자~ '변하다', '바꾸다' 등의 실제 의미를 가지고 있는 ALTER 명령어는말 그대로 DB의 구조를 변경하는데 도움을 주는 녀석입니다. 그 중에서 우리는 Table에 Column을 추가하는 것이니ALTER TABLE 명령어를 사용하면 되겠지요. 1ALTER TABLE shovelman_info ADD COLUMN nickname varchar(25) NOT NULL;cs 이처럼 간단하게ALTER TAB..