반응형

 

카드 뭉치 소스 코드

def solution(cards1, cards2, goal):
    answer = 'Yes'
    cards1_idx = 0
    cards2_idx = 0
    
    for word in goal:
        if cards1_idx != len(cards1) and word == cards1[cards1_idx]:
            # A and B -> A를 먼저 판별 / A에서 통과하면 B를 판별 / A에서 통과하지 않으면 B까지도 가지 않습니다.
            cards1_idx += 1
        else: # 첫번째 카드뭉치에 없다면
            if cards2_idx != len(cards2) and word == cards2[cards2_idx]:
                cards2_idx += 1
            else: # 두번째 카드뭉치에도 없다면
                answer = 'No'
                break
    
    return answer
반응형
반응형

카페에 와서 블로그 쓰는 중

 

요즘 너무 미디어를 많이 하고 있음

미디어 많이 하니까 생각이 단순해지고 감정적이게 변하는 것 같아서 싫다

 

미디어를 안할 수 있는 방법이 있을까

  • 안하기보다 다른 걸 하는 게 도움이 되더라
    뭐가 있지?
    25년도에 이루고 싶은거랑 연결지어보면
    바인더 정리 / 일렉기타 / 정보보안기사(실기) / 유튜브 2주에 한번씩 업로드
  • 중보 기도와 함께하는 역동적인 셀 - 영적으로 깨어있으면 안할 수 있다.
  • 하루 1권 읽는 연습(ex, 로마서)
  • 돈 아껴쓰기(체계적인 재정 관리)
  • 충분한 시간 확보하는 것

 

영향력은 중요하지 않다.

돈도 중요하지 않다.

 

삶의 방향이 올바르게 잘 가고 있는지를 계속 살펴야 함.

사역적 성공을 꿈꾸자.

 

유튜브 안보는 것(올리기만 하자)

 

반응형
반응형

연말
 
분위기가 물씬 나는 카페에 혼자 옴.
재즈풍의 크리스마스 캐롤이 들림.
 
 
24년도 회고해보기!
당장 생각나는 것부터 적어본다.
잘한 일

  • 회사에서 희망퇴직이 있었지만 퇴사 안한 거
  • 왜?:) 희망퇴직 이후의 회사 분위기를 경험하고 있는데, 이 경험이 나중에 중요한 자산이 될거다.
  • 정보보안기사 2만 5천원씩 내면서 3번 시도한 것
  • 필기는 붙었고 내년에는 실기도 붙자
  • 전도사님께 일렉기타 배우고 있는 거랑 연습하면서 재미 찾아가는 거
  • 종혁이 통해서 특강 해본 거
  • 엄청 귀한 경험이었고, 나중에 목회할 때도 도움될 듯!
  • 머리를 짧게 짜른 거
  • 스타일을 만들어가자. 옷도 사보고.
  • 링크드인 꾸민 거
  • 앞으로 내용 잘 넣어야지.
  • 승갑이를 만난 거
  • 같이 셀모임 시작한 거

아쉬웠던 일

  • 미디어 하는 시간이 많았다.
  • 돌이켜보면 엄청 많은 시간..
  • 순간의 영상 소비도 좋지만 남는게 없다.
  • 하나님을 알아갈 시간을 갖지 않은 거
  • 신앙 서적이나 말씀과 기도를 안하니까 영성이 부족한 게 느껴진다.

 
25년도 계획
해보고 싶은 것

  • 혼자 영화 보기
  • 유튜브 채널 키우기
  • 언리얼엔진 배우기

가보고 싶은 것

  • 대만 - 가오슝
  • 예전에 단기선교 갔었던 곳. 희진이랑 가보고 싶다.

가지고 싶은 것

  • 왜 없지..
  • 나만의 아지트ㅋㅋ
    근처 나만 아는 카페나 그런 곳ㅎ

 
 
 
 
 
 

반응형
반응형

 

리눅스 개발자들의 삶의 질을 향상시켜준 프로그램 ❓❓

2007년 11월 20일, 니콜라스 매리엇(Nicholas Marriott)라는 사람은 tmux라는 프로그램을 세상에 발표하였다.

그 시절 리눅스 개발자들의 실력에 한 단계 동력을 불어넣어준 프로그램, tmux다

>> tmux github page

 

 

Wiki에서는 tmux📱 를 어떻게 정의하고 있을까?

  • tmux란? tmux는 사용자가 단일 단말기 창 또는 원격 터미널 세션 안에서 여러 별도의 터미널 세션에 액세스할 수 있도록 여러 가상 콘솔을 다중화하는데 사용할 수 있는 응용 소프트웨어이다. 이 응용 프로그램은 명령어 인터페이스로부터 다수의 프로그램을 처리하고 유닉스 셸로부터 프로그램을 분리하는 데에 유용하다

 

