728x90
반응형

출처 및 상세 내용/설명은  https://aplab.tistory.com/38 을 참조 바랍니다.

 

본 포스팅에서는 예시문 위주로 나열하고자 합니다.

 

temp = list([2, 3, 4, 5])
temp_new = list()
for i in temp:
    temp_new.append(i*2)

 

temp_new = list([ i*2 for i in temp ])
또는
temp_new = list([ i*2 for i in [2,3,4,5] ])

 

 

 

 

temp = list([2,3,4,5])
temp_new = list()

for i in temp:
    if i>3:
        temp_new.append(i*2)
    else:
        temp_new.append(i)

list( [ i * 2  if  i>3 else i for i in temp ] )
또는
list( [ i * 2  if  i>3 else i for i in [2,3,4,5] ] )

 

 

 

 

 

temp = list([2,3,4,5])
temp_new = list()

for i in temp:
    if i>3:
        temp_new.append(i*2)

list( [ i for i in temp if i > 3 ])

 

참조로

>>> list( [ i if i>3 for i in [2,3,4,5] ] )
  File "<stdin>", line 1
    list( [ i if i>3 for i in [2,3,4,5] ] )
           ^^^^^^^^
SyntaxError: expected 'else' after 'if' expression

if()를 앞쪽에 배치하면, 오류가 발생함.

728x90
반응형
728x90
반응형
java -jar jsoup.jar http://speech.pe.kr

처럼, 

    java 프로그램으로 수행. 

   옵션으로  -jar 지정( jar 파일을 수행시키니.)

  수행 jar 파일 이름.

  인자로 전달할 파라미터

로 수행시키면 됩니다.

 

jar 파일을 만드는 방법은 intellj-maven인 경우, 우측 패널에서 deploy를 클릭합니다.

 

 

windosw OS의 경우 작업폴더의  target/ 폴더에 jar 파일이 만들어집니다.

 

windows OS 에서 'cmd' 프로그램을 수행 시킨 후,  jar 파일이 있는 경로로 이동합니다.

 

 

 

메인 인자를 포함해서 jar파일을 실행시킵니다.( windows OS에 java 프로그램이 설치되어 있어야 하겠죠..)

탐색할 대상 URL이 계속 바뀌기 때문에, 인자로 처리한 것이죠.

이 번에는 http://speech.pe.kr 를 탐색하고자 하는 것이죠.

인자가 잘 전달되어, java jar 파일 내의  main() 함수가 잘 수행 되었습니다.^^

 

 

728x90
반응형
728x90
반응형

jsoup 라이브러리를 사용하여, 특정 홈페이지(웹페이지)내에 존재하는 links를 헤아려보는 샘플 프로그램을 작성 및 수행해 보았습니다.

 

jsoup은 1.16.2 버전을 사용하였습니다.

<dependency>
			<!-- jsoup HTML parser library @ https://jsoup.org/ -->
			<groupId>org.jsoup</groupId>
			<artifactId>jsoup</artifactId>
			<version>1.16.2</version>
</dependency>

 

Text Console 프로그램을 아래와 같이 작성해 보았습니다.

package kr.pe.speech.jsoup;

import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.IOException;

@SpringBootApplication
public class JsoupApplication {

	public static void main(String[] args) throws IOException {
		Validate.isTrue(args.length == 1, "Usage: supply url to fetch");


		String url = args[0];
		print("Fetching %s...", url);

		Document doc = Jsoup.connect(url).get();
		Elements links = doc.select("a[href]");
		Elements media = doc.select("[src]");
		Elements imports = doc.select("link[href]");

		print("\nLinks: (%d)", links.size());
		for (Element link : links) {
			print(" * a: <%s>  (%s)", link.attr("abs:href"), trim(link.text(), 35));
		}
	}

	private static void print (String msg, Object...args){
		System.out.println(String.format(msg, args));
	}

	private static String trim (String s,int width){
		if (s.length() > width)
			return s.substring(0, width - 1) + "...";
		else
			return s;
	}
}

 

 

 

 

 

출력결과는 아래와 같습니다.

  • 프로그램 코드가 간력합니다
  • 수행속도가 타 라이브러리보다 엄청 빠릅니다.
  • API Method가 간단 명료한 느낌입니다.
  • 중복된 URL을 출력합니다.   

 

 

