묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결처음 만난 리액트(React)
12강 실습 (섭씨 화씨)
안녕하세요 12강 실습코드를 그대로 작성했는데 섭씨온도를 적었을때 화씨온도로 자동으로 변환되어 나타나지 않습니다. 화씨온도를 먼저 적었을때도 마찬가지고요. 코드 한번 봐주실 수 있나요? 감사합니다. Calculatorimport React, {useState} from "react"; import TemperatureInput from "./Temperatureinput"; function BoilingVerdict(props){ if(props.celsius >= 100){ return <p>물이 끓습니다.</p>; } return <p>물이 끓지 않습니다.</p>; } function toCelsius(fahrenheit){ return ((fahrenheit-32)*5)/9; } function toFahrenheit(celsius){ return (celsius*9)/5+32; } function tryConvert(temperature,convert){ const input = parseFloat(temperature); if(Number.isNaN(input)){ return ""; } const output = convert(input); const rounded = Math.round(output*1000)/1000; return rounded.toString(); } function Calculator(props){ const [temperature, setTemperature] = useState(""); const[scale,setScale]=useState("c"); const handleCelsiusChange = (temperature) => { setTemperature(temperature); setScale("c"); }; const handleFahrenheitChange = (temperature) => { setTemperature(temperature); setScale("f"); }; const celsius = scale === "f" ? tryConvert(temperature, toCelsius):temperature; const fahrenheit = scale === "c" ? tryConvert(temperature, toFahrenheit):temperature; return ( <div> <TemperatureInput scale="c" temperatrue = {celsius} onTemperatureChange={handleCelsiusChange}/> <TemperatureInput scale="f" temperatrue = {fahrenheit} onTemperatureChange={handleFahrenheitChange}/> <BoilingVerdict celsius={parseFloat(celsius)} /> </div> ); } export default Calculator;Temperatureinputconst scaleNames = { c:'섭씨', f:'화씨', }; function TemperatureInput(props){ const handleChange = (event) => { props.onTemperatureChange(event.target.value); }; return ( <fieldset> <legend> 온도를 입력해주세요(단위:{scaleNames[props.scale]}); </legend> <input value={props.temperature} onChange={handleChange} /> </fieldset> ); } export default TemperatureInput;
-
해결됨한 입 크기로 잘라먹는 타입스크립트(TypeScript)
TS클래스 접근제어자 상속 질문있습니다!
class Employee2 { constructor( public name: string, protected age: number, private position: string ) {} work() { console.log("일하는중"); } } class Emp extends Employee2 { constructor( public name: string, protected age: number, public codeNum: number ) { super(name, age); this.codeNum = codeNum; } } private를 설정한 경우 클래스 Emp처럼 상속받았을때 super에서 3개 인수가 필요한데 2개를 가져왔다고 오류가 뜨는데 그렇다고 private 설정한 position을 con structor이나 super에 적어도 오류가발생하고 private를 설정한 클래스를 상속받아서 사용할때는 어떤식으로 해야할까요??
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
페이지 컴포넌트에 props 전달하는 부분 관련
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요,함수로 props를 전달하는 부분 (강좌 12:00 ~)에서,기존에는 받은 값을 int로 바꾸는 작업을 했었는데함수로 전달하면서 애초에 int값을 주는 것으로 변경했습니다. 이 변화로 인해 기존 코드에서 parseInt 관련 부분을 삭제/수정했습니다. 그런데.. 12:57 부근에서<PostDetailView id="1"> 을<PostDetailView :id="1"> 로 변경했습니다. 이 작업이 어떤 의미를 갖나요?v-bind를 추가한 것이 "1"을 string에서 int로 인식하게 하는게 이해가 되지 않습니다. 미리 감사합니다!
-
미해결한 입 크기로 잘라먹는 타입스크립트(TypeScript)
인터페이스 강의 관련 질문있습니다
interface Person { name: string; age: number; sayHi(): void; // 오버로딩 sayHi(a: number, b: number): void; } const person: Person = { name: "name", age: 1, sayHi: function () { console.log("hi"); }, }; person.sayHi(); person.sayHi(1, 2);이런식으로 코드가 있는데sayHi에 매개변수가 없을땐 console.log("hi")를있을땐 console.log(`Hi ${a}, ${b}`) 이런식으로 만들고싶은데 person을 초기화할때 어떤식으로 해야할지 모르겠습니다 person객체 안에 sayHi를 두개적으면 당연하게도 오류발생하더라고요ㅜㅜ 아 그리고 type은 마우스 올렸을때 구조를 알수있는데인터페이스는 마우스 올렸을때 구조를 안알려주던데 혹시 구조를 알수있는 방법이있나요? 해당 인터페이스명을 보고 선언한 코드 위치에가서 구조를 확인하는방법밖에없을까요?
-
미해결비전공자를 위한 개발자 취업 올인원 가이드 [통합편]
자바 기술 서적 문의할게요
정수님 블로그를 보다가 자바 기술 서적으로 자바의정석을 읽으신것같아서 그런데 자바의정석이 입문자로써는 조금 이해하기 힘들수도 있다고 하더라구요 그런데 비전공자인 제가 자바강의만 2개정도 듣고 자바의정석을 독학하려고하는데 혹시 이해하는데 문제없을까요?? 조금 어려우면 이것이 자바다 책을 살려고합니다. 물론 유튜브 강의도 같이 볼예정입니다!!그리고 자바의정석3판이 나온지 7년이나되었고 내년에 4판이 나온다고 하던데 지금 3판으로 공부하는데 문제가 없을까요?? 버전들도 많이 바꼇을것같아서요 ㅠㅠ
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
4번문제풀이
동일하게 코드를 작성했는데, 결과는 맞지 않다고 나오네요. null값이 제외되는거 같은데 어떻게 하면 null값을 나오게 하나요SELECT firstName, lastName, city, State FROM Person INNER JOIN Address ON Person.personId = Address.personId
-
미해결실습으로 배우는 선착순 이벤트 시스템
왜 쿠폰수가 너무 많을까요?
분명 현재 없는 상태이고결과가 자꾸 이상하게 나와서 sout 처리를 잠시 해보았습니다 package com.example.api.service; import com.example.api.domain.Coupon; import com.example.api.repository.CouponCountRepository; import com.example.api.repository.CouponRepository; import org.springframework.stereotype.Service; @Service public class ApplyService { private final CouponRepository couponRepository; private final CouponCountRepository couponCountRepository; public ApplyService(CouponRepository couponRepository, CouponCountRepository couponCountRepository) { this.couponRepository = couponRepository; this.couponCountRepository = couponCountRepository; } public void applyV1(Long userId) { Long count = couponRepository.count(); if(count > 100) { return; } couponRepository.save(new Coupon(userId)); } public void applyV2(Long userId) { Long count = couponCountRepository.increment(); System.out.println(count); if(count > 100) { return; } couponRepository.save(new Coupon(userId)); } } @SpringBootTest class ApplyServiceTest { @Autowired private ApplyService applyService; @Autowired private CouponRepository couponRepository; @Test public void applyOnce() { applyService.applyV1(1L); long count = couponRepository.count(); Assertions.assertEquals(1L, count); } @Test public void 여러명응모V1() throws InterruptedException { int threadCount = 1000; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for(int i=0; i<threadCount; i++){ long userId = i; executorService.submit(() -> { try { applyService.applyV1(userId); } catch(Exception e) { System.out.println(e); }finally { latch.countDown(); } }); } latch.await(); long count = couponRepository.count(); assertThat(count).isEqualTo(100); } @Test public void 여러명응모V2() throws InterruptedException { int threadCount = 1000; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for(int i=0; i<threadCount; i++){ long userId = i; executorService.submit(() -> { try { applyService.applyV2(userId); } catch(Exception e) { System.out.println(e); }finally { latch.countDown(); } }); } latch.await(); long count = couponRepository.count(); org.assertj.core.api.Assertions.assertThat(count).isEqualTo(100); } } 그런데 여러명응모V2 test를 실행시에 count를 출력시다음과 같은 수가 나옵니다. 20003200112001220013200152001620017200182002020022 ??? 한번 할때마다 1000씩 쿠폰의 수가 증가중인데요;;;조회했을때는 empty라 나오는데 이렇게 되는 연유를 잘 모르갰습니다. 테스트 코드라서 rollback이 되야할거 같은데 그렇지 않는것도 잘 모르겟네요;; ㅠㅠ
-
미해결C# 입문부터 Xamarin Forms(자마린 폼즈) + Maui(마우이) 안드로이드, 윈도우 앱(UWP) 동시에 만들기
안드로이드에서 글자가 안보이는 현상
xamarin으로 프로젝트 생성후최초로 생성된 프로젝트를 apk로 만들어서 핸드폰에서 실행하면글자들이 안보이는 현상(label에 있는 글자들, 버튼에 올라간 글자는 보임) 물론 안드로이드 에뮬레이터에서는 잘보이구요.안드로이드 버전 11로 컴파일함
-
미해결
구글 링크 오류납니다.
보내주신 안드로이드 링크 접속시 오류가 나옵니다. 확인 후 재링크 부탁드립니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
참조 관련 질문있습니다.
안녕하세요. 질문이 두 가지 있습니다.강의에선 node_modules가 호스트에 없어서 참조에서 제외하고, 나머지 소스코드는 존재하여 전부 참조하는식으로 진행이 되었는데,그럼 docker build시 COPY ./ ./ 이부분은 아예 필요가없는거 아닌가요? 이미지에 이미 소스가 존재할텐데, 강의처럼 볼륨참조 설정을 넣어주면 컨테이너 생성 시, 이미 존재하는 소스는 호스트에서 가져와서 덮어쓰기된다고 이해하면 될까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
프로그래밍 난이도 수준
안녕하세요 선생님 한가지 궁금한게 있어 문의 드립니다.이 모든 문제의 난이도는 level 1~2까지의 수준인가요? 아니면 level3까지의 문제 난이도도 있는지 궁금합니다.
-
미해결파이썬으로 장고(Django) 공략하기: 입문
데이터 새성시 forms.py, models.py 관련문의
예제 내용 그대로 수행하였고요. 몇가지 질문드립니다.forms.py 에서의 title 정의와, models.py에서 내린 title 정의가 서로 다를 경우, forms.py 가 우선시 되는 것 같은데요. 속성값(max_length)이 달라도 상관없는 지.. [froms.py]class PostForm(forms.Form): title = forms.CharField(label='제목', max_length= 2) [models.py]class PostForm(forms.Form): title = forms.CharField(label='제목', max_length= 2)content = forms.CharField(label='내용', widget = forms.Textarea) ModelForm 을 사용시 model =Post 로 가져오는 것 같은데, 기본적인 models 내용은 참조하게 되는건가요? class PostForm(ModelForm):class Meta :model = Postfields = ['title','content']labels = {'title' : _('제목'),'content': _('내용'),}help_texts={'title' : _('제목을 입력해주세요.'),'content' : _('내용을 입력해주세요. '),}error_messages = {'name' : {'max_length': _("제목이 너무 깁니다. 30자 이하로 해주세요.")}}title 입력 폼에서 성공시에는 confirm 으로가고, max 길이 오류시에 create/로 가도록 했었는데요.[views.py]def confirm(request):form = PostForm(request.POST)if form.is_valid():return render(request, 'second/confirm.html', {'form': form})return HttpResponseRedirect('/second/create/') ModelForm 으로 사용시에는 동일한 코드이고 다만 에러가 나면 list화면으로 넘어가도록 되어 있는데, 성공을 해도 list 화면으로 넘어가는 이유를 모르겠습니다.[views.py]def create(request):if request.method =='POST':form = PostForm(request.POST)if form.is_valid():new_item = form.save()return HttpResponseRedirect('/second/list/') form = PostForm()return render(request, 'second/create.html', {'form':form})
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
SSR을 적용해야하는 부분과 그렇지않은 부분에 대해
강좌에서 알려주신대로 페이지의 getServerSideProps로 초기로드를 SSR하는 방식을제 프로젝트에서도 적용을 했는데요. 모든 페이지에 SSR을 진행하다보니막상 배포해서 돌려보면 첫페이지 로드를 빨리 보여주는 장점보다,서버에서 렌더링을 기다려야하는 단점이 눈에 띄게 보였습니다.사실 모든 페이지에서 SSR을 적용하면 기존의 전통적인 웹과 다를바가 없지않나라는생각들 들고, SEO vs SPA 둘 중의 하나의 고민으로 오게되는데 제로초님은 이런경우에어떤 기준으로 판단을 하시나요?getStaticProps() 가 SSG(static site generation)에 해당하고 getServerSideProps() 가 SSR(server side rendering)에 해당하는것이 맞나요?
-
미해결
유니티 패키지가 계속 오류가 납니다
제가 대학교 동아리로 처음 유니티를 배우고 있는데 다른사람과 같이 만드는 중이어서 제가 만든 메인 화면을 패키지로 압축해 다른 사람들과 같이 만드는 파일 안에 넣었는데 계속 투명하게 오류가 나요유니티 버전은 똑같은데 컴파일 오류가 난다고 나옵니다. 지웠다 재설치를 했는데도 같은 결과인데 어떻게 해결해야 하나요?
-
미해결언리얼 엔진4 입문 (C++ 기반)
UBTTask_Attack의 TickTask 함수 호출이 안되는 것 같습니다.
생성자에서 bNotifyTick = true;를 해주고틱테스크 함수에 디버깅 포인트를 찍고 디버깅을 해봤으나 함수에 들어오지 않는 것 같습니다.혹시 저 부분 외에 다른 작업도 해주어야 하나요? 그리고 람다를 사용해서 계속 델리게이트를 구독하는 것 같아서 bool값을 통해 초기 한 번만 등록되도록 바꿔봤는데 혹시 문제가 있을까요? 아직 델리게이트를 정확히 이해하지 못해 질문 드립니다.
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
델리게이트에서 구독 등록 부분
어떤 경우에는 AddUObject로 등록하고, 어떤 경우에는 AddDynamic로 등록하는데 이 둘의 차이는 무엇인가요?그리고 만약 맨처음에만 등록하는게 아니라 틱마다 Add함수를 사용해서 등록한다면 등록된 만큼 콜백함수가 호출되나요?델리게이트가 무엇인지는 이해했지만 정확한 원리를 이해하기가 힘듭니다..ㅠㅠ
-
미해결앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
기초앱 12강 가위바위보 앱 viewDidLoad() 함수 내부 구현 질문
안녕하세요 강의 잘 듣고있습니다!!제가 가위바위보 앱을 강의 보면서 따라만들때는 이 오류가 안떴는데 혼자 복습하면서 만들다보니 viewDidLoad 함수 내부에서 comImageView.image = #imageLiteral( 준비 이미지를 설정하는데 빌드를 하면 오류가 뜹니다.오류는 : Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value라고 뜨는데 comImageView.image 에 준비 이미지를 넣어줬는데도 왜 옵셔널이라 뜨는거죠..? 원본 코드랑 비교해도 다른 점이 없고 구글링해도 안나와서 질문드립니다ㅠㅠ답변해주시면 감사하겠습니다!아래는 제 ViewController 화면입니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
postman으로 테스트 해봤는데 안되는 이유를 모르겠습니다!
1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 @Slf4j @RestController @RequiredArgsConstructor public class TemController { private final temRepository temRepository; private final FileStore fileStore; @GetMapping("/tems/kkk") public String kkk(){ return "temtem"; } @GetMapping("/tems/new") public String newItem(@ModelAttribute TemDto dto) { return "item-form"; } @PostMapping("/tems/new") public String saveItem(@ModelAttribute TemDto dto) throws IOException { /*// UploadFile attachFile = fileStore.storeFile(dto.getAttachFile()); UploadFile attachFileee=fileStore.storeFile(attachFile); //데이터베이스에 저장 Tem tem = new Tem(); tem.setTemName(temName); tem.setAttachFile(attachFileee); temRepository.save(tem);*/ UploadFile attachFile = fileStore.storeFile(dto.getAttachFile()); //데이터베이스에 저장 Tem tem = new Tem(); tem.setTemName(dto.getTemName()); tem.setAttachFile(attachFile); temRepository.save(tem); return "ok"; } @ResponseBody @GetMapping("/images/{filename}") public Resource downloadImage(@PathVariable String filename) throws MalformedURLException { return new UrlResource("file:" + fileStore.getFullPath(filename)); } @GetMapping("/attach/{temId}") public ResponseEntity<Resource> downloadAttach(@PathVariable Long temId) throws MalformedURLException { Tem tem = temRepository.findById(temId); String storeFileName = tem.getAttachFile().getStoreFileName(); String uploadFileName = tem.getAttachFile().getUploadFileName(); UrlResource resource = new UrlResource("file:" + fileStore.getFullPath(storeFileName)); log.info("uploadFileName={}", uploadFileName); String encodedUploadFileName = UriUtils.encode(uploadFileName, StandardCharsets.UTF_8); String contentDisposition = "attachment; filename=\"" + encodedUploadFileName + "\""; return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition) .body(resource); } } 교재와 거의 흡사하게 RestController로 짰습니다.서버에 저장할때는 saveItem을 사용했습니다. 실제로 지정된 경로에 이미지가 저장이 되었습니다.그런데 postman통해서 이미지를 확인하고 싶어서 responseEntity<Resource>를 사용했는데...이렇게 이미지가 나오는게 아니라 다 깨져서 나옵니다. 혹시 뭐가 잘못되었는지 아실까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
앱번들 빌드 에러좀 봐주세요.
유튜브 다트 강의, 인프런 플러터 강의, 그리고 코드팩토리의 플러터 프로그래밍 책까지 잘 보고 있습니다.양질의 컨텐츠와 친절한 답변에 매번 감사드립니다.현재 챗gpt api를 이용한 간단한 앱을 만들었고 이것을 빌드하려고 합니다.책 606쪽의 flutter build appbundle이라고 터미널에 치면 아래 에러가 납니다. mac@HanHoseokui-iMac kind_teacher_han % flutter build appbundle💪 Building with sound null safety 💪FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:mergeReleaseResources'.> Multiple task action failures occurred: > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > Android resource compilation failed ERROR:/Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: AAPT: error: file failed to compile. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > Android resource compilation failed ERROR:/Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: file failed to compile. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > Android resource compilation failed ERROR:/Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: AAPT: error: file failed to compile.* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.* Get more help at https://help.gradle.orgBUILD FAILED in 5sRunning Gradle task 'bundleRelease'... 6.2sGradle task bundleRelease failed with exit code 1 이미지 쪽에 에러가 있는 것 같아 보입니다. 저는 앱 아이콘 만들기 웹 사이트(https://www.appicon.co)에서 제가 만든 아이콘으로 안드로이드용 이미지를 만든 후 /Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res에 폴더 붙여넣기를 했었는데 이게 문제가 되었을까요? 옛날에 앱인벤터라는 교육용 블록코딩 앱 개발 플랫폼으로 했을 때는 앱 출시까지 그렇게 어렵지 않게 했었는데.. 한 달가량 헤메고 있으니 힘드네요ㅠㅠ 도와주세요!^^
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
쓰레드매니저 질문
... void ThreadManager::Launch(function<void(void)> callback) { LockGuard guard(_lock); _threads.push_back(thread([=]() { InitTLS(); callback(); DestroyTLS(); })); } ... --------------------------------------------- int main() { for (int32 i = 0; i < 5; i++) { GThreadManager->Launch(ThreadMain); } GThreadManager->Join(); }쓰레드 매니저 예제 코드의 일부인데요, 위 코드에서 다음과 같이 InitTLS();GThreadManager->Join();두 곳에 브레이크 포인트를 걸었는데 신기하게 Join에 먼저 브레이크가 걸리네요. Launch 함수가 순차적으로 실행되고 메인함수의 반복문을 빠져 나온다음에 Join이 걸릴거 같은데요.Launch 함수가 쓰레드 함수라면 그럴 수 있겠지만 ThreadManager 자체는 쓰레드가 아닌데 왜 그런 것인가요?