올해초부터 그냥 심심할때 만들고 있는, 개인용 CMS..

(개인용인 이유가, 내가 IE를 포기하면서 만든거니까! 뭐 레이아웃등을 IE에 맞춰서 다시 짜면 IE에서도 쓰는건 가능.. jQuery로 낮은버전으로하고, 부트스트랩도 낮은버전으로 하고..)


초기에는 각 파트별로 왜 이렇게 만들었고, 이러한 문제점이 있었고, 나는 이렇게 해결했다!

(알고지내던 지인이 이제 곧 졸업인데, 과외 좀 해달라해서;;)


라는 포스팅도 해볼까..??? 라는 생각을 한적이 있으나..


이 CMS의 문제점이..


아무런 기획없이, 그냥 그날그날 내 기분내키는대로 제작이 되고 있다는거고..

(실제로 제작로그 갱신이 길었던 기간보면 기본 시스템을 상당히 갈아엎기도 했.. 초기인데.. 는 야겜함.)


제작하면서 여러가지 이유에 의해서 계속해서 대규모 수정이 되고 있기때문에..


포스팅이 좀 불가능;;


실제로 로그보면 알지만, 기본기능 제작 -> 검색 및 페이징 제작 -> 다국어 적용.. 등을 순차적으로 하다보니, 각 단계별로 수정해야하는것들이 계속 나와서;;


사실 제작중인거 포스팅도 어느정도 데모버전이 나오면 올릴려고 했는데..


음..


데모버전까지 갈려면 아직 멀었으려나..

(일단 이번달은 힘들겠지.. 아직 게시판이 없으니까.. 최종보스 게시판..)


SMS발송이랑도 부착해야하고, 메뉴설정도 넣어야하고..

(SMS발송은 API로 지원해주는곳이 있기에 거기꺼 넣을 생각..)


구글애널리틱스 연동도 지금 생각중이라 그것도 개발해야하고..

(CMS 자체통계를 내가 여러회사 다니면서 만들어봐서 아는데, 솔직히 쓰는사람 없더라.. 다들 구글애널리틱스쓰지.. 내가 회사 다니면서 만든 CMS도 생각해보면 5 ~ 6개 정도 되네..)


일단 기초적인거만 작업중인데도 좀 오래걸리네요..


게다가 Codeigniter의 Active Record만을 쓰도록해서 최대한 개발중이라..

(직접 쿼리날리면 좀 복잡해도 1시간이면 최적화까지해서 짜는데..)


오늘 개발하면서 안건데, Codeigniter는 subquery를 지원하지 않는군요.

(Codeigniter를 쓰는 회사를 다니면서부터는 그런 쿼리를 날린적이 없어서 몰랐네..)


그래서 어쩔수 없이 직접 쿼리 박아볼까.. 생각을 해서..


과거 학점관리시스템(학점은행제 시스템)만들때 생각하면서 subquery에 order by를 넣어봤는데..


작동을 안하네요.


검색을 해보니, subquery는 원래 order by를 지워안한다고.. (.. .. ..)


근데, 과거 쓴적이 분명 있기에 찾아보니..


각 버전별로 다른데, 높은 최신버전 기준으로 limit이 들어가면 한정적으로 가능하다고 하네요.

(나 첫회사때 mysql 높은버전썼구나.. 하긴 첫회사가 좀 그랬지..)


그래서 이것저것 고생을 좀 하다가..


그냥 join으로 해결을 했네요.

(DB구조는 상단 이미지 참고..)



음음..


이렇게 쉽고 빠른걸 왜 삽질 했을까..


일단 page 테이블에 동일한 page 테이블을 join하는데..


page 테이블 전체에 현재 사이트 언어의 row를 join합니다.


검색어의 경우 join된 테이블에서 검색을 시도하며..

(이것의 경우 장단이 있다고 생각하는데, 일단 장점은 해당 언어에서만 검색이 가능하다는점. 단점은 게시판 전체(다국어포함) 검색이 아니라는점..)


group by로 동일한 번호를 가지는 다국어 페이지를 하나로 합치게 됩니다.


이 경우 order by가 안되므로 PK에 의해서 첫번째 row가 적용이 되는데..


해당 배열을 돌리면서, join한 테이블에 데이터가 있는지를 체크.


있다면 해당 테이블의 데이터를 배열로 만들어서 list함수에 넘겨주고, 만약에 없다면 왼쪽의 첫번째 row의 데이터를 넘겨줍니다.


5번글에 한글로 내용을 적었는데, 영어로 된 글이 추가로 없다면, 영문 사이트에서도 한글을 보여주게 되고, 만약 5번글에 영어로 써있는 글이 있다면 영어로 된 페이지를 보여주게 됩니다.


개인적으로 하나의 사이트에 다국어 설정을 한다면 위와같은 사이트를 주로 운영하기 때문에 위와같이 설정이 되어있습니다.

(각 언어별로 내용이 전부 동일한 경우..)


만약에 하나의 주제에 각 언어별로 사이트를 만들면 뭐, 그건 어쩔 수 없고..

(각 언어별로 내용이 완전히 다른경우..)


코드이그나이터의 경우 액티브 레코드만 사용해서 쿼리를 날리는경우 제약조건이 상당히 많이 있기 때문에..

