직장인 코칭
홀로서기 샐러리맨 위한 직장인 멘토
직장인 자기계발 (68)
git 다운로드사이트 그리고 설치방법 설치 이상유무 확인방법

github을 가입해서 프로젝트 저장할 곳을 마련했습니다.

이제 사용하고 있는 컴퓨터에 git을 설치 후 버전관리를 연습 해보도록 하겠습니다.

 

git를 다운로드 하기 위해 다운로드 받을 장소를 기억하기 보다는 구글에 git 다운로드 라고 검색하면 링크가 나옵니다.

https://git-scm.com/downloads 입니다

 

윈도우10 이상을 사용한다면 대부분 PC는 64bit windows setup 입니다. 

다운로드 받은 파일을 실행하면 아래 화면이 뜹니다.

나중에 전문가 레벨이 되면 설정을 바꿔가며 설치해보시고 처음 입문자는 그대로 next 버튼을 눌러가며 기본 설정대로 설치를 진행합니다.

 

 

 

 

 

 

 

d설치완료메세지가 나오면 view release notes 체크를 해제하고 finish 버튼을 클릭하세요

q배포 영문 자료를 읽어 보시고 싶은 분은 체크를 그대로 두고 finish 버튼을 클릭해도 됩니다.

설치가 완료되었습니다.

그런데 화면 변화는 없어요

설치가 잘 되었는지 git bash를 실행해보겠습니다.

 

하단 윈도우모양 옆에 있는 검색란에 git bash 치고 엔터 칩니다.

 

 

그럼 귀엽고 앙증맞은 git 창이 뜹니다.

ㅑㅅ

외국사람들은 달러를 좋아하죠 $

당황하지 마시고 마치 예전부터 써왔던 사람처럼 자연스럽게 $옆에 git라고 입력하고 엔터 칩니다.

설치한 git와 연결할 로컬저장소를 만들어 보겠습니다.

이제 부터가 중요하죠

 

다음 보기

  Comments,     Trackbacks
GIT 뜻 어원 그리고 github 가입방법

Git, GitHub가 무엇인지 파악해야 합니다.

Git는  global information tracker 의 줄임말 입니다.

거창하죠, 전반적 정보 추적도구이네요

Hub는  Human, UNIST, Bridge 의 줄임말입니다.

사람을 이어주는 다리라는 말이죠

결과적으로 Git hub는 사용자가 정보추적을 위해 사용하기 위한 연결장소란 뜻입니다.

사전적인 뜻은 그렇고 실제 사용자 입장에서는 정보파일을 관리하기 위한 버전관리툴이 GIT이고 GITHUB를 GIT을 사용하기 위한 연결사이트라 생각하면 쉽습니다.

 

버전관리가 무엇일까요?

포토샵이나 워드 또는 엑셀에서 Ctrl+Z 치면 이전 상태로 되돌아가죠

이처럼 이전에 내가 원하는 시점으로 되돌릴 수 있게 해주는 것이 버전관리 입니다.

버전관리를 도와 주는 툴이 바로 버전관리시스템이고 GIT가 그 중 하나 입니다.

 

포토샵, 워드, 엑셀 처럼 혼자만 사용한다면 버전관리시스템 없이도 Ctrl +Z을 사용해서 관리하거나 개인폴더에 날짜별로 저장해둔다면 GIT를 배울 필요도 없고, GIT를 안 배운다해서 크게 불편함도 없을 겁니다.

그런데 여러명이 함께 작업을 해서 하나의 작품을 만들어 내야하는 프로그램 개발작업이나 공동 프로젝트에서는 불편함이 생깁니다.

내 파일은 알겠는데 다른 파일의 최종본이 어떤 것인지 매번 물어야 하고 그 파일을 받아서 수정하고 있는데 다른 사람이 나도 수정하고 있다고 하면 통합해야 하는 문제도 발생하고 더욱 큰 문제는 다른 사람이 수정하고 있다는 사실 조차 몰랐던 경우 다른 사람이 업데이트 하면서 내가 반영한 소스가 없어 질수도 있기에 최종본 관리에 어려움이 생깁니다.

그래서 GIT 같은 버전관리도구가 필요한 것이고요

GIT로 관리하는 프로젝트를 올려 둘 수 있는 사이트가 GIThub이고 github 외에도 여러 사이트가 있습니다.

 

