apt-get update
모든 패키지 목록을 갱신
apt-get upgrade
모든 패키지를 최신 버전으로 업그레이드
apt-get install 패키지명
패키지를 설치
apt-get remove 패키지명
패키지를 삭제(설정파일 미삭제)
apt-get purge 패키지명
패키지를 삭제(설정파일 삭제)
apt-cache search 패키지명(또는 일부)
패키지 검색
WRITTEN BY
apt-get update
모든 패키지 목록을 갱신
apt-get upgrade
모든 패키지를 최신 버전으로 업그레이드
apt-get install 패키지명
패키지를 설치
apt-get remove 패키지명
패키지를 삭제(설정파일 미삭제)
apt-get purge 패키지명
패키지를 삭제(설정파일 삭제)
apt-cache search 패키지명(또는 일부)
패키지 검색
조직에 인터넷 트래픽 송수신을 제한하는 방화벽이 있으면 모바일 기기의 FCM 연결을 허용하도록 구성해야 네트워크의 기기에서 메시지를 수신할 수 있습니다. FCM은 대개 포트 5228을 사용하지만 5229 및 5230을 사용하는 경우도 있습니다.
발신 연결의 경우 Google IP 범위가 매우 자주 변경되며 개발자의 방화벽 규칙이 오래되면 사용자 경험에 영향을 줄 수 있으므로 FCM에서 특정 IP를 제공하지 않습니다. IP 제한 없이 포트 5228~5230을 허용하는 것이 가장 좋습니다. 하지만 IP 제한이 있어야 한다면 Google ASN 15169에 나와 있는 IPv4 및 IPv6 블록의 모든 IP 주소를 허용해야 합니다. 목록의 크기가 크며 규칙을 매월 업데이트하도록 계획을 세워야 합니다. 방화벽 IP 제한으로 인해 발생하는 문제는 보통 간헐적이며 진단하기 어렵습니다.
수신 메시지용으로 열어야 하는 포트:
발신 연결을 허용하는 포트:
다음 중 하나(1번 옵션 권장):
https://firebase.google.com/docs/cloud-messaging/concept-options?hl=ko
mac 리셋 (0) | 2018.08.14 |
---|---|
Apache Camel VS Spring Integration (0) | 2018.01.24 |
iOS push message 버전별 변경 이력 (0) | 2018.01.12 |
맥 숨김파일보기 (0) | 2017.04.04 |
[HTML5] Application Cache (0) | 2017.03.31 |
mysql 이미지 다운
docker pull mysql
or
docker pull mysql:5.7
$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
0a4690c5d889: Pull complete
98aa2fc6cbeb: Pull complete
0777e6eb0e6f: Pull complete
2464189c041c: Pull complete
b45df9dc827d: Pull complete
b42b00086160: Pull complete
bb93567627c7: Pull complete
bda91ab2ec35: Pull complete
50b4c0c50b33: Downloading [=============> ] 24.73MB/89.55MB
70c2999bc788: Download complete
3cf3e568e51b: Download complete
이미지 확인
docker images
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2151acc12881 8 days ago 445MB
컨테이너 실행
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name doc-mysql -v /Users/mysql:/var/lib/mysql mysql
-d : 백그라운드 모드
-p : 포트포워딩 (호스트:컨테이너)
-e : 컨테이너 환경변수
-v : 디렉터리 마운트 (호스트:컨테이너)
--name : 컨테이너명
$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name doc-mysql -v /Users/mysql:/var/lib/mysql mysql
2cadf7a0d90ed7a17bad3806a0138a4f3d53c5c1eabd4a63b3f3ee48e06b05e0
컨테이너 확인
docker ps -a
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2cadf7a0d90e mysql "docker-entrypoint.s…" 41 seconds ago Up 39 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp doc-mysql
https://projectlombok.org/download
다운로드 받은 jar 파일을 실행한다.
이클립스등 실행파일을 선택해주고 install
프로젝트에
compileOnly('org.projectlombok:lombok')
추가 maven은 maven 방식으로
사용될 model 객체에
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper=false)
@Data
추가
이제 별도의 get set없이 바로사용!
virtualBox 6.0 in ubuntu ssh 연결 설정 (0) | 2019.03.26 |
---|---|
Enable sudo without a password on MacOS (0) | 2019.03.25 |
mac os 외부앱 허용하기 (0) | 2018.08.01 |
Let's Encrypt 세팅 (0) | 2017.11.02 |
MAC 퀵룩플러그인 설치 (0) | 2017.10.19 |
젠킨스 노드 추가 중 인증관련 내용 중 launch agent agents via SSH를 선택하여 등록하는데
노드의 인증이 실패하는 경우
먼저 master에서 ssh-keygen 명령으로 rsa key를 생성하고
master의 id_rsa.pub의 내용을 node의 authorized_key 파일에 등록하여
패스워드 없이 ssh 접근이 가능하도록 해야하며
launch agent agents via SSH 게서 사용될 인증정보에 master 의 id_rsa내용을 등록해준다
먼저 ubuntu에 ssh server가 설치 되어있는 확인함
ssh localhost
설치되지 않은경우 설치
sudo apt-get install openssh-server
virtualBox 로 돌아가서 Tools를 선택
햄버거 메뉴를 클릭하여 네트워크 선택
Create 선택하면 자동으로 생성됨
설치된 ubuntu 인스턴스 선택
ubuntu 인스턴스의 설정 선택
네트워크 탭 선택
(어댑터1은 수정하지 않습니다 수정할경우 ubuntu에서 외부망 접속이 불가함.)
어댑터2를 아래와같이 선택
(어댑터2가 선택되지 않는경우 해당 인스턴스를 종료시켜야 함.)
ubuntu에서 ifconfig 확인후 ssh접속
lombok 써보기 (0) | 2019.06.27 |
---|---|
Enable sudo without a password on MacOS (0) | 2019.03.25 |
mac os 외부앱 허용하기 (0) | 2018.08.01 |
Let's Encrypt 세팅 (0) | 2017.11.02 |
MAC 퀵룩플러그인 설치 (0) | 2017.10.19 |
shell script 작성시 sudo 를 사용해야 할때 암호를 사용안하게 하려면
터미널 창에서 sudo visudo를 실행하여
username ALL = NOPASSWD: ALL
위와같은 내용을 추가해 주면 끝
사용자 이름을 확인하는 방법은 whoami 로 확인 가능
다른 방법으로는
echo 암호 | sudo -S 명령어
lombok 써보기 (0) | 2019.06.27 |
---|---|
virtualBox 6.0 in ubuntu ssh 연결 설정 (0) | 2019.03.26 |
mac os 외부앱 허용하기 (0) | 2018.08.01 |
Let's Encrypt 세팅 (0) | 2017.11.02 |
MAC 퀵룩플러그인 설치 (0) | 2017.10.19 |
SMC 리셋 방법
shift, control, option, 전원
NVRAM 리셋 방법
command(⌘), option, P, R
안전시동
Shift
FCM 사용을 위한 포트 및 방화벽 정보 (0) | 2019.08.22 |
---|---|
Apache Camel VS Spring Integration (0) | 2018.01.24 |
iOS push message 버전별 변경 이력 (0) | 2018.01.12 |
맥 숨김파일보기 (0) | 2017.04.04 |
[HTML5] Application Cache (0) | 2017.03.31 |
mac 외부에서 다운로드한 앱실행시
일부, 앱이 손상되었다고 출력되는 경우
appstore나 확인된 개발자가 아닌경우가 있다
이경우 보안 및 개인정보 보호설정 화면에서
앱허용을 체크해주어야하는데
high sierra같은경우 '모든곳'이 표시조차 되지않는다.
이경우 터미널에...
'sudo spctl --master-disable'
virtualBox 6.0 in ubuntu ssh 연결 설정 (0) | 2019.03.26 |
---|---|
Enable sudo without a password on MacOS (0) | 2019.03.25 |
Let's Encrypt 세팅 (0) | 2017.11.02 |
MAC 퀵룩플러그인 설치 (0) | 2017.10.19 |
[Ubuntu] - install jdk8 (oracle) (0) | 2017.03.29 |
두 프레임 워크는 모두 동일한 목표를 공유합니다.
중재, 라우팅, 프로토콜 적응과 같은 일반적인 통합 작업을 구현하기위한 사용하기 쉬운 메커니즘을 제공합니다. 작은 설치 공간과 오버 헤드로 눈에 띄지 않는 방식으로 기존에 임베딩 할 수 있습니다. 애플리케이션 인프라. 기본적으로 JMX를 통한 기본 관리 지원뿐만 아니라 상당한 양의 전송 어댑터등의 구현.
기능적 관점에서 볼 때 두 프레임 워크는 상당히 동일합니다.
Apache Camel은 2007 년에 버전 1.0으로 출시되었습니다. 버전 1.0부터 Java XML뿐만 아니라 Java DSL과 Spring XML을 기반으로 만들어진 XML DSL이 함께 제공됩니다. 현재 버전 까지 다양한 언어로 추가 DSL이 있습니다.
Spring Integration은 2 년 후, 2009 년에 버전 1.0.0에서 발표되었습니다. Spring 계열의 일부이기 때문에 XML 기반 구성이 처음에는 유일한 선택 이었지만 최근부터 Spring Integration은 Java DSL을 제공합니다.
하나의 특정 구문이 다른 구문보다 우수하다고 주장 할 수 있지만, 이는 개인적인 취향의 문제 일뿐입니다. 더 흥미로운 것은 의미론적 차이입니다. 여기 미묘하면서도 Apache Camel과 Spring Integration의 중요한 차이점이 있습니다. 표현력은 거의 같지만 Spring Integration DSL은 채널, 게이트웨이 등 하위 수준의 EIP를 노출합니다. Camel DSL은 통합의 의도에 더 중점을 두는 것처럼 보입니다 . 통합 코드는 일반적으로 작성된 것보다 더 자주 읽혀 지기 때문에 의사를 명확하고 간결하게 전달할 수있는 능력이 핵심적인 차별 요소입니다.
Spring Integration과 Apache Camel 샘플 코드를 살펴보면
Spring Integration은 다음과 같습니다 :
@MessagingGateway
public interface Cafe {
@Gateway(requestChannel = "orders.input")
void placeOrder(Order order);
}
private AtomicInteger hotDrinkCounter = new AtomicInteger();
private AtomicInteger coldDrinkCounter = new AtomicInteger();
@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata poller() {
return Pollers.fixedDelay(1000).get();
}
@Bean
public IntegrationFlow orders() {
return f -> f
.split(Order.class, Order::getItems)
.channel(c -> c.executor(Executors.newCachedThreadPool()))
.<OrderItem, Boolean>route(OrderItem::isIced, mapping -> mapping
.subFlowMapping("true", sf -> sf
.channel(c -> c.queue(10))
.publishSubscribeChannel(c -> c
.subscribe(s ->
s.handle(m -> sleepUninterruptibly(1, TimeUnit.SECONDS)))
.subscribe(sub -> sub
.<OrderItem, String>transform(item ->
Thread.currentThread().getName()
+ " prepared cold drink #"
+ this.coldDrinkCounter.incrementAndGet()
+ " for order #" + item.getOrderNumber()
+ ": " + item)
.handle(m -> System.out.println(m.getPayload())))))
.subFlowMapping("false", sf -> sf
.channel(c -> c.queue(10))
.publishSubscribeChannel(c -> c
.subscribe(s ->
s.handle(m -> sleepUninterruptibly(5, TimeUnit.SECONDS)))
.subscribe(sub -> sub
.<OrderItem, String>transform(item ->
Thread.currentThread().getName()
+ " prepared hot drink #"
+ this.hotDrinkCounter.incrementAndGet()
+ " for order #" + item.getOrderNumber()
+ ": " + item)
.handle(m -> System.out.println(m.getPayload()))))))
.<OrderItem, Drink>transform(orderItem ->
new Drink(orderItem.getOrderNumber(),
orderItem.getDrinkType(),
orderItem.isIced(),
orderItem.getShots()))
.aggregate(aggregator -> aggregator
.outputProcessor(group ->
new Delivery(group.getMessages()
.stream()
.map(message -> (Drink) message.getPayload())
.collect(Collectors.toList())))
.correlationStrategy(m ->
((Drink) m.getPayload()).getOrderNumber()), null)
.handle(CharacterStreamWritingMessageHandler.stdout());
}
}
여기에는 꽤 많은 세부 사항이 있습니다. 하지만 요점은 게이트웨이 및 채널을 상위 레벨 EIP를 구현하는 데 사용하는 것입니다.
반대로Apache Camel은 기술 도메인보다 "비즈니스"에 더 가까운 어휘를 사용하여 상위 EIP에 중점을 둡니다.
public void configure() {
from("direct:cafe")
.split().method("orderSplitter")
.to("direct:drink");
from("direct:drink").recipientList().method("drinkRouter");
from("seda:coldDrinks?concurrentConsumers=2")
.to("bean:barista?method=prepareColdDrink")
.to("direct:deliveries");
from("seda:hotDrinks?concurrentConsumers=3")
.to("bean:barista?method=prepareHotDrink")
.to("direct:deliveries");
from("direct:deliveries")
.aggregate(new CafeAggregationStrategy())
.method("waiter", "checkOrder").completionTimeout(5 * 1000L)
.to("bean:waiter?method=prepareDelivery")
.to("bean:waiter?method=deliverCafes");
}
합의한 두 예제는 직접 비교할 수 없습니다.
하지만 접근 방식의 근본적인 차이가 분명히 드러났습니다.
Spring Integration과 Apache Camel은 잘 설계되고 매우 능력있는 경량 통합 프레임 워크입니다. 기능 측면에서 보았을 때, 그들은 어느 정도 평등합니다. 그 중 어떤 것도 제가 현재 일하고있는 과제에서 탁월한 선택이 될 것입니다. 그러나 저처럼 선택의 여지가있는 사람이라면 Apache Camel DSL의 의미 론적 표현력, 특정 통합 흐름의 의도를 명확하게 전달할 수있는 능력이 중요한 경쟁력이라고 생각합니다.
원문
http://callistaenterprise.se/blogg/teknik/2015/10/12/apache-camel-vs-spring-integration/
FCM 사용을 위한 포트 및 방화벽 정보 (0) | 2019.08.22 |
---|---|
mac 리셋 (0) | 2018.08.14 |
iOS push message 버전별 변경 이력 (0) | 2018.01.12 |
맥 숨김파일보기 (0) | 2017.04.04 |
[HTML5] Application Cache (0) | 2017.03.31 |