설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
항상 좋은 강의 감사드립니다! 다름이 아니라 16장에서 AXI_awaddr의 값이 변화하는 과정에 대해서 질문이 있어서 문의드립니다! AXI의 address 값이 0x08일 때는 BRAM의 주소 값을 초기화하고, 0x0c일 때는 BRAM의 특정 데이터를 넣어준 뒤 BRAM의 주소 값을 다음으로 넘어가게 한다는 것은 이해하였고, 그 부분이 코드에서 동작하는 것 역시 볼 수 있었습니다. 위 사진의 AWADDR에서도 10과 10 사이에 작게 보이지 않는 부분이 0x0c입니다. 하지만 사진에서 보다시피 데이터가 write되는 구간과 구간 사이에서 AWADDR이 0x10으로 변했다가 다시 0x0c로 변하는 현상이 발생하였고, 이렇게 동작하는 부분이 어디인지 주어진 코드를 분석했지만 그 부분을 찾지 못해서 질문드립니다. 어느 코드의 어느 부분에서 AWADDR이 0x0c->0x10->0x0c로 동작하는지 알려주시면 감사하겠습니다!
간단한 게시판을 만들어보면서 Jpa를 학습하고 있습니다. Member, Post, LikedPost 엔티티는 이렇게 3개로 구성되어 있고 각각의 코드는 아래와 같습니다. Member @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; @OneToMany(mappedBy = "member") private List<Post> posts = new ArrayList<>(); @OneToMany(mappedBy = "member") private List<LikedPost> likedPosts = new ArrayList<>(); @Builder public Member(String name, String email) { this.name = name; this.email = email; } } Post @Entity public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; private String title; @Lob private String content; @Builder public Post(Member member, String title, String content) { this.member = member; this.title = title; this.content = content; if (!member.getPosts().contains(this)) { member.getPosts().add(this); } } } LikedPost @Entity public class LikedPost { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; @ManyToOne @JoinColumn(name = "POST_ID") private Post post; @Builder public LikedPost(Member member, Post post) { this.member = member; this.post = post; if (!member.getLikedPosts().contains(this)) { member.getLikedPosts().add(this); } } } 여기서 제가 했던 고민은 LikedPost 를 리포지토리를 만들어서 관리해야 하는지 아니면 그냥 PostRepository 에서 관리해야 하는지였습니다. 사실 LikedPost 자체는 비즈니스 로직이 있는 것도 아니고 단지 회원별로 좋아요를 누른 게시글을 탐색하기 위한 중간 테이블이기 때문에 굳이 개별적으로 리포지토리를 만들어야 하나 생각이 들었습니다. 이런 경우에는 어떻게 구조를 가져가는 것이 좋을까요?
안녕하세요! 강의 수강 중 궁금한 점이 있어 질문 드립니다. 비동기오퍼레이션에서 상태변화가 생길 때, willSet과 didSet이 호출되는데, 이 쪽 구현부분에 있어서 의문점이 있습니다. willChangeValue(forKey:)함수와 didChangeValue(forKey:) 함수가 왜 두 번씩 불리는지 알고 싶습니다. var state = State.ready { willSet { willChangeValue(forKey: newValue.keyPath) willChangeValue(forKey: state.keyPath) } didSet { didChangeValue(forKey: oldValue.keyPath) didChangeValue(forKey: state.keyPath) } } willChangeValue(forKey:) 메서드의 정의를 찾아보니 '값이 바뀔 프로퍼티의 값을 관찰하고 있는 객체에 알리는 역할'이라고 되어 있더라구요 (Informs the observed object that the value of a given property is about to change.) 그래서 oldValue에 대해서도 실행해주는 것이 잘 이해가 가지 않습니다. 혹시 추가 설명 부탁드려도 될까요? 그리고 위의 코드를 어떻게 비동기오퍼레이션을 이용해서 callback 지옥으로부터 벗어날 수 있는지 알려주시면 감사하겠습니다! 항상 강의 잘 보고 있습니다! 친절한 설명 덕분에 점점 동시성에 대한 갈피가 잡히는 것 같아요. 감사합니다 !! :)
강사님 안녕하세요 StatefulSet 강의 중 궁금한 부분이 있어서 질문 드립니다. 먼저 ReplicaSet 부하 분산용으로 kubetm/app 가 3개 실행된다 replicas:3 spec: containers: - name: container image: kubetm/app 부하 분산용으로 kubetm/app 가 3개 실행된다는 내용은 이해를 하겠는데 StatefulSet 예제도 replicas:3 spec: containers: - name: container image: kubetm/app 이렇게 되어있더라구요 강의 내용처럼 containers에 예를 들어 image: kubetm/primary image: kubetm/secondary image: kubetm/albiter 각각 다른 역할을 하는 container가 실행되어야 하는거 아닌가요? 만약 그렇다고 하면 replicas 부분과 container 부분의 yaml 파일 작성이 실제로 어떻게 되는지 궁금합니다.
모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
로그인 버튼을 눌러도 아무 반응이 없네요 ㅜㅜ http://127.0.0.1/login/login.php http://127.0.0.1/login/loginAction.php 로그인 액션 로그인 이런식으로 해보면 코드 에러는 안나는 데 왜 그럴까요? ㅜㅜ 로그아웃logout.php는 로딩만 걸리지만 이게 문제일까요? ㅜㅜ
자체 인증과 OAurh2 로 구글 자원 인가 설정을 진행하였습니다. Spring Security 기본 설정에 oauth2Login 만 활성화 하면 Spring Boot 가 기본으로 설정하는 로그인 화면이 나옵니다. Spring Security 설정 구글 계정으로 시스템 인증까지는 필요 없어 access token 받는것까지만 진행 @Bean SecurityFilterChain configureHttp(HttpSecurity httpSecurity) throws Exception { httpSecurity.oauth2Login(Customizer.withDefaults()); return httpSecurity.build(); } 하지만 기존 Spring Security 설정에 oauth2Login 를 활성화 하면 404 에외가 발생하고 있고 있어 디버깅 해보니 강의에 설명된 Spring Security의 OAuth2 Client 관련 필터에 진입하지 못하고 있습니다. Spring Security 설정 @Bean SecurityFilterChain configureHttp(HttpSecurity httpSecurity) throws Exception { httpSecurity .headers() .frameOptions() .disable() .and() .httpBasic() .disable() // rest api 이 므로 기본설정 사용안함.. .csrf() .disable() // CSRF 설정 Disable .cors() .and() .exceptionHandling() .authenticationEntryPoint(authenticationErrorHandler) // 인증 예외 처리 .accessDeniedHandler(jwtAccessDeniedHandler) // 인사 예외 처리 .and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS) // JWT token으로 인증하여 세션을 사용하지 않기 때문에 세션 설정을 Stateless 로 설정 .and() .authorizeRequests() // 권한을 설정 .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() // CORS preflight 요청은 인증 처리를 하지 않는다. // 인증이 필요 없는 URI Pattern .antMatchers("/openapi/**").permitAll() .antMatchers("/**/login/**", "/**/mlogin/**").permitAll() .antMatchers("/moblmdm/**").permitAll() .antMatchers("/secuCert/**").permitAll() .antMatchers("/moblview/**", "/moblsecu/**").permitAll() .antMatchers("/websocket/**").permitAll() // ADMIN Role을 가진 경우에만 접근을 허용한다. //.antMatchers("/mng/**").hasAnyRole("ADMIN") .anyRequest().authenticated() .and() .apply(securityConfigurerAdapter()); httpSecurity.oauth2Login(Customizer.withDefaults()); // httpSecurity // .oauth2Login() // .authorizationEndpoint() // .authorizationRequestResolver((new CustomOAuth2AuthorizationRequestResolver(clientRegistrationRepository, DEFAULT_AUTHORIZATION_REQUEST_BASE_URI))) // .and() // .userInfoEndpoint() // .userService(new CustomOAuth2UserService()); return httpSecurity.build(); } 질문) 자체 로그인 설정과 소셜 로그인을 동시에 사용 할 수 있는 설정을 문의 드립니다. 참고로 자체 로그인 설정과 소셜 로그인 설정을 분리하고 아래와 같이 소설 로그인 설정에 우선 순위를 주면 소셜 로그인 기능은 활성하 되는데 존 자체 로그인 기능은 비활성화 됩니다. @Bean @Order(0) SecurityFilterChain configureOauth(HttpSecurity httpSecurity) throws Exception { httpSecurity .oauth2Login() // .loginPage("/login") // .failureUrl("/login") .authorizationEndpoint() .authorizationRequestResolver((new CustomOAuth2AuthorizationRequestResolver(clientRegistrationRepository, DEFAULT_AUTHORIZATION_REQUEST_BASE_URI))) .and() .userInfoEndpoint() .userService(new CustomOAuth2UserService()); return httpSecurity.build();
[질문 내용] Error creating bean with name 'orderServiceImpl' defined in file [C:\hello-spring\hello-core\bin\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ' hello.core.discount .DiscountPolicy' available: expected single matching bean but found 2: rateDiscountPolicy,discountPolicy 구글드라이브 주소입니다 : https://drive.google.com/drive/folders/1uhboQSI7MAc3eD3NIM_9B-H4p37IYT14?usp=share_link
개발 환경은 node.js이며 express를 활용해 개발중입니다. passport apple을 사용해서 apple 로그인을 구현해 보려고 하는데 어려움을 겪고 있어서 질문을 드립니다. 비슷한 사례의 질문이 인프런 질문 게시판에도 있는 것 같아 참고해봤지만 ㅠㅠ 해결하지 못하고 시간만 계속 쓰고 있는 상황입니다. 제가 직면한 문제는 passport apple을 써서 로그인 기능을 만들어 보려고 테스트를 하는데 로그인 인증 사이트로 간 다음 로그인을 하고 계속하기를 누르면 { "name": "InternalOAuthError", "message": "Failed to obtain access token", "oauthError": "AppleAuth Error – Error occurred while signing: Error: error:1E08010C:DECODER routines::unsupported" } 이와 같은 에러가 출력이 됩니다. privateKeyString 부분을 지금 코드에서 주석 처리를 하면 다음과 같은 애러가 출력되구요 { "name": "InternalOAuthError", "message": "Failed to obtain access token", "oauthError": "AppleAuth Error – Error occurred while signing: Error: secretOrPrivateKey must have a value" } 제가 여기서 궁금한게 키 값이 빠진 경우에도 access token을 가지고오지 못하고, 넣은 경우에도 가지고 오지 못하는 상황이 키 파일 자체가 손상이 된건지, 아니면 코드에서 문제가 있는 것인지 모르겠습니다. 키파일은 혹시나 싶어서 세 차례 정도 다시 기존에 있던 키 파일을 삭제하고 만든 것입니다. 비슷한 사례가 분명 앞 전에 있었지만 저는 해당 방법처럼 시도해봤는데도 여전히 idToken 값이나 어떤 값도 로그에 찍히지 않네요 ㅠㅠ require("dotenv").config(); const dotenv = require('dotenv'); const fs = require('fs'); const path = require('path'); const jwt = require('jsonwebtoken'); const bodyParser = require('body-parser') const express = require('express'); const session = require('express-session'); const passport = require('passport'); const AppleStrategy = require('passport-apple').Strategy; const cors = require('cors'); const app = express(); app.use( session({ resave: false, saveUninitialized: false, secret: 'keyboard cat' }) ); app.use(passport.initialize()); app.use(passport.session()); app.use(bodyParser.urlencoded({ extended: true })); passport.serializeUser(function(user, cb) { cb(null, user); }); passport.deserializeUser(function(obj, cb) { cb(null, obj); }); // console.log('어디에있니') // console.log(path.parse( 'AuthKey_874WAUN372.p8', )); // console.log(path.join(__dirname, './config/AuthKey_874WAUN372.p8')); passport.use( 'apple', new AppleStrategy( { clientID: 'com.herokuapp.applelogin', teamID: '3L7RW74HCJ', keyID: 'AGNLP55NBT', privateKeyString : `-----BEGIN PRIVATE KEY----- ----- 간략히 9AgEGCCqGSM49AwEHBHkwdwIBAQQgwI65IK8xMkJ2gOMV EoMBjFzlslUrIb7CCh/yg1dcTgigCgYIKoZIzj0DAQehRANCAASuAP+Ni4skreFO zHyy68-----간략히 -----END PRIVATE KEY-----`, // privateKeyLocation: fs.readFileSync(path.join(__dirname,'./config/AuthKey_AGNLP55NBT.p8')), passReqToCallback: true, callbackURL: 'https://applelogint.herokuapp.com/auth/apple', }, function(req, accessToken, refreshToken, idToken, profile , cb) { console.log(req, accessToken, refreshToken, idToken, profile , cb) if (req.body && req.body.user) { // Register your user here! console.log(req.body.user); } cb(null, idToken); } ) ); app.use(cors()); app.get('/', (req, res) => { res.send('<a href="/login">Sign in with Apple</a>'); }); app.get("/login", passport.authenticate('apple'), (req, res) =>{ }); app.post("/auth/apple", function(req, res, next) { passport.authenticate('apple', function(err, user, info) { console.log('통과하나? auth 콜백 포인트'); if (err) { if (err == "AuthorizationError") { console.log('auth') res.send("Oops! Looks like you didn't allow the app to proceed. Please sign in again! <br /> \ <a href=\"/login\">Sign in with Apple</a>"); } else if (err == "TokenError") { console.log('token') res.send("Oops! Couldn't get a valid token from Apple's servers! <br /> \ <a href=\"/login\">Sign in with Apple</a>"); } else { res.send(err); } } else { if (req.body.user) { // Get the profile info (name and email) if the person is registering res.json({ user: req.body.user, idToken: user }); } else { res.json(user); console.log('여기로 바로 떨어진건가?') } } })(req, res, next); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`App is running on port ${ PORT }`); });
module에 provider 는 공급자를 주입하는 것이며 서비스,레파지토리 등등을 사용 가능하게끔 의존성을 주입해줌 2.1번을 진행할 경우 해당 공급자에 @Injectable 데코레이터가 선언되어 있어야 한다 3.cats 모듈에 cats 레파지토리가 export에 선언되었고 그것은 퍼블릭 상태라는것을 의미하기에 auth 모듈에서 cats 모듈을 import 한다면 당연하게도 cats 레파지토리가 사용가능한 상태가 된다 그렇다면 import를 하면 공급자 주입이 되는것이며 Provider에도 선언을 하면 공급자 주입이 되는것이 맞는건가요?
강의에 나온 스켈레톤 메시는 언리얼 내 메시라 리타겟팅이 용이합니다. 근데 사실 실무에서는 응용하기 좀 어렵습니다. 저는 캐릭터를 믹사모에서 자동 리깅을 하고 언리얼로 가져와 애니메이션을 구현하는 작업을 종종 하고 있습니다. Manny를 '소스'로 하고 믹사모에서 가져온 캐릭터를 '타겟'으로 해서 제대로 리타겟팅하는데 항상 애먹고 있습니다. (사실 이걸 해결하려고 강의를 신청해 본거구요) 믹사모나 액터코어에서 가져온 캐릭터를 효과적으로 리타게팅 하는 방법을 연구해서 보강해주시면 감사하겠습니다.
@BeforeEach public void beforeEach() { AppConfig appConfig = new AppConfig(); MemberService memberService = appConfig.memberService(); } AppConfig appConfig = new AppConfig(); MemberService memberService = appConfig.memberService(); 위의 코드는 선생님께서 작성하신 것, 아래 코드은 제가 작성한 것인데, 메서드로 만들지 않고 클래스의 필드로 만들었습니다. 위의 코드대로 하면 매번 테스트 메서드를 호출할 때마다 2줄의 코드도 함께 수행되는데, 아예 클래스의 필드로 만들어버리면 실행할 코드 수도 줄어들고 좋지 않을까..? 하는 생각이 들었는데, 선생님께서 메서드로 만드신 이유가 무엇일까요..??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 8-B의 해설에서 dp에서 상태값을 STR과 INT 이 두가지로 보고 있습니다. 방문한 요소들도 dp의 상태값에 있어야 한다 생각했는데 visited는 왜 영향을 주지 않는 변수로 둘 수 있는지 궁금합니다. 8-C도 마찬가지로 prev라는 변수가 dp의 상태값으로 쓰이지 않는 것에 대한 이유가 궁금합니다.
Mac OS IntelliJ Ultimate 발생한 문제 인텔리제이는 gradle 을 선택해서 스프링 프로젝트를 만들면 자동으로 홈디렉토리에 .gradle 라는 폴더를 만들고 gradle를 다운받고 구성하는 걸로 보입니다 하지만 저는 homebrew를 통해 gradle를 받아서 gradle의 경로가 /opt/homebrew/Cellar/gradle/7.5.1_1/libexec 이렇게 되어있습니다 구글링을 한결과 gradle의 홈경로를 지정해주면 인텔리제이가 해당 경로로 인식한다고 해서 를 통해서 홈디렉토리의 .bash_profile 파일을 다음과 같이 수정했습니다 #GRADLE_HOME export GRADLE_HOME=/usr/local/opt/gradle/libexec export PATH=$GRADLE_HOME/bin:$PATH 그후 인텔리제이에서 새로운 프로젝트를 만들고나서 설정의 Gradle을 확인했지만 홈경로의 .gradle 로 되어있었고 그러나 프로젝트를 한번만들고 다시 껏다가 프로젝트를 키면 /opt/homebrew/Cellar/gradle/7.5.1_1/libexec 여기 경로로 바뀌어 있었습니다 해결이 되긴했지만 절반만 된것이지요 저는 프로젝트를 생성할 당시부터 인텔리제이가 brew의 gradle 경로를 찾아서 홈디렉토리에 .gradle 파일을 만들고 싶지 않습니다. 어떻게 하면 될까요
안녕하세요. 커맨드+ s를 누르고 에뮬레이터에 싱크로나이징하는 것이 안됩니다. 항상 stop을 누르고 다시 플레이해야합니다. Performing hot reload... Syncing files to device sdk gphone64 arm64... 에서 멈춰있어요. 어떻게 수정해야 해결될까요. .. 꼭 알려주시면 감사드리겠습니다. _______________________________________________ 환경변수 설정하려니 이렇게 뜹니다. Last login: Fri Nov 18 10:46:53 on ttys001 (base) selena@selenaui-MacBookPro ~ % export PATH="$PATH: [PATH_OF_FLUTTER_GIT_DIRECTORY]/bin" (base) selena@selenaui-MacBookPro ~ % echo $PATH /opt/local/bin:/opt/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/selena/opt/anaconda3/bin:/Users/selena/opt/anaconda3/condabin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:/bin:/Users/selena/Library/Android/sdk/platform-tools:/Users/selena/Documents/flutter/bin: [PATH_OF_FLUTTER_GIT_DIRECTORY]/bin (base) selena@selenaui-MacBookPro ~ % _________