1
2
3
git rm -r --chached .
git add .
git commit
cs


여러 리눅스 서버에서 프로젝트를 돌리고 있는 상황입니다.


프로젝트 작업은 한 컴퓨터에서만 하고 있고, 변경사항은 GIT 으로 업데이트 해주고 있었습니다.


근데 이렇게 매번 업데이트 해줄 때마다 작업한 컴퓨터의 그룹유저 권한으로 바뀌더라고요. 그래서 다시 한번 권한을 원래대로 바꿔줘야 했습니다.


사실 이렇게 매번 권한을 바꿔줘도 문제는 없지만, 귀찮고 불편해서....


서칭 결과 찾은 해결법입니다~!



1
git config core.filemode false
cs



( 처음엔 외국 사이트(Stack Overflow 등)을 찾아다녔고, 거기서는 권한을 바꿔주는 수밖에 없다고 하더라고요.. 근데 한국 블로그에서 해답을 찾았습니다! 갓국! )



추가로 Git 세팅 보기는 아래와 같으며, 아래의 명령어로 Git 설정이 변경됬는지 확인될 수 있습니다~


1
git config --list
cs






참고 블로그 :http://blog.kimsfactory.com/

C9 으로 루비 작업을 하고 git으로 로컬 저장소로 클론 해왔을 때 루비 버전이 달라 에러가 발생했습니다.


이 때 해결하는 방법을 적습니다~


(아래의 포스팅은 맥 osX 를 기반으로 작성되었습니다.)



RVM (Ruby Version Manager)을 사용하시면 됩니다.


RVM에 관한 자세한 설명은 https://rvm.io/ 를 참고하시면 좋을 것 같아요.


간략히 말하면 루비의 버전을 관리를 도와주는 도구입니다.



실제로 루비를 설치할 때도  RVM을 사용해서 설치 가능하고, 이 방법이 좋다고 하더라고요.



우선 RVM을 설치해줍니다.



RVM 설치 방법은 위의 RVM 공식 사이트에 영어로 친절하게 설명되어 있습니다^^



우선 터미널 창을 여시고


gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB


위의 명령어를 치셔서 GPG KEY를 설치합니다.


이 과정을 거치는 이유는 보안을 보장하기 위해 설치 패키지를 확인하는 데 사용되는 mpapisPublic(공용 키)키를 설치하기 위해서 입니다.



이 다음은 아래의 명령어를 터미널창에 치셔서, rvm을 설치합니다.


\curl -sSL https://get.rvm.io | bash



이렇게 설치를 끝내신 후 아래의 명령어를 치셔서 잘 설치 되었는지 확인합니다.


rvm -v


잘 설치 되었다면 아래와 비슷하게 나올 겁니다.


rvm -v 명령어는 rvm의 버젼을 확인하는 명령어입니다.



이제 모든 준비는 끝났습니다.


우선 c9에 가셔서 프로젝트의 루비의 버전을 확인합니다.


ruby -v 명령어로 루비 버전을 확인 가능합니다.



아직까지 C9 은 루비 버전 2.3.0 을 지원합니다. (현재는 안정 버전으로 2.4.2로 나와있습니다)


맥 OS X 에는 기본적으로 루비가 설치되어 있습니다. 하지만 그 버전이 굉장히 옛날 버전입니다.


실제로 루비를 한번도 설치 하지 않은 상태에서


ruby -v


명령어를 치셔서 확인 하실 수 있습니다.



위와 같은 식으로 말이죠.


(저는 최신 버전을 이미 깔아놓았기에 2.4.2 의 버전이 나옵니다~)



이처럼 컴퓨터의 디폴트 루비 버전과 c9이나 다른 방법으로 만든 루비 프로젝트의 루비 버전이 다르면 에러가 나게 됩니다.

(실제로 2.3.0 버전에서는 Bignum, Fixnum의 두개의 정수 클래스를 가지고 있다면, 2.4.0 부터는 Integer로 통합되었다고 합니다.)



이때 rvm으로 컴퓨터의 루비버전을 프로젝트의 루비 버전과 맞게 바꿔 주시면 에러 없이 즐코딩 가능합니다.

(반대로 프로젝트의 루비 버전을 바꿔 줄 수도 있을 겁니다. 다만 이때는 여러 가지 많이 만져줘야 해요.(그렇다고 알고 있습니다.. 어렵고 힘들다고))



이제부터 rvm을 사용합니다.


우선 rvm list 명령어로 사용가능한 루비 버전을 봅니다.

rvm list


저는 아래와 같이 나옵니다.


저는 현재 두개의 루비 버전이 깔려있네요.



제가 만든 c9 프로젝트의 루비 버전은 2.3.0 이니까 저는 2.3.0 을 깔 필요가 있습니다.


