주로 남의 소스를 건드리는 하이에나 같은 코딩을 하고 있는 이온디입니다.

소스 작업을 하다보면 정말 다양한 스타일의 코드를 만나볼 수 있는데요,

디자이너, 개발자, 퍼블리셔 직군이나 그 직군에서도 개개인의 능력에 따라 혹은 스타일에 따라 

다양한 형식의 코드들을 만나볼 수 있습니다.

 

HTML 돔 구조야, 뼈대를 잡는 일이니깐 구조를 잡는데는 이견은 없지만,

UI/UX를 신경쓰는 개발자는 없지요. (__);;

(그래도 생각해보면 제로님 정도는 그나마 디자인을 신경쓰는 개발자가 아니었나 싶습니다.)

 

오늘 이야기해볼 것은 바로 CSS인데요,

퍼블리셔가 아닌 개발자들이 코딩해놓은 CSS를 건드리는 일은 정말로 '괴발개발'인 경우가 종종 있습니다. 

1) 같은 역할, 같은 디자인인데 다른 클래스명을 남발하는 경우

2) .body .container .widget .font{...} 너무 꼼꼼하게 클래스명을 한줄한줄마다 지정한 경우

3) css의 문법에 맞지 않는 경우(해당 속성을 잘못 쓰는 경우)

4) XE에서의 경우 같은 기능을 담당하는 경우인데, 스타일이 다른 경우

 

백엔드 개발자 뿐만 프론트를 담당하는 경우에도 물론 있을 수는 있지만,

왠만한 퍼블리셔분들의 코딩 수준은 저보다 뛰어난 경우가 많아 오히려 제가 배울 정도였고요;

 

이런저런 다양한 경우들로 인하여 XE에서는 XE만의 CSS를 재정립해야하는 경우들이 많이 있습니다.

레이아웃에서 로그인이나 멤버, 게시판 관련한 특별한 클래스를 재정의해줘야하고요.

물론 해당 모듈 스킨에서 작업해도 되지만, 레이아웃을 큰 틀인 테마 개념으로 봤을 때,

레이아웃에서 특정한 기능들은 어느 정도 통일해주는 것이 좋아서 레이아웃의 CSS 디렉토리에서 해당 기능들을 재정의해줍니다.

(예전 테마 기능이 왜 없어졌는지 아쉬울 뿐입니다. 워드프레스나, 그누보드나, 왠만한 CMS들은 모든 기능들을 한 디렉토리에서 관리하지만, XE에서는 해당 기능들 디렉토리 안에 스타일 스킨이 따로 있지요.

요즘같이 번들링 도구가 잘 나와있는 시점에서는 오히려 그런 것들이 사이트의 전반적인 속도를 높여주거나 관리의 효율적 이점을 제공해주는 게 아닌가 싶습니다.)

 

이미지 1.png

<SCSS를 통하여 모든 CSS 파일을 먼저 임포트해서 쓴 경우>

 

예를 들어서 저 위의 코드를 예전 같으면 레이아웃에서 각각의 CSS를 별도로 불어왔을 겁니다.

<link rel="stylesheet" href="{$tpl_path}css/theme.min.css">

요즘엔 이런 식으로 하나만 가져와서 미니파잉된 소스를 불러올 수가 있습니다.

 

개발하는 입장에서 크롬개발자도구를 열어서 볼 경우는 별도 CSS를 각각 로드하는 경우가 편할 수 있지만,

사용하는 입장에서는 점점 불러오는 CSS의 갯수가 많은 것보다 하나를 불러오는게 속도면에서 낫겠고요.

(몇바이트 수준이라 실감할 정도로 그 차이를 느끼기는 쉽지 않습니다.)

 

개발은 일반 사용자가 하기엔 요즘은 너무 그 수준이 높아 역시 개발자가 하는 게 맞을 듯 싶고

제 입장에서도 요즘 퍼블리싱 기술이 점점 따라가기가 어렵더군요 ㅠ