1. 여러 별도의 터미널 세션에 액세스

  • 분할된 타 터미널에서의 동작은 실시간으로 모든 터미널에 영향을 끼친다.
  • 또한 터미널 세션이 관리되어, 원격 액세스가 가능하다는 장점도 있다.(co-working 관점)

 

2. 여러 가장 콘솔을 다중화

  • 하나의 터미널을 화면 분할 기능을 제공하여, 여러개의 다중 터미널로 각각 프로그래밍이 가능하게끔 도와준다.
  • ex) 주로 서버를 띄어놓고, 모니터링 프로그램을 동시에 확인하고자 할 때 사용한다.
  • 현업 개발자들 사이에서 tmux는 매우 심플하고도 강력한 툴이다.
  • >> 서버를 띄어놓은 상태에서 다른 작업을 가능케 한다.(멀티태스킹 지원)

 

 

설치방법 💁🏻‍♂️

OS별로 설치하는 명령어가 다르다.

아래 명령어를 통해 설치가 가능하며, 자세한 내용은 공식 설치 가이드를 참조하길 바란다.

>> 공식 설치 가이드

 

tmux를 사용하면 좋은 현실적인 이유 ****💁🏻

🥇 리눅스 서버 관리가 편하다.(모니터링 지표를 만들기 좋다.)

🥈 원격으로 누구나 서버의 tmux name을 통해 액세스가 가능하기에 코워킹이 가능하다.

🥉 무엇보다 여러개의 다중 터미널을 띄어놓으면 있어 보인다 (?)

  • 리눅스 개발자라면 한번쯤 사용하길 권장한다.🎁

 

+ tmux 를 사용하려면 단축키를 알아야 한다. ****🌟

아래 스크린샷을 참고하자.

 

맺는말

tmux의 등장으로 개발자들의 개발의 질은 한층 더 성장하였다.
리눅스를 사용하는 사람이라면 남녀노소 누구나 쉽게 사용할 수 있는 수준이기 때문에
다들 한번쯤 사용해보는 것을 추천드린다. 😆

 

 

반응형
반응형

21세기 Django를 뛰어넘는 Python 진영의 새로운 웹 서버 ❓❓

2018년 5월 어느 여름, 이 시대 최고의 웹 서버 프레임워크로 각광받는 FastAPI가 발표되었다.

그 시절 발표했던 개발자들은 2024년 이렇게 될 줄 알았을까

>> 67.3k의 starred를 자랑하는 FastAPI Github

 

 

초기 FastAPI는?

처음에 Python 진영에서 발표와 동시에 많은 사랑을 받으며 성장해왔다.

최근 트렌드에 맞게 Restful API를 설계할 수 있는 파이썬의 웹 프레임워크라는 정체성을 가졌다.

사람들이 FastAPI를 점점 더 알아가고 찾게되는 이유 중 하나는

매우 잘 정리되어 있는 document page도 인기를 높이는 데 한 몫했다.

>> FastAPI document

 

 

Wiki에서는 FastAPI📱 를 어떻게 정의하고 있을까?

FastAPI란? FastAPI는 Pydantic을 기반으로 하며 type hints를 사용하여 데이터를 검증, 직렬화 및 역직렬화합니다. 또한 이를 사용하여 구축된 API에 대한 OpenAPI 문서를 자동으로 생성합니다. FastAPI는 비동기 프로그래밍을 완벽하게 지원하며 Gunicorn 및 Uvicorn 및 Hypercorn과 같은 ASGI 서버에서 실행될 수 있으므로 프로덕션 환경에 적합한 선택입니다. 개발자 친화성을 높이기 위해 프로젝트 초기부터 편집자 지원이 고려되었습니다.

 

 

1. Pydantic

 

  • 웹 서버의 parameter로 주고받는 data를 검증할 수 있게 해주는 파이썬 라이브러리이다.
  • 객체 및 annotation을 활용하여 data validation check를 손쉽게 할 수 있도록 도와준다.

2. type hints

 

  • Python의 언어 특성상 변수를 초기화할 때 데이터 타입을 명시하지 않는다. 타입이 명확하지 않은 이런 상황은 많은 오류 가능성을 내포하게 된다. 이를 예방하기 위해 개발자들은 Python에 Data type를 명시하기 시작했고, 여기서 사용되는 것은 type hint이다.
  • 실제로 타입이 다르다고 해서 오류를 발생시키지는 않지만, type hint를 통하여 오류 가능성을 사전에 예방할 수 있다.