GIT 호스팅사이트 주소는 github.com 이고 마이크로소프트사에서 인수한 상태입니다.

공개저장소 생성이 무료이고 비공개저장소는 작업자 3인 이하인 경우에는 무료인데 4인 이상이면 유료입니다.

설치형 버전은 월21달러에 사용할 수 있습니다.

 

gitlab.com은 공개저장소와 비공개저장소 생성을 무료로 할 수 있다

 

bitbutcket.org는 이슈관리시스템인 jira를 만든 기업이 만든 사이트라 지라와 연동이 쉬운 장점이 있고

github와 비슷하게 5명 이하면 공개저장소 및 비공개저장소 생성이 무료이다. 

 

공개저장소에 저장하는 것은 전 세계 누구든 협업을 함께 할 수 있게 합니다.

공개저장소에 있는 프로젝트를 오픈소스라고 합니다.

Github 기준 오픈소스는 수천만개있으며 그 중 대표적인 오픈소스는 구글의 유명한 기계학습 라이브러리 텐서플로, 애플의 스위프트, 뷰가  있습니다.

 

자, 서론이 길었죠, GitHub 가입할 시간이 되었습니다.

https://github.com 에 접속하세요

그리고 Signup 버튼을 클릭하세요

 

이메일주소가 아이디 입니다.

확인 메일이 발송되기 때문에 실제 사용하고 있는 메일주소를 넣어야 합니다.

패스워드는 8자리 이상으로 대소문자를 혼용해서 사용하세요

이름은 중복사용이 없는 것으로 본인이 정하면 됩니다.

 

확인메일이 발송되고 메일에 담긴 번호키를 입력하면 등록완료 입니다. 

 

지금 어떤 작업을 하신 건지 아시나요?

프로젝트를 저장할 수 있는 장소를 만들어 놓은 거에요

github라는 장소에 말이죠, 구체화 해보겠습니다.

 

다음 보기

  Comments,     Trackbacks
GIT 초보자 학습 방법

GIT이 등장한지 10년이 넘었습니다.

리눅스의 소스 관리를 위해 등장한 GIT은 강력하고 편리하지만 초보자에겐 어려운 툴이었습니다.

GIT 이전에도 CVS, SVN 같은 버전관리시스템이 있었습니다.

 

지금은 마이크로소프트사가 GITHub를 인수하고, 대부분의 개발자가 GIT을 사용하게 되었습니다.

GIT는 빠른 응답, 브랜치 관리의 편리함으로 혼자서 쓸때나 팀 단위 협업할 때도 좋은 툴입니다.

 

GIT는 리눅스를 만든 리누스 토발즈가 소스관리를 위해 만든 툴입니다.

GIT를 잘 이해해야지만 잘 이용할 수 있습니다.

모든 툴이 마찬가지죠

같은 툴을 줘도 100% 사용하는 사람이 있는 반면 꼭 필요한 기능 몇개만 사용하는 사람도 있으니까요

 

GIT를 처음 쓰려고 하는 사람은 GUI를 우선 배워야 합니다.

메뉴 구조와 해당 메뉴가 언제 쓰이고 어떻게 사용해야 하는지를 알면 그 다음에는 GIT를 이해하기 쉬워집니다.

좀 더 전문적으로 사용하고 싶다면 동작원리를 알아야 합니다.

 

우선 협동 작업을 위해 CLI 명령어를 알아야 합니다.

GUI로 작업 결과를 보면서 실습 해야 합니다.

명령어를 익히기 전에 왜 이 명령어를 써야 하는지 GIT의 기본 구조에 대해 파악해야 합니다.

명령어 중 모든 명령어를 다 알려 하기 보다는 실무에서 많이 쓰는 명령어를 우선 익히고 차츰 차츰 다른 명령어들도 익혀 나가야 합니다.

 

자 그럼 GIT를 배워 보시죠, 출발하겠습니다.

잘 따라오세요

 

  Comments,     Trackbacks
갤럭시 안드로이드폰 밀어서 잠금 해제 없애기 방법

갤럭시폰을 사용하면 밀어서 화면 잠금해제가 불편할 때가 있습니다.

특히 어른들일수록 불편합니다.

켜면 바로 바탕화면이 나오면 좋겠는데 밀어서 화면 잠금해제를 해줘야 하니 말입니다.

 

갤럭시 S2에서 테스트 해본 결과 밀어서 잠금해제 방법은 아래와 같습니다.

