거의 1년만에 다시 찾은 제주.

원래는 3층에 있던 해녀김밥을 먹으러 갔었는데,

사진을 딱 한장만 찍었다..

 

 

아무튼, 맛있어서 아라가 무지 만족한 집 !

원래는 줄서서 먹는다고 하던데,

평일이라 그런지 그 정도는 아니었다.

 

 

카페패스라는 걸 구매했는데, 3일동안 13900원이면 카페를 무제한으로 이용할 수 있는 패스다.

나중에 알았지만, 카페마다 무료 제공 음료가 다르다. 무조건 아메리카노가 아니다.

 

 

밥을 먹고 근처 카페 어디가 되나 찾아보다가,

바로 같은건물 5층에 언더라운지가 검색되어서 찾아가봤다.

 

 

내부는 넓고 시원시원하게 뻥뻥 뚫려있다.

저녁이 되면 저 많은 자리에 사람들이 꽉꽉 차서 

흥겨운 펍 분위기가 난다고 한다.

 

 

메뉴는 요렇게 있는데,

언더라운지에서 카페패스로 이용가능한 건, 티백으로 된 차 종류만 가능하다고 하다.

 

 

그래서 요렇게 카모마일하고 페퍼민트를 주문했다.

사실, 커피 마시고 싶어서 간거였는데 살짝 아쉽...

 

 

아라가 소르베도 먹어보고 싶다고 해서,

딸기 소르베도 주문했는데, 주문 받으신 분이 네이버 어디 들어가면 

쿠폰 받을 수 있다고 쿠폰 위치도 막 알려주셔서, 1000원 싸게 먹을 수 있었다.

 

 

그리고, 비가올 것 같아서 후다닥 루프탑도 가봤는데,

요렇게 빈백들이 있어서 편하게 거의 눕다시피 있을 수 있다.

 

 

그리고, 경치가 거의.. 죽인다.

이날 딱 해도 별로 없고, 선선하니

날씨도 최고였다.

비가 온다고 했던 것 같은데,

하늘이 파아랗게 화창한날. 

제주도 천년의 숲 비자림에 다녀왔다.

 

이날따라 유난히 날씨가 더 좋아서 그런지

주차장에도 차들이 가득가득 하다.

 

 

비자림에는 화장실이 안쪽에 없어서, 

조금 더 편안하고 안정된 탐방을 위해서는

화장실을 미리 다녀오는게 좋다.

 

 

매표소 쪽으로 걸어가다 보면 

안내도와 비자숲에 대한 이야기를 볼 수 있다.

코스는 빠르면 대략 40분 ~ 1시간 정도면 충분하다.

 

 

성인은 3,000원

청소년은 1,500원이다.

나도 청소년 하고 싶다..

 

 

매표소에 티켓을 구입하고 안쪽으로 들어가면

숲으로 들어가기까지 길이 쭈욱 이어진다.

정말 화창하고, 뜨거운 날씨.

 

 

그렇게 조금만 걷다보면, 천년의 숲 비자림으로 들어갈 수 있는 입구가 나오는데,

신기하게도 딱 들어가자마자 서늘함이 느껴진다.

 

 

나무들이 하나하나 다 거대하고 멋지게 자란 곳.

따로 떼어다 놓으면 어디서나 

멋진 나무라고 들을 법 하지만, 

여기 있으니 평범한 나무 같이 보인다.

 

 

천천히 이야기하면서 걷다보면

주변 풍경이 조금씩 바뀌는데,

정말 깊은 숲 안쪽까지 들어온 느낌이다.

중간중간 뱀조심하라는 경고문도 있으니,

긴바지와 운동화를 신고가는게 좋을 것 같다.

 

 

거다보니, 울타리가 왜 일직선으로 안되어 있고,

동그랗게 되어 있을까? 고민하다가,

울타리에 서서보니 보이는 장관.

 

나무가 이렇게 멋질수가 있을까?

약간 무섭기도 하다.

 

 

나무 두그루가 합쳐져서 하나의 나무가 되었다고 한다.

그래서 그런지 사람들이 이 앞에서 정말 사진을 많이 찍는다.

커플들에게는 필수 사진 장소인 것 같다.

 

 

그렇게, 약 한시간 정도 걷다보니 천년의 숲 비자림을 

모두 돌아볼 수 있었다.

다시 숲을 나오니 햇빛이 쨍쨍.

 

다음에 제주를 온다면, 또 와보고 싶은 곳이다.

친구들과 제주도를 왔으니 몸국을 먹어보자!

해서, 주변에 평이 괜찮은 곳을 찾아서 간 밥먹자 

 

 

