블로그 이미지
미국에서 모바일 애플리케이션을 개발하고 있습니다. 요즘 Corona로 앱을 하나 개발하고 있는데 나도 공부 하면서 여러 분들에게 소개도 하고 싶어서 블로그를 만들었습니다.
솔웅

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        




Yahoo에 접속했더니 머릿기사로 크게 한국기사가 떴습니다.

북한 관련기사는 자주 뜨는데 한국관련 기사는 너무 오랜만이라서 한번 살펴봤습니다.

(한국기사는 대통령이 미국을 방문해도 전혀 안 뜹니다.)

여기 시간으로 4월 20일 아침에 뜬 기사입니다.


읽어봤더니 AP 통신이 탐사보도한 서울 올림픽 이전에 박정희와 전두환 독재자들에 의해 자행된 인권 유린 실태를 보도한 기사입니다.


이 기사는 Jay Busbee 기자가 4월 19일에 올린 기사입니다.

Fourth-Place Medal

올해 개최될 브라질 리우 올림픽 관련해서 지카바이러스나 브라질 내의 정치적 혼란, 경제적 낙후, 사회적 불안 등으로 많은 우려를 낳고 있는데요.

후년 평창 동계올림픽을 앞두고 한국과 관련한 이런 기사가 나왔습니다.
외국인들에게는 한국도 브라질 만큼 낙후된 나라로 인식되겠네요.

그런데 뭐 이런 만행을 저지른 독재자 박정희의 딸이 현재 대통령을 하고 있으니... 뭐 별로 할 말 없습니다.

Report: South Korea rounded up, abused vagrants before 1988 Games

Two years ahead of the 2018 Olympic Games slated for Pyeongchang, South Korea, a new Associated Press report charges that South Korea committed widespread human rights violations in the years prior to the 1988 Games in Seoul.

한국 평창에서 열리는 2018 동계 올림픽이 2년 앞으로 다가왔다. AP 통신은 1988년 서울에서 열렸던 올림픽 직전에 광범위한 인권침해가 있었다고 보도했다.

Seoul won the bid for the 1988 Games in 1981, beating out Nagoya, Japan. In the ensuing seven years, the AP report charges, the South Korean government oversaw a brutal, widespread program of "cleansing" that resulted in horrific human rights violations.

서울은 일본의 나고야를 제치고 1981년 88 올림픽 개최지로 선정됐다. 이 7년동안 한국 정부는 '정화' 라는 이름으로 잔인하고 광범위하게 끔찍한 인권침해를 저질렀다.

"Thousands — the homeless, the drunk, but mostly children and the disabled — [were] rounded up off the streets ahead of the 1988 Seoul Olympics, which the ruling dictators saw as international validation of South Korea's arrival as a modern country," reads the report. "An Associated Press investigation shows that the abuse of these so-called vagrants at Brothers [Home], the largest of dozens of such facilities, was much more vicious and widespread than previously known, based on hundreds of exclusive documents and dozens of interviews with officials and former inmates."

"노숙자와 술에 취한 자들도 있었지만 대부분 어린이들과 장애인들인 수천명의 사람들이 1988년 서울 올림픽 전에 길거리에서 모습을 감췄다. 당시 한국을 통치했던 독재자 생각에 한국이 현대적인 도시로 국제적으로 보여지기를 원했기 때문이다." 라고 AP 통신은 전했다. "AP 통신의 탐사물은 소위 형제의 집이라고 불리는 이 부랑자 수용시설은 12개의 대규모 시설로 알려졌지만 실제로는 이것보다 훨씬 더 잔인하고 광범위하게 운영 됐던 것으로 알려졌다.  이같은 사실은 AP 통신이 단독 입수한 수백개의 문서들과 십여명의 당시 수용시설 관리자와 수감자들을 인터뷰한 결과 알려졌다."

