mirror of
https://github.com/osmoscraft/osmosfeed-template.git
synced 2026-03-11 14:44:24 +00:00
deploy: 1f5684a2ae
This commit is contained in:
parent
5f0d41fe21
commit
69bc01d853
3 changed files with 182 additions and 182 deletions
132
cache.json
132
cache.json
|
|
@ -21,6 +21,24 @@
|
|||
"feedUrl": "https://css-tricks.com/feed/",
|
||||
"siteUrl": "https://css-tricks.com",
|
||||
"articles": [
|
||||
{
|
||||
"id": "https://css-tricks.com/?p=352082",
|
||||
"author": "Robin Rendle",
|
||||
"description": "My favorite kind of blog post is when someone takes a subject that I’ve spent all of five minutes considering and then says—no!—this is an enormous topic worthy of a dissertation. Look at all the things you can do with …\nThe post Designing Beautiful Shadows in CSS appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://www.joshwcomeau.com/css/designing-shadows/",
|
||||
"publishedOn": "2021-09-17T22:49:39.000Z",
|
||||
"wordCount": 3620,
|
||||
"title": "Designing Beautiful Shadows in CSS"
|
||||
},
|
||||
{
|
||||
"id": "https://css-tricks.com/?p=350843",
|
||||
"author": "Wladston Viana Ferreira Filho",
|
||||
"description": "Humans crave connections, and the advent of the digital revolution has empowered us to be more connected than ever before. The Internet has unleashed upon billions of people unprecedented economic and political freedom, as well as powerful means of control and domination. Yet, the vast majority of us are oblivious to its inner workings.\nThe post Computer Science Unleashed, Chapter 1: Connections appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://css-tricks.com/computer-science-unleashed-chapter-1-connections/",
|
||||
"publishedOn": "2021-09-17T15:27:49.000Z",
|
||||
"wordCount": 7973,
|
||||
"title": "Computer Science Unleashed, Chapter 1: Connections"
|
||||
},
|
||||
{
|
||||
"id": "https://css-tricks.com/?p=351915",
|
||||
"author": "Chris Coyier",
|
||||
|
|
@ -72,7 +90,7 @@
|
|||
"description": "Have you ever been in a situation where you wish you could have some control over the values in an object or array? Maybe you wanted to prevent certain types of data or even validate the data before storing it …\nThe post An Intro to JavaScript Proxy appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://css-tricks.com/an-intro-to-javascript-proxy/",
|
||||
"publishedOn": "2021-09-15T14:21:27.000Z",
|
||||
"wordCount": 5337,
|
||||
"wordCount": 5359,
|
||||
"title": "An Intro to JavaScript Proxy"
|
||||
},
|
||||
{
|
||||
|
|
@ -81,7 +99,7 @@
|
|||
"description": "Blogging about HTML elements¹? *chefs kiss*\nHere’s Ben Myers on the (aptly described) “underrated” Definition List (<dl>) element in HTML:\nYou might have also seen lists of name–value pairs to describe lodging amenities, or to list \n…\nThe post On the `dl` appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://css-tricks.com/on-the-dl/",
|
||||
"publishedOn": "2021-09-14T22:37:21.000Z",
|
||||
"wordCount": 613,
|
||||
"wordCount": 634,
|
||||
"title": "On the `dl`"
|
||||
},
|
||||
{
|
||||
|
|
@ -90,7 +108,7 @@
|
|||
"description": "Learn how to build an HTML form in PHP using DOMDocument — a structured and expressive way to build logical markup.\nThe post Building a Form in PHP Using DOMDocument appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://css-tricks.com/building-a-form-in-php-using-domdocument/",
|
||||
"publishedOn": "2021-09-14T14:36:24.000Z",
|
||||
"wordCount": 4342,
|
||||
"wordCount": 4375,
|
||||
"title": "Building a Form in PHP Using DOMDocument"
|
||||
},
|
||||
{
|
||||
|
|
@ -135,26 +153,8 @@
|
|||
"description": "I believe acss.io is the first usage of “Atomic CSS” where the point of it is to be a compiler. You write CSS like this:\n<div class=\"C(#333) P(20px)\"text\n</div\nAnd it will generate CSS like:\n.C\\(\\#333\\) {\n color: #333;\n\n…\nThe post “Just in Time” CSS appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://css-tricks.com/just-in-time-css/",
|
||||
"publishedOn": "2021-09-10T20:32:51.000Z",
|
||||
"wordCount": 2420,
|
||||
"wordCount": 2486,
|
||||
"title": "“Just in Time” CSS"
|
||||
},
|
||||
{
|
||||
"id": "https://css-tricks.com/?p=351034",
|
||||
"author": "Preethi",
|
||||
"description": "We might leave a text input unstyled. We might leave a link unstyled. Even a button. But checkboxes… we don’t leave them alone. That’s why styling checkboxes never gets old.\nAlthough designing checkboxes is not that complicated, we also don’t …\nThe post Fun Times Styling Checkbox States appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://css-tricks.com/fun-times-styling-checkbox-states/",
|
||||
"publishedOn": "2021-09-10T14:53:24.000Z",
|
||||
"wordCount": 1665,
|
||||
"title": "Fun Times Styling Checkbox States"
|
||||
},
|
||||
{
|
||||
"id": "https://css-tricks.com/?p=351697",
|
||||
"author": "Chris Coyier",
|
||||
"description": "I had no idea this was coming but it’s pretty neat! Chrome has shipped the EyeDropper API in v95 (Canary, as I write). \n🎨 Loving the new `EyeDropper` Web API: \n“`js\nawait new EyeDropper().open();\n// Returns the picked color, e.g.,\n…\nThe post EyeDropper API Dropped appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.",
|
||||
"link": "https://css-tricks.com/eyedropper-api-dropped/",
|
||||
"publishedOn": "2021-09-10T14:47:11.000Z",
|
||||
"wordCount": 625,
|
||||
"title": "EyeDropper API Dropped"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -163,13 +163,27 @@
|
|||
"feedUrl": "https://www.smashingmagazine.com/feed/",
|
||||
"siteUrl": "https://www.smashingmagazine.com/",
|
||||
"articles": [
|
||||
{
|
||||
"id": "https://smashingmagazine.com/2021/09/monetize-open-source-software-gatsby-functions-stripe/",
|
||||
"author": "hello@smashingmagazine.com (Paul Scanlon)",
|
||||
"description": "Gatsby Functions provide front-end developers a way to write and use server-side code without the hassle of maintaining a server. If making money from open-source is of interest to you and your site isn’t built using Gatsby, this approach may well be the answer you were looking for.",
|
||||
"link": "https://smashingmagazine.com/2021/09/monetize-open-source-software-gatsby-functions-stripe/",
|
||||
"publishedOn": "2021-09-17T09:00:00.000Z",
|
||||
"wordCount": 2570,
|
||||
"title": "Monetize Open-Source Software With Gatsby Functions And Stripe",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/73f6525b-6678-4db1-a875-16150bc822cd/monetize-open-source-software-gatsby-functions-stripe.jpg",
|
||||
"length": "0",
|
||||
"type": "image/jpg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "https://smashingmagazine.com/2021/09/journey-into-web-quality-assurance/",
|
||||
"author": "hello@smashingmagazine.com (Elie Sloïm)",
|
||||
"description": "Twenty years ago, Elie Sloïm chose to dedicate his professional life to web quality assurance. He started asking, ”What does quality mean for a web user?” Well, this article explains everything he has learned along the way.",
|
||||
"link": "https://smashingmagazine.com/2021/09/journey-into-web-quality-assurance/",
|
||||
"publishedOn": "2021-09-16T12:00:00.000Z",
|
||||
"wordCount": 4537,
|
||||
"wordCount": 4505,
|
||||
"title": "Web Quality Assurance: From User Requirements To Web Risk Management",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/da816ee2-199c-49e8-8f63-f50d1fb5adb7/journey-into-web-quality-assurance.jpg",
|
||||
|
|
@ -197,7 +211,7 @@
|
|||
"description": "For years, pseudo-elements have faithfully helped front-end developers implement creative designs. While they still have an important place, we can now leave pseudo-elements behind in some scenarios, thanks to newer CSS properties.",
|
||||
"link": "https://smashingmagazine.com/2021/09/reducing-need-pseudo-elements/",
|
||||
"publishedOn": "2021-09-15T10:00:00.000Z",
|
||||
"wordCount": 1948,
|
||||
"wordCount": 1934,
|
||||
"title": "Reducing The Need For Pseudo-Elements",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/c994e024-5695-4cf7-b9b6-dc589e547f19/reducing-need-pseudo-elements.jpg",
|
||||
|
|
@ -211,7 +225,7 @@
|
|||
"description": "When designing for digital spaces, it’s natural to default to digital mockup tools, but doing so cuts out a world of possibilities. Analog drawing can unleash your imagination and allow you to focus on what’s most important at the start: the ideas.",
|
||||
"link": "https://smashingmagazine.com/2021/09/power-pen-paper-sketching/",
|
||||
"publishedOn": "2021-09-14T09:30:00.000Z",
|
||||
"wordCount": 2095,
|
||||
"wordCount": 2079,
|
||||
"title": "The Power Of Pen And Paper Sketching",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/e4a5bd0b-53db-40c2-90d9-9d0a19b8d377/power-pen-paper-sketching.jpg",
|
||||
|
|
@ -225,7 +239,7 @@
|
|||
"description": "There are way too many options in Web Animations API to pick them up that easily. Learning how timing works and how to control the playback of several animations at once makes for a solid foundation on which to base your projects on.",
|
||||
"link": "https://smashingmagazine.com/2021/09/orchestrating-complexity-web-animations-api/",
|
||||
"publishedOn": "2021-09-13T09:00:00.000Z",
|
||||
"wordCount": 3018,
|
||||
"wordCount": 2991,
|
||||
"title": "Orchestrating Complexity With Web Animations API",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/cc4a9b5f-fd83-4fc0-9966-6f98707d1466/orchestrating-complexity-web-animations-api.jpg",
|
||||
|
|
@ -239,7 +253,7 @@
|
|||
"description": "They say content is king, and they’re right. The web has unlocked untold possibilities for storytellers — provided the story is right, of course. Here are some of our favorite examples of editorial content thriving in the digital realm.",
|
||||
"link": "https://smashingmagazine.com/2021/09/web-design-done-well-excellent-editorial/",
|
||||
"publishedOn": "2021-09-10T10:00:00.000Z",
|
||||
"wordCount": 2050,
|
||||
"wordCount": 2038,
|
||||
"title": "Web Design Done Well: Excellent Editorial",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7af3bbbe-821b-4e3c-870a-f8290ed52212/web-design-done-well-excellent-editorial.jpg",
|
||||
|
|
@ -253,7 +267,7 @@
|
|||
"description": "When paired with ISR and Next.js’ API routes, SWR can be used to create a responsive user experience. In this article, Sam Poder explains what SWR is, where to use it (and where not), and how to build a website by using Incremental Static Regeneration.",
|
||||
"link": "https://smashingmagazine.com/2021/09/useswr-react-hook-library-incremental-static-regeneration-nextjs/",
|
||||
"publishedOn": "2021-09-09T10:30:00.000Z",
|
||||
"wordCount": 2074,
|
||||
"wordCount": 2052,
|
||||
"title": "Using SWR React Hooks With Next.js’ Incremental Static Regeneration (ISR)",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/47c6e5fc-73b3-41fe-afb7-b640b860efa0/useswr-react-hook-library-incremental-static-regeneration-nextjs.jpg",
|
||||
|
|
@ -267,7 +281,7 @@
|
|||
"description": "In this article, we’ll walk through the process of taking a seemingly simple design for a text-and-media component and deciding how best to translate it into code, keeping in mind the needs of both users and content authors.",
|
||||
"link": "https://smashingmagazine.com/2021/09/developer-decisions-building-flexible-components/",
|
||||
"publishedOn": "2021-09-08T10:30:00.000Z",
|
||||
"wordCount": 2869,
|
||||
"wordCount": 2853,
|
||||
"title": "Developer Decisions For Building Flexible Components",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/76d3eef0-2a0a-45e0-b0bb-399da37c3834/developer-decisions-building-flexible-components.jpg",
|
||||
|
|
@ -295,7 +309,7 @@
|
|||
"description": "Learn what’s new with developer tools in Firefox, Edge, Chrome and Safari. Discover new and powerful features that will help you be more comfortable and productive when testing and debugging across browsers.",
|
||||
"link": "https://smashingmagazine.com/2021/09/devtools-cross-browser-edition/",
|
||||
"publishedOn": "2021-09-07T10:00:00.000Z",
|
||||
"wordCount": 4050,
|
||||
"wordCount": 4039,
|
||||
"title": "What’s New With DevTools: Cross-Browser Edition",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/1e0eef0e-e4b0-45b6-8afd-1d1a60b7c53b/devtools-cross-browsers.jpg",
|
||||
|
|
@ -309,7 +323,7 @@
|
|||
"description": "After almost five years in development, the new HTTP/3 protocol is nearing its final form. Let’s take a close look at the challenges involved in deploying and testing HTTP/3, and how and if you should change your websites and resources as well.",
|
||||
"link": "https://smashingmagazine.com/2021/09/http3-practical-deployment-options-part3/",
|
||||
"publishedOn": "2021-09-06T11:00:00.000Z",
|
||||
"wordCount": 9733,
|
||||
"wordCount": 9715,
|
||||
"title": "HTTP/3: Practical Deployment Options (Part 3)",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/a19cca97-b411-44a6-a8be-e1468a0df78a/http3-practical-deployment-options-part3.jpg",
|
||||
|
|
@ -323,7 +337,7 @@
|
|||
"description": "Websites, unfortunately, aren’t as environmentally friendly as we might like them to be. This article contains some thoughts and experiences from trying to clean them up.",
|
||||
"link": "https://smashingmagazine.com/2021/09/reducing-carbon-emissions-on-web/",
|
||||
"publishedOn": "2021-09-03T11:30:00.000Z",
|
||||
"wordCount": 3575,
|
||||
"wordCount": 3557,
|
||||
"title": "Reducing Carbon Emissions On The Web",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bdef7e38-4e37-4177-a7b3-d74860c7724f/reducing-carbon-emissions-on-web.jpg",
|
||||
|
|
@ -337,7 +351,7 @@
|
|||
"description": "Interactive coding tools to help you learn CSS, JavaScript, SQL, React, Vim, regular expressions and Jamstack.",
|
||||
"link": "https://smashingmagazine.com/2021/09/interactive-learning-tools-front-end-developers/",
|
||||
"publishedOn": "2021-09-02T12:00:00.000Z",
|
||||
"wordCount": 2436,
|
||||
"wordCount": 2423,
|
||||
"title": "Interactive Learning Tools For Front-End Developers",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/7f13aec3-8dd5-4085-afce-c752db3abfb6/interactive-learning-tools-front-end-developers.jpg",
|
||||
|
|
@ -351,7 +365,7 @@
|
|||
"description": "What exactly is a displacement filter? In this article, Dirk Weber explains the SVG `feDisplacementMap` filter primitive with a good number of examples to demonstrate the concept of animated displacement maps.",
|
||||
"link": "https://smashingmagazine.com/2021/09/deep-dive-wonderful-world-svg-displacement-filtering/",
|
||||
"publishedOn": "2021-09-01T10:30:00.000Z",
|
||||
"wordCount": 5589,
|
||||
"wordCount": 5567,
|
||||
"title": "A Deep Dive Into The Wonderful World Of SVG Displacement Filtering",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92af7db6-94b4-4e48-8e20-875af2d5e024/deep-dive-svg-displacement-filtering.jpg",
|
||||
|
|
@ -379,7 +393,7 @@
|
|||
"description": "New month, new wallpapers! In this post, you’ll find inspiring wallpaper designs for September 2021. They were created with love by artists and designers from across the globe and are available with and without a calendar. Enjoy!",
|
||||
"link": "https://smashingmagazine.com/2021/08/desktop-wallpaper-calendars-september-2021/",
|
||||
"publishedOn": "2021-08-31T08:00:00.000Z",
|
||||
"wordCount": 2413,
|
||||
"wordCount": 2405,
|
||||
"title": "Stories Of September (2021 Desktop Wallpapers Edition)",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bdfaaaac-a4fb-475b-997c-ac45db998da0/sep-21-finding-the-balance-preview-opt.png",
|
||||
|
|
@ -393,7 +407,7 @@
|
|||
"description": "There are many CSS optimization techniques to tackle potential file size and performance issues. Let’s take a look at some of them. After all, if deploying the refactored codebase causes loading or performance issues, it will result in less traffic and revenue, which might leave the management and project managers dissatisfied.",
|
||||
"link": "https://smashingmagazine.com/2021/08/refactoring-css-optimizing-size-performance-part3/",
|
||||
"publishedOn": "2021-08-30T10:00:00.000Z",
|
||||
"wordCount": 3701,
|
||||
"wordCount": 3682,
|
||||
"title": "Refactoring CSS: Optimizing Size And Performance (Part 3)",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/fa4e0eab-b23c-42ac-a622-b2ca8a02edd0/refactoring-css-optimizing-size-performance-part3.jpg",
|
||||
|
|
@ -407,7 +421,7 @@
|
|||
"description": "Compound components help developers build more expressive and flexible APIs to share state and logic within components. This tutorial explains how this can be achieved with the help of using the Context API and React to build components by using this advanced pattern.",
|
||||
"link": "https://smashingmagazine.com/2021/08/compound-components-react/",
|
||||
"publishedOn": "2021-08-27T13:00:00.000Z",
|
||||
"wordCount": 3115,
|
||||
"wordCount": 3101,
|
||||
"title": "Compound Components In React",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/e9df8cb4-b274-407a-97a8-f06488571802/compound-components-react.jpg",
|
||||
|
|
@ -421,7 +435,7 @@
|
|||
"description": "The Web is still wrestling with issues we take for granted offline, privacy chief among them. These are steps The New York Times took to protect users’ data, and how you can too.",
|
||||
"link": "https://smashingmagazine.com/2021/08/against-privacy-infringement-web/",
|
||||
"publishedOn": "2021-08-26T08:00:00.000Z",
|
||||
"wordCount": 3774,
|
||||
"wordCount": 3759,
|
||||
"title": "Pushing Back Against Privacy Infringement On The Web",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/fbab17a6-483b-4e8e-b9f1-9ab583202df1/against-privacy-infringement-web.jpg",
|
||||
|
|
@ -435,7 +449,7 @@
|
|||
"description": "In this article, Leonardo explains how to use a \"multi-monorepo\" approach for making the development experience faster, yet keeping your PHP packages private. This solution can be especially beneficial for PRO plugin creators.",
|
||||
"link": "https://smashingmagazine.com/2021/08/public-private-multi-monorepo-php-projects/",
|
||||
"publishedOn": "2021-08-25T07:10:00.000Z",
|
||||
"wordCount": 3567,
|
||||
"wordCount": 3537,
|
||||
"title": "Creating A Public/Private Multi-Monorepo For PHP Projects",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/a223ab2b-d926-4fec-a422-bed6e7b02178/01-architecture.png",
|
||||
|
|
@ -449,7 +463,7 @@
|
|||
"description": "In this article, you’ll learn how to save hours of tedious work of writing, updating, and correcting technical documentation. In this article, you will learn how to automate your documentation workflow with Vale and GitHub Actions.",
|
||||
"link": "https://smashingmagazine.com/2021/08/automate-documentation-workflow-for-developers/",
|
||||
"publishedOn": "2021-08-24T13:00:00.000Z",
|
||||
"wordCount": 3228,
|
||||
"wordCount": 3218,
|
||||
"title": "How To Automate Documentation Workflow For Developers",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68266575-8f47-415b-9c91-7004a02944ee/action-github-1.png",
|
||||
|
|
@ -463,7 +477,7 @@
|
|||
"description": "After almost five years in development, the new HTTP/3 protocol is nearing its final form. Let’s take a close look at the performance improvements of HTTP/3, congestion control, head-of-line-blocking, and 0-RTT connection set-up.",
|
||||
"link": "https://smashingmagazine.com/2021/08/http3-performance-improvements-part2/",
|
||||
"publishedOn": "2021-08-23T06:20:00.000Z",
|
||||
"wordCount": 10543,
|
||||
"wordCount": 10528,
|
||||
"title": "HTTP/3: Performance Improvements (Part 2)",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9d5e5ddd-7a90-48c6-84c5-dc5c335e2305/congestion-control.png",
|
||||
|
|
@ -477,27 +491,13 @@
|
|||
"description": "The story of Jamstack CMSs goes all the way back to the 90s. In this article, we take a trip down memory lane to see how we got to the modern Jamstack CMSs we have today, and where they’re heading in the next decade.",
|
||||
"link": "https://smashingmagazine.com/2021/08/history-future-jamstack-cms/",
|
||||
"publishedOn": "2021-08-20T08:00:00.000Z",
|
||||
"wordCount": 4610,
|
||||
"wordCount": 4587,
|
||||
"title": "Jamstack CMS: The Past, The Present and The Future",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/f2f37c71-d2c5-4634-b62c-2dc2eea127c1/history-future-jamstack-cms.jpg",
|
||||
"length": "0",
|
||||
"type": "image/jpg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "https://smashingmagazine.com/2021/08/ethical-user-research-practice/",
|
||||
"author": "hello@smashingmagazine.com (Devin Harold)",
|
||||
"description": "Through a simple step-by-step approach, you can build an ethical practice within your organization that will ensure you’re respecting the dignity and welfare of your research participants.",
|
||||
"link": "https://smashingmagazine.com/2021/08/ethical-user-research-practice/",
|
||||
"publishedOn": "2021-08-19T10:00:00.000Z",
|
||||
"wordCount": 5348,
|
||||
"title": "How To Build An Ethical User Research Practice At Any Organization",
|
||||
"enclosure": {
|
||||
"url": "http://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/72fbade7-8284-47ba-93d7-0f8a7aefdb7e/ethical-user-research-practice.jpg",
|
||||
"length": "0",
|
||||
"type": "image/jpg"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -506,6 +506,15 @@
|
|||
"feedUrl": "https://www.freecodecamp.org/news/rss/",
|
||||
"siteUrl": "https://www.freecodecamp.org/news",
|
||||
"articles": [
|
||||
{
|
||||
"id": "613f3cc7852f4307d372c7e4",
|
||||
"author": null,
|
||||
"description": "You might have heard of a CSV file but what does it mean? In this article, we are going to learn what a CSV file is, and how to open and export them using Microsoft Excel and Google Sheets. What is a CSV file? CSV stands for Comma Separated Values.",
|
||||
"link": "https://www.freecodecamp.org/news/csv-format-how-to-open-a-csv-file-and-export-it/",
|
||||
"publishedOn": "2021-09-17T18:22:47.000Z",
|
||||
"wordCount": 711,
|
||||
"title": "CSV Format – How to Open a .csv File and Export it"
|
||||
},
|
||||
{
|
||||
"id": "613f6bc9852f4307d372ca83",
|
||||
"author": null,
|
||||
|
|
@ -530,7 +539,7 @@
|
|||
"description": "I've lately been noticing a pattern in React applications: developers protect certain routes on a web app from unauthorized users. In such cases, the navigation item (nav-item) on the navigation bar/Header of the web won't be visible to an unauthorized user. In this short guide, we're going to take",
|
||||
"link": "https://www.freecodecamp.org/news/dynamic-navigation-in-nextjs/",
|
||||
"publishedOn": "2021-09-16T17:32:33.000Z",
|
||||
"wordCount": 1407,
|
||||
"wordCount": 1406,
|
||||
"title": "Dynamic Navigation in Next.js – How to Render Nav-Items Dynamically in a Next App"
|
||||
},
|
||||
{
|
||||
|
|
@ -586,15 +595,6 @@
|
|||
"publishedOn": "2021-09-16T15:08:00.000Z",
|
||||
"wordCount": 1407,
|
||||
"title": "HTML File Text Editor – How to Open Web Page Code in Windows Notepad"
|
||||
},
|
||||
{
|
||||
"id": "6141d9cf852f4307d372e031",
|
||||
"author": null,
|
||||
"description": "This article explains how to convert a string to lowercase and uppercase characters. We'll also go over how to make only the first letter in a word uppercase and how to make the first letter of every word in a sentence uppercase. Let's get started! How to use the toLowerCase(",
|
||||
"link": "https://www.freecodecamp.org/news/javascript-tolowercase-how-to-convert-a-string-to-lowercase-and-uppercase-in-js/",
|
||||
"publishedOn": "2021-09-16T15:07:34.000Z",
|
||||
"wordCount": 1377,
|
||||
"title": "JavaScript toLowerCase() – How to Convert a String to Lowercase and Uppercase in JS"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
94
feed.atom
94
feed.atom
|
|
@ -1,10 +1,52 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<id>urn:2021-09-17T00:45:34.714Z</id>
|
||||
<id>urn:2021-09-18T00:39:47.129Z</id>
|
||||
<title>osmos::feed</title>
|
||||
<updated>2021-09-17T00:45:34.714Z</updated>
|
||||
<updated>2021-09-18T00:39:47.129Z</updated>
|
||||
<generator>osmosfeed 1.11.1</generator>
|
||||
<link rel="alternate" href="index.html"/>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Designing Beautiful Shadows in CSS]]></title>
|
||||
<id>https://css-tricks.com/?p=352082</id>
|
||||
<link href="https://www.joshwcomeau.com/css/designing-shadows/"/>
|
||||
<updated>2021-09-17T22:49:39.000Z</updated>
|
||||
<summary type="html"><![CDATA[My favorite kind of blog post is when someone takes a subject that I’ve spent all of five minutes considering and then says—no!—this is an enormous topic worthy of a dissertation. Look at all the things you can do with …
|
||||
The post Designing Beautiful Shadows in CSS appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.]]></summary>
|
||||
<author>
|
||||
<name>Robin Rendle</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[CSV Format – How to Open a .csv File and Export it]]></title>
|
||||
<id>613f3cc7852f4307d372c7e4</id>
|
||||
<link href="https://www.freecodecamp.org/news/csv-format-how-to-open-a-csv-file-and-export-it/"/>
|
||||
<updated>2021-09-17T18:22:47.000Z</updated>
|
||||
<summary type="html"><![CDATA[You might have heard of a CSV file but what does it mean? In this article, we are going to learn what a CSV file is, and how to open and export them using Microsoft Excel and Google Sheets. What is a CSV file? CSV stands for Comma Separated Values.]]></summary>
|
||||
<author>
|
||||
<name>freeCodeCamp.org</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Computer Science Unleashed, Chapter 1: Connections]]></title>
|
||||
<id>https://css-tricks.com/?p=350843</id>
|
||||
<link href="https://css-tricks.com/computer-science-unleashed-chapter-1-connections/"/>
|
||||
<updated>2021-09-17T15:27:49.000Z</updated>
|
||||
<summary type="html"><![CDATA[Humans crave connections, and the advent of the digital revolution has empowered us to be more connected than ever before. The Internet has unleashed upon billions of people unprecedented economic and political freedom, as well as powerful means of control and domination. Yet, the vast majority of us are oblivious to its inner workings.
|
||||
The post Computer Science Unleashed, Chapter 1: Connections appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.]]></summary>
|
||||
<author>
|
||||
<name>Wladston Viana Ferreira Filho</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Monetize Open-Source Software With Gatsby Functions And Stripe]]></title>
|
||||
<id>https://smashingmagazine.com/2021/09/monetize-open-source-software-gatsby-functions-stripe/</id>
|
||||
<link href="https://smashingmagazine.com/2021/09/monetize-open-source-software-gatsby-functions-stripe/"/>
|
||||
<updated>2021-09-17T09:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[Gatsby Functions provide front-end developers a way to write and use server-side code without the hassle of maintaining a server. If making money from open-source is of interest to you and your site isn’t built using Gatsby, this approach may well be the answer you were looking for.]]></summary>
|
||||
<author>
|
||||
<name>hello@smashingmagazine.com (Paul Scanlon)</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[How to Start Freelancing – Tips for Launching a Successful Freelance Career]]></title>
|
||||
<id>613f6bc9852f4307d372ca83</id>
|
||||
|
|
@ -106,16 +148,6 @@ The post Shadow Roots and Inheritance appeared first on CSS-Tricks. You can supp
|
|||
<name>freeCodeCamp.org</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[JavaScript toLowerCase() – How to Convert a String to Lowercase and Uppercase in JS]]></title>
|
||||
<id>6141d9cf852f4307d372e031</id>
|
||||
<link href="https://www.freecodecamp.org/news/javascript-tolowercase-how-to-convert-a-string-to-lowercase-and-uppercase-in-js/"/>
|
||||
<updated>2021-09-16T15:07:34.000Z</updated>
|
||||
<summary type="html"><![CDATA[This article explains how to convert a string to lowercase and uppercase characters. We'll also go over how to make only the first letter in a word uppercase and how to make the first letter of every word in a sentence uppercase. Let's get started! How to use the toLowerCase(]]></summary>
|
||||
<author>
|
||||
<name>freeCodeCamp.org</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Minding the “gap”]]></title>
|
||||
<id>https://css-tricks.com/?p=351481</id>
|
||||
|
|
@ -326,34 +358,6 @@ The post “Just in Time” CSS appeared first on CSS-Tricks. You can support CS
|
|||
<name>Chris Coyier</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Fun Times Styling Checkbox States]]></title>
|
||||
<id>https://css-tricks.com/?p=351034</id>
|
||||
<link href="https://css-tricks.com/fun-times-styling-checkbox-states/"/>
|
||||
<updated>2021-09-10T14:53:24.000Z</updated>
|
||||
<summary type="html"><![CDATA[We might leave a text input unstyled. We might leave a link unstyled. Even a button. But checkboxes… we don’t leave them alone. That’s why styling checkboxes never gets old.
|
||||
Although designing checkboxes is not that complicated, we also don’t …
|
||||
The post Fun Times Styling Checkbox States appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.]]></summary>
|
||||
<author>
|
||||
<name>Preethi</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[EyeDropper API Dropped]]></title>
|
||||
<id>https://css-tricks.com/?p=351697</id>
|
||||
<link href="https://css-tricks.com/eyedropper-api-dropped/"/>
|
||||
<updated>2021-09-10T14:47:11.000Z</updated>
|
||||
<summary type="html"><![CDATA[I had no idea this was coming but it’s pretty neat! Chrome has shipped the EyeDropper API in v95 (Canary, as I write).
|
||||
🎨 Loving the new `EyeDropper` Web API:
|
||||
“`js
|
||||
await new EyeDropper().open();
|
||||
// Returns the picked color, e.g.,
|
||||
…
|
||||
The post EyeDropper API Dropped appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.]]></summary>
|
||||
<author>
|
||||
<name>Chris Coyier</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Web Design Done Well: Excellent Editorial]]></title>
|
||||
<id>https://smashingmagazine.com/2021/09/web-design-done-well-excellent-editorial/</id>
|
||||
|
|
@ -534,14 +538,4 @@ The post EyeDropper API Dropped appeared first on CSS-Tricks. You can support CS
|
|||
<name>hello@smashingmagazine.com (Mike Neumegen)</name>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[How To Build An Ethical User Research Practice At Any Organization]]></title>
|
||||
<id>https://smashingmagazine.com/2021/08/ethical-user-research-practice/</id>
|
||||
<link href="https://smashingmagazine.com/2021/08/ethical-user-research-practice/"/>
|
||||
<updated>2021-08-19T10:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[Through a simple step-by-step approach, you can build an ethical practice within your organization that will ensure you’re respecting the dignity and welfare of your research participants.]]></summary>
|
||||
<author>
|
||||
<name>hello@smashingmagazine.com (Devin Harold)</name>
|
||||
</author>
|
||||
</entry>
|
||||
</feed>
|
||||
138
index.html
138
index.html
|
|
@ -15,6 +15,75 @@
|
|||
|
||||
<body>
|
||||
<!-- %after-body-begin.html% -->
|
||||
<section class="daily-content">
|
||||
<h2 class="daily-heading"><time datatime="2021-09-17">2021-09-17</time></h2>
|
||||
<ul class="sources card">
|
||||
<li class="source">
|
||||
<section>
|
||||
<h3 class="source-name"><a class="source-name__link" href="https://css-tricks.com">CSS-Tricks</a></h3>
|
||||
<section class="articles-per-source">
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">Designing Beautiful Shadows in CSS</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://www.joshwcomeau.com/css/designing-shadows/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(12 min)</span>
|
||||
<span>My favorite kind of blog post is when someone takes a subject that I’ve spent all of five minutes considering and then says—no!—this is an enormous topic worthy of a dissertation. Look at all the things you can do with …
|
||||
The post Designing Beautiful Shadows in CSS appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">Computer Science Unleashed, Chapter 1: Connections</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://css-tricks.com/computer-science-unleashed-chapter-1-connections/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(27 min)</span>
|
||||
<span>Humans crave connections, and the advent of the digital revolution has empowered us to be more connected than ever before. The Internet has unleashed upon billions of people unprecedented economic and political freedom, as well as powerful means of control and domination. Yet, the vast majority of us are oblivious to its inner workings.
|
||||
The post Computer Science Unleashed, Chapter 1: Connections appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
</section>
|
||||
</li>
|
||||
<li class="source">
|
||||
<section>
|
||||
<h3 class="source-name"><a class="source-name__link" href="https://www.freecodecamp.org/news">freeCodeCamp.org</a></h3>
|
||||
<section class="articles-per-source">
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">CSV Format – How to Open a .csv File and Export it</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://www.freecodecamp.org/news/csv-format-how-to-open-a-csv-file-and-export-it/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(2 min)</span>
|
||||
<span>You might have heard of a CSV file but what does it mean? In this article, we are going to learn what a CSV file is, and how to open and export them using Microsoft Excel and Google Sheets. What is a CSV file? CSV stands for Comma Separated Values.</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
</section>
|
||||
</li>
|
||||
<li class="source">
|
||||
<section>
|
||||
<h3 class="source-name"><a class="source-name__link" href="https://www.smashingmagazine.com/">Articles on Smashing Magazine — For Web Designers And Developers</a></h3>
|
||||
<section class="articles-per-source">
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">Monetize Open-Source Software With Gatsby Functions And Stripe</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://smashingmagazine.com/2021/09/monetize-open-source-software-gatsby-functions-stripe/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(9 min)</span>
|
||||
<span>Gatsby Functions provide front-end developers a way to write and use server-side code without the hassle of maintaining a server. If making money from open-source is of interest to you and your site isn’t built using Gatsby, this approach may well be the answer you were looking for.</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section class="daily-content">
|
||||
<h2 class="daily-heading"><time datatime="2021-09-16">2021-09-16</time></h2>
|
||||
<ul class="sources card">
|
||||
|
|
@ -182,17 +251,6 @@ Thank you @ad-m</span>
|
|||
</a>
|
||||
</details>
|
||||
</article>
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">JavaScript toLowerCase() – How to Convert a String to Lowercase and Uppercase in JS</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://www.freecodecamp.org/news/javascript-tolowercase-how-to-convert-a-string-to-lowercase-and-uppercase-in-js/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(5 min)</span>
|
||||
<span>This article explains how to convert a string to lowercase and uppercase characters. We'll also go over how to make only the first letter in a word uppercase and how to make the first letter of every word in a sentence uppercase. Let's get started! How to use the toLowerCase(</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
</section>
|
||||
</li>
|
||||
<li class="source">
|
||||
|
|
@ -316,7 +374,7 @@ The post On the `dl` appeared first on CSS-Tricks. You can support CSS
|
|||
<summary class="article-expander__title">Building a Form in PHP Using DOMDocument</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://css-tricks.com/building-a-form-in-php-using-domdocument/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(14 min)</span>
|
||||
<span class="article-reading-time">(15 min)</span>
|
||||
<span>Learn how to build an HTML form in PHP using DOMDocument — a structured and expressive way to build logical markup.
|
||||
The post Building a Form in PHP Using DOMDocument appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.</span>
|
||||
</div>
|
||||
|
|
@ -452,36 +510,6 @@ The post “Just in Time” CSS appeared first on CSS-Tricks. You can support CS
|
|||
</a>
|
||||
</details>
|
||||
</article>
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">Fun Times Styling Checkbox States</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://css-tricks.com/fun-times-styling-checkbox-states/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(6 min)</span>
|
||||
<span>We might leave a text input unstyled. We might leave a link unstyled. Even a button. But checkboxes… we don’t leave them alone. That’s why styling checkboxes never gets old.
|
||||
Although designing checkboxes is not that complicated, we also don’t …
|
||||
The post Fun Times Styling Checkbox States appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">EyeDropper API Dropped</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://css-tricks.com/eyedropper-api-dropped/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(2 min)</span>
|
||||
<span>I had no idea this was coming but it’s pretty neat! Chrome has shipped the EyeDropper API in v95 (Canary, as I write).
|
||||
🎨 Loving the new `EyeDropper` Web API:
|
||||
“`js
|
||||
await new EyeDropper().open();
|
||||
// Returns the picked color, e.g.,
|
||||
…
|
||||
The post EyeDropper API Dropped appeared first on CSS-Tricks. You can support CSS-Tricks by being an MVP Supporter.</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
</section>
|
||||
</li>
|
||||
<li class="source">
|
||||
|
|
@ -570,7 +598,7 @@ The post EyeDropper API Dropped appeared first on CSS-Tricks. You can support CS
|
|||
<summary class="article-expander__title">What’s New With DevTools: Cross-Browser Edition</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://smashingmagazine.com/2021/09/devtools-cross-browser-edition/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(14 min)</span>
|
||||
<span class="article-reading-time">(13 min)</span>
|
||||
<span>Learn what’s new with developer tools in Firefox, Edge, Chrome and Safari. Discover new and powerful features that will help you be more comfortable and productive when testing and debugging across browsers.</span>
|
||||
</div>
|
||||
</a>
|
||||
|
|
@ -855,31 +883,9 @@ The post EyeDropper API Dropped appeared first on CSS-Tricks. You can support CS
|
|||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section class="daily-content">
|
||||
<h2 class="daily-heading"><time datatime="2021-08-19">2021-08-19</time></h2>
|
||||
<ul class="sources card">
|
||||
<li class="source">
|
||||
<section>
|
||||
<h3 class="source-name"><a class="source-name__link" href="https://www.smashingmagazine.com/">Articles on Smashing Magazine — For Web Designers And Developers</a></h3>
|
||||
<section class="articles-per-source">
|
||||
<article>
|
||||
<details class="article-expander">
|
||||
<summary class="article-expander__title">How To Build An Ethical User Research Practice At Any Organization</summary>
|
||||
<a class="article-summary-link article-summary-box-outer" href="https://smashingmagazine.com/2021/08/ethical-user-research-practice/">
|
||||
<div class="article-summary-box-inner">
|
||||
<span class="article-reading-time">(18 min)</span>
|
||||
<span>Through a simple step-by-step approach, you can build an ethical practice within your organization that will ensure you’re respecting the dignity and welfare of your research participants.</span>
|
||||
</div>
|
||||
</a>
|
||||
</details>
|
||||
</article>
|
||||
</section>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<time id="build-timestamp" datetime="2021-09-17T00:45:34.693Z">2021-09-17T00:45:34.693Z</time>
|
||||
<time id="build-timestamp" datetime="2021-09-18T00:39:47.107Z">2021-09-18T00:39:47.107Z</time>
|
||||
<span><a class="footer-link" href="https://github.com/osmoscraft/osmosfeed">osmosfeed 1.11.1</a></span>
|
||||
</footer>
|
||||
<script src="index.js"></script>
|
||||
|
|
|
|||
Loading…
Reference in a new issue