전체 글 154

[Toy Project]Tiger-Bot 만들기 - Face Recognition

사람 얼굴을 사람 얼굴로 인식하고 락온이 되는 것까진 좋은데 찾다보니 생각보다 간단하게 누가 누군지 인식이 가능하도록 셋업이 가능하겠지 싶다. 파이썬 모듈로 나와있는 face_recognition을 사용하면 되는 것 같다. 우선 최소한의 코드만 작성 후 내 셀피(...)를 저장한 폴더 경로에서 이미지들을 가져다가 face_recognition의 compare_faces 함수를 사용하여 웹캠이 비추는 화면에서 저장 경로의 얼굴 이미지들과 유사한 얼굴을 찾아준다. 그렇게 찾은 얼굴의 중심점을 기준으로 사각형을 그어주고 아래에는 이름을 띄워주었다. 잘 동작하는 것을 확인 후 기존 face tracking 파이썬 코드와 integrate 해줬다.  import cv2import numpy as npimport ..

[Active Directory] 부서장 기준으로 소속인원 정보 변경

기존 부서에서 독립하여 새로운 부서가 신설된다.깔끔하게 신설 부서 인원들의 리스트를 나한테 전달해줬으면 좋았겠지만 그런 일은 일어나지 않지.신설 부서의 부서장을 알려주며 기존에 그 부서장 리포팅 라인에 있는 모든 인원들이 그 부서로 편성된다고. 즉, 해당 부서장을 직속 상사로 두는 사람들, 그리고 그 사람들을 직속상사로 두는 사람들, 또한 그들을 직속상사로 두는 사람들... 과 같이 타고 들어가야한다.  이런 경우 일종의 BFS 알고리즘을 사용하면 간단하다. # 조회가 필요한 유저들이 들어가 있는 OU 경로들을 리스트로 묶음$searchBases = @( "OU=", "OU=", "OU=", etc...)# 조회가 필요한 유저들을 담아줄 리스트를 선언$users = @()# OU경로들에 ..

At actual field 2025.03.14

[Toy Project]Tiger-Bot 만들기 - Talking [1]

얼굴을 따라서 머리를 요리조리 움직이는게 귀엽지만 뭔가 아쉽다.  서보모터가 하나 남아서 꼬리도 움직여줄까 싶긴한데 그건 나중에 기회가 되면 해보는걸로하고,  웹캠에 마이크가 붙어있는걸 보고 음성에 음성으로 답변하는 기능을 추가해봐야겠다는 생각이 들었다.  로직은 간단하게 될 듯 하다.  1. 소리를 녹음해주는 함수를 선언하고2. OpenAI의 API를 사용해서 Whisper 모듈로 녹음된 소리를 Text로 바꿔주는 함수 선언. Whisper는 제법 인식률이 높은 speech-to-text 모듈이라 실사용에 편할 것으로 추정3. 역시 OpenAI의 GPT 모듈을 사용해서 Text를 매개변수로 받으면 GPT의 답변을 return하는 함수 선언.4. Text를 음성으로 소리내주는 함수 선언.5. 1~2를 반..

[Toy Project]Tiger-Bot 만들기 - 몸체

기관부와 소프트웨어 정상 작동이 확인되었으니 몸체를 손봐야할 차례다. 대충 만들어본 뼈대를 인형의 몸에 맞게 좀 더 바꾸고 무엇보다 머리와 몸통의 연결부에 위화감이 없어야하면서도 웹캠이 과하게 아래나 위를 비추면 안된다. 그렇게해서 최종적으로 만들어진 몸체는 이렇다.  머리에서 오른쪽 눈을 떼어내고 웹캠 렌즈부를 눈 자리로 빼낸 후에 바느질하여 연결시켜줬다. 뼈대의 움직임에 따라 머리 전체가 움직이도록 머리 뼈대의 일부를 인형머리와 바느질해 결합해주었다.  기존에 열어뒀던 뒷통수는 바느질해서 닫아주였다.몸통 뼈대를 인형 몸 속에 넣고 머리를 결합했다.   잘 움직여준다. 아쉬운건 뼈대를 넣고나니 몸통 속에 아두이노를 넣을 공간이 나오지 않는다. 아예 밖으로 빼둬야할 듯 하다.

[Toy Project]Tiger-Bot 만들기 - 코드

이제 파이썬과 아두이노 코딩을 해야한다.  처음에는 https://projecthub.arduino.cc/Little_french_kev/face-tracking-camera-f391e1 여기 있는 코드를 사용했었으나 쓰다보니 아두이노-PC간 통신 문제가 발생하였는데 해결하지 못하여 다른 사람의 코드를 가져다가 쓰기로했다.  https://www.hackster.io/shubhamsantosh99/face-tracker-using-opencv-and-arduino-55412e Face Tracker Using OpenCV and ArduinoTrack your face using OpenCV's facial recognition. By Shubham Santosh.www.hackster.io결국 이 분의..

