986 skills found · Page 15 of 33
NestieGuilas / Marketing Platform Marketing Platform Google Analytics Terms of Service These Google Analytics Terms of Service (this "Agreement") are entered into by Google LLC ("Google") and the entity executing this Agreement ("You"). This Agreement governs Your use of the standard Google Analytics (the "Service"). BY CLICKING THE "I ACCEPT" BUTTON, COMPLETING THE REGISTRATION PROCESS, OR USING THE SERVICE, YOU ACKNOWLEDGE THAT YOU HAVE REVIEWED AND ACCEPT THIS AGREEMENT AND ARE AUTHORIZED TO ACT ON BEHALF OF, AND BIND TO THIS AGREEMENT, THE OWNER OF THIS ACCOUNT. In consideration of the foregoing, the parties agree as follows: 1. Definitions. "Account" refers to the account for the Service. All Profiles (as applicable) linked to a single Property will have their Hits aggregated before determining the charge for the Service for that Property. "Confidential Information" includes any proprietary data and any other information disclosed by one party to the other in writing and marked "confidential" or disclosed orally and, within five business days, reduced to writing and marked "confidential". However, Confidential Information will not include any information that is or becomes known to the general public, which is already in the receiving party's possession prior to disclosure by a party or which is independently developed by the receiving party without the use of Confidential Information. "Customer Data" or "Google Analytics Data" means the data you collect, process or store using the Service concerning the characteristics and activities of Users. "Documentation" means any accompanying documentation made available to You by Google for use with the Processing Software, including any documentation available online. "GAMC" means the Google Analytics Measurement Code, which is installed on a Property for the purpose of collecting Customer Data, together with any fixes, updates and upgrades provided to You. "Hit" means a collection of interactions that results in data being sent to the Service and processed. Examples of Hits may include page view hits and ecommerce hits. A Hit can be a call to the Service by various libraries, but does not have to be so (e.g., a Hit can be delivered to the Service by other Google Analytics-supported protocols and mechanisms made available by the Service to You). "Platform Home" means the user interface through which You can access certain Google Marketing Platform-level functionality. "Processing Software" means the Google Analytics server-side software and any upgrades, which analyzes the Customer Data and generates the Reports. "Profile" means the collection of settings that together determine the information to be included in, or excluded from, a particular Report. For example, a Profile could be established to view a small portion of a web site as a unique Report. "Property" means any web page, application, other property or resource under Your control that sends data to Google Analytics. "Privacy Policy" means the privacy policy on a Property. "Report" means the resulting analysis shown at www.google.com/analytics/, some of which may include analysis for a Profile. "Servers" means the servers controlled by Google (or its wholly-owned subsidiaries) on which the Processing Software and Customer Data are stored. “SDKs” mean certain software development kits, which may be used or incorporated into a Property app for the purpose of collecting Customer Data, together with any fixes, updates, and upgrades provided to You. "Software" means the Processing Software, GAMC and/or SDKs. "Third Party" means any third party (i) to which You provide access to Your Account or (ii) for which You use the Service to collect information on the third party's behalf. "Users" means users and/or visitors to Your Properties. The words "include" and "including" mean "including but not limited to." 2. Fees and Service. Subject to Section 15, the Service is provided without charge to You for up to 10 million Hits per month per Account. Google may change its fees and payment policies for the Service from time to time including the addition of costs for geographic data, the importing of cost data from search engines, or other fees charged to Google or its wholly-owned subsidiaries by third party vendors for the inclusion of data in the Service reports. The changes to the fees or payment policies are effective upon Your acceptance of those changes which will be posted at www.google.com/analytics/. Unless otherwise stated, all fees are quoted in U.S. Dollars. Any outstanding balance becomes immediately due and payable upon termination of this Agreement and any collection expenses (including attorneys' fees) incurred by Google will be included in the amount owed, and may be charged to the credit card or other billing mechanism associated with Your AdWords account. 3. Member Account, Password, and Security. To register for the Service, You must complete the registration process by providing Google with current, complete and accurate information as prompted by the registration form, including Your e-mail address (username) and password. You will protect Your passwords and take full responsibility for Your own, and third party, use of Your accounts. You are solely responsible for any and all activities that occur under Your Account. You will notify Google immediately upon learning of any unauthorized use of Your Account or any other breach of security. Google's (or its wholly-owned subsidiaries) support staff may, from time to time, log in to the Service under Your customer password in order to maintain or improve service, including to provide You assistance with technical or billing issues. 4. Nonexclusive License. Subject to the terms and conditions of this Agreement, (a) Google grants You a limited, revocable, non-exclusive, non-sublicensable license to install, copy and use the GAMC and/or SDKs solely as necessary for You to use the Service on Your Properties or Third Party's Properties; and (b) You may remotely access, view and download Your Reports stored at www.google.com/analytics/. You will not (and You will not allow any third party to) (i) copy, modify, adapt, translate or otherwise create derivative works of the Software or the Documentation; (ii) reverse engineer, decompile, disassemble or otherwise attempt to discover the source code of the Software, except as expressly permitted by the law in effect in the jurisdiction in which You are located; (iii) rent, lease, sell, assign or otherwise transfer rights in or to the Software, the Documentation or the Service; (iv) remove any proprietary notices or labels on the Software or placed by the Service; (v) use, post, transmit or introduce any device, software or routine which interferes or attempts to interfere with the operation of the Service or the Software; or (vi) use data labeled as belonging to a third party in the Service for purposes other than generating, viewing, and downloading Reports. You will comply with all applicable laws and regulations in Your use of and access to the Documentation, Software, Service and Reports. 5. Confidentiality and Beta Features. Neither party will use or disclose the other party's Confidential Information without the other's prior written consent except for the purpose of performing its obligations under this Agreement or if required by law, regulation or court order; in which case, the party being compelled to disclose Confidential Information will give the other party as much notice as is reasonably practicable prior to disclosing the Confidential Information. Certain Service features are identified as "Alpha," "Beta," "Experiment," (either within the Service or elsewhere by Google) or as otherwise unsupported or confidential (collectively, "Beta Features"). You may not disclose any information from Beta Features or the terms or existence of any non-public Beta Features. Google will have no liability arising out of or related to any Beta Features. 6. Information Rights and Publicity. Google and its wholly owned subsidiaries may retain and use, subject to the terms of its privacy policy (located at https://www.google.com/policies/privacy/), information collected in Your use of the Service. Google will not share Your Customer Data or any Third Party's Customer Data with any third parties unless Google (i) has Your consent for any Customer Data or any Third Party's consent for the Third Party's Customer Data; (ii) concludes that it is required by law or has a good faith belief that access, preservation or disclosure of Customer Data is reasonably necessary to protect the rights, property or safety of Google, its users or the public; or (iii) provides Customer Data in certain limited circumstances to third parties to carry out tasks on Google's behalf (e.g., billing or data storage) with strict restrictions that prevent the data from being used or shared except as directed by Google. When this is done, it is subject to agreements that oblige those parties to process Customer Data only on Google's instructions and in compliance with this Agreement and appropriate confidentiality and security measures. 7. Privacy. You will not and will not assist or permit any third party to, pass information to Google that Google could use or recognize as personally identifiable information. You will have and abide by an appropriate Privacy Policy and will comply with all applicable laws, policies, and regulations relating to the collection of information from Users. You must post a Privacy Policy and that Privacy Policy must provide notice of Your use of cookies, identifiers for mobile devices (e.g., Android Advertising Identifier or Advertising Identifier for iOS) or similar technology used to collect data. You must disclose the use of Google Analytics, and how it collects and processes data. This can be done by displaying a prominent link to the site "How Google uses data when you use our partners' sites or apps", (located at www.google.com/policies/privacy/partners/, or any other URL Google may provide from time to time). You will use commercially reasonable efforts to ensure that a User is provided with clear and comprehensive information about, and consents to, the storing and accessing of cookies or other information on the User’s device where such activity occurs in connection with the Service and where providing such information and obtaining such consent is required by law. You must not circumvent any privacy features (e.g., an opt-out) that are part of the Service. You will comply with all applicable Google Analytics policies located at www.google.com/analytics/policies/ (or such other URL as Google may provide) as modified from time to time (the "Google Analytics Policies"). You may participate in an integrated version of Google Analytics and certain Google advertising services ("Google Analytics Advertising Features"). If You use Google Analytics Advertising Features, You will adhere to the Google Analytics Advertising Features policy (available at support.google.com/analytics/bin/answer.py?hl=en&topic=2611283&answer=2700409). Your access to and use of any Google advertising service is subject to the applicable terms between You and Google regarding that service. If You use the Platform Home, Your use of the Platform Home is subject to the Platform Home Additional Terms (or as subsequently re-named) available at https://support.google.com/marketingplatform/answer/9047313 (or such other URL as Google may provide) as modified from time to time (the "Platform Home Terms"). 8. Indemnification. To the extent permitted by applicable law, You will indemnify, hold harmless and defend Google and its wholly-owned subsidiaries, at Your expense, from any and all third-party claims, actions, proceedings, and suits brought against Google or any of its officers, directors, employees, agents or affiliates, and all related liabilities, damages, settlements, penalties, fines, costs or expenses (including, reasonable attorneys' fees and other litigation expenses) incurred by Google or any of its officers, directors, employees, agents or affiliates, arising out of or relating to (i) Your breach of any term or condition of this Agreement, (ii) Your use of the Service, (iii) Your violations of applicable laws, rules or regulations in connection with the Service, (iv) any representations and warranties made by You concerning any aspect of the Service, the Software or Reports to any Third Party; (v) any claims made by or on behalf of any Third Party pertaining directly or indirectly to Your use of the Service, the Software or Reports; (vi) violations of Your obligations of privacy to any Third Party; and (vii) any claims with respect to acts or omissions of any Third Party in connection with the Service, the Software or Reports. Google will provide You with written notice of any claim, suit or action from which You must indemnify Google. You will cooperate as fully as reasonably required in the defense of any claim. Google reserves the right, at its own expense, to assume the exclusive defense and control of any matter subject to indemnification by You. 9. Third Parties. If You use the Service on behalf of the Third Party or a Third Party otherwise uses the Service through Your Account, whether or not You are authorized by Google to do so, then You represent and warrant that (a) You are authorized to act on behalf of, and bind to this Agreement, the Third Party to all obligations that You have under this Agreement, (b) Google may share with the Third Party any Customer Data that is specific to the Third Party's Properties, and (c) You will not disclose Third Party's Customer Data to any other party without the Third Party's consent. 10. DISCLAIMER OF WARRANTIES. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, EXCEPT AS EXPRESSLY PROVIDED FOR IN THIS AGREEMENT, GOOGLE MAKES NO OTHER WARRANTY OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR USE AND NONINFRINGEMENT. 11. LIMITATION OF LIABILITY. TO THE EXTENT PERMITTED BY APPLICABLE LAW, GOOGLE WILL NOT BE LIABLE FOR YOUR LOST REVENUES OR INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, EVEN IF GOOGLE OR ITS SUBSIDIARIES AND AFFILIATES HAVE BEEN ADVISED OF, KNEW OR SHOULD HAVE KNOWN THAT SUCH DAMAGES WERE POSSIBLE AND EVEN IF DIRECT DAMAGES DO NOT SATISFY A REMEDY. GOOGLE'S (AND ITS WHOLLY OWNED SUBSIDIARIES’) TOTAL CUMULATIVE LIABILITY TO YOU OR ANY OTHER PARTY FOR ANY LOSS OR DAMAGES RESULTING FROM CLAIMS, DEMANDS, OR ACTIONS ARISING OUT OF OR RELATING TO THIS AGREEMENT WILL NOT EXCEED $500 (USD). 12. Proprietary Rights Notice. The Service, which includes the Software and all Intellectual Property Rights therein are, and will remain, the property of Google (and its wholly owned subsidiaries). All rights in and to the Software not expressly granted to You in this Agreement are reserved and retained by Google and its licensors without restriction, including, Google's (and its wholly owned subsidiaries’) right to sole ownership of the Software and Documentation. Without limiting the generality of the foregoing, You agree not to (and not to allow any third party to): (a) sublicense, distribute, or use the Service or Software outside of the scope of the license granted in this Agreement; (b) copy, modify, adapt, translate, prepare derivative works from, reverse engineer, disassemble, or decompile the Software or otherwise attempt to discover any source code or trade secrets related to the Service; (c) rent, lease, sell, assign or otherwise transfer rights in or to the Software, Documentation or the Service; (d) use, post, transmit or introduce any device, software or routine which interferes or attempts to interfere with the operation of the Service or the Software; (e) use the trademarks, trade names, service marks, logos, domain names and other distinctive brand features or any copyright or other proprietary rights associated with the Service for any purpose without the express written consent of Google; (f) register, attempt to register, or assist anyone else to register any trademark, trade name, serve marks, logos, domain names and other distinctive brand features, copyright or other proprietary rights associated with Google (or its wholly owned subsidiaries) other than in the name of Google (or its wholly owned subsidiaries, as the case may be); (g) remove, obscure, or alter any notice of copyright, trademark, or other proprietary right appearing in or on any item included with the Service or Software; or (h) seek, in a proceeding filed during the term of this Agreement or for one year after such term, an injunction of any portion of the Service based on patent infringement. 13. U.S. Government Rights. If the use of the Service is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), in accordance with 48 C.F.R. 227.7202-4 (for Department of Defense (DOD) acquisitions) and 48 C.F.R. 2.101 and 12.212 (for non-DOD acquisitions), the Government's rights in the Software, including its rights to use, modify, reproduce, release, perform, display or disclose the Software or Documentation, will be subject in all respects to the commercial license rights and restrictions provided in this Agreement. 14. Term and Termination. Either party may terminate this Agreement at any time with notice. Upon any termination of this Agreement, Google will stop providing, and You will stop accessing the Service. Additionally, if Your Account and/or Properties are terminated, You will (i) delete all copies of the GAMC from all Properties and/or (ii) suspend any and all use of the SDKs within 3 business days of such termination. In the event of any termination (a) You will not be entitled to any refunds of any usage fees or any other fees, and (b) any outstanding balance for Service rendered through the date of termination will be immediately due and payable in full and (c) all of Your historical Report data will no longer be available to You. 15. Modifications to Terms of Service and Other Policies. Google may modify these terms or any additional terms that apply to the Service to, for example, reflect changes to the law or changes to the Service. You should look at the terms regularly. Google will post notice of modifications to these terms at https://www.google.com/analytics/terms/, the Google Analytics Policies at www.google.com/analytics/policies/, or other policies referenced in these terms at the applicable URL for such policies. Changes will not apply retroactively and will become effective no sooner than 14 days after they are posted. If You do not agree to the modified terms for the Service, You should discontinue Your use Google Analytics. No amendment to or modification of this Agreement will be binding unless (i) in writing and signed by a duly authorized representative of Google, (ii) You accept updated terms online, or (iii) You continue to use the Service after Google has posted updates to the Agreement or to any policy governing the Service. 16. Miscellaneous, Applicable Law and Venue. Google will be excused from performance in this Agreement to the extent that performance is prevented, delayed or obstructed by causes beyond its reasonable control. This Agreement (including any amendment agreed upon by the parties in writing) represents the complete agreement between You and Google concerning its subject matter, and supersedes all prior agreements and representations between the parties. If any provision of this Agreement is held to be unenforceable for any reason, such provision will be reformed to the extent necessary to make it enforceable to the maximum extent permissible so as to effect the intent of the parties, and the remainder of this Agreement will continue in full force and effect. This Agreement will be governed by and construed under the laws of the state of California without reference to its conflict of law principles. In the event of any conflicts between foreign law, rules, and regulations, and California law, rules, and regulations, California law, rules and regulations will prevail and govern. Each party agrees to submit to the exclusive and personal jurisdiction of the courts located in Santa Clara County, California. The United Nations Convention on Contracts for the International Sale of Goods and the Uniform Computer Information Transactions Act do not apply to this Agreement. The Software is controlled by U.S. Export Regulations, and it may be not be exported to or used by embargoed countries or individuals. Any notices to Google must be sent to: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA, with a copy to Legal Department, via first class or air mail or overnight courier, and are deemed given upon receipt. A waiver of any default is not a waiver of any subsequent default. You may not assign or otherwise transfer any of Your rights in this Agreement without Google's prior written consent, and any such attempt is void. The relationship between Google and You is not one of a legal partnership relationship, but is one of independent contractors. This Agreement will be binding upon and inure to the benefit of the respective successors and assigns of the parties hereto. The following sections of this Agreement will survive any termination thereof: 1, 4, 5, 6 (except the last two sentences), 7, 8, 9, 10, 11, 12, 14, 16, and 17. 17. Google Analytics for Firebase. If You link a Property to Firebase (“Firebase Linkage”) as part of using the Service, the following terms, in addition to Sections 1-16 above, will also apply to You, and will also govern Your use of the Service, including with respect to Your use of Firebase Linkage. Other than as modified below, all other terms will stay the same and continue to apply. In the event of a conflict between this Section 17 and Sections 1-16 above, the terms in Section 17 will govern and control solely with respect to Your use of the Firebase Linkage. The following definition in Section 1 is modified as follows: "Hit" means a collection of interactions that results in data being sent to the Service and processed. Examples of Hits may include page view hits and ecommerce hits. A Hit can be a call to the Service by various libraries, but does not have to be so (e.g., a Hit can be delivered to the Service by other Google Analytics-supported protocols and mechanisms made available by the Service to You). For the sake of clarity, a Hit does not include certain events whose collection reflects interactions with certain Properties capable of supporting multiple data streams, and which may include screen views and custom events (the collection of events, an “Enhanced Packet”). The following sentence is added to the end of Section 7 as follows: If You link a Property to a Firebase project (“Firebase Linkage”) (i) certain data from Your Property, including Customer Data, may be made accessible within or to any other entity or personnel according to permissions set in Firebase and (ii) that Property may have certain Service settings modified by authorized personnel of Firebase (notwithstanding the settings You may have designated for that Property within the Service). Last Updated June 17, 2019 Follow us About Google Marketing Platform Overview For Small Businesses For Enterprise Learning & support Support Blog Analytics Academy Skillshop Google Primer Developers & partners Google Marketing Platform Partners Google Measurement Partners Analytics for developers Tag Manager for developers Surveys for developers Campaign Manager 360 for developers Related products Google Ads Google AdSense Google Ad Manager Google Cloud Firebase More from Google Think with Google Business Solutions Google Workspace PrivacyTermsAbout GoogleGoogle Products Help
CAPRDZV / Capsulepaper论文 Hinton等的论文 Matrix capsules with EM routing - Hinton, G. E., Sabour, S. and Frosst, N. (2018) Dynamic Routing Between Capsules - Sabour, S., Frosst, N. and Hinton, G.E. (2017) Transforming Auto-encoders - Hinton, G. E., Krizhevsky, A. and Wang, S. D. (2011) A parallel computation that assigns canonical object-based frames of reference. - Hinton, G.E. (1981) Shape representation in parallel systems - Hinton, G.E. (1981) Optimizing Neural Networks that Generate Images - Tijmen Tieleman’s disseration 其他论文 Capsule Network Performance on Complex Data - Xi, E., Bing, S. and Jin, Y. (2017) Accurate reconstruction of image stimuli from human fMRI based on the decoding model with capsule network architecture - Qiao, K., Zhang, C., Wang, L., Yan, B., Chen, J., Zeng, L. and Tong, L., (2018) An Optimization View on Dynamic Routing Between Capsules - Wang, D., Liu, E. (2018) CapsuleGAN: Generative Adversarial Capsule Network Ayush Jaiswal, Wael AbdAlmageed, Premkumar Natarajan. (2018) Spectral Capsule Networks - Bahadori, M. T. (2018) 博客 Max Pechyonkin的胶囊网络入门系列: 胶囊网络背后的直觉 胶囊如何工作 囊间动态路由算法 胶囊网络架构 基于TensorFlow实现胶囊网络 Debarko De的胶囊网络教程,包括注释详尽的胶囊网络实现代码 基于CUDA为胶囊网络实现TensorFlow定制操作 Jos van de Wolfshaar的文章,定制胶囊网络运算的CUDA支持 ISI新研究:胶囊生成对抗网络 用胶囊网络替换CNN作为GAN的判别网络,在MNIST数据集上取得了比卷积GAN更好的表现 Uncovering the Intuition behind Capsule Networks and Inverse Graphic Tanay Kothari的长篇教程 A Visual Representation of Capsule Connections in Dynamic Routing Between Capsules Mike Ross的胶囊网络示意图 Capsule Networks Are Shaking up AI — Here’s How to Use Them Nick Bourdakos的介绍 Capsule Networks Explained Kendrick Tan的解释 Understanding Dynamic Routing between Capsules (Capsule Networks) Jonathan Hui的教程,包括注释详尽的基于Keras的胶囊网络实现代码 Matrix capsules with EM routing Adrian Colyer关于EM路由的文章 Capsule Networks: A Glossary Sebastian Kwiatkowski的胶囊网络术语表 Overview of awesome articles 点评三篇胶囊网络教程 视频 Geoffrey Hinton’s talk: What is wrong with convolutional neural nets? - Geoffrey Hinton在MIT. Brain & Cognitive Sciences的演讲《卷积神经网络的问题在哪里?》 Capsule Networks (CapsNets) – Tutorial - “这视频棒极了。我本希望我能把胶囊解释得这么清楚。”Geoffrey Hinton Capsule networks: overview - 胶囊网络概览,包括向量和矩阵胶囊。 Overview of awesome videos 对以上3个视频的点评。 Capsule Networks: An Improvement to Convolutional Networks Siraj Raval介绍胶囊网络的视频 动态路由实现 官方实现 Sarasra/models 《Dynamic Routing Between Capsules》论文所用的代码 TensorFlow alisure-ml/CapsNet bourdakos1/capsule-networks etendue/CapsNet_TF InnerPeace-Wu/CapsNet-tensorflow jaesik817/adv_attack_capsnet jostosh/capsnet JunYeopLee/capsule-networks laodar/tf_CapsNet leoniloris/CapsNet naturomics/CapsNet-Tensorflow rrqq/CapsNet-tensorflow-jupyter thibo73800/capsnet-traffic-sign-classifier tjiang31/CapsNet winwinJJiang/capsNet-Tensorflow PyTorch acburigo/CapsNet adambielski/CapsNet-pytorch AlexHex7/CapsNet_pytorch aliasvishnu/Capsule-Networks-Notebook-MNIST andreaazzini/capsnet.pytorch cedrickchee/capsule-net-pytorch dragen1860/CapsNet-Pytorch gram-ai/capsule-networks higgsfield/Capsule-Network-Tutorial laubonghaudoi/CapsNet_guide_PyTorch leftthomas/CapsNet nishnik/CapsNet-PyTorch tonysy/CapsuleNet-PyTorch Ujjwal-9/CapsNet Keras fengwang/minimal-capsule gusgad/capsule-GAN mitiku1/Emopy-CapsNet ruslangrimov/capsnet-with-capsulewise-convolution streamride/CapsNet-keras-imdb sunxirui310/CapsNet-Keras theblackcat102/dynamic-routing-capsule-cifar XifengGuo/CapsNet-Keras XifengGuo/CapsNet-Fashion-MNIST Chainer soskek/dynamic_routing_between_capsules Torch mrkulk/Unsupervised-Capsule-Network MXNet AaronLeong/CapsNet_Mxnet GarrickLin/Capsnet.Gluon Soonhwan-Kwon/capsnet.mxnet CNTK Southworkscom/CapsNet-CNTK Lasagne DeniskaMazur/CapsNet-Lasagne Matlab yechengxi/LightCapsNet R dfalbel/capsnet JavaScript alseambusher/capsnet.js Vulcan moothyknight/CapsNet-for-Graphics-Rendering-Optimization EM路由实现 TensorFlow gyang274/capsulesEM www0wwwjs1/Matrix-Capsules-EM-Tensorflow PyTorch shzygmyx/Matrix-Capsules-pytorch 其他资源 Capsule Networks discussion Facebook讨论组 CapsNet-Tensorflow CapsNet-Tensorflow的gitter.im讨论组 Will capsule networks replace neural networks? Quora问答“胶囊网络会取代神经网络吗?” Could GANs work with Hinton’s capsule theory? Quora问答“GAN可以应用Hinton的胶囊理论吗?” Dynamic Routing Between Capsules Kyuhwan Jung对论文《Dynamic routing between Capsules》的评论(slideshare)
sanusanth / C Basic Simple ProgramWhat is C++? C++ is a general-purpose, object-oriented programming language. It was created by Bjarne Stroustrup at Bell Labs circa 1980. C++ is very similar to C (invented by Dennis Ritchie in the early 1970s). C++ is so compatible with C that it will probably compile over 99% of C programs without changing a line of source code. Though C++ is a lot of well-structured and safer language than C as it OOPs based. Some computer languages are written for a specific purpose. Like, Java was initially devised to control toasters and some other electronics. C was developed for programming OS. Pascal was conceptualized to teach proper programming techniques. But C++ is a general-purpose language. It well deserves the widely acknowledged nickname "Swiss Pocket Knife of Languages." C++ is a cross-platform language that can be used to create high-performance applications. C++ was developed by Bjarne Stroustrup, as an extension to the C language. C++ gives programmers a high level of control over system resources and memory. The language was updated 3 major times in 2011, 2014, and 2017 to C++11, C++14, and C++17. About C++ Programming Multi-paradigm Language - C++ supports at least seven different styles of programming. Developers can choose any of the styles. General Purpose Language - You can use C++ to develop games, desktop apps, operating systems, and so on. Speed - Like C programming, the performance of optimized C++ code is exceptional. Object-oriented - C++ allows you to divide complex problems into smaller sets by using objects. Why Learn C++? C++ is used to develop games, desktop apps, operating systems, browsers, and so on because of its performance. After learning C++, it will be much easier to learn other programming languages like Java, Python, etc. C++ helps you to understand the internal architecture of a computer, how computer stores and retrieves information. How to learn C++? C++ tutorial from Programiz - We provide step by step C++ tutorials, examples, and references. Get started with C++. Official C++ documentation - Might be hard to follow and understand for beginners. Visit official C++ documentation. Write a lot of C++ programming code- The only way you can learn programming is by writing a lot of code. Read C++ code- Join Github's open-source projects and read other people's code. C++ best programming language? The answer depends on perspective and requirements. Some tasks can be done in C++, though not very quickly. For example, designing GUI screens for applications. Other languages like Visual Basic, Python have GUI design elements built into them. Therefore, they are better suited for GUI type of task. Some of the scripting languages that provide extra programmability to applications. Such as MS Word and even photoshop tend to be variants of Basic, not C++. C++ is still used widely, and the most famous software have their backbone in C++. This tutorial will help you learn C++ basic and the advanced concepts. Who uses C++? Some of today's most visible used systems have their critical parts written in C++. Examples are Amadeus (airline ticketing) Bloomberg (financial formation), Amazon (Web commerce), Google (Web search) Facebook (social media) Many programming languages depend on C++'s performance and reliability in their implementation. Examples include: Java Virtual Machines JavaScript interpreters (e.g., Google's V8) Browsers (e.g., Internet Explorer, Mozilla's Firefox, Apple's Safari, and Google's Chrome) Application and Web frameworks (e.g., Microsoft's .NET Web services framework). Applications that involve local and wide area networks, user interaction, numeric, graphics, and database access highly depend on C++ language. Why Use C++ C++ is one of the world's most popular programming languages. C++ can be found in today's operating systems, Graphical User Interfaces, and embedded systems. C++ is an object-oriented programming language which gives a clear structure to programs and allows code to be reused, lowering development costs. C++ is portable and can be used to develop applications that can be adapted to multiple platforms. C++ is fun and easy to learn! As C++ is close to C# and Java, it makes it easy for programmers to switch to C++ or vice versa Definition - What does C++ Programming Language mean? C++ is an object oriented computer language created by notable computer scientist Bjorne Stroustrop as part of the evolution of the C family of languages. Some call C++ “C with classes” because it introduces object oriented programming principles, including the use of defined classes, to the C programming language framework. C++ is pronounced "see-plus-plus." C++ Variables Variables are the backbone of any programming language. A variable is merely a way to store some information for later use. We can retrieve this value or data by referring to a "word" that will describe this information. Once declared and defined they may be used many times within the scope in which they were declared. C++ Control Structures When a program runs, the code is read by the compiler line by line (from top to bottom, and for the most part left to right). This is known as "code flow." When the code is being read from top to bottom, it may encounter a point where it needs to make a decision. Based on the decision, the program may jump to a different part of the code. It may even make the compiler re-run a specific piece again, or just skip a bunch of code. You could think of this process like if you were to choose from different courses from Guru99. You decide, click a link and skip a few pages. In the same way, a computer program has a set of strict rules to decide the flow of program execution. C++ Syntax The syntax is a layout of words, expression, and symbols. Well, it's because an email address has its well-defined syntax. You need some combination of letters, numbers, potentially with underscores (_) or periods (.) in between, followed by an at the rate (@) symbol, followed by some website domain (company.com). So, syntax in a programming language is much the same. They are some well-defined set of rules that allow you to create some piece of well-functioning software. But, if you don't abide by the rules of a programming language or syntax, you'll get errors. C++ Tools In the real world, a tool is something (usually a physical object) that helps you to get a certain job done promptly. Well, this holds true with the programming world too. A tool in programming is some piece of software which when used with the code allows you to program faster. There are probably tens of thousands, if not millions of different tools across all the programming languages. Most crucial tool, considered by many, is an IDE, an Integrated Development Environment. An IDE is a software which will make your coding life so much easier. IDEs ensure that your files and folders are organized and give you a nice and clean way to view them. Types of C++ Errors Another way to look at C++ in a practical sense is to start enumerating different kinds of errors that occur as the written code makes its way to final execution. First, there are syntax errors where the code is actually written in an illegible way. This can be a misuse of punctuation, or the misspelling of a function command or anything else that compromises the integrity of the syntax as it is written. Another fundamental type of error is a compiler error that simply tells the programmer the compiler was not able to do its work effectively. As a compiler language, C++ relies on the compiler to make the source code into machine readable code and optimize it in various ways. A third type of error happens after the program has been successfully compiled. Runtime errors are not uncommon in C++ executables. What they represent is some lack of designated resource or non-working command in the executable program. In other words, the syntax is right, and the program was compiled successfully, but as the program is doing its work, it encounters a problem, whether that has to do with interdependencies, operating system requirements or anything else in the general environment in which the program is trying to work. Over time, C++ has remained a very useful language not only in computer programming itself, but in teaching new programmers about how object oriented programming works.
uvhw / Bitcoin FoundationBitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto satoshin@gmx.com www.bitcoin.org Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone. 1. Introduction Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non- reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party. What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1 2. Transactions We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership. Transaction Hash Transaction Hash Transaction Hash Owner 1's Public Key Owner 2's Public Key Owner 3's Public Key Owner 0's Signature Owner 1's Signature The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank. We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received. 3. Timestamp Server The solution we propose begins with a timestamp server. A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5]. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it. Hash Hash Owner 2's Signature Owner 1's Private Key Owner 2's Private Key Owner 3's Private Key Block Item Item ... 2 Block Item Item ... Verify Verify Sign Sign 4. Proof-of-Work To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof- of-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits required and can be verified by executing a single hash. For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits. Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it. The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added. To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour. If they're generated too fast, the difficulty increases. 5. Network The steps to run the network are as follows: 1) New transactions are broadcast to all nodes. 2) Each node collects new transactions into a block. 3) Each node works on finding a difficult proof-of-work for its block. 4) When a node finds a proof-of-work, it broadcasts the block to all nodes. 5) Nodes accept the block only if all transactions in it are valid and not already spent. 6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash. Nodes always consider the longest chain to be the correct one and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch in case it becomes longer. The tie will be broken when the next proof- of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one. 3 Block Nonce Tx Tx ... Block Nonce Tx Tx ... Prev Hash Prev Hash New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one. 6. Incentive By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation. In our case, it is CPU time and electricity that is expended. The incentive can also be funded with transaction fees. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free. The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth. 7. Reclaiming Disk Space Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space. To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored. Block Hash0 Hash1 Hash2 Hash3 Tx0 Tx1 Tx2 Tx3 Block Header (Block Hash) Prev Hash Nonce Root Hash Hash01 Hash23 Block Block Header (Block Hash) Prev Hash Nonce Root Hash Hash01 Hash23 Hash2 Hash3 Tx3 Transactions Hashed in a Merkle Tree After Pruning Tx0-2 from the Block A block header with no transactions would be about 80 bytes. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory. 4 8. Simplified Payment Verification It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. Longest Proof-of-Work Chain Block Header Block Header Block Header Prev Hash Nonce Prev Hash Nonce Prev Hash Nonce Merkle Root Merkle Root Merkle Root Hash01 Hash23 Merkle Branch for Tx3 Hash2 Hash3 Tx3 As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 9. Combining and Splitting Value Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender. It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history. 5 Transaction In Out In ... ... 10. Privacy The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party. The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the "tape", is made public, but without telling who the parties were. Traditional Privacy Model Identities Transactions New Privacy Model Identities Transactions As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner. 11. Calculations We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent. The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1. The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]: p = probability an honest node finds the next block q = probability the attacker finds the next block qz = probability the attacker will ever catch up from z blocks behind Trusted Third Party q ={ 1 if p≤q} z q/pz if pq 6 Counterparty Public Public Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind. We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late. The receiver generates a new key pair and gives the public key to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction. The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value: = z qp To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point: ∞ ke−{q/pz−k ifk≤z} ∑k=0 k!⋅ 1 ifkz Rearranging to avoid summing the infinite tail of the distribution... z ke− z−k 1−∑k=0 k! 1−q/p Converting to C code... #include <math.h> double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z. q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. Conclusion We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism. 8 References [1] W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, "Hashcash - a denial of service counter-measure," http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, "An introduction to probability theory and its applications," 1957. 9
BenKite / Baseball DataScraping data from baseball-reference.com.
SAP-archive / Cloud Foundry Cap Azure CitiesReference application built according to the SAP Cloud Application Programming Model. It uses an SAP HANA database for structured data, an Azure storage account for unstructured data, and SAP Fiori Elements for the user interface.
radiantearth / Ground Referencing GuideBest practices for ground reference data collection and cataloguing
cupnoodle / PredicateNSPredicate / Core Data reference website
adlnet / TlaCodebase for the ADL Initiative's Total Learning Architecture (TLA) reference implementation. Once matured and implemented, the TLA will enable personalized, data-driven, and technology-enabled lifelong learning across the DoD, other Federal Government agencies, and beyond.
LiekeVanmulken / Unity Migration ToolExport scenes between projects. Mainly used to fix scene script references when changing between DLL and source files. It can also map fields to new fieldnames to preserve data between script versions.
kyle-chalmers / Data AI Tickets TemplateReference repository for the Kyle Chalmers Data & AI YouTube channel ( youtube.com@kylechalmersdataai ). Provides structured templates for managing data tasks with quality-first SQL development, standardized ticket workflows, automated QC validation, and multi-layer architecture patterns. Use as a foundation for reproducible analytics work.
jxblum / Contacts ApplicationThis example demonstrates a Contacts management application for managing a user's contacts. Its purpose is to serve as the Reference Implementation (RI) for Spring Data GemFire/Geode along with showcasing the vast ecosystem of Spring technologies integrated with various services/technologies in addition to Pivotal GemFire and Apache Geode.
virajbhutada / AI Database Query BotThis project seamlessly integrates a web-based interface with advanced AI to enable natural language interactions with a relational database. Utilizing Python, Streamlit for the frontend, and OpenAI for intelligent responses, it connects to a Postgres database for efficient data retrieval and features conversation history saving for easy reference.
NhanPhamThanh-IT / Tutorials And Chill📚 This repository provides concise yet comprehensive tutorials and hands-on guides for Git, Python, R, and SQL. Discover core concepts, essential commands, and real-world code examples to strengthen your programming and data analysis skills. Perfect for beginners and a handy quick reference for daily projects.
AyushGupta51379 / COMP 5331 Project Fake News Detection- Image classification using Deep learning. - Utilizing both frequency and pixel domain information of images. - Implemented MVNN model from a research paper published in 2019 IEEE ICDM. Achieved comparable accuracy to the original model. - Compared with several deep learning models: Pre-trained (VGG-16, VGG-19) and our own implementations of CNN based models (with different number of layers) - Research project utilized as a part of a course: COMP 5331 - Knowledge Discovery in Databases, from HKUST (The Hong Kong University of Science and Technology). - Referenced paper (for MVNN model) - P. Qi, J. Cao, T. Yang, J. Guo, and J. Li. Exploiting multi-domain visual information for fake news detection. In 2019 IEEE International Conference on Data Mining (ICDM), pages 518–527, 2019.
lhai36366 / Lhai36366WPF Partial Trust Security Article 10 minutes to read In general, Internet applications should be restricted from having direct access to critical system resources, to prevent malicious damage. By default, HTML and client-side scripting languages are not able to access critical system resources. Because Windows Presentation Foundation (WPF) browser-hosted applications can be launched from the browser, they should conform to a similar set of restrictions. To enforce these restrictions, WPF relies on both Code Access Security (CAS) and ClickOnce (see WPF Security Strategy - Platform Security). By default, browser-hosted applications request the Internet zone CAS set of permissions, irrespective of whether they are launched from the Internet, the local intranet, or the local computer. Applications that run with anything less than the full set of permissions are said to be running with partial trust. WPF provides a wide variety of support to ensure that as much functionality as possible can be used safely in partial trust, and along with CAS, provides additional support for partial trust programming. This topic contains the following sections: WPF Feature Partial Trust Support Partial Trust Programming Managing Permissions WPF Feature Partial Trust Support The following table lists the high-level features of Windows Presentation Foundation (WPF) that are safe to use within the limits of the Internet zone permission set. Table 1: WPF Features that are Safe in Partial Trust Feature Area Feature General Browser Window Site of Origin Access IsolatedStorage (512KB Limit) UIAutomation Providers Commanding Input Method Editors (IMEs) Tablet Stylus and Ink Simulated Drag/Drop using Mouse Capture and Move Events OpenFileDialog XAML Deserialization (via XamlReader.Load) Web Integration Browser Download Dialog Top-Level User-Initiated Navigation mailto:links Uniform Resource Identifier Parameters HTTPWebRequest WPF Content Hosted in an IFRAME Hosting of Same-Site HTML Pages using Frame Hosting of Same Site HTML Pages using WebBrowser Web Services (ASMX) Web Services (using Windows Communication Foundation) Scripting Document Object Model Visuals 2D and 3D Animation Media (Site Of Origin and Cross-Domain) Imaging/Audio/Video Reading FlowDocuments XPS Documents Embedded & System Fonts CFF & TrueType Fonts Editing Spell Checking RichTextBox Plaintext and Ink Clipboard Support User-Initiated Paste Copying Selected Content Controls General Controls This table covers the WPF features at a high level. For more detailed information, the Windows Software Development Kit (SDK) documents the permissions that are required by each member in WPF. Additionally, the following features have more detailed information regarding partial trust execution, including special considerations. XAML (see XAML Overview (WPF)). Popups (see System.Windows.Controls.Primitives.Popup). Drag and Drop (see Drag and Drop Overview). Clipboard (see System.Windows.Clipboard). Imaging (see System.Windows.Controls.Image). Serialization (see XamlReader.Load, XamlWriter.Save). Open File Dialog Box (see Microsoft.Win32.OpenFileDialog). The following table outlines the WPF features that are not safe to run within the limits of the Internet zone permission set. Table 2: WPF Features that are Not Safe in Partial Trust Feature Area Feature General Window (Application Defined Windows and Dialog Boxes) SaveFileDialog File System Registry Access Drag and Drop XAML Serialization (via XamlWriter.Save) UIAutomation Clients Source Window Access (HwndHost) Full Speech Support Windows Forms Interoperability Visuals Bitmap Effects Image Encoding Editing Rich Text Format Clipboard Full XAML support Partial Trust Programming For XBAP applications, code that exceeds the default permission set will have different behavior depending on the security zone. In some cases, the user will receive a warning when they attempt to install it. The user can choose to continue or cancel the installation. The following table describes the behavior of the application for each security zone and what you have to do for the application to receive full trust. Security Zone Behavior Getting Full Trust Local computer Automatic full trust No action is needed. Intranet and trusted sites Prompt for full trust Sign the XBAP with a certificate so that the user sees the source in the prompt. Internet Fails with "Trust Not Granted" Sign the XBAP with a certificate. Note The behavior described in the previous table is for full trust XBAPs that do not follow the ClickOnce Trusted Deployment model. In general, code that may exceed the allowed permissions is likely to be common code that is shared between both standalone and browser-hosted applications. CAS and WPF offer several techniques for managing this scenario. Detecting Permissions Using CAS In some situations, it is possible for shared code in library assemblies to be used by both standalone applications and XBAPs. In these cases, code may execute functionality that could require more permissions than the application's awarded permission set allows. Your application can detect whether or not it has a certain permission by using Microsoft .NET Framework security. Specifically, it can test whether it has a specific permission by calling the Demand method on the instance of the desired permission. This is shown in the following example, which has code that queries for whether it has the ability to save a file to the local disk: Imports System.IO ' File, FileStream, StreamWriter Imports System.IO.IsolatedStorage ' IsolatedStorageFile Imports System.Security ' CodeAccesPermission, IsolatedStorageFileStream Imports System.Security.Permissions ' FileIOPermission, FileIOPermissionAccess Imports System.Windows ' MessageBox Namespace SDKSample Public Class FileHandling Public Sub Save() If IsPermissionGranted(New FileIOPermission(FileIOPermissionAccess.Write, "c:\newfile.txt")) Then ' Write to local disk Using stream As FileStream = File.Create("c:\newfile.txt") Using writer As New StreamWriter(stream) writer.WriteLine("I can write to local disk.") End Using End Using Else MessageBox.Show("I can't write to local disk.") End If End Sub ' Detect whether or not this application has the requested permission Private Function IsPermissionGranted(ByVal requestedPermission As CodeAccessPermission) As Boolean Try ' Try and get this permission requestedPermission.Demand() Return True Catch Return False End Try End Function ... End Class End Namespace using System.IO; // File, FileStream, StreamWriter using System.IO.IsolatedStorage; // IsolatedStorageFile using System.Security; // CodeAccesPermission, IsolatedStorageFileStream using System.Security.Permissions; // FileIOPermission, FileIOPermissionAccess using System.Windows; // MessageBox namespace SDKSample { public class FileHandling { public void Save() { if (IsPermissionGranted(new FileIOPermission(FileIOPermissionAccess.Write, @"c:\newfile.txt"))) { // Write to local disk using (FileStream stream = File.Create(@"c:\newfile.txt")) using (StreamWriter writer = new StreamWriter(stream)) { writer.WriteLine("I can write to local disk."); } } else { MessageBox.Show("I can't write to local disk."); } } // Detect whether or not this application has the requested permission bool IsPermissionGranted(CodeAccessPermission requestedPermission) { try { // Try and get this permission requestedPermission.Demand(); return true; } catch { return false; } } ... } } If an application does not have the desired permission, the call to Demand will throw a security exception. Otherwise, the permission has been granted. IsPermissionGranted encapsulates this behavior and returns true or false as appropriate. Graceful Degradation of Functionality Being able to detect whether code has the permission to do what it needs to do is interesting for code that can be executed from different zones. While detecting the zone is one thing, it is far better to provide an alternative for the user, if possible. For example, a full trust application typically enables users to create files anywhere they want, while a partial trust application can only create files in isolated storage. If the code to create a file exists in an assembly that is shared by both full trust (standalone) applications and partial trust (browser-hosted) applications, and both applications want users to be able to create files, the shared code should detect whether it is running in partial or full trust before creating a file in the appropriate location. The following code demonstrates both. Imports System.IO ' File, FileStream, StreamWriter Imports System.IO.IsolatedStorage ' IsolatedStorageFile Imports System.Security ' CodeAccesPermission Imports System.Security.Permissions ' FileIOPermission, FileIOPermissionAccess Imports System.Windows ' MessageBox Namespace SDKSample Public Class FileHandlingGraceful Public Sub Save() If IsPermissionGranted(New FileIOPermission(FileIOPermissionAccess.Write, "c:\newfile.txt")) Then ' Write to local disk Using stream As FileStream =tênthietbi:<hailuu(GT-19195)>phienban.android<4.4.2>capdovaloibaomat<2016-05-01>phienban.baseband<19195xxscQA3> File.Create("c:\newfile.txt") Using writer As New StreamWriter(stream) writer.WriteLine("I can write to local disk.") End Using End Using Else ' Persist application-scope property to ' isolated storage Dim storage As IsolatedStorageFile =phien.kernel<3.4.0-8086469>#¿¿¿¿¿#(#DPI@SWHC3707#1)¿¿¿¿¿WE¿JAN<4 20:32:33 KST2017¿¿¿¿¿>#sohieubantao#¿<kot49h.19195xxscQA3¿¿¿¿>#<trangthai.SE.cho"ANDROID"ENFORCING¿¿¿¿¿#<Sepf-9T-19195-4.4.2-0054>#¿¿¿¿¿-web¿an#<04 20:31:30 2017>¿¿¿¿¿#secureboo¿¿¿atus<¿#"type:SAMSUNG"¿¿¿¿¿#>| <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US"> <id>tag:github.com,2008:/Hailuu3333</id> <link type="text/html" rel="alternate" href="https://github.com/Hailuu3333"/> <link type="application/atom+xml" rel="self" href="https://github.com/Hailuu3333.private.atom?token=AWURDBH7ASDDKL3TWM5OQS57363BS"/> <title>Private Feed for Hailuu3333</title> <updated>2022-01-03T17:58:47Z</updated> <entry> <id>tag:github.com,2008:PushEvent/19562318704</id> <published>2022-01-03T17:58:47Z</published> <updated>2022-01-03T17:58:47Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/e746e8910e...5e157d1ff0"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:58:47Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/5e157d1ff014dcb8f80f421cdd001bdec6fba990" rel="noreferrer">5e157d1</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update all browsers versions for PerformanceResourceTiming API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090544464" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14304" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14304/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14304" rel="noreferrer">#14304</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562301951</id> <published>2022-01-03T17:57:13Z</published> <updated>2022-01-03T17:57:13Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/ba5bbe1657...e746e8910e"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:57:13Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/e746e8910e7defdbf34cc9ef0e05965debe30f4f" rel="noreferrer">e746e89</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update WebView versions for PerformanceObserverEntryList API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090457391" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14301" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14301/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14301" rel="noreferrer">#14301</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562295899</id> <published>2022-01-03T17:56:39Z</published> <updated>2022-01-03T17:56:39Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/f52107082e...ba5bbe1657"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:56:39Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/ba5bbe16577941c22b7e69856f1dcfacbb5a3328" rel="noreferrer">ba5bbe1</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox versions for PerformanceMeasure API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090448000" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14299" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14299/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14299" rel="noreferrer">#14299</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562286119</id> <published>2022-01-03T17:55:43Z</published> <updated>2022-01-03T17:55:43Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/04b6bd0c15...f52107082e"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:55:43Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/f52107082e4f9ef8ac6e98b3f7dfd2795309d824" rel="noreferrer">f521070</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update all browsers versions for PerformanceMark API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090446499" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14298" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14298/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14298" rel="noreferrer">#14298</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562263337</id> <published>2022-01-03T17:53:34Z</published> <updated>2022-01-03T17:53:34Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/75674de739...04b6bd0c15"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:53:34Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/04b6bd0c157e737639b1ae7f94f30fa2168effa3" rel="noreferrer">04b6bd0</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for PerformanceEventTiming API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090443593" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14296" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14296/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14296" rel="noreferrer">#14296</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562241843</id> <published>2022-01-03T17:51:36Z</published> <updated>2022-01-03T17:51:36Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/29a6974a75...75674de739"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:51:36Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/75674de739775f3dd4cddef82d09b98c9a058cf9" rel="noreferrer">75674de</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox versions for api.PerformanceEventTiming.toJSON (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090445235" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14297" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14297/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14297" rel="noreferrer">#14297</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562237548</id> <published>2022-01-03T17:51:13Z</published> <updated>2022-01-03T17:51:13Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/bf39eba737...29a6974a75"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:51:13Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/29a6974a75547ca3bac6b24878bb0967c864f41a" rel="noreferrer">29a6974</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update WebView versions for api.OffscreenCanvasRenderingContext2D.can… </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562232818</id> <published>2022-01-03T17:50:48Z</published> <updated>2022-01-03T17:50:48Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/3eeeac9f61...bf39eba737"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:50:48Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/bf39eba7371b943fbe862dff0af4d0406729f94f" rel="noreferrer">bf39eba</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for OTPCredential API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090403975" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14290" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14290/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14290" rel="noreferrer">#14290</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19562188285</id> <published>2022-01-03T17:46:40Z</published> <updated>2022-01-03T17:46:40Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/4bff6425fa...3eeeac9f61"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:46:40Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/3eeeac9f61d756098fe70aeb24f502e6017750f4" rel="noreferrer">3eeeac9</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update all browsers versions for CanvasPattern API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089195844" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14202" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14202/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14202" rel="noreferrer">#14202</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561882855</id> <published>2022-01-03T17:19:44Z</published> <updated>2022-01-03T17:19:44Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/a74e1ff439...4bff6425fa"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:19:44Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/4bff6425faac6cbb58b15fc609993d960edd6827" rel="noreferrer">4bff642</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for NDEF APIs (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090332102" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14283" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14283/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14283" rel="noreferrer">#14283</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561829380</id> <published>2022-01-03T17:15:22Z</published> <updated>2022-01-03T17:15:22Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/edf64e0c97...a74e1ff439"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:15:22Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/a74e1ff4395fb92a0844164f5463d64632e7c2ca" rel="noreferrer">a74e1ff</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for MessageChannel API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090079194" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14272" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14272/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14272" rel="noreferrer">#14272</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561819576</id> <published>2022-01-03T17:14:35Z</published> <updated>2022-01-03T17:14:35Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/ebbed37e94...edf64e0c97"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:14:35Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/edf64e0c97fdfae1dc818946f8227ab94724d056" rel="noreferrer">edf64e0</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox Android versions for api.MediaStreamAudioSourceNode.me… </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561801160</id> <published>2022-01-03T17:13:04Z</published> <updated>2022-01-03T17:13:04Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/20fa4010c1...ebbed37e94"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:13:04Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/ebbed37e948956bcbc9022f49ef6f33abca74e46" rel="noreferrer">ebbed37</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update WebView versions for MediaKeyMessageEvent API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090075095" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14268" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14268/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14268" rel="noreferrer">#14268</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561788980</id> <published>2022-01-03T17:12:05Z</published> <updated>2022-01-03T17:12:05Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/d9a8229dc0...20fa4010c1"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:12:05Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/20fa4010c12cd5a0e74b1eb8cbea4d3afd89f264" rel="noreferrer">20fa401</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox Android versions for api.MediaElementAudioSourceNode.m… </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561782081</id> <published>2022-01-03T17:11:33Z</published> <updated>2022-01-03T17:11:33Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/219bae08f0...d9a8229dc0"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:11:33Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/d9a8229dc08bed161e100d25ca154375f0333fb3" rel="noreferrer">d9a8229</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for MediaDeviceInfo API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090073619" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14266" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14266/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14266" rel="noreferrer">#14266</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561757800</id> <published>2022-01-03T17:09:36Z</published> <updated>2022-01-03T17:09:36Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/77f4c09ac6...219bae08f0"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:09:36Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/219bae08f0ff3917c23d60cfa18d4701d8153d26" rel="noreferrer">219bae0</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Edge versions for KeyframeEffect API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1090071498" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14265" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14265/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14265" rel="noreferrer">#14265</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561683563</id> <published>2022-01-03T17:03:51Z</published> <updated>2022-01-03T17:03:51Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/8d3ddcf273...77f4c09ac6"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:03:51Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/77f4c09ac6f380764dc5af24fb460e2d8d2303e4" rel="noreferrer">77f4c09</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for IdleDetector API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089631424" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14258" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14258/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14258" rel="noreferrer">#14258</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561641770</id> <published>2022-01-03T17:00:42Z</published> <updated>2022-01-03T17:00:42Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/43b1c984e3...8d3ddcf273"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T17:00:42Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/8d3ddcf273becc09f9b9b36139326ca26eee4589" rel="noreferrer">8d3ddcf</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for HTMLQuoteElement API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089623277" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14256" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14256/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14256" rel="noreferrer">#14256</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561618310</id> <published>2022-01-03T16:58:55Z</published> <updated>2022-01-03T16:58:55Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/e0b6775007...43b1c984e3"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:58:55Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/43b1c984e3a15c611b0abc314cc8b0046664d3b5" rel="noreferrer">43b1c98</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update all browsers versions for HTMLFormControlsCollection API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089618163" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14253" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14253/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14253" rel="noreferrer">#14253</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561587537</id> <published>2022-01-03T16:56:25Z</published> <updated>2022-01-03T16:56:25Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/69f98959d0...e0b6775007"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:56:25Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/e0b67750076ad0d93393ccb085d1dc54d773253e" rel="noreferrer">e0b6775</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for api.HTMLElement.outerText (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089616978" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14252" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14252/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14252" rel="noreferrer">#14252</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561489898</id> <published>2022-01-03T16:48:36Z</published> <updated>2022-01-03T16:48:36Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/528d168175...69f98959d0"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:48:36Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/69f98959d01049d80574d185e8e74b11bacad813" rel="noreferrer">69f9895</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update WebView versions for HTMLCanvasElement API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089594658" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14251" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14251/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14251" rel="noreferrer">#14251</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561478464</id> <published>2022-01-03T16:47:42Z</published> <updated>2022-01-03T16:47:42Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/1c83c46f3b...528d168175"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:47:42Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/528d168175ca12effcb92663441b0bb5dba86c36" rel="noreferrer">528d168</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update WebView versions for GamepadHapticActuator API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089591518" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14250" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14250/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14250" rel="noreferrer">#14250</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561470552</id> <published>2022-01-03T16:47:04Z</published> <updated>2022-01-03T16:47:04Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/8988fadf71...1c83c46f3b"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:47:04Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/1c83c46f3b35669320196ee8ed4c058e6e27f81b" rel="noreferrer">1c83c46</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox Android versions for FormDataEvent API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089591110" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14249" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14249/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14249" rel="noreferrer">#14249</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561432212</id> <published>2022-01-03T16:44:01Z</published> <updated>2022-01-03T16:44:01Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/aee84e62b4...8988fadf71"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:44:01Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/8988fadf71141dc430fee7270277952475021227" rel="noreferrer">8988fad</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for FormData API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089590697" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14248" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14248/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14248" rel="noreferrer">#14248</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561367603</id> <published>2022-01-03T16:38:51Z</published> <updated>2022-01-03T16:38:51Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/ac60c669b9...aee84e62b4"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:38:51Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/aee84e62b43d1ef88fa59b157870bd2489d6586d" rel="noreferrer">aee84e6</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox Android versions for api.FetchEvent.handled (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089588080" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14245" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14245/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14245" rel="noreferrer">#14245</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561363029</id> <published>2022-01-03T16:38:29Z</published> <updated>2022-01-03T16:38:29Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/6e0eb31096...ac60c669b9"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:38:29Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/ac60c669b9fd4329e9d466de32b45535970748de" rel="noreferrer">ac60c66</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Chromium versions for FederatedCredential API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089587721" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14244" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14244/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14244" rel="noreferrer">#14244</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561354449</id> <published>2022-01-03T16:37:48Z</published> <updated>2022-01-03T16:37:48Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/625928c8b1...6e0eb31096"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:37:48Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/6e0eb31096b675addd01f2a4c7086881cf77b19e" rel="noreferrer">6e0eb31</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox versions for ExtendableMessageEvent API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089586405" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14243" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14243/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14243" rel="noreferrer">#14243</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561344598</id> <published>2022-01-03T16:37:00Z</published> <updated>2022-01-03T16:37:00Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/5f702b8587...625928c8b1"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:37:00Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/625928c8b125e9d7d4a86fa8c4e87ec3ff3cb69b" rel="noreferrer">625928c</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update WebView versions for ExtendableCookieChangeEvent API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089583771" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14242" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14242/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14242" rel="noreferrer">#14242</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561318915</id> <published>2022-01-03T16:35:01Z</published> <updated>2022-01-03T16:35:01Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/e68f72ae70...5f702b8587"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:35:01Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/5f702b8587e131920441b60a96e28b6b7324efe7" rel="noreferrer">5f702b8</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update Firefox versions for api.EventSource.EventSource (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089583044" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14241" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14241/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14241" rel="noreferrer">#14241</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> <entry> <id>tag:github.com,2008:PushEvent/19561277837</id> <published>2022-01-03T16:31:50Z</published> <updated>2022-01-03T16:31:50Z</updated> <link type="text/html" rel="alternate" href="https://github.com/mdn/browser-compat-data/compare/31a42b62de...e68f72ae70"/> <title type="html">foolip pushed to main in mdn/browser-compat-data</title> <author> <name>foolip</name> <uri>https://github.com/foolip</uri> </author> <media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/498917?s=30&v=4"/> <content type="html"><div class="push"><div class="body"> <!-- push --> <div class="d-flex flex-items-baseline border-bottom color-border-muted py-3"> <span class="mr-2"><a class="d-inline-block" href="/foolip" rel="noreferrer"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/498917?s=64&amp;v=4" width="32" height="32" alt="@foolip"></a></span> <div class="d-flex flex-column width-full"> <div class=""> <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/foolip" rel="noreferrer">foolip</a> pushed to <a class="Link--primary no-underline wb-break-all text-bold d-inline-block" href="/mdn/browser-compat-data" rel="noreferrer">mdn/browser-compat-data</a> <span class="color-fg-muted no-wrap f6 ml-1"> <relative-time datetime="2022-01-03T16:31:50Z" class="no-wrap">Jan 3, 2022</relative-time> </span> <div class="Box p-3 mt-2 "> <span>1 commit to</span> <a class="branch-name" href="/mdn/browser-compat-data/tree/main" rel="noreferrer">main</a> <div class="commits "> <ul class="list-style-none"> <li class="d-flex flex-items-baseline"> <span title="queengooborg"> <a class="d-inline-block" href="/queengooborg" rel="noreferrer"><img class="mr-1 avatar-user" src="https://avatars.githubusercontent.com/u/5179191?s=32&amp;v=4" width="16" height="16" alt="@queengooborg"></a> </span> <code><a class="mr-1" href="/mdn/browser-compat-data/commit/e68f72ae70c99bb9c5be7489cce03c6e4d44c8f7" rel="noreferrer">e68f72a</a></code> <div class="dashboard-break-word lh-condensed"> <blockquote> Update all browsers versions for Event API (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1089581729" data-permission-text="Title is private" data-url="https://github.com/mdn/browser-compat-data/issues/14239" data-hovercard-type="pull_request" data-hovercard-url="/mdn/browser-compat-data/pull/14239/hovercard" href="https://github.com/mdn/browser-compat-data/pull/14239" rel="noreferrer">#14239</a>) </blockquote> </div> </li> </ul> </div> </div> </div> </div> </div> </div></div></content> </entry> </feed> IsolatedStorageFile.GetUserStoreForApplication() Using stream As New IsolatedStorageFileStream("newfile.txt", FileMode.Create, storage) Using writer As New StreamWriter(stream) writer.WriteLine("I can write to Isolated Storage") End Using End Using End If End Sub ' Detect whether or not this application has the requested permission Private Function IsPermissionGranted(ByVal requestedPermission As CodeAccessPermission) As Boolean Try ' Try and get this permission requestedPermission.Demand() Return True Catch Return False End Try End Function ... End Class End Namespace using System.IO; // File, FileStream, StreamWriter using System.IO.IsolatedStorage; // IsolatedStorageFile using System.Security; // CodeAccesPermission using System.Security.Permissions; // FileIOPermission, FileIOPermissionAccess using System.Windows; // MessageBox namespace SDKSample { public class FileHandlingGraceful { public void Save() { if (IsPermissionGranted(new FileIOPermission(FileIOPermissionAccess.Write, @"c:\newfile.txt"))) { // Write to local disk using (FileStream stream = File.Create(@"c:\newfile.txt")) using (StreamWriter writer = new StreamWriter(stream)) { writer.WriteLine("I can write to local disk."); } } else { // Persist application-scope property to // isolated storage IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication(); using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream("newfile.txt", FileMode.Create, storage)) using (StreamWriter writer = new StreamWriter(stream)) { writer.WriteLine("I can write to Isolated Storage"); } } } // Detect whether or not this application has the requested permission bool IsPermissionGranted(CodeAccessPermission requestedPermission) { try { // Try and get this permission requestedPermission.Demand(); return true; } catch { return false; } } ... } } In many cases, you should be able to find a partial trust alternative. In a controlled environment, such as an intranet, custom managed frameworks can be installed across the client base into the global assembly cache (GAC). These libraries can execute code that requires full trust, and be referenced from applications that are only allowed partial trust by using AllowPartiallyTrustedCallersAttribute (for more information, see Security (WPF) and WPF Security Strategy - Platform Security). Browser Host Detection Using CAS to check for permissions is a suitable technique when you need to check on a per-permission basis. Although, this technique depends on catching exceptions as a part of normal processing, which is not recommended in general and can have performance issues. Instead, if your XAML browser application (XBAP) only runs within the Internet zone sandbox, you can use the BrowserInteropHelper.IsBrowserHosted property, which returns true for XAML browser applications (XBAPs). Note IsBrowserHosted only distinguishes whether an application is running in a browser, not which set of permissions an application is running with. Managing Permissions By default, XBAPs run with partial trust (default Internet zone permission set). However, depending on the requirements of the application, it is possible to change the set of permissions from the default. For example, if an XBAPs is launched from a local intranet, it can take advantage of an increased permission set, which is shown in the following table. Table 3: LocalIntranet and Internet Permissions Permission Attribute LocalIntranet Internet DNS Access DNS servers Yes No Environment Variables Read Yes No File Dialogs Open Yes Yes File Dialogs Unrestricted Yes No Isolated Storage Assembly isolation by user Yes No Isolated Storage Unknown isolation Yes Yes Isolated Storage Unlimited user quota Yes No Media Safe audio, video, and images Yes Yes Printing Default printing Yes No Printing Safe printing Yes Yes Reflection Emit Yes No Security Managed code execution Yes Yes Security Assert granted permissions Yes No User Interface Unrestricted Yes No User Interface Safe top level windows Yes Yes User Interface Own Clipboard Yes Yes Web Browser Safe frame navigation to HTML Yes Yes Note Cut and Paste is only allowed in partial trust when user initiated. If you need to increase permissions, you need to change the project settings and the ClickOnce application manifest. For more information, see WPF XAML Browser Applications Overview. The following documents may also be helpful. Mage.exe (Manifest Generation and Editing Tool). MageUI.exe (Manifest Generation and Editing Tool, Graphical Client). Securing ClickOnce Applications. If your XBAP requires full trust, you can use the same tools to increase the requested permissions. Although an XBAP will only receive full trust if it is installed on and launched from the local computer, the intranet, or from a URL that is listed in the browser's trusted or allowed sites. If the application is installed from the intranet or a trusted site, the user will receive the standard ClickOnce prompt notifying them of the elevated permissions. The user can choose to continue or cancel the installation. Alternatively, you can use the ClickOnce Trusted Deployment model for full trust deployment from any security zone. For more information, see Trusted Application Deployment Overview and Security (WPF). See Also Concepts Security (WPF) WPF Security Strategy - Platform Security WPF Security Strategy - Security Engineering Theme Previous Version Docs Blog Contribute Privacy & Cookies Terms of Use Trademarks © Microsoft 2021
PhongPham101190 / Red C SDKMEGA SDK - Client Access Engine Coverity Scan Build Status MEGA --- The Privacy Company --- is a Secure Cloud Storage provider that protects your data thanks to end-to-end encryption. We call it User Controlled Encryption, or UCE, and all our clients automatically manage it. All files stored on MEGA are encrypted. All data transfers from and to MEGA are encrypted. And while most cloud storage providers can and do claim the same, MEGA is different – unlike the industry norm where the cloud storage provider holds the decryption key, with MEGA, you control the encryption, you hold the keys, and you decide who you grant or deny access to your files. This SDK brings you all the power of our client applications and let you create your own or analyze the security of our products. Are you ready to start? Please continue reading. SDK Contents In this SDK, you can find our low level SDK, that was already released few months after the MEGA launch, a new intermediate layer to make it easier to use and to bind with other programming languages, and example apps for all our currently supported platforms (Windows, Linux, OSX, Android, iOS and Windows Phone). In the examples folder you can find example apps using: The low level SDK: megacli (a powerful command line tool that allows to use all SDK features) megasimplesync (a command line tool that allows to use the synchronization engine) The intermediate layer: An example app for Visual Studio in examples/win32 An example app for Android (using Java bindings based on SWIG) in examples/android An example app for iOS (using Objective-C bindings) in examples/iOS An example app for Windows Phone (using Windows Phone bindings) in examples/wp8 Building If you plan to develop an app using this SDK, please use the stable branch or the last released tarball. The master branch is continuously evolving, could be unstable and could change very often. For platforms with Autotools, the generic way to build and install it is: sh autogen.sh ./configure make sudo make install That compilation will include the examples using our low level SDK (megacli and megasimplesync) You also have specific build instructions for OSX (doc/OSX.txt) and FreeBSD (doc/FreeBSD.txt) and a build script to automatically download and build the SDK along with all its dependencies (contrib/build_sdk.sh) For other platforms, or if you want to see how to use the new intermediate layer, the easiest way is to get a smooth start is to build one of the examples in subfolders of the examples folder. All these folders contains a README.md file with information about how to get the project up and running, including the installation of all required dependencies. Usage The low level SDK doesn't have inline documentation yet. If you want to use it, please check one of our example apps (examples/megacli, examples/megasimplesync). The new intermediate layer has been documented using Doxygen. The only public header that you need to include to use is include/megaapi.h. You can read the documentation in that header file, or download the same documentation in HTML format from this link: https://mega.co.nz/#!c5FzhBJL!HUVjsOJTylwkmXPZ0AxT66Wuu4YvZInyHbWGYgvTHt4 Additional info Platform Dependencies Dependencies are different for each platform because the SDK uses generic interfaces to get some features and they have different implentations: Network (cURL with OpenSSL/c-ares or WinHTTP) Filesystem access (Posix or Win32) Graphics management (FreeImage, QT or iOS frameworks) Database (SQLite or Berkeley DB) Threads/mutexes (Win32, pthread, QT threads, or C++11) POSIX (Linux/Darwin/BSD/OSX ...) Install the following development packages, if available, or download and compile their respective sources (package names are for Debian and RedHat derivatives, respectively): cURL (libcurl4-openssl-dev, libcurl-devel), compiled with --enable-ssl c-ares (libc-ares-dev, libcares-devel, c-ares-devel) OpenSSL (libssl-dev, openssl-devel) Crypto++ (libcrypto++-dev, libcryptopp-devel) zlib (zlib1g-dev, zlib-devel) SQLite (libsqlite3-dev, sqlite-devel) or configure --without-sqlite FreeImage (libfreeimage-dev, freeimage-devel) or configure --without-freeimage pthread Optional dependency: Sodium (libsodium-dev, libsodium-devel), configure --with-sodium Filesystem event monitoring: The provided filesystem layer implements the Linux inotify and the MacOS fsevents interfaces. To build the reference megacli example, you may also need to install: GNU Readline (libreadline-dev, readline-devel) For Android, we provide an additional implementation of the graphics subsystem using Android libraries. For iOS, we provide an additional implementation of the graphics subsystem using Objective C frameworks. Windows To build the client access engine under Windows, you'll need the following: A Windows-native C++ development environment (e.g. MinGW or Visual Studio) Crypto++ zlib (until WinHTTP learns how to deal with Content-Encoding: gzip) SQLite or configure --without-sqlite FreeImage or configure --without-freeimage pthreads (MinGW) Optional dependency: Sodium or configure --with-sodium To build the reference megacli.exe example, you will also need to procure development packages (at least headers and .lib/.a libraries) of: GNU Readline/Termcap Folder syncing In this version, the sync functionality is limited in scope and functionality: There is no locking between clients accessing the same remote folder. Concurrent creation of identically named files and folders can result in server-side dupes. Syncing between clients with differing filesystem naming semantics can lead to loss of data, e.g. when syncing a folder containing ABC.TXT and abc.txt with a Windows client. On POSIX platforms, filenames are assumed to be encoded in UTF-8. Invalid byte sequences can lead to undefined behaviour. Local filesystem items must not be exposed to the sync subsystem more than once. Any dupes, whether by nesting syncs or through filesystem links, will lead to unexpected results and loss of data. No in-place versioning. Deleted remote files can be found in //bin/SyncDebris (only when syncing to the logged in account's own cloud drive - there is no SyncDebris facility on syncs to inbound shares), deleted local files in a sync-specific hidden debris folder located in the local sync's root folder. No delta writes. Changed files are always overwritten as a whole, which means that it is not a good idea to sync e.g. live database tables. No direct peer-to-peer syncing. Even two machines in the same local subnet will still sync via the remote storage infrastructure. No support for unidirectional syncing (backup-only, restore-only). Syncing to an inbound share requires it to have full access rights. megacli on Windows The megacli example is currently not handling console Unicode input/output correctly if run in cmd.exe. Filename caveats: Please prefix all paths with \\?\ to avoid the following issues: The MAX_PATH (260 character) length limitation, which would make it impossible to access files in deep directory structures Prohibited filenames (con/prn/aux/clock$/nul/com1...com9/lpt1...lpt9). Such files and folders will still be inaccessible through e.g. Explorer! Also, disable automatic short name generation to eliminate the risk of clashes with existing short names.
etherceo1x1 / CodesBUILD YOUR OWN BLOCKCHAIN: A PYTHON TUTORIAL Download the full Jupyter/iPython notebook from Github here Build Your Own Blockchain – The Basics¶ This tutorial will walk you through the basics of how to build a blockchain from scratch. Focusing on the details of a concrete example will provide a deeper understanding of the strengths and limitations of blockchains. For a higher-level overview, I’d recommend this excellent article from BitsOnBlocks. Transactions, Validation, and updating system state¶ At its core, a blockchain is a distributed database with a set of rules for verifying new additions to the database. We’ll start off by tracking the accounts of two imaginary people: Alice and Bob, who will trade virtual money with each other. We’ll need to create a transaction pool of incoming transactions, validate those transactions, and make them into a block. We’ll be using a hash function to create a ‘fingerprint’ for each of our transactions- this hash function links each of our blocks to each other. To make this easier to use, we’ll define a helper function to wrap the python hash function that we’re using. In [1]: import hashlib, json, sys def hashMe(msg=""): # For convenience, this is a helper function that wraps our hashing algorithm if type(msg)!=str: msg = json.dumps(msg,sort_keys=True) # If we don't sort keys, we can't guarantee repeatability! if sys.version_info.major == 2: return unicode(hashlib.sha256(msg).hexdigest(),'utf-8') else: return hashlib.sha256(str(msg).encode('utf-8')).hexdigest() Next, we want to create a function to generate exchanges between Alice and Bob. We’ll indicate withdrawals with negative numbers, and deposits with positive numbers. We’ll construct our transactions to always be between the two users of our system, and make sure that the deposit is the same magnitude as the withdrawal- i.e. that we’re neither creating nor destroying money. In [2]: import random random.seed(0) def makeTransaction(maxValue=3): # This will create valid transactions in the range of (1,maxValue) sign = int(random.getrandbits(1))*2 - 1 # This will randomly choose -1 or 1 amount = random.randint(1,maxValue) alicePays = sign * amount bobPays = -1 * alicePays # By construction, this will always return transactions that respect the conservation of tokens. # However, note that we have not done anything to check whether these overdraft an account return {u'Alice':alicePays,u'Bob':bobPays} Now let’s create a large set of transactions, then chunk them into blocks. In [3]: txnBuffer = [makeTransaction() for i in range(30)] Next step: making our very own blocks! We’ll take the first k transactions from the transaction buffer, and turn them into a block. Before we do that, we need to define a method for checking the valididty of the transactions we’ve pulled into the block. For bitcoin, the validation function checks that the input values are valid unspent transaction outputs (UTXOs), that the outputs of the transaction are no greater than the input, and that the keys used for the signatures are valid. In Ethereum, the validation function checks that the smart contracts were faithfully executed and respect gas limits. No worries, though- we don’t have to build a system that complicated. We’ll define our own, very simple set of rules which make sense for a basic token system: The sum of deposits and withdrawals must be 0 (tokens are neither created nor destroyed) A user’s account must have sufficient funds to cover any withdrawals If either of these conditions are violated, we’ll reject the transaction. In [4]: def updateState(txn, state): # Inputs: txn, state: dictionaries keyed with account names, holding numeric values for transfer amount (txn) or account balance (state) # Returns: Updated state, with additional users added to state if necessary # NOTE: This does not not validate the transaction- just updates the state! # If the transaction is valid, then update the state state = state.copy() # As dictionaries are mutable, let's avoid any confusion by creating a working copy of the data. for key in txn: if key in state.keys(): state[key] += txn[key] else: state[key] = txn[key] return state In [5]: def isValidTxn(txn,state): # Assume that the transaction is a dictionary keyed by account names # Check that the sum of the deposits and withdrawals is 0 if sum(txn.values()) is not 0: return False # Check that the transaction does not cause an overdraft for key in txn.keys(): if key in state.keys(): acctBalance = state[key] else: acctBalance = 0 if (acctBalance + txn[key]) < 0: return False return True Here are a set of sample transactions, some of which are fraudulent- but we can now check their validity! In [6]: state = {u'Alice':5,u'Bob':5} print(isValidTxn({u'Alice': -3, u'Bob': 3},state)) # Basic transaction- this works great! print(isValidTxn({u'Alice': -4, u'Bob': 3},state)) # But we can't create or destroy tokens! print(isValidTxn({u'Alice': -6, u'Bob': 6},state)) # We also can't overdraft our account. print(isValidTxn({u'Alice': -4, u'Bob': 2,'Lisa':2},state)) # Creating new users is valid print(isValidTxn({u'Alice': -4, u'Bob': 3,'Lisa':2},state)) # But the same rules still apply! True False False True False Each block contains a batch of transactions, a reference to the hash of the previous block (if block number is greater than 1), and a hash of its contents and the header Building the Blockchain: From Transactions to Blocks¶ We’re ready to start making our blockchain! Right now, there’s nothing on the blockchain, but we can get things started by defining the ‘genesis block’ (the first block in the system). Because the genesis block isn’t linked to any prior block, it gets treated a bit differently, and we can arbitrarily set the system state. In our case, we’ll create accounts for our two users (Alice and Bob) and give them 50 coins each. In [7]: state = {u'Alice':50, u'Bob':50} # Define the initial state genesisBlockTxns = [state] genesisBlockContents = {u'blockNumber':0,u'parentHash':None,u'txnCount':1,u'txns':genesisBlockTxns} genesisHash = hashMe( genesisBlockContents ) genesisBlock = {u'hash':genesisHash,u'contents':genesisBlockContents} genesisBlockStr = json.dumps(genesisBlock, sort_keys=True) Great! This becomes the first element from which everything else will be linked. In [8]: chain = [genesisBlock] For each block, we want to collect a set of transactions, create a header, hash it, and add it to the chain In [9]: def makeBlock(txns,chain): parentBlock = chain[-1] parentHash = parentBlock[u'hash'] blockNumber = parentBlock[u'contents'][u'blockNumber'] + 1 txnCount = len(txns) blockContents = {u'blockNumber':blockNumber,u'parentHash':parentHash, u'txnCount':len(txns),'txns':txns} blockHash = hashMe( blockContents ) block = {u'hash':blockHash,u'contents':blockContents} return block Let’s use this to process our transaction buffer into a set of blocks: In [10]: blockSizeLimit = 5 # Arbitrary number of transactions per block- # this is chosen by the block miner, and can vary between blocks! while len(txnBuffer) > 0: bufferStartSize = len(txnBuffer) ## Gather a set of valid transactions for inclusion txnList = [] while (len(txnBuffer) > 0) & (len(txnList) < blockSizeLimit): newTxn = txnBuffer.pop() validTxn = isValidTxn(newTxn,state) # This will return False if txn is invalid if validTxn: # If we got a valid state, not 'False' txnList.append(newTxn) state = updateState(newTxn,state) else: print("ignored transaction") sys.stdout.flush() continue # This was an invalid transaction; ignore it and move on ## Make a block myBlock = makeBlock(txnList,chain) chain.append(myBlock) In [11]: chain[0] Out[11]: {'contents': {'blockNumber': 0, 'parentHash': None, 'txnCount': 1, 'txns': [{'Alice': 50, 'Bob': 50}]}, 'hash': '7c88a4312054f89a2b73b04989cd9b9e1ae437e1048f89fbb4e18a08479de507'} In [12]: chain[1] Out[12]: {'contents': {'blockNumber': 1, 'parentHash': '7c88a4312054f89a2b73b04989cd9b9e1ae437e1048f89fbb4e18a08479de507', 'txnCount': 5, 'txns': [{'Alice': 3, 'Bob': -3}, {'Alice': -1, 'Bob': 1}, {'Alice': 3, 'Bob': -3}, {'Alice': -2, 'Bob': 2}, {'Alice': 3, 'Bob': -3}]}, 'hash': '7a91fc8206c5351293fd11200b33b7192e87fad6545504068a51aba868bc6f72'} As expected, the genesis block includes an invalid transaction which initiates account balances (creating tokens out of thin air). The hash of the parent block is referenced in the child block, which contains a set of new transactions which affect system state. We can now see the state of the system, updated to include the transactions: In [13]: state Out[13]: {'Alice': 72, 'Bob': 28} Checking Chain Validity¶ Now that we know how to create new blocks and link them together into a chain, let’s define functions to check that new blocks are valid- and that the whole chain is valid. On a blockchain network, this becomes important in two ways: When we initially set up our node, we will download the full blockchain history. After downloading the chain, we would need to run through the blockchain to compute the state of the system. To protect against somebody inserting invalid transactions in the initial chain, we need to check the validity of the entire chain in this initial download. Once our node is synced with the network (has an up-to-date copy of the blockchain and a representation of system state) it will need to check the validity of new blocks that are broadcast to the network. We will need three functions to facilitate in this: checkBlockHash: A simple helper function that makes sure that the block contents match the hash checkBlockValidity: Checks the validity of a block, given its parent and the current system state. We want this to return the updated state if the block is valid, and raise an error otherwise. checkChain: Check the validity of the entire chain, and compute the system state beginning at the genesis block. This will return the system state if the chain is valid, and raise an error otherwise. In [14]: def checkBlockHash(block): # Raise an exception if the hash does not match the block contents expectedHash = hashMe( block['contents'] ) if block['hash']!=expectedHash: raise Exception('Hash does not match contents of block %s'% block['contents']['blockNumber']) return In [15]: def checkBlockValidity(block,parent,state): # We want to check the following conditions: # - Each of the transactions are valid updates to the system state # - Block hash is valid for the block contents # - Block number increments the parent block number by 1 # - Accurately references the parent block's hash parentNumber = parent['contents']['blockNumber'] parentHash = parent['hash'] blockNumber = block['contents']['blockNumber'] # Check transaction validity; throw an error if an invalid transaction was found. for txn in block['contents']['txns']: if isValidTxn(txn,state): state = updateState(txn,state) else: raise Exception('Invalid transaction in block %s: %s'%(blockNumber,txn)) checkBlockHash(block) # Check hash integrity; raises error if inaccurate if blockNumber!=(parentNumber+1): raise Exception('Hash does not match contents of block %s'%blockNumber) if block['contents']['parentHash'] != parentHash: raise Exception('Parent hash not accurate at block %s'%blockNumber) return state In [16]: def checkChain(chain): # Work through the chain from the genesis block (which gets special treatment), # checking that all transactions are internally valid, # that the transactions do not cause an overdraft, # and that the blocks are linked by their hashes. # This returns the state as a dictionary of accounts and balances, # or returns False if an error was detected ## Data input processing: Make sure that our chain is a list of dicts if type(chain)==str: try: chain = json.loads(chain) assert( type(chain)==list) except: # This is a catch-all, admittedly crude return False elif type(chain)!=list: return False state = {} ## Prime the pump by checking the genesis block # We want to check the following conditions: # - Each of the transactions are valid updates to the system state # - Block hash is valid for the block contents for txn in chain[0]['contents']['txns']: state = updateState(txn,state) checkBlockHash(chain[0]) parent = chain[0] ## Checking subsequent blocks: These additionally need to check # - the reference to the parent block's hash # - the validity of the block number for block in chain[1:]: state = checkBlockValidity(block,parent,state) parent = block return state We can now check the validity of the state: In [17]: checkChain(chain) Out[17]: {'Alice': 72, 'Bob': 28} And even if we are loading the chain from a text file, e.g. from backup or loading it for the first time, we can check the integrity of the chain and create the current state: In [18]: chainAsText = json.dumps(chain,sort_keys=True) checkChain(chainAsText) Out[18]: {'Alice': 72, 'Bob': 28} Putting it together: The final Blockchain Architecture¶ In an actual blockchain network, new nodes would download a copy of the blockchain and verify it (as we just did above), then announce their presence on the peer-to-peer network and start listening for transactions. Bundling transactions into a block, they then pass their proposed block on to other nodes. We’ve seen how to verify a copy of the blockchain, and how to bundle transactions into a block. If we recieve a block from somewhere else, verifying it and adding it to our blockchain is easy. Let’s say that the following code runs on Node A, which mines the block: In [19]: import copy nodeBchain = copy.copy(chain) nodeBtxns = [makeTransaction() for i in range(5)] newBlock = makeBlock(nodeBtxns,nodeBchain) Now assume that the newBlock is transmitted to our node, and we want to check it and update our state if it is a valid block: In [20]: print("Blockchain on Node A is currently %s blocks long"%len(chain)) try: print("New Block Received; checking validity...") state = checkBlockValidity(newBlock,chain[-1],state) # Update the state- this will throw an error if the block is invalid! chain.append(newBlock) except: print("Invalid block; ignoring and waiting for the next block...") print("Blockchain on Node A is now %s blocks long"%len(chain)) Blockchain on Node A is currently 7 blocks long New Block Received; checking validity... Blockchain on Node A is now 8 blocks long
google-ads-confidential-computing / Conf Data Processing Architecture ReferenceNo description available
timn / Ros Laser Linesline detection in laser data as reference frame for ROS