전화 버튼을 누릅니다.

그럼 아래 화면이 뜹니다.

아래 전화번호를 누릅니다

*#33328584634*#

위 번호들은 잠금화면 관련 메뉴로 들어가는 설정 선택번호입니다.

위 번호를 정확히 입력했다면 아래 쪽에 메세지가 깜박였다가 사라집니다.

 

그 다음 아래 번호를 입력합니다.

*#7594#

위 번호는 밀어서 잠금 해제를 없애주는 설정입니다.

정확히 입력하면 shut down 이라는 체크박스가 나오게 됩니다.

체크를 한 다음 스마트폰을 껐다가 켜면 적용됩니다.

 

반대로 다시 밀어서 잠금해제 기능을 사용하고 싶다면

위 과정을 동일하게 하되 shut down 체크박스가 나오면 체크를 해제한 뒤 스마트폰을 껐다가 켜면 됩니다.

 

어르신들이나 성격급한 분은 밀어서 잠금해제가 불편하실거에요

켜지면 바로 화면이 나오기 때문에 편리하게 이용할 수 있습니다.

 

한가지 아셔야 할게 있습니다.

루팅 폰은 위 방법이 불가능합니다.

순정 폰만 위 방법이 가능하니 참고하세요

 

밀어서 잠금해제 기능을 없애면 또 한가지 편리해지는 기능이 있는데요

홀드버튼을 길게누르면 비행기모드, 종료, 무음모드 3개에 안내메세지 없이 바로 폰이 종료 됩니다.

사용자 실수로 꺼짐을 방지하기 위해 확인을 두는데, 스마트폰을 많이 쓰다 보면 그냥 종료하라고 하면 종료하면 되는데 종료할까요 물어보면 귀찮을 때가 있죠

 

오늘은 밀어서 잠금해제 기능을 없애는 방법을 알려 드렸습니다.

다음엔 카톡과 연계된 유용한 기능을 이야기 해보겠습니다

  Comments,     Trackbacks
파이썬 웹스크랩핑 오류 해결 방법 ModuleNotFoundError : No Module named

웹스크랩핑에는 다음 라이브러리가 필요합니다.

requests : 웹서버에 요청과 응답 받는 라이브러리 

beautifulsoup4 : 응답받은 웹페이지 데이터에서 데이터 추출하는 라이브러리

lxml : html 문서를 파싱하는 라이브러리

파서는 내장 파서인 html.parser를 사용할 수도 있으나 lxml이 파싱 속도가 더 빠름

 

ModuleNotFoundError : No Module named 'requests'

라이브러리를 인스톨(설치)하지 않은 경우 발생하는 메세지입니다.

 

pip install beautifulsoup4 lxml requests

파이프 명령어로 인스톨할 수 있습니다.

명령어는 띄어쓰기로 구별하고요 install 다음에 나오는 라이브러리들을 인스톨(설치)시킵니다.

 

파이썬을 만든 분은 여자분이거나 귀여운 자녀가 있는 부모가 아닐까 싶어요

파이프(pip)로 아름다운비누방울(beautifulsoup4)을 부는 모습과 맛있는 파이(python)가 떠오르지 않나요?

 

 

웹사이트를 무단 접근하는 것을 막기 위한 로버트를 배치한 사이트가 많습니다.

예전엔 마징가Z나 태권V였는데 웹사이트는 robots.txt가 지킵니다.

robots.txt  무단접근 방지 표준

이 로버트는 스크래핑(웹페이지정보수집) 하려하면 문 앞에서있다가 초청명단에 없으면 입장 요청을 거부해버려요

그래서 나는 스팸 봇(불량 프로그램)이 아니야, 난 그냥 정보가 필요한 선량한 프로그램이야 하고 입장권을 전달해줘야 합니다.

이때 사용되는 것이 사용자 에이전트(user agent) 입니다.

http header에 사용자 에이전트 정보를 담아 보내면 로버트가 초청명단 확인 후 통과 시켜 줍니다.

 

예를 들면 웹주소란에 www.naver.com/robots.txt 입력하고 엔터를 쳐보세요  

User-agent: *

Disallow: /

Allow : /$

네이버는 모든 스트래핑 방문자(user-agent)는 거부, 단 루트페이지는 방문 허용이라는 명부를 가지고 있습니다.

 

