갤럭시 노트 10 콘셉트 이미지 (출처: 폰아레나)

(본문을 작성하기에 앞서, 나는 모바일 업계 관계자, 전문가, 지식수준이 뛰어난 일반인이 아님을 밝힌다. 이 글은 철저히 일반인의 시각으로 작성된 글이다.)

갤럭시 노트 10이 올해 8월에 공개 된다고 한다. 삼성 트위너나 폰아레나(모바일 기기 정보 사이트 : phonearena.com)에서 현재 콘셉트 이미지 확인이 가능하다.

현재 공개된 정보 중 가장 눈에 들어오는 것은 Display size이다.

폰아레나에 공개된 노트 10의 화면 크기는 6.8 inches 로 공개되어 있는데, 이는 갤럭시 노트 9의 6.4 inches 보다도 상당 수준 커진 화면 크기이다. 아마도 이 이유가 몇 군데 매체에서 갤럭시 노트 10을 '괴물폰'이라고 명명하는 이유 중 하나이지 않을까?

1. 초창기 스마트폰은 단순함의 시대

스마트폰이 애플사의 독점으로 나오던 초창기 시절, 애플사를 주축으로 이끌었던 스티브 잡스는 "단순함(simplicity)"에 집중했다. "단순함은 복잡함보다 어렵다. 복잡한 사고를 단순하게 만드는 것은 부단한 노력이 수반된다." 살아생전 그가 했던 말처럼, 그는 정말 세상 복잡한 기능을 가지고 있는 단순한 기기를 선보였다. 하지만 그의 말처럼, 그 복잡한 것들을 단순하게 또는 사용/이해하기 쉽게 내놓는 작업은 "부단한 노력"을 수반했을 것이다.

선보이는 방법 또한 매우 단순했던 걸로 기억한다. 단출하게 보였던 아이폰 프레젠테이션에서, 일반 비즈니스 발표와는 다르게 발표 장표에 많은 글자와 기술적 개요도 없었으며, 목차, 불렛 포인트도 없었다. 정말 단순했고 파급력은 엄청났다. 이 발표 또한 "부단한 노력"이 적용되어, 사전에 손의 모양, 어감, 제스처 등을 구성 조합을 맞추어 준비한 발표였다.

이렇게 복잡함을 단순함으로 녹여내는 작업을 통하여 나왔던 초창기 스마트폰은 그 시대에 유행하던 다른 핸드폰과는 다르게 버튼도 몇 개 없었다(볼륨 버튼과 홈 키 파워 키로 이루어져 있던 것으로 기억한다.). 수많은 기능을 구동하던 다양한 버튼(나는 이때 블랙베리의 어떤 버전을 사용했었는데 정말 버튼이 많았었다. 물론 불편함은 따로 인식하지 못했다. 타사 핸드폰들보다 좀 더 많은 수준이었으니까...)들이 한순간에 사라지고, 기존의 기능을 삭제 또는 사용자가 신규 방식으로 사용하도록 유도해야 했다. 사용자는 단순했고, 제작자는 복잡했을 것이다.

초창기 제작자가 원하던, 사용자의 한 손으로 모든 기능 사용이 가능한 스마트 모델은 그렇게 탄생되었다.

 

2. 요즘 스마트폰은 텔레토비

출처 : https://www.youtube.com/watch?v=Sy5wpB8uT7Y (동영상 중)

현대에 들어서는 조금씩 달라지는 것 같다. 갤럭시 노트 시리즈의 화면은 각 시리즈 별로 편차는 있었으나 계속 커져왔다. 2009 년 말 아이폰이 한국에 공식적으로 판매되기 시작한 이후부터 현재까지 한국의 스마트폰의 역사는 약 10년의 세월을 채워간다. 

