vuejs 스터디하다 발견한 건데..

흔히 새 창을 띄울 때 위 처럼
<a target="_blank"> 태그 또는 window.open("url"); 
을 이용하는데,
이 경우 새로 열린 창에서 window.opener 로 부모창의 데이터를 읽을 수가 있다.

근데 <a> 에 rel="noopener" 를 지정하는 경우 웹 브라우저가 분리된 프로세스/쓰레드에서 창을 열기 때문에 window.opener 를 통해 접근할 수 없게된다.
추가로 별도의 프로세스/쓰레드로 동작하기 때문에 새 창이 뜨거나, 이벤트 처리로 인한 딜레이가 부모창에는 발생하지 않는다.. (분리돼 있기 때문에 당연한 거라 생각듬)

 

Posted by 김모작자

댓글을 달아 주세요

서버에서 바로 올리는 gitlab 에는 발생 안하는 문제로 보인다..

- docker 에서 실행하면서
- external_url 에 포트 번호가 들어간 경우

에만 발생하고 있다...
external_url 에 http://xxxx:NNNN/ 처럼 포트 번호를 기록하면, gitlab 의 웹 서버가 url 에 있는 포트 번호에 bind 하게 되면서 발생하고 있다. 즉 docker 설정에 있는 컨테이너 포트와 다른 포트에 실행되기 때문에 컨테이너 외부에서 보면 실행이 안되는것처럼 보이게 된다.

그래서 포트를 사용하는 경우 docker 설정에 있는 컨테이너 설정을 같이 바꿔줘야 한다.

 

https://forum.gitlab.com/t/gitlab-docker-not-working-if-external-url-is-set/4110

 

Gitlab docker not working if external_url is set

Hello community, I’ve been struggling for a while with a problem that I’m still unable to solve. Help would be much appreciated! What I did: Install Gitlab-CE using the docker image (8.9.6-ce.0) on an Ubuntu 16.04.1 LTS virtual machine in my server followi

forum.gitlab.com

2016년 게시물인데도 동일한 문제가 생기다니....

 

Posted by 김모작자

댓글을 달아 주세요

1. 보드와 1602 LCD 의 VCC(+), GND(-) 를 연결한다.

  - 연결 전 1602 LCD 의 전압을 사전에 체크한다. 보통 5V, 12V 가 많음.

  - ESP8266, 라즈베리파이 및 일부 Arduino 제품의 경우 3.3v 를 사용한다


2. SDA, SCL 신호선을 연결한다 (I2c, TWI 방식 연결)

  - SDA(DATA선), SCL(타이밍선) 을 연결

  - ESP8266 의 D1 이 SCL, D2 가 SDA 선으로 사용된다 (고정)



3.Arduino LiquidCrystal I2c 라이브러리 설치

  - 첨부된 압축을 Arduino IDE/libraries 안에 설치


4. HelloWorld 실행해보니

  - 5V 1602 LCD 사용시 글자가 잘 안보이기 때문에, 정상 동작을 위해선  level shifter 사용 필요

  - 샘플의 경우 LCD 의 slave 주소로 0x27 을 사용하지만, 간혹 다른 ID 를 사용하는 경우가 있으니 데이터시트 확인 필요

Posted by 김모작자

댓글을 달아 주세요

1) USB 연결하여 드라이버 설치

- CH34x 사용하는 NodeMCU 는 첨부된 파일로 설치 

  

CH341SER.zip

CH341SER_MAC.zip


2) Arduino 에 ESP8266 보드 인식

- Arduino IDE 실행후 [파일] -> [환경설정] 에서 [추가적인 보드 매니져 URL] 에 http://arduino.esp8266.com/stable/package_esp8266com_index.json
입력해주기


3) [툴] -> [보드 매니져]에 가서 ESP8266 으로 검색하여 설치


4) [툴] -> [보드] 로 가서 맞는 보드 선택




Posted by 김모작자

댓글을 달아 주세요

오늘 따라 유난히 

apt-get update
apt-get upgrade 

속도가 느리길래 찾아보니... 속도 관련된 얘기가 많더라...벌써 수년된 문제인것 같은데 해결이 안된다고... 원인은 우분투 한국 미러(kr.archive.ubuntu.com)가 어마하게 늦다는거..

