반응형

튜닝도 거치고 쿼리분석기에서 예상실행계획상 누락된 인덱스도 없으며 0.1초만에 잘 나오는 쿼리상으론 아무 문제 없는 쿼리임에도 불구하고 웹페이지에서 실행하면 15초씩 걸리는 이상한 현상이 발견되었다.


가만히 놔둬선 안되겠다 싶어 구글링을 해보니 나와 같은 증상을 겪은 사람들이 이미 여럿 존재함을 확인할 수 있었다.

이유는 ARITHABOART 이녀석 때문인데 시퀄서버에선 기본값이 ON이지만 ADO에선 아래 표처럼 기본값이 OFF


결론은 쿼리 날릴 때 ADODB의 설정을 건드려주면 된다.
Static Query인 경우엔 쿼리문 앞에 SET ARITHABORT ON을 넣어주고
Set objCmd = Server.CreateObject("ADODB.Command")
    SQL = ""
    SQL = SQL & vbCrLf & "SET ARITHABORT ON"
    SQL = SQL & vbCrLf & "SELECT"
    ......
    With objCmd
    .ActiveConnection = dbConn
    .CommandType = adCmdText
    .CommandText = SQL
    
               .Parameters.Append .CreateParameter("param", adDate, adParamInput, , paramdata)
    End With
    
    Set rs = Server.CreateObject("ADODB.RecordSet")
    rs.CursorLocation = adUseClient
    rs.Open objCmd, , adOpenStatic, adLockReadOnly

    If rs.EOF Then
    Else
    End If

    rs.Close
    Set rs = Nothing
Set objCmd = Nothing

Stored Procedure인 경우
SqlConnection dbConn = new SqlConnection(strConnection);

dbConn.Open();
SqlCommand cmdAritabort = new SqlCommand("SET ARITHABORT ON", dbConn);
cmdAritabort.ExecuteNonQuery();
           
SqlCommand cmd = new SqlCommand("dbo.usp_example", dbConn);
cmd.CommandType = CommandType.StoredProcedure;

SqlDataAdapter adapter = new SqlDataAdapter(com);
adapter.Fill(table);

dbConn.Close();


관련하여 더 자세히 느끼고 싶다면 Slow in the Application, Fast in SSMS? Understanding Performance Mysteries란 버거형님의 진중하고 장대한 글을 참고해보길 바란다.
https://www.sommarskog.se/query-plan-mysteries.html
해당 글에선 좀 다르게 이야기 해주던데 너~~~무 길고 난 ARITHABOART ON 설정으로 느린 쿼리를 해결하였으므로 이쯤에서 만족하려 한다.

반응형
Posted by Hippalus
,

반응형

일전에 네이버 서치어드바이저(searchadvisor.naver.com)를 통해 사이트 등록을 요청하였으나 수집보류라는 어처구니 없는 상태가 지속되었다.

검색해보니 몇가지 방법이 존재하는데 그 중 그나마 해결 가능한 방법이 고객센터를 통해 요청을 하는 방법이 있어 고객센터를 통해 문의를 접수하였으나 아니나 다를까 아래와 같은 같잖은 답변을 받아볼 수 있었다.

안녕하세요. **** 고객님,문의하신 내용에 답변드립니다. 

네이버는 모든 사이트 및 웹문서의 수집/반영을 보장하지 않습니다.
수집보류가 노출되는 것은 최적화 여부, 사이트 신뢰도, 사이트 상태 등에 따라 다양한 원인이 있으며, 수집 요청한 사이트의 수집 여부를 판단하기 어려워 보류가 된 경우를 뜻합니다.

웹마스터도구의 수집 요청 기능은 수집 시스템에게 수집 대상 URL을 전달하는 도우미의 역할만을 담당하며 수집성공이 되더라도 검색결과 노출을 보장할 수 없습니다.

장황하게 되도 않는 이야기를 늘어놓았으나 요지는 니 말은 알겠는데 그냥 가만히 있어라라는 이야기다.
ㅎㅎㅎㅎㅎㅎㅎ
말은 못하겠지만 이유는 알만하다.

