memcached increment always return false codeigniter.. 낫웤킹


배경 설명

문제상황

페이지 내에서 아주아주 크고 서비스내 여기저기서 빈번히 이용하며, 트랜잭션 걸려 사용하는 테이블을 매번 조회해서 보여주어야했다.

문제의 해결방법

선임이 매번 db에서 조회하는 것이 불필요하다했다. 그래도 매번 db 조회하는 것이 좋지 않다는 것은 알아 memcached를 사용하고 있었다. db를 조회한뒤 memcached에 60초동안 넣어두고, 또 60초 동안 넣어두니까 이정도면 괜찮지 않냐고 물었다. 

선임의 반응은 탐탁치 않았다. 캐싱을 이용하라 했다. 멤캐시로 겟하고, 늘어나는 것은 멤캐시 인크리먼트를 시켜서 불필요하게 db를 조회하는 일이 없도록 하는 것이 좋겠다고 하였다. 

(그 당시에는 항상 그냥 해왔던 부분이어서 음.. 꼭 해야하나? 라고 생각했는데 하고나니까 정말 필요했던 것 같다.)

그렇다면, 이제 구현해야할 나의 임무

  1. memcached로 get해서 보여주기
    1. memcached로 get했을때 없으면 초기 db에서 조회해서 memcached save 해주기
  2. 그 db에 insert가 생기는 순간에 memcached increment해주기.(매번 db를 조회하지 않을거기때문에) 

그래서 해결했나요?

해결하긴 해결했다. 하지만.. 껌이라고 생각했다 돌씹은 느낌이었다.. 코딱지를 파는 임무를 받았으나 너무 오래 많이파서 코피난 느낌이었다.. 

"memcache get쓰고있고,  save도 쓰고있으니까! increment하나 추가하는게 뭐 얼마나걸리겠어" 했지만 나는 또 삽질에 삽질을 했다. 어디서? increment에서..!


어떤 삽질을 하였나요?

우선 php.net의 memcached 사용법을 보았다. 그리고 memcached incrment 사용법을 보았다.
역시 깔끔깔끔했다.
<?php
$m 
= new Memcached();
$m->addServer('localhost'11211);

$m->set('counter'0);
$m->increment('counter');
$n $m->increment('counter'10);
var_dump($n);

$m->set('counter''abc');
$n $m->increment('counter');
// ^ will fail due to item value not being numeric
var_dump($n);
?>

The above example will output:

int(11)
bool(false)

음 increment는 당연하게 int만 되는 것이군. false 혹은 true를 반환하는 군! 했다.

예제와 똑같은 코드를 사용하고 싶다만, 우리 회사는 코드이그나이터의 캐싱드라이버를 사용하고 있다. 프레임워크가 도와주는데 굳이 직접 생성하여 쓸필요가 없지! 했다.


그럼 이제 내가 항상 쓰던 save를 해볼까 ^-^ 했다.

$this->cache->memcached->save('yujinee', 1, 0);

'yujinee'라는 키에 1이라는 값을 영구적(0)으로 넣고자 했다. 음 굿! 잘 된다.


그럼 이제 내가 항상 하던 get을 해볼까?

echo $this->cache->memcached->get('yujinee');

'yujinee'라는 키로 조회를 하면? 1이 나온다. 


그럼 이제 처음으로 써보는 increment 고고고~! 

$this->cache->memcached->increment('yujinee');
echo  $this->cache->memcached->get('yujinee');
내가 기대한 값은 increment에 키값만 넣은 경우 1이 늘어나기 때문에 yujinee에는 2가 되어있는 상황. 하지만.. 1이 나왔다.
var_dump($this->cache->memcached->increment('yujinee')); 로 찍어보니.. 
bool(false) 가 나왔다. 

나의 삽질목록.

  1. 아 뭐야~ php.net참고해보니 int가 아닐때 false를 뱉던데.. save 할때 int로 값을 줘볼까? 
    1. $this->cache->memcached->save('yujinee', (int) 1, 0); 이렇게! 
    2. $this->cache->memcached->increment('yujinee', 10); 을 하면..1
    3. bool(false);
  2. 아 뭐지..^^;;; ? 다른 것들도 안되는게 있나? 다 찍어보자! 
    1.  $this->cache->memcached->is_supported() 된다. 
    2. $this->cache->memcached->get_metadata() 잘 된다. 심지어 data도 int로 들어가있는 것을 확인할 수 있었다.
    3. $this->cache->memcached->decrement() 안된다. 얘도 자꾸만 false이다.

Codeigniter cache driver
Codeigniter memcache always return false 다 검색해봤다. 

