묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
코린아, 코딩하자! with 파이썬
.
삭제된 글입니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MVC 패턴의 중복코드에 대한 질문입니다.
안녕하세요, 김영한 팀장님. 다른 학습자분께서 남겨주신 질문에 대한 답변 내용 중 '연통배관'이라는 단어를 보고 , 기존 업무에서 해오던 프로젝트가 생각나서 조언을 얻고자 질문 글을 남깁니다. 해당 프로젝트에서는 동일한 기능에 대하여 사용자 화면과 관리자 화면의 코드(MVC)가 분리되어 있는 형태를 띄고 있었습니다. (예를 들어, 웹 사이트 Pop Up) 다만, 실제 코딩을 해보았을 때 Controller 클래스는 그렇다하더라도 Service와 Repository 그리고 Domain 클래스(또는 VO)가 파일명(클래스명)만 다를 뿐 실제 하는 일은 사용자 화면에서나 관리자 화면에서 동일한 구조를 띄고, 동일한 기능을 하고 있어서 신경이 쓰였는데요. (도메인 클래스 멤버 구성들, Service와 Repository 기능[팝업 저장, 조회, 수정, 삭제]) 현재 속한 그룹의 코딩 스타일이 원래 이렇구나 해서 습관(?)이 되어버린 것이 '연통배관'이라는 단어를 보자마자 반성을 하게되었습니다. 정리하면 좋은 코딩 습관은 사용자, 관리자 화면이 분할이 되어 있다고 하더라도, 각 화면에 사용할 MVC 패턴 구조가 아니라 최대한 중복 코드를 줄인 MVC 패턴 구조를 사용하여 사용자, 관리자 화면 모두에서 사용할 수 있는 기능을 구현하는 것이 올바른 코딩 습관이 맞는 거겠지요? 긴 글 읽어주셔서 감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mask r cnn_inference시 오류 발생에 관해서
항상 좋은 강의 감사 합니다. mask r cnn 모델 학습 후 학습된 모델의 weight 파일을 MaskRCNN의 inference 모델로 로딩시 아래와 같이 오류가 발생 합니다. WARNING:tensorflow:From /home/*****google/anaconda3/envs/tf113/lib/python3.6/site-packages/mrcnn/model.py:768: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version. Instructions for updating: Use tf.cast instead. model path: ('./snapshots_result/balloon20200808T1406', './snapshots_result/balloon20200808T1406/mask_rcnn_balloon_0050.h5') --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-24-0567360a6bea> in <module> 4 print('model path:', weights_path) 5 # 지정된 weight 파일명으로 모델에 로딩. ----> 6 model.load_weights(weights_path, by_name=True) ~/anaconda3/envs/tf113/lib/python3.6/site-packages/mrcnn/model.py in load_weights(self, filepath, by_name, exclude) 2084 if h5py is None: 2085 raise ImportError('`load_weights` requires h5py.') -> 2086 f = h5py.File(filepath, mode='r') 2087 if 'layer_names' not in f.attrs and 'model_weights' in f: 2088 f = f['model_weights'] ~/anaconda3/envs/tf113/lib/python3.6/site-packages/h5py/_hl/files.py in __init__(self, name, mode, driver, libver, userblock_size, swmr, rdcc_nslots, rdcc_nbytes, rdcc_w0, track_order, **kwds) 393 name = repr(name).encode('ASCII', 'replace') 394 else: --> 395 name = filename_encode(name) 396 397 if track_order is None: ~/anaconda3/envs/tf113/lib/python3.6/site-packages/h5py/_hl/compat.py in filename_encode(filename) 109 filenames in h5py for more information. 110 """ --> 111 filename = fspath(filename) 112 if sys.platform == "win32": 113 if isinstance(filename, six.text_type): TypeError: expected str, bytes or os.PathLike object, not tuple
-
미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
안녕하세요! 혹시 강의 내용 전체가 담긴 깃허브 주소도 있나요?
안녕하세요 , 최근에 강의를 접하게 되어 열심히 듣고 있는 수강생입니다 :) 다름이 아니라 소스코드 전체가 포함된 깃허브 주소가 있는 지 여쭈어 보고 싶어서 이렇게 질문 남겨요! 감사합니다 :)
-
미해결모던 안드로이드 - 코틀린과 Jetpack 활용
Kotlin DataBinding
MainViewModel에서 var todos: LiveData<List<Todo>>init { todos = getAll()}이 부분을 프로퍼티로 변경하면 될 줄 알았는데안됩니다. val todos: LiveData<List<Todo>> get() { return getAll()}프로퍼티를 사용 할 수 있는 방법이 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 DB
안녕하세요 강사님 H2 DB를 사용하는 과정에서 Generic JNDI Data Source 외에 다른 세팅이 보이지 않는데 혹시 따로 설정해야 할 것들이 있을까요????
-
미해결Svelte 입문 강의 - A부터 Z까지
프레임워크
프론트엔드 프레임워크는 처음 배워봐요! svelte를 공부해두면 react 공부에도 도움이 될까요??
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
/login 페이지로 자동 라우팅이 되는데 어떻게 해결하나요?
localhost:8088을 치고 들어갔는데 /login로 자동으로 이동합니다.
-
미해결플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]
정답 선택지 보기에 데이터가 불러지지가않습니다..ㅠㅠ
많은 질문 드려서 죄송합니다.ㅠㅠㅠ최대한 제가 해결해보려고 노력 중인데 잘 모르겠어서 질문드립니다. Q.질문데이터는 잘 물러와지는데, 4가지 개관식 보기 데이터들이 제대로 화면에 뜨지않습니다. 데이터가 불러와지지 않는 대표적인 이유를 알 수 있을까요.?? widget_candidate.dart 파일입니다. import 'package:flutter/material.dart'; class CandWidget extends StatefulWidget { VoidCallback tap; String text; int index; double width; bool answerState; CandWidget({this.tap, this.text, this.index, this.width, this.answerState}); _CandWidgetState createState() => _CandWidgetState(); } class _CandWidgetState extends State<CandWidget> { @override Widget build(BuildContext context) { return Container( width: widget.width * 0.8, height: widget.width * 0.1, padding: EdgeInsets.fromLTRB( widget.width * 0.848, widget.width * 0.024, widget.width * 0.848, widget.width * 0.024, ), decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), border: Border.all(color: Colors.deepPurple), color: widget.answerState ? Colors.deepPurple : Colors.white, ), child: InkWell( child: Text( widget.text, style: TextStyle( fontSize: widget.width * 0.035, color: widget.answerState ? Colors.white : Colors.black, ), ), onTap: () { setState(() { widget.tap(); widget.answerState = !widget.answerState; }); }, ), ); } } screen_quiz.dart 파일입니다. import 'package:auto_size_text/auto_size_text.dart'; import 'package:first/model/model_quiz.dart'; import 'package:first/screen/screen_result.dart'; import 'package:first/widget/widget_candidate.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_swiper/flutter_swiper.dart'; class QuizScreen extends StatefulWidget { final List<Quiz> quizs; QuizScreen({this.quizs}); @override _QuizScreenState createState() => _QuizScreenState(); } class _QuizScreenState extends State<QuizScreen> { List<int> _answers = [-1, -1, -1]; List<bool> _answerState = [false, false, false, false]; int _currentindex = 0; SwiperController _controller = SwiperController(); @override Widget build(BuildContext context) { Size screenSize = MediaQuery.of(context).size; double width = screenSize.width; double height = screenSize.height; return SafeArea( child: Scaffold( backgroundColor: Colors.deepPurple, body: Center( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), border: Border.all(color: Colors.deepPurple), ), width: width * 0.85, height: height * 0.7, child: Swiper( controller: _controller, physics: NeverScrollableScrollPhysics(), loop: false, itemCount: widget.quizs.length, itemBuilder: (BuildContext context, int index) { return _buildQuizCard(widget.quizs[index], width, height); }, ), ), ), ), ); } Widget _buildQuizCard(Quiz quiz, double width, double height) { return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), border: Border.all(color: Colors.white), color: Colors.white, ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ Container( padding: EdgeInsets.fromLTRB(0, width * 0.024, 0, width * 0.024), child: Text( 'Q' + (_currentindex + 1).toString() + '.', style: TextStyle( fontSize: width * 0.06, fontWeight: FontWeight.bold, ), ), ), Container( width: width * 0.8, padding: EdgeInsets.only(top: width * 0.012), child: AutoSizeText( quiz.title, textAlign: TextAlign.center, maxLines: 2, style: TextStyle( fontSize: width * 0.048, fontWeight: FontWeight.bold, ), ), ), Expanded( child: Container(), ), Column( children: _buildCandidates(width, quiz), ), Container( padding: EdgeInsets.all(width * 0.024), child: Center( child: ButtonTheme( minWidth: width * 0.5, height: height * 0.05, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), child: RaisedButton( child: _currentindex == widget.quizs.length - 1 ? Text('결과보기') : Text('다음문제'), textColor: Colors.white, color: Colors.deepPurple, onPressed: _answers[_currentindex] == -1 ? null : () { if (_currentindex == widget.quizs.length - 1) { Navigator.push( context, MaterialPageRoute( builder: (context) => ResultScreen( answers: _answers, quizs: widget.quizs, ))); } else { _answerState = [false, false, false, false]; _currentindex += 1; _controller.next(); } }, ), ), ), ), ], ), ); } List<Widget> _buildCandidates(double width, Quiz quiz) { List<Widget> _children = []; for (int i = 0; i < 4; i++) { _children.add( CandWidget( index: i, text: quiz.candidates[i], width: width, answerState: _answerState[i], tap: () { setState(() { for (int j = 0; j < 4; j++) { if (j == i) { _answerState[j] = true; _answers[_currentindex] = j; } else { _answerState[j] = false; } } }); }, ), ); _children.add( Padding( padding: EdgeInsets.all(width * 0.024), ), ); } return _children; } }
-
미해결빠르게 git - 핵심만 골라 배우는 Git/Github
질문 드립니다.
1. 메모장을 기준으로 강의를 해주셨을 때 자신이 아닌 누구라도 와서 연필 모양을 눌러서 글을 수정할 수 있었는데요. 나의 파일을 누구나 그렇게 수정할 수 있으면 파일 훼손의 위험이 크지 않나요? 2. 콜라보레이션이 협업을 같이 하는 사람을 초대해서 같이 작업을 하는 개념이던데 초대 안해도 어차피 누구나 와서 수정을해서 commit을 할텐데 굳이 콜라보레이션이 협업이라고 하는 이유가 뭔가요? 3. pull request도 2번과 같은 질문인데요 어차피 누구나 와서 수정 가능할텐데 허락하고 거절하고의 개념이 필요한가요? 콜라보레이션을 승낙해야 푸쉬하고 커미션이 가능하다고 하셨던 것 같은데 누구나 수정이 가능해서 그 것 자체가 커미션일텐데 허락과 거절의 개념이 왜 존재하는지 질문드립니다.
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
IPYNB파일을 어떻게 열어야 할까요..
주피터 노트북에서 IPYNB파일이 안 열리는데(업로드 해서 하거나 끌어다놓아 봤는데도ㅠ) 어떻게 열어야 할까요...?ㅠㅠ
-
미해결Vue로 Nodebird SNS 만들기
프론트엔드 서버에서 URIError: URI malformed에러가 납니다.
저분이 제사이트(https://nodebird.site)에서 이것저것 글작성을 하다가 posts에 위의 데이터들을 작성하였고 그뒤로 프론트엔드 서버에서 URIError: URI malformed에러가 뜨고 접속이 되지 않습니다. 찾아보니 decodeURIComponent대신 unescape를 사용하라는데 nuxt에서 이걸 어떻게 설정해야하는지 모르겠네요ㅠㅠ #% 이렇게 #뒤에 %가 붙어나오는 경우만 문제가 있는것 같습니다. #으로 해시태그 구별해내는 부분이 문제인것 같습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
store map설정 시
map의 key와 value에서 value를 String이 아닌 Member타입으로 설정하신 이유가 잘 이해되지않습니다. 제 생각에는 지금은 id를 제외하곤 name만 있지만 그 외에도 다른 정보가 들어갈 수 있어서 Member타입으로 설정하신 게 맞나요?
-
미해결[OpenCV] 파이썬 딥러닝 영상처리 프로젝트 2 - 불량사과를 찾아라!
컴파일과정에서 에러가 발생합니다.
다음과 같은 에러가 발생합니다... ㅜㅜ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
람다식..
갑자기 람다식을 사용하니 findByName에서 무슨 뜻인지 확실히 모르겠습니다. 대충 어떤 느낌이다 정도만 알고가면 되나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
mvc pattern과 웹 애플리케이션 계층 구조 비교에 관해
1.mvc pattern과 강의에서 구현하는 웹 애플리케이션 계층 구조(service, controller, domain, repository) 비교 1.1 mvc pattern 과 웹 애플리케이션 계층 구조 1대 1 대응이 가능한건가요?? 1.2 가능하다면, mvc에서 model은 계층구조의 {service, domain, repository}로 대응된다고 봐야하나요? 1.3 가능하지 않다면, model은 그냥 Controller의 매개변수로 들어가는 Model class 의 객체인 model로 보면되는건가요??
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
배포과정 중 포트겹침
안녕하세요 강의 잘 듣고 있습니다 배포과정중에 포트가 80번으로 겹쳐서 오류가 나는데 제가 어디를 확인해봐야 할까요?
-
미해결파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap
basecamp 설치 도와주실수있나요
basecamp 다운로드가 안됩니다.. elementtree 최신버전도 받아보고 했는데베이스캠프가 elementtree 0.07버전 이상과 호환이안된다는 것인가요?
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
skew값이 음수인 feature와 pandas의 get_dummies에 대한 질문입니다.
안녕하세요! 질 좋은 강의에 항상 감사인사 드립니다. 두 가지 질문만 드리겠습니다. 1. 중간에 feature별 skewness 수치를 보고 편향된 분포의 feature들을 log변환 해줄 때 skewness값이 1보다 큰 값의 feature들에만 log를 취하셨는데 skewness값이 음수일 때(왼쪽으로 늘어진 꼬리형태의 분포)의 feature값들은 일부러 log처리를 하시지 않으신건가요?(즉, skewness값이 음수일 때의 feature도 고려하지 않은 것에 대한 이유가 있을까요?!) 2. pandas의 get_dummies를 이용해서 원-핫 인코딩을 하셨는데, get_dummies함수 인자에 원-핫 인코딩할 변수명을 지정안해주신 걸로 보아서는 get_dummies함수가 알아서 각 변수마다 수치형/범주형 변수인지 확인하고 범주형 변수를 선택해 원-핫 인코딩해주는 것 같습니다..(만약 아니라면 말씀해주십시오 ㅜㅜ) 그렇다면 get_dummies인자에 원-핫 인코딩할 변수들을 사전에 지정해준다면 코드가 동작할 때 계산되는 연산량이나 메모리를 좀 줄일 수 있는 방안이 될까요!? #예를 들어, pd.get_dummies(columns=['변수1','변수2']) 이런식으로요! 감사합니다.
-
미해결디자인 패턴 with JAVA (GoF)
강의 자료 pdf
혹시 강의 자료들 pdf파일로 받을 수 있나요?