현업 개발자들 사이에서 type hint는 찬/반 의견이 있다?
찬성: type 을 명시함으로써 잘못된 data type에서 유발되는 오류 가능성을 사전 예방할 수 있는 장점이 있다.
반대: 일부 여론에서는 python의 탄생 목적과 다르게 그 확장성을 한정하는 것이라는 의견도 있다.

 

3. Open API(= Swagger)

 

  • 흔히 우리가 말하는 swagger가 대표적인 Open API 문서이다.
  • 웹 서버에서 제공되는 API의 종류를 하나의 페이지에서 대시보드 형태로 파악할 수 있다.
  • Input / Output / Validation / Example / Test 등 다양한 기능을 웹 UI 상에서 확인 가능하다.

+ 아래와 같은 화면, Swagger!

 

4. 비동기 프로그래밍

 

  • 서버에 들어온 request를 처리할 때, request 처리에 대한 응답을 일일히 기다리지 않는다.
  • 코루틴(co-routine) 이라는 개념을 사용하여 비동기적 처리를 수행한다.

 



FastAPI를 사용하는 굴지의 기업들 💁🏻

🥇 Netflix

🥈 Uber

🥉 Cisco

  • FastAPI는 Stack Overflow 2021 개발자 설문조사에서 세 번째로 사랑받는 웹 프레임워크에 등재된 바 있다. 🎁

 

+ FastAPI에서 hello world! 찍는 방법 🌟

우선 Python이 설치되어 있어야 하고, Python을 실행하여 아래 코드를 작성 후 실행해주자. 👬👬

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return "Hello World!"

 


맺는말

한땀 한땀 코드를 짜야 했던 과거에 비해서 요즘에는 점점 강력한 프레임워크들이 등장하고 있다.
그 말은 즉, 원한다면 누구든지 빠르게 서비스를 만들 수 있다는 것이다.
앞으로 코드는 점점 더 간결해지지 않을까 싶다. 😆

 

 

반응형
반응형

2023년 11월부터 비공개 테스터 20명 모집을 의무화하였다 ❓❓

 

 

우선, 안드로이드 앱을 구글 플레이스토어에 출시하는 방법을 알아보자!!

안드로이드 어플리케이션을 구글 플레이스토어에 출시하려면 아래 사이트를 방문하여야 한다.

구글 플레이 콘솔

 

Google Play Console | Google Play Console

앱과 게임이 성장할 수 있도록 사용자에게 도달하고 사용자 참여를 유도하는 데 도움이 될 도구, 프로그램, 통계를 이용하세요.

play.google.com

 


우선은 플레이스토어 개발자 등록을 해야한다.

개발자를 등록하는데 일부 비용(한화로 2~3만원 사이)이 최초 1회 지출된다.

개발자 등록비라고 보면 된다.

자체적으로 앱📱 을 개발했다면, 빌드과정을 통해 AAB 파일을 생성한다.

 

  • AAB란? 기존에는 APK(Android Package) 파일을 통해 앱을 설치하였다, 하지만 APK 파일은 불필요한 파일들이 많이 포함되어 있는 완성된 파일이다. 그래서 AAB(Android App Bundle) 파일을 플레이 콘솔에 등록한다. AAB는 Android App을 완성시켜주는 패키지다. AAB을 사용하면 설치되는 기기에 맞게끔 필요한 패키지들만 사용하게 되어 불필요한 파일들의 포함을 줄이고 용량을 줄일 수 있다.

 

 

플레이 스토어에 앱을 출시하기까지의 4단계 과정이 필요하다.

 

1. 내부 테스트

  • 내가 원하는 테스터에게 자체적으로 테스트를 진행하는 방식이다.
  • 소규모로 진행이 가능하고, 원한다면 스스로 진행하면서 생략도 가능하다.
  • 자체 통합테스트라고 보면 무방하다.

 

2. 비공개 테스트

  • 최근 2023년 11월부터 플레이 콘솔에 등록된 개인 개발자에 한하여 20명 비공개 테스트가 의무화되었다.
  • 구글 입장에서는 가족, 친구, 지인 등에게 링크를 보내서 설치 및 테스트를 해야한다고 한다.
  • 비공개 테스트는 테스터에 등록된 20명의 사람들(안드로이드 유저)이 해당 앱을 설치하기만 하면 된다.
  • 그리고 2주가 지나면 통과이다.
  • 20명 넘기가 쉬운가.
    -> 생각보다 쉽지 않다. 그래서 카카오톡 오픈 채팅방을 잘 찾아보면 비공개 테스터 품앗이 톡방이 있으니, 여기에서 품앗이를 받아보는 것도 추천한다. 20명이 최초 1회 설치만 하면 되기에 이 방법을 추천한다.

 