구글은 사이트 등록이 완료되어 크롤링이 되고 있건만 네이버는 이런 답변만을 줄 뿐이다.

혹자는 존버하면 언젠간 될 수 도 있다 하지만 바다 건너 미국 기업은 따박 따박 크롤링 해가주는데 국내 기업인 네이버는 이런 식의 반응에 미온적인 태도이니 화가 나지 않을 수 없다.
등록을 요청한 사이트엔 아무런 문제가 없다.
PC, mobile 모두 부트스트랩을 통해 사이트 체크시 정상 확인이 가능하고 사이트맵 xml 제출, meta tag 등 시키는 대로 모든것을 완벽히 수행했음에도 이런식의 변명으로 일관될 뿐이다.

그럼에도 불구하고 크롤링이 불가하니 답답 그 자체가 아닐 수 없다.

 

반응형
Posted by Hippalus
,

반응형

드디어 강원도 춘천에 레고랜드가 2022년 5월 5일 개장했다.
개발 도중 문화재가 출토되며 사업에 차질이 생겼으나 상투적인 표현이지만 우여곡절 끝에 국내 첫 글로벌 테마파크가 생긴 것이다.
일본에는 디즈니랜드와 유니버설 스튜디오 재팬이 있지만 한국에는 국산 토종 테마파크만이 영업 중이던 수십 년의 침묵을 깨고 글로벌 테마파크인 레고랜드가 들어선 것이다.
강원도의 적극적인 투자유치와 한국의 부족한 놀이시설 그리고 레고랜드 운영사인 주식회사 멀린의 이해가 맞아떨어져 본협상을 시작한 2013년 이후 근 10년 만이다.

하지만
레고랜드를 이용하기 위해 차를 타고 주차장으로 들어서면 보기 싫은 현수막들을 반강제적으로 봐야만 한다.

레고랜드를 폄하하기 급급한 나머지 레고 놀이터라 부르는 현수막 말이다.

여기까진 그럴 수 있다 본다.
누구나 자신의 이익과 신념을 위한 주장을 펼칠 순 있다.(물론 합법적인 선에서 말이다.)
하지만 주차를 끝내고 입장 게이트를 향해 걷다 보면 이젠 대놓고 쌍욕을 박아 놓은 폄훼라 부르기도 민망한 욕설 현수막이 보인다.

알겠지만 레고랜드는 유아와 초등학교 저학년 학생들을 타깃으로 삼은 글로벌 테마파크다.
훌륭한 문화재 지킴이라며 호로 XX 따위의 쌍욕을 내걸며 레고랜드를 방문한 아이들과 부모들이 무슨 죄를 지었다고 저따위 쌍욕 현수막을 보며 불편한 마음을 갖고 비싼 돈을 내고 입장하길 원하는 것인가?
나를 포함한 방문한 부모들과 아이들 그리고 앞으로 방문하게 될 수많은 일반 시민들이 레고랜드를 하루속히 오픈해달라 시위를 하였는가 아니면 당신들의 공사 반대 행동에 비난을 하였는가?
보통 사람들의 감정과 상황은 레고랜드가 들어선다란 소식을 들었고, 공사 중 유적이 발굴되었다란 사실을 인지했을 뿐이다.

혹시 걸어가며 부모들이 자식에게 "엄마 XXX끼가 무슨 뜻이야"라고 물으면 아이에게 "레고랜드가 우리 훌륭한 선조들의 무덤을 파헤치고 짓밟은 테마파크인데 우린 그 XXX끼 랜드에 가는거란다~ 부끄러워 하렴 호호호"라 교육해주길 바라는가 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

목적이 정의롭다면, 결과만 정의롭다면 과정은 수단을 가리지 않아도 된다라는 저따위 폭력적 행동은 교정되어야만 한다.

