묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Flutter 앱 개발 실전
[문의] ListView.builder 처리
안녕하세요. 처음부터 List<ContactItem> 으로 데이터를 반환받아서 처리해야 하는 것인지, 아니면 아래 코드에서 분기처리할 방법이 있는지 궁금합니다.import 'package:json_annotation/json_annotation.dart'; import 'package:retrofit_ex2/model/contact_item.dart'; part 'contact_result.g.dart'; @JsonSerializable() class ContactResult { final String status; final String message; final List<ContactItem>? addrinfo; const ContactResult({ required this.status, required this.message, this.addrinfo, }); factory ContactResult.fromJson(Map<String, dynamic> json) => _$ContactResultFromJson(json); Map<String, dynamic> toJson() => _$ContactResultToJson(this); }import 'package:dio/dio.dart'; import 'package:retrofit/retrofit.dart'; import 'package:retrofit_ex2/common/repository/retrofit_url.dart'; import 'package:retrofit_ex2/model/contact_result.dart'; part 'rest_client.g.dart'; @RestApi(baseUrl: RetrofitURL.baseUrl) abstract class RestClient { factory RestClient(Dio dio, {String baseUrl}) = _RestClient; @GET(RetrofitURL.contactData) Future<ContactResult> getContactList(); }class ContactListPage extends StatefulWidget { const ContactListPage({Key? key}) : super(key: key); @override State<ContactListPage> createState() => _ContactListPageState(); } class _ContactListPageState extends State<ContactListPage> { late final RestClient restClient; @override void initState() { Dio dio = Dio(); restClient = RestClient(dio); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( body: FutureBuilder<ContactResult>( future: restClient.getContactList(), builder: (BuildContext context, AsyncSnapshot<ContactResult> snapshot) { if (!snapshot.hasData) { return const Center( child: CircularProgressIndicator(), ); } final ids = snapshot.data as ContactResult; //print(ids.runtimeType); if (ids.status.contains("success")) { final addrinfo = ids.addrinfo as List<ContactItem>; print('addrinfo_count ::: ${addrinfo.length}'); // 15개 for(ContactItem item in addrinfo){ print('${item.idx} | ${item.userNM} | ${item.mobileNO} | ${item.photo}'); // 여기서 출력은 잘 됨. } return ListView.builder( itemCount: addrinfo.length, itemBuilder: (context, index) { // 총 15개의 List 데이터를 출력하기 위해서 어떻게 해야하는지요? return Text(''); }, ); } else { return const Center( child: Text('에러가 발생했습니다.'), ); } }, ), ); } Widget _contactListWidget(ContactItem item) { return Column( children: [ Text(item.idx.toString()), Text(item.userNM), Text(item.mobileNO), Text(item.telNO!), Text(item.photo!), ], ); } }15개의 데이터를 GET으로 가져오는 것까지는 잘 되는 걸 확인했습니다.JSON 데이터 전체는 ContactResult 이고, addrinfo 는 List<ContactItem> 입니다.ContactItem 15개를 ListView.builder 를 이용하여 출력하려고 하는데 어떻게 해야 되는지 몰라 도움 요청드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost 8080/hello 에러
view 환경설정 강의 보면서 하는데 local:8080은 되는데 /hello만 하면 에러페이지가 뜨네요.뭐를 놓친건지 모르겠어요..ㅠ
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
jpql로 여러 값을 가져올때 영속성 컨테스트 값 저장 형태
예를들어 id값이 20~30인 member를 가져올때 영속성 컨테스트안의 1차캐시에는 값들이 어떻게 저장이 되나요? 일단 강의에서는 em.persist 와 em.find 인 경우 1차 캐시에 값을 저장한다고 해서 위와 같이 jpql을 사용했을때 일단 영속성 컨테스트에 값이 저장되는지 확인해보았습니다.영속성 컨테스트에 값이 저장되었다면 commit시 1.flush 발생2.스냅샷과 비교해서 변경감지. 3.변경이있었다면(setter) 쓰기 지연 SQL 저장소에 UPDATE쿼리 생성 및 저장4.쓰기 지연 SQL 저장소에 있는 모든 쿼리를 실행.5.커밋(실제DB반영)위 과정이 일어나서 NAME 값이 changeMember로 변경되어야하는데 확인해보니 실제로 값이 변경되는걸 확인할 수 있었습니다. update 쿼리도 2번일어나는데 그럼 위의 예시에서executeQuery로 jpql 실행 시1차 캐시에 값이 @id Entity20 member(20,memberA)30 member(30,memberB) 이렇게 저장되는 거 같은데 맞나요??(리스트로 가져오면 , 하나씩 풀어서 저장) 그리고 commit시 위에 제가 생각한 과정대로 이해한게 맞을까요?
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
UserView에 id 속성만 undefined로 넘어오는데 이유를 모르겠습니다..
위 스샷처럼 id만 undefined로 넘어옵니다..https://api.hnpwa.com/v0/user/titaniumtown.json해당 주소로 요청을 보내면 제대로 id까지 나오는데.. 이유를 도저히 모르겠습니다... 해당 위치에서 console을 찍었을 때 이미 id는 undefined로 받은 상태입니다
-
미해결
Vue.js에대해 질문 드려용
Vue.js 가1. 해당 컴포넌트 name 설정예시)export default { name: 'BoardComponent', data() { return { newBoardItems: [], } }, mounted() { this.fetchData(); }, methods: { fetchData() { axios.get('/api/board') .then(response => { console.log(response.data); this.newBoardItems = response.data; }) .catch(error => { console.error('Error fetching data:', error); }); }, }}</script>컴포넌트에서 name: 이렇게 지정함2. router 에서 컴포넌트 지정예시) { path: '/classboarddetail/:ClassID', name: 'classboarddetail', component: ClassBoardDetailComponent, props: true },3. 컨트롤러 만들기 (터미널)Vue CLI 설치: Vue CLI를 사용하려면 먼저 설치해야 합니다. 터미널 또는 명령 프롬프트에서 다음 명령어를 실행합니다.bashCopy codenpm install -g @vue/cli프로젝트 생성: Vue CLI가 설치되었으면, 새로운 Vue.js 프로젝트를 생성합니다.bashCopy codevue create my-vue-project위 명령어에서 my-vue-project는 프로젝트 디렉토리의 이름으로 변경할 수 있습니다.프로젝트 생성 과정: vue create 명령어를 실행하면 몇 가지 설정 옵션을 선택할 수 있습니다. 프로젝트 생성에 필요한 기본 설정을 선택하거나, 사용자 정의 설정을 할 수 있습니다.프로젝트로 이동: 생성된 프로젝트 디렉토리로 이동합니다.bashCopy codecd my-vue-project프로젝트 실행: 프로젝트 디렉토리로 이동한 후, 다음 명령어로 개발 서버를 실행할 수 있습니다.bashCopy codenpm run serve4. 쿼리문 작성 -> 해당값을 $data에 담아서 log::debug($data);로 확인 take(숫자)로 제한걸기class BoardController extends Controller{ public function getBoardMainData() { $data = Board::orderBy('created_at', 'desc') ->take(50) ->get(); Log::debug($data); return response()->json($data); } }5. api.php 에서 경로 지정(router에서 해당 url 정한것 안에서 실행시킨다는것을 작성) (컨트롤러에서는 값을 받아옴 json 형태)import ClassBoardDetailComponent from '../components/ClassBoardDetailComponent.vue'; { path: '/classboarddetail/:ClassID', name: 'classboarddetail', component: ClassBoardDetailComponent, props: true },6. axios 처리 component 에서 methods 생성 후 axios 처리 ('/api/board') 컨트롤러에서 쿼리 실행 .then 안에 console.log로 확인 -> mounted()실행 시키겠는 경로 설정 (호출, 리로드 하면서 안에 담김)export default { name: 'BoardComponent', data() { return { newBoardItems: [], } }, mounted() { this.fetchData(); }, methods: { fetchData() { axios.get('/api/board') .then(response => { console.log(response.data); this.newBoardItems = response.data; }) .catch(error => { console.error('Error fetching data:', error); }); }, }}7. Component 에서 for 문 돌리는 item 에 Boardercontents item 을 넣어줌 {{ }}예시)<dd class="comment_count"><i>추천수 {{ item.BoardRecommended }}</i><span>{{item.Boardgoodcount}}</span> 크롬 콘솔에서 더미데이터 이름 확인 후 기입집에가서 터미널 하나 더 열어서 npm run watch1. >npm run watch2. >php serve artisan이런 흐름이 맞나용
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
외래키를 지양하라는 질문에 대한 궁금증
외래키 사용을 지양하라는 내용이 있어서 링크된 글을 읽어봤는데 궁금증이 있습니다. 외래키를 지양한다면 PK 값을 다른 테이블에 넣으면서 그 값으로 조인을 사용하는건가요?외래키를 지양했을 때 성능상의 이점은 알겠는데 결국 데이터 정합성 부분에서 문제가 발생합니다. RDB에서 데이터 정합성이 깨지면 사용하는 의미가 없다고 하는데 이부분에선 어떻게 생각하시나요?외래키를 안쓸경우 JPA에서 ManyToOne같은 메소드도 사용하지 않는건가요?그리고 해당 주장에 대해 반박하는 아래의 링크도 있는데 이 의견은 어떠신가요?https://gdsc-university-of-seoul.github.io/foreign-key/
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
예외처리 질문
try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } 이 코드를 실행하면 왜 밑에있는 출력문이 10개가 나오는지 궁금합니다 HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool -- HikariPool-1 - Added connection conn1: url=jdbc:h2:tcp://localhost/~/test user=SA
-
미해결동영상으로 배우는 Catia Sketcher Workbench (Catia V5-6R2017)
학습 첨부파일 확인 불가
안녕하세요 수강생입니다.현재 첨부파일이 보이지 않아 다운이 불가합니다확이 부탁드립니다.
-
해결됨초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
Ch08 / dalle-2모델 사용관련..
안녕하세요 추가적으로 궁금한점이 있어서 질문드립니다.ch08파일에 01번 버전이 2가지가 있는데요.01_dalle_exp 파일의경우 처음에는 에러가 났다가 에러잡고 사용하니까 정상출력이되는데..01_dalle_exp_NewVersion 파일의 경우 client = openai.OpenAI(api_key = API_KEY)AttributeError: module 'openai' has no attribute 'OpenAI' 라고 나오는데.. 같은 key값을 활용해도 뉴버전은 저렇게 나옵니다. 이유가 무엇인지 궁금하네요.
-
해결됨초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
Ch08-02~03 파일 / 인스타그램 IP차단 과련..
안녕하세요어제 Ch07번은 해결했는데요.... Ch08의 인스타그램의 경우 봇으로 판단하는지 차단시키는데 해결방안이 무엇인지 궁금합니다. 코드는 사용예제 코드랑 같고 02~03 파일 둘다 차단관련 내용이 나옵니다.오류 내용입니다.ProxyAddressIsBlocked: Instagram has blocked your IP address, use a quality proxy provider (not free, not shared)Traceback:File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch08\03_instabot_app.py", line 136, in <module> main()File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch08\03_instabot_app.py", line 132, in main uploadinstagram(st.session_state["description"])File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch08\03_instabot_app.py", line 24, in uploadinstagram cl.login(st.session_state["instagram_ID"], st.session_state["instagram_Password"])File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch08\ch08_env\lib\site-packages\instagrapi\mixins\auth.py", line 441, in login logged = self.private_request("accounts/login/", data, login=True)File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch08\ch08_env\lib\site-packages\instagrapi\mixins\private.py", line 542, in private_request raise eFile "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch08\ch08_env\lib\site-packages\instagrapi\mixins\private.py", line 527, in private_request self._send_private_request(endpoint, **kwargs)File "C:\Users\sosgx\Desktop\Project\python_Project_OpenAi\inflearn_chatGPT-main\ch08\ch08_env\lib\site-packages\instagrapi\mixins\private.py", line 447, in _send_private_request raise ProxyAddressIsBlocked(**last_json)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
application.properties 안에 작성하는 것이 아니라 yml 파일로 두는 것인가요?
안녕하세요~! 질문이 있어 이렇게 남깁니다. 다른 답글을 보니 다양한 설정 방법이 있다라는 말씀을 남겨주셨는데 제가 다운 받은 springboot 에는 application.properties가 따로 있는데 이것과 병행해서 사용해도 문제가 없는 건가요? 아니면 환경설정을 하나로만 유지해야 되는건가요?
-
해결됨Flutter 앱 개발 기초
에뮬레이터 관련 질문입니다
처음엔 이 바가 보였는데 어느순간 부터 안보이더라구요.있던게 안보이니 괜히 불안해서 다시 보이게 하는법을 알고싶습니다...;;오픈 카카오톡으로 문의주시면 더 빠르게 답변 받으실 수 있어요 :)
-
해결됨최신 딥러닝 기술과 객체인식
yolov4 bifpn
안녕하세요 yolov4 bifpn에서 input과 다른 여러 scale의 이미지를 합치는데 resize해서 concat하는 건가요 아니면 그냥 element sumwise하는건가요?!
-
미해결다양한 사례로 익히는 SQL 데이터 분석
pandas 연계시 오류.....
(아나콘다를 깔고나서 새 파일에서 뭘 수정하려고하면 바로 연결이 끊기는 문제가 생겨 주피터 노트북으로 설치하였습니다. 필요한 라이브러리들은 모두 따로 설치하였습니다.)버전은 아래와 같습니다.오류가 발생하는 부분은 이 부분인데query문이 있는 셀의 전체 오류문은 아래와 같습니다--------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) Cell In[12], line 4 1 query = """ 2 select * from nw.customers 3 """ ----> 4 df = pd.read_sql_query(sql=query, con=postgres_engine) 5 df.head(10) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\sql.py:485, in read_sql_query(sql, con, index_col, coerce_float, params, parse_dates, chunksize, dtype, dtype_backend) 482 dtype_backend = "numpy" # type: ignore[assignment] 483 assert dtype_backend is not lib.no_default --> 485 with pandasSQL_builder(con) as pandas_sql: 486 return pandas_sql.read_query( 487 sql, 488 index_col=index_col, (...) 494 dtype_backend=dtype_backend, 495 ) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\sql.py:851, in pandasSQL_builder(con, schema, need_transaction) 848 raise ImportError("Using URI string without sqlalchemy installed.") 850 if sqlalchemy is not None and isinstance(con, (str, sqlalchemy.engine.Connectable)): --> 851 return SQLDatabase(con, schema, need_transaction) 853 warnings.warn( 854 "pandas only supports SQLAlchemy connectable (engine/connection) or " 855 "database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 " (...) 858 stacklevel=find_stack_level(), 859 ) 860 return SQLiteDatabase(con) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\sql.py:1576, in SQLDatabase.__init__(self, con, schema, need_transaction) 1574 self.exit_stack.callback(con.dispose) 1575 if isinstance(con, Engine): -> 1576 con = self.exit_stack.enter_context(con.connect()) 1577 if need_transaction and not con.in_transaction(): 1578 self.exit_stack.enter_context(con.begin()) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\base.py:3268, in Engine.connect(self) 3245 def connect(self) -> Connection: 3246 """Return a new :class:`_engine.Connection` object. 3247 3248 The :class:`_engine.Connection` acts as a Python context manager, so (...) 3265 3266 """ -> 3268 return self._connection_cls(self) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\base.py:145, in Connection.__init__(self, engine, connection, _has_events, _allow_revalidate, _allow_autobegin) 143 if connection is None: 144 try: --> 145 self._dbapi_connection = engine.raw_connection() 146 except dialect.loaded_dbapi.Error as err: 147 Connection._handle_dbapi_exception_noconnection( 148 err, dialect, engine 149 ) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\base.py:3292, in Engine.raw_connection(self) 3270 def raw_connection(self) -> PoolProxiedConnection: 3271 """Return a "raw" DBAPI connection from the connection pool. 3272 3273 The returned object is a proxied version of the DBAPI (...) 3290 3291 """ -> 3292 return self.pool.connect() File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:452, in Pool.connect(self) 444 def connect(self) -> PoolProxiedConnection: 445 """Return a DBAPI connection from the pool. 446 447 The connection is instrumented such that when its (...) 450 451 """ --> 452 return _ConnectionFairy._checkout(self) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:1269, in _ConnectionFairy._checkout(cls, pool, threadconns, fairy) 1261 @classmethod 1262 def _checkout( 1263 cls, (...) 1266 fairy: Optional[_ConnectionFairy] = None, 1267 ) -> _ConnectionFairy: 1268 if not fairy: -> 1269 fairy = _ConnectionRecord.checkout(pool) 1271 if threadconns is not None: 1272 threadconns.current = weakref.ref(fairy) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:716, in _ConnectionRecord.checkout(cls, pool) 714 rec = cast(_ConnectionRecord, pool._do_get()) 715 else: --> 716 rec = pool._do_get() 718 try: 719 dbapi_connection = rec.get_connection() File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\impl.py:169, in QueuePool._do_get(self) 167 return self._create_connection() 168 except: --> 169 with util.safe_reraise(): 170 self._dec_overflow() 171 raise File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\util\langhelpers.py:146, in safe_reraise.__exit__(self, type_, value, traceback) 144 assert exc_value is not None 145 self._exc_info = None # remove potential circular references --> 146 raise exc_value.with_traceback(exc_tb) 147 else: 148 self._exc_info = None # remove potential circular references File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\impl.py:167, in QueuePool._do_get(self) 165 if self._inc_overflow(): 166 try: --> 167 return self._create_connection() 168 except: 169 with util.safe_reraise(): File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:393, in Pool._create_connection(self) 390 def _create_connection(self) -> ConnectionPoolEntry: 391 """Called by subclasses to create a new ConnectionRecord.""" --> 393 return _ConnectionRecord(self) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:678, in _ConnectionRecord.__init__(self, pool, connect) 676 self.__pool = pool 677 if connect: --> 678 self.__connect() 679 self.finalize_callback = deque() File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:902, in _ConnectionRecord.__connect(self) 900 self.fresh = True 901 except BaseException as e: --> 902 with util.safe_reraise(): 903 pool.logger.debug("Error on connect(): %s", e) 904 else: 905 # in SQLAlchemy 1.4 the first_connect event is not used by 906 # the engine, so this will usually not be set File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\util\langhelpers.py:146, in safe_reraise.__exit__(self, type_, value, traceback) 144 assert exc_value is not None 145 self._exc_info = None # remove potential circular references --> 146 raise exc_value.with_traceback(exc_tb) 147 else: 148 self._exc_info = None # remove potential circular references File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\pool\base.py:898, in _ConnectionRecord.__connect(self) 896 try: 897 self.starttime = time.time() --> 898 self.dbapi_connection = connection = pool._invoke_creator(self) 899 pool.logger.debug("Created new connection %r", connection) 900 self.fresh = True File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\create.py:637, in create_engine.<locals>.connect(connection_record) 634 if connection is not None: 635 return connection --> 637 return dialect.connect(*cargs, **cparams) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\sqlalchemy\engine\default.py:616, in DefaultDialect.connect(self, *cargs, **cparams) 614 def connect(self, *cargs, **cparams): 615 # inherits the docstring from interfaces.Dialect.connect --> 616 return self.loaded_dbapi.connect(*cargs, **cparams) File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\psycopg2\__init__.py:122, in connect(dsn, connection_factory, cursor_factory, **kwargs) 119 kwasync['async_'] = kwargs.pop('async_') 121 dsn = _ext.make_dsn(dsn, **kwargs) --> 122 conn = _connect(dsn, connection_factory=connection_factory, **kwasync) 123 if cursor_factory is not None: 124 conn.cursor_factory = cursor_factory UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 63: invalid start byte
-
해결됨Next + React Query로 SNS 서비스 만들기
x.com에 모달창에 url을 적용시킨 이유가 있을까요?
x.com 을 보면 로그인도 그렇고 게시글 올릴때도 그렇고 모달창이 뜰때마다 그냥 화면에 띄우는 방식이 아니라 저렇게 모달창을 띄울수 있는 url 따로 만든 이유가 뭘까요? 관리가 더 편해서일까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 :)
안녕하세요 선생님 😀강의 잘 보고 있습니다.저는 count 변수를 두고 값을 저장하고 i값을 변경하여 사용하였는데 이렇게 작성해도 되는지 궁금하여 질문을 올리게 되었습니다. 또 아래와 같이 for문 안에 있는 i 값을 변경해도 괜찮은지도 궁금합니다! function solution(k: number, arr: number[]): number { let sum: number = 0; let count: number = 0; let max: number = 0; for (let i = 0; i < arr.length; i++) { if (count < k) { sum += arr[i]; count++; } else { if (max < sum) { max = sum; } i = i - count; count = 0; sum = 0; } } return max; }감사합니다
-
미해결리눅스 쉘 스크립트 마스터
BASH_REMATCH 변수가 어디서 나온거죠?
관련 답변 읽어보았으나 여전히 이해가 안되서 질문드립니다. 어디서 BASH_REMATCH 변수가 나오는건지 모르겠습니다.$LANG =~ $locale이 되면 자동으로 BASH_REMATCH가 생성되는건지 어쩐건지 설명 없이 바로 그냥 저 변수에 2번째 요소와 1번째 요소를 호출하는게 이해가 안됩니다. 그리고 =~도 무슨 말씀인지 모르겠습니다. 대체로 명령어 실행했을 때 현상 만을 설명해주시고 원리 설명이 없어서 이해가 너무 어렵습니다. 참고할만한 정규표현식 관련 사이트 같은게 있으면 추천 좀 부탁드립니다.
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
서보모터 질문
안녕하세요 강사님! 아래 서보모터 관련 질문을 썼던 학생입니다:) 같은 문제로 여러 번 질문드려 죄송합니다ㅠㅠ강사님께서 말씀 주신대로 pwm 파형을 오실로스코프로 찍어봤는데 동작펄스폭 내에서 제대로 출력되고 있었습니다. 혹시 몰라 버튼을 누를때마다 펄스폭이 바뀌는 프로그램을 넣어서 실험해봤을 때도 펄스가 제대로 출력되고 있었습니다. 서보모터에 들어가는 전원 5v도 제대로 들어가는 것도 확인했는데, 서보모터가 동작하지 않습니다ㅠㅠ 근데 해당 서보모터를 아두이노 예제 프로그램으로 돌려보면 문제없이 돌아갑니다. 무엇이 문제인지 예상되는 원인이 있을까요?? 저는 아무리 생각해봐도 뭐가 문제인지 모르겠습니다ㅠㅠ 모터에 전원과 pwm만 제대로 인가되면 동작하는 것이 아닌가요? 사용하는 서보모터는 영상과 같은 sg90입니다!
-
미해결스프링 부트 - 핵심 원리와 활용
IntelliJ무료버전 톰캣 실행이 안됩니다.
Smart Tomcat을 사용해서 실행하는데java.io.FileNotFoundException: C:\Users\...\smart-tomcat\conf\server.xml (지정된 파일을 찾을 수 없습니다) 발생합니다.경로가 Catalina base에 자동으로 채워지는 부분이었어요..어떻게해야될까요?
-
해결됨네트워크, 그림으로 이해하자(2022ver.)
TCP 흐름 제어에서 슬라이딩 윈도우 기법 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.슬라이딩 윈도우 기법에 대해 몇 가지 질문 드리고자 합니다.A의 윈도우 크기 250은 B의 윈도우 크기가 250이여서 맞춰져서 그런 건가요? 아니면 그냥 가정으로 250이라고 한 건가요?확인 응답이 ACK 101인 이유는 100 byte 데이터 크기를 보냈기 때문에 이에 +1 값을 보낸 것이라 이해하면 될까요?A에서 보낸 데이터 50 바이트를 B가 버퍼에 저장하고, 어플리케이션 프로세스에서 50바이트를 처리했다고 했는데, 이는 A로부터 마지막으로 받은 데이터를 사용된 게 아닌 그보다 먼저 버퍼에 저장된 데이터를 사용했다고 이해하면 될까요?어플리케이션 프로세스가 사용했다고 말씀하신 후 윈도우 크기가 이동되었는데, 좌측 경계선은 저장되면 왼쪽에서 오른쪽으로 이동되고, 데이터가 사용되어 오른쪽 경계선이 오른쪽으로 갔다고 이해하면 될까요? 그리고, TCP 혼잡 제어 파트에서 오타가 있습니다. 0:36 시간대에 '이를 통하여 혼자 회피를 합니다' 라고 나와있는데 제가 이해한 바로는 '혼잡 회피'인 것 같은데 맞나요?