-
Kafka - 4!
카프카 커넥트 카프카 오픈소스에 포함된 툴 중 하나 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션 파이프라인 생성 시 자주 반복되는 값들 (토픽 이름, 파일 이름, 테이블 이름 등)을 파라미터로 받는 커넥터를 코드로 작성시 이후에 파이프라인을 실행할 때 코드 작성할 필요 없음 참고: https://bagbokman.tistory.com/8 카프카 커넥트 : Connector를 동작하게 하는 서버 카프카 커넥터 : jar파일 소스, 싱크 커넥터 소스 커넥터 : 커넥트에서 프로듀서 역할을 하는 커넥터 ... Read More
-
Kafka - 3!
카프카 스트림즈 카프카에서 공식적으로 지원 토픽에 적재된 데이터를 상태기방 또는 비상태기반으로 실시간 변환하여 다른 토픽에 적재하는 라이브러리 (아파치 스파크, 플링크, 스톰, 플루언트디) 신규 토픽 생성, 상태 저장, 데이터 조인을 제공 스트림즈 애플리케이션 또는 카프카 브로커의 장애가 발생해도 정확히 한번할 수 있도록 장애 허용 시스템 제공 - 안정성이 매우 뛰어남 내부적으로 스레드를 1개 이상 생성할 수 있으며 1개이상의 태스크를 가짐 태스크 : 스트림즈 애플리케이션을 실행하는 데이터 처리 최소 단위 ( 컨슈머의 병렬처리를 위해 컨슈머 그룹으로 이루어진 컨슈머 스레... Read More
-
Kafka - 2!
카프카 브로커 카프카 브로커 : 데이터를 주고받기 위해 사용하는 주체, 데이터를 분산 저장하여 장애 대응 애플리케이션 안전한 데이터 보관 및 처리를 위해 3대 이상의 브로커를 1개의 클러스터로 운영 권장 클러스터는 프로듀서에서 전송된 데이터를 안전하게 분산, 복제를 수행 데이터 저장, 전송 server.properties : log.dirs : /data 브로커는 프로듀서로부터 전달받은 데이터를 토픽의 파티션에 데이터를 저장 토픽의 갯수 = 디렉토리의 갯수 페이지 캐시 카프카는 메모리, 데이터베이스에 데이터를 저장하지 않는다. - 파일 시스템 이용 지속적인 입출력이 발생... Read More
-
Auditing
Audit? Audit은 감시하다, 감사하다라는 뜻을 가지고 있다. Spring Boot 에서 JPA를 사용할 경우 데이터베이스 접근을 누가 언제 했는지 확인하기 위한 것 이다. Read More
-
Docker compose - 2
Docker compose docker 이미지를 쉽게 관리해줄 수 있다 구조 구조는 아래와 같은식으로 구성된다 version: '버전' services: [이름] image: [도커 이미지] enviroment: - [환경 설정] volumes: - [''] ports: # depends_on: # [생략 ...] Read More
-
Dockerfile 명령어 List - 2 !
Dockerfile 학습 명령어 List Dockerfile에 들어가는 명령어 정리 FROM Docker에서 Base Image를 결정한다. FROM ubuntu:VERSION # centos~ . . . RUN Docker내부에서 실행되는 명령어 RUN apt-get update RUN apt-get install -y nginx RUN echo "~~~" WORKDIR 작업 디렉토리 설정 CMD 명령어가 실행될 경로 설정 WORKDIR /etc/nginx CMD 명령어 사용 build-arg VOLUME EXPOSE ENTRYPOINT Read More
-
Docker -it 옵션 - 1
인터렉티브 컨테이너 컨테이너의 표준입력과 컨테이너 가상 터미널 할당 실패 과정 CentOs를 Docker로 올려서 접근하려고 했는데 잘 안됐었다. 기존에 했던 과정은 다음과 같다. docker run CONTAINER docker start CONTAINER docker attach CONTAINER 이렇게 했는데 Docker가 실행이 안되어있다고 뜬다. 원인은 아마 가상 터미널을 할당해주지 않아서 그런것 같다. 문제는 아래와 같이 해결했다. 해결법 docker run -it CONTAINER /bin/bash -i로 컨테이너의 표준입력 연결 -t로 컨테이너 가상 터미널 생... Read More
-
React Native 권한오류
react native에 갤러리를 ios에서 들어가야하는데 오류가 생긴다. 그럴 떄는 아래의 항목을 Info.plist에 추가 해보자 <dict> . . . <key>NSPhotoLibraryUsageDescription</key> <string>$(PRODUCT_NAME) would like access to your photo gallery</string> <key>NSCameraUsageDescription</key> <string>$(PRODUCT_NAME) would like to u... Read More
-
Kafka 공부 해보자 - 1 !
카프카란? 고성능 분산 이벤트 스트리밍 플랫폼 실시간 기록 구독, 저장 및 처리 카프카 구성요소 카프카 클러스터, 주키퍼 클러스터, 프로듀서, 컨슈머로 구성 카프카 클러스터 메세지 저장소 1개의 클러스터 : N개의 브로커(각 서버)로 구성 브로커는 이중화 처리, 장애 처리 등 여러 역할 주키퍼 카프카 클러스터 관리 용도 카프카 클러스터 정보 기록 및 관리 프로듀서 카프카 클러스터에 메세지를 보내는 역할 라운드로빈, 키를 이용해서 파티션을 저장함 컨슈머 카프카 클러스터에서 메세지를 읽어오는 역할 토픽, 파티션 토픽과 파티션은 관련 있는 요... Read More
-
백준 - 토마토 (BFS)
백준 토마토 멋쟁이 토마 해결 과정 미로 탐색과 매우 유사한 문제이다. 미로 탐색과 다른 점이 있으면 시작 위치가 여러개라는 점이다. 따라서 시작위치를 queue에 넣어놓고 시작한다. 출력할 때 조심할 점은 0이 하나라도 있으면 -1로 리턴해야한다 exit()를 써서 하나 발견해버리면 프로그램을 종료 하자. BFS 해결 from collections import deque N, M = map(int, input().split()) lst = [] for i in range(M): lst.append(list(map(int,(input().split())... Read More
-
백준 - 미로 탐색 (BFS)
백준 미로 탐색 해결 과정 처음에는 DFS를 활용해야하는 문제인줄 알았다. 하지만 BFS를 활용하는 문제! BFS 해결 https://ansanghyun20.github.io/algorithm/2021/12/03/DFS-BFS.html BFS를 사용해 1이 발견 될때매다 자신의 값+1 을 하며 채워나간다. 상하좌우 순으로 동작. from collections import deque N, M = map(int, input().split()) lst = [] for i in range(N): lst.append(list(map(int,str(input())))) # 상... Read More
-
백준 - 순열 사이클 (DFS)
백준 순열 사이클 소스코드 DFS 첫 번째 문제 https://ansanghyun20.github.io/algorithm/2021/12/03/DFS-BFS.html stdin을 사용하지 않으면 시간초과 DFS로 모든 경우의 수를 구하는 방법 del graph[n]으로 방문했던 키 삭제 import sys def DFS(graph, lst_root, a): cnt = 0 for i in range(a): visited = [] stack = [lst_root[i]] while stack: n =... Read More
-
백준 - 반복수열
백준 반복수열 소스코드 아이디어를 통한 문제 해결 list를 하나 만든다. 새로운 숫자를 하나씩 만들면서, list에 추가한다. list에 이미 존재하는 수에 새로운 수가 존재하면 이미 존재하는 수 뒤로 제거한다. 이미 존재하던 list의 새로운 값의 index를 출력한다. a, n = map(str,input().split()) lst = [int(a)] # 초기 list 설정 a = list(map(int,str(lst[0]))) # 계산을 하기 위해 분리 ex) [5,7] length = len(str(lst[0])) # 57일 경우 길이 2 while(1): ... Read More
-
백준 - DFS와 BFS (DFS, BFS)
백준 DFS와 BFS 소스코드 해결 아이디어 https://ansanghyun20.github.io/algorithm/2021/12/03/DFS-BFS.html 응용 그래프가 비어있을 때 방지문 하나 추가 (안하면 실패함) DFS 경우 Stack에서 작은 수 부터 탐지를 위해 sort(reverse=True) BFS 경우 일반적인 sort() # BFS from collections import deque def BFS(graph, root): visited = [] queue = deque([root]) while queue: n = queue... Read More
-
DFS, BFS
DFS Stack을 활용해서 깊이를 우선적으로 탐색 DFS Queue를 사용해서 너비를 우선적으로 탐색 Read More
-
프로그래머스 - 기능 개발
가장 먼저 날짜별로 필요한 일 수를 담는다 (lst 변수에). lst[0] 보다 큰 값이 들어오면 lst를 비워준다. 그리고 answer에 값을 대입한다. lst[0] 보다 작은 값이면 cnt를 증가 시켜준다. 마지막으로 lst[0]보다 큰 값이 없어서 남은 cnt를 temp에 저장해서 추가해준다. import math def solution(progresses, speeds): answer = [] lst = [] cnt = 1 temp = 0 for i in range(len(progresses)): perse = math.ceil((10... Read More
-
백준 - 단어 공부
백준 단어 공부 답 https://www.acmicpc.net/problem/1157 소스코드 A = input().upper() A = list(A) #print(A) dic = {} for i in A: try: dic[i] = dic[i]+1 except: dic[i] = 1 max_ = 0 j = 0 cnt = 0 for i in dic: if max_ < dic[i]: max_ = dic[i] j = i del dic[j] for i in dic: if max_==dic[i]: ... Read More
-
백준 - 랜선 자르기 (이분탐색3)
백준 랜선 자르기 문제 풀이 https://www.acmicpc.net/problem/1654 문제풀이 이해 이전에 했던 이분탐색 1과 이분탐색 2는 랜선 자르기와 같이 활용하는 문제를 위한 문제라고 할 수 있다. 주어진 배열을 입력받은 갯수 만큼 잘라 만드는 것이다. 풀이 방식 아래의 소스코드의 풀이 방식은 다음과같다. Upper 이분 탐색 트리를 이용한다. 가장 큰 길이+1을 last값으로 잡는다(0을 나누는 경우를 제외) 중간 값의 이분 탐색을 진행하며 가장 큰 값을 찾기 때문에 upper 방식을 적용하는 것이다. while문 안에 for문을 통해서 자르는 랜선의 갯수를 출력하고... Read More
-
백준 - 벌집 (수학)
백준 벌집 문제 풀이 https://www.acmicpc.net/problem/2292 벌집 사이트에 접속하면 그림이 나온다. 거기서 임의의 수가 1과 얼마만큼 떨어져있는지 나타내는 문제! 입력은 임의의 수 이다. 풀이 방식 아래의 코드는 다음과 같은 방식으로 풀었다. 입력을 받는다. 1부터 1, 7, 19, 37 으로 6의 배수 만큼 늘어난다. 따라서 임의의 수보다 작은 6의 배수를 구한다. 1일 때는 1을 출력! 소스코드 A = int(input()) sumA = 1 i=1 while(1): #print(sumA) sumA += i*6 i += 1 i... Read More
-
백준 - 숫자 카드 (이분탐색2)
백준 숫자카드 문제 풀이 https://www.acmicpc.net/problem/10816 입력 입력을 4가지를 받는다. 첫 번째 배열의 길이 첫 번째 배열 두 번째 배열의 길이 두 번째 배열 문제 이해 문제의 이해는 다음과 같다. 두 번째 배열에 각 원소가 첫 번째 배열에 몇개 존재하는지 하나씩 출력하는 문제이다. 첫 번째 시도는 이분 탐색을 응용해서 시도 하였는데 이분 탐색을 모두 끝까지 시도해 시간 초과 오류를 발생하였다. 따라서 lower 탐색, upper 탐색 방법을 사용해 문제를 해결할 수 있었고 해시를 사용해 쉽게 해결이 가능하였다. 1. 이분 탐색 일반 적인 이... Read More
-
백준 - 수 찾기 (이분탐색1)
백준 수 찾기 문제 풀이 https://www.acmicpc.net/problem/1920 입력 입력을 4가지를 받는다. 첫 번째 배열의 길이 첫 번째 배열 두 번째 배열의 길이 두 번째 배열 문제이해 문제는 간단하다. 두 번째 배열의 값이 첫 번째에 존재하는지 찾는다. 다만 for문에서 값을 검사하는 이분 탐색 알고리즘이 필요로 하다. 수행속도가 중요한 문제이다. 이분 탐색 이란? 이분 탐색은 중간 값을 계속 찾아나가며 범위를 좁혀 원하는 값을 찾아나가는 방식을 말한다. 1 3 5 7 9 11 이라는 숫자가 있다고 가정해보자. 3을 찾고싶다. 먼저 배열의 중간 값... Read More
-
10/31 프로젝트 희망 공부
Docker Kubernetes AWS Read More
-
프로젝트 2021/09/29 진척상황
나열 Spring Boot 회원가입, 로그인, 정보수정 등 구현 회원의 종류가 2가지 인데 종류에 맞게 html Css로 디자인중 (조건에 따라 태그가 보이기 안보이기) 세션 정보를 html로 넘기기 () (세션에 대한 이해) 자바스크립트를 다양하게 사용중, document , getElementById … 등등 html을 처리하기 위해서는 자바스크립트가 많이 필요한 것 같음 Controller, VO, DAO, Service 구조 이해 완벽 Controller 에서 html로 값 전달하기 트레이너가 글쓰는 기능, 리스트출력하는 기능 트레이너가 만든 방에 시작시간이 안되면 연... Read More
-
Spring Boot -> Node JS POST
Spring 에서 Node JS에 UserId Post 요청 해서 html에 출력하는 것 spring boot 에서 nodeJS 로 Post 요청 하기 var params = {} params['userName'] = document.getElementById("userName").value; // 값을 추가하는 부분 var form = document.createElement('form'); form.setAttribute('method','post'); form.setAttribute('action',roomCode); document.charset="utf-8"; for ( var key in pa... Read More
-
자바스크립트 POST
블로그에서 찾은 코드에 추가 var params = {} params['userName'] = document.getElementById("userName").value; // 이런식으로 Key, Value를 추가 해줘야함 var form = document.createElement('form'); form.setAttribute('method','post'); form.setAttribute('action',roomCode); document.charset="utf-8"; for ( var key in params) { // key, value로 이루어진 객체 params var hidde... Read More
-
WebRTC 시행착오 정리
WebRTC WebRTC는 서버를 거치지 않고 사용자끼리 영상을 연결해주는 기술이다. 유튜브의 zoomclone을 치면 나오는 예제를 사용했다. 예제는 http 환경에서 열리고 여기서 LocalTunner, Ngrok등을 사용했는데 문제가 생겼다. 연결이 잘되는 환경이 있고 안되는 환경이 많다. 학교 강의실와이파이로는 대체로 안됐다. 개인 집 환경에서는 잘됐었지만 서로서로 잘 안보이고 누구는 보이고 누구는 안보이는 경우가 생겼다. 이를 위해서 아래의 개념들을 공부를 해봤다. Sturn? Turn? 개념?? 아직 Sturn과 turn의 개념에 대해 정확히 알지 못했다. 현재 WebRTC를... Read More
-
Nginx 시행착오 정리
Nginx? Nginx는 웹서버, 프록시 기능을 가진 소프트웨어이다. Nginx는 경량의 목표를 가졌고 비동기 이벤트 구조라고 한다. Apache는 프로세스 스레드 기반이라서 사용자가 많아지면 느려지는 문제가 생긴다. NginX 같은 경우에는 Event-Driven 구조를 가져 Apache 보다 많은 연결에 효과적이며 작은 쓰레드로 클라이언트 처리가 가능하다. 어떤 시행착오? (flask)AI 서버를 사용해서 Client의 주기적인 요청에 응답해야하는 경우가 있었다. http통신에 문제는 크게 없는 것으로 생각하였지만 https 통신에서 문제가 컸다. http <-> http... Read More
-
IITP_F - https와 http에 대한 사건(렛츠인크립트)
사건 발단 Node JS(WebRTC 및 포즈 추정) <-> Flask(AI Server) Axios통신중 문제 Node JS(local tunnel)사용 Flask(OpenSSL로 https) Axios를 사용하는 이유 : 추정된 포즈값을 인공지능 서버로 보내기 위함 Rest API를 Axios로 사용하던 중에 http를 통신하는데 전혀 문제가 되지 않았음 WebRTC를 사용하기위해서는 https를 사용해야했고 그 속에서 Axios를 사용하기 위해서 https환경에서 해야했음 https통신을 처음에는 Flask(AI server)에 OpenSSL인증서를 설치해 바로 통신 여기서... Read More
-
RestAPI를 사용해 NodeJS에서 Flask로 POST!
이 예제는 아주 간단하게 테스트를 해보는 예제이다. 이 코드는 http://127.0.0.1:5000/hello에 js에 적힌 data값을 flask로 전송한다. flask에서는 Post를 받아 data 딕셔너리에 값이 저장되는 코드이다. NodeJS 샘플코드 const axios = require('axios'); axios.post("http://127.0.0.1:5000/hello", { data: "hello", }); Flask 샘플코드 from flask import Flask, request from flask_restx import Resource, Api # flask 서버 관련 ... Read More
-
IITP_F - 자바스크립트로 Mediapipe를 돌리고 원하는 좌표를 출력
자바 스크립트 코드 mediapipe의 0 ~ 10번까지, 15 ~ 22번까지는 우리가 사용하는 포즈 추정에서 필요없는 부분이라서 제외했다. 아래와 같이 poseLandmarks를 이용하면 포즈를 인식한 딕셔너리를 가질 수 있게 되는데 이것을 사용하는 형식에 맞게 정하면 된다. var arr = []; //배열을 명시 해야함 var i; var tempX; var tempY; for (i = 11; i < results.poseLandmarks.length; i++) { //console.log('Walking east one step'+i); if(i==15 || i=... Read More
-
영어공부 - 일지 8/25~
- Read More
-
IITP_F - PoseNet과 Mediapipe성능 차이
성능을 비교하는 요인 (오픈소스예제 사용) 1. 스켈레톤이 튀지 않고 사람관절을 잘 따라가는가. 2. 빠르게 움직이는 상황에서도 잘 따라가는가. Posenet 포즈를 잘 추정한다. 특정 자세에서 결과가 튀는 경우가 굉장히 빈번하게 발생한다. 동적으로 움직이는 환경에서 적합하지 않은것 같다. Mediapipe 포즈 추정을 안정적으로 잘 한다. 자세가 어둡거나 사물에 의해 가려져 잘 보이지 않는 경우를 제외하고는 추정을 잘 한다. 움직임이 있는 환경에서도 포즈를 잘 따라가 동적인 환경에 적합하다. Read More
-
git - 사용방법(명령어 나열)
// 저장소에서 사용 git init // 파일추가 git add * // 파일상태 git status // 커밋 git commit -m "메세지" // 현재 프랜치 출력 git branch // 브랜치 신규 생성 git branch 브랜치생성명 // 브랜치 이동 git checkout 브랜치명 // 커밋 수정 날짜 로그 git log // 브랜치 합치기 git merge 합칠브랜치이름 // 시점 돌리기 git reset commit코드6자리이상 --hard Read More
-
화면 전환! - 7
화면전환 화면 전환은 동적인 방법과 정적인 방법이 존재한다. 정적인 방법과 동적인 방법의 차이는 특정 상황에 대응을 할 수 있는 유무로 나뉠 수 있다. 뷰 호출 방법 뷰를 호출 하는 방법의 순서는 다음과 같다. 1 . 두 번째 뷰 컨트롤러를 추가 2 . 두 번째 뷰 컨트롤러에 대한 Identifier 추가 3 . 첫 번째 뷰에 버튼 추가 4 . 버튼에서 두 번째 뷰로 이동하는 코드 추가 viewcontroller.swift import UIKit class ViewController: UIViewController { override func viewDidLoad(... Read More
-
공부해야할 과제-인공지능
8/17 일 까지 준비 모델 zoo Ssd mobilenet 로지스틱 회귀분석 다중, 다항 회귀 분석 백 프로퍼게이션 퍼셉트론 Read More
-
VitualBoX와 MySQL 외부 접속
사전에 VitualBox 설치 및 Ubuntu 설치를 해야한다. Mysql도 기본적으로 설치! VitualBox 세팅 Nat에서 포트포워딩을한다. 1-1. 예 공유기를 사용중이라며 공유기 환경에서 한번 더 포트 포워딩을한다. 그러면 언제 어디서든 접근이 가능한 가상 서버를 만들 수 있다. 다른 방법(내부 환경) 로컬 환경에서만 작동하는 방법! 1. 우선적으로 VitualBox에 Ubuntu를 깔아야한다. 또한 MySQL을 설치된 상태로 진행된다. 2. 우분투가 설치되어있는 시스템에 설정에 들어가면 네트워크에 기본적으로 NAT이 설정되어있다. 3. 다음으로 어댑터2로 ... Read More
-
IITP_F - PoseNet을 사용해서 포즈 추정하기
순서와 방법 PoseNet 라이브러리로 nose, left eye, right eye 등을 출력해본다. 출력된 결과물을 CSV 형태로 저장한다. SKlearn을 사용해 CSV파일을 불러와 학습을 진행한다. 모델을 예측한다. PoseNet 라이브러리 https://github.com/rwightman/posenet-python 8/20 추가 PoseNet 라이브러리성능이 그닥 좋은 방법이 아닌거같다. 따라서 앞으로는 Mediapipe의 포즈 추정을 사용하는 방법을 공부한다. Read More
-
인공지능 - mnist를 TensorFlowLite로?
mnist tflite로 불러와서 사용해보기 1. 모듈 import import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt print("TensorFlow version {}".format(tf.__version__)) 2. tesorflow 버전 관리 python 2.x 버전과 1.x 버전의 차이가 있어서 아래와 같은 코드를 먼저 추가해준다. 아래에 차이점을 설명해두었다. import tensorflow.compat.v1 as tf tf.disable_v2_be... Read More
-
인공지능 - mnist-tflite 모델 생성
1. mnist h5 모델 생성 바로 tflite를 만들었을 때 사용에 항상 오류가 있었다. 그래서 h5를 생성하고 .pb를 생성하고 .tflite로 만든다. import tensorflow as tf mnist = tf.keras.datasets.mnist (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(), tf.keras.layers.D... Read More
-
IBOutlet와 IBAction! - 6
@? 어노테이션이라고 함! 메소드, 변수의 성격을 컴파일러에게 알려줌 @IBOutlet 코드에 객체를 참조하기 위해 사용하는 어노테이션 @IBOulet인 프로퍼티를 아울렛 변수 라고 한다. 프로퍼티?? - 프로퍼티란 무엇인가.. - 내가 이해한 바로는 안드로이드에서 XML에서 사용하는 이름을 JAVA파일에서 연결하는 변수를 말하는 것 같다. 우리는 이 친구를 마우스 왼쪽 + 오른쪽 누르고 코드에 끌어당기면 만들기도 했다. @IBOutlet weak var uiLabe1: UILabel! //이런식으로 말이다! 여기 위에 weak는 뭘까..? 바로 메모... Read More
-
코코아 터치 프레임워크요? - 5
코코아 터치 프레임워크? 코코아 프레임워크 맥 OS X에서 사용하는 애플리케이션을 개발을 위한 프레임워크 (Xcode, Safari…) 코코아 터치 프레임워크는 코코아 프레임워크를 기반으로 만들어짐 하드웨어와 애플리케이션을 중계하는 iOS 인터페이스 ex) 블루투스의 종류에 따라서 다른 코드를 작성할 필요없이 정해진 인터페이스 사용 ios 환경을 구축하기 위한 프레임워크 // UIApplication, UIButton 스위프트 에서 제공하는 클래스가 아니다! // 바로 UIKit 프레임워크에서 제공 하는 것이다. // 종류 import WebKit // 웹과 관련된 웹킷 프레임워크 im... Read More
-
스위프트 시작화면 만들기! - 4
앱 시작화면 만들기 앱을 실행하면 항상 시작화면을 볼 수 있다. swift에는 따로 이런 기능이 존재한다. 바로 LaunchScreen 이다. 아래와 같이 Label을 넣거나 다양하게 꾸밀 수 있다. 하지만 실행시 너무 화면이 빠르게 지나간다. AppDelegate를 수정하면 된다. 수정본 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bo... Read More
-
스위프트로 Hello! world - 3
ViewController 구조 import UIKit -> UIKit 프레임워크 사용 : UIViewController -> UIKit의 클래스 상속 viewDidLoad() -> UIViewController에 정의된 메소드 -> 처음 한 번만 실행해야하는 초기화 코드는 여기에 작성 super.viewDidLoad() -> viewDidLoad() 메소드의 모든 내용을 실행 기본 적으로 생성되는 ViewController import UIKit class ViewController: UIViewController { override func view... Read More
-
프로그래머스 기능 개발
프로그래머스 - 기능개발 주먹구구식 해결 아래의 주석을 참고하면서 이해할 수 있다. progresses의 길이가 1이면 코드를 돌릴필요 없는 코드 포함 큰 수가 발견되기까지 누적 import math def solution(progresses, speeds): answer = [] p_r = [] # p_r에 각 progresses마다 걸리는 시간에 담기 c=0 for i in range(len(progresses)): c=(100-progresses[i])/speeds[i] p_r.append(math.ceil(... Read More
-
Swift Syudy! - 2
This time, I focused on the data structure. Set I know two characteristics about this. There is no order. There is no duplicate data. This can be found out through examples. var a : Set = [1,2,3,1,1,1] print(a) The datatype can be used as a Set and elements can be listed in [ ]. Add elements In an arrangement, elements are add... Read More
-
인공지능 - 간단공부
jupyter notebook 사용 jupyter notebook 종료 후 설치 pip install scikit-learn pip install numpy pip install matplotlib pip install pandas pip install pydot -> brew install graphviz pydot은 graphviz가 필요해서 이렇게 설치해야한다. pip install h5py pip install tensorflow pip install keras a MNIST를 이용 MNIST 데이터셋은 numpy 배열 형태로 케라스 포함되어있다. ke... Read More
-
Swift Syudy! - 1
자바를 통해서 안드로이드 앱을 개발해 본 적이 있다. 앱 개발한 경험이 너무 재미있었어서 아이폰 앱을 개발해보는 것 또한 재밌을 것 같아서 도전 해본다. 스위프트의 기초적인 문법부터 알아간다. 맥의 PlayGround앱을 사용하는데 화면은 아래와 같다. 변수 변수 작성 규칙은 다음과 같다. 주의사항은 주석에! 출력은 파이썬과 비슷하게 print를 쓰면 된다. // 1. var 변수명 = 값 // 2. var 변수명 : 타입 = 값 // 띄어쓰기 준수, 타입 대문자 준수 // int(x) , Int(o) var v1 = 123 var v2 : Int = 123 print(v1) print(v2) ... Read More
-
BeautifulSoup
이 라이브러리는 웹 크롤링을 하기 위해서 사용됩니다. BeautifulSoup 설치하는 방법 pip shell command를 이용합니다. % pip install beautifulsoup4 BeautifulSoup 간단한 예제 beautifulsoup.py import requests from bs4 import BeautifulSoup # module import url = 'Web Site URL' resp = requests.get(url) if resp.status_code == 200: html = resp.text soup = BeautifulSo... Read More
-
Jinja Grammar
Jinja is a flask template engine used for dynamic control of html. { { } } Separator representing a variable. app.py from flask import Flask, render_template app = Flask(__name__) @app.route('/hello/<user>') # 127.0.0.1/hello/ input u want def hello_name(user): return render_template('hello.html', ... Read More
-
Study with flask example!
How to use Flask In python Flask Example #01 Hello World! Default Settings Create folders and python file. Typically, the template folder contains html files. and the static folder contains a css file. FLASKINTRO # Create FLASKINTRO Folder │ app.py # Create app.py │ ├─static # Create static Folder └─templates # Create tem... Read More
-
Welcome to Jekyll!
gg You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated. To add new posts, simply add a file in the _posts d... Read More