Human rights violations in nations seeking to host international competitions are both widespread and persist to this day, as Amnesty has charged in connection with 2022 World Cup preparation in Qatar. South Korea, then under authoritarian rule, had intended to use the Games for multiple political purposes: to demonstrate the nation's emerging economic strength, to cement relations with both Western and Eastern bloc nations, and to establish a measure of distance from the continually hostile North Korea. According to the AP report, South Korean leaders prepared for the Games, and generated economic benefits, in the most ruthlessly efficient way possible: by effectively kidnapping indigents and forcing them into the equivalent of slave labor for most of the 1980s.

국제대회를 개최하고자 한 국가에서의 인권침해는 국제 사면위원회가 카타르의 2022년 월드컵 준비와 관련 카타르에 대해 혐의를 둔 것처럼 아주 광범하고 지속적으로 오늘날까지 계속 된다. 한국은 이런 권위주의 통치 아래에서 올림픽을 여러 정치적인 목적으로 이용했다. 예를 들어 한국의 신흥 경제 시장으로서의 힘을 보여주고 동/서 양진영 국가들과의 돈독한 관계를 만들어 적대국인 북한과 거리를 유지하도록 하려고 했다. AP 통신 기사에 따르면 남한의 리더들은 올림픽을 준비하면서도 수단과 방법을 가리지 않고 모든 방법을 동원해 효율성을 극대화 시켜 경제적인 이익을 얻으려고 했다. 그 무자비한 효율성에는 가난한 사람들을 납치해서 1980년대 대부분을 거의 노예 노동자 처럼 부려먹는 방법도 포함돼 있다.

"In 1975, dictator President Park Chung-hee, father of current President Park Geun-hye, issued a directive to police and local officials to 'purify' city streets of vagrants," the AP report notes. "Police officers, assisted by shop owners, rounded up panhandlers, small-time street merchants selling gum and trinkets, the disabled, lost or unattended children, and dissidents, including a college student who'd been holding anti-government leaflets. They ended up as prisoners at 36 nationwide facilities. By 1986, the number of inmates had jumped over five years from 8,600 to more than 16,000, according to government documents obtained by AP." Park was assassinated in 1979, and the country's next leader, Chun Doo-hwan, spearheaded the Olympic bid while keeping the "purification" efforts going.

"현 한국 대통령 박근혜의 아버지인 독재자 박정희 대통령은 1975년도에 도시 거리에서 부랑자들을 정리하는 일명 '정화' 라는 이름의 지침을 경찰과 지방관리에 하달 했었다. " 고 AP 통신은 전했다. "경찰들은 상점주인들의 도움을 받아 껌이나 악세사리들을 파는 소규모 길거리 상인들과 구걸하는 이들 그리고 장애인들과 미아나 고아들을 정리했다. 더불어서 반정부 전단지를 소지하고 있는 대학생들을 포함한 반체제 인사들도 함께 정리했다. 그들은 전국적으로 있는 36개의 시설에 죄수들처럼 감금됐다. 1986년까지 수감자수는 5년간 8600명에서 16000명까지 급속히 증가했다고 AP 통신이 입수한 정부문서에 나타나 있다."  박정희는 1979년도에 암살당했다. 그리고 이어서 전두환이 집권해 이 '정화'라는 이름의 만행을 계속 확산시켜 나가면서 올림픽을 준비했다.

Workers at facilities similar to Brothers Home were routinely abused and often beaten to death, their bodies buried in the hills outside the facility walls. Meanwhile, the government and the facility operators enriched themselves, often by simply not paying the workers a fair wage, or even any wage at all.

수용시설의 수감자들은 형제의집(형제복지원)에서와 마찬가지로 정기적으로 가혹행위를 당하고 때로는 구타로 숨지기까지 했다. 그들의 시체는 수감시설 담장 밖의 언덕에 묻혔다. 그동안 정부와 수감시설 운영자들은 부를 쌓아갔다. 그들은 수감자들에게 일을 시키면서도 정당한 수당을 지불하지 않았고 때로는 전혀 수당을 지급하지 않은 경우도 있다.

 "Documents show that Brothers should have paid the current equivalent of $1.7 million to more than 1,000 inmates for their dawn-to-dusk work over an unspecified period," the AP report notes. "However, facility records and interviews with inmates at the time suggest that, instead, most of the nearly 4,000 people at Brothers were subject to forced labor without pay,"
 
 "그 문서에 따르면 밝혀지지 않은 기간동안 새벽과 일몰 후 일한 1000명 이상의 수감자들에게 현재 시세로 170만 달러 상당의 수당을 지급해야 한다고 나와 있다." 고 AP 통신은 밝혔다. "하지만 수감시설 내의 기록과 당시 수감됐던 수감자들과의 인터뷰에 따르면 실제로는 4000명 이상의 사람들이 아무런 수당을 받지 않고 사역을 했었다고 증언하고 있다."

