최초 컴포저를 설치하고 나서


The zip extension and unzip command are both missing, skipping.


이런 에러가 나온다면


데비안계열의 경우

apt-get install unzip


레드헷계열의 경우

yum install unzip    (아마도?)



해결될것이다.



출처

https://github.com/composer/composer/issues/4943


WRITTEN BY
rabbbit
필기

,

mysql strict mode 해제

Mysql 2016. 8. 1. 14:52

mac 로컬 환경에 mysql을 설치해서 데이터를 마이그레이션 하는도중에


datetime로 선언된 필드에서


Field 'expired' doesn't have a default value:


이런 에러가 났다.


어느정도 삽질후에 datetime 필드를 not null 로 했을때 insert 혹은 update를 하면서 아무값도 넣지 않으면


에러가 나는 것을 확인할수 있었는데, 실제 서비스에도 저렇게 되어있어서 datetime 필드의 설정을 바꿀수도없고... 다른 해결책을 찾다가


발견한 것이 있는데


mysql strict mode라는 것이다. 


이건 mysql 을 설치하면 기본으로 설정되어있는것인데, 


이게 무엇인지 단적으로 설명하자면 


not null로 된 필드에 값을 넣지 않으면 에러가 나고 값이 들어가지 않게 하는 것이다.


mysql korea문서에는 이렇게 써있다.


스트릭트 모드는 MySQL가 유효하지 않거나 누락된 (missing) 데이터를 처리하는 방법을 제어한다하나의 값은 여러 가지 이유로 유효하지 않게 된다예를 들면컬럼에 대해 틀린 데이터 타입을 가질 수가 있거나또는 범위를 벗어날 수도 있다삽입될 새로운 열이 자신의 정의문 안에서 명확한 DEFAULT 구문이 없는 -NULL컬럼 값을 가지고 있지 않을 때 데이터는 누락 된다. (NULL 컬럼의 경우NULL은 값이 누락되는 경우에 삽입된다.)


즉 값을 안정성있게 넣는 것이라는건데


이걸 알고나서 개인적으로 이 모드를 사용하는게 좋은게 아닐까라는 짧은 생각이 든다.


어찌댔든 현재 내 환경을 그렇지 않으므로 이 모드를 해제 해야 하는데


*nix계열의 운영체제에서는

my.cnf 파일을 찾아서 sql_mode에 STRICT_TRANS_TABLES 라는 옵션을 지우고 mysql을 재시작하면 이 옵션은 꺼지게된다.


windows계열은

my.ini파일을 찾아서 똑같이 하면된다고 한다.


혹시나  orm을 쓰는 개발자는 orm자체에서도 이 옵션이 설정될 수도 있으므로 my.cnf에서 설정을 끈후에 orm에서도 disable명령어가 있는지 찾아보는게 좋은것 같다.


왜냐면 나도 active-record를 쓰는데 mysql옵션을 껐는대도 계속 저옵션에 걸려 에러가 났는데 알고보니 active-record에서도 저 옵션을 켜서 사용 하고 있었다 


WRITTEN BY
rabbbit
필기

,

맥에서 잘되던 mysql이 갑자기 start가 안되면서

ERROR! The server quit without updating PID file

이런 에러를 뿜어낸다..


일단 에러 로그를 보니

2016-08-01T03:00:36.392061Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

2016-08-01T03:00:36.392116Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

2016-08-01T03:00:36.392143Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error

2016-08-01T03:00:36.696313Z 0 [ERROR] Plugin 'InnoDB' init function returned error.

2016-08-01T03:00:36.696353Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

2016-08-01T03:00:36.696366Z 0 [ERROR] Failed to initialize plugins.

2016-08-01T03:00:36.696374Z 0 [ERROR] Aborting


ibdata1의 권한이 쓰기권한이여야 한다고 하는데 나는 권한을 건드린적이 없다..


건드린게 없는게 이상한 현상인데 해결 방법은 더 이상하다.


/usr/local/var/mysql


디렉토리를 777권한을 주면해결이 된다. 이게 대체 왜 되는건지 모르겠다..

그와 더불어 갑자기 잘되던게 왜 안되는건지도 모르겠다


나중에 시간을 들여서 찾아봐야겠다