꼭 이런 욕설 현수막이 아니더라도 몇몇 자칭 진보성향이라는 커뮤니티에선 레고랜드 후기를 올릴 땐 으레 고인돌이 어쩌고 문화재가 어쩌며 하는 자기 방어 문장이 들어감을 심심치 않게 볼 수 있다.
"아이에게 문화재를 갈아엎은 레고랜드지만 그래도 가겠느냐 물어본 후 방문했어요"
"고인돌이 가슴 아프지만 아이가 원해서 갈 수밖에 없었어요"
등등등
어쭙잖은 선민의식 수준의 글들을 보고 있노라면 참 피곤하게들 산다 싶다.

확실한 건 아무리 농성을 이어 간들 레고랜드는 부실한 초창기 운영에 실망한 부모들에게 욕을 먹어가겠지만 앞으로도 이 나라의 글로벌 테마파크로 에버랜드와 롯데월드 그리고 레고랜드 3대장으로 수십 년간 발전을 이어나갈 것이란 점이다.

끝으로 그렇게 문화재가 중요하고 아끼는 마음이 깊다면 지금이라도 레고랜드 개발 사업으로 발굴되는 문화재가 아닌 그들 스스로 청와대(앞으론 용산인가) 앞에 나아가 전국에 묻혀있을 수많은 선사시대 문화재를 발굴해 달라 텐트 치고 시위라도 함이 어떨까 싶다.
차마 차라리 아기공룡 둘리 화석을 서울시 도봉구에서 찾아보라는 충고는 읍읍읍

~

반응형
Posted by Hippalus
,

반응형

레고랜드식당


급하신 분들을 위해 결론부터 이야기 하자면 11시 10분쯤 레고랜드 시티레스토랑에 가신다면 줄 안섭니다.

오픈시간이 11시이므로 다른 일행들은 놀이기구 줄서서 타서 즐기게 배려하고 한명은 무조건 11시 초반에 가서 자리맡고 음식 타러 가서 음식 다 주문해야 합니다.
주변 놀이기구들의 대기시간이 보통 50분 정도 걸리므로 놀이기구 1개 같이 타고 나면 10시 40분쯤 되니 다른 일행들은 또 다른 놀이기구 타러 가게 하고 본인은 레스토랑으로 11시쯤 가면 시간 딱 맞습니다.
그 이상 되면 아무리 음식까지 주문해 놓았더라도 슬슬 눈치가 보일 수 밖에 없기 때문입니다.
(개인적으론 레고랜드 시티레스토랑과 거리상 그리고 만족도상 드라이빙 스쿨 추천합니다.
입구쪽에 있는 코스트 가든지 코스트코인지 뭔지 배 모는 놀이기구 있는데 절대 타지 마십시오.
줄 개 느리게 빠지고 노잼에 대기시간만 90분 기본입니다.)

만약 11시 30분 이후 시티레스토랑을 방문한다면 그 다음부턴 코스트코 + 레고렌드를 경험하실 수 있습니다.
코스트코 가보신 분들은 아시지만 부족한 자리를 두고 눈치게임과 좀비 모드 배회로 먹는 사람 자리 찾는 사람 모두 불편한 그 기분
바로 그 기분을 느끼셔야 합니다.
그렇기 때문에 11시에 방문해서 일행들이랑 11시 30분 부터 식사를 하면 남들에게 민폐도 끼치지 않고 개진상 행위 없이 여유롭게 식사도 가능합니다.
명심하십시오.
야외 테이블까지 만석되는거 순식간입니다.
자리 널럴한거 보고 식당 내부로 가서 식판들고 대기해 있다가 뒤에 줄서는 사람들 보고 심상치 않게 느껴져서 뒷 분에게 양해 구하고 야외 테이블 장소로 가보니 그 많던 테이블 딱 3테이블 남았더군요.
그 10분도 안되는 짧은 시간 사이에요.
아마 자리 믿고 음식 다 주문해서 자리 맡으려 했다면 최소 30분에서 1시간동안 식판 들고 서 있었어야 할 상황이었습니다.
냉큼 우산 올려두고 다시 음식 대기줄로 돌아와 주문과 자리까지 모두 성공할 수 있었습니다.

디테일한 리뷰
레고랜드 시티레스토랑만 이용해 보았기 때문에 이곳만 기준으로 설명드립니다.