Chun was forced from office following political protests in June 1987, and in advance of the Olympics, South Korea adopted a democratic form of government. However, South Korea's current government is not interested in reopening the story of Brothers Home: "Ahn Jeong-tae, an official from Seoul's Ministry of the Interior, said focusing on just one human rights incident would financially burden the government and set a bad precedent. The Brothers' victims, he said, should have submitted their case to a temporary truth-finding commission established in the mid-2000s to investigate past atrocities." In a line more damning than apparently intended, Ahn said, "We can't make separate laws for every incident and there have been so many incidents since the Korean War."

전두환은 1987년 국민들의 저항으로 권좌에서 물러났다. 그리고 올림픽 이전에 한국은 민주주의를 쟁취했다. 하지만 한국의 현정부는 형제의 집(형제복지원)에 관한 자료를 공개하는 것을 거부하고 있다. "안정태 내무부장관은 인권문제를 거론하는 것은 정부에 부담이 되고 부정적인 영향을 미치게 된다며 형제복지원 피해자들은 2000년대 중반에 과거의 잔학 행위를 조사하기 위해 만들어진 진실규명위원회에 사건을 접수해야 한다고 말했다. 또한 그는 한국전쟁 이후 수많은 사건들이 있었고 그 수많은 사건들을 위해 별도의 법률들을 계속 만들수는 없다" 고 말해 많은 비난을 받았다.


저작자 표시 비영리 동일 조건 변경 허락


UI/Application Exerciser Monkey

Monkey는 에뮬레이터나 디바이스에서 돌아가는 프로그램으로 클릭, 터치나 gesture 같은 유저 이벤트의 pseudo-random stream을 발생 시키며 system-level 이벤트들도 발생 시킨다. 여러분이 개발중인 앱의 스트레스 테스팅에 어떤 이벤트를 계속 랜덤하게 반복하는 방식으로 Monkey 를 사용할 수 있다.

Overview

Monkey는 command-line 툴이며 어떤 디바이스나 에뮬레이터에서도 실행 할 수 있다. 이 툴은 유저이벤트의 pseudo-random stream을 시스템에 전달한다. 이로서 어플리케이션에 대한 스트레스 테스트에 활용할 수 있다.

Monkey에는 여러개의 옵션이 있는데 크게 4가지로 나뉜다.

    Basic configuration options, such as setting the number of events to attempt.
    Operational constraints, such as restricting the test to a single package.
    Event types and frequencies.
    Debugging options.

Monkey가 작동중 일 때 event를 발생시키고 이것을 시스템에 전달하게 된다. 또한 테스트 중인 시스템에 대해 다음 세가지 조건들을 본다.

    If you have constrained the Monkey to run in one or more specific packages, it watches for attempts to navigate to any other packages, and blocks them.
    If your application crashes or receives any sort of unhandled exception, the Monkey will stop and report the error.
    If your application generates an application not responding error, the Monkey will stop and report the error.


여러분이 선택한 다양하고 변동적인 level에 대해 진행상황에 대한 report를 얻을 수 있다.




Basic Use of the Monkey


command line이나 script 를 이용해서 Monkey를 실행 시킬 수 있다. Monkey는 에뮬레이터와 디바이스 환경에서 작동하기 때문에 여러분의 환경에서 이것들을 shell을 통해 실행 시켜야 한다. adb shell을 이용할 수 있다. 또는 shell을 입력하던가 Monkey command를 직접 입력 할 수도 있다.

The basic syntax is:

