๐Ÿ“š
TIL
  • README
  • Git
    • Basic
    • Remote Repository
    • Log & Diff
    • Rebase&Cherri-Pick
    • git-flow
  • DevOps
    • Monolithic vs MSA
    • Jenkins ์‹œ์ž‘ํ•˜๊ธฐ
    • Airflow ์‹œ์ž‘ํ•˜๊ธฐ
    • Airflow ์‹œ์ž‘ํ•˜๊ธฐ
    • Build Tools
      • maven
  • ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก 
    • TDD
  • Spring
    • IoC
    • Is Spring Bean Thread-Safe?
    • Spring Singleton
    • Component Scan
    • Spring Annotation
    • ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…(DI)
    • Lombok ํ™œ์šฉํ•˜๊ธฐ
    • Bean ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์ฝœ๋ฐฑ
    • Bean Scope
    • AOP(1) - AOP๋ž€
    • AOP(2) - Aop Proxy
    • AOP(3) - Dynamic Proxy
    • AOP(4) - AspectJ
    • POJO
    • Spring ์„œ๋น„์Šค ๊ตฌ์กฐ
    • Transaction
    • JPA๋ž€?
    • JPA Entity
    • Spring Data JPA
    • Spring Data Specification
    • Model Mapping
    • Cache
    • restTemplate
    • YAML ํŒŒ์ผ ์„ค์ •
    • Spring Boot
      • H2 DB ์„ค์ •
      • ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •
      • Mybatis ์—ฐ๋™ํ•˜๊ธฐ
    • Spring Batch
      • Batch ์‹œ์ž‘ํ•ด๋ณด๊ธฐ
      • Batch Job Flow
      • Job
      • Step
      • Batch Scope & Job Parameter
      • JobRepository์™€ ๋ฉ”ํƒ€ํ…Œ์ด๋ธ”
      • Chunk ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • ItemReader
      • ItemProcessor
      • ItemWriter
      • Batch Schedular
      • Job๋ณ„ Bean๋“ฑ๋กํ•˜๊ธฐ
      • Batch ๊ตฌํ˜„์‹œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ์ •๋ฆฌ
      • Spring Batch Scaling
        • Multithread Job๊ตฌํ˜„์‹œ ์ด์Šˆ์‚ฌํ•ญ
    • Spring test
      • Junit5
        • ํ…Œ์ŠคํŠธ ์ด๋ฆ„ ํ‘œ๊ธฐ
        • ํ…Œ์ŠคํŠธ ๊ทธ๋ฃน ์‚ฌ์ด์˜ ๊ด€๊ณ„
        • ํƒœ๊ทธ์™€ ํ•„ํ„ฐ๋ง
        • ๋™์  ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ LifeCycle
        • ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ
        • ํ…Œ์ŠคํŠธ ์ˆœ์„œ
        • AssertJ
        • ํ…Œ์ŠคํŠธ ๋ณ‘๋ ฌ ์‹คํ–‰
        • AssertJ
        • Mock
      • Spring Boot Test DB ๋ถ„๋ฆฌ
      • Spring Batch Test
  • Web Application
    • Web Server & WAS
    • ๊ด€๋ จ ๊ฐœ๋… - HTTP API, HTML, CSR, SSR
    • Servlet
    • JSP
    • Cookie And Session
    • ์˜ˆ์™ธํŽ˜์ด์ง€
    • Java Bean
    • JDBC
    • Connection Pool
    • ํŒŒ์ผ ์—…๋กœ๋“œ
    • Expression Language
    • JSTL
    • FrontControllerํŒจํ„ด Command ํŒจํ„ด
    • Forwarding
    • MVC
    • ํšŒ์›๊ฐ€์ž…์˜ˆ์ œ
    • ์ฐธ๊ณ 
      • ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ •
  • Java+
    • SOAP/WSDL vs REST
    • WSDL์„ JAVA๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ
    • SOAP ํ†ต์‹  OPEN API๋กœ ๊ฐœ๋ฐœํ•ด๋ณด๊ธฐ
  • Java
    • Basic
      • ๋ณ€์ˆ˜์™€ ํƒ€์ž…
      • ์—ฐ์‚ฐ์ž
      • ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ
      • ์ฐธ์กฐ ํƒ€์ž…
      • ํด๋ž˜์Šค
      • ์ƒ์†(Inheritance)
      • ์ธํ„ฐํŽ˜์ด์Šค(Interface)
      • ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค
      • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
      • API - Object, System, Class, Math, Wrapper
      • API - String, StringBuffer, StringBuilder
      • Thread
      • Generic
      • Lambda
      • Collection - List, Set
      • Collection - Map
      • Collection - Tree
      • Collection - Stack, Queue
      • Stream
      • Reflection
      • ์ •๊ทœํ‘œํ˜„์‹
      • GUI
      • UML
      • Serializable
    • Advanced
      • OutOfMemoryError
      • AutoValue
      • meta-annotation
        • @Retention
        • @Target
        • @Repeatable
    • Effective Java 3/E
      • ITEM 1: Static Factory Method(์ •์  ๋ฉ”์†Œ๋“œ)
      • ITEM 2: Builder Pattern
      • ITEM 3: Singleton
      • ITEM 4: Private Constructor
      • ITEM 5: Dependency Injection
      • ITEM 6: Avoid Unnecessary Object
      • ITEM 7: Eliminate Object Reference
      • ITEM 8: Avoid finalizer and cleaner
      • ITEM 9: try-with-resources
      • ITEM 10: The gerneral contract when overriding equlas
      • ITEM 11: Overriding hashCode
      • ITEM 12: overriding toString
      • ITEM 13: overriding clone judiciously
      • ITEM 14: Consider implementing comparable
      • ITEM 15: ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•ด๋ผ
      • ITEM 16: Use Accessor methods
      • ITEM 17: ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•ด๋ผ(๋ถˆ๋ณ€ ํด๋ž˜์Šค)
      • ITEM 18: ์ƒ์†๋ณด๋‹จ ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 19: ์ƒ์†์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•ด๋ผ
      • ITEM 20: ์ถ”์ƒ ํด๋ž˜์Šค๋ณด๋‹ค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์šฐ์„ ํ•˜๋ผ
      • ITEM 21: ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜๋Š” ์ชฝ์„ ์ƒ๊ฐํ•ด ์„ค๊ณ„ํ•ด๋ผ.
      • ITEM 22: ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 23: ํƒœ๊ทธ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค๋ณด๋‹ค ํด๋ž˜์Šค ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด๋ผ
      • ITEM 24: ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๋˜๋„๋ก static์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ผ
      • ITEM 25: ํ†ฑ๋ ˆ๋ฒจ ํด๋ž˜์Šค๋Š” ํ•œ ํŒŒ์ผ์— ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•ด๋ผ.
      • ITEM 26: Raw type์€ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ
      • ITEM 27: ๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•ด๋ผ
      • ITEM 28: ๋ฐฐ์—ด๋ณด๋‹ค๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 29: ์ด์™•์ด๋ฉด ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 30: ์ด์™•์ด๋ฉด ์ œ๋„ค๋ฆญ ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 31 : ํ•œ์ •์  ์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด API ์œ ์—ฐ์„ฑ์„ ๋†’์—ฌ๋ผ
      • ITEM 32: ์ œ๋„ค๋ฆญ๊ณผ ๊ฐ€๋ณ€์ธ์ˆ˜๋ฅผ ํ•จ๊ป˜ ์“ธ ๋•Œ๋Š” ์‹ ์ค‘ํ•ด๋ผ
      • ITEM 33: ํƒ€์ž… ์•ˆ์ „ ์ด์ข… ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ณ ๋ คํ•ด๋ผ
      • ITEM 34: int ์ƒ์ˆ˜ ๋Œ€์‹  ์—ด๊ฑฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 35: ordinal ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 36: ๋น„ํŠธ ํ•„๋“œ ๋Œ€์‹  EnumSet์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 37: ordinal ์ธ๋ฑ์‹ฑ ๋Œ€์‹  EnumMap์„ ์‚ฌ์šฉํ•ด๋ผ
      • TEM 38 : ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์—ด๊ฑฐํƒ€์ž…์ด ํ•„์š”ํ•˜๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 39: ๋ช…๋ช… ํŒจํ„ด๋ณด๋‹ค ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 40: @Override ์–ด๋…ธํ…Œ์ด์…˜์„ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 41: ์ •์˜ํ•˜๋ ค๋Š” ๊ฒƒ์ด ํƒ€์ž…์ด๋ผ๋ฉด ๋งˆ์ปค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 42: ์ต๋ช… ํด๋ž˜์Šค๋ณด๋‹ค๋Š” ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 43: ๋žŒ๋‹ค๋ณด๋‹ค๋Š” ๋ฉ”์„œ๋“œ ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 44: ํ‘œ์ค€ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 45: ์ŠคํŠธ๋ฆผ์€ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 46: ์ŠคํŠธ๋ฆผ์—์„œ ๋ถ€์ž‘์šฉ ์—†๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 47: ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ๋Š” ์ŠคํŠธ๋ฆผ๋ณด๋‹ค ์ปฌ๋ ‰์…˜์ด ๋‚ซ๋‹ค.
      • ITEM 48: ์ŠคํŠธ๋ฆผ ๋ณ‘๋ ฌํ™”๋Š” ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 49: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•ด๋ผ
      • ITEM 50: ์ ์‹œ์— ๋ฐฉ์–ด์  ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด๋ผ
      • ITEM 51: ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์‹ ์ค‘ํžˆ ์„ค๊ณ„ํ•ด๋ผ
      • ITEM 52: ๋‹ค์ค‘์ •์˜๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 53: ๊ฐ€๋ณ€์ธ์ˆ˜๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 54: null์ด ์•„๋‹Œ, ๋นˆ ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ด๋ผ
      • ITEM 55: Optional ๋ฐ˜ํ™˜์€ ์‹ ์ค‘ํ•˜๊ฒŒ ํ•ด๋ผ
      • ITEM 56: ๊ณต๊ฐœ๋œ API ์š”์†Œ์—๋Š” ํ•ญ์ƒ ์ฃผ์„์„ ์ž‘์„ฑํ•ด๋ผ
      • ITEM 57: ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•ด๋ผ
      • ITEM 58: ์ „ํ†ต์ ์ธ for ๋ฌธ๋ณด๋‹ค๋Š” for-each๋ฌธ์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 59: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตํžˆ๊ณ  ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 60: ์ •ํ™•ํ•œ ๋‹ต์ด ํ•„์š”ํ•˜๋‹ค๋ฉด float์™€ double์€ ํ”ผํ•ด๋ผ
      • ITEM 61: ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…๋ณด๋‹ค๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 62: ๋‹ค๋ฅธ ํƒ€์ž…์ด ์ ์ ˆํ•˜๋‹ค๋ฉด ๋ฌธ์ž์—ด ์‚ฌ์šฉ์„ ํ”ผํ•ด๋ผ
      • ITEM 63: ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ ๋А๋ฆฌ๋‹ˆ ์ฃผ์˜ํ•ด๋ผ
      • ITEM 64: ๊ฐ์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ฐธ์กฐํ•ด๋ผ
      • ITEM 65: ๋ฆฌํ”Œ๋ ‰์…˜๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 66: ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•ด๋ผ
      • ITEM 67: ์ตœ์ ํ™”๋Š” ์‹ ์ค‘ํžˆ ํ•ด๋ผ
      • ITEM 68: ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ผ๋ผ
    • ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™(SOLID)
    • ๋””์ž์ธํŒจํ„ด
      • Strategy Pattern
      • Template Method Pattern
      • Factory Method Pattern
      • Singleton
      • Delegation
      • Proxy
      • Adapter Pattern
    • ์‹ค์Šต
      • ์ธํ„ฐํŽ˜์ด์Šค ์‹ค์Šต - Vehicle
      • ์ธํ„ฐํŽ˜์ด์Šค ์‹ค์Šต - Remote
      • GUI ์‹ค์Šต - Calculator
      • GUI ์‹ค์Šต - button
      • GUI ์‹ค์Šต - lotto
      • Thread ์‹ค์Šต - ์ขŒ์„์˜ˆ์•ฝ, ๋ฉ”์„ธ์ง€๋ณด๋‚ด๊ธฐ
    • Jar vs War
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • KEY
    • Index
    • Transaction
    • Trigger
    • Procedure / Function
    • Package
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฐ์›€ํ„ฐ
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ
      • ๊ด€๊ณ„๋ฐ์ดํ„ฐ ๋ชจ๋ธ
      • ๊ด€๊ณ„๋Œ€์ˆ˜์™€ SQL
    • MySQL
      • Database๋ž€
      • MySQL ์‹œ์ž‘ํ•˜๊ธฐ
      • MySQL Database
      • MySQL Table
      • CRUD
      • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
      • Server์™€ Client
    • PostgreSQL
    • NoSQL
      • Install Cassandra on mac
      • Cassandra๋ž€?
      • NiFi๋ž€
  • Algorithm
    • String
    • Recursion
    • Dynamic Programming
    • Array, Struct, Pointer
    • Math
    • Sort
    • List
    • Stack
    • Queue
    • Graph
    • Tree
    • Maze
    • AVL
    • ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ(Binary Search Tree)
    • DFS์™€ BFS
    • ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Dijkstra's Algorithm)
    • Red-Black ํŠธ๋ฆฌ
    • A* ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • Heap
    • Huffman Coding
    • Priority Queue
    • Bellman-Ford ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • C++
      • Class
      • STL
        • STL pair
        • STL Container - Associate Container
        • STL Container - Sequence Container
        • STL Container - Container Adapter
  • JavaScript
    • JABASCRIPT BASIC
    • Shallow Copy vs Deep Copy
    • OBJECT MODEL
    • NODE
    • ๋™๊ธฐ ์ฒ˜๋ฆฌ vs ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • AJAX
    • CALLBACK
    • PROMISE
    • DEFERRER
    • UNDERSCORE
    • WEBPACK
    • SCOPE
    • EXECUTION CONTEXT
    • Image Object
    • BFCache๋ž€?
    • history.scrollRestoration
    • Intersection Observer
    • JWT - JSON Web Token
    • HTML vs JSON
  • Vue.js
    • ํ™˜๊ฒฝ์„ค์ •
    • Vue.js๋ž€?
    • Vue Instance
    • Vue Component
    • Vue Router
    • HTTP ํ†ต์‹ 
    • Template
    • Single File Component
    • Vue Animation
    • Vuex
    • Djnago์™€ ์—ฐ๋™ํ•˜๊ธฐ
  • Backbone.js
    • Model
    • Collection
    • Sync
    • view
  • Node.js
    • Doit! - ๋…ธ๋“œ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ์„œ๋ฒ„์™€ ์šฉ๋„
    • Doit! - ๋…ธ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๊ฐœ๋ฐœ ๋„๊ตฌ ์„ค์น˜ํ•˜๊ธฐ
    • Doit! - ๋…ธ๋“œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ธฐ
    • Doit! - ๋…ธ๋“œ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ์นœํ•ด์ง€๊ธฐ
    • Doit! - ๋…ธ๋“œ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์•Œ์•„๋ณด๊ธฐ
    • Doit! - ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
    • Doit! - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉํ•˜๊ธฐ
    • Doit! - ์ต์Šคํ”„๋ ˆ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜๊ธฐ
    • Doit! - ๋ทฐ ํ…œํ”Œ๋ฆฟ ์ ์šฉํ•˜๊ธฐ
    • Doit! - ํŒจ์ŠคํฌํŠธ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆํ•˜๊ธฐ
    • Doit! - ์ฑ„ํŒ…์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
    • Doit! - JSON-RPC ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ
  • Python
    • Warning-Could not import the lzma module
    • Pandas
      • Pandas ์ž๋ฃŒ๊ตฌ์กฐ
      • Pandas ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ
      • DataFrame Data ์‚ดํŽด๋ณด๊ธฐ
      • ์‹œ๊ฐํ™” ๋„๊ตฌ - Matplotlib
  • ML
    • ์ถ”์ฒœ ์‹œ์Šคํ…œ
      • Collaborative Filtering
      • Matrix Factorization
  • Django
    • Basic
      • ํ™˜๊ฒฝ์„ค์ •
      • About Django
      • Start Django Project
      • Secret Key ๊ด€๋ฆฌํ•˜๊ธฐ
      • Settings ๋ถ„๋ฆฌํ•˜๊ธฐ
      • Django App
      • Django View & URL (1)
      • Django Model
        • MySQL ์—ฐ๋™
      • Django Admin
      • Django View & URL (2)
      • Django Template
      • Django Template & View & URL
      • Django Static
      • Django form
    • Advanced
      • Django Generic View
      • Django Automated Testing
      • Django Extenstion Template
      • Django Model Package
      • Django OpenSSL setting
    • REST framework
      • Rest API
      • Serializers
      • ViewSet
    • Error
      • ํ™˜๊ฒฝ์„ค์ • zlib ์˜ค๋ฅ˜๋ฐœ์ƒ
      • ModuleNotFoundError
    • ํŒจํ‚ค์ง€
      • django-debug-toolbar
    • Vue.js ์—ฐ๋™ํ•˜๊ธฐ
  • Ruby
    • variable & input/output
    • ์กฐ๊ฑด๋ฌธ
    • ๋ฐ˜๋ณต๋ฌธ
    • Array & Hash
    • Method
    • Proc&Lamda
    • Class
  • Ruby on Rails
    • Scaffolding
    • Controller
    • Model
    • Model-M:N relation
    • Model Validation
    • ๋ฉ‹์‚ฌ 10์ฃผ์ฐจ ์ˆ˜์—…(Tip)
  • HTML/CSS
    • Udacity - Intro to HTML/CSS
    • Udacity - Responsive Web Design
    • Udacity - Responsive Images
    • HTML Basic
    • CSS Basic
    • HTML5 Sementic Tag
    • HTML ํ…์ŠคํŠธ ๊ด€๋ จ ํƒœ๊ทธ๋“ค
    • HTML5 ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด
    • HTML ํผ ๊ด€๋ จ ํƒœ๊ทธ๋“ค
    • ํ…์ŠคํŠธ ๊ด€๋ จ ์Šคํƒ€์ผ
    • ์ƒ‰์ƒ๊ณผ ๋ฐฐ๊ฒฝ์„ ์œ„ํ•œ ์Šคํƒ€์ผ
    • ๋ ˆ์ด์•„์›ƒ์„ ์œ„ํ•œ ์Šคํƒ€์ผ
    • CSS ํฌ์ง€์…”๋‹
    • ๋‹ค์žฌ๋‹ค๋Šฅํ•œ CSS3 ์„ ํƒ์ž
    • CSS์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜
    • ๋ฐ˜์‘ํ˜• ์›น์ด๋ž€?
  • OS(์šด์˜์ฒด์ œ)
    • Linux
      • Daemon
      • Cron
      • ํ”„๋กœ์„ธ์Šค ๊ด€๋ จ ๋ช…๋ น์–ด
      • ํ…์ŠคํŠธ ํŒŒ์ผ ๋ช…๋ น์–ด
  • Network
    • ๋„คํŠธ์›Œํฌ ๊ธฐ๋ณธ ๊ฐœ๋…
    • ๋„คํŠธ์›Œํฌ ๊ธฐ๋ณธ ๊ทœ์น™
    • ๋ฌผ๋ฆฌ ๊ณ„์ธต
    • ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต
    • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต
    • ์ „์†ก ๊ณ„์ธต
    • ์‘์šฉ ๊ณ„์ธต
    • ๋„คํŠธ์›Œํฌ ์ „์ฒด ํ๋ฆ„
    • ๋ฌด์„  ๋žœ
  • IT ๊ธฐํƒ€์ง€์‹
    • NAS๋ž€
