전체 글 779

[ Android ] 04. Permission 설정하기

Permission 마시맬로 버전 이후부터는 퍼미션 등록뿐 아니라, 사용자가 사용하기 전 퍼미션 안내 및 등록 및 직접 설정 종류 일반권함 위험권한 액티비티를 실행하거나 버튼을 누르거나 어떤 기능을 사용할 때 권한에 대한 처리를 할 수 있도록 구현 사용 메소드 checkSelfPermission : 퍼미션의 현재 상태를 확인하는 메소드 - PERMISSION_DENIED : 퍼미션이 부여되지 않은 상태 - PERMISSION_GRANTED : 퍼미션이 부여되지 있는 상태 requestPermissions : (checkSelfPermission : PERMISSION_DENIED )권한이 체크되어 있지 않은 경우에 권한을 요청하는 메시지를표시 (이 메소드 이외에도 제공되는 메소드는 여러개임) onRequ..

[ Android ] 03. 화면전환을 위한 Intent

Intent(인텐트) 여러 화면간 전환을 위해 사용 ( 두 가지 방법 존재) 실행흐름 : Activity "A" -> Intent -> 안드로이드OS -> Intent -> Activity "B" 20-04-08 수 ** Intent(인텐트) 안드로이드에서 사용하는 주요 컴포턴트 4개는 안드로이드 OS에서 실행되게 해주어야 한다. 이를 이해 Activity간의 화면전환을 위해 데이터 Intent가 전달하며 공유하는 방식. [기본 실행흐름] 인텐트 객체를 생성하고 실행할 액티비티의 정보와 데이터를 셋팅 값 셋팅 : putExtra 메소드를 이용 객체 셋팅 : Parcelable을 implement하여 이용 writeToParcel 메소드 자동호출 안드로이드OS에 인텐트 객체 넘기며 의뢰 startActiv..

[ Android ] 02. 사용자정의 adapter와 layout inflation

레이아웃 인플레이션 XML레이아웃의 내용이 메모리에 객체화되는 과정 패키지 구분하기. 레이아웃을 만들때는 항상 context 객체가 들어간다. .this 객체를 지정할 때, 익명이너클래스는 객체가 될 수 없기 때문에 아우터클래스.this를 활용하여 아우터클래스를 지칭해줘야 한다. 이너클래스에서 아우터클래스의 변수를 접근할 때는 final을 붙여줘야한다. layout Inflator protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_inflator_test); Button btn = findViewById(R.id.btnAdd); final..

[ Android ] 01. 각종 위젯과 이벤트처리방법 & AdapaterView

이벤트처리하기 이벤트소스 : 이벤트를 발생시키는 객체( ex.버튼 ) 이벤트리스너 : 이벤트 발생 시 리스너가 가지고 있는 메소드를 실행 익명이너클래스 20-03-27 금 drawble_test drawble_img_커스터마이징하기 TextTestActivity AppCompat : OS에 맞게 화면으루 맞춰주겟다. - 리소스의 외부화 이너클래스 외부클래스 20-04-06 월 etc뷰 , 선택위젯, 인텐트(액티비티 -> 액티비티의 전환)(레이아웃 인플레이션) 액티비티는 화면. 액티비티A -> 액티비티B를 실행하고싶다? new에서 생성하지 않는다. => 컴포넌트 시스템(안드로이드 내부에서 요청 후 실행) 모든것은 manifest파일을 기반으로 한다!! 현재 안드로이드 버전에서는 캐스팅코드가 필요없다. 안드..

[ Android ] 00. 안드로이드의 개요와 각종 Layout 알아보기

tool은 android studio를 사용합니다. 20-03-24 화 acitivity_main.xml MainActivity.java AndoriodManifest.xml : 설명서(권한 등) java(genrated) 폴더는 자동생성폴더라 건드리면 X res폴더 슬래시 기준으로 뒤에 있는게 피일명, 뒤에있는게 폴더명 @는 참조하고 있다는 뜻 폴더에다가 넣는다고 자동인식하는 거이 아니다. res폴더에 추가하면 => 리소스를 관리하는 R파일에 내용이 자동으로 저장 common attribute는 모든 위젯에 공통으로 가지고있는 속성 > 새로운프로젝트 작성( File - New - NewProject ) App명 : firstPro package : exam.day01.first 프로젝트명 : first..

[ Network ] 01. 안드로이드와 TCP통신을 이용해 채팅서버 구현하기

TCP통신 서버는 서버의 역할을 하기 위해 소켓 객채를 생성한 후 클라이언트로부터 들어오는 데이터를 받기 위해 포트를 열어놓고 대기해야 한다. ( Servet Socket ) 클라이언트는 서버의 IP와 포트의 정보를 알아야 한다. ( Socket ) 소켓 끼리의 통신하는 것이다 !! 서버와 클라이언트가 1대1로 채팅을 할 수 있도록 구현하기 ConsoleChatServer.java : 서버 ConsoleChatClient.java : 클라이언트 클라이언트와 서버의 input/output을 쓰레드로 구현 ClientSenderThread ClientReceiveThread ServerSenderThread ServerReceiveThread package single.console.chat; import ..

