2025/02 58

방화벽 (firewall)

Ubuntu 에서의 firewall 은 기본적으로 UFW (Uncomplicated FireWall) 서비스를 사용한다.※ CentOS  에서는 firewalld 를 사용 IP 설정시의 주의allow 는 whitelist 를 설정하는 의미로 해당 IP만 접근을 허락하고 나머지는 거부deny 는 blacklist 를 설정하는 의미로 해당 IP만 접근을 거부 먼저 ufw 의 상태를 체크$ sudo systemclt status ufw 만약 서비스가 존재하지 않는다면 인스톨을 하자$ sudo apt install ufw enable / disable$ sudo  ufw enable$ sudo  ufw disable 웹서비스(http / https) 포트 허용$  sudo ufw allow 80 $  sudo ..

Commands/Linux 2025.02.28

유저 / 그룹 / 화일 관리

유저 추가$ sudo adduser user2/home/user2 폴더생성config 화일들의 /home/user2 에 복사패스워드 입력 요구 현 유저에서 화일 생성$ touch newfile$ ls -al newfile  -rw-r--r--      1  user1      user1             0 Sep 20 19:25  newfilerw- : 소유자는 읽기 쓰기만 가능r--  :  소유자가 속한 그룹의 멤버들은 읽기만 가능r--  :  타인들은 읽기만 가능 퍼미션 변경$ chmod 760 newfile$ ls -al newfile  -rwxrw----      1  user1      user1             0 Sep 20 19:25  newfile760 의 의미는 아래 참조혹은..

Commands/Linux 2025.02.28

5. 고급 git commands

※ 이력은 $ git log 를 통해 확인 가능 1. 직전 commit 를 수정 myfile.txt 를 수정$ git add myfile.txt $ git commit --amend   => "second commit" 가 표시되고 수정가능 => "second & edit commit" 2. revert | reset이전의 commit 을 취소하는 기능은 같으나 로그가 남는(revert)것과 남지 않는(reset)것이 다른 점이다.팀으로서 개발시에는 다른 팀원들이 이력을 알 수 있도록 하는 면에서 revert 를 추천한다. $ git revert HEAD=> 자유롭게 메세지 수정 가능   $ git reset --hard HEAD~~  3. cherry-pickmaster(second commit)에서 ..

4. merge conflict 해결

merge conflict 의 시나리오1. 동일 화일을 변경해서 merge 하는 경우        master 에서 issue2 와 issue3 로 분기해서 작업                  먼저 issue2를 merge하고나서 issue3를 merge하는 경우$ git checkout master Switched to branch 'master' $ git merge issue2 Updating b2b23c4..8f7aa27 Fast-forward  myfile.txt |    2 ++  1 files changed, 2 insertions(+), 0 deletions(-)$ git merge issue3    Auto-merging myfile.txt    CONFLICT (content): Mer..

View 에 관해

앱이 실행 되면 위에서 같이 App 에서 커스텀 View 를 호출하게 되고 아래와 같이 View 프로토콜에 따라 정의 되어있다.따라서 var body: some View 가 반드시 존재해야만 한다. 여기서 some 은 정해지지 않은 애매한 타입으로 리턴한다는 의미이다.  이는 개발자가 자유롭게 구성이 가능하다는 의미이고 다른 언어에서의 Template 으로 보면 무방할 것이다.body 안에서의 VStack HStack ... 등의 View 들이 정의 되는데 이들 View 들의 생성자는 아래와 같이 정의 되어 있다.View 안에 가변으로 정해지지 않은 수로 여러 다른 View들을 정의할 수 있는데 이는 @ViewBuilder 가 이들 Child View들을 Array 취급을해서 빌드해 주기 때문에 자유롭게..

Mobile/Swift 2025.02.24

List UI 앱 View간의 변수 연동 @Binding

