<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>be_honey.log</title>
        <link>https://velog.io/</link>
        <description>UX Engineer</description>
        <lastBuildDate>Fri, 17 Nov 2023 02:46:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>be_honey.log</title>
            <url>https://velog.velcdn.com/images/be_honey/profile/9e418ab1-db19-40ae-bf99-abd005cf0857/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. be_honey.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/be_honey" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Playwright v1.40.0 update]]></title>
            <link>https://velog.io/@be_honey/Playwright-v1.40.0-update</link>
            <guid>https://velog.io/@be_honey/Playwright-v1.40.0-update</guid>
            <pubDate>Fri, 17 Nov 2023 02:46:17 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><a href="https://github.com/microsoft/playwright/releases/tag/v1.40.0">https://github.com/microsoft/playwright/releases/tag/v1.40.0</a></p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/be_honey/post/e38a0e07-d7c2-48cc-b47e-f94cb54e444d/image.png" alt=""></p>
<h3 id="assertion-추가">assertion 추가</h3>
<ul>
<li>expect(locator).toBeVisible()</li>
<li>expect(locator).toHaveValue(value)</li>
<li>expect(locator).toContainText(text)</li>
</ul>
<pre><code class="language-js">import { test, expect } from &#39;@playwright/test&#39;;

test(&#39;test&#39;, async ({ page }) =&gt; {
  await page.goto(&#39;https://playwright.dev/&#39;);
  await page.getByRole(&#39;link&#39;, { name: &#39;Get started&#39; }).click();
  await expect(page.getByLabel(&#39;Breadcrumbs&#39;).getByRole(&#39;list&#39;)).toContainText(&#39;Installation&#39;);
  await expect(page.getByLabel(&#39;Search&#39;)).toBeVisible();
  await page.getByLabel(&#39;Search&#39;).click();
  await page.getByPlaceholder(&#39;Search docs&#39;).fill(&#39;locator&#39;);
  await expect(page.getByPlaceholder(&#39;Search docs&#39;)).toHaveValue(&#39;locator&#39;);
});</code></pre>
<h3 id="api-추가">API 추가</h3>
<ul>
<li><code>page.close()</code>, <code>browserContext.close()</code>, 그리고 <code>browser.close()</code>에 reason 옵션이 추가되었습니다.<ul>
<li>클로저에 의해 중단된 모든 작업에 대한 클로즈 이유가 리포트됩니다.</li>
</ul>
</li>
<li><code>browserType.launchPersistentContext(userDataDir)</code>에 <code>firefoxUserPrefs</code> 옵션이 추가되었습니다.</li>
</ul>
<h3 id="기타">기타</h3>
<ul>
<li>실패하거나 취소된 다운로드에 대해 <code>download.path()</code>와 <code>download.createReadStream()</code> 메소드가 오류를 throw합니다.</li>
<li>Playwright 도커 이미지에는 이제 <code>Node.js v20</code>이 포함되어 있습니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Note) css rem/em 사용 안티패턴]]></title>
            <link>https://velog.io/@be_honey/Note-css-remem-%EC%82%AC%EC%9A%A9-%EC%95%88%ED%8B%B0%ED%8C%A8%ED%84%B4</link>
            <guid>https://velog.io/@be_honey/Note-css-remem-%EC%82%AC%EC%9A%A9-%EC%95%88%ED%8B%B0%ED%8C%A8%ED%84%B4</guid>
            <pubDate>Thu, 16 Nov 2023 12:57:40 GMT</pubDate>
            <description><![CDATA[<p>여느 2010년대 스택오버플로우를 보면 rem/em 사용할 때 아래 같이 안내하는 걸 볼 수 있습니다.</p>
<pre><code class="language-css">// &quot; 글꼴 크기를 10픽셀로 전역 재설정 &quot; 하려면 아래처럼 하세요~
html {
    font-size: .625em;
}</code></pre>
<p>이렇게 하면 브라우저의 기본 글꼴 크기인 16픽셀을 10픽셀로 축소합니다. 이 방법은 우리의 계산을 간단히 해줍니다.</p>
<p>어떻게?</p>
<blockquote>
<p>디자이너가 글꼴을 14픽셀로 만들라고 하면 머릿속으로 10으로 나누고 1.4 rem을 입력하면 상대 단위를 계속 사용하면서 쉽게 계산할 수 있습니다. (참 쉽죠?)</p>
</blockquote>
<p>처음에는 이 방법이 편리할 수 있지만 이 방법에는 두 가지 문제가 있습니다.</p>
<h3 id="1-중복된-스타일을-많이-작성해야-합니다">1. 중복된 스타일을 많이 작성해야 합니다.</h3>
<p>10픽셀은 대부분의 텍스트에 비해 너무 작기 때문에 페이지 전체에 걸쳐 덮어써야 합니다.
<code>p 태그</code>을 1.4rem로, <code>aside 태그</code> 을 1.4rem로, <code>a 태그</code>를 1.4rem로 설정하는 등의 작업을 수행하게 됩니다.
이렇게 하면 오류가 발생할 수 있는 곳이 더 많아지고 코드가 변경되어야 할 때 접점이 더 많아지며 스타일시트의 크기가 커집니다.</p>
<h3 id="2-remem-을-쓰면서도-픽셀-단위로-생각하는-개발자">2. rem/em 을 쓰면서도 픽셀 단위로 생각하는 개발자</h3>
<p>두 번째 문제는 이렇게 할 때 여전히 픽셀 단위로 생각한다는 것입니다.
코드에 1.4rem을 입력해도 머릿속에서는 여전히 &quot;14픽셀&quot;로 생각하고 있는 것입니다.</p>
<p>반응형 웹에서는 &quot;상대적인&quot; 값에 익숙해져야 합니다.
1.2rem이 몇 픽셀로 평가되는지는 중요하지 않으며, 상속된 글꼴 크기보다 조금 더 크다는 것만 알면 됩니다.
그리고 화면에서 원하는 대로 보이지 않으면 변경하면 됩니다.</p>
<p>이 작업에는 약간의 시행착오가 필요하지만 픽셀로 작업한다고 해서 시행착오가 없을까요? 마찬가지입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Note) css 속성마다 값 나열 순서가 다른 이유]]></title>
            <link>https://velog.io/@be_honey/Note-css-%EA%B0%92-%EB%82%98%EC%97%B4-%EC%88%9C%EC%84%9C%EA%B0%80-%EB%8B%A4%EB%A5%B8-%EC%9D%B4%EC%9C%A0</link>
            <guid>https://velog.io/@be_honey/Note-css-%EA%B0%92-%EB%82%98%EC%97%B4-%EC%88%9C%EC%84%9C%EA%B0%80-%EB%8B%A4%EB%A5%B8-%EC%9D%B4%EC%9C%A0</guid>
            <pubDate>Thu, 16 Nov 2023 12:48:19 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-css">* {
    // padding 상하 10px + 좌우 20px
    padding: 10px 20px;
    // background position 좌우 30px + 상하 40px
    background-position: 30px 40px;
}</code></pre>
<p>이 두 값이 정반대라는 것이 직관적이지 않은 것처럼 보이지만 그 이유는 간단함.
<code>padding</code> 의 두 값은 &quot;요소의 주변값&quot;을 시계방향으로 나열한 것의 축약임.
반면, <code>background-position</code> 의 두 값은 Cartesian grid를 의미함.</p>
<p>CSS 설계 방식을 아래처럼 이해해봅시다~</p>
<blockquote>
<p>가로/세로 모서리 두 개의 측정값을 지정하는 속성으로 작업하는 경우 &quot;XY축 좌표계&quot;를 생각하면 됩니다.
요소 주위의 각 변에 대한 측정값을 지정하는 속성으로 작업하는 경우 &quot;시계&quot;를 생각하면 됩니다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Note) margin/padding 입력 순서 기억법]]></title>
            <link>https://velog.io/@be_honey/Note-marginpadding-%EC%9E%85%EB%A0%A5-%EC%88%9C%EC%84%9C-%EA%B8%B0%EC%96%B5%EB%B2%95</link>
            <guid>https://velog.io/@be_honey/Note-marginpadding-%EC%9E%85%EB%A0%A5-%EC%88%9C%EC%84%9C-%EA%B8%B0%EC%96%B5%EB%B2%95</guid>
            <pubDate>Thu, 16 Nov 2023 02:20:20 GMT</pubDate>
            <description><![CDATA[<p>기억법은 우리나라만 쓰는 줄 알았는데, 해외도 쓴다.
아래처럼 나열해서 값을 입력하는 css에 대해서, 그 순서를 외우는 법은 <code>TRouBLe</code>이다.</p>
<pre><code class="language-css">padding: 10px 20px 30px 40px;
margin: 10px 20px 30px 40px;</code></pre>
<p>순서가 기억안나는 트러블.. <code>T</code> <code>R</code>ou<code>B</code> <code>L</code>e ...  top right bottom left!</p>
<blockquote>
<p>TRouBLe
Top &gt; Right &gt; Bottom &gt; Left</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Note) css에서 상속을 활용하는 주요 프로퍼티]]></title>
            <link>https://velog.io/@be_honey/Note-css%EC%97%90%EC%84%9C-%EC%83%81%EC%86%8D%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%98%EB%8A%94-%EC%A3%BC%EC%9A%94-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0</link>
            <guid>https://velog.io/@be_honey/Note-css%EC%97%90%EC%84%9C-%EC%83%81%EC%86%8D%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%98%EB%8A%94-%EC%A3%BC%EC%9A%94-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0</guid>
            <pubDate>Wed, 15 Nov 2023 12:49:47 GMT</pubDate>
            <description><![CDATA[<p>body 태그에서 한번 선언한 뒤, 하위 엘리먼트에서는 상속된 값으로 사용하는 게 좋을 속성들 입니다.</p>
<h3 id="text">text</h3>
<p><code>color</code>, <code>font</code>, <code>font-family</code>, <code>font-size</code>, <code>font-weight</code>, <code>font-variant</code>, <code>font-style</code>, <code>line-height</code>, <code>letter-spacing</code>, <code>text-align</code>, <code>text-indent</code>, <code>text-transform</code>, <code>white-space</code>, <code>word-spacing</code></p>
<p>typography 시스템 관리 필요에 따라 mixin 으로 묶어 선언하기도 합니다.</p>
<h3 id="list">list</h3>
<p><code>list-style</code>, <code>list-style-type</code>, <code>list-style-position</code>, <code>list-style-image</code></p>
<h3 id="table-border">table border</h3>
<p><code>border-collapse</code>, <code>border-spacing</code></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Note) css 인터랙션 스타일 기억법 "LoVe/HAte"]]></title>
            <link>https://velog.io/@be_honey/Note-css-%EC%9D%B8%ED%84%B0%EB%9E%99%EC%85%98-%EC%8A%A4%ED%83%80%EC%9D%BC-%EA%B8%B0%EC%96%B5%EB%B2%95-LoVeHAte</link>
            <guid>https://velog.io/@be_honey/Note-css-%EC%9D%B8%ED%84%B0%EB%9E%99%EC%85%98-%EC%8A%A4%ED%83%80%EC%9D%BC-%EA%B8%B0%EC%96%B5%EB%B2%95-LoVeHAte</guid>
            <pubDate>Wed, 15 Nov 2023 12:28:33 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>The cascade is the reason this order matters: given the same specificity, later styles override earlier styles. If two or more of these states are true of one element at the same time, the last one can override the others. If the user hovers over a visited link, the hover styles take precedence. If the user activates the link (that is, clicks it) while hovering over it, the active styles take precedence.</p>