Powered by GitBook
On this page
  • Units, Formats, Environments
  • Landscape and Portrait
  • Raster and Vertor
  • Grunt & ImageMagick & ImageOptim
  • Html figure tag
  • Images with Markup
  • Text
  • CSS Background images
  • Inline vs External images
  • Full Responsiveness
  • Srcset & Sizes
  • Picture

Was this helpful?

  1. HTML/CSS

Udacity - Responsive Images

image๋Š” web์—์„œ ์•ฝ 62% ์ฐจ์ง€ํ•œ๋‹ค. ์ด๋ฏธ์ง€์˜ ์‚ฌ์ด์ฆˆ๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•˜๋‹ค. ๊ธฐ๊ณ„๊ฐ€ ๋‹ค์–‘ํ•œ๋งŒํผ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋„ ๊ฑฐ๊ฐ€์— ๋งž์ถฐ์ ธ์•ผํ•œ๋‹ค.

"images consume more than 60% of the bytes that cross the web." This isn't strictly true: images on average consume more than 60% of the bytes to open a web page, but most of the bytes that "cross the web" are for video.

Units, Formats, Environments

Total bits = pixels X bits per pixel less pixels * better compression = less bytes

์–ด๋–ป๊ฒŒ ํŒŒ์ผํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚ ๋•Œ ํ€„๋ฆฌํ‹ฐ๋ฅผ ์œ ์ง€ํ• ๊นŒ?