$ adb shell monkey [options] <event-count>

아무런 옵션이 없으면 Monkey는 quiet (non-verbose) 모드로 실행 된다. 또한 테스트 앱에 있는 임의의 패키지에 이벤트를 보낼 것이다.
아래에 좀 더 구체적인 command line 이 있다. 이렇게 하면 여러분의 앱을 실행하고 500 pseudo-random event 들을 보낼 것이다.

$ adb shell monkey -p your.package.name -v 500

Command Options Reference

아래 내용들은 Monkey command line에 넣을 수 있는 옵션들이다.


Category Option Description
General --help Prints a simple usage guide.
-v Each -v on the command line will increment the verbosity level. Level 0 (the default) provides little information beyond startup notification, test completion, and final results. Level 1 provides more details about the test as it runs, such as individual events being sent to your activities. Level 2 provides more detailed setup information such as activities selected or not selected for testing.
Events -s <seed> Seed value for pseudo-random number generator. If you re-run the Monkey with the same seed value, it will generate the same sequence of events.
--throttle <milliseconds> Inserts a fixed delay between events. You can use this option to slow down the Monkey. If not specified, there is no delay and the events are generated as rapidly as possible.
--pct-touch <percent> Adjust percentage of touch events. (Touch events are a down-up event in a single place on the screen.)
--pct-motion <percent> Adjust percentage of motion events. (Motion events consist of a down event somewhere on the screen, a series of pseudo-random movements, and an up event.)
--pct-trackball <percent> Adjust percentage of trackball events. (Trackball events consist of one or more random movements, sometimes followed by a click.)
--pct-nav <percent> Adjust percentage of "basic" navigation events. (Navigation events consist of up/down/left/right, as input from a directional input device.)
--pct-majornav <percent> Adjust percentage of "major" navigation events. (These are navigation events that will typically cause actions within your UI, such as the center button in a 5-way pad, the back key, or the menu key.)
--pct-syskeys <percent> Adjust percentage of "system" key events. (These are keys that are generally reserved for use by the system, such as Home, Back, Start Call, End Call, or Volume controls.)
--pct-appswitch <percent> Adjust percentage of activity launches. At random intervals, the Monkey will issue a startActivity() call, as a way of maximizing coverage of all activities within your package.
--pct-anyevent <percent> Adjust percentage of other types of events. This is a catch-all for all other types of events such as keypresses, other less-used buttons on the device, and so forth.
Constraints -p <allowed-package-name> If you specify one or more packages this way, the Monkey will only allow the system to visit activities within those packages. If your application requires access to activities in other packages (e.g. to select a contact) you'll need to specify those packages as well. If you don't specify any packages, the Monkey will allow the system to launch activities in all packages. To specify multiple packages, use the -p option multiple times — one -p option per package.
-c <main-category> If you specify one or more categories this way, the Monkey will only allow the system to visit activities that are listed with one of the specified categories. If you don't specify any categories, the Monkey will select activities listed with the category Intent.CATEGORY_LAUNCHER or Intent.CATEGORY_MONKEY. To specify multiple categories, use the -c option multiple times — one -c option per category.
Debugging --dbg-no-events When specified, the Monkey will perform the initial launch into a test activity, but will not generate any further events. For best results, combine with -v, one or more package constraints, and a non-zero throttle to keep the Monkey running for 30 seconds or more. This provides an environment in which you can monitor package transitions invoked by your application.
--hprof If set, this option will generate profiling reports immediately before and after the Monkey event sequence. This will generate large (~5Mb) files in data/misc, so use with care. See Traceview for more information on trace files.
--ignore-crashes Normally, the Monkey will stop when the application crashes or experiences any type of unhandled exception. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.
--ignore-timeouts Normally, the Monkey will stop when the application experiences any type of timeout error such as a "Application Not Responding" dialog. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.
--ignore-security-exceptions Normally, the Monkey will stop when the application experiences any type of permissions error, for example if it attempts to launch an activity that requires certain permissions. If you specify this option, the Monkey will continue to send events to the system, until the count is completed.
--kill-process-after-error Normally, when the Monkey stops due to an error, the application that failed will be left running. When this option is set, it will signal the system to stop the process in which the error occurred. Note, under a normal (successful) completion, the launched process(es) are not stopped, and the device is simply left in the last state after the final event.
--monitor-native-crashes Watches for and reports crashes occurring in the Android system native code. If --kill-process-after-error is set, the system will stop.
--wait-dbg Stops the Monkey from executing until a debugger is attached to it.