사람들은 이제 익숙해졌을 것이다. 초창기 작은 화면에서 체험하는 새로운 기능들, 부드러운 터치감, 다양하고 새로웠던 앱들을 10년간 사용하다 보니, 이제는 스마트폰 활용이 생활의 큰 부분으로 자리 잡았거나, 내 생활 중 일부분을 스마폰에 녹여내어 사용한다. 어떤 글에서, 현대인은 한 손이 자유롭지 못하다는 글을 본 적이 있다. 출근길, 퇴근길 등 양팔이 자유로웠던 시절과 다르게, 한 손은 항상 스마트폰을 쥐고 있다(출처: 지하철 1~9호선 (신) 분당선). 익숙해진 만큼, 각자 고유의 생활 패턴이 자기 스마트폰에 녹아 있을 것이며, 활용함에 있어 아무래도 큰 화면을 추구하게 되는 것 같다. 다만 기기의 무게나 그립감이 불편요소로 존재하지 않는 경우에만 말이다.

나 같은 경우에도, 당연히 화면이 작은 것 보다야 큰 게 더 좋다. 이번에 8월에 공개하는 노트 10 이 화면이 크다고 하니 공개하면 실제로 찾아가서 한번 봐야겠다. 무게, 그립감, 휴대성을 고려한 크기가 불편요소로 인식될지, 내 생활을 좀 더 큰 화면에서 편하게 볼 수 있을만한 장점인지 확인해봐야겠다.

Posted by 공급망관리 최선생
,

Photo by  Annie Spratt  on  Unsplash

출처 링크 : https://news.sbs.co.kr/news/endPage.do?news_id=N1005299029&plink=STAND&cooper=NAVER

 

'성구매자 정보 260만 건' 파일 입수…단속 대비까지

성매매를 알선해 준다는 사이트 이름과 그 사이트를 이용한 사람들의 아이디, 휴대전화 번호까지 적힌 파일을 누군가 몇 달 전 저희에게 제보했습니다. 거기에는 자세한 개인정보뿐 아니라 경찰 단속에 대비하기 위한 구체적 방법까지 적혀있었습니다.

news.sbs.co.kr

강남역 10번 출구 옆 PC 방 부근 쓰레기장에서 발견된 USB를 익명의 제보자가 SBS로 투고했다.

성매매 사이트 고객의 아이디, 이름, 휴대전화번호, 날짜, 개인의 고객 특징까지 상세히 적혀 있다네. 타고온 차량 번호까지 다 적혀있다니 이거 뭐 이번에 걸려서 나온사람은 자기가 부인한다고 해도 명단에 있다는 사실만으로도 꽤 껄끄럽게 됐다.

리스트에 있는 목록이 다 최근 기준이고, 대한민국 인구수 5천만명이라고 가정, 성비가 반반, 리스트에 중복이 없음이라고 가정하면 대한민국 남자 중 10% 정도가 저 리스트에 포함되어 있는건가?

이 정도 규모면 그냥 합법화를 하는게 낫겠다. 

2014년 영국이 EU 기준에 따라 성매매와 불법 약물거래 등의 지하경제를 GDP 계상에 포함시키면서 GDP가 엄청나게 급등한 적이 있었다. 불법 약물이야, 불법으로 치사성 등을 고려해서 불법으로 인정한 의학적, 객관적 이유가 있었겠다고 유추해보겠으나, 성매매를 합법화 하면 어떤 부작용이 나타나는건가?

일단 선례를 찾아보기 위해서 구글 검색을 좀 해보았다.

출처: http://worldpopulationreview.com/countries/countries-where-prostitution-is-legal/

 

Countries Where Prostitution Is Legal 2019

Countries Where Prostitution Is Legal 2019 Prostitution is defined as the act of engaging in sexual activity for pay. Many people have moral objections to prostitution, while countries around the world have outlawed prostitution. Many view prostitution as

worldpopulationreview.com

성매매, 성구매가 합법인 나라 (2019년 기준)

우선 눈에 들어오는것부터 찾아보자. 무슬림 국가인 방글라데시의 경우에 성매매가 합법이란 사실이 놀라웠다.

방글라데시의 경우, 3천명이 넘는 성매매 종사자들 중 70% 이상이 10대 소녀들이며, 약물 과다복용도 상당하다고 한다. 그런데, 방글라데시가 어떤 나라인가? 있으나 마나한 정부로 세계 범죄 지수 11위에 위치한 나라가 아니던가?

