lazy var hStackView : UIStackView = {

        let ret = UIStackView()

        ret.axis = .horizontal

        ret.distribution = .equalSpacing

        ret.alignment = .center

        ret.spacing = 1

        return ret

}()

 TroubleShooting

스택뷰 버그 때문에 검색 하셨을 것 같다.

스크롤뷰 안에 스크롤뷰를 넣었을 때는 dummy UIView()를 생성하여 해당 뷰에 붙인 뒤 스크롤 뷰에 넣으니 버그가 나오지 않았다.

사용자 제스쳐(핀치 줌 인/아웃, 스크롤 등) 에 문제가 있어서 취한 조치였다.

스택뷰 아에 스택뷰를 넣고 또 그 안에 스택뷰를 넣은 후 그 안에서 아무리 그림을 그리더라도 UIView에 그리고 붙이면 아무런 문제가 나오지 않을거라 생각했다.


스택 뷰 안에 스택 뷰는 문제가 된다.

그래프가 같이 들어가는 경우 문제가 되더라. 화면에 나오지 않았다. add arrage는 안나오고 addsubview 는 잘 나오는 현상...

관련해서 인터넷 서핑도 많이 해봤지만 우선, 코드로만 여러번 중첩해서 쓰는 경우는 많지 않아서 아직은 안 쓰는게 낫다고 생각했다.


잘 되는 곳에서는 쓰고 아닌 곳에서는 안쓴다.


대안은?

빌더 패턴으로 UIView를 생성할 때 해당 view 내에서 y값만 증가시켜서 패널을 붙이는 빌더 패턴을 만들면 된다.


