...++
=

#0 Prologue


정말 끔찍한 일은 말이지, 하고 그가 새벽 세 시 오 분 경의 무거운 침묵을 조용히 들어올렸다. 나는 우선 그의 들어올리는 목소리와 여전히 키보드 위에서 탭댄스를 추는 열 손가락을 관전만 하고 있으려고 했다. 정말 끔찍한 일은 내일 일어나지 않을 거야. 잠시 후, 응, 그게 무슨 소리야, 하고 앗차, 나도 그만 그 침묵의 링 안으로 난입했다. 그럼 언제 일어난다는 건데, 내일 일은 별로 안 끔찍하단 소리냐, 무슨 말을 그렇게 모호하게 해, 나도 모르게 너무 자질구레하게 되물어친 다음에 들려오는 컴퓨터 본체 냉각 팬 소리는, 그래서 무슨 야유처럼 내 말이 끝나고서부터 38평형의 텅 빈 사무실에 붕붕 메아리친다. 탭댄스가 잠시 멈추었다. 그가 안경을 고쳐 썼다. 그리고 정규방송이 중단된다.

내일 끔찍한 일이 일어날 거야. 하지만 지금껏 날 곁에서 지켜본 너만은 내일 그렇게 많이 놀라지 않았으면 좋겠어. 정말 끔찍한 일은 내일 일어나는 일 같은 건 아닐 거니까. 내일 너무 놀라거나 끔찍해하지 마.

그럼 정말 끔찍한 일이란 건 뭔데.

음, 그가 잠시 그답지 않게 잠시 뜸을 들이더니, 수천 년 전 제 나라 임금의 죄상과 차후 멸망상을 예언하러 가는 선지자가 그렇게 했을 법한 억양과 분위기로 조심스럽게 표현의 2차 시기를 시도했다. 이런 거 생각해 본 적 있어? 천재지변이 일어나서 어느 공항의 모든 교통편과 운항 일정이 전부 끊겼어. 사람들은 갈 길이 멀고 바쁘지만 아무 방도가 없으니까 발만 동동 구르고 있지. 그런데, 이게 중요한데, 공항 측에서 자꾸 무슨 표를 발급해. 어떨 때는 공짜로, 어떨 때는 돈 있는 몇 사람에 한해서. 잠시 후 비행기가 도착하면 제일 먼저 타고 나가게 해 주겠다, 버스가 오면 순서대로 타고 나가라, 소포나 중요한 걸 따로 보낼 수 있게 해 주겠다 운운하면서 말이지. 밖은 위험하니까 절대 나가지 말고 교통편이 올 때까지 무조건 실내에 있으라면서 심심하지 않게 음악이나 DVD도 틀어 주고 말이지. 그런데 이 공항의 유리창엔 온통 선팅이 되어 있단 말야. 왜냐면 밖은 이미, 음, 공항 주변이 싸그리 원폭을 맞고 무슨 호수 한가운데 인공섬처럼 고립되어 버렸거든. 그리고 공항에 직원은 없어. 모든 건 방송과 기계에게 맡겨 놓고 폭격 직전에 참모부터 말단까지 모두 대피했으니까. 사람들은 내일이면, 모레면, 두 시간 되면 다시 원래대로 일정을 계속할 수 있을 거라고 기대하면서 별 의미도 없는 순번표 수십 장을 지갑 속에 꽁꽁 숨겨놓고 웅크리고 있는데, 공항은 그 반경 5km 근방이 민간 절대 통제 구역으로 영구 지정되는 거야. 자, 그가 속사포같이 쏟아내던 등골 서린 괴담을 중단하고 날 보았다. 그가 고쳐 쓴 안경이 번득이며 내게 물었다. 며칠이 걸릴까, 공항 내 생존자 절멸까지는?

붕, 붕, 냉각 팬 회전하는 소리가, 붕, 붕, 38평형의 텅 빈 사무실에서 수도 없이 메아리쳐 울었다. 그는 다시 모니터로 그 안경을 돌리고, 몇 번의 거액의 주식거래를 대강 마쳐둔 뒤, 마지막으로 몇 개 은행의 개인 계좌 잔액을 확인하고는 망설임 없이 USB 메모리를 뽑고 드라이브 포맷 작업을 예약해 두고 일어났다. 나는 무슨 일이 일어났는지까지는 대강 짐작했다.