이때가 12시 30분인데 아래 사진을 보면 줄이 바깥까지 나와 있는걸 확인 가능합니다.

시티레스토랑

시티 레스토랑 내부에 진입해서부터 식판을 들고 계산을 하기까지 걸리는 시간이 대략 20분은 잡아야 합니다.
그런데 저렇게까지 줄이 바깥까지 이어졌다면 입구에서부터 식판까지의 거리 + 바깥 줄까지 계산하면 최소 1시간 각 나옵니다.

테이블은 내부에도 꽤 있고 바깥에도 ㄴ자로 꽤 있습니다만 턱업이 부족합니다.
테이블도 가족단위 방문객들을 위해서겠지만 기본 6인 석(4인 + 2인)으로 구성되어 있고 테이블 양쪽 공간이 사람 두명 정도 걸어다닐 공간이라 2인 테이블을 따로 떼어내는것도 약간 눈치보입니다.
게다가 사람들이 테이블을 가방이나 우산 등으로 미리미리 잡아둡니다.
그냥 잡아두면 그나마 괜찮은데 어떤 테이블은 내가 도착한 시간인 11시 10분부터 12시 근처까지 자리만 잡아둔 상태로 계속 비워져 있었습니다.
혼자와서 음식 구매하러 잠시 자리를 비운게 아닙니다.  -_-a

식당 이용 방법
먼저 식당 내부로 들어서면 줄을 서서 식판을 레일(?)위에 올려두고 각종 음식들이 놓여진 부스를 지나며 원하는 음식을 담는 방식입니다.
이케아 생각하면 됩니다.
대략 순서는 스프(감자, 야채, 옥수수 중 2개가 나오는 듯), 토마토 미트볼, 샐러드(샐러드와 큐브치즈), 치아바타,  닭갈정떡갈비, 바질연어구이, 레몬버터치킨, 돈까스, 밥 이런 순서로 지나치게 됩니다.
1/3은 가벼운 샐러드나 빵, 스프, 1/3은 한식, 1/3은 본식류 느낌입니다.
앞서 1시간 각이 나온다란 이유가 시티레스토랑을 방문한 분들의 주 목적은 돈까스, 치킨, 연어바질구이 같은 메인 요리입니다.
다들 줄 서 있는데 이렇게 메인 요리가 마지막 라인에 있으니 끝으로 걸어가서 메인요리만 들고 바로 계산대로 직행할 수 없는 구조이기 때문입니다.
아마 사람들로 하여금 매출을 최대한으로 빼기 위한 계산된 동선이 아닐까 추측됩니다.

맛, 가격
실망하는 분들이 너무 많은데 개인적으론 그냥 이케아 놀이동산 버전 정도로 이해하면 그렇게까지 갖다 버릴 정도의 음식은 아니었습니다.

47000원짜리

돈까스 9,000원
흔밥 1,000원
치아바타 2,000원
방울토마토샐러드 4000원
바질페스토연어구이 11,000원
레몬버터치킨 12,000원
새우감자고로케 2,000원
콜라(무한리필) 2,000원
초등학생, 성인 남녀 총 3명 기준 47,000원이면 충분하게 먹을 수 있습니다.

개인 음식평

레몬버터치킨

레몬버터치킨
겨자소스와 치킨소스 그리고 감자 몇알과 치킨 반마리 인데 맛은 전기구이통닭이 말라비틀어진 맛입니다.
전문가가 아닌 5일장 엿장수가 파는 듯한 맛입니다.

바질페스토연어구이

바질페스토연어구이
이케아보다 양이 적습니다.
비쥬얼은 합격인데 양이 너무 적습니다.

돈까스

돈카스
꽤나 부드러지 않은 하드한 식감을 자랑합니다.
미군 전투식량에 나옴직한 맛입니다.

쌀밥

후리카케를 뿌려 먹을 수 있는 쌀밥입니다.