ํ™”๋ฉด์ด ์ค„์–ด๋“ค๋•Œ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผwidth: 100%๋กœ ํ•ด์คŒ์œผ๋กœ์จ ๊ฐ€๋ ค์ง€๋Š”๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํ™”๋ฉดํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๋ฉด ์ด๋ฏธ์ง€์˜ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ๊นจ์ง„๋‹ค.

max-width: 100% ๋ฅผ ํ•˜๋ฉด natural width๋งŒํผ ์ปค์ง€๊ณ  ๊ทธ์ด์ƒ์€ ์•ˆ์ปค์ง„๋‹ค.

  • calc() CSS function can be used anywhere a , , , , , or is required.

    width: calc(100% - 80px);
    # 100% ๋„ˆ๋น„์—์„œ 80%๋งŒํผ ๋บ€ ๋„ˆ๋น„

    ์—ฐ์‚ฐ์‹œ ๋ฐ˜๋“œ์‹œ ์‚ฌ์น™์—ฐ์‚ฐ +,-๊ธฐํ˜ธ ์–‘์ชฝ์—๋Š” ๊ณต๋ฐฑ์„ ์‚ฝ์ž…ํ•ด์•ผํ•œ๋‹ค.

Landscape and Portrait

: ํ™”๋ฉด์„ ๊ฐ€๋กœ๋กœ ํ–ˆ์„๋•Œ๋Š” ๊ดœ์ฐฎ์€๋ฐ ์„ธ๋กœ๋กœ ํ–ˆ์„๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ€๋ ค์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