이제 어떡할 거야?

글쎄, 신문배달을 할까 싶어. 나도 내집마련의 꿈을 좀 이뤄야지, 안 그래?

우리는 웃지 않았다. 그 그가 무슨 작은 종이를 두 장 내밀었다. 무슨 영수증이 한 장, 하와이주 어딘가를 가리키는 주소가 적힌 쪽지가 한 장이었다.

이게 뭐야?

천국으로 가는 주소랑, 그건...

조선일보 구독 신청 영수증을 왜 나한테 줘? 이거 우리 집 주손데?

지옥을 보여준다는 순번표야.

나는 영수증에서 떼지 못하던 나의 시선을 번쩍 들어 그를 보았다. 어딘가 대단히 자랑스러우면서도 한편으로 몹시 불쾌해하는, 흡사 지옥 문 앞까지 잠시 순찰을 나간 성 베드로 사도처럼 내게 말했다... 아니 웃어보였다. 드드득, 예약 작업이, 드드드드득, 시작되어, 드드득, C드라이브가 바스러지고 있었다.

너에게 지옥을 보여줄게.




군대에서 물려받아 쓰던 노트에 적혀 있던 초고. 김진혁님의 "너에게 지옥을 보여줄게" 한 문장에 꽂혀 있던 시절에 쓴 것이라 구체적인 시놉은 없고 프롤로그밖에 없다. 이걸 쓸 당시에는 그저 막연히 상상만 했을 뿐인데, 정말 이 그림에 대충 들어맞는 사건들이 한두 개가 아니라서 뭐라 할 말이 없달까 도리어 창작 의욕이 솟질 않는다...


'1 내 > ㄴ 문학' 카테고리의 다른 글

범인은 현장에 돌아온다  (2) 2022.08.12
기도  (0) 2017.05.09
책가방의 초코파이  (0) 2014.09.29
외주(?)작업들  (0) 2013.08.20
김의기  (0) 2013.07.17
Posted by 엽토군
:

​​MVC 구조
- 주말 군부대라고 생각하면 알기 쉬움.
컨트롤러: 당직사관. 상황 판단을 해서 작업을 하거나 준다. 근데 저 혼자서 할 수 있는 일이 거의 없어서 보통은 일단 모델부터 부르고 본다.
모델: 상황병. 필요한 변수를 컨트롤러에게 물어봐서 그거 갖고 자료 뽑은 다음 뷰를 차출해서 작업한다. 사실상 거의 모든 실무는 얘가 혼자 다 함.
뷰: 일반병력. 쪽수가 많다. 각종 물자(HTML JS CSS 등등)갖고 다니면서 모델이 뽑아준 자료 보고 컨트롤러가 시킨 삽질을 해놓는다.


codeigniter 세그먼트
- 밑줄친 세그먼트가 주로 $this->uri->segment(n) 꼴로 호출된다.
- 아 물론 자기가 일일이 섬세하게 routing을 해둔상태라면 할말음슴
0: CI가 깔린 루트폴더. 여기까지는 ㅈㄴ 퍼블릭경로임.
1: 지금 보고 있는 화면 담당 컨트롤러 이름. 앱 복제의 경우를 대비해 고정값으로 적지 않는다.
2: 지금 보고 있는 화면을 만드는 함수(메쏘드)명. list, view, write...
3: 그 함수가 받아야 할 변수. 주로 DB 내 테이블명이나 옵셋(리밋)값.
(2n+2): 그 함수에게 추가로 알려줘야 할 변수명. page, id...
(2n+3): 그 추가 파라미터에 담겨야 할 값. 주로 DB 테이블 내 필드명이나 입력값.


