NIKE REACT ELEMENT 87
LT OREWOOD BRN / LASER ORANGE

WORKSOUT 에서 주문한 뉴슈즈가 도착했다!!
역시 박스는 나이키지.

뚜껑을 열어본다.
따뜻한 봄과 여름에 잘 어울리는 신발이다
투명한 재질이기 때문에 겨울엔 신기 어렵다고 본다.

두쪽 모두 꺼내서 ...예쁘다!!

인스타그램을 보면 이렇게 들고 찍던데...

리액트는 투명한 재질이라서 어떤 양말을 신느냐에 따라 다양하게 변화를 줄 수 있다. 평소에는 자주 신어보지 못하는 원색의 양말도 나름 잘 소화해낸다.

모두 신어보자

착화감은 좋은편이다.
요즘 착화감 좋은 신발을 선호하고 있는데 리액트는.. 더 신어봐야겠지만 일단 첫 느낌은 좋다!

가장 좋아하는 신발은 97맥스(아시아) 이지만 요즘은...편한신발 위주로 신다보니...이지350, 이지500, 나이키문레이서를 가장 많이 신고 있다.

아마도 이번 여름에는 리액트와 이지350을 가장 많이 신지 않을까 싶다.

가격(정가) : 179,000원
사이즈 추천 : 반업
양말 추천 : 흰색
출시하자마자 품절...

React는 사용자 인터페이스를 개발하기 위해 페이스북이 개발하여 오픈 소스로 공개한 것으로, 

간결함과 성능 그리고 컴포넌트 단위 개발을 염두에 두고 만들어진 자바스크립트 라이브러리다. 


데이터가 변경되면 이 변경 사항을 반영하기 위해 UI를 갱신해야 한다. 이 과정을 효과적이면서도 쉽게 처리하기란 쉽지 않다. 

React는 바로 이 문제를 해결하는 데 주안점을 두고 있다. 


React의 내부 매커니즘은 컴포넌트의 상태변경과 이를 UI에 반영하는 작업 등에 필요한 복잡한 과정을 처리한다. 이 과정을 처리하는 주요 기법이 

바로 가상DOM 기술이다. 


DOM은 XML문서의 계층 구조를 반영한 트리구조다. 

이 트리구조는 node로 표현되는 자식 구조들로 구성되며 보통 이 구조는 웹페이지와 어플리케이션을 구성하는 div 및 기타 요소들로 해석된다.


DOM을 조작하는 것은 (getElementById, innerHTML....) 상당히 직관적이지만, 대형 웹 애플리케이션을 개발할 때는 꽤 복잡한 작업이 된다. 

React를 통해 개발하면 DOM을 직접 조작할 경우가 별로 없다. 

가장 위에서 언급했듯이 가상DOM을 통해 상태를 변화시키면 알아서 UI에 적용해주는 역할을 React가 대신 해주기 때문에...

React의 이 동작은 메모리의 DOM에서 발생한 변경 사항이 실제 DOM의 변경을 유발한다고 판단되는 경우에만 수행된다. 


가상DOM이 데이터의 변경사항이나 애플리케이션의 변경을 어떻게 처리하는지에 대해 

너무 깊이 있게 이해하려고 노력할 필요는 없다.

우리는 그저 애플리케이션에서 우리가 집중해야 하는 부분에만 더 집중하면 된다. 


React를 이용해 개발한다는 것은 레고를 이용해 뭔가를 만드는 것과 유사하다. 


React는 권장 사례들을 충분히 활용하도록 만들어졌기 때문에 초기에 패러다임 전환에 따른 비용이 필요하지만, 장기적으로는 큰 이득이 된다. 


'IT > React' 카테고리의 다른 글

React란? React 소개  (0) 2019.02.13

1. 오랜만이야 어떻게 지냈어?

2. 대화 즐거웠어, 와이프한테 안부 전해줘.

3. 바깥 날씨가 추워. 집까지 데려다 줄게

4. 별말을 다하네. 친구 좋다는게 뭐야.

5. 이번주 토요일 날씨가 어떨것 같아?

6. 설마 나 몰래 안가려고 했던 건 아니겠지.

7. 미안한데 나 선약이 있어 

8. 약속을 다른 날짜로 옮겨야겠어.

9. 내가 백을 좀 썼지, 좋은 인맥이 좀 있거든

10. 커피 정말 좋아하는구나. 적당히 좀 마셔.















1. Long time no see. How have you been?

2. Nice talking you you. Say hello to your wife.