3. 공개 테스트

  • 앱이 플레이스토어에 공개된 상태이다.
  • 비공개로 개발자에게 의견 전달이 가능하다.
  • 생략하고 바로 프로덕션으로 넘어갈 수도 있다.

 

4. 프로덕션

  • 앱이 플레이스토어에 정상적으로 출시된 상태를 의미한다. 🎁
  • 앱에 광고가 붙어있다면, 실제 광고 수익도 발생 가능하다.

 

비공개 테스터 20명 의무화는 왜 생겨났을까? 💁🏻

 

🥇 구글 플레이스토어에 보면 여러가지 저품질의 앱들이 출시되어 있는 것을 볼 수 있다.

🥈 유지보수도 되지 않고, 사용자의 의견도 제대로 반영되지 않은 채 남아있는 좀비 앱들이 점점 늘어나는 것을 방지하고자 구글이 칼을 빼든 것 같다. 🔪

🥉 안드로이드 앱 출시가 IOS처럼 절차 복잡하거나, 비용이 비싸지 않아 진입장벽이 낮았던 부분을 보완한 것으로 추측된다.

 

+ 하지만 20명은 너무했다. 😢

 

 

+ 비공개 테스터 20명 품앗이를 활용하자 🌟

아래 게시판 혹은 오카방 등 여러 품앗이 채널이 있으니 확인하고 도움을 받자 👬👬

 

맺는말

구글 플레이스토어에 앱을 출시한다는 것을 정말 의미있는 작업이다.
고민하고 열심히 만든 앱을 수십억명의 사람들에게 소개하는 일이기 때문이다.
많은 사람들에게 도움이 되는 앱을 만들자 😆

 

반응형

'IT' 카테고리의 다른 글

tmux란? 💻  (2) 2024.01.27
FastAPI란 무엇일까? 💻  (0) 2024.01.26
Node.js란?(Wiki와 함께 설명) 💻  (2) 2024.01.24
react native 튜토리얼(init 명령어) 💻  (0) 2024.01.23
삼성 첫 AI 스마트폰 “갤럭시 S24” 리뷰 📲  (2) 2024.01.20
반응형

Wiki에서는 Node.js를 어떻게 설명하고 있을까 ❓❓

| Node.js는 크로스플랫폼 오픈소스 자바스크립트 런타임 환경으로 윈도우, 리눅스, macOS 등을 지원한다. Node.js는 V8 자바스크립트 엔진으로 구동되며, 웹 브라우저 바깥에서 자바스크립트 코드를 실행할 수 있다.[3]

주로 확장성 있는 네트워크 애플리케이션과 서버 사이드 개발에 사용되는 소프트웨어 플랫폼이며, 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며, 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

- 크로스 플랫폼(Cross-Platform)

장점:

  • PC환경에서는 Window와 Mac / 모바일 환경에서는 Android와 IOS 운영체제에 모두 동작 가능하다는 의미이다.
  • 최근 들어서는 크로스 플랫폼 프로그램을 통해 하나의 코드로 다수의 운영체제에서 동작되게 하는 개발 방식이 인기를 끌고 있다.
  • 당연히 생산성이 올라간다.

단점:

  • 기존 운영체제 네이티브의 플랫폼보다는 최적화되어있지 않기에 성능적인 이슈가 있을 수 있다.
  • 그러나 이러한 문제도 최근 여러 업데이트를 통해 보완되고 있으며, 실리콘 밸리의 굴지의 기업들도 이러한 크로스 플랫폼 서비스를 운영하고 있다.


- 서버 사이드 개발(Server-Side Development)

  • 서버의 리소스를 사용하여 운영되는 서비스를 개발하는 것을 의미한다.
  • 반대로 클라이언트 사이드 개발이 있다.


- 논블로킹(Non-blocking) I/O

  • 오류가 발생하기 전까지는 인입되는 Inpus request를 계속 받아준다.
  • 비동기 I/O 와 다른 점은 비동기 I/O는 응답을 받아주지만, 논블로킹 I/O는 응답값을 받아주지 않는다.