codeigniter 페이지네이션
- "UI를 만들어주는 것뿐".
Q. $config['per_page']에 7을 할당했더니 3페이지 주소 세그먼트에 3이 아니라 14가 뜬다. 근데 이 와중에 게시물들 자체는 에러 없이 잘 뜬다. 왜 이러나?
A. $config['use_page_numbers']가 기본값인 FALSE로 되어 있어서 그럴꺼다. CI 입장에서 페이지 변수는 기본적으로 그 페이지 맨 첫줄에 띄울 아이템의 id 숫자("index")다. 그러니까 너님의 설정대로라면 1페이지에는 id가 0인 자료부터 6인 자료까지가 나오고, 3페이지에는 id가 14인 아이템부터 20인 항목까지가 나올 것이다. 그게 ㅈㄴ 정상이다.
Q. 난 그게 싫다. 3페이지로 가는 링크의 페이지 세그먼트가 당연히 3이어야 되는 거 아니냐? 그렇게 하려면 어떡하면 되나?
A. 어쩌긴 뭐 어째 $config['use_page_numbers']에 TRUE 주고 ㅈ빠지게 로직 짜야지 뭐. 전체 자료를 아이디 내림차순으로 가져오되 (페이지세그먼트값)*$config['per_page']-1을 뒤끝으로, (뒤끝)-$config['per_page']+1을 앞끝으로 해서 가져오는 LIMIT 쿼리문을 작성해야 될 거다. 골치 아프면 하지 말든가.


​​jquery.AJAX()
- 기본 코드 얼개는 다음과 같다.

$('#폼전체id').submit(function(e){ ◀1
  e.preventDefault(); ◀2
  if (폼 전송 거부 조건) {
    alert("이 폼은 전송 못하겠습니다.");
    return false; ◀3
  } else {
    $('폼 서브밋 버튼').html('로딩중…').attr('disabled','disabled');
    $.ajax({
      type: 'POST', ◀4
      url: '폼처리.php', ◀4
      data: $(this).serialize(),  ◀4
      dataType: 'json' ◀5
    }) ◀6
    .done(function(data){ ◀7
      alert(data['title']+"에 대한 정보를 찾았습니다."); ◀7
      $('#받아온 데이터를 사용할 객체').html(data['author']+"이(가) 쓴 +"data['title']"+에 대한 상세정보입니다."); ◀7
      $('#데이터 가지고 manipulate시킬 다른 객체').html(data['detail']);
 ◀7
      $("아까 disabled 시켜놨던 폼 서브밋 버튼").html('새로 시작').removeAttr('disabled');
      // 기타등등 하고 싶은 모든 작업
      })
    }) ◀6
    .fail(function(){
      alert("실패! 다시 시도해 주세요.");
      $('아까 disabled 시켜놨던 폼 서브밋 버튼').html('재시도').removeAttr('disabled');
      // 그밖에도 시키고 싶은 작업
    });
    return false; ◀8
  }
});

- 이하 조금 창피할 정도로 디테일한 설명
1: 제이쿼리에 들어 있는 submit() 는 개이득 메쏘드. 4번 참조
2: 해당 폼 태그의 action 속성과 무관하게 이하의 코드를 작동시켜야 하므로 선택이 아닌 필수. 폼태그의 action="어쩌구" 부분을 통째로 생략하는 것이 여러모로 가장 안전.
3: 매우 기초적인 JS 상식인데 몰라서 고생한 부분. 아무 동작도 하지 말라고 지시하고 싶을 땐 십중팔구 리턴폴스가 답이다.
4: jQuery.AJAX() 메소드의 필수값들은 type, url, data. 나머지는 없으면 없는대로 돌아가는데 이 셋은 꼭 있어야 한다(애당초 폼전송을 기본으로 하는 API이므로 당연하다 하겠다). ajax 호출 조건이 폼전체의 submit 메소드 호출일 경우, 이 시점에서 $(this)는 곧 바로 그 폼 전체이므로, 'data'에는 그냥 $(this).serialize()를 부여하면 끝. (이걸 안 쓸 경우 json 형식으로 일일이 매핑해 줘야 함.{'title':$('#title').val(), 'author':$('#author').val(), …} 하는식 ㅋ)
5: 'datatype'은 안 되고 'dataType'이 됨. 'url'에 지정된 폼처리.php로부터 어떤 데이터가 반환되는가가 이후 .done()과 .fail() 그리고 여기 쓰지 않은 .all() 메소드의 판별 기준이기 때문에 여기에 부여되는 값은 사실 상당히 중요하다. 'dataType'에서 'json'을 지정했는데 php가 함수 맨끝에 echo() 를 돌려서 text를 뱉었을 경우에는 얄짤없이 .fail() 내부가 실행됨. ajax() 메쏘드의 진가는 json을 받아와서 처리 가능하다는 데 있다. 7번 참조
6: 기본 얼개가 $.ajax().done().fail(); 형태임. 이 부분에서 괜히 누구처럼 세미콜론 열심히 찍어서 에러 내지 않도록 한다.
7: 여기서 변수명 'data'를 다른 걸로 바꾸면 작동을 안 함. 코드 결벽증이 있지 않고서야 그냥 냅두자. 자료 참조 방법은 그냥 json 배열 참조랑 똑같음. 위 코드를 보고 어떻게 사용 가능한지 짐작해 보자. 개발자 도구의 response 부분을 들여다보는 것은 매우 도움이 된다.
8: ㅈㅅ 솔직히 나 이거 왜 넣었는지 모름 ㅋ if else로 에러 처리를 했는데 이도저도 아닌 상황에 아무것도 하지 말라고 걸어둔 건가... try catch로 바꿔야 되나... 에이 몰라