'Mysql' 카테고리의 다른 글

mysql strict mode 해제  (0) 2016.08.01
mysql]insert 서브쿼리 사용법  (0) 2015.02.23
mysql] 쿼리문에서 문자열 붙이기  (0) 2015.02.23
[MySql] alter  (0) 2014.08.22
mysql 테이블 데이타 복사  (0) 2014.07.08

WRITTEN BY
rabbbit
필기

,

sass와 scss차이점

기타 2016. 5. 12. 14:57

1. sass의 장점

#1 문법이 간결하다.

세미콜론과 중괄호가 없다.

믹스인할때 @indclude대신 +를 사용한다.

#2 읽기쉽다.

인덴테이션 룰이 스트릭트해서 작성하기는 어려우나 읽기는 쉽다.

#3 세미콜론이 없는것에 대해서 에러를내지 않는다.

세미콜론이 없어도 자동으로 인식함



2. scss의 장점

#1 더 표현적이다.

attribute/value의 쌍들을 한줄에 쓸수 있다.

#2 고유한 nesting룰을 장려한다.

selector에 이름을 만들어 element명을 변경할때 관리가 쉽다.(한번에 여러군대 변경가능)

#3 더 모듈화된 코드 장려 @extend사용


#4 더 나은 인라인 문서를 작성하게 한다.

괄호가 코드와 코멘트를 그룹해준다.

#5 css 툴이 scss에서도 사용가능하다.

css 툴들은 scss에서도 종종 사용이 가능하다.

#6 css와 통합하기가 훨씬 쉽다.


#7 진입장벽이 낮다.


#8 css의 다름 버전이 될수도있다.




원문

http://thesassway.com/editorial/sass-vs-scss-which-syntax-is-better


WRITTEN BY
rabbbit
필기

,

jquery와 a태그를 이용해서 이벤트메소드를 사용할때 


a태그에 herf="#"이걸 선언해줘야 하는데 이렇게 되면 태그를 누를때 마다 페이지 상단으로 올라가는 현상이 생긴다.


이것을 방지 하는 방법이 있는데


다음과 같이 하면  된다.


<a href="#" onclick="return false;">test</a>


이렇게 onclick 부분에 refuen false; 를 선언해주면 되는데 이뜻은


'href에서 발생한 액션을 실행시키지 않는다'라는 의미이다.


이러한 것을 슈도프로토콜이라고 하는데 

슈도프로토콜은 하이퍼링크에서 자바스크립트를 부르기 위해 만든것이다.


그러니까 onClick, onFocus등의 html 속성안에 선언하는것들인데 일단은 비표준이기 때문에 


슈도프로토콜을 지원하는 브라우저에서만 작동하고, 자바스크립트를 끄면 작동하지 않게된다.





참고

http://blog.naver.com/myefhc/100124397435

'HTML' 카테고리의 다른 글

html] input text와 submit 붙이기  (0) 2015.02.09
[html] div 배경 화면 투명도 조절 방법  (0) 2014.11.26
[html] ie 호환성보기 강제 해제  (0) 2014.11.24
a태그 width height  (0) 2014.10.29
border-radius  (0) 2014.05.09

WRITTEN BY
rabbbit
필기

,
콘솔 환경에서

rake tmp:clear

 명령어를 작성하면 tmp에 저장된 캐시가 삭제된다.


참고
http://stackoverflow.com/questions/12028088/how-can-i-clear-rails-cache-after-deploy-to-heroku




WRITTEN BY
rabbbit
필기

,

요즘 들어서 쓰기시작한 git을 조금씩 사용량을 늘려가고 있다. 요즘에 진행하는 프로젝트들은 모두 git을 사용 하는데 그렇다 보니 문제가 생겼다. 계정은 하나인데 프로젝트가 여러개라 레파지토리를 만들때마다 ssh키를 등록을 해야 한다는 것이다. 그래서 해결책을 찾았다.


 먼저 .ssh에가서 config  ㅍㅏ일을 수정해야 한다.


아래의 명령어로 config파일을 연다.


vim ~/.ssh/config


만약 .ssh안에 config가 없다면 생성하면 된다.


그리고 나서


Host a.github.com       <-- 1

HostName github.com

User git