3. It's cold outside. I'll give you a ride home.

4. Don't mention it. That's what friends are for.

5. What's the weather gonna be this Saturday?

6. Don't tell me you were going to go alone behind my back.

7. I'm sorry. but I have previous engagement.

8. I'm gonna have to postpone it for another day.

9. I pulled some strings. I have good connections.

10. You are a big fan of coffee. Go easy on it.

'English' 카테고리의 다른 글

영어회화 - 100일의 기적 #Quiz  (0) 2019.01.29
영어회화 - 100일의 기적 #5  (0) 2019.01.17
영어회화 - 100일의 기적 #4  (0) 2019.01.13
영어회화 - 100일의 기적 #3  (0) 2019.01.11
영어회화 - 100일의 기적 #2  (0) 2019.01.09
영어회화 100일의 기적 #1일  (0) 2019.01.05
잘 넘어지는 연습
국내도서
저자 : 조준호
출판 : 생각정원 2017.11.13
상세보기

회사 1층 Library Deep 에서 책을 고르던중 표지가 가장 예쁜책을 골랐다. 

사실 책의 제목도 보지 않고 골라봤다. 

책을 들고 퇴근길 버스에 앉아 제목을 보니 '잘 넘어지는 연습' 이라는 제목을 가지고 있다. 

그리고 '조준호 지음' 이라고 되어 있어서 '조준호? 어디서 들어봤는데, 조준호? 넘어진다? 유도??' 라는 생각이 들었다. 

올림픽에서 메달을 따고 젊은 나이에 은퇴를 선언했다는 것까지만 메스컴을 통해 알고 있었는데 책을 쓰셨네. 와우.. 멋진 분이구나 

책의 제목과 지은이를 알고나니 책의 내용이 어느정도 예상이 되었다. 

그리고 뭐 예상과 크게 빗나가지는 않았으나 마치 내 앞에 서서 말하고 있는 듯, 말투가 고스란히 책에 담겨 있어서 재미있게 읽었다. 

책의 내용이 나에게 큰 영감을 주거나 그렇지는 않았지만 기억나는 한구절이 있다. 

책의 마지막장을 덮었을때 기억나는 구절이 있다는 것 만으로도 좋은(?)책이라고 판단하는 나의기준에 적합했다. 

"나는 정말 이겨야 할때를 위해 지는 것을 두려워하지 않는다." 

누군가 나에게 비슷한 말을 한적이 있다. 반드시 이겨야 할 때가 아니라면 굳이 이기려고 하지 말라. 

'지는게 이기는 것이다.' 이말과는 약간은 다른말이면서 비슷한 결론을 가지고 있다. 




퇴근길 인문학 수업 - 전환
국내도서
저자 :
출판 : 한빛비즈 2018.09.28
상세보기


2019년 첫 책리뷰는 #퇴근길인문학수업 시리즈 중 '전환' 편이다. 

3가지 (멈춤, 전환, 전진) 시리즈가 있다는 것을 책을 고르기 전에 알았다면 순서대로 읽었겠지만 일단 바로 눈앞에 있던 '전환'을 읽었으니

나머지 시리즈는 .... 생각해보고 읽으려고 한다. ^^;

사실 #인문학 이란 무엇인지 말만 들어봤지 관심이 없었다.

#과학 에 대한 정의처럼 너무나 광범위한 분야이기 때문에 어렵게 생각했고 책을 읽으면서 다시 한번 '아 어렵다' 라고 느꼈다. 

인문학은 인간과 인간의 근원문제, 인간의 사상과 문화에 관해 탐구하는 학문이다. (from 위키백과)

자연과학과 사회과학이 경험적인 접근을 주로 사용하는 것과는 달리, 분석적이고 비판적이며 사변적인 방법을 폭넓게 사용한다. 

음악, 예술, 산술, 천문, 문법, 수사, 논리, 역사 등을 통해 인문학을 공부할 수 있다. 

인문학에서 답을 찾으려는 시도는 정보통신기술 등 첨단산업에서도 활발하다. 

스티브잡스의 인생을 바꾼 강의는 아이러니하게도 캘리그라피(서체학) 수업이었다. 

아름다운 서체를 연구하는 이 수업에 빠진 잡스는 캘리그라피를 커퓨터에 접목해 오늘날의 애플을 있게 한 매킨토시 컴퓨터를 만들었다. 

잡스는 "애플은 언제나 인문학과 기술이 만나는 지점에 존재했다." 고 말했다. 

