📢 sort( )

파이썬으로 알고리즘문제를 풀다보면, 여러 조건으로 sort(정렬)해야하는 경우가 있습니다.

일반적으로, 파이썬에서 sort 하는 방법은

  • .sort( )
  • sorted( )

이렇게, 2가지 방식을 사용할 수 있습니다.

 

📢 정리

  • sorted(Iterator) 형태와 Iterator.sort( ) 방식은, 결과적으론 똑같이 정렬된다.
    따라서, 아래의 설명은 두 방식모두 동일한 방식으로 적용됩니다.
  • sorted( )의 key 인자로, 내가 커스텀할 비교함수를 보내주거나, lambda식을 적용해서 정렬기준을 정해주면 된다.
  • 비교함수는 비교할 아이템의 요소를 반환하면 됩니다.
  • 비교할 아이템의 요소가 복수 개일 경우, 튜플로 그 순서를 내보내주면 됩니다.
    • Ex) sorted( Iterator, key = lambda x : ( x[0], x[1] ) )
    • - 를 요소앞에 붙이면, 현재 정렬방식과 반대로 정렬하게 됩니다.
  • Iterator.sort(reverse=True) 를 설정하면, 내림차순으로 정렬을 합니다. (default는 reverse=Fasle, 즉, 오름차순 )
728x90
반응형

📢 개요

HTML/CSS/JavaScript(Js)

오늘날의 HTML, CSS, JavaScript(JS)는 "웹사이트", 즉 브라우저에서 동작하는 소프트웨어에만 국한되어 있지 않습니다. 

React Native나 Native Script처럼 혹은, 비슷한 변형들로, "모바일 앱"을 만드는 기술들이 이미 널리 사용되고 있습니다.

Electron.js 같은걸로 이젠, 웹사이트가 아닌, "컴퓨터 프로그램"까지 HTML/CSS/JS로 만들 수 있게 되었습니다. 😮

 

📢 HTML/ CSS / JavaScript

사실상, HTML(Hyper Text MarkUp Language) , CSS(Cascading Style Sheets)는 사실 프로그래밍언어에도 속하지 못합니다..

  • HTML은 "마크업(Markup)"언어입니다.

    👉 화면에 "어떤 요소들이 놓여 있어라 !" 하고 갖다놓는 수단

  • CSS는

    👉 HTML을 통해 띄어놓은 요소들이, "이렇모양, 저런 색 등으로 보여라 !"하고 정해주는 수단

  • JavaScript만이 그나마(?) 프로그래밍언어 속합니다. 

    👉 원래는 브라우저에서 웹사이트를 돌리는 목적으로 만듦, 그래서 그닥 대우를 못받는 언어였습니다.
    👉 그러나, 계속 발전을 하고, 특히 Node.js가 이것을 브라우저 바깥 세상으로 꺼내오면서, 위상이 아주 높아졌다.
    👉 웹사이트에서 돌아가는 JS는 브라우저에서 다양한 일을 수행하고, HTML로 올려놓은 요소들을 변형시키거나, 직접 만들어내기까지 합니다. !! 😮

📝 HTML / CSS / JavaScript 문서들이 합쳐져서, 하나의 웹페이지가 구동한다면,

  • HTML = "갖다놓고"
  • CSS = "꾸미고"
  • JavaScript = "시킨다."

라고 생각합시다. 

 

📢 마무리

HTML / CSS 는 배우는 건 쉽지만, 숙달이 되려면 시간이 좀 필요합니다.

같은 구조와 모습도, 구현하는 방법이 다양한데, 어느쪽이 효율적이고, 여러 환경이나 기기에 유연하게 적용 가능한지는 많이 만들어보고, 직접 봐야 느낄 수 있습니다.

매우 유명한 사이트, 예를 들면, "네이버" 나 "다음", "구글" 같은 사이트가, 어떻게 구성되어 있는지, "크롬 개발자 도구 같은 툴들로 분석해보면, 좋은 방법론들을 많이 얻을 수 있습니다. 👍👍👍

오른쪽화면이 "크롬 개발자 툴 (F12) 누르면 된다.

자바스크립트는 현재도 빠르게 변화해가고 있는 언어이다 보니, "끊임없이" 공부할 것이 생긴다고 합니다. 😂

예전에는 대부분이 "JQuery" 라는 강력한 "라이브러리" 로 순수 자바스크립트보다 훨씬 편하고, 쉽게 코딩을 하곤 했는데, 요즘은, 자바스크립트 자체가 파워풀해지고, JQuery의 성능문제도 있어서,,,

프론트엔드 프레임워크 같은 새로운 개발 방식들이 나오면서 "JQuery를 더 이상 쓰지말아야한다." , "없애야 한다" 라는 말이 나오고 있다고 합니다. 🙄

프론트엔트 Framework 들 ( 순서대로, React, Angular, Vue.js )

입문자들은, 우선 "JavaScript"를 탄탄히 먼저 배워놓은 다음, 위에서 언급한 라이브러리나 프레임워크를 필요에 따라, 배워나가면 좋을 것입니다.