Did you notice how setting both the height and the width to 100vmax or 100vmin changes the image's aspect ratio? It'll compress your images to squares, so be careful if you want to maintain a different aspect ratio! vmin๊ณผ vmax๋ฅผ ์ด์šฉํ•ด์„œ ํ™”๋ฉดํฌ๊ธฐ์— ๋งž๊ฒŒ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ”๋€Œ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

Raster and Vertor

  • Raster image(png,jpeg)๋Š” ์ผ๋ฐ˜์ ์ธ ์นด๋ฉ”๋ผ, ์Šค์บ๋„ˆ๋กœ ์ฐ์€ ์ด๋ฏธ์ง€์ด๋ฉฐ, Vector ์ด๋ฏธ์ง€(svg)๋Š” ๋กœ๊ณ ์™€๊ฐ™์ด ์ผ๋Ÿฌ์ŠคํŠธ๋ ˆ์ดํŠธ๋กœ ๋งŒ๋“  ์ด๋ฏธ์ง€์ด๋‹ค.

    ๋‘๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋น„๊ตํ•ด๋ดค์„๋•Œ png๋Š” ํ™”๋ฉด์˜ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ์•ฝ๊ฐ„ ๊นจ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.svg๋Š” ์–ด๋А ์‚ฌ์ด์ฆˆ์—์„œ๋‚˜ perfectํ•˜๋‹ค. jpeg๋ณด๋‹ค svg๊ฐ€ ์‚ฌ์ด์ฆˆ๋„ ๋” ์ž‘์€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. png๋Š” ์ตœ๋Œ€ํ•œ ํ”ผํ•˜๊ณ  , svg๋ฅผ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•ด๋ผ.

