묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
자동주입이 안되고 있습니다. ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)주입이 안되고 있는데 왜그런지 모르겠습니다 ㅠㅠ
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
문의
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title> 도형 로딩 애니메이션-01 </title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="loading"> <span></span> <span></span> <span></span> </div> </body> </html>@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100&display=swap'); body { font-family: 'Noto Sans KR', sans-serif; line-height: 1.5em; margin: 0; font-weight: 300; display: flex; justify-content: center; align-items: center; height: 100vh; } a { text-decoration: none; } .loading {} .loading span { display: inline-block; width: 15px; height: 15px; background-color: gray; background-repeat: 50%; } .loading span:nth-child(1) {} .loading span:nth-child(2) {} .loading span:nth-child(3) {} @keyframes loading { 0% { opacity: 0; transform: scale(0.5); } 50% { opacity: 0; transform: scale(1.2); } 100% { opacity: 0; transform: scale(0.5); } }도형 자체가 만들어지지 않는데 뭐가 문제일까요?VS CODE 사용중입니다.
-
미해결
hibernate 프로젝트 생성 관련 문의
기존 강의에서는 Maven프로젝트로 hibernate 5.3.10 버전으로 프로젝트 생성이 되어 있습니다 저는 java 17버전으로 gradle 프로젝트로 생성하고 spring-boot 3.0.4 버전으로 잡고 강의를 수강을 할려고 합니다 해당 URL에서https://docs.spring.io/spring-boot/docs/3.0.4/reference/htmlsingle/#appendix.dependency-versions.coordinateshibernate-core 버전을 확인 하여 hibernate 6.1.7 https://hibernate.org/orm/documentation/getting-started/build.gradle plugins { id 'java' } group 'com.lee.test' version '1.0.0' repositories { mavenCentral() } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation 'org.hibernate:hibernate-core:6.1.7.Final' implementation 'com.h2database:h2:2.1.214' } test { useJUnitPlatform() }resources/META-INF/persistence.xml<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="jakarta.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="jakarta.persistence.jdbc.user" value="sa"/> <property name="jakarta.persistence.jdbc.password" value=""/> <property name="jakarta.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> </persistence-unit> </persistence>Entity Classpackage hijpa; import jakarta.persistence.Entity; import jakarta.persistence.Id; @Entity public class Member { @Id private Long id; private String name; public Member() {} public Member(Long id, String name) { this.id = id; this.name = name; } }Main Classpackage hijpa; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityTransaction; import jakarta.persistence.Persistence; public class JPAmain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Member member = new Member(1L,"hi"); em.persist(member); tx.commit(); em.clear(); emf.close(); } } IDE 설정은 아래와 같습니다 실행결과"C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.2\lib\idea_rt.jar=64376:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\User\IdeaProjects\stduy\jpa-basic\out\production\classes;C:\Users\User\IdeaProjects\stduy\jpa-basic\out\production\resources;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.h2database\h2\2.1.214\d5c2005c9e3279201e12d4776c948578b16bf8b2\h2-2.1.214.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.hibernate.orm\hibernate-core\6.1.7.Final\343f47b34c96fe9c44bf9b219a7b3c5d6d2fc90e\hibernate-core-6.1.7.Final.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\jakarta.persistence\jakarta.persistence-api\3.0.0\affc7884a85b6876d438a88b5d21ea29b1cc2dd8\jakarta.persistence-api-3.0.0.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\jakarta.transaction\jakarta.transaction-api\2.0.0\24a0525b4acfbca4086d2f1278be3a084fe1c67d\jakarta.transaction-api-2.0.0.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.jboss.logging\jboss-logging\3.4.3.Final\c4bd7e12a745c0e7f6cf98c45cdcdf482fd827ea\jboss-logging-3.4.3.Final.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.hibernate.common\hibernate-commons-annotations\6.0.6.Final\77a5f94b56d49508e0ee334751db5b78e5ccd50c\hibernate-commons-annotations-6.0.6.Final.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.jboss\jandex\2.4.2.Final\1e1c385990b258ff1a24c801e84aebbacf70eb39\jandex-2.4.2.Final.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.fasterxml\classmate\1.5.1\3fe0bed568c62df5e89f4f174c101eab25345b6c\classmate-1.5.1.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy\1.12.18\875a9c3f29d2f6f499dfd60d76e97a343f9b1233\byte-buddy-1.12.18.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-runtime\3.0.2\9897322f5de201bfbfcd1f4f46ffdd4204673b3c\jaxb-runtime-3.0.2.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\jakarta.xml.bind\jakarta.xml.bind-api\3.0.1\5257932df36ff3e4e6de50429dde946490a6a800\jakarta.xml.bind-api-3.0.1.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\jakarta.inject\jakarta.inject-api\2.0.0\46fc8560b6fd17b78396d88f39c1a730457671f0\jakarta.inject-api-2.0.0.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.antlr\antlr4-runtime\4.10.1\10839f875928f59c622d675091d51a43ea0dc5f7\antlr4-runtime-4.10.1.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\jaxb-core\3.0.2\e83d0b0005525ddd8b8642bd0bb02227fcf871f1\jaxb-core-3.0.2.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.sun.activation\jakarta.activation\2.0.1\828b80e886a52bb09fe41ff410b10b342f533ce1\jakarta.activation-2.0.1.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.glassfish.jaxb\txw2\3.0.2\8c448a44cdcdbb5dd48ff2eb88cab858ed52cf91\txw2-3.0.2.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.sun.istack\istack-commons-runtime\4.0.1\4e25c41d338aad4a2c92d0020c9ae0335fad5099\istack-commons-runtime-4.0.1.jar hijpa.JPAmain3월 14, 2023 9:18:28 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformationINFO: HHH000204: Processing PersistenceUnitInfo [name: hello]3월 14, 2023 9:18:28 오후 org.hibernate.Version logVersionINFO: HHH000412: Hibernate ORM core version 6.1.7.Final3월 14, 2023 9:18:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configureWARN: HHH10001002: Using built-in connection pool (not intended for production use)3월 14, 2023 9:18:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001005: Loaded JDBC driver class: org.h2.Driver3월 14, 2023 9:18:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001012: Connecting with JDBC URL [jdbc:h2:tcp://localhost/~/test]3월 14, 2023 9:18:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001001: Connection properties: {password=****, user=sa}3월 14, 2023 9:18:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreatorINFO: HHH10001003: Autocommit mode: false3월 14, 2023 9:18:29 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>INFO: HHH10001115: Connection pool size: 20 (min=1)3월 14, 2023 9:18:29 오후 org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl logSelectedDialectINFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect3월 14, 2023 9:18:29 오후 org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateServiceINFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]Exception in thread "main" java.lang.IllegalArgumentException: Unable to locate persister: hijpa.Member at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:740) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:721) at hijpa.JPAmain.main(JPAmain.java:17)하루 동안 삽질을 했지만 큰 성과는 없었습니다....어떤 부분이 잘못되어 persist부분이 수행이 안되는것일까요 ???
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
환율 네트워크처리1 질문있습니다.
안녕하세요 강의 41:46분에pickerView 의 delegate중에서 didSelecRow에 관해서 궁금한게있는데 해당 delegate속성이 picker로인해 선택된 row를 반환해준다고 알고있습니다.궁금한게[ didSeleectRow가있는 delegate메서드를 사용하려면 저는 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { selectedRow = row } 여기 함수안에서 var selectedRow = 0 { didSet { selectedCurrencyName.text = rates?[selectedRow].0 selectedCurrency.text = calculateCurrency() } }위에 해당하는 코드를 작성해야 함수가 작동된다고 생각했는데 강사님 강의보니 그게아니더라구요 왜 그런건가요? 가만생각해보니 didSelecRow에서 현재 선택된 row정보만 얻기위한 용도로 pickerView didSelectRow 델리게이트 메서드를 이용했고 row정보를 얻었으니 화면에 뿌려주는 역활은 굳이 안해도되기떄문에 위의코드처럼 따로 didSet속성을 이용해서 화면을 나타낸걸로 이해했는데 제가 이해한게 맞을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 33p 질문
알고리즘 교안 33pa.find("love") 부분에 대한 이해가 맞는지 질문드립니다.it = a.find("love") 에서 it 값이 love가 있다라고 결정되면it != string::npos -> string::npos(string이 없다)와 값이 같지 않아서 있다고 인정된다맞을까요? C언어에 대한 기초 강의를 듣고 시작해도 조금 버겁네요ㅜㅜ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 시간 복잡도..!
#include <bits/stdc++.h> using namespace std; int N, M, res; int vis[54][54]; char bd[54][54]; string s; vector<pair<int,int>> land; vector<int> select_land; int dy[4] = {0, -1, 0, 1}; int dx[4] = {1, 0, -1, 0}; void bfs(){ pair<int,int> st = land[select_land[0]]; // land pair<int, int> ed = land[select_land[1]]; // land queue<pair<int,int>> Q; Q.push({st.first, st.second}); // Q삽입 vis[st.first][st.second] = 1; // 방문표시 while(!Q.empty()){ pair<int, int> cur = Q.front(); Q.pop(); for(int dir = 0 ; dir < 4 ; dir++){ int ny = cur.first + dy[dir]; int nx = cur.second + dx[dir]; if(ny==ed.first && nx==ed.second) { vis[ny][nx] = vis[cur.first][cur.second] + 1; res = max(res, vis[ny][nx]); return; // 도착하면 종료 } if(ny >= N || nx >= M || ny < 0 || nx < 0) continue; if(bd[ny][nx]=='W' || vis[ny][nx]!=0) continue; // 방문했거나 물이면 pass Q.push({ny, nx}); vis[ny][nx] = vis[cur.first][cur.second] + 1; } } // 도착하지 못했다면, 그냥 for문을 빠져나옴. (res 업데이트 필요 X) } void solve(int n){ if(select_land.size()==2){ // 2개를 고름. bfs(); fill(&vis[0][0], &vis[0][0] + 54*54, 0); // vis배열 초기화 return; } for(int i = n+1 ; i < land.size() ; i++){ // 땅 전체 개수 (0번부터 land.size()-1번까지) select_land.push_back(i); // 01, 02, 03 ..... solve(i); select_land.pop_back(); } return; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; for(int i = 0 ; i < N ; i++){ cin >> s; for(int j = 0 ; j < M ; j++){ bd[i][j] = s[j]; if(s[j]=='L') land.push_back({i,j}); } } // 입력 받기 solve(-1); cout << res-1; }저는 랜드를 모두 구해서 랜드 중에 2개를 뽑고, 최단거리를 구하고 최단거리중 최대값을 뽑는 로직으로 구해봤습니다. 그런데 시간복잡도에서 계속 걸리네요 ㅠㅠ 혹시 크기가 50*50이라 재귀적으로 하려했는데 이 코드는 시간복잡도가 어떻게 되나요 ㅠㅠ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터 실습 강의 질문합니다.
포인터 실습 강의를 다 보고 연습할 겸 플레이어를 만들고 플레이어가 레벨업을 할 경우 영구적으로 스탯이 증가하는 것을 만드려고 하는데 생각대로 안되더군요..포인터만 사용해서는 만들 수 없는 건가요? struct statinfo{ int hp; int atk; int def;};void player(statinfo* playerinfo){ playerinfo->hp = 300; playerinfo->atk = 30; playerinfo->def = 20;}int playerup(statinfo* abc){ int up = (abc->hp) + 12; cout << up << endl; return up;}int main(){ statinfo playerstat; statinfo* playerstatPTR = &playerstat; player(&playerstat); cout << playerstat.hp << endl; cout << playerstatPTR->hp << endl; playerup(&playerstat);}
-
미해결입문자를 위한, HTML&CSS 웹 개발 입문
<html lang = "ko">
"ko"를 "en"으로 바꾸면 영어로 컨텐츠 내용을 구성할 수 있다고 하셨는데 혹시 한글, 영어를 섞어서 넣고 싶으면 어떻게 작성해야 할까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 수정시 유효성 검사
상품 수정 기능 구현중에수정내역의 유효성 검사를 추가해보고 싶어서 코드를 추가했습니다.```java``` package jpabook.jpashopre.controller; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotEmpty; @Getter @Setter public class BookForm { private Long id; @NotEmpty(message = "이름은 필수 입력 사항입니다.") private String name; private int price; private int stockQuantity; @NotEmpty(message = "작가은 필수 입력 사항입니다.") private String author; private String isbn; } package jpabook.jpashopre.controller; import jpabook.jpashopre.domain.item.Book; import jpabook.jpashopre.domain.item.Item; import jpabook.jpashopre.service.ItemService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; @Controller @RequiredArgsConstructor @Slf4j public class itemController { private final ItemService itemService; @GetMapping("/items/new") public String createForm(Model model) { model.addAttribute("form", new BookForm()); return "item/createItemForm"; } @PostMapping("/items/new") public String create(@Valid @ModelAttribute("form") BookForm form, BindingResult result) { if(result.hasErrors()){ return "item/createItemForm"; } Book item = new Book(); item.setName(form.getName()); item.setPrice(form.getPrice()); item.setStockQuantity(form.getStockQuantity()); item.setAuthor(form.getAuthor()); item.setIsbn(form.getIsbn()); itemService.saveItem(item); return "redirect:/"; } @GetMapping("/items") public String list(Model model) { List<Item> items = itemService.findItems(); model.addAttribute("items", items); return "item/itemList"; } @GetMapping("/items/{itemId}/edit") public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) { Book item = (Book) itemService.findOne(itemId); BookForm form = new BookForm(); form.setId(item.getId()); form.setName(item.getName()); form.setPrice(item.getPrice()); form.setStockQuantity(item.getStockQuantity()); form.setAuthor(item.getAuthor()); form.setIsbn(item.getIsbn()); model.addAttribute("form", form); return "item/updateItemForm"; } @PostMapping("/items/{itemId}/edit") public String updateItem(@ModelAttribute("form") @Valid BookForm form,@PathVariable("itemId")Long itemId, BindingResult result) { if (result.hasErrors()) { return "item/updateItemForm"; } itemService.updateItem(form.getId(), form.getName(), form.getPrice(), form.getStockQuantity(), form.getAuthor(), form.getIsbn()); return "redirect:/items"; } } <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head th:replace="fragments/header :: header" /> <style> .fieldError { border-color: #bd2130; } </style> <body> <div class="container"> <div th:replace="fragments/bodyHeader :: bodyHeader"/> <form th:object="${form}" method="post"> <!-- id --> <input type="hidden" th:field="*{id}" /> <div class="form-group"> <label th:for="name">상품명</label> <input type="text" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요" th:class="${#fields.hasErrors('name')}? 'form-control fieldError' : 'form-control'"> <p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Incorrect date</p> </div> <div class="form-group"> <label th:for="price">가격</label> <input type="number" th:field="*{price}" class="form-control" placeholder="가격을 입력하세요" /> </div> <div class="form-group"> <label th:for="stockQuantity">수량</label> <input type="number" th:field="*{stockQuantity}" class="form-control" placeholder="수량을 입력하세요" /> </div> <div class="form-group"> <label th:for="author">저자</label> <input type="text" th:field="*{author}" class="form-control" placeholder="저자를 입력하세요" th:class="${#fields.hasErrors('author')}? 'form-control fieldError' : 'form-control'"> <p th:if="${#fields.hasErrors('author')}" th:errors="*{author}">Incorrect date</p> </div> <div class="form-group"> <label th:for="isbn">ISBN</label> <input type="text" th:field="*{isbn}" class="form-control" placeholder="ISBN을 입력하세요" /> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> <div th:replace="fragments/footer :: footer" /> </div> <!-- /container --> </body> </html>이름을 입력하지 않고 유효성검사를 실시했습니다. 하지만...네...실패했습니다네트워크에서도 이름이 빠진채로 의도대로 전달도 되었으나 뷰를 표기하지 못하고 화이트라벨 에러페이지만 나옵니다 ㅠ콘솔도 의도된 에러메시지가 출력이 됩니다.뷰단쪽에 문제 일까요? 해결th:action="@{/items/*{id}/edit}" ->updateItemForm,html에 form에 action으로 해결하였습니다.화이트라벨 에러페이지가 좀더 상세한 에러메시지를보여줬으면 하는데 어떻게 설정해야 할까요?
-
해결됨[코드캠프] 훈훈한 Javascript
제공해주신 노션 사이트 자료를 개인 노션에 사용해도 되나요?
다른사람에게 공개는 안하고개인적으로 정리해서 공부하려고 하는데 이미지 같은 자료들을 제 노션에 사용해도 되는지 알고 싶습니다!
-
미해결실전! Querydsl
Projections 질문 dto의 property와 entity의 property의 타입이 다를때 어떻게 변환을 할 수 있나요?
안녕하세요. 다음과 같이 Entity와 Dto가 LocalDateTime, OffsetDateTime 을 사용하여 데이타 타입이 다릅니다. 이경우에class EntityA { public Long id public LocalDateTime regDt; } class DtoA { public Long id public OffsetDateTime regDt; }querydsl 문장을 다음과 같이 하면, List<DtoA > list = jpaQueryFactory .select( Projections.fields( DtoA.class, entityA.id, entityA.regDt )) .from(entityA) .fetch() ; 다음과 같이 오류가 발생합니다.java.lang.IllegalArgumentException: java.time.LocalDateTime is not compatible with java.time.OffsetDateTime다음과 같은 변환함수를 쓰면 될거 같은데, public OffsetDateTime map(Date value) { try{ ZoneOffset zoneOffset = ZoneId.systemDefault().getRules().getOffset(Instant.now()); return value.toInstant().atOffset(zoneOffset); } catch( Exception e) { throw new RuntimeException( e ); } }이 함수를 querydsl에 어떻게 넣어야 할지 모르겠어요답변 부탁드립니다.감사합니다.
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 1~2
강의 자료 요청
저도 빅데이터 분석기사 필기 1~2와 3~4 강의를 모두 신청하였습니다.저도 강의 자료 한꺼번에 받고 싶습니다.alskacjswo@naver.com으로 자료 부탁드립니다.감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@ResponseBody 사용 시 html 파일로 리턴됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨트롤러에서 아래와 같이 작성해서@ResponseBody @GetMapping("hello-string") public String helloString(@RequestParam("name") String name){ return "helloooooooooo " + name; }http://localhost:8080/hello-string?name=spring를 호출하면.. 개발자도구를 열었을때 단순 string 이 아니라 text/html 을 반환하는데 왜그런건가요?브라우져는 크롬 사용하고있습니다.크롬 개발자도구에서 아래와 같이 보입니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
401 오류
쿠키 세션과 전체 로그인 흐름 강의 까지 들었습니다. 안녕하세요. 로그인시 401 오류가 생겨서 해결을 못하고 있습니다. user saga 에서 logInAPI랑 logIn 부분에서 error가 생기고 있는거 같은데 이유를 찾지 못했습니다.아래에 비슷한 질문이 있길래 봤더니 json 형식으로 axios.post 해줘야 한다고 하시는 거 같은데 이해를 못하겠습니다... 조금 더 길게 설명해 주실 수 있을까요?
-
해결됨배달앱 클론코딩 [with React Native]
백 서버 터미널 오류
const token = await EncryptedStorage.getItem('refreshToken'); if (!token) { SplashScreen.hide(); // here return; } ... } finally { SplashScreen.hide(); // here } }; getTokenAndRefresh(); }, [dispatch]);강의 따라서 SplashScreen.hide() 잘 해주었는데,이 상태에서 멈추고 갑자기 back 서버 터미널이 무한 로딩되는데... back 서버를 껐다가 다시 켰는데 로그인이 되어있으면 안되는데 되어있는 상황입니다import * as React from 'react'; import {useEffect} from 'react'; import {useSelector} from 'react-redux'; import {NavigationContainer} from '@react-navigation/native'; import {createNativeStackNavigator} from '@react-navigation/native-stack'; import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; import Settings from './src/pages/Settings'; import Orders from './src/pages/Orders'; import Delivery from './src/pages/Delivery'; import SignIn from './src/pages/SignIn'; import SignUp from './src/pages/SignUp'; import {RootState} from './src/store/reducer'; import useSocket from './src/hooks/useSocket'; import EncryptedStorage from 'react-native-encrypted-storage'; import axios, {Axios, AxiosError} from 'axios'; import Config from 'react-native-config'; import userSlice from './src/slices/user'; import {useAppDispatch} from './src/store'; import {Alert} from 'react-native'; import orderSlice from './src/slices/order'; import usePermissions from './src/hooks/usePermissions'; import SplashScreen from 'react-native-splash-screen'; import FontAwesome5 from 'react-native-vector-icons/FontAwesome5'; import FontAwesome from 'react-native-vector-icons/FontAwesome'; export type LoggedInParamList = { Orders: undefined; Settings: undefined; Delivery: undefined; Complete: {orderId: string}; }; export type RootStackParamList = { SignIn: undefined; SignUp: undefined; }; const Tab = createBottomTabNavigator(); const Stack = createNativeStackNavigator<RootStackParamList>(); function AppInner() { const dispatch = useAppDispatch(); const isLoggedIn = useSelector((state: RootState) => !!state.user.email); const [socket, disconnect] = useSocket(); usePermissions(); useEffect(() => { axios.interceptors.response.use( response => { // console.log(response); return response; }, async error => { const { config, response: {status}, } = error; if (status === 419) { if (error.response.data.code === 'expired') { const originalRequest = config; const refreshToken = await EncryptedStorage.getItem('refreshToken'); // token refresh 요청 const {data} = await axios.post( `${Config.API_URL}/refreshToken`, // token refresh api {}, {headers: {authorization: `Bearer ${refreshToken}`}}, ); // 새로운 토큰 저장 dispatch(userSlice.actions.setAccessToken(data.data.accessToken)); originalRequest.headers.authorization = `Bearer ${data.data.accessToken}`; // 419로 요청 실패했던 요청 새로운 토큰으로 재요청 return axios(originalRequest); } } return Promise.reject(error); }, ); }, [dispatch]); useEffect(() => { const callback = (data: any) => { console.log(data); dispatch(orderSlice.actions.addOrder(data)); }; if (socket && isLoggedIn) { socket.emit('acceptOrder', 'hello'); socket.on('order', callback); } return () => { if (socket) { socket.off('order', callback); } }; }, [dispatch, isLoggedIn, socket]); useEffect(() => { if (!isLoggedIn) { console.log('!isLoggedIn', !isLoggedIn); disconnect(); } }, [isLoggedIn, disconnect]); // 앱 실행 시, 토큰 있으면 로그인하는 코드 useEffect(() => { const getTokenAndRefresh = async () => { try { const token = await EncryptedStorage.getItem('refreshToken'); if (!token) { SplashScreen.hide(); return; } const response = await axios.post( `${Config.API_URL}/refreshToken`, {}, { headers: { authorization: `Bearer ${token}`, }, }, ); dispatch( userSlice.actions.setUser({ name: response.data.data.name, email: response.data.data.email, accessToken: response.data.data.accessToken, }), ); } catch (error) { console.error(error); if (((error as AxiosError).response?.data as any).code === 'expired') { Alert.alert('알림', '다시 로그인 해주세요.'); } } finally { // TODO: 스플래시 스크린 없애기 SplashScreen.hide(); } }; getTokenAndRefresh(); }, [dispatch]); return ( <NavigationContainer> {isLoggedIn ? ( <Tab.Navigator> <Tab.Screen name="Orders" component={Orders} options={{ title: '오더 목록', tabBarIcon: () => <FontAwesome5 name="list" size={20} />, }} /> <Tab.Screen name="Delivery" component={Delivery} options={{ headerShown: false, title: '지도', tabBarIcon: () => <FontAwesome5 name="map" size={20} />, // headerTitleStyle: {fontWeight: 'bold'}, // tabBarLabelStyle: {fontSize: 12}, }} /> <Tab.Screen name="Settings" component={Settings} options={{ title: '내 정보', tabBarIcon: () => <FontAwesome name="gear" size={20} />, unmountOnBlur: true, }} /> </Tab.Navigator> ) : ( <Stack.Navigator> <Stack.Screen name="SignIn" component={SignIn} options={{title: '로그인'}} /> <Stack.Screen name="SignUp" component={SignUp} options={{title: '회원가입'}} /> </Stack.Navigator> )} </NavigationContainer> ); } export default AppInner; 아래는 백 서버 터미널 입니다 (이 부분이 계속 로딩됩니다)C:\Users\user\fooddeliveryapp\back>npm start > food-delivery-server@1.0.0 start > node app.js 연결되었습니다. TokenExpiredError: jwt expired at C:\Users\user\fooddeliveryapp\back\node_modules\jsonwebtoken\verify.js:152:21 at getSecret (C:\Users\user\fooddeliveryapp\back\node_modules\jsonwebtoken\verify.js:90:14) at module.exports [as verify] (C:\Users\user\fooddeliveryapp\back\node_modules\jsonwebtoken\verify.js:94:10) at verifyRefreshToken (C:\Users\user\fooddeliveryapp\back\app.js:59:22) at Layer.handle [as handle_request] (C:\Users\user\fooddeliveryapp\back\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\user\fooddeliveryapp\back\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\Users\user\fooddeliveryapp\back\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\user\fooddeliveryapp\back\node_modules\express\lib\router\layer.js:95:5) at C:\Users\user\fooddeliveryapp\back\node_modules\express\lib\router\index.js:281:22 at Function.process_params (C:\Users\user\fooddeliveryapp\back\node_modules\express\lib\router\index.js:341:12) { expiredAt: 2023-03-14T08:00:16.000Z } POST /refreshToken 419 91.985 ms - 70잘 되다가 갑자기 이러니 당황스럽네요...ㅎㅎ메트로 서버에서는 이렇게 나오네요 LOG Running "FoodDeliveryApp" with {"rootTag":11} LOG !isLoggedIn true LOG check location granted백 서버를 껐다가 켠건데 왜 로그인이 되어있는 상태로 나올까요?
-
미해결자바스크립트로 알아보는 함수형 프로그래밍 (ES5)
ES5 강의를 듣고 ES6 강의를 듣는게 좋을까요?
안녕하세요 선생님!강의가 너무 좋아서 자바스크립트 프로그래밍 ES6 강의도 수강했는데요. ES5 듣는데 너무 어렵네요 ㅜㅜ 이거 이해 갈때까지 반복 학습하고 있는데 ES5을 완강 후 ES6로 넘어가는게 좋을지 질문 드립니다
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
강의 열심히 수강 하고 잘 듣고 있습니다. 잠시 응용한번 해봤는데요
잠시 응용해봤는데요class ImdaeSaActivity : AppCompatActivity() { private val TAG = ImdaeSaActivity::class.java.simpleName private lateinit var auth: FirebaseAuth private val data = arrayListOf<ImdaeTodo>() private lateinit var binding: ActivityImdaeSaBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_imdae_sa) binding = DataBindingUtil.setContentView(this, R.layout.activity_imdae_sa) auth = Firebase.auth auth = FirebaseAuth.getInstance() binding = ActivityImdaeSaBinding.inflate(layoutInflater) val view = binding.root setContentView(view) binding.imadaeBtn.setOnClickListener { val sename = binding.sename.text.toString() val sephone = binding.sephoneno.text.toString() val address = binding.etAddress.text.toString() val address1 = binding.etAddress1.text.toString() val kwanry = binding.kwanry.text.toString() val bojung = binding.bojung.text.toString() val worldse = binding.worldse.text.toString() val mjbb = binding.myungjuk.text.toString() val cgbb = binding.chunggo.text.toString() val uid = FBAuth.getUid() val time = FBAuth.getTime() Log.d(TAG, sename) Log.d(TAG, sephone) FBRef.Imdae .push() .setValue( ImdaeitemModel( sename, sephone, address, address1, kwanry, bojung, worldse, mjbb, cgbb, uid, time ) ) } } }한번볼께요<layout> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".List.ImdaeSaActivity"> <LinearLayout android:id="@+id/linearLayout3" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFE3E3E3" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="10dp" android:gravity="center|center_horizontal" android:background="@drawable/mocer_call_yello_title" android:orientation="horizontal"> <TextView android:id="@+id/imdaetitle" android:layout_width="wrap_content" android:layout_height="50dp" android:gravity="center" android:text="임대등록 하세요" android:textSize="20sp" android:textStyle="bold" /> <EditText android:id="@+id/imdaeData" android:layout_width="48dp" android:layout_height="wrap_content" android:gravity="center" android:text="날자" android:textSize="20sp"/> </LinearLayout> <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="10dp" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:background="@drawable/mocer_call_mulback" android:orientation="horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="left" android:text="물전종류" android:textSize="15sp"/> </LinearLayout> <TextView android:id="@+id/mulgunall" android:layout_width="match_parent" android:layout_height="40dp" android:layout_gravity="center_vertical" android:background="@drawable/mocer_call_no" android:gravity="center_horizontal|center_vertical" android:hint="물건종류를 선택하세요" android:textSize="20sp" android:textStyle="italic" tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/mocer_call" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="left" android:text="연락정보" android:textSize="15sp" android:textStyle="bold" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/sename" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1.7" android:background="@drawable/mocer_call_mulback1" android:hint="이름" android:paddingLeft="10dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:textSize="20sp" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> <EditText android:id="@+id/sephoneno" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:hint="세입자폰번호" android:inputType="phone" android:maxLength="13" android:paddingLeft="10dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:textSize="20sp" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/mocer_call" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="center|left" android:text="주 소" android:textSize="15sp" android:textStyle="bold" /> <EditText android:id="@+id/etAddress" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:background="@drawable/mocer_call_mulback1" android:hint="주소입력하세요" android:inputType="textMultiLine" android:paddingLeft="10dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> <EditText android:id="@+id/etAddress1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:background="@drawable/mocer_call_mulback1" android:hint="상세주소 입력하세요" android:inputType="textMultiLine" android:paddingLeft="10dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/mocer_call" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="80dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="left" android:text="상세내용" android:textSize="15sp" android:textStyle="bold" /> <TextView android:layout_width="80dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="left" android:text="(단위|만원)" android:textColor="#985B01" android:textSize="13sp" android:textStyle="bold" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/kwanry" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:hint="관리비" android:inputType="number" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck" /> <EditText android:id="@+id/bojung" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:hint="보증금" android:inputType="number" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck" /> <EditText android:id="@+id/worldse" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:hint="월세" android:inputType="number" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:orientation="vertical"> <TextView android:layout_width="60dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="left" android:text="면 적" android:textSize="15sp" android:textStyle="bold" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/myungjuk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:gravity="right|center" android:hint="면적" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" android:text="㎡" android:textSize="10sp" /> <LinearLayout android:layout_width="2dp" android:layout_height="20dp" android:layout_marginLeft="3dp" android:layout_marginTop="5dp" android:layout_marginRight="3dp" android:layout_marginBottom="5dp" android:background="@color/black" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:gravity="right|center" android:hint="평수" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" android:text="평" android:textSize="10sp" /> <LinearLayout android:layout_width="2dp" android:layout_height="20dp" android:layout_marginLeft="3dp" android:layout_marginTop="5dp" android:layout_marginRight="3dp" android:layout_marginBottom="5dp" android:background="@color/black" /> <EditText android:id="@+id/chunggo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:gravity="right|center" android:hint="층고" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" android:gravity="left" android:text="m" android:textSize="10sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:orientation="horizontal"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:hint="방/욕실수" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:layout_weight="1" android:background="@drawable/mocer_call_mulback1" android:hint="총층수" android:paddingLeft="5dp" android:paddingTop="10dp" android:paddingRight="5dp" android:paddingBottom="10dp" android:textSize="18sp" tools:ignore="TouchTargetSizeCheck" /> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/mocer_call" android:orientation="vertical"> <com.google.android.material.card.MaterialCardView android:id="@+id/layout01" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="10dp" android:layout_marginTop="5dp" android:outlineProvider="none" app:cardBackgroundColor="@color/white"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="옵 션" android:textSize="22sp" android:textStyle="bold" /> </com.google.android.material.card.MaterialCardView> <com.google.android.material.card.MaterialCardView android:id="@+id/layoutDetail01" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_marginHorizontal="10dp" android:backgroundTint="#ffffff" android:visibility="visible" app:cardCornerRadius="15dp" app:strokeColor="#aaa" app:strokeWidth="1dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="center" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:id="@+id/option" android:layout_width="200dp" android:layout_height="40dp" android:background="@drawable/mocer_call_mulback1" android:gravity="center" android:hint="옵션등록10자까지만" android:textSize="15sp" tools:ignore="TouchTargetSizeCheck" /> </LinearLayout> <Button android:id="@+id/add_button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="추 가" /> </LinearLayout> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" android:layout_marginLeft="5dp" /> </LinearLayout> </com.google.android.material.card.MaterialCardView> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/mocer_call" android:orientation="vertical"> <com.google.android.material.card.MaterialCardView android:id="@+id/layout02" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="10dp" android:layout_marginTop="5dp" android:outlineProvider="none"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="메 모" android:textSize="22sp" android:textStyle="bold" /> <ImageButton android:id="@+id/layoutBtn02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_margin="10dp" android:background="@android:color/transparent" android:clickable="false" android:src="@drawable/arrow_up" android:textSize="22sp" tools:ignore="SpeakableTextPresentCheck" /> </com.google.android.material.card.MaterialCardView> <com.google.android.material.card.MaterialCardView android:id="@+id/layoutDetail02" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_marginHorizontal="10dp" android:backgroundTint="#ffffff" android:visibility="visible" app:cardCornerRadius="15dp" app:strokeColor="#aaa" app:strokeWidth="1dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:gravity="center_horizontal" android:orientation="vertical"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:background="@drawable/mocer_call_mulback2" android:hint="필요한 내용 있으시면 여기에 메모해 주시면 됩니다. 내용은 길게 쓰셔도 되요" /> </LinearLayout> </com.google.android.material.card.MaterialCardView> </LinearLayout> </LinearLayout> </LinearLayout> </androidx.core.widget.NestedScrollView> </LinearLayout> <Button android:id="@+id/imadaeBtn" android:layout_width="60dp" android:layout_height="60dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_marginBottom="15dp" android:text="입 력" android:textSize="20sp" android:background="@drawable/mocer_call_yello_button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> </layout>근데 파이어베이스에 들어가보면 uid값은 null로 나오고 가져오질 못하더라구요 그리고 보안 규칙을 { "rules": { ".read": "auth.uid !== null", ".write": "auth.uid !== null" } }로 하고 로그인을 한 다음 하면 파이어베이스에 게시글이 안들어 가지고 보안규칙을{ "rules": { ".read": "true", ".write": "true" }}해야 지만 게시글이 들어 가지더라구요참 왜 그러는지 잘 모루겠습니다.한번 살펴 봐 주시면 정말 감사하겠습니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
회원가입 페이지 기능생성 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. docker compose up 을 작성했는데이런식으로 나와서 연결이 된건지 안된건지 모르겠습니다.오류문구가 뜨지는 않지만 회원가입 눌렀을때 백엔드 문구가 뜨지 않아서 연결이 안된거 같아 문의드려봅니다.혹시 어느 부분이 잘못된건지 알수 있을까요?[+] Running 1/0⠿ Container postgres Running 0.0sAttaching to postgres
-
미해결스프링 시큐리티 OAuth2
고도의 신뢰성을 가지고있는 클라이언트
안녕하세요 클라이언트가 고도의 신뢰성을 가지고있는가? 에 대해 No인경우 Authorization Code 방식을, Yes인경우에는 Resource Owner 방식을 선택한다는 내용이있었는데 여기서 말하는 고도의 신뢰성을 가진 클라이언트는 구글,네이버,페이스북 이런 곳들이 해당되는걸까요?흔히 생각했을때 인프런 로그인을할때 구글로 로그인하는경우에는 Authorization code 방식이지만, 구글자체에 로그인한다고하면 Resource Owner 방식으로 하고있는건가? 라는 생각이 들어서요
-
미해결[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발
MVWAER 질문 있습니다
안녕하세요 MVwaer를 사용는 처음이라 막히는 부분이 있어 질문남깁니다.MVware 실행후 윈도우ISO까지 설치까지 완료 해야하나요??그리고 모든 교육은 MVwaer (가상컴퓨터)에서 하신거죠??? 파이썬 라이브러리도 가상컴퓨터 안에 설치하신거구요??