2017년 8월 29일 화요일

jsoup url 3times

jsoup java 샘플 소스
 public static void main(String[] args) {  
     String[] urls = new String[]{"http://www.dmoz.org/", "http://www.dmoz.org/Computers/Computer_Science/","https://docs.oracle.com/en/"};  
     // Create and start workers  
       List workers = new ArrayList<>(urls.length);  
    for (String url : urls) {  
       Worker w = new Worker(url);   
   workers.add(w);   
   new Thread(w).start();  
   }  
     // Retrieve results    
       for (Worker w : workers) {  
       Elements results = w.waitForResults();  
       if (results != null)  
         System.out.println(w.getName()+": "+results.size());  
   else  
         System.err.println(w.getName()+" had some error!");    }  
   }  
 }  
 class Worker implements Runnable {  
   private String url;   
  private Elements results;  
   private String name;  
   private static int number = 0;  
   private final Object lock = new Object();  
   public Worker(String url)  
  {  
     this.url = url;  
     this.name = "Worker-" + (number++);  
  }  
   public String getName()  
  {  
     return name;  
  }  
   @Override  
   public void run() {  
     try {  
       Document doc = Jsoup.connect(this.url).get();  
       Elements links = doc.select("a");  
       // Update results  
       synchronized (lock) {  
         this.results = links;  
         lock.notifyAll();  
   }  
     } catch (IOException e) {  
       // You should implement a better error handling code..  
       System.err.println("Error while parsing: "+this.url);  
       e.printStackTrace();  
   }  
   }  
   public Elements waitForResults() {  
     synchronized (lock) {  
       try {  
         while (this.results == null) {  
           lock.wait();  
    }  
         return this.results;  
   } catch (InterruptedException e)  
   {  
         // Again better error handling  
         e.printStackTrace();  
   }  
       return null;  
   }  
   }  

text base network monitor tools


text base network monitor tools

nload
iftop
iptraf
nethogs
bmon
tcptrack
speedometer
pktstat
netwatch
trafshow

2017년 8월 28일 월요일

뒤로가기 두번 나가기

public boolean onKeyDown(int keyCode, KeyEvent event){
        switch(keyCode){
            case KeyEvent.KEYCODE_BACK:
                String alertTitle = "Auto Scheduler";
                String buttonMessage = "어플을 종료하시겠습니까?";
                String buttonYes = "Yes";
                String buttonNo = "No";
 
                new AlertDialog.Builder(majSelectActivity.this)
                        .setTitle(alertTitle)
                        .setMessage(buttonMessage)
                        .setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
 
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                moveTaskToBack(true);
                                finish();
                            }
                        })
                        .setNegativeButton(buttonNo, null)
                        .show();
        }
        return true;
 
    }


출처: http://twinw.tistory.com/33 [흰고래의꿈]

2017년 8월 27일 일요일

jsoup

* getElementById(String id) : Element 객체를 반환합니다. 하나를 반환합니다. 없으면 null 을 반환합니다.

* getElementsByTag(String tag) : Elements 객체를 반환합니다. 없으면 size() 가 0 입니다.

* getElementsByClass(String className) : Elements 객체를 반환합니다. 없으면 size() 가 0 입니다.





* doc.select("a") : 요소를 모두 선택합니다.

* doc.select("#logo") : id="logo" 인 요소를 선택합니다.

* doc.select(".head") : class="head"인 요소들을 선택합니다.

* doc.select("[href]") : href 속성을 가진 요소들을 선택합니다.

* doc.select("[width=500]") : width 속성의 값이 500인 모든 요소들을 선택합니다.

2017년 8월 25일 금요일

그레들 버젼 정보 표시

그레들 버젼 정보 표시



TextView tvt = (TextView) findViewById(R.id.text2);int versionCode = BuildConfig.VERSION_CODE;tvt.setText(versionCode);

2017년 8월 24일 목요일

adview sample

admob 광고 넣기 위한 XML 설정 파일


    xmlns:ads="http://schemas.android.com/apk/res-auto"


        android:id="@+id/adView"
        android:layout_width="384dp"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="2dp"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

   

        ads:adUnitId="@string/banner_ad_unit_id"