추가예정


'9 도저히 분류못함' 카테고리의 다른 글

iYUPTOGUN  (0) 2016.01.30
그냥 생각을 해 봤는데  (0) 2015.04.06
Noto Sans KR woff  (2) 2014.07.31
본의 아니게  (0) 2014.01.16
스마트 재생목록 updated better  (0) 2014.01.02
Posted by 엽토군
:

초조함

2014. 12. 20. 01:17

“뭘 왜 그렇게 서둘렀어? 도대체 뭐가 그렇게 바쁜데?”

그러게나 말이다. 지난 며칠 아니 몇 주 동안 마음이 바쁘고 뭔가가 계속 조바심이 났다. ​뺨 한 대 얻어맞은 기분이 되어 문득 정신을 차리고 보니, 나, 지금 초조하다.

두번이고 세번이고 기말 리포트 제출이 어디로 언제까지 어떻게인지를 묻고 있질 않나, 코드이그나이터 자습서를 빌렸으면 빌린 것이지 당장에 시작이라도 할 것처럼 그 두꺼운 넷북이며 책까지 꾸역꾸역 들고 다니다 괜히 종이가방이나 찢어먹지를 않나, 도서관 자리 없어질까 모바일 학생증을 두번 세번 찍고 있질 않나, 심지어 아직 오려면 멀었을 학교 토익 개강날과 대출도서 반납일과 아무도 재촉하지 않은 당첨자 발표에 바짝 쫄아서 신경을 쓰고 있질 않나… ​이젠 이번 뻘짓이 이 정도이길 다행이란 생각도 살짝 든다.

문득 노후화를 생각한다. 지금 이 초조함은 내가 늙어버렸다는 신호일까? 왜 그런 말 있잖은가, 잘못 늙으면 조급함과 괴팍함만 남는다고.

왜 그럴까, 조급함이란 뭘까 생각해 봤는데… 이 초조함은 ‘늦으면 안 된다’라는 강박에서부터 비롯하지 않는가 싶다. ​실제로 나날이 뭔가가 단단히 늦어가고 있다고 느낀다. 연애경험이, 사회진출이, 철드는 속도가, 내가 기획하고 진행해야 한다고 나 혼자 믿은 이벤트의 당첨자 발표가, 졸업이, 숙제 제출이, 전공 이해 속도가, 그밖에 내가 인지조차 하지 못하는 무엇인가들이 기한이 임박했거나 이미 지나간 것 같은 것이다.
분명히 지금은, 물론 과제를 두 개 제출해야 하는 미묘한 기간이긴 하지만, 엄연히 방학 기간이다. 그리고 오늘 나는 방학 중의 내가 으레 그렇듯 뭔가를 다운받고 뭔가를 읽거나 보고 뭔가를 막 혼자 만들면서 잘 놀았다 그런데 ​정말이지, 유례 없이, 혐오스러울 정도로 불편한 맘으로 놀았다. 그 이유가 비단 엄마가 친정 가고 없어서 집에 강아지 콩돌이랑 나뿐이라는 데만 있는 건 아니었다. 통합진보당 해산이 헌재에 의해 선고되었다는, 내 인생에서 일어나고 있는 일이 맞는지 의심스러울 만큼 허탄한 일이 있어서만도 아니었다. ​다만, 그냥 있지 못하는 나 자신을 본 하루였다. 꾸역꾸역 먹고 놀고 누웠는데, 그래도 되는 것이었는데, 나 혼자서 그걸 제풀에 견디지 못했다. ​그래서 단독 판단을 내리고 뭔가 덜 초조해질 것 같은 일을 만들어서 했다. 정신이 들었을 때는 이미 늦었다.