[ Network ] 00. 네트워크란 무엇인가

Network 20-04-22 수 TCP ? UDP? 프로토콜? 프로토콜 : 약속 TCP통신을 할거야 우린~ => 연결지향 : 데이터를 보내고 잘 갔는지 확인하고 제대로 안갔으면 다시 확인 네트워크프로그래밍 : 서버가 있어야 해요~ pc&pc연결 ~ => 서버와 클라이언트를 만들어야 한다. 어떤식으로 데이트를 받고 데이터를 처리해야하겠다라고 명시해놓은 pc가 있어야한다.(서버) 요청을하는pc(클라이언트) 우리는 그동안 서버역할을 하는 tomcat(웹)이나 oracle(DB)을 설치해서 사용했다. 자바에서 "쓰레드", "네트워크", "IO"에 대한 기본 개념은 필수이다! > URLTest2.java URl객체를 생성 image copy image폴더에 저장

[ Git ] 00. 형상관리를 위한 Git을 알아보자

Git Git은 분산형버전관리시스템( DVCS ) 소스코드 형상 관리도구로써, 작성되는 코드의 이력을 관리한다. 0.기본 설정 아래의 설정은 이력 작성자(author)를 설정하는 것으로, 컴퓨터에서 최초에 한번만 설정하면 된다. $ git config --global user.name kim-sung-hyun93 master origin원격 저장소에 push하게 되며, github에서 확인할 수 있다. 이후 작업 과정에서는 add -> commit으로 이력을 남기고 push로 업로드 하면 된다. ==== Git 특강 1 ( 2020-04-23 ) ==== 분산형 버전관리 시스템( DVCS ) 남기는 커밋 하나하나들이 버전으로써 관리가 된다. 리눅스의 아버지인 토발즈씨가 만들었음. git에서 가장 중요한 ..

IT/[ Git ] 2020.08.11

[ Django ] 08. Django에서 JavaScript 이용하여 좋아요 구현하기

자바스크립트를 활용해 좋아요 구현 base.html _like.html {% if user in article.like_users.all %} {% else %} {% endif %} {{ article.like_users.count }} {% if user in article.recommend_users.all %} 추천 취소 {% else %} 추천 {% endif %} index.html {% load static %} ... detail.html {% load static %} ... like.js const likeButton = document.querySelectorAll('.like-button') likeButton.forEach(button =>{ button.addEventListen..

[ Django ] 07. Django relation M:N (profile, follow, paging)

M:N 관계 ex) 의사-환자 모델링 models.py from django.db import models # Create your models here. class Doctor(models.Model): name = models.CharField(max_length=20) def __str__(self): return f'{self.pk}번 의사 {self.name}' class Patient(models.Model): name = models.CharField(max_length=20) def __str__(self): return f'{self.pk}번 환자 {self.name}' class Reservation(models.Model): doctor = models.ForeignKey(Doctor..

[ Django ] 06. Django relation 1:N 복습

1:N 관계 복습 유저 생성 ORM User.objects.create(username='test', password='test') 게시글 생성 ORM $ python manage.py shell_plus user1 = User.objects.get(pk=2) In[] user1 Out[] Article.objects.create(title='aaaa', content='bbbbb', user=user1) Article.objects.create(title='aaaa', content='bbbbb', user_id=user1.pk) 댓글 생성 ORM comment = Comment.objects.get() comment.article.pk 4 comment.article.title title articl..

[ Django ] 05. Django relation 1:N (사용자 분할)

django relation 1:N 06/22 cascade만 사용 django 확장 툴 설치 $ pip install django-extensions settings에 등록해줘야 한다. 'django_extensions' 으로 등록 쉘창을 켠다 -> mysite 위치로 가서 켜야한다. $ python manage.py shell_plus ipython 설치 $ pip install ipython 0623 Admin 관리자 계정 생성 # musicians/admin.py -admin 정의 from.models import Musician, Album admin.site.register(Musician, Alubm) # bash 관리자계정 생성 python manage.py createsuperuser h..

[ Django ] 04. Django 로그인/회원가입 구현

Django 로그인 /회원가입 회원가입 # urls.py path('signup/', views.signup, name="signup"), # views.py from django.contrib.auth.forms import UserCreationForm # Create your views here. def signup(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): user = form.save() return redirect('articles:index') else: form = UserCreationForm() context = { 'form' : form } return ..

[ Django ] 02. [예습] 전생 알아보기

Past Job APP Create APP APP Name : jobs Model Class Name: Person Fields name CharField past_job TextField makemigrations로 설계도 작성 migrate로 DB에 설계도 반영 직업 리스트 https://bit.ly/past_job_list urls urls 분리 필수: 프로젝트 폴더, jobs 아래 urls app_name, path name 설정 필수 views /index/ index.html 렌더링 /past_life/ 사용자가 form으로 날린 이름을 받아 저장 DB에 사용자가 입력한 이름이 있는지 확인 만약 사용자가 입력한 이름이 DB에 있다면 기존 그 사용자의 past_job을 past_job 변수에 담..