이 명령어는 아래와 같습니다.


rvm install 버전


저는 2.3.0이 필요하니 rvm install 2.3.0 을 쳤습니다.



시간이 꽤 걸립니다.


차분히 기다리면 설치가 됩니다.


루비 2.3.0 버전이 잘 설치 되었는 지 보기위해 다시 rvm list 명령어를 쳐봅시다.

오 2.3.0 버전이 생겨놨습니다.


저기서 => 는 현재 사용하고 있는 ruby 버전을 말하고 * 는 컴퓨터의 디폴트 버전을 말합니다.

저렇게 설치 한것만으로도 현재 2.3.0 버전을 사용할 수 있습니다.


한번 ruby -v 를 쳐보세요.

위와 같이 아까와 달라진 것을 확인할 수 있습니다.


만약 다른 버전을 사용하고 싶다면

rvm use 버전

위의 명령어를 치시면 됩니다.



위와 같이 rvm use 명령어를 통해 자유롭게 버전을 오고 갈 수 있습니다.


추가로 디폴트 루비 버전을 바꾸고 싶다면


rvm --default 버전


위의 명령어를 치시면 됩니다.


위와 같이 * 가 붙은 위치가 바뀐 것을 확인 하실 수 있습니다!



** 요약 **


설치된 사용 가능한 루비 목록 보기

rvm list

특정 버전의 루비 사용하기

rvm use 버전

트정 버전의 루비를 디폴트 버전으로 하기

rvm --default 버전




출처 : 

https://rvm.io/

http://wantknow.tistory.com/        원노님

https://www.ruby-lang.org/ko/news/2016/11/09/ruby-2-4-0-preview3-released/

MySQL 이나 오라클 DB의 쿼리 질의문에서는 대소문자 구별을 하지 않는다.


SELECT, ALTER, INSERT 등과 같은 질의문 뿐만 아니라 칼럼명, 테이블 이름도 대소문자 구별하지 않는다.


하지만 편의상 질의문이라는 것을 구별하기 위해 대문자로 쓴다.






모든 테이블 목록 보기

SHOW TABLES; 



테이블 구조 확인

DESC 테이블명;






CREATE

테이블명으로 테이블 생성.

CREATE TABLE 테이블명 (

칼럼1 VARCHAR(36) PRIMARY KEY NOT NULL,

칼럼2 INT AUTO_INCREMENT,

칼럼3 데이터타입(데이터크기) 제약조건,

칼럼4 데이터타입(데이터크기),

칼럼5 데이터타입,

...

CONSTRAINT 제약조건명  FOREIGN KEY (칼럼1) REFERENCES 다른테이블 (칼럼명)

);


특정 칼럼의 데이터를 가져오기.

SELECT 칼럼명, 칼럼명, 칼럼명 ... FROM 테이블명;


테이블명의 모든 데이터를 num개까지만 가져오기.

SELECT * FROM 테이블명 LIMIT num;






SELECT

테이블명의 모든 데이터를 가져오기.

SELECT * FROM 테이블명;


특정 칼럼의 데이터를 가져오기.

SELECT 칼럼명, 칼럼명, 칼럼명 ... FROM 테이블명;


테이블명의 모든 데이터를 num개까지만 가져오기.

SELECT * FROM 테이블명 LIMIT num;






INSERT

데이터 입력

INSERT INTO 테이블명 VALUES (데이터, 데이터, 데이터, ...);

특정 칼럼에만 데이터 입력

