올해 2분기 국내 스마트폰 시장의 출하량이 약 299만대로 전년 대비 6.8% 성장했다고 IDC가 25일 밝혔다. 경제 불확실성으로 전체 스마트폰 시장의 수요가 위축되고 있는 상황이지만 AI 기능을 탑재한 플래그십 스마트폰의 높은 수요가 지속되고 있다는 분석이다.
이 시장조사기관에 따르면 800달러(USD)이상의 플래그십 제품군의 점유율이 전년 동기 대비 5.3%p 증가한 62.3%를 기록했다. 실시간 번역, 텍스트 요약, 간단해진 검색 등의 AI기술이 별도의 앱 설치 없이 기본 기능에 적용되며 복잡한 과정 없이 이용할 수 있다는 점이 소비자들의 관심을 유발했다는 설명이다.
이 밖에 주요 브랜드의 5G 플래그십 및 중저가 스마트폰이 출시로 인해 5G 점유율은 89.1%로 상승한 것으로 나타났다.
반면, 국내 폴더블 시장은 전년 대비 크게 감소한 약 6만대를 출하했다. 삼성전자가 3분기 폴더블 신제품 출시를 앞둔 가운데 AI 기능이 적용될 신제품의 기대감이 고조되며 일부 대기 수요가 발생했고 이로 인해 지난 분기에 이어 시장 수요가 급감한 것으로 IDC는 분석했다.
한국IDC에서 모바일폰 시장 리서치를 담당하고 있는 강지해 연구원은 “온디바이스AI 열풍이 가속화되며 시장 경쟁이 치열해지고 있고 전반적인 스마트폰 시장 내 흐름이 AI 스마트폰으로 완전히 옮겨가고 있다. 국내 생성형 AI 스마트폰 2024년 연간 출하량은 950만대를 밑돌 것으로 전망된다”라고 말했다.
IDC가 정의하는 생성형 AI 스마트폰은 정수형식의 8비트 데이터(int-8)를 사용하여 초당 30 TOPS(Tera Operations per Second) 이상의 성능을 갖춘 신경 처리 장치(NPU)를 활용해 온디바이스 GenAI를 보다 빠르고 효율적으로 실행할 수 있는 칩셋(SoC)을 탑재한 모델이다.https://www.ciokorea.com/news/351117
[python] 랜덤 6자리 문자열을 생성하고, 중복되지 않도록 파일명을 지정한 후 이미지 캡차를 저장. captcha
import random
import string
import os
from captcha.image import ImageCaptcha # ImageCaptcha 라이브러리를 사용해야 합니다.
# 랜덤 6자리 문자열 생성 함수
def generate_random_string(length=6):
characters = string.ascii_letters + string.digits # 영문 대소문자 + 숫자
return ''.join(random.choices(characters, k=length))
# 중복되지 않는 파일명 생성 함수
def get_unique_filename(base_name, extension, directory="./img/"):
counter = 1
new_filename = f"{base_name}.{extension}"
# 경로 내 파일명이 중복되면 새로운 파일명 생성
while os.path.exists(os.path.join(directory, new_filename)):
new_filename = f"{base_name}_{counter}.{extension}"
counter += 1
return new_filename
# 메인 로직
def main():
# 캡차 이미지 생성기 설정
image = ImageCaptcha(width=280, height=90)
# 랜덤 6자리 문자열 생성
captcha_text = generate_random_string()
print(f"\n랜덤 6자리 문자열: {captcha_text}")
# 이미지 생성
data = image.generate(captcha_text)
# 이미지 저장 경로 지정
img_directory = "./img/"
os.makedirs(img_directory, exist_ok=True) # img 폴더가 없을 경우 생성
# 중복되지 않는 파일명 생성
unique_filename = get_unique_filename(captcha_text, 'png', directory=img_directory)
# 이미지 파일 저장
image.write(captcha_text, os.path.join(img_directory, unique_filename))
print(f"이미지가 {unique_filename}으로 저장되었습니다.")
# 프로그램 실행
if __name__ == "__main__":
main()
수정 내용:
generate_random_string() 함수: 랜덤한 6자리 문자열을 생성합니다.
get_unique_filename() 함수: 파일명 중복을 방지하기 위해, 기존에 존재하는 파일이 있을 경우 숫자를 추가하여 고유 파일명을 생성합니다.
폴더 생성 (os.makedirs()): 이미지 저장 경로(./img/)가 존재하지 않으면 자동으로 폴더를 생성하도록 os.makedirs()를 사용합니다.
os.path.exists(): 파일이 존재하는지 확인하고 중복 파일명을 방지합니다.
경로 및 파일명 결합 (os.path.join()): OS에 관계없이 적절한 경로를 결합하기 위해 os.path.join()을 사용합니다.
일부 IT 리더들은 AI가 코드 작성에 더 능숙해지면서 소프트웨어 개발팀이 시니어 몇 명 수준으로 축소될 수 있다고 내다봤다. 초기 성과는 각기 다르지만, 결과는 분명해 보인다. 생성형 AI 코딩 어시스턴트가 소프트웨어 개발팀의 구성 방식을 바꾸고, QA와 주니어 개발자의 일자리는 위험에 처할 수 있다는 것이다.
일부 IT 리더는 AI 어시스턴트가 코드 작성을 더 잘하게 되면서 CIO와 개발 리더들이 AI 전문가와 선임 개발자를 중심으로 팀을 재편해 AI 생성 코드를 감독하게 할 수 있다고 말했다.
클라이밋 테크 전략 어드바이저의 설립자이자 차량-그리드 간 애플리케이션 제공업체 페르마타 에너지의 전 개발팀장인 안나 데메오는 애플리케이션 개발팀이 더 간소화되고, 남은 시니어 개발자들이 제품 요구 사항을 소프트웨어 개발로 옮기는 일에 집중하게 될 것이라고 전망했다.
데메오는 특히 기업들이 AI 코딩 어시스턴트에 의존하면서 주니어 개발자, 인턴, 경우에 따라서는 제품 관리자의 역할을 AI로 대체할 것이라고 예상했다. 그는 “큰 팀에는 항상 A 플레이어와 B 플레이어가 있다. C 플레이어는 없길 바라지만 그들도 존재한다. AI는 어떤 면에서 C나 B 플레이어의 설 자리를 더 줄일 수 있다”라고 말했다.
그는 남은 개발자들이 이제 비즈니스 요구사항을 이해하고 제품 전문가, 마케팅 부서, 기타 직원들과 교차 기능팀에서 활약할 수 있는 비판적 사고를 가져야 한다고 조언했다.
‘편집자’로서의 개발자 데메오는 이미 일부 고객사가 AI를 중심으로 개발팀을 재편하고 있으며 시니어 개발자나 소프트웨어 아키텍트가 AI 생성 코드를 감독 및 수정하고 있다고 말했다. 그는 다양한 역할에 영향을 미치고 있는 이런 변화를 소설 출판 과정에 비유했다.
데메오는 “개발자는 더 이상 작가가 아니라 편집자다. 시니어 개발자는 콘텐츠와 독자가 누구인지, 다시 말해 고객이 누구이며 조직이 무엇을 달성하려고 하는지 이해해야 한다”라고 설명했다.
세일즈포스용 데브옵스 플랫폼 제공업체 코파도(Copade)의 에반젤리즘 담당 수석 부사장인 데이비드 브룩스는 미래의 개발팀이 제품 매니저 또는 비즈니스 분석가, UX 디자이너를 비롯해, AI 도구로 프로토타입을 생성한 다음 출시 준비가 될 때까지 코드를 조정하는 소프트웨어 아키텍트 등으로 구성될 것이라고 말했다. 그는 보안 및 규정 준수 검토 등의 나머지 소프트웨어 개발 역할을 AI가 담당할 가능성이 높다고 언급했다.
브룩스는 “언젠가는 현재의 소프트웨어 개발 일자리가 없어질 수 있다. 그렇다면 주니어 소프트웨어 개발자가 가장 먼저 피해를 볼 것"이라며 "소프트웨어 아키텍트는 코딩 대신 더 높은 수준의 시스템을 설계하며 AI가 생성한 솔루션을 확인하는 일을 주로 맡게 될 수 있다"라고 설명했다.
브룩스는 몇 가지 난관도 있다면서, 특히 다음 세대의 소프트웨어 아키텍트를 양성하는 일이 주요 과제라고 언급했다. 주니어 개발자 일자리가 줄어들면 더 높은 직급으로 자연스럽게 올라갈 수 있는 길인 도제식 교육도 이뤄질 수 없기 때문이다.
확산되고 있는 코딩 어시스턴트 개발팀 재편이 얼마나 빨리 이뤄질지는 불분명하지만,깃허브가 최근 실시한 설문조사에 따르면 개발자들 사이에서 AI 코딩 어시스턴트의 사용은 이미 확산되고 있다. 4개국 개발자의 97% 이상이 직장에서 AI 코딩 어시스턴트를 사용한 적이 있다고 답했는데, 이는 코딩 어시스턴트가 오늘날 생성형 AI의최대 인기 사용 사례중 하나라는 업계의 관측과 일맥상통한다.
깃허브는 지난 1월 말 기준 코파일럿 코딩 어시스턴트 사용자가130만 명으로 전 분기 대비 30% 증가했다고 밝혔다. 마이크로소프트에 따르면 지난 7월 말까지 7만 7,000개 이상의 조직에서 코파일럿을 도입했다.
한편 온라인 교육 제공업체 플루럴사이트의 최근 연구 결과에 따르면, 조사에 참여한 IT 전문가의 약 4분의 3이 AI로 인해 자신의 기술이 쓸모없게 될 것을우려하고 있었다.
또한 일부 전문가는 많은 개발팀이 빠른 시일 내에 AI를 최대한 활용하기 위해 노력하는 상황에서 AI의 영향이 장기적으로 나타날 전망이라고 언급했다.
IT 컨설팅 및 서비스 제공업체 인텔리버스(Intelibus)의 설립자 에드 와탈은 기존 팀의 생산성을 높이고 AI 프롬프트 엔지니어링 기술을 구축하는 데 추가 코치가 필요하기 때문에 향후 1~2년 내에 개발팀 규모가 실제로 더 커질 수 있다고 말했다. 하지만 3명의 소프트웨어 엔지니어가 과거 5~6명이 하던 코딩 업무를 할 수 있기 때문에 장기적으로는 개발팀이 점점 더 축소될 것이라고 덧붙였다.
와탈은 더 많은 직원이 AI와 로우코드/노코드 도구를 사용해 애플리케이션을 작성하게 되면 기존 개발팀의 혼란이 가중될 수 있다면서, “직원들은 AI 생성 코드가 어떻게 작동하는지 깊이 이해하지 못할 수 있지만 코드를 작성할 역량은 충분하다”라고 언급했다.
많은 IT 리더들이 AI 코딩 어시스턴트가 궁극적으로 개발자 일자리를 줄일 것이라고 예측했지만, 일부 개발 리더들은 AI를 사용한 코드 작성과 디버깅이 현명한 방법인지 의문을 제기하기도 했다.
과대 평가된 장점? 코드 테스트 솔루션 기업 소스랩스의 수석 테스트 전략가인 마커스 머렐은 일부 조직이 AI 코딩 어시스턴트로 절약되는 시간을 과대 평가했을 수 있다고 말했다. 그는 개발자 생산성을 약 30% 개선한다는 것이 좋은 출발점으로 작용할 수는 있지만 근본적인 변화로 이어질 정도는 아니라고 지적했다.
머렐은 “오늘날 현장에서는 팀들이 이런 도구를 통해 엄청난 이익을 얻을 수 있다고 생각해 도구에 과잉 투자하거나, 구조 및 프로세스 변경을 과도하게 진행하거나, AI 도구의 예상되는 장점만 갖고 이미 계획했던 직원 감축을 한층 더 심화하는 모습을 볼 수 있다”라고 지적했다.
머렐은 생성형 AI가 개발자 일자리를 대체할 것이라고 생각하지 않으며, 그보다 로우코드/노코드 도구가 더 큰 영향을 미칠 수 있다고 내다봤다. AI 코딩 실험이 적당한 성공을 거두며 계속되더라도 결국 AI 대기업들은 막대한 투자액만큼의 수익을 거둬야 하기 때문이다.
머렐은 “앞으로 2~3년간 이 기술에서 온갖 생산성을 짜내기 위해 노력한 다음에는, 결국 허울에 불과했다는 것을 인정하는 데까지 매우 오래 걸릴 수 있다. 우려되는 점은 도구에 익숙해지고 나면 기업들이 모델을 운영하는 데 드는 비용을 청구하기 시작한다는 것이다. 그 때가 되면 시스템에는 큰 충격을 줄 수 있다”라고 진단했다.
민감하거나 논란의 여지가 있는 주제, 또는 감정이 격해질 문제를 다루기란 쉽지 않다. 이를 위해서는 감성 지능, 공감 능력, 그리고 적극적으로 경청하는 태도가 필요하다.
IT 리더는 많은 과제에 직면하지만, 신뢰할 수 없거나 업무를 소홀히 하는 직속 직원, 특히 팀장급 직원을 다루는 것만큼 어려운 일은 많지 않다.
스킬소프트(Skillsoft)의 CIO 올라 달리는 관리자나 임원이 직속 직원과 솔직한 대화를 해야 하는 여러 이유가 있다면서도, “근본적으로 개인이 성과 기대치를 충족하고 팀과 전반적인 문화에 긍정적으로 기여하고 있는지 여부가 중요하다”라고 말했다.
대화의 성공 여부는 다양한 관점을 이해하고, 명확하게 소통하며, 메시지가 어떻게 받아들여지는지 관찰하는 능력에 달려 있다.
어려운 대화를 덜 고통스럽고 더 효과적으로 만드는 6가지 방법을 소개한다.
1. 열린 태도 유지하기 달리는 열린 태도를 갖고 사실에 기반해 대화에 임하는 것이 중요하다고 강조했다. 대화에 들어가기 전에 여러 관점에서 상황을 종합적으로 파악해야 한다고 그는 조언했다. 또한 “행동이나 기대에 미치지 못한 사례를 준비하면 맥락을 제공하는 데 유용하기 때문에 이런 부분을 미리 생각하는 것이 중요하다”라고 말했다.
대화의 성공은 다양한 관점을 이해하고, 명확하게 소통하며, 메시지가 어떻게 받아들여지는지 관찰할 수 있는 능력에 달려있다. 달리는 공감 능력과 감정 지능 등의 소프트스킬이 현대 리더에게 필수이며, 이를 통해 성공한 대화와 실패한 대화의 차이를 만들 수 있다고 언급했다. 이 기술은 하루아침에 개발되는 것이 아니라지속적으로 공부하고 연습해야 한다.
달리에 따르면 최근 스킬소프트는 생성형 AI 기반 코치인 케이시(CAISY)를 개발했다. 이 시스템은 리더가 대인 관계 기술을 개발하고 안전한 환경에서 연습할 수 있도록 지원하며, 각 시뮬레이션 후 개인화된 피드백을 제공한다. 이 시나리오에서 팀장급 직원들은 성과가 저조한 팀원에게 건설적인 피드백을 제공해야 한다.
달리는 "시뮬레이션을 하는 동안 학습자는 공감, 인내심, 그리고 적극적이고 해결책 지향적인 접근 방식으로 어려운 상황을 효과적으로 관리하는 다양한 전략을 접하게 된다"라고 설명했다.
2. 서번트 리더십으로 접근하기 ISG의 파트너인 올라 차우닝은 대화에 앞서 다뤄야 할 행동이나 성과에 대한 명확한 예시를 준비해야 한다고 조언했다. 이를 위해 지표, KPI, 개인적 관찰 등 가능한 한 객관적인 정보를 확보해야 한다.
차우닝은 “회의 전에 팀원이나 동료들과 일상적인 대화를 나누는 것도 도움이 될 수 있다”라고 말했다.
그는 행동 문제와 관련해 구성원을 섬기는 자세로 접근하는서번트 리더십이 효과적일 수 있다고 설명했다. 그는 “직속 직원의 집중력, 주의력, 정신 건강에 영향을 미치는 외부 요인이 있는지 물어보라. 성과 문제는 일반적으로 사실에 근거하겠지만, 성과를 저해하는 내부 요인이나 제약이 있는지 물어보는 것이 적절할 수 있다. 이후의 대화는 결과, 사례, 기대되는 변화로 이어질 수 있다”라고 말했다.
3. 상대방의 관점 고려하기 의료 소프트웨어 및 IT 자문 기업 리버액스(Riveraxe)의 CEO 데이비드 펌프리는 대화의 목표를 검토하고 개인의 관점을 이해해 대화를 준비해야 한다고 조언했다. 그는 적극적으로 경청하고 개방적으로 질문할 것을 제안했다.
필요할 때 건설적인 지침을 제공하는 것도 중요하다. 펌프리는 “직속 팀의 한 팀장이 프로세스 간소화에 어려움을 겪고 있을 때, 먼저 약속 일정의 자동화부터 시작해 점진적으로 확장해 나가라고 제안했다. 이런 조언과 경험은 해당 직원을 다시 정상 궤도에 올리는 데 도움이 됐다”라고 회상했다.
추가 지원이 필요해 보일 경우 핌프리는 코칭이나 교육과 같은 단계를 권장했다. 그는 “한번은 직원의 의사 소통 기술을 돕기 위해 컨설턴트를 초빙한 적도 있다”라고 말했다.
다른 모든 방법이 실패할 경우 직원의 재능과 능력에 더 잘 맞는 직책으로 재배치하는 것도 고려해야 하지만, 핌프리는 이 방법이 마지막 수단으로 사용돼야 한다고 언급했다. 그는 “지원이 있으면 많은 직원이 개선되지만, 때로는 팀과 비즈니스의 성공을 위해 변화가 필요할 수 있다. 하지만 역할 교체 전에 해당 직원을 정상 궤도에 올리는 것이 목표여야 한다”라고 설명했다.
팀과 목표는 항상 우선시돼야 한다. 대화의 목표는 직속 직원에게 개선을 위한 기회와 리소스를 제공하는 것이지만, 필요할 때는 어려운 결정도 내려야 한다. 펌프리는 “강력한 리더십과 의사 소통이 핵심”이라고 덧붙였다.
4. 명확한 목표 설정하기 지니어스 솔루션(Genius Solutions)의 사장 겸 CIO인 진 마그니는 공식적인 대화 일정을 잡기 전에 직속 직원과 비공식적으로 만나 회의의 구체적인 목표를 설정할 필요가 있다고 제안했다.
마그니는 회의가 시작되면 전체적인 맥락을 파악하고 직속 직원의 관점을 이해하기 위해 경청해야 한다고 말했다. 그는 “개방적인 질문을 통해 전체적인 상황을 파악한 뒤에 지침을 제공하라. 해결해야 할 문제를 파악했다면 구체적인 예시와 개선을 위한 제안을 통해 직접적이면서도 건설적인 태도를 취하라”라고 조언했다.
초기 논의 후 추가 조치가 필요한 경우 코칭, 교육 또는 역할 변경 등 적절한 다음 단계를 결정해야 한다. 직원의 능력에 확신이 서지 않는다면 최후의 방법으로 인사 담당자를 개입시키거나 역할을 재배치해야 한다고 마그니는 덧붙였다.
마그니는 "열린 의사소통과 지원으로 많은 문제를 해결해 팀이 다시 잘 작동하게 할 수 있다. 하지만 어떤 경우에는 팀과 프로젝트 또는 비즈니스 목표의 성공을 위해 역할 교체가 필요할 수 있다"라고 말했다.
5. 마음가짐을 갖추기 IT 서비스 기업 어센던트 테크놀로지스(Ascendant Technologies)의 비즈니스 개발 매니저인 매튜 프란지센은 대화에 임할 마음가짐이 갖춰졌는지 점검하는 것이 중요하다고 말했다. 그는 "객관적으로 대화에 접근할 수 있는 마음가짐을 갖춰 사실에 집중하고 전문적인 태도를 유지할 수 있어야 한다"라고 설명했다.
프란지센은 "직원을 사무실로 부르기 전에 예의 바르고, 전문적이며, 협력적인 방식으로 대화에 접근할 계획을 세워야 한다. 대화의 목표에 집중해야 한다. 그들의 행동을 바꾸고 싶은 것인가, 직면한 문제에 대한 설명을 듣고 싶은 것인가, 아니면 둘 다인가?"라며 대화를 시작하기 전에 목표를 아는 것이 중요하다고 말했다.
6. 성급한 판단 피하기 디지털 컨설팅 에이전시 디비사(DIVISA)의 CEO 디터 샤오는 직속 직원의 관점을 완전히 이해하기 위해 판단 없이 경청해야 한다고 말했다. 그는 "성과 부진의 근본 원인을 파악하기 위해 심도 있는 질문을 하고 구체적이고 건설적인 피드백과 권장 사항을 제공하라"라고 조언했다.
참여와 지원에도 불구하고 어려움이 지속되다면 개인의 역할을 재평가해야 할 수 있다. 샤오는 "역할 교체는 엄청난 혼란을 초래할 수 있기 때문에, 그 단계를 밟기 전에 개선을 위한 기회와 자원을 제공하기 위해 모든 노력을 기울인다. 대부분의 문제를 해결하는 열쇠는 열린 의사 소통과 협력적인 접근 방식이지만, 팀과 비즈니스 목표의 성공이 최우선이어야 한다”라고 말했다.
다른 이해관계자의 개입은 직속 직원이 추가적인 코칭, 교육 또는 독립적인 중재로부터 이익을 얻는 경우에만 있어야 한다. 샤오는 "성과와 역량을 다시 정상 궤도에 올리기 위해 가능한 한 투명하고 지원적으로 문제를 해결하는 데 목표를 둬야 한다"라고 덧붙였다.
In this article, we are going to see how to generate a captcha using Python package captcha to generate our ownCAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart) in picture form. CAPTCHA is a form of challenge-response authentication security mechanism. CAPTCHA prevents automated systems from reading the distorted characters in the picture.
Installation:
pip install captcha
Generating image captcha:
Here we are going to generate an image captcha:
Stepwise implementation:
Step 1:Import module and create an instance ofImageCaptcha().
Step 1:Import module and create an instance ofAudioCaptcha().
image = audioCaptcha(width = 280, height = 90)
Step 2:Create an audio object withaudio.generate(CAPTCHA_Text).
data = audio.generate(captcha_text)
Step 3:Save the image to fileaudio.write().
audio.write(captcha_text, audio_file)
Below is the full implementation:
Python3
# Import the following modules
from captcha.audio import AudioCaptcha
# Create an audio instance
audio = AudioCaptcha()
# Audio captcha text
captcha_text = "5454"
# generate the audio of the given text
audio_data = audio.generate(captcha_text)
# Give the name of the audio file
audio_file = "audio"+captcha_text+'.wav'
# Finally write the audio file and save it
audio.write(captcha_text, audio_file)
Output:
Video Player
00:00
00:13
Ready to dive into the future?Mastering Generative AI and ChatGPTis your gateway to the cutting-edge world of AI. Perfect for tech enthusiasts, this course will teach you how to leverageGenerative AIandChatGPTwith hands-on, practical lessons. Transform your skills and create innovative AI applications that stand out. Don't miss out on becoming anAI expert– Enroll now and start shaping the future!