하지만, 입구부터 뭔가 몸국이 지워진듯한 느낌을 받았고,

어? 뭐지? 싶었다.

이왕 여기까지 온 김에 들어가보자 !

 

 

간판은 해외 관광객들을 위한 일본어로도 표시되어 있었고,

작은 돌하르방들이 반갑게 맞이 해준다.

주차장도 꽤 크게 있어서, 편하게 주차할 수 있었다.

 

실내는 사장님의 손길로 아기자기하게 꾸며져 있는데,

내부가 생각보다 넓어서 놀랐다.

 

판매하고 계시는 고사리육개장 하고 

몸국은 전국으로 택배도 보낼 수 있다고 한다.

고사리육개장이 맛있는 밥먹자는 모든게 셀프다.

불편할 것 같지만, 생각보다 장점이 엄청 많다.

첫째, 남기지만 않으면, 가격이 엄청 저렴하다.

고사리육개장을 어디가서.. 6000원에 먹을 수 있을까.?

 

그리고, 들어와서야 알게된 사실.

몸국은 택배만 가능하다고 한다.

어쩔 수 없이, 모두가 고사리육개장으로 통일 시켜서 주문했다.

 

둘째, 밥과 반찬이 모두 셀프니 원하는 만큼 가져다 먹을 수 있다.

게다가, 육개장 국물이 부족하면 더 달라고 할 수도 있다.

정말 어마어마한 혜택.

 

 

깍두기는 아삭하니 맛나고,

시금치도 달큼하니 육개장하고 잘 어울렸다.

기본으로 나오는 반찬들이 퀄리티가 높아서 

최소 한번이상은 리필할 수 밖에 없게된다.

 

고사리육개장은 요렇게 뚝배기에 담겨 나오는데,

밥 한그릇 퐁당 넣어서 말아 먹으면

진짜 하루가 든든하다.

 

친구들 모두 완뚝하고, 반찬도 남김없이 먹어서

추가비용은 내지 않았다.

 

다음에도 또 제주도를 간다면 꼭 들려야할 

제주도 고사리육개장 밥먹자

내가 다시 갈때까지 그대로 있으면 좋겠다.

송파구 마천중앙시장 근처에 있는 따밥 (따뜻한 밥상)
맛있고 저렴한 김치찌개를 파는 곳이라고 해서,
아라랑 지나가면서 언제 한번 와보자 했는데, 드디어 다녀와봤다.

사실 입구에 떡하니 3,000원이라고 되어 있어서,
저게 요즘 가능한 가격인가?
어려우신 분들을 도와주려고 만든 곳인데,
우리가 가면 안되는거 아닌가? 하는 생각이 들어서
들어갈까 말까 조금 망설이기도 했었는데,
일단 가보자! 해서, 들어가봤다.

안쪽으로 들어가보니, 생각보다 굉장히 평범한 김치찌개 집이었다.
메뉴는 김치찌개 단일메뉴.
한명이 오면, 김치찌개 하나, 두명이 오면 김치찌개 둘 이렇게 주문하면 된다.

우리는 김치찌개 2개와, 고기사리(대), 계란후라이 2개를 주문했는데,
고기사리(대)를 주문하는 사람이 많이 없었는지,
사장님이 몇번이나 다시 물어보셨다.

이곳이 셀프바처럼 꾸며져 있는 곳인데,
일단 밥이 무제한 이라서, 밥통에서 마음껏 퍼다 먹으면 되고,
김, 계란후라이는 메뉴판에도 있듯이, 500원씩이다.
그냥 먹고 싶은만큼 가져다 먹고, 나중에 후불로 먹은 만큼 계산하면 된다.

요렇게, 계란을 톡 까서,
맛있게 계란후라이를 하면 되는데,
아무래도 김치찌개와 같이 먹을거라서 반숙이 더 좋은 것 같다.

아라가 정성들여 만든 계란후라이.
김치찌개와 먹기 딱 좋은 반숙상태라서 맛있게 먹었다.
아라가 우리집 계란보다 더 싱싱한 것 같다고 해서,
여기 사장님은 도대체 어떻게 이익을 내는거지..?
라는 사장님 걱정까지 하게 만드는 곳이다.

계란후라이를 하고 조금 기다리다 보면,
사장님께서 김치찌개를 가져다 주시는데,
고기사리 대자를 추가해서 그런지 김치반 고기반이다.
그냥 밥을 추가로 먹지 않고도 배부를 정도로 많이 주신다.
그리고, 진짜 국물도 시원하고 맛있는 김치찌개다.