IdentityFIle ~/.ssh/id_key.pub <-- 2


 이런게 네개의 명령어를 입력하는데 화살표로 표시한 1은 임의로 변경하고 2는 자신이 가지고 있는 퍼블릭 키를 등록하면된다.


이렇게 해서 사용할때 마다


ssh a.github.com 이런식으로 명령어를 쓰면 하나의 키로 여러개의 프로젝트를 공유가 가능하다. 



ps) 

혹시라도 위 처럼 따라하고 ssh a.github.com 을 입력했는데 

'bad owner or permissions on .ssh/config' 이러한 에러가 뜬다면 이건 config 파일의 퍼미션 에러이다

권한을 600으로 바꿔주면 된다.

chmod 600 ~/.ssh/config


그런데 또 이렇게 했는데 


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


ㅇㅣ런 오류가 뜬다면


pub확장자를 가진 본인의 키의 권한도 600으로 변경해주면 된다.

chmod 600 ~/.ssh/id_key.pub




참고

https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=linuxserver&wr_id=36955

http://www.howtogeek.com/168119/fixing-warning-unprotected-private-key-file-on-linux/

http://serverfault.com/questions/253313/ssh-hostname-returns-bad-owner-or-permissions-on-ssh-config

http://stackoverflow.com/questions/22768517/how-to-manage-one-only-key-per-each-git-repository


WRITTEN BY
rabbbit
필기

,

rails 프로젝트를 하다가 객체를 만들어 concat을 사용하는 메소드를 실행 시키는데 


초기 config값을 가지고 있는 변수의 값이 자꾸만 변하는것이다. 예를 들면


class Test 

CONFIG = "1111"


def print

test1 = CONFIG

test1.concat("2222")


puts test1

puts CONFIG

end

end


이런 클래스가 있다고 치자 이때 CONFIG 변수에 저장된 값을 test1에 저장하고 


test1에 문자열을 더하고 싶어 concat을 하여 2222를 추가 하였다. 그리고 test1과 CONFIG를 출력하였다.


이때 출력값은 무엇이 나올까?


놀랍게도 두개의 출력값다 기존에 있던 1111값과 concat한 2222를 한 값인 11112222가 나오게 된다.


사실 이건 concat의 문제는 아니다.


다만 내가 concat을 사용할때 생긴 문제이기 때문에 예를 이것으로 든것 뿐이다. 


그래서 왜 이런 일이 생긴것인지에 대해서 찾아보았다.


먼저 결론부터 말하자면 루비에서 변수는 객체 이기 때문에 이런 현상이 생긴것이다.

(읽기 귀찮으면 밑에 3줄요약만 읽어도됨)



루비는 모든것이 객체인가?


이 현상의 원인은 루비의 자체에 있는데


루비는 모든것이 객체이다. 그래서 정말 변수도 객체인것인가 해서 찾아보았다.


Is variable is object in ruby?

라는 제목으로 누군가가 질문을 한것에 답이있는데 요약하자면

루비의 모든것이 객체 이다 하지만 변수는 객체를 가리키는 이름이다라고 했다.

음.. 무슨 말인지는 모르겠지만 어쨋든 "변수는 객체를 가리키는 것이고 변수 자체는 객체가 아니다" 라는게 대답의 요점인것 같다.

그러니까 처음에 위에서 선언한 변수는 객체가 아니지만 CONFIG 에 저장한 "1111"이라는 문자열은 루비에서 string객체로 인식을 하고 객체(1111)의 주소값을 저장한것이다.

고로 

test1 = CONFIG

이러한 행위는 CONFIG변수 안에 담고있는 string객체(1111)의 주소값을 test1에 저장하는 행위가 되는것이다.

하지만 아무리 변수가 객체를 가지고 있는다고 해도 변수를 다른 변수에 저장할때 객체의 값을 복사할수도 있는데 왜 주소값이 복사가 되는것일까 라는 의문점이 생겼다.



루비는 call by references 방식 인가?

그래서 루비는 call by references 방식인건가 라는 생각에 한번더 검색을 해봤다.

(call by references가 무엇인지에 대해서 궁금하면 이곳 에 들어가면 간단하게 정리되어있다. call by value에 대한 설명과 둘의 차이점도 정리되어있다.)