우선 내일 잘 대답하고 잘 혼나고 잘 수습하는 것이 급선무다. 그리고 하여튼 해야 하는 일들에 즉시 착수를 해야겠다. 죽이든 밥이든 되겠지. 그것들이 일단락 되면 하루를 딱 정해서 정말 맘 편하게 놀겠다. 근데 지금 내 상태에서 그게 바로 될지는 모르겠다. ​난 내 머릿속으로 이런저런 일들을 컨트롤할 줄 알게 되었다고 생각했는데, 그저 초조함의 숯불만을 머리 위에 쌓고 있었다. 지금도 일단은 그렇지만 화요일부터는 확실히 ‘먹고 대학생’이다—근데 어쩌다 나는 그토록 내가 좋아하고 선망하며 잘 하기도 했던 그 신분 역할조차도 제대로 못 하는 노심초사 얼간이가 되고 말았나? 다만 그것을 도저히 모르겠다. 졸업반이 되면 다들 이러나 싶기도 하고…

'4 생각을 놓은' 카테고리의 다른 글

백업  (0) 2015.06.16
둠칫둠칫  (0) 2015.05.14
확인받고 싶은 것은 사실이지만  (0) 2014.01.04
요즘  (0) 2013.12.14
설정 평가 부탁 좀 하지 마 ㅄ들아  (2) 2013.10.06
Posted by 엽토군
:

페르시아에서는 왕이 미치면 카프카스로 전쟁을 하러 간다더니 저는 요즘 웹진 만들면서 꾸역꾸역 삽질하며 본의 아니게 키운 기초체력을 활용하여 오도방정 뛰어다니는 중입니다. 음… 이번 학기 성적은 과연 어떨까…


저번에 올린 Noto Sans 테스트 페이지는 건너뛰고, 그 이후 추가로 작업한 것들을 부끄러우나마 올려 봅니다 *-_-* 참고로 위에 있을수록 최신작(?)입니다.



is.gd / waa.ai URL shortener

완전히 개인적인 이유로 작업함. 뒤에 ?from=주소 형식으로 넣으면 prompt를 띄워서 축약주소를 가져갈 수 있게 해놓았다. 에러 핸들링까지는 했는데, isset()은 다룰 줄 모르겠어서 일단 못 함. (그리고 그걸 각 쇼트너 api들이 알아서 해주고있다... ㅋ... ㅋㅋㅋ... 역시 개인의 무능이 체제의 공교함으로 커버되는 21세기로군 ㅋㅋㅋㅋㅋㅋㅋㅋ) 기왕이면 프롬프트 종료 후 history.back()까지 먹여주면 좋았겠지만, 그건 아직은 내 능력 밖이라고 생각된다.

북마크릿으로 쓰시려면 적당한 즐겨찾기를 만드시고 주소를 아래와 같이 수정하세요.

is.gd

javascript:void(location.href='http://eojin.esy.es/isgd.php?from='+encodeURI(location.href))


waa.ai

javascript:void(location.href='http://eojin.esy.es/waaai.php?from='+encodeURI(location.href))

핵심: PHP JSON 파싱 // 다차원 배열 참조 // 에러 핸들링 // sgwlan에서 waa.ai가 멀웨어로 캡쳐되는 문제에 대하여 -_-;



Y'over There!

태어나 처음으로 작성해 본 php 웹앱(?). Yo 사용자에게 메시지 내용이 파라미터로 담긴 PHP url을 GET방식으로(;;;) 전송한다. 수신자는 * from YOVERTHERE라는 노티를 받고, 눌러 보면 송신자가 보낸 메시지가 나온다. 그냥 Yo라는 초단순 앱을 가지고 API 실습을 해 보는 데 의의가 있었음.

핵심: API 사용하기



adblock bookmarklets

픽시브 광고 안보이게 없애기(for touch.pixiv.net):

javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g>f.fn.jquery||h(f)){c=a.createElement("script");c.type="text/javascript";c.src="http://ajax.googleapis.com/ajax/libs/jquery/"+g+"/jquery.min.js";c.onload=c.onreadystatechange=function(){if(!b&&(!(d=this.readyState)||d=="loaded"||d=="complete")){h((f=e.jQuery).noConflict(1),b=1);f(c).remove()}};a.documentElement.childNodes[0].appendChild(c)}})(window,document,"1.3.2",function($,L){$("span[css*='premium_info_bar'], span[class*='premium_info_bar'], .comic-banner, a[href*='premium'], .ad-banner, #add-to-home-screen, .premium-page, .info, .ad-container, .ad-body, div[id*='nend'], div[class*='ads-']").css("display","none");});


경향신문 모바일 광고 숨기기(for m.khan.co.kr):

javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g>f.fn.jquery||h(f)){c=a.createElement("script");c.type="text/javascript";c.src="http://ajax.googleapis.com/ajax/libs/jquery/"+g+"/jquery.min.js";c.onload=c.onreadystatechange=function(){if(!b&&(!(d=this.readyState)||d=="loaded"||d=="complete")){h((f=e.jQuery).noConflict(1),b=1);f(c).remove()}};a.documentElement.childNodes[0].appendChild(c)}})(window,document,"1.3.2",function($,L){$("#nbpmobilead_div, #mz_wrap, #div_photolink, iframe, .m_btm_ad, span[class*='_2beon'], div[class*='_2beon']").css("display","none");});

다른 php로 넘어갈 때마다 새로 눌러줘야 하는 매우 불편한 애드온. 쉽게 말해서 실제로는 쓸모가 없다. 그냥 jQuery로 작성한 스크립트로 북마클릿을 만들 수 있다는 데 의의를 두기로. 그놈의 동일출처 정책이 뭔지...

(혹시나 써보고 싶으시다면 다음과 같이 합니다. ①아무 페이지나 북마크(즐겨찾기)에 추가하세요. ②위의 코드를 쫙 복사하세요. ③방금 북마크한 페이지를 수정(편집)합니다. 이름은 적당히 "픽시브 광고 ㄲㅈ" 같은 걸로 바꾸시고, 기존 주소(URL)를 지우고, 방금 복사한 위의 코드를 붙여넣고, 저장 또는 적용하세요. ④해당 사이트를 돌아다니다가 광고가 짜증날 때마다 북마크를 누릅니다. 끗)

핵심: benalman.com/code/test/jquery-run-code-bookmarklet (...;;;)



초간단 선택지 카드

웹진에 사용할 일이 있을 것 같아 꼬박 3시간 걸려 만든 j쿼리 장난입니다. 각 카드에는 고유번호 id가 붙어 있고, 버튼을 누르면 버튼에 부여돼 있던 번호를 고유번호로 가지는 카드가 나타나는 식이죠. 실행취소 버튼은 만들 수가 없다는 게 함정 ㅋ

핵심: replace(/\D/,'') // $(".phase[id=p"+to+"]").show();



초간단 폰 배경화면 생성기

제가 혼자 쓰려고 만든 것인데 사용법은 간단합니다. 두 개의 빈칸에서 색을 선택하고 SET을 누르면 그라데이션이 만들어지는데 이거 그냥 SAVE IT 눌러서 저장해 쓰면 되는겁니다. 색은 hex와 name을 지원하고, 잘 모르겠으면 그냥 옆의 RANDOM 누르면 알아서 채워줍니다. 모바일에서 SAVE가 잘 안 되시는 분들은 기본 브라우저에서 직접 열어봐 주세요.

핵심: Math.random 함수로 0부터 ffffff까지 사이에서 랜덤 돌려 16진수로 반환받기 // 문서 전체 내용에서 특정 클래스 찾아 셀렉트하기 // toDataURL 메소드로 base64인코딩해서 href로 돌리기



초간단 더보기 버튼

웹진 워드프레스에 삽입할 자체 제작 숏코드용으로 목업했던 것입니다. 실제 shortcode 함수에서는 [more text="버튼에 들어가는 말" colorback="버튼 색과 말풍선 테두리 색" colortext="버튼에 들어가는 말의 색"]말풍선에 들어갈 말[/more] 구조로 사용 가능합니다.

핵심: .next() // calc(50% - 14px); // border-left-color, border-left-style 등으로 잘게 쪼개어 지정해주고 jQuery에서 꼼꼼하게 셀렉트하기



