삽질의 현장 478

SonarQube 프로젝트를 까보자

최근 들어 SonarQube를 사용할 일이 많아져 리서치도 해보고 직접 사용해 보는 시간이 많았다.사용해보며 좋은 솔루션이라는 생각과 함께 내부 구조가 궁금해지기 시작했다.'좋은 구조를 파악해보고 이해한다면 언젠가 내 것으로 받아들일 수 있지 않을까?'그리하여 SonarQube라는 오픈소스의 내부를 까보는 시간을 가져봤다. ('파헤쳐보다', '분석하다' 등 좋은 단어들이 있지만, '까보다'가 더 끌린다.) (참고)SonarQube에는 간략하게 '소스 정적 분석 도구' 라고 설명할 수 있을 것 같다.컨벤션 위배(코드 스멜) / 버그/ 취약점 노출 등 여러 분석을 통해 소스 품질을 높이기 위해 참고할 수 있는 분석 결과를 제공하는 솔루션이다.자세한 설명은 소스 정적 분석 도구 SonarQube 리서칭 를 참..

[삽잡이 :: Laravel] Laravel Dusk 환경 셋업

Laravel Dusk는 Laravel 5.4 부터 사용이 가능한 웹 브라우저 테스트 라이브러리입니다.ChreomDriver와 Facebook PHP Web driver를 사용하고 있어Web UI 테스팅을 하기 위한 엄청난 녀석(?)이라 할 수 있습니다. Laravel ~ 칭찬해~ 자 그러면, 간단하게 Laravel Dusk 환경을 셋팅하도록 해보겠습니다. 우선, 각 자신이 사용하고 있는 OS에 맞게 Laravel 설치가 기본적으로 되어있어야 합니다.이를 위해, 먼저 Composer를 설치합시다. 저는 Window를 Base로 셋팅에 들어가겠습니다. https://getcomposer.org/Composer-Setup.exe(composer windows download link) 설치가 완료되었다면, ..

[삽잡이 :: GIT] 어랏 push가 왜 안되지

멋대로 샤샤샥 커밋을 하다가... 갑자기!push가 안된다면 어떻게 할 것인가... 너님이 뭘 잘못한지 스스로 돌아봐봐.... 장난이구요...원격 저장소에서 pull을 땡겨오지 않을 때면 아래와 같은 문제로 push가 되지 않을 수 있습니다. $ git push --set-upstream origin masterTo https://github.com/안알랴줌/foo.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/안알랴줌/foo.git'hint: Updates were rejected because the tip of your current branch is b..

[삽잡이::GIT] LF will be replaced by CRLF

GIT 초짜라면, 누구나 한번쯤 경험할 수 있는... $ git add README.txtwarning: LF will be replaced by CRLF in README.txt.The file will have its original line endings in your working directory. 저 'LF'와 'CRLF'가 문제가 될 수 있다.운영체제에 따라, 개행 문자를 나타내는 문자가 다른다. 유닉스 / 리눅스 계열은 LF로 개행 문자를 사용하고 있고,윈도우는 CRLF 형식으로 개행 문자를 사용하고 있다. 나는 윈도우에서 찌그렸더니, 발생했던거라지~ 후후 나만 쓰면 상관없겠지만 누구는 윈도우에서, 누구는 리눅스에서 쓴다하면 요 문제가 똥으로 다가올 수 있다. 이럴 땐 core.autocr..

[삽잡이::db] PHP에 Mongo DB 연동하라~!

PHP와 Mongo DB를 연동해야할 상황에 쳐했었습니다. 여기서 Mongo DB는 NoSQL에 속하는 DB중 하나를 뜻합니다~ Mongo DB...간략하게 설명하자면 관계형 DB와 다른 형식의 DB이다.JSON Type의 데이터 저장구조를 가지고 있는데,기회가 되면 따로 정리할 시간을 가졌으면 하군요~ 아무튼... PHP에서 Mongo DB를 사용하기 위해서인터넷을 뒤지고 있었는데요~좋은 자료가 있더군요!(참고_ How to Configure Mongo DB With PHP for XAMPP On Windows) 저는 윈도우상에서 xampp 를 사용하고 있었기에,윈도우 환경에서 Mongo DB 연동이 필요했습니다. 간단하게, 현재 PC(Server)에 설치되어있는 PHP Version을 확인하시고~ 요..

[삽잡이::Web] 왜 브라우저별로 css가 먹히고 안먹히느냐...

