본문 바로가기

길위의 흔적532

[안드로이드 기초] 액티비티의 수명 주기 액티비티의 수명 주기 #핵심 앱 실행할 때 동작하는 메서드 순서 create-> start -> resume(복구되기 바로전 실행됨) 앱 종료할 때 동작하는 메서드 순서 pause(정지되기 바로전 실행됨) -> stop ->destroy #개념 #소스123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687package me.happygate.myapplication111; import android.app.Activity;import android.content.Sha.. 2017. 8. 16.
[안드로이드 기초] Serializable 과 Parcelable로 객체 데이터 넘기고 받기 Serializable 과 Parcelable로 객체 데이터 넘기고 받기 #개념 #Parcelable 이용(Parcelable을 구현한 클래스 생성)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859package me.happygate.myapplication010; import android.os.Parcel;import android.os.Parcelable; //객체 데이터를 전달해주기 위해서 Parcelabe 구현public class SimpleData implements Parcelable { int number; String message; //생성.. 2017. 8. 15.
[안드로이드 기초] 인텐트로 전화걸기 기능 실행하기 인텐트로 전화걸기 기능 실행하기 #전화걸기 화면 #소스123456789101112131415161718192021222324252627282930313233343536373839404142434445package me.happygate.myapplication009; import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText; public class MainActivity extends Ap.. 2017. 8. 15.
[안드로이드 기초] 화면구성과 화면 전환(데이터 넘기기) & 인텐트 개념 화면구성과 화면 전환(데이터 넘기기) & 인텐트 개념 #이장의 핵심 코드 1.메인화면에서 메뉴화면 띄울때//시스템에서 activity를 관리한다 //시스템에 엑티비티를 띄워 달라 요청할때 // (알아들을 수 있는 포멧이 intent) Intent intent = new Intent(getApplicationContext(),MenuActivity.class); //시스템 쪽으로 intent 전달 -> 메뉴페이지를 열어달라, + 식별코드 startActivityForResult(intent, 101); 2.메뉴화면에서 메인화면으로 데이터 전달 할때//스텍에서 화면관리를 한다. //메인화면 위에 메뉴 화면이 떠 있는 상황 // 메뉴화면에서 메인화면으로 데이터를 전달할 때 // 시스템을 통과하기 때문에 int.. 2017. 8. 14.
[안드로이드 기초] inflater로 main화면에서 sub 화면 열기 inflater로 main화면에서 sub 화면 열기 #핵심코드 //서브 화면을 보여줄 인플레이터 객체 생성 LayoutInflater inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.sub1,container,true);inflater.inflate(프레임레이아웃에 띄울 서브 페이지, 서브페이지를 넣을 해당 프레임레이아웃 객체 ,true); #레이아웃 인플레이션 이해하기 xml(화면) -> 자바 소스 코드(기능) -> 실행[먼저 레이아웃 정의 -> 메모리 로딩 -> 실행 ]행 setContentView(...) 가 메모리에 올라간 것을 실제 객체로 만들어 준다.setCo.. 2017. 8. 14.
[안드로이드 팁] 상단바 하단바 숨기기(전체화면) 안드로이드 상단바 하단바 숨기기(전체화면) #MainActivity.java #아래 코드 추가12getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);cs #styles.xml #추가12345 false true Colored by Color Scriptercs 2017. 8. 11.
[안드로이드 기초] 프레임 레이아웃 - 버튼 클릭으로 사진 바꾸기 프레임 레이아웃 - 버튼 클릭으로 사진 바꾸기 #특징visiblety 속성으로 보일지 말지 정해준다.싱글 모델가장 상위에 있는 하나의 뷰 또는 뷰그룹만 보여주는 방법여러 개의 뷰가 들어가면 중첩하여 쌓이게 됨. 가장 단순하지만 여러 개의 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식 이미지 변경은 이미지 객체.setVisibility(현재뷰.VISIBLE) -> 보임이미지 객체.setVisibility(현재뷰.INVISIBLE) -> 숨김 #디자인 화면 #자바소스1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556package me.happygate.myapplicatio.. 2017. 8. 11.
[안드로이드 기초] 레이아웃 레이아웃 *콘센트레이아웃 - 제약조건 - 선으로 연결자석모양, 눈모양 플어도됨가이드라인 : 세로, 가로 *리니어 레이아웃 (가로, 세로 필수로 지정) *속성gravity layout : 레이아웃 위치를 정한다 gravity: 위젯 안의 내용물을 정렬시킨다 layout -weight : 빈공간을 채운다 (남아있는 공간을 분할하는 역할) *상대레이아웃- 다른 뷰나 부모 뷰의 상대적인 위치를 이용해서 배치 *테이블 레이아웃 - TableRow를 사용해서 줄을 만들어 준다. *프레임 레이아웃 : 한번에 하나의 그림만visivilety 로 보일지 안보일지 조정 2017. 8. 10.
[안드로이드 기초] 새로운 창 띄우기 새로운 창 띄우기 !핵심핵심은 새로운 창을 띄우거나, 새로운 동작 예를 들면 전화걸기 웹페이지 열기를 할때 Intent 객체를 사용한다.Intent intent=new Intent(현재창 , 새창 or 전화걸기, 웹페이지 등); #새로운 엑티비티 추가했을 때 #menu 엑티비티 자바소스(back버튼 누르면 뒤로 이동) #메인화면에서 새화면 버튼 클릭 했을때 #메인123456789101112131415161718192021222324252627282930313233343536373839404142package me.happygate.myapplication001; import android.content.Intent;import android.net.Uri;import android.os.Bundle;im.. 2017. 8. 10.
[안드로이드 기초] 메시지 띄우기 url이동 전화걸기 메시지 띄우기 url이동 전화걸기 #디자인 페이지#자바 소스12345678910111213141516171819202122232425262728293031323334353637383940package me.happygate.myapplication001; import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected v.. 2017. 8. 10.
우분투 16.04 Mysql, Express, Angular& node js를 npm페키지로 초간단 간단셋팅 우분투 16.04 Mysql, Express, Angular& node js npm페키지로 초간단 셋팅 #ANGULAR CLI 설치npm install -g @angular/cli # NG 명령어로 앵귤러 프로젝트 폴더생성ng new ngApp --routing # 프로젝트 폴더로 가서 NG SERVER 명령어로 서버가동cd ngApp ng serve # EXPRESS와 연동해주기 위해서 NG BUILD 명령어로 배포 준비ng build (dist 폴더와 build된 파일들이 생성됨) # Express 패키지와 미들웨어인 body-parser , db페키지를 다운로드 한다npm install --save express body-parser mysql #ngApp 폴더 안에 server.js 파일을 만들고.. 2017. 8. 2.
우분투 16.04 Mysql, Express, Angular& node 환경셋팅 & 간단한 task 어플구현 no.1 우분투 16.04 Mysql, Express, Angular& node 환경셋팅 & 간단한 task 어플구현 no.1 #터미널 열어서 프로젝트 폴더를 만든다 mkdir mytask #폴더로 이동해서 init 명령어! cd mytask npm init package.js 생성된다. #필요한 모듈 다운로드(각각의 모듈 설명은 생략)npm install express body-parser ejs mysql --save package.js 폴더 열어서 잘 깔렸는지 확인 #visual studio code로 mytask 폴더 열기 #server.js 파일 생성후 작성 var express = require('express');var path = require('path');var bodyParser = requi.. 2017. 8. 1.
우분투16.04 Visual Studio Code와 Angular cli 설치하기 우분투16.04 Visual Studio Code와 Angular cli 설치하기 #Visual Studio Code 설치 #GPG키 다운로드 위해 필요한 패키지 설치sudo apt-get install curl #GPG 키를 다운로드 후 /etc/apt/trusted.gpg.d 경로에 복사sudo sh -c 'curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg' #VSCD 다운 받기 위한 저장소 설치sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main".. 2017. 7. 31.
[나홀로 앵귤러] 낙서로 간단하게 시작하기 #앵귤러js?구글이 만든 단일 페이지 웹 애플리케이션 개발을 위한 자바스크립트 프레임워크 #특징웹 컴포넌트 기반 재사용 가능커스텀 엘리먼츠, 쉐도우 돔, html import, html 템플릿 #framework에서 platform으로router, angular cli, material, universal 등 다양한 기능 제공 #차이점앵귤러 1 앵귤러2스콥 0, 스콥 x지시자와 컨트롤러 o x비스니스 로직 controll함수 타입스크립트 클래스자바스크립트 모듈 시스템 require.js 타입스크립트 모듈시스템 #angular cli커멘트라인 인터페이스 : 터머널에서 명령어를 입력하면, 그에 따라 프로젝트를 만들어 주고, 라우터, component 등 서비스를 자동 생성 해준다. node js 반드시 설치.. 2017. 7. 31.
우분투16.04 vmware&iptime 포트포워딩 가변ip 문제 TwinIP로 해결하기 우분투16.04 vmware&iptime 포트포워딩 가변 ip문제를 TwinIP로 해결하기 지난번 을 포스팅 했다. 마지막에 "외부접속 성공"이라고 썼다. 그런데 시간이 지나고 보니 접속이 안되었다...알고보니.. 5번. 사설IP가 자주 바뀐다.그래서 6번에 3시간 전에 적어 놓은 IP로 포트포워딩이 불가능하다.6번에 192.168.0.8 을 적어놓았는데 3시간 뒤에 192.168.0.10 이 되어있있다. 그럼 어떻게 할까. 옆에 네트워크에 대해서 조금 아는 사람이 있으면 얼마나 좋으랴. 필자는 그냥 구글링을 열심히 했다... #IPTIME TwinIP로 해결클릭하면 확대됨 - 웹브라우저에서 192.168.0.1입력- 공유기 설정페이지로 들어간다.- 고급설정-> NAT/라우터 관리 -> DMZ/TwinI.. 2017. 7. 28.
우분투16.04 집에서 회사 서버에 접속해보자 iptime&vmware 포트포워딩 외부접속! iptime&vmware 포트포워딩 외부접속! #짧은배경지식 1. IP는 공용 IP와 사설 IP가 있다.2. 공용IP 는 외부 통신 업체에서 하나만 제공해 주는 것이다. 바뀌지 않는다.3. 가까운 공간에 있는 사람들은 사설 IP를 사용한다.4. 사설IP는 공용IP가 제공해 주는 임의의 IP다. 자주 바뀐다.5. 공용IP를 통해 외부 접속이 가능하다.6. 사설IP를 통해 외부 접속이 불가능하다. #외부접속을 위해 해야할 것 1.외부PC 내부 PC 사이 방화벽 해제 2. IPTIME 포트포워딩3. 내부PC와 내부PC에서 돌아가고 있는 가상 OS 포트포워딩 (VMWARE 이용)4. 네트워크 설정 #외부PC 내부 PC 사이 방화벽 해제 제어판 -> 네트워크 및 인터넷 -> 네트워크 및 공유센터 -> window.. 2017. 7. 27.
우분투 16.04 ftp 다운로드는 되고 업로드는 안될때 해결방법 우분투 16.04 ftp 다운로드는 되고 업로드는 안될때 해결방법 우분투 리눅스에 개인 웹서버와 파일서버를 구축해 놓고 원격으로 사용하고 있다. 그동안 ftp로 우분투에 있는 파일을 다운로드만 했지 업로드를 해본적이 없었다. 오늘 해봤다. 오류가 났다! 또 구글링을 했다. 이 문제는 내가 소유자/그룹 개념에 대해서 잘 모르고 있었기 때문에 생긴 문제였다. 나는 mytelnet이라는 유저 아이디로 접속을 했다. 왼쪽pc에 있는 파일을 우분투의 특정폴더로 옮기고 싶었다. 문제는 처음에 우분투의 특정파일의 소유자/그룹이 root로 되어 있었다. 그래서 root 이외의 사용자는 접근자체가 불가능 했다. 그래서 명령어로 소유자를 mytelnet으로 바꾸어주었다. #권한 변경 명령어chown -R mytelnet:.. 2017. 7. 27.
우분투 16.04 vmware&iptime 포트포워딩 후 윈도우 workbench에서 우분투 접속 우분투 16.04 vmware&iptime 포트포워딩 후 윈도우 workbench에서 우분투 접속 #iptime 포트 열기 192.168.0.1로 접속후3306 포트를 접속 허용 해준다. #컴퓨터 방화벽을 풀어주거나 3306포트만 열어준다. #vmware -> edite -> network에서 포트포워딩 3306 #공인ip로 window워크밴치에서 접속 2017. 7. 26.
우분투 16.04 vsftpd 서버 설치해서 외부에서 파일 전송 업로드 하기! 우분투 16.04 vsftpd 서버 설치해서 외부에서 파일 전송 업로드 하기! #vsftpd 설치apt-get -y install vsftpd #vsftpd 설정파일 수정vi /etc/vsftpd.conf #익명 사용자도 읽고 쓰게 할려면anonymous_enable=YES #쓰기도 가능write_enable = YES #익명 사용자도 업로드 가능하게anon_upload_enable = YES #익명 사용자도 폴더 만들기 가능anon_mkdir_write_enable = YES #익명 사용자가 들어오는 home폴더/srv/ftp/ #익명 사용자가 자유롭게 업로드 다운로드 할 수 있는 폴더 만들기cd /srv/ftp/ #공용폴더 생성mkdir pub #권한 설정chmod 777 pub #서버 가동syste.. 2017. 7. 26.
우분투16.04 mysql 설치 후 윈도우 workbench에서 외부 접속하기! 우분투16.04 mysql 설치 후 윈도우 workbench에서 외부 접속하기! #mysql 설치apt-get install mysql-server 비밀번호 설정 후 설치 완료 #확인mysql -u root -p비밀번호 #외부 접속 허용 설정 아래 위치로 가서 mysqld.cnf 파일 열기 #수정 bind-address 를 0.0.0.0 으로 설정하던지, # 으로 주석 처리 해준다. #mysql 접속해서 use mysql;아래 명령어를 입력해 준다. grant all~~ 마지막 빨간 부분은 비밀번호 #flush privileges 를 꼭 적어준다. #우분투 mysql 포트 열어주기(이것 때문에 삽질..ㅜ) sudo ufw allow out 3306/tcp sudo ufw allow in 3306/tcp .. 2017. 7. 25.
ubuntu 16.04 openSSH로 우분투 서버에 원격접속해보자 openSSH로 우분투 서버에 원격접속해보자 #서버 설치apt-get -y install openssh-server #서버 가동systemctl restart ssh #서버 항시 가동systemctl enable ssh # 방화벽 오픈ufw allow 22/tcp #윈도우에서 접속putty 열고 -> ssh 선택 -> ip 입력 -> 접속 #이제 인터넷만 되면 어디서든 우분투 서버로 원격접속 할 수 있다! 2017. 7. 24.
ubuntu16.04에 telnet 서버 설치 후 putty로 원격 접속해보자 ubuntu16.04에 telnet 서버 설치 후 putty로 원격 접속해보기! #설치 흐름 #telnet 관련 패키지 설치apt-get -y install xinetd telnetd #설정 폴더로 이동cd /etc/xinetd.d/ #설정 파일 편집(telnet 파일은 내가 새로 생성한 파일)vi telnet #아래 내용을 복사 붙여넣기!service telnet{ disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID} #사용자 추가adduser 사용자명 #telnet 서버 가동systemctl restart xinetd #방화벽 열기.. 2017. 7. 21.
ubuntu16.04 에서 pm2 와 nginx로 node js 서비스 하기 ubuntu16.04에서 pm2 와 nginx로 node js 서비스 하기 reverse proxy 에 대한 개념을 조금 알고 시작하면 좋을듯! #시작하기 전에 http://abc1211.tistory.com/283지난번 포스팅에서 node js와 express 설치 하는 방법 보실수 있어요. #express 명령어로 폴더를 하나 만든다express nodeApp #만든 폴더로 가서 npm install 후 node 서버 실행cd nodeAppnpm installnode ./bin/www #서버가 작동된 것을 확인하자 #PM2 와 NGINX 설치(구글링으로 한번 찾아보자!)(PM2는 NODE 서버를 관리 지속적으로 서비스 해주는 모듈이고,NGINX는 NODE APP이 외부에서도 접속되도록 하는 서버 .... 2017. 7. 20.
ubuntu 16.04 node js express 설치 후 apache2와 함께 서버 돌리기 ubuntu16.04 node js 패키지 파일 설치 #Node.js v6 설치 curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -sudo apt-get install -y nodejs #Node.js v7 설치 curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -sudo apt-get install -y nodejs #npm에서 네이티브 애드온을 컴파일하고 실행하려면 빌드 도구도 설치 sudo apt-get install -y build-essential #Express 설치#(node js를 더 편리하게 사용 할 수 있게 기본 개발 틀을 만들어 주는 도구라고 생각하면됨)#참고로 -g.. 2017. 7. 19.
우분투 16.04 네임서버 캐싱네임서버 마스터네임서버 FTP서버 한큐에 설치! 네임서버 : DNS 서버역할: 도메인 이름을 IP 주소로 변환 시켜 주는 역할예) WWW.NAVER.COM -> 120.51.153.112 가장 초기의 네트워크 접속 방법- 컴퓨터가 몇대 안됨- 사용자가 모두 외워서 사용- 직접 IP 주소로 접근함 초기에는 hosts 파일을 이용하여 네트워크 접속 (전화번호 수첩과도 같다) 예)/etc/hosts120.153.12.15 www.daum.net123.178.15.17 www.wow.net 나중에는 네임서버를 이용하여 네트워크 접속 - 이름 해석을 전문적으로 해 주는 서버 컴퓨터가 필요해짐 전화 안내 서비스인 114와 같은 역할 - 네임서버는 인터넷에서 변화하는 모든 컴퓨터의 url과 ip정보를 거의 실시간으로 제공- 사용자는 url에 해당하는 ip 주소를 .. 2017. 7. 18.
리눅스 개요 리눅스 개요 2017. 6. 28.
우분투 vim 설치 시 패키지 의존성 문제 해결 우분투 16.04를 설치해서 이것 저것 해보고 있는데..환경설정 부터 어렵네...아무튼 구글님의 도움으로 해결.. 해결방법 sudo apt-get remove vim-common sudo apt-get clean && sudo apt-get purge sudo apt-get update && sudo apt-get install vim 2017. 6. 27.
[자바스크립트 객체지향] 3 객체와 프로퍼티 종류 정리 객체의 이해 자바스크립트 객체는 프로퍼티가 키/값 쌍으로 되어 있는 만큼 해시 맵에 빗대어 생각하면 이해하기 쉽다. 객체 프로퍼티에 접근할 때는 점 표기법 또는 각괄호 표기법 중 무엇을 해도 상관없다. 프로퍼티에 값을 할당하면 언제든 객체에 새 프로퍼티를 추가 할 수 있으며 delete 연산자를 사용하면 언제든 프로퍼티를 제거할 수 있다. 프로퍼티의 존재 여부는 프로퍼티 이름과 객체를 in 연산자와 함께 사용하면 알 수 있다. 이때 고유 프로퍼티만 확인하고 싶다면 모든 객체에 대 포함되어 있는 hasOwnProperty()를 사용하면 된다. 모든 객체 프로퍼티는 기본적으로 열거 가능하다. 열거 가능하다는 말은 for-in 반복문이나 Object.keys()를 사용할 때 볼 수 있다는 뜻이다. 프로퍼티는 .. 2017. 6. 22.
[자바스크립트 객체지향] 2 자바스크립트 함수가 독특한 이유 함수자바스크립트에서 함수는 객체이다. 다른 객체에는 없는 함수만의 특성을 꼽으라면 call이라는 내부 속성을 들 수 있다. 내부속성은 코드로 접근할 수 없지만 코드의 동작을 정의한다. 선언과 표현식함수에는 두가지 리터럴 형태가 있다. 1.함수 선언 function add(num,num2){ return num1 + num2} 2.함수 표현식 var add = function add(num,num2){ return num1 + num2} *참고위의 두 함수는 비슷하지만 한가지 중요한 차이점이 있다.함수선언은 코드가 실행될 때 컨텍스트 상단에 끌여올려진다. 다시 말해 함수를 호출하는 코드가 함수를 선언한 코드보다 앞에 있어도 에러가 발생하지 않는다는 뜻이다. var result = add(5,5); func.. 2017. 6. 20.
[자바스크립트 객체지향] 1 원시타입과 참조타입 정리 원시타입과 참조타입 자바스크립트에서는 원시 타입(primitive type) 참조 타입(reference type)이라는 두 가지 자료형을 제공한다.숫자, 불린값, null과 undefined는 원시 타입이다. 객체, 배열, 함수는 참조 타입이다.원시 타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터 값을 보관한다.참조 타입 데이터는 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없으며, 변수에는 데이터에 대한 참조만 저장된다. 참조는 참조 타입 데이터의 주소이지 해당 데이터의 값이 아니다.원시 타입 변수 복사각 변수 간에 원시 타입 데이터를 복사할 경우 데이터의 값이 복사된다. 다음 예제를 보자.var x = 100; // 원시 .. 2017. 6. 19.