외국 상품을 파는 가게 사장님의 홈페이지를 이전하는 과정에서 상품을 등록하는 과정을 외주로 받게 됐다.

 

현재 상품명은 {영어 / 제2외국어 [무게(kg/g)]} 혹은 {제2외국어 / 영어 [무게(kg/g)]}로 설정되어 있었다. (연속된 띄어쓰기는 0개 이상)

 

처음에는 제2외국어를 제거하려고 했지만 영어와 숫자가 아닌 것을 제거하는 것이 더 편하다는 것을 깨달았다.

 

아래는 현재 상품명이 저장된 name.xlsx 파일에서 상품명을 꺼내 정규표현식으로 {영어 [무게(kg/g)]}로 바꾼 후 rename.xlsx 파일에 저장하는 코드이다.

 

import openpyxl
import re


wb = openpyxl.load_workbook('name.xlsx')
sheet=wb.active
cells = sheet['A1':'A46']

list_var = []

for row in cells:
    for cell in row:
        list_var.append(cell.value)

for i in range(0, 20):
    tmp = re.sub('[^0-9a-zA-Z]+', ' ', list_var[i]) # 이러면 .도 지워지는데, 사용하는 홈페이지에 이미지 등록할 때 파일 명에 .이 들어가면 안되서 .도 삭제해야 했음
    list_var[i] = tmp

# 첫 번째가 공백이면 제거
for i in range(0, 46):
    list_var[i] = list_var[i].strip()

for i in range(0, 46):
    sheet.cell(row=i+1, column=1).value = list_var[i]

wb.save('rename.xlsx')

 

cells의 크기에 맞춰 반복문을 내가 수정해줘야 한다는 단점은 나중에 고치기로 한다.

'etc' 카테고리의 다른 글

[Docker] Container 기술  (0) 2020.01.07
[Docker] dockerfile로 아파치 서버 연결  (0) 2019.12.26
[Docker] How to use docker #4  (0) 2019.12.26
[Docker] How to use docker #3  (0) 2019.12.26
[Docker] How to use docker #2  (0) 2019.12.24

도커는 LXC(Linux Container) 기술을 기반으로 만들어졌다. (Docker 1.8 이전 버전까지 사용)

LXC

Host OS에서 프로세스 간 벽을 만드는 기술이다.

LXC에 포함되는 기술들 :

  • 커널 네임스페이스 (ipc, uts, 마운트, pid, 네트워크, 사용자)

  • Apparmor와 SELinux 프로파일

  • Seccomp 정책

  • Chroots (pivot_root 사용)

  • 커널 캐퍼빌리티

  • CGroups (Control Groups)

LXC 컨네이너는 보통 chroot와 실제 가상머신의 중간적인 성격을 갖고 있다고 생각되어 진다. LXC의 목적은 별도의 독립적인 커널이 없어도 보통의 리눅스 설치에 가까운 환경을 만드는 것이다.

CGroups

프로세스들의 자원의 사용(CPU, 메모리, 디스크 입출력, 네트워크 등)을 제한하고 격리시키는 리눅스 커널 기능

Kernel namespace

리눅스의 namespace 기술은 하나의 시스템에서 수행되지만 각각 별개의 독립된 공간인 것처럼 격리된 환경을 제공하는 lightweight 가상화 기술이다.

종류:

    Mount

    Process ID (PID)

    Network

    Interprocess Communication (IPC)

    UTS

    User ID (UID)


Reference

LXC : https://linuxcontainers.org/ko/lxc/introduction/#lxc

 

Linux Containers - LXC - 소개

LXC 란? LXC는 리눅스 커널 컨테이너 기능을 위한 사용자영역 인터페이스입니다. 강력한 API와 간단한 도구들을 통해 리눅스 사용자가 쉽게 시스템 또는 어플리케이션 컨테이너들을 생성/관리할 수 있게 해줍니다. 기능 현재 LXC는 컨테이너를 만들기 위해 아래의 커널 기능들을 사용하고 있습니다. 커널 네임스페이스 (ipc, uts, 마운트, pid, 네트워크, 사용자) Apparmor와 SELinux 프로파일 Seccomp 정책 Chroots (pivot

linuxcontainers.org

CGroups : https://linuxism.tistory.com/1601

 

linux - cgroups (control groups)

cgroups (control groups)은 프로세스 그룹의 리소스 (CPU, 메모리, 디스크 I / O 등)의 이용을 제한 · 격리하는 Linux 커널 의 기능. "process containers"라는 명칭으로 Rohit Seth 2006 년 9 월부터 개발을 시..

linuxism.ustd.ip.or.kr

Namespace : http://jake.dothome.co.kr/namespace/

Dockerfile 연습을 위해 작성

 

 

Dockerfile

FROM ubuntu

MAINTAINER noname

RUN apt-get update
RUN apt-get install -y apache2
RUN apt-get install -y apache2-utils

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN sed -i 's/80/1111/g' /etc/apache2/ports.conf # 원하는 포트넘버로 바꿔줌

CMD ["/usr/sbin/apache2ctl""-D""FOREGROUND"]
docker build -t noname/apache2 .
docker run -d -p 1111:1111 noname/apache2

'etc' 카테고리의 다른 글

[Python] 정규표현식을 이용한 상품명 변경  (0) 2021.05.09
[Docker] Container 기술  (0) 2020.01.07
[Docker] How to use docker #4  (0) 2019.12.26
[Docker] How to use docker #3  (0) 2019.12.26
[Docker] How to use docker #2  (0) 2019.12.24

+ Recent posts