전송 속도 표시에... 모뎀 쓰던 시절 이후 처음으로 "초당 바이트 (CPS)" 속도를 봤다...

이 문제를 해결하기 위해 /etc/apt/source.list 에 있는
- kr.archive.ubuntu.com 을 
- ftp.daumkakako.com 으로 
변경만 하면 끝~ 

daum kakao 외에 kaist, jaist, 등등 이용해도 된다


Posted by 김모작자

댓글을 달아 주세요

사전 정의

- Visual Studio 2017

- MySQL for Visual Studio 1.2.7

- MySQL Connector 6.9.10
Connector 버전이 중요하다!!


프로젝트를 만든 후

1. nuget 으로 아래 컴포넌트를 설치한다

EntityFramework 6.2 (현재 시점 젤 높은 버전)
MySQL.Data 6.9.10
MySQL.Data.Entity.EF6 6.9.10

2. Rebuild 를 수행한다

3. 새 항목(new Item) 추가하여 ADO.net entity data modal 추가


주의 사항!  (이 글을 쓴 목적)

- Entity Data Modeling Wizard 가 사용할 DB 선택 후 넘어갈때 그냥 사라지는 경우가 있다  ==> 위 컴포넌트의 버전을 꼭 일치시켜 준다. 간혹 기존 저장해 준 설정으로 더 이상 접속을 못 하는 경우에도 종료되기 때문에 접속 여부 다시 확인 필요.

- Wizard 에서 MySQL connector 가 안보인다.. ==> MySQL for visual studio 설치부터 다시 해본다. 

- 버전 일치가 중요하고... 드라이버 및 MySQL.Data 추가 후 꼭 Rebuild 해야 적용된다



Posted by 김모작자

댓글을 달아 주세요

comboBox 의 경우 예전에는

var src = 데이터 불러오기 ()...

for(.....){

  combobox.items.add(....);

}

형태로 추가하고 했다... 


근데 닷넷은 

var src = 데이터불러오기~

var dataSource = new BindingSource(src, null);

comboBox.DataSource = dataSource;

comboBox.displayMember = "src 의 표기를 담당하는 property";

comboBox.valueMember = "src 의 값을 담당하는 property";

요렇게 깔끔하게 되더라..

이점/단점을 모르겠다;


Posted by 김모작자

댓글을 달아 주세요

maven 의 package 로 배포용 jar, war 파일을 만들고 나면 꼭 필요한 라이브러리(dependencies) 가 없이 알맹이만 나온다... 이 경우 위 커서 위치에 있는 <plugin> ~~ </plugin> 을 추가해주면 필요한 라이브러리를 전부 포함한 파일을 만들어준다.



Posted by 김모작자

댓글을 달아 주세요

AX40H5000GMD, CFX-2TCD 가 단종되서 그른지 정품 필터 가격이 올라서... 같은 필터를 사용하는 최근 모델을 찾다보니 아래 모델이 나오더라... 아래걸로 사면 정품을 4~5만원대 구입 가능..

CFX-B100D



Posted by 김모작자

댓글을 달아 주세요

  1. je 2017.05.27 14:13  댓글주소  수정/삭제  댓글쓰기

    저도 방금 삼성센터 통해서 호환필터 샀는데요..
    원래껀 적용면적이 41.6인데 이건 39m^2.. 더 적고
    단종된건 한국어,영어 표기인데 얘는 중국어표기..
    뭔가 많이 찝찝하네요ㅜㅜ
    삼성믿고샀는데 손해보는기분..

    • 김모작자 2017.06.29 23:55 신고  댓글주소  수정/삭제

      우와 덧글이다;; ㅠㅠ

      정품이랑 호환필터랑 재질은 같다는데 도통 믿을 수도 없고 해서 정품을 사긴 했습니다..
      근데.. 사실 CFX-B100D 정품 사도.. 원래거랑 같아 보이긴 하는데 필터쪽 색상이라던가.. 뭔가 차이가 있어서...

# GITLAB CE 에 네이버 이메일 설정

sudo /etc/gitlab/gitlab.rb

------------

