묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-A, bfs dfs 로직에 대한 질문
안녕하세요, 선생님. 이번 문제와 bfs, dfs 전반적 로직 관련해서 질문있습니다!!일단 이번 문제 정답 코드는 다음과 같습니다.http://boj.kr/f3c01a8b5af34478acc8344f21094f9a크게 바뀐거 없이, continue 조건문에서 범위체크하는 조건을 한번 빼봤습니다. 그런데도 정답에는 문제가 없더라구요.bfs든 dfs든 시작점에서 시작해서 상 우 하 좌 순으로 돌면서 탐색을 진행할텐데, 항상 경우에 따라 이차원배열의 모서리부근에서는 out of bound위험이 있고,이걸 그냥 복잡하게 고민안하고, 위험을 최소화 하기 위해서!bound -> continue 조건을 깔고 들어가는걸로 이해하고있습니다. 그런데, 위와같은 코드의 경우에는, 조건을 안걸면 분명히(-1, 0) 다시말해 out of bound 오류가 발생해야 할거같은데, 정답처리되는 이유를 잘 모르겠습니다. +) 또한, 강의중에 꼭 범위체크 뒤에 ||로 map에서 0이면 continue를 걸어야 한다고 하셨는데,이 이유도 왜 그런지 잘 모르겠습니다. 저희가 항상 시작할 때,map 전체를 0으로 초기화.조건에 맞게 map만들기.dfs/bfs이런식으로 진행되는데, 범위를 벗어난 지역은 어차피 visited도 false, 맵에도 0으로 표시되는게 보장될텐데,순서를 바꾼다고 해서 문제가 발생하는 일이 일어나나요?=> 이게 범위 관련 이슈때문에 범위를 맨 앞으로 빼야할것 같다는 생각이 들었습니다... 두번째로, bfs dfs 구현상 질문입니다.문제들의 경우에 따라서, if ~~ continue;if ~~ continue를 두번씩 사용하시는 경우를 봤습니다.(이번문제도 그렇습니다)이건 continue의 특성상, 아래라인에 else if를 안걸어도(컴파일러가 알아서 해줄지는 모르겠지만)else if를 거는듯한 최적화의 효과를 얻을 수 있겠다고 보이긴 합니다. 그런데, 저런식으로 continue문을 여러줄에 걸쳐서 쓴다는건,if ~~~ continue; (1조건)if ~~~ continue; (2조건)이렇게 1조건으로 필터링 하고, 1조건에 안걸리는 (여집합) 대상들에 대해 2차적인 필터를 하는걸로 생각이 드는데,"이제부터 항상 continue관련 조건은 다 ||로 엮어서 한 if문으로 처리한다" 라고 일반화하고 진행해도 괜찮을까요?
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
데이터 로그 설계하기 (검색 만족도)
■ 검색의 목적: 사용자가 검색 후 원하는 결과를 찾았다고 느끼는 비율 - 성공 기준: 사용자가 검색 후 실제로 원하는 결과를 클릭 하거나, 주문한 비율 측정 1. 검색 만족도1) 클릭률 (CTR)① 분자: 검색 결과 클릭 수- event_name: click_search_result_menu- parameterrestaurant_idrestaurant_namemenu_idmenu_namemenu_pricesearch_result_menu_sequencesession_id② 분모: 검색 결과 수- event_name: view_serch_result- parametersession_idserch_result_countserch_keyword2) 검색을 통한 주문 전환율 (CVR)① 분자: 검색을 사용해 주문한 수- event_name: click_payment- parameteruse_search:truerestaurant_idrestaurant_namepayment_type: cardsession_id② 분모: 검색을 통해 레스토랑 상세 화면에 진입한 수- evnet_name: view_restaurant- parametersession_idrestaurant_idrestaurant_nameuse_search:true
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 7:16 그림 나오는 부분에서 질문입니다!
WAS에서 request, response 객체를 만들어서 서블릿의 파라미터로 넘기는건 이해했는데 여기서 request 객체엔 요청 정보가 담겨있고 response 객체는 빈 객체인 상태인가요? 한 마디로 응답 메세지는 서블릿 컨테이너나 혹은 종료 후 다시 WAS 서버에 response 객체가 도달했을 때 정보가 들어간다고 보면 될까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-N 질문있습니다.
http://boj.kr/907e9f4775da48d8bb4c13e5d16d0c21결국 그럼 중앙이 루트좌우 나눠서 그곳의 중앙이 또 parent 이걸 무한히 반복한다고 생각햇고 BFS를 레벨별로 묶어서 처음에는 root를그다음에는 root에 연결된 자식을그 다음에는 그것에 연결된 자식들을 출력하는 방식으로 풀었습니다. 하지만 출력 초과가 나와서 어떤 문제가 있는지 궁금합니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
리프레시 토큰이 만료될 때 AlertDialog를 그리고 싶습니다.
리프레시 토큰이 만료될 때 바로 login screen으로 이동하는 것이 아니라 다이얼로그를 띄운 후 확인 버튼을 누르면 화면 이동을 하고 싶은데 이 showDialog를 어디서 해야 할지 난관에 빠졌습니다. 현재는 리프레시가 만료되면dio interceptor에서 authProvider의 logout() 을 통해userMeProvider의 logout()을 호출해 state를 null로 만들고,goRouter가 state가 null이면 바로 로그인 스크린으로 redirect 시키고 있는데이 흐름이 뷰에서 이루어지는 것이 아니라서 context가 필요한 showDialog를 어느 부분에서 구현해야 할지 감이 안 잡힙니다.state를 null로 만들기 전에 다이얼로그를 띄우려면AuthProvider에서 userMeProvider의 logout를 호출하기 전에 실행되어야 할 것 같기도 한데 logout() { // showDialog()??? ref.read(userMeProvider.notifier).logout(); }결국 view단에서 호출하는 것이 아니기 때문에 context를 얻어올 방법이 떠오르지 않네요...
-
미해결타입스크립트 입문 - 기초부터 실전까지
npm i 설치 이유 문의
안녕하세요 강의 잘 듣고 있습니다.양질의 강의 항상 감사드립니다. 첫 번째 실습 프로젝트 소개, 환경 구성, 코드 분석 강의 1:22 에서 npm i 설치하는 이유가 무엇일까요? 강의 시작할 때 node js를 윈도우에 설치하였는데(npm 최신 버전 설치) vscode 터미널로 이동해서 npm i를 하는 이유가 궁금하여 질문드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MessageSourceTest 실행시 오류 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MessageSourceTest 파일을 실행했을 때 오류가 발생합니다.Expecting: <"??">to be equal to: <"안녕">but was not.Expected :"안녕"Actual :"??"<Click to see difference>org.opentest4j.AssertionFailedError: Expecting: <"??">to be equal to: <"안녕">but was not.at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)at hello.itemservice.message.MessageSourceTest.helloMessage(MessageSourceTest.java:20)at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)2024-08-16 16:42:56.803 INFO 7205 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'MessageSourceTest > helloMessage() FAILED org.opentest4j.AssertionFailedError at MessageSourceTest.java:202 tests completed, 1 failed> Task :test FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///Users/yujihun/Desktop/message-start/build/reports/tests/test/index.html* 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 3s4 actionable tasks: 2 executed, 2 up-to-date도저히 원인을 모르겠어요
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
데이터 로그 설계하기 (동네 맛집)
1. 추천 메뉴 영역 (이런 음식 어때요)1) 클릭률 (CTR)① 분자: 동네 맛집 영역 클릭 수- event_name: click_home_recommend_restaurant- parameterrestaurant_idrestaurant_namerecommend_restaurant_sequencerestaurant_distancerestaurant_scoresession_id② 분모: 홈 화면 진입 수- event_name: view_home- parametersession_idrestaurant_idrestaurant_name2) 동네 맛집 영역을 통한 주문 전환율 (CVR)① 분자: 동네 맛집 영역을 사용해 주문한 수- event_name: click_payment- parameteruse_home_recommend_restaurant:truerestaurant_idrestaurant_namepayment_type: cardsession_id② 분모: 동네 맛집 영역을 통해 레스토랑 상세 화면에 진입한 수- evnet_name: view_restaurant- parametersession_idrestaurant_idrestaurant_nameuse_home_recommend_restaurant:true 추가 질문은 아래와 같습니다. click_home_recommend_restaurant 이벤트에서 recommend_restaurant_sequence를 파라미터로 잡았는데요, 사실 관리자가 임의로 지정한 순서가 아닌 이상 거리상 가까운 순서나 추천순 같은걸로 노출 될텐데 해당 파라미터가 필요한지 의문입니다.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
hub.pull시에 API KEY가 필요하다고 경고가 나옵니다.
.env 파일에 OPENAI_API_KEY를 정확히 기입했는데 위와 같은 오류가 발생하네요. 따로 추가해주어야하는 API KEY가 있는것일까요?
-
해결됨모두의 깃 & 깃허브
e37: no write since last change (add ! to override) 에러 메세지
mac에서 vi 를 cat으로 고쳤다가 다시 vi쓰려고git config --global core.editor "vim" 입력했습니다git log 입력 후 아무것도 안하고 다시 명령어 창으로 가려고 :q를 누르면 계속e37: no write since last change (add ! to override)메세지가 뜨는데 cat 으로 하기전에는 강제종료 안해도 되던데 왜 그런건가요? swp와 같은 백업파일도 계속 만들어지고 혹시 되돌릴순 없나요?
-
미해결김영한의 실전 자바 - 중급 1편
pdf 학습자료 5.열거형 문제풀이2 정답코드오류
[질문 내용]5.열거형 pdf 파일 32페이지에 문제풀이2의 정답 코드에 findByCode 메서드의 실행블럭 첫번째 줄에 HttpStatus[] values = values(); 코드가 누락된거같아요
-
미해결리눅스 커널 해킹. A부터 Z까지
CTF 참가 시 전문 분야
안녕하세요! 보통 그룹으로 참가을 하면, 네트워크, 시스템, 웹 파트 등 각자 전문 영역들이 있는건지 궁금합니다!
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
데이터 로그 설계하기 (이런 음식 어때요)
이런 음식 어때요의 로그입니다. 1. 추천 메뉴 영역 (이런 음식 어때요)1) 클릭률 (CTR)① 분자: 추천 메뉴 클릭 수- event_name: click_home_recommend_menu- parameterrecommend_menu_idrecommend_menu_namerestaurant_idrestaurant_namesession_id② 분모: 홈 화면 진입 수- event_name: view_home- parametersession_idrecommend_menu_idrecommend_menu_name2) 추천 메뉴 영역을 통한 주문 전환율 (CVR)① 분자: 추천 메뉴 영역을 사용해 주문한 수- event_name: click_payment- parameteruse_home_recommend_menu: truerecommend_menu_idrecommend_menu_namerestaurant_idrestaurant_namepayment_type: cardsession_id② 분모: 추천 메뉴 영역을 통해 레스토랑 상세 화면에 진입한 수- evnet_name: view_restaurant- parametersession_idrestaurant_idrestaurant_nameuse_home_recommend_menu: truerecommend_menu_idrecommend_menu_name추가 질문은 아래와 같습니다.1) 생각보다 여러 이벤트에 같은 파라미터들을 수집해야하는 경우들이 많아 보이는데, 그럼에도 불구하고 동일한 파라미터를 계속 수집 해야하는걸까요?2) 해당 추천의 경우 보통 개인화되서 노출되는걸로 알고있습니다. 개인화 점수를 판단하고자 할 때는 어떻게 로그를 쌓고 계산해야하나요?
-
해결됨웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
UTF8ToString 인코딩 질문있습니다.
#include <iostream> #include <string> #include <emscripten.h> #include <emscripten/bind.h> using namespace std; EM_JS(void, call_js, (const string subject, const string msg), { console.log("Subject: js " + subject, UTF8ToString(msg)); console.log("Pointer: js " + msg, UTF8ToString(subject)); jsFunction(UTF8ToString(subject), UTF8ToString(msg)); }); bool my_calls() { const string subject = "제목"; const string msg = "메세지"; cout << "Subject: cpp " << subject << "\nPointer: cpp " << msg << endl; call_js(subject, msg); return true; } EMSCRIPTEN_BINDINGS(my_module) { emscripten::function("callJs", &my_calls); }UTF8ToString으로 변환할때 포인터와 length로 변환하야하나요?string 타입을 직접 utf8로 변환해도 되는것 같은데 해당방식으로 문제가 생길 수 있는지 궁금합니다.
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
강사님 15분 17초 쯤 질문있습니다
인증된 사용자는 세션에 저장했다면 세션으로 부터 가져와서 시큐리티 컨텍스트에 저장한다라고 말씀해주셨는데요제가 이해한게 맞는건가싶어서요=> 인증된 사용자는 세션에 (시큐리티 컨텍스트를) 저장했다면 세션으로 부터 (시큐리티 컨테스트를) 가져와서 시큐리티 컨텍스트(홀더에) 저장한다이렇게 이해했는데 맞는건가요?
-
미해결
How to Style a Puffer Jacket
When the chilly winter weather rolls in, it's time to reach for your most comfortable jacket. But keeping warm doesn't mean you have to give up on looking stylish. Leather puffer jackets are a great way to stay cozy while still keeping up with the latest trends. Today, let's talk about how to put together a great outfit with a puffer jacket, focusing specifically on leather puffer jackets, which have been getting a lot of attention in the fashion world. Whether you're getting ready for a fun night out or just going for a relaxed daytime look, this guide will help you feel confident and stylish in your puffer jacket.Understanding Puffer JacketsLet’s talk about leather puffer jackets. There are so many different styles and sizes to choose from. You can find some that are light and great for layering, while others are heavy and perfect for really cold days. Some are short, which adds a fun touch to your outfit, and others are long, keeping you super warm.Leather puffer jackets are a really cool and stylish choice. They have the warmth of a regular puffer jacket but also the edgy look of leather. If you're into best leather jackets, you definitely need to have a leather puffer jacket in your closet. The mix of textures really adds something special to your outfit, making it stand out even more.Casual Everyday LooksLooking for a relaxed style? Try a puffer jacket. Leather ones add cool to your look. Wear with jeans and a t-shirt. Add sneakers and you're good to go. You can layer it over a hoodie for extra warmth and style. The hoodie peeking out gives a casual feel. Finish with a beanie or baseball cap for a cool look.Sporty and Athleisure OutfitsAthleisure is all about looking good and feeling comfy. Leather puffer jackets are perfect for this. You can wear it with leggings and running shoes for a sporty look. This outfit is great for running errands or hanging out with friends. It's stylish and cozy.Chic Urban StylesDo you want to make your leather puffer jacket look even cooler? Try a stylish city look. Wear it with skinny jeans and ankle boots for a day out. The slim jeans balance out the bulky jacket for a trendy outfit. Add a bold bag and big sunglasses for extra glamour. This outfit is great for shopping or brunch with friends. It's sure to get attention wherever you go.Office or Business CasualLeather puffer jackets can be worn to the office. You can wear it with a blazer. This keeps you warm and looks professional. Pair it with pants and a simple blouse. Keep your outfit sleek and polished. Choose a black or navy jacket. These colors work well in a professional setting. Wear heeled boots or loafers. This outfit is perfect for chilly mornings. Look put-together while staying warm.Date Night or Evening OutfitsLeather puffer jackets aren't just for the day. You can also wear them at night. Try wearing it with a dress or skirt for a date night. The mix of the girly dress and cool jacket looks amazing. Choose a dress that goes well with the jacket's bulkiness. You can pick a tight or flowy dress, depending on your style. Wear heeled boots or pumps to complete the outfit. This look is great for those who want to mix elegance with an edgy vibe. For a night out with friends, wear the jacket with stylish pants and a chic blouse. The jacket adds warmth and keeps your outfit trendy. Finish off with some bold jewelry and a clutch bag.Choosing the Right Puffer JacketStyling leather puffer jackets is important. You have to find a suitable one. A bulky jacket can overwhelm you. A well-fitted jacket enhances your silhouette. Think about the color of your jacket. Black is classic, but try other colors. Navy, burgundy, and metallic shades are great options. They add interest to your outfit. Consider the length of the jacket. Cropped jackets are playful and youthful. They're great for layering over jeans or skirts. Full-length jackets offer more coverage for colder days.Accessorizing Your Puffer JacketAccessories play a crucial role in completing an outfit, especially when it comes to leather puffer jackets. Choosing the perfect accessories can really take your whole outfit to the next level.You can start by adding scarves and hats to your ensemble. A chunky knit scarf not only adds warmth but also brings in some texture, while a beanie or fedora can help showcase your personal style.When it comes to bags, it's important to choose one that complements the style of your jacket. For a more laid-back look, a crossbody bag or a backpack can work really well. However, if you're aiming for a chic and urban vibe, a structured handbag can add a touch of sophistication to your outfit.Footwear also plays a crucial role in completing the look when wearing a leather puffer jacket. You have a variety of options to choose from. For a casual appearance, sneakers or ankle boots are great choices. If you're going for a more refined look, consider heeled boots or loafers. The key is to select shoes that align with the overall vibe you're aiming for.ConclusionLeather puffer jackets are a great addition to your wardrobe, offering both style and functionality. They can be dressed up for a night out or dressed down for a casual day of running errands. It's important to find a jacket that fits well and suits your personal style. Feel free to get creative with different outfits and accessories to make the look your own.
-
미해결
10 Steps to Finding the Perfect Franchise for Sale
Finding the right franchise to buy can be tricky and demands a careful research, good planning, along with smart choices. Whether you're looking at food, retail, or IT franchise business, picking the right business is important for long-term success. This blog will take you through ten simple steps to help you find the best franchise that matches your interests, goals, and budget. With the right approach, you can choose a franchise that fits your needs and has the potential to grow and succeed.1. Evaluate Your Interests and SkillsThe first step in finding the perfect franchise is to honestly look at what you like and what you are good at. Choosing a franchise that matches your passions and skills will not only make you more likely to succeed but also make running the business more enjoyable.When you pick a business that fits your interests, you stay motivated and dedicated. Using your skills means you can run the franchise more efficiently and effectively. Plus, if you are passionate about the business, you will find it easier to stick with it for the long haul. To start, make a list of your hobbies and interests. Think about your strengths and weaknesses. Consider your past work experience and how it might apply to different franchise options.2. Conduct Market ResearchBefore buying an IT support franchise, it's important to understand the market. Market research helps you find out what opportunities are available and what challenges you might face. It also helps you understand what customers need and who your competitors are.Knowing about market trends helps you make better decisions. It also shows you possible risks and chances in the industry. Understanding your competition helps you come up with strategies to make your franchise stand out. To get started, look at the market trends and how people behave in your area. Check if there's a demand for the products or services offered by the franchises you're considering. Also, study the competition and see if there are any gaps in the market you can fill.3. Look for Franchise OptionsThere are thousands of franchise opportunities across different industries. It's important to look at a variety of options to find the one that best fits your goals and financial situation. Looking for many choices gives you a wider perspective on what's available and helps you compare different franchise models to find the best match. It also helps you find a niche that fits your strengths and interests.Start by researching different industries and types of franchises. Use online directories and go to franchise expos to see what’s out there. Request information from several franchisors so you can compare their offers and choose the best one for you.4. Assess Financial RequirementsBuying a franchise requires a lot of money, including initial fees, ongoing royalties, and other costs. It's important to understand these financial requirements and see if you can afford them. Knowing the costs helps you plan your budget and makes sure that you have enough money to run the business. It also helps you secure funding and evaluate the potential return on your investment. Always look at the franchise disclosure document (FDD) for detailed financial information. Calculate the total investment needed, including working capital. Check out financing options like loans or partnerships to help cover the costs.5. Investigate the Franchisor's ReputationThe reputation of the franchisor is key to the success of your franchise. A well-respected franchisor offers a strong brand, good support, and a good business model. A well-known brand attracts customers and builds trust, while reliable support helps you run the business smoothly. A reputable franchisor also reduces the risk of fraud or unethical practices. Always read reviews and testimonials from current and former franchisees. Research the franchisor’s history and track record. Reach out to franchisees and ask them about their experiences with the franchisor to get a better understanding of what to expect.6. Understand the Franchise AgreementThe franchise agreement is a legal contract that lays out the rules and conditions of the franchise relationship. It's very important to fully understand this document before you agree to anything. Understanding the agreement protects your rights and interests under the law. It helps you follow the franchisor's rules and avoid disagreements. The agreement also explains what you must do, any limits on your actions, and how the franchise can end.To make sure you understand everything, hire a franchise lawyer to look over the agreement. Talk to the franchisor about any parts that aren’t clear or worry you. Make sure the agreement matches what you expect and what you want for your business.7. Evaluate Training and SupportFranchisors usually give training and help to franchisees to help them succeed. Checking how good this support is can make a big difference to your franchise’s success. Good training helps you learn what you need to run the franchise well. Ongoing help from the franchisor makes sure things run smoothly and deals with problems. Training and support also help you change how you do things to keep up with new ideas and what customers want. Look at what training the franchisor gives and how good their support is. Talk to other franchisees about what training was like for them. Check how easy it is to get help and how good it is.8. Analyze Location and Market PotentialWhere your franchise is can really change how well it does. Looking at the market and picking a good place can make a big difference to how well your franchise does. A good place means more people can get to your business, which means more sales. Knowing what people want in your area means you know if people will want what your franchise offers. Being in the right place means you can do better than other businesses like yours. Look at who lives in places you might pick for your franchise. Look at how many people walk by and how easy it is for them to get to your place. Check how many other businesses like yours are around and if people want what you’re selling.9. Plan Your Exit StrategyEven though it might seem early, planning how you'll leave the franchise is really important. An exit strategy means you have a plan if you decide to sell or stop running the business. Having an exit plan helps you set goals for the long term and be ready for unexpected changes that might make you leave the business. It also helps you get the most money back from your investment when you leave. To plan, talk with the franchisor about how you could leave the franchise. Learn about the process and any costs you might have to pay. Think about who could take over the franchise or buy it from you before you need to leave.10. Make an Informed DecisionAfter you've done all your research and thinking, it's time to decide. Take your time and think about the good and bad parts of each franchise option. Pick the one that fits your goals the best. Making an informed decision means you feel sure and ready for your investment. Doing lots of research makes it less likely you'll pick a franchise that doesn't work out. Choosing the right franchise increases the chances it'll meet what you want and need. Make a list of what's good and bad about each franchise you're thinking about. Get advice from people who know a lot about the industry or have done this before. Finally, decide based on all the research and thinking you've done.ConclusionFinding the right information technology franchise to buy is a big job that needs careful thinking and planning. These ten steps can help you find a franchise that matches what you want and need. Take your time, get advice from experts, and pick the franchise that fits your goals and plans for the future. Making a smart decision now can set you up for success in your new business.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿,서블릿 객체
@WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet {} HelloServlet 가 서블릿이고, 스프링부트 실행시 서블릿의 객체가 생성되는것 같은데name = "helloServlet" 가 의미하는것은 무엇인가요?? 서블릿 객체 이름을 의미하는건가요?아니면 그냥 서블릿 식별자 정도 인가요??
-
미해결React + GPT API로 AI회고록 서비스 개발 (원데이 클래스)
speed.js란 파일자체가 프로젝트에 없습니다!
그런데 글만 회고록에 글만입력하면 오류가 납니다. 오류의 원인은 speed.js파일 때문이라고 합니다. 현재 코드는 아래와 같습니다. 허파가 뒤집어집니다.import { Input, Button} from 'antd'; const { TextArea } = Input; import { useState } from "react";// 저장하는 곳임포트 const DiaryInput = ({ isLoading, onSubmit }) => { const [userInput, setUserInput] = useState(""); // isLoading 로딩상태에서 사용하는 변수 // inSubmit 다입력 작성하면 사용 const handleUserInput = (e) => { setUserInput(e.target.value); }; const handleClick = () => { onSubmit(userInput); }; return ( <div> <TextArea value={userInput} onChange={handleUserInput} placeholder="오늘 일어난 일들을 간단히 적어주세요." /> <Button loading={isLoading} onClick={handleClick}> GPT 회고록을 작성해줘! </Button> </div> ); } export default DiaryInput; // import { Input , Button} from 'antd'; // import { useState } from 'react'; // const { TextArea } = Input; // const DiaryInput = ({isLoading, onSubmit}) => { // const [userInput, setUserInput] = useState(""); // //사용자의 입력을 받아 상위 컴포넌트로 넘기기 // // 로딩상태에서는 제출버튼 못누루게 // const handleUserInput =(e)=>{ // setUserInput(e.target.value); // const handleClick = ()=>{ // onSubmit(userInput); // } // } // return ( // <div> // <TextArea value={userInput} onChange={handleUserInput} placeholder='오늘 하루 회고'/> // <Button loading={isLoading} onClick={handleClick}>GPT회고록 시작</Button> // </div> // ); // }; // export default DiaryInput;import { useState } from 'react'; import { CallGPT } from './api/gpt'; import DiaryInput from './components/DiaryInput'; const dummyData = { "title": "고립된 개발자의 고민", "thumbnail": "https://source.unsplash.com/1600x900/?programming", "summary": "혼자 코딩과제를 진행하면서 걱정이다.", "emotional_content": "최근 혼자 코딩과제를 진행하면서, 협업이 없이 모든 것을 혼자 결정하고 해결해야 한다는 부담감에 많이 무겁습니다. 강의를 듣고 최선을 다해 프로젝트를 진행했지만, 예상치 못한 버그들로 인해 스트레스가 많이 쌓였습니다. 스택오버플로와 GPT를 통해 문제를 해결하긴 했지만, 이러한 문제해결 방식이 정말로 제 개발 실력을 향상시키는지에 대해 의문이 듭니다. 왠지 스스로의 능력을 시험할 기회를 잃은 것 같아 아쉽고, 불안감도 커지고 있습니다.", "emotional_result": "이 일기에서 감지되는 감정은 불안, 부담감, 그리고 자신감의 결여입니다. 고립된 상황에서의 성공에 대한 압박감과 문제 해결 방법에 대한 의심은 정서적으로 큰 부담을 주고 있습니다. 자기 효능감이 낮아짐을 느끼는 상황입니다.", "analysis": "고립되어 문제를 해결하는 과정은 큰 스트레스와 불안을 유발할 수 있습니다. '혼자서 하는 일은 좋은 일이든 나쁜 일이든 더욱 크게 느껴진다'는 에릭 에릭슨의 말처럼, 혼자서 모든 것을 해결하려는 시도는 때로는 개인의 성장에 도움이 될 수 있지만, 지속적인 고립은 자기 효능감을 저하시킬 수 있습니다. 이러한 상황에서는 자신의 노력을 인정하고, 필요한 경우 도움을 요청하는 것이 중요합니다.", "action_list": [ "프로젝트 중 발생하는 문제를 혼자 해결하려 하지 말고, 멘토나 동료 개발자와 상의를 통해 해결 방안을 모색하라.", "정기적으로 자신의 학습 방법과 진행 상황을 평가하여, 필요한 경우 학습 방식을 조정하라.", "개발 과정에서의 스트레스 관리를 위해 적절한 휴식과 여가 활동을 통해 정서적 안정을 찾으라." ] }; function App() { const [data, setData] = useState(dummyData); // 우선 빈문자열로 해놓고 const [isLoading, setIsLoading] = useState(false); const handleClickAPICall = async (userInput) => { try { setIsLoading(true);// 처음에는 로딩을 트루 const message = await CallGPT({ prompt: `${userInput}`, }); // Assuming callGPT is a function that fetches data from GPT API setData(JSON.parse(message)); } catch (error) { // Handle error (you might want to set some error state here) } finally { setIsLoading(false);//다음에는 펄스로 } }; const handleSubmit = (userInput) => { handleClickAPICall(userInput); }; console.log(">>data", data); return ( <> <DiaryInput isLoading={isLoading} onSubmit ={handleSubmit} /> <button onClick={handleClickAPICall}>GPT API call</button> <div>title : {data?.title}</div> <div>analysis : {data?.analysis}</div> <div>emotional_content : {data?.emotional_content}</div> <div>emotional_result : {data?.emotional_result}</div> </> ); }; export default App; // import { useState } from "react"; // import { CallGPT } from "./api/gpt"; // import { message } from "antd"; // import DiaryInput from "./components/DiaryInput"; // const dumyData = JSON.parse(` // { // "title": "당황스러운 예제 에러", // "thumbnail": "https://source.unsplash.com/1600x900/?confused", // "summary": "가끔 예제 에러가 발생하여 당황함", // "emotional_content": "가끔 예제 에러가 나타나는 것이 정말 당황스럽다. 이런 상황들은 예상치 못한 문제로 인해 나를 혼란스럽게 만든다. 그럼에도 불구하고, 이런 에러들은 동시에 나의 문제 해결 능력을 시험한다.", // "emotional_result": "당황스러움과 혼란스러움이 느껴진다. 그러나 이는 예상치 못한 문제에 대처하는 능력을 향상시키는 과정일 수 있다.", // "analysis": "당신의 당황함과 혼란스러움은 예상치 못한 상황에 대한 불안감과 두려움을 반영할 수 있습니다. 하지만, '문제는 기회다'라는 유명한 격언을 기억하십시오. 이러한 에러들은 당신의 문제 해결 능력을 향상시키는 좋은 기회일 수 있습니다.", // "action_list": [ // "예상치 못한 에러에 대비하는 습관 만들기", // "문제 해결 능력 향상을 위한 자기계발", // "당황하지 않고 차분하게 상황을 평가하는 능력 기르기" // ] // } // `); // function App() { // const [data, setData] = useState(dumyData); // const [isLoading, setIsLoading] = useState(false); // // 여기로딩상태가 // const handleClickAPICall = async (userInput) => { // try{// try catch로 감싸서, 처음에는 로딩상태를 트루라고 하고 // setIsLoading(true); // const message = await CallGPT({ // prompt:'{userInput}', // }); // setData(JSON.parse(message));// 그리고 데이터가 잘오면 받아보자 // } catch (error){ // }finally{ // setIsLoading(false);// 나중에는 false라고 하자 // } // }; // const handleSubmit = (userInput)=>{ // handleClickAPICall(userInput); // }; // console.log(">>data", data); // return ( // <> // <DiaryInput isLoading={isLoading} onSubmit={handleSubmit} /> // // 여기로 옴 // <button onClick={handleClickAPICall}>GPT API call</button> // <div>data : {data?.title}</div> // <div>thumbnail: {data?.thumbnail}</div> // <div>summary : {data?.summary}</div> // <div>emotional_resul : {data?.emotional_resul}</div> // <div>emotional_content : {data?.emotional_content}</div> // <div>analysis: {data?.analysis}</div> // <div>action_list: {data?.action_list}</div> // </> // ); // } // export default App;{ "name": "my-gpt-diary", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, "dependencies": { "@ant-design/icons": "^5.4.0", "antd": "^5.20.1", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "^6.1.12" }, "devDependencies": { "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^7.15.0", "@typescript-eslint/parser": "^7.15.0", "@vitejs/plugin-react": "^4.3.1", "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", "typescript": "^5.2.2", "vite": "^5.3.4" } }
-
미해결김영한의 실전 자바 - 중급 2편
<> 유무
MyLinkedListV3 stringList = new MyLinkedListV3<>();에서는 <> 가 있어야 하는데 왜 MyLinkedListV3 stringList = new MyLinkedListV3[CAPACITY]; 에서는 <> 를 쓰면 안되는지 궁금합니다.