요새 외부이미지 img src 썸네일 기능 구현 관련 설문조사를 했는데... 블록

아래 투표 결과를 보시면 알겠지만 "더 손쉬운 방법이 있다" 라고 3명이 투표해 주셨는데 혹시 그 방법이 무엇인지 궁금하네요. 저도 있는 방법 다 동원해 봐도 안돼서 오픈한 소스처럼 구현한 건데 더 손쉬운 방법이 있다니 그 방법이 무엇인지 무척 궁금해집니다. 기술적인 방법을 알고 계신 분은 언급 부탁드리겠습니다. 네이버 오픈캐스트에서 링크 가져올 때도 랙이 걸리는 이미지가 있는데 어떻게 랙이 걸리지 않게 하는 손쉬운 방법이 있다는 것인지... ㅡ_ㅡ;


덧글

  • Hide_D 2015/04/18 16:39 # 답글

    한번 구경해볼까 하고 열어봤더니 코드 자체가 엉망이네요.

    (1)
    왜 따로 라이브러리에 함수를 만들어 쓰지 않고, "모든 코드"마다 if else를 달아 표시하도록 한거죠?

    (2)
    스킨 새로 추가하면 그 스킨마다 코드 다 추가할 건가요? 낭비도 이런 낭비가 없네요.

    (3)
    거기에다, 외부 썸네일 사용 여부는 설정 창에 true/false로 구분하도록 해야지, 코드를 넣고 빼고 하면, 나중에 기능 늘리면 파일을 몇개를 하실 참입니까?

    (4)
    $zb_url="http://www.blrun.net/bbs";
    $zb_path="/home/hosting_users/blrun/www/bbs/";
    잘 봤구요.

    (5)
    외부 썸네일과 내부 썸네일의 경로를 다르게 한 이유는 대체 뭡니까?
    경로 통일시키고, 내부에 플래그 하나만 남겨두면 되지.

    (6)
    $imagePattern="#<img[^>]*src=[\']?[\"]?(http[s]?://[^>\'\"]+)[\']?[\"]?[^>]*>#i";
    아 예........
    "//something.image.site/imgs/img.jpg" 이라는 주소를 가질 수도 있는데 말이지요...


    더 이상 보는건 시간낭비인것 같아서 그만 두겠습니다.

    -종합-
    유지 보수 점수 0점 드리겠습니다. 0점!
    프로그래머의 자질이 '역시나' 눈꼽 만큼도 없으면서, 만들겠다고 하는 꼬라지를 보니 어이가 없습니다.
  • 희망의빛™ 2015/04/18 20:42 #

    1.2. 그게 무슨 뜻이죠? 모든 코드마다 if else 를 썼다니 라이브러리를 만들어 쓰라니... 스킨은 몇개든 계속 추가할 수 있고 메인페이지나 zboard.php 호출할 때 게시판 id 적어서 사용하면 됩니다. 필요하다면 라이브러리(lib.php)에 함수를 추가할 수도 있겠구요.
    3. 외부 이미지 썸네일은 관리자 모드에서 썸네일 게시판이 아닌 다른 일반 스킨을 사용하면 됩니다. 기존 내부 썸네일은 f2plus 게시판 설정에서 사용안함으로 셋팅해 on off 할 수 있습니다. 외부이미지 썸네일을 적용하지 않은 버전도 따로 배포하고 있으니까 문제될건 없지 않을까요? ^^ 맞어 f2plus 설정에서 썸네일을 사용하지 않음으로 설정하면 외부이미지도 썸네일 생성시키지 않고 게시판 리스트에서 썸네일 보여줄 때 원본 이미지를 축소해 보여준답니다. 뭔가 소스 분석을 잘못 하셨네요. ㅋㅋ
    5. 포스트가 올라간 날짜를 썸네일 파일명으로 하기 때문에 혹시 첨부파일 이미지 썸네일 파일명과 중복될까봐 그렇게 했습니다. 썸네일 찾아보기도 쉽게 할 목적도 있구요. 그리고 구현 방식은 전혀 다르기 때문에 기존 썸네일 디렉토리를 그대로 사용하느냐는 큰 의미가 없답니다. ^^
    6. 처음에 동일 서버 내에서 상대경로로 지정된 img src url 도 지원해 볼까 고려를 했었는데 그냥 http와 https로 시작하는 외부 이미지만 지원하도록 프로그램을 짰습니다. 상대경로까지 지원하게 되면 외부 html 소스에서 다른 서버에 있는 상대경로까지 추출을 시도하게 되어 존재하지 않는 이미지 썸네일 추출로 인해 속도나 랙 문제가 더 심화될 우려가 있습니다.

    -종합-
    소스를 제대로 분석해 보시고 평가를 하셨는지는 모르겠지만 제가 제공한 소스를 사용해 보실 요량이라면 감사한 마음으로 잘 사용하겠다고 해야 인지상정이겠죠. ㅡ_ㅡ 그런면에서 Hide_D님은 아무래도 비정상적으로 보이네요. ㅋㅋ
  • ... 2015/04/18 17:39 # 삭제 답글

    맞게 가르쳐줘도 이해 못하고 쌍욕하던 버릇은 그대로구나. Hide_D님이 사용할 요량으로 보셨겠냐? 얼마나 병신같이 만들어 놨나 궁금해서 보셨겠지. 다른 사람 글을 볼 땐 어떤 의도로 썼는지부터 파악하는게 정상 아니냐? 그런 의미로 너님은 비정상으로 보이네. ㅋㅋ
  • 희망의빛™ 2015/04/18 17:46 #

    뭘 맞게 가르쳐 줬다는 건지... 감정 있으면 감정 있다고 얘기하지 말 돌리고 욕하는 꼴이란... 당신은 욕할 명분이나 있소? 한심하구만... 그게 바로 또라이가 하는 짓이지.
  • 이굴루운영팀 2015/04/18 19:53 # 답글

    조까! 하하하 이 말씀을 드리고 싶네요.
  • 래칫 2015/04/18 22:12 # 답글

    이분은 곱셈안쓰고 평생 더하기만 쓰시는분이라서
    말해줘도 안써요
    시간낭비들 마세요
  • ㄲㄲ 2015/04/18 23:26 # 삭제 답글

    형. 진짜 부탁인데 조현증 치료 계속해요.

    형은 다 나았다고 생각하는거 같은데 아무리 봐도 중간에 치료 끊어서 심해진게 눈에보여요.
  • Miyun_86 2015/04/19 07:24 # 삭제 답글

    어지간하면 그냥 댓글 안 달고 비웃고 끝낼려고 했는데...
    Hide_D님 말씀 이해는 하시기는 한겁니까? 답변도 동문서답이네요...

    1, 2. 대충 어떠한 식으로 코딩했는지 안 봐도 비디오군요. 지금 이야기도 이해 못하는 상황 같으니 진짜 쉽게 좀 설명드리겠습니다.
    지금 주인장 코딩 방식은 메인 코드에 각 스킨별로 대응하는 식으로 코딩한것 같군요. (솔직히 코드 안 봅니다. php는 손뗀지 너무 오래기도 하고, 지금 저까지 혈압오르고 싶진 않거든요. 안그래도 지금도 어이없어서 혈압올라가는 중인데.)

    ex) if ( Skin1 == true)
    { 구동구문 }
    else if (Skin2 == true)
    { 구동구문 }
    ......
    else // default
    { 구동구문 }

    메인 코드에 이렇게 넣는 방식이 유지보수가 제대로 될 꺼라고 보십니까? 아, 물론 현재 코드야 혼자 쓰고 혼자 유지보수하니 다 아니까 상관없다고 생각하실지도 모르죠.

    (김상중 톤으로) 그런데 말입니다. 저런 스킨 분기형 코드가 한 구간에만 있을까요?

    그럴리가 없죠. 각 페이지 모두 스킨별로 동작할텐데. 그럼 일반적으로 스킨 기능을 통합해서 하나의 라이브러리로 구성하고, 거기서 호출해서 적용하는 방식을 구상하야지, 메인 코드에 스킨 하나씩 추가할때마다 하나씩 if문 추가하실래요? 이게 무슨 프로그래밍입니까? 객체지향 프로그래밍 운운을 떠나서 기본적인 함수화도 못하는데...

    3. 답변에서 밑천 나왔군요. 일반 스킨 사용하라구요? 전 스킨에서 썸네일 기능을 on / off 하는 방식으로 하는 구현이 정상적이라는 생각 안 해보셨나요? 위에서 함수화 이야기 했으니 동어반복하기 싫어서 이쯤 생략하겠습니다.

    4. url이랑 path에 자기 id 박아놓는 센스 하고는...

    5. 썸네일 구현 방식이 틀려요? 틀리게 만든 쪽이 문제라고는 생각 안 하십니까? 왜 같은 기능을 다른 구현 방식으로 했는지 이해를 못하겠군요.

    6. .....................한숨만 푹푹 나옵니다.
    이미지 파일 이름은 DB화 시켰을 것인데, 저런 무식한 방법을 씁니까?

    string array image_name = DB 호출(Select img_name from Img_Table where = 해당 이미지 게시판 Name / Flag)
    string default_img_path = 이미지 폴더

    for(int loop = 0; loop < image_name.count; loop++)
    {
    img_path = default_img_path + image_name
    .......
    }

    가독성 훨씬 간단하죠? 그리고

    "상대경로까지 지원하게 되면 외부 html 소스에서 다른 서버에 있는 상대경로까지 추출을 시도하게 되어 존재하지 않는 이미지 썸네일 추출로 인해 속도나 랙 문제가 더 심화될 우려가 있습니다."
    ...예? 애시당초 다른 서버에 있는 것을 왜 추출하게 코드를 만들었습니까? 지정경로만 찾으면 되는데요? 혹시 이미지 관리조차 단일 폴더에 안 했습니까?

    지금 이게 유지보수를 고려하고 만든 프로그램이라고 하면 할말이 없습니다. 어디 한번 답변 기대해 보겠습니다. 진짜 최대한 쉽게 설명했는데, 이마저도 이해 못하시면... 예, 제가 프로그래밍만 생각하다보니 전보다 어휘 능력이 떨어져서 제대로 설명 못한 죄라고 생각하겠습니다.
  • 희망의빛™ 2015/04/19 08:28 #

    지난번 덧글에서 다 설명드렸는데 또 엉뚱한 소리를 하시네요. 헐~. 답 없네요. 제가 Hide_D님에 달은 제 답변 덧글을 잘 유심히 함 살펴보시기 바랍니다. 거기에 설명이 다 들어있어요. 모르시면 제가 오픈한 소스코드도 함 분석해 보시구 다시한번 제 덧글이 무슨 소리를 하는지 연구해 보기 바랍니다.

    그리고 스킨명을 써서 프로그래밍 한 건 f2plus 판매게시판과 무비게시판 부분의 일부 소스에서만 그렇습니다. 왜냐하면 그 스킨은 특수한 용도의 스킨이기 때문에 일부러 그렇게 프로그래밍 한 겁니다. 또 외부 이미지 썸네일은 어차피 img 태그 src에서 추출해야 하고 내부 이미지는 DB 테이블에 저장돼 있는 data/ 부분과 이미지박스 디렉토리에서 추출해야 하기 때문에 전혀 프로그래밍 방식이 틀립니다. 뭔가 동일선상에 놓으려고 하시는 것 같은데 물론 썸네일 추출을 하는 신택스는 똑같습니다. 하지만 썸네일 함수에 전달하는 인자값 변수를 전혀 다르게 처리하기 때문에 제가 그렇게 짰습니다.

    6번은 무슨 소리인지 모르겠네요. 제가 외부이미지 태그에서 src url 을 추출하는 기법을 전혀 이해하지 못하고 쓰신 글인 것 같습니다.
  • miyun_86 2015/04/19 07:25 # 삭제 답글

    그리고 제발 좀 프로그래밍한다는 소리좀 하지 마세요. 그냥 취미로 혼자 한다고 하면 아무도 안 말릴테니까 부탁드립니다. 진짜 웹쪽은 안 했지만 다른쪽에서 프로그램으로 밥 벌어먹고 살고 있는 입장에서 주인장같은 분이 프로그래머 운운하면서 이야기하는거 보면 생판 모르는 남들은 프로그래머를 주인장 수준으로 생각할꺼 같아서 소름끼칩니다, 소름끼쳐요.
  • 루루카 2015/04/19 09:18 # 답글

    프로그래밍이라는 것이, 원래 자신이 짠 코드 빼고는 다 이상한 코드인 것도 사실이에요.

    아무리 패턴이 있고 모델이 있다고 해도 결국 구현하는 사람마다 철학이 다르고 생각이 다르기에 아주 단순한 습작 코드가 아닌 이상 동일하게 나올 수가 없고 그 경우, 다른 사람의 코드가 이상해 보일 수도 있어요.

    그런데 말씀이죠? 아무리 그렇더라도 대략 이런식으로 하는 것이 좋다는 정도의 기본적인 것은 공유될 수 있답니다. 최소한 다른 여러사람이 그건 아니다라고 할 경우에는 고집만 부리고 다른 사람들을 다 이상한 사람으로 치부할 것이 아니라 한 번 천천히 생각을 좀 해보는 것이 어떨까 싶어보이네요.

    저도 웹 기반이 아니다보니, 전적으로 말씀 드리기는 어렵지만, 지금 위에 지적사항들을 통해서 최소한 두 가지 정도의 상황은 인지하겠네요.

    1. 케이스 바이 케이스로 전부 딴 코드로 구현했다.

    함수 말씀들 많이 나오지만, 동일 혹은 유사 기능을 하는 코드는 하나의 함수로 구현하는 것이 코딩할 때도 편하고, 향후 관리 할 때도 편해요.
    그리고 그러한 기능별 함수들을 모아놓아서 라이브러리화 하면, 더더욱 코드/모듈의 재사용성은 좋아지게 되죠.

    동일 혹은 유사 기능을 하는 코드들을 사용하는 부분마다 제각각 다 코딩할 경우, 일단 코딩할 때도 일일히 다 작성해줘야 하므로 일이 그만큼 늘고, 향후에 더 나은 로직으로 대체하던가 버그가 발견되어 수정하던가 하는 상황에서 역시 그 제각각의 위치를 다 찾아다니면서 수정해야 하는 수고를 낳게 되므로 이러한 복잡성은 결국 버그를 양산하죠.

    특히나 동일 기능을 하는데, 어떤 때는 정상 작동하고 어떤 때는 비정상 작동할 경우 원인을 찾아 고치기 참 어려워져요. 디버깅도 아주 나쁜 상황에 직면하고요.
    실제로 필드에서 다른 업체들을 상대해볼 때, 유감스럽지만 저런 경우는 아주 흔하게 접하게 되는 경우라는게 다소 황당스럽답니다. (특히 중소규모 웹 업체들...)

    2. 여기저기 분산 배치했다.

    썸네일 파일 뿐 아니라 어떤 것이 됐더라도 가급적 모아서 구조적으로 배치하는 것이 좋아요.

    일일히 별개로 분산 배치해놓으면 관리하기도 안 좋고, 코드에서 찾아갈 때도 각각 관리/접근해야 하기 때문에 효율이 안 좋죠.


    하나만 여쭤보고 싶네요. 여기 이런 포스팅을한 이유는 정말 뭔가 도움 혹은 조언을 구하고자 함이 아니었나요?

    그런데, 정작 의견이랄까 현장 경험/지식을 바탕으로 부족한 부분을 지적하는 덧글이 달렸는데, 하나도 받아들이지 않고 자신의 고집만 부리고 되려 욕을 하면, 무슨 조언을 구하는 것인가요? 그럴거면 그냥 혼자 고민해서 혼자 고치는게 맞지요. 받아들일 생각은 없으면서 질문은 왜 하는지 솔직히 이해하기가 어려워요.

    아니면, 이런 포스팅은 스스로의 스킬을 과시(?)하기 위함인가요?

    최소한 수십줄에 걸쳐 덧글로 이런저런 말씀들을 주실 때는, 아무튼 조금이라도 도움이 되라는 마음을 가지고 수고한 것이라는 생각도 좀 해보시면 좋을 것 같네요.
  • 희망의빛™ 2015/04/19 17:09 #

    함수를 라이브러리 형태로 재사용 한다는 것은 저도 잘 알고 있고 어떤 부분이 그렇게 안돼 있다는 뜻인지 모르겠다는 것이죠. 물론 오픈된 소스를 보면 그런 부분이 전혀 없는 것은 아닙니다. 중요한건 제가 이번 포스트를 올린 목적이 제가 이번에 새로 구현한 외부 html img src URL 썸네일을 구현한 방법 말고 더 손쉬운 방법이 있다고 투표하신 분이 3분이나 계셔서 그분들은 과연 어떤 방법을 말씀하시는 것인지 해당 로직의 기술적인 부분을 여쭤봤던 겁니다. 제가 이번에 구현한 소스의 알고리즘을 이전 포스트에서도 대충 언급드렸는데 해당 구현 부분은 전혀 언급이 없고 손쉬운 방법이 있는지에 대해서도 언급이 없으시니 전혀 엉뚱한 지적들을 하고 계신거라는 거지요.

    저도 함수 라이브러리화의 취지는 잘 알고 있고 lib.php 내의 함수나 /bbs 폴더에 들어있는 공통 파일들 말고 그 외에 일부 파일에서 좀 엉성하게 흩어져 있는 건 사실이지만(주: 극히 일부의 코드가 부득이하게 스킨명을 사용한 코드고 나머진 모두 제로보드 모듈화에 충실하게 구성된 코드일 겁니다) 전 그걸 가지고 말하는 게 아니라는 거지요. 제가 이번에 구현한 외부이미지 썸네일의 기술적 방법 말고 더 좋은 방법이 무엇이냐를 여쭤봤던 거지요.

    이런 건 있습니다. 제가 짠 코드가 이해하기 힘드니 이해하기 쉽게 짜달라고 요청하는 것들이요. 하지만 저도 초기 제로보드4 구성에 충실하게 지금까지 유지보수를 해왔고 워낙 html과 JavaScript, PHP 조합이란 게 모듈화가 가능한 부분이 있고 불가능한 부분이 있기 때문에 그런 부분을 고려해야 한다는 것이죠. 하지만 저도 최대한 구조적으로 코드를 기술하는데 노력했다는 점을 알아주셨으면 좋겠습니다. 먼저번 덧글에서도 말씀드렸지만 f2plus 무비게시판이나 판매게시판은 특수한 기능을 담당하는 스킨이기 때문에 코드 구조가 일반 스킨 구조와 좀 다르다는 것은 미리 알고 계셔야 합니다. 이런 부분들만 참고하면 제가 오픈한 소스를 개조하는데 전혀 문제가 없을 겁니다. 게다가 제가 친절하게 !읽어보세요.txt 파일로 따로 적용해야할 부분들만 기술해 놨기 때문에 더욱 편리하게 소스를 사용할 수 있습니다.

    코드의 모듈화 부분은 저 역시 앞으로도 계속 치중해야할 부분으로 생각하고 있습니다. 그런 관점이라면 걱정안하셔도 좋을 듯 합니다.
  • 희망의빛™ 2015/04/19 17:29 #

    url 이나 aanalyzer 로그분석기 id 같이 사실 setup.php 파일에 몰아넣어도 되는 변수들이 존재하는 건 사실이고 이 부분은 그런 파편화의 지적에 있어 좋은 사례가 될 것입니다. 일단 상관 없을 것이다라고 생각하고 그렇게 코드를 짜집기 했는데 문제가 된다면 해당 변수를 setup.php 등에 넣어 셋팅할 수 있는지 고민해 보겠습니다. ^^;
  • 총통 R 레이퍼 2015/04/20 16:33 # 답글

    모르는걸 가르쳐주면 감사하다고 말하는게 인지상정이겠죠? 잘못되었다고 일부러 분석까지해서 알려주는 사람에게 소스 쓰려면 감사하라는 적반하장은 어느라나 방식인지요?
  • 마누 2015/04/20 13:33 # 삭제

    잠시 태클을 걸자면 적반하장;;
  • 총통 R 레이퍼 2015/04/20 16:34 #

    수정했습니다. 감사요..^^;;
  • ... 2015/04/20 16:43 # 삭제

    쪼끔 죄송하지만 어느나라;;;;
  • 총통 R 레이퍼 2015/04/20 18:04 #

    아...젠장...지적 감사합니다...왜 이리 오타가....ㅠㅠ(안고치겠다....칫...ㅠㅠ)
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색