728x90

목동코딩학원: 카카오 맵 사용하는 방법

카카오 지도에 DB에서 가져온 주소로 위치를 마커할 필요가 있을때 사용하면 된다

<script type="text/javascript">
var daum_wrap,
    mapContainer,
    mapOption = {
        center: new kakao.maps.LatLng(37.521139, 126.873561), // 기본위치 중심좌표
        level: 5 // 지도의 확대 레벨
    },
    map,
    geocoder = new kakao.maps.services.Geocoder(),
    marker,
    mobileScroll = 0;

$(document).ready(function () {
    var geocoder = new kakao.maps.services.Geocoder();
    var funeralName = "주소";
    geocoder.addressSearch(funeralName, function(result, status) {
        if (status === kakao.maps.services.Status.OK) {
            daum_wrap = document.getElementById('address_funeral')
            mapOption.center = new kakao.maps.LatLng(result[0].y, result[0].x)
            mapContainer = document.getElementById('map')
            map = new kakao.maps.Map(mapContainer, mapOption)
            marker = new kakao.maps.Marker({
                    position: new kakao.maps.LatLng(result[0].y, result[0].x),
                    map: map
            });
        }

    });

});
</script>
728x90
728x90

- AI 플랫폼 개발자 양성 과정 -

참여자 모집을 아래와 같이 공모합니다.

 

◯ 혜 택 : AI 플랫폼 개발자 양성 과정의 뉴딜일자리 사업은 기업에 필요한 맞춤형 교육(교육비 0원)으로 인재를 양성하고 3개월 교육 후 3개월의 인턴으로 실전 직무수행 경험을 쌓으면서 서울시에서 지원하는 지원금으로 인턴 수행기간 중 급여를 제공. 교육기간 중 인턴‧취업‧창업에 대한 다양한 교육과 컨설팅을 지원하며 인턴 기간 중 취업‧창업에 대한 멘토를 통해 적극적인 포트폴리오 등 지원

◯ 과 정 명 : AI 플랫폼 개발자 양성 과정

◯ 교육내용 : AI 기술의 개발 능력을 갖춘 인재의 양성을 통해 서울시 소재 AI 및 IT 중소(벤처)기업들의 AI 개발 기반을 지원하고 청년의 취업‧창업 역량을 강화하기 위한 목적의 교육을 진행

◯ 대 상 : 만 18세~39세 이하의 서울시민 (주민등록상 서울 거주자만 가능)대학 졸업(예정)자

◯ 모집기간 : 2023. 04. 03.(화) ~ 05. 12.(금)

◯ 교육기간 : 2023. 05. 15.(월) ~ 08. 10.(목)

◯ 교육위치 : 서울시

◯ 모집인원 : 20명

◯ 인턴기간 : 2023. 08. 01.(화) ~ 10. 31.(금) (약 3개월)

◯ 인턴급여 : 인턴기간 월 2,331,000원 지급

◯ 요청사항 : 과정 참여자(연수생) 모집 협조

◯ 기대효과 : 대학교 – 취업률 제고 / 전공 미적용자에 대한 취업‧창업 연계 해결참여자 – 일자리 경험과 실질적인 취업‧창업 도모 – AI 플랫폼 개발 능력 향상 및 기업 인턴 제공

◯ 참가방법 : ‘[붙임] 사업 참여 신청서 등 제출 서식’작성 후 메일 제출

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

728x90
728x90

오랬동안 프로그램을 해왔지만 파이썬에는 처음보는 신기한 문법이

많아서 자주 공부를 해야한다.

이번에는 @표시가 붙은 파이썬 소스를 공부 하다가 궁굼해서 검색을 해보니 데코레이터가는 개념이 있어서 chatGPT의 도움을 받아서 정리 한다.

파이썬 문장에 @의미