--> @string 에 베너 아이디를 넣는다.



  android:id="@+id/adView"  
  android:layout_width="350dp"  
  android:layout_height="50dp" 
  android:layout_alignParentBottom="true"
  android:layout_marginBottom="0dp"  
  android:visibility="visible" 
  ads:adSize="BANNER"  
  ads:adUnitId="@string/banner_ad_unit_id" 
  app:layout_constraintBottom_toBottomOf="parent" 
  app:layout_constraintLeft_toLeftOf="parent" 
  app:layout_constraintRight_toRightOf="parent"

2017년 8월 23일 수요일

firebase 기능 중 일부

Firebase 클라우드 일괄 작업의 기타 예



실시간 데이터베이스 정리 및 유지관리의 기타 사용 사례

vimrc

set hlsearch " 검색어 하이라이팅
set nu " 줄번호
set autoindent " 자동 들여쓰기
set scrolloff=2
set wildmode=longest,list
set ts=4 "tag select
set sts=4 "st select
set sw=1 " 스크롤바 너비
set autowrite " 다른 파일로 넘어갈 때 자동 저장
set autoread " 작업 중인 파일 외부에서 변경됬을 경우 자동으로 불러옴
set cindent " C언어 자동 들여쓰기
set bs=eol,start,indent
set history=256
set laststatus=2 " 상태바 표시 항상
"set paste " 붙여넣기 계단현상 없애기
set shiftwidth=4 " 자동 들여쓰기 너비 설정
set showmatch " 일치하는 괄호 하이라이팅
set smartcase " 검색시 대소문자 구별
set smarttab
set smartindent
set softtabstop=4
set tabstop=4
set ruler " 현재 커서 위치 표시
set incsearch
set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\
" 마지막으로 수정된 곳에 커서를 위치함
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "norm g`\"" |
\ endif
" 파일 인코딩을 한국어로
if $LANG[0]=='k' && $LANG[1]=='o'
set fileencoding=korea
endif
" 구문 강조 사용
if has("syntax")
 syntax on
endif

" 컬러 스킴 사용
colorscheme jellybeans

python besutifulsoup 설치 및 에러 대처


apt-get install python-pip

pip install beautifulsoup

에러발생시


./pip/pip.log  확인

퍼미션 에러 발생 확인

error: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/BeautifulSoupTests.py'


명령실행
sudo chown -R $USER /usr/local/lib/python2.7

안드로이드 스튜디오 디버그 키android studio debug key



android studio debug key private pem key generating.

this command

java -jar pepk.jar --keystore=debug.keystore --alias=androiddebugkey --output=debug_key_private --encryptionkey=4xx1f8xxba8xxxxx10b13xx04a1xXXXXXXXXXXXXXXXXXXXXXXXXXXX



아래와 같이 디폴트 알리아스와 패스워드 확인하자.
default alias is : androiddebugkey
default password : android



키값에 대한 정보 확인 명령이다.
keytool -list -keystore xxxxx.jks


초보자들이 처음에 격는 문제로 앱을 올리겠다는 마음으로 하지만 앱에 대한 보안 키값
이 있는 것조차 생각 안한다.
이것은 나의 경험담이지만
처음 하나의 앱을 올릴때는 문제가 되지 않는다 나중에 2개 이상의 앱을 올리게 되면 키캆의 중복 때문에 올라 가지 않는다. 그것을 해결 하기 위해서 디버그 키캆을 찾아서 등록 해줘야 한다.

감사합니다.

추가 궁금 사항은 메일 주세요

2017년 8월 22일 화요일

time UTC에서 KST 로 변경

리눅스 시스템을 서버로 사용할 경우는 시간 관리가 아주 중요한데, 대한민국 표준시로 설정되어있지 않으면 로그 관리 등에서 문제가 있으므로 최초 설치시에 Timezone을 제대로 설정하지 않으면 나중에 시간이 정확히 표시되지 않는다. 물론 date -s 명령을 이용해 수동으로 설정할수 있지만 시간 동기화를 위해 rdate 명령을 내리면 그리니치 평균시로 돌아가버리고 만다. tzselect 명령을 이용하거나 /etc/sysconfig/clock 파일에 ZONE="Asia/Seoul" 라고 수정을 하면 적용이 될 것 같았지만, 재부팅을 해도 시스템 시간에 변화가 없었다.