빌게이츠도 "인문학이 없었다면 나도 없었고 컴퓨터도 없었을 것" 이라고 이야기 한다. 

필자는 이 책을 직장인이나 학생들에게 인문학을 통해 자기성찰과 치유의 기회를 마련해주면서 동시에 인문학에 대한 지적 갈증도 해소하기 위해 썼다고 한다. 

책은 '역사와 미래',  '심리와 치유',  '예술과 일상',  '천체와 신화' 4개의 Part 로 이루어져 있다. 

역시나 역사와 미래부터 재미있다. 예술과 일상편을 보면서 이해되지 않는 예술품들에 대한 가치평가가 주를 이루었고 천체와 신화를 통해 아.... 무슨말인지 잘 모르겠다...고 느꼈다. 

아직 나의 얕은 지식과 굳어버린 머리로는 내용을 모두 받아들이기에 조금 힘겨웠다. 

문제에 대한 해답을 찾을때 숫자에 의한 분석적 사고와 더불어 인문학점 관점에서의 해석이 도움이 되리라는 것을 

마음속에 새겨 넣으면서 책의 마지막장을 덮을수 있어서 기분이 좋다. 






A. How did you get those plane tickets?

B. I pulled some strings. I have good connections.

A. I knew it, Care for some coffee after lunch?

B. You're big fan of coffee. Go easy on it.

A. It's not gonna kill you to have one.

B. Don't forget to bring Anna.


Key point

(Would you) care for + 명사? (~좀 하실래요?/드실래요?)

A. care for dessert?  (디저트 좀 드시겠어요?)

B. Yes, I'd like a cheese cake.  (네 치즈케이크 주세요.)

 - 유사표현 : Care for some coffee? / Would you like some coffee?


go easy on sth (~을 적당히 하다.)

A. How do you like your coffee?  (커피 어떻게 해 드릴까요?)

B. No cream. Please go easy on the sugar.  (크림은 빼고 설탕은 조금만 넣어 주세요.)


It's not gonna kill you to + 동사원형 (~한다고 큰일 안난다.)

A. I always wear casual clothes.  (전 항상 편한옷을 입어요)

B. It's not gonna kill you to look like a girl for one day.  (하루정도 여성스럽게 입는다고 큰일 나지 않아.)


Don't forget to + 동사원형 (~하는거 잊지마)

A. I have a runny nose. I'm coming down with a cold.  (콧물이 나와요. 감기 기운이 있어요)

B. Don't forget to drop by the clinic after work.  (퇴근 후에 병원에 들르는 거 잊지 마세요)






'English' 카테고리의 다른 글

영어회화 - 100일의 기적 #Quiz  (0) 2019.01.29
영어회화 - 100일의 기적 #5  (0) 2019.01.17
영어회화 - 100일의 기적 #4  (0) 2019.01.13
영어회화 - 100일의 기적 #3  (0) 2019.01.11
영어회화 - 100일의 기적 #2  (0) 2019.01.09
영어회화 100일의 기적 #1일  (0) 2019.01.05
A. I feel like going out with you tonight.
B. I'm sorry, but I have previous engagement.
A. Nothing beats beer with chicken o  a hot dat.
B. Come to think of it, I can't miss a drinking session.
A. That's it. You might as well cancel your appiintment.
B. I' m goona have to postpone it for another day.

Key point.
1. I feel like + (동)명사 ~하고 싶은 기분이다.
A. I feel like crying my eyes out.
B. Chin up and I'll keep you company.

2. Nothing beats sth ~만 한 것이 없다.
A. Nothing beats this place for crabs.
B. Really? I can't wait to eat.

3. might as well + 동사원형 ~하는게 나을것 같다.
A. We have to wait for an hour the next bus.
B. We might as well walk. It only takes 20 minutes on foot.

4. postpone sth for another day 다른날로 연기하다.
A. Could you postpone it another day?
B. It's up to you. It's all the same.


'English' 카테고리의 다른 글

영어회화 - 100일의 기적 #Quiz  (0) 2019.01.29
영어회화 - 100일의 기적 #5  (0) 2019.01.17
영어회화 - 100일의 기적 #4  (0) 2019.01.13
영어회화 - 100일의 기적 #3  (0) 2019.01.11
영어회화 - 100일의 기적 #2  (0) 2019.01.09
영어회화 100일의 기적 #1일  (0) 2019.01.05

What's the weather like? (How is the weather?)


A. What's the weather gonna be like this Saturday?

B. The weather reporter said it was gonna be raining.