....

 gitlab_rails['gitlab_email_from'] = '로그인ID@naver.com'
 gitlab_rails['gitlab_email_display_name'] = '표기 이름'
 gitlab_rails['gitlab_email_reply_to'] = '로그인ID@naver.com'

....

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.naver.com"
 gitlab_rails['smtp_port'] = 465
 gitlab_rails['smtp_user_name'] = "로그인ID"
 gitlab_rails['smtp_password'] = "비밀번호"
 gitlab_rails['smtp_domain'] = "naver.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true
 gitlab_rails['smtp_tls'] = true

.....

 gitlab_rails['smtp_openssl_verify_mode'] = 'none'


Posted by 김모작자

댓글을 달아 주세요

Java 에 Open Source 프로젝트를 쓰다보면 늘상격는 예상치 못한 에러..
no java compiler available 
뭐냐 이건..
JDK 경로 지정해줘도 안되고.. 답답 ㅠㅠ

구글링 하다보니
- 런타임을 JDK 로 하면 된다거나
- 뜬금없이 ant 추가하면 된다거나
- ecj 를 추가하면 된다거나.. (다행이 난 이걸로 해결)

마음 같아선 자바 없어졌으면 ...

http://www.mkyong.com/spring-boot/spring-boot-web-jsp-no-java-compiler-available/


Posted by 김모작자

댓글을 달아 주세요

어느 순간 Windows 7 + Internet explorer 에서 Youtube 시청시 FullHD 해상도가 안나오더라...

Chrome 등에서는 잘 나오고..

 

구글 도움말로 봐서는 Windows 7, Windows 8 (8.1 아님) 에서 IE 사용시에 동일 문제가 있을 것 같음..

 

결론은 html5 브라우저 전환 때문에 발생하는걸로 보이며

 

임시 해결을 위해

- 크롬을 사용하거나

- URL 뒤에 &nohtml5=1 를 붙여서 Flash Player 버전으로 보거나

- Windows 8.1 이상으로 업글하거나..

해야 될듯...

 

Windows 10 + Internet explorer/Edge 에서는 잘 돌아감..

 

Posted by 김모작자

댓글을 달아 주세요

C# 에서 GDI+ 사용하여 생성한 이미지를 저장하려니 


System.Runtime.InteropServices.ExternalException (0x80004005): GDI+에서 일반 오류가 발생했습니다.

   위치: System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)

   위치: [xxxxxxx].[xxxx](Entry entry)


위와 같이 80004005 에러가 생기기도 하고, 


메인 쓰레드에 잘 쓰던 기능을 내가 만든 다른 타 쓰레드에서 호출, File 접근, 기록 할 때 마다 Access Denied (= Win32 에 5번 코드)  가 발생했다면 ...


ACL 권한 때문에 분명 Impersonate 시켜서 시작했는데....

분명 메인 쓰레드(=시작 쓰레드)에서는 별 문제 없던 코드였는데

자식 스레드에서 위 에러가 발생한다면

해당 쓰레드가 Impersonate 되지 않았기 때문이다..


그 문제가 되는 쓰레드 생성할 때 원래 쓰레드의 정보를 넘겨주면 해결된다는 거..

즉, Impersonation 은 쓰레드간 (자동으로) 공유되지 않는다는 점.


아래 func 함수에서 쓰레드 생성하는것처럼 Impersonation 정보를 주고 받고 해야함..

자식 쓰레드)

void ThreadProc(object obj){


var identity = (WindowsIdentity) obj;


using(var impersonation = identity.Impersonate()){


// 원래 코드


}

}


부모 쓰레드)


void func(){


Thread thread = new Thread(new ParameterizedThreadProc(WindowsIdentity.GetCurrent() ));


// .....

}


예제라서 WindowsIdentity 이고,, 상황에 따라 적절한 Identity 를 사용하면 될듯...


Posted by 김모작자

댓글을 달아 주세요

과거에는 Oracle ODP.net 을 사용하려면 Instant Client 가 필요했었다.

Instant Client 는 C 로 빌드된것으로 아키텍쳐에 따라 구분해서 사용했는데

이번에 다른 프로젝트를 만들다보니 새 버전이 나왔더라..

완전히 .net 으로 코딩된 새버전!