Grunt & ImageMagick & ImageOptim

Grunt๊ฐ€ ์™„์ „์ข‹์•„! grunt๋กœ pagespeed๋„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Html figure tag

:figure์š”์†Œ๋Š” ์ผ๋Ÿฌ์ŠคํŠธ, ๋‹ค์ด์–ด๊ทธ๋žจ, ์‚ฌ์ง„, ์ฝ”๋“œ๋“ฑ์— ์ฃผ์„์„ ๋‹ค๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์ด ์š”์†Œ๊ฐ€ ์ œ๊ฑฐ ๋˜๋”๋ผ๋„ ๋ฌธ์„œ์˜ ์ฃผ๋œ ํ๋ฆ„์—๋Š” ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • figure์š”์†Œ๋Š” figcaption ์š”์†Œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ * figure์š”์†Œ์•ˆ์—์„œ ๋งจ์•ž์ด๋‚˜ ๋งจ ๋งˆ์ง€๋ง‰์—๋งŒ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, figcaption์š”์†Œ๊ฐ€ ํ•„์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

Images with Markup

Text

ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์ง„์œ„์— ์จ์„œ jpeg๋กœ ์ €์žฅํ•œ๋‹ค๋ฉด, ํ™”๋ฉด์˜ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€”๋•Œ ๊ธ€์ž๊ฐ€ ๊นจ์ง€๊ฒŒ๋œ๋‹ค. ํ•˜์ง€๋งŒ ํ…์ŠคํŠธ๋ฅผ ์ด๋ฏธ์ง€์™€ ๋ณ„๋„๋กœ ์“ฐ๊ฒŒ๋œ๋‹ค๋ฉด ๊นจ์ง€์ง€๋„ ์•Š๊ณ , ์Šคํฌ๋กค์„ํ•ด์„œ ๊ธ์–ด ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ํŒŒ์ผ ํฌ๊ธฐ๋˜ํ•œ ์ค„์–ด๋“ ๋‹ค.(CSS๋ฅผ ํ†ตํ•ด์„œ!) ํ•˜์ง€๋งŒ CSS ํšจ๊ณผ๋„ load time์„ ์‹ ๊ฒฝ์จ์•ผํ•œ๋‹ค. ๋ชจ๋ฐ”์ผ์—์„œ ๋กœ๋”ฉ์„ ํ•  ๋•Œ ์˜ค๋ž˜๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—.

