在面對性侵案件時,「不責備受害者」是大家努力推動的目標。而「女性衣著和性侵無關」,似乎也已成了政治正確的說法。
但是,若單從科學證據的角度來看,過去的研究中到底有沒有發現「女性衣著和性侵被害」之間的相關性呢?(在熟人性侵與權力性侵案例中,衣著可能關係不大,但是在陌生人隨機性侵案例中,衣著也仍然沒有影響嗎?)
稍微搜索文獻之後,發現證據確實很少,但並不是沒有,比方說這一篇研究就發現,女性受到性侵害的其中一個相關因子就是「衣著」:
Synovitz LB, Byrne TJ. (1998) Antecedents of sexual victimization: factors discriminating victims from nonvictims. J Am Coll Health. 46(4):151-8.
原文引用: "The variables found to be related to women's being sexually victimized were (a) number of different lifetime sexual partners, (b) provocative dress, and (c) alcohol use."
還有以下這一篇更是讓人跌破眼鏡,研究竟然發現男性可以透過女性的一些動作與外表,來判斷女性的「被動」或「服從」程度,而「穿著」就是可以用來判斷「被動」或「服從」程度的一個關鍵:有較高的「被動」和「服從」傾向的女性,通常會穿得比較保守。
因此有學者推論,歹徒如果看穿這一點,反而會使得這些穿著保守的女性成為下手目標。相反的,穿著暴露性感的女性,則會被視為「不順從」而成為反指標,反而較不易成為性侵目標。
Theresa M. Beiner, Sexy Dressing Revisited: Does Target Dress Play A Part in Sexual Harassment Cases?, 14 Duke J. Gender L. & Pol'y 125 (2007).
PDF: https://scholarship.law.duke.edu/cgi/viewcontent.cgi?article=1109&context=djglp
原文引用:"While people perceive dress to have an impact on who is assaulted, studies of rapists suggest that victim attire is not a significant factor. Instead, rapists look for signs of passiveness and submissiveness, which, studies suggest, are more likely to coincide with more body-concealing clothing.(140) In a study to test whether males could determine whether women were high or low in passiveness and submissiveness, Richards and her colleagues found that men, using only nonverbal appearance cues, could accurately assess which women were passive and submissive versus those who were dominant and assertive.(141) Clothing was one of the key cues: “Those females high in passivity and submissiveness (i.e., those at greatest risk for victimization) wore noticeably more body-concealing clothing (i.e., high necklines, long pants and sleeves, multiple layers).” This suggests that men equate body-concealing clothing with passive and submissive qualities, which are qualities that rapists look for in victims. Thus, those who wore provocative clothes would not be viewed as passive or submissive, and would be less likely to be victims of assault."
References:
140. Chen Shen, Study: From Attribution and Thought-Process Theory to Rape-Shield Laws: The Meanings of Victim’s Appearance in Rape Trials, 5 J. L. & FAM. STUD. 435, 447 (2003); Alinor C. Sterling, Undressing the Victim: The Intersection of Evidentiary and Semiotic Meanings of Women’s Clothing in Rape Trials, 7 YALE J.L. & FEMINISM 87, 104–06 (1995); DUNCAN KENNEDY, SEXY DRESSING ETC. (1993); Gary D. Lafree, Barbara F. Reskin & Christy A. Visher, Jurors’ Responses to Victims’ Behavior and Legal Issues in Sexual Assault Trials, 32 SOC.PROBS. 389, 401 (1985) (study of jurors in rape trials noting that victim history often finds its way into rape trials in spite of rape shield laws).
141. Lynne Richards, A Theoretical Analysis of Nonverbal Communication and Victim Selection for Sexual Assaults, 9 CLOTHING & TEXTILES RES. J. 55, 59–60 (Summer 1991) (discussing Lynne Richards et al., Perceptions of Submissiveness: Implications for Victimization, 125 J.PSYCH. 407 (1991)).
臆測:
(1) 雖然統計上很少發現「女性衣著和性侵被害」兩者的顯著相關,但是這似乎有可能是因為臨時起意的性侵案件占全部性侵案件的比例太小,導致樣本被稀釋而無法檢視「女性衣著和性侵被害」兩者的相關性?
(2) 如果男性可以從女性穿著推測出女性的個性,那性感衣著反而會成為反指標,使得穿著保守的女性更容易變成目標,如此一來,「女性性感衣著和性侵被害機率」兩者當然不會有正相關。
結論:兩者關係仍待驗證,切勿過早論斷。
同時也有13部Youtube影片,追蹤數超過57萬的網紅KIM THAI,也在其Youtube影片中提到,⚡️ SHOP MY MERCH: https://shopkimthai.com ⚡️ ⚡️ SHOP MY MERCH: https://shopkimthai.com ⚡️ ⚡️ SHOP MY MERCH: https://shopkimthai.com ⚡️ MY ADDRESS: At...
「target finds」的推薦目錄:
- 關於target finds 在 謝伯讓的腦科學世界 Facebook 的精選貼文
- 關於target finds 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於target finds 在 KIM THAI Youtube 的最佳貼文
- 關於target finds 在 Shiney Youtube 的最佳貼文
- 關於target finds 在 Shiney Youtube 的最讚貼文
- 關於target finds 在 Top 10 TARGET Finds For 2022 - Shop With Me - YouTube 的評價
- 關於target finds 在 Target Must Haves | Target Finds - YouTube 的評價
- 關於target finds 在 120 Target Finds ideas - Pinterest 的評價
- 關於target finds 在 Target Shop With Me / Target Haul / New at Target Finds ... 的評價
- 關於target finds 在 Carla Mackenzie - YouTube 的評價
- 關於target finds 在 openapi-generator unable to find valid certification path to ... 的評價
- 關於target finds 在 Target - Home | Facebook 的評價
- 關於target finds 在 21 Ridiculously Powerful Ways to Improve Your Facebook Ad ... 的評價
target finds 在 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.
👏 歡迎轉載分享鼓掌
target finds 在 KIM THAI Youtube 的最佳貼文
⚡️ SHOP MY MERCH: https://shopkimthai.com ⚡️
⚡️ SHOP MY MERCH: https://shopkimthai.com ⚡️
⚡️ SHOP MY MERCH: https://shopkimthai.com ⚡️
MY ADDRESS:
Attn: Kim Thai Nguyen
PO Box 1160
Huntington Beach, CA 92647
? Partnerships and Sponsorships: nikki@expandentertainment.co
? Instagram: https://www.instagram.com/kkimthai
? Subscribe to my Food Channel: https://www.youtube.com/channel/UC5zak5tqTE3JJFtiIpXyOnA
? H I F R I E N D S
Welcome to my channel, where we do things all beauty, fashion and lifestyle! Here, you'll find makeup tutorials, lookbooks, my favorite beauty products and also a glimpse into my life! I love sharing as much as I can with all my wonderful subscribers. My online family and I like to keep this platform positive and uplifting. We hope you'll join us!
Federal Trade Commission: This video is not sponsored.
? Music by Zachary Friederich - Loddy Da (Instrumental) - https://thmatc.co/?l=69F49CC4
? Music by Zachary Friederich - Loddy Da (Instrumental) via @hellothematic
target finds 在 Shiney Youtube 的最佳貼文
Mafia Definitive Edition (เฉพาะภาคแรก)
ซื้อได้ที่ https://store.epicgames.com/legendauser/mafia-definitive-edition
MAFIA: TRILOGY (รวมสามภาค)
ซื้อได้ที่ https://store.epicgames.com/legendauser/mafia-trilogy
Mafia: Definitive Edition is an action-adventure video game developed by Hangar 13 and published by 2K Games. A remake of the 2002 video game Mafia, it was announced in May 2020 and was released on September 25, 2020. The game is set within the fictional city of Lost Heaven (based on Chicago) in the 1930s, and follows the rise and fall of taxi driver-turned-mobster Tommy Angelo within the Salieri crime family. The game received favorable reviews from critics, with praise for revitalizing the story, performances, and graphics, although the dated action animations were criticized.
In 1930, during the ongoing Great Depression, impoverished taxi driver Thomas "Tommy" Angelo is strong-armed by two members of the Salieri family - Paulie Lombardo and Sam Trapani - into helping them escape an ambush by members of the Morello Family. While Tommy is compensated for his help, his actions lead him to losing his job when the Morello family target him in an act of revenge the following day. Seeking help from Don Ennio Salieri, Tommy agrees to be a part of his organisation, befriending Paulie and Sam, and becoming romantically involved with Sarah, the daughter of Salieri's bartender. The three men work together to contribute to Salieri's rackets, overseen by Salieri's consigliere Frank Colletti, including protection and bootlegging. In time, Tommy marries Sarah and begins a family with her, all the while working up in the ranks by impressing Salieri.
In 1933, Don Salieri becomes increasingly concerned when Don Marcu Morello begins putting pressure on him, ambushing their operations with bribed police officers and gaining the support of a corrupt prosecutor whose son has been killed by the Salieri family. Tommy finds himself forced to counter these attempts to prevent the organisation being financially weakened. When Salieri assigns him to eliminate an informant at a brothel, he is advised by Sam to spare them instead, allows them to escape in exchange for their silence, covering up his actions. When Frank disappears along with the organisation's account books, Tommy is instructed to locate both, and quickly learns that Morello planned to use the FBI to take down his rival. Convincing Frank to reveal where the books are, Tommy allows him to leave the country with his family, and covers up his actions once again.
In 1935, with prohibition ended and both Mafia families moving out into new rackets, Don Morello attempts to assassinate Salieri, whilst he and Tommy are dining at a restaurant. In retaliation, Salieri declares war and begins weakening Morello's position, damaging his rackets and reducing his influence on law enforcement. Eventually, Tommy works alongside Sam and Paulie to take down Morello, killing him by shooting down a plane he attempts to use to flee the city. By 1938, the Salieri family control the city's rackets, neutralizing anyone who attempts to stop them. Tommy, Sam and Paulie find themselves tasked with recovering a shipment of impounded cigars that had been smuggled into the city, informed that they hide a consignment of diamonds in them. Although the group manage to successfully recover the cargo, Tommy is shocked to discover that Salieri lied, and that the cigars concealed a consignment of drugs.
Disillusioned by the revelation, Tommy convinces Paulie to go ahead with a bank robbery that Sam had advised against. Although the pair manage to complete the job, Tommy finds Paulie murdered in his apartment the following day. When he goes for a meeting with Sam to discuss this, Tommy finds that his efforts to conceal his actions were uncovered by Salieri, and that Sam was ordered to execute him and Paulie for this and the bank job. Left with no choice, Tommy survives the attempt on his life and kills Sam upon learning that Frank and his family were murdered by Salieri's people. With his former allies against him, Tommy goes into hiding and contacts Detective Norman for help, providing his story of his actions. In exchange for testifying against the Salieri family, Tommy requests his help in protecting his family, which Norman agrees to out of respect for being a family man himself.
In 1951, Tommy and his family live under witness protection in Empire Bay, after Don Salieri and his organisation are arrested and tried for their crimes. A few days after his eldest daughter is married, in which he highlights how family is the most important value to a man, Tommy is visited by Vito Scaletta and Joe Barbaro, who murder him on behalf of Salieri, leaving him to die in his front yard. As his family surrounds him in shock, Tommy tells them all that they are now safe, before succumbing to his wounds.
target finds 在 Shiney Youtube 的最讚貼文
Mafia Definitive Edition (เฉพาะภาคแรก)
ซื้อได้ที่ https://store.epicgames.com/legendauser/mafia-definitive-edition
MAFIA: TRILOGY (รวมสามภาค)
ซื้อได้ที่ https://store.epicgames.com/legendauser/mafia-trilogy
Mafia: Definitive Edition is an action-adventure video game developed by Hangar 13 and published by 2K Games. A remake of the 2002 video game Mafia, it was announced in May 2020 and was released on September 25, 2020. The game is set within the fictional city of Lost Heaven (based on Chicago) in the 1930s, and follows the rise and fall of taxi driver-turned-mobster Tommy Angelo within the Salieri crime family. The game received favorable reviews from critics, with praise for revitalizing the story, performances, and graphics, although the dated action animations were criticized.
In 1930, during the ongoing Great Depression, impoverished taxi driver Thomas "Tommy" Angelo is strong-armed by two members of the Salieri family - Paulie Lombardo and Sam Trapani - into helping them escape an ambush by members of the Morello Family. While Tommy is compensated for his help, his actions lead him to losing his job when the Morello family target him in an act of revenge the following day. Seeking help from Don Ennio Salieri, Tommy agrees to be a part of his organisation, befriending Paulie and Sam, and becoming romantically involved with Sarah, the daughter of Salieri's bartender. The three men work together to contribute to Salieri's rackets, overseen by Salieri's consigliere Frank Colletti, including protection and bootlegging. In time, Tommy marries Sarah and begins a family with her, all the while working up in the ranks by impressing Salieri.
In 1933, Don Salieri becomes increasingly concerned when Don Marcu Morello begins putting pressure on him, ambushing their operations with bribed police officers and gaining the support of a corrupt prosecutor whose son has been killed by the Salieri family. Tommy finds himself forced to counter these attempts to prevent the organisation being financially weakened. When Salieri assigns him to eliminate an informant at a brothel, he is advised by Sam to spare them instead, allows them to escape in exchange for their silence, covering up his actions. When Frank disappears along with the organisation's account books, Tommy is instructed to locate both, and quickly learns that Morello planned to use the FBI to take down his rival. Convincing Frank to reveal where the books are, Tommy allows him to leave the country with his family, and covers up his actions once again.
In 1935, with prohibition ended and both Mafia families moving out into new rackets, Don Morello attempts to assassinate Salieri, whilst he and Tommy are dining at a restaurant. In retaliation, Salieri declares war and begins weakening Morello's position, damaging his rackets and reducing his influence on law enforcement. Eventually, Tommy works alongside Sam and Paulie to take down Morello, killing him by shooting down a plane he attempts to use to flee the city. By 1938, the Salieri family control the city's rackets, neutralizing anyone who attempts to stop them. Tommy, Sam and Paulie find themselves tasked with recovering a shipment of impounded cigars that had been smuggled into the city, informed that they hide a consignment of diamonds in them. Although the group manage to successfully recover the cargo, Tommy is shocked to discover that Salieri lied, and that the cigars concealed a consignment of drugs.
Disillusioned by the revelation, Tommy convinces Paulie to go ahead with a bank robbery that Sam had advised against. Although the pair manage to complete the job, Tommy finds Paulie murdered in his apartment the following day. When he goes for a meeting with Sam to discuss this, Tommy finds that his efforts to conceal his actions were uncovered by Salieri, and that Sam was ordered to execute him and Paulie for this and the bank job. Left with no choice, Tommy survives the attempt on his life and kills Sam upon learning that Frank and his family were murdered by Salieri's people. With his former allies against him, Tommy goes into hiding and contacts Detective Norman for help, providing his story of his actions. In exchange for testifying against the Salieri family, Tommy requests his help in protecting his family, which Norman agrees to out of respect for being a family man himself.
In 1951, Tommy and his family live under witness protection in Empire Bay, after Don Salieri and his organisation are arrested and tried for their crimes. A few days after his eldest daughter is married, in which he highlights how family is the most important value to a man, Tommy is visited by Vito Scaletta and Joe Barbaro, who murder him on behalf of Salieri, leaving him to die in his front yard. As his family surrounds him in shock, Tommy tells them all that they are now safe, before succumbing to his wounds.
target finds 在 120 Target Finds ideas - Pinterest 的推薦與評價
Jun 18, 2021 - Explore Crisp Collective's board "Target Finds", followed by 13269 people on Pinterest. See more ideas about target finds, target, ... ... <看更多>
target finds 在 Top 10 TARGET Finds For 2022 - Shop With Me - YouTube 的推薦與評價
... <看更多>