다음엔, 그러면 어쩌라구, 네이버를 스크래핑하고 싶은데 하는 분들을 위해 스크래핑하는 방법에 대해 기재해보겠습니다.

  Comments,     Trackbacks
엑셀 수식 표시란 안 보일 경우 해결 방법
엑셀 수식 표시란이 안 보일 경우 해결 방법

직장인이라면 엑셀을 많이 사용할텐데요

어느 날 아래 그림 처럼 수식입력란이 사라졌습니다.

이런 경우 어떻게 하면 수식입력란이 보이도록 하는지 알아 보겠습니다.

간단해서 그런지 인터넷을 조회해 봐도 설명글이 없더라고요. 모르면 어려운데 말이죠.

 

위와 같이 수식란이 안 보이는 경우 당황하지 않은 듯 마우스를 자연스럽게 손에 잡고 보기 메뉴를 딱 누릅니다.

그런 다음 수식입력줄을 아무 일도 없었다른 듯 체크 하세요

 

 

그러면 아래 그림과 같이 수식란이 표시 됩니다.

참고적으로 팁을 하나 더 알려드리자면 

Ctrl + ~ 키 누르면 셀 안에 수식이 들어 있는 셀은 다 수식으로 표시 합니다.

첫번째 사진은 원본이고. 두번째 사진은 Ctrl + ~ 키를 누른 결과 입니다.

 

위 사진에서 다시 원상태로 가려면 다시 Ctrl + ~ 키를 누르면 됩니다.

  Comments,     Trackbacks
파워빌더 엑셀 파일 업로드 소스 및 에러 해결 방법

개발업무를 하는 직장인이라면 프로그램에서 엑셀파일을 다루는 것은 필수과제가 아닐까 생각됩니다.

엑셀의 자료를 프로그램에 업로드하고 다운로드하는 방법은 꼭 알아야하죠

아래는 인터넷 서칭을 통해 구할 수 있는 엑셀 파일 업로드 함수의 소스 입니다.

엑셀 파일을 지정하면 그 파일을 데이터윈도우에 넣어주는 소스이죠

일단 엑셀파일을 데이터윈도우에 들어가기 쉽게 텍스트 파일로 변환한 후 import 하게 됩니다.

그런데 문제가 있습니다.

 

엑셀 파일 A를 지정했는데 

프로그램을 실핼 전에 엑셀 창 B가 띄워져 있었다면 이 소스는 기존 엑셀창 B의 데이터를 업로드 하려고 한다는 것입니다.

심지어 기존 엑셀창 B를 닫아 버립니다.

왜 문제가 심각하냐면 기존 엑셀창에 열심히 데이터를 입력해 놨는데 엑셀창을 닫아 버리면 심호흡이 급격히 상승하면서 분노게이지가 올라가게 하기 때문이죠

 

문제 해결 방법은 간단합니다. 모르면 어렵고요

li_connect = ole_excel.ConnectToObject("","excel.application") 

connecttoobject를 connecttonewobject로 교정하는 것입니다.

connecttoobject는 엑셀이 이미 띄워져 있다면 기존 엑셀을 재사용하는 것이고 

connecttonewobject는 새로운 엑셀창을 만드는 것입니다.

 

 

 

 

//***************************************************************************************//

 //* Import file type : TXT(탭형식), CSV(쉼표), XLS(엑셀파일)

 //* Function : f_excel_import *//

 //* 용 도 : 선택한 파일을 DataWindow에 ImportFile 하기 *//

 //* Argument : as_path (처리할 Excel File 경로, 파일명 포함) *//

 //*    adw (IMPORT할 DataWindow) *//

 //*    as_error ( Reference, Error Msg) *//

 //* ReTurn값 : Long( 1 : Success, 0에서 -9 : ImportFile Fail, -10 : FileOpen Fail, *//

 //* -11 : FileDelete Fail ) *//

 //* 사 용 예 : f_excel_import('C:\TEMP\TEMP.XLS', dw_1, REF ls_err) *//

 //***************************************************************************************//



 oleobject ole_excel

 Boolean lb_select, lb_delete

 Integer li_connect, li_open

 Long ll_xls, ll_row, ll_import

 String ls_open_file, ls_save_file , ls_msg



SetNull(as_error)

 ls_open_file = trim(as_path)



IF Len(ls_open_file) = 0 THEN

  as_error = "엑셀 파일의 경로를 입력하세요."

  RETURN -10

 END IF



