2.28.2017

2017.02.28 스터디


  • 회원가입 했을 때 db에 데이터가 입력되지 않는 오류 수정
SQLyog에 들어가 opentutorials를 누른 후
SELECT * FROM user
입력하니 db에 값이 입력되기 시작함.
  • 로그인 시 발생하는 오류 수정
로그인 시 id 값과 password값이 같지 않다고 오류가 떴는데 hash때문이였음

수정 후 성공적으로 작동함
  • 쓰기 눌렀을 때 실행되지 않는 이유 알아냄
INSERT INTO article 이 아닌 INSERT INTO topic 으로 되어있었음.
그러나 내 db에는 topic이라는 table이 없음.


  • 새로 배운 것!!



아이디를 몇 자 이상 입력해야 회원가입이 되는 지를 배웠고
tap 바를 자신이 원하는 대로 이동시킬 수 있는 방법을 배웠다.

2.20.2017

MySQL 실습

<생활코딩 웹>
https://opentutorials.org/course/1688/9398


<?php
$conn = mysqli_connect('localhost','root', '111111(이부분이 비밀번호!)');
$row = mysqli_Fetch_assoc($result);
echo $row['id'];
echo $row['title'];
echo "<br/>";
?>

error.log라는 파일을 atom으로 들어감

======================================================


%제목% = include 제목
%제목 = 제목으로 끝남
제목% = 제목으로 시작함


<?php
$conn = mysqli_connect('localhost','root', '') or die('db fail');
mysqli_select_db($conn, "c1");
$result = mysqli_query($conn, "SELECT * FROM article WHERE title LIKE '%제목' ORDER BY id DESC LIMIT 100");
while ( $row = mysqli_fetch_assoc($result) ) {
  echo $row['id'];
  echo " : ";
  echo $row['title'];
  echo " / ";
  echo $row['regDate'];
  echo "<hr>";
}
?>

<?php
$conn = mysqli_connect('localhost','root', '');
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
$row = mysqli_Fetch_assoc($result);
echo $row['id'];
echo $row['title'];
echo "<br/>";


$row = mysqli_Fetch_assoc($result);
echo $row['id'];
echo $row['title'];
echo "<br/>";
?>

<?php
$conn = mysqli_connect('localhost','root', '');
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
while ($row = mysqli_Fetch_assoc($result)) {
echo $row['id'];
echo $row['title'];
echo "<br/>";}

?>

<?php
while ($row = mysqli_Fetch_assoc($result)) {
echo '<li><a href="http://localhost/index.php?id='.$row[id].'">'.$row['title'].'</a></li>'."\n";
}
?>

==============================================
<ol>_</ol>

of(empty($_GET['id']) ===false){
$sql = 'SELECT * FROM topic WHERE id='.$_GET['id'];
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_Assoc($result);
echo '<h2>'.$row['title'].'</h2>';
echo $row['description'];
}
==============================================
text field
가 뭔지 잘 모르므로 앞에 제목을 붙여준다
<body>
<form action = "http://localhost/php/3.php" method = "GET">
<p>제목 : <input type = "text" name = "title"> </p>
<p>본문 : <textarea></textarea> </p>
<input type = "submit">
</form>
</body>

<body>
<form action = "http://localhost/php/3.php" method = "GET">
<p>제목 : <input type = "text" name = "title"> </p>
<p>본문 : <textarea name = "description"></textarea> </p>
<input type = "submit">
</form>
</body>
==============================================
실습 5 추가!!
<a href = "http"//localhost/write/php">쓰기</a>
$sql = "INSERT INTO topic(title,description,author,created)VALUES('".$_POST['title']."', '".$_POST['description']."', '".$_POST['author']."', now())";
$result = mysqli_query($conn, $sql);
header('Location: http://localhost/index.php');
?>

==============================================
http://localhost:8081/index.php


<?php
$conn = mysqli_connect('localhost','root', '');
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
while ($row = mysqli_Fetch_assoc($result)) {
echo $row['id'];
echo $row['title'];
echo "<br/>";}

?>