안나온다 나같은 상황이 ㅜ 그래서 직접 선언해서 사용해보았고, 그제서야 문제를 알수있었다. 


문제는 raw 정보! 잡았다 요놈!

$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('counter', 0);
$m->increment('counter');
$n = $m->increment('counter', 10);

어이없게도 위의 예제코드는 잘만돌아갔다. 그럼 뭐가 문제였던걸까? 문제는 세이브할때 raw를 true로 주지 않았기때문이었다. 
save($id, $data, $ttl = 60, $raw = FALSE) 
여기서 $raw가 false 였었고, 코드이그나이터에서 제공하는 드라이버로 get을 했을때는 int를 반환하지만, 실제로 memcache로 접근해서 찍어보니
array ^^로 구성되어있는 것을 확인할 수 있었다. 

그럼 이제 끝~

내가 항상 사용할때, 그리고 여러 예제들을 보았을때 raw에 대한 파라미터는 주로 생략되어있었어서 저게 문제일거라 생각도 하지 못했다.
코드이그나이터가 원망스럽기도했다. array였으면 array라고 알려주던가 왜 int라고 알려줘서 전혀 감이 오지 않았다. 
교훈은 그거였다. 내가 사용하는 함수가 어떻게 되어있는지를 먼저 확인해볼것! 파라미터를 확인해볼것! 괜히 이상한데를 삽질해서 많은 시간을 버렸다. 
그래도 결과물에 굉장히 만족한다. 오래걸리던 페이지가 디비에 접근하지 않으니 엄청빨라졌따. :> 다음에도 비슷한 조건이 있다면, 꼭 정확한 정보가 아니어도 되는데 너무 많은 db조회를 낭비하고 있따면 cache로 바꿔야겠따. 너무 오래 이걸 골머리를 앓아서 창피하다. 머리가 안돌아갔따.. ㅜㅜ누군가는 이걸봐서 덜 삽질했음 좋겠다.


평가와 피드백은 다르다. 

고 생각한다. 때로 피드백이라는 명목으로 사람은 사람을 쉽게 평가 해버리는 것 같다. 물론, 나 포함이다.


평가와 피드백 무엇이 다를까 생각해보았다.

1. 평가는 싫지만 피드백은 고맙다.

우선 개인적으로 가장 크게 느껴지는 다른점이다. 

난 평가는 싫지만 피드백은 고맙다.

왜 고마울까? 좋은 피드백은 '개선점'을 제시하기 때문이 아닐까? 라는 생각을 했다.

평가는 그냥 개인의 감상으로 끝나는 일이 많고 결과로서 종료되는 것 같다.

"잘했네.", "못했네.", "괜찮네." 와 같은..

하지만 (좋은) 피드백은 대안을 제시하는 것 같다. 

'ㅇㅇ 부분은 아쉽고 ~~해서 개선하면 좋을 것 같다.' 와 같은..

가끔은 씁쓸할때도 있지만, 좋은 약이 입에 쓴 법처럼.


2. 좋은 피드백은 내 영역이나 가치를 침범하지 않는 것 같다. 

평가는 왜 불쾌할까? 글자 그대로 가치를 평하는 것이기 때문이 아닐까?

업무 평가라고 하더라도 업무의 영역을 넘어서서 개인에게 까지 침범하기 때문에 평가가 불쾌하게 느껴졌다. 

"잘했군" -> "잘하는 사람!" , "못했어" -> "못하는 사람", "별로야" -> "별로인 사람"

좋은 피드백이라면, 잘함이 곧 잘하는 사람으로 귀결되는 것이아니라, 업무에서 끝나는 것 같다. 꺌끔하게.


3. 좋은 피드백은 공감이 있다.

좋은 피드백은 그 사람의 입장에서 생각해보고, 개인이 느낀 생각을 진솔하게 말하고, 그 이유를 설명하고, 그에 대한 대안을 제시하기 위해 노력하는 게 아닐까?

나도 사람들을 평가만 하고 있지않나 반성한다. 

억지 쓰지 마세요. 괜히 내게 말을 건네지 마세요. 은유도 쓰지 마세요. 그냥 나 여기 서 있을게요. 내게 밥이라 사랑이라 하지 마세요. 눈에 보이는 게 다예요. 계곡에 고인 물, 그게 뭐 그리 대단한가요? 꼭대기에 이는 바람, 뭐 그게 그리 시원한가요? 비오는 날, 내가 우는 것처럼 보이나요? 당신의 몸이 당신의 밥상이듯 나는 그저 내 밥상일 뿐이랍니다. 사랑을 자전거처럼 타고 날 오를 생각은 하지마세요. 나 그냥 여기 있을 테니 당신은 거기 계세요. 날 사랑이라 부르지 말고.