일단 아래 처럼 흔하디 흔한 시작 문자열을 가지고 시작했는데


using Oracle.ManagedDataAccess.Client;

....

....

        public OracleConnector(CONNECT_INFO info)
        {
            string src = string.Format("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={3}))(CONNECT_DATA=(SERVICE_NAME={4})));User Id={1};Password={2};", info.IP, info.LoginID, info.LoginPWD, info.PORT, info.ServiceID);
            con = new OracleConnection();
            con.ConnectionString = src;
            con.Open();
        }



자꾸

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): Oracle 통신: 서버에 접속하는 데 실패했거나 접속 문자열을 구문 분석하는 데 실패했습니다. ---> OracleInternal.Network.NetworkException (0x80004005): Oracle 통신: 서버에 접속하는 데 실패했거나 접속 문자열을 구문 분석하는 데 실패했습니다. ---> System.Security.Authentication.AuthenticationException: SSPI를 호출하지 못했습니다. 내부 예외를 참조하십시오. ---> System.ComponentModel.Win32Exception: 보안 패키지에 사용할 수 있는 인증서가 없습니다


에러가 나더라..

실제로 위와 같은 상황에서는 sqlplus 로 하면

ORA-12638: 신용 검색에 실패했습니다



주로 해당 PC 에 오라클이 기본 상태로 설치된 경우에 발생하는것 같다..


-------------------------

해결 방법 --->


1. 독립적인 환경 구성을 위해 TNS 관리자 경로를 자기 자신으로 설정한다

   app.config 또는 web.config 에 ManagedDataAccess 모듈을 nuget 으로 설치했다면 자동으로 생성됐을거임.. 아래처럼 경로만 추가로 써주면 된다

  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <!--<dataSource alias="ExtOracle" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxxxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=eeee))) "/> -->
      </dataSources>
      <settings>
        <setting name="TNS_ADMIN" value="." />
      </settings>
    </version>
  </oracle.manageddataaccess.client>


2. sqlnet.ora 파일 생성


sqlnet.authentication_services=(none)
NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)

SSPI 관련 문제는 위에줄에 있는 내용으로 커버가 되며, 아래 내용으로 EzConnect 형태로 접속 문자열을 사용할 수 있음. 이미 오라클 설치중이라면 admin 폴더에 찾아가서 변경하면 된다

참고로 이 파일을 만든 후 파일 속성(Properties, Alt+F4)에 가서 "Overwrite if newer" 또는 "Copy Always" 를 선택해서 빌드된 경로로 복사되도록 한다

Posted by 김모작자

댓글을 달아 주세요

PPAS (PostgreSQL Advanced Server)에서

select - update 또는 select - delete 하는 경우 아래와 같이 트랜젝션이 겹칠 수 있다



보통 MySQL 등에선 Isolation Level 을 Serializable 로 설정 후 Select 한 대상을 Update 해서

우의 상황을 해결하는데

PPAS 에서 위와 같이 Transaction 을 처리하는 경우

could not serialize access due to concurrent update

예외가 발생할 수 있다.

 

보통 MySQL 등에서는 Serializable 상태에서 Select 하면 해당 테이블에 잠금이 생기지만

PPAS 에서는 Update 하면서 잠기기 때문인데,

1) Update 한게 다른 쓰레드(진입)에서 Select 에서 blocking 되지 않고

2) Update 된 걸 다시 Update 한 꼴이 되면서

3) 에러가 발생된다

 

PPAS 에서는 그래서

--> Isolation 설정 없이, Select ~ for update 로 데이터 추출 후, Update 를 하면 된다

--> 단 서비스의 @Transactional 이 붙은 함수 내에서 모든 처리가 끝나야 한다.

--> 단일 트랜젝션간에만 update 잠금이 발생하기 때문

 

 

추가로

PPAS 에서도 Select 에 Limit 을 사용할 수 있는데

Select * from src limit 1;

위의 경우 MySQL 에서는 src 의 clustered index, 특정 index 에 의해 일관된 순서대로 추출되지만

PPAS 에서는 order by 없이 limit 사용시 임의의 순서대로 추출된다

==> 일관된 순서가 필요시 order by 를 추가해서 사용하도록 한다