업무 특성상 Selenium을 사용할 일이 가끔 있습니다.웹 페이지에서 요소들의 값을 가져오거나, input box에 원하는 값을 넣어줘야할 때가 있지요. 그런데, 이 element에 접근하기 위해 사용하는 css selector가참으로 변덕스러운 것이 아니겠습니까?어디에서는 먹히고, 어디에서는 안먹히고... 으어어~ 장난 지금 나랑 하냐~~ 언제는 되는 것 같은데, 또 언제는 안되고...특히 이놈의(?) IE가 정말... 이놈의 IE는 심지어 제가 인턴생활을 하던 시절 비슷한 고민을 하며 내렸던 결론도 있더군요... Web Testing 시, Selenium을 사용할 일이 많다. Selenium을 사용할 때 테스트하는 웹 브라우저 중에 IE에서 수월하게 테스팅을 하기 위해서는 사전 작업을 해야 할 것이..

[삽잡이::DB] SQL_NO_CACHE

Query를 작성하고 수행 시간을 체크해보면처음에는 드럽게(?) 느리던 녀석이 어느정도 적응이 되었는지이상하게 속도가 향상되는 경우를 볼 수 있습니다. 흠... 이상하다... 난 쿼리를 발로짜는데... 예 그렇습니다... 뻔하디 뻔하지만, 바로 '캐시' 때문이지요. 그런거였군~~~ MySQL에서는 Query에 의해 만들어진 결과를보다 효율적으로 사용할 수 있도록 캐시에 저장을 하게 됩니다. 그런데, Query 수행 테스트를 위해서는 캐시가 맥여지면(?) 안되겠지요.그래서 'SQL_NO_CACHE' 를 사용합니다. Query 성능을 비교하거나 성능을 분석하기 위해 유용하게 사용할 수 있겠지요. 발로 짠 내 쿼리를 테스트해보겠어~~

[삽잡이::DB] db에서도 bit 연산을 할 수 있다

MySQL에서도 비트연산이 존재합니다.OR을 나타내는 | ,AND 연산인 & ,> 위의 연산들은 프로그래밍 언어 하나 정도 사용해본 경험이 있다면 금방 알 수 있습니다. 맞아~ 이 정도는 누가 몰라~ 사실 나야~~~ 그래서 알아볼 비트를 가지고 노는~BIT_COUNT()를 알아봅시다. BIT_COUNT() 는 안에 들어오는 값을이진수로 표현하여 1로 설정된 개수를 리턴하게 됩니다. 비트연산을 통해 수행 속도도 개선하고,쿼리도 간단하게 작성할 수 있게 됩니다. 유용하게 써먹자~~

[삽잡이::DB] Query Analyzer

EXPLAIN을 사용하여 explain plan 즉, 내가 작성한 Query문이 어떤식으로 진행될 것인지 실행 계획에 대해 확인할 수 있습니다. ... SUN에 인수된 MySQL에서는 EXPLAIN과는 같으나 시각적으로 좀 더 보기 편한 기능을 제공해줍니다.바로, MySQL Monitor인 Query Analyzer 입니다. [출처_ MySQL]EXPLAIN 만으로도 쿼리 분석은 가능하지만,비쥬얼하게 쿼리 분석을 할 수 있다는 것입니다.우와아~~

[삽잡이::DB] Index를 타라~

인덱스는 '색인'을 뜻합니다. (출처_ 네이버 백과사전) DB에서는 수 없이 많은 데이터속에서 빠르게 검색하기 위해 '인덱스'를 사용하게 됩니다.인덱스란, 원하는 데이터를 쉽게 찾을 수 있게 도와주는 녀석이라는 것입니다.제 주변에서는 흔히들 '인덱스를 타다'라고들 하더군요.. 오빠 차 뽑았다~ 널 데리러 가~ 아무튼, 우리가 만들어놓은 DB 테이블을 기반으로 인덱스를 생성할 수 있습니다. 모든 DBMS는 B*Tree 인덱스를 기본적으로 제공한다고 합니다.(출처_ dbguide.net) 나무를 뿌리부터 거꾸로 세워둔 형태의 구조입니다.어지럽겠다~~ 가지역할을 수행하는 Branch Block은 나무와 같이 분기를 목적으로 사용되고,가지에 달려있는 잎사귀와 같은 Leaf Block을 가리키는 포인터를 가지고 ..