INSERT INTO 테이블명(칼럼1, 칼럼2, ... VALUES(데이터1, 데이터2, ...);



'CODING > MYSQL' 카테고리의 다른 글

[MySQL] sql 쿼리 파일 읽어오기  (0) 2018.11.15

ArrayList<Class> array = new ArrayList<Class>(); 형태의 ArrayList 가 있다고 할때, for문으로 객체를 넣을 때의 주의사항.



Mysql 에서 회원정보를 가져와 리스트를 만드는 과정에서 겪은 시행착오를 적습니다.

의도는 같은 분류에 속한 사람들을 가져와 ArrayList 에 추가해준 뒤 for문으로 뿌려주는 거 였습니다.




아래와 같이 Sample 이라는 클래스가 있고 이안에 num 이라는 변수가 있다고 하자.

Class Sample{

int num;

게터;    (모두 치기 귀찮아 생략합니다. getter 메소드)

세터;    (모두 치기 귀찮아 생략합니다. setter 메소드)

}


이 Sample 클래스의 객체를 for문을 통해 ArrayList에 아래와 같이 넣어보자.


Sample sample = new Sample();


ArrayList<Sample> array = new ArrayList<Sample>();


for(int i = 0 ; i < array.size() ; i++){

sample.setNum(i);

array.add(sample);

}


for(int i = 0 ; i < array.size() ; i++){

System.out.println(array.get(i).getNum());

}


위와 같은 형태로 for문으로 sample 객체에 i 값을 넣어주고 그를 array에 추가해주었을때,
내가 원하는 출력값은 0, 1, 2, 3, 4, 5, ... 와 같이 각기 다른 값이었다.

하지만 이렇게 나오지 않고, 이 경우에는 마지막 숫자가 똑같이 출력된다.
만약 array의 크기가 10이라면 9, 9, 9, ... 9 이렇게 9가 10번 출력된다.
이는 마지막에 sample 객체의 num 값을 9로 set 해주었기 때문이며,
Array에 추가된 sample객체는 모두 하나의 객체이기 때문이다.


추가적으로 설명하자면, 변수에는 기본형 변수와 참조형변수가 있다.
기본형 변수는 우리가 흔히 아는 char, int, long, double 과 같은 변수들이다.
이 변수들은 스택에 값을 직접 저장한다.

이와 다르게 참조형 변수는 직접 값을 저장하지 않는다.
대표적인 예로는 배열이나 String, 클래스 객체 등이 있다.
참조형 변수는 스택에 본래 값들이 있는 힙의 주소값이 들어가 있다. 즉, 값을 직접 저장하지 않는다.

위의 경우에는 sample은 모두 하나의 힙의 주소값을 갖고 있는 하나의 객체이다.
ArrayList에 넣었다 하더라도 들어간 객체들은 모두 하나의 주소값을 가지고 하나의 힙을 참조한다.
그렇기에 매번 setter로 num 값을 넣어 줄때마다 매번 sample 객체의 num값은 바뀐 것이며, 최종적으로 마지막 값이 들어가 모두 같은 값이 출력된 것이다. 



이럴 때, 0, 1, 2, 3, 4, 5, ... 와 같은 값을 얻으려면, 내가 한 방법은 이렇다

ArrayList<Sample> array = new ArrayList<Sample>();


for(int i = 0 ; i < array.size() ; i++){

Sample sample = new Sample();

sample.setNum(i);

array.add(sample);

}


for 문안에서 객체를 생성해주었다.
이렇게 했을 때는 원하는 결과를 얻을 수 있었다.
이것이 맞는 방법인지는 모르겠으나, 일단은 이렇게 해결했다.


어떻게 보면 너무나 당연한 굉장히 초보적인 실수를 한 것 같아 ashamed 하다




'CODING > JAVA + Spring + JSP' 카테고리의 다른 글

Ubuntu 에 Java 19 설치  (0) 2023.12.20
[JAVA] Array를 List로, List를 Array로  (0) 2019.03.05


MYSQL이랑 아주 조오그으음 다른 부분이 있음.



유저 생성

CREATE USER 유저명 ; 


유저 접속

CONN 유저명/비밀번호;


모든 테이블 조회

SELECT * FROM TAB;


아래는 MySQL

# SHOW TABLES;


테이블 구조 확인

DESC 테이블명;


테이블 생성

CREATE TABLE 테이블명(

칼럼이름 데이터형 조건,

칼럼이름 데이터형 조건,

칼럼이름 데이터형 조건,

... ,
조건
);

아래는 예시


CREATE TABLE EMPLOYEE (

  EMPNO  NUMBER  NOT NULL,

  EMPNAME  CHAR(10)  UNIQUE,

  TITLE  CHAR(10)  DEFAULT '사원',

  MANAGER  NUMBER,

  SALARY   NUMBER  CHECK (SALARY < 6000000),

  DNO  NUMBER   DEFAULT CHECK (DNO IN (1,2,3,4)),

  PRIMARY KEY(EMPNO),

  FOREIGN KEY(MANAGER) REFERENCES EMPLOYEE(EMPNO),

  FOREIGN KEY(DNO) REFERENCES DEPARTMENT(DEPTNO)

);



고로 대표적인 제약 조건에는

NOT NULL      : NULL값을 허용하지 않음 

UNIQUE         : 중복된 값을 허용하지 않음

CHECK           : 값을 확인한 후 조건에 해당되면 입력됨.

DEFAULT        : 입력하지 않았을 때의 기본값.

PRIMARY KEY  : 기본키 설정.

FOREIGN KEY  : 외래키 설정.

이 있다.






데이터 입력

INSERT INTO 테이블명 VALUES(???, ???, ???, ???, ....);

INSERT INTO 테이블명(칼럼명, 칼럼명, ...) VALUES(???, ???, ...);



오늘은 여기까지~~



+ Recent posts