파이썬에서 '@' 기호는 주로 데코레이터(Decorator)라는 개념과 함께 사용됩니다. 데코레이터는 파이썬에서 함수나 클래스를 수정하지 않고 기능을 추가하거나 수정할 수 있는 기능을 제공합니다.

데코레이터는 기존 함수나 클래스를 래핑하며, '@' 기호를 사용하여 함수나 클래스 위에 위치시킵니다. 예를 들어, '@classmethod'는 클래스 메소드를 정의할 때 사용되며, '@property'는 클래스 속성을 호출하는 메소드를 정의할 때 사용됩니다.

또한, '@' 기호는 데코레이터 외에도 다른 용도로 사용될 수 있습니다. 예를 들어, '@' 기호를 사용하여 데코레이터 없이도 함수나 클래스를 동적으로 호출하거나 참조할 수 있습니다. 이러한 용도로 '@' 기호를 사용하는 경우는 비교적 드물지만, 파이썬에서 많이 사용되는 기능 중 하나입니다.

파이썬에서 데코레이터(Decorator)라는 개념

파이썬에서 데코레이터(Decorator)는 기존 함수나 클래스를 수정하지 않고 기능을 추가하거나 수정할 수 있는 기능을 제공하는 문법적인 요소입니다.

데코레이터는 함수나 클래스의 정의 위에 '@' 기호와 함께 선언됩니다. 데코레이터는 함수나 클래스를 래핑하며, 래핑된 함수나 클래스를 호출할 때 데코레이터가 추가한 기능을 실행합니다.

데코레이터는 주로 코드의 재사용성과 가독성을 높이는 데에 활용됩니다. 또한, 파이썬에서 많이 사용되는 라이브러리들도 데코레이터를 많이 활용하고 있습니다. 예를 들어, Flask 웹 프레임워크에서는 데코레이터를 사용하여 URL 경로와 뷰 함수를 연결하고, Django 웹 프레임워크에서는 데코레이터를 사용하여 로그인 여부나 권한을 검사하는 등의 기능을 추가합니다.

데코레이터를 만드는 방법은 간단합니다. 일반적으로 데코레이터 함수를 작성하고, 이 함수 내부에서 래핑된 함수나 클래스를 받아 기능을 추가한 뒤, 새로운 함수나 클래스를 반환합니다. 이렇게 만들어진 데코레이터는 기존 함수나 클래스 위에 '@' 기호를 붙여 적용할 수 있습니다.

 

 

예제 프로그램

import time

def time_it(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"실행 시간: {end - start:.5f}초")
        return result
    return wrapper

@time_it
def my_function():
    time.sleep(1)

my_function()

-----------
실행 시간: 1.00009초

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

728x90
728x90

[뉴패러다임 챗(chat)GPT 시대, AI 기반 디지털 맞춤형 교육 학습관리시스템(LMS) 초 개인화]

- 챗(chat)GPT 시대에 학습자(학생 등) 교육 디지털 전환 가속화에 따른 개별 맞춤형 학습 시스템에 AI 활용 교수·학습법, AI 튜터링 기능, 디지털 문해력 등 챗(chat)GPT 시대 학습자(학생 등)의 효과적인 교수학습을 위하여 교육과정에 대한 운영계획을 수립하고, 학습자와 교·강사의 활동을 촉진하며, 학습콘텐츠 및 시스템의 운영을 지원하는 직무영역이 필요하다.

그리고

- 초기화 AI 지능화혁명 시대 필수 생존기술의 'AI 문해력(AI Literacy) 키우기'

- 특히, 2025년부터 수학·영어·정보 교과에 'AI 디지털교과서'를 학교에 도입된다.

'AI 디지털교과서'는 2025년에부터 초등학교 3·4학년, 중학교 1학년, 고등학교공통·일반선택 과목부터 적용이 된다.

<참조 자료, 경기도교육청, '미래교육' 현실화.. AI 활용 에듀테크 추진 :

 

https://v.daum.net/v/20230309153034251

 