==>  order by 없을 시 랜덤하게 나오는건 버그라 아니라고 PPAS 문서에 명시돼 있음 (PPAS 뿐만 아니라 PostgreSQL 특성인듯)

 

Posted by 김모작자

댓글을 달아 주세요

Oracle 클라이언트로 많이 사용하는

SQL Developer (4.x 기준) 에서는 기본적으로 'DATE' 데이터형을 YYYY-MM-DD 등 날짜 부분만 표시한다. 그러나 Oracle 는 날짜, 시간을 Date 형식으로 표현하기에 HH:MM:SS 등을 표시해야 한다


날짜 부분을 표시하기 위해

도구 -> 환경설정 메뉴에 들어가

[데이터 베이스] 의 [NLS] 페이지에 들어가서

날짜 형식에 YYYY/MM/DD HH24:MI:SS 등 입력해 두면

시간을 볼수 있다.




Posted by 김모작자

댓글을 달아 주세요

Jenkins CI 의 스크립트 콘솔에서 명령어 보낼 때

간혹 중간에 | (pipe) 가 있으면, 자체 내장(?) 언어인 groovy script 때문에 
실행이 안되는 문제가 있다. ( 정확히는 결과에 아무 것도 안나온다.. )


흔히 자주 쓰는 ps -ef | grep XXXX 의 경우 아래처럼 표현이 가능하다.

proc1 = "ps -ef".execute()
proc2 = "grep XXXX".execute()
 all = proc1 | proc2


println all.text


Posted by 김모작자

댓글을 달아 주세요

MySQL 5.5 기준.


1) MySQL 설정 변경

MySQL 설치 후

netstat -anlp | grep 3306

으로 LISTEN 중인 MySQL Instance 를 보면 127.0.0.1 에 Bind 를 하고 있다.

이 상태에서 외부에선 접속을 못한다.

/etc/mysql/my.cnf

위 파일을 vi, nano 로 열어보면

bind-address 에 127.0.0.1 가 설정돼 있다.

이 줄을 앞에 # 을 붙여 주석 처리한 후에

service mysql restart

로 MySQL 서비스를 재시작 하도록 한다.


2) 계정 설정

보통 검색해 보면

GRANT ALL PRIVILEGES ON *.* to 'LoginID'@'%' IDENTIFIED BY 'password';

이렇게 계정에 모든 권한을 주고 있으나

정확히는 뒤에 % 가 핵심이다.

any 로 접속하는 LoginID 에 모든 권한을 주라는건데, 모든 권한을 줄 필요는 없다. !!!


3) 고려할 부분

실제 DB 를 외부에서 접속되게 할 필요는 없다고 본다.

bind address 를 private ip 나 아예 127.0.0.1 로 바꿔서 접속을 차단하도록 한다.




Posted by 김모작자

댓글을 달아 주세요

Spring Boot 프로젝트를 만든 후 JSP 를 쓰려면

1) jstl, tomcat-embed-jasper 추가

2) application.properties 에

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

3) jsp 위치

src/main/webapp/WEB-INF/jsp

여기에 JSP 파일 위치하도록, 나머지 css, js 파일 등은 static 에 위치시키면 될듯..


4) non-jsp, html, css 등 파일 위치

index.html 를 예를 들면

src/main/resources/META-INF/resources/index.html
src/main/resources/resources/index.html
src/main/resources/static/index.html
src/main/resources/public/index.html


참고 URL :

https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot

https://www.leveluplunch.com/java/tutorials/003-getting-started-with-spring-boot/

Posted by 김모작자

댓글을 달아 주세요

Windows 10 깔고 며칠 잘 쓰고 있었는데....

어느날인가.. 모니터만 꺼두고 잠시 나갔다 와서 다시 모니터를 켰더니

생뚱맞게 화면 해상도가 640x480 해상도로 변경돼 고정이 되는 문제가 생겼다. 재부팅 해도 계속 640x480..

장치관리자에 VGA 도 잘 잡혀있는데...


일단 원천적인 해결은 아니고,

DisplayPort 포트 케이블을 뺏다가 다시 꼽으니 해결됐다


Posted by 김모작자

댓글을 달아 주세요