Fetching http://speech.pe.kr...

Links: (37)
 * a: <http://speech.pe.kr#site-content>  (Skip to the content)
 * a: <http://speech.pe.kr/>  (speech voice AI)
 * a: <http://speech.pe.kr/>  (홈)
 * a: <http://speech.pe.kr/%ec%86%8c%ea%b0%9c/>  (소개)
 * a: <http://speech.pe.kr/%eb%b8%94%eb%a1%9c%ea%b7%b8/>  (블로그)
 * a: <http://speech.pe.kr/%eb%ac%b8%ec%9d%98/>  (문의)
 * a: <http://speech.pe.kr/plans/>  (Plans)
 * a: <http://speech.pe.kr#weglot_switcher>  (Weglot Switcher)
 * a: <http://speech.pe.kr/>  (홈)
 * a: <http://speech.pe.kr/%ec%86%8c%ea%b0%9c/>  (소개)
 * a: <http://speech.pe.kr/%eb%b8%94%eb%a1%9c%ea%b7%b8/>  (블로그)
 * a: <http://speech.pe.kr/%eb%ac%b8%ec%9d%98/>  (문의)
 * a: <http://speech.pe.kr/>  (홈)
 * a: <http://speech.pe.kr/%ec%86%8c%ea%b0%9c/>  (소개)
 * a: <http://speech.pe.kr/%eb%b8%94%eb%a1%9c%ea%b7%b8/>  (블로그)
 * a: <http://speech.pe.kr/%eb%ac%b8%ec%9d%98/>  (문의)
 * a: <http://speech.pe.kr/plans/>  (Plans)
 * a: <http://speech.pe.kr#weglot_switcher>  (Weglot Switcher)
 * a: <https://www.yelp.com>  (옐프)
 * a: <https://www.facebook.com/wordpress>  (페이스북)
 * a: <https://twitter.com/wordpress>  (트위터)
 * a: <https://www.instagram.com/explore/tags/wordcamp/>  (인스타그램)
 * a: <mailto:wordpress@example.com>  (이메일)
 * a: <http://speech.pe.kr#post-inner>  (Scroll Down)
 * a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/>  (Read More)
 * a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/>  (Read More)
 * a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/>  (Read More)
 * a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/>  (Read More)
 * a: <https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/>  (Join the Club)
 * a: <https://www.yelp.com>  (옐프)
 * a: <https://www.facebook.com/wordpress>  (페이스북)
 * a: <https://twitter.com/wordpress>  (트위터)
 * a: <https://www.instagram.com/explore/tags/wordcamp/>  (인스타그램)
 * a: <mailto:wordpress@example.com>  (이메일)
 * a: <http://speech.pe.kr/>  (speech voice AI)
 * a: <https://wordpress.org/>  (Powered by WordPress)
 * a: <http://speech.pe.kr#site-header>  (To the top ↑ Up ↑)


728x90
반응형
728x90
반응형

아래 코드를 클라언트 프로그램에 추가합니다.

  const kakaoClientId = 'xxxxxxxxc2a06fc7d90xxxxxxxxxxx';
  const kakaoOnSuccess = async ( data ) => {
        console.log(data)
        const idToken = data.response.access_token  //액세스 토큰 백엔드로 전달
        //ToDo

        //alert(data.response.access_token )
        setAuth(true);
  }
  const kakaoOnFailure = (error) =>{
        console.log(error);
  }
  
        				<KakaoLogin
                            token = {kakaoClientId}
                            onSuccess={kakaoOnSuccess}
                            onFail={kakaoOnFailure}
                        />

 

kakao developers 사이트에서

'내 애플리케이션'에서 '애플리케이션 추가하기'...

 

'앱키'를 용도성에 맞게 활용합니다.

React에서는 native로 개발로 할 경우, JavaScript 키 값을 'kakaoClientId'의 변수 값에 지정합니다.( 위 프로그램코드 참조)

 

'플랫폼'에서 'Web'플랫폼 등록

   - 복수 개 가능

   - 포트값도 일반 URL처럼 등록

  

 

'카카오로그인' 활성화

 

 

프로그램 수행 화면...

카카오 계정 로그인 화면 나타남.

 

728x90
반응형

+ Recent posts