두개의 답변을 볼수 있는데 요약 하자면 

"변수는 항상 객체를 참조(references)한다. 루비에서 변수는 객체를 가리키는(point)존재 이므로 객체를 가리킬수 있는 주소값을 변수에 저장하는 것이고 그 값을 복사하는 것이다. 그래서 루비는 call by value 이지만 value에  references(객체의 주소값)를 가지고 있기때문에 주소값이 복사되는것이다." 

라는게 요약이다. 뭔가 어렵다...

간단히 말하자면

루비는 call by references 방식이 아니고 call by value 방식으로 변수를 복사 하지만 복사할 value에 주소값이 들어있을 뿐이다.


결론적으로 루비는 call by references 방식을 가지고 있어서, 주소값을 복사해주는게 아니라 value 가 주소값이라서 주소값을 복사하는 것이다. 예를들면


a = 1 <-- a가 가리키는 객체(1)의 주소값 111

b = a <-- a가 가리키는 객체(1)의 주소값 111을 b에 저장


puts b <--- b가 가리키는 객체(1)의 주소값 111에 저장된 값 출력


이렇게 된다는 것이다.


그래서 b의 값을 변경하면 a의 값도 변경이 되는 거다.



루비에서 변수의 값(객체의 값) 복사 하기


위에서 루비의 변수는 객체의 주소값을 가지고 있기 때문에 복사당한 대상의 변수값도 변경이 될수있다고 했다. 


하지만 나는 변수의 값(객체의 값)을 복사해서 사용하고 싶다.


이럴때는 clone이라는 함수를 사용하면된다. 예를들면


test = [1,2,3]

b = a.clone

b.concat 4


puts a

puts b


를하면 a는 123이 출력되고 b는 1234가 출력된다.


더 자세하게 알고 싶다면 이곳 에서 cloning objects라는 부분을 보면된다.


결국 루비에서 변수는 객체를 가지고 있는 것이고, 변수끼리 값을 전달할때 변수에 저장된 값은 객체의 주소값을 가지고 있기 때문에 주소값이 전달이 된다. 그러므로 변수의 값(객체의 값)을 복사해서 사용하고 싶다면 clone 메소드를 사용하면된다.


3줄 요약


1. 루비에서 변수는 객체를 가리키(point)기 때문에 주소값을 가짐

2. 그래서 변수 복사를 할때 call by value 방식이지만 주소값이 넘어가서 메모리를 공유하게됨

3. 이게 싫으면 clone메소드를 쓰면됨





참고 

http://stackoverflow.com/questions/1872110/is-ruby-pass-by-reference-or-by-value

http://stackoverflow.com/questions/22827566/ruby-parameters-by-reference-or-by-value/22827949#22827949

http://stackoverflow.com/questions/8382173/ruby-is-variable-is-object-in-ruby

https://rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/39-ruby-s-object-model/lessons/132-cloning-and-freezing-objects




WRITTEN BY
rabbbit
필기

,

electron을 할때 테두리 프레임이 거슬린다면 없앨수 있는 방법, 근데 이렇게 하면 프로그램을 끌수가 없다.. 

분명  마우스 오버하면 나오고 떼면 숨는 기능이 있을거 같은데 일단은 임시방편으로 이렇게 해놓았다.


const BrowserWindow = require('electron').BrowserWindow;
var win = new BrowserWindow({ width: 800, height: 600, frame: false });


출철: eletron js 공식 github  

https://github.com/electron/electron/blob/master/docs/api/frameless-window.md


WRITTEN BY
rabbbit
필기

,

electron 캐시 삭제

JavaScript 2016. 4. 25. 14:05

electron js를 이용하여 개발하던중 서버에서 이미지를 불러와 보여줘야 하는데 이미지를 바꿔도 변경되지 않아 혹시나 해서 찾아보았는데 electron js에서 자체적으로 이미지같은것들을 캐싱하나보다.


캐싱하지 않는 모드라던가 설정이 있을거 같은데 일단은 간단한 해결법을 찾았다.



var remote = require('remote'); 
var win = remote.getCurrentWindow();
win.webContents.session.clearCache(function(){
//some callback.
});



WRITTEN BY
rabbbit
필기

,