그래도 사랑은 밥상인 것을


김재혁- 산

'단조롭고 즐거운 일상 > 넘나 좋은 것' 카테고리의 다른 글

김제형님의 가사들  (0) 2018.08.31
offing - oille  (0) 2018.08.16
꿈의 집 - 부엌/정원  (0) 2018.03.10
Hi, stranger  (0) 2018.03.03
당신의 텍스트1 /성기완  (0) 2017.04.14

엽기떡볶이를 생각하면 심장이 뛴다..🙊
엽떡... 너는 ❤️
수저에 적당히 나눈 주먹밥을 올리고 오뎅으로 감싼 뒤 풀리지 않게 치즈를 휘휘 감아 먹으면 세상 존맛이다.
아는 친구는 계란찜을 시킨뒤 떡볶이를 작게 쪼개 계란찜과 함께 먹는다고 한다.
엽떡은 먹다보면 좀 왜시켰지 싶을 때가 있는데 그 첫 입이 너무 행복이다. 매운 맛과 고소한 치즈의 조화.. 비엔나소세지의 맛은 또 말해뭐해..
양이 너무 많아 버리게되는 경우가 많았다. 그래서 이제는 먹기전에 락앤락에 덜어 얼려놓았다가 나중에 다시 끓여먹는다. 근데 그래도 안먹고 버리게되는 경우가 있다. 엽떡 1인분은 배달이 안되어서..

'단조롭고 즐거운 일상 > 먹먹글' 카테고리의 다른 글

러시아 식당 파르투내 동대문  (0) 2018.12.09
삼성중앙역 비어플라주  (0) 2018.09.11
노량진 겨울 방어  (0) 2018.03.01
굽네 볼케이노 먹먹  (0) 2016.11.27
칠성포차 국물닭발  (0) 2016.11.20

2017년 11월부터 꾸준하게 하고 있는 게임, 꿈의집...

게임 자체는 별 재미 없는데, 별을 모아 가구를 바꿀 때마다 넘나 짜릿한 것.

대머리 오스틴 방이랑 거실 꾸밀 때는 아무 생각없었는데 갑자기 diff를 보고싶어가지고 부엌부터는 가구 하나를 바꿀때마다 스크린샷을 찍어 동영상을 만들어 보았다.

하나하나 캡쳐떠서 하니까 더 뿌듯하고 재밌당.. 히히..

지금은 2층 거실을 하고 있는데, 빨리 2층 거실도 완료하고 싶다. 


'단조롭고 즐거운 일상 > 넘나 좋은 것' 카테고리의 다른 글

offing - oille  (0) 2018.08.16
김재혁 - 산  (0) 2018.04.17
Hi, stranger  (0) 2018.03.03
당신의 텍스트1 /성기완  (0) 2017.04.14
내가 만약 신이라면  (0) 2017.01.12
소년을 위로해줘
국내도서
저자 : 은희경
출판 : 문학동네 2010.11.25
상세보기






소년을 위로해줘 - 은희경

청소년때 소울 컴퍼니의 노래를 많이 들었었다. 아에이오우인가 그것도 굉장히 많이 들었고, 스토리텔링이 기가막힌 키비도 재미있게 들었기 때문에, 소년의 위로해줘도 아주 좋아하는 노래였다. 은희경 작가도 아주 좋아하는 작가였다. 은희경 작가의 생각의 일요일들이라는 산문집?을 읽은 적이 있었는데, 그 책을 읽다가 은희경 작가가 쓴 소설 '소년을 위로해줘'가 키비의 '소년을 위로해줘'라는 제목을 따왔다는 것을 알게되었다. 아 겨가 겨여~ 하면서 집어든 책 소년을 위로해줘.

이 책은 청소년 연우와 채영이, 연우의 친구 독고 태수와 독고 마리의 이야기. 또, 연우의 엄마인 신민아씨와 엄마의 애인 재욱 형의 사랑이야기이기도 하다.

엄마와 단 둘이 사는 연우는 이사를 오게된다. 이삿날 자신의 집을 쳐다보고 있는 한 여자아이를 발견하게 된다. 연우와 비슷한 시기에 전학온 친구가 있다. 그 아이의 이름은 독고 태수. 독고태수가 들려준 힙합음악에 연우는 전율하고 곧 친구가 된다. 이삿날 자신의 집을 쳐다보고 있던 아이의 이름은 채영으로 연우가 이사온 집의 선배와 친밀한 사이였다. 그 둘은 곧 서로 같은 곳을 바라보는 아이라는 것을 알게되어 연애를 하게된다. 