그래서 찾은 방법이 환경 변수를 이용하는 것이다.

[root@Zeus ~]# date
Fri Aug 3 08:05:03 UTC 2007
[root@Zeus ~]# hwclock --show
Fri 03 Aug 2007 05:39:07 PM UTC -0.870183 seconds
[root@Zeus ~]# echo $TZ

[root@Zeus ~]# export env TZ=KST-09:00:00
[root@Zeus ~]# date
Fri Aug 3 17:05:45 KST 2007

위에 GMT(UTC)가 아닌 KST라고 썼는데, 이것은 date 명령에서 나오는 문자열에 불과하며, 실제 영향을 주는 부분은 -09:00:00 이다. +, -는 그리니치 천문대를 중심으로 서쪽은
+, 동쪽은 - 이고, 우리나라는 동쪽에 있으며 9시간이 빠르므로 -09:00:00 가 되는 것이다.

또, PC의 시간은 하드웨어 시간(RTC)과 시스템 시간이 있는데, RTC는 환경에 따라 오차가 생길수 있으며, 리눅스 시스템은 최초 부팅 시 RTC와 동기화를 한 뒤로는 자체 타이머를 이용해 시간을 관리하므로 매우 정확하다고 할 수 있다. RTC의 오차라는 것도 심한게 아니기 때문에 굳이 시스템 시간으로 RTC를 동기화 할 필요는 없으나 한번쯤은 해두는 것이 좋다.

[root@Zeus ~]# date
Fri Aug 3 18:05:21 KST 2007
[root@Zeus ~]# hwclock --show
Fri 03 Aug 2007 06:39:45 PM KST -0.540050 seconds
[root@Zeus ~]# rdate -s time.bora.net
[root@Zeus ~]# hwclock --systohc
[root@Zeus ~]# date
Fri Aug 3 18:06:56 KST 2007
[root@Zeus ~]# hwclock --show
Fri 03 Aug 2007 06:07:01 PM KST -0.211481 seconds

설정 후에는 /etc/rc.d/rc.local 파일의 마지막 부분에 아래 내용을 추가해서 부팅시 적용이 되도록 하자.

export env TZ=KST-09:00:00
rdate -s time.bora.net
hwclock --systohc


거두 절미하고 전체 시스템 timezone 변경은 
rm /etc/localtimeln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 

구글, 크롬 앱의 윈도우, 맥, 리눅스 지원 "단계적으로 중단한다"

구글, 크롬 앱의 윈도우, 맥, 리눅스 지원 "단계적으로 중단한다"

IDG News Service
크롬 브라우저가 설치되어 있으면, 윈도우, 맥, 리눅스 등 플랫폼에 상관없이 구동할 수 있었던 크롬 앱이 2018년부터 크롬 OS를 제외한 다른 운영체제에서 지원되지 않는다고 금요일 구글이 밝혔다.

크롬 앱은 2013년 웹 앱의 기능적인 한계를 극복하기 위해 등장했는데, 개발자들이 윈도우와 맥, 리눅스, 크롬 OS에서 모두 이용할 수 있는 앱을 개발할 기회가 되기도 했다.

이 앱들은 2가지 형태다. 하나는 호스팅 된 앱으로, 설치형 웹 앱이다. 또 다른 하나는 패키지화된 앱으로 iOS 앱 스토어나 구글 플레이 스토어에서 볼 수 있는 전통적인 앱과 유사하다.

개발자들에게는 현재의 앱을 마이그레이션할 시간이 1년 반 정도 주어진다. 호스팅된 앱의 경우 대부분의 기능이 웹에 의존하기 때문에 큰 이슈는 아니다. 사용자들으 전환 후에도 해당 웹 앱을 계속 사용할 수 있는데, 다만 모든 기능을 웹을 통해서만 이용할 수 있다.

패키지된 형태의 앱 개발자들은 새로운 것을 만들어야만 한다. 구글은 웹 앱, 확장 프로그램, 확장 프로그램을 이용할 수 있는 페이지, 그리고 네이티브 앱 등 4가지 방안을 제시했다. 네이티브 앱과 관련해서 구글은 개발자들이 일렉트론(Electron)이나 NW.js를 이용해서 데스크톱 운영체제에서 구동되는 애플리케이션을 개발할 수 있다고 조언했다.

