지금까지 저장소를 만들고 기본 git 환경을 생성하였다.

이번 포스팅 에서는 코드를 작성하고 그 코드를 업로드 하는 방법을 알아볼것이다.






일단 VI 에디터를 이용해 간단한 CPP코드를 작성한다.




Hello World!! 문자열을 출력하는 코드




그리고




README 파일도 생성합니다.





정상적으로 두 파일이 생성된것을 확인할수 있다.







정규 표현식을 이용해 업로드할 파일을 추가 한다.

단일 파일의 경우 파일의 이름을 작성 해준다.


git add ~~~파일이름~~~~

이런식으로 작성 해준다.





업로드하기전 git config --global user.email ~~~~이메일~~~~ 과

             git config --global user.name ~~~~이  름~~~~을 이용해


정보를 입력해주고 git config --list 를 통해 정상적으로 작성 되었는지 확인해준다.





가장중요한 commit 부분 

-m 옵션을 이용해서 해당 커밋에 메시지를 입력해준다. 

간단한 업데이트 내역을 작성해주어 무엇이 바뀌었는지 작성해주는것이 좋다.






commit 후 push를 해주는데 


여기서 origin 은 이전 포스팅에서 작성해둔 url값을 나타내는 것으로 

git remote -v를 통해 확인 가능하다.


master의경우 branch의 이름을 나타낸다.


git push origin master을 해주면

github의 id와 pw를 물어보고 제대로 작성 했다면 업로드를 시작하게된다.





정상적으로 업로드가 완료된모습 


파일 옆 initial project 라는 메시지가 보인다.

이런식으로 간단한 업데이트 내역을 적어주면 push 했을 때 어디가 바뀌었는지 쉽게 알아볼수있다.




일단 기본적인 git의 내용은 여기까지입니다.










이전 포스팅에선 GitHub에 가입하는 방법을 알아 보았다.

이번 포스팅 에서는 GitHub에 가입된 아이디에 작업공간인 repo를 생성하고 

해당 내용을 불러오는 방법을 알아볼것이다.




이전 포스팅에서 가입하고 이메일을통해

계정까지 활성화하고 난뒤 로그인하면 다음과 같은 페이지가 나온다.



우리는 새로운  repositories를 만들 것 이므로 우측 하단부분의 New repository버튼을 클릭해서 

새 저장공간을 만들기로한다. 





해당 버튼을 클릭하게 되면 나오는 페이지이다. 

위에서부터 차례대로 쓰면 되는데 우리는 기본적인 저장소를 생성할예정이니

Repository name 칸에 저장소의 이름을 작성해준다. 여기선 hello로 작성하였다.



그외에 따로 건드릴 부분은 없고 Create repository 버튼을 눌러 저장소를 생성 해준다.





정상적으로 생성이 완료된 모습 

이페이지를 종료 하지 말고 일단 터미널로 이동한다.



우리는 클론 기능을 이용해서 파일과 기본 설정 정보를 불러올것이다.

우선 폴더를 생성하고 해당 폴더로 이동한다.




그후 clone기능을 이용해 위에서 생성한 repo를 불러온다.



git clone ~~~URL정보 입력~~~~





위의 코드를 이용해 repo의 기본 설정 값을 불러오게되면 

해당 repo의 이름의 폴더가 생성되게 되고

해당 폴더안에는 .git이라는 폴더가 생성되어 설정값이 들어있게 된다.





당 폴더안에서 git remote -v 명령어를 수행시 설정에 들어있는 url값이 나온다.

이 설정값은 git remote add 이름 url  기능을 이용하여 추가할수 있다.



여기까지 저장소를 생성하고 클론 및 불러오는것을 해보았다.

다음 포스팅에는 코드를 작성하고 업로드하는 방법을 알아볼 예정이다.




Git을 처음 시작하기위해선 git을 설치하고 GitHub같은 git서버가 필요하다.


이 포스팅 에서는 GitHub를 이용하여 git을 이용하는 방법을 작성할 예정이다.



우선 GitHub에 가입을 하는법을 알아보자.




일단 GitHub 홈페이지로 가면 위와같은 페이지가 나오는데 바로 위칸부터 닉네임, 이메일, 비밀번호를 입력하고

Sign up for GitHub를 클릭해서 가입을 해준다.




버튼을 클릭하게 되면 다음 페이지로 넘어가게되는데 이페이지 같은경우

 Private repositories를 이용할수있도록 가격을 선택할수있는부분이다.


다른 사람들에게 코드를 공개하고 싶지 않다면 다달이 돈을 지불하고 개인공간을 이용할수 있다. 