<?php
$conn = mysqli_connect('localhost','root','');
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
while ($row = mysqli_query(

데이터베이스 이론

실제 정보 데이터베이스에 위치
데이터베이스 - 안전, 빠름(인덱스 이용), 프로그래밍적 제어가능(SQL)

MYSQL - open source (Wordpress같은거)
MariaDB == MYSQL

Structured 구조화된
structure? table (excel)

Database VS EXCEL
Structured Query Language(=컴퓨터에게 구조화된 정보를 질의하는 컴퓨터 언어)


MYSQL Client <=> MYSQL Server
웹 브라우저 -> webserver -> php -> MySQL

============================================

server and client

MYSQL monitor
운영체제 별로!

1. window
window 키 누르며 r 누르기
cmd 입력하고 확인 누름

검색에 명령 프롬프트 검색 후 실행

2. mac
spotlight 에 terminal 누르고 enter

window는 명령 프롬프트, mac은 terminal

3.ubuntu
terinal 입력

응용프로그램에서 mysql 우클릭 -> 속성
위치 복사 후 명령프롬프트에
cd 후 붙여넣기 (마우스 우클릭으로)

cd c:\Bit 치고 탭 키 누르고 \ampst 누르고 다시 탭 키 누르고 mysql\

===============================================

mysql> CREATE DATABASE opentutorials CHARACTER SET utf8 COLLATE utf9_general_ci;

mysql>show databases;

mysql>CREATE TABLE `topic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `description` text NOT NULL,
  `author` varchar(30) NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql> INSERT INTO `topic` (title, description, author, created) VALUES('about javascript', 'javascript is ~', 'egoing', '2015_4_10 12:20:5');

mysql> SELECT * FROM topic;

2.19.2017

2017.02.19. - 문자열 다루기 기본

tryhelloworld level 1 algorithm questions - 문자열 다루기 기본

<JAVASCRIPT>
Question(출처 : http://tryhelloworld.co.kr)
alpha_string46함수는 문자열 s를 매개변수로 입력받습니다.
s의 길이가 4혹은 6이고, 숫자로만 구성되있는지 확인해주는 함수를 완성하세요.
예를들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

My Answer

1. 실패
function alpha_string46(s){
  var result = true
  // 함수를 완성하세요
if (s.length = (4|| 6) && parseInt(s)){
  result = true;
} else {
  result = false;
}
  return result;
}

2. 실패
function alpha_string46(s){
  var result = true
  // 함수를 완성하세요
if (s.length = 4 || s.length = 6 && typeof(s)){
  result = true;
} else {
  result = false;
}
  return result;
}

3.실패
function alpha_string46(s){
  var result = true
  // 함수를 완성하세요
if (s.length == 4 || s.length == 6){
  result = true;
} else if (typeof(s) == number) {
           result = true;
} else if (s.length != 4 || s.length != 6){
  result = false;
} else if (typeof(s) != number) {
           result = false;
  }
  return result;
}

4. 성공
function alpha_string46(s){
  var result = true
  // 함수를 완성하세요
if (s.length == 4 || s.length == 6){
  result = true;
} else if (typeof(s) == Number) {
           result = true;
} else if (s.length != 4 || s.length != 6){
  result = false;
} else if (typeof(s) != Number) {
           result = false;
  }
  return result;
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( alpha_string46("a234") );
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( alpha_string46("a234") );


<Tip>
- parseInt는 정수로 바꿀 때 이용하는 것임
- 숫자로만 구성 되어 있는지 확인하려면 typeof로 판별
- typeof 는 number가 아니라 대문자인 Number라고 써줘야 인식을 함.

2.18.2017

2017.02.17. - 수박수박수박수박수박수?

tryhelloworld level 1 algorithm questions - 수박수박수박수박수박수?
<JAVASCRIPT>
Question(출처 : www.tryhelloworld.co.kr)
water_melon함수는 정수 n을 매개변수로 입력받습니다.
길이가 n이고, 수박수박수...와 같은 패턴을 유지하는 문자열을 리턴하도록 함수를 완성하세요.
예를들어 n이 4이면 '수박수박'을 리턴하고 3이라면 '수박수'를 리턴하면 됩니다.

My Answer
(계획)
1. if와 for문 이용
2. 짝수면 박 홀수면 수

1. 실패
function waterMelon(n){
  var result = ""
  //함수를 완성하세요
for (var i = 0; i<n;i++){
  if(n%2==0){
  result = "박";
}
  else{
    result = "수";
  }
  return result;
  
 }
}

// 실행을 위한 테스트코드입니다.
console.log("n이 3인 경우: "+ waterMelon(3))
console.log("n이 4인 경우: "+ waterMelon(4))

실행결과 
n이 3인 경우 : 수
n이 4인 경우 : 박

2. 실패
function waterMelon(n){
  var result = ""
  //함수를 완성하세요
for (var i = 0; i<n;i++){
  if(n%2==0){
  result += "박";
}
  else {
    result += "수";
}
  return result;
}
}

// 실행을 위한 테스트코드입니다.
console.log("n이 3인 경우: "+ waterMelon(3))
console.log("n이 4인 경우: "+ waterMelon(4))

실행결과 
n이 3인 경우 : 수
n이 4인 경우 : 박

3. 실패
function waterMelon(n){
  var result = ""
  //함수를 완성하세요
for (var i = 0; i<n;i++){
  if(i%2==0){
  result += "박";
}
  else {
    result += "수";
  }
  return result;
}
}

// 실행을 위한 테스트코드입니다.
console.log("n이 3인 경우: "+ waterMelon(3))
console.log("n이 4인 경우: "+ waterMelon(4))

실행결과 
n이 3인 경우 : 수
n이 4인 경우 : 박

4. 성공
function waterMelon(n){
  var result = ""
  //함수를 완성하세요
for (var i = 0; i<n;i++){
  if(i%2==0){
  result += "수";
}
  else if ( i%2 != 0 ) {
    result += "박";
  }
}
    return result;
}

// 실행을 위한 테스트코드입니다.
console.log("n이 3인 경우: "+ waterMelon(3))
console.log("n이 4인 경우: "+ waterMelon(4))

<tip>
return result는 for 문 안에 쓰지 말 것
n%2가 아니라 i%2임
n%2면 수, 박 하나씩만 나옴

2017.02.17 - 삼각형 출력하기

tryhelloworld level 1 algorithm questions - 삼각형 출력하기
<JAVASCRIPT>
Question(출처 : http://tryhelloworld.co.kr)
printTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.
다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printTriangle 메소드를 완성하세요
printTriangle이 return하는 String은 개행문자('\n')로 끝나야 합니다.
높이가 3일때
*
**
***
높이가 5일때
*
**
***
****
*****

My Answer

1.실패
function printTriangle(num) {
  var result = ''
  // 함수를 완성하세요
   for (var i = 0; i <num-(i-1); i++){
     for (var j = 1; j<num+i; j++){    
            result += "*";
    }
          result += "\n";
   }
  return result
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( printTriangle(3) );

실행결과
**
***

2. 실패
function printTriangle(num) {
  var result = ''
  // 함수를 완성하세요
   for (var i = 0; i <num; i++){
     for (var j = 1; j<num+i; j++){    
            result += "*";
    }
          result += "\n";
   }
  return result
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( printTriangle(3) );

실행결과
**
***
****

3. 실패
function printTriangle(num) {
  var result = ''
  // 함수를 완성하세요
   for (var i = 0; i <num; i++){    
     for (var j = 2; j<num+i; j++){  
       result += "*";
    }
          result += "\n";
   }
  return result
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( printTriangle(5) );

실행결과
***
****
*****
******
*******

4. 성공
function printTriangle(num) {
  var result = ''
  // 함수를 완성하세요
   for (var i = 0; i <num; i++){     
     for (var j =0; j<i+1; j++){   
       result += "*";
       }
     result += "\n"
      }
  return result
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( printTriangle(5) );

실행결과
*
**
***
****
*****

2017.02.17. - 서울에서김서방찾기

tryhelloworld level 1 algorithm questions - 서울에서김서방찾기

<JAVASCRIPT>

Question (출처 : http://tryhelloworld.co.kr)
findKim 함수(메소드)는 String형 배열 seoul을 매개변수로 받습니다.
seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하세요.
seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

Answer
function findKim(seoul){
  var idx = seoul.indexOf("Kim");
  //함수를 완성하세요

  return "김서방은 " + idx + "에 있다";
}

// 실행을 위한 테스트코드입니다.
console.log( findKim(["Queen", "Tod", "Kim"]));


<TIP>

문자열 검색하기

  • indexOf(str) :
  • lastIndexOf(str) :

2017.02.17 - 스트링을 숫자로 바꾸기

tryhelloworld level 1 algorithm questions - 스트링을 숫자로 바꾸기

<JAVASCRIPT>

Question
strToInt 메소드는 String형 str을 매개변수로 받습니다.
str을 숫자로 변환한 결과를 반환하도록 strToInt를 완성하세요.
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.


Answer
function strToInt(str){
  var result = 0;
  //함수를 완성하세요
  result = parseInt(str)
  return result;
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.

console.log(strToInt("-1234"));

<TIP>
parseInt 정수로 변환
parseString 글자로 변환

2.17.2017

2017.02.16 - 정수제곱근 판별하기

tryhelloworld level 1 algorithm questions  - 정수제곱근 판별하기

<JAVASCRIPT>

Question(출처 : http://tryhelloworld.co.kr)
nextSqaure함수는 정수 n을 매개변수로 입력받습니다.
n이 임의의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 임의의 정수 x의 제곱이 아니라면 'no'을 리턴하는 함수를 완성하세요.
예를들어 n이 121이라면 이는 정수 11의 제곱이므로 (11+1)의 제곱인 144를 리턴하고, 3이라면 'no'을 리턴하면 됩니다.


1. 실패
 if -> 제곱근 값
   var x=1;
 if (n%x==x) {
  result = "(x+1)*(x+1)";
}
  else if (n%x!=x){
    result = "no";
  }
  return result;
}

=================================================
<정답>
2. while문 사용하기 => 제곱근 값이 음수일 수 도 있으므로!!

 function nextSqaure(n){
  var result = 0;
  //함수를 완성하세요

  var x = 1;
  while(x*x<=n){
    if (n/x==x) {
      result = (x+1)*(x+1);
    }else{
      result = "no";
    }
    x++
  }
  return result;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + nextSqaure(121));function nextSqaure(n){
  var result = 0;
  //함수를 완성하세요

  var x = 1;
  while(x*x<=n){
    if (n/x==x) {
      result = (x+1)*(x+1);
    }else{
      result = "no";
    }
    x++
  }
  return result;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + nextSqaure(121));

3. 다른 사람의 풀이
function nextSqaure(n){
  var result = 0;
  //함수를 완성하세요

 function nextSqaure(n){
  //함수를 완성하세요
  switch(n % Math.sqrt(n)){
    case 0:
      return Math.pow(Math.sqrt(n) + 1, 2);
    default:
      return "no"
  }
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + nextSqaure(121));

2017.02.16 - 역삼각형 출력하기

tryhelloworld level 1 algorithm questions - 역삼각형 출력하기

<JAVASCRIPT>
Question

printReversedTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.
다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printReversedTriangle 메소드를 완성하세요
높이(num)가 3일때 다음과 같은 문자열을 리턴하면 됩니다.
***
**
*

1. *출력하기
2. for 문 이용하기
 for (var i = 0; i<num.length;i++){}

1.실패
  
  if(num == 3) {
    result = "***\n**\n*"
  }
    else if(num == 2) {
    result = "**\n*"
  }
    else if(num == 1) {
    result = "*"
  }
2. 실패
*
**
*
**
*
**
for (var i = 0; i<num;i++){
  for (var j = 0; j<num-1;j++){
    result += "\n*";
   }
   result += "*";
  }
3. 실패
*
**
**
**
**
**
*
for (var i = 0; i<num;i++){
  for (var j = 0; j<num-1;j++){
    result += "*\n*";
   }
  }
4.실패
***
***
***
for (var i = 0; i<num;i++){
  for (var j = 0; j<num-1;j++){
    result += "*";
   }
    result += "*\n";
  }

5. 성공
***
**
*
function printReversedTriangle(num) {
  var result = ''
  // 함수를 완성하세요

  for (var i = 0; i<num; i++){
   for ( var j=0; j<num-i; j++ ){
      result += "*";
    }
    result += "\n";
  }
  return result
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " +'\n'+ printReversedTriangle(3

2017.02.16 - 짝수와 홀수

tryhelloworld level 1 algorithm questions - 짝수와 홀수
<JAVASCRIPT>
Question
evenOrOdd 메소드는 int형 num을 매개변수로 받습니다.
num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하도록 evenOrOdd에 코드를 작성해 보세요.
num은 0이상의 정수이며, num이 음수인 경우는 없습니다.

Answer

function evenOrOdd(num) {
  var result = ''
  // 함수를 완성하세요
  if(num%2 == 0){
    var result = "Even";
  }
  else if(num%2 != 0){
    var result = "Odd";
  }
  return result;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + evenOrOdd(2));

console.log("결과 : " + evenOrOdd(3));

<<내가 헷갈렸던 부분>>
'/' = 나누기
'%' = 나머지

2017.02.16 - 핸드폰번호 가리기

tryhelloworld level 1 algorithm questions - 핸드폰번호 가리기

<JAVASCRIPT>

Question(출처 : http://tryhelloworld.co.kr)
별이는 헬로월드텔레콤에서 고지서를 보내는 일을 하고 있습니다. 개인정보 보호를 위해 고객들의 전화번호는 맨 뒷자리 4자리를 제외한 나머지를 "*"으로 바꿔야 합니다.
전화번호를 문자열 s로 입력받는 hide_numbers함수를 완성해 별이를 도와주세요
예를들어 s가 "01033334444"면 "*******4444"를 리턴하고, "027778888"인 경우는 "*****8888"을 리턴하면 됩니다.

Answer
function hide_numbers(s){
  var result = ""
  //함수를 완성해주세요

if (s.length-4 == 5){
  var d = "*****"}
  else if (s.length-4 == 6){
    var d = "******"}
  else if (s.length-4 == 7){
    var d = "*******"}

  var b = s.substring(s.length-4);
  return d+b;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + hide_numbers('01033334444'));

2017.02.16 - 평균구하기

tryhelloworld level 1 algorithm questions  - 평균구하기
<JAVASCRIPT>

Question(출처 : http://tryhelloworld.co.kr)
def average(list):
함수를 완성해서 매개변수 list의 평균값을 return하도록 만들어 보세요.
어떠한 크기의 list가 와도 평균값을 구할 수 있어야 합니다.

=================================================================

My Answer

function average(array){
  //함수를 완성하세요
var sum = 0;
  for (var i = 0; i<array.length; i++){
    sum = sum + array[i];
  }
var result = (sum / array.length);
  return result;
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
var testArray = [5,3,4] 

console.log("평균값 : " + average(testArray));

2.02.2017

2017.02.01. - JAVA수업

class Main {
public static 오리[] 오리들가져오기() {
오리[] 오리들 = new 오리[10];
오리들[0] = new 흰오리();
오리들[1] = new 고무오리();
return 오리들;
}
public static void main(String[] args) {
오리시뮬레이션작동();
}
public static void 오리시뮬레이션작동() {
오리[] 오리배열 = 오리들가져오기();
for ( int i = 0; i < 2; i++ ) {
오리배열[i].날다();
}
}
}
abstract class 오리 {
abstract public void 날다();
public void 숨쉬다() {
System.out.println("숨쉬다");
}
}
class 흰오리 extends 오리 {
public void 날다() {
System.out.println("날다");
}
public void 엄청높이날다() {
System.out.println("날다");
}
}
class 고무오리 extends 오리 {
public void 날다() {
System.out.println("날다");
}
}

2.01.2017

2017.01.31. - C언어

사용자로부터 입력을 받아. 그 값을 x라고 하였을 때, 배열의 이름을 array_test, 크기를 20으로 작성하고. array_test의 각 원소의 값을 x+offset으로 초기화하는 함수 array_ test()를 작성하세요.

- 사용자의 입력을 받는다.[완료]
- int 배열 array_test의 크기를 20으로 초기화한다. [완료]
- array_test()함수 생성 후 로직 옮기기 [완료]
- array_test 값 세팅 [완료]
  - 모든 승객의 값을 1로 세팅 [완료]
  - 모든 승객의 값을 offset 으로 세팅 [완료]
  - 모든 승객의 값을 offset + input 으로 세팅 [완료]
- 출력 값 다듬기 [완료]
#include <stdio.h>

void array_test() {
int array_test[20];
int input;
int array_test_size = sizeof(array_test) / sizeof(int);

fseek(stdin, 0, SEEK_END);
printf("숫자 입력 해 주세요");
scanf("%d", &input);

printf("%d", input);
for (int i = 0; i < array_test_size; i++) {
array_test[i] = i + input;
}
for (int i = 0; i < array_test_size; i++) {
printf("%d\n", array_test[i]);
}
}
int main() {
array_test();
}



0~9 까지의 값으로 초기화 되어있는 배열 변수가 존재하고, 사용자로부터 입력을 받아. 입력받은 정수 값을 x 라고 하였을 경우. x 값 만큼 배열 값을 shift 하고 빈 자리는 0으로 만들어 주는 프로그램을 작성하세요, 예를 들어 3을 입력 받았을 경우 배열의 값은 { 0, 0, 0, 0, 1, 2, 3, 4, 5, 6 } 이 되게 됩니다.

- 0~9까지의 값으로 ㅊ기화 되어있는 배열 변수가 존재[완료]
- 사용자로부터 입력을 받기 [완료]
- 입력받은 정수 값 만큼 배열 값을 shift 하고 0으로 만들기

#include <stdio.h>

int main() {
int int_arr[] = { 0,1,2,3,4,5,6,7,8,9 };
int input;

for (int i = 0; i < 10; i++) {
int_arr[i + 1] = int_arr[i];
int_arr[i] = 0;
printf("%d", int_arr[i]);
}
}