<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>README</title>
	<atom:link href="http://readme.skplanet.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://readme.skplanet.com</link>
	<description>SK플래닛 기술 블로그</description>
	<lastBuildDate>Tue, 29 May 2018 01:13:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.10</generator>
	<item>
		<title>Spring Camp 2018 : 11번가 Spring Cloud 기반 MSA로의 전환 – 지난 1년간의 이야기</title>
		<link>http://readme.skplanet.com/?p=13933</link>
		<comments>http://readme.skplanet.com/?p=13933#comments</comments>
		<pubDate>Tue, 29 May 2018 01:13:03 +0000</pubDate>
		<dc:creator><![CDATA[윤용성 개발혁신팀]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[기술 세미나]]></category>
		<category><![CDATA[Hystrix]]></category>
		<category><![CDATA[MSA]]></category>
		<category><![CDATA[ribbon]]></category>
		<category><![CDATA[spring cloud]]></category>
		<category><![CDATA[zipkin]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13933</guid>
		<description><![CDATA[안녕하세요. SK 플래닛 개발혁신팀 윤용성입니다. 지난 4월 21일 있었던 Spring Camp 2018 행사에서 “11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기”라는 제목으로 발표를 하였습니다. 이번 발표에서 11번가 MSA를 이루고 있는 Spring Cloud의 기본 요소에 대한 핵심적인 개념 및 11번가 안에서 어떻게 사용되고 있는지에 관한 공유가 되었으며, 11번가의 MSA기반 모니터링 환경에 관해서도 소개되었습니다. 당일 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>안녕하세요. SK 플래닛 개발혁신팀 윤용성입니다.</p>
<p>지난 4월 21일 있었던 Spring Camp 2018 행사에서 “11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기”라는 제목으로 발표를 하였습니다.</p>
<p>이번 발표에서 11번가 MSA를 이루고 있는 Spring Cloud의 기본 요소에 대한 핵심적인 개념 및 11번가 안에서 어떻게 사용되고 있는지에 관한 공유가 되었으며, 11번가의 MSA기반 모니터링 환경에 관해서도 소개되었습니다. 당일 발표하였던 자료 공유 드립니다.</p>
<p>감사합니다.<br />
 </p>
<div align=center><iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="//www.slideshare.net/slideshow/embed_code/key/BhaSuMQnAVr1E2" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></div>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13933</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SK ICT Tech Summit 2017 추천 플랫폼 콜로세오</title>
		<link>http://readme.skplanet.com/?p=13903</link>
		<comments>http://readme.skplanet.com/?p=13903#respond</comments>
		<pubDate>Thu, 08 Mar 2018 01:00:28 +0000</pubDate>
		<dc:creator><![CDATA[정재훈 개인화추천팀]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[colloseo]]></category>
		<category><![CDATA[개인화]]></category>
		<category><![CDATA[빅데이터]]></category>
		<category><![CDATA[추천]]></category>
		<category><![CDATA[콜로세오]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13903</guid>
		<description><![CDATA[안녕하세요. SK플래닛 개인화추천팀 정재훈입니다. SK그룹 기술 컨퍼런스인 SK ICT Tech Summit 2017에서 발표한 ‘추천 플랫폼 콜로세오’ 자료 소개 드립니다. 추천 플랫폼의 역할과 방향성에 대해서 실 서비스 적용 사례를 통해 설명한 자료입니다. 비전공자 분들도  쉽게 보실 수 있는 부담 없는 내용으로 구성되어 있습니다.     감사합니다.]]></description>
				<content:encoded><![CDATA[<p>안녕하세요. SK플래닛 개인화추천팀 정재훈입니다.</p>
<p>SK그룹 기술 컨퍼런스인 SK ICT Tech Summit 2017에서 발표한 ‘추천 플랫폼 콜로세오’ 자료 소개 드립니다.</p>
<p>추천 플랫폼의 역할과 방향성에 대해서 실 서비스 적용 사례를 통해 설명한 자료입니다.</p>
<p>비전공자 분들도  쉽게 보실 수 있는 부담 없는 내용으로 구성되어 있습니다.</p>
<p> </p>
<div><iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="//www.slideshare.net/slideshow/embed_code/key/lF7fii80fQoC5M" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></div>
<p> </p>
<p>감사합니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13903</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>11번가 챗봇 바로</title>
		<link>http://readme.skplanet.com/?p=13812</link>
		<comments>http://readme.skplanet.com/?p=13812#respond</comments>
		<pubDate>Wed, 09 Aug 2017 04:30:48 +0000</pubDate>
		<dc:creator><![CDATA[노세호 Bot Platform개발팀]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[기술 세미나]]></category>
		<category><![CDATA[Chatbot]]></category>
		<category><![CDATA[Conversational Commerce]]></category>
		<category><![CDATA[Dialog Management)]]></category>
		<category><![CDATA[챗봇]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13812</guid>
		<description><![CDATA[안녕하세요, SK플래닛 Bot Platform 개발팀 노세호입니다. 모바일 커머스의 중요한 소비자 트렌드로 대화형 커머스(Conversational Commerce)가 떠오르게 되었고, 이 대화형 커머스의 중심에 있는 Chatbot을 개발하여 11번가의 전자제품을 상담해주는 디지털 컨시어지에 적용시켰던 경험을 공유해보려고 합니다. 그 중에서도 Chatbot의 두뇌 역할을 담당하는 DM(Dialog Management) 서버가 돌아가는 예시를 들면서 원리를 설명하고자 합니다. 자세한 내용은 강의 동영상과 자료 동영상을 참고 부탁 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>안녕하세요, SK플래닛 Bot Platform 개발팀 노세호입니다.</p>
<p>모바일 커머스의 중요한 소비자 트렌드로 대화형 커머스(Conversational Commerce)가 떠오르게 되었고, 이 대화형 커머스의 중심에 있는 Chatbot을 개발하여 11번가의 전자제품을 상담해주는 디지털 컨시어지에 적용시켰던 경험을 공유해보려고 합니다.</p>
<p>그 중에서도 Chatbot의 두뇌 역할을 담당하는 DM(Dialog Management) 서버가 돌아가는 예시를 들면서 원리를 설명하고자 합니다.<br />
자세한 내용은 강의 동영상과 자료 동영상을 참고 부탁 드립니다. 애니메이션 효과가 많아, 슬라이드가 아닌 동영상으로 첨부하게 되었습니다.</p>
<div align=center><iframe width="560" height="315" src="https://www.youtube.com/embed/AtJbpSUPT-w" frameborder="0" allowfullscreen></iframe></div>
<p>강의 동영상입니다. </p>
<div align=center><iframe width="560" height="315" src="https://www.youtube.com/embed/k7KSUzsANvw" frameborder="0" allowfullscreen></iframe></div>
<p>감사합니다. </p>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13812</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Streaming Platform으로써의 Apache Kafka</title>
		<link>http://readme.skplanet.com/?p=13802</link>
		<comments>http://readme.skplanet.com/?p=13802#comments</comments>
		<pubDate>Tue, 08 Aug 2017 05:37:56 +0000</pubDate>
		<dc:creator><![CDATA[강병수]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[기술 세미나]]></category>
		<category><![CDATA[kafka]]></category>
		<category><![CDATA[Kafka Streams]]></category>
		<category><![CDATA[Microservices]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13802</guid>
		<description><![CDATA[안녕하세요. SK planet Data Infrastructure팀 강병수입니다. 이번 발표는 Apache Kafka에 대한 간단한 소개로 시작하여 팀의 현황과 고민, 그리고 해결 방향을 담고 있습니다. 고민을 해결하기 위해 Kafka Summit 2017 New York에 참석하여 외국의 사례들을 보고 왔고, 인터넷 자료들을 통해 도움을 많이 얻었습니다. 주로 Kafka Streams와 Kafka for microservices, Change Data Capture 이 주제가 되는 내용입니다. 그 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>안녕하세요. SK planet Data Infrastructure팀 강병수입니다.<br />
이번 발표는 Apache Kafka에 대한 간단한 소개로 시작하여 팀의 현황과 고민, 그리고 해결 방향을 담고 있습니다.<br />
고민을 해결하기 위해 Kafka Summit 2017 New York에 참석하여 외국의 사례들을 보고 왔고, 인터넷 자료들을 통해 도움을 많이 얻었습니다.<br />
주로 Kafka Streams와 Kafka for microservices, Change Data Capture 이 주제가 되는 내용입니다. 그 내용들을 이번 발표를 통해 공유하고, 팀에 어떻게 적용하여 발전해 나가고 있는지 소개합니다.<br />
사업적 요건들을 기술 레벨에서 맞춰 나가기 위하여 고민하는 것과 요건을 충족시키기 위하여 발전하고 있는 것이 이번 발표의 주 내용입니다.</p>
<div align=center><iframe src="//www.slideshare.net/slideshow/embed_code/key/9XF830oVjf5qqw" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </div>
<p> <br />
동영상도 같이 참고 부탁드립니다. </p>
<div align=center><iframe width="560" height="315" src="https://www.youtube.com/embed/PtILI6v0ngY" frameborder="0" allowfullscreen></iframe></div>
<p>감사합니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13802</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spring Cloud 기반 Micro Services로의 전환 개발 사례</title>
		<link>http://readme.skplanet.com/?p=13782</link>
		<comments>http://readme.skplanet.com/?p=13782#comments</comments>
		<pubDate>Wed, 05 Jul 2017 05:49:04 +0000</pubDate>
		<dc:creator><![CDATA[윤용성 개발혁신팀]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[기술 세미나]]></category>
		<category><![CDATA[11번가]]></category>
		<category><![CDATA[MSA]]></category>
		<category><![CDATA[아키텍쳐]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13782</guid>
		<description><![CDATA[안녕하세요. SK 플래닛 개발혁신팀 윤용성입니다. 현재 11번가는 Legacy Application을 Spring Cloud 기반의 Micro Services로 전환하는 작업을 진행 중입니다. 1단계로 기존 하나의 Application으로 구성되어있는 서버를 단위 기능별로 API화하여 서버를 분리 진행 중이며, 이를 통해서 단위 기능별 빠른 배포와 증가하는 트래픽을 안정적으로 수용하기 위한 준비를 하고 있습니다.  아래 발표는 이 전환 작업에 대한 소개입니다. 첫번째 영상에서는 Tech Infra 개발본부의 백명석 본부장님께서 본 프로젝트의 개요와 추진 방향 및 일정에 대해서 설명해 주셨으며, 두번째 영상에서는 Spring Cloud의 주요 요소에 대한 설명과 11번가에 어떻게 적용되어 있는지에 관하여 소개합니다. 자세한 내용은 자료 슬라이드와 동영상을 참고 부탁 드립니다. 백명석 본부장님의 11번가 MSA 개발 사례에 대한 소개입니다. 11번가 Legacy application의 Spring Cloud 기반 Micro Services [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>안녕하세요. SK 플래닛 개발혁신팀 윤용성입니다.</p>
<p>현재 11번가는 Legacy Application을 Spring Cloud 기반의 Micro Services로 전환하는 작업을 진행 중입니다. 1단계로 기존 하나의 Application으로 구성되어있는 서버를 단위 기능별로 API화하여 서버를 분리 진행 중이며, 이를 통해서 단위 기능별 빠른 배포와 증가하는 트래픽을 안정적으로 수용하기 위한 준비를 하고 있습니다.  아래 발표는 이 전환 작업에 대한 소개입니다.</p>
<p>첫번째 영상에서는 Tech Infra 개발본부의 백명석 본부장님께서 본 프로젝트의 개요와 추진 방향 및 일정에 대해서 설명해 주셨으며, 두번째 영상에서는 Spring Cloud의 주요 요소에 대한 설명과 11번가에 어떻게 적용되어 있는지에 관하여 소개합니다.</p>
<p>자세한 내용은 자료 슬라이드와 동영상을 참고 부탁 드립니다.</p>
<p>백명석 본부장님의 11번가 MSA 개발 사례에 대한 소개입니다.</p>
<div align="center"><iframe width="560" height="315" src="https://www.youtube.com/embed/Hj2Md-8-Ok4" frameborder="0" allowfullscreen></iframe></div>
<div align="center"></div>
<p>11번가 Legacy application의 Spring Cloud 기반 Micro Services 로 전환 개발 사례에 대한 동영상과 슬라이드 같이 참고 부탁드립니다.</p>
<div align="center"></div>
<div align=center><iframe src="//www.slideshare.net/slideshow/embed_code/key/kKuERxEharTsK4" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </div>
<div align="center"></div>
<div align="center"> <iframe width="560" height="315" src="https://www.youtube.com/embed/sfOHAQNP8jo" frameborder="0" allowfullscreen></iframe> </div>
<p>감사합니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13782</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A/B 테스트 플랫폼</title>
		<link>http://readme.skplanet.com/?p=13769</link>
		<comments>http://readme.skplanet.com/?p=13769#respond</comments>
		<pubDate>Mon, 12 Jun 2017 07:02:49 +0000</pubDate>
		<dc:creator><![CDATA[우종호 System Software개발팀]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[기술 세미나]]></category>
		<category><![CDATA[A/B test]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13769</guid>
		<description><![CDATA[안녕하세요. SK플래닛 System Software 개발팀 우종호입니다. 요즘 A/B테스트가 중요한 키워드로 급부상하고 있습니다. 구글 GA에서 데이터 분석지표를 많이 보고 있었는데요, 구글은 Optimize라는 A/B테스트 솔루션을 제공하고 있습니다. 또한 넷플릭스에서도 자체 개발한 Experimentation Platform이라는 A/B테스트 플랫폼을 가지고, 영화, 드라마 컨텐츠 추천 알고리즘 등을 A/B테스트하고 있습니다. A/B테스트란 무엇인지, 왜 필요한지에 대한 내용과, 사내에서 A/B테스트를 수행하기 위해 SK플래닛에서 개발한 Planet [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>안녕하세요. SK플래닛 System Software 개발팀 우종호입니다.</p>
<p>요즘 A/B테스트가 중요한 키워드로 급부상하고 있습니다.<br />
구글 GA에서 데이터 분석지표를 많이 보고 있었는데요, 구글은 Optimize라는 A/B테스트 솔루션을 제공하고 있습니다.<br />
또한 넷플릭스에서도 자체 개발한 Experimentation Platform이라는 A/B테스트 플랫폼을 가지고, 영화, 드라마 컨텐츠 추천 알고리즘 등을 A/B테스트하고 있습니다.</p>
<p>A/B테스트란 무엇인지, 왜 필요한지에 대한 내용과,<br />
사내에서 A/B테스트를 수행하기 위해 SK플래닛에서 개발한 Planet A/B테스트 플랫폼 PLab에 대한 소개 발표입니다.<br />
PLab이라는 용어는 Planet A/B 또는 Planet Laboratory라는 의미입니다.</p>
<p>A/B테스트는 의사결정 과정에서의 리스크를 최소화하고, 영향력을 정량적인 수치로 알려줍니다. 따라서 데이터에 기반한 의사결정을 할 수 있습니다.</p>
<p>자세한 내용은 자료 슬라이드와 강의 동영상을 참고 부탁드립니다.</p>
<div align="center"><iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="//www.slideshare.net/slideshow/embed_code/key/HLG6yNMGQ1NIuA" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></div>
<div align="center"><iframe src="https://www.youtube.com/embed/YWfFv9ZYSAk" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
<p>감사합니다. </p>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13769</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS flexible 레이아웃: flex item의 정렬과 간격</title>
		<link>http://readme.skplanet.com/?p=13732</link>
		<comments>http://readme.skplanet.com/?p=13732#respond</comments>
		<pubDate>Thu, 18 May 2017 05:14:35 +0000</pubDate>
		<dc:creator><![CDATA[정찬명]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13732</guid>
		<description><![CDATA[flex item의 팽창과 수축, flex item의 방향과 순서에 이어 오늘은 ‘flex item의 정렬과 간격‘에 관하여 설명합니다. 먼저 진행 축(main axis)과 교차 축(cross axis)을 이해할 필요가 있습니다. ‘진행 축’이란 flex item이 배치되는 축(x/y)을 의미합니다. ‘교차 축’이란 flex item이 배치되는 방향과 90도 교차하는 축을 의미합니다. 진행 축과 교차 축은 상대적인 개념이라서 flex-direction의 값(row, column)에 따라 교차 축이 바뀌기 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://readme.skplanet.com/?p=13690" target="_blank" rel="noopener noreferrer">flex item의 팽창과 수축</a>, <a href="http://readme.skplanet.com/?p=13710" target="_blank" rel="noopener noreferrer">flex item의 방향과 순서</a>에 이어 오늘은 ‘<strong>flex item의 정렬과 간격</strong>‘에 관하여 설명합니다.</p>
<p>먼저 <strong>진행 축</strong>(main axis)과 <strong>교차 축</strong>(cross axis)을 이해할 필요가 있습니다. ‘진행 축’이란 flex item이 배치되는 축(x/y)을 의미합니다. ‘교차 축’이란 flex item이 배치되는 방향과 90도 교차하는 축을 의미합니다. 진행 축과 교차 축은 상대적인 개념이라서 <code>flex-direction</code>의 값(<code>row</code>, <code>column</code>)에 따라 교차 축이 바뀌기 때문에 헷갈리기 쉽습니다. <code>flex-direction:row</code>인 경우 교차 축은 y가 되지만 <code>flex-direction:column</code>인 경우 교차 축은 x가 되겠지요.</p>
<p><strong>한 줄</strong>(single line)과 <strong>여러 줄</strong>(multi line)의 개념도 이해해야 합니다. 단일 행 또는 여러 행이라고 표현하지 않는 이유는 <code>flex-direction</code> 값(<code>row</code>, <code>column</code>)에 따라 여러 줄이 행이 될 수도 있지만 열이 될 수도 있기 때문입니다. 여러 줄은 <code>flex-basis</code> 값과 <code>flex-wrap:wrap</code> 속성에 의해 한 줄로 표현하기에 빈 공간(free space)이 모자라는 경우에만 발생합니다.</p>
<p><code>justify-content</code> 속성만 진행 축 정렬에 관여하고 <code>align-items</code>, <code>align-self</code>, <code>align-content</code> 속성은 모두 교차 축 정렬에 관여합니다.</p>
<ul>
<li><a href="#justify-content" target="_blank" rel="noopener noreferrer">flex item의 ‘진행 축’ 정렬과 간격을 제어하는 ‘justify-content’.</a></li>
<li><a href="#align-items" target="_blank" rel="noopener noreferrer">flex item의 ‘교차 축’ 정렬을 제어하는 ‘align-items’.</a></li>
<li><a href="#align-self" target="_blank" rel="noopener noreferrer">flex item의 ‘독립적 교차 축’ 정렬을 제어하는 ‘align-self’.</a></li>
<li><a href="#align-content" target="_blank" rel="noopener noreferrer">flex item의 ‘여러 줄 교차 축’ 정렬과 간격을 제어하는 ‘align-content’.</a></li>
</ul>
<h3 id="justify-content">flex item의 ‘진행 축’ 정렬과 간격을 제어하는 ‘justify-content’.</h3>
<p><strong><code>justify-content</code> 속성은 ‘진행 축’ 정렬과 아이템 사이의 간격을 제어합니다</strong>. <code>flex-direction: row | row-reverse</code> 인 경우 x축 정렬을 제어합니다. <code>flex-direction: column | column-reverse</code> 인 경우 y축 정렬을 제어합니다.</p>
<ul>
<li>Name: <code>justify-content</code></li>
<li>Value: <code>flex-start</code> | <code>flex-end</code> | <code>center</code> | <code>space-between</code> | <code>space-around</code></li>
<li>Initial: <code>flex-start</code></li>
<li>Applies to: <strong>flex containers</strong></li>
</ul>
<p>값이 <code>left</code>, <code>right</code>, <code>top</code>, <code>bottom</code>이 아닌 이유는 flex item의 진행 방향이 <code>flex-direction</code>의 값(<code>row</code>, <code>row-reverse</code>, <code>column</code>, <code>column-reverse</code>)에 따라 언제든 달라질 수 있기 때문입니다. 여분의 공간(free space)이 존재하는 경우 <code>space-between</code>, <code>space-around</code> 값을 통해서 flex item 사이의 공간을 제어할 수 있는데 <code>space-between</code>은 flex item과 flex container 경계면 사이에는 빈 공간을 만들지 않습니다. <code>center</code>, <code>space-between</code>, <code>space-around</code> 값에 의해 발생하는 flex item의 간격은 균등 분할되며 개별적으로 빈 공간을 제어하기를 원하는 경우 해당 flex item 요소에 별도의 <code>margin</code>을 추가해야 합니다.</p>
<p><img class="alignnone size-full wp-image-13731" src="http://readme.skplanet.com/wp-content/uploads/css-justify-content.png" alt="CSS justify-content 예제." width="301" height="824" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/YVpaYZ/" target="_blank" rel="noopener noreferrer">CSS flex ‘justify-content’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3 id="align-items">flex item의 ‘교차 축’ 정렬을 제어하는 ‘align-items’.</h3>
<p><strong><code>align-items</code> 속성은 진행 축과 교차하는 ‘교차 축’ 정렬을 제어합니다</strong>. 여기서부터 조금 헷갈리기 쉬워요. <code>flex-direction: row | row-reverse</code> 인 경우 y축 정렬을 제어합니다. <code>flex-direction: column | column-reverse</code> 인 경우 x축 정렬을 제어합니다.</p>
<ul>
<li>Name: <code>align-items</code></li>
<li>Value: <code>flex-start</code> | <code>flex-end</code> | <code>center</code> | <code>baseline</code> | <code>stretch</code></li>
<li>Initial: <code>stretch</code> // flex-direction:row 상태에서 flex item의 높이를 100%로 렌더링하는 이유는 이것 때문.</li>
<li>Applies to: <strong>flex containers</strong></li>
</ul>
<p><code>flex-wrap:wrap</code> 속성에 의해 여러 줄(multi line)이 발생하는 경우 여러 줄의 정렬과 간격을 제어하는 <code>align-content</code> 속성의 값(<code>flex-start</code>, <code>flex-end</code>, <code>center</code>, <code>space-between</code>, <code>space-around</code>)에 따라 <code>align-items</code> 정렬은 무시됩니다. <code>baseline</code> 값은 flex item의 글꼴 사이즈(<code>font-size</code>)와 줄 간격(<code>line-height</code>)이 모두 동일한 경우  <code>flex-start</code> 값과 동일한 결과를 보여주지만, 글꼴 사이즈(<code>font-size</code>) 또는 줄 간격(<code>line-height</code>)을 flex item 마다 다르게 설정하면 포함하고 있는 문자열의 <code>baseline</code> 기준으로 정렬합니다. <code>baseline</code>을 쓸 일은 별로 없을 것 같은 생각이 드네요.</p>
<p><img class="alignnone size-full wp-image-13729" src="http://readme.skplanet.com/wp-content/uploads/css-align-items.png" alt="CSS align-items 예제." width="279" height="908" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/mmOzqy/" target="_blank" rel="noopener noreferrer">CSS flex ‘align-items’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3 id="align-self">flex item의 ‘독립적 교차 축’ 정렬을 제어하는 ‘align-self’.</h3>
<p><strong><code>align-self</code> 속성은 flex item의 독립적인 ‘교차 축’ 정렬을 제어합니다</strong>. flex item 요소에 각각 적용하기 때문에 flex container에 적용되어 있는 <code>align-items</code> 속성의 교차 축 정렬 결과보다 우선 순위가 높습니다.</p>
<ul>
<li>Name: <code>align-self</code></li>
<li>Value: <code>auto</code> | <code>flex-start</code> | <code>flex-end</code> | <code>center</code> | <code>baseline</code> | <code>stretch</code> // auto 값을 제외하면 align-items 값과 동일함.</li>
<li>Initial: <code>auto</code> // auto 값은 flex container에 적용된 align-items 값으로 처리.</li>
<li>Applies to: <strong>flex items</strong></li>
</ul>
<p><code>auto</code> 값은 flex container에 적용되어 있는 <code>align-items</code> 속성의 교차 축 정렬에 따르게 됩니다. 그 밖의 다른 값들(<code>flex-start</code>, <code>flex-end</code>, <code>center</code>, <code>baseline</code>, <code>stretch</code>)의 성질은 <code>align-items</code>와 동일합니다.</p>
<p><img class="alignnone size-full wp-image-13730" src="http://readme.skplanet.com/wp-content/uploads/css-align-self.png" alt="CSS align-self 예제." width="277" height="1011" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/pPejdK/" target="_blank" rel="noopener noreferrer">CSS flex ‘align-self’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3 id="align-content">flex item의 ‘여러 줄 교차 축’ 정렬과 간격을 제어하는 ‘align-content’.</h3>
<p><strong><code>align-content</code> 속성은 여러 줄(multi line)의 ‘교차 축’ 정렬과 줄 사이 간격을 제어합니다</strong>. 여러 줄이 발생하는 경우(<code>flex-wrap:wrap</code>)에만 적용되고, 여러 줄이 발생하는 경우 <code>align-items</code>의 교차 축 정렬보다 적용 우선순위가 높습니다.</p>
<ul>
<li>Name: <code>align-content</code></li>
<li>Value: <code>flex-start</code> | <code>flex-end</code> | <code>center</code> | <code>space-between</code> | <code>space-around</code> | <code>stretch</code></li>
<li>Initial: <code>stretch</code></li>
<li>Applies to: <strong>multi-line flex container</strong></li>
</ul>
<p><code>align-items</code> 속성과 <code>align-content</code> 속성에서 이해하기 어려운 부분은 “왜 두 속성을 분리했는가?” 입니다. 양쪽 모두 교차 축 정렬에 관여하고 있으며 동일한 값(<code>stretch</code>, <code>center</code>, <code>flex-start</code>, <code>flex-end</code>)을 사용하기 때문에 하나의 속성으로 통일하는 것이 가능해 보였거든요.</p>
<p><code>align-items</code>인 경우 <code>stretch</code> 값의 표현이 flex item 박스를 교차축으로 끝까지 잡아 늘리는데 반해서, <code>align-content</code>인 경우 <code>stretch</code> 값의 표현은 flex item 박스의 교차축 크기는 변경하지 않고 교차축으로 줄 사이의 간격을 균등하게 벌어지게 만드는 점이 다르기는 합니다.</p>
<p>한 줄 또는 여러 줄 사이 교차축으로 빈 공간 없이 flex item을 가득 채우려면 <code>align-items:stretch; align-content:stretch;</code> 이렇게 두 속성 모두 값을 <code>stretch</code>로 처리하면 됩니다. 사실 <code>align-items</code>와 <code>align-content</code>의 기본값이 모두 <code>stretch</code> 이기 때문에 교차 축으로 <code>width</code>, <code>max-width</code>, <code>height</code>, <code>max-height</code> 속성을 사용하지 않았다면 교차축으로 빈 공간 없이 flex item이 채워지게 되어 있습니다. 아래 예제는 교차축 줄 사이 간격을 테스트하기 위해 <code>width</code>, <code>height</code> 값을 사용했습니다.</p>
<p><img class="alignnone size-full wp-image-13728" src="http://readme.skplanet.com/wp-content/uploads/css-align-content.png" alt="CSS align-content 예제." width="580" height="580" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/ybMOgV/" target="_blank" rel="noopener noreferrer">CSS flex ‘align-content’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3>마무리</h3>
<p>이번 포스팅을 마지막으로 flexible box 레이아웃 모듈 설명을 모두 마칩니다. 그 동안 정리했던 내용을 다시 한번 요약하면 아래와 같습니다.</p>
<ul>
<li><a href="http://readme.skplanet.com/?p=13690" target="_blank" rel="noopener noreferrer">CSS flexible 레이아웃: <strong>flex item의 팽창과 수축</strong>.</a>
<ul>
<li>플렉스 컨테이너와 플렉스 아이템(flex container &amp; flex item)의 개념.
<ul>
<li>flex container(플렉스 컨테이너)</li>
<li>flex item(플렉스 아이템)</li>
</ul>
</li>
<li>신축성(flexibility): flex item의 팽창 및 수축.
<ul>
<li>flex item의 팽창을 제어하는 ‘<code>flex-grow</code>’ 속성.</li>
<li>flex item의 수축을 제어하는 ‘<code>flex-shrink</code>’ 속성.</li>
<li>flex item의 기준 사이즈를 제어하는 ‘<code>flex-basis</code>’ 속성.</li>
<li>flex item의 단축 속성 ‘<code>flex</code>’.</li>
</ul>
</li>
</ul>
</li>
<li><a href="http://readme.skplanet.com/?p=13710" target="_blank" rel="noopener noreferrer">CSS flexible 레이아웃: <strong>flex item의 방향과 순서</strong>.</a>
<ul>
<li>flex item의 ‘방향’을 제어하는 ‘<code>flex-direction</code>‘.</li>
<li>flex item의 ‘줄 바꿈’을 제어하는 ‘<code>flex-wrap</code>‘.</li>
<li>flex item의 ‘뱡향과 줄 바꿈’을 제어하는 단축 속성 ‘<code>flex-flow</code>‘.</li>
<li>flex item의 ‘배치 순서’를 제어하는 ‘<code>order</code>‘.</li>
</ul>
</li>
<li><a href="http://readme.skplanet.com/?p=13732" target="_blank" rel="noopener noreferrer">CSS flexible 레이아웃: <strong>flex item의 정렬과 간격</strong>.</a>
<ul>
<li>flex item의 ‘진행 축’ 정렬과 간격을 제어하는 ‘<code>justify-content</code>‘.</li>
<li>flex item의 ‘교차 축’ 정렬을 제어하는 ‘<code>align-items</code>‘.</li>
<li>flex item의 ‘독립적 교차 축’ 정렬을 제어하는 ‘<code>align-self</code>‘.</li>
<li>flex item의 ‘여러 줄 교차 축’ 정렬과 간격을 제어하는 ‘<code>align-content</code>‘.</li>
</ul>
</li>
</ul>
<h3>참고</h3>
<ul>
<li><a href="https://www.w3.org/TR/css-flexbox-1/" target="_blank" rel="noopener noreferrer">CSS Flexsible box layout module level 1(Candidate Recommendation)</a></li>
<li><a href="https://speckyboy.com/css-flexbox-toolbox/" target="_blank" rel="noopener noreferrer">CSS Flexbox learning guides, tools &amp; frameworks.</a></li>
<li><a href="http://flexbox.help/" target="_blank" rel="noopener noreferrer">flexbox.help</a></li>
<li><a href="http://caniuse.com/#search=flexible" target="_blank" rel="noopener noreferrer">caniuse.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13732</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS flexible 레이아웃: flex item의 방향과 순서</title>
		<link>http://readme.skplanet.com/?p=13710</link>
		<comments>http://readme.skplanet.com/?p=13710#respond</comments>
		<pubDate>Tue, 16 May 2017 02:30:51 +0000</pubDate>
		<dc:creator><![CDATA[정찬명]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13710</guid>
		<description><![CDATA[이전에 “CSS flexible 레이아웃: flex item의 수축과 팽창” 이라는 포스트를 작성했는데요. 오늘은 flex item의 방향과 순서를 설명합니다.  오늘 설명할 속성은 flex item의 방향을 제어하는 flex-direction, 줄 바꿈을 제어하는 flex-wrap, 그리고 방향과 줄 바꿈을 단축 속성으로 제어하는 flex-flow, 배치 순서를 제어하는 order 라는 속성입니다. 예제를 보면서 이해하기에 충분하므로 자세한 설명은 생략합니다. flex item의 ‘방향’을 제어하는 ‘flex-direction’. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>이전에 “<a href="https://readme.skplanet.com/?p=13690" target="_blank" rel="noopener noreferrer">CSS flexible 레이아웃: flex item의 수축과 팽창</a>” 이라는 포스트를 작성했는데요. 오늘은 flex item의 방향과 순서를 설명합니다.  오늘 설명할 속성은 flex item의 방향을 제어하는 <code>flex-direction</code>, 줄 바꿈을 제어하는 <code>flex-wrap</code>, 그리고 방향과 줄 바꿈을 단축 속성으로 제어하는 <code>flex-flow</code>, 배치 순서를 제어하는 <code>order</code> 라는 속성입니다. 예제를 보면서 이해하기에 충분하므로 자세한 설명은 생략합니다.</p>
<ol>
<li><a href="#flex-direction" target="_blank" rel="noopener noreferrer">flex item의 ‘방향’을 제어하는 ‘flex-direction’.</a></li>
<li><a href="#flex-wrap" target="_blank" rel="noopener noreferrer">flex item의 ‘줄 바꿈’을 제어하는 ‘flex-wrap’.</a></li>
<li><a href="#flex-flow" target="_blank" rel="noopener noreferrer">flex item의 ‘뱡향과 줄 바꿈’을 제어하는 단축 속성 ‘flex-flow’.</a></li>
<li><a href="#order" target="_blank" rel="noopener noreferrer">flex item의 ‘배치 순서’를 제어하는 ‘order’.</a></li>
</ol>
<h3 id="flex-direction">flex item의 ‘방향’을 제어하는 ‘flex-direction’.</h3>
<p><code>flex-direction</code> 속성은 flex item이 흐르는 방향(상하좌우)을 제어합니다.</p>
<ul>
<li>Name: <code>flex-direction</code></li>
<li>Value: <code>row</code> | <code>row-reverse</code> | <code>column</code> | <code>column-reverse</code></li>
<li>Initial: <code>row</code></li>
<li>Applies to: <strong>flex container</strong></li>
</ul>
<p><img class="alignnone size-full wp-image-13713" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-direction.gif" alt="CSS flex-direction 예제." width="600" height="296" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/wdzBLz/" target="_blank" rel="noopener noreferrer">CSS flex ‘flex-direction’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3 id="flex-wrap">flex item의 ‘줄 바꿈’을 제어하는 ‘flex-wrap’.</h3>
<p><code>flex-wrap</code> 속성은 flex item의 줄 바꿈 성질을 제어합니다.</p>
<ul>
<li>Name: <code>flex-wrap</code></li>
<li>Value: <code>nowrap</code> | <code>wrap</code> | <code>wrap-reverse</code></li>
<li>Initial: <code>nowrap</code></li>
<li>Applies to: <strong>flex container</strong></li>
</ul>
<p><img class="alignnone size-full wp-image-13716" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-wrap.gif" alt="CSS flex-wrap 예제." width="600" height="296" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/JNRdoz/" target="_blank" rel="noopener noreferrer">CSS flex ‘flex-wrap’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3 id="flex-flow">flex item의 ‘뱡향과 줄 바꿈’을 제어하는 단축 속성 ‘flex-flow’.</h3>
<p><code>flex-flow</code> 속성은 flex item의 <code>flex-direction</code> 속성과 <code>flex-wrap</code> 속성의 값을 한꺼번에 작성할 수 있는 단축 속성입니다.</p>
<ul>
<li>Name: <code>flex-flow</code></li>
<li>Value: <code>&lt;flex-direction&gt;</code> || <code>&lt;flex-wrap&gt;</code> // 둘 중 하나 또는 둘을 선언해야 한다.</li>
<li>Initial: <code>row nowrap</code></li>
<li>Applies to: <strong>flex container</strong></li>
</ul>
<p><img class="alignnone size-full wp-image-13714" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-flow.gif" alt="CSS flex-flow 예제." width="600" height="777" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/jmMPMa/" target="_blank" rel="noopener noreferrer">CSS flex ‘flex-flow’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3 id="order">flex item의 ‘배치 순서’를 제어하는 ‘order’.</h3>
<p><code>order</code> 속성은 flex item의 배치 순서를 제어하는 속성입니다. 기본값은 ‘<code>0</code>‘이며 <code>flex-direction</code> 속성의 방향값(<code>row</code>, <code>row-reverse</code>, <code>column</code>, <code>column-reverse</code>)을 기준으로 낮은 숫자를 먼저 배치하고 높은 숫자를 나중에 배치합니다.</p>
<ul>
<li>Name: <code>order</code></li>
<li>Value: <code>&lt;integer&gt;</code> // ‘0, 양의 정수, 음의 정수’를 사용할 수 있음.</li>
<li>Initial: <code>0</code></li>
<li>Applies to: <strong>flex items</strong> and absolutely-positioned children of flex containers // 절대값으로 처리된 flex-item에도 적용 가능하다고 하는데 어떤 상황에서 쓰이는지 정확히 알 수 없음.</li>
</ul>
<p><img class="alignnone size-full wp-image-13715" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-order.gif" alt="CSS flex order 예제." width="600" height="462" /></p>
<p class="codepen">See the Pen <a href="https://codepen.io/naradesign/pen/EmgKad/" target="_blank" rel="noopener noreferrer">CSS flex ‘order’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3>관련 글</h3>
<ul>
<li style="list-style-type: none;">
<ul>
<li><a href="https://readme.skplanet.com/?p=13690" target="_blank" rel="noopener noreferrer">CSS flexible 레이아웃: flex item의 수축과 팽창</a></li>
<li><a href="http://readme.skplanet.com/?p=13732" target="_blank" rel="noopener noreferrer">CSS flexible 레이아웃: flex item의 정렬과 간격</a></li>
</ul>
</li>
</ul>
<h3>참고</h3>
<ul>
<li><a href="https://www.w3.org/TR/css-flexbox-1/" target="_blank" rel="noopener noreferrer">CSS Flexsible box layout module level 1(Candidate Recommendation)</a></li>
<li><a href="https://speckyboy.com/css-flexbox-toolbox/" target="_blank" rel="noopener noreferrer">CSS Flexbox learning guides, tools &amp; frameworks.</a></li>
<li><a href="http://flexbox.help/" target="_blank" rel="noopener noreferrer">flexbox.help</a></li>
<li><a href="http://caniuse.com/#search=flexible" target="_blank" rel="noopener noreferrer">caniuse.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13710</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS flexible 레이아웃: flex item의 수축과 팽창</title>
		<link>http://readme.skplanet.com/?p=13690</link>
		<comments>http://readme.skplanet.com/?p=13690#respond</comments>
		<pubDate>Mon, 24 Apr 2017 07:27:58 +0000</pubDate>
		<dc:creator><![CDATA[정찬명]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13690</guid>
		<description><![CDATA[오늘은 흔히 flex 또는 flexible 박스 모델이라고 부르는 CSS Flexsible box layout module level 1(Candidate Recommendation) 명세를 설명해 보려고 합니다. 아직 표준 후보 단계이지만 현존하는 최신 브라우저에 flexible box layout module은 이미 구현되어 있습니다. 기존에 우리가 사용하던 레이아웃 기법은 display, float, position 으로써 컬럼 레이아웃을 표현하는데 한계가 있고 구현 방법이 복잡한 문제가 있었는데요. flexible(신축성 있는, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>오늘은 흔히 flex 또는 flexible 박스 모델이라고 부르는 <a href="https://www.w3.org/TR/css-flexbox-1/" target="_blank" rel="noopener noreferrer">CSS Flexsible box layout module level 1(Candidate Recommendation)</a> 명세를 설명해 보려고 합니다. 아직 표준 후보 단계이지만 <a href="http://caniuse.com/#search=flexible" target="_blank" rel="noopener noreferrer">현존하는 최신 브라우저에 flexible box layout module은 이미 구현</a>되어 있습니다.</p>
<p>기존에 우리가 사용하던 레이아웃 기법은 <code>display</code>, <code>float</code>, <code>position</code> 으로써 컬럼 레이아웃을 표현하는데 한계가 있고 구현 방법이 복잡한 문제가 있었는데요. flexible(신축성 있는, 유연한) 박스 모델의 장점을 한 마디로 표현하면 “<strong>복잡한 계산 없이 박스의 크기와 순서를 유연하게 배치할 수 있다.</strong>” 라고 정리할 수 있습니다. 쉬운 예를 들면 컬럼의 한 쪽은 고정하고 다른 한 쪽을 가변폭으로 처리하고 싶을 때 유용하지만 그것 이상의 편의를 제공합니다. 어떤 속성과 값을 통해 무엇을 할 수 있는지 설명해 보겠습니다.</p>
<ul>
<li><a href="#flex-container-item" target="_blank" rel="noopener noreferrer">플렉스 컨테이너와 플렉스 아이템(flex container &amp; flex item)의 개념.</a>
<ul>
<li><a href="#flex-container" target="_blank" rel="noopener noreferrer">flex container</a></li>
<li><a href="#flex-item" target="_blank" rel="noopener noreferrer">flex item</a></li>
</ul>
</li>
<li><a href="#flexibility" target="_blank" rel="noopener noreferrer">신축성(flexibility): flex item의 팽창 및 수축.</a>
<ul>
<li><a href="#flex-grow" target="_blank" rel="noopener noreferrer">flex item의 팽창을 제어하는 ‘flex-grow’ 속성.</a></li>
<li><a href="#flex-shrink" target="_blank" rel="noopener noreferrer">flex item의 수축을 제어하는 ‘flex-shrink’ 속성.</a></li>
<li><a href="#flex-basis" target="_blank" rel="noopener noreferrer">flex item의 기준 사이즈를 제어하는 ‘flex-basis’ 속성.</a></li>
<li><a href="#flex-shorthand" target="_blank" rel="noopener noreferrer">flex item의 단축 속성 ‘flex’.</a></li>
</ul>
</li>
</ul>
<h3 id="flex-container-item">플렉스 컨테이너와 플렉스 아이템(flex container &amp; flex item)의 개념.</h3>
<p>flex 박스 모델은 <code>tr</code>/<code>td</code> 개념과 유사합니다.  flex 박스는 <strong>flex container</strong>(부모, 마치 <code>tr</code>)와 <strong>flex item</strong>(자식, 마치 <code>td</code>)으로 이루어 집니다. <strong>flex container</strong> 요소에 <code>display</code> 속성의 값을 <code>flex</code> 또는 <code>inline-flex</code> 라고 선언하면 해당 요소는 flex container가 되고 자식 요소는 자동으로 flex item이 되어 flex 박스로 렌더링하기 시작합니다.</p>
<h4 id="flex-container">flex container</h4>
<p>flex container는 flex item의 면적, 방향, 정렬을 결정하는 컨테이너 입니다. flex container 요소에 <code>display</code> 속성의 값으로 <strong><code>inline-flex</code></strong>를 선언하면 인라인 수준의 flex container를 생성하고, <strong><code>flex</code></strong> 값을 선언하면 블럭 수준의 flex container를 생성합니다. <code>inline-flex</code> 상태의 컨테이너는 inline-block 박스와 같은 형태로 표시합니다.</p>
<h4 id="flex-item">flex item</h4>
<p>flex item은 컨테이너 내부에 형성된 free space(남거나 모자라는 공간, <code>margin</code>과 유사한 개념이지만 <code>margin</code>은 아님)를 팽창지수 또는 수축지수 값에 따라 형제들이 서로 나누어 갖습니다. flex container에 <code>inline-flex</code> 또는 <code>flex</code> 값을 선언하면 자식 요소들은 자동으로 <strong>flex item</strong>이 됩니다. flex item의 기본적인 스타일(User Agent 기본값)은 다음과 같습니다. 기본 스타일(<code>flex-grow:0; flex-shrink:1; flex-basis:auto; flex-direction:row; flex-wrap:nowrap;</code>)은 개발자가 변경할 수 있으며, 단축 속성(<code>flex</code>)을 사용할 때 값이 자동으로 재설정(<a href="#flex-shorthand">flex item의 단축 속성 ‘flex’</a> 참고)되기도 합니다.</p>
<ul>
<li>여분의 free space가 있어도 폭이 저절로 늘어나지 않습니다.(<code>flex-grow:0</code>)</li>
<li>부모 박스 초과 시(이 때 flex container 내부에 음수 free space 발생) 자동으로 균등 수축(음수 free space 크기 ÷ flex item 개수)합니다.(<code>flex-shrink:1</code>)</li>
<li>콘텐츠 너비만큼 수축합니다.(<code>flex-basis:auto</code>)</li>
<li>행으로 배치 합니다.(<code>flex-derection:row</code>)</li>
<li>개행하지 않습니다.(<code>flex-wrap:nowrap</code>)</li>
<li>텍스트 노드도 익명 flex item이 됩니다. 공백은 flex item이 되지 않습니다.</li>
</ul>
<p>그 밖에 이런 특징도 있습니다.</p>
<ul>
<li><code>float</code> 속성은 무시합니다.</li>
<li><code>position:absolute|fixed</code> 속성이 부여되면 flex item에서 빠지게 됩니다.</li>
<li>flex item은 형제 또는 부모와 수직 또는 수평 <code>margin</code>을 중첩하지 않습니다.</li>
<li>브라우저마다 구현이 다를 수 있기 때문에 <code>margin</code>/<code>padding</code>의 값으로 상대 단위(%)를 사용하지 않는 것이 좋습니다.</li>
</ul>
<p>flex container의 자손은 flex item이 되지 않습니다.</p>
<ul>
<li><strong>Name</strong>: display</li>
<li><strong>Values</strong>: flex | inline-flex</li>
</ul>
<p><img class="alignnone wp-image-13698 size-full" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-display.gif" alt="CSS flex display: flex | inline-flex 예제." /></p>
<p class="codepen">See the Pen <a href="http://codepen.io/naradesign/pen/OmLrYK/" target="_blank" rel="noopener noreferrer">CSS flex container ‘display’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h3 id="flexibility">신축성(flexibility): flex item의 팽창 및 수축.</h3>
<p>flex item은 <code>flex-grow</code>(팽창지수), <code>flex-shrink</code>(수축지수), <code>flex-basis</code>(기준 사이즈) 속성과 이것들의 단축 속성인 <code>flex</code> 속성으로 박스의 팽창, 수축, 기준 사이즈를 제어할 수 있습니다. W3C 명세는 <code>flex</code> 단축 속성(<code>flex : none | [&lt;flex-grow&gt; &lt;flex-shrink&gt;? || &lt;flex-basis&gt;]</code>)으로 제어하는 것을 권장합니다. 단축 속성은 명시하지 않은 값을 일반적인 용도에 맞게 재설정하기 때문입니다. 단축 속성 선언 시 재설정되는 값에 대한 설명은 <a href="#flex-shorthand" target="_blank" rel="noopener noreferrer">flex item의 단축 속성 ‘flex’</a>를 참고하세요. 참고: CSS 명세에서 바 ‘<code>|</code>‘는 분리된 값들 중 반드시 ‘하나’를 선언해야 한다는 의미입니다. 더블 바 ‘<code>||</code>‘는 분리된 값들 중 ‘하나 또는 그 이상’을 선언할 수 있다는 의미입니다. 물음표 ‘<code>?</code>‘는 ‘생략하거나 또는 한 번만 선언’해야 한다는 의미입니다.</p>
<h4 id="flex-grow">flex item의 팽창을 제어하는 ‘<code>flex-grow</code>‘ 속성.</h4>
<ul>
<li><strong>Name</strong>: flex-grow</li>
<li><strong>Value</strong>: &lt;number&gt; // 음수 값은 유효하지 않음. 보통 ‘<code>0</code>‘ 또는 ‘<code>1</code>‘ 값을 선언.</li>
<li><strong>Initial</strong>: 0 // 단축 속성 <code>flex</code> 사용 시 <code>flex-grow</code> 값을 생략하면 값은 초기 값은 ‘<code>1</code>‘으로 다시 설정 됨.</li>
<li><strong>Applies to</strong>: flex items</li>
</ul>
<p><code>flex-grow</code> 속성의 기본값은 ‘<code>0</code>‘ 이기 때문에 flex item은 기본적으로 팽창하지 않습니다. <code>flex-grow</code>의 값이 ‘<code>0</code>‘이 아닌 경우에는 컨테이너 내부에 형성된 빈 공간(free space)을 팽창지수(<code>flex-grow</code>)에 따라 flex item에 반영하여 남은 공간을 채우게 됩니다. 공간이 남는 경우에는 <code>flex-grow</code> 속성에 의해 팽창하지만, 공간이 남지 않는 경우에는 아무리 값을 올려도 컨테이너의 너비 이상으로 팽창하지 않습니다. <code>max-width</code> 속성을 선언했다면 이 값을 초과하여 팽창하지 않습니다.</p>
<p><img class="alignnone size-full wp-image-13699" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-grow.gif" alt="CSS flex-grow 예제." /></p>
<p class="codepen">See the Pen <a href="http://codepen.io/naradesign/pen/aWdzQo/" target="_blank" rel="noopener noreferrer">CSS ‘flex-grow’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h4 id="flex-shrink">flex item의 수축을 제어하는 ‘<code>flex-shrink</code>‘ 속성.</h4>
<ul>
<li><strong>Name</strong>: flex-shrink</li>
<li><strong>Value</strong>: &lt;number&gt; // 음수 값은 유효하지 않음. 보통 ‘<code>0</code>‘ 또는 ‘<code>1</code>‘ 값을 선언.</li>
<li><strong>Initial</strong>: 1 // 단축 속성 <code>flex</code> 사용 시 <code>flex-shrink</code> 값을 생략해도 초기 값은 여전히 ‘<code>1</code>‘이 된다.</li>
<li><strong>Applies to</strong>: flex items</li>
</ul>
<p><code>flex-shrink</code> 속성의 기본값은 ‘<code>1</code>‘ 이기 때문에 flex item은 기본적으로 수축합니다. <code>flex-shrink</code> 값이 ‘<code>0</code>‘인 경우 flex item의 너비가 컨테이너를 초과 해도 수축하지 않습니다. 한편 <code>flex-shrink</code> 값이 ‘<code>0</code>‘이 아닌 경우에는 flex item이 컨테이너를 초과했을 때 넘치는 공간(이 때 음수 free space 발생)의 크기를 기준으로 수축지수(<code>flex-shrink</code>)에 따라 수축하게 됩니다. 컨테이너를 초과해서 공간이 모자라는 경우에는 <code>flex-shrink</code> 속성에 의해 수축하지만, 공간이 모자라지 않는 경우에는 아무리 값을 올려도 수축하지 않습니다. <code>min-width</code> 속성을 선언했다면 이 값 미만으로 수축하지 않습니다.</p>
<p><img class="alignnone size-full wp-image-13700" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-shrink.gif" alt="CSS flex-shrink 예제." /></p>
<p class="codepen">See the Pen <a href="http://codepen.io/naradesign/pen/gWPQjV/" target="_blank" rel="noopener noreferrer">CSS ‘flex-shrink’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h4 id="flex-basis">flex item의 기준 사이즈를 제어하는 ‘<code>flex-basis</code>‘ 속성.</h4>
<ul>
<li><strong>Name</strong>: flex-basis</li>
<li><strong>Value</strong>: content | &lt;width&gt;</li>
<li><strong>Initial</strong>: auto</li>
<li><strong>Applies to</strong>: flex items</li>
</ul>
<p><code>flex-basis</code> 속성은 flex item 요소가 <code>flex-grow</code> 또는 <code>flex-shrink</code> 속성에 의해 팽창/수축하기 이전의 기준 크기를 명시하는 속성입니다. flex item에 <code>width</code>값을 명시하는 것은 <code>flex-basis</code> 값을 선언하는 것과 결과적으로 동일합니다. flex item의 팽창 또는 수축은 <code>width</code>값 또는 <code>flex-basis</code>에 선언한 값을 기준으로 free space(빈 공간) 값을 구하게 되고, free space 값은 팽창/수축 지수를 통해 flex item의 크기에 영향을 미치게 되므로 <code>flex-basis</code>(또는 <code>width</code>) 값을 가능하다면 명시적으로 선언하는 것이 좋습니다. 동일한 flex item에 <code>width</code> 값과 <code>flex-basis</code> 값을 동시 선언하는 경우 <code>flex-basis</code> 값은 <code>width</code> 값을 덮어 쓰기 때문에 코드를 간결하게 작성하려면 <code>width</code> 값을 선언하는 것보다 <code>flex-basis</code> 값을 선언하는 것을 권장합니다.</p>
<p><img class="alignnone size-full wp-image-13697" style="border: 1px solid silver;" src="http://readme.skplanet.com/wp-content/uploads/css-flex-basis.gif" alt="CSS flex-basis 예제." /></p>
<p class="codepen">See the Pen <a href="http://codepen.io/naradesign/pen/gWPQjV/" target="_blank" rel="noopener noreferrer">CSS ‘flex-basis’ property test.</a> by Jeong Chan-Myeong (<a href="http://codepen.io/naradesign" target="_blank" rel="noopener noreferrer">@naradesign</a>) on <a href="http://codepen.io" target="_blank" rel="noopener noreferrer">CodePen</a>.</p>
<h4 id="flex-shorthand">flex item의 단축 속성 ‘<code>flex</code>‘.</h4>
<p><code>flex</code> 속성은 <code>flex-grow</code>, <code>flex-shrink</code>, <code>flex-basis</code> 속성의 값을 하나의 속성값으로 작성할 수 있는 단축 속성입니다. flex item 요소에 <code>flex</code>와 관련 있는 아무런 속성도 선언하지 않은 경우 <code>flex-grow:0; flex-shrink:1; flex-basis:auto;</code> 다시 말하면 <code>flex:0 1 auto;</code> 상태가 됩니다. 세 가지 속성을 모두 선언할 수도 있지만 하나만 선언하고 다른 값을 생략할 수도 있는데요. 생략한 속성의 값은 자동으로 재설정 됩니다.</p>
<p><strong><code>flex</code> 단축 속성</strong>은 아래와 같이 다양한 형태로 선언할 수 있습니다. 생략한 일부 속성의 값은 flex item에 아무런 속성도 선언하지 않았을 때의 값 <code>flex:0 1 auto;</code> 와도 다르고 <code>flex:none;</code> 을 선언했을 때의 값 <code>flex:0 0 auto;</code> 와도 다르다는 점에 유의하세요.</p>
<ul>
<li><code>flex: none;</code><br />
// <code>flex-grow:0; flex-shrink:0; flex-basis:auto;</code> 상태가 된다.</li>
<li><code>flex: &lt;flex-grow&gt;</code><br />
// <code>flex-shrink:1; flex-basis:0;</code> 상태가 된다.</li>
<li><code>flex: &lt;flex-basis&gt;</code><br />
// <code>flex-grow:1; flex-shrink:1;</code> 상태가 된다.</li>
<li><code>flex: &lt;flex-grow&gt; &lt;flex-shrink&gt;</code><br />
// <code>flex-basis:0;</code> 상태가 된다.</li>
<li><code>flex: &lt;flex-grow&gt; &lt;flex-basis&gt;</code><br />
// <code>flex-shrink:1;</code> 상태가 된다.</li>
<li><code>flex: &lt;flex-grow&gt; &lt;flex-shrink&gt; &lt;flex-basis&gt;</code><br />
// 생략한 속성 없음.</li>
</ul>
<h3>나중에 할 일</h3>
<p>이 밖에도 flex container와 flex item을 제어할 수 있는 더 많은 속성들이 있는데요. 한 페이지에 이어 붙이기에는 너무 분량이 많아서 다음 기회에 설명해 볼까 합니다. 나중에 설명하려고 마음먹은 속성들은 아래와 같습니다. 남은 속성들은 <code>flex-grow</code>, <code>flex-shrink</code>, <code>flex-basis</code> 속성보다 훨씬 이해하기 쉽습니다.</p>
<ul>
<li>Ordering and Orientation
<ul>
<li><code>flex-direction</code></li>
<li><code>flex-wrap</code></li>
<li><code>flex-flow</code></li>
<li><code>order</code></li>
</ul>
</li>
<li>Alignment
<ul>
<li><code>justify-content</code></li>
<li><code>align-items</code>, <code>align-self</code></li>
<li><code>align-content</code></li>
</ul>
</li>
</ul>
<h3>참고</h3>
<ul>
<li><a href="https://www.w3.org/TR/css-flexbox-1/" target="_blank" rel="noopener noreferrer">CSS Flexsible box layout module level 1(Candidate Recommendation)</a></li>
<li><a href="http://caniuse.com/#search=flexible" target="_blank" rel="noopener noreferrer">caniuse.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13690</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Static Analysis Report System with SonarQube</title>
		<link>http://readme.skplanet.com/?p=13679</link>
		<comments>http://readme.skplanet.com/?p=13679#respond</comments>
		<pubDate>Fri, 21 Apr 2017 01:01:56 +0000</pubDate>
		<dc:creator><![CDATA[전우진 UI개발팀]]></dc:creator>
				<category><![CDATA[Tech note]]></category>
		<category><![CDATA[기술 세미나]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[SonarQube]]></category>

		<guid isPermaLink="false">http://readme.skplanet.com/?p=13679</guid>
		<description><![CDATA[안녕하세요~ SK planet 전우진입니다. 최근 Front-End영역은 따라가기 힘들만큼 빠르게 변화하고 있습니다. 이런 환경속에서 우리가 작성해야하는 코드의 양도 점차 많아지고 복잡해지고 있는데요. “과연 우리가 생산하고있는 코드는 좋은 코드일까?”, “어떻게 하면 더 빠르고 가벼운 코드를 만들 수 있을까?” 하는 물음에서 시작된 FE CI/정적분석 서버 구축에 대한 내용을 공유드립니다. 이번 발표는 Jenkins를 이용한 빌드자동화와 이력관리 그리고 SonarQube를 이용한 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>안녕하세요~ SK planet 전우진입니다.</p>
<p>최근 Front-End영역은 따라가기 힘들만큼 빠르게 변화하고 있습니다.<br />
이런 환경속에서 우리가 작성해야하는 코드의 양도 점차 많아지고 복잡해지고 있는데요.<br />
“과연 우리가 생산하고있는 코드는 좋은 코드일까?”, “어떻게 하면 더 빠르고 가벼운 코드를 만들 수 있을까?” 하는 물음에서 시작된 FE CI/정적분석 서버 구축에 대한 내용을 공유드립니다.</p>
<p>이번 발표는 Jenkins를 이용한 빌드자동화와 이력관리 그리고 SonarQube를 이용한 JS 정적분석에 대한 내용을 담고 있습니다.</p>
<p>아래 <a href="http://slides.com/woojin-jeon/sa" target="_blank" rel="noopener noreferrer">강의 슬라이드</a>와 <a href="https://www.youtube.com/watch?v=96XFqrQ3tl8&amp;feature=youtu.be" target="_blank" rel="noopener noreferrer">동영상</a>을 같이 보시면 됩니다.</p>
<div align="center"><iframe src="//slides.com/woojin-jeon/sa/embed" width="576" height="420" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"></iframe></div>
<p> </p>
<div align="center"><iframe src="https://www.youtube.com/embed/96XFqrQ3tl8" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://readme.skplanet.com/?feed=rss2&#038;p=13679</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