경기도교육청, '미래교육' 현실화.. AI 활용 에듀테크 추진

9일 경기도교육청에서 조영민 미래교육담당관이 에듀테크 활용 교육 활성화 계획을 발표하고 있다.(사진=경기도교육청) [수원=이데일리 황영민 기자] 경기도교육청이 미래교육 중심 학교 교육

v.daum.net

 

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

 

 

 

728x90
728x90

ID가 중복되는 문제는 일반적으로 개발 중에 발생하는 일입니다. 이 문제를 해결하는 방법 중 하나는 생성된 각 요소에 고유한 ID를 할당하는 것입니다. 이를 위해 JavaScript에서는 UUID (Universally Unique Identifier)를 생성하는 함수를 제공합니다.

예를 들어, 새로운 <DIV> 요소를 생성할 때마다 UUID를 생성하여 해당 <DIV> 요소의 ID로 할당할 수 있습니다. 다음은 JavaScript에서 UUID를 생성하는 방법입니다.

function generateUUID() {
  var d = new Date().getTime();
  if (typeof performance !== 'undefined' && typeof performance.now === 'function'){
      d += performance.now();
  }
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
      var r = (d + Math.random() * 16) % 16 | 0;
      d = Math.floor(d / 16);
      return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  });
}

이제 각 <DIV> 요소를 생성할 때마다 위의 함수를 사용하여 고유한 ID를 생성하고 할당할 수 있습니다.

var newDiv = document.createElement("div");
newDiv.id = generateUUID();
​

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

 

728x90
728x90

전화번호 입력시 "-"를 추가하는 방법은 다양하게 있지만, 가장 간단한 방법은 문자열을 자르고 다시 합치는 것입니다. 아래는 예시 코드입니다.

function formatPhoneNumber(number) {
  // 문자열에서 숫자만 추출합니다.
  const cleaned = ('' + number).replace(/\D/g, '');

  // 숫자를 하이픈으로 구분합니다.
  const match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/);
  if (match) {
    return match[1] + '-' + match[2] + '-' + match[3];
  }
  
  // 형식에 맞지 않는 경우 원본 값을 그대로 반환합니다.
  return number;
}

// 사용 예시
const phoneNumber = '1234567890';
const formattedPhoneNumber = formatPhoneNumber(phoneNumber);
console.log(formattedPhoneNumber); // 출력 결과: "123-456-7890"

위 코드에서 formatPhoneNumber 함수는 전화번호를 입력받아 하이픈을 추가한 형식으로 반환합니다. cleaned 변수는 문자열에서 숫자만 추출한 결과를 담고, match 변수는 추출한 숫자를 하이픈으로 구분한 결과를 담습니다. 만약 전화번호가 형식에 맞지 않는 경우에는 원본 값을 그대로 반환합니다

아래는 onkeydown 이벤트를 이용하여 입력시 마다 표시하는 방법입니다

 <input type="text" id="phoneNumber" onkeydown="formatPhoneNumber(event);">
 <script>
// 자바스크립트 코드
function formatPhoneNumber(event) {
    var pno = document.getElementById("phoneNumber");
    var pnoValue = pno.value;
    var pnoLen = pnoValue.length;
    console.log(event + " : " + event.keyCode);

    if(event.keyCode != 8){
        if(pnoLen == 3){
            pno.value =  pnoValue + "-";
        }
        if(pnoLen == 8){
            pno.value =  pnoValue + "-";
        }
        if(pnoLen > 12){
            pno.value =  pnoValue.substring(0,12) ;
        }
    }
}
</script>

위 코드에서 input 요소에 onchange 이벤트를 추가하고, formatPhoneNumber 함수를 호출하도록 설정했습니다. formatPhoneNumber 함수는 입력된 전화번호를 가져와 문자열에서 숫자만 추출한 후, 하이픈을 추가한 형식으로 다시 input 요소에 설정합니다.

