Posts
Q&A
travis ci๊ฐ ์ด์ ์ ๋ฃํ๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค;;;
gpt๋ claude์ ๋๋ ค์ github action ์ฌ์ฉํ ์ ์๊ฒ ๊ธฐ์กด์ ์์ฑํ .travis.yml ํ์ผ ์ ๋ณํ์ข ํด๋ฌ๋ผ๊ณ ํด์ ์ฌ๋ฆฌ๋ฉด ๋ฐ๋ก ํ ์ ์์ต๋๋ค.์ธํฐ๋ท์ github action ci ํ๋๋ฒ๋ ๋ณด์๊ธธ ์ถ์ฒ๋๋ ค์.
- 0
- 2
- 126
Q&A
API ํ ์คํธ๋ก ์ ํํ๊ธฐ ์์์์..
ํ... ์ฐพ์๋ค ใ ใ
- 18
- 5
- 1.4K
Q&A
Redisson import
์๋ง ๋ฒ์ ๋ฌธ์ ์ธ๊ฑฐ ๊ฐ์๋ฐ์, implementation 'org.redisson:redisson-spring-boot-starter:3.22.1' ํด๋น redisson์ ๋ณด๋ก ๋ฑ๋กํด์ ๋๋ ค๋ณด๋ฉด ๋ฌธ์ ๊ฐ ์๊ฑฐ๋ ์? ๊ทธ๋ฐ๋ฐ 3.16.8๋ก ๋ฒ์ ๋ง ๋ณ๊ฒฝํด์ ๋๋ฆฌ๋ฉด ๋ bean์ด ์๋ค๋ ์๋ฌ๊ฐ ๋์ต๋๋ค. ์์ํ๊ฑด๋ฐ ์๋ง ํ์ ๋ฒ์ ์์๋ configuration์ ์ง์ ์ค์ ํด์ค์ผ ํ๋๋ด ๋๋ค.
- 0
- 3
- 972
Q&A
์น์ 3์์์ ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค๊ฐ ๋์ํ์ง ์๋๋ฐ ๋ฌธ์ ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์๋ฌ ์ฐ์ด๋ณด๋๊น ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ์ ๋ ๋์ค๋๋ผ๊ณ ์ @Transactional public void decrease(Long id, Long quantity) { try { lockRepository.getLock(id.toString()); stockService.decrease(id, quantity); } catch (Exception e){ System.out.println(e); }finally { lockRepository.releaseLock(id.toString()); } } org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to provide names for method parameters; Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters ์ฆ, native query ์ ์ธ ์ @Param์ ์ค์ ํด ์ค์ผํ๋ค๋ ๋ง์ ๋๋ค. public interface LockRepository extends JpaRepository { @Query(value = "select get_lock(:key, 3000)", nativeQuery = true) void getLock(@Param("key") String key); @Query(value = "select release_lock(:key)", nativeQuery = true) void releaseLock(@Param("key")String key); } ์ด๋ ๊ฒ ํ๋ฉด ์๋ง ๋์ง ์์๊น ์๊ฐํฉ๋๋ค.
- 0
- 3
- 540
Q&A
Window ํ๊ฒฝ Docker Volume ์ฝ๋๋ณ๊ฒฝ ๋ฐ์ ์๋ ๋
์... ๋๋ฌด ๊ฐ์ฌํฉ๋๋ค.
- 8
- 7
- 1.1K
Q&A
docker-compose up ์ ์ค๋ฅ
๋๋ ํฌ๊ธฐ;;;์ธ๋ค๊ณ ๋ค์๋๋ฐ ์๊ฐ๋ณด๋ค ๋ค๋ค์ง์ง ์์ ์ค๋ฅ๊ฐ ๋๋ฌด ๋ง๋ค์. ๋ฝํด๋ด์ผ OS ๋ช๊ฐ ์๋๋๊ฒ๋ ๊ทธ๋ ๊ณ 3๋ ์ด๋ฉด ๋ ธ๋ ๋ฒ์ ์ด ๋ช์ธ๋ฐ ์์ง๋ ์ด๊ฑฐ ๋ฆฌ๋ด์ผ์ ์ํ๋ค๋ ์ข ๋๋ฌดํ๋ค๋ ์๊ฐ๋ ๋ญ๋๋ค.
- 0
- 7
- 2.6K
Q&A
Users Microservice - AuthenticationFilter ์ถ๊ฐ | ์ง๋ฌธ์์ต๋๋ค.
์ฐ์ ์ ๋ฌด์ํ๊ณ ๊ทธ๋ฅ ๋์ด๋๊ฒ ์งํํ์๊ณ , ๋์ค์ ์ฐพ์์ ํด๋ณด์๊ธธ ๋ฐ๋๋๋ค.๊ทธ๊ฑฐ ํ๋ค ๋ณด๋ฉด ์์ฒญ๋ง์ ๋ฌธ์ ์ ์ง๋ฉดํ๋ฉด์ ๋ณธ๋ ๊ฐ์๋ฅผ ๋ชป๋ค์๊ฒ๋๋ค... ์ ๋ ์ ์ ํ๋ค๊ฐ ์ฃฝ์๋ปํ์ต๋๋ค...์ ๊ถ๊ธํ์๋ฉด ์ฌ๊ธฐ ์ฌ์ดํธ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค.https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter์ ๋ ๋ง์ ์ํ์ฐฉ์ค์ ์์ ์ฌ์ดํธ ์ฐธ๊ณ , ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ spring security ๊ฐ์๋ฅผ ๋ค์ด์ ๋ค์๊ณผ๊ฐ์ด ์์ ์ด ๊ฐ๋ฅํ์ต๋๋ค.! package com.example.userservice.security; import com.example.userservice.jpa.UserRepository; import com.example.userservice.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.core.env.Environment; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfig { private UserService userService; private AuthenticationConfiguration authenticationConfiguration; private Environment env; @Autowired public void setUserService(@Lazy UserService userService) { this.userService = userService; } @Autowired public void setAuthenticationConfiguration(AuthenticationConfiguration authenticationConfiguration) { this.authenticationConfiguration = authenticationConfiguration; } @Autowired public void setEnv(Environment env) { this.env = env; } @Bean public AuthenticationManager authenticationManager() throws Exception{ return this.authenticationConfiguration.getAuthenticationManager(); } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable(); // http.authorizeRequests().antMatchers("/users/**").permitAll(); http.authorizeRequests().antMatchers("/**") .permitAll().and().addFilter(getAuthenticationFiler()); // .antMatchers("/**") // .hasIpAddress("192.168.219.101") // .and() // .addFilter(getAuthenticationFiler()); http.headers().frameOptions().disable(); return http.build(); } @Bean public AuthenticationFilter getAuthenticationFiler() throws Exception { AuthenticationFilter authenticationFilter = new AuthenticationFilter(); authenticationFilter.setAuthenticationManager(authenticationManager()); return authenticationFilter; } @Bean AuthenticationManager authenticationManager(AuthenticationManagerBuilder builder) throws Exception { return builder.userDetailsService(userService).passwordEncoder(passwordEncoder()).and().build(); } }๊ธฐ๋ณธ์ ์ผ๋ก deprecated ๋ ๋ฐฉ์ ๋ง๊ณ ์๋ก์ด ๋ฐฉ์์ bean์ ์ค์ ์ ์ผ๋ก ๋ฑ๋กํ๋ ๋ฐฉ์์ผ๋ก ์งํ๋ฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ค bean์ ์์ ํด์ผ ํ๋์ง spring security ๋ฅผ ์ข ์์ ์ผํฉ๋๋ค.
- 1
- 1
- 1.4K
Q&A
TypeError: Cannot read property map of undefined ์๋ฌ ์ง๋ฌธ
{imagePaths && imagePaths.map((v) => { return ( div key={v} style={{ display: 'inline-block' }}> img src={v} style={{width: '200px'}} alt={v}/> div> ) })} ์ด๋ ๊ฒ ๋ฐ๊พธ๋๊น ๋๋๋ผ๊ณ ์ ์ด๊ธฐ ๊ฐ์ด ํ์ฌ ์๋๋ฐ for๋ฌธ์ ๋๋ฆฌ๋ ค๋ ์๋ค๊ณ ์๋ฌ๊ฐ ๋๊ฑฐ ๊ฐ์ต๋๋ค.
- 0
- 5
- 779
Q&A
slick ์ด ์๋์ ์ํฉ๋๋ค !
์ ์ ๋๋ค๊ฐ ๋ค์ ์๊ธฐ์ ์ ์์ ๋ณด๋๊น ์ด๊ฒ ๋์๊ฐ๋ค์... ๋ชจ์ข ์ ์ด์ ๋ก ์๋๋๊ฒ ๊ฐ์๋ฐ ... ์ ์ง๋ชจ๋ฅด๊ฒ ๋ฐ์์ด ์๋๋๊ฒ ๊ฐ์ต๋๋ค ใ ใ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค...
- 0
- 2
- 544
Q&A
๋๋ฏธ๋ฐ์ดํฐ์ ์๋ ๋๊ธ์ด ๋ณด์ด์ง ์์ต๋๋ค
(์ฌ์ง) ์ ๋ post.js์ ๋๋ฏธ ๋ฐ์ดํฐ๋ ์ ๋ค์ด๊ฐ ์๋๊ฒ ํ์ธ๋๊ณ renderItem์์ console.log๋ก item์ ์ถ๋ ฅํด๋ณด๋ฉด comment๊ฐ ์๋๊ฑธ ํ์ธ๊ฐ๋ฅํ๋ฐ ๋๊ธ์ด ์๋์ค๋ค์... ใ (์ฌ์ง) ใ ์ด๊ฑฐ ์ฐพ๋๋ค๊ณ 30๋ถ์ ๋ค์ฌ๋ค ๋ณธ๊ฑฐ๊ฐ์๋ฐ ๋ชจ๋ฅด๊ฒ์ต๋๋ค ใ ใ
- 0
- 3
- 285