각 VStack의 onTabGesture에 의한 버튼 "Mark as favoriate" 클릭하면  ❤ 가 표시/비표시 된다.만약 이 변수를 서브뷰인 RestaurantInfo 에 선언을 한다면 렌더링시에 초기화가 되니 의도에 맞지 않다.그래서 이 변수를 메인뷰(RestaurantListView) 안에 선언을 하고 서브뷰(RestaurantInfo)에 파라미터로 전달을 하지만 서브뷰에서 값의 변경이 있으면 메인뷰의 변수에도 반영이 되도록 하기 위해 서브뷰에서는 @Bind 로 선언하여야 한다.https://sarunw.com/posts/binding-initialization/  참조   메인뷰에서 레스토랑 수 만큼 bool 형으로 초기화하는 @State 변수를 선언해당 레스토랑의 Favorite 상태 값..

Mobile/Swift 2025.02.24

List UI @State 를 이용한 버튼 액션 보이기(onTabGesture, actionSheet, alert)

@State 로 선언한 변수가 도중에 값이 변하면 자동으로 렌더링이 발생한다.https://sarunw.com/posts/state-variable-initialization/ 참조VStack 이나 HStack 에 onTabGesture 를 추가하면 그 안에 공간위에서 클릭을 하는 경우 onTabGesture 를 호출한다.https://sarunw.com/posts/how-to-make-empty-space-tappable-in-swiftui/ 참조onTabGesture 안에서 @State 정의 변수의 상태를 변경하므로써 그 상태에 따라서 ActionSheet 의 표시 유무를 결정한다. actionSheet분리된 RestaurantInfo 에 State 변수를 선언struct RestaurantInfo:..

Mobile/Swift 2025.02.24

List UI 앱 리팩토링(refactoring)

전편 에서 작성했던 List UI 앱을 리팩토링 해 보도록 하자.1. 하나의 View 에 코드를 전부 넣기보다 분리하는게 좋음2. 분리 대상은 ForEach 안의 코드로 ForEach 는 각 루프에 표시할 변수를 건네 줄 필요가 있음3. 분리할 코드를 ReataurantInfo 라는 이름으로 Subview 를 분리 생성 코드 분리VStack 을 선택한 상태에서 Control 키를 누른 상태에서 마우스 더블클릭 -> Extract Subview 선택 Subview 의 이름 변경ExtractedView 를 선택한 상태에서 Control 키를 누른 상태에서 마우스 더블클릭 -> Refactor::Rename 선택 아래 화면으로 전환되면 RestaurantInfo 로 변경 -> 전부 자동 변환 생성된 Resta..

Mobile/Swift 2025.02.24

List UI 앱 생성

이미지를 Assets 에 드랙앤드롭으로 등록 결과 화면과 사용 Components   리스트 변수 정의 * var 는 변수, let 은 상수의 타입이다. body 정의- ForEach https://eldercoder.tistory.com/100 참조- listStyle https://sarunw.com/posts/swiftui-list-style/ 참조 - listRowSeparator https://sarunw.com/posts/swiftui-list-row-separator-visibility/ 참조- 이미지 확대 축소 https://sarunw.com/posts/how-to-resize-swiftui-image-and-keep-aspect-ratio/ 참조

Mobile/Swift 2025.02.23

Barcode 읽기

일과 관련해서 이미지 중의 Barcode를 자동으로 찾아내서 디코딩하는 라이브러리를 조사해 보았다. *Windows VC++환경(어디까지나 가지고 있는 특정 이미지를 사용)라이브러리결과참고OpenCV (cv::barcode::BarcodeDetector)위치 특정 불가VER 4.80 이상 필요zbar 같은 바코드영역들을  하나로 묶어서 결과 출력 x64 버젼이 필요ZXing같은 바코드영역들이 수평으로 존재하지 않는 한 각각 다른 결과로 출력다운로드  결국 ZXing 을 선택하게 되었다. #include #include "opencv2/opencv.hpp"#include "ReadBarcode.h"#include "BarcodeFormat.h"int main(int argc, char** argv){  ..

opencv 2025.02.23