나중에 알고보니,
많은 사람이 따뜻한 한끼를 먹을 수 있도록 운영중이신데,
자원봉사 하시는 분들도 있고,
여기저기서 후원도 많이 하시는 것 같다.

나중에 우리도 자원봉사 하면 좋을 것 같다고
말하면서 나왔는데,
더 많은 사람에게 알려져서, 많은 사람이 부담없는 가격에
따듯한 한끼를 먹을 수 있으면 좋겠다.

CI/CD 중, 하나인 Bitrise에서 iOS 프로젝트를 컴파일 해보다가 만난 에러를 정리했다.

첫번째 에러: xcodebuild: error: Could not resolve package dependencies:

Package.resolved file is corrupted or malformed; fix or delete the file to continue: unsupported schema version 2

 

Package.resolved 파일 때문에 일어나는 에러인데, 해결방법은 다음과 같다.

1. 프로젝트폴더/프로젝트이름.xcodeproj/project.xcworkspace/xcshareddata/swiftpm 폴더 아래에 있는 Package.resolved를 지우고 다시 시도한다.

2. .gitignore 파일에 Package.resolved 파일을 추가한 후, 다시 시도한다.

 

두번째 에러: xcodebuild: error: Failed to build workspace KeywordNews with scheme KeywordNews.

Reason: Cannot test target “KeywordNewsTests” on “iPhone 8 Plus”: iPhone 8 Plus’s iOS Simulator 15.2 doesn’t match KeywordNewsTests’s iOS Simulator 15.5 deployment target.

Cannot test target “KeywordNewsUITests” on “iPhone 8 Plus”: iPhone 8 Plus’s iOS Simulator 15.2 doesn’t match KeywordNewsUITests’s iOS Simulator 15.5 deployment target

 

뭔가 버전이 맞지 않는다고 나오는 에러인데, XCode 버전을 맞춰주면 해결된다.

1. Bitrise의 해당 앱의 Workflow로 들어간다.

2. Stack & Machines 메뉴에서 XCode의 버전을 현재 자신의 맥에 설치된 XCode 버전과 맞춰준 후, 다시 시도한다.

간단한 에러들이고, 해결방법도 간단하지만, 

혹시 몰라 정리해 두었다.

부천에 갔다가 아라가 강력추천해서 다녀온 돈가스온기.

작고 아담한 가게였는데, 입구에는 대기명단이 있을 정도로

굉장히 인기가 많은 곳이다.

 

우리는 다행히도 평일에 그것도 오후 브레이크타임이 끝나기전에 방문해서,

대기없이 바로 들어갈 수 있었다.

 

하지만, 자리에 앉아서, 음식을 주문하자마자

우루루 들어오는 사람들 때문에,

조금만 늦었어도 밖에서 기다리고 있어야 했었답니다.

 

 

내부는 아담하게 꾸며져 있는데요.

혼자 온 사람들을 위한 바 형태의 테이블과

2인, 4인 테이블이 있어서,

작지만 알차게 여러 손님들을 맞이할 수 있게끔 

되어 있었답니다.

 

 

한쪽 벽에 요렇게 사진들과 액자들이 많이 걸려 있는데,

사실 돈까스 주문하고 두리번 거리다가

자세히는 못봤네요..

 

 

가장 집중해서 봤던, 돈가스 먹는 방법 입니다.

어떻게 먹어야 더 맛있게 먹을 수 있을까 생각하면서

음식을 기다리는게 재미있더라고요.

 

마지막에 고맙습니다. 를 3번이나 쓰신 것도 인상깊었습니다.

 

 

테이블에 앉으면, 위와 같이 기본 셋팅이 되어 있는데요.

휴지 아래 있는 소금통에 있는 소금이

무려 5년동안 간수를 뺀 소금이라고 해요.

 

우리는, 먹다가 소금을 바닥에 쏟아서..

엄청 죄송했었네요.. 

다시한번 죄송합니다..ㅠ

 

 

주문한 돈가스가 드디어 나왔어요.

모듬 히레와 모든 히레치즈를 주문했는데요.

거기다가 각자 새우 1마리씩을 추가한 구성이랍니다.

굉장히 풍성하죠?

 

 

먼저 장국은 건더기가 굉장히 큼직큼직 썰려 있어서

신기하게 장국을 먹는데 씹는맛이 좋았어요.

 

깍두기도 직접 담그신 건지 중국산이 아닌 것 같더라고요.

기본찬에도 굉장히 정성을 많이 쓰시는 것 같았답니다.

 

 

돈가스에 선홍빛 보이시나요?

아까 봤던 먹는방법에서 미오글로빈을 함유하고 있어서 그렇다는데

직접 보니까 신기하더라고요.

 