- 단일 스레드(Single thread)

  • 단일 스레드는 한번에 하나의 동작만 처리할 수 있다는 의미이다.
  • 그러나 하나의 한번의 동작을 비동기적으로 처리하기 때문에, 사용자 입장에서는 속도나 성능에 대한 이슈를 인지할 수 없다.
  • 단일 스레드에서 하나의 함수를 호출하면, 이벤트 루프가 여러개의 이벤트를 처리한다.


- 이벤트 루프(Event loop)

  • 단일 스레드를 지원하는 javascript 프로그램을 다중 스레드(PC)에서 동작시키기 위한 객체이다.
  • 이벤트 루프는 javascript 프로그램에서 실행된 하나의 함수를 여러개의 다중 스레드가 대기하고 있다가 실행하고, 이후 액션을 진행하는 것을 담당한다.
  • 이벤트 루프와 비동기 방식을 통해, 사용자는 javascript 서비스가 단일 스레드여서 느리다고 생각할 수 없게 된다.(실제로도 느리지 않다😲)



누가 만들었을까? 💁🏻

🥇 2009년에 ‘라이언 달’이라는 사람이 만들었다.

🥈 Joyent 라는 회사에서 일하는 사람이고, 현재도 Joyent에서 개발 및 운영 중이다.

🥉 파일 상태를 서버에 쿼리를 통해 확인하는 것을 보고 조금 더 쉬운 방법을 찾다가 고안해 내었다고 한다.

  • TMI. Joyent는 2016년 삼성전자에 인수되었다.



+ Node.js를 사용하는 기업 Top 3 🌟

아래 언급된 회사 외에도 거의 모든 회사에서 Node.js를 사용하고 있다.

  • Facebook
  • Amazon
  • Google

마이크로서비스 아키텍쳐 시대가 오면서 다양한 서비스 API들이 제공될 수 밖에 없고,

대부분의 회사는 이런 환경에서 Node.js를 사용하고 있다.



맺는말

Node.js는 개발을 하는 사람들이라면, Front, Backend 상관 없이 한번쯤은 모두 들어봤을만한 이름이다.
처음 라이언 달이라는 한 개인의 심플한 고민이 시작이 되어,
이제는 모두에게 생산성과 편의성을 가져다 준 프로그램이 되었다.
이처럼 우리의 작은 고민 하나가 어쩌면 많은 사람들에게 영향력을 줄 수 있을 것이다.

 

반응형
반응형

react native 를 사용하는 2가지 방법 ❓❓

1. Expo를 사용하는 방법

  • Expo Go client를 통해 변경 사항을 즉시 확인이 가능하다.
  • 그 외 아무런 작업이 필요하지 않다!! 😲😲😲

아래 명령어를 통해 react native expo의 프로젝트를 생성할 수 있다.

npx create-expo-app AwesomeProject

cd AwesomeProject
npx expo start

 

 

2. React native cli 사용하는 방법

  • 안드로이드/IOS 별로 별도 애뮬레이터 프로그램이 필요하다
  • 안드로이드의 경우 JDK를 추가로 설치해주어야 한다.

아래 명령어를 통해 react native cli의 프로젝트를 생성할 수 있다.

npx react-native@latest init AwesomeProject




어떤 것이 더 좋을까? 💁🏻

🥇 우선 expo 는 유료화되었다. 몇십회 빌드까지만 무료로 제공되고 이후부터는 돈을 내면서 사용해야한다.

🥈 react-native cli는 부수적인 프로그램 설치 등 환경 세팅이 필요하다 무료이다. 원하는 만큼 빌드할 수 있고, 환경 세팅만 잘 된다면 나머지는 expo 를 통한 개발과 큰 차이가 없다.

 




+ 크로스 플랫폼으로 꾸준하게 개발하다보면 빛을 보는 날이 있을 것 🌟

처음에는 네이티브 프로그램에 비하여 성능과 여러가지 기능들이 떨어지지만,
포기하지 않고 꾸준히 하다보면 반드시 유용하게 사용되는 날이 올 것이다.

  • Android와 IOS 를 동시에 혼자서 개발해야 할 때.
  • 갑자기 App 개발을 빠른 시일 내로 해야할 때. 
  • react native는 JS로 개발하기 때문에, 언어 친화력이 아무래도 높아질 수 밖에. 

더불어 App Store에 자신의 프로그램을 출시하는 자신을 발견하게 된다.





맺는말

요즘 시대에 개발의 꽃은 App 개발인 것 같다.
왜냐하면, 사람들은 대부분의 시간을 스마트폰과 함께 하고 있고
스마트폰은 App으로 구성되어 있기 때문이다.

 

반응형

+ Recent posts