출처: https://www.numbeo.com/crime/rankings_by_country.jsp

선례를 확인함에 있어 공평성을 더하기 위하여, 범죄지수 수준이 한국과 비슷한 나라중 성매매를 합법화 한 나라를 찾아보는게 옳겠다. 바로 독일이다.

한국과 독일의 범죄 지수 순위

독일의 성매매 합법화가 사회적으로 골머리를 앓고 있다고 주장하는 몇몇의 기사들을 찾았다. 인신매매, 강간, 성병(STDs)에 대해서 제도적 보호가 부족하고 문제가 발생되고 있다고 말하고는 있으나, 그 실질적인 수치나 객관적인 근거는 찾아볼수가 없다.

또한 독일의 경우에는 정부관리하에 성매매 종사자들의 납세, 성매매 관련법 재정, 포주들의 면허 소지 의무화, 의무적 건강검진 등을 제도화 하고 있는데, 이게 객관적 근거없이 제도적 보호 부족하다고 이야기 하는게 크게 와닿지가 않는다.

당장에야 대한민국의 어느 정치인이 감히 자기 표를 놓칠 위험을 감수하면서까지 성매매를 합법화 하자고 이야기를 하겠냐만은 (일단 합법화 하자는 말을 꺼내는 순간 성매매자 또는 성구매자 취급을 받지 않을까?), 앞으로 미래 세수 소득과 현행 비제도적 관리행태를 고려하자면, 굳이 나쁜 생각은 아니어보인다.

Posted by 공급망관리 최선생
,

티스토리를 처음에 보고 정말 놀랐다. 워드프레스만큼 자유롭진 않지만, 그 이상의 CMS 기능으로,

그런데 카테고리에서 주식을 못찾겠다....

큰 실망이다.

어디에 들어가야 하나? 시사 부분에 경제와 가깝다고 볼 수 있나? 실제로 큰 수익은 대부분 정치테마나 남북 테마에서 나오는데, 작년 말에는 방탄 관련주가 엄청나게 뛰었다. 이건 다른 티스토리 블로그들은 주식을 어느 주제와 연관 짓는지 궁금하다.

프로그래밍과 마찬가지로 주식에 관하여 깊은 이해를 가지고 있진 않다. 다만 많은 사람들과 같은 이유로, 빠른 시일 내 수익률과 현금화의 가능성이 있는 주식에 관심이 없다면 거짓말이라고 생각한다.(그럴 수도 있지 뭐 그렇게까지?)

이 카테고리에는 앞으로 주식과 관련하여 읽은 책들을 요약하여 기술할 예정이다.

한국에서 나오는 대부분의 책들은 원론적인 이야기보다는 주야장천 같은 이야기를 HTS 화면을 짜깁기 해서 붙여 넣고 책이라고 파는 경우가 많음으로, 그런 책들은 제외하고, 정말 원론적으로 접근하는 책들만 읽을 예정이니 아마 이 카테고리에 글이 자주 올라오는 일은 없을 것이다.

Posted by 공급망관리 최선생
,

어플을 처음에 키거나, 또는 다른 작업을 실행시켜서 넘어갈 때, 몇몇 간지 나는 어플은 "잠시만 기다려 주세요." "처리 중입니다." 등의 젠틀하고 멋있는 메시지를 중간에 표기한다. (아래의 화면과 같이 말이다.)

잠시만 기다려 달라는 젠틀하면서 멋있는 다이얼로그 메시지

우리도 한번 만들어 보자.

자 우선 프로젝트를 기존에 사용하던 헬로 월드를 그대로 사용하거나, 그 프로젝트가 너무 지저분해졌다면 그냥 Empty 액티비티로 하나 새로 만들자.

그 후에 다음과 같이 MainActivity.java 를 변경한다.

package com.example.activity102; // Package 이름이 com.example.activity102 가 아니라면 변경

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.ProgressDialog; // 추가
import android.os.CountDownTimer; // 추가

