5달 전 · Supernova 님의 새로운 답변
커리어리 개발툴은 뭘로 만들어졌을까요, 서버 최적화 방법 질의
커리어리 웹뷰는 뭘로 만들어졌나요 ? 우연히 커리어리를 알게 되어서 사이트를 구경하던중 글 남깁니다. 저는 올해 40세이고 취미로 코딩을 배우면서 현재는 메타의 threads 와 비슷한 웹뷰를 만들고 있습니다. 독학으로 배우다보니 깊이가 없어서 한계에 직면해 있는거 같아요. 커리어리에서 스크롤을 내리다보면 딜레이 없이 페이지들이 거의 무한으로 내릴 수 있던데 기술적으로 그게 참 궁금하고요. 게시글을 포스트 했을때도 거의 딜레이 없이 게시물 업데이트가 되더라구요. 저 같은 경우에는 Next JS 로 웹뷰를 구성했고 database 는 vercel neon (무료버전. 서버는 싱가폴위치) Image 는 uploadthing (100GB 유료걸제 10$. 서버는 한국) 게시글 post 시에 단순 텍스만 입력을 하더라도 업로드 되고 화면에 뿌려지는데 2~3초의 딜레이가 발생합니다. database 가 무료 버전에 싱가폴에 있어서 반응이 느린건지 코드 최적화가 문제인지 모르겠습니다. 제가 테스트중인 사이트 주소는 아래와 같습니다. https://newchat-omega-inky.vercel.app/ 게시글 업로드 속도만 높일 수 있다면 정말 좋을 거 같은데 뭔가 벽에 막힌거 같습니다 ㅜㅜ
개발자
#커리어리-개발툴
#서버최적화
답변 1
댓글 0
조회 90
9달 전 · 익명 님의 질문
Expo SQLite WHERE 조건 한글 안됨
React Native Expo에서 앱을 개발중에 sql문이 오류가 뜹니다. 코드는 아래와 같습니다. async function SearchName() { console.log("load data"); try { const db = await SQLite.openDatabaseAsync("MountBedge.db"); const data = await db.getAllAsync(`SELECT * FROM HikingData WHERE Name = '가';`); setLoadedData(data); } catch (error) { console.error("Error testing database connection:", error); } } 문제가 되는 부분은 getAllAsync의 WHERE부분입니다. 한글로 검색한 부분을 영어로 변경하면 오류도 뜨지 않고 검색도 잘 됩니다. 한글로 검색 시 뜨는 오류는 아래와 같습니다. Error testing database connection: [Error: Calling the 'prepareAsync' function has failed → Caused by: Error code 1: near "'ㄱ'": syntax error] 혹시 해결할 방법을 아시는 분이 계시나요? 이게 expo에서는 해결이 가능한건지, 아니면 react native cli로 넘어가야 하는건지 모르겠습니다. 추가로 expo에서 sql문으로 데이터를 저장 시 db가 어디에 있는지 알 수 있는 방법이 있다면 알고싶습니다. 영어를 못해 영어로는 검색을 거의 안해봤지만 자료가 너무 없네요...
개발자
#react-navite-expo
#react-native
#expo
#sql
답변 0
댓글 0
조회 47
일 년 전 · 신진철 님의 새로운 댓글
SpringBoot와 MySQL 도커 배포 과정에서 계속 오류가 발생합니다.
선배님들 안녕하십니까? 제목 그대로 스프링부트와 MySQL 배포 과정에서 HikariPool-1 - Exception during pool initialization. server-1 | server-1 | java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 위와 같은 오류가 발생합니다. MySQL은 정상적으로 배포가 되어서 접근이 가능한 것을 확인했습니다. 하지만, SpringBoot의 경우, 계속 DB와 연결이 실패합니다. 아래는 SpringBoot의 application.properties 파일과 docker-compose.yml 파일입니다. 한 수 가르쳐주셨으면 합니다. 감사합니다. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=${SPRING_DATASOURCE_URL} spring.datasource.username=${SPRING_DATASOURCE_USERNAME} spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.format_sql=true
개발자
#오류
#스프링부트
#도커
#mysql
답변 1
댓글 3
조회 372
일 년 전 · 디큐 님의 새로운 답변
aws 비용이 RDS에서 너무 많이 나가는데 비용절감 방법이 있을까요?
aws Cost Explorer에서 RDS 비용이 다른 항목에 비해 비용이 많이 나가는데요.. 아래 Amazon Web Services Korea LLC 서비스별 요금 정보에서 보면 "USD 0.120 per hour per vCPU running RDS Extended Support for MySQL 5.7 in Year 1, Year 2 2,972 vCPU-hour USD 356.64" 위의 항목이 제일 많이 나가고 있는데요. * 할당량 * DB 인스턴스 (2/40) 할당된 스토리지 (0.08 TB/100 TB) * 인스턴스 정보 * dev-ds MySQL Community ap-northeast-2a db.t3.small DB 엔진 버전 8.0.36 prod-rds MySQL Community ap-northeast-2a db.t3.medium DB 엔진 버전 8.0.36 사용중인 스토리지 양도 적은데 어떤 이유로 과금이 많이 되는걸까요? aws 전문가님들!~ 답변 부탁드릴게요^^~ * 청구서 상세정보 * "Relational Database Service USD 480.57 Asia Pacific (Seoul) USD 480.57 Amazon Relational Database Service for MySQL Community Edition USD 472.71 USD 0.052 per db.t3.small Single-AZ instance hour (or partial hour) running MySQL 744 Hrs USD 38.69 USD 0.104 per db.t3.medium Single-AZ instance hour (or partial hour) running MySQL 744 Hrs USD 77.38 USD 0.120 per hour per vCPU running RDS Extended Support for MySQL 5.7 in Year 1, Year 2 2,972 vCPU-hour USD 356.64 Amazon Relational Database Service Provisioned Storage USD 7.86 $0.00 per GB-month of provisioned GP2 storage under monthly free tier running MySQL 20 GB-Mo USD 0.00 $0.131 per GB-month of provisioned gp2 storage running MySQL 30 GB-Mo USD 3.93 $0.131 per GB-month of provisioned GP3 storage running MySQL 30 GB-Mo USD 3.93 Elastic Compute Cloud USD 143.00 Asia Pacific (Seoul) USD 143.00 Amazon Elastic Compute Cloud NatGateway USD 43.93 $0.059 per GB Data Processed by NAT Gateways 0.448 GB USD 0.03 $0.059 per NAT Gateway Hour 744 Hrs USD 43.90 Amazon Elastic Compute Cloud running Linux/UNIX USD 79.46 $0.026 per On Demand Linux t3.small Instance Hour 744 Hrs USD 19.34 $0.0288 per On Demand Linux t2.small Instance Hour 744 Hrs USD 21.43 $0.052 per On Demand Linux t3.medium Instance Hour 744 Hrs USD 38.69" 답변 부탁드릴게요. 감사합니다^^!
개발자
#aws
#rds
#과금
#aws-rds
답변 1
댓글 0
조회 510
일 년 전 · 민태호 님의 댓글 업데이트
앱(Flutter)에서 JSON데이터를 검색하려고 합니다
안녕하세요 Flutter를 이용하여 식단 및 체성분 관리 앱을 개발 중인 대학생입니다! json형식의 식품영양성분 공공데이터 안에서 사용자가 입력한 식품명 검색어를 기준으로 데이터를 불러오려고 합니다. DB는 Google Firebase를 사용 중이며, 위와 같은 목적으로 데이터를 사용 할 때에 적합하지 않다면 다른 DB를 사용 할 의향도 있습니다. 사용자의 검색어로 시작하는 특정 데이터만이 아니라, 검색어를 "포함"하는 데이터도 불러오고 싶습니다. 현재 어느 정도 그려 본 방법입니다. 영양성분 JSON 다운로드 ↓ Python을 이용하여 필요한 데이터만 가공 ↓ Firebase Realtime Database / Storage에 저장 ↓ 저장된 JSON을 API 호출을 통해 String으로 불러옴 / 앱 내부에 .json 파일로 저장 ↓ Map으로 변환 후 캐싱 ↓ 사용자가 검색어 입력 ↓ 검색어를 포함하는 데이터만 별도 리스트에 추가 여기서 데이터를 불러오는 과정에서 필터링을 거치지 않는 이유는 Firebase Realtime Database에서는 검색어를 "포함"하는 것이 아닌, 사전 순으로 검색어 기준 뒤에 있는 데이터만 가능하다고 합니다.. 그래서 결국 JSON파일로 직접 사용하기로 했습니다 혹시나 저의 부족함이 보이시는 분들의 조언과 피드백을 듣고 싶습니다! 더 나은 방법이 있다면 무차별 폭격 및 질문 부탁드립니다! 미리 감사드립니다 (_ _)
개발자
#json
#flutter
#query
#쿼리
#data
답변 1
댓글 1
조회 114
일 년 전 · 다형 님의 답변 업데이트
aws spring boot 배포 오류
안녕하세요 백엔드 공부 중인 학생입니다. aws ec2로 Spring boot 프로젝트를 배포 시도 중에 있습니다. (maven, java 8, jar) java -jar jar파일명.jar 명령어로 배포 시도 중에 에러메세지가 도저히 해결이 안되어서 도움 요청드립니다.. 도와주신다면 감사하겠습니다.. 아 참고로 rds로 데이터베이스 생성하지 않고 mysql(workbench)로 데이터베이스 생성했습니다 <오류메세지> Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2024-02-07 04:33:35.742 ERROR 31012 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.22.jar!/:5.3.22] at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_392] at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) [spring-boot-2.7.2.jar!/:2.7.2] at com.se.social.SocialApplication.main(SocialApplication.java:13) [classes!/:0.0.1-SNAPSHOT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_392] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_392] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_392] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_392] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:229) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:43) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.22.jar!/:5.3.22] ... 22 common frames omitted Caused by: java.lang.IllegalArgumentException: standardService.connector.startFailed at org.apache.catalina.core.StandardService.addConnector(StandardService.java:238) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:282) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:213) ~[spring-boot-2.7.2.jar!/:2.7.2] ... 24 common frames omitted Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed at org.apache.catalina.connector.Connector.startInternal(Connector.java:1077) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.StandardService.addConnector(StandardService.java:234) ~[tomcat-embed-core-9.0.65.jar!/:na] ... 26 common frames omitted Caused by: java.net.SocketException: Permission denied at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_392] at sun.nio.ch.Net.bind(Net.java:461) ~[na:1.8.0_392] at sun.nio.ch.Net.bind(Net.java:453) ~[na:1.8.0_392] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:222) ~[na:1.8.0_392] at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:275) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:230) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1227) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1313) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:614) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.connector.Connector.startInternal(Connector.java:1074) ~[tomcat-embed-core-9.0.65.jar!/:na] ... 28 common frames omitted <전체> . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.2) 2024-02-07 04:33:27.975 INFO 31012 --- [ main] com.se.social.SocialApplication : Starting SocialApplication v0.0.1-SNAPSHOT using Java 1.8.0_392 on ip-172-31-39-15 with PID 31012 (/home/ubuntu/socialboardPJ/target/social-0.0.1-SNAPSHOT.jar started by ubuntu in /home/ubuntu/socialboardPJ/target) 2024-02-07 04:33:27.980 INFO 31012 --- [ main] com.se.social.SocialApplication : No active profile set, falling back to 1 default profile: "default" 2024-02-07 04:33:29.591 INFO 31012 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2024-02-07 04:33:29.681 INFO 31012 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 76 ms. Found 1 JPA repository interfaces. 2024-02-07 04:33:30.960 INFO 31012 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 80 (http) 2024-02-07 04:33:30.986 INFO 31012 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-02-07 04:33:30.987 INFO 31012 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.65] 2024-02-07 04:33:31.641 INFO 31012 --- [ main] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 2024-02-07 04:33:31.880 INFO 31012 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-02-07 04:33:31.880 INFO 31012 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3717 ms 2024-02-07 04:33:32.215 INFO 31012 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2024-02-07 04:33:32.569 INFO 31012 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2024-02-07 04:33:32.659 INFO 31012 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2024-02-07 04:33:32.822 INFO 31012 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.6.10.Final 2024-02-07 04:33:33.157 INFO 31012 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 2024-02-07 04:33:33.383 INFO 31012 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect 2024-02-07 04:33:34.255 INFO 31012 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2024-02-07 04:33:34.266 INFO 31012 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2024-02-07 04:33:34.906 WARN 31012 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2024-02-07 04:33:35.616 WARN 31012 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server 2024-02-07 04:33:35.620 INFO 31012 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2024-02-07 04:33:35.624 INFO 31012 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2024-02-07 04:33:35.646 INFO 31012 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. 2024-02-07 04:33:35.650 INFO 31012 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2024-02-07 04:33:35.676 INFO 31012 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2024-02-07 04:33:35.742 ERROR 31012 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.22.jar!/:5.3.22] at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_392] at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.22.jar!/:5.3.22] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) [spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) [spring-boot-2.7.2.jar!/:2.7.2] at com.se.social.SocialApplication.main(SocialApplication.java:13) [classes!/:0.0.1-SNAPSHOT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_392] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_392] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_392] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_392] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) [social-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:229) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:43) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.22.jar!/:5.3.22] ... 22 common frames omitted Caused by: java.lang.IllegalArgumentException: standardService.connector.startFailed at org.apache.catalina.core.StandardService.addConnector(StandardService.java:238) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:282) ~[spring-boot-2.7.2.jar!/:2.7.2] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:213) ~[spring-boot-2.7.2.jar!/:2.7.2] ... 24 common frames omitted Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed at org.apache.catalina.connector.Connector.startInternal(Connector.java:1077) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.StandardService.addConnector(StandardService.java:234) ~[tomcat-embed-core-9.0.65.jar!/:na] ... 26 common frames omitted Caused by: java.net.SocketException: Permission denied at sun.nio.ch.Net.bind0(Native Method) ~[na:1.8.0_392] at sun.nio.ch.Net.bind(Net.java:461) ~[na:1.8.0_392] at sun.nio.ch.Net.bind(Net.java:453) ~[na:1.8.0_392] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:222) ~[na:1.8.0_392] at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:275) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:230) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1227) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1313) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:614) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.connector.Connector.startInternal(Connector.java:1074) ~[tomcat-embed-core-9.0.65.jar!/:na] ... 28 common frames omitted
개발자
#aws
#springboot
#배포
답변 1
댓글 0
조회 605
일 년 전 · 김태현 님의 새로운 댓글
sql문 부적합합니다..
spring boot 4 에서 웹개발프로젝트를 진행중입니다.. jsp페이지에서 받아온 searchText값을 쿼리문으로 비교 후 foodinfolist를 반환해주는데 sql developer에서는 SELECT * FROM foodinfolist WHERE food_name LIKE '%' || '치킨' || '%'; 해당 코드가 정상동작 돼서 잘 검색하지만 mapper.xml에서 <mapper namespace="com.springproj.dietwebservice.repository.IFoodInfoDAO"> <select id="findfoodinfo" parameterType="java.lang.String" resultType="com.springproj.dietwebservice.domain.FoodInfoVO">> <![CDATA[ SELECT * FROM foodinfolist WHERE food_name LIKE '%' || #{searchText} || '%' ]]> </select> </mapper> 해당 코드를 실행하면 sql문이 부적합합니다 라고 에러가 발생합니다.. 뭐가 문제인지 모르겠습니다.. searchText: 치킨 으로 데이터도 잘 담겨오는데.. [2m2024-01-31T16:24:22.500+09:00[0;39m [31mERROR[0;39m [35m8208[0;39m [2m---[0;39m [2m[nio-8090-exec-9][0;39m [2m[0;39m[36mo.a.c.c.C.[.[.[/].[dispatcherServlet] [0;39m [2m:[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00900: SQL 문이 부적합합니다 선배님들 조언부탁드립니다..
개발자
#sql
#spring-boot
답변 4
댓글 2
추천해요 1
조회 585
일 년 전 · 장성호 님의 답변 업데이트
게시글과 첨부파일의 DB 구조
안녕하세요 궁금한게 있어서 질문을 드립니다. 게시글이랑 첨부파일의 Database 구조에 대해서 궁금한게 있어서요 하면서도 잘 모르겠어서요 -----1번 구조----- 게시판 테이블 게시판 아이디(PK) 파일 아이디(FK) 파일 테이블 파일 아이디(PK) 파일 경로 -----2번 구조----- 게시판 테이블 게시판 아이디(PK) 파일 테이블 파일 아이디(PK) 게시판 아이디(FK) 파일 경로 제 친구는 1번으로 짯는데, 2번으로 해도 되는데 굳이 1번으로 짠 이유가 무엇일까요? 제가 생각하기에는 게시판을 눌러서 PK로 연결되어있는 파일들을 한번에 조회 할 수 있으니까 1번 구조가 유리하다고 생각해서 1번으로 짯나? 했구요. 2번으로 보자면 게시글 1 : 파일 N 이니까 일대다 구조로 각 게시판에 대해서 여러 파일 정보를 가질 수 있고, 보통 한 게시글에는 여러개의 파일이 들어가니까 한 파일이 여러 게시글에 사용되지 않는다는 가정에는 2번이 효율적인것 같거든요 보시는 분들께는 간단한 문제 일수도 있는데 힌트라도 부탁 드립니다 ㅠㅠ
개발자
#database
##mysql
#mariadb
#@oracle
답변 2
댓글 0
조회 416
일 년 전 · 삭제된 사용자 님의 답변 업데이트
JSON 데이터 DB 저장
안녕하세요. Java Spring으로 백엔드 서버 마이그레이션, 알람 기능 개발 중에 고민이 있어 질문드립니다. [상황] 기존 알람 서비스는 하나의 서비스 Class로 통합해서 두고, 문자, 푸쉬알람, 이메일 3가지 경우로 기능을 swith하여 각 기능별로 서비스를 호출하는 방식으로 구현되어 있습니다. 알람과 관련된 데이터는 JSON 파일에서 불러와 jsonObejct와 Map 자료구조를 통해 가공하여 기능 구현이 되어있습니다. 알람 데이터 JSON 파일은 상황별 코드에 따라 문자, 푸쉬알람, 이메일로 데이터가 구분되어 있습니다. JSON 파일은 대략적으로 아래와 같은 형태입니다. (mail 알람의 경우엔 HTML 파일을 전송하는 방식입니다. thyemleaf를 통해 전달받은 파라미터 값만 HTML에 주입하는 형태로 구현되어 있어서 msg 안에 String 대신 JSON 형태의 데이터가 들어가고 있습니다.) [알람 JSON 데이터 구조 예시] { "code1" : { "Sms" : { "title" : "sms 제목", "msg" : "sms 메세지", }, "Push" : { "title" : "push alarm 제목", "msg" : "push alarm 메세지", }, "Mail": { "title" : "mail 제목", "msg": { "name" : "#{name}", "use" : "#{use}", ... }, "code2" : {... }, ... } [문제 인지 & 개선 방향 고민] 알람 데이터가 JSON으로 정의되어 있다보니, 기능 개발을 위해 Json 파일을 읽고, JsonObject와 Map 자료구조로 데이터 가공을 할 수 밖에 없는 상황인데요. 제가 알기로는 자바에서 Map 자료구조를 사용하게되면 타입 자체가 불명확해서 지양해야 하며, JSON 파일로 관리 시 하드코딩에 해당되어 기능 자체에 제약이 많다고 판단하여 해당 상황을 DTO로 관리함과 동시에 Database에서 관리하도록 바꿔볼까 생각중입니다. [궁금증 & QnA] 이 상황에서 고민 & 궁금증이 몇 가지 있습니다. 1. 해당 알람 데이터를 DB 관리로 바꾸는게 더 나은 선택인지? -> 만약 바꾼다고 하면 Alarm Table을 따로 두고, User Table과 N:M 매핑하는식으로 구현할 생각입니다. 2. , mail HTML Template이 다양하다보니, Template 마다 넘겨줘야하는 JSON 데이터가 다양한 상황입니다. 그러다보니 mail msg 컬럼에는 다양한 형태의 JSON 데이터가 들어가게 되어 이걸 DB로 구현한다고 하니 막막한 상황입니다. -> 결국 해당 부분만 JSON 데이터로 넣는것 말고는 떠오르는 방법이 없네요.(해당 부분만 JSON 데이터로 넣으면 오히려 관리가 더 어려워지지 않을까 고민입니다.) 3. 다른 분들은 알람 기능을 어떻게 구현하는지 궁금합니다.
개발자
#spring
#database
#json
#fcm
답변 1
댓글 0
조회 298
2년 전 · nowv 님의 새로운 댓글
mysql 인스턴스에서 여러 스키마를 생성하는 것이 불필요한 건가요?
과거 mysql을 사용할 때 하나의 스키마 아래에 여러 테이블을 만들어 작업한 적이 있습니다. 스키마 아래로 너무 많은 테이블들이 생성되어 테이블간 연관성이나 관계를 확인하기가 쉽지 않았습니다. 이번 프로젝트에서는 과거처럼 하나의 스키마(my_db)가 아니라 연관성이 높은 테이블들을 스키마별로 모아서 연결하고 싶었습니다. 예를 들자면, user관련 테이블들은 Users스키마에, product과 연관된 테이블들은 Products스키마에, 중간테이블이 필요하면 Users_Products스키마에 테이블을 저장했습니다. 이 구조라면 하나의 mysql 인스턴스에 3개의 스키마가 생성된 것입니다. 문제는 nestjs에서 typeorm 설정을 하는 과정에서 database를 입력하는 부분에서 발생했습니다. TypeOrmModule.forRoot에서 database이름을 하나밖에 입력할 수 없었습니다.(mysql은 database와 schema를 동의어로 취급한다고 들었습니다.) 3개의 스키마를 연결하는 방법은 다음과 같다는 것을 발견했습니다. 이런 방법을 쓰는 이유를 작성자는 서비스용 database, 정보분석용 database를 나눠서 사용하기 위함이라고 말합니다. https://www.inflearn.com/questions/662388/typeorm-%EB%8B%A4%EC%A4%91-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EA%B2%B0 mysql로 하나의 서비스를 위해 스키마를 여러개로 나누어서 하나의 앱에 적용하는 것이 불필요한 방법일까요?
개발자
#mysql
#nestjs
#typeorm
#schema
답변 1
댓글 1
조회 306
2년 전 · 익명 님의 질문
에러를 해결하기 위해서 해야하는 조치를 알려주세요
import pymysql conn=pymysql.connect(host="localhost",user="root",passwd="1234",database="love2") curs=conn.cursor() sql="select * from 5_days" curs.execute(sql) rows=curs.fetchall() print(rows) conn.close exited with code=9009 in 0.342 seconds를 해결방법을 알려주세요
개발자
#mysql
#python
답변 0
댓글 0
보충이 필요해요 1
조회 52
일 년 전 · 윪 님의 질문 업데이트
국비교육 조언부탁드립니다.
전자공학과를 나왔고 과에서 전공에 코딩이 많아서 접하는 일이 많다보니 흥미를 갖게 되었습니다. c언어, java, linux 등 하나를 깊게 배우지 않고 조금씩 접하다 보니 제가 배운게 뭔지 몰라 개발자가 되고싶다는 막연한 생각을 하던 와중에 국비지원을 알게 되었습니다. 저는 대부분 개발자를 접할 때 웹으로 많이 시작을 한다고 해서 저도 백엔드쪽을 집중적으로 공부를 하고 추후에 클라우드도 공부를 해서 데브옵스를 전문적으로 공부를 하고 싶다는 생각을 했습니다. 그래서 여러가지 학원들을 보고 있는데 배우는 내용과 난이도가 어떤지 몰라 조언을 구하려고 합니다. C언어는 다 배웠고 JAVA는 조금 배우고 졸업작품으로 안드로이드 스튜디오로 간단한 어플리케이션 만든정도 입니다. A학원 Database : Oracle DBMS, 설치 및 Admin, SQL 기본과 활용 Programming : Java 환경설정, 기본문법활용, 클래스, 네트워크, JDBC Front-end : HTML/CSS, Javascript, jQuery Back-end: 웹개발 환경구축, 서블릿&JSP, AJAX&MVC패턴, 리눅스&클라우드 Framework: Spring Framwork(DI, JDBC, MVC), Springboot, Mybatis B학원 클라우드 기반 웹 프로그래밍 - 클라우드 기술의 이해 (리눅스, NCP Laas 등) - 웹 프로그래밍 기초 (HTML, CSS, BootStrap) - 자바스크립트 - 리액트 기초프로그래밍 - 자바 프로그래밍 - 데이터베이스 (MySQL, JDBC) - 스프링 입문 - 스프링 데이터 - SaaS API 사용하기 DevOps 프로그래밍 - 네이버클라우드 플랫폼 - DevOps 를 위한 리눅스 - NCP DB&스토리지 - 도커를 활용한 컨테이너 구축 - 운영자를 위한 DevOps - 개발자를 위한 DevOps MSA 기반 프로그래밍 -MSA 개발을 위하 쿠버네티스 - 스프링 클라우드 - 스프링 배치 - 스프링 시큐리
개발자
#java
#devops
#spring
#cloud
#국비교육
답변 1
댓글 1
조회 584
2년 전 · 손정현 님의 답변 업데이트
js 라이브러리 프레임워크 선택 고민
현재 파견을 나와있는 상태입니다. 그런데 많이 급한건 아니고 본사쪽에서 node를 사용해서 서버를 띄우고 거기안에 간단한 게시판성 사이트를 만드려고 합니다. 현재 같이 일을 하시는 분이 react말고는다른 라이브러리를 사용하신적이 없기에 백엔드를 nextjs를 사용하려합니다. database도 사용을하려는데 java spring만을 사용해왔기에 javascript는 문법 살짝아는 정도 이고 지식이 너무 없기에 그래도 사용하고 있는 react기에 next js를 사용하려고 합니다 모르는건 생활코딩 강의를 보고 조금더 만들어나가려고 합니다 다른 방법은 pug nunjucks 라는 기술을 사용하려고 했지만 조금더 개발이 편한쪽은 최신기술쪽이라 생각을해서 좀 더 선택에 가까운 상황입니다. 같이 일하시는 분께서는 저에게 기술선택권을 넘겨주신 상황입니다. 선배님들께서는 이 상황에 어떤 선택을 하는게 좋을지 의견 듣고 싶습니다!
개발자
#react
#node.js
#next.js
#vue.js
답변 1
댓글 0
조회 82
2년 전 · 커리어리 Q&A 운영자 님의 새로운 댓글
SQL command not properly ended 에러
안녕하세요, 아래 에러는 보통 SQL에서 에러가 나는 건가요..? 아래에 에러 전문 첨부합니다. ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
개발자
#error
#sql
답변 1
댓글 1
조회 92
2년 전 · 성원 님의 답변 업데이트
mongoDB Data API 사용시에 string 날짜를 Date 타입으로 insert 하는 방법?
안녕하세요 해결책이 도저히 떠오르지 않아 커리어리에 질문을 올립니다.. nodejs, axios를 사용해서 mongoDB Data API 요청을 하고 있습니다. 다음과 같은 데이터 타입을 insert 하려고하는데 문제가 있습니다. 데이터 타입 예시 { collection: 'myCollection', database: MONGODB_DATABASE, dataSource: MONGODB_DATA_SOURCE, documents: myDocuments.map((doc) => ({ ...doc, insertedAt: new Date(), })), }; new Date()로 보낸 insertedAt 값을 mongDB에서 확인하면 Date 타입이 아닌 string값으로 저장됩니다. axios가 요청할 때 Date를 string으로 파싱해서 그런 것 같은데 Date타입 자체로 몽고DB에 저장할 수 있는 방법이 없을까요? 이것 때문에 다 구현해놓고 시간을 엄청 사용하는 중입니다.. 해결해 보신분 답변 부탁드립니다!
개발자
#mongdb
#insert
#node.js
답변 1
댓글 0
추천해요 2
조회 585
일 년 전 · 현구막 님의 답변 업데이트
백엔드 코드를 아름답게 분리하고 싶어요
최근에 본 강의 영상을 토대로 저만의 어플리케이션을 만들고 있습니다. 강의 영상에서는 API / Service / Database 로 layer를 분리해서 코드를 짰던 것을 보고 저도 나름 적용해보려고 하는데요. 코드를 짜면 짤 수록 뭔가 코드가 비슷하지만 조금은 다른 코드가 점점 늘어나게 되더라구요. 일단은 내 맘대로 작성해보고, 거의 다 완성이 되어갔을 때 리팩토링을 하려고 하는데, 접근방법을 어떻게 하면 좋을 지 의견을 물어보고 싶습니다.
개발자
#design-patter
답변 3
댓글 1
추천해요 49
보충이 필요해요 1
조회 4,944
2년 전 · 김인후 님의 새로운 답변
시퀄라이저 다룰때 Config.json파일에 대하여
development, test, production이 세 가지를 나눠놓는 이유가 있나요? 개발할때 사용하는 database는 dev에 있는 database하나로 충분할것같은데 test용을 나눠놓는 이유가 있을까요?
개발자
답변 1
댓글 0
추천해요 2
조회 115
3년 전 · 조재일 님의 새로운 댓글
SSR과 CSR에 대한 질문
제가 지금 강좌를 보면서 햇갈리는 것이 있습니다. 아래는 제가 SSR에 대해 배운 내용입니다. 1. 클라이언트가 페이지 요청을 Front Server에 한다 2. Front Server는 해당 페이지의 데이터를 Backend Server에 요청한다 3. Backend Server는 필요한 데이터를 DataBase에 요청한다 4. Database가 Backend Server에 Data를 발송한다 5. Backend Server는 Front Sever에 Data를 발송한다. 6. Front Server는 HTML파일과 같은 것과 Data를 섞어서 클라이언트에 발송한다 그러면 이것을 정리하면 페이지 하나를 받아올때, Client -> front -> back -> db -> back -> front -> client 위와 같은 방법으로 받아오는 것 같은데, 제가 더 알아보고 싶어서 인터넷에 검색을 했더니 SSR 방식은 client에게 js가 없는 페이지를 먼저 띄우고 데이터를 불러오는 방식이라고 합니다 그렇다면 Client -> front -> Client -> Back -> DB -> Back -> Client가 맞는 것 아닌가요?
개발자
답변 1
댓글 1
추천해요 4
조회 372