이게 먹어보면 아시겠지만, 

잘 안익어서 그런게 아니라는 것을 아실거에요.

 

 

추가로 주문한 새우 튀김인데요.

그냥 분식집에서 판매하는 그런건 줄 알았는데,

어마어마한 놈이 나와서 깜짝 놀랐답니다.

머리부터 꼬리까지 바삭하게 튀겨져서

전부다 먹을 수 있는데,

고소하고, 씹을때마다 바삭바삭 식감과 소리가

이게 진짜 튀김이구나 한답니다.

 

 

정신 없이 먹다보니, 

금방 그릇들이 깨끗해졌어요.

 

살짝 보이는 소금을 쏟은 잔해들..

또 죄송하네요..

 

다음에 또 방문하겠습니다 !

 

아라가 가보고 싶어했던, 

부천 소사역 근처에 있는 소새울 양과점 입니다.

 

이곳은 소금빵으로 유명한 빵집인데요.

 

아라가 자주 보는, 빵카페에서도 핫한 곳이라고 하네요.

소사역 5번출구로 나와서 조금만 걸으면 되는데요.

현재는 주변에 공사를 많이해서, 조금 해맬 수 있답니다.

 

 

당일 생산, 당일 판매가 원칙이라고 하네요.

사실, 어떻게 하루에 만든 빵을 당일에만 팔 수 있을까 

그럼 안팔리는 빵은 모두 버리는걸까? 라는 생각을 

이런 문구를 볼 때마다 하는 것 같아요.

 

그만큼 인기가 많다는 거겠죠?

 

 

소금빵 외에도, 조각 케이크나 다른 빵종류도 많이 있었고,

특히 눈에 띄었던건 저 커다란 초코 티라미슈 였는데요.

 

찾으시는 분이 많아서인지, 예약손님이 많아서인지는 모르겠지만

벌써 빵 봉투에 포장되어 보관된 것들이 많이 있었답니다.

 

 

저희가 빵을 고르고, 계산을 하는 동안에

다른 커플손님이 들어와서, 여기가 소금빵이 정말 유명한 곳이라고

자꾸 그 맛이 생각난다고 하는 말들을 들을 수 있었는데요.

그 손님은 소금빵만 4개나 구매하셨답니다.

 

저희가 구매할때, 사장님이 이동거리나

현재 빵에 상태에 따라서 세심하게 하나하나 다르게

포장해주시는 걸 보고,

이분 진심이구나 느꼈답니다.

 

보통, 빵이 뜨거우니까 버터를 따로 싸주시고,

빵의 현재 온도에 따라서 비닐이나 종이봉투를 

따로 선택해서 주시는 곳을 여기빼고는 아직 보지 못했거든요.

 

 

소금빵은 요렇게 생겼는데요.

쫄깃쫄깃한데다가, 안에 버터?가 들어있어서

단짠의 조화가 굉장하더라고요.

게다가 담백함 까지 갖추고 있어서,

인기가 많은 것 같았답니다.

 

부천에 또 언제 갈 수 있을지 모르겠지만,

또 가볼 수 있겠죠?

OS : Ubuntu 20.04

nginx : 

 

1. 우분투 모든 패키지 최신화하기

sudo apt update
sudo apt upgrade

 

2. 우분투 20.04에 최신 Nginx 설치

2-1. 기존에 Nginx가 설치 되어있다면, 먼저 삭제 합니다.

sudo systemctl stop nginx
sudo apt-get purge nginx -y && sudo apt autoremove nginx -y

2.2 최신 Nginx PPA를 추가합니다.

sudo add-apt-repository ppa:ondrej/nginx-mainline
sudo apt update

2.3 Nginx 설치

sudo apt install nginx-core nginx-common nginx nginx-full

 

3. 저장소에 Nginx 소스코드 추가

(Modsecurity를 컴파일 하기 위해서)

3-1. apt 구성 파일을 엽니다.

sudo nano /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list

3-2. #주석처리 되어있는 라인 해제

# deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu/ focal main

** 아래와 같이 형태로 만들면 됩니다 **
deb http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu focal main
deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu focal main

3-3. apt update

sudo apt update

 

4. Nginx 소스 다운로드

- Modsecurity를 컴파일 하려면 Nginx 소스코드를 다운로드 해야 합니다.

 

4-1. 디렉토리 생성 및 구성

sudo mkdir /usr/local/src/nginx
cd /usr/local/src/nginx

#필요한 경우, 생성한 디렉터리에 권한을 할당합니다.
sudo chown username:username /usr/local/src -R

4-2. 종속성 설치 및 소스코드 다운로드

