내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
requirements.txt 파일에 접근해서 pip install -r requirements.txt 해야하지 않습니까? 근데 이 파일에 접근이 안되는데 혹시 이유좀 알려주실 수 있나용 이것 구글에 쳐봐도 잘 모르겠어요 ㅜ 다운 받은 강의 자료를 지워서 새로 깔아도 안되고 파일 위치를 옮겨봐도 소용없어요. 그리고 dir로 디렉토리 띄워놓고 cd requirements.txt 칠때 탭으로 자동완성도 안되는거 보니 뭔가 연관이 있는거 같은데 알려주시면 감사하겠습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 파일 다운로드 부분에서 궁금한 점이 생겨서 질문을 남깁니다 :) String storeFileName = item.getAttachFile().getStoreFileName(); String uploadFileName = item.getAttachFile().getUploadFileName(); 여기 부분에서 이해가 안가는 부분이 있는데 item.getAttachFile() 이 부분은 item.java에 있는 attachFile을 가져오는걸로 아는데 뒤에 getStoreFileName은 UploadFile.java에 있는 storeFileName인데 이것을 어떻게 부를 수 있는지 궁금합니다.. item으로 받았는데 UploadFile에 storeFileName을 부를 수 있다는게 이해가 잘 안가서여 ㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 현재 예시에서는 각 서비스별로 연관되는 부분이 없어 BeforeEach를 사용하지 않아도 되지만, 테스트시 연관을 끊는 의도에서 BeforeEach를 사용하는것으로 이해했습니다. 현업에서도 각 메소드에 연관되는 부분이 없더라도 인스턴스생성시에 나눠주는편이 좀더 바람직하다고 볼수 있을까요? 연관되는부분이 있는지 파악하는것도 시간소요이고 실제 빌드시에 테스트코드는 빠지기 때문에 더하는편이 덜하는편보다 낫지 않을까 하는 판단입니다. 아직 직무경험이 없고 배우는 입장이라 이런식의 사고방향이 맞는것인지 궁금합니다.
@Component public class WebServerCustomizer implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> { @Override public void customize(ConfigurableWebServerFactory factory) { .... } } ebServerCustomizer 클래스의 @Component를 붙여서 자동으로 빈으로 등록하고나서 이 빈을 주입해서 사용하는 코드가 없는데도 잘 호출되네요.. 제가 알기론 보통 빈으로 등록하고 해당 빈을 주입해서 사용하는걸로 아는데 이렇게 빈으로 등록만 했는데도 스프링이 필요할때 자동으로 사용할 수 있나요? 제가 잘못 알고있는건가요..? 아님 이게 업무 로직 빈이 아니라 공통 기술을 처리하는 기술 지원 빈 그런거라서 가능한 건가요?
안녕하세요 강사님 mmdetection 관련해서 이론적으로나 실무적으로나 항상 많은 도움 받고있습니다. 강의 내용을 바탕으로 mmdetection code를 작성하던 도중 질문사항이 생겨서요 ㅎㅎ mmdetection Mask R-CNN 모델을 이용하여 추론결과 아래 사진과 같이 mask, bbox 두가지가 나타나는데 bbox위에 나타나는 title(coin) 대신 변수를 표시하고 싶습니다. class name, confidence score 가 아닌 ID, pixel number를 표시하고 싶습니다. 제 코드는 다음과 같습니다. img_name = path_dir + '/' + file_list[i] img_arr= cv2.imread(img_name, cv2.IMREAD_COLOR) img_arr_rgb = cv2.cvtColor(img_arr, cv2.COLOR_BGR2RGB) # cv2.imshow('img',img) fig= plt.figure(figsize=(12, 12)) plt.imshow(img_arr_rgb) # inference_detector의 인자로 string(file경로), ndarray가 단일 또는 list형태로 입력 될 수 있음. results = inference_detector(model, img_arr) #추론결과 디렉토리에 저장 model.show_result(img_arr, results, score_thr=0.8, title= bbox_color=(0,0,255),thickness=0.5,font_size=7, out_file= f'{save_dir1}{file_list[i]}') 이 결과 추론되는 사진은 다음과 같습니다 아래는 mmdetection/mmdet/core/visualization/image.py에 있는 imshow_det_bboxes 함수입니다. 아래 함수가 시각화 해주는 함수여서 해당 함수를 수정하면 될 것 같은데 아무리 뜯어봐도 어디를 고쳐야할 지 도저히 감이 오질 않습니다 ...ㅠㅠ def imshow_det_bboxes(img, bboxes, labels, segms=None, class_names=None, score_thr=0, bbox_color='green', text_color='green', mask_color=None, thickness=2, font_size=13, win_name='', show=True, wait_time=0, out_file=None): """Draw bboxes and class labels (with scores) on an image. Args: img (str or ndarray): The image to be displayed. bboxes (ndarray): Bounding boxes (with scores), shaped (n, 4) or (n, 5). labels (ndarray): Labels of bboxes. segms (ndarray or None): Masks, shaped (n,h,w) or None class_names (list[str]): Names of each classes. score_thr (float): Minimum score of bboxes to be shown. Default: 0 bbox_color (str or tuple(int) or :obj:`Color`):Color of bbox lines. The tuple of color should be in BGR order. Default: 'green' text_color (str or tuple(int) or :obj:`Color`):Color of texts. The tuple of color should be in BGR order. Default: 'green' mask_color (str or tuple(int) or :obj:`Color`, optional): Color of masks. The tuple of color should be in BGR order. Default: None thickness (int): Thickness of lines. Default: 2 font_size (int): Font size of texts. Default: 13 show (bool): Whether to show the image. Default: True win_name (str): The window name. Default: '' wait_time (float): Value of waitKey param. Default: 0. out_file (str, optional): The filename to write the image. Default: None Returns: ndarray: The image with bboxes drawn on it. """ assert bboxes.ndim == 2, \ f' bboxes ndim should be 2, but its ndim is {bboxes.ndim}.' assert labels.ndim == 1, \ f' labels ndim should be 1, but its ndim is {labels.ndim}.' assert bboxes.shape[0] == labels.shape[0], \ 'bboxes.shape[0] and labels.shape[0] should have the same length.' assert bboxes.shape[1] == 4 or bboxes.shape[1] == 5, \ f' bboxes.shape[1] should be 4 or 5, but its {bboxes.shape[1]}.' img = mmcv.imread(img).astype(np.uint8) if score_thr > 0: assert bboxes.shape[1] == 5 scores = bboxes[:, -1] inds = scores > score_thr bboxes = bboxes[inds, :] labels = labels[inds] if segms is not None: segms = segms[inds, ...] mask_colors = [] if labels.shape[0] > 0: if mask_color is None: # Get random state before set seed, and restore random state later. # Prevent loss of randomness. # See: https://github.com/open-mmlab/mmdetection/issues/5844 state = np.random.get_state() # random color np.random.seed(42) mask_colors = [ np.random.randint(0, 256, (1, 3), dtype=np.uint8) for _ in range(max(labels) + 1) ] np.random.set_state(state) else: # specify color mask_colors = [ np.array(mmcv.color_val(mask_color)[::-1], dtype=np.uint8) ] * ( max(labels) + 1) bbox_color = color_val_matplotlib(bbox_color) text_color = color_val_matplotlib(text_color) img = mmcv.bgr2rgb(img) width, height = img.shape[1], img.shape[0] img = np.ascontiguousarray(img) fig = plt.figure(win_name, frameon=False) plt.title(win_name) canvas = fig.canvas dpi = fig.get_dpi() # add a small EPS to avoid precision lost due to matplotlib's truncation # (https://github.com/matplotlib/matplotlib/issues/15363) fig.set_size_inches((width + EPS) / dpi, (height + EPS) / dpi) # remove white edges by set subplot margin plt.subplots_adjust(left=0, right=1, bottom=0, top=1) ax = plt.gca() ax.axis('off') polygons = [] color = [] for i, (bbox, label) in enumerate(zip(bboxes, labels)): bbox_int = bbox.astype(np.int32) poly = [[bbox_int[0], bbox_int[1]], [bbox_int[0], bbox_int[3]], [bbox_int[2], bbox_int[3]], [bbox_int[2], bbox_int[1]]] np_poly = np.array(poly).reshape((4, 2)) polygons.append(Polygon(np_poly)) color.append(bbox_color) label_text = class_names[ label] if class_names is not None else f'class {label}' if len(bbox) > 4: label_text += f'|{bbox[-1]:.02f}' ax.text( bbox_int[0], bbox_int[1], f'{label_text}', bbox={ 'facecolor': 'black', 'alpha': 0.8, 'pad': 0.7, 'edgecolor': 'none' }, color=text_color, fontsize=font_size, verticalalignment='top', horizontalalignment='left') if segms is not None: color_mask = mask_colors[labels[i]] mask = segms[i].astype(bool) img[mask] = img[mask] * 0.5 + color_mask * 0.5 plt.imshow(img) p = PatchCollection( polygons, facecolor='none', edgecolors=color, linewidths=thickness) ax.add_collection(p) stream, _ = canvas.print_to_buffer() buffer = np.frombuffer(stream, dtype='uint8') img_rgba = buffer.reshape(height, width, 4) rgb, alpha = np.split(img_rgba, [3], axis=2) img = rgb.astype('uint8') img = mmcv.rgb2bgr(img) if show: # We do not use cv2 for display because in some cases, opencv will # conflict with Qt, it will output a warning: Current thread # is not the object's thread. You can refer to # https://github.com/opencv/opencv-python/issues/46 for details if wait_time == 0: plt.show() else: plt.show(block=False) plt.pause(wait_time) if out_file is not None: mmcv.imwrite(img, out_file) plt.close() return img 감사합니다
AssertionError at /post/ The `.create()` method does not support writable nested fields by default. Write an explicit `.create()` method for serializer `instagram.serializers.PostSerializer`, or set `read_only=True` on nested serializer fields. 저 오류로 프로젝트 2번 갈아 엎었는데 똑같은 곳에서 계속 막히네요.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 좋은강의 감사합니다!! 다름이아니라, MemberRepository를 따로 만드는 이유에 대해서 아직 궁금증이 안풀려서요! MemberRepository 인터페이스에서 메서드를 꺼내서 쓰는 것 보다는 MemoryMemberRepository(implement로 인터페이스 구현을 하지않고) 메서드를 직접 쓰는게 낫지 않나 해서요! 결론적으로 굳이 repository 인터페이스를 만드는 이유에 대해서 궁금합니다!
안녕하세요. 데이터가 null 일 시 Elvis vs No Operation 둘의 차이를 알고 싶습니다. <span th:text="${data}?: 'Null 입니다.'"></span> <span th:text ="${data}?: _ ">Null 입니다.</span> 위와 같이 있을 시 아래 No Operation은 처리하지 않는다 라고 하였는데, 처리하지 않는다는 건 곧 랜더링할 시 No Operation이 처리속도가 빠르다라고 생각하면 되는걸까요?
안녕하십니까 교수님 최근 진행중인 프로젝트 수행을 위해서 강의를 듣고 있는 학생입니다. 현재 depth camera 를 이용하는 딥러닝 프로젝트를 진행하며 여러가지 오픈소스를 찾던 중 ssd-mobilenet 을 PASCAL VOC 로 학습한 것과 같은 알고리즘 ssd-mobilenet를 사용하여 COCO dataset으로 학습된 것을 봤습니다. 만약 오픈 소스를 사용하는 입장이면(학습하는 시간을 고려하지 않았을 때) 무조건 데이터 분류가 많고, 사진 당 오브젝트 수가 많은 COCO 데이터셋이 학습된 소스가 좋다고 생각하는데 혹시 다른 차이가 있을까 궁금해서 이렇게 질문드리게 되었습니다 학습 분류가 많을수록 FPS 에 의한 차이가 있나요? 학습 분류가 많을수록 특정 사물에 대한 detection 성능의 차이가 있을 수 있나요? - 예를 들어 person 데이터만 필요할 때 PASCAL VOC, COCO 또는 open image 를 사용할 때 성능 차이가 발생하나요? 다른 차이가 있을까요? 강의는 항상 잘 듣고 있습니다. 덕분에 다양한 프로젝트를 진행하여 취업까지 연결할 수 있었습니다. 아직 반정도 남았지만 분발하여 꼭 완강하도록 하겠습니다. 감사합니다!!
애플리케이션 로직이 필요한 검증같은 경우는 어디서 처리하는게 좋은지 궁금합니다. 예를 들어 회원가입시 비밀번호와 비밀번호확인이 일치해야 하는데 이러한 로직이 필요한 검증은 bean validation으로 처리를 못할것 같은데 이런 경우는 서비스 계층에서 해결해야 하는 것인가요?? 실제 실무에서는 어떤식으로 처리하는지 궁금합니다.! 감사합니다.
따라하던 중 위 이미지 처럼 ??page.addItem_ko_KR?? 라고 출력되는 현상이 발생되어 질문 드립니다. addForm.html messages.properties 위처럼 작성하여 따라하던 중 정상적으로 반영이 안되는 것 같아서 질문 드립니다. 항상 감사합니다.
안녕하세요! 좋은 강의 감사드립니다. test 부분에서 메모리에 기록이 남아 있어서 afterEach method를 작성하여서 이전 기록을 지우는 걸로 이번 강의에서 배웠는데 동일한 이름을 가진 기록("spring1", "spring2") 때문에 에러가 발생하는 걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이런 답이 없는 질문하는 게 제일 싫은 질문인 거 알지만 너무 망망대해에 떨어져있는 기분이라 여쭤봅니다 .. 저는 일단 자바를 배우고 바로 스프링으로 넘어와서 김영한님 강의로 스프링을 입문한 상태고, 이해가 되지 않는 부분은 강의 끝나고 코드 따라 계속 이동해보면서 이해가 될 때까지 보고 있습니다. 그러면서 코드가 왜 이렇게 작성됐는지, 흐름이 어떤지 정도는 이해가 되는데 솔직히 다 지우고 저한테 다시 작성하라고 하면 진짜 못할 것 같아요.. 컨트롤러 v2까지는 쉬웠는데 v3은 정말 혼자서 작성은 못할 것 같습니다. 스프링도 어렵지만 자바도 이제 갓 걸음마 뗀 상태라 더 그렇게 느껴지는 것 같구요. 무조건 최대한 학습할 수 있으면 제일 좋겠지만, 강사님이 이 강의를 만드셨을 때 목표한 학생들의 최소 성취 수준이 어느 정도인지 궁금합니다.. 제 목표는 김영한님 DB2편까지 듣고, JPA 다 들은 다음에 뭔가 만들어보는 건데, 일단 조금 난해한 부분이 있더라도 계속 따라가면서 흐름을 읽는 정도로 배우는 게 맞는건지 지금 고작 이 수준에서도 혼자서 작성 못하겠다고 하면 작성할 수 있을 때까지 멈춰서 복습을 해야하는 건지.. 궁금합니다 ㅜ 답이 없는 주관적인 질문 죄송합니다.
// 로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성해줌 HttpSession session = request.getSession(); //서버의 세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); return "redirect:/"; 로그인을 하는 코드인데 session.setAttribute()가 httpsession에 해당 키와 value를 저장하고나서 response header에 전달되는 JSESSIONID의 값을 랜덤으로 생성해서 보내주는건가요? 아니면 누가 JSESSIONID를 response header에 보내주는 건가요?
expected 가 "hello"일 경우 자신의 기본 OS가 en일 가능성이 있습니다. System.out.println(Locale.getDefault()); 를 통해 기본 Locale 설정을 확인해볼 수 있습니다. 강의 코드를 그대로 따라 치려면, 테스트 메소드 내부에 Locale.setDefault(Locale.KOREA); 를 추가하면 기본 Locale을 한시적으로 ko_KR로 변경 가능합니다.
안녕하세요! 6:40초 쯤에 보면, 이 코딩이 이해가 잘 가지않아 질문을 드리게 되었습니다. 이 부분이 stream + 람다식 문법을 사용한게 맞을까요? 아래처러머 제가 이해한 게 맞는지 궁금합니다 ㅠㅠ.. store라는 참수변수의 value(값)을 stream을 통해 읽고, filter()를통해 데이터를 걸러내고 마지막 최종연산으로 findAny()로 name을 찾아낸다.. 가 맞을까요?