이밖에 방울토마토샐러드는 그럭저럭 맛있습니다.
어차피 방울토마토라는게 자연 그 자체이고 여기에 발사믹 소스와 맛있는 큐브형 치즈니 맛 없기가 힘들죠
치아바타 빵도 뭐 그냥 그렇습니다.

아래 사진은 11시 04분에 찍은 사진으로 레고랜드 시티에 있는 시티스낵스란 식당으로 츄러스나 음료 등을 파는 곳인데 이곳도 널럴한 자리를 보여줍니다.

총평
주말 한정해서라도 임시 천막을 치고 저 넓은 공간에 임시 테이블이라도 구비하지 않는다면 레고 랜드를 방문한 관광객들의 불편함을 결단코 사라지지 않을것임
레고랜드 측에서 별도의 조치가 필요한데 과연 그럴까?
보안검사라는 명목하에 짐검사까지 해대며 싸들고 입장하는 음식까지 색출하려 드는데 :)

식사하다 보는 광경이었는데 앞 테이블에선 급한 아주머니가 아직 식사도 다 끝나지 않은 테이블에 너무 밀착해서 대기하시다 식사하시던 분께 아직 다 먹지도 않았는데 너무 그러시는거 아니냐며 면박 당했음 ㅋㅋㅋ
내가 봐도 그 아줌마 잘못이었는데 나중에 테이블 체인지되고 본인들 일행 오니 오히려 타박하신 분을 헐뜯더란
개념 무엇? 상식 어디?

이외 다른 식음료 판매장의 문제점
아이스크림 하나 사려해도 줄이 3m이상씩 발생했고 카페에서 아메리카노 하나를 사려해도 20분 이상 걸리고 그마저도 얼음이 떨어져 그 이상 걸리는 상황까지 발생하는 등 여기저기 손봐야 할 사항들이 한둘이 아님

하지만
초등학생 자녀를 두었다면 반드시 가봐야 할 국민 랜드라 생각함
남들은 3년 내 재방문 의사 결단코 없다지만 평일에 시간내서 가볼만 함(여름 겨울 빼고)

반응형
Posted by Hippalus
,

반응형

iframe으로 불러들인 컨텐츠의 높이만큼 부모창에서 iframe의 높이를 동일하게 만들고 싶을 경우 몇가지 고려할 요소가 존재한다.
구조는 대략 이러하다.

부모창
<div id="부모창의DIV">
    <iframe id="부모창의IFRAME"></iframe>
</div>

자식창
<div id="자식창의DIV">
</div>

1. contents() 
2. on load

1. contents() 
먼저 iframe에 접근하기 위해선 그냥 find로 접근하면 안된다.
contents().find()로 접근해야 한다.

$("#부모창의IFRAME").contents().find("#자식창의DIV")

2. on load
1번까지 하고 접근해보면 null을 리턴하거나 undefine을 리턴한다.
본창의 document가 ready되었을 뿐이지 iFrame의 내용까지 모두 불러와진게 아니기 때문이다.
따라서 1번 코드는 이렇게 호출되어야만 한다.
부모창의IFRAME의 contents에서 자식창의DIV란 요소를 획득하겠다란 이야기인데
언제?
iFrame이 모두 불러와져서 온전하게 자식요소들에 접근이 가능할 때 접근하겠다.