우리는 공개 코드를 작성하는 것으로 가입 하도록한다.


아무버튼도 누르지 않고 Finish sign up버튼을 클릭해 회원가입을 완료한다.









위까지 진행했다면 이제 아까 적었두었던 이메일을 확인하러 이동한다.

이메일에는 아래와 같은 메일이와 있을것이다.








Verify email address 버튼을 눌러 아이디를 활성화 시켜준다.







t



성공적으로 회원가입이 완료되었다.


다음포스팅에선 repo를 생성하고 파일을 업로드하는 내용을 작성할 예정이다. 




우분투에서 Git을 설치 하기


1. 우선 패키지를 업데이트 해준다.

sudo apt-get update





2. 패키지 업데이트 후 Git패키지를 설치해준다.

sudo apt-get install git





3. 성공적으로 설치 되었는지 확인

 git --version





버전정보가 출력된다면 설치가 된것





페러렐즈상에서 우분투를 설치하고 기본 우분투에 로그인 했을 때 

GUI상에서 작업 할 수 있도록 가상머신이 작동한다.


하지만 이 가상머신상에서 직접 코드를 작성하고 무언가를 할때 끊김현상이나 키 밀림 같은 현상이 발생하게된다.



우리는 이 가상머신에 ssh연결을 해서 더 쾌적한 환경에서 개발을 해볼려고 한다. 


ssh연결은 Secure Shelld의 약자로써 리눅스나 유닉스같은 환경에서  직접 연결하지않고


터미널 연결을 통해 CUI환경을 연결 가능 하다.



윈도우계열에선 putty나 xshell 같은 툴 들을 이용해서 연결 해야하지만 맥은 따로 ssh 연결프로그램을 설치해줄 필요 없이


설치가 되어있어서 그냥 명령어를 치고 연결만 하면 된다.














설치하는 과정을 살펴 보자.




1. 우분투 상에서 sudo apt-get install ssh 명령어를 쳐서 설치를 진행해주도록한다.














2. 정상적으로 설치가 끝났다면 사용자 이름@컴퓨터이름을 출력해주고 커서가 깜빡인다.






설치는 이것으로 다 끝났다.





이제 우리는 이 가상머신의 정보를 가져와서 리얼머신에서 사용하여야하기때문에 ssh를 연결하기위해 

필요한 정보 즉 ip주소를 가져 올 것 이다




3. ifconfig를 이용하여 해당 가상머신의 네트워크 정보를 가져온다.




ip정보는 다음과 같다       ->     10.211.55.4




4. 맥의 터미널을 켜서 ssh명령어를 실행한다


넘겨주는 파라메터 값은 다음과 같다  사용자 계정명@ip주소 혹은 컴퓨터 이름 -p 포트번호


하지만 우리는 기본 포트번호 이므로 포트번호는 적어주지 않아도 된다.




5. 성공적으로 연결된 모습이다.  












이런 식으로 ssh를 연결해 가상머신을 제어 할 수 있다. 







'공부 > Ubuntu' 카테고리의 다른 글

[우분투] Git 처음 시작하기 - repo생성 및 fetch  (0) 2015.12.22
[우분투] Git 처음 시작하기 - GitHub가입  (0) 2015.12.21
[우분투] Git 설치  (0) 2015.12.21
mkdir  (0) 2014.08.02
Systemctl 명령어  (0) 2014.08.02

링크 http://59.23.113.171/30stair/dam/dam.php?pname=dam&stair=14


댐 문제는 다음과 같다.


우선 입력으로 마을의 크기가 주어지고


기둥과 물이 지나 갈 수 있는 길이 1 과 0으로 표기된다.


그 후에 호수의 좌표가 주어지고 


댐을 건설 할 때 걸리는 시간을 주어지게 된다.



