'분류 전체보기'에 해당되는 글 195건

ajax 통신

자바(Spring) 2020. 9. 6. 16:58
A라는 서비스에서 스크래핑해서

JSON 파일 저장후 

C라는 레포팅 서비스로 JSON파일 경로를 던저주는걸 개발중이다.

nodejs면 비동기로 때리면 끝나는데
스프링이니  ajax에 대한 결과를 alert이나 console.log밖에 안들어 온다

파일다 저장한 뒤에 페이지를 호출 해야된다.
 



JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

newFile zzzzzzzzzzz




<form id="add-form" action="" method="post">

<input id="input-submit" type="submit" value="보내기" />


 </form>


<script>

$("#add-form").submit( function(event){

   

         $.ajax({

        type: "GET", 

        url:"/insert.do",

        dataType:"text", 

        success : function(result){

        alert(result);

        location.href = "http://localhost?result=" +result;   

        },

        error : function(a, b, c){

        alert(a + b + c);

        }

})

});

</script>



</body>

</html>



컨트롤러 


/*

 * Copyright 2008-2009 the original author or authors.

 *

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *      http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

package egovframework.example.sample.web;


import java.io.FileReader;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import egovframework.example.sample.service.EgovSampleService;

import egovframework.example.sample.service.LombokVO;

import egovframework.example.sample.service.SampleDefaultVO;

import egovframework.example.sample.service.SampleVO;


import egovframework.rte.fdl.property.EgovPropertyService;

import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;


import javax.annotation.Resource;


import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.ui.ModelMap;

import org.springframework.validation.BindingResult;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.support.SessionStatus;

import org.springmodules.validation.commons.DefaultBeanValidator;

import org.json.simple.JSONArray;

import org.json.simple.JSONObject;

import org.json.simple.parser.JSONParser;

import org.json.simple.parser.ParseException;



@Controller

public class EgovSampleController {

@RequestMapping(value = "/jsonList.do")

public String jsonList(SampleVO sampleVO) throws Exception {


System.out.println("jsonList : " );

return "sample/NewFile";

}


@ResponseBody

@RequestMapping("/insert.do")

public String insert() {

System.out.println("insert");

return "aaaaaaaaaaaaaaaaaaaa";

}

}



바쁘니간 우선 돌아가게 만들어 놓고

나중에 코드 보수 좀 해야곘다.



'자바(Spring)' 카테고리의 다른 글

AsyncRestTemplate Spring boot 비동기  (0) 2021.02.09
JSON 파일 파싱 스프링 java VO저장  (0) 2020.08.29
블로그 이미지

iesay

,

 

개발환경 : egov3.9

 이디러리움 샘플을 가지고 왔다.

nodejs는 자바스크립트 기반이니   json파싱은 일도 아닌데 ㅎㅎㅎ

스프링에서는 경험이 적다보니 시간이 좀 걸렸다

 

공유겸 정리해 놓을려구 한다.

 

해당 트렌젝션의 result값을 VO에 집어 넣고

출력하는 부분을 만들 예정이다.

 

 

ethscan.json 이더리움 송금 트랜젝션

 {
 "status":"1",
 "message":"OK",
 "result":[
  {
   "blockNumber":"4473164",
   "timeStamp":"1542787987",
   "hash":"0xac86d44f53a22e4b12853f5f8234f95b831e1521694c4072fd6a97b219ec3cb7",
   "nonce":"17012682",
   "data": {
    "blockHash":"0x4ee9b9d29f78f7aab230613f8827e9e070d5b60b2cd06d61e83b17aaaa5b1e67",
    "transactionIndex":"54",
    "from":"0x81b7e08f65bdf5648606c89998a9cc8164397647",
    "to":"0xff0797d06e8f9897b1d5066c10d9497ed7054a47"
   },
   "Price": [
    {
     "value":"1000000000000000000",
     "gas":"21000",
     "gasPrice":"1000000000"
    },
    {
     "value":"1000000000000000000",
     "gas":"21000",
     "gasPrice":"1000000000"
    },
    {
     "value":"1000000000000000000",
     "gas":"21000",
     "gasPrice":"1000000000"
    }
   ]
  }
 ]
}

 

 

Json 파싱은 이상한거 쓰지말고 org.json.simple 쓰는게 가장 좋다

pom.xml에 추가 하고

<dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
 </dependency>

 

 

 

VO

package egovframework.example.sample.service;

import java.util.List;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;


@Getter
@Setter
@ToString
public class LombokVO {
 


    private String blockNumber;
    private String timeStamp;
    private String hash;
    private String nonce;
    private String blockHash;
    private String transactionIndex;
    private String from;
    private String to;

   
    public Data data;
    class Data{
     private String blockHash;
     private String transactionIndex;
     private String from;
     private String to;
    }
    
    
    public List<Price> Price;
    
    class Price{
     private String value;
     private String gas;
     private String gasPrice;
    }  
}


 

 

 

컨트롤러

package egovframework.example.sample.web;

import java.io.FileReader;
import java.util.List;

import egovframework.example.sample.service.EgovSampleService;
import egovframework.example.sample.service.LombokVO;
import egovframework.example.sample.service.SampleDefaultVO;
import egovframework.example.sample.service.SampleVO;

import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
import org.springmodules.validation.commons.DefaultBeanValidator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;


@Controller
public class EgovSampleController {
 
 
 @RequestMapping(value = "/jsonList.do")
 public String jsonList(SampleVO sampleVO) throws Exception { 
 Object jsonVO = new LombokVO();
 
   
    JSONParser jsonParser = new JSONParser();
    JSONObject jsonObject = (JSONObject) jsonParser.parse(new FileReader("C:\\work-space\\json-test\\jsonsample\\ethscan.json"));

 
    jsonVO =jsonObject.get("result");
   
   
   
 //System.out.println("");
 System.out.println("jsonList : " + jsonVO);
 
 return null;  
 } 

}

 

배열 형식일때는 Array로 VO클래스를 만들고

Object 형식일때는 List로 VO로 만들면 된다.

 

그 뒤로는 알아서 잘 밖힌다.

접근 할때는 일반 클래스 처럼 . 사용하여 접근하면 된다. 

 

 

'자바(Spring)' 카테고리의 다른 글

AsyncRestTemplate Spring boot 비동기  (0) 2021.02.09
ajax 통신  (0) 2020.09.06
블로그 이미지

iesay

,

라디오 버튼 제이쿼리

2020. 8. 24. 15:16

출처 :

https://codepen.io/jaehee/pen/PZKeRy

 

 

<style>
body {margin: 30px;}
body * { margin: 0; padding: 0;}
a {text-decoration: none;}
ul {list-style: none}
li.selected  { width: 500px; background-color: #ddd;}

</style>

<h1>First UL</h1>
<ul id="uldata">
    <li id="lidata"><a href="#none">Lorem ipsum dolor sit amet.</a></li>
    <li id="lidata"><a href="#none">Lorem ipsum dolor sit amet. Lorem ipsum dolor.</a></li>
    <li id="lidata"><a href="#none">Lorem ipsum dolor sit amet.</a></li>
    <li id="lidata"><a href="#none">Lorem ipsum dolor sit amet. Lorem ipsum dolor.</a></li>
</ul>
<br/>
<br/>

 

 

 

<script type="text/javascript">
(function(global, $){
    'use strict';

    var plugin = 'radioClass';
    $.fn[plugin] = $.fn[plugin] || function(className, context) {

            context = context || '';
            var _this = context ? this.closest(context) : this;
            _this.addClass(className);

            var $siblings = _this.siblings();
            $.each($siblings, function(index, item) {
                var _$sibling = $siblings.eq(index);
                if ( _$sibling.hasClass(className) ) {
                    _$sibling.removeClass(className);
                }
            });
            // jQuery 체이닝을 위한 this 반환 설정
            return this;

        }; // 끝: $.fn.radioClass

})(window, window.jQuery);

$(function () {
 console.log($(this.$ul));
    // 접근성을 위해 a 를 클릭하도록 합니다. (탭 포커스 이동시를 고려)
    var $ul = $('ul#uldata');
    $ul.on('click','li#lidata a', function (e) {

        e.preventDefault();
        // a 에 selected 가 되지 않도록 radioClass context 를 li 로 설정
        $(this).radioClass('selected', 'li');
    })
});
</script>

'' 카테고리의 다른 글

ubuntu nginx php mysql 구축  (0) 2021.03.03
DB튜닝 테이블에 데이터가 많은 경우  (0) 2021.01.31
GS인증(보안성)  (7) 2020.04.13
express + morgan  (0) 2019.04.01
promise  (0) 2019.03.28
블로그 이미지

iesay

,

 

 제가 지금 작성한 글은 정답이 아니고 제가  개인적으로 생각하는

여러가지 방법론 중 하나입니다.

 

기본키 : Database  유일키

Private Key : 블록체인상 전자서명을 할수 있는 개인키

 

 

 

수많은 블록체인 회사에서 DID(탈중앙화된 신원식별 시스템) ,

Decentralized Identity 금융사나 통신사 포털 여러 회사에서 진행하고 있다.

기존 공인인증서 방식과 장, 단점을 비교 해보고

거기에 대한 대안을 제시 해볼려구 한다.

 

 항목

공인인증서 

DID(Decentralized Identity)

 RooT CA

필요함 

없슴 

복구방법 

재발급 가능 

 탈중앙화 : 백업(리모닉, 키스토어,PK) 가능

 중앙화 : 키스토어 일괄 저장

 신규 생성   

이력 연계

가능 

 백업 경우 (O)

 신규 생성  (X)

용도

 금융서비스

 신분증, 증명서 발급

 

여기서 가장 중요하게 생각해야 되는 부분이 DID용도가 금융 서비스가 아닌 경우다.

아이핀이나 모바일 인증을 통해서 실명 인증을 하면 CI값이 나온다.

주민번호를 대체한 해쉬 결과인 유일한 값이다. 

우리나라에서는 주민번호, 실명을 변경하면 당연히 CI값도 변경이 된다.

 

DID서비스를 하는 경우 Database  기본키는 무엇을 사용해야 되나 ?

수많은 회사가 여기에 대해 고민을 하고 복구 절차에 대해서 고민 하다보면 답이 없다.

 

휴대폰을 분실 할수도 있고 파손될 우려도 있다.

가장 현실적인 대안은 금융관련 서비스가  아니기 때문에 신규 발급이 가능 하게 하면된다. 

 

휴대폰번호를 통한 실명인증과 메일인증 둘다 받으면 DID private key가 없더라도 강제로 탈퇴시키면 된다. 

 

휴대폰을 분실하고 바뀐번호로 가입한 경우는 방법이 없다.

본인이 예전 번호를 잠시 변경해야지 가능하다.

 

예시) DID 회원정보 테이블

칼럼명

특징

 블록체인 지갑주소

 기본키(서비스 중 세션에 저장)

 이름

 

 생년월일

 

 휴대폰번호 

 유일키 (탈퇴시 auth)

 CI값

 주민번호 대체 유일키 아님 

 이메일 주소

 탈퇴시 auth

 스마트컨트렉주소

 계정당 1개식 LevelDB 데이터기록 

※모바일 Trust Zone 블록체인 private key를 보관한다

생체 정보가 바뀌더라도 모바일 auth통해서 변경한다.

 

이렇게 서비스 하면 한 사람이 번호가 10개면 10개의 계정 생성이 가능하다.

동일한 CI라도   휴대폰 번호를 만들때 오프라인에서 신분증 대조를 받았기 때문에

허용을 해줘도 된다.

 

지갑주소가 다르고 동일한 CI에 대해서 데이터  연계는 되지 않는다.

모든 서비스나 데이터이력은 지갑주소가 작성자와 동일해야지  스마컨트렉

LevelDB의 접근 권한이 생긴다.

 

DID와 공인인증서의 차이는 전자서명하는 주체(Root CA)가 내가 되는건가

아니면 Root CA기관이 되는것인가 그 차이가 가장 크다.

기술적인 PKI기반은 둘다 비슷비슷하다.

 

DID에 금융 서비스가 없이 온라인신분증 용도로만 쓰는 경우 위와

같은 설계가 가능 하지만

금융서비스를 시행 한다면 구조가 완전 바뀌게 된다.

 

 

 

 

블로그 이미지

iesay

,

출처 : https://askubuntu.com/questions/1106795/ubuntu-server-18-04-lvm-out-of-space-with-improper-default-partitioning

 

우분투 No space left on device

당황하지 말고 LVM에서 / 파티션을 재설정하도록 실행한다.

 

# We need to resize the logical volume to use all the existing and free space of the volume group
$ lvm
lvm
> lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
lvm
> exit

# And then, we need to resize the file system to use the new available space in the logical volume
$ resize2fs
/dev/ubuntu-vg/ubuntu-lv
resize2fs
1.44.1 (24-Mar-2018)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks
= 1, new_desc_blocks = 58
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 120784896 (4k) blocks long.

# Finally, you can check that you now have available space:
$ df
-h
Filesystem                         Size  Used Avail Use% Mounted on
udev                              
3.9G     0  3.9G   0% /dev
tmpfs                             
786M  1.2M  785M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  454G  3.8G  432G   1% /

'시스템' 카테고리의 다른 글

Configuring tzdata Dockerfile  (0) 2021.07.27
방화벽 설정  (0) 2020.10.26
gitlab 설치  (0) 2020.04.07
vscode , 버추얼박스  (0) 2019.11.05
버추얼박스 VT-x is not available 오류  (1) 2019.07.18
블로그 이미지

iesay

,

cosmos-sdk-js

블록체인 2020. 4. 29. 09:29

https://github.com/cosmos/cosmos-sdk-js


이더리움의 web3.js 같이 잘되면 좋겠다.


git clone https://github.com/cosmos/cosmos-sdk-js.git

 



root@tkpark:~/cosmos-sdk-js# npm install --save cosmos-sdk

npm ERR! Linux 4.15.0-96-generic

npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "--save" "cosmos-sdk"

npm ERR! node v8.10.0

npm ERR! npm  v3.5.2

npm ERR! code ENOSELF


npm ERR! Refusing to install cosmos-sdk as a dependency of itself

npm ERR!

npm ERR! If you need help, you may report this error at:

npm ERR!     <https://github.com/npm/npm/issues>


npm ERR! Please include the following file with any support request:

npm ERR!     /root/cosmos-sdk-js/npm-debug.log

root@tkpark:~/cosmos-sdk-js#

 




블로그 이미지

iesay

,

GS인증(보안성)

2020. 4. 13. 10:02

1. GET -> POST

HTTP를 통한 비밀번호 전송

 

2. Let's 인증서 설치

잘못된 SSL 인증서
안전하지 않은 TLS

 

3. 톰켓 샘플페이지 삭제

내부 서버 오류(500)
예외 보고서 공개(톰캣)
브라우저 탭을 탐색하여 피싱
내부 IP 주소 공개

 

 

4. server.xml 변경

내부 서버 오류(500)
예외 보고서 공개(톰캣)
누락 된 X-프레임-옵션 헤더

 

 

5. SpringSecurity.xml 적용

HTTP 엄격한 전송 보안   (HSTS) 정책비활성화
누락 된 X-프레임-옵션 헤더
누락된 콘텐츠 유형 헤더   (Content-Type)
영구 크로스 사이트 스크립팅
로그인 양샥의 크로스  사이트 요청위조 감지
크로스 사이트 요청 위조 감지

 

 

6. 자동완성 기능 해제

input (autocomplete="off")

 

 

7. 입력값 유효성 체크

영구 크로스 사이트 스크립팅
로그인 양샥의 크로스  사이트 요청위조 감지
크로스 사이트 요청 위조 감지

8. 방화벽 http 80번 차단

HTTP 엄격한 전송 보안   (HSTS) 정책비활성화

 

9. robots.txt   모두 거부

  User-agent: * 
Disallow: /  

 

10. Login  Javascript 암호화하여 패스워드 서버로 전송

Login Password(SHA256)  -> Spring(bcrypt) -> DB에 저장

 

 

11. 오래된 버전의  jQuery 사용

버전 업데이트 (jQuery v3.3.1 -> v3.4.1)

 

12.안전하지 않은 TLS(Transportation Security Protocol Supported)
server.xml 설정값 변경 TLS 1.2 프로토콜 지정

 

13. 누락 된 X-프레임-옵션 헤더
web.xml 설정값 변경
X-Frame-Options
(ALLOW-FROM -> DENY)

 

14. 크로스 사이트요청 위조 감지(XSS)

 Lucy fillter 적용
HTMLTagFilter사용

 

 

 

 

 

'' 카테고리의 다른 글

DB튜닝 테이블에 데이터가 많은 경우  (0) 2021.01.31
라디오 버튼 제이쿼리  (0) 2020.08.24
express + morgan  (0) 2019.04.01
promise  (0) 2019.03.28
정규식 표현 정리  (0) 2019.03.28
블로그 이미지

iesay

,

gitlab 설치

시스템 2020. 4. 7. 14:25

환경 : 우분투 18.04 server

apt-get update
apt-get install -y curl openssh-server ca-certificates

apt-get install -y postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee

http://내부ip주소/

gitlab-ctl reconfigure
gitlab-ctl start

gitlab-ctl stop

깃랩 설치 완료

초기 패스워드 설정

root // 초기설정한 패스워드 입력

 

스페너 클릭

 

 

 

 

 

 

 

 

 

신규 아이디 메일주소로 발급

그런 뒤 프로젝트 생성 운용

 

 

 

 

 

 

'시스템' 카테고리의 다른 글

방화벽 설정  (0) 2020.10.26
우분투 No space left on device  (0) 2020.06.26
vscode , 버추얼박스  (0) 2019.11.05
버추얼박스 VT-x is not available 오류  (1) 2019.07.18
시놀리지 나스 synology nas(redmine plugin)설치  (2) 2019.04.29
블로그 이미지

iesay

,

다이어트2

다이어트 2020. 2. 3. 21:08

 

 

총 운동 기간은 2년 정도 인데,,

헬스장 옮기고 처음 젠 인바디표다.

 

60점

 

내가 봐도 점수 초라하다.

유튜브 다 뒤저도 60점보다 낮은 점수 찾기 쉽지 않을거다.

 

저 60점이 더 웃긴건 7개월 한 몸이라는 거다 ㅋㅋㅋ

거의 체감상 함 110kg 시작 했다.

 

고지혈증과 지방간이 너무 심해서 피에 있는거부터 빼는게 쉽지 않았다.

2018. 11. 06 -> 2020. 02. 01      14개월정도 되는데

체중 변화는 거의 없다.

체지방은 33.8kg     -> 30.1kg        약 3.7kg 감소

근육량 35kg  -> 37.1 kg             약 2.1kg 증가

 

상승 다이어트라 하는데 체중변화는 거의 없고,

체지방이 빠지면서 근육량이 커지는 현상이다.

 

근육량을 키우기 위해서

1. 충분한 영양섭취 (멀티비티민, 단백질 섭취)

2. 웨이트 트레이닝 통한 근성장 운동

3. 스트레스 덜 받기

4. 휴식 (근육통 풀기)

5. 단백질 무게 지키기 90kg면 90g이상 먹기

 

다이어트를 위해서

1. 간혈적 단식 (16~8)

2. 공복 유산소 헬스

3. 식단 조절(점심, 저녁  단백질 위주 식사,,  저 탄수화물)

4. 운동후 첫끼니 점심을 (지방 + 탄수화물 금지)   삼계탕 ?! ,  국밥

 

 

운동 루틴

10분 몸풀기 ( 보조기 이용한 풀업, 스트레스)

30분 유산소 (자전거)  레벨10 쎄게 달렸다13~14  천천히 달렸다 10~11

40분 웨이트 (헤잉레그레이즈, 스쿼트(바벨, 일반), 스미스머신 벤치프레스, 복근강화)

30분 요가메트깔고 맨몸운동(웨이트로 인한 스트레칭, 크런치, 목 , 복근 스트레칭)  

30분 유산소 (자전거)  레벨10 쎄게 달렸다13~14  천천히 달렸다 10~11

 

시간은 조금식 조절하면서 약 2시간 정도 운동한다.

매일 운동하기 때문에 웨이트트레이닝을 너무 고강도로 하지 않는다.

그리고 몸이 찐빠 비대칭이라서 ㅋㅋ 중량을 치면 다친다.

 

먹는거

점심 : 일반식  (버거킹, 김선생김밥, 쿠우쿠우, 라면, 오뎅탕, 삼겹살, 만두, 중국집)

         좀 부실하게 먹었다 싶으면 닭가슴살 한캔 먹는다.

 

저녁 : 닭가슴살 2개  배고프면,, 프로틴바,,,  초콜렛

 

 

 

헬스보충제

운동전

멀티비타민 :  간 피로 비타민 섭취 부족분 채움  2개

알파리포산 :  혈류증가 1개

타우린500Mg : 피로 회복 1개

노익스 : 운동전 1쿱

 

운동 후

베이킹소다 한쿱 : 요산수치 감소, 통풍약   

                      (본인이 요산도 높고 운동 후 더 심해짐,

                      단백질 과다섭취시 올라감 김종국 통풍)

                      신장 결석방지, 역류성식도염 예방

                      요산으로 인한 피의 산성을 중화

 

오메가 3 : 카토제닉 다이어트( 점심1개, 저녁1개)

멀티비타민 : 2개 간 피로 비타민 섭취 부족분 채움

아연 : 근육생성 자기 전 1개

 

헛개차 자주며사서 간보호

 

 

 

 

 

 

 

 

 

 

 

 

'다이어트' 카테고리의 다른 글

벤치프레스 자세  (0) 2019.11.15
블로그 이미지

iesay

,

의천도룡기 무력순위

잡담 2019. 11. 18. 10:03

생사경

황삼미녀 : 구음진경(구음백골조의 진정한 맛을 볼테냐)

              도하도무공(꽃잎 탄지신공)

              전진검법, 옥녀신겸

              쌍수호박 , 벌사용법, 은침사용법 추정

 

현경              

장무기 : 장삼풍이 곽양여협이나 자기 사부 정도로 내공이 심오하다고 하였슴

           구양신공

           건곤대나이 7단계

           태극권, 태극검

           성화령 무공

 

장삼풍 : 태극권, 태극검

            구양신공 일부

 

 

양정천 : 건곤대나이 4단계

도액대사 : 금강복마신공

주지약 : 구음백골조 속성

             아미파 무공

 

화경

소림사 땡중 2명

페르시아 명고 : 성화령 무공

양소 : 건곤대나이 2단계

범요 : ??

4대 호법(자삼용왕, 백미응왕, 금모사왕, 청익복왕)

송청서 : 구음백골조 속성, 아미파 무공 ,무당파 무공

멸절 사태 : 아미파 무공

현명이로 : 현명신장

 

#############

 

절정 고수

개방의 방장로 : 파비신검

무당칠협

곤륜파 하태충 부부

화산파 화산이로

공동파 칠상권 쓰레기

오산인

 

 

 

명교 4대 호법이 == 무당 칠협이라는 대도 안한 글을 보고

작성해 본다.

 

 

 

 

 

 

 

 

     

'잡담' 카테고리의 다른 글

포커디펜스 노바 히든조합  (1) 2023.04.18
암호화폐로 돈 세탁 하는 방법,,,  (0) 2019.08.02
합법과 불법 사이...  (0) 2019.08.02
장기 전략 유형  (0) 2018.10.04
SI 프로젝트가 막장이 되는 이유  (0) 2018.09.14
블로그 이미지

iesay

,