public class MainActivity extends AppCompatActivity {

    ProgressDialog progressDialog; // 추가

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
/* 아래로 다 추가 */ 
    public void onStart() {
        super.onStart();
        progressDialog = ProgressDialog.show(this, "잠시만 기다려주세요.", "진행중입니다.",true);
        CountDownTimer timer = new CountDownTimer(3000,1000) {
            @Override
            public void onTick(long millisUntilFinished) {
            }
            @Override
            public void onFinish() {
                progressDialog.dismiss();
            }
        }.start();
    }
}

** Package 는 나와 다를 수 있으니, 각자 자기가 사용하는 것으로 변경 **

우선 ProgressDialog 클래스에서 progressDIalog = ProgressDialog.show(thsi, "잠시만 기다려주세요.", "진행 중입니다.", true); 를 통해 인스턴스를 생성(인스턴스화)한다.

알고 있다. 나도 이 글을 쓰면서 클래스, 인스턴스, 객체의 한방에 이해 가능한 글을 찾아 헤매었고, 나 스스로 이해할만한 결과를 찾지 못해 우선은 그냥 넘어간다. 단순히 인스턴스화 하면 메모리에 잡힌다는 것 정도만 획득하였다.

**우선 넘어가는 이유 중 가장 큰 이유는, 저런 세세한걸 다 이해하려다 내 풀에 내가 지쳐 그간 얼마나 많은 시도를 하였고 포기를 하였는지 정말 셀 수도 없다. 이번 공부는 기능의 우선 구현에 초점을 맞추고, 개념은 차차 보완해 나갈 예정이다. Android Studio 공부 이외에 다른 신규 공부에서 보완해 나갈 수도 있다.

우리가 여기서 사용하는 다이얼로그의 종류는 모들 윈도, 모들 다이얼로그 (modal dialog) 인데, 이 종류는 기존에 작업하던 UI는 다이얼로그 박스가 종료되기 전까지 우선 멈추어있는 형태이다.

코드를 보면 알겠지만 다이얼로그는 progressDIalog.dismiss() 메서드와 함께 종료된다. (그럼 언제??)

눈매가 예리한 병아리는 눈치 챘을게다. CountDownTimer timer = new CountDownTimer(3000,1000) 인스턴스로 우리는 이미 3초간의 대기 시간을 만들었다, import 부분에서 CountDownTimer를 가져왔음을 확인하자.

어쨌든, 다이얼로그는 실행되고 난 후 CountDownTImer timer = new CountDownTimer(3000,1000)로 3초간 대기 후 그다음 dismiss() 메서드 콜로 다이얼로그는 사라진다..ㅠ (잘 가...)

마무리하기 전 궁금한 사항이 있어 하나 해본다.

-------------------------------

 

ProgressDialog progressDialog라고 우선 선언했는데 왜 timer는 인스턴스를 만드는 시점에서 선언했는가?

바꿔보자.

package com.example.activity102;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.ProgressDialog;
import android.os.CountDownTimer;

public class MainActivity extends AppCompatActivity {

    ProgressDialog progressDialog;
    CountDownTimer timer; // timer 를 이쪽으로 옮김

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onStart() {
        super.onStart();
        progressDialog = ProgressDialog.show(this, "잠시만 기다려주세요.", "진행중입니다.",true);
        timer = new CountDownTimer(3000,1000) {
            @Override
            public void onTick(long millisUntilFinished) {
            }
            @Override
            public void onFinish() {
                progressDialog.dismiss();
            }
        }.start();
    }
}

 

이렇게 바꿔도 사실 잘 되더라, 무슨 차이인지는 모르겠다. 그런데

ProgressDialog progressDialog; 부분을 지우고 ProgressDialog progressDialog = ProgressDialog.show(this,......)로 바꾸었을 때는 에러가 나더라. 나중에 왜 그런지 확인해봐야겠다.

.

Posted by 공급망관리 최선생
,

이 개념은 그냥 알아두고 넘어가는 개념이지만, 내가 주워들었던 여러 동영상 강의 및 책에서 중요하게 생각하더라.