웹 사이트를 만들 때, 기억해야 할 것은, HTML,CSS,자바스크립트의 최신 기술들을 전부 공부해서 이용하려면 곤란하답니다. 😅

웹사이트는 어디까지나, 크롬(Chrome), 사파리(Safari), 파이어폭스, 익스플로러  같은, "웹 브라우저"에서 구동하는데, 이 브라우저들 중, 일부에서 최신 기술들을 지원하지 않거나, 혼자 이상하게 돌아가는 경우( 익스플로러..🤬 )가 있기 때문에, 사람들이 어떤 버전의, 어떤 브라우저를 얼마나 사용하고, 그것들이 지원하는 기능들은 어디까지인지

즉, 📝 "호환성"확인하고, 테스트해가면서, 개발하는 것이 중요합니다. 

 

 

미흡하거나, 잘못된 정보가 있다면, 문의해주세요. 🙏


 

728x90
반응형

📢 개요

어떤 회사가, 직원들을 해외 출장을 파견 시키게 됬습니다.
파견기간동안 머물 공간이 필요할 것 입니다.

방법은 크게 2가지가 있습니다.

  • 일터와 숙소로 쓸 가건물 하나 전체를 빌리는 것
  • 가성비가 꽤 좋은 초대형 호텔을 이용하는 것

이 둘은 각각의 장단점이 있습니다.

  • 가건물 전체를 빌리는 것

    [ 장점 ]
    👉 우리 팀만의 넓은 공간이 확보된다.
    👉 호텔보단 평단가가 싸다

    [ 단점 ]
    👉 건물 전체를 빌리다보니, 필요 이상의 공간까지 값을 치르는 것이 된다.
    👉 결과적으로 내야하는 총 금액이 클 것이다. ( 전기,수도, 등 건물 관리비 포함, 청소,빨래 등 개인 작업 필요 )
    👉 어쩌다 현지 파견자 규모가 커지면, 현재 공간이 부족하게 되면, 곤란하다.

  • 반면, 초대형 호텔을 이용하는 것

    [ 장점 ]
    👉 팀에게 딱 필요한 공간만 방을 빌릴 수 있다.
    👉 상황에 따라, 건물의 공간을 더 대여하거나, 취소 할수도 있다.
    👉 건물 관리도, 호텔 측에서 해주고, 잡일(빨래,청소) 서비스도 제공해도 된다. ( 돈을 더 낼 여유가 있다면.. )
    👉 결과적으로, 내 주요 업무에만 집중할 수 있게 될 것이다.

    [ 단점 ]
    👉 단, 여러 서비스를 신청해서 받으려고 할수록, 지불해야할 총 금액은, 건물 렌트보다 비싸질 것이다.
    👉 남이 관리하는 시설이다보니, 보안 측면에서 불안해 할 수도 있고, 업무에 맞는 커스터마이징한 건물보다 효율이 떨지는 부분도 있을 것이다.

결과적으로, 회사의 재정적 상황과, 업무의 효율에 맞는 선택을 해야 할 것이다.

 

📢 클라우드 컴퓨팅(Cloud Computing)

앞선 건물 렌트를 비유해서, 인터넷을 기반으로 서비스를 제공하는 제품을 개발할 때, 서버를 두는 방식은 2가지

  • 회사가 자사의 시설, 혹은 IDC(Internet Data Center)에 "자체적으로" 컴퓨터 서버를 두고 운용방식

    👉 온-프레미스(On-Premise) 방식

  • AWS, Azure, GCP, 네이버 클라우드 플랫폼같은 "대기업 브랜드" 들에서 제공 서버를 사용하는 운용 방식이

    👉 클라우드 컴퓨팅(Cloud Computing) = 클라우드(Cloud)

클라우드 (Cloud)

클라우드 컴퓨팅도 역시, 자사의 거대한 데이터센터에 서로 연결된 수~많은 컴퓨터들을 운용하고 있습니다.

다만, 전통적인 방식처럼, 사용자들에게 컴퓨터를 하나씩 통째로 배당하는 방식이 X
필요한 만큼 떼어서 제공합니다. ( ??? )

  • 컴퓨터를 어떻게 떼어서 제공한다는 것인가 ?

    = "가상 컴퓨팅(Virtual Computing)" 이란 기술을 이용하면, 물리적 컴퓨터 한 대에 "가상의" 컴퓨터 여러 대를 띄울 수 있습니다.

    👉 예로 들면, 윈도우(Windows)에 "우분투 리눅스"를 깔아 쓰는 것입니다.

    즉, 컴퓨터의 물리적 자원을, 필요에 따라 분할해서 쓸 수 있는 것입니다.

    사용자는 원격접속 프로그램을 이용해서, 마치 한 대를 쓰는 것처럼, 인터넷으로 연결된, 가상 컴퓨터를 사용하는 것

  • 컴퓨터 자원이 많지 않거나, 수시로 변화하는 회사나 기관, 혹은 개인에게, "클라우드"는 아주 매력적일 것입니다.

    👉 예로 들어, 세일 시즌이나, 이벤트 기간에만 유독, 접속량이 폭주하는 앱의 경우, 클라우드에서 그 때마다,
    자원을 늘려주거나 줄여줄 수 있습니다.

    = 시간이나 접속량에 따른 "종량제" 개념으로, 필요한 만큼만 쓰고, 돈을 지불하면 됩니다.