코드는?

   func createPanels(s : jhScene, withHeightRatios: ratioNtype...) {

        

        var panel : jhPanel<jhScene>? = nil

        var y : CGFloat = 0.0

        var vHeight : CGFloat = 0.0

        

        "".pwd(self)

        

        for rnt in withHeightRatios {


      if(GS.s.logLevel.contains(.graphPanel)) { print("createPanels(withHeightRatios: CGFloat...)", rnt)}

            

            assert(!(rnt.ratio < 0.1 || rnt.ratio > 10.0), "heightRation Range is 0.1~10.0")

            

            vHeight = rnt.ratio * 0.1 * self.jhSceneFrameHeight

            panel = jhGraphBuilder<jhScene>()

                .type(rnt.type)

                .frame(0, y, jhSceneFrameWidth*4, vHeight)

                .scene(self)

                .build()

            y += vHeight

뭐 이런 식.  그래프 빌더가 호출 될 때마다 height 값을 증가시켜서 스택뷰처럼 보이게 만든다. height가 20 이고 이전 y 값이 0이었다면 그 다음 CGRect의 y값은 20, 또 붙이면 40... 이런 식.



 

jh = junho



'진행 프로젝트 > [진행] My tools.' 카테고리의 다른 글

:-1: Segmentation fault: 11  (0) 2019.04.03
딥러닝 환경 구축 중  (0) 2019.02.07
gitlab clone error  (0) 2019.02.05
리팩토링 중 만난 몇 가지 상황  (0) 2019.02.04
정부 기관 웹 페이지 에러  (0) 2019.01.29

 만나고 먹고 보고 

조인성

카리스마 없음, 잘 생김. 그러나 안시성주로 딱 맞는 인물. 카리스마는 이 영화 이후로 많이 생길듯.

카스스마 없이 모두가 리더로 받드는 이유를 이 영화에서 찾아야 함.


류오성

카리스마 작렬. 너무 카리스마 있다. 특히, 그 카리스마가 눈빛이 흔들릴 때가 있는데 그 부분이 이 영화의 정수.

그런 카리스마 있는 장수의 명을 어기는 발암캐의 성장 과정을 잘 보아야 함.


박성웅

짱개라 싫음. 미안, 지금의 중국인 말하는 것은 아님. 싫은 만큼 연기를 잘하는 것이겠지만 그래도 싫음. 


설현과 그 연인, 그리고 설현

뻔한 선택, 뻔한 전개인데 한국어로 말하는 우리 영화라 그런지 더 현실적.

눈물주의.


멋진 배우들

우리나라 역사물 인 것을 감안해서 출연했는지, 연기력 출중한 배우가 많이 있다. 성동일과 어머니편 조심하삼.

편집

편지으로 해야 하나 영상 편집으로 해야 하나 영화 관련해서 잘 모름. 지인 중에 관계자가 있지만 안 물어보고 싶고, 귀찮으나 안시성 때문에 조금은 알아 보고 싶은 마음이 듦.

크게 나무랄 것 없음 CG, 장면 전환, 300과 비슷한 연출... 우리 기술이 이정도?!


바라는 점

안시성 후속작이 나오던 관련 영화 관계자 분들이 다른 영화를 만들 던 투자가 잘 되었으면 한다. 

 



 




'진행 프로젝트 > [진행] Useful Logs' 카테고리의 다른 글

산본 공영 주차장 찾는 법(사람 기준)  (0) 2019.03.08
미금역 갓파스시  (0) 2019.02.11
장인어른과 한잔!  (0) 2019.02.03
홍석햄과 모임 정리  (0) 2019.02.02
홍석이 햄 만남  (0) 2019.02.01

TroubleShooting 

ERROR MSG.

packet_write_wait: Connection to 35.231.145.151 port 22: Broken pipe

fatal: The remote end hung up unexpectedly

fatal: early EOF

fatal: index-pack failed


sshd_config

ClientAliveInterval 60

ClientAliveCountMax 5

not working properly

sudo launchctl stop com.openssh.sshd

sudo launchctl start com.openssh.sshd


ssh timeout 시간만 늘였다

60 * 5 seconds = 5 min


인터넷 속도 좋을 때는 그냥 잘됨

잘 되는데 갑자기 안되는 경우 인터넷이 느려져서...

 



 

99.99%


SAX/DOM

프로세스와 스레드

Activity/Fragment

사용해본 개발환경이 무엇인지 답하기

알고리즘의 big O

O(log n), O(n), O(n * log n), O(n2) 등등을 보기로 주고,

알고리즘들이 어떤 big O에 속하는지 고르기

인텐트의 사용 케이스와 명시적/암시적 인텐트 설명하기

브로드캐스트 리시버란?

Thread.sleep(), Object.notify(), Object.sleep()에 대해 설명하고 차이점 기술

데이터베이스의 트랜잭션 설명하기

SQLite에서 날짜와 시간 저장 방법 설명하기

클래스를 주고 싱글톤 패턴에 맞게 코드 수정하기

배열 하나 주고 이들을 조합하여 출력하는 방법을 자바 코드로 작성하기

·         TDD 써본  있는가?

·         사전테스트에서 프래그먼트(fragment) 화면을 나눌  있다고 답했는데,그것은 뷰로도 가능하지 않나?

·         ( 질문에 이어뷰로 화면 나누는 것과 프래그먼트로 나누는 것은 어떻게 다른가?

·         프로세스들 사이에 시그널은 어떻게 주고 받나?

·         스레드들 사이에 자료는 어떻게 주고 받나?

·         프로세스들이스레드들이 메모리로 자료를 공유할 방법은 없나?

·         앱을 죽이면그것의 브로드캐스트 리시버는 계속 작동하는가?

·         사전테스트에서 작성한 싱글톤 패턴 문제의 답에 빠진 게 있는 것 같다무엇인지 아는가?

·         콜렉션들 중 ArrayList, LinkedList, HashMap, SparseArray에 대해 설명하고 차이점을 말하라.

·         디자인 패턴 공부했나?

·         (위 질문에 이어) Strategy 패턴에 대해 설명하라.

·         3G 망과 와이파이 망의 다른 점은?

·         LTE 망에서 상태값들에 대해 설명하라.

·         스레드 로컬이란?

자료구조멀티쓰레드. TCP/UDP차이점. Android에서 dp? ios protocol, delegate, datasource 관련암복호화 알고리즘(hex, AES256 )

















3G 망과 WiFi 망 다른 점

-       Handoff인 것 같다. 3G cell간의 handoff는 깔끔한데 반해 WiFi는 3G에 끼던 Wifi AP간이던 소켓 통신을 하는 어플이라면 무조건 끊기고 본다.

LTE 관련

-       4G는 WiBro, Wireless Broadband, LTE-Advanced, 보통 LTE는 3.9G 115Mb, 이론 1Gb

-       2G : GSM(Global System for Mobile Communication), CDMA(Code division multiple Access), TDMA(Time division multiple Access)

-       3G : W-CDMA(Wideband code division multiple access), IMT-2000(International Mobile Telecommunication-2000) 최고속도는 HSDPA(14.4Mb)

-       LTE status – no signal(RSSI : signal strenth , connected, power save mode…

  • Tables that show the coverage type, RSSI and Ec/Io (for 3G), RSSI and CINR (for 4G WiMAX), and RSRP and RSRQ (for 4G LTE).

    RSSI reflects the signal strength of the network.

    Ec/Io is a dimensionless ratio of the average power of a channel, typically the pilot channel, to the total signal power.

    RSRP stands for Reference Signal Received Power and reflects the LTE signal strength.

    CINR stands for Carrier to Interference-plus-Noise Ratio and is a measurement of signal effectiveness.

    RSRQ stands for Reference Signal Received Quality and reflects the LTE signal quality. RSRQ is the ratio between the RSRP and the Received Signal Strength Indicator (RSSI).

    The first table also shows the type(s) of 3G service you have: 1X, 1xEV-DO, or both. (To determine whether you have EV-DO Rev. 0 or Rev. A service, use the text near the 3G icon; see 
    Mobile Broadband Information and Settings.)


-       안드로이드에서 LTE 시그널 아이콘을 만들려면 어떻게 해야 할까? Connected(Active) SIGNAL Strenth, Handoff .. 고려

SAX/DOM, Simple API for XML, document object model

-       둘다 XML 파서. SAX의 경우 인터프리터 방식으로 처리하고 DOM은 메모리에서 한번에 처리함메모리에 올리니 두번 읽을 때나 전체 구조 수정 때 좋지만 메모리 많이 씀. SAX의 경우 읽기만 할 때노느가 열렸다가 닫힐 때마다 이벤트가 발생함. Apache의 axis는 XMLpullParser라고 하고 이벤트마다 핸들러를 호출하지 않는 형태.

싱글톤 패턴 -> 싱글톤에 맞게끔 수정하려면 기본 코드 숙지는 필수

       public class Singleton {

       private volatile static Singleton si;

       private void Singleton() {

       }

       public static Singleton getInstance() {

       if (si == null)

       synchronized (Singleton.class) {

       if (si == null) si = new Singleton(); }

       return si; }}


사용해 본 개발환경

-       언어는 GW-BASIC, Quick-BASIC, 씨앗, C, C++, JAVA, ASMBLY, 임베디드등의 각종 Crosscompiler, coder warrior, borland사께 좋았는데… 각 언어들의 IDE

-       최근은 Android Studio, Ecilpse (SUN을 망하게한)


알고리즘의 Big O

-       최악의 수행시간이 될 수 있는 가능성 판단

-       Big-Omega는 그 반대. Big-theta는 빅오랑 빅오메가를 동시 만족하는 애들

-       버블정렬삽입정렬의 경우 최악은 O(n^2), n^2은 최악의 상황을 말함최선은 O(n)


브로드캐스트리시버란?

-       안드로이드 앱은 4가지중 하나를 구현해야 하는데 액티비티서비스브로드캐스트리시버컨텐트 프로바이더다그중에 하나로서 시스템상에 발생하는 브로드케스트성 인텐트를 감지하는 역할을 한다문자 수신을 감지하거나 PUSH service, 첫 부팅 때 서비스를 실행하게 할 때 쓰인다.


인텐트의 사용케이스

-       위에서 말한 4가지 케이스 중에서 컨텐트프로바이더를 제외하고 인텐트는 다 쓰인다액티비티가 다른 액티비티를 호출하던지다른 앱을 실행할 수도 있다.


명시적 인텐트와 암시적 인텐트

-       액티비티 이름을 지정하고 보내면 명시적 인텐트이며명시하지 않으면 암시적 인텐트로서 각 앱들의 AndroidManifest.xml에서 인텐트 필터에 걸리는 것들. ACTION, CATEGORY, DATA, TYPE, COMPENET, EXTRAS, FLAGS 사용

-       New Intent(Intent.ACTION_DIAL, Uri.parse(“tel:......”0));

프로세스 통신

-       Shared memory, 세마포어, pipe, named pipe, file, socket, messagfe passing, memory mapped file, signal.

안드로이드 프로세스 통신 메커니즘

-       바인더 바인더 드라이버를 통해서 커널 공간 메모리를 이용한다.

-       RPC : remote procedure call, OOP에서는 remote invocation, remote method invocation.

-      <v:shapetype data-blogger-escaped-coordsize="21600,21600" data-blogger-escaped-filled="f" data-blogger-escaped-o:preferrelative="t" data-blogger-escaped-o:spt="75" data-blogger-escaped-path="m@4@5l@4@11@9@11@9@5xe" data-blogger-escaped-stroked="f" id="_x0000_t75"><v:stroke data-blogger-escaped-joinstyle="miter"><v:formulas><v:f data-blogger-escaped-eqn="if lineDrawn pixelLineWidth 0"><v:f data-blogger-escaped-eqn="sum @0 1 0"><v:f data-blogger-escaped-eqn="sum 0 0 @1"><v:f data-blogger-escaped-eqn="prod @2 1 2"><v:f data-blogger-escaped-eqn="prod @3 21600 pixelWidth"><v:f data-blogger-escaped-eqn="prod @3 21600 pixelHeight"><v:f data-blogger-escaped-eqn="sum @0 0 1"><v:f data-blogger-escaped-eqn="prod @6 1 2"><v:f data-blogger-escaped-eqn="prod @7 21600 pixelWidth"><v:f data-blogger-escaped-eqn="sum @8 21600 0"><v:f data-blogger-escaped-eqn="prod @7 21600 pixelHeight"><v:f data-blogger-escaped-eqn="sum @10 21600 0"></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:f></v:formulas><v:path data-blogger-escaped-gradientshapeok="t" data-blogger-escaped-o:connecttype="rect" data-blogger-escaped-o:extrusionok="f"><o:lock data-blogger-escaped-aspectratio="t" data-blogger-escaped-v:ext="edit"></o:lock></v:path></v:stroke></v:shapetype><v:shape data-blogger-escaped-alt="cd1f09671e309c6fe682fb50fe10307b.png" data-blogger-escaped-o:spid="_x0000_i1027" data-blogger-escaped-style="height: 303pt; mso-wrap-style: square; visibility: visible; width: 422.25pt;" data-blogger-escaped-type="#_x0000_t75" id="그림_x0020_1"><v:imagedata data-blogger-escaped-o:title="cd1f09671e309c6fe682fb50fe10307b" data-blogger-escaped-src="file:///C:\Users\joe\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"></v:imagedata></v:shape>

쓰레드 통신

-       어떤 쓰레드를 말하는 것인지? For문 돌려서 만들어 내는 쓰레드들인지하나의 앱에서 도는 여러 쓰레들인지각자 다른 앱들에서 파생된 Thread 들인지그 Thread가 어떤 일을 하느냐에 따라 달라질 듯

-       안드로이드라면 File, DB로 교환을 해도 되고 브로드 캐스팅을 이용해도 되고 static 변수를 이용해도 되고 방법은 많이 있을 듯하나의 함수(static volatile변수가 있는)를 같이 씀.

안드로이드에서 프로세스와 쓰레드

-       Application component(액티비티서비스, BR, CP)가 시작될 때 리눅스 프로세스가 생성되면서 싱글쓰레드가 돈다그 싱글 쓰레드를 메인 쓰레드 혹은 UI 쓰레드라고 부른다.

-       프로세스 상태는 전/후면보이는서비스빈 프로세스로 되어 있다.

-       핸들러, Asynctask,, RunOnUiThread로 관리를 해줘야함.

액티비티와 Fragment

-       액티비티는 안드로이드 4대 컴포넌트고 Fragment는 허니콤(타블렛을 위한 안드로이드)에 화면 분할을 위해 나온 개념꼭 Fragment로 구현안하고 Relative Layout으로 적당히 구현해도 됨아이스크림으로 넘어오면서 폰에도 통합되었는데 Scroll이나 viewPager만큼 쓰이진 않는 듯.

정렬 알고리즘의 Big O

-       nLogn = 힙정렬퀵정렬병합정렬

-       n^2 = 선택버블삽입

-       속도 : n^2 > nLogn > n > logn

-       Nlogn => n=1일 때 0, 2 = 2, 3 = 4.75, 4 = 8, 5 = 11

트랜젝션

-       현대의 웹 보안에 있어서 매우 중요한 역할을 차지하며 DB와 JAVA 언어가 데이터를 주고 받는 과정에 원자성을 부여하는 수단

-       한줄의 쿼리로 도저히 끝낼 수 없는 상황이 왔을 때쇼핑을 하는데 회원이 잔여금액을 확인하고 선택상품을 구매했을 때 잔여 금액이 감소하는

-       상품구매에서 Exception 발생해서 상품이 없는데 있다고 되거나 잔여금액이 감소하기 직전 서버 전원이 나갈 때.

-       쿼리 여러 개를 하나의 트랜젝션으로 묶어서 에러 발생시에 원래대로 돌려놓는 기술

-       All or nothing. Commit and rollback

-       트랜젝션 전에는 프로시져가 있었다.

-      <v:shape data-blogger-escaped-alt="http://pds23.egloos.com/pds/201201/13/59/d0142459_4f0fddd013079.png" data-blogger-escaped-o:spid="_x0000_i1026" data-blogger-escaped-style="height: 393.75pt; mso-wrap-style: square; visibility: visible; width: 468pt;" data-blogger-escaped-type="#_x0000_t75" id="그림_x0020_2"><v:imagedata data-blogger-escaped-o:title="d0142459_4f0fddd013079" data-blogger-escaped-src="file:///C:\Users\joe\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png"></v:imagedata></v:shape>

-       얘가 프로시져… 걍 요래 생겨먹었다.

앱이 죽어도 브로드 캐스트 리시버는 살아 있는가?

-       BOOT COMPLETE 는 앱이 죽어 있어도 받는걸보면 AndroidManifest.xml이 있는 한분명 살아 있다.

SQL JOIN

-       INNER JOIN : 두 테이블간의 조인 조건을 만족하는 ROW만 리턴

-       OUTER JOIN : LEFT, RIGHT, FULL이 있고 LEFT의 경우 왼쪽 다 들고와서 오른쪽이랑 매칭 없으면 NULL 리턴

-       Select a.id, a.name from tb1 a inner join tb2 where a.id = b.id

-       Insert into tbl2 (id,car) values (2, ‘MIN’)


샤딩 몽고DB는 데이터 베이스 자체에서 샤딩기능을 제공수평분할 서현동 주민 테이블정자동 주민 테이블샤딩 서현동은 A DB정자동은 B DB에 물리적으로 나누는 것.

Lock : Lock I= new ReentrantLock();

l.lock();

try {

}

Finally {

l.unlock();

}

크리티컬 섹션은 한번에 하나의 쓰레드만 실행시킴. Lock을 얻지 못하면 시스템 호출


스레드 로컬이란?

하나의 인스턴스에서 생성되는 쓰레드들이 각각 정보를 저장하려고 할 때 이용.

뷰로 화면 나누는 것과 프래그먼트로 나누는 것은 어떻게 다른가?

(위 질문에 이어) Strategy 패턴에 대해 설명하라.

자료구조

스레드들 사이에 자료는 어떻게 주고 받나?

프로세스들이스레드들이 메모리로 자료를 공유할 방법은 없나?

콜렉션들 중 ArrayList, LinkedList, HashMap, SparseArray에 대해 설명하고 차이점을 말하라.

HashMap 빼고는 키 없이 저장하는 방식. ArrayList는 일반적으로 쉽게 쓰는 방식, LinkedList는 ArrayList에서 중간 데이터 삽입삭제가 일어나면 이걸로 바꾸어야 함. HashMap은 키값과 같이 저장하고 동기화에는 취약그럴 땐 HashTable 쓰고. SparseArray는 성능 짱 안드로이드용 ArrayList로 알고 있음.

ArrayList : 데이터를 중간에 끼워넣지 않을 때 싸용



O(log n), O(n), O(n * log n), O(n2) 등등을 보기로 주고,

알고리즘들이 어떤 big O에 속하는지 고르기

Thread.sleep(), Object.notify(), Object.sleep()에 대해 설명하고 차이점 기술

SQLite에서 날짜와 시간 저장 방법 설명하기

TimeZone tm = TimeZone.getTiemZone(“Etc/GMT-9”);

TiemZone.setDefault(tmzone);

System.currentTiemMills()

New Java.util.Date()getTime()

Cusor.getLong(xxx)

New SimpleDataFormat(“yyyy-mm-dd HH:mm:ss”).format(datetime);


Db.execuSQL(“update TABLE_NAME set COLUMN_NAME = datetime(‘now’) where …”);



   값을 가져오기 위한 일반적인 방법은
   Cursor row = databaseHelper.query(true, TABLE_NAME, new String[] {COLUMN_INDEX}, ID_COLUMN_INDEX + "=" + towid, null, null, null, null, null);
 
   String dateTime = row.getString(row.getColumnIndexOrTHrow(COLUMN_INDEX));

   // string
으로 가져오기 위해서는 이 값을 로컬 형식으로 변화 하여야 합니다.
  DateFormat iso8601Format = new SimpleSDateFormat("YYYY-MM-DD HH:MM:SS");
  try {
     date = iso8601Format.parse(dateTime);
  } catch(ParseException e) {
     Log.e(TAG, "Parsing ISO8601 datetiem failed", e);
  }

  long when = date.getTime();
  int flags = 0;

  flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME;
  flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE;
  flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
  flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR;

  String finalDateTime = android.text.format.DateUtils.formatDateTime(context,when    
                                                    +TimeZone.getDefault().getOffset(when), flags);

배열 하나 주고 이들을 조합하여 출력하는 방법을 자바 코드로 작성하기

System.arraycopy(src, pos, dec, pos, length)


<v:imagedata data-blogger-escaped-o:title="175466144CC11C27552BBC" data-blogger-escaped-src="file:///C:\Users\joe\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"></v:imagedata>


SparseArray<bitmap> _bitmapCache = new SparseArray<bitmap>();

</bitmap></bitmap>

   private void fillBitmapCache() {

        _bitmapCache.put(R.drawable.icon, BitmapFactory.decodeResource(getResources(), R.drawable.icon));

        _bitmapCache.put(R.drawable.abstrakt, BitmapFactory.decodeResource(getResources(), R.drawable.abstrakt));

        _bitmapCache.put(R.drawable.wallpaper, BitmapFactory.decodeResource(getResources(), R.drawable.wallpaper));

        _bitmapCache.put(R.drawable.scissors, BitmapFactory.decodeResource(getResources(),

    }


Bitmap bm = _bitmapCache.get(R.drawable.icon);


int key = 0;

for(int i = 0; i < sparseArray.size(); i++) {

   key = sparseArray.keyAt(i);

   // get the object by the key.

   Object obj = sparseArray.get(key);

}


ORM(Object Relational Mapping)의 정의

데이터베이스 연계처리를 위하여 기존의 SQL에 의존하는 것이 아니라직접 테이블의 컬럼을 자바

Class에 매핑하거나 XML형태의 SQL을 실행하여 처리를 수행하는 Persistence Layer를 담당하는

Framework 개발모델


Definitions of "strong" or "weak"[edit]<p></p>

A number of different language design decisions have been referred to as evidence of "strong" or "weak" typing. In fact, many of these are more accurately understood as the presence or absence of type safetymemory safetystatic type-checking, or dynamic type-checking.


느긋한 계산법 yield return;

커링 – 함수(function)의 인자를 줄이는 것

Concurrent

continuations




Interface call back


Class Sum {

Interface OnMaxNumberDb {

Void onMaxNumber(int number, int exceed);

}


Private onMaxNumberCb myCallback;


Public void setOnMaxNumberCb(OnMaxNumberCb callback) {

MyCallack = callback;

}


Public int addNumber(int adder) {

Number = number + adder;

If(myCallback != null) {

Ifif(number >= maxNumber) {

myCallback.onMaxNumber(number, number-maxNumber);

return number;

}


Sum total = new Sum();

Sum.onMaxNumberCb call back = new Sum.OnMaxNumberCb() {

Public void onMaxNumber(int number, int exceed) {

Syso

}

}

Total.setOnMaxNumberCb(callback);

Hibernate는 객체 모델링(Object Oriented Modeling)과 관계형 데이터 모델링(Relational Data Modeling) 사이의 불일치를 해결해 주는 ORM(Object Relation Mapping) 도구입니다.



다형성


               

 객체지향개념에서의 다형성이란 '여러 가지 형태를 가질  있는 능력' 의미하며자바에서는  타입의 참조변수로 여러 타입의    참조할  있도록 함으로써 다형성을 프로그램적으로 구현하였다

작성중

 

 

OverLoading & OverLiding


              

 오버로딩은 기존에 메소드의 인자를 이용하여서 하나의 함수에 여라가지 기능을 만드는  입니다.

 오버라이딩이란 상위 클래스에 있는 메서드와 똑같은 메서드를 하위 클래스에서 다시 만드는 행위를 말합니다 하위 클래스에서 메서드를 재정의하는 것을 말합니다.주로 생성자메소드를 정의할  많이 사용합니다.

 

 

Stack , Q


                컴퓨터의 알고리즘에서 가장 흔하게 사용되는 자료 구조가 스택과 큐이다

.... 작성중

 

 

JAVA 특징


              

 Java언어의 특징은 플랫폼에 독립적인 객체지향언어라는 것이 가장 두드러지는 특징입니다.

플랫폼에 독립적이라는 것은 리눅스,윈도우 등과 같은 개발환경에 제약을 받지 않고 어느 플랫폼에서나 코드의 호환성과 재사용이 자유롭다는 것을 의미합니다.

JSP, 모바일서버네트워크프로그램소켓프로그램,  . . . . . . 

 

 

 

가비지콜렉션 garbage collection ベジコレクション

              

 가비지 컬렉션Garbage Collection이란시스템에서  이상 사용하지 않는 동적 할당된 메모리 블럭 혹은 개체를 찾아 자동적으로 다시 사용 가능한 자원으로 회수하는 것을 말한다시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터Garbage Collector라고 하며가비지 컬렉션은 약자로 GC라고 부르기도 한다.

일반적인 가비지 컬렉터 알고리듬Algorithm 다음과 같이 동작한다.


1.  이상 프로그램에서 사용하지 않을 개체Object 찾아낸다.

2. 해당 개체가 사용하는 리소스를 회수한다.

기술이론폴더 참조

일본IT용어사전중

ベジコレクションとは、OSのメモリ管理機能の一つ。プログラムが使用しなくなったメモリ領域や、プログラム間の隙間のメモリ領域を集めて、連続 した利用可能なメモリ領域を増やす技術。これが不完全なOSは次第に利用可能なメモリが減ってゆくため、一定期間ごとに再起動 を強いられることになる。Java言語の実行環境(JVM)は自身がガベジコレクション機能を持っており、Javaプログラマがメモリ管理に気を使わなくてもいいようにしている。

 

[DB]Statement PreparedStatement 차이

                 정적 SQL 문을 실행해작성된 결과를 돌려주기 위해서(때문에사용되는 객체입니다.

디폴트에서는,Statement객체 마다 1 개의ResultSet객체만이 동시에 오픈할  있습니다따라서, 1 개의ResultSet객체의 read다른 read 의해 끼어들어지면(), 각각은 다른Statement객체에 의해 생성된 것이 됩니다.Statement인터페이스의 모든 execution 메소드는문장의 현재의ResultSet객체로 오픈되고 있는 것이 존재하면그것을 암묵에 클로즈 합니다.

관련 항목 : Connection.createStatement(),ResultSet

 

 Class diagram

              

클래스 다이어그램은 "클래스"라고 하는 객체지향 설계단위를 이용하여 시스템의 정적인 구조(모델) 표현한 것이다클래스 다이어그램은 분석설계구현  다양한 상황에서  사용목적에 맞게 입도를 조절하여 기술   있다.

예제 : 스트럿츠의 클래스다이어그램

クラス図 ( Class Diagram ) yahoo.co.jp검색 출처

システムの構造及びオブジェクトの枠組みを静的に表現するための表記法。 処理をどのようにクラス分けするか、抽象クラスインタフェイスなどが明確になるため、 詳細設計の初期で使用されることが多い。

 

 Sequence diagram

              

작성중

 

 

웹어플리케이션이 동작하는 방식을 설명해라.

               


WebApplication 대해서... 도쿄대 학술지인것같은데.. 야후재팬검색중 찾은것임

 Webアプリケションとは、Webバ上で動作するアプリケションのことを指します。ユザがサバ上のアプリケションからデタを 取り出す、あるいはアプリケションに対してデタを送信するために、Webのフレムワクが利用 されます。すべてのデタ、デタの処理プログラムはサバ上に置かれるため、基本的にはユザが特別なプログラムのインストルを行うことなく、WebブラウザさえあればWebアプリケションは 利用できます。


 現在、インタネットの上で行われている多様なサビスや商品の販売では、Webアプリケションが用いられています。いくつか  をあげてみましょう。GoogleYahoo!といった検索エンジンでは、サバに用意されたホムペジに関する膨大なデタベスから、ユザの入力したキドにマッチするものをプログラムが検索して 取り出し、HTMLに加工してユザに提示します。Amazon.comDellといった企業は、自社の扱う商品のデタベスをサバに置き、サバ側のプログラムがユザの要求に応じて商品情報を提示し、売買の契約を行い、発送処理まで行ないます。

Webアプリケションを利用したサビスは、1990年代後半 に一般の人の生活に広く普及しました。こうした背景には、時間や場所の制約を受けずに自由にサビスの利用 やショッピングをできること、膨大な商品を揃えられること、個の要求に合わせたきめ細かなカスタマイズが可能であること、キドなどで商品の検索が容易に行えること、といった従来の店舗には

Webアプリケションない魅力があげられます。

また、こうしたWebアプリケションのメリットに目をつけたのは、一般の消費者を対象とした企業だけではありません。製造業などでの部品や資材の調達では、必要な仕様を満たす商品を 世界中のサプライヤから低い値段で購入する必要があります。こうしたB2B(Business to Business)の市場でも、Webアプリケションの提供する高率的 な情報共有機能が使われています。近年では、変化の激しい消費者の需要に合わせて、なるべく在庫を持たず必要な分だけ生産し無駄 をなくすことが必要と考えられています。販売店での消費者の購買トレンドの収集から、卸業者、メ、部品メが一体となって情報を交換する情報システムを 利用したSCM(Supply Chain Management)が注目されています。Webアプリケションはこういった場面においても重要な役割を果たしています。近年では、こうしたB2Bにおける企業間のデタ処理のさらなる自動化の枠組みとして、Webビスが注目されています。Webアプリケションのユザが人間であるのに対して、Webビスは計算機プログラムがユザとなります。

 

 

EJB?

               

 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB) 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다, EJB 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE 자바 API  하나로주로  시스템에서 JSP 화면 로직을 처리하고, EJB 업무 로직을 처리하는 역할을 한다.

http://ko.wikipedia.org/wiki/엔터프라이즈_자바빈즈

 

 

MVC 패턴이란?

                

 객체지향 설계를 처음 접하기 이전부터 MVC 모델에 대한 개념적인 지식은 한번쯤 접해 보았을 것입니다가장 기본적인 정의를 설명하자면 M( Mode ) Application Business Logic , 객체 또는 데이터의 가공을 책임지는 컴포넌트들의 집합체이고 C ( Control )이란 객체 또는 데이터의 흐름을 책임지는 컴포넌트 , V( View ) 객체 또는 데이터의 생성을 책임지는 컴포넌트로써 일반적으로 Data 입력 부분과 출력 부분을 담당합니다  참고자료링크

 


MVCとは、ソフトウェアの設計モデルの一つで、処理の中核を担う「Model」、表示出力を司る「View」、入力を受け 取ってその内容に応じてViewModelを制御する「Controller」の3要素の組み合わせでシステムを実装する方式。

メインの処理はModelに実装し、Modelは画面出力などは行なわない。処理結果はViewに渡され、画面表示などが行なわれる。ユザからの入力はControllerが受け 取り、何らかの処理が必要な場合はModelに依頼し、出力が必要な場合はViewに依頼する。

このように、明確に機能ごとに分離することで、開発作業の分業が容易になり、また、互いに仕様変更の影響を受けにくくて済むようになる。

もともと、Smalltalkでのグラフィカルインタフェス設計に用いられた概念で、最近ではJ2EEなど、エンタプライズシステムの開発などに応用される方法論である。

 

 

어떤 웹어플리케이션 서버를 사용했나?

              


 

 

OOP에서 interface abstract class 차이점은?

               

16. 인터페이스와 추상 클래스

[출처기술면접자료1 - JAVA기본기술이론부분|작성자 쪼꼬








c c++ 차이점

 클래스  => opp언어

 절차지향, OPP(object oriented programming : 객체 지향 언어)

 -> 클래스자료형을 이용해 만드는 program


 -다형성

 객체지향개념에서의 다형성이란 '여러 가지 형태를 가질  있는 능력' 의미하며자바에서는  타입의 참조변수로 여러 타입의     참조할  있도록 함으로써 다형성을 프로그램적으로 구현하였다


-오버로딩 오버 라이딩

오버로딩은 기존에 메소드의 인자를 이용하여서 하나의 함수에 여라가지 기능을 만드는것 입니다

오버라이딩이란 상위 클래스에 있는 메서드와 똑같은 메서드를 하위 클래스에서 다시 만드는 행위를 말합니다 하위 클래스에서 메서드를 재정의하는 것을 말합니다.주로 생성자메소드를 정의할때 많이 사용합니다.


 - 정적 변수지역변수전역변수를 스택과 힙과 관련에서 설명해보세요.

전역변수는 프로그램에서 전반적으로  사용이 가능 함수 밖에서 정의해 놓으면 다른 함수에서도 사용할  있습니다.

지역변수는 함수 안에서만 사용이 가능한 변수입니다다른 함수에서는 사용을 못하죠.

정적변수는 한번 정의 하면  값은 계속적으로 메모리에 남아 있는 것입니다.

프로그램이 종료할때 메모리에서 지워집니다.함수안에서 사용해도 함수가 끝날때 지워지지 않습니다


- OSI 7 Layers 대한 질문 

7계층응용 (application layer)

6계층표현 (presentation layer)

5계층세션 계층(session layer)

4계층전송 계층(transport layer)

3계층네트워크 계층(network layer)

2계층데이터링크 계층(data link layer)

1계층물리 계층(physical layer)


 - 회사나   궁금한 


 - 스터디 ONE 이라고 하셨는데 세미나를 해보신적이 있습니까?


 - 후배들에게 도움을 주고 계십니까?


 - WIPI 이용한 게임을 제작을 하셨는데 어떤 종류의 게임이며 코드 길이는 얼마정도 입니까?


 - 프로그램을 개발하는데 제일 중요한 것이 무엇이라고 생각합니까?

   보기 : 기획 설계 코딩


 - 학교에서 프로그래밍을 하는데 컴파일러를 어떤 것을 쓰십니까?


- java 특징에 대해 말하세요.

Java언어의 특징은 플랫폼에 독립적인 객체지향언어라는것이 가장 두드러지는 특징입니다.

플랫폼에 독립적이라는 것은 리눅스,윈도우 등과 같은 개발환경에 제약을 받지 않고 어느 플랫폼에서나 코드의 호환성과 재사용이 자유롭다는 것을 의미합니다.

JSP, 모바일서버네트워크프로그램소켓프로그램,


- stack  Q 설명하세요.

컴퓨터의 알고리즘에서 가장 흔하게 사용되는 자료 구조가 스택과 큐이다

스택은 모든 작업이 리스트의 한쪽 끝에서만 수행되는 선형 리스트의  형태로리스트의 한쪽 (TOP)에서 원소를 삽입하거나 제거하는데 사용된다그러므로 리스트에서 스택에 마지막으로 입력된 원소가 제일 먼저 제거의 대상이 된다그래서 스택을 LIFO (Last In First Out) 라고도 한다

큐에서 삽입은 REAR에서 이루어지고제거는 FRONT에서 이루어진다그러므로 큐에 A,B,C,D,E순으로 원소가 삽입되었다면제일 먼저 제거되는 원소는 A이다.


- DB 경우 ERD 그려봤는지프로그램은 무엇을 사용하는지어느 정도 수준인지?

Entity Relationship Diagram 약자로 개체관계도




다음 용어들은 자바 기반 업종의 면접시 물어보거나 물어볼만한 질문들입니다.

1.     ERP(Enterprise Resource Planning)
전사적 자원 관리 시스템

-기업의 모든 자원을 전체적으로 관리하여 최적화된 기업활동을 통합,관리 시스템에 근거하여 스피트경영과 투명경영의 효과를 꾀하는 

2.     Framework 프레임워크(제가 생각하는 모범 답안은 Framework Library 비교하여 설명하는 것입니다.)

특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스들과 인터페이스의 집합

장점 - 재사용성단순성역할구분확장성유지보수용이

프레임웍과 라이브러리 차이

  라이브러리는 어플리케이션에서 호출할  있는 함수와 루틴으로 구성되어 있고

  프레임워크는 어플리케이션에서 특정 기능들을 제공하기 위해 확장할  있는 일반적이고 상호 협력적인 컴포넌  트를 제공

3.     Struts 스트러츠(Struts외에도 Spring, 하이버네이트  다양한 프레임워크가 존재하나 예로  3가지 정도의 프레임워크에 대한 특징과 MVC 모델에서 커버하는 부분을 키워드로 잡아서 설명하면   같습니다.

컨트롤러에 강점이 있는 프레임워크의  종류

단일 진입 서블릿을 사용하여 관리가 용이(커멘드패턴을 생각하면 )

4.     Model 1 Model 2 차이점
MVC 
모델을 기준으로 설명

5.     EJB
최근에는 엔티티빈 대신 POJO 활용하는 측면이 강한데 이러한 경향은 객체지향적인 프로그램 기법을 적용하기 위한 방편이라는 것을 염두에 두고 세션 엔티티   메세지 드리븐   특징을 설명

분산 객체기술에 기반을  컴포넌트 기술

처리속도가 느림

재사용성이 뛰어남

개발 속도가 빠름

구성

   홈인터페이스(빈의 생성과 소멸관련 작업

   리모트 인터페이스(비지니스 메소드 선언)

    클래스 - SessionBean(무상태 : 검색,계산  상태유지장바구니,회원관리)

                 - EntityBean: 데이터 처리

o               - MessageDrivenBean : 비동기 메시지 통보

6.     WAS (Web Application Server)역할과 대표적인 제품들을 나열하고 특징 설명

7.     SAP솔루션 제품명이면서 기업명. ERP, CRM관련 전문 업체요점 정리.

8.     String, StringBuffer, StringBuilder 차이점

String클래스는 문자열을 추가할  내부적으로 StringBuffer클래스로 변환되어 처리됨.

문자열의 변화가 많은 경우는 StringBuffer클래스가 빠름.

      StringBuffer를 사용하면 입출력 데이터를 읽는 양이 많고 처리시 속도가 빠름.

      StringBuilder StringBuffer 비슷하지만 수정 가능한 문자열을 작성할 때 수 있음.

9. Java Servlet

 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램

10.오라클 인덱스

인덱스데이터와 검색의 성능을 향상시키기 위해 만들어짐

           )부산의 위치가 어디있는지 모를경우(인덱스가 없을경우다 찾아봐야 되지만 인덱스가 있을 경우

              부산시의 위치를 정확히 알게 되고 결국은 데이터 접근이 빠르다.

 11. 트랜젝션,롤백,커밋

 - 트랜젝션이란일련의 작업단위

    ACID(원자성,일관성,고립성,영구성)

    필요성 - 여러작업이 한 자원에 동시에 변경,참조가 필요한 경우

                작업공정이 긴 경우


   - 트랜젝션의 시작

          DML(데이터조작어)구문이 실행될 때

         사용자가 SAVEPOINT를 설정할때

   - 트랜젝션의 종료

         커밋 수행

         롤백 수행

         DDL(데이터정의어),DCL(데이터제어어)이 실행될 때 오라클 내부에서 자동 커밋 수정

         사용자가 sqlplus를 종료할때

         시스템 크래쉬 발생

커밋과 롤백 전

    롤백으로 데이터 회복가능

    현재 유저는 자신이 바꾼 데이터를 확인할 수 있다

    다른 유저에게는 바뀐 데이터 내용이 반영되지 않는다

    영향을 받은 레코든는 잠금상태

-커밋 후

    데이터는 영구적으로 변경

    복구 불가능

    모든 유저에게 변경 내용이 반영

    해당 레코드의 잠금 해제다른 유저들이 다룰 수 있다

    세이브 포인트가 삭제

-롤백 후

     데이터의 변경이 취소

     데이터의 이전 상태가 회복

     데이터에 대한 잠금이 해제

 12 조인문의 종류

    equi

    non-equi

    inner

    outer

    self



'Objective-C, SQLite3' 카테고리의 다른 글

[이전] 브런치 정리  (0) 2019.02.10
러프한 요구사항 900만원 프로젝트  (0) 2019.02.07
두번째 블로그의 마지막 글 모음  (0) 2019.02.05
About VCS  (0) 2019.02.05
github에 gpg 적용 완료  (0) 2019.02.05



블로그 하나의 백업이 모두 끝나서 하나를 삭제 하였다.

https://swiospot.blogspot.com

90일 전에는 복구가 된다고 한다.


아마 90일보다 훨씬 뒤에 확인을 하게 될 것 같은데 삭제한 지금 시점에서 포스팅을 해 놓고,

90일 아니 100일 즈음 뒤에 해당 블로그에서 링크되었던 이미지가 여전히 이 블로그(ioswift.tistory.com)에서 보인다면,

구글에서 블로그에 남겼던 이미지는 삭제되지 않는 것이다.

사실, 이미 게시글을 하나씩 지운 상태에서 해당 이미지가 잘 보이니 삭제가 안된다고 말할 수 있다.


또한, 사용자 정보를 사라지지 않는다고 말할 수 있겠다.


즉, 구글에서 개인 정보는 사라지지 않으며 우리의 잊혀질 권리는 없다는 것을 말한다.


딱히 기분이 나쁘진 않다. 구글은 우리가 올린 데이터를 저장할 공간을 제공하는 대신 개인 정보를 마음대로 이용할 수 있을 수도 있다.

스타트업에서 이런식으로 뒤통수 치는 것. 즉, 힘이 있는 자는 힘을 사용하는 것이 나쁘지 않다는 것을 배웠다.

정말 말로 배웠다. 이런게 나쁘다고 말하면 그게 왜 나쁜거냐고?


그렇게 리멤버도 우리의 정보를 이용해서 링크드인을 만들려고 하다가 지금은 우회하고 있는데,

리멤버가 너무 편해서 그렇게 하더라도 무조건 쓸 수 밖에 없다.


카카오톡도 정부 기관에 정보를 넘겨주는 것 때문에 난 사용하지 않고 텔레그램만 썼는데 다른 사람들이 다 카톡을

써서 지금은 카톡 신봉자가 된 것도 그런 맥락이다.


늙어서 이해하는 것이 아니라. 나쁘다고 무조건 없애는 것보다 고쳐서 쓰는 방법을 알게 되었다고 말하고 싶다.


문재인이 대통령인 지금 모든 것은 사필귀정.

바름으로 간다고 할 수 있겠다.


지난 과오를 시간과 함께 기록하지만 모든 것이 변할 수 도 있다.

물론, 변하지 않는 신념이나 꿈 목표도 존재한다.


이 포스팅으로 내 지난 글의 이미지가 100일 뒤에는 링크가 깨져서 안 보였으면 한다. 그러나 구글이 이미지 AI에 신경을 많이 쓰고 있고, 블로거가 그리 주목받는 서비스가 아니기에

저장 구조를 바꾸지는 않을테니  그럴일은 없겠지.


난 100일 뒤 그 사실을 한번 더 확인하고 변하기를 계속 기도하면 된다. 어차피 변할 것이고 이미 많은 것들을 변화시켜 왔으니까.


구글에게는 미안하지만 장기 저성장 시대에는 국내 서비스가 잘 되어야 하는 것은 맞다. 

이제 모든 백업이 끝나고 드디어 하나를 삭제할 수 있게 되었다.




korea blizzard want to control user experience ... is su**

온라인 게임이나 앱 제공 업체 참 대단하다.


Quest 라는 앱도 지네들 마음대로 삭제해 버리더니, 환불도 안해주고

블리자드도 별거 없네. 어줍잖은 시스템 만들어서 입맛대로 계정 정지 ㅡㅡ;

환불은 왜 안되는거야? 시스템상 건의를 아예 못하게 만들어놨다.



1년간은


https://www.facebook.com/pg/BlizzardKR/posts/

https://www.youtube.com/user/BLIZZARDKOREA/videos/

https://www.facebook.com/HearthstonekoKR

https://www.youtube.com/Hearthstone

https://www.instagram.com/playhearthstone/

https://playoverwatch.com/ko-kr/

https://www.facebook.com/OverwatchKR

https://twitter.com/OverwatchKR

https://www.youtube.com/OverwatchKR



https://www.youtube.com/channel/UC-2wa6jvprl7hfCpvw0ULzg


1년 후


공정거래위원회

한국 소비자원


건의 문구


미국에서 산 계정 정보에 제대로된 휴대폰 번호가 들어있는데, 인증 완료해도 계속 다시 완료하라는 시스템 오류 때문에 아예 건의를 못하게 되어 있네요.

leon#15714 결제한 계정 전체 금액 환불 바랍니다. 1년 간 건의하고 다른 채널(공정거래위원회, 한국소비자원)을 통해 지속적으로 다시 건의토록 하겠습니다.


토론장 건의 문구


mynameis@hajunho.com 으로 지불된 60만원 전액 환불 바랍니다. 고객 센터는 연결 안됩니다. 지난 5년간 연결된 적 없구요. 미국 계정 관련해서 기술력이 없으면 제대로된 채널을 만들던지, 음성으로 욕한거에 대해서 필터링 안되면 어줍잖은 잣대 들이밀지 말던지 하셨어야죠. 1년간 여러 채널로 건의하고 소비자원, 공정거래위원회 等 환불 받을 수 있는 채널로 오래도록  권리를 주장하겠습니다.


https://kr.forums.blizzard.com/ko/overwatch/u/leon-15714/activity



------------------ 유사 케이스 ------------------






https://us.battle.net/forums/en/bnet/topic/20752676335






이게 먼가요??

어제 컴터 5번인가 6번인가 팅겨서 경쟁전 3시즌이 못하게 되었다고 뜨더군요.

이것까진 이해했습니다.

오늘 접속할려고 보니 겜접속이 아예안되네요?경쟁전뿐만 아니라 다른것도

할수없다는건가요?

그리고 이계정은 사용이 중지되었습니다. 이말뜻은 영구정지당했다는뜻인가요 먼가요?

정확한 해답 바랍니다 정확한 해답없으면 환분 요청 하겠습니다.


jhChart 만들기.


하던거 잠시 접고.

~/Library/Developer/Xcode/DerivedData/mEnglish-forcxdbxmfxnbcdcstszxdakgmvd/Build/Intermediates/mEnglish.build/Debug/mEnglish.build




아이디어 스케치.


모든 비율은 0~1000 단위로 백분율이 아닌 만분율(0~10000)로 계산하고 기본 자료형은 CGFloat으로 함

data는 plist type으로 함

가장 큰 개념은 하나의 화면 UIScreen.main

그 화면에서 여러 차트를 포함하는 scene이 있음 panel manager 쯤? 씬 매니저라고 하자.

scene manager는 다양한 옵션을 줄 수 있도록 계속해서 고려해야 함.

그래프는 scene manager에 의해 자동 변경 가능하거나, 수동 alignment 가능해야 함(pop-up 등에 재사용 목적)

scene manager는 각각의 테마가 존재하도록! 배치 방식에 따라 뭔가 바뀔 수 있도록 해야함.(나중일이겠지)

가장 큰 개념인 alignment manager 의 frame은 sceneframe 이라고 일단 명명, 설계하는데 용어 정의가 안되어 있으니 불편.

sceneframe 내부의 그래프의 크기는 grapeframe 이라고 명명

scene에는 graph를 add 할 수 있음.

각 그래프는 독립적인 width, height를 가지고 width 의 경우 graphframe 중 가장 큰 width가 sceneframe의 width가 됨

scene에 추가된 graph frame height를 모두 합한 값 + padding 값들이 scene의 height가 됨

scene에 강제모드가 되면 scene 값이 graph에 따라 설정되지 않고 서버에서 내려주는 값으로 설정됨. 내부에 그려진 graph는 scene의 값에 따라 자동 조정. width의 경우 고정, height 의 경우 비율을 먼저 계산하고 비율값에 따라 자동 조정

graph는 pixel로 그릴 수 있는 pixel 모드와 scene

scene의 주요 값은 decodable 프로토콜을 이용하여 JSON serialization 가능토록 해야함

기타 기능은 만들면서, 오픈소스는 아예 참조하지 말자. 처음부터 보면 비슷하게 갈 수 밖에 없으니까. - 물론, 나중에는 참조해서 더 좋게 만들어야지. 좋게 말하면 벤치마킹, 라스트 무버, 돌려서 까면 카피캣, 나쁘게 말하면 배낌. 실험해보니 swift 도 실수 오차가 있어서 결국엔 최고의 정밀도를 가진 그래프가 되지 않을까 싶다.



https://github.com/hajunho/iOS_startUpCodes/tree/master/002/com.hajunho.swift-graph



react 도입할 것인가 말 것인가...

Android 7년하다 iOS 4년해서 그런지. 둘 다 아우르는 플랫폼을 늘 고민했었다.

폰갭, HTML5와 그 친구들, apache cordova, ... 그 뒤에는 react에서 vue로 다시

react로 대세가 넘어가듯 싶었는데 지금은 다시 native로 귀결되는 분위기.




다음 책을 보았었다. 이 글은 그 후 5개월이 지난 시점이다.


brew update

brew upgrade

brew install node

brew install watchman

brew install flow


그런데 npm 이 안된다.

 # 내 경우 node와 yarn 이 둘 다 설치되어 있던 상태라, 옵션을 더 주었다. yarn 은 reinstall

brew uninstall --ignore-dependencies --force node

brew install node --without-npm

brew reinstall yarn    

yarn global add react-native-cli


react-native init FirstProject

yarn add instruments  #추가


해당 프로젝트로 가서

react-native init FirstProject


이후 Xcode 에서 열고 실행하면 된다. 런타임에 최신 js 파일을 땡겨오고 실행된다.


ㅡㅡ; 나중에 트러블 슈팅을 제대로 하려면 관련 구조를 다 파악해야 겠구나 하는 생각이 든다.


환경은 갖춰졌으니 신나게 개발.


후(1달여)


느낀점.


그냥 native  해야 겠다.


---- 그리고 5개월 지난 시점.

간단한 것은 react로 짜서 연결해도 되겠지만 여전히 native가 짱.



JAVA SCRIPT를 벗어날 순 없구나.

아무리 iOS native 를 한다지만 WEB를 벗어날 수 없다.(약관 같은 웹뷰 때문이라도...)



자바 스크립트 시온은 여기.


해당 사이트의 Standard 탭을 이용하면 각 표준 문서를 만날 수 있다.


올해 6월까지 따끈한 개정판 9까지 나왔다.



file 다루기


fileKit을 이용한다.

메뉴얼

iOS 디렉토리 구조


'Objective-C, SQLite3' 카테고리의 다른 글

러프한 요구사항 900만원 프로젝트  (0) 2019.02.07
프로그래밍 면접 질문  (0) 2019.02.05
About VCS  (0) 2019.02.05
github에 gpg 적용 완료  (0) 2019.02.05
github issue format  (0) 2019.02.05

Version Control System을 CVS 때부터 SVN, GIT까지 10년이 넘게 쓰고 있는데 아직 잘 모르겠다. 이전 직장에서는 SVN을 썼고, 학창 시절에는 CVS를 썼다. 삼성전자 선임 연구원(구미 때, 수원 와서는 종기원 때문에 걍 '선임' ㅋㅋ 웃긴다 너네.) 재직 시절에는 perforce를 쓰다가 아랫단 할 때는 git을 썼다(커널은 다 git으로 하니까... 어쩔 수 없었던 거지)


git 쓴지도 10년이 되었는데 sourceTree 쓰기 전에 command로 하다가 아틀라이시안이 IPO를 하고 난 뒤로부터는 소프트웨어가 썩어서(지금은 괜찮다.) 온갖 에러가 낫기에 github 제품으로 갈아탔었었다. 아마 그 시절 썼던 엔지니어는 알겠지만 github에서 제공하는 건 더 썩었었음 ㅡㅡ;


결국 command로 할 수밖에 없었고, https는 제대로 동작하지 않아서 모두 ssh로 했다. sourceTree에서도 여러 브랜치를 따고 합치는 과정에서 꼬임이 많아서 터미널 열고 command를 입력하며 썼다.


git 책도 잠깐 봤지만 10년이 지나 기억나고 잘 쓰는 것은 결국 

git init, checkout, add, pull, push 등이 전부.


머지맨(대기업에서 수천 명이 동시 작업할 때면 각 부서마다 머지맨이 있다) 체리픽이나 오토머지 resolve 등도 꽤 다양하게 썼었던 것 같은데 기억에 별로 남은 게 없다. 그 당시에 책을 써 뒀으면 추억이나 남았을 텐데... 그 당시 VCS가 개인에게는 그리 대중화되진 않았으니 팔리진 않았겠지


지금은 집에서 혼자 작업할 때도 git을 쓴다. 


사실 가장 편한 것은 SVN이다. visual SVN 무료 서버가 워낙 강력하고 로컬에 구축할 수 있어서 빠르다. ETRI 강의할 때도 외부 인터넷이 막혀 있으니 visual SVN 서버를 구축하고 그쪽으로 과제를 받거나 자료 공유를 했었다. 공유폴더 보다 안정적이고... 맥에도 smartSVN이 있어서(유료) 토터스SVN 클라이언트 만큼 편리하게 쓸 수 있다. 물론, 토터스가 10배 편하다.


전 직장에 만 3년 정도 몸 담고 있을 때 GIT으로 바꾸려고 하다가 결국 github.com 에 소스를 줄 수 없다는 결정 아래 SVN과 GIT을 같이 쓸 수밖에 없었다. 뭐, 불편하긴 했지만 git과 svn을 쭉 쓰면서... 분명한 장단점이 있고, SVN도 충분히 괜찮다는 것을 알 수 있다. github.com이 visual SVN Server처럼 로컬용 서버를 배포하면 좋겠지만 구글도 구글 데스트탑 배포 했다가 너무 강력해서 서비스를 접어버리고 Enterprise용만 제공하다가 그마저도 이제 막는 것을 보면, 결국 git은 visualSVN 처럼 원클릭으로 편하게 구축하고 마우스로 상황을 체킹 하지는 못한다. 수동으로 해줘야 할게 많고, 자본주의 사회에서 편하게 되리라는 것은 요원하다.


그냥 그렇다고.


간간히 이렇게 썰을 푼다. 난 집에서 visual svn 서버 쓰고, github의 private 저장소도 쓴다. bitbucket을 오래 썼었는데 IPO 하고 난 뒤에 무료 저장 공간은 무지하게 느려져서 못 쓸 수준이었다.


혹시, SVN 다음에 GIT이 나왔다고 GIT만 쓰시는 분은 집에 SVN 설치하고 그 편안함에 녹아들었으면 한다. bizspark의 도움으로 마소의 VCS도 써봤는데, 그래프로 나와서 좋았고 칸반이나 간트차크도 계속 들어가서 좋았다. 그러나 그 좋은 점도 단점이 되는 게 최근 github에도 trello와 같은 기능이 들어간 것을 보면서, 경쟁 때문에 계속 다른 서비스를 통합하는 것이 과연 편리한 일일까 하며 고민을 해 본다. 물론, 경쟁이 있어 나 역시 3년 쓴 트렐로 골드를 버리고 github 것을 쓰려고 하다가 로컬용 찾게 되었다. 로컬용이 없어서 트렐로의 모든 자료를 구글 드라이브에 올리는데 1달 걸렸다. 구글 드라이브는 완전히 다른 프로젝트 관리 패러다임이지만 워낙 검색 능력이 뛰어나서 사실 규정되지 않는 개발 방식이며, 이론적으로 이름이 없다고 해도 분명 더 편리하다. trello 도 검색 기능이 꽤 뛰어지만 PDF나 파일 내용까지 검색되는 구글과는 사뭇 다르다. 물론, 구글은 내 자료를 가지고 열심히 비즈니스를 만들어 가겠지만 모두의 편리함을 계속 추구하고 도전하니 아직은 괜찮다.


다시 git으로 돌아와서

branch 기능은 편리하지만 많은 사람이 같이 작업하는 경우 결국 한명이 소스를 모두 파악하고 "머지맨"이 될 수 밖에 없다. 혼자 작업하고 브랜치 아웃되었다가 합쳐지는 경우 아무런 문제없이 잘된다. 그러나 그 외의 경우 기능을 안다고 해도 수많은 에러와 싸운다. 물론, 이런 경험은 git을 더욱 강력하게 만들겠지만 해당 부분을 매우 중시하는 기업 소속이라면 git 책 하나 사서 매일 연습하는게 맞고, 그게 아니면 .ssh, config, key에 대해서 이해하고 명령어 몇개만 쓰는게 맞는 것 같다.


이상, git 매거진을 하나 만들까 하다가 접는 이유를 의식의 흐름대로 써 보았다. 나름 뇌는 거친 듯. 아닐수도

내가 perforce를 계약한 것은 아니지만 1인당 40만원 정도라고 들은 적이 있다. 머지툴도 내장되어 있고 정말 많은 사람들이 동시작업해도 잘 동작하는 것을 수년간 경험했을 때 큰 기업이 된다면 한번 써볼만한 툴인 것 같다. 나 관계자 아님



'Objective-C, SQLite3' 카테고리의 다른 글

프로그래밍 면접 질문  (0) 2019.02.05
두번째 블로그의 마지막 글 모음  (0) 2019.02.05
github에 gpg 적용 완료  (0) 2019.02.05
github issue format  (0) 2019.02.05
인터넷 안되는 곳에서 강의 준비  (0) 2019.02.05

error: gpg failed to sign the data

fatal: failed to write commit object


killall gpg-agent


and then type the password again.



메뉴얼은 인터넷에 많으니, 경험을 끄적여 놓아 본다. , 이제 경험주의자에 기록주의자니까.


gpg 프로그램이 없으면

brew install gpg


gpg 키 만들기

gpg --full-generate-key


엔터치다가 엔터치고 막판에 O 치면 된다.


   (2) DSA and Elgamal

   (3) DSA (sign only)

   (4) RSA (sign only)

Your selection? 1

RSA keys may be between 1024 and 4096 bits long.

What keysize do you want? (2048)

Requested keysize is 2048 bits

Please specify how long the key should be valid.

         0 = key does not expire

      <n>  = key expires in n days

      <n>w = key expires in n weeks

      <n>m = key expires in n months

      <n>y = key expires in n years

Key is valid for? (0)

Key does not expire at all

Is this correct? (y/N) y


GnuPG needs to construct a user ID to identify your key.


Real name: Junho

Email address: mynameis@hajunho.com

Comment:

You selected this USER-ID:

    "Junho <mynameis@hajunho.com>"


Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O



github에 등록할 키를 뽑아내려면, 등록한 이메일을 이용한다.


gpg --armor --export mynameis@hajunho.com

-----BEGIN PGP PUBLIC KEY BLOCK-----


mQENBFu7KQEBCADneTgQIsWBcbNiazoYekGIJ5yBjyrkMYpKecVmi7Rk949bW6Iy

2+SQyM6WCPjmOkmViMMYM4/rImDE4p/4nQAXcfkChHuvRxJmhUE3WUR1rQyVo57s

...


-----END PGP PUBLIC KEY BLOCK-----


이메일 말고 키 아이디를 이용할 수도 있다.

gpg --list-secret-keys --keyid-format LONG                           

sec   rsa2048/CD548CDB9E8CD4F1 2018-10-08 [SC]


처음 등록하고 나니 깃헙에서 unverified 로 나왔다.

GPG key ID: CD548CDB9E8CD4F1


이메일을 여러개 쓰고 있었는데 그 중 하나가 github에서 인증을 받지 않아서였다.

인증받고 나니 녹색 Verified 가 찍힌다. 다만 이미 commit 된 녀석은 바뀌지 않았다.

새롭게 commit 할 때만 Verified가 되었다.


그 외 몇가지.

Xcode에서 gpg 사이닝한 것이 commit이 잘되는데 sourceTree에서 되지 않았다.

그러나 소스트리에서 여는 터미널에서는 또 된다. 소스트리의 GUI가 gpg 관련 설정을 

오버라이드 하는 것 같은데, 여전히 내 repository 설정은 grey(disabled) 스택 오버 플로도 별 도움이 안되었다.

커밋은 항상 Xcode에서 하니 걍 내버려 둠.


글로벌은 모두 적용하고,

git config --global commit.gpgsign true

로컬은

git config commit.gpgsign false

적용 안하는 프로젝트가 생긴다. github외 따로 만들어 두는 git 저장소를 이용할 때 지원을 안해서 ㅠ


얜 뭔지 모르겠다.

export GPG_TTY=$(tty)


트러블 슈팅할 때 전혀 도움이 안되었다.

그에 반해 얜

GIT_TRACE=1 git commit -m "gpg test"

디버깅할 때 너무 좋았다.


git config --global gpg.program gpg

gpg도 있고 gpg1도 있는데 잘 설정하길.


요것도 잘 썼다.


$ git config user.email mynameis@hajunho.com

$ git commit --amend --reset-author

git commit --amend updates your last commits


그리고 trace 할 때 gpg1으로 잘했었는데 결국 gpg로 설정해서 잘되더라.

trace: run_command: gpg1 --status-fd=2 -bsau 'Junho HA <mynameis@hajunho.com>


7~8년 전 Email 담당할 때 gpg를 했었는데, 코어는 다 까먹고,

지금은 걍 깃헙의 Verified를 위해 툴 사용만 하는 수준이다.

sourceTree가 버전 업이 좀 되면 편리하게 지원하지 싶다.




'Objective-C, SQLite3' 카테고리의 다른 글

두번째 블로그의 마지막 글 모음  (0) 2019.02.05
About VCS  (0) 2019.02.05
github issue format  (0) 2019.02.05
인터넷 안되는 곳에서 강의 준비  (0) 2019.02.05
필카와 디카 차이  (0) 2019.02.04

## **Symptoms**

마그넷 입력 후 파일 전송이 안됨

## **Cause**

분석중

## **Resolution**

찾는중

## **For more information**

특징점 없음

'Objective-C, SQLite3' 카테고리의 다른 글

About VCS  (0) 2019.02.05
github에 gpg 적용 완료  (0) 2019.02.05
인터넷 안되는 곳에서 강의 준비  (0) 2019.02.05
필카와 디카 차이  (0) 2019.02.04
C & JAVA 공통점  (0) 2019.02.04

우분투에서 시뮬레이터를 이용, ARM 크로스 컴파일러를 공부해야 하는 경우.

보안과 비용을 고려하는 비슷한 상황(인트라넷only)의 학교에서 도움이 될랑가?


1. VisualSVN Server를 설치하고 TortoiseSVN Client를 각 컴퓨터에 설치하여, 자료를 주고받는다. GIT의 개념을 가르치기에도 좋고, NetBeui(NetBios, 공유폴더) 방식보다 낫다.


이후 sudo -s로 진행 

2. 우분투 설치 패키지 준비

apt-get install dpkg-repack 

 vim 의 경우 

dpkg-repack vim 

으로 deb package를 만들 수 있다. 다른 컴퓨터에서는

dpkg -i vim_8.0.1453-1ubuntu1_amd64.deb

로 설치


deb 패키지 설치는 다음과 같이 진행된다.

설치 시작 -> unpack(dpkg --unpack) -> configuration(dpkg --configure) -> 설치 완료

해당 패키지가 제대로 설치되었는지는 dpkg -s <pkg name> 으로 확인 가능

Status: install ok installed 문구가 있으면 완료


현재폴더에 .deb의 압축을 풀려면

dpkg -x <pkg name> ./

으로 푼다. 

설정까지 보고 싶다면,

dpkg-deb -R <pkg name> 블라블라폴더

pkg로 리빌드 하려면

dpkg-deb -b 블라블라폴더 <pkg name>


추가로

dpkg -I <deb file name> : deb file(패키지)의 정보,  패키지 네임 인자를 더 주면(한 칸 띄워서 찾을 패키지 적으면) grep을 걸지 않고 바로 패키지 이름을 써서 필터링이 가능


dpkg -L <pkg name> 혹은 dpkg -c <deb file name> : 관련 폴더, 파일

dpkg -C : 설치 中 중단된 패키지 목록

dpkg -r 혹은 dpkg --purge : 패키지 삭제

dpkg -S <search file name> : 설치된 패키지에서 해당 파일 이름이 들어간 폴더/파일 검색


3. ARM 빌드 준비

apt-get install emdebian-archive-keyring libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-arm-linux-gnueabi gcc-arm-linux-gnueabi g++-arm-linux-gnueabi u-boot-tools libncurses5-dev ddd qemu


빌드 & 실행

arm-linux-gnueabi-gcc -static a.c

qemu-arm ./a.out


4. REPACK!


dpkg-repack emdebian-archive-keyring libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-arm-linux-gnueabi gcc-arm-linux-gnueabi g++-arm-linux-gnueabi u-boot-tools libncurses5-dev ddd qemu


root@ubuntu:~/dpkg# ls

binutils-arm-linux-gnueabi_2.30-20ubuntu2~18.04_amd64.deb

ddd_3.3.12-5.1build2_amd64.deb

emdebian-archive-keyring_2.2_all.deb

g++-arm-linux-gnueabi_7.3.0-3ubuntu2_amd64.deb

gcc-arm-linux-gnueabi_7.3.0-3ubuntu2_amd64.deb

libc6-armel-cross_2.27-3ubuntu1cross1_all.deb

libc6-dev-armel-cross_2.27-3ubuntu1cross1_all.deb

libncurses5-dev_6.1-1ubuntu1.18.04_amd64.deb

qemu_2.11+dfsg-1ubuntu7.4_amd64.deb

u-boot-tools_2016.03+dfsg1-6ubuntu2_amd64.deb


결론, (완벽히)안된다. 

repack 되어도 뭔가 꼬이나 봄. vim 같이 작은 유틸은 잘된다. 결국, 인터넷 테더링으로 잠깐 해결했다.

이후 문제는 강사컴만 인터넷이 되기에 LAN CARD의 MAC Address 복제가 되는 DLink의 DIR-825 무선공유기를 이용하여 보안 Skip. 무선 동글은 각자 알아서~ 단, SVN 서버는 학생 컴터에 재구축.


'Objective-C, SQLite3' 카테고리의 다른 글

github에 gpg 적용 완료  (0) 2019.02.05
github issue format  (0) 2019.02.05
필카와 디카 차이  (0) 2019.02.04
C & JAVA 공통점  (0) 2019.02.04
홈페이지 개편  (0) 2019.02.04

티스토리 통계는 4000 정도가 줄었고, 아무런 공지가 없어 포럼에 관련 글이 올라왔다.

구글 애널리틱스에서의 상황은 예상한 대로 흘러가고 있다.


- 카테고리 basics 가 높이 올라갔다.

- 직접 유입보다 검색 유입이 늘고 있다.(다이렉트가 80%에서 40%로 떨어지고 검색 유입이 49%가 되었다.)

 예상대로 포럼에 글을 안쓰니 서치로 들어오는 %가 확 늘었다. 내가 연예인이 아닌 이상 direct로 들어올 일은 없다. tistory 라는 도메인도 너무 어렵고.


iOS Swift 본연의 블로그로 가고 있다. 아직은 백업할게 많다. 2번째 블로그 40개의 글이 남았다. 빨리 삭제하고 싶다.

1번째 블로그 글은 3900개다. 1년이 지나도 백업은 안될 것 같으니 틈틈히 정리하며 옮겨야 겠다.


구글 애널리틱스의 목표 설정을 보니 명확한 목표의 카테고리가 보인다.

1


목표 설정

템플릿을 선택하여 사전 입력된 구성 정보로 시작합니다.
수익

획득

문의





참여





'{BE} JAVA 21 corretto' 카테고리의 다른 글

구글 애널리틱스에 기초한 향 후 블로그 운영 계획  (0) 2019.02.10
블로그를 삭제하였다.  (0) 2019.02.05
몇 가지 기록  (0) 2019.02.04
이번 주 일기  (0) 2019.01.26
블로그 운영 계획 190125  (0) 2019.01.25


아련함.





필카도 어차피 컴퓨터 모니터를 통해 보는 거라면 3 원색으로 표현 못하는 색감이 표현될 리가 없다. 그러나 다르다. 3 원색으로 표현 못하는 색이 있다. 그러나 모니터에 모든 색상의 주사선을 넣어서 만들 수 없다. 비싸서.


잘 만들어진 3D 그래픽은 빛줄기 하나하나 따라가면서 처리한다. 그러나 3 원색 표현의 한계가 있다. 아무리 깨끗한 3D 텍스쳐를 보아도 현실과 이질감을 느낄 수밖에 없다. 필카던 디카던 결국 지금 포스팅에서 보는 화면은 3 원색으로 구성한 색감을 보는 것이다.





그러나 필카는 현실 느낌이 난다.





구닥같은 앱이 필카의 느낌과 감성을 많이 따라갔었지만, 확연히 다르다. 빛바랜 느낌 나는 필터를 좋아해서 6개월간 썼었는데 뭔가 아쉬운 게 있었다. 아마 꼭 집어서 말할 수는 없지만 필카 사진을 접했던 분들은 분명 다르다고 생각할 것이다. 부모님의 빛바랜 사진이 주는 아련함 역시 표현 못하는 감성이다.





나 역시 디지털로 모든 것을 구현하는 일을 하고 있지만, 결국 내가 하는 일은 엉뚱한 짓인지도 모르겠다.


물론, 이 모든 것은 개인 느낌이요, 개인 의견이다.





필카 사진들...





....





그리고 디카








'Objective-C, SQLite3' 카테고리의 다른 글

github issue format  (0) 2019.02.05
인터넷 안되는 곳에서 강의 준비  (0) 2019.02.05
C & JAVA 공통점  (0) 2019.02.04
홈페이지 개편  (0) 2019.02.04
아마존 오로라 사용기  (0) 2019.02.04

객체지향 언어라는 공통점을 가지고 있는 씨뿔뿔과 자바의 공통점을 찾기는 어렵지 않습니다. C와 JAVA의 공통점을 하나하나 짚어보면서 다른 프로그래밍 언어의 공통점을 알고 소통하는 프로그래밍을 해 보도록 합시다.


Null Pointer Exception


C는 포인터를 가지고 있습니다.


#include <stdio.h>




void main() {


             int *s = NULL;


             *s = 8;   


}





이는 다름과 같이 Null Pointer Exception을 일으킵니다.



JAVA의 창시자인 James Gosling 의 저서 [The Java Language Specification] Chapter 3. Lexical Structure에 전 세계 언어를 지원하는 UTF-16 이야기가 나옵니다. 이에 한글로 클래스 명을 작성하였습니다. 변수, 메서드 역시 한글 사용이 가능합니다.                    

package javatest;



public class 널포인터익셉션 {


           public static void main(String [] args) {


                     Object s = null;


                     System.out.println(s.getClass());


           }


}


이 프로그램을 실행시킨 결과는 다음과 같습니다.


Exception in thread "main"   java.lang.NullPointerException


             at javatest.널포인터익셉션.main(널포인터익셉션.java:6)



java.lang.NullPointerException 이라고 되어 있습니다. 포인터가 없는 언어인데 왜 Null Pointer라는 표현을 쓸까요?


자바 언어의 소스 코드 중 JavaExceptions.c 파일을 보면


jthrowable


createThrowableFromJVMTIErrorCode(JNIEnv * jnienv, jvmtiError   errorCode) {


    const char *   throwableClassName = NULL;


    const char *   message            = NULL;


    jstring   messageString           = NULL;




    switch ( errorCode ) {


        case   JVMTI_ERROR_NULL_POINTER:


                  throwableClassName = "java/lang/NullPointerException";


                break;





errorCode가 JVMTI_ERROR_NULL_POINTER 일 때 NullPointerException 메시지를 출력합니다. 


C에서 NULL은 0입니다. JAVA에서는 무엇일까요?


  NULL_CHECK(e,   JVMTI_ERROR_NULL_POINTER);




NULL_CHECK를 0인지 아닌지로 판별하고 있습니다. 역시 0입니다.


#define NULL_CHECK0(e) if ((e) == 0) return 0


#define NULL_CHECK(e) if ((e) == 0) return



언어적 철학으로는 NULL(C11), null(JAVA), nil(Objective-C), nullptr(Visual C/C++) 등 다양하게 표현하고 있지만 실상은 모두 0입니다. 개념 분리를 위해 각 언어들이 노력하지만 단순히 ‘없다’는 표현이 맞고, 0과 1의 컴퓨터 세계에서는 0으로 이해하는 것이 다양한 프로그래밍 언어를 이해하는 첫걸음입니다.


'Objective-C, SQLite3' 카테고리의 다른 글

인터넷 안되는 곳에서 강의 준비  (0) 2019.02.05
필카와 디카 차이  (0) 2019.02.04
홈페이지 개편  (0) 2019.02.04
아마존 오로라 사용기  (0) 2019.02.04
이전 for organic searching  (0) 2019.02.04




지난 글 남겨둔다.


 안녕하세요? 하준호입니다.

저를 설명해 주는 것은 다음과 같습니다.

♬ 제 가족은 소라, 소율입니다.

♬ 친구는 종우, 종완, 동민, 성환, 재환, 승오, 주영, 유황, 윤호, 형민, ...

♬ 존경하는 선배는 영하선배님, was 박상원 선배 for 10y.

♬ 후배는 동수, 태권, 한기, ... was 지현, 현동 before Retrica.


♬ 관심 분야는 아이폰, 윈도우, 리눅스, FreeRTOS, Assembly, C/C++, JAVA 관련 개발

   그러나 계속 바뀌고 있습니다. 이제 내일모레 40이라 하나 고르려고 해요. 개발자로 남고 싶어서...

♬ marlboro, parliament,... 술 먹고 사고 치는 것보다 담배가 낫다고 생각합니다.

♬ Overwatch, Clash of Clans, Clash Royale을 사랑합니다.


♬ 양자 컴퓨터 이전의 프로그래밍 언어는 다 거기서 거기지만 C/C++이 가장 강력하다고 생각합니다.

♬ 그러나 잘하고 싶은 언어는 SWIFT예요. 이유는 다른게 지겨워서...

♬ 만들고 싶은 것은 "더럽게 번 돈 필요없고 진정한 자유 있는 자본주의/민주주의 세상"입니다.


Hello, This is Junho || joe || frank || eddie...

Those names are not what I am. It's just a pointer to indicate me who is an object in real world.

I don't know who I am, too.


The LINK Concept that I've invented in my book named of OLPP is the best way to know what I am.

My products, Relationship, Family, Hobby, ... are member variables of my Object. 

Programming is the same as the real world life.


훗 날 부끄럽겠지만, 기록은 중요하니까.



 주말에 시간이 남아서 홈페이지를 개편했다.

깨진 링크를 복구하고 블로그를 지금 최신 블로그로 바꾸었다.

Permanent SEO-safe 301 redirect from HTTP to HTTPS 

를 적용하여 http로 접속해도 https로 접속하도록 했다.


도메인도 정리를 했다.


triplej.info

swift3d.org

.

.

.


사업을 했거나 앞으로 사업할 도메인을 모두 없앴다.


18년 동안 도메인 유지 비용에 쓴 돈을 보니,


Funds Summary

Total Receipts:USD 846.84


100만원 가까이 된다. 물론, 구글 포함 기타 호스팅 비용은 제외한 금액이다.


앞으로는 hajunho.com 만 유지하고 이 블로그만 할 예정이다. 


대부분의 글은 바로 쓰고 퇴고를 해야 하는 글은 brunch에 초고를 쓰고, 여기에 옮기는 식이다.


물론, brunch에서는 일정 기간 후에 삭제한다.


그 외 사업한다며 도메인 포함 2000만원 정도를 써 본 결과,


사업의 시작과 끝은 돈 벌어도 변하지 않는 사람과 해야 한다는 결론에 도달했다.


그런 사람은 가족 포함하여 인생에 몇 번 만날까 말까한 정도기 때문에


그냥 개인 이름으로 온라인 활동하기로 했다.


다른 모든 서비스도 마찬가지다. 


도찐개찐이니 그냥 블로그로 돌아왔고, 2008년부터 썼었던,


예전 블로그에 3000개의 글은 다시 재정리 해서 올리고 지울 예정이다.




'Objective-C, SQLite3' 카테고리의 다른 글

필카와 디카 차이  (0) 2019.02.04
C & JAVA 공통점  (0) 2019.02.04
아마존 오로라 사용기  (0) 2019.02.04
이전 for organic searching  (0) 2019.02.04
2017년  (0) 2019.02.04



RDS를 쓰는 회사에서 개발하는 제품에 물리 서버를 이용하지 않는다면 아마존이 최선이 선택일 것이다. 전력량, 온/습도, 하드디스크 수명 관리 등을 안해도 될거라 생각하니 좋았다. NoSQL이던 RDBMS던 CRUD(Create, Read, Update, Delete)가 전부인 DB 세상이고 로드벨런싱과 보안계획/실행, 스케일링은 혼자 하기 힘드니까 계속해서 서버 구축하지 말자는 판단. 서버실 공간도 없고, 추가 전기 공사에 회사 이전 계획까지 겹친 것도 한 몫. 우선 DB 서버 부터... 초창기에는 비용도 저렴한 클라우드로 가자고 생각했다. 다들 따져보면 결국, 선택은 AWS RDS. 애저와 구글 클라우드를 이용해 보았으나, 수년 뒤 2018년에 결국 아마존으로 가게 되어 있다고 생각한다. AWS EC2에 우분투가 아닌 아마존 리눅스 기반에 mysql 설치하고 서비스를 만들고 잘 사용했으나, DB 서버는 분리하는게 당연한 지라 AWS RDS로 갈 수 밖엔.




우선 RDS로 오로라를 쓰는 이유



MySQL로 하고 싶지만 아래 AWS RDS 소개글을 보면 Aurora를 쓸 수 밖에 없게 만든다. 물론, 앞으로도 자사 솔루션을 더욱 강화할 것임은 당연지사




MySQL & Aurora


MySQL은 전 세계에서 가장 많이 사용되는 오픈 소스 데이터베이스입니다. RDS에서 MySQL은 데이터베이스의 컴퓨팅 리소스 또는 스토리지 용량을 쉽게 확장할 수 있는 유연성을 갖춘 MySQL 커뮤니티 에디션의 풍부한 기능을 제공합니다.


최대 16TiB 크기의 데이터베이스를 지원




Amazon Aurora


Amazon Aurora는 MySQL 및 PostgreSQL 호환 엔터프라이즈급 데이터베이스입니다($1/일 미만부터 시작). MySQL의 최대 5배 처리량, PostgreSQL의 최대 3배 처리량





자세한 정보는


https://aws.amazon.com/ko/blogs/korea/databaseintroducing-the-aurora-storage-engine/

Amazon Aurora Storage 엔진 소개 | Amazon Web Services

Amazon Aurora는 re:Invent 2014에서 발표한 이후, 2015년 7월에 정식으로 출시 및 2016년 4월 1일 서울 리전에 출시함으로써 국내외 많은 고객들이 RDBMS가 필요한 워크로드에 이미 도입을 하였거나 현재 도입을 고려하고 있습니다. Amazon Aurora는 AWS 역사상 가장 빠른 성장세를 보이고 있는 서비스 입니다. Amazon Aurora의 빠른 성능과 안정성을 지원하는 핵심인 Aurora 스토리지 엔진에 대한 좋은 블로그

aws.amazon.com





Aurora에서 개발용으로 MySQL 5.6.10a와 호환 가능 으로 하여 t2.small로 맞추었다. 개발용으로 만든 EC2 t2.large 인스턴스가 한달에 30만원씩 나오는 것을 보면 AWS 계산기가 제대로 동작 안하는 것 같다.


https://calculator.s3.amazonaws.com/index.html

Amazon Web Services Simple Monthly Calculator



calculator.s3.amazonaws.com


Estimate of your Monthly Bill ($ 45.90)월별 추정 요금


인데 RDS 생성 메뉴에 나오는 가격은


DB 인스턴스


45.99 USD


합계


45.99 USD


이다. 다르다. 0.09라도 다른 것은 다르다. 네트웍 I/O던 내부 I/O 던 관련이 없어 보이는데 말이다.


게다가


Storage 를 20->10으로 바꾸면 비용이 줄어야 할 텐데 오히려 는다. Estimate of your Monthly Bill ($ 46.01) 40으로 늘이면 당연히 는다. Estimate of your Monthly Bill ($ 48.30)





삼성전자 재적시절 유럽시장 SEAndroid 텍스트 로그만 받는데 월 300 만원씩 나간 것을 보면, 추정은 추정일 뿐 일단 사용해 보는 것이 정답임을 이미 알고 있기에 비용 딴지는 그만. 믓튼, 월 5만원에 개발용 서버 사용이 가능하다. 역추척은 서비스는 켜야 한다. $ 4.42 USD/월 추가된다.





만들고 나서 mysql workbench로 접속해 본다.


https://dev.mysql.com/downloads/workbench/

MySQL :: Download MySQL Workbench



dev.mysql.com


https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.Aurora.html#CHAP_GettingStarted.Aurora.Connect

DB 클러스터 생성 후 Amazon Aurora DB 인스턴스의 데이터베이스에 연결하기 - Amazon Relational Database Service



docs.aws.amazon.com


카싼드라가 사용자 편의성을 위해 CQL로 추상화 했듯이,


AWS 오로라 DB도 그냥 mysql 이라고 생각하고 쓰면 되겠다.




2. 마이그레이션


기존 데이터를 가져오는 것도 자료가 많아 좋았다.





https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.External.Repl.html

Replication with a MySQL or MariaDB Instance Running External to Amazon RDS - Amazon Relational Database Service



docs.aws.amazon.com





https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.html

Restoring a Backup into an Amazon RDS MySQL DB Instance - Amazon Relational Database Service



docs.aws.amazon.com


https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.External.Repl.html

Replication with a MySQL or MariaDB Instance Running External to Amazon RDS - Amazon Relational Database Service



docs.aws.amazon.com


물리서버가 아니라 마음이 참 편하다. 결론은 돈이 좋다고 해야 하는 건가.

'Objective-C, SQLite3' 카테고리의 다른 글

C & JAVA 공통점  (0) 2019.02.04
홈페이지 개편  (0) 2019.02.04
이전 for organic searching  (0) 2019.02.04
2017년  (0) 2019.02.04
make mrproper  (0) 2019.02.04

[ 이전] 레드마인 보다는 깃헙 이슈 관리가 편리함


레드마인도 괜찮긴한데 깃헙이 더 편리한 이유는 소스 코드로 바로 갈 수 있기 때문.


그러나 SVN에 비해 느리고,


대용량은 git lfs를 이용. 그리고 소스트리나 깃헙용 GUI 툴보다의 버그들 때문에

결국은 command 만 이용하게 된다는 점을 고려했을 때

가장 편리한 점은 웹base라 어디서든 접속 가능한데 있을 것이다.




일을 즐기는 자들의 재택 근무의 문화가 어서 열리길 바란다.


2018년 4월 24일 화요일


애플 엔터프라이즈 계정에 대해 몇가지.


이해를 돕기 위해 내가 다른 회사 일하다 혹은, 프리랜싱하다 사용하게 된 계정 스샷으로 올려본다.







관련해서 법적 책임을 진다는 확인을 해줘야 한다. 대표 직통 번호 - 보통 휴대전화 - 도 제공해야 한다. 아무래도 앱을 스토어에 말고도 올릴 수 있는 권한이니...



선택하면 지우는게 아니라 남겨두는 것이니 주의!




개발자 디바이스 리셋은 1년에 한번 밖에 못한다. 100대가 많을 것 같지만... 금방 찬다 ^^;



다 지우면



요래 된다.



등록된 디바이스에서는 바로 실행이 가능하다.


등록된 디바이스가 아닌데도 설치할 수 있는게 엔터프라이즈 계정!




기록해 두지 않으면,...


프로그래밍에서도 기록은 매우 중요하다.


기록하지 않으면 똑같은 실수를 반복한다.


역사를 잊은 민족에게 미래를 없다고 했다.


/****************************************************

****************************************************/


망포역을 지나는 분당선,


카카오 지하철 업데이트 했는데 급행이 자꾸 사라지더니


아예 없어지더라. 급행을 타고 늘 만차여서, 세금이 부족하거나


잘못 운영해서 지하철 운행할 능력이 안되나 싶었다.



그 다음 한 주는 퇴근길 지하철 문이 안 닫혀서 지하철이 계속 지연되고 그랬다.


급하게 와서 안 닫히는게 아니라 기다리던 사람도 계속 못타는 듯했다.


뭐, 퇴근길 위에서 미리 다 타버렸으면 아래쪽은 못 타는게 당연한 이치.



그리고 재미있는 것은 그 다음 주에 급행이 다시 부활 했다.


살면서 경험한 바로는 다음 상황이 연출된다.


1. 급행역 아닌 사람들이 잘 모르고 건의를 했거나

2. 급행을 만든 핵심 멤버들이 다른 보직으로 변경이 되었거나 의견을 못 냈거나

3. 우둔한 우두머리가 왔거나

4. 초심을 잃었거나 등등...


지하철 안내 방송보면 항상 분노에 차 있는데, 대구 지하철 참사가 나며, 왜 그 피해가


더 커졌는지, 충분히 알 수 있다.


자차로 계속 출근하다가 최근 지하철로 다닐 수 있는 직장을 구해서 좋아하고


복잡한 것도 나름 즐기고 있는데


문재인 정부에서 철도가 힘을 얻어서인가...


참 밉상이다.


내가 살면서 못살던 사람이 돈 벌면 변하는 것을 4번이나 겪었는데 그와 다를게 없는 것 같다.



if isThere제대로된_철도_노동자 { keepYourJob() } else { 철도.리쿠르트(지원자) }

.

.

.

func 리크루트(_ x: 지원자) {

   

    guard let x = x, x != (혈연||학연||지연) else {

       

        return

       

    }

   

    x.느낌(현재노동자.방송수준())

   

    x.눈(자주멈추는에스컬레이터)

   

    x.뇌(철도관련진실된뉴스)

   

    철도노동자.append(x)

   

}



진실된 마음은 지하철 타는 사람 투표해서 노동자 자르라고 하고 싶지만,

그래도 고쳐서 가는게 낫지. 그런 앱도 괜찮겠네. 근처 주변 사람들끼리 투표 시스템.


저기 담배 피는거 어떻게 생각?

지금 철도 방송 어떻게 생각? 等

'Objective-C, SQLite3' 카테고리의 다른 글

홈페이지 개편  (0) 2019.02.04
아마존 오로라 사용기  (0) 2019.02.04
2017년  (0) 2019.02.04
make mrproper  (0) 2019.02.04
스타벅스 텀블러 한정판  (0) 2019.02.04

1. var let으로 바꾸지 말자. 처음부터 let으로 하려고 노력하고 안되면 var는 var 그대로...


Cannot pass immutable value as inout argument: 'ret' is a 'let' constant


var가 리팩토링 중 immutable 해져서 let으로 바꾸었는데 &로 주소 넘기기는 안되나 보다. 굳이 바꾸지 않더라도 copy로 넘기고 싶진 않은데, 따져보면 상수로 저장된게 카피 될리가 없지.


Use of extraneous '&'


같은 류. 구조를 수정해서 var를 let으로 바꾸었다고 좋아했는데... 걍 바꾸지 말자.


2. void pointer는 언제나 만능이었다. JAVA 에서는 Object와 interface,  swift에서는 protocol 뿐. 상위 객체 포인터 믿지마. 안돼.


Cannot convert value of type 'jhSceneTimeLine' to expected argument type 'inout jhScene'


jhSceneTimeLine 이 jhSscene를 상속받았는데도 불구하고 상위 포인터로 하위 object를 받을 수 없었다.


자바에서는 다형성이 잘 지켜져 때문에 뭣하면 최상위 Object로 넘기고(void 포인터) 캐스팅해서 쓰면 되었는데...


swift에서 그 정도의 파격은 허용되지 않았다.  그래서 상위 protocol을 선언하고 모두 상속받게 하여 상위


포인터(인스턴스 변수)를 프로토콜로 하면 모두 통용된다.


SWIFT 나름의 개념이 있지만 포인터로 이해하면 리팩토링시 이해 안되는 부분은 없다.


3. 너무 복잡한 일반화는 독... 걍 클래스 다이어그램을 처음부터 잘 그려야 함.


Cannot assign value of type 'T' to type 'T'


일반화 하면서 만나는 에러, <T>를 상속받는 녀석은 꼭 <T>를 명시하고 builder pattern 적용할 때도 명시해야 한다. 에러라도 나오면 다행인데 builder pattern에 적용했을 때 <T>를 안 적어주고 생성했는데 잘 되더라. 결국 논리 오류로 나오고 찾기 빡쌨음 ㅠ. 4.2 버전인데 5가면 요런 에러 필터링 기능이 더 좋아지겠지.


4. 프로퍼티는 처음부터 누가 가질지 잘 설계하자. protected 없다. 빈자리 크다.


Cannot override with a stored property 'mPanels


새로운 구현인데 원래 구현이 아까워 제네릭화 하다가 프로퍼티 오버라이딩 중 생긴 오류.


같은 이름을 쓰려면 접근 제한자(privagte)을 통하는 방법외엔 없다.


Method does not override any method from its superclass


Value of type 'jhType1graphLayer' has no member 'superScene'

Use of unresolved identifier 'panelID'


접근 제한자 때문에 여러 상황이 생긴다.


protected가 없으니 JAVA처럼 생각해서 설계하거나, 리팩토링 하는 것은 그만둬야 겠다.


객체지향이 들어갔으니 객체 단위로 생각해야 하는데, 모듈 단위는 사실상 폴더 단위라... ㅡㅡ;


하긴 fileprivate은 또 파일 단위인데 프로그래밍 하다보면 한 파일에 하나의 class를 넣는게 맞다는


생각이 참 많이 든다. 이런게 잘 안되니 extension 남발하게 된다. extension이나 데코레이션 패턴은


사실상 작은 단위의 설계가 되지 않는다. 작은 프로젝트는 코딩하면서 설계도 자동으로 되는데 말이다.


5. 제네릭 리팩토링이 자바에 비해 너무 힘들었다. 배 GoF다.


Cannot specialize non-generic type 'jhBarGraph'

프로퍼티나 function이 비슷한 모양(접근 제한자, 인자, 인자에 들어가는 데이터 타입 등등)

이면 편한데 아닌 경우 빡쌨다.


건네 줄 옵션이 많은 애들은 일반화 하면서 


타입 뿐 아니라 파라미터까지 달라져야 한다면 빌더 패턴이 답이다.


func build() -> jhPanel<T> {


switch mGtype {


case .LINE:


return jhLineGraph<jhScene>(frame: CGRect(x: x, y: y, width: width, height: height))


case .BAR:


return jhBarGraph<jhScene>(frame: CGRect(x: x, y: y, width: width, height: height))


case .TYPE1:


return jhType1graphPanel<jhSceneTimeLine>(frame: CGRect(x: x, y: y, width: width, height: height), scene: superScene)


case .TYPE4:


return jhType4graph<jhSceneTimeLine>(frame: CGRect(x: x, y: y, width: width, height: height))


}


안드로이드 스튜디오도 참 많이 좋아졌지만, 이클립스에 있던 리팩토링 기능만 해도 지금의  swift보다는 더 강력했다. 제네릭으로 어느 정도 꼬이니 이제 cmd+shift+O 도 찾고자 하는 클래스를 잘 못 찾고 헤매는 경우가 많더라.



스위프트 4.0 -> 4.2 짜증

'NSAttributedStringKey' has been renamed to 'NSAttributedString.Key'


6. lvalue 옵셔널 모든 에러 안 잡더라 대입 잘된다. 조심하자.


 옵셔널은 사실상 null check 에 편한 문법과 설계상 고려하라고 만든 문법이다. 그러나 특정 상황에서는 무조건 null이 안되는 경우가 있기 때문에 옵셔널을 전달받은 어떤 객체가 꼭 옵셔널일 필요는 없다. 그래서 !가 있는데 !는 사실 안쓰는게 맞거든... ! 쓸바엔 Assert가 맞지.



이렇게 예민한 이유는 컴파일/런타임 에러 없는 논리 오류 하나 찾기가 참 어려웠는데, ...


답은 Optional? 에 대입해서였다. 옵셔널이 윗단에서 주구창장 내려온 경우 대입할 때 ?를 붙여서


대입해 버렸는데, 참... 대입 잘되더라.


이런 오류 날 것 같지?


Initializer for conditional binding must have Optional type, not '[CGFloat]'


안나는 경우도 있었다. 정리하면서 했던게 아니고 논리 오류 찾는데 힘들었기에 원칙으로 남겨둔다. 엘벨류 조심하자.


아니면, 한번 옵셔널은 계속해서 옵셔널로 하는게 좋겠다. 상위단에서 있을 수도 없을 수도 있는게 하위단으로 내려간다면 하위단에는 무조건 있는 것으로 바꿔야 하는 경우가 있었다. 널체크 하고 넘기는데 사실, 그게 그 객체를 구성하는 프로퍼티중에 핵심적인 것은 아니어서 있으나 마나한... 


반대의 경우도 있었다. 옵셔널이 아니었는데 상속 구조상 어느 객체에는 있고 어느 객체에는 없는

프로러티가 되어 버린 경우, 두 가지 클래스에 먹히는 제네릭 클레스를 만든 경우... 해당 프로퍼티는

옵셔널이 되어야만 했다.


최대한 이런 경우를 없애야 하는데 개념상 그렇게 구현을 해야 하고...


그렇게 꼬이다 보면 결국 디자인 패턴을 쓰게 된다. 오늘 파일을 나눈 방식을 정리하면,


Separation

- flag

    - flag + if, switch 원초적이나 시온이다.

    - C에서는 #define 이 짱이지. #ifdef, #ifndef

- file

    - separated file + call(자바 때부터 뭐... startActivity using intent, function call, pushViewController...) 콜만 잘되서 연결되면 오케이 였다. 리눅스에서도 그랬잖아. 시스템 콜 잘 부르면 되고... 커널 API만 잘 쓰면 되고.

    - separated file + builder pattern - passing self again and again(늘 고맙지)

    - separated file + proxy pattern(related with memory managements) - can't using directly 객체 단위 캡슐화닷!

    - separated file + adapter pattern - overriding, generic, converting ... whatever use current class or method 고치기 힘들어서 걍 중간 다리 만들었다.

    - separated file + decorator pattern - also passing object via parameter(서브 클래싱 대신 기능 확장용... 익스텐션이 낫다.)

    - separated file + bridge pattern - also passing object via parameter(구현부에서 추상층을 분리 ㅡㅡ; 제네릭화 ... 개고생 어댑터가 낫다.)


이정도 인데 사실 structural 패턴을 쓰다보면 파라미터에 함수 포인터를 넣어서 자기 객체를 계속해서 넘겨 주느냐 안 넘겨 주느냐가 핵심이다. 안 넘겨 주면 중간에 다리 역할을 할 친구를 찾는거고.


결국 소스를 가장 적게 수정하는 것은 싱글톤을 넣는게 최고.


객체 단위니 싱글톤이고 그 개념은 결국 플래그고... 플래그는 결국 세마포어고...


믓튼 


풀 때는 guard로만 풀자고 다짐해 본다.


몇몇 메모리 오류가 났는데,


Kernel Alloc Once 8K 2


MALLOC 293.3M 126


MALLOC guard page 176K 39


MALLOC_LARGE (reserved) 516K 2 reserved VM address space (unallocated)


swift 역시 메모리 관리 한다고 욕본다.


추상화 개념은 추상화 그대로 이해하고 싶은데, ... 결국 메모리 중심으로 생각하는게 정답이라는 생각.


var
 str = "A String"

withUnsafePointer(to: &str) {

    print(" str value \(str) has address: \($0)")

}



메모리 안에서 우린 평안할 지어다.


쓰다보니 뇌 컨디션이 좀 돌아온다.




올리카 만년필 좋다.


색이 달라질 때 그라데이션이 되어서 예쁘네 






마치 이런 느낌?




601 공작소 제품? 내가 샀던 디퓨처 생각남

사고 싶다 구글 홈...



누구랑 해이카카오를 사보니 아쉬운게 많아서,

얜 뭔가 다를 것 같아서....



시그니처 냉장고,... 뭐가 다른거야? ㅠㅠ 디오스가 나아 보이네.






'{BE} JAVA 21 corretto' 카테고리의 다른 글

블로그를 삭제하였다.  (0) 2019.02.05
블로그 운영계획  (0) 2019.02.05
이번 주 일기  (0) 2019.01.26
블로그 운영 계획 190125  (0) 2019.01.25
손석희 폭행 뉴스를 접하고...  (0) 2019.01.25


2018년은 바빠서 참석을 못했는데 사진 한 장이 이렇게 후회가 된다. 올해는 수료식에 참석해서 꼭 찍어야 겠다.

'Objective-C, SQLite3' 카테고리의 다른 글

아마존 오로라 사용기  (0) 2019.02.04
이전 for organic searching  (0) 2019.02.04
make mrproper  (0) 2019.02.04
스타벅스 텀블러 한정판  (0) 2019.02.04
mac locate  (0) 2019.02.03



Make 할 때 모두 지우는 make mrproper는 여기서 유래되었다.





Mr. Clean - Wikipedia



en.wikipedia.org


__Fin__



'Objective-C, SQLite3' 카테고리의 다른 글

이전 for organic searching  (0) 2019.02.04
2017년  (0) 2019.02.04
스타벅스 텀블러 한정판  (0) 2019.02.04
mac locate  (0) 2019.02.03
스위프트 소스 중에 가장 중요한 소스 from swift.org  (0) 2019.02.02





하나는 삼성역, 하나는 강남... 이니셜 로고를 핫 플레이스에 새길 수 있어야 한다.



중에 제일 아름다운.

'Objective-C, SQLite3' 카테고리의 다른 글

2017년  (0) 2019.02.04
make mrproper  (0) 2019.02.04
mac locate  (0) 2019.02.03
스위프트 소스 중에 가장 중요한 소스 from swift.org  (0) 2019.02.02
gcc -static -> Visual studio  (0) 2019.02.02

https://www.youtube.com/watch?v=2Wq5QOaTO-E


와... 진짜... 팬들을 상대로 사기를 치냐.


하긴 스타트업 보니 그런거 없고, 돈이 최고더만 ㅋ


https://www.youtube.com/watch?v=6rHs7enyMVg




발렌타인 30년산과 로얄 살루트 21 년산 모두 5년 정도 숙성 시킨 것 같다.

로얄 살루트는 코르크도 이상없고 맛이 깊어 졌지만 발렌타인은 30년산 특유의 벌꿀 블랜딩이 다 날아가고 양도 손가락 2마디 정도 줄었으며, 21년산 + 알콜 더 탄 것 같은 맛이 났다.

개인적으로 조니워커 블루와 스카치 블루 시리즈를 좋아하는데 발렌타인은 30년산만 좋아했다. 벌꿀 블랜딩 때문에... 이번에 숙성하면서 해당 브랜드에 대해 신뢰도가 많이 떨어졌다.

그러나 벌꿀 블랜딩은 너무 맛있어서 아마 숙성 안하고 바로 먹거나 할 것 같다(5병을 사다보니 숙성하게 된 것)


소주나 양주나 막걸리나 다 같지만

나에게는 양주가 조금 맞긴 하다.

'진행 프로젝트 > [진행] Useful Logs' 카테고리의 다른 글

미금역 갓파스시  (0) 2019.02.11
안시성 후기  (0) 2019.02.06
홍석햄과 모임 정리  (0) 2019.02.02
홍석이 햄 만남  (0) 2019.02.01
잘나가는 BJ가 생각해 보아야 할 꺼리를 제공하는 글  (0) 2019.01.27

USAGE:

var response: jhChart<Data>?


DECLARE:

public struct jhChart<Value> {

    public let result: Result<Value>

    public var value: Value? { return result.value }

...}



structure 의 장점


늘어나는 properties 를 하나에 때려넣을 수 있다.


struct jhData {




    internal var mValuesOfDatas : Array<CGFloat> = Array() {

        didSet {

            if GS.shared.logLevel.contains(.graph) {

                print("mValuesOfDatas.count has been changed to \(mValuesOfDatas.count) in jhPanel")

            }

        }

    }

    

    /// Axes

    var mCountOfaxes_view : Int = 1

    var mUnitOfHorizontalAxes : CGFloat = 100

    var mcountOfHorizontalAxes : Int = 3

    

    internal var mVerticalRatioToDraw_view : CGFloat = 1.0

    

    var axisDistance : CGFloat {

        get {

            return (jhDraw.maxR  mMargin * 2) / CGFloat(mCountOfaxes_view+1)

        }

        set(distance) {

            mCountOfaxes_view = Int(jhDraw.maxR  CGFloat(distance))

        }

    }


    var mCountOfDatas : Int

    var mMaxValueOfDatas : CGFloat

    var mMinvalueOfDatas : CGFloat

    

    internal var mMargin : CGFloat = 300 //1000.0

    //1000.0 is 13.3..%, margin between panel & graph area 0<=martgin<10000.0

    

    init() {

        mCountOfDatas = 0

        mMaxValueOfDatas = 0

        mMinvalueOfDatas = 0

    }

.

.

.



그리고 인자(인수, 파라미터, 로 넘길 때 편하다.


복잡하게 안 넘기고


 dataLayer = jhLayer(&jhClientServer.mValuesOfDatasself.data.axisDistanceself.data.mVerticalRatioToDraw_viewself.data.mMarginmPanelWidth ?? 0mPanelHeight ?? 0mFixedPanelWidthmFixedPanelHeight, layer: 0)



struct 만 넘기자.







mogabi cable and verbatim charger



I didn’t know that the charger has various sockets you can see above. what a c



macOS Mojave




xcode 10.0 bug


Refactoring function titled rename is not working properly when I tried to change protocol member's name I decided to another name. one of them is missing. I saw this 3 times. I think this is not the problems its own. swift has to be getting hierarchical structure more as JAVA does.



리눅서가 맥을 쓰더라도 터미널이 편할 것이다. locate 명령이 듣지 않아 에러 로그를 보면


sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist


으로 나온다.



그럴 땐, 다음 명령어 이후 locate를 하면 잘 된다.


sudo /usr/libexec/locate.updatedb


스위프트는 포인터의 언어


withUnsafePointer(to:_:)


import UIKit



var str = "A String"


withUnsafePointer(to: &str) {

    let c : Int = 4

    print(" str value \(str) has address: \($0)")

    str = "Hello"

}


print(str)

print(c)



str은 잘 나오고 c는 당연히 나오지 않는다.


의식의 흐름 따라 만들다... 통째로 떼서 function이나 class 로 분리하면 된다.


mutable 을 이용하여 메모리 할당, 해제, 제어 등이 가능하다는 것도 알아두자.


여러 개념과 많은 오픈소스와 여러 라이브러리로 프로그램을


쌓아올리다보니 결국에 꼬이는 현상이 발생해서 메모리를 직접 제어할 경우가 결국 오고야 만다.


사실 메모리 직접 제어가 가장 깔끔하다. 리셋이나 무한 루프야 메모리 개념 배제해도 결국 생기는


오류. 큰 프로젝트 하다보면 사실, 칩이나 컴파일러도 의심이 갈 수 밖에 없다.


swift standard library 에서 menual memory management 에 다른 API가 많다.


애플 설명서를 블로그에 붙여넣는 짓은 최대한 지양하려고 한다.

이전 글에도 밝혔지만, 스위프트에서 포인터 이야기하니 언어는 그 언어 자체로서 말해야 한다는 앵무새를 또 만나,...

지양하지 못하고 붙여 넣는다.



Article

Calling Functions With Pointer Parameters

Use implicit pointer casting or bridging when calling functions that takes pointers as parameters.


Framework

Swift Standard Library

Overview

When calling a function that takes a pointer as a parameter, you can use implicit casting to pass a compatible pointer type or implicit bridging to pass a pointer to a variable or the contents of an array.


Pass a Constant Pointer as a Parameter

When you call a function that is declared as taking an UnsafePointer<Type> argument, you can pass any of the following:


An UnsafePointer<Type>, UnsafeMutablePointer<Type>, or AutoreleasingUnsafeMutablePointer<Type> value, which is implicitly cast to UnsafePointer<Type> as necessary.


A String value, if Type is Int8 or UInt8. The string is automatically converted to UTF8 in a zero-terminated buffer, and a pointer to that buffer is passed to the function.


An in-out expression that contains a mutable variable, property, or subscript reference of type Type, which is passed as a pointer to the address of the left-hand side identifier.


A [Type] value, which is passed as a pointer to the start of the array.


The pointer you pass to the function is guaranteed to be valid only for the duration of the function call. Do not persist the pointer and access it after the function has returned.


This example shows the different ways that you can call the a function that takes a constant pointer:


func takesAPointer(_ p: UnsafePointer<Float>) {

    // ...

}


var x: Float = 0.0

takesAPointer(&x)

takesAPointer([1.0, 2.0, 3.0])

When you call a function that takes an UnsafeRawPointer argument, you can pass the same operands as UnsafePointer<Type>, but with any type as Type.


This example shows the different ways that you can call a function that takes a constant raw pointer:


func takesARawPointer(_ p: UnsafeRawPointer?)  {

    // ...

}


var x: Float = 0.0, y: Int = 0

takesARawPointer(&x)

takesARawPointer(&y)

takesARawPointer([1.0, 2.0, 3.0] as [Float])

let intArray = [1, 2, 3]

takesARawPointer(intArray)

takesARawPointer("How are you today?")

Pass a Mutable Pointer as a Parameter

When you call a function that is declared as taking an UnsafeMutablePointer<Type> argument, you can pass any of the following:


An UnsafeMutablePointer<Type> value.


An in-out expression of type Type that contains a mutable variable, property, or subscript reference, which is passed as a pointer to the address of the mutable value.


An in-out expression of type [Type] that contains a mutable variable, property, or subscript reference, which is passed as a pointer to the start of the array, and is lifetime-extended for the duration of the call.


This example shows the different ways that you can call a function that takes a mutable pointer:


func takesAMutablePointer(_ p: UnsafeMutablePointer<Float>) {

    // ...

}


var x: Float = 0.0

var a: [Float] = [1.0, 2.0, 3.0]

takesAMutablePointer(&x)

takesAMutablePointer(&a)

When you call a function that is declared as taking an UnsafeMutableRawPointer argument, you can pass the same operands as UnsafeMutablePointer<Type>, but for any type as Type.


This example shows the different ways that you can call a function that takes a mutable raw pointer:


func takesAMutableRawPointer(_ p: UnsafeMutableRawPointer?)  {

    // ...

}


var x: Float = 0.0, y: Int = 0

var a: [Float] = [1.0, 2.0, 3.0], b: [Int] = [1, 2, 3]

takesAMutableRawPointer(&x)

takesAMutableRawPointer(&y)

takesAMutableRawPointer(&a)

takesAMutableRawPointer(&b)

Pass an Autoreleasing Pointer as a Parameter

When you call a function that is declared as taking an AutoreleasingUnsafeMutablePointer<Type>, you can pass any of the following:


An AutoreleasingUnsafeMutablePointer<Type> value.


An in-out expression that contains a mutable variable, property, or subscript reference of type Type. The value of the operand is copied bitwise into a temporary nonowning buffer. The address of that buffer is passed to the callee, and on return, the value in the buffer is loaded, retained, and reassigned into the operand.


Unlike with other pointer types, you can't use an array as an implicitly bridged parameter.


Pass a Function Pointer as a Parameter

When calling a function that takes a C function pointer argument, you can pass a top-level Swift function, a closure literal, a closure declared with the @convention(c) attribute, or nil. You can also pass a closure property of a generic type or a generic method as long as no generic type parameters are referenced in the closure’s argument list or body.


For example, consider Core Foundation’s CFArrayCreateMutable(_:_:_:) function. The CFArrayCreateMutable(_:_:_:) function takes a CFArrayCallBacks structure, which is initialized with function pointer callbacks:


func customCopyDescription(_ p: UnsafeRawPointer?) -> Unmanaged<CFString>? {

    // return an Unmanaged<CFString>? value

}


var callbacks = CFArrayCallBacks(

    version: 0,

    retain: nil,

    release: nil,

    copyDescription: customCopyDescription,

    equal: { (p1, p2) -> DarwinBoolean in

        // return Bool value

    }

)

var mutableArray = CFArrayCreateMutable(nil, 0, &callbacks)

In this example, the CFArrayCallBacks initializer uses nil values as arguments for the retain and release parameters, the customCopyDescription(_:) function as the argument for the customCopyDescription parameter, and a closure literal as the argument for the equal parameter.


Note


Only Swift function types with C function reference calling convention may be used for function pointer arguments. Like a C function pointer, a Swift function type with the @convention(c) attribute does not capture the context of its surrounding scope.



알아야 하는 사이트와 솔루션


요즘 감기는 약 안 먹으면 안 낫는다.


그래서 집에 감기약 많이 사뒀지만


많이 아파야 약을 먹게 된다.


결국엔 많이 아플 수 밖에 없다.


허리도 마찬가지.


난 손목이나 허리 누가 미리 말을 해줬다면 신경을 썼을텐데


말 안해주었었다.


신기한건 내가 아쉬워서 말을 해주면


안 듣는다.


결국 아파봐야 그 때 후회하며 알게 되는 것 같다.


그래서 이제는


뭔가를 가르쳐 줄 때


미리 포기하는 습관이 생겼다.


조금 말해보고 아니다 싶으면 그냥 경험하게 하는게 좋은 것 같다.


안타깝지만 그것도 자기 능력이라 판단된다.



사람은 변하지 않더라.


20년 경험이다. 중학교 때부터 치면, 더 넘었네.


그래서 이젠 내려놓는다.





Data Recovery

Data Sharing

Explorer Alternatives

Virtual Machine

EXE Security



Beyond Compare, Themida, Browser & Editor , Redhat Cygwin, Kaspersky, Bittorrent  series



'Objective-C, SQLite3' 카테고리의 다른 글

make mrproper  (0) 2019.02.04
스타벅스 텀블러 한정판  (0) 2019.02.04
스위프트 소스 중에 가장 중요한 소스 from swift.org  (0) 2019.02.02
gcc -static -> Visual studio  (0) 2019.02.02
자료형에 대해서  (0) 2019.02.02

used ipad price




완전 똥값이네


중고 가격 보장된다는 것은 옛날 말.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.cdscheduler" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.install" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.family.asl" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.callhistory.asl.conf" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.contacts.ContactsUICore" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.authd" sharing output destination "/var/log/asl" with ASL Module "com.apple.asl".

Output parameters from ASL Module "com.apple.asl" override any specified in ASL Module "com.apple.authd".

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.authd" sharing output destination "/var/log/system.log" with ASL Module "com.apple.asl".

Output parameters from ASL Module "com.apple.asl" override any specified in ASL Module "com.apple.authd".

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.authd" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.eventmonitor" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.mail" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.coreaudio" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.performance" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.iokit.power" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.contacts.ContactsAutocomplete" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.mkb" sharing output destination "/private/var/log/keybagd.log" with ASL Module "com.apple.mkb.internal".

Output parameters from ASL Module "com.apple.mkb.internal" override any specified in ASL Module "com.apple.mkb".

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.mkb" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.AddressBookLegacy" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.MessageTracer" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.networking.boringssl" sharing output destination "/Library/Logs/CrashReporter" with ASL Module "com.apple.networking.networkextension".

Output parameters from ASL Module "com.apple.networking.networkextension" override any specified in ASL Module "com.apple.networking.boringssl".

Nov 14 00:00:03 Junhoui-MacBook-Pro syslogd[41]: Configuration Notice:

ASL Module "com.apple.clouddocs" claims selected messages.

Those messages may not appear in standard system log files or in the ASL database.

Nov 14 00:00:04 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542121204013

Nov 14 00:00:04 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 00:00:05 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=1, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=447, timestamp=1542121204013

Nov 14 00:00:05 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:Event(s) saved, so re-starting TPM after stopOnEmpty

Nov 14 00:00:05 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTPGUARD]:[Info]:New paused status = PAUSED

Nov 14 00:00:05 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:internalPause reason=stop to restart reason=Event(s) saved

Nov 14 00:00:05 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:TpmStart interval=2.124415, tpmReason=Event(s) saved

Nov 14 00:00:05 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTPGUARD]:[Info]:New paused status = NOT paused

Nov 14 00:00:05 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:internalResume reason=Event(s) saved

Nov 14 06:00:04 Junhoui-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.sandboxd[83033]): Service exited due to SIGALRM | sent by kernel_task[0]

Nov 14 06:00:04 Junhoui-MacBook-Pro syslogd[41]: ASL Sender Statistics

Nov 14 06:00:06 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:onTimerElapsed process priority=3, high events count=0, other events count=0

Nov 14 06:00:06 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x60000382f040 about to call waitUntilAllOperationsAreFinished

Nov 14 06:00:06 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x60000382f040 after call to waitUntilAllOperationsAreFinished

Nov 14 06:00:07 Junhoui-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.bsd.dirhelper[93871]): Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.bsd.dirhelper

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Load: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=447, timestamp=1542121204013

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:onTimerElapsed process priority=2, high events count=0, other events count=1

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[BOND]:[Info]:Stage Pack: event name=reportdata, timestamp=1542121204013, record.Id=FA1DDDF1-D260-4B71-A7B7-6A6509C38D57, data=0x6000035077b0, size=1673, tenantId=0fb12cf1e51746c6b64db8a8b48e9eaf

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HMAC]:[Info]:Stage Pack: data=0x6000035077b0 to hmac=0x60000351a8e0

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[COMPRESSION]:[Info]:compressed data, uncomp size=1705, comp size=1156

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[COMPRESSION]:[Info]:Stage Pack: data=0x60000351a8e0 to compressedData=0x600003530270

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTP]:[Info]:Prepare to send data=0x600003530270, size=1156, events count=1

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTP]:[Info]:173 synchronized self=0x60000368fbd0, session=0x7fb8efd61230

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTP]:[Info]:taskCount=1

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTP]:[Info]:Stage Post: event name=reportdata, record.Id=FA1DDDF1-D260-4B71-A7B7-6A6509C38D57, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=447, timestamp=1542121204013, data=0x600003530270, size=1156, tenantId=0fb12cf1e51746c6b64db8a8b48e9eaf

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTPGUARD]:[Info]:Sending events to delegate (Http)

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTP]:[Info]:taskCount=0

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTP]:[Error]:Http response error=Error Domain=NSURLErrorDomain Code=-1009 "인터넷 연결이 오프라인 상태입니다." UserInfo={NSUnderlyingError=0x600003512b80 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={_kCFStreamErrorCodeKey=50, _kCFStreamErrorDomainKey=1}}, NSErrorFailingURLStringKey=https://mobile.pipe.aria.microsoft.com/Collector/3.0/, NSErrorFailingURLKey=https://mobile.pipe.aria.microsoft.com/Collector/3.0/, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=50, NSLocalizedDescription=인터넷 연결이 오프라인 상태입니다.}

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTPRESPONSEPARSER]:[Error]:data=0x600003530270, code=-1009, error=(null)

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142807666

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142807829

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:increaseBackOff: old backoff=0, new backoff=1, new highPriorityInterval=5.632500

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTPGUARD]:[Info]:New paused status = PAUSED

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x60000391d660 about to call waitUntilAllOperationsAreFinished

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x60000391d660 after call to waitUntilAllOperationsAreFinished

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:TpmStopped tpmReason=stop to restart reason=increaseBackOff: old backoff=0, new backoff=1, new highPriorityInterval=5.632500

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:internalPause reason=stop to restart reason=increaseBackOff: old backoff=0, new backoff=1, new highPriorityInterval=5.632500

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:TpmStart interval=5.632500, tpmReason=increaseBackOff: old backoff=0, new backoff=1, new highPriorityInterval=5.632500

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[HTTPGUARD]:[Info]:New paused status = NOT paused

Nov 14 06:00:07 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:internalResume reason=increaseBackOff: old backoff=0, new backoff=1, new highPriorityInterval=5.632500

Nov 14 06:00:08 Junhoui-MacBook-Pro systemstats[54]: assertion failed: 18A391: systemstats + 681742 [B3413106-A388-3147-B857-B00559D3CC9B]: 0x5

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142808291

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142808320

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=2, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=448, timestamp=1542142807666

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=3, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=449, timestamp=1542142807829

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=4, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=450, timestamp=1542142808291

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=5, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=451, timestamp=1542142808320

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142808830

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:Changed from old NetworkType=0 to new NetworkType=2

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x6000038571c0 about to call waitUntilAllOperationsAreFinished

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x6000038571c0 after call to waitUntilAllOperationsAreFinished

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142808864

Nov 14 06:00:08 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:00:08 Junhoui-MacBook-Pro xpcproxy[93880]: libcoreservices: _dirhelper_userdir: 529: bootstrap_look_up returned (ipc/send) invalid destination port

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Warn]:scheduleBlock:withRepeatInterval: called when opQueue is already nil!

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:Changed from old NetworkType=2 to new NetworkType=0

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x600003850140 about to call waitUntilAllOperationsAreFinished

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x600003850140 after call to waitUntilAllOperationsAreFinished

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869436

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869509

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869511

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=6, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=452, timestamp=1542142808830

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=7, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=453, timestamp=1542142808864

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869604

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869608

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869615

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869622

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869626

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142869705

Nov 14 06:01:09 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=8, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=454, timestamp=1542142869436

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=9, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=455, timestamp=1542142869509

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=10, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=456, timestamp=1542142869511

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=11, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=457, timestamp=1542142869604

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=12, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=458, timestamp=1542142869608

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=13, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=459, timestamp=1542142869615

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=14, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=460, timestamp=1542142869622

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=15, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=461, timestamp=1542142869626

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=16, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=462, timestamp=1542142869705

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142870756

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142870767

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142870772

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142870774

Nov 14 06:01:10 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TPM]:[Info]:Changed from old NetworkType=0 to new NetworkType=2

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x6000038d4a00 about to call waitUntilAllOperationsAreFinished

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x6000038d4a00 after call to waitUntilAllOperationsAreFinished

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[SEMANTIC]:[Info]:Stage Receive: event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, timestamp=1542142871268

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[TIMEDQUEUE]:[Info]:1 event put into timed queue.

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=17, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=463, timestamp=1542142870756

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=18, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=464, timestamp=1542142870767

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=19, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=465, timestamp=1542142870772

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=20, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=466, timestamp=1542142870774

Nov 14 06:01:11 Junhoui-MacBook-Pro Microsoft OneNote[81167]: [ACT]:[OFFLINE]:[Info]:Stage Save: rowId=21, event name=reportdata, event priority=2, initId=187533B8-636B-40B1-ABED-BF1C89B36ED5, sequence=467, timestamp=1542142871268

apt list --installed | grep java

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

ca-certificates-java/jammy-updates,jammy-security,now 20190909ubuntu1.2 all [installed,automatic]
java-common/jammy,now 0.72build2 all [installed,automatic]
javascript-common/jammy,now 11+nmu1 all [installed,automatic]

sudo apt update
sudo apt install openjdk-11-jdk

오라클 자바와 OpenJDK는 각각 장단점이 있어 우열을 가리기 쉽지 않습니다. 두 버전의 주요 특징을 비교해 보겠습니다.

오라클 자바(Oracle Java):

  1. 상용 버전으로, 오라클社의 공식 지원과 유지보수를 받을 수 있습니다.
  2. 장기 지원(LTS) 버전을 제공하여 안정성이 높습니다.
  3. 추가적인 기능과 보안 패치를 빠르게 제공받을 수 있습니다.
  4. 일부 상용 기능(Flight Recorder, Mission Control 등)이 포함되어 있습니다.

OpenJDK:

  1. 오픈소스 버전으로, 무료로 사용할 수 있습니다.
  2. 커뮤니티 기반으로 개발되어 투명성이 높습니다.
  3. 다양한 벤더(Amazon, Azul, AdoptOpenJDK 등)에서 빌드와 지원을 제공합니다.
  4. 라이선스 비용이 없어 비용 절감 효과가 있습니다.

성능 면에서는 오라클 자바와 OpenJDK가 거의 동일합니다. 두 버전 모두 동일한 소스 코드를 기반으로 하기 때문입니다. 다만, 오라클 자바는 상용 기능과 보안 패치를 더 빠르게 제공하는 경향이 있습니다.

결론적으로, 프로젝트의 요구사항과 예산에 따라 선택하는 것이 좋습니다. 안정성과 공식 지원이 중요하다면 오라클 자바를, 비용 절감과 오픈소스의 유연성이 필요하다면 OpenJDK를 선택할 수 있습니다. 또한, 특정 벤더의 OpenJDK 빌드(Amazon Corretto, Azul Zulu 등)를 사용하면 장기 지원과 추가 기능을 제공받을 수 있습니다.

 

root@ip-172-31-5-46:/home/ubuntu/kernel/5_15_72/linux-6.8.2# java --version
openjdk 18.0.2-ea 2022-07-19
OpenJDK Runtime Environment (build 18.0.2-ea+9-Ubuntu-222.04)
OpenJDK 64-Bit Server VM (build 18.0.2-ea+9-Ubuntu-222.04, mixed mode, sharing)

 

 apt list --upgradable
Listing... 완료
apache2-bin/jammy-updates 2.4.52-1ubuntu4.8 amd64 [upgradable from: 2.4.52-1ubuntu4.7]
apache2-data/jammy-updates 2.4.52-1ubuntu4.8 all [upgradable from: 2.4.52-1ubuntu4.7]
apache2-utils/jammy-updates 2.4.52-1ubuntu4.8 amd64 [upgradable from: 2.4.52-1ubuntu4.7]
apache2/jammy-updates 2.4.52-1ubuntu4.8 amd64 [upgradable from: 2.4.52-1ubuntu4.7]
bsdextrautils/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
bsdutils/jammy-updates,jammy-security 1:2.37.2-4ubuntu3.3 amd64 [upgradable from: 1:2.37.2-4ubuntu3]
coreutils/jammy-updates 8.32-4.1ubuntu1.2 amd64 [upgradable from: 8.32-4.1ubuntu1.1]
curl/jammy-updates,jammy-security 7.81.0-1ubuntu1.16 amd64 [upgradable from: 7.81.0-1ubuntu1.15]
docker-buildx-plugin/jammy 0.13.1-1~ubuntu.22.04~jammy amd64 [upgradable from: 0.13.0-1~ubuntu.22.04~jammy]
docker-ce-rootless-extras/jammy 5:26.0.0-1~ubuntu.22.04~jammy amd64 [upgradable from: 5:25.0.4-1~ubuntu.22.04~jammy]
docker-compose-plugin/jammy 2.25.0-1~ubuntu.22.04~jammy amd64 [upgradable from: 2.24.7-1~ubuntu.22.04~jammy]
eject/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
fdisk/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
libblkid-dev/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
libblkid1/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
libcurl3-gnutls/jammy-updates,jammy-security 7.81.0-1ubuntu1.16 amd64 [upgradable from: 7.81.0-1ubuntu1.15]
libcurl4/jammy-updates,jammy-security 7.81.0-1ubuntu1.16 amd64 [upgradable from: 7.81.0-1ubuntu1.15]
libfdisk1/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
libldap-2.5-0/jammy-updates 2.5.17+dfsg-0ubuntu0.22.04.1 amd64 [upgradable from: 2.5.16+dfsg-0ubuntu0.22.04.2]
libldap-common/jammy-updates 2.5.17+dfsg-0ubuntu0.22.04.1 all [upgradable from: 2.5.16+dfsg-0ubuntu0.22.04.2]
libmount-dev/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
libmount1/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
libsmartcols1/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
libuuid1/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
mount/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
python3-update-manager/jammy-updates 1:22.04.19 all [upgradable from: 1:22.04.18]
rippled/focal 2.1.1-1 amd64 [upgradable from: 2.1.0-1]
snapd/jammy-updates 2.61.3+22.04 amd64 [upgradable from: 2.58+22.04.1]
ubuntu-advantage-tools/jammy-updates 31.2~22.04 amd64 [upgradable from: 30~22.04]
ubuntu-pro-client-l10n/jammy-updates 31.2~22.04 amd64 [upgradable from: 30~22.04]
update-manager-core/jammy-updates 1:22.04.19 all [upgradable from: 1:22.04.18]
update-notifier-common/jammy-updates 3.192.54.8 all [upgradable from: 3.192.54.6]
util-linux/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
uuid-dev/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]
uuid-runtime/jammy-updates,jammy-security 2.37.2-4ubuntu3.3 amd64 [upgradable from: 2.37.2-4ubuntu3]

================ 화사첨족 =============

vintage mcm

완성 이제 늙어서 쓰게 묵혀둬야지 하고 2024년 지금 까지 쓰고 있다...

 

 

 

 

 

'{Infra} Server Setting' 카테고리의 다른 글

워드프레스 설치  (0) 2019.02.07
amazon corretto installation in Amazon EC2  (0) 2019.02.07
서버 인프라 담당자 모집에 대한 고찰  (0) 2019.01.31
gpg setting error 해결  (0) 2019.01.31
cartoon face service setting  (0) 2019.01.27

+ Recent posts