$("#부모창의IFRAME").on("load", function() {
        var objIframeChild = $("#부모창의IFRAME").contents().find("#자식창의DIV);
        $("#부모창의DIV").height(objIframeChild.height());
        /* objIframeChild로 iFrame의 자식을 획득하였으니 이녀석을 가지고 놀면 된다. 
            objIframeChild.height() 등등*/
}

여기까지 한다면 내 도메인 내에선 아무 문제 없이 주고 받고가 가능하지만
다른 도메인이라면 이야기가 달라진다.

망할 cross oigin

Uncaught DOMException: Blocked a frame with origin "http://~~~~" from accessing a cross-origin frame.
크롬에서 개발자 도구로 지켜보면 이 에러를 내뱉으며 동작하지 않는다.

iFrame 소스의 on load 또는 jQuery $(document).ready 아래에 부모로의 통신용 postMessage를 구현해준다.
구조는 간단하다.
window.parent.postMessage() 안에 {키, 값} 형태로 넣어주고 콤마(,) 이후 전달 되는 도메인이나 IP주소를 입력해주면 된다.
도메인이나 IP주소 대신 *도 가능하지만 해킹당할 우려가 있으니 가급적 지양해야 할 것이고
만약 여러 도메인으로 통신을 해야겠다면 도메인이나 IP주소만 바꿔가며 window.parent.postMessage를 반복하면 된다.

window.parent.postMessage({키값: 보내고 싶은 값 }, "허용되는 도메인 또는 아이피");

보내는 곳인 자식쪽 소스
window.parent.postMessage({ childHeight: $("자식창의DIV").height() }, "http://......");

받는 곳인 부모쪽
그냥 리스너로메세지 받겠다 하면 끝이다.
window.addEventListener('message', function(e) {
        $("#부모창의DIV").height(e.data.childHeight);
 });

반응형
Posted by Hippalus
,

반응형

웹개발을 하다보면 속도가 느려 사용을 못할 쿼리를 짜게 되기도 한다.
DB설계란게 다 그렇듯 최종 완성물로 가기까지 계속 설계가 변경되기도 하고 설령 완료되어 운영하더라도 기능 변경 요구나 데이터가 쌓여감에 따라 초기 설계와 달라지거나 속도가 느려지는 일들이 비일비재 하므로 그때마다 DBA에게 위탁하기도 뭐하고..
작은 회사에선 DBA가 있을턱도 없고 그렇다고 느린 속도를 한탄만 하고 있을 순 없는데
MSSQL에선 기특하게도 디비 튜닝을 매우 쉽게 도와주는 기능을 기본 탑재하고 있다.

초보자도 쉽게 튜닝이 가능하므로 따라해보자

1. 시퀄(mssql을 있어 보이게 발음해보자) Management Studio을 실행 후  문제가 되는 쿼리창에 복사해 두자.
2. Management Studio의 상단 메뉴에 보면 예상실행계획 표시라는 아이콘이 보일것이다. 
네모 세개가 선으로 이어지고 거기에 삼각형이 뒤집어진 아이콘인데 실행 버튼 우측에 조금만 가면 있다.
모르겠으면 단축키로 Ctrl + L을 누르면 된다.

3. 쿼리가 실행되고 나면 하단 쿼리 결과 우측에 보면 요런 ... 네모 버튼이 보일것이다.
여기에서 마우스 우측 버튼을 누르면 컨텍스트 메뉴가 나타난다.

누락된 인덱스 세부 정보(M)을 마우스 왼쪽 버튼으로 누르면

 새 쿼리창이 뜨면서 아래처럼 주석안에 누락된 인덱스를 친절히 알려준다.
/* 주석안의 */ CREATE INDEX문에서 대괄호 [] 안의 인덱스 이름을 지정해주고 실행만 시켜주면 튜닝에 필요한 적합한 인덱스가 나타난다.
<NAME OF MISSING INDEX, SYSNAME, > 이부분을 원하는 인덱스 명으로 바꿔주면 된다.
내 경우 IDX_TABLENAME_FIELD 명을 규칙으로 정해서 알맞게 바꿔주고 있다.

5. 다시 2번을 눌러서 4번까지 반복해가며 속도가 빨라질 때까지 진행하면 된다.


조건문에 따라 쿼리문이 달라지기 때문에 그에 맞게끔 쿼리를 변경해가며 수행해야 할 수도 있다.
또 인덱스를 추가만 한다고 모든 경우에 다 맞아 떨어지리란 보장 또한 없다.
경우에 따라선 설계 자체를 변경해야 할 수도 있고 쿼리 자체를 바꿔야 할수도 있지만
경험상 상당수 속도 개선 효과를 볼 수 있었다.

 

 

반응형
Posted by Hippalus
,

반응형

그냥 jQuery로 select box를 value로 변경하는건 쉬움
$("#SELECTBOX_MAIN_ID").val("1").trigger('change');

하지만 SUB selectbox가 존재하여 main selectbox가 변경되면 sub selectbox의 값도 바꿔줘야 할 경우
trigger의 change 이벤트 설정시 json형태로 key, value로 넘겨준 후
$("#SELECTBOX_SUB_ID").val("MAINVALUE").trigger('change', [{selectValue:'SUBVALUE'}]);

해당 change control의 change이벤트에 파라메터로 넘겨 받아 넘겨준 key로 받아오면 됨
$("#SELECTBOX_MAIN_ID").change(function(e, paramData {
       if (paramData != null) {
           $("#SELECTBOX_SUB_ID").val(paramData.selectValue).trigger("change");
        }
});

 

반응형
Posted by Hippalus
,

반응형


돌잔치나 집들이 조금 선 넘자면 결혼식 답례품을 고민할 때 누구나 다 하는 그렇고 그런 수건, 떡, 컵 이런것 말고
"아! 난 아무개 행사에 갔더니 캔을 주더라"
이런 강려크한 인상을 주고 싶을 때 한번 쯤 고려해볼만한 메세지 캔

캔음료제작하는 작은매장 베쥬 입니다.



메세지 캔이 뭐냐면 원하는 문구나 사진만 보내면 디자인은 무료로 캔에 뙇! 하고 고급지게 전세계 유니크한 캔을 만들 수 있는 서비스입니다.
직장이나 어린이집,유치원 단체선물로 아주 좋은 세상에 하나뿐인 메세지캔입니다.
 Yes, I can
네 나는 캔입니다.

어때유 이쁘쥬? 고급지쥬?
백종원 선생이 조보아 안불러도 되겠쥬?



울산의 메세지 캔 업체인 베쥬는 현재 울산 신정동 울산공고근처에 위치해 있습니다.
( 울산 남구 돋질로139번길 20,1층 )
메시지 캔 제작은 2개이상 주문가능하며 당일제작도 가능합니다.
전국 택배도 가능하며 울산전지역은 퀵도 가능합니다.

오늘이 2020년 3월 30일이니 이제 내일이네요.
2020년 4월 한달간 20캔이상 주문시 퀵, 택배 무료로 진행합니다.
아~ 뭐지? 이거 개꿀?

답례품 전문 업체인 메세지캔 업체인 베쥬는 캔만 신경쓴게 아닙니다.
커피는 고급원두를 사용중이며 아메리카노에는 기본으로 투샷이 들어가 찐~한 진한 맛을 느끼실 수 있습니다.


또한 커피, 에이드, 스무디 등 음료 이외에도 디저트로 뚱카롱 판매중입니다.
뚱카롱 4가지맛판매중!
딱봐도 무슨 맛일지 감이 옵니다.
바스락 촉촉 사그락 등등등
디저트류는 서서히 늘려나갈 예정이니 인스타 등을 참고해 주시면 되겠습니다.
인스타그램 주소는 하단에 있습니다.

전화번호 0507-1434-8797
인스타그램 @bejou_can
주문 및 문의는 카카오톡채널 베쥬캔 으로 하시면 됩니다.



반응형
Posted by Hippalus
,

반응형

https://github.com/nitsugario/jQuery-Freeze-Table-Column-and-Rows

한번에 좌측과 헤더까지 고정시킬 때 사용하면 매우 편리한 MIT 오픈 소스
특히 colspan이 존재하게 될 경우 div로 좌측 TD column을 고정시키고자 할 경우 쉽지 않지만
이 소스를 사용하면 colspan까지 다 커버쳐줌

jQuery-Freeze-Table-Column-and-Rows-master.zip
0.07MB

사용방법은 css, js파일 그대로 복사한 후 
고정 스크롤 테이블 바깥에 DIV로 감싸고 
jQuery로 CongelarFilaColumna함수 호출할 때 몇개의 좌측 컬럼을 고정시킬것인지를 설정해주면 됨
첨부파일 중 html로 다양한 예제가 있으니 그대로 따라하면 쉽게 가능함.

다만 여러개의 테이블을 고정시켜 한 페이지에 보여줘야 할 경우 따로 테이블을 감싸고 있는 DIV의 절대 위치를 조절해줘야 함
$("#DIV_2").css({ top: $("#DIV_1").offset().top + $("#DIV_1").height() + 50 + "px" });
이런식으로 DIV_1이 처음 영역의 테이블을 감싸는 DIV이고 DIV_2가 나와야 할 경우 DIV_1의 위치와 높이값에 버퍼 50px을 주는 식으로 주면 됨

그리고 팁아닌 팁이지만
동적높이를 갖는 영역들인 경우 내 경우 700이하이면 그냥 그대로 출력하고 700이 넘으면 세로 스크롤이 나타나도록 height값을 조절해줌

가령 아래같은 구조인 경우
<div id="DIVTABLE_1">
   <table id="TABLE_1"></table>
</div>

<div id="DIVTABLE_2">
  <table id="TABLE_2"></table>
</div>

        $(".ContenedorTabla").width($("#TDCONTENT").width());
        if ($("#TABLE_1").height() < 700) {
            $("#DIVTABLE_1").height($("#TABLE_1").height());
        } else {
            $("#DIVTABLE_1").height(700);
        }

        if ($("#TABLE_2").height() < 700) {
            $("#DIVTABLE_2").height($("#TABLE_2").height());
        } else {
            $("#DIVTABLE_2").height(700);
        }

 

 

반응형
Posted by Hippalus
,

반응형

신선한 재료와 직접 끓인 소스로 아낌 없이 듬뿍 담아 준비한 관악구 서울대입구역 샌드위치 전문점 올리스 테이블

올리스 테이블은 서울대입구역 6번 출구에서 비교적 가까운 곳에 새로생긴 샌드위치 전문점이며, 장차 관악구의 맛집이 될 관악구 샌드위치 전문점입니다.



환한 실내 인테리어와 함께 포만감 + 샌드위치가 이렇게 맛있어도 되는것인가? 라는 방문한 분들의 진지한 고민섞인 리뷰들이 증명하듯 한끼 든든하게 책임질 수 있는 샌드위치 전문점입니다.



서울대입구역 샌드위치 전문점 올리스 테이블의 주력 메뉴들은 다음과 같습니다.

샌드위치메뉴
가장 기본적이지만 풍미 가득한 햄과 고소한 치즈, 신선한 야채가 어우러진 햄치즈 샌드위치
짭짤하고 풍미 가득한 베이컨과 고소한 치즈, 신선한 야채가 어우러진 아메리칸 스타일의 BLT 샌드위치
직접 만드는 고소한 에그마요 샐러드와 신선한 야채가 어우러진 에그마요 샌드위치
직접 만든 당근 라페와 허브닭가슴살, 고소한 리코타치즈가 어우러진 올리스테이블의 시그니쳐 리코타치킨라페 샌드위치
올리의 특별한 레시피로 끓여낸 비프칠리를 가득 담은 또다른 시그니쳐 비프칠리 샌드위치

샐러드메뉴
방울 토마토, 양파, 그린빈, 버섯을 구워 올려 조화로운 맛을 주는 야채 샐러드
부드러운 허브 닭가슴살이 가득 들어간 로스트치킨 샐러드
고소한 리코타치즈가 가득 올려진 리코타치즈 샐러드


건강한 맛과 속이 꽉찬 샌드위치가 장점인 올리스 테이블의 신선한 재료와 경계를 넘나드는 메뉴 구성 등 대기업 샌드위치 전문점과의 차별성이 느껴집니다.

영업시간 : 10시 ~ 21시 (라스트오더 20:30)
주소 : 서울특별시 관악구 관악로 195 관악위버폴리스 A동 106-1호 올리스테이블
전화 : 02-877-0507
인스타그램 : https://www.instagram.com/oliystable/

찾아가는 법 : 서울대입구역 6번 출구로 나와 길건너 파리바게뜨 뒷편 관악 위버폴리스 단지 상가

 

 

반응형
Posted by Hippalus
,