</blockquote>
<p>Pseudo 선택자는 명시도가 같습니다.
명시도에 대해 Pseudo 선택자를 쓸 땐, 선언 순서가 중요해집니다.
일반적인 케이스의 인터랙션 스타일링 시  <code>L</code>o<code>V</code>e / <code>H</code> <code>A</code>te 순서로 선언해줍시다.</p>
<blockquote>
<p><code>L</code>ink &gt; <code>V</code>isited &gt; <code>H</code>over &gt; <code>A</code>ctive</p>
</blockquote>
<p>사용자가 방문한 링크(<code>:visit</code>) 위로 마우스를 가져가면 <code>:hover</code> 스타일이 우선합니다. 사용자가 링크 위에 마우스를 올려놓은 상태(<code>:hover</code>)에서 링크를 활성화(<code>:active</code>)하면 활성화된 스타일이 우선합니다.</p>
<pre><code class="language-css">a:link {
  color: blue;
}

a:visited {
    color: purple;
}

a:hover {
    color: yellow;
}

a:active {
    color: red;
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[Note) pseudo-class selector의 명시도 ]]></title>
            <link>https://velog.io/@be_honey/Note-pseudo-class-selector%EC%9D%98-%EB%AA%85%EC%8B%9C%EB%8F%84</link>
            <guid>https://velog.io/@be_honey/Note-pseudo-class-selector%EC%9D%98-%EB%AA%85%EC%8B%9C%EB%8F%84</guid>
            <pubDate>Wed, 15 Nov 2023 12:10:51 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Pseudo-class selectors (for example, :hover) and attribute selectors (for example, [type=&quot;input&quot;]) each have the same specificity as a class selec- tor. The universal selector (*) and combinators (&gt;, +, ~) have no effect on specificity.</p>
</blockquote>
<p>Pseudo 클래스 선택자(예: <code>:hover</code>)와 attribute 선택자(예: <code>[type=&quot;input&quot;]</code>)는 각각 클래스 선택자와 동일한 명시도(specificity)를 갖습니다.
Universal 선택자(<code>*</code>)와 Combinators(<code>&gt;</code>, <code>+</code>, <code>~</code>)는 명시도(specificity)에 영향을 미치지 않습니다.</p>
]]></description>
        </item>
    </channel>
</rss>