위키백과 링크 자동 전환기

역시 웹진 개발 과정에서 쾌적한 독자 경험을 위해 혼자서 뚝딱뚝딱 짜본 코드입니다. 문서 내의 wikipedia를 포함하는 모든 링크에 대하여, 사용자가 모바일로 접속했을 경우 링크를 모바일 전용 링크로 덮어씁니다. 위키백과가 아직은 자체적으로 리디렉션을 하지 않는 게 이상하다 싶어서, 그리고 제가 폰으로 보는 PC뷰의 잔글씨를 참을 수 없어서 만들었습니다.

핵심: if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { (…함수…) } // position:absolute; top:50%; left:50%; transform:translatex(-50%) translatey(-50%);



비상용 명함 제조기


페이지가 시키는 대로 버튼을 누르거나 입력하다 보면 명함이 완성됩니다. 우클릭해서 다른 이름으로 저장해 쓰면 되는 것이지요. (그렇습니다 이때는 아직 toDataURL같은 건 꿈에도 몰랐습니다.) canvas를 배우느라 여념이 없어서 많은 뒷이야기가 있었지만 그냥 이제는 다 잊기로 한 참 서글픈 코드였습니다. 처음 만들었을 땐 너무 웃겨서 낄낄거리면서 했다고 합니다.

핵심: 문서 로딩 시점에서 하얗게 색칠된 명함 크기 캔버스 작성 // 이미지를 file로 받아와서(이 원리는 아직도 모름…) 또는 기존 URL로부터 삽입 // 버튼 클릭하면 그 버튼 근처 input에서 val 얻어다가 캔버스에 뿌리기



친척용 컨디션 카드


잘 읽고 자기가 해당이 있는 조건들을 클릭해 선택하고 출력해서 목에 걸고 다니면 되는 카드입니다. 여기 올라온 코드들 중 제일 구현이 막막했던 녀석인데 j쿼리 없이 checkbox "마법"으로 해결하는 레퍼런스가 있어서 그걸로 해결봄. “어진이 아이디어는 어진이가 디자인까지 해야 100%가 나오는 것 같아”라는, 마냥 기분 좋아할 수만은 없는 피드백이 있었습니다.

핵심: checkbox 자체는 숨기고 그 옆에 label for로 연결을 시켜 여기에 각 노드를 넣음 // .checkbox-class:checked ~ .class // @media print로 not:checked display none



flickOut bookmarklets

javascript:(function(){var a=document.getElementById('allsizes-photo').getElementsByTagName('img')[0].src;prompt('Ctrl+C to use it :-)',a)})()

flickr.com에서 저작권이 'All Rights Reserved'로 설정돼 있어서 다운로드를 못 하는 사진들이 있을 수 있죠. 하지만 이런 사진들도 '모든 크기 보기' 페이지는 지원하는데요, 거기서 사용하시면 됩니다. 이 북마클릿을 설치해 두셨다가 "https://www.flickr.com/photos/(영숫자)/(숫자)/sizes/(알파벳)"처럼 생긴 주소의 모든 크기 페이지에서 북마클렛을 실행해 주세요. 이미지 주소를 복사할 수 있는 경고창을 띄웁니다.

핵심: getElementById, getElementByTagName.src (네 그렇습니다 왕초보 코드입니다.)



앞으로도 추가가 될… 까나?

혹시나 소스를 보시거나 포크하시려거든 코드펜 현관에서 엽토군을 찾아주세요.

Posted by 엽토군
:
무한도전?



'1 내 > ㄷ 그림' 카테고리의 다른 글

공중파 가시내 62  (0) 2015.04.25
지상파 가시내 61  (0) 2015.03.24
쓸모없는 5호선 노선도  (0) 2014.10.18
방송국 가시내 59  (3) 2014.10.13
공중파 가시내 58  (0) 2014.10.07
Posted by 엽토군
:

카테고리

분류 전체보기 (798)
0 주니어 PHP 개발자 (7)
1 내 (120)
2 다른 이들의 (254)
3 늘어놓은 (37)
4 생각을 놓은 (71)
5 외치는 (76)
9 도저히 분류못함 (31)

최근에 올라온 글

최근에 달린 댓글

달력

«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30