(잘만 지키면 여러개의 DB에서 문제없이 사용 할 수 있다는 장점이 있지만..)


메모형식으로 남겨둡니다.

(코드이그나이터를 다들 어떻게 쓰는지는 모르겠지만, 저같이 액티브 레코드만 쓰는걸 하는 사람도 있을테니..)


ps. 사실 XE가 망트리를 타면서 지금 운영하는 XE사이트들을 다 이 CMS로 교체할까 생각하면서 지금 운영중인 약 5~6개의 사이트를 생각하다보니, 고려할게 많네요..

(사이트들이 다 고유 특징이 있어서;;)


사실, 다들 CMS만들기 귀찮아서 오픈CMS쓰지, 못만들어서 쓰는건 아니잖아요?


ps2. 이 CMS를 제작하기 시작한 이유가..

지인왈 '야 너 뭔가 혼자서 만들어본 작업물 같은거 없냐? 주변사람 프로그래머가 필요하다는데 뭔가 보여줄게 없네?'

(야 그걸 혼자서 다 할거 같으면 그냥 내가 회사 차리지, 뭐하로 내가 회사 다니냐..)


로 시작..;;


그래서 만든 사이트 몇개 보여줬더니, 필자가 직접 처음부터 끝까지 다 혼자 작업한걸 원한다는 어처구니 없는 발언!에 설득되서 만들기 시작한;;

(웹개발자가 왜 기획이랑 디자인이랑 UI랑 UX랑 앱이랑 그런거까지 다 알아야하는데??? 나 진짜 한국 사회 이해가 안되.. 디자이너가 반응형웹을 모르는거는 아무말 안하면서, 개발자가 반응형웹 모르면 그것도 개발자냐는 사람들이 많은데, 반응형웹은 디자인적 요소가 중요한거지, 개발자적 프로세스가 중요한게 아닌데;; 아니 정확히는 개발과 디자인이 오묘하게 결합되어있지.. 근데 이게 디자이너가 몰라도되는 이유로는 되지 않아.. 지금까지 반응형웹 재대로 디자인하는 디자이너 본적이 없음.. 전부 내가 가르쳤지.. 가르쳐줘서 이해하는 사람 딱 2명봤지만..)


뭐, 회사다니면서 기획자 디자이너 개발자 다 가르치고 다니기 때문에..

(전부 어느정도 소양이 있음. 회사에서 개발 이외의 일을 하라고 하면 절대 안하지만.. 내가 왜??? 돈이라도 2배로 주는것도 아니고 개발일도 바쁜데 다른일을 왜 해..)


한번 간단하게 만들어볼까..


하면서 기획도 대충 끄적이고, 디자인도 대충 끄적이고 하면서 진행중인데..


완성은 언제할지 미지수..

(지금 이 글을 쓰면서 생각한 개선점도 있고.. 무엇보다 지금 로컬작업이라, 실서버에 올라가서 어느정도 퍼포먼스가 나올지도 미지수고.. 서버에 올렸는데 퍼포먼스 안나오면 그때 또 뒤집어 엎어야..)


뭐 인생의 20대 목표는 클리어했으니, 30대 목표인 창업때 유용하게 쓰지 않을까 생각중..

(그런고로 내가 창업하기전에는 완성하겠지.. 뭐 창업도 내가 오랫동안 다닐 수 있는 회사를 30대까지 발견 못할때의 이야기지만..)


ps3. 간간히 코드이그나이터가 한국적이지 못하다는 사람들이있는데..

(이력에 코드이그나이터있으니 면접관이 겉핥았다고 질문 많이 하더라. 문젠 내가 설명을 해줘도 이해못하고, '그런게 가능해요?'라 카더라.. 뭐 10년차 개발자가 php function을 재대로 못쓰는것도 봤는데.. 수정을 모든 파일 열어서 컨트롤+H로 치환하는거 보고 다시는 그 사람이 만든거 안건드렸지;;)

다른 프레임워크써보면 그런소리 못할텐데..;;

코드이그나이터는 충분히 한국적으로 얼마든지 커스터마이즈 가능한데;;

(내가 진짜 외국의 프레임워크 여러개 써봤는데 코드이그나이터가 가장 무난하던데.. 그러니 다들 많이 쓰는거고..)

Posted by Pure Ani

RE:D Cherish! -Eternity Blood- CRYSTALiA

放課後シンデレラ2 HOOKSOFT

花鐘カナデ*グラム NanaWind

フタマタ恋愛 ASa Project

スタディ§ステディ2 ま~まれぇど

リンパにATATA! ~メス牡蠣ミルクどぴゅらっしゅ~ Hending

創作彼女の恋愛公式 Aino+Links

流星ワールドアクター Heliodor

Secret Agent~騎士学園の忍びなるもの~ ensemble

天冥のコンキスタ エウシュリー

HaremKingdom -ハーレムキングダム- SMEE

ラズベリーキューブ まどそふと

ノラと皇女と野良猫ハート2 -Nora, Princess, and Crying Cat.- HARUKAZE

『ノラと皇女と野良猫ハート2』応援中♪

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

姫繰三六五 公式ウェブサイト

はるるみなもに! クロシェット

死に逝く君、館に芽吹く憎悪 バグシステム

Sanguinea-サングイネア- すにぃる

麗華の館 しすたーそふと

カスタムメイドオンライン KISS