CSS Background images

ํ™”๋ฉดํฌ๊ธฐ์— ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

background-size: cover;
background-size: contain;
  • cover๋กœ ์ง€์ •ํ•˜๋ฉด ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ๊ธธ์ด ๋ชจ๋‘ ์—˜๋ฆฌ๋จผํŠธ๋ณด๋‹ค ํฌ๋‹ค๋ผ๋Š” ์กฐ๊ฑดํ•˜์— ๊ฐ€๋Šฅํ•œํ•œ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ์ž‘๊ฒŒ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋กœ/์„ธ๋กœ ๋น„์œจ์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋Š” ์—˜๋ฆฌ๋จผํŠธ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํ•ญ์ƒ ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • contain์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ๊ธธ์ด ๋ชจ๋‘ ์—˜๋ฆฌ๋จผํŠธ ์•ˆ์— ๋“ค์–ด์˜จ๋‹ค๋ผ๋Š” ์กฐ๊ฑดํ•˜์— ๊ฐ€๋Šฅํ•œํ•œ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ํฌ๊ฒŒ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋กœ/์„ธ๋กœ ๋น„์œจ์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋Š” ์—˜๋ฆฌ๋จผํŠธ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํ•ญ์ƒ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Inline vs External images

: ์‹ค์ œ๋กœ ํ•ด๋ณด๊ณ  ๋” ๋น ๋ฅธ๊ฒƒ์„ ์„ ํƒํ•ด์•ผํ•œ๋‹ค.