10대 아이들의 위태위태한 감성을 보여주면서도 어른들의 속 마음을 잘 전달 해 주었던 것 같다. 연우와 채영이의 이야기는 그 시절의 나를 생각하게 만들었다. 근데 나는 연우 엄마 신민아 씨의 이야기가 더 와닿았다. 


재욱 형과 사귀기 시작할 무렵, 재욱 형이 왜 자기를 좋아하는지 아냐고 물은 적 있다. 취하지 않았을 때라면 ‘똑똑하고 예뻐서’가 정답일 텐데, 아니었다.

- 내가 많은 걸 바라지 않는다는 걸 알기 때문이야. 그게 관계를 가볍게 만들어주거든. 누구나 짐을 지는건 싫어하니까. 연우야, 이거 중요한 문제야. 약간 멀리 있는 존재라야 매력적인 거야. 뜨겁게 얽히면 터져. 알았지?


자기가 싫어하는 사람이 되거나 실패자가 되거나. 사람들은 그런 걸 불행이라 말하지.


- 연우야, 내가 좀 따지는 성격이니?

- 글쎄.

- 사람들은 말야, 대답하기 곤란한 걸 물으면 따진다고 말해. 같은 질문을 하는데도 그래. 어떤 때는 관심 가져줘서 고맙다고 하고 참 명쾌하시네요 하면서 칭찬을 하거든. 근데 어떤 때는 참견 좀 그만하라고 해. 하지만


또 이런말도 했다. 하고 싶은 것만 해도 되긴 하지. 근데 그게 훨씬 더 어려울걸. 내가 남하고 다르다는 사실을 드러내는 것, 그거 몹시 힘든일이야. 모든 게 다 자기 책임이 되거든. 안전한 집단에서 떨어져나와 혼자여야 하고, 정해진 가치에 따르지 않으려면 하나하나 자기가 만들어가야 해. 또 무리에서 떨어져나가면 끊임없이 자기에 대해 설명해야 해. 경쟁을 피하는 소극적 태도가 아니라 남과 다른 방식을 적극적으로 선택하는 일이라면 말야. 어쩄거나 나는 네 선택이 마음에 들어. 우리, 재미없는데도 꾹 참으면서 남들한테 맞춰 살지는 말자.



'단조롭고 즐거운 일상 > 독후감' 카테고리의 다른 글

아침의 피아노  (0) 2019.03.18
나는 울 때마다 엄마 얼굴이 된다. - 이슬아  (0) 2018.11.28
혼자서 완전하게 - 이숙명  (0) 2018.03.03
82년생 김지영  (0) 2017.09.17
절망독서  (0) 2017.09.10

어느 순간부터 MR과 PR을 섞어 말하는 내 자신을 보며 MR과 PR에 뭔 차이점이 있으며 나는 왜 섞어쓰길 시작했나 궁금했다.
스택오버닷플로우에서 찾았다.
결론은 동일한 건데 github이냐 gitlab이냐 등에 따라 쓰는 용어가 다르다 ㅎㅎ

  • Github이나 bitbucket은 PR 즉 pull request라고 하는데 그 이유는 직접하는 첫 액션이 브랜치를 풀하는거여서 그렇다고한다.
  • Gitlab이나 gitorious?에서는 MR즉 merge request라고 하는데 할당된 사람에게 요청된 최종 액션이 merge이기 때문이라고 한다.

이전회사에서는 github을 사용했고 현재 회사에서는 gitlab을 사용해서 두 단어에 혼란이 왔던 것 같다 🤗




우울할 때 보면 위로 받는다. 아 나 좀 이상한가;; 생각했는데 댓글에 나같은 사람이 굉장히 많았다. 왜 위로 받는 느낌이 들까 생각해보았다. 나는 이런 것 같다.

  1. 쟤가 엉덩이를 까고 있어서 
    1. 모든 것을 드러내고 있다는 느낌을 받는다. 안보는 척 하려하지만 어쩔 수 없이 엉덩이에 눈이 가는데 엉덩이 구경해도 된다고 한다. 쟤가 거짓말은 1도 안할 것 같은 느낌이 든다. 
    2. 네 앞에서는 연약한 모습 보여도 괜찮을 것 같은 느낌이 들어. 라고 말할 때 나도 그래도 될 것 같은
    3. 약한 모습을 먼저 드러내는 것은 그 만큼 나를 믿는다는 것 같다. 
  2.  무언가를 만드는 일은 힘든 일이야
    1. 모든 사람은 무언가를 창조하고 있다고 생각한다. 개발자는 요구사항대로 기능을 만들어내고, 디자이너도 미를 담은 결과물을 창조하고, 바리스타도 커피를 만들어내고, 창조의 연속이다.
  3. 아름다운 석양
  4. 나를 그려준다고 지긋이 바라보는 엉덩이 변태와의 아이 컨택
    1. 개인적으로 가장 좋은 부분.. 누군가와 눈을 마주한다는 것. 그리고 온전히 나만을 집중해서 바라봐준다는 것. 
  5. 요즘 네 생각을 자주 했어. 넌 너무 스스로에게 엄격해