sudo apt install dpkg-dev
sudo apt source nginx


## 아래와 비슷한 에러메시지가 나타날 수 있지만, 무시해도 됩니다 ##
dpkg-source: info: extracting nginx in nginx-1.21.1
dpkg-source: info: unpacking nginx_1.21.1.orig.tar.gz
dpkg-source: info: unpacking nginx_1.21.1-1+ubuntu20.04.1+deb.sury.org+1.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying 0001-Make-sure-signature-stays-the-same-in-all-nginx-buil.patch
dpkg-source: info: applying 0002-define_gnu_source-on-other-glibc-based-platforms.patch
W: Download is performed unsandboxed as root as file 'nginx_1.21.1.orig.tar.gz' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

4.3 다운로드 받은 Nginx 버전과 현재 설치되어있는 Nginx 버전이 같은지 확인합니다.

- 같은 버전으로 다운받아야 컴파일 할 수 있습니다.

ls

## 결과 예시 ##
onsemiro@ubuntu:/usr/local/src/nginx$ ls
nginx-1.21.1
nginx_1.21.1-1+ubuntu20.04.1+deb.sury.org+1.debian.tar.xz
nginx_1.21.1-1+ubuntu20.04.1+deb.sury.org+1.dsc
nginx_1.21.1.orig.tar.gz
nginx_1.21.1.orig.tar.gz.asc


nginx -v

## 결과 예시 ##
onsemiro@ubuntu:/usr/local/src/nginx$ nginx -v
nginx version: nginx/1.21.1

 

5. ModSecurity용 libmodsecurity3 설치

5.1 GIthub에서 ModSecurity 리포 복제

sudo apt install git

git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
cd /usr/local/src/ModSecurity/

5-2. libmodsecurity3 종속성 설치

sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y

5-3. 하위 모듈 설치 및 업데이트

git submodule init
git submodule update

 

6. ModSecurity 환경 구축

6-1. build & configure

./build.sh
./configure

## 위 2개 명령 실행 시, 아래의 오류가 표시될 수 있지만 무시해도 됩니다 ##
fatal: No names found, cannot describe anything.

6-2. 코드 컴파일

make

sudo make install

 

7. ModSecurity-nginx 커넥터 설치

7-1 ModSecurity-nginx 리포 복제

sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/

7-2. ModSecurity-nginx 종속성 설치

sudo apt build-dep nginx
sudo apt install uuid-dev

7-3. 컴파일

sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
sudo make modules

7-4. 동적모듈 복사

sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

 

8. Nginx conf파일 구성 (ModSeucrity-nginx 커넥터 로드 및 구성)

8-1. nginx.conf 에서 ModSecurity 활성화

sudo nano /etc/nginx/nginx.conf

## 파일 상단에 추가 ##
load_module modules/ngx_http_modsecurity_module.so;

## http {} 섹션에 추가 ##
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

8-2. ModSecurity용 디렉토리 및 파일 생성 및 구성

sudo mkdir /etc/nginx/modsec/
sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
sudo nano /etc/nginx/modsec/modsecurity.conf

## line 7
SecRuleEngine DetectionOnly -> SecRuleEngine On

## line 224
# Log everything we know about a transaction.
SecAuditLogParts ABIJDEFHZCopied! -> SecAuditLogParts ABCEFHJKZCopied!

8-3. conf 파일 생성

sudo nano /etc/nginx/modsec/modsec-config.conf

8-4. 생성한 파일에, 다음 라인 추가

Include /etc/nginx/modsec/modsecurity.conf

8-5. ModSecurity 유니코드 매핑

sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/

8-6. nginx 테스트

sudo nginx -t

## 결과 ##
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

## nginx 재시작 ##
sudo systemctl restart nginx

 

9. ModSecurity용 OWASP 핵심 규칙 세트 설치

9-1.  OWASP CRS 3.3.2 다운로드

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip

9-2. 압축 풀기

## unzip 설치 ##
sudo apt install unzip

## 압축 풀기 ##
sudo unzip v3.3.2.zip -d /etc/nginx/modsec

9-3. Core Rule Set 복사

sudo cp /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf

9-4. Core Rule Set 추가

sudo nano /etc/nginx/modsec/modsec-config.conf

## 아래 명령문 추가 ##
Include /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf
Include /etc/nginx/modsec/coreruleset-3.3.2/rules/*.conf

## nginx 테스트 ##
sudo nginx -t

## nginx 재시작 ##
sudo systemctl restart nginx

 

 

참고: https://ko.linuxcapable.com/how-to-install-modsecurity-with-nginx-on-ubuntu-20-04/

+ Recent posts