Full Responsiveness

Srcset & Sizes

<img src="small.jpg"
     srcset="large.jpg 1024w, medium.jpg 640w, small.jpg 320w"
     sizes="(min-width: 36em) 33.3vw, 100vw"
     alt="A rad wolf">

<img> ํƒœ๊ทธ์— ์ƒˆ๋กœ srcset๊ณผ sizes ์†์„ฑ์ด ๋ง๋ถ™์—ˆ๋‹ค. ์—ฌ๊ธฐ ์˜ˆ์ œ์˜ srcset ์†์„ฑ์—์„œ๋Š” ๊ฐ๊ฐ ๊ฐ€๋กœํญ 1024px, 640px, 320px์ธ 3๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ์‰ผํ‘œ๋กœ ๋ถ„๋ฆฌ๋œ ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ ์—ˆ๋‹ค. ์ด๋Ÿด ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €(srcset์„ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €)๋Š” ์ด ๊ฐ’์„ ์ฝ์–ด ํ˜„์žฌ์˜ ํ™”๋ฉด ์ƒํƒœ์— ๋งž๋Š” ์ ์ ˆํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋œ๋‹ค. sizes ์†์„ฑ๋„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ์†์„ฑ์€ ๋ฏธ๋””์–ด์ฟผ๋ฆฌ์˜ ์ค‘๋‹จ์ (breakpoint) ๋ณ„๋กœ ํ•„์š”ํ•œ ์ด๋ฏธ์ง€์˜ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์—ญ์‹œ ๋ธŒ๋ผ์šฐ์ €๋กœ ํ•˜์—ฌ๊ธˆ ํ˜„์žฌ์˜ ์ƒํƒœ์— ๊ฐ€์žฅ ์ž˜ ๋งž๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ๋„์›€์„ ์ฃผ๊ฒŒ ๋œ๋‹ค. ์œ„ ์˜ˆ์ œ์—์„œ๋Š” ๋ฏธ๋””์–ด์ฟผ๋ฆฌ์˜ ์ค‘๋‹จ์ ์œผ๋กœ ๊ฐ€๋กœํญ์ด 36em ์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” 33.3vw (โ€˜viewport widthโ€™๋ฅผ ์˜๋ฏธ)์˜ ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ•จ์„ ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ฆฌ๊ณ  ์žˆ์œผ๋ฉฐ ๋’ค์˜ 100vw๋Š” ๋””ํดํŠธ๊ฐ’์ด๋‹ค. ๋ฌผ๋ก  srcset๊ณผ sizes๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๊ธฐ์กด์˜ src ์†์„ฑ์ด ํด๋ฐฑ(fallback)์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

srcset๊ณผ sizes ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ž์—์„œ ์ œ๊ธฐํ•œ ๋„ค ๊ฐ€์ง€ ๋ฌธ์ œ๋“ค ์ค‘ ์ ์–ด๋„ ์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ์†์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž์ถฐ ์ ์ ˆํ•œ ์šฉ๋Ÿ‰์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋˜ํ•œ ๊ณ ๋ฐ€์ง‘๋„ ๋””์Šคํ”Œ๋ ˆ์ด ํ™”๋ฉด์— ๋Œ€ํ•œ ๋Œ€์‘๋„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŒ๋‹จํ•˜์—ฌ ๋Œ€์‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

srcset syntax

one using x to differentiate between device pixel ratios (DPR), and the other using w to describe the image's width.

  • Reacting to Device Pixel Ration

    <img src="image_2x.jpg" srcset="image_2x.jpg 2x, image_1x.jpg 1x" alt="a cool image">

    1x represents 1x displays and 2x represents displays with twice the pixel density, like Apple's Retina display

  • Reacting to Image Width

    <img src="image_200.jpg" srcset="image_200.jpg 200w, image_100.jpg 100w" alt="a cool image">

    widthDescriptor is measured in pixels and must be an integer followed by a w.

sizes Syntax

sizes attribute to the image with a media query and a vw value.

  • <img  src="images/great_pic_800.jpg"
        sizes="(max-width: 400px) 100vw, (min-width: 401px) 50vw"
        srcset="images/great_pic_400.jpg 400w, images/great_pic_800.jpg 800w"
        alt="great picture">

    sizes consists of comma separated mediaQuery width pairs. sizes tells the browser early in the load process that the image will be displayed at some width when the mediaQuery is hit.

    In fact, if sizes is missing, the browser defaults sizes to 100vw, meaning that it expects the image will display at the full viewport width.

Picture

srcset/sizes ์†์„ฑ๋งŒ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋“ค, ์˜ˆ์ปจ๋Œ€ ์•„ํŠธ ๋””๋ ‰์…˜ ์ฒ˜๋ฆฌ๋‚˜ ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€ ํฌ๋งท ์ง€์› ๋“ฑ์€ <picture> ์—˜๋ฆฌ๋จผํŠธ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