'단조롭고 즐거운 일상 > 넘나 좋은 것' 카테고리의 다른 글

김재혁 - 산  (0) 2018.04.17
꿈의 집 - 부엌/정원  (0) 2018.03.10
당신의 텍스트1 /성기완  (0) 2017.04.14
내가 만약 신이라면  (0) 2017.01.12
OK Go - The One Moment - Official Video  (0) 2016.11.29
혼자서 완전하게
국내도서
저자 : 이숙명
출판 : 북라이프 2017.06.16
상세보기

혼자서 완전하게 - 이숙명


읽은 지 꽤 오래되었다. 17년 9월에 읽었으니 이제 6개월쯤 되었네? 소미가 읽었다고 해서 책 제목이 익숙했다. 항상 그랬듯이 제목부터 취향 저격을 당해버렸다.

이 책은 1인분의 삶에 관해서 이야기한다. 

: 혼자 살고, 혼자 놀며, 혼자 여행 하고, 싱글의 삶(비혼)을 살려 하는 

작가가 무조건 혼자 사는 부분이 공감이 갔다. 친구에게 집을 빌려주고는 훌쩍 떠나는 일 같은 것. 누군가에게 표정을 지어야 한다는 일만으로도 삶은 버겁다. 온종일 표정을 갈아 끼우며 살아가는데, 집에서마저 그것을 신경 쓰며 살아간다는 것은 너무 고된 일이다. 동아리 친구들과 함께 살 때, 혼자 있고 싶어서 연구실에서 늦게까지 남고는 했다. (헉.. 직장에서 집에 안 가는 부장님이나 교수님들이 나와 같은 이유에서였을까? 뭔가 소름이다..) 

작가가 부러우면서도, 내가 현재 벌어들이는 돈은 적고 앞으로 어떤 인생을 살아갈지 모르기 때문에 너무 뜬구름 잡나 하는 생각도 들었다.

1. 보험을 들어놓는 삶을 살아야 하나, 2. 그냥 살아지는 대로 막살아야 하나 고민 중이다. 

1. 보험을 들어놓기 위해 재미없게 하루하루를 꾸역꾸역 살아내다가 죽어버리면 어떡하지? You only live once. 라는데.. 

2. 근데 그냥 또 살아지는 대로 살아가다가, 더는 살아지는 대로 살지 못하면 어떡하지? 너무 막살아서 제약이 많은거지.. 금전적으로나.. 사회적으로나.. you only live once. 라던데.. 살아지는 대로 막사는 자유로움만을 경험해보아서 하기 싫은 일들을 감내해야 하는 삶에 적응하지 못하면 어떡하지? 내가 살고 싶은 삶을 하나도 살지 못하거나, 너무 일반적인 삶에서 벗어나서 공감받을 수 있는 사람들이 없어지면 어떡하지?

항상 그렇듯, 걱정이 많다. 아마 지금까지의 내 선택패턴을 생각했을 때는 결국 후자를 택할 것 같다. 뭐가 되었던 그냥 잘 살고 싶다. 혼자든 아니든. 


아래는 읽으면서 좋았던 구절


실패에 대한 두려움은 대게 ‘하다’와 ‘되다’를 혼동하는 데서 온다. 어느 독립영화감독을 인터뷰할 때다. 보통은 영화를 하고 싶으면 시험 쳐서 영화과 진학부터 하던데 당신은 무슨 배짱으로 덜컥 월세 보증금 빼서 영화부터 찍었냐고 물었다.

“그 사람들은 영화를 하고 싶은 게 아니라 영화감독이 되고 싶은 거겠죠. 하고 싶으면 어떤 식으로든 하면 됩니다. 그런데 되고 싶어 하니까 문제인 거예요. 성공한 누군가를 동경하면서요. "


'단조롭고 즐거운 일상 > 독후감' 카테고리의 다른 글

나는 울 때마다 엄마 얼굴이 된다. - 이슬아  (0) 2018.11.28
소년을 위로해줘 - 은희경  (0) 2018.03.05
82년생 김지영  (0) 2017.09.17
절망독서  (0) 2017.09.10
변신  (0) 2017.09.10

+ Recent posts