가상 컴퓨팅(Virtual Computing)

 

📢 클라우트 컴퓨팅의 장점

  • 하드웨어도 클라우드에서 알아서 관리해주니까 걱정할 필요 없고
  • 비용을 더 지불하면, 원래는 회사에서 자체적으로 해야 했던, DB, 자료백업, 스토리지, 자동화 등을 검증된 최고급 프로그래머들이 구현해 놓은 것을 서비스로 이용할 수 있습니다.
  • 결과적으로, 그러한 것들을 직접 개발하고 관리하는데 써야 했던, 시간적, 인적, 물적 비용을 회사의 주요 업무에만 집중할 수 있도록 할 수 있다보니, 시스템 엔지니어, DB전문가 같은 고급 인력들을 고용하는데, 부담이 큰, 중소기업이나 벤처에게는 굉장히 유용한 서비스 일 것입니다.
  • 물론, 규모가 작은 기업만 쓰는 것이 아닙니다. 글로벌하게, 대기업에서도 클라우드 시스템을 사용합니다.
  • 다만, 보안상의 이슈때문에, 대기업류의 회사들은, 온-프레미스 vs 클라우드 중에 이것저것 따져보고 사용합니다.

📢 클라우드 서비스의 분류

  하드웨어 가상서버 소프트웨어
IaaS (Infra as a Service) O X X
PaaS (Platform as a Service) O O X
SaaS (Software as a Service) O O O
  • IaaS (Infra as a Service)

    👉 서비스로 제공되는 "인프라" , 가상컴퓨터, 즉 하드웨어 자원의 일부를 떼어주는 것
    👉 클라우드에서는 하드웨어만 관리, 내가 직접 가상서버를 본체 사서 원도 깔고, 드라이버 다운받고, 프로그램 깔고 하듯이 운영하고 관리한다고, 생각하면 됩니다.

  • Paas (Platform as a Service)

    👉 플랫폼이 서비스로 제공됩니다.
    👉 하드웨어관리, 가상서버(가상컴퓨터) 또한 내가 신경 쓸 필요 없습니다. 클라우드에서 관리해줍니다.
    👉 내가 짠 코드를 압축해서, 업로드하거나 "깃(Git)"으로 전송하면, 클라우드에서 알아서 서버에 넣고 돌려준다.
    👉 이를, "배포" 한다고 합니다. = 난 코드만 짜면 되니깐, 정말 편합니다.

  • Saas (Software as a Service)

    👉 아예 다 만들어진 소프트웨어를 서비스로 제공하는 것입니다.
    👉 드랍박스,SNS,이메일,에버노트,구글닥스,온라인페이, "유트브" 등이 예 입니다.

 

📢 마무리

우리가, 어느정도 코딩을 배우고,

  • "이제 내가 리눅스(linux) 좀 만져볼 수 있을 것 같다 !"
  • "서버나 웹사이트 한 번 직접 만들어서 직접 세상에 온라인에 열어보고싶다 한다면 !"

앞서 언급한, "AWS(아마존 웹서비스)" , "GCP(구글 클라우드 플랫폼)", "Azure", "네이버 클라우드 플랫폼" 같은 주요 클라우드 업체들 모두 새 가입자에게 "1년간 IasS(외 다수) 무료 이용권"을 제공한다고 합니다. 😮

대기업 클라우드 플랫폼

작은 서비스를 운영하기엔 충분한 리소스를 제공해주는 것이니까요 !
서버 관리 말고, 서비스 개발에만 집중해보고 싶다면, "히로쿠(heroku)" 나 "넷리파이" 같은 PaaS 서비스도  좋으니 참고해보길 바랍니다.

이렇게, 소개한, "클라우드" 서비스 덕분에, 내가 서비스를 제공함에 있어서 신경써야할, 관리,배포 적인 면들을 일정부분 무료로 제공해주고 하는 시대에 우리가 살고 있으니깐요 !!

오로지 개발자는, "개발"에만 집중해서, 자신이 생각해놓았던 서비스가 있다면, 개발해보는것도 좋을 것 같습니다. 😀

 

 

미흡하거나, 잘못된 정보가 있다면 문의주세요. 🙏


 

728x90
반응형

'알쓸 IT 지식' 카테고리의 다른 글

[알쓸 IT] Angular, React, Vue  (3) 2021.01.11
[알쓸 IT] MVC 웹 프레임워크  (0) 2021.01.11
[알쓸 IT] Static Web ? Dynamic Web ?  (0) 2021.01.11
[알쓸 IT] HTML/CSS/JavaScript  (1) 2021.01.03
[알쓸 IT] Server란 무엇인가 ?  (0) 2021.01.03

+ Recent posts