<picture>
  <source media="(min-width: 40em)" 
          srcset="big.jpg 1x, big-hd.jpg 2x">
  <source srcset="small.jpg 1x, small-hd.jpg 2x">
  <img src="fallback.jpg" alt="">
</picture>

์—˜๋ฆฌ๋จผํŠธ๋Š” ํ•˜์œ„ ์š”์†Œ๋กœ <source> ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋‘์–ด ๊ฐ๊ฐ์˜ ์ด๋ฏธ์ง€ ์†Œ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์œ„ ์˜ˆ์ œ์—์„œ๋Š” ๋ฏธ๋””์–ด์ฟผ๋ฆฌ๋กœ min-width๊ฐ’์ด 40em ์ด์ƒ์ธ ๊ฒฝ์šฐ๋Š” big.jpg ํŒŒ์ผ์„, ๊ทธ ์ดํ•˜์ธ ๊ฒฝ์šฐ๋Š” small.jpg ํŒŒ์ผ์„ ๊ฐ๊ฐ ๋กœ๋“œํ•˜๊ฒŒ๋” ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ์ด ๋•Œ ๊ฐ๊ฐ์˜ <source> ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์—๋Š” srcset ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ€์ง‘๋„(์—ฌ๊ธฐ์„œ๋Š” 1x์™€ 2x๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, 2x๋Š” 196 DPI ์ด์ƒ์„ ์ผ์ปซ๋Š”๋‹ค)์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ฒŒ๋” ์„ค์ •ํ•˜๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์€ ์•ž์„œ์˜ <img> ํƒœ๊ทธ์— ๋ถ™์€ srcset ์†์„ฑ๊ณผ ๋™์ผํ•˜๋‹ค.

<picture>
  <source media="(min-width: 800px)"
          sizes="80vw"
          srcset="lighthouse-landscape-640.jpg 640w,
                  lighthouse-landscape-1280.jpg 1280w,
                  lighthouse-landscape-2560.jpg 2560w">
  <img src="lighthouse-160.jpg" alt="lighthouse"
       sizes="80vw"
       srcset="lighthouse-160.jpg 160w,
               lighthouse-320.jpg 320w,
               lighthouse-640.jpg 640w,
               lighthouse-1280.jpg 1280w">
</picture>

์ด <picture> ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์•ž์„œ <img> ํƒœ๊ทธ์— ๋ถ™์—ฌ ์‚ฌ์šฉํ–ˆ๋˜ srcset/sizes ๋ฐฉ์‹๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋‹ค์–‘ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด ์ง„๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„ํŠธ๋””๋ ‰์…˜(art direction) ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋ฏธ๋””์–ด์ฟผ๋ฆฌ๋กœ width๊ฐ’์ด 800px ์ด์ƒ์ธ ๊ฒฝ์šฐ(lighthouse-landscape)์™€ ๊ทธ ์ดํ•˜์ธ ๊ฒฝ์šฐ(lighthouse) ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ์ข์€ ํญ์˜ ํ™”๋ฉด์—์„œ๋Š” ๋„“์€ ํญ๊ณผ๋Š” ๋‹ค๋ฅธ ๋ชจ์–‘์˜ ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์—ฌ์ง์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

<picture>
  <source type="image/webp" srcset="images/butterfly.webp">
  <img src="images/butterfly.jpg" alt="a butterfly">
</picture>

<picture> ์—˜๋ฆฌ๋จผํŠธ๋Š” ๋‹ค์–‘ํ•œ ์ด๋ฏธ์ง€ ํ˜•์‹์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด webp๋ฅผ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์ธ ๊ฒฝ์šฐ jpg ํŒŒ์ผ์ด ์•„๋‹Œ webp ํŒŒ์ผ์„ ํ‘œ์‹œํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค.

PreviousUdacity - Responsive Web DesignNextHTML Basic

Last updated 4 years ago

Was this helpful?

์ด๋ฏธ์ง€ํฌ๊ธฐ์™€ ํƒ€์ž…์„ ๋‹ค์–‘ํ™”ํ•ด์ฃผ๋ฉฐ, ์ด๋ฏธ์ง€๋กœ๋”ฉ์„ ๋น ๋ฅด๊ฒŒ ํ•ด์ค€๋‹ค.

[์ฐธ์กฐํŽ˜์ด์ง€]

http://gruntjs.com/
https://imageoptim.com/mac
http://www.imagemagick.org/script/index.php
https://www.smashingmagazine.com/2013/04/build-fast-loading-mobile-website/
http://www.usefulparadigm.com/2014/11/03/processing-images-on-responsive-web/