A. I get the feeling that we should call off our trip.

B. Boy! It totally slipped my mind.

A. Don't tell me you were going to go alone behind my back.

B. No way. I'll just go with the flow.


Key Point.

1. What's sb/sth like? (~은 어때?)

A. What's the rookie like?

B. Outgoing. He likes to hang out with people.


2. It slipped one's mind (깜빡 잊어버렸어)

A. You were supposed to see me for dinner.

B. I'm sorry, It totally slipped my mind.


3. Don't tell me 주어+동사 (설마 ~하려는건 아니겠지)

A. Don't tell me you have changed your mind.

B. No. Don't jump to conclusions.


4. go with the flow (대세를 따르다.)

A. How about a drink this evening?

B. I don't care. I'll go with the flow.


5. get the feeling that 주어+동사 (~라는 느끼이 들다)

6. call off (취소하다)

7. behind one's back (~등 뒤에서/~몰래)

'English' 카테고리의 다른 글

영어회화 - 100일의 기적 #Quiz  (0) 2019.01.29
영어회화 - 100일의 기적 #5  (0) 2019.01.17
영어회화 - 100일의 기적 #4  (0) 2019.01.13
영어회화 - 100일의 기적 #3  (0) 2019.01.11
영어회화 - 100일의 기적 #2  (0) 2019.01.09
영어회화 100일의 기적 #1일  (0) 2019.01.05
I got something for your birthday.

A prenst for me? You shouldn't have.

It's cold outside. I'll give you a ride home.

Don't bother., but thanks anyway.

Don't mention it. That's what friends are for.

Something smells fishy. Just be yourself.



Key Point



. You shouldn't have!

Here's present for you.

What beautiful flowers! You shouldn't have!



.give sb a ride ~

Could you give me a ride home?

Sure, I'll drop you off on the way.



.That's what friends are for

I can always count on you.

That's what friends are for.



. be ineself

I'm so nervous about my job interview.

Relax and be yourself.

'English' 카테고리의 다른 글

영어회화 - 100일의 기적 #Quiz  (0) 2019.01.29
영어회화 - 100일의 기적 #5  (0) 2019.01.17
영어회화 - 100일의 기적 #4  (0) 2019.01.13
영어회화 - 100일의 기적 #3  (0) 2019.01.11
영어회화 - 100일의 기적 #2  (0) 2019.01.09
영어회화 100일의 기적 #1일  (0) 2019.01.05

Spring Boot + JPA 샘플 프로젝트로 이것저것 하다가

JDK 를 openjdk11로 변경했더니 startup 할 때 오류가 발생한다. 


[상황]

 16:27 ERROR o.s.boot.SpringApplication - Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1699)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:573)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)

at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)

at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:859)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)

at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)

at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246)

at com.yhkim.study.FirstprojectApplication.main(FirstprojectApplication.java:10)

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:402)

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)

at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1758)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1695)

... 16 common frames omitted

Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister

at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123)

at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)

at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:129)

at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)

at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)

at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)

at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)

at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)

... 20 common frames omitted

Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]

at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:91)

at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116)

at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:382)

at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519)

at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)

at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)

... 28 common frames omitted

Caused by: java.lang.reflect.InvocationTargetException: null

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)

at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88)

... 37 common frames omitted

Caused by: java.lang.NullPointerException: null

at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:103)

at javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:151)

at javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:134)

at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)

at javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:131)

at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:530)

at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:515)

at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:451)

at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:422)

at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:75)

at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)

at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:156)

at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:58)

... 42 common frames omitted



[원인]

JPA(Hibernate) 라는 것은 결국 BCI 방식으로 class load 시점에 entity 와 JPA Interface 를 이용하여 SQL 문을 자동 생성하여 삽입시켜주는 녀석인데

.... 로그를 보면 org.hibernate.persister.entity.SingleTableEntityPersister 의 생성자에서 그 역할을 하는듯 하다. 

그런데 openjdk11에서는 javaassist 가 removed 된건지... entityManagerFactory 빈을 생성할 때 

at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:103) <--- 이곳에서 NullPointerException 이 발생한다. 


[해결]

pom.xml 에 javassist 에 대한 dependency를 추가해주면 된다.

<dependency>

    <groupId>org.javassist</groupId>

    <artifactId>javassist</artifactId>

    <version>3.23.1-GA</version>

</dependency>


관련 링크 > https://github.com/spring-projects/spring-boot/issues/14610

+ Recent posts

티스토리 툴바