IF Not FileExists(ls_open_file) Then

  as_error = "지정한 파일이 존재하지 않습니다."

  RETURN -10

 END IF





 if pos(ls_open_file,'CSV') + pos(ls_open_file,'csv') > 0 then

    ll_xls = pos(ls_open_file,'CSV')  //쉼표분리파일

   if IsNull(ll_xls) or ll_xls = 0 then ll_xls = pos(ls_open_file,'csv') 

 else

    ll_xls = pos(ls_open_file,'xls')  //엑셀파일 

   if IsNull(ll_xls) or ll_xls = 0 then ll_xls = pos(ls_open_file,'XLS') 

 end if



if IsNull(ll_xls) or ll_xls = 0 then //* Excel File이 아니면 Text File인지 체크

 ll_xls = pos(ls_open_file,'txt')  // txt 탭 분리 파일

 if IsNull(ll_xls) or ll_xls = 0 then ll_xls = pos(ls_open_file,'TXT') 

  If Not IsNull(ll_xls) or ll_xls > 0 then

   ls_save_file = ls_open_file

   goto excel_import

  END IF

  

  as_error = "Excel 파일이 아닙니다."

  Return -10

 end if



ole_excel = CREATE OLEobject



li_connect = ole_excel.ConnectToObject("","excel.application") 



IF li_connect = -5 THEN 

  // -5 Can't connect to the currently active object 

  li_connect = ole_excel.ConnectToNewObject("excel.application") 

 END IF 



IF li_connect <> 0 THEN

  SetPointer(Arrow!)

  CHOOSE CASE li_connect

     CASE -1

      ls_msg = "Invalid Call: the argument is the Object property of a control~r~n"

     CASE -2

      ls_msg = "Class name not found~r~n"

     CASE -3

      ls_msg = "Object could not be created~r~n"

     CASE -4

      ls_msg = "ould not connect to object~r~n"

     CASE -9

      ls_msg = "Other error~r~n"

     CASE -15

      ls_msg = "MTS is not loaded on this computer~r~n"

     CASE -16

      ls_msg = "Invalid Call: this function not applicable~r~n"

     CASE ELSE

      ls_msg = "If any argument's value is NULL, ConnectToNewObject returns NULL.~r~n"

  END CHOOSE

  DESTROY ole_excel 

  as_error = '엑셀 프로그램을 실행할 수 없습니다. ~r~n'+ls_msg

  RETURN -10 

 END IF



SetPointer(HourGlass!)



ole_excel.WorkBooks.Open(ls_open_file)

 ole_excel.Application.Visible = FALSE



lb_select = ole_excel.WorkSheets(1).Activate



ls_save_file = mid(ls_open_file, 1, ll_xls -2) + string(now(),'hhmmss') + ".txt"



ole_excel.Application.Workbooks(1).Saveas(ls_save_file, -4158)

 ole_excel.WorkBooks(1).Saved = TRUE



ole_excel.WorkBooks.Close() //파일삭제



ole_excel.Application.Quit

 ole_excel.DisConnectObject()



DESTROY ole_excel



excel_import:





 ll_import = adw.importfile(ls_save_file) // 1번라인부터 입력

//ll_import = adw.importfile(ls_save_file,2)



SetPointer(Arrow!)



IF ll_import < 1 Then

  MessageBox("ERROR", "파일 처리에 실패 하였습니다.(" + ls_save_file + ")", StopSign!)

  Return ll_import

 END IF



adw.accepttext()



IF NOT FileDelete(ls_save_file) THEN

  MessageBox("ERROR", "파일 삭제에 실패 하였습니다.(" + ls_save_file + ")", StopSign!)
  Return -11
 END IF

Return 1

 

 

다음엔 요즘에 많이 프로그래밍 되고 있는 스크랩핑에 대한 팁을 기술하겠습니다.

  Comments,     Trackbacks
로그인시 보이는 이름 바꾸기 와 사용자 계정 변경

로그인시 보이는 이름이 있습니다.

이 이름은 컴퓨터명이 아니라 사용자 계정명입니다.

제어판으로 이동하세요

 

사용자 계정을 클릭하세요

계정 이름 변경을 클릭하세요

원하는 이름을 넣고 이름변경을 클릭합니다

이상 입니다

  Comments,     Trackbacks