그리고 저렇게 파일명을 기능에 따라 분류할 경우 오히려 직관적이라서 추후에 자기 소스를 관리하기도 쉽습니다.

이온디

profile
이온디는 라이믹스를 비롯한 다양한 CMS의 시드뱅크를 꿈꿉니다. 여러분들이 사랑하는 웹소스를 언제든지 사용할 수 있게 하기 위해 이온디는 매일 소스코드를 유지보수하고 있으며, 언제든지 다운로드할 수 있는 소스마켓을 운영하고 있습니다.

#XE마켓 - 이온디스토어
https://eond.com/xemarket/

# XE/라이믹스 단톡방을 운영 중입니다. (비번: 2022)
https://open.kakao.com/o/giaKKnl

# XE/라이믹스 생활코딩 모듈 강좌입니다.
https://opentutorials.org/module/3774
  • profile

    개발은 일반 사용자가 하기엔 요즘은 너무 그 수준이 높아 역시 개발자가 하는 게 맞을 듯 싶고

     

    이게 문제입니다.

     

    개발자와 일반 사용자는 명확하게 분리되는 개념이 아닙니다.

    일반 사용자가 필요에 따라 이것저것 건드리다가 점점 실력이 발전해서 개발자가 되고 하는 거죠.

    제로보드 시절부터 웹을 만져온 우리 세대 개발자들 중 상당수가 이런 사람들 아닌가요?

     

    minify의 예를 드셨는데, XE에서는 xe.css를 압축하여 xe.min.css를 만듭니다.

    xe.css를 수정하더라도 xe.min.css를 재생성하지 않으면 변경사항이 적용되지 않습니다.

    물론 __DEBUG__를 사용하면 xe.css가 로딩되도록 할 수도 있지만, 압축 효과는 전혀 못 보게 되죠.

     

    만약 xs.css에 뭔가 개선할 것이 있어서 깃허브에 PR을 넣는다고 하면

    그 PR만 받아서는 테스트 자체가 불가능합니다. xe.min.css를 재생성해봐야 합니다.

    그러려면 HTML, CSS, PHP 등의 기본적인 기술 뿐 아니라

    node.js라는 전혀 생소한 언어를 사용하여 minify 프로그램을 설치해서 사용해야 합니다.

    일반적인 웹호스팅 서버에서는 돌아가지도 않습니다.

     

    개발자와 일반 사용자의 간격이 넓어지는 이유는 그 간격을 넓힘으로써 이익을 보는 사람들이 있기 때문입니다.

    주로 개발자들이죠. 요즘 개발자들이 만들어내는 대부분의 툴들은 개발자들만의 전유물입니다.

    컴공과에서 배운 이론을 순수하게 지킨다는 명목으로 일반 사용자는 감히 범접할 수 없는 진입장벽을 만들어 놓고,

    그 벽을 넘어야만 프로젝트에 참여할 수 있는 자격이 주어집니다.

    그리고는 이걸 오픈소스라며 뻔뻔하게 배포합니다.

    이런 프로젝트에 일반 사용자는 당연히 참여하지 않겠죠? 그러면 "거봐, 걔네들은 참여 안 하잖아"라며

    더욱 개발자 위주로만 모든 툴들을 바꿔가는 악순환을 부추깁니다.

     

    기술의 부익부 빈익빈 현상이지요.

     

    적어도 XE타운에서 소개되는 기술들은 이런 이분법적인 사고방식을 밑바닥에 깔고 있지 않았으면 좋겠습니다.

    여기를 드나드는 분들 중 상당수는 일반 사용자와 개발자 사이의 넓은 스펙트럼 어딘가에 있으니까요.

    일반 사용자와 개발자의 관계는 흑과 백이 아니라 보라색과 빨간색입니다.

    그 사이에는 빨주노초파남보 다양한 종류의 헤비유저, 파워유저, 개발자 지망생 등등이 있지요.

     

    SCSS는 훌륭한 기술입니다. 얼마든지 쓰셔도 좋습니다.

    그러나 하나의 거대한 파일로 합쳐서 압축해 놓으면 암호화된 덩어리에 지나지 않습니다.

    암호화하여 배포되는 자료에 대해 @웹지기 님이 아래 글에서 지적하신 문제점들을 그대로 떠안게 되지요.

      - 내가 더이상 이 자료를 유지보수해 주지 않더라도 사용자의 눈높이에서 커스터마이징이 가능한가?

      - 어딘가 한 줄을 수정했을 때 즉각적으로 그 효과를 확인할 수 있는가?

    이런 부분도 진지하게 고민해 보았으면 좋겠습니다.

    해결책이 없는 게 아니거든요. 신기술에 꽂혀서 정신이 없으니까 거기까지 신경쓰기 귀찮을 뿐이죠.

  • profile profile

    저 같은 경우는 지날 달에도 레이아웃 스킨에서 이렇게 했었는데요.
    <load target="style.css">
    <load target="board.css">
    <load target="member.css">

     

    이제는 레이아웃, 게시판 스킨에서 불러오는 css, js만 해도 수십개라서 @_@;;

    레이아웃스타일, 레이아웃컬러스타일, 게시판스타일, 게시판스킨컬러스타일에만 각각 거의 10개씩..

    그리고 js 들 불러오고, 폰트나 이미지들, 그리고 인클루드되는 파일들을 관리하기엔..

    이게 이렇게 될 수 밖에 없더라구요..

     

    소스관리가 조금더 직관적으로 되고, 개발하는 입장에서는 오히려 이게 좀 더 유지보수에 효과적인거 같습니다.

    굳이 암호화 수준이나 난독화가 아니라, 개발하는 입장에서 바라보는게 아니라

    사용하는 입장에서 하나로 합쳐서 좀더 효율적인 제공을 하려는 것이지.. 

    이미 소스 파일에는 기본적인 css들은 다 포함하고 있어서 누가 수정하더라도 오히려 이렇게 파일명으로 기능을 구분하는 것이 누가 보더라도 직관적이라서 오히려 소스 수정 관리가 간편해지는게 아닌가 싶고요.

     

    한줄을 수정했을 때 즉각적으로 효과를 확인할 수 있는지는 이 부분과는 별개로..

    지금 작성한 것은 css 파일로 구분하여 로드하면, 해당 파일만 수정하면 그걸 확인할 수도 있지만,

    scss를 사용하면 css로 충분히 기존의 노가다를 줄일 수 있기 때문에, 추천하는 겁니다.

    이 글은 그러니깐 저처럼 기존에 레이아웃 스킨을 작업하시는 분들이 이런 방법으로 활용해서 개발하는 것이 어떤가 하는.. 추천하는 글입니다. ^^; css도 이제는 어느 정도 개발의 범주에 들어와서 ㅎ;

     

    http://dev.eond.com/findeo

    지금 작업하고 있는 사이트에 사용되는 소스들입니다.

    백엔드 개발이 아니라, 프론트 개발에 사용되는 파일들이 이러합니다. ;ㅁ;

     

    이게 레이아웃, 회원멤버스킨, 로그인스킨, 최근게시물스킨, 게시판스킨 등등

    한 개의 사이트에 필요로 하는 다양한 스킨들을 한번에 관리하지 못하는 부분이 현재 XE에서는 가장 큰 아쉬운 점이구요.

    예전에 테마 기능이 있었다면 이걸 다 한번에 관리해서 좀더 일관된 디자인으로 된 스타일을 사용자에게 제공할 수도 있었을텐데, 현재는 개발하는 작업 부터 여러 폴더를 왔다갔다해야해서 어려운 부분이 분명히 있고..

    이런 코드들이 각 스킨별로 하나의 css로만 제공된다면 개발하는 입장에서도. 각 부분이 모듈화해서 분명히 공통적으로 쓰일 수 있음에도 개발하기가 어려워지는 부분이 존재할 겁니다.

     

     

    이미지 5.png

    이미지 6.png

    이미지 7.png

  • profile ?
    '내가 더이상 이 자료를 유지보수해 주지 않더라도 사용자의 눈높이에서 커스터마이징이 가능한가?'
    는 고민할 필요가 없는 내용입니다. 기본적으로 유지보수를 해 줘야 하는게 당연한거니까요.

    범죄는 저지르면 안되는것이 당연한데, 내가 범죄를 저질러도 될까? 를 고민하는 격입니다.
    그건 범죄를 저지르는 사람이 나쁜거지, 범죄를 저지를 수 있는 틈이 생겼다는것이 나쁜건 아니잖아요.

    마찬가지로, 본인만이 유지보수 할 수 있는 것을 유지보수 해주지 않은 사람이 나쁜거지,
    개발자 본인만이 유지보수 할 수 있는것 그 자체가 나쁜건 아니니까요.

    진지하게 생각 해볼만한 내용은 맞지만,
    그것이 새로운 기술을 적용하는데 방해요소 또는 적용여부를 고민하느라 시간을 끄는 요소가 될 필요는 없다고 생각해요.
  • ? profile
    SCSS를 암호화 수준이라고 하는 것은 방향이 좀 잘못 된 거 같구요.
    암호화하자는게 아니라 scss를 잘 사용하자는 거고, 충분히 css를 기반으로 하니깐 -_-;
    유지보수하는데는 문제 없을 겁니다.;;

    사용자의 눈높이가 문제가 아니라, 개발자의 수준 또한 기술의 사용에 따라 차이가 발생하는 거 같아요.
    결국 이건 코딩 시간 속도, 유지관리비용의 문제인데 고용을 하던 직접 하던 알고 쓰는 것과
    모르고 불필요한 시간을 소비하는 건 다르고,
    개발하는 입장에서는 주니어나 시니어나 다같이 좀 효율적으로 해보자는 거죠 ㅎ
  • ? profile

    현실적으로는 그렇게 되지 않으니까 지적하는 사람이 나오는 거지요. 이온디님처럼 꾸준히 개발을 하는 분이라면 그나마 걱정을 덜 하겠지만, 소스를 암호화해 놓거나 남이 만지기 곤란한 아주 괴랄한 구조로 개발해 놓은 후 몇 달 지나지 않아 그만두는 사람도 있습니다. 이건 자료를 판매한 게 아니라 체험판을 제공한 거나 마찬가지지요. 시간이 조금만 지나도 못쓰게 될 것이 불보듯 뻔하니까요.

    유지보수를 얼마나 오랫동안 해야 하는지, 어디까지가 무료 A/S에 해당하고 어디부터가 별도견적인지에 대한 생각도 개발자와 사용자 사이에 큰 차이가 있을 수 있습니다.

    아무튼 저는 SCSS를 쓰지 말라고 말한 적 없습니다. 하나로 합쳐서 컴파일된 파일뿐 아니라 원본소스도 스킨에 포함하여 제공하고, 컴파일하는 방법까지 매뉴얼에 정확하게 적어 놓거나, 라이믹스처럼 SCSS 원본소스가 변경되면 자동으로 재컴파일되는 시스템을 마련해 놓는다면 사용자의 편의성을 해치지 않고도 얼마든지 신기술을 적용할 수 있습니다. 거기까지 생각을 하자는 취지의 댓글이었습니다.

  • profile
    한줄 요약하자면 scss 사용하니 조금 더 정리가 되는 느낌입니다. ㅎ;
  • profile
    html을 몸, css를 옷으로 비유하는데 종전의 경우는 한벌 점프슈트라면
    이제 scss는.. 기능별로 장갑, 모자, 속옷, 신발 이렇게 구분해서 예쁘게 컬러별로 코디할 수 있는-_-;
    css를 좀 더 효과적으로 정리해서 사용할 수 있는게 scss인거지 배포하는 문제랑은 별개여요;;