저작자 표시 비영리 동일 조건 변경 허락

자바스크립트 기초 메모

2016.03.24 07:55 | Posted by 솔웅


* 자바스크립트 기초

- 브라우저가 페이지의 HTML 텍스트를 받아서 DOM 스트럭처에 parse 한다. 그 후 해당 페이지의 content들에 대한 각 층들을 구분해서 표시할 준비를 한다. 그리고 표시하기 전에 style을 적용한 후 표시한다.
- HTML은 정적인 부분을 정의하기에 아주 좋은 언어이다. 하지만 웹의 다이나믹한 부분을 구현하는데는 한계가 있다.
- 자바스크립트는 이 다이나믹한 뷰를 제공하는 클라이언트 side의 가장 강력한 스크립트 언어이다.
- 자바스크립트는 ajax, user experience, responsive web design 의 가장 중요한 부분을 구현한다.
- DOM 은 jQuery 같은 라이브러리를 사용해서 클라이언트 side의 스크립팅을 간편하게 만들어 준다. 하지만 separation of concerns 를 처리하는 문제를 해결하지는 못한다.
- 이의 해결을 위한 다른 라이브러리나 프레임워크들이 있다.

* 자바스크립트의 목적
- 자바스크립트는 객체지향언어이다. 자바스크립트로 객체를 정의하고 메소드와 프로퍼티들을 할당한다.
- 자바스크립트 객체는 배열이나 hash와 관련돼 있다. (key value pairs)
: obj[key]=value 나 obj.name = value 형식으로 키를 할당한다.
: delete obj.name 으로 delete한다.
: string key의 iteration order는 definition order 이고 numeric key는 변경할 수 있다.
- 함수(프로퍼티)는 obj.method() 형식으로 호출된다. 또한 this. 로 참조되고 프로퍼티들은 어느때나 assign되거나 remove 될 수 있다.
- 함수는 new Func(params) 로 constructor에서 실행될 때 새로운 객체를 생성할 수 있다. 이때 대개 이러한 함수의 이름은 대문자를 사용한다.

* 객체 생성하기
- obj = new Object(); , obj = {};

dot notation을 사용하는 경우
var employee ={}; - 값이 정해지지 않은 상태
employee.Id = 12345;
employee.Name = "Tom" - Key : Name, Value : Tom
employee.Name
delete employee.Name
employee => Object {Id:12345}

[]를 사용하는 경우
var employee = {};
employee["Id"] = 12345;
employee["Name"] = "Tom"
employee => Object{Id:12345, Name:"Tom"}
delete employee["Name"]
employee => Object{Id:12345}

* 객체에 존재하지 않는 프로퍼티 참조하기
- 객체에 해당 프로퍼티가 존재하지 않으면 undefined 가 return 된다.
- in operator를 사용해서 키의 존재를 확인할 수 있다.
var employee = {}
employee.Id
employee.Id === undefined
"Id" in employee => false
employee.Id = 12345
"Id" in employee => true