크롬 앱 서비스 중단은 순차적으로 이루어질 예정이다. 올해 말부터 기존의 앱은 모든 플랫폼에서 사용할 수 있지만, 신규 크롬 앱은 크롬 OS에서만 사용할 수 있게 된다. 2017년 하반기에는 윈도우, 맥, 리눅스의 크롬 웹 스토어에서는 크롬 앱이 표시되지 않으며, 2018년 초가 되면 해당 플랫폼의 크롬 앱의 모든 작동이 중지된다.

주요 데스크톱 운영체제의 크롬 앱 지원을 중단하게 되면, 크롬 OS용 앱 개발에 대한 개발자의 관심도 감소하게 될 수도 있다. 하지만 몇 달 전 구글이 크롬 OS에서도 안드로이드 앱을 구동할 수 있다고 발표한 만큼, 이 부분을 상쇄할 것으로 예상된다. editor@itworld.co.kr

이런 뭐같은 경우가 다있나. 

2017년 8월 21일 월요일

구글 클라우드 아시아 지역 지역표 타임존

asia-southeast1SingaporeJurong West, Singaporeasia-southeast1-a
asia-southeast1-b
asia-east1TaiwanChanghua County, Taiwanasia-east1-a
  • 2.5 GHz Intel Xeon E5 v2 (Ivy Bridge) platform (default)
  • 2.2 GHz Intel Xeon E5 v4 (Broadwell) platform
  • 2.0 GHz Intel Xeon (Skylake) platform
  • 64-core machine types
  • Local SSDs
asia-east1-b
  • 2.5 GHz Intel Xeon E5 v2 (Ivy Bridge) platform (default)
  • 2.0 GHz Intel Xeon (Skylake) platform
  • 32-core machine types
  • Local SSDs
asia-east1-c
asia-northeast1TokyoTokyo, Japanasia-northeast1-a
asia-northeast1-b
asia-northeast1-c

클라우드 존이동 명령


클라우드 shell
존이동 미국서부에서 아시아 도쿄로 이동 하는 샘플

gcloud compute instances move  instance-1 --zone us-west1-b --destination-zone asia-northeast1-b

2017년 8월 20일 일요일

google cloud 인스턴스 고정 IP 설정 방법




  1. Go to the VM instances page in the Cloud Platform Console. Go to the VM instances page
  2. Click the name of the instance that you want to assign an external IP to.
  3. Click the Edit button at the top of the page.
  4. Under External IP, select either an ephemeral or static external IP address to assign to the instance.
  5. Click the Save button to save your changes.



아래와 같이 인스턴스 설정에서 nic0 에 대한 IP설정을 할 수 있다.
임시에서 고정 IP 로 활당 받을 수 있다.
















마리아 DB 사용자 추가 및 설정


C:\Windows\system32>mysql -u root -p  -- root 계정으로 접속합니다.
Enter password: ****  -- root 게정 비밀번호를 입력합니다.
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.0.19-MariaDB mariadb.org binary distribution
 
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> create database demo;  -- demo 라는 명을 가지는 데이터베이스를 생성합니다.
Query OK, 1 row affected (0.00 sec)
 
MariaDB [(none)]> show databases;  -- 데이터베이스 목록을 확인합니다.
+--------------------+
| Database           |
+--------------------+
| demo               |  -- 생성완료
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)
 
MariaDB [(none)]>



-- demo 라는 명을 가지는 데이터베이스를 삭제합니다.
MariaDB [(none)]> drop database demo; 

로컬 호스트만 접속
create user 'tester'@'localhost' identified by '1111';

아무데서나 접속 가능
create user 'username'@'%' identified by 'password';


-- tester 계정에게 demo 데이터베이스의 모든 사용권한을 부여한다.
-- '%' 대신 localhost를 사용할 경우 외부에서 접속 불가
grant all privileges on demo.* to tester@'%';


사용자 비빌 번호 변경

use mysql;

update user set password=PASSWORD('변경할비밀번호') where user = '사용자계정';
flush privileges;




무료 요약 AI 서비스

  Claude by Brunch , Twelve Labs , Canva Summarizer , AIQ.Video Q&A by Scatter Labs , Summarify , Summary Box , summate.io , Sol...