묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결퀀트 투자를 위한 파이썬 트레이딩룸 만들기 - Part 2
pt3은 언제쯤 나올까요?
정말 흥미롭게 Pt1부터 잘 수강하고 있습니다.파트3에 대한 계획은 있으신 것 같은데 언제쯤일지 궁금합니다!
-
미해결스프링 시큐리티 OAuth2
1편을 들고 2편으로 넘어 오긴했는데..
1편을 끝내고 이제 2편으로 들어왔는데 아직 1편을 많이 미흡하게 이해된부분이 많은데.. 2편을 들으면서 복습하는 방식으로 해도될까요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
맥 사용자가 아닌 윈도우 사용자 분들은 docker redis 설치 어떻게 하셨나요?
docker desktop , mysql은 별개로 설치 되어 있긴 한데docker desktop으로도 mysql redis 설치가능한건가요??ㅠㅠ
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
6-6강 듣는 중 질문 있습니다
6-6강 > 12분 경 노출되는 강의 자료에서,주문 전환율은 아래와 같이 노출되는데요, 해당 기능을 사용해 주문한 수: 추천을 통한 주문 전환율(CVR)→ click_payment(use_recommend_food=True) / click_recommend_food 추천을 통한 주문 전환율이라면, 분모가 click_payment의 count(추천 사용, 추천 미사용)가 될 수는 없는 것일까요? (특정 기간 내)
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
CoreGlobal
CoreGlobal을 생성한 적이 없는데 어떻게 모든 전역변수들이 초기화 되는 건가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
S3 리전관련 질문이 있습니다.
안녕하세요 선생님 S3관련 질문이 있습니다.s3 가 오른쪽 상단에는 글로벌 서비스(리전을 지정할 수없는) 인데실제로 생성할 때는 리전을 어차피고르는데이 차이점을 어떻게 받아들여야하나요...?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님 강의 잘 보고 있습니다!http://boj.kr/a4789567a93f4ab683d66bdbe489f9a9와 같이 DFS를 풀었고 제출을 했는데 메모리 초과가 발생했습니다! 배열의 사이즈가 컸나 그래서 선생님 해설을 보다가 그건 아닌 것 같고 해서 질문했습니다!! 항상 좋은 답변 감사드립니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
부트스트랩, 점보트론 적용 후 가운데 정렬이 안 됩니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]header.html<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head th:fragment="header"> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink- to-fit=no"> <!-- <!– Bootstrap CSS –>--> <!-- <link rel="stylesheet" href="/css/bootstrap.min.css" integrity="sha384- --> <!-- ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"--> <!-- crossorigin="anonymous">--> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/5.3.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">> <!-- Custom styles for this template --> <link href="/css/jumbotron-narrow.css" rel="stylesheet"> <title>Hello, world!</title> </head>현재 header.html 파일 코드는 이렇게 되어 있습니다.부트스트랩 버전이 강의와 다르면 점보트론 적용이 잘 안 된다는 이야기가 있어서 호환을 위해 기존 코드는 주석 처리 하고<!-- <!– Bootstrap CSS –>--> <!-- <link rel="stylesheet" href="/css/bootstrap.min.css" integrity="sha384- --> <!-- ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"--> <!-- crossorigin="anonymous">-->새로운 코드를 붙여넣었습니다. <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/5.3.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">> 가운데 정렬이 안 되는 이유가 뭔지 알고 싶습니다..
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Item 객체가 Bean으로 등록되는 이유?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 Validation 공부중에 질문드립니다.Item 객체의 경우 현재 @Data Annotation만 있을 뿐, ItemRepository가 @Repository Annotation으로 Bean에 등록되어있는것 까지는 이해가 되나 violation = ConstraintViolationImpl{interpolatedMessage='공백일 수 없습니다', propertyPath=itemName, rootBeanClass=class hello.itemservice.domain.item.Item, messageTemplate='{javax.validation.constraints.NotBlank.message}'}violation.getMessage() = 공백일 수 없습니다violation = ConstraintViolationImpl{interpolatedMessage='9999 이하여야 합니다', propertyPath=quantity, rootBeanClass=class hello.itemservice.domain.item.Item, messageTemplate='{javax.validation.constraints.Max.message}'}violation.getMessage() = 9999 이하여야 합니다violation = ConstraintViolationImpl{interpolatedMessage='널이어서는 안됩니다', propertyPath=price, rootBeanClass=class hello.itemservice.domain.item.Item, messageTemplate='{javax.validation.constraints.NotNull.message}'}violation.getMessage() = 널이어서는 안됩니다 다음 로그 기록에서 rootBeanClass에 Item 객체가 있다는 것은 Item 객체도 Spring Bean으로 등록되어있는 것으로 이해했습니다.스프링 기본 원리를 다시 쭉 살펴봤는데 애노테이션이 필요하지 않는 경우는 상속을 통한 자동등록이나 수동등록의 경우 빈으로 등록되는걸로 알고있는데요, 저 경우는 왜 자동으로 등록되는것이지 고견 부탁드리겠습니다! 감사합니다!
-
미해결홍정모의 따라하며 배우는 C++
제가한 선택 정렬 코드 리뷰 가능할까요?
제가 먼저 풀고, 풀이를 보려 했는데 어지러워서제가 한게 좀더 간단한거 같아 혹시 다른 분들 의견이 궁금하여 여쭤 볼겸 평가 부탁드립니다
-
미해결파이썬 Streamlit 활용한 웹 자동화 업무, 데이터 검색 및 시각화
섹션1강의자료요청
강사님 안녕하세요섹션1강의자료가 섹션0강의자료로 되어잇습니다. 섹션1강의자료를 보내주시면 감사하겟습니다그리고 스트림릿은 완전초보자라서 섹션1부터 듣는데, 섹션0에서도 스트림릿에 대한 설명이 잇는지요? 그냥 파이썬 문법만 알고잇으면 섹션1부터들어도 문제 없겟지요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
spp에서 궁금한점이 있습니다.
8*8 region proposal 영역이 아닌 8*9의 region proposal 영역이 있을 때 이를 정확히 4분면으로 나눌 수 없는데 이때는 패딩을 더하나요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
Lazy Holder 에서의 static이 잘 모르겠어요
class Singleton { private static class singleInstanceHolder { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return singleInstanceHolder.INSTANCE; } }여기서 처음에 JVM이 클래스 로드할 때 static으로 선언된 singleInstanceHolder가 초기화 되면서 안에 들어있는 static 변수도 함께 초기화 되는 게 아닌가요?static 클래스 안에 있는 static 변수는 많이 안 접해봐서 헷갈립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Quaternion.Slerp 적용하면 유니티 짱이 20~30도 쓰러져요.
화면 클릭해서 이동시 transform.LookAt(_destPos); 위 코드 대신부드럽게 회전하기 -- 아래 코드로 하면 마지막 멈출때 유니티 짱이 쓰러짐. ㅜㅜtransform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime); //t는 회전 속도 trasform.LookAt(_destPos)일때는 쓰러지지 않습니다.
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
<!DOCTYPE html> 없어도 상관없나요?ㅠㅠ
e유형 중인데html 제일 윗부분<!DOCTYPE html>이걸 넣으면 slide 사진이 사라지고 footer가 올라오고저것만 없애면 완벽하게 잘 작동하는데없애도 상관없나요? 시험때도 상관없을까요?
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
주문하기 클릭 시 Order 생성 안 되고 500에러가 뜹니다.
질문 내용주문 시 계속해서 주문에 실패했다고 떠서, 무엇이 문제이지 하고 봤는데, Status 500 에러가 던져집니다.그래서 서버 쪽 로그를 봤는데, 서버에서 이런 Exception이 던져지고 있습니다.[Nest] 63134 - 2023. 08. 13. 오전 2:35:36 ERROR [ExceptionsHandler] Cannot read properties of undefined (reading 'restaurant') TypeError: Cannot read properties of undefined (reading 'restaurant') at OrderService.postOrder (/Users/nx006/Documents/vscode/flutter-lv2-server/src/order/order.service.ts:36:8) at OrderController.postOrder (/Users/nx006/Documents/vscode/flutter-lv2-server/src/order/order.controller.ts:63:30) at /Users/nx006/Documents/vscode/flutter-lv2-server/node_modules/@nestjs/core/router/router-execution-context.js:38:29 at processTicksAndRejections (node:internal/process/task_queues:95:5) 'restaurant' 속성을 읽지 못한다는 게 무슨 말일까요? 애초에 Request Body에 Restaurant 속성 자체가 없는데, 400 에러도 아니고 왜 이런 에러가 서버 쪽에서 나는 지 모르겠습니다.코드 전문일단은, 현재 PostBody와 Response Body에 대한 모델입니다:// ignore_for_file: invalid_annotation_target /// order_model.dart import 'package:delivery_app/common/model/model_with_id.dart'; import 'package:delivery_app/common/utils/data_utils.dart'; import 'package:delivery_app/restaurant/model/restaurant_model.dart'; import 'package:flutter/foundation.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; part 'order_model.freezed.dart'; part 'order_model.g.dart'; @freezed class OrderProductModel with _$OrderProductModel { factory OrderProductModel({ required String id, required String name, required String detail, @JsonKey(fromJson: DataUtils.pathToUrl) required String imgUrl, required int price, }) = _OrderProductModel; factory OrderProductModel.fromJson(Map<String, dynamic> json) => _$OrderProductModelFromJson(json); } @freezed class OrderProductAndCountModel with _$OrderProductAndCountModel { factory OrderProductAndCountModel({ required OrderProductModel product, required int count, }) = _OrderProductAndCount; factory OrderProductAndCountModel.fromJson(Map<String, dynamic> json) => _$OrderProductAndCountModelFromJson(json); } @freezed class OrderModel with _$OrderModel implements IModelWithId { factory OrderModel({ required String id, required RestaurantModel restaurant, required List<OrderProductAndCountModel> products, required int totalPrice, @JsonKey(fromJson: DataUtils.stringToDateTime) required DateTime createdAt, }) = _OrderModel; factory OrderModel.fromJson(Map<String, dynamic> json) => _$OrderModelFromJson(json); } /// post_order_body.dart import 'package:freezed_annotation/freezed_annotation.dart'; part 'post_order_body.freezed.dart'; part 'post_order_body.g.dart'; @freezed class PostOrderBody with _$PostOrderBody { const factory PostOrderBody({ required String id, required List<PostOrderBodyProduct> products, required int totalPrice, required String createdAt, }) = _PostOrderBody; factory PostOrderBody.fromJson(Map<String, dynamic> json) => _$PostOrderBodyFromJson(json); } @freezed class PostOrderBodyProduct with _$PostOrderBodyProduct { const factory PostOrderBodyProduct({ required String id, required int count, }) = _PostOrderBodyProduct; factory PostOrderBodyProduct.fromJson(Map<String, dynamic> json) => _$PostOrderBodyProductFromJson(json); } 그리고 다음은 Repository 코드입니다./// order_provider.dart import 'package:delivery_app/common/const/data.dart'; import 'package:delivery_app/common/dio/dio.dart'; import 'package:delivery_app/order/model/order_model.dart'; import 'package:delivery_app/order/model/post_order_body.dart'; import 'package:dio/dio.dart' hide Headers; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:retrofit/retrofit.dart'; part 'order_repository.g.dart'; final orderRepositoryProvider = Provider((ref) { final dio = ref.watch(dioProvider); return OrderRepository(dio, baseUrl: 'http://$ip/order'); }); // baseUrl : http://$ip/order @RestApi() abstract class OrderRepository { factory OrderRepository(Dio dio, {String baseUrl}) = _OrderRepository; @POST('/') @Headers({'accessToken': 'true'}) Future<OrderModel> postOrder({ @Body() required PostOrderBody body, }); } 다음은 Provider 입니다./// order_provider.dart // ignore_for_file: public_member_api_docs, sort_constructors_first import 'package:delivery_app/order/model/post_order_body.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:uuid/uuid.dart'; import 'package:delivery_app/order/model/order_model.dart'; import 'package:delivery_app/order/repository/order_repository.dart'; import 'package:delivery_app/user/provider/basket_provider.dart'; final orderProvider = StateNotifierProvider<OrderStateNotifier, List<OrderModel>>( (ref) => OrderStateNotifier( ref: ref, repository: ref.watch(orderRepositoryProvider), )); class OrderStateNotifier extends StateNotifier<List<OrderModel>> { final Ref ref; final OrderRepository repository; OrderStateNotifier({ required this.ref, required this.repository, }) : super([]); Future<bool> postOrder() async { const uuid = Uuid(); final id = uuid.v4(); final state = ref.read(basketProvider); try { await repository.postOrder( body: PostOrderBody( id: id, products: state .map((e) => PostOrderBodyProduct( id: e.product.id, count: e.count, )) .toList(), totalPrice: state.fold<int>( 0, (previousValue, element) => previousValue + element.product.price * element.count, ), createdAt: DateTime.now().toString(), ), ); return true; } catch (e) { print('error: $e'); return false; } } } 그리고 View 단, 특 주문하기 버튼입니다:ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: primaryColor, ), onPressed: basket.isEmpty ? null : () async { final response = await ref .read(orderProvider.notifier) .postOrder(); if (context.mounted) { if (response) { context.goNamed(OrderDonePage.routeName); } else { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('주문에 실패했습니다.'), ), ); } } }, child: const Text('결제하기'), ),서버 쪽 코드혹시 몰라서, 에러가 발생하는 서버 쪽 코드 역시 첨부합니다. 일단 제가 건든 코드는 없습니다.import { Injectable } from '@nestjs/common'; import { CreateOrderDto } from './dto/create-order.dto'; import { CacheService } from '../cache/cache.service'; import { User } from '../user/entities/user.entity'; import { Order } from './entities/order.entity'; import { CoreService } from '../core/core.service'; import { PaginationDto } from '../core/dto/pagination.dto'; import { Pagination } from '../core/entity/pagination.entity'; import { OrderProduct } from './entities/order-product-entity'; @Injectable() export class OrderService { constructor( private cacheService: CacheService, private coreService: CoreService, ) {} paginateOrders(user: User, paginationDto: PaginationDto): Pagination<Order> { const result = this.coreService.paginate( this.cacheService.orders, paginationDto, ); return { ...result, data: result.data.map((item) => new Order(item)), }; } postOrder(user: User, createOrderDto: CreateOrderDto): Order { const newOrder = new Order({ id: createOrderDto.id, user, restaurant: this.cacheService.products.find( (x) => createOrderDto.products[0].productId === x.id, ).restaurant, products: createOrderDto.products.map((basketItem) => ({ product: new OrderProduct( this.cacheService.products.find( (product) => basketItem.productId === product.id, ), ), count: basketItem.count, })), totalPrice: createOrderDto.totalPrice, createdAt: createOrderDto.createdAt, }); this.cacheService.orders = [newOrder, ...this.cacheService.orders]; return newOrder; } } @ApiTags('order') @ApiExtraModels(PaginationDto, Order) @Controller('order') export class OrderController { constructor(private readonly orderService: OrderService) {} @UseGuards(AccessTokenGuard) @ApiOperation({ summary: '주문 Pagination', }) @ApiPaginatedOkResponseDecorator(Order, { description: 'Pagination 결과', }) @Get() paginateOrder( @Request() req, @Query() paginationDto: PaginationDto, ): Pagination<Order> { return this.orderService.paginateOrders(req.user, paginationDto); } @UseGuards(AccessTokenGuard) @Post() @ApiOperation({ summary: '주문 생성하기', }) @ApiBody({ type: CreateOrderDto, }) @ApiOkResponse({ status: 201, type: Order, }) postOrder(@Request() req, @Body() body: CreateOrderDto): Order { return this.orderService.postOrder(req.user, body); } }
-
해결됨
sklearn MinMaxScaler 사용
가로 100, 세로 724 픽셀의 30개의 이미지 데이터를 넘파이 배열로 바꿔준 뒤에 sklearn의 minmaxscaler 함수를 사용하여 정규화를 진행했습니다. 한 가지 궁금증이 생겼는데요, 이 함수를 여러 이미지의 동일한 픽셀 위치에서 min과 max을 찾아서 minmax스케일링을 하는 것으로 이해해도 될까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
실제로 노래 mp3 파일과 연결해서 나오게끔 하려면
실제로 리사이클러뷰 클릭했을때 노래 mp3 파일과 연결해서 나오게끔 하려면 어떻게 할까요?후속 강의에 관련 내용이 있을까요??
-
해결됨실전! 스프링 데이터 JPA
Slice 방식에서의 엔티티를 DTO 로 변환
Page 방식에서 api response 를 줄 때 엔티티-> DTO 변환은 Page 인터페이스에서 지원하는 map 을 이용하는 것이라고 이해했습니다.Slice 인터페이스의 스펙에는 map 함수가 없던데 Slice 를 사용할 때 엔티티-> DTO 변환은 어떻게 해야 하나요?
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
D3 visibility: hidden; 이걸 없애면 슬라이드가 보이는 문제!...
다른건 아니오라 작업하다가 원래 fade in / fade out 슬라이드 형식대로 써봤는데..visibility: hidden; 을 주석처리 하는순간 슬라이드가 작동되는 현상은 처음이라 적어봅니다!...제가 뭘 잘못건드렸는지 확인 한번만 부탁드려요!<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <div class="main-content"> <div class="left"> <header> <div class="header-logo"> <a href="#none"><img src="images/header-logo.png" alt="header-logo"></a> </div> <div class="navi"> <ul class="menu"> <li> <a href="#none">MENU-1</a> <div class="sub-menu"> <a href="#none">submenu-1</a> <a href="#none">submenu-2</a> <a href="#none">submenu-3</a> <a href="#none">submenu-4</a> </div> </li> <li> <a href="#none">MENU-1</a> <div class="sub-menu"> <a href="#none">submenu-1</a> <a href="#none">submenu-2</a> <a href="#none">submenu-3</a> <a href="#none">submenu-4</a> </div> </li> <li> <a href="#none">MENU-1</a> <div class="sub-menu"> <a href="#none">submenu-1</a> <a href="#none">submenu-2</a> <a href="#none">submenu-3</a> <a href="#none">submenu-4</a> </div> </li> <li> <a href="#none">MENU-1</a> <div class="sub-menu"> <a href="#none">submenu-1</a> <a href="#none">submenu-2</a> <a href="#none">submenu-3</a> <a href="#none">submenu-4</a> </div> </li> </ul> </div> <div class="spot-menu"> <a href="#none">로그인</a> <a href="#none">회원가입</a> </div> </header> </div> <div class="right"> <div class="slide"> <div class="slide-img"> <div class="slide-image-inner"> <a href="#none"><img src="images/slide-d-01.jpg" alt="slide 1"></a> <a href="#none"><img src="images/slide-d-02.jpg" alt="slide 2"></a> <a href="#none"><img src="images/slide-d-03.jpg" alt="slide 3"></a> </div> </div> <div class="slide-banner"> <a href="#none"><img src="images/banner-01.png" alt="banner 1"></a> <a href="#none"><img src="images/banner-02.png" alt="banner 2"></a> <a href="#none"><img src="images/banner-03.png" alt="banner 3"></a> </div> </div> <div class="items"> <div class="shortcut"> <img src="images/shortcut-01.png" alt="shortcut 1"> <div class="shortcut-content"> <h2>얼리버드 선착순 할인 이벤트, 신규강의 최대 30% 할인</h2> <p> 12월은 사랑의 달~ 코딩웍스에서 여러분께 사랑을 뿌려요~ 12월 개강반을 12월 06일까지 접수하는 분들께는 15%~ 20% 의 얼리버드 할인을 제공합니다. 더불어 소중한 리뷰를 꼼꼼히 남겨주시는 분들을 뽑아 더 큰 적립금을 추가지급해 드릴 예정이오니 리뷰도 놓치지 마시고 작성해주세요~^^ <br><b>기간: 2022년 12월 18일~ 12월 25일</b> </p> </div> <a href="#none"><img src="images/shortcut-02.png" alt="shortcut 2"></a> </div> <div class="news"> <div class="tab-inner"> <div class="btn"> <a class="active" href="#none"><span>공지사항</span></a> <a href="#none"><span>갤러리</span></a> </div> <div class="tabs"> <div class="tab1"> <a class="open-modal" href="#none">스트리밍 서버 이전 작업으로 2시간 서비스 중지<b>2022.12.20</b></a> <a href="#none">얼리버드 선착순 할인 이벤트 최대 50% 할인<b>2022.10.13</b></a> <a href="#none">내 집 마련의 꿈을 꿈이 아닌 현실로 만드는 진짜 방법<b>2022.11.31</b></a> <a href="#none">외국인과 영어로 네이티브처럼 대화하는 노하우!<b>2022.08.09</b></a> <a href="#none">월 500만원 매출을 내는 블로그 운영하는 노하우<b>2022.07.07</b></a> </div> <div class="tab2"> <a href="#none"><img src="images/gallery-01.png" alt="gallery 1"><span>퍼블리셔 취업</span></a> <a href="#none"><img src="images/gallery-02.png" alt="gallery 2"><span>퍼블리셔 취업</span></a> <a href="#none"><img src="images/gallery-03.png" alt="gallery 3"><span>퍼블리셔 취업</span></a> <a href="#none"><img src="images/gallery-04.png" alt="gallery 4"><span>퍼블리셔 취업</span></a> <a href="#none"><img src="images/gallery-05.png" alt="gallery 5"><span>퍼블리셔 취업</span></a> <a href="#none"><img src="images/gallery-06.png" alt="gallery 6"><span>퍼블리셔 취업</span></a> <a href="#none"><img src="images/gallery-07.png" alt="gallery 7"><span>퍼블리셔 취업</span></a> </div> </div> </div> </div> </div> </div> </div> <footer> <div class="footer-logo"> <a href="#none"><img src="images/footer-logo.png" alt="footer-logo"></a> </div> <div class="footer-content"> <div class="footer-link"> <a href="#none">기업소개 제휴 및 입점 문의</a> <a href="#none">이용약관</a> <a href="#none">개인정보처리방침</a> <a href="#none">이메일무단수집거부</a> <a href="#none">사이트맵</a> <a href="#none">인재채용</a> </div> <div class="copyright"> 상호 : (주)코딩웍스 | 대표자 : 홍길동 | 개인정보관리책임자 : 성춘향 부장 br사업장주소 : 경기도 남양주시 별내동 1234 코딩웍스 빌딩 6층 (주)코딩웍스 </div> </div> </footer> </div> <div class="modal"> <div class="modal-content"> <h2>스트리밍 서버 이전으로 서비스 장애</h2> <p> 스트리밍 서버 이전 작업으로 2시간 서비스 중지됩니다. 주요 작업 내용은 아래와 같습니다. <br><br>1. 서버 이전에 따른 DNS 이전으로 기존 호스팅 서비스 대체 <br>2. 문자셋을 utf-8로 변경 후 모바일 등에 대처하기 위해 미리 조치 <br>3. 스트리밍 서버 CDN과 연동 후 멀티미디어 이러닝 서비스가 제공 <br><br>위 내용을 보시면 제법 큰 작업이었음을 알 수 있습니다. 특히 문자셋의 변경에 따라 기존의 DB, data, 웹사이트 솔루션 등의 커스트마이징 등에 상당한 어려움이 있었고, 이에 따른 일부 접속 오류가 있을 수 있었음에 양해를 구합니다. 특히 인터넷익스플로러 11로 접속하셨을 경우 일부 문제은행 목차가 출력되지 않았을 수도 있습니다. <br><br>서버 이전 작업으로 고객님들께 불편을 드려서 대단히 죄송합니다. 정상 운영되도록 최선을 다하겠습니다. 감사합니다. </p> <a href="#none"><div class="close-modal">닫기</div></a> </div> </div> <script src="script/jquery-1.12.4.js"></script> <script src="script/custom.js"></script> </body> </html>@charset "utf-8"; body { margin: 0; background-color: #fff; color: #333333; } a { text-decoration: none; color: inherit; } .container {} .main-content { display: flex; } .main-content > div { /* border: 1px solid red; */ } .left { width: 200px; } header {} header > div { /* border: 1px solid blue; */ } .header-logo { height: 150px; line-height: 170px; } .navi { /* height: 400px; */ } .menu { list-style: none; width: 90%; margin: 20px auto; padding: 0; } .menu li { position: relative; } .menu li > a { padding: 7px; border: 1px solid black; display: block; transition: 0.5s; } .menu li:hover > a { background-color: #00000021; } .sub-menu { position: absolute; left: 100%; top: 0; width: calc(100vw - 209px); padding: 8px; background-color: #00000021; z-index: 10; display: none; } .sub-menu > a { width: 120px; display: inline-block; transition: 0.5s; text-align: center; } .sub-menu > a:hover { background-color: #000; color: #fff; } .spot-menu { height: 50px; text-align: center; } .spot-menu a:after { content: "|"; margin: 8px; } .spot-menu a:last-child:after { content: none; } .right { flex: 1; } .slide { position: relative; height: 400px; } .slide > div { /* border: 1px solid green; */ } .slide-img { height: 400px; } .slide-image-inner { height: inherit; } .slide-image-inner a { visibility: hidden; position: absolute; height: inherit; top: 0; left: 0; width: 100%; animation: slide 10s linear infinite; opacity: 0; } .slide-image-inner a:nth-child(1) { animation-delay: 0s; } .slide-image-inner a:nth-child(2) { animation-delay: 3.5s; } .slide-image-inner a:nth-child(3) { animation-delay: 7s; } .slide-image-inner a img { height: inherit; width: inherit; object-fit: cover; } @keyframes slide { 0% { opacity: 0; } 5% { opacity: 1; } 35% { opacity: 1; } 40% { opacity: 0; } 100% { opacity: 0; } } .slide-banner { top: 0; right: 0; position: absolute; width: 150px; height: 300px; float: right; } .slide-banner a {} .slide-banner a img { width: 150px; display: block; } .items {} .items > div { /* border: 1px solid pink; */ } .shortcut { /* border: 1px solid black; */ height: 200px; display: flex; align-items: center; gap: 25px; margin: 0 20px; } .shortcut > img {} .shortcut > a {} .shortcut h2 {} .shortcut p {} .shortcut p b {} .news { height: 250px; } .tab-inner { width: 95%; margin: auto; margin-top: 25px; } .btn {} .btn a { width: 100px; text-align: center; display: inline-block; border: 1px solid black; margin-right: -6px; border-bottom: none; border-radius: 5px 5px 0 0; background-color: #ddd; margin-bottom: -1px; padding: 4px; } .tabs {} .tabs > div {} .tab1 { background-color: #fff; border: 1px solid black; padding: 6px; } .tab1 a { border-bottom: 1px dashed black; padding: 6px; display: block; } .tab1 a:last-child { border-bottom: none; } .tab1 a b { padding-right: 100px; float: right; font-weight: normal; } .tab2 { display: none; border: 1px solid black; padding: 20px; height: 140px; text-align: center; /* box-sizing: border-box; */ } .tab2 a { display: inline-block; text-align: center; margin: 0 15px; } .tab2 img { width: 200px; } .tab2 a span { display: block; } .btn a.active { background-color: #fff; } footer { display: flex; } footer > div { /* border: 1px solid blue; */ height: 120px; } .footer-logo { width: 200px; line-height: 180px; } .footer-content { flex: 1; } .footer-content > div { /* border: 1px solid green; */ height: 60px; /* box-sizing: border-box; */ /* padding: 0 20px; */ } .footer-link { padding-top: 30px; box-sizing: border-box; } .footer-link > a:hover { text-decoration: underline; color: blue; } .footer-link a::after { content: "|"; margin: 0 8px; color: #ccc; } .footer-link a:last-child:after { content: none; } .copyright { /* padding-top: -100px; */ } .modal { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #0000003b; display: none; } .modal-content { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); background-color: #fff; padding: 20px; width: 500px; } .close-modal { float: right; border: 1px solid black; padding: 2px; } $('.menu li').mouseenter(function(){ $('.sub-menu').stop().fadeIn() }); $('.menu li').mouseleave(function(){ $('.sub-menu').stop().fadeOut() }); $('.btn a:first-child').click(function(){ $('.tab1').show() $('.tab2').hide() $(this).addClass('active') $(this).siblings().removeClass('active') }); $('.btn a:last-child').click(function(){ $('.tab1').hide() $('.tab2').show() $(this).addClass('active') $(this).siblings().removeClass('active') }); $('.open-modal').click(function(){ $('.modal').fadeIn() }); $('.close-modal').click(function(){ $('.modal').fadeOut() });