[Toy Project]Tiger-Bot 만들기 - 케이블링

가장 신경쓰이는 케이블링부터 해보았다. 케이블링을 잘 모르기에 온라인 사례를 참고했다.(https://projecthub.arduino.cc/Little_french_kev/face-tracking-camera-f391e1)먼저 기성 9볼트 어댑터에서 전원을 받기에 9볼트 잭의 양극과 음극을 5볼트 레귤레이터로 연결시켜준다. 양극은 따로 빼서 아두이노 기판으로.음극 또한 빼서 서보모터 두개와 아두이노로 각각 연결시켜보내줬으며 레귤레이터의 다른 다리는 서보모터 두개에 연결시켜 전원을 주었다. 직접 아두이노에 장착하는 것보다는 이렇게 별도의 전원을 연결하는 것이 안정적인 전원 수급이 가능할 듯 하다. 아두이노의 신호선 두개를 빼서 서보에 연결하면 완료. 이후 레고 테크닉 부속을 이용해 대략적인 몸체를 만들고..

[Toy Project] Tiger-Bot 만들기 - 구상

개인적으로 공부하던 것도 슬슬 흥미가 떨어지고 권태로워지는 듯 하다. 마냥 놀기보단 그래도 최소한의 생산적인걸 하고 싶고..기분전환 삼아 토이프로잭트를 하나 해야지 싶다.  옛날부터 건들어보고 싶던 소형기판 베이스로 임베디드 봇을 만들어볼까한다. 라즈베리파이 정도도 말고 아두이노로 간단하게. 마침 부서 동료가 어디선가 아기호랑이 인형을 얻어왔는데 빈자리에 굴러다니고 있어서 내가 가져가겠다고했다. 웹캠으로 얼굴을 인식해서 머리를 움직여서 트래킹하면 재밌겠지 싶다.   아두이노에 업로드할 코드는 온라인에서 구했다.  아두이노 코딩은 제대로 안해봐서 완전히는 파악이 아직 안되지만 기본적인 기능은; - 아두이노가 연결된 PC와 소통하며 인식된 안면의 좌표를 받아 팬서보와 틸트서보를 움직임- 서보의 움직임 값을 ..

Powershell을 통해 메일 전송

파워쉘로 메일 전송이 가능하다면 몇가지 업무를 자동화할 수 있을 것 같아 한두달 전부터 시도해봤는데 실패했었다. 드디어 전송에 성공하여 올리는 포스트. 먼저 Office 365 모듈을 설치해준다. 이 스크립트는 처음 한번만 런하면 된다. Install -Module -Name ExchangeOnlineManagement -Force -AllowClobber 내 M365 계정을 통해 메일을 전송해야하기에 인증 정보를 받아와야한다.  계속 실패했던 것이 이 부분이었는데, M365 계정 관리 페이지에서 보안 - 앱 암호 설정을 통해 앱 암호를 설정해주면 된다. My Sign-Ins | Security Info | Microsoft.com My Sign-Ins mysignins.microsoft.com 위의 웹..

At actual field 2024.06.09

Powershell을 통한 M365 그룹 생성 및 수정

파워쉘로는 대체 안되는게 뭘까. OS뿐만 아니라 다른 다양한 마이크로소프트 제품들도 핸들링이 가능한 것 같다. 회사 조직구조가 크게 개편되면서 Exchange Admin Center에서 Distribution List들을 잔뜩 수정해야할 일이 있었는데 단순 클릭과 타이핑의 연속이다보니 지루하기 짝이 없었다. 어쨌든 수정을 메뉴얼로 마치긴했는데 파워쉘로도 M365 그룹을 생성하거나 수정하는 등의 작업이 가능하다는걸 뒤늦게 알아냈다. 미리 좀 알아볼걸 아래는 각각 DL 생성과 DL, Shared Mailbox에 대한 수정 스크립트다.#Install-Module -Name ExchangeOnlineManagement -Force -AllowClobberConnect-ExchangeOnline -UserPrin..

At actual field 2024.05.18

Powershell로 Active Directory 퇴사자 계정 처리하기

신규입사자 계정 객체 생성 스크립트는 여러모로 보안이 신경쓰여 블로그에 포스팅을 못하고 있지만 퇴사자 처리는 괜찮을 것 같다.  역시나 민감한 부분은 Classified 처리. 퇴사자 계정처리는 계정생성보다 훨씬 간단하다. 부서별, 직무별 달라지는 property들이나 네이밍 규칙 등으로부터 자유롭기 때문.$allUsers = Get-ADUser -Filter * -Properties samAccountName, Manager$anotherLeaverFlag = $truewhile($anotherLeaverFlag){     $accName = Read-Host "퇴사자의 사번을 입력하세요"    $leaveUser = Get-ADUser -Filter {SamAccountName -eq $accName..

At actual field 2024.05.18