늘모자란, 개발

늘모자란, 개발


 include "./config.php"; 
 login_chk();
 dbconnect();
 if(preg_match('/prob||.|()/i', $_GET[id])) exit("No Hack ~~"); 
 if(preg_match('/prob||.|()/i', $_GET[pw])) exit("No Hack ~~"); 
 $query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')"; 
 echo "


query : {$query}


"; $result = @mysql_fetch_array(mysql_query($query)); if($result['id'] == 'admin') solve("cobolt"); elseif($result['id']) echo "

Hello {$result['id']} You are not admin :(

"; highlight_file(FILE); ?>

이거도 그냥 간단히 넘어보려고 다음과 같이 쿼리를 짰다

select id from prob_cobolt where id='1' and pw=md5('1') or 1=1 order by 1 desc -- a')

근데 리턴되는 값이 이상하다.

Hello rubiya
You are not admin :(

컬럼에 하나만 있을 줄 알았더니 몇개가 더 있나보다. 한 두개쯤 있을 것 같으니 (아마 세개째부터는 생각을 해야될것 같지만)

select id from prob_cobolt where id='1' and pw=md5('1') or 1=1 order by 1 asc -- a')

이런식으로 현재 select 되는 row가 아닌 다른 row를 선택되게 바꿔주면 pass

2017/06/19 16:48 2017/06/19 16:48

 include "./config.php";
 login_chk();
 dbconnect();
 if(preg_match('/prob||.|()/i', $_GET[id])) exit("No Hack ~~"); // do not try to attack another table, database!
 if(preg_match('/prob||.|()/i', $_GET[pw])) exit("No Hack ~~");
 $query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
 echo "


query : {$query}


"; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) solve("gremlin"); highlight_file(FILE); ?>

질의 하면 위에 쿼리가 나온다. 나는 id를 true로 만들고 pw는 주석처럼 만들어버려서 뒤로 점프할 생각이었고 그냥 된다. 몸풀기..

select id from prob_gremlin where id='' or 1=1 -- ' and pw='1'

2017/06/19 16:43 2017/06/19 16:43
slow query 로그를 모니터링하다가 괴이한걸 발견했다.

 # Time: 2017-06-07T21:02:08.862259Z
# User@Host:  @ localhost []  Id: 369414
# Query_time: 5.894014  Lock_time: 0.000000 Rows_sent: OOOO  Rows_examined: OOOO
use DB;
SET timestamp=1496869328;
SELECT /*!40001 SQL_NO_CACHE */ * FROM `table`;


/*40001 SQL_NO_CACHE*/ 라는것도 처음보고, DB를 풀스캔하고 있는데 시간대를 보니 밤 9시라고 한다. 밤9시엔 이런 작업을 할리가 없는데..  그래서 이래저래 검색을 해보니 40001 은 mysql 버전 4.0.0 이상에서 진행된 쿼리라는거고, 뒤에는 말그대로 캐시없이 돌리겠다는 명령어라고 한다. 그리고 mysqldump에서 이렇게 질의한다고 하는데...

문제는 9시에 mysqldump를 진행하지 않는다. 혹시 해서 select now()를 해도 정상시간으로 되어있고, OS시간도 정상이다.
판타즘넷 DB서버는 새벽6시와 또 다른 특정시간대에 백업을 진행하는데, 친구와 얘기하다보니 로그 시간뒤에 Z가 붙어있는걸 확인했다. 그렇다. 이건 UTC +0 시간이었던것이다...

mysql 5.7.2 부터는 로그시간의 혼동을 피하기위해 따로 변수를 추가해 관리하는것이다. 이걸 확인하려면,

show variables;


를 통해 log_timestamps의 값을 확인하면 되는데 나의 경우

log_timestamps | UTC


로 설정되어 있다.
해당 변수의 값은 SYSTEM 혹은 UTC로만 설정할 수 있으며, 서버시간대로 로그를 확인하고 싶다면 SYSTEM으로 맞춰주면된다.
my.cnf 에 mysqld 밑에 다음과 같이 적어주자

 log_timestamps = SYSTEM


Ref:
https://serverfault.com/questions/759532/mysql-logs-different-time-than-now
https://stackoverflow.com/questions/8282788/what-does-select-n-sql-no-cache-from-mytable-mean-in-in-mysqls-slow

2017/06/08 11:09 2017/06/08 11:09

시작하며


제목이 너무 거창한데, 유저들에게서 강제로 confirm에 대한 확인을 받아야할 일이 있었다. confirm을 내가 띄우는 주체가 아닌데 반드시 confirm 에 대한 확인을 받아야만 모든 데이터를 다 긁을 수 있기 때문이다. 별수 없이 방법을 찾아봤는데 confirm에 delegate를 거는 방법은 없었다. 이 method는 문자 그대로, 말그대로 유저의 confirm을 받아 처리하는 기능이기 때문이다.

바꿔치기


이건 정공은 아니고 그냥 trick 에 가깝다 혹은 cheat.. 강제로 confirm을 발현 시키고, 그 이후에 window의 confirm을 모두 true로 바꿔버리는것이다 코드를 보자

window._confirm = window.confirm;
window.confirm = function() {
 return true;
};

코드는 심플한데, 말그대로 브라우저 윈도우의 confirm을 모두 true 로 바꿔버리는것이다. 이 코드가 실행되면 해당 세션의 웹 브라우저의 confirm은 모두 true가 되서 뜨지도 않게 된다. 때문에, 현재 상태를 window._confirm 안에 저장해놓고, 이벤트가 끝나면 다시 다음과 같이 수행하면 된다

window.confirm = window._confirm;

Thanks to jake

2017/05/19 11:31 2017/05/19 11:31
원래 intent를 넘겨줄때 file:/// 이런식으로 absolute path 를 넘겨주었으나 왠지 모르겠지만 Nougat 때부터 content:// 형태로 넘겨주기 시작했다. 때문에 기존 방법으로는 path를 얻을 수 없다.

이때 content:// 를 파싱(??) 하면 정보를 얻을 수 있다.

public String getFileName(Uri uri) {
 String result = null;
 if (uri.getScheme().equals("content")) {
   Cursor cursor = getContentResolver().query(uri, null, null, null, null);
   try {
     if (cursor != null && cursor.moveToFirst()) {
       result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
     }
   } finally {
     cursor.close();
   }
 }
 if (result == null) { 
   result = uri.getPath();
 }
 return result;
}


요점은 cursor 를 이용해 query 를 날려 의미하는 바를 알아내는 것이다.
제대로 안하면 커서 row에서 에러 나오고 쌩 고생을 할 수도있는데 요거면 잘된다.
혹시 전체 덤프가 필요하다면 datautils 의 dump를 이용하면 모두 로그로 찍어볼 수도 있다.
2017/03/13 15:44 2017/03/13 15:44
Marshmallow 는 여러모로 똥을 던져주는 버전같다.
이번에는 단순히 Intent로 앱을 호출했는데 스크린 오버레이 감지가 발생하는 경우를 겪게 되었다

흔히 다음과 같은 경우에 발생한다.
유저 편의를 위한답시고 Toast로 파일을 실행합니다.. 따위의 안내문을 출력하게 되는데, 안드로이드는 정말 똑똑한 머신이라 Toast를 출력하고 있는앱을 현재 실행하고 있는 앱으로 판단한다

때문에 이때 intent를 호출하거나 권한 승인 다이얼로그가 출력되면, 안드로이드는 이 새로운 손님을 화면위에 플로팅하는 오버레이앱이라고 판단해버린다. 즉, intent를 넘겨줄때는 반드시 모든 Toast가 종료된 후 실행되어야 한다.

화면 오버레이 감지됨을 피하는 방법

1. 모든 Toast가 꺼진 후 intent를 호출
2. 안내 Toast를 모두 제거

http://stackoverflow.com/questions/35453759/android-screen-overlay-detected-message-if-user-is-trying-to-grant-a-permissio?answertab=votes#tab-top

2017/02/28 14:40 2017/02/28 14:40
이번에 외부 저장소의 파일 헤더를 수정하다가 하다가 알게된건데, Android 에서 SD card에 저장된 파일을 핸들링하려니까 권한이 없다며 진행되지 않았다.

의아하게 여겨 바로 한 일은 외부 저장소의 권한을 살펴본 일인데, 멀쩡히 권한이 존재할 것 이다.

대개, 이런식으로 되어 있을 것이다.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" ></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>


꼼꼼한 개발자라면 해당 권한이 위험한 권한(dangerous permission)임을 인지하고 M 버전부터 처리코드를 넣어 다음과 같이 유저에게 request permission을 하고 있을지도 모른다.

                requestPermissions(new String[] {
                                     Manifest.permission.READ_EXTERNAL_STORAGE, 
                                     Manifest.permission.WRITE_EXTERNAL_STORAGE
                                   }, MY_PERMISSION_REQUEST_CODE)


헌데 외부 저장소 권한을 설정하였는데, 왜 SD Cad에 저장된 파일을 컨트롤할 수 없는걸까? 그건 바로 Android의 기괴한 정책때문에 그렇다.

먼저, 본론으로 들어가기전에
알아두어야 될 점은 Android에서 얼마나 이상하게 SD Card를 다루느냐이다.

먼저, Android에서 말하는 External Storage는 실제 External Storage (SD Card)를 의미하지 않는다.
여기서 가리키는 저장소는 '완전히 따로 관리되는 내부' 메모리와, 내부에 있는 '일반 파일 영역'을 의미한다.

이에 대한 근거는,

File Environment.getExternalStorageDirectory()


로 경로를 반환받을시, SD card를 가리키지 않기 때문이다. 어딜 가르키느냐? 일반 파일 영역을 나타내준다.
정말 이해가 안되는 일이지만 SD Card를 가리키는 경로는 제조사별로 다르기때문에 알아낼 도리가 없다.
굳이 알아내보려면 이런 느낌으로 써야한다.

filepath.contains('mnt/sdcard').. ? sd card!
filepath.contains('mnt/extCard')..? sd card!
filepath.contains('mnt/ext_sd')..? sd card!


정말 어이가 없는 일이다. 이건 제조사별로 다르다고 치고, 본론으로 돌아가서, 왜 SD Card 내에 파일을 쓰거나 수정할 수 없는걸까?
그런데, 지금 말하는 이야기가 얼토당토하지 않게 보이는 사람도 있을 것이다. "나는 잘되는데 뭔소리지?"

먼저, Froyo와 Gingerbread(2.2~2.3)의 Android는 권한 체크에 그리 꼼꼼하지 않았다.
그래서 External Storage_Write/Read 권한만 있어도 SD Card를 얼마든지 컨트롤 할 수 있었다.
그러다가, HoneyComb(3.0) 이상에서 추가 권한을 요구하게 되는데, 바로 우리를 곤경에 빠트리게 할,

WRITE_MEDIA_STORAGE 라는 권한의 등장이다. 이 문제는 LOLLIPOP 까지 지속된다. (5.0)

이 권한을 그럼 명세하면되지 않느냐? 라고 물을 수 있지만 해당 권한은 시스템권한으로, 일반 유저가 줄 수 없는 권한이다.
- 제조사에서는 제조사 기본앱에 이 권한을 주어 설치해놓은 경우도 존재함

3.0 부터 5,0 버전을 사용하는 유저들은 루팅후, SDfix 라는 이상한 앱을 설치해 그룹 퍼미션을 줘가며 사용해야만 했었던 것이다.
앱이 하는 역할은 다음과 같다.

<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
    <group gid="sdcard_r" />
    <group gid="sdcard_rw" />
    <group gid="media_rw" />
</permission>


하지만 일반 논루팅 유저들은 해당 권한을 줄 수 없으므로, 결국 앱을 이용한 SD Card Write Access는 가질 수 없는 것이다.
그러다가 놀랍게도, Marshmallow(6.0)에서 부터는 External Storage 권한을 위험한 권한으로 규정하면서, 유저 추가 동의를 받을 경우 쓸 수 있게 바꿔버린것이다. 오마이 갓....

고로 결론은 다음과 같다. 이를 우회할 방법은 존재치 않으니 빨랑 포기하시라...
2017/01/17 17:42 2017/01/17 17:42

2016년

Gossip 2016/12/26 20:25
이번엔 좀 이르게 써보는 지난날의 되새김질. 2016년도 이제 며칠남지 않았다.
써가며 느낀건데 나는 나를 뭘 이렇게 많이 믿는다고 적어놨는지 손이 오글 거릴정도다

2016년 회고


졸업과 논문

좋든 싫든 반년뒤 학교를 떠난다. 벌써 2년인가 싶은데 시간이 참 빠르다는 생각이 스쳐지나간다. 세미나를 준비하면서 밤을 새고 핫식스도 자기 최면 건다고 하루에 서너캔씩 먹던 날도 있었는데, 벌써 연구실의 최고 선배(박사를 제외하고)가 되고 연구실을 떠날날을 손꼽아 세어야 되는걸 보니 기쁘기도하고 벌써 두렵기도 하다. 하지만, 나는 나를 믿는다

2016년의 빅 이벤트라고 하면 역시 졸업이다. 그렇다. 나는 졸업했다.
졸업논문 같지도 않은 논문을 써냈긴했지만, 어쨌든 꽤나 열심히 살았다. 아니, 정확히는 나름 열심히 살았다.

개발

C를 공부할 생각이다. 아울러 c#까지.
나는 웹을 계속 공부하고 싶지만, 넥슨과 NC등 모집요강을 보면 여전히 C 개발자를 모집하고 있고, 선택하고 있다.
C는 언어중 가장 기본이 되는 언어이며, 앞으로도 가장 중요한 언어라고 생각한다. 그래서 조금 뜬금없지만, C를 다시 공부하려고 한다. 최종적으로는 프로그램을 개발해 서비스해보는것이 목표이다.
2016년의 목표라면 C와 C#을 하겠다고 했는데 진짜 그런 회사에 취업했다.
안철수연구소, 카카오, 네이버, 네오위즈 등.. 큼직큼직한 기업에 지원을 많이 했는데 전부 떨어졌다. 그것도 1차 서류에선 다 붙고! 기초 체력이 부족한 탓이라고 생각한다. c와 c# 공부는 진행형인데.. (2016년의 공부는 거의 망했다. 안했다.) 이론 책을 많이 읽는건 별반 도움이 되지 않는 것 같다. 왜냐면 이론에서 백날 설명해봐야 실전에서 쓰는 야매(..) 기법과, 구현하는건 어떻게 글이나 말로 설명할 수가 없다. 때문에 2017년에는 오픈소스나, 실제 개발을 많이 해보는게 목표다.

그리고, 싴갤러스에는 반드시 ES를 도입하려고 한다. ES의 존재에 의구심을 가졌는데 그냥 한번 써볼 생각이다. 그리고, 리액트나 앵귤러의 2way binding은 내게 있어 그렇게 나쁜 생각은 아닌것 같다. 큰 웹서비스하나를 더 만들어보고 싶다. 가능할까..

ps. 싴갤러스 웹 서버 커밋은 총 364회 이뤄졌다. 너무 자잘한것도 커밋이라고 말하긴 좀 부끄럽지만.. 거의 하루에 한번정도는 커밋한꼴이 되었다. (몰아서 할때가 많았다만)

건강

최근 술만 먹으면 헛구역질도 하고 좀 상태가 이상하다. 생체리듬은 27세에 깨진다는 말이 있는데, 각별히 조심하고 내년엔 폭식하는 습관을 고쳐보고자 한다. 잘 될지는 모르겠지만, 2015년 말에 시작한 도시락 업체로부터 도시락 받아먹는걸로 시작(... 하지만 잘 지켜지진않는다...ㅠㅠ)
전혀! 전혀 못고쳤다.
오히려 헛구역질은 이제 멀쩡한 상태에 있어도 하는 습관성으로 발전한 느낌이다. 도시락은 개뿔.. 회사를 다니면서 1끼식사를 하고 있는데 아침에 일어날때마다 온몸이 퉁퉁 붓는 느낌이 들어 좀 기분이 구릴때가 있다.

뻘짓

워게임에 시간을 꽤 많이 들였다. 두군데 워게임도 하고 생전 안해본 리버싱도 해보겠다고 까불었다. 결과는? 생각보다 도움이 되었고 재밌었던 시간이다. 온전히 내 지식으로 풀이했다면 좋았겠지만, 다 알겠는데 요만큼의 힌트가 필요한데.. 하면서 좀 컨닝을 했지 아마? 2017년에는 못풀었던 문제를 마저 풀어볼 생각이다.

2017년

이 순간이 제일 싫다. 앞으로 내가 살아가야할 지침을 내가 정해야 된다는것..?
지금 나는 이제 귀속된 몸이다. 뭔가를 자유롭게 하겠다는 생각을 하기엔 좀 섣부른 감이 있다. 내 작은 계획들은,

1. 블로그를 좀 해볼까 한다. 개발 블로그를 지향한다면 당연히 개발을 해야 한다.
2. 일상이 챗바퀴처럼 돌게 냅두지 않겠다. 나는 탈선을 꿈꾼다!
3. 건강.. 건강을 꼭 보살피겠다. 나를 사랑하자.....
2016/12/26 20:25 2016/12/26 20:25


싴갤러스 - 하나의 기능 리뉴얼을 준비하며 (1) 로부터 이어집니다


게임 아이템 거래에 대한 개념을 짚어볼 필요가 있었습니다.

1. 게시판
대부분의 거래사이트에서는 게시판 레이아웃을 채택하고 있습니다.
왜냐면, 구축이 쉽고 빠르기 때문입니다. 게시글이란것은 글 내용을 눌러보기 전까지 내용을 알 수없습니다. 검색을 하지 않는다면요.
게시판 레이아웃으로 구성되어 있는 홈페이지를 사용하는 유저들은 다음과 같은 흐름대로 움직입니다.

1. 게시판 접속
2. 서버 게시판 클릭
3. 제목을 하나씩 보며 페이지를 넘기다가 클릭
3-1. 검색을 통해 원하는 내용을 검색후 제목을 클릭

유저는 어떨때 글을 클릭하는것일까요? 저는 그것이 바로 제목이 가지는 힘이라고 생각했습니다.
예를 들어 다음과 같은 제목들을 말합니다.

'여러 의장 아이템 팝니다.','의장아이템 많이 팝니다.', '싸게 처분합니다' 등으로 흥미를 유발하는것이죠.
실제 필요하지 않은 아이템이라고해도 눌러보거나, 어떤 아이템이 있나 보거나... 이 케이스로 인해 발생하는 경우는 '뜬금없이 싸거나, 원하는 옵션보다 쌌을때'와 같이 조금 특별한 경우에만 해당합니다.

2. 정보 소모 속도가 빠르다
그냥 글을 다 읽어보는 부류도 있습니다. (괜찮으면 구매해볼까~ 같은 마인드). 비슷하게도, 역시 별로 좋아보이지 않는 아이템은 휙휙 넘기기때문에 정보의 소모가 매우 빠르게 이루어진다고 할 수 있습니다. 하지만, 게시판 레이아웃대로 구성시 제목을 보고, 클릭하고, 맘에 드는 아이템이 없으면 다시 뒤로가기를 통해 목록을 조회해야하므로 최소 2번의 리프레쉬가 일어납니다.

그래서 모티브를 '한눈에 볼 수 있고, 최소한의 새로고침'으로 잡고 닿은 결론이 METRO UI였습니다.
METRO UI는 사각형들이 다닥다닥 달라붙어 잇는 형태인데, 이를 응용해 갤러리 형태로 만들면 시야에 들어오는 글은 오히려 게시판 보다 더 많지 않을까라는 생각을 하게되었습니다. 또한 작성하는 아이템을 무조건 한개만 작성하게 강제한다면, 오히려 가독성면에서 더 좋지 않을까요?



이런 형태이고, 네이버 게시글이 16개정도가 한페이지인것을 고려하면, 비슷한 내용으로 한페이지를 사용한다 할 수 있습니다.


요렇게만 나열되면 좋겠지만, 다음 그림과 같이 무작위아이템들이 올라올 경우 산만해질 수 있다는 의견이 있었고


무작위로 나열될때 격자가 아닌 이상한 형태의 모양이 만들어져 오히려 글자를 읽는게 불편한 느낌이 들었습니다. 결국 이를 보완하기 위해 여러 안을 내야 했습니다.

고민하던 와중에, 이 글을 보게 되었는데, 핀터레스트에서 사용하고 있는 카드형식의 UI를 사용하면 어떨까 했습니다.
역시 기본 아이디어는 비슷하지만, 개체 하나하나마다 변별력을 주자는것이 핵심 아이디어였습니다.

Masonry를 사용할수도 있었지만, 원하는 모양대로 잘 안나오더군요.

그리고 무한히 나오는 결과물에 대해서도 테스트를 진행해봤으나, 제대로 정렬이 잘 되지 않았습니다.
네이버의 eg를 쓰는것은 처음엔 별로 내키지 않았지만(용량문제도 있지만, 어차피 jquery를 쓰니까...), 일단 적용해보기로 했는데 생각보다 결과물이 예쁘게 나왔습니다. 사용하기도 쉽고 (세팅에 많은 시간을 필요로 하지 않음)......


뼈대밖에 없긴한데, 이만하면 원하는대로 모습이었습니다..
적용을 하면 다음 모양처럼 나옵니다. 다만 갤러리형태에 적합했기때문에 모양새가 조금은 마음에 안들었습니다. 정확히 responsive 되는것도 아니었구요. 조금 아쉬운 상황이었습니다.




여기까지 준비를 했는데!
본격적으로 일을 시작하려니 참 아쉽게 되었습니다. 

2017년 5월 22일부로 가판대 기능을 닫았습니다.

가판대 기능을 살려보기 위해 앱도 만들고, 푸시서비스도 넣고 쪽지도 만들고 이것저것 했었는데 결말이 좀 안타깝지만, 적법하지 않은 기능이라는 민원 처리 결과입니다.

보건복지부의 고시"보건복지가족부 고시 제2009-24호"에 따르면 게임아이템 거래 중개 사이트는 게임 거래를 알선하는 모든 사이트를 청소년 유해물로 규정하고 있습니다. 옛날 옛적 네이버 카페들이 문닫았던 이유인데요.

청소년들이 게임내 재화를 얻거나 팔기 위해서 많은 시간을 투자해야된다는 개념이 들어가는 이상, 현금 거래이던 아니던 적법하지 않다고 합니다. 위반하면 형사처벌이고요. 본인인증을 도입한다고 하더라도 광고 수입이 그정도도 없고, 접근성도 네이버 카페보다 뛰어날것이라고 생각하지 않습니다.

가판대 기능은 꽤 오래 유지가 되었었는데 (사용량은 아주 없었지만), 여태 신고 안당한걸 천운으로 생각해야될것 같습니다 -_-;

원래 처음 싴갤러스를 시작할때는 법령을 고려해본적이 한번도 없는데, 주변에서 쓰러져가고 고소같은거도 정보를 제공하면서 이제 단순히 의지만으로 현실을 관철할 수 없지 않게 되었나 생각합니다. 많은 아쉬움이 따르지만, 그간 준비했던 기능들은 다른 곳에  쓰일 수 있길 바랍니다. 뭐 이번에 대통령도 바뀌었는데 다시 진행하게 될 수 도 있죠. see you later!
2016/09/26 08:06 2016/09/26 08:06
사실 별로 중요한 내용은 아니다. 내용에 문제가 생기는것도 아니고..

나에게는 private repo가 있는데, 어느순간에 contribution graph 실적에 추가가 안되고 있다는걸 알았다.
public repo에 공헌했을때만 체크되는줄알았는데 옵션에 따라 설정할 수 있었다. 그런데 문제는, 실제 commit이 되었는데 어느 누구에게도 공헌이력이 남지 않았다는 것이었다.



수많은 commit이 있는데, 심지어는 거의 매일 커밋을 했는데!
그래프는 투명했던것이다. fantazm 저기로 들어가봐도 commit 이력이 없었다. 이상하게 여긴 나는 콜라보레이터를 살펴봤지만



없다...
애초에 콜라보레이터로 등록도 되지 않은 사용자가 커밋을 하고 있는 진풍경인것이다. 이상하게 여겨 github에 메일을 보내봤으나...
Hi,Sorry to hear you're having trouble. Can you verify that you have the correct email address set in your .gitconfig? You can check this in GitHub Desktop by going to the Options menu. The email address there needs to match the email address under your GitHub account in order for the commits to be properly attributed.

You can read more about this here:https://help.github.com/articles/why-are-my-commits-linked-to-the-wrong-user

Let me know if you have any other questions.

Cheers,
Steve

그러니까 그냥 github desktop 설정 문제라고 한다



메일을 받고 지금은 수정했지만, 처음엔 configure git에 fantazm이라는 아이디를 입력해놨었고,
저렇게 하면 콜라보레이터로 등록되지 않았더라도 내 원 아이디에 로그인되어있기때문에 commit을 할 수 있다는 이야기로 해석된다.
사실 공헌도 그래프에 목매고 싶지는 않지만.. 좀.. 이상하지 않나? 왜 저런 상황을 예외로 빼놨는지 모르겠다. commit이 안되야 정상아닌가? 아무권한도 없는데 저 아이디는?!
2016/09/20 14:53 2016/09/20 14:53