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;
}
}
2017년 8월 29일 화요일
jsoup url 3times
jsoup java 샘플 소스
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인 모든 요소들을 선택합니다.
* 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 에 베너 아이디를 넣는다.
xmlns:ads="http://schemas.android.com/apk/res-auto"
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 클라우드 일괄 작업의 기타 예
- 사용되지 않는 Firebase 계정을 주기적으로 삭제합니다.
- 업로드된 이미지를 자동으로 관리합니다.
- 사용자에게 대량으로 이메일을 보냅니다.
- 주기적으로 데이터를 집계하고 요약합니다.
- 대기 중인 작업을 일괄 처리합니다.
실시간 데이터베이스 정리 및 유지관리의 기타 사용 사례
- 삭제된 사용자의 콘텐츠를 실시간 데이터베이스에서 소거합니다.
- Firebase 데이터베이스의 하위 노드 수를 제한합니다.
- 실시간 데이터베이스 목록의 요소 수를 추적합니다.
- 실시간 데이터베이스의 데이터를 Google Cloud BigQuery로 복사합니다.
- 텍스트를 그림 이모티콘으로 변환합니다.
- 데이터베이스 레코드에 대해 계산된 메타데이터를 관리합니다.
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
크롬 앱은 2013년 웹 앱의 기능적인 한계를 극복하기 위해 등장했는데, 개발자들이 윈도우와 맥, 리눅스, 크롬 OS에서 모두 이용할 수 있는 앱을 개발할 기회가 되기도 했다.
이 앱들은 2가지 형태다. 하나는 호스팅 된 앱으로, 설치형 웹 앱이다. 또 다른 하나는 패키지화된 앱으로 iOS 앱 스토어나 구글 플레이 스토어에서 볼 수 있는 전통적인 앱과 유사하다.
개발자들에게는 현재의 앱을 마이그레이션할 시간이 1년 반 정도 주어진다. 호스팅된 앱의 경우 대부분의 기능이 웹에 의존하기 때문에 큰 이슈는 아니다. 사용자들으 전환 후에도 해당 웹 앱을 계속 사용할 수 있는데, 다만 모든 기능을 웹을 통해서만 이용할 수 있다.
패키지된 형태의 앱 개발자들은 새로운 것을 만들어야만 한다. 구글은 웹 앱, 확장 프로그램, 확장 프로그램을 이용할 수 있는 페이지, 그리고 네이티브 앱 등 4가지 방안을 제시했다. 네이티브 앱과 관련해서 구글은 개발자들이 일렉트론(Electron)이나 NW.js를 이용해서 데스크톱 운영체제에서 구동되는 애플리케이션을 개발할 수 있다고 조언했다.
크롬 앱 서비스 중단은 순차적으로 이루어질 예정이다. 올해 말부터 기존의 앱은 모든 플랫폼에서 사용할 수 있지만, 신규 크롬 앱은 크롬 OS에서만 사용할 수 있게 된다. 2017년 하반기에는 윈도우, 맥, 리눅스의 크롬 웹 스토어에서는 크롬 앱이 표시되지 않으며, 2018년 초가 되면 해당 플랫폼의 크롬 앱의 모든 작동이 중지된다.
주요 데스크톱 운영체제의 크롬 앱 지원을 중단하게 되면, 크롬 OS용 앱 개발에 대한 개발자의 관심도 감소하게 될 수도 있다. 하지만 몇 달 전 구글이 크롬 OS에서도 안드로이드 앱을 구동할 수 있다고 발표한 만큼, 이 부분을 상쇄할 것으로 예상된다. editor@itworld.co.kr
이런 뭐같은 경우가 다있나.
2017년 8월 21일 월요일
구글 클라우드 아시아 지역 지역표 타임존
asia-southeast1 | Singapore | Jurong West, Singapore | asia-southeast1-a asia-southeast1-b |
|
asia-east1 | Taiwan | Changhua County, Taiwan | asia-east1-a |
|
asia-east1-b |
| |||
asia-east1-c |
| |||
asia-northeast1 | Tokyo | Tokyo, Japan | asia-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 설정 방법
- Go to the VM instances page in the Cloud Platform Console. Go to the VM instances page
- Click the name of the instance that you want to assign an external IP to.
- Click the Edit button at the top of the page.
- Under External IP, select either an ephemeral or static external IP address to assign to the instance.
- 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;
피드 구독하기:
글 (Atom)
i2c_designware 808622C1:04: controller timed out
12월 17 15:55:28 VAST kernel: i2c_designware 808622C1:04: controller timed out root @VAST ~ # cat /sys/bus/acpi/devices/808622C1:01/status ...
-
Rosewell 사건의 유일한 생존자인 외계인 Airl에 관한 이야기를 전해 드리고자 합니다. 이책은 우리에게 정말 귀한 정보 와 통찰력을 주며, 왜 이렇게 삶이란 것이 깊은 고뇌를 동반하는 것인 과정인지 근본적인 대답을 해주며, 죽는다는 것이 어렵...
-
아치 리눅스 한글 간단 사용기 한글 입력기로 ibus 사용 하기로 한다. nabi 도 좋긴 한데 구글 크롬과 심각한 버그로 쓰기 힘든 상태 이므로 nabi 는 패스 하기로 아이뻐스 설치 pacman -S ibus ibus-hangul ...
-
중국 쌍색구(双色球) 빨간공 6개 : 1~33 판란색 1개 : 1~16 빨간색, 파란색 두가지 색이라 쌍색구 라 함 APP LINK https://play.google.com/store/apps/details?id=gotopark....