삽질의 현장 478

[삽잡이::php]글자를 쪼개보자! substr( ), explode( )

Web에서 놀다보면 문자열을 가지고 놀아야할 때가 너무나도 많습니다. 예를 들어 브라우저에 뿌려진 값들을 DB에 값을 저장하려고 하는데한 문장안에서 여러 요소들을 뽑아낼 때?! 뭐... 예를 들어... 요즘(?) 유행하는 해시태그에서 데이터를 추출해야한다고 해봅시다.#을 기준으로 문자를 뽑으면 되겠지요. 너무 이상한 예시인가....시무룩... 그냥 이런식으로도 뽑을 수 있는 경우가 생길 수도 있다는 것입니다... 아무튼! 정신을 다시 차리고! php에서는 이렇게 문자들을 뽑아먹을 수 있는 여러 메서드들이 존재합니다. 우선, substr 메서드를 살펴보겠습니다. (출처_ PHP) 해당 함수는 문자열을 첫번째 인자로 받고추출할 문자열의 시작부터 그 길이까지 인자로 넣어주면그 조건에 맞는 문자열을 반환해줍니다..

[삽잡이::sql] Table의 Index를 살펴보자! SHOW INDEX

DB에서 원하는 데이터를 추출하기 위해서Query문을 작성합니다. 이 때 대용량으로 데이터를 가져온다고 생각해봅시다.여러 테이블들을 join 하고 sub로 두고 웩~ 조금이나마 빠르게 Query문을 수행하기 위해서index의 중요성을 지난번에 언급한 적이 있었습니다. 이 테이블에서의 Index 정보를 확인하겠다! 할 때에는과감하게 SHOW INDEX 을 사용하십시요 index에 대한 정보가 잘 나옵니다. SHOW INDEX returns table index information. The format resembles that of the SQLStatistics call in ODBC. This statement requires some privilege for any column in the tabl..

[삽잡이::sql] 보여줘 보여줘 너의 테이블~ SHOW CREATE TABLE

여러분은 당신의 출생의 비밀을 아십니까!?예~ 황새가 물고 왔대요~ 그렇다면 여러분이 사용하시고 계신 Database에 속한!Table의 출생 비밀을 아십니까! 뭐라고~ table의 출생비밀!? 우와 신기하네요~! 어떻게 그럴 수 있지!? 예 별거 아닙니다 여러분 1SHOW CREATE TABLE sap_db;cs한 문장이면 끝납니다. 간단하지요!? Table을 Create 할 때의 그 CREATE TABLE 문을 출력하는 것입니다.이건 무슨 말장난~ 이런식으로 볼 수 있게 됩니다.신기하지요!? 굳~

[삽잡이::sql] 테이블의 설명을 알아보자! DESC

DB를 접하고 계신 많은 분들은 desc을 내림차순으로 이해하시고 계십니다.예 그렇습니다. 맞습니다. 1SELECT idx, name, grade FROM students_db ORDER BY idx DESC;cs 이렇게 ORDER BY 정렬기준을 명시하여 정렬할 수 있습니다. DESC는 내림 차순을 의미하고ASC는 오름 차순을 의미합니다. 그런데 말입니다...DESC에는 다른 기능도 있다는 사실을 혹시 아시는지요... 어머나 놀라워라~ 하하....우리는 설명이라는 단어를 영어로 description 이라고들 부릅니다.우리가 잘 쓰는 줄임말!그리하여!!!! 예 그렇습니다.테이블에 대한 설명을 알아낼 수 있습니다. 이를 위해 테이블의 이름 앞에 사용하게 됩니다. 1DESC students_db;cs 이런식..

[삽잡이::sql] Primary Key 그리고 Unique Key

오늘은 어떤 제목을 쓸까 하다가..... Primary Key 그리고 Unique Key라고 작성했습니다. 이와 비슷하게 '소호대' 의 사랑 그리고 추억이라는 노래가 있군요. (출처_ youtube)푸하하 그러면 신나게 한번 알아봅시다 DB안에 있는 테이블에는 컬럼과 값들로 가득(?)합니다. 이런식으로 데이터들이 저장되어있습니다. 여기서 Primary Key란, Key에 해당하는 컬럼을 의미합니다. 만능 열쇠 키~ 예 맞습니다. 그 유명한 만능 열쇠 키는테이블의 각 레코드를 구별할 수 있는 역할을 하고 있습니다. 세계적인 Foot Ball Club!Shovel FC가 있다고 해봅시다. 예 그렇습니다. shovel은 우리나라 말로 삽을 말하죠 하하하 아무튼....소속팀에 등번호가 중복되는 팀은 없을 것입니..