위 문제는 dfs bfs 모두 사용 가능 하다(최대 마을의 크기가 100*100 이기 때문


하지만 맵의 크기가 더 크게 주어진다면 bfs를 사용 시 타임 아웃에 걸리게 될 것이다.



나 같은 경우는 큐를 생성하고 큐에 첫 좌표를 주어주고 물이 이동 가능한 길을 찾아서 너비 우선 방식으로 찾아가게 만들었다.


너비 우선(BFS)의 경우 큐를 만들어야 하므로  알고리즘을 짜는데 시간이 더 걸리고 디버깅도 힘들게 된다.


하지만 쓸데없는 연산을 하지 않아 유용하다. 



해결 방법은  물의 좌표를 가지고 상하좌우 방향으로 물을 퍼트린다. 


나 같은 경우는 큐에 물에 좌표를 넣고 물이 모두 마을을 덮칠 때 까지를 구하고 그 값에 대해서 댐을 건설 할 수 있는지 체크해서 


출력하는 방법을 택하였다.



여기서는  다 찾을 필요없이 댐을 건설하는데 걸리는시간+1 까지만 구하면 최적의 방법으로 구할수있지만 나는 완전 다찾은후에 개수를 세었다.


위의 방법으로하면 수행 시간을 조금 더 단축 할 수 있을 것이다.





자바 JDBC연결 부분에서 찾을수 없다는 오류가 나오게 되었다.



이하 해당 코드 내용


String URL = "jdbc:oracle:thin:@localhost:1521:xe";

String ID = "ID";

String PW = "PASSWD";

try {

Class.forName("oracle.jdbc.driver.OracleDriver");    

con = DriverManager.getConnection(URL, ID, PW);

 }




Class.forName("oracle.jdbc.driver.OracleDriver"); 이 부분에서 오류가 발생한다.


오류내용


java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

DB 연결 실패 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at Frame.connect(DBPro.java:87)

at Frame$1.actionPerformed(DBPro.java:71)

at java.awt.Button.processActionEvent(Button.java:409)

at java.awt.Button.processEvent(Button.java:377)

at java.awt.Component.dispatchEventImpl(Component.java:4891)

at java.awt.Component.dispatchEvent(Component.java:4713)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)




발생이유는 JDBC 라이브러리의 부재 


빨간 밑줄도 쳐져 있지 않아서  어디서 오류가 발생 하는 건지 이해를 못했다.


이 문제를 해결하는 방법은 다음과 같다.






프로젝트 오른쪽 클릭 후 Properties 클릭







Java Build Path 클릭후 Add External JARs..클릭







오라클 설치위치로 이동한다. 기본설치디렉토리(오라클 10g)는 다음과 같다. 여기서 ojdbc14.jar를 넣어준다.





ok 누르면 완료


실행 시켜보면 정상적으로 구동됨을 확인할수있다.









자바는 레이아웃 관리하기가 개 빡시다.


안드로이드 마냥 보이지도 않고 켯다 껐다 켯다 껐다 개 짜증나기 때문이다.


이번 글에선 레이아웃을 마스터 해보기로 한다.



일단 JFramed의 기본 레이아웃은 Borderlayout이다.



Borderlayout같은 경우 동서남북 중앙 이렇게 다섯가지가 주어지는데


가운데의경우 프레임 크기에 따라 컨텐츠의 크기가 변화하게 된다.


물론 동서남북의 경우에도 같다.


일단 중앙으로 배열했을때 결과이다.


 

버튼을 넣었지만 중앙이고 그 창에 맞추어 개 커진 결과를 볼수가 있다.





북쪽의 경우이다.


상하 폭은 줄어들고 좌우폭은 그대로 인 것을 볼 수 있다. 




동쪽의 경우이다.







이런 규칙들을 이용하면 버튼 크기를 최소화하고 내가 원하는 방향으로 설정이 가능하다.



JPanel을 이용하여 배열을 구성한다.






이러한 레이아웃을 하기 위해선 패널을 하나 더 만들고 그 패널 안에서


레이아웃을 구성하고 그 레이아웃을 큰 패털에 넣어줌으로써 표기가 가능하다.


JFrame이란 가장 큰 틀을 제외하고 여러 패널들을 조합하여


레이아웃을 만들어 낼 수 있다.








안드로이드의  TabHost 기능과 비슷한 구성이 가능하다


JTabbedPane을 활용하면 탭이 생성되고 각각 탭에 대해 


패널을 넣어주어 탭마다 다른 화면 구성이 가능하게된다.


일단 탭에는 컴포넌트들을 넣을 수 있는데 가장 간단한 JPanel을 넣어서 구성하였다


JPanel의 기본 레이아웃은  FlowLayout 이므로 구성 할때 setLayout 을 통해 다른 레이아웃을 지정해주어야 


삽질을 피할수 있다 ㅠㅠ




  


일단 패널에 setBackground를 이용하여 패널에 넣을 수 있는 크기를 나타내었다.


추가된 탭 버튼을 이용하여 탭들을 전환할수 있고 해당탭들을 이용하여 다른 패널을 확인할수있다.





자바에서 사용자의 경로나 시스템 정보 및 자바 버젼등을 얻을때 System.getProperty()함수를 이용 하면 된다.


자바 문서에는 다음과 같이 나와있다.





내문서의 경로를 얻기위해선 user.home을 이용하면 내문서의 경로를 얻을수있다.


FILE IO 기능을 수행할때 유용하다. 



사용예



+ Recent posts