FASHION COLLECTION – THẾ NÀO MỚI LÀ MỘT BỘ SƯU TẬP THỜI TRANG HOÀN CHỈNH?
(Tất nhiên vẫn nằm ở phân khúc thời trang đường phố)
Cái từ “Collection” / “Bộ sưu tập” là một khái niệm mình đang thấy hơi lệch lạc trong cách sử dụng đến từ cả hai phía – Phía thương hiệu và phía khách hàng. Local brands Việt Nam phát triển mạnh, là một điều đáng mừng. Nhưng sự chuyên nghiệp hóa thương hiệu không phải là 1 điều mà mình có thể cảm nhận ở số đông mà chỉ nằm ở thiểu số. Và điều đó đến từ việc mà các local brands tung ra thứ mà chúng ta sẽ gọi là “Collection”. Còn ở về phía khách hàng – cũng trẻ người non dạ như các local brands vậy – cũng không hiểu về từ “Collection” mà không có một yêu cầu cao hơn với thương hiệu mà sử dụng từ này một cách vô tội vạ. Mức kì vọng của khách hàng trẻ về 1 fashion collection của local brands còn thấp – điều này vẫn có thể châm chước trong giai đoạn này, nhưng sẽ dẫn đến một khoảng trống lớn ở thì tương lai. Còn vì sao thì mình sẽ giải thích sau đây.
/Fashion Collection/ : Một bộ sưu tập thời trang.
Đây chính được xem như là tinh túy, là linh hồn, là khuôn mặt của các nhà thiết kế thời trang trong mỗi season/mùa ra mắt. Như các bạn đã biết thông qua các bài viết trước của mình. Thông thường sẽ có 02 mùa chính là Xuân/Hạ (Spring/Summer) và Thu/Đông (Fall/Winter) – nhưng sau này do sức ép của Fast Fashion và thói quen mua sắm vô tội vạ của người tiêu dùng (Consumerism) thì có thêm nhiều mùa phụ, các mini-drops khác. Mình sẽ thêm 02 mùa cũng chính nữa là Resort và Pre-Fall. Collection là công trình và là lựa chọn của các fashion designer để phản ánh khả năng thiết kế của họ, tầm nhìn về thời trang và các xu hướng cho nguyên một season sắp tới. Cho nên, thông qua collection mà chúng ta hãy theo dõi qua báo chí – hẳn ai học ngành thời trang cũng dễ dàng đoán được mùa sắp tới xu hướng về màu sắc, thiết kế, cut/line/tỉ lệ như thế nào. Và số lượng sản phẩm hay product line nằm ở trong con số từ 30 items cho đến 120 items, tạo ra được ít nhất từ 10-15 looks pha trộn lẫn nhau.
Trong show diễn cuối cùng của mình, “The Final Couture Show” vào mùa Xuân 2020 – Huyền thoại Jean Paul Gaultier đã trình làng cho công chúng sự mãnh liệt trong thời trang của ông dù đây là lời tạm biệt cuối cùng khi ông quyết định nghỉ ngơi sau 50 năm cống hiến. 200 looks – mình xin nhấn mạnh là 200 looks – đồng nghĩa với 200 trang phục khác nhau về cách phối đồ. Với mức trung bình là 4 items cần thiết cho 1 look (Quần, áo, outerwear và giày) thì con số là khoảng 800 items. Do con số quá lớn nên mình sẽ cho tỉ lệ trùng lặp khoảng 30% thì số items hiện diện ~ 560 items, vẫn là 1 thứ gì đó quá khủng khiếp với số lượng mình vừa nêu trên.
Vậy những bước đầu tiên để tạo nên 1 Fashion Collection là gì?
1. FOR WHAT?
Một nhà fashion designer không chỉ đơn thuần là chỉ chăm chăm vào việc thiết kế. Đây là dàn xương sống quyết định hướng đi tránh việc lệch lạc sau này. Đó là phải xác định được collection sắp tới nằm ở mùa nào. Mùa Xuân/Hè sẽ hoàn toàn khác mùa Thu/Đông. Giới tính mà collection hướng tới là gì? (Nam, Nữ, Unisex, Trẻ em..). Product Type – Loại mẫu sản phẩm, nó là haute couture, hay là casual, sportwear, streetwear hay là jeans, lingerie blah bloh các thứ. Và cuối cùng quan trọng nhất là Target Market, Target Customer (Thị trường và khách hàng mục tiêu). Việc xác định rõ ràng hướng mà mình nhắm tới cho collection vì đơn giản bạn làm đồ không phải để cho các bạn mặc mà là bán cho người khác. Và bạn không thể thành công trong việc bán cho người khác nếu bạn không xác định rõ đối tượng và hiểu họ muốn gì, mặc gì và mức chi tiêu của họ ra sao.
2. COLOUR/MÀU SẮC.
Với những nét xương sống trên thì bức tranh “Collection” của bạn cần phải có màu sắc. Bạn đừng tưởng là những bộ sưu tập kiểu Hedi Slimane SLP Trắng đen là không cần màu sắc nhé. Nồ, có bảng màu cả đấy. Bức tranh có hồn chỉ khi màu sắc được áp dụng vào – theo bất kì phương pháp ứng dụng nào đó. Tại sao phải quyết định bảng màu ứng dụng cho collection ngay tại đây vì color palette này sẽ cho thấy màu chính, cốt lõi khi người khác nhìn vào bộ sưu tập của bạn. Một bức tranh đẹp khi có bố cục màu hoàn chỉnh và cân đối. Nhiều người nghĩ rằng càng nhiều màu thì càng đẹp nhưng không, nó chỉ khiến bức tranh trở nên rối loạn hơn mà thôi. Ngay cả Rei Kawakubo, tắc kè bông từ Comme Des Garcon mà bạn nghĩ là sử dụng rất nhiều màu sắc thì bà cũng chỉ chọn 1 số lượng màu nhất định, tăng – hạ tone dựa trên nền tảng đó.
3. MOODBOARD:
Moodboard là gì.. Hmm, mình không phải dân chuyên nhưng theo những gì mà mình học hỏi từ những anh chị bạn bè học trong ngành thiết kế thời trang thì moodboard là 1 “bảng” bao gồm các references, những tấm hình đồng điệu về màu sắc đã quyết định trước đó – tập trung về chất liệu (Fabrics, material). Là thứ sẽ thể hiện trên bề mặt vải, textiles và maybe là lookbook concept sau này. Cement, Wood, Road, Descontruction…etc.
4. TECHNICAL DRAWING:
Trong bước này, dựa vào toàn bộ 3 bước phía trước thì các fashion desingers sẽ bắt đầu mường tượng và “phổ” những suy nghĩ đầu tiên của họ về collection. Có thể là những bản sketch sơ khai, sau đó phát triển dần dần thành các bản vẽ vector hoàn chỉnh, những silhouettes cụ thể. Bên cạnh đó, fashion designer cũng mường tượng được việc ứng dụng chất liệu nào lên sản phẩm nào và sao cho phù hợp với màu sắc và season quyết định.
5. PLAN:
Sau khi đã hoàn thành được bản vẽ kĩ thuật thì việc tiếp theo đó là kế hoạch sản xuất cho từng sản phẩm cụ thể. Fashion designer hoặc ekip sẽ đưa cho mỗi sản phẩm 1 code nhất định, màu sắc – bảng màu và chất liệu “bắt buộc” phải đi kèm và cái tên sản xuất. Việc này khá quan trọng vì nó sẽ quyết định deadline của toàn bộ collection. Nghĩa là có những món đồ đòi hỏi quá trình sản xuất rất lâu và có những món đồ sản xuất trong thời gian ngắn được. Để đi tới hướng cuối cùng là ngày ra collection (Deadline) thì việc plan timeline hoàn chỉnh với các thông số cụ thể sẽ giúp các fashion designer ấn định được thời gian hoàn chỉnh trong quá trình thiết kế.
6. MODEL ILLUSTRATIONS:
Bạn đã có bản vẽ kĩ thuật, bạn đã xác định rõ product line của mình. Thì giờ đây, các fashion designer phải tưởng tượng ra việc nó được mặc lên trên người như thế nào, cách phối đồ ra sao. Và khi di chuyển thì items đó sẽ trông như thế nào, posing của model. Đây là bước đầu tiên trong việc xây dựng looks và liên quan mật thiết đến concept lookbook và hình dáng của runway model sau này.
7. TECHNICAL SHEET:
Đây là bước cuối cùng, tổng hợp lại toàn bộ tất cả mọi thứ phía trên. Bảng kĩ thuật sẽ bao gồm bảng vẽ, kế hoạch sản xuất, kích thước, đối tượng người mặc, chất liệu vải vv.vv
Rồi – Sau khi đọc những bước trên các bạn đã thấy một quy trình căn bản nhất của việc tạo ra 1 collection là như thế nào chưa. Đó chỉ là “Sơ Khai” nhất từ 1 thằng không học Thời trang như mình nhé, vào trong nó sẽ phức tạp hơn rất nhiều. \
Vậy, kính thưa các “fashion designer 4.0”. Kính thưa “những kẻ vỗ ngực tự xưng là Đang làm vì thời trang, vì giới trẻ”. Các bước bên trên, các bạn làm được bao nhiêu bước rồi…?
TRỞ LẠI THỊ TRƯỜNG VIETNAM:
Đây chính là “Thiếu sót” lớn đến từ hai phía mà mình đã đề cập đầu bài và danh xưng “Collection”. Để mà xứng đáng gọi là “Collection” tại thị trường Việt Nam hiện tại đối với các thương hiệu thì chắc mình đếm trên đầu ngón tay các local brands có thể “chuyên nghiệp” vấn đề này.
Các bạn nghĩ việc bung ra một drops đồ khoảng mấy cái graphic tees, hoodie hay jacket gì đó rồi gọi nó là “Collection”. Có brands còn tung ra 1 sản phẩm chỉ là accessories và duy nhất 1 items và gọi đó là “Collection?”. Với số lượng items như vậy thì cùng lắm chúng ta sẽ chỉ có từ 2-3 looks và các bạn gọi đó là “Bộ sưu tập?”. Mình sẽ gọi đó là một Bộ sưu tập nghèo nàn. Không đụng chạm các bạn vì nó sẽ có hai hướng, nghèo nàn theo nghĩa đen vì các bạn mới khởi nghiệp chưa có tài chính vững mạnh. Và một dạng nghèo nàn khác – đó là nghèo nàn ý tưởng.
Tiếp theo là màu sắc và Moodboard. Việc không chọn màu sắc chỉnh chu và liên quan trong 1 thể thống nhất theo từng bước một đã tạo ra những sản phẩm, những “Collection” loạn sắc và không liên quan theo 1 logic có thể cảm nhận được. Bạn đừng biện minh cho việc là “Thời trang không rào cản”. Đúng, bạn có thể sáng tạo nhưng “Tự do trong Không Tự do” “Tưởng là vô định nhưng cực kì sắp xếp” là thứ mà Rei Kawakubo hay Yohji yamamoto cực kì thành công với nó.
Những chiếc áo in, những chiếc quần vô định – màu sắc lệch lạc thì người bị “hại” ở đây nhất chính là các local brands vì thị trường/người tiêu dùng không “rõ” rằng thương hiệu đang muốn làm gì, truyền tải thông điệp gì. Sự loạn sắc sau này sẽ khiến các bạn bị hụt hơi trong đường dài làm thời trang mà thôi và chắc hẳn tới đây rất nhiều người hiểu vấn đề mình đang nói.
Moodboard – Cá chắc rằng nói tới moodboard thì đa phần các local brands sẽ nghĩ tới việc moodboard chụp lookbook/clip mà không nghĩ tới việc nền tảng đầu tiên đó là xây dựng concept và lựa chọn chất liệu/material để phù hợp với “Collection” thống nhất. Nhiều khi hiệu quả nhất lại đến từ điều giản đơn nhất, đó là chất liệu và xử lí kĩ thuật bề mặt. Vì suy cho cùng, thị trường bây giờ thông minh hơn nên trải nghiệm khách hàng vẫn là thứ gì đó quý giá cho mục đích sinh tồn và khẳng định thương hiệu lâu dài.
Để gọi “Collection” là một quá trình dài và đòi hỏi công sức, tiền tài rất nhiều. Cho nên mình không oán trách hay suy xét các bạn làm fashion hiện tại ở mảng streetwear đâu. Những khó khăn các bạn đang gặp, mình hiểu. Nhưng nếu các bạn thực sự muốn theo đuổi và chuyên tâm nó, thì mọi thứ phải chuyên nghiệp dần dần lên. Có thể bây giờ bạn đang làm kiếm tiền nhưng khi ổn định tài chính rồi, bạn có muốn làm 1 “Collection” để đời hay không.
Còn “Collection” như bây giờ ư. Không!
Ủng hộ cho Bi tại:
Paypal: https://www.paypal.me/triminhle0808
Banking account: Vietinbank
STK: 104005424124 - Chủ tài khoản: Lê Minh Trí.
momo: https://nhantien.momo.vn/triminhle
target vector 在 Lee Hsien Loong Facebook 的精選貼文
Something was abuzz yesterday! Visited the National Environment Agency (NEA) - Environmental Health Institute (EHI) Mosquito Production Facility. When fighting a mosquito-borne disease like dengue, one target we must attack is the vector itself. Nonetheless, all of us must do our part to reduce the mosquito population in Singapore, such as by getting rid of stagnant water in our homes and surroundings. – LHL #ProjectWolbachiaSG
(PMO Video by Alex Qiu)
target vector 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] Reason Why You Should Use EIP1167 Proxy Contract. (With Tutorial)
✍️ Ping Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
EIP1167 minimal proxy contract is a standardized, gas-efficient way to deploy a bunch of contract clones from a factory.
1. Who may consider using EIP1167
For some DApp that are creating clones of a contract for its users, a “factory pattern” is usually introduced. Users simply interact with the factory to get a copy. For example, Gnosis Multisig Wallet has a factory. So, instead of copy-and-paste the source code to Remix, compile, key in some parameters, and deploy it by yourself, you can just ask the factory to create a wallet for you since the contract code has already been on-chain.
The problem is: we need standalone contract instances for each user, but then we’ll have many copies of the same bytecode on the blockchain, which seems redundant. Take multisig wallet as an example, different multisig wallet instances have separate addresses to receive assets and store the wallet’s owners’ addresses, but they can share the same program logic by referring to the same library. We call them ‘proxy contracts’.
One of the most famous proxy contract users is Uniswap. It also has a factory pattern to create exchanges for each ERC20 tokens. Different from Gnosis Multisig, Uniswap only has one exchange instance that contains full bytecode as the program logic, and the remainders are all proxies. So, when you go to Etherscan to check out the code, you’ll see a short bytecode, which is unlikely an implementation of an exchange.
0x3660006000376110006000366000732157a7894439191e520825fe9399ab8655e0f7085af41558576110006000f3
What it does is blindly relay every incoming transaction to the reference contract 0x2157a7894439191e520825fe9399ab8655e0f708by delegatecall.
Every proxy is a 100% replica of that contract but serving for different tokens.
The length of the creation code of Uniswap exchange implementation is 12468 bytes. A proxy contract, however, has only 46 bytes, which is much more gas efficient. So, if your DApp is in a scenario of creating copies of a contract, no matter for each user, each token, or what else, you may consider using proxy contracts to save gas.
2. Why use EIP1167
According to the proposal, EIP is a “minimal proxy contract”. It is currently the known shortest(in bytecode) and lowest gas consumption overhead implementation of proxy contract. Though most ERCs are protocols or interfaces, EIP1167 is the “best practice” of a proxy contract. It uses some EVM black magic to optimize performance.
EIP1167 not only minimizes length, but it is also literally a “minimal” proxy that does nothing but proxying. It minimizes trust. Unlike other upgradable proxy contracts that rely on the honesty of their administrator (who can change the implementation), address in EIP1167 is hardcoded in bytecode and remain unchangeable.
That brings convenience to the community.
Etherscan automatically displays code for EIP1167 proxies.
When you see an EIP1167 proxy, you can definitely regard it as the contract that it points to. For instance, if Etherscan finds a contract meets the format of EIP1167, and the reference implementation’s code has been published, it will automatically use that code for the proxy contract. Unfortunately, non-standard EIP1167 proxies like Uniswap will not benefit from this kind of network effect.
3. How to upgrade a contract to EIP1167 compatible
*Please read all the steps before use, otherwise there might have problems.
A. Build a clone factory
For Vyper, there’s a function create_with_code_of(address)that creates a proxy and returns its address. For Solidity, you may find a reference implementation here.
function createClone(address target) internal returns (address result){ bytes20 targetBytes = bytes20(target); assembly { let clone := mload(0x40) mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(clone, 0x14), targetBytes) mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) result := create(0, clone, 0x37) }}
You can either deploy the implementation contract first or deploy it with the factory’s constructor. I’ll suggest the former, so you can optimize it with higher runs.
contract WalletFactory is CloneFactory { address Template = "0xc0ffee"; function createWallet() external returns (address newWallet) { newWallet = createClone(Template); }}
B. Replace constructor with initializer
When it comes to a contract, there are two kinds of code: creation code and runtime code. Runtime code is the actual business logic stored in the contract’s code slot. Creation code, on the other hand, is runtime code plus an initialization process. When you compile a solidity source code, the output bytecode you get is creation code. And the permanent bytecode you can find on the blockchain is runtime code.
For EIP1167 proxies, we say it ‘clones’ a contract. It actually clones a contract’s runtime code. But if the contract that it is cloning has a constructor, the clone is not 100% precise. So, we need to slightly modify our implementation contract. Replace the constructor with an ‘initializer’, which is part of the permanent code but can only be called once.
// constructorconstructor(address _owner) external { owner = _owner;}// initializerfunction set(address _owner) external { require(owner == address(0)); owner = _owner;}
Mind that initializer is not a constructor, so theoretically it can be called multiple times. You need to maintain the edge case by yourself. Take the code above as an example, when the contract is initialized, the owner must never be set to 0, or anyone can modify it.
C. Don’t assign value outside a function
As mentioned, a creation code contains runtime code and initialization process. A so-called “initialization process” is not only a constructor but also all the variable assignments outside a function. If an EIP1167 proxy points to a contract that assigns value outside a function, it will again have different behavior. We need to remove them.
There are two approaches to solve this problem. The first one is to turn all the variables that need to be assigned to constant. By doing so, they are no longer a variable written in the contract’s storage, but a constant value that hardcoded everywhere it is used.
bytes32 public constant symbol = "4441490000000000000000000000000000000000000000000000000000000000";uint256 public constant decimals = 18;
Second, if you really want to assign a non-constant variable while initializing, then just add it to the initializer.
mapping(address => bool) public isOwner;uint public dailyWithdrawLimit;uint public signaturesRequired;
function set(address[] _owner, uint limit, uint required) external { require(dailyWithdrawLimit == 0 && signaturesRequired == 0); dailyWithdrawLimit = limit; signaturesRequired = required; //DO SOMETHING ELSE}
Our ultimate goal is to eliminate the difference between runtime code and creation code, so EIP1167 proxy can 100% imitate its implementation.
D. Put them all together
A proxy contract pattern splits the deployment process into two. But the factory can combine two steps into one, so users won’t feel different.
contract multisigWallet { //wallet interfaces function set(address[] owners, uint required, uint limit) external;}contract walletFactory is cloneFactory { address constant template = "0xdeadbeef"; function create(address[] owners, uint required, uint limit) external returns (address) { address wallet = createClone(template); multisigWallet(wallet).set(owners, required, limit); return wallet; }}
Since both the factory and the clone/proxy has exactly the same interface, no modification is required for all the existing DApp, webpage, and tools, just enjoy the benefit of proxy contracts!
4. Drawbacks
Though proxy contract can lower the storage fee of deploying multiple clones, it will slightly increase the gas cost of each operation in the future due to the usage of delegatecall. So, if the contract is not so long(in bytes), and you expect it’ll be called millions of times, it’ll eventually be more efficient to not use EIP1167 proxies.
In addition, proxy pattern also introduces a different attack vector to the system. For EIP1167 proxies, trust is minimized since the address they point to is hardcoded in bytecode. But, if the reference contract is not permanent, some problems may happen.
You might ever hear of parity multisig wallet hack. There are multiple proxies(not EIP1167) that refer to the same implementation. However, the wallet has a self-destruct function, which empties both the storage and the code of a contract. Unfortunately, there was a bug in Parity wallet’s access control and someone accidentally gained the ownership of the original implementation. That did not directly steal assets from other parity wallets, but then the hacker deleted the original implementation, making all the remaining wallets a shell without functionality, and lock assets in it forever.
https://cointelegraph.com/news/parity-multisig-wallet-hacked-or-how-come
Conclusion
In brief, the proxy factory pattern helps you to deploy a bunch of contract clones with a considerably lower gas cost. EIP1167 defines a bytecode format standard for minimal proxy and it is supported by Etherscan.
To upgrade a contract to EIP1167 compatible, you have to remove both constructor and variable assignment outside a function. So that runtime code will contain all business logic that proxies may need.
Here’s a use case of EIP1167 proxy contract: create adapters for ERC1155 tokens to support ERC20 interface.
pelith/erc-1155-adapter
References
https://eips.ethereum.org/EIPS/eip-1167
https://blog.openzeppelin.com/on-the-parity-wallet-multisig-hack-405a8c12e8f7/
Donation:
pingchen.eth
0xc1F9BB72216E5ecDc97e248F65E14df1fE46600a
Reason Why You Should Use EIP1167 Proxy Contract. (With Tutorial) was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