[삽잡이::sql] 내가 작성한 Query는 어떻게 실행되려나... EXPLAIN !

EXPLAIN is used to obtain a query execution plan (that is, an explanation of how MySQL would execute a query).(출처_ MySQL) EXPLAIN은 쿼리 실행에 대한 계획을 알고 싶을 때 사용합니다.우와 삽잡이~~ 영어좀 하는데~~~ 하하하... 혼자놀기... 어떻게 DB가 실행될지 즉, 어떻게 Data를 가져올지에 대한 실행 계획을 확인할 수 있다는 것입니다. MySQL에서는 쿼리 옵티마이저(Optimizer)를 통해 빠르고 효율적으로 수행할 Query를 만들기 위해 최적화 작업을 시행합니다.이에 잘 구조화 된 SQL Query를 작성하여 Query문 변경 없이 잘! 사용하면 DBMS의 내부 엔진에 있는 옵티마이저가 ..

[삽잡이::sql] 여러 테이블을 가지고 놀자! JOIN

관계형 DB를 가지고 놀 때(?)하나의 테이블을 통해서 데이터를 가공하고 추출하는 경우도 있지만, 여러 테이블들과 Join하여 데이터를 가공하여 추출해야할 때가 있습니다. 데이터를 얻기 위해 하나의 테이블만으로는 부족할 수가 있기 때문입니다. 다들 아시는 영어 단어입니다.join~ 너와 나의 연결 고리 예 그렇습니다 JOIN 입니다~ 여러분~ 둘이 합쳐서 이쁜 데이터를 추출합니다~ SQL에서 JOIN은 '집합'으로 바라보시고 이해하시면 쉽습니다! 집합이라면, 교집합, 합집합 이런거겠구나!!! 우선 INNER JOIN에 대해서 알아봅시다. 여기... 삽질의 명성! 삽질과에 학부 명단이 있습니다. 이번에 삽질 평가를 했는데, 제대로 삽질을 하지 못한 F 학점을 받은 학생들을 추리려합니다. 아이고 '화석' 님..

[삽잡이::sql] 데이터베이스를 편하게 관리하고 다루자! SQLyog

MySQL과 같은 데이터베이스를 사용해보신 분들은 CMD 창을 사용해보셨을 것입니다. 그런데, 아주 이쁘게! DB를 관리하고 조작하는 등등을 도와주는 프로그램 친구를 소개해드리려고 합니다. 안녕 난 SQLyog라는 프로그램이야. 돌고래같이 생겼지우와 돌고래 아니니? 아니야 ^^;; 나를 잘 알고 싶으면 공식 사이트(https://www.webyog.com/)를 확인해볼래? 난 MySQL 서버의 데이터들을 관리하고 모니터링 할 수 있는 Tool이야! 너 참 좋은 녀석이구나!? 설치를 하게 되면 이와 같은 화면이 반겨줄 것입니다. DB 안의 Data를 사용하기 위해서는 DB 저장소가 어디있는지 명시해줘야겠지요.또한, 관리하기 위해 사용자 이름과 비밀번호 등이 필요할 것입니다. 이런식으로 Query문을 작성하..

[삽잡이::php] php 설정을 해볼까? php.ini

php라는 언어를 사용하여 이것 저것 해보려고 하는데,Error가 발생하는것 아니겠습니까... 그게 문제가 아니에요... Error는 해결하면 되지요... 예 맞습니다. 그렇습니다.그런데, Log가 안나오는 것 아니겠습니까!!!!Log가 찍혀야 뭘 확인하던가 하지.... 예... 그래서 php.ini 파일을 확인해봤습니다.php 관련 설정들을 다룰 수 있는 파일입니다.조심히 다뤄야겠지요!? 흠... 에러가 발생하면 해당 경로에 저장하도록 할 것입니다. 예 그렇습니다... On으로 되있습니다. 그런데, 왜 안나오는 것일까요!?!?!?!? 예 그렇습니다.... php.ini 파일에 명시한 경로와 달리 'logs'라는 폴더가 없었기 때문입니다. 난 자동으로 생성되는줄 알았지... Apache를 재실행 해고 확..

[삽잡이::java] Java코드로 날짜를 랜덤하게 생성해보자!

지난 시간에 이어 이번에는 날짜를 랜덤하게 가져오는 장난질을 해보려고합니다. 날짜를 랜덤으로 생성하고자삽질의 대가 무식한 삽잡이는 이와 같은 구상을 하였습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152public class RandomGame { private int iUserBirthMonth; private int iUserBirthDay; public int getUserBirthMonth() { return this.iUserBirthMonth; } public int getUserBirthDay() { return this.iUserBirthDay; } public ..