กระโปรงมีรู!? เกิดมาเพิ่งเคยเห็น
ไอเท็มเด็ดที่ต่อไปผู้หญิงทุกคนต้องมี
TOGA ARCHIVES x H&M
ชุดนี้มาจาก TOGA แบรนด์สัญชาติญี่ปุ่น โดยดีไซเนอร์ Yasuko Furuta คอลแลปกับ H&M
คอลนี้นางมีแนวคิดว่า ผู้หญิงควรจะเผยผิวตัวเองออกมาให้เห็นได้อย่างสะดวกใจ
เพราะในวัฒนธรรมญี่ปุ่น ผู้หญิงส่วนใหญ่มักจะเขินที่จะโชว์แขน โชว์ขา ถ้าโชว์เยอะจะถูกมองว่าเสียมารยาทบ้าง โป๊ไปบ้าง
ลองมาเมืองไทยสิคะ โชว์เก่งงงงงง #ร้อนแหละ
คอลจะวางขายวันที่ 2 กย 2564 นี้
เด่วห้างเปิดแล้วจะไปส่องนะ
Credit : https://www2.hm.com/en_gb/life/culture/inside-h-m/under-the-loupe-toga-archives-x-hm.html
同時也有6部Youtube影片,追蹤數超過30萬的網紅iMoD Official,也在其Youtube影片中提到,Illustrator, InDesign, Lightroom Classic รองรับ Mac ชิป M1 แบบ Native แล้ว ซึ่ง Adobe เผยว่าแอปใน Creative Cloud สำหรับ Mac ชิป M1 เร็วขึ้นกว่าเดิมเฉล...
「loupe」的推薦目錄:
- 關於loupe 在 Facebook 的最佳解答
- 關於loupe 在 鳥科學先生-泌尿科顧芳瑜醫師 Facebook 的最讚貼文
- 關於loupe 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於loupe 在 iMoD Official Youtube 的最讚貼文
- 關於loupe 在 MPWeekly明周 Youtube 的最讚貼文
- 關於loupe 在 Yamamomo * やまもも Youtube 的最佳貼文
- 關於loupe 在 Loupe hk - Home | Facebook 的評價
- 關於loupe 在 wasmerio/loupe: Profiling tool for Rust code. - GitHub 的評價
loupe 在 鳥科學先生-泌尿科顧芳瑜醫師 Facebook 的最讚貼文
#鳥科學實驗室
如何測量自己的“精力”?
在門診的時候病人常常會問我
“我射出來的時候精液有點少,是不是 #不孕 了?”
但是其實 #精液的量不代表受孕的能力 ❌
真正能夠代表 #受孕力 的是【精蟲的數量和品質】
所以正規是需要來醫院開單檢驗的!
可是驗這個需要跑兩三次醫院
有一定距離時可能又過了檢測時效
不然就只能在廁所尻槍實在小小尷尬
如果能在家裡檢測不是更好嗎?
結果腦洞大開的公司TENGA (沒錯就是飛機杯的那個 TENGA Taiwan )
推出了 #在家自我觀察精蟲 的套件「TENGA-MENs LOUPE #男性精子檢測顯微 」
只要幾個步驟就可以用手機看到「許多的自己」囉XD
※ 建議尚未有受孕計畫、純以生活觀察心態進行🙏🏻
👉意旨若跟伴侶有懷孕的打算,還是要去醫院做檢查喔!
#身為泌尿科的鳥醫師我親自實驗 😳
在家實測發現其實還蠻有趣的
不過還是認真覺得只有 #比較極端的情況
例如:真的都沒有精蟲或是都不會游動
👆這樣的狀況可以利用檢測套件簡易觀察出來👆
其他的情形判斷目前還是需要到醫院來就診喔~
往後繼續滑有使用步驟與結果
很真實的拍攝,但該碼的都碼了XD
結論;疫情期間在家WFH如果太無聊,可以幫自己或男伴檢測是不是一個“精力充沛”的人喔😉
(私心認為 這東西很適合作為聖誕 #交換禮物 ?!)
歡迎分享你的檢測結果給我😆
#tenga #精蟲檢測 #男性不孕 #男性精力 #tengamensloupe #精蟲濃度自我檢測 #非醫療用途 #momo購物 #泌尿科
loupe 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] 可升級合約介紹 - 鑽石合約(EIP-2535 Diamond standard)
✍️ Kimi Wu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Photo by Evie S. on Unsplash
前言
可升級合約簡單來說是透過 proxy contract(代理合約)來達成,藉由代理合約去呼叫欲執行的合約,若要升級,則把代理合約中的指向的地址換為新的合約地址即可。而執行的方式則是透過 delegateCall,但 delegateCall 不會更動目標合約的狀態。所以要怎麼處理變數,就是一門學問了。
舉例來說,contract B 有個變數 uint256 x,初始值為 0, 而 function setX(uint256),可以改變 x 的值。proxy contract A 使用 delegatecall 呼叫 contract B 的 setX(10),交易結束後,contract B中的 x 依然還是 0。
OpenZeppelin 提出了三種實作方式,可以做到可升級合約,細節可參考 Proxy Patterns,而最終的實作選用了 Unstructured Storage的這個方式,這種方式對於開發較友善,開發時不需特別處理 state variables(不過升級時就需要特別注意了)。而這篇主要是介紹 Diamond standard,OpenZeppelin 的可升級合約就不多做介紹。
USDC V2 : Upgrading a multi-billion dollar ERC-20 token 詳細地介紹代理合約跟變數儲存之間的關係,不了解升級合約的原理,建議先看看。
鑽石合約
名詞介紹
diamond:合約本體,是一個代理合約,無商業邏輯
facet:延伸的合約(實際商業邏輯實作的合約)
loupe:也是一個 facet,負責查詢的功能。可查詢此 diamond所提供的 facet與facet所提供的函式
diamondCut:一組函式,用來管理(增加/取代/減少)此 diamond合約所支援的功能
Loupe
直接來看 loupe的介面,從宣告就能很清楚暸解 diamond合約的實作方式,loupe宣告了一個結構 Facet,Facet結構包含一個地址及 function selector 陣列,所以我們只需要記錄一個 Facet陣列就可以得知這個 diamond 合約有多少個延伸合約及所支援的功能(loupe只定義結構,而實際變數是存在diamon合約中的)。也就是 diamond合約中只記錄延伸合約的地址及其支援的 function selectors,及少數 diamond合約的管理邏輯,並無商業邏輯,因此可以外掛非常非常多的合約上去(就像一個Hub),也就可以突破一個合約只有24K的限制。
// A loupe is a small magnifying glass used to look at diamonds.interface IDiamondLoupe { struct Facet { address facetAddress; bytes4[] functionSelectors; } function facets() external view returns (Facet[] memory facets_); function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_); function facetAddresses() external view returns (address[] memory facetAddresses_); function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);}
DiamondCut
至於 facet在 diamond合約上的註冊或是修改,就由 diamondCut負責,從以下程式碼可以清楚瞭解其功能(EIP中有規範,每次改變都需要發送DiamondCut事件)
interface IDiamondCut { enum FacetCutAction {Add, Replace, Remove} // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } function diamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);}
Diamond合約
接下來就是最核心的部分 — diamond本體合約。以下是官方的範例,方法上跟 OpenZeppelin 一樣使用 fallback 函式跟 delegateCall 。
呼叫合約所不支援的函式,就會去執行 fallback 函式,fallback 函式中再透過 delegateCall 呼叫 facet 合約相對應的函式
fallback() external payable { address facet = selectorTofacet[msg.sig]; require(facet != address(0)); // Execute external function from facet using delegatecall and return any value. assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) switch result case 0 {revert(0, returndatasize())} default {return (0, returndatasize())} }}
主要的差異在於變數的處理,OpenZepplin 是針對單一合約設計的代理合約(也就是每個合約都有自己的代理合約),所以無法處理單一代理合約儲存多個合約的變數(state variables)的狀況(後有圖例)。先由官方的範例程式來了解是怎麼處理變數的
在官方的範例中,都是以更改合約 owner 為例子
首先看到 DimaondStorage這個結構,結構中的前面三個變數都是在維持 diamond合約的運作(同上面loupe的範例),最後一個變數 contractOwner就是我們商業邏輯中所需的變數。
接著看到 function diamondStorage(),取變數的方式就跟OpenZeppelin 儲存特定變數方式一樣(EIP-1967),是把變數存到一個遠方不會跟其他變數碰撞到的位置,在這裡就是從 DIMOND_STORAGE_POSITION 這個 storage slot 讀取。
在實作上就可以有 LibDiamond1 ,宣告DIMOND_STORAGE_POSITION1=keccak256("diamond.standard.diamond.storage1") ,負責處理另一組的變數。藉由這種方式讓每個 facet合約有屬於自己合約的變數, facet合約間就不會互相影響。而最下方的 setContractOwner 是實際使用的範例。
library LibDiamond {
bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage");
struct FacetAddressAndSelectorPosition { address facetAddress; uint16 selectorPosition; }
struct DiamondStorage { mapping(bytes4 => FacetAddressAndSelectorPosition) facetAddressAndSelectorPosition; bytes4[] selectors; mapping(bytes4 => bool) supportedInterfaces; // owner of the contract address contractOwner; }
function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } }
function setContractOwner(address _newOwner) internal { DiamondStorage storage ds = diamondStorage(); address previousOwner = ds.contractOwner; ds.contractOwner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); }
每個 library 處理了一組或多組變數的存取, facet 合約透過 library 對變數做操作。也就是把變數存在diamond主體合約,延伸的 facet合約只處理邏輯,是透過 library 去操作變數。
下面圖中清楚地解釋了 facet合約,function selectors 與變數之間的關係,從最左上這邊有個 facets 的 map,紀錄了哪個 selector 在哪個合約中,例如func1, func2是 FacetA的函式。左下角宣告了變數,每組變數的存取如同上述 library 的方式處理。
https://eips.ethereum.org/EIPS/eip-2535#diagrams
在 diamond的設計中,每個 facet合約都是獨立的,因此可以重複使用(跟library 的概念一樣)
https://eips.ethereum.org/EIPS/eip-2535#diagrams
小結
diamond合約使用不同的設計來達成合約的可升級性,藉由這種Hub方式可隨時擴充/移除功能,讓合約不再受限於24KB的限制,此外充分的模組化,讓每次升級的範圍可以很小。最後,因為跟library一樣只處理邏輯,並無狀態儲存,所以可以重複被不同的diamond合約所使用。
雖然又不少好處,也是有些缺點。首先,術語名詞太多,facet, diamondCut, loupe等等(其實還有好幾個,不過沒有介紹到那些部分,所以沒有寫出來)。開發上不直覺,把變數跟邏輯拆開,若要再加上合約之間的繼承關係,容易搞混,不易維護。最後,gas的花費,在函式的讀取、呼叫,變數的存取、傳遞都會有不少的額外支出。Trail of Bits 專欄中有點出更多的缺陷 Good idea, bad design: How the Diamond standard falls short,不過作者也有反擊 Addressing Josselin Feist’s Concern’s of EIP-2535 Diamond Standard,有興趣的讀者可以自行看看、比較。
為了模組化及彈性,diamond合約在設計上有點太複雜(over engineering),會造成可讀性越差(這點也是Vyper誕生的原因之一),而可讀性越差就越容易產生bug、也越不容易抓到bug,而在defi專案中,一個小小的bug通常代表著大筆金額的損失 😱😱😱。
雖然如此,筆者還是覺得很酷,有些設計的思維仍然可以使用在自己的專案
ref:
EIP 2535
Diamond 實作
Addressing Josselin Feist’s Concern’s of EIP-2535 Diamond Standard
OpenZeppelin upgradeable contract
可升級合約介紹 - 鑽石合約(EIP-2535 Diamond standard) was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
loupe 在 iMoD Official Youtube 的最讚貼文
Illustrator, InDesign, Lightroom Classic รองรับ Mac ชิป M1 แบบ Native แล้ว ซึ่ง Adobe เผยว่าแอปใน Creative Cloud สำหรับ Mac ชิป M1 เร็วขึ้นกว่าเดิมเฉลี่ย 80% เมื่อเทียบกับแอปสำหรับ Mac ชิป Intel
? สำหรับประสิทธิภาพที่เพิ่มขึ้นในแอปสำหรับ Mac ชิป M1 มีดังนี้
- Illustrator : ประสิทธิภาพสูงขึ้น 65%, เปิดแอป สร้างเอกสารเร็วขึ้น 4 เท่า, การเลื่อนการใช้งาน แก้ไข Vector ซับซ้อน ประสิทธิภาพสูงขึ้น 390%, เปิดไฟล์ สร้างไฟล์ ที่มี่ artboard ซับซ้อน 31 งาน เร็วขึ้น 119%
- InDesign : ประสิทธิภาพสูงขึ้น 59%, เปิดไฟล์งานที่กราฟิกหนัก ๆ เร็วขึ้น 185%, การเลื่อนการใช้งาน หน้าที่มีข้อความหนัก ๆ เช่น มี 100 หน้า เร็วขึ้น 78%
- Lightroom Classic : ประสิทธิภาพการใช้งานสูงขึ้น 2 เท่า ในการเปิดแอป import, export, จัดการรูปภาพใน loupe view, ฟีเจอร์ Super Resolution เร็วกว่าเดิม 3 เท่า, ปรับแต่งหลายภาพพร้อมกันเร็วขึ้น 4 เท่า
Lightroom Classic อัปเดตได้แล้วส่วน Illustrator และ InDesign คาดว่าจะปล่อยให้อัปเดตเร็ว ๆ นี้
อ่านเพิ่มเติมที่ https://www.iphonemod.net/illustrator-indesign-lightroom-classic-support-native-mac-m1.html
#M1 #Adobe #Illustrator #InDesign #iMoD
loupe 在 MPWeekly明周 Youtube 的最讚貼文
在機器當道的現代社會,手工製為何仍重要?這是個老掉牙的問題,卻仍然是不少設計師和工藝師對自身的質問,珠寶設計培育空間Loupe的駐場設計師陳詠朗是其中之一。兼具工藝師和設計師雙重身份,他笑言經常自己跟自己爭辯,而要理順這矛盾,靠的還是一對手,不斷嘗試實踐腦內想法,一步步接近理想中的狀態。
#Loupe #周大福 #PMQ #珠寶工藝 #傳統工藝 #珠寶設計
-----------------------------------------------------------------------------------------
明周娛樂 https://www.mpweekly.com/entertainment/
https://www.instagram.com/entertainment.mpw
明周文化 https://www.mpweekly.com/culture/
想食明周 https://www.facebook.com/foodiempw/
INNER https://www.facebook.com/innermpw/
https://www.instagram.com/in__ner
loupe 在 Yamamomo * やまもも Youtube 的最佳貼文
今回はめちゃめちゃアクティブな、予定をたくさん詰め込んだ休みの日の過ごし方です◎名探偵コナンの映画はどうしてこうも毎回面白いのだろう。来年も絶対見に行こ。
#休日の過ごし方 #日常 #一人暮らし
美容師の竹下さんは長年お世話になっていて、いつもアバウトな感じで髪の毛のイメージを伝えても期待以上に仕上げてくれるプロ中のプロです。ハードル上げまっくっておきます。(笑)ほんと素敵な美容室だああああ〜〜〜〜
💇♀️Timere
兵庫県神戸市中央区北長狭通3-12-7 Loupe Plus 2F
七輪は大学時代、約4年間お世話になったバイト先です。本当にここで働いてなかったら今の私はいないってくらいたくさん成長させてもらえたバイト先でした。店長の木村さんにはお世話になりまくりでした。厳しい経験も楽しい経験も、本当にいろいろ経験させてもらったなあ〜〜〜と少し懐かしくなりました。(笑)どこの焼肉屋さんに行ってもやっぱり私の中でいちばんの焼肉屋さんはここですね!ほんと美味しいよ!!!!
🍖炭火焼肉七輪 大蔵谷店16:30~23:00(L.O.22:30)
兵庫県神戸市西区伊川谷町有瀬838-11
というわけで、一日密着の中にお世話になっている方々を盛り込んでみました☻たくさんの出会いがあっていつも周りに支えられてるなあと再認識した日でした!!!
そして、メインチャンネル7万人突破、サブチャンネル1万人突破もみんなのおかげなのです。一人じゃYouTubeで活動はできません。みんなが応援してくれているから私はYouTubeで活動できております。支えてもらってしかないんだなあ。本当に本当にありがとう(;;)もっともっとみんなをハッピーにできちゃうような動画をたくさん作っていきたいなあと思います!!!いつも本当に見てくれてありがとう!コメントくれてありがとう!絡んでくれてありがとう!!!こんなやまももだけど、これからも仲良くしてね🍑🌈
・music
→Feel About It - Cacti
--------------------------
→ 火水金土日 19:00 動画投稿中!!
やまもものサブチャンネルもちょこちょこ更新中!
やまもものサ部(部員募集中)⇒ https://www.youtube.com/channel/UCk8akFcOU--v1fYnWXf2Gmg
(チャンネル登録よろしくお願いしまあああす🙇🏻♀️🌈💗)
今日も見てくれてありがとう(;;)❤︎
みんなからの応援のおかげで、毎日ハッピーな気持ちをいただいております。本当にありがとう、たっくさんの感謝です(;;)
❤︎ My Dream ❤︎
・「やまももの動画見ると元気になる!」と、たくさんの方に言ってもらえるようになること☻♡。
・”チャンネル登録者さん100万人!!”
・たっくさんのハッピーをみんなと共有したい!!
みんなが日常で感じた”ハッピー”を、コメントで教えてくれると嬉しいなぁ ☻❤︎ (レッツ・シェアハピ!)
👭👬みんなにたっくさんの幸せがありますように◎
--------------------------
🍑 おすすめ動画 🍑
・216円で部屋にブランコ作った動画(初投稿)
https://youtu.be/dT7il0YQBBo
・やまももの夢🌈(どんなクリエイターになりたいの?)
https://youtu.be/898UoQ8mwIM
・モーニングルーティン〜Morning Routine〜🌞 ❤︎
https://youtu.be/OlSYQpU9HPs
・ナイトルーティン〜Night Routine〜🌜❤︎
https://youtu.be/PtWrsAwOgSs
・生活感しかない部屋のルームツアー〜Room tour〜
https://youtu.be/WiiD2Sm2Wrg
・インドア派のリアルな休日の過ごし方(干物)
https://youtu.be/pmzyCIDHd4M
・大きいトマト一口で食べてみた🍅
https://youtu.be/6cRKjoGv8V8
・やまももの自己紹介
https://youtu.be/1DG0NHeR3N4
・よく着ているお洋服たち
"GRL" https://youtu.be/skH90LsTLyE
"ZOZOTOWN" https://youtu.be/4wKPSzyGhIc
・[2019Winter]毎日メイク💄
https://youtu.be/CiCISNzZWsg
・コスメ収納ご紹介
https://youtu.be/DM1qxgh31U0
・おばあちゃんにドッキリ仕掛けてみた
https://youtu.be/u1SHehe07CY
・絶対に笑ってはいけない幼少期😂
https://youtu.be/8abvvy_0vyI
・「実写版ぼくのなつやすみ」
【前編】https://youtu.be/rS7X9wuC0Hk
【後編】https://youtu.be/aZUtQV6kNQw
・顔面ストッキング状態で可愛くなれる方法探してみた
https://youtu.be/vOKZy3X7pMg
・【ダイエット】健康的に痩せたい私のダイエットご飯
https://youtu.be/I7ocvr6PZiw
--------------------------
🌈チャンネル登録はこちら🌈
→https://www.youtube.com/channel/UCPBH2bIHXIijK8BwumQyRiQ
❤︎ Twitter
https://twitter.com/yamamomoda4
❤︎ Instagram
https://www.instagram.com/yamamomoda4
--------------------------
[ 提供ありがとうございます ☻]
DOVA SYNDROME:https://dova-s.jp/
Epidemic Sound:https://player.epidemicsound.com/
Music is VFR:http://musicisvfr.com/free/se/motion-pop03.html
PIXTA:https://pixta.jp
--------------------------
loupe 在 wasmerio/loupe: Profiling tool for Rust code. - GitHub 的推薦與評價
loupe is a French word to express magnifying glass, and can be pronounced exactly like loop. The bird above is a Fauvette à lunettes (Curruca conspicillata, ... ... <看更多>
loupe 在 Loupe hk - Home | Facebook 的推薦與評價
Loupe JMA jewellery exhibition. 有珠寶,當然最重要有精湛工藝世界技能大賽優秀獎選手也會到埸與大家一起研究. 25-28/11/2021 會展1A 1A D27-29. ... <看更多>