* 객체 키에 대해 iterationg 하기
- for.. in을 사용해서 iterate 할 수 있다.
var employee = {}
employee.Id = 12345
employee.Name = "Tom"
for(key in employee) {console.log("Key : " + key + "Value : " + employee[key]}
==> Key : Id Value : 12345
==> Key : Name Value : Tom

* Object reference
- 객체에 할당된 변수는 그것을 reference 한다. 즉 포인터와 같은 역할을 하는데 실제 data를 가리키는 것이다.
- 이 reference 변수를 사용해서 객체의 property를 바꿀 수 있다.
- 변수는 실제로는 reference 이다. 함수의 객체에 전달할 때의 값이 아니다.
var employee = {};
employee["Id"] = 12345;
var obj = employee; - 같은 객체에 대한 새로운 point
obj.Id = 54321
employee.Id ==> 54321

* this 키워드
-객체에서 함수가 호출될 때 this 가 이 객체의 reference가 된다.

var foo = {
    name : "Guest",
    setName : function(){
        this.name = prompt('Enter your name'); - this 는 foo 객체의 reference 가 된다.
    },
    getName : function(){
        console.log("Your name is : " + this.name);
    }
};

foo.getName(); ==> Your name is : Guest
foo.setName() - 프롬프트가 나타나면 이름을 입력한다.
foo.getName(); ==> Your name is : '프롬프트에 입력한 이름'

* 생성자 함수
- obj = {...}를 사용해 객체를 생성할 수 있다.
- 다른 방법으로는 constructor를 사용할 수 있다. 이 때 Constructor는 Pascal case 여야 한다.
- 초기에 빈 객체인데 여기에 초기화 할 때 어떤 프로퍼티를 할당해야 하는 경우 사용한다. result 는 returned 이다.

function Calculator(firstVar, secondVar) {
    this.firstVar = firstVar;
    this.secondVar = secondVar;
    this.sum = function(){
        return this.firstVar + this.secondVar;
    }
}

new Calculator(5,5);
var calcObj1 = new Calculator(5,5);
var calcObj2 = new Calculator(15,15);

calcObj1.sum(); ==> 10
calcObj2.sum(); ==> 30

* 프로토타입 상속
- 자바스크립트에서 상속은 프로퍼티 베이스이다. 다른 클래스에서 클래스를 상속하는 대신 다른 객체에서 객체를 상속한다.
- 다른 객체에서 객체를 상속하기 위해서는 아래와 같이 한다.
childObject._proto_=baseObject
: 이 syntax는 크롬과 파이어폭스에서 사용된다. 다른 브라우저에서는 내부적으로 이 프로퍼티가 존재한다. (hidden)
childObject = Object.create(baseObject)
ConstructorFunction.prototype = baseObject
: 이 syntax는 최근의 모든 브라우저에서 동일하게 작동한다.

1. _proto_ 사용해서 프로토타입 상속하기
var foo {
    fooVar : "Foo Variable",
    fooMethod : function(){
        console.log(this.fooVar);
    }
}

var bar = {
    barVar : "Bar Variable"
}

bar._proto_ = foo // bar 객체가 foo로부터 상속했다.
==> Object{fooVar: "Foo Variable", fooMethod:function}
bar
==> Object{barVar: "Bar Variable", fooVar: "Foo Variable", fooMethod:function}



2. Object.create() 사용해서 프로토타입 상속하기

var foo {
    fooVar : "Foo Variable",
    fooMethod : function(){
        console.log(this.fooVar);
    }
}

var bar = Object.create(foo) // bar 객체가 foo로부터 상속했다.

bar
==> Object{fooVar: "Foo Variable", fooMethod:function}

bar.barVar - "Bar Variable"
==> Object{barVar: "Bar Variable", fooVar: "Foo Variable", fooMethod:function}

3. prototype 사용해서 프로토타입 상속하기
function Employee(){
    this.Id = 0;
    this.Name = "";
}

function Manager(){}
Manager.prototype = new Employee(); // Manager가 Employee 객체를 상속한다.
==> Employee {Id: 0, Name: ""}
var ani1 = new Manager();
ani1
==>Manager {Id: 0, Name: ""} // new Manager로 생성되는 모든 객체는 ID와 Name을 갖게 된다.
ani1.Id = 1111;
ani1.Name = "Tom"
ani1
==> Manager {Id: 1111, Name: "Tom"}

저작자 표시 비영리 동일 조건 변경 허락

'etc. > Responsive Web' 카테고리의 다른 글

자바스크립트 기초 메모  (0) 2016.03.24
반응형 웹 Media Query 를 위한 CSS 탬플릿 자료  (0) 2012.07.28
이전 1 2 3 4 5 ... 288 다음

티스토리 툴바