바로, 액티비티의 생명주기인데, 생명주기란 말 뜻은 우리가 일반적으로 알고 있는 말 그대로다.

사람이 태어나면서 죽을때까지를 생명주기라고 하는 것처럼, 우리가 생성한 액티비티(앱의 화면) 또한 생성점(시작점)부터 파기까지 일련(또는 회귀되는)의 생명주기를 가지고 있다.

조잡한 pptx로 그림을 그려보았으니 함께 보자 병아리들!

액티비티의 생명주기, life cycle of an activity

사진으로 저장하기 쉽도록 한 페이지에 그림을 그려보았다. 개념 자체를 무조건 외운다기보다는 알고 있으면 좋으니, 우리 모두 그림을 다운로드하기로 하자.

우선 onCreate()라는 건 액티비티가 처음 생성될 때 불러지는 메서드인데, 생성되는 상태(state)를 뜻하기도 한단다. 우리가 만들었던 HelloWorld 프로젝트를 자세히 보면, onCreate()는 기본적으로 만들어 준다. (액티비티 일단 생성은 시켜야 실행을 할 것 아닌가?)

그다음 액티비티의 상태가 사용자가에 가시적이게 되면 onStart() 상태로 넘어간다. 그 뒤 사용자와 상호작용(interactive)하게 되면 또는 상호작용할 준비가 되면, onResume() 상태로 넘어가게 된다. 그 뒤의 메서드도 각 액티비티의 상태에 따라 불러오게(called) 된다.

Helloworld를 AVD 또는 실제 디바이스를 연결하여 실행시킬 때, 현재 나의 액티비티가 어떤 상태인지 보고자 한다면, 안드로이드 스튜디오에서 만들어준 기본적으로 만들어준 MainActivity.java를 다음과 같이 수정하자

package com.example.activity101;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; //추가

public class MainActivity extends AppCompatActivity {

    String tag = "Lifecycle Step"; //추가
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(tag, "In the onCreate() event"); //추가
    }
/* 아래부터 다 추가 */
    public void onStart() {
        super.onStart();
        Log.d(tag, "In the onStart() event");
    }

    public void onRestart() {
        super.onRestart();
        Log.d(tag, "In the onRestart() event");
    }

    public void onResume() {
        super.onResume();
        Log.d(tag, "In the onResume() event");
    }

    public void onPause() {
        super.onPause();
        Log.d(tag, "In the onPause() event");
    }

    public void onStop() {
        super.onStop();
        Log.d(tag, "In the onStop() event");
    }

    public void onDestroy() {
        super.onDestroy();
        Log.d(tag, "In the onDestroy() event");
    }
}

 그 뒤, Shift+F9 또는 디버그 모드로 실행 시킨다면, Debug 창에 사용자가 어플을 실행하고, 홈키를 눌러 내리고 할 때마다 각 액티비티의 상태가 어떻게 변하는지 알 수 있다.

모바일의 홈 버튼 백 버튼을 여러가지 누르다보면 한가지를 발견할 수 있는데, 앱이 onDestroy() 될 때는 바로 Back Button을 누를 때 라는 것이다. 홈 버튼을 누르면 잠시 활동을 정지하고 앱이 휴게상태가 되지만, 백 버튼은 앱에 할당된 resources (자원)을 뺏고, 앱을 완전히 종료시키는 시점이다. 이 부분이 매우 중요하단다.

다른 개발자들이 액티비티의 생명주기를 중요시 하는 이유는 현재 나로서는 크게 와 닿지는 않는 부분이지만, 내 얕은 지식으로 미루어 보자면, 현재 우리는 헬로 월드 딸랑 하나 보여주는 화면을 실행하지만, 인텐트 등을 사용하여 다른 앱이나 다른 액티비티들이랑 연계 활동이 많아지는 복잡한 앱이 될수록, 각 앱의 상태를 잘 이해해야 되기 때문일까?

어쨌거나 계속 알아보며 공부해보자.

 

Posted by 공급망관리 최선생
,