위 방법은 사용자가 입력을 마치고 포커스가 이동한 후에만 하이픈을 추가하게 됩니다. 만약 입력 중에도 실시간으로 하이픈을 추가하고 싶다면 oninput 이벤트를 사용할 수 있습니다.

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

 
 
 
 
728x90
728x90

 

목동코딩 : AI-Academy.kr

 

프로젝트를 진행하다 보면 항상 변수가 발생한다.

왜냐하면 Client의 요구사항이 항상 이상적인 것을 향하기 때문이다.

이번 프로젝트에서 계좌번호를 복사하여 사용하는 기능이 필요했다. 아래와 같은 방법을 사용하면 잘 작동했다.

문제는 modal 폼을 사용할때 이다.

인터넷을 검색해 보니

" clipboard.js 와 bootstrap Modal을 사용하면 정상 작동 하지 않는 이슈가 있다."

 

문제 원인은.

"modal에서 모달창의 focus 상태를 유지하기 위해 강제 포커스를 시키는 함수로 인해 클립보드에 복사하려는 지점의 위치를 잃게되는 이슈"이다.

 

이것을 해결하는데 이틀을 허비했다.

항상 이럴때 마다 느끼는 것은 전진을 못하고, 제자리 걸음을 한 기분이다. 물론 맨손 체조를 해도 효과가 있으니 단순한 제자리 걸음은 아니었기를 바란다

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.10/clipboard.min.js"></script>

    <title>Clipboard Copy</title>
</head>
<body>
  
 <input type="button" id="test" value="내용 복사하기" data-clipboard-text="copy sentence"/>
  
 <script>
     $(function () {
         var clipboard = new ClipboardJS('#test');
  
         clipboard.on('success', function () {
             alert("복사되었습니다.");
         });
     });
 </script>
</body>
</html>

애가 작성한 코드는 <span> 태그를 사용했다

그래서 아래와 같은 방법으로 해결했다

<span ><textarea id="id" style="height:30px;border: none;resize: none;"><?=$list_bank_number3[$i]?></textarea></span>

 

이제 잘 작동한다

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

 

 

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

728x90
728x90

파이썬에서 함수는 하나 이상의 값을 반환할 수 있습니다.

함수에서 여러 개의 값을 반환하려면, return 키워드 다음에 반환할 값을 쉼표로 구분하여 나열합니다.

아래는 두 개의 값을 반환하는 예시입니다.

def get_name_and_age():
    name = "John"
    age = 30
    return name, age

위의 함수는 이름과 나이 두 개의 값을 반환합니다. 함수를 호출하면, 반환된 값들은 튜플(tuple) 형태로 반환됩니다.

name, age = get_name_and_age()
print(name)  # 출력 결과: John
print(age)   # 출력 결과: 30

위의 코드에서 get_name_and_age() 함수를 호출하면, name 변수에는 "John"이, age 변수에는 30이 할당됩니다.

또 다른 예시로, 아래와 같이 딕셔너리(dictionary) 형태로 값을 반환할 수도 있습니다.

def get_person_info():
    name = "Jane"
    age = 25
    address = "Seoul"
    return {"name": name, "age": age, "address": address}

위의 함수에서는 이름, 나이, 주소를 딕셔너리 형태로 반환합니다. 함수를 호출하면, 반환된 값은 딕셔너리 형태로 반환됩니다.

person_info = get_person_info()
print(person_info["name"])     # 출력 결과: Jane
print(person_info["age"])      # 출력 결과: 25
print(person_info["address"])  # 출력 결과: Seoul

위의 코드에서 get_person_info() 함수를 호출하면, person_info 변수에 딕셔너리 형태로 값이 할당됩니다. 딕셔너리에서 각 값을 가져오려면, person_info 딕셔너리의 키(key)를 사용하여 값을 가져올 수 있습니다.

 

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업,인공지능프로젝트

728x90

+ Recent posts