投稿時間:2023-08-14 22:17:59 RSSフィード2023-08-14 22:00 分まとめ(21件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
Git Gitタグが付けられた新着投稿 - Qiita 【Git】Gitの用語一覧Part2 https://qiita.com/smartPG/items/6022ed034246c412efd6 index 2023-08-14 21:50:47
技術ブログ Developers.IO [AWS Hands-on for Beginners]Amazon ECSの入門ハンズオンをやってみた https://dev.classmethod.jp/articles/aws-hands-on-for-beginners-aws-ecs/ amazon 2023-08-14 12:06:30
海外TECH MakeUseOf 3 Ways to Set a New Alarm on Your iPhone or iPad https://www.makeuseof.com/how-to-set-a-new-alarm-on-iphone-ipad/ multiple 2023-08-14 12:45:22
海外TECH MakeUseOf 7 Ways to Organize Apple Notes for Smarter Productivity https://www.makeuseof.com/tag/organize-apple-notes/ Ways to Organize Apple Notes for Smarter ProductivityLove Apple Notes but struggle to keep everything organized Here are some valuable tips to help you out whether you use it on a Mac or an iPhone 2023-08-14 12:30:22
海外TECH MakeUseOf How to Use the Add Yours Sticker on Instagram Reels https://www.makeuseof.com/instagram-use-add-yours-sticker-on-reels/ reels 2023-08-14 12:07:45
海外TECH DEV Community The (Detailed & Creative) Playbook for More GitHub Stars https://dev.to/livecycle/the-detailed-creative-playbook-for-more-github-stars-5fo5 The Detailed amp Creative Playbook for More GitHub Stars TL DRMy team and I recently launched an open source tool for developersThis was my first time promoting an open source tool It was hard to find meaningful early tage growth advice so I had to get creative We ve quickly grown to more than k stars in a short time I ve compiled a detailed list of growth tactics that worked to bring us traffic and starsI m sharing it all here so that others can apply these tactics and grow their own projects Launching an open source project for the first timeAnyone involved in marketing knows that no two days are the same You are constantly facing new challenges and unique situations And so it was a few months back when I was tasked with promoting a new open source project that we built called Preevy I ve spent years leading go to market efforts at various companies for dozens of products but this was my first time doing so for an open source developer tool Don t get me wrong the devs on my team are seasoned OSS pros But as the head of marketing I was the open source newbie facing a learning curve I looked at my lack of open source marketing experience as both an advantage and a disadvantage On the one hand I had a lot of catching up to do in a short period of time On the other hand it s always good when you can eliminate any preconceived notions of to how things should be done I was free to research question and develop a creative strategy with an open mind Writing the post I wish I found months agoGoogle quickly dampened my initial wave of enthusiasm I looked for good advice to accelerate my learning but most of the early stage open source growth content was shallow at best I read articles promising to show me “How to get your first k Github stars but was repeatedly left without the clear tactical direction I was looking for The next couple of months became a whirlwind of research and experimentation to figure out what works and what doesn t And today weeks after launching Preevy the project has k GitHub stars and we re seeing a week over week increase in repository traffic forks and contributions There are several repeatable actions that have been effective in growing our traffic and our star count In retrospect some of them were buried in those generic How to articles but most of them were not Many of the creative steps we took and continue to take are lessons we learned the old fashioned way So in the spirit of true open source I ve outlined some of our most effective tactics in one place It s the kind of resource I wish I had found months ago and hopefully you will find this outline helpful as you launch and growing your own open source projects Focusing specifically on traffic GitHub starsTo be clear my specific focus is to show you how I got traffic and GitHub stars for my project I won t be focusing on other important aspects of open source growth such as converting visitors to active users encouraging contributions to the project best practices for repo maintenance building a community around your project or deciding what to build in the first place These are all worthy topics but for another time For now I only care about stars Why are GitHub stars so important The underlying assumption here is that GitHub stars have value But what exactly are they valuable for Increasing your star count has several benefits clear and present benefits It focuses the team s efforts and motivates everyone to rally around a single cause and a single metric that is constantly increasingStars credibility and trustworthiness in the eyes of potential users and contributorsYour pool of stargazers can teach you a lot about your target audience Stars can help you reach GitHub trending status and a TON of visibility there are several factors that go into trending but stars is an important one So if you re trying to promote your GitHub library you should be thinking about how you can get more people to star it especially in the first couple of months after you go live So without further ado let s take a deep dive into the key growth levers that worked for me and my team Prerequisites Basic repo healthThe first thing I focused on was making sure our repository was set up for success Those generic articles spend a lot of time on this and like with any good cliche there s a lot of truth to it So we established a baseline for repo health that included A clear description of what the tool doesA Readme that is both informative and aesthetically pleasing screenshot GIF at the top clearly structured use of some emojis to mix it up a bit I also upgraded the social card that appeared when the repo is linked on social A dedicated docs site with relevant technical information and how to guides for people who want to use itI don t have a lot of wisdom to add here Just make a best effort at communicating clearly in your documentation without any fluff and don t be afraid to iterate as needed Once we covered the basics for Preevy we set our sights on brining attention to the tool we had built From a bird s eye view our GTM strategy had two phases Get our first stars artificiallyMaintain natural growth from stars and beyond The first stars artificial growthWe wanted to get our first stars quickly so we started close to home I assumed that between all of us on the team we could find relevant first degree connections willing to click a button and congratulate us on launching a new project Here are the main actions that worked for us in this phase Kick off message to friends and familyWe started simple I composed a message announcing that we ve just launched our first open source project and asking people please check it out and show us support by leaving us a star The message was simple and friendly but also direct Don t just reply with a thumbs up Go to GitHub and give me a star please Each team member sent it out to people in their network Relevant friends and family members via email Whatsapp LinkedIn and Twitter DMs Ask the neighbors in our shared office spaceOur company office is in a shared workspace Which means there are dozens of other startups and active GitHub accounts within a few meters of my desk So I swallowed my pride printed a QR code to make it easy for others to open our repo on their device and made a few causal rounds around the floor asking people if they could do us a quick favor and show us some GitHub love The vast majority of people were happy to help My non scientific assessment is that early morning had the best conversion rates while people were still small talking over coffee and before they got focused on their more serious daily tasks Show it off for free at conferencesIt just so happened that I attended a local tech conference shortly after Preevy launched So I adapted the shared office space strategy to the conference showroom floor I walked around and tried to use my smalltalk opportunities to get a few more stars from the developers walking around First launch announcements on social mediaOnce we had a few dozen stars I posted about our launch on our social channels I wanted new visitors to the repository to see that at least a few dozen people had already been there and liked what we are doing Pretty soon we celebrated our first stars milestone and we were ready to move into phase Beyond the first I probably could have used the above tactics alone to get us to stars or more but it would have been inefficient and regardless I wasn t interested in this approach My phase focus was only on the star threshold so as to establish the minimal credibility needed to convert future traffic Our first stars were decidedly artificial And I wanted all the rest to be authentic and organic Organic stargazers tell you a lot about who is interested in your tool Analyzing a growing list of stargazers gives you product and marketing insights that you need to move forward effectively So it was important to me that our list of stargazers grow naturally as soon as possible Here s what worked for us as we moved into growth phase Content creationContent creation and distribution was a big part of our strategy and this continues to be the case This topic alone deserves a dedicated blog post or two but we ll summarize the key elements here As far as content creation we set out to create an ongoing flow of blog posts These posts fell into one of four categories Present the tool directly We wrote a number of posts that talk about Preevy directly What it is why we built it who we think can benefit from it These can be very effective when they are written in an authentic human wayPresent the tool indirectly as part of a larger project We wrote a number of “How to posts that show how to build a cool project including Preevy as part of the stackListicles We put together a few list based articles that had an open source angle to them “ Projects that will help you learn some framework or “ new open source repositories you need to know about in or something similar We included Preevy in the list when relevant but not every time Building in public Open source is about sharing with others So we wrote several posts explaining how we solved an interesting problem or how we achieved a relevant milestone like this post for example Each post had clear section headings We added a TL DR at the top and emojis GIFs to keep it friendly and fun to read We mentioned explicitly that we are building Preevy and we d appreciate it if people could check it out and star the repository We phrased this in line request in different ways sometimes more directly than others but we always found a way to put it in the body of the article as a clear call to action Content distributionWriting content is great but it won t help you if you don t have a good plan for distributing it to the relevant people Here s how we distributed our Preevy content Dev centric blogging platforms We published our content on dev centric blogging platforms like Dev to Hashnode Hackernoon and Medium These are the main platforms we ve been using but there are others you might consider as well When doing this be mindful of any platform specific tags you can use to better position your content for example DevTo has a showdev tag that can help show your new tool off to other developers Also note that on platforms like Dev to you can create a company blog with a fixed call to action that appears on the right side of any article you publish there This helps to get more people clicking through from your content to your GitHub repository Here s one of our posts trending on Dev to Reddit and social media Once the content was published on the above platforms we promoted it on social media and in relevant subreddits We did not drive traffic to our company blog we ll get to that in a minute Rather we intentionally directed people to the articles hosted on these outside blogging platforms We did this because each of these blogging platforms has a built in trending algorithm that boosts high performing posts By driving traffic to these links we got the platform algorithms to work for us and get our posts many more views in a short period of time Our company blog Don t worry We didn t forget about our own site We also published all content on our company blog After all SEO is still a thing and so it s good to have all that relevant content hosted on the company domain As extra credit we also managed to get our blog approved as a content source by dev centric content aggregators like daily dev This helps us to distribute the content posted on our company s blog in addition to the content published on those external blogging sites Github Lists and TopicsThere are tons of great lists on GitHub often called “Awesome Lists where maintainers aggregate tools projects and resources with a particular focus We found several lists relevant to our tool and opened a pull request to suggest Preevy as an addition Note that in some cases you ll need to make minor adjustments to your project or documentation to meet the list membership requirements But this could be worth it if it s a popular list that has a lot of visitors In addition to “Lists which are privately maintained GitHub also maintains “Topics Open source projects can be submitted for inclusion under a relevant topic but only by someone who is not connected to the project in an official way So if you have friends or early adopters of your tool who love what you re doing you might consider asking them for a favor and having them submit your project to a few of these GitHub Topics We ve used both Lists and Topics to promote Preevy Other Sites and NewslettersWe found a number of sites and newsletters focused on promoting open source tools We used these resources to promote Preevy Here are two examples that were effective for us GitHubK Add your library here for free maintained by nevodavid Console dev Submit your tool for free or pay to sponsor a newsletter Relevant communities and dark socialWe joined a bunch of communities We wanted to be a part of relevant conversations and promote our tool and our content in a more natural way These communities exist on platforms such as Slack Discord Reddit Whatsapp LinkedIn and Facebook To find communities relevant to you just spend a few minutes searching or ask others in your industry to guide you towards the communities that are worth joining We noticed that each community has its own rules nuances and opportunities For example on a particular Slack or Discord server there might be a channel dedicated to showing off new tools or promoting new content you ve written Similarly many subreddits have one day per week where you can self promote something you ve built and get feedback Once you ve found some communities make friends and play by the rules Paid ads campaignsOnce we generated a decent amount of organic traffic we ran some small paid ad campaigns We used three advertising platforms Ethical Ads a dev focused advertising platform Reddit with a focus on specific technical subreddits Twitter with a focus on specific relevant keywords These campaigns brought us traffic and they also allowed us to test our messaging and learn more about what attracted people to our repository We used these results to further optimize our content and our future ad campaigns InfluencersInfluencer marketing can be very effective in any industry and open source developer tools is no different The trick is to the right people with the right audience We actively searched for those people in our industry developed relationships and ran some collaborative experiments The majority of them were successful a few were not which was expected Each influencer knows their audience and their style Be clear about your campaign objectives and work with them to create the content and campaigns that work best co created posts product reviews shout outs on social or whatever else you all have in mind Podcasts and promotionsI ll keep this one brief because it s pretty self explanatory If you can find other people to promote you on their podcasts webinars conferences or by allowing you to publish a guest blog to their site it can help you get a lot of traffic quickly We were able to do this a couple of times for Preevy so far and we re already working on more of these opportunities Use cases and testimonialsBecause I m active on dev centric blogging platforms I kept an eye out for dev bloggers who were experienced and well versed in our space I looked for high performing articles and reached out to the authors to ask them if they wanted to try Preevy and write about it Some wanted to be paid rightfully so and some surprisingly did not Some wanted to ghostwrite for us without using their name and some wanted to publish content in their own name on their own pages It took us some time to find the right people but once we did all of the above arrangements worked for us HackernewsWe used Hackernews to promote Preevy in two ways Post the GitHub repository under the “Show HN tag Hackernews can be a great place to share your new project with other technical folks It helps to get others to upvote and comment soon after posting just don t share the direct link to your post We added a first comment where our CTO explained what we built and inviting others to try it I don t know if this comment helped but I saw a lot of other open source projects doing the same And while I can t say for sure it seems like HN is friendlier to GitHub repository links as opposed to some branded URL So with a bit of coordination HN could give you a potent dose of traffic Post content We ve tried posting some of our content on HN Success is hit or miss and HN will not even accept posts from some external blogging platforms But it s free to try and the potential upside is huge Social media retargetingFrom the moment we formally announced the Preevy launch we had organic social media activity running in the background We ll save the detailed social media strategy for another post but suffice it to say that the account was active and the content was varied As more people engaged with the content I began retargeting as many of them as possible by inviting them to try star Preevy for themselves I had Twitter DM template that I would send them thanking them for linking our recent post and asking if they d be willing to star the Preevy repo It took time but lots of people were happy to help Shamelessly promote other people and projectsWhen I outlined my approach to “content creation above I mentioned that one types of content we ve produced are listicles of other relevant projects or tools One of the reasons this content is so effective is that is enables us to shamelessly promote other people Open source is not a zero sum game There s enough traffic and enough GitHub stars to go around And by genuinely promoting other people companies and projects you can get them to promote you in return it s almost like a “forced collaboration and it s often a win win So for example when we wrote listicles that included other open source projects we tagged these companies maintainers on Twitter when we promoted the article Many time they would like and retweet adding a lot more reach to our content This approach can be applied in many different ways but it s potent enough to deserve a dedicated mention in our list of open source GTM actions My crazy Github retargeting experimentOnce we reached a few hundred stargazers I analyzed the modest audience I had built I developed an experimental multi part playbook for promoting Preevy in a more targeted way to people who were more likely to be interested in it Here s a quick summary of what I came up with I used tools such at this one and this one to see what other repos our stargazers were starring most frequently The stargazers of these other commonly starred repos became an expanded pool of potential stargazers for PreevyI looked through the stargazers in these other repos and identified people who had publicly exposed email addresses in their GitHub profiles To me this was a clue that they didn t mind being contacted via emailI further identified the people who I thought were most relevant and followed them on GitHubThen I reached out to these folks via email told them I had just followed them and introduced myself and my project in case they were interested to check it out The last two steps were just my personal spin You can probably do without them The main idea is to use your pool of authentic stargazers to point you in the direction of a wider pool of similar users who might be interested in what you have to offer As a bonus you can also look at what those most commonly starred repositories are doing to market their tools and try some of it yourself Celebrate milestones We took every opportunity to celebrate a milestone in our Preevy growth journey Every hundred star milestone got a celebratory GIF and a set of posts to drive as much positive attention to the repository as possible And when we missed celebrating we celebrated instead because it s good to be different sometimes Detect dark theme var iframe document getElementById tweet if document body className includes dark theme iframe src theme dark And when we hit the k star milestone we kicked off a celebratory giveaway which is actually still open until the end of this week To enter people need to star the repo follow us on Twitter and retweet tag friends Detect dark theme var iframe document getElementById tweet if document body className includes dark theme iframe src theme dark Other ideas to considerThese are the ideas that worked best for us to far that can easily be applied to other projects We had tons of other ideas that didn t work as well or that worked but were very specific to what we were building We have a bunch of experiments still to consider and in the spirit of open source I ll share a couple of them here for your consideration Translate the readme into multiple languages At the moment the Preevy readme is in English But I ve noticed that in the GitHub trending lists you can filter by spoken language I wonder if translating our readme into other languages will create a larger surface area for the repository to hit those trending lists with more frequency Product Hunt We ll soon be launching Preevy on Product Hunt It s a great place to launch new products and tools and we re looking forward to leveraging it s reach to bring a lot more attention to what we re building In conclusionI hope our experience in starting to grow Preevy can help you grow your own project by borrowing some of these ideas or by thinking of new ideas on your own I d be thrilled to get additional open source growth suggestions in the comments And if you ve made it this far and are willing to leave Preevy a star I d really appreciate it 2023-08-14 12:53:40
海外TECH DEV Community Meme Monday https://dev.to/ben/meme-monday-c8j Meme MondayMeme Monday Today s cover image comes from last week s thread DEV is an inclusive space Humor in poor taste will be downvoted by mods 2023-08-14 12:43:03
海外TECH DEV Community 🔥 2 TRICKS 🔥 to build a Meetup.com clone with React in 30 minutes 🪄✨ https://dev.to/novu/2-tricks-to-build-a-meetupcom-clone-with-react-in-30-minutes-9hm TRICKS to build a Meetup com clone with React in minutes 🪄In this tutorial you ll learn how to build a Meetup com clone we will touch Create and join online eventsAdd comments under an upcoming event TRICK Building an authentication authorization in minutes with SuperTokens TRICK Notify when someone joins and comment on their event in minutes with Novu So Let s meet up Novu Open source notification infrastructure Just a quick background about us Novu is an open source notification infrastructure We basically help to manage all the product notifications It can be In App the bell icon like you have in the Dev Community Websockets Emails SMSs and so on Let s set it up Here I ll walk you through creating the project setup for the application We ll use React js for the front end and Node js for the backend server Create a folder for the web application as done below mkdir meetup clonecd meetup clonemkdir client server Adding a Node js server Navigate into the server folder and create a package json file cd server amp npm init yInstall Express Nodemon and the CORS library npm install express cors nodemonExpressJS is a fast minimalist framework that provides several features for building web applications in Node js  CORS is a Node js package that allows communication between different domains and Nodemon is a Node js tool that automatically restarts the server after detecting file changes Create an index js file the entry point to the web server touch index jsSet up a Node js server using ExpressJS The code snippet below returns a JSON object when you visit the http localhost api in your browser index jsconst express require express const cors require cors const app express const PORT app use express urlencoded extended true app use express json app use cors app get api req res gt res json message Hello world app listen PORT gt console log Server listening on PORT Configure Nodemon by adding the start command to the list of scripts in the package json file The code snippet below starts the server using Nodemon In server package json scripts test echo Error no test specified amp amp exit start nodemon index js Congratulations You can now start the server by using the command below npm start Setting up the React application ️Navigate into the client folder via your terminal and create a new React js project with Vite npm create vite latestInstall React Icons and React Router  a JavaScript library that enables us to navigate between pages in a React application npm install react router dom react iconsDelete the redundant files such as the logo and the test files from the React app and update the App jsx file to display “Hello World as done below function App return lt div gt lt p gt Hello World lt p gt lt div gt export default App Copy the CSS file required for styling the project into the src index css file Crafting the user interface Here we ll create the user interface for the Meetup clone to enable users to create and join events and view event details Create a pages folder within the client src folder containing the CreateEvent jsx Dashboard jsx EventDetails jsx Events jsx EventsCategories jsx and Home jsx cd client srcmkdir pagescd pagestouch Home jsx Dashboard jsx CreateEvent jsx EventDetails jsx Events jsx EventsCategories jsxFrom the code snippet above The Home jsx component is the application s homepage where users can view all upcoming events The Dashboard jsx component displays all the user s events The CreateEvent jsx component enables users to provide details about an event and create a new event The EventDetails jsx component provides all the details about an event The Events jsx and EventsCategories jsx components are similar The Events jsx component displays all the available events and the EventsCategories jsx displays all the events under a particular category Next create a components folder within the client src folder containing the CategoriesSection jsx EventsSection jsx Footer jsx Hero jsx and Nav jsx components These components are the different sections of the homepage cd client srcmkdir componentscd componentstouch CategoriesSection jsx EventsSection jsx Footer jsx Hero jsx Nav jsxUpdate the App jsx file to render the pages using React Router import BrowserRouter as Router Routes Route from react router dom import Home from pages Home import Dashboard from pages Dashboard import Events from pages Events import EventsCategory from pages EventsCategory import CreateEvent from pages CreateEvent import EventDetails from pages EventDetails function App return lt Router gt lt Routes gt lt Route path element lt Home gt gt lt Route path dashboard element lt Dashboard gt gt lt Route path events all element lt Events gt gt lt Route path events category element lt EventsCategory gt gt lt Route path create event element lt CreateEvent gt gt lt Route path event slug element lt EventDetails gt gt lt Routes gt lt Router gt export default App Home Page The Home page displays all the available events within the application and enables users to navigate to other pages on the website Copy the code below into the Home jsx file import CategoriesSection from components CategoriesSection import EventsSection from components EventsSection import Footer from components Footer import Hero from components Hero import Nav from components Nav const Home gt return lt div gt lt Nav gt lt Hero gt lt EventsSection gt lt CategoriesSection gt lt Footer gt lt div gt export default Home Adding Events These pages display all the events within the application or within a particular category import event from assets event jpeg import Nav from components Nav import AiOutlineCalendar from react icons ai import BsCheckCircle from react icons bs import ImLocation from react icons im import Link from react router dom const Events gt return lt gt lt Nav gt lt div className home events style paddingTop px gt lt h style fontSize px marginBottom px gt All Events lt h gt lt div className body events gt lt Link to event slug className i event gt lt img src event alt Event className i image gt lt div className i content gt lt h style marginBottom px gt Novu Community Call lt h gt lt p style marginBottom px opacity gt Hosted by Novu Development Team lt p gt lt div style display flex alignItems center opacity marginBottom px gt lt AiOutlineCalendar style marginRight px gt lt p gt Starting at pm lt p gt lt div gt lt div style display flex alignItems center opacity marginBottom px gt lt ImLocation style marginRight px color red gt lt p gt Online Discord Channel lt p gt lt div gt lt div style display flex alignItems center opacity marginBottom px gt lt BsCheckCircle style marginRight px color green gt lt p gt going lt p gt lt div gt lt div gt lt Link gt lt div gt lt div gt lt gt export default Events The Create Event page This page displays a form field that accepts the details of the new event Copy the code snippet below into the CreateEvent jsx file import Nav from components Nav import useState from react import postNewEvent from utils util import useNavigate from react router dom const CreateEvent gt const title setTitle useState const navigate useNavigate const location setLocation useState const category setCategory useState const description setDescription useState const startTime setStartTime useState const handleSubmit e gt e preventDefault console log title location category startTime description setTitle setLocation setCategory setDescription setStartTime return lt div className create event gt lt Nav gt lt div style padding px gt lt h style textAlign center marginBottom px color ddb gt Create new event lt h gt lt form className create form onSubmit handleSubmit gt lt label htmlFor title gt Title lt label gt lt input type text name title id title value title onChange e gt setTitle e target value required className event title gt lt label htmlFor location gt Location lt label gt lt input type text name location id location value location onChange e gt setLocation e target value className event title required gt lt div style width display flex alignItems center justifyContent space between gt lt div style display flex flexDirection column width marginRight px gt lt label htmlFor startTime gt Starting Time lt label gt lt input type time name startTime id startTime value startTime onChange e gt setStartTime e target value className event title required gt lt div gt lt div style display flex flexDirection column width gt lt label htmlFor category gt Category lt label gt lt select value category onChange e gt setCategory e target value className event title required gt lt option value travel and outdoor gt Travel and Outdoor lt option gt lt option value religion gt Religion lt option gt lt option value sports and fitness gt Sports and Fitness lt option gt lt option value social activities gt Social Activities lt option gt lt select gt lt div gt lt div gt lt label htmlFor description gt Description lt label gt lt textarea rows value description onChange e gt setDescription e target value required gt lt button className createEventBtn type submit gt Create Event lt button gt lt form gt lt div gt lt div gt export default CreateEvent The Dashboard pageThe Dashboard page shows the user s events and allows the user to create events import Nav from components Nav import Link from react router dom const Dashboard gt return lt div className dashboard container gt lt Nav gt lt div className dashboard main gt lt section className header events gt lt h style fontSize px gt Your Events lt h gt lt Link to create event className link gt Create new event lt Link gt lt section gt lt div gt user s events lt div gt lt div gt lt div gt export default Dashboard The Event Details page ️This page displays information about an event enables users to register for an event with just a click and leave a comment about an event import Nav from components Nav import event from assets event jpeg import useState from react import useParams from react router dom const EventDetails gt const comment setComment useState const slug useParams const addComment e gt e preventDefault console log comment slug return lt div gt lt Nav gt lt header className details header gt lt h style marginBottom px gt Title lt h gt lt p style opacity gt Hosted by lt span style fontWeight bold gt Host lt span gt lt p gt lt header gt lt main className details main gt lt div className details content gt lt img src event alt Event className details image gt lt div style marginBottom px gt Description lt div gt lt div style padding px gt lt h style color ddb marginBottom px gt Attendees lt h gt lt p style opacity gt Attendees lt p gt lt div gt lt div className comments gt lt h style color ddb gt Comments lt h gt lt form className comment form onSubmit addComment gt lt textarea rows className commentInput value comment onChange e gt setComment e target value required gt lt button className buttons commentBtn gt Comment lt button gt lt form gt lt div className comment section gt lt div style padding px border px solid ddd borderRadius px marginBottom px key comment id gt lt p style color ddb marginBottom px gt User lt p gt lt p style opacity gt Comment lt p gt lt div gt lt div gt lt div gt lt div gt lt div className details cta gt lt p style marginBottom px opacity gt Click here to register lt p gt lt button className buttons registerBtn gt Register lt button gt lt div gt lt main gt lt div gt export default EventDetails Authentication and Authorization SuperTokens is an open source authentication service provider that enables you to add secure and seamless user authentication and session management to your software applications It also provides a prebuilt UI for various forms of authentication such as email and password login social login and passwordless login With SuperTokens you can add authentication to both web and mobile applications in a few minutes Adding it to our app Here you ll learn how to add authentication to your React and Node js applications with SuperTokens You can add SuperTokens automatically to your application or manually to an existing project To install SuperTokens automatically run the code snippet below to install a starter app npx create supertokens app latest recipe emailpasswordPS The recipe flag represents the authentication method you want to set up with SuperTokens You check the documentation for a complete guide Configuring SuperTokensGo to the homepage and create an account Head to your dashboard and fill the Get Started form accordingly Next switch to the Core Configuration Details menu tab to generate your Core connectionURI and Core API key Connect SuperTokens with React app Install SuperTokens to the React app by running the code snippet below npm i s supertokens auth reactAdd the code snippet below to the App jsx file import SuperTokens SuperTokensWrapper from supertokens auth react import getSuperTokensRoutesForReactRouterDom from supertokens auth react ui import EmailPasswordPreBuiltUI from supertokens auth react recipe emailpassword prebuiltui import as reactRouterDom from react router dom import EmailPassword from supertokens auth react recipe emailpassword import Session from supertokens auth react recipe session import SessionAuth from supertokens auth react recipe session SuperTokens init appInfo appName meetup clone apiDomain http localhost websiteDomain http localhost apiBasePath auth websiteBasePath recipeList EmailPassword init Session init The code snippet above initialises SuperTokens with Email amp Password within the React app Finally update the routes as done below return lt SuperTokensWrapper gt lt Router gt lt Routes gt getSuperTokensRoutesForReactRouterDom reactRouterDom EmailPasswordPreBuiltUI lt Route path element lt SessionAuth gt lt Home gt lt SessionAuth gt gt lt Route path element lt Home gt gt lt Route path dashboard element lt SessionAuth gt lt Dashboard gt lt SessionAuth gt gt lt Route path events all element lt SessionAuth gt lt Events gt lt SessionAuth gt gt lt Route path events category element lt SessionAuth gt lt EventsCategory gt lt SessionAuth gt gt lt Route path create event element lt SessionAuth gt lt CreateEvent gt lt SessionAuth gt gt lt Route path event slug element lt SessionAuth gt lt EventDetails gt lt SessionAuth gt gt lt Routes gt lt Router gt lt SuperTokensWrapper gt From the code snippet above I wrapped all the routes with the lt SessionAuth gt component provided by SuperTokens to protect them from unauthenticated users until they sign into the application Adding SuperTokens to the Node js serverInstall SuperTokens to the Node js app by running the code below npm i s supertokens nodeAdd the code snippet below to initialise SuperTokens const supertokens require supertokens node const Session require supertokens node recipe session const EmailPassword require supertokens node recipe emailpassword const middleware require supertokens node framework express const errorHandler require supertokens node framework express supertokens init framework express supertokens connectionURI lt YOUR CONNECTION URL gt apiKey lt YOUR API KEY gt appInfo appName meetup clone apiDomain http localhost websiteDomain http localhost apiBasePath auth websiteBasePath recipeList EmailPassword init Session init Update the server CORS as shown below app use cors origin http localhost allowedHeaders content type supertokens getAllCORSHeaders credentials true IMPORTANT CORS should be before the below line app use middleware Finally add the error handler provided by SuperTokens your API routes Add this AFTER all your routesapp use errorHandler Congratulations You ve successfully added SuperTokens to the React and Node js application If you encounter any issues feel free to follow the SuperTokens installation guide Communicating with the Node js serverIn this section you ll learn how to communicate with the Node js server by retrieving and creating events within the application Before we begin create a utils folder containing a util js file within the React app cd clientmkdir utilscd utilstouch util js Getting existing eventsCreate an events array within the index js file on the server containing the event s attributes const events id generateID title Novu Community Call slug novu community call host Novu Development Team category social activities start time pm location Online Discord Channel comments user nevodavid id generateID comment Can t wait user emil pearce id generateID comment Let s go attendees nevodavid emil pearce tomer barnea unicodeveloper scopsy description Dear attendee n We hope this message finds you well We re excited to invite you to our upcoming Novu Community Call where we will come together to share insights updates and engage in meaningful discussions Your presence and contributions are highly valued as we continue to grow and strengthen our vibrant Novu community id generateID title Novu Team Hangout slug novu team hangout host Novu Team category social activities start time pm location Online Google Meet comments user nevodavid id generateID comment Can t wait user emil pearce id generateID comment Let s go attendees nevodavid tomer barnea unicodeveloper scopsy description Dear attendee n We hope this message finds you well We re excited to invite you to our upcoming Novu Community Call where we will come together to share insights updates and engage in meaningful discussions Your presence and contributions are highly valued as we continue to grow and strengthen our vibrant Novu community Add another endpoint that returns the events in a JSON format app get events req res gt res json message Success events Next create a function within the utils util js file that sends a request to the endpoint from the React app export const fetchEvents setEvents gt fetch http localhost events then res gt res json then data gt if data message setEvents data events catch err gt console error err Finally execute the function when the Home component mounts const Home gt const events setEvents useState generates a random string as ID const generateID gt Math random toString substring useEffect gt fetchEvents setEvents save a user id property to the database if localStorage getItem user id localStorage setItem user id generateID return lt div gt render events from the server lt div gt The code snippet above retrieves all the events from the server and creates a user id property on the web browser to enable us to identify each user  PS I m using local storage because this is a small application If you are using SuperTokens in a production environment kindly check the SuperTokens backend guide Getting events by categoriesTo fetch the events under a particular category the events category client route accepts the category name as part of its path name and sends it to the server to return all the events under the category lt Route path events category element lt SessionAuth gt lt EventsCategory gt lt SessionAuth gt gt Add an endpoint on the server that retrieves the events based on their category name app post event category req res gt const category req body const result events filter e gt e category category res json message Success events result Send a request to the endpoint on the server and display the events under a particular category export const fetchEventByCategory category setEvents gt fetch http localhost event category method POST body JSON stringify category headers Accept application json Content Type application json then res gt res json then data gt if data message console log data events setEvents data events catch err gt console error err Retrieving event details via slugTo do this add a POST route to the server that filters the events via the slug received from the React app app post event slug req res gt const slug req body const result events filter e gt e slug slug res json message Success event result The code snippet above uses the event s slug to retrieve its entire event object from the server Create a function within the utils util js that sends a request to the endpoint on the server Within the util js fileexport const fetchEventBySlug slug setEvent gt fetch http localhost event slug method POST body JSON stringify slug headers Accept application json Content Type application json then res gt res json then data gt if data message setEvent data event catch err gt console error err Execute the function on component mount within the EventDetails component and display the properties accordingly import useNavigate useParams from react router dom import useNavigate useParams from react router dom import useState useEffect from react import fetchEventBySlug from utils util export const EventDetails gt const eventDetails setEventDetails useState const slug useParams useEffect gt fetchEventBySlug slug setEventDetails setLoading false slug return lt div gt displays event details lt div gt Creating new eventsCreate an endpoint that adds a new event to the events array generates slug from a textconst createSlug text gt let slug text trim toLowerCase replace w s g slug slug replace s g return slug generates a random string as IDconst generateID gt Math random toString substring endpoint for creating new eventsapp post create event async req res gt const title location startTime category description host req body const eventObject id generateID title slug createSlug title host category start time startTime location comments attendees description events unshift eventObject res json message Event added successfully The code snippet above accepts the event attributes from the form within the CreateEvent component and adds the event to the events array when the user submits the form Execute the function below when the user submits the form runs when a user submits the formconst handleSubmit e gt e preventDefault postNewEvent title location category startTime description localStorage getItem user id makes a request to the serverconst postNewEvent gt fetch http localhost create event method POST body JSON stringify title location category startTime description host headers Accept application json Content Type application json then res gt res json then data gt if data message alert data message navigate dashboard catch err gt console error err Adding comments to eventsTo add comments to an event create another endpoint that accepts the user s id the event s slug and the comment from the React app app post event comment async req res gt const comment user slug req body for let i i lt events length i if events i slug slug events i comments unshift user id generateID comment return res json message Comment added successfully The code snippet above retrieves the event with the same slug from the request and updates the comment property with the latest comment Execute the function when a user drops a new comment const addComment e gt e preventDefault postNewComment comment localStorage getItem user id slug const postNewComment comment user slug gt fetch http localhost event comment method POST body JSON stringify comment user slug headers Accept application json Content Type application json then res gt res json then data gt if data message alert data message catch err gt console error err Registering for an eventWhen a user registers for an event the user s id is added to the attendees property array on the particular event Although you need to check if the user hasn t registered before you update the attendees property Add a POST route to the server that carries out the function app post register event async req res gt const userID eventID req body for let i i lt events length i if events i id eventID const validate events i attendees filter user gt user userID if validate length events i attendees push user return res json message Registered successfully else return res json message You cannot register twice The code snippet above accepts the event and user id from the React app filters the events array via the id and updates the attendee s list on the event with the matching id Execute the function below when a user clicks the Register button const eventRegister user id gt fetch http localhost register event method POST body JSON stringify user id headers Accept application json Content Type application json then res gt res json then data gt if data message alert data message navigate catch err gt console error err Retrieving users eventsWithin the Dashboard component you can display all the events the user registered for First create an endpoint that accepts the user s id loops through the entire event and returns the user s events app post user events req res gt const userID req body let userEvents for let i i lt events length i let result events i attendees filter user gt user userID if result length gt userEvents push events i res json message Successful events userEvents Display the events returned from the server when the Dashboard page loads const fetchMyEvents userID setEvents gt fetch http localhost user events method POST body JSON stringify userID headers Accept application json Content Type application json then res gt res json then data gt if data message console log data setEvents data events catch err gt console error err Congratulations on making it thus far In the upcoming section you ll learn how to alert users when someone comments and registers for their events with Novu Trick Adding notifications to your app ️Here we need to notify the users when someone comments and registers for their events Also you can alert everyone when there is a new event To do this we ll use Novu  an open source notification infrastructure that enables you to send in app SMS chat push and e mail notifications from a single dashboard Initiate it ️Navigate into the client folder and create a Novu project by running the code below cd clientnpx novu initEnter your application name and sign in to your Novu dashboard The code snippet below contains the steps you should follow after running npx novu init Now let s setup your account and send your first notification What is your application name Meetup Clone Now lets setup your environment How would you like to proceed Create a free cloud account Recommended Create your account with Sign in with GitHub I accept the Terms and Conditions and have read the Privacy Policy YesCreated your account successfully Visit the demo page copy your subscriber ID from the page and click the Skip Tutorial button Create a notification template with a workflow as shown below PS You ll need to create three different notification templates to be triggered when someone comments on an event registers for an event and creates a new event Novu Digest allows you to control how you send notifications in your app It collects multiple trigger events schedules them or sends them as a single message Update the In App notification step to send this message to the event host when someone comments on their event user commented on your event Adding Novu notification bell to a React appNovu in app notification uses a notification bell to send alerts to users Here you ll learn how to add it to your React applications Install the Novu Notification package npm install novu notification centerCreate a Novu jsx file within the components folder and copy the below into the file import React from react import NovuProvider PopoverNotificationCenter NotificationBell from novu notification center import useNavigate from react router dom function Novu const navigate useNavigate const onNotificationClick notification gt navigate notification cta data url return lt gt lt NovuProvider subscriberId lt YOUR SUBSCRIBER ID gt applicationIdentifier lt YOUR APP ID gt gt lt PopoverNotificationCenter onNotificationClick onNotificationClick colorScheme light gt unseenCount gt lt NotificationBell unseenCount unseenCount gt lt PopoverNotificationCenter gt lt NovuProvider gt lt gt The code snippet above enables us to add Novu s notification bell icon to the application With this you can view all the notifications within the app Select Settings on your Novu Admin Panel to copy your App ID and replace the subscriber s ID placeholder with yours Import the Novu jsx component into the Nav jsxcomponent import meetup from assets meetup png import Link from react router dom import Novu from Novu const Nav gt return lt nav className navbar gt lt Link to gt lt img src meetup alt Meetup className logo gt lt Link gt lt div className navBtn gt lt Novu gt lt button className buttons signUpBtn gt Log out lt button gt lt div gt lt nav gt export default Nav Configuring Novu on a Node js serverInstall the Novu SDK for Node js into the server folder npm install novu nodeImport Novu from the package and create an instance using your API Key const Novu require novu node const novu new Novu lt YOUR API KEY gt Create a function within the index js file that sends notification to the event host via Novu const addCommentNotification async userID gt await novu subscribers identify userID firstName inAppSubscriber const response await novu trigger notify to subscriberId lt YOUR SUBSCRIBER ID gt payload user userID return response data data Execute the function when a user comments on an event app post event comment async req res gt const comment user slug req body for let i i lt events length i if events i slug slug events i comments unshift user id generateID comment sends notification via Novu const sendNotification await addCommentNotification user if sendNotification acknowledged return res json message Comment added successfully Congratulations You ve completed the application ConclusionSo far you ve learnt how to authenticate users with SuperTokens communicate between a React and Node js app and send in app notifications using the Novu Digest Novu enables you to create a rich notification system in your applications thereby providing a great user experience for your users You should also try out SuperTokens  it is easy to integrate and offers a seamless authentication process to your users The source code for this tutorial is available here Thank you for reading 2023-08-14 12:15:07
海外TECH DEV Community Safeguarding the Digital Frontier https://dev.to/hillary/safeguarding-the-digital-frontier-33c1 Safeguarding the Digital FrontierA Dive into the World of Cybersecurity In an interconnected world driven by technology the term cybersecurity has transcended from jargon to a paramount concern With data breaches ransomware attacks and digital vulnerabilities making headlines the protection of digital assets has become an imperative for individuals businesses and governments alike In this article we ll explore the intricate world of cybersecurity its significance and essential strategies to fortify our digital ecosystem The Cybersecurity Landscape Cybersecurity encompasses a diverse array of practices designed to protect computer systems networks and data from unauthorized access attacks and damage From securing personal devices to safeguarding enterprise level networks the scope of cybersecurity is vast and ever evolving The Stakes Are High In a digital landscape data is the new currency Cyber attacks can lead to data breaches financial losses reputational damage and even compromise critical infrastructure The stakes are high making cybersecurity an essential aspect of modern life The Evolution of Threats Cyber threats have evolved from simple viruses to sophisticated malware ransomware and even nation state attacks Understanding these threats and staying one step ahead is paramount in maintaining a secure digital environment Protecting Personal Data As individuals we must prioritize safeguarding our personal data Practicing strong password hygiene enabling two factor authentication and being cautious while sharing information online are foundational steps toward personal cybersecurity Business and Enterprise Security Businesses are high value targets for cybercriminals Implementing robust cybersecurity measures conducting regular vulnerability assessments and educating employees about security protocols are essential to protect sensitive business data Encryption and Data Privacy Encryption is a cornerstone of cybersecurity It transforms data into unreadable code ensuring that even if intercepted the information remains inaccessible Data privacy regulations such as GDPR and CCPA underline the importance of protecting user data Cyber Hygiene and Awareness Educating users about cybersecurity best practices is vital Regularly updating software being cautious of phishing attempts and avoiding suspicious links contribute to cyber hygiene and mitigate risks Ethical Hacking and Penetration Testing Ethical hackers play a crucial role in cybersecurity They identify vulnerabilities in systems through penetration testing allowing organizations to strengthen their defenses proactively Internet of Things IoT Security With the proliferation of IoT devices security concerns have extended beyond computers and phones Properly securing IoT devices is critical to prevent them from becoming entry points for cyber attacks Cloud Security As more data migrates to the cloud cloud security becomes paramount Cloud providers offer robust security measures but users must also implement additional layers of protection International Collaboration Cyber threats know no borders International collaboration is essential in combating cybercrime sharing threat intelligence and implementing cohesive cybersecurity policies The Future of Cybersecurity The future of cybersecurity lies in AI driven threat detection blockchain for secure transactions and a workforce skilled in cybersecurity practices In a world increasingly reliant on technology cybersecurity is not just a buzzword it s a necessity Every individual organization and government has a role to play in creating a secure digital landscape By prioritizing cybersecurity awareness implementing robust defense strategies and staying informed about emerging threats we can collectively safeguard our digital frontier The challenge is great but the importance of securing our digital world is even greater ️ 2023-08-14 12:00:50
Apple AppleInsider - Frontpage News Samsung QD-OLED TV review, SwitchBot update, & MagSafe VS Qi2 on the HomeKit Insider podcast https://appleinsider.com/articles/23/08/14/samsung-qd-oled-tv-review-switchbot-update-magsafe-vs-qi2-on-the-homekit-insider-podcast?utm_medium=rss Samsung QD OLED TV review SwitchBot update amp MagSafe VS Qi on the HomeKit Insider podcastOn this week s episode of the HomeKit Insider podcast your hosts cover all the latest smart home news review the new Samsung SC QD OLED TV and talk about MagSafe versus Qi HomeKit InsiderThis week SwitchBot updated its Hub controller to add Matter support This includes the IR blaster for any legacy devices you have in your home that aren t yet connected to your smart home Read more 2023-08-14 12:58:26
Apple AppleInsider - Frontpage News Bugs in macOS Background Task Manager keeps apps hidden https://appleinsider.com/articles/23/08/14/bugs-in-macos-background-task-manager-keeps-apps-hidden?utm_medium=rss Bugs in macOS Background Task Manager keeps apps hiddenThe Background Task Manager in macOS Ventura isn t as effective as it could be as a security researcher claims it can be easily bypassed Apple introduced the Background Task Manager as part of macOS Ventura in October The intention of the tool is to warn users and other apps that a new persistent entity has started up potentially helping to thwart malware However a Defcon presentation reveals that the system is useful in theory yet easily bypassed by malware Patrick Wardle outlined how the feature could be bypassed by a malicious app making it harder for users to spot malware that keeps running in the background Read more 2023-08-14 12:20:59
Apple AppleInsider - Frontpage News Apple sponsors Dublin conference on speech processing https://appleinsider.com/articles/23/08/14/apple-sponsors-dublin-conference-on-speech-processing?utm_medium=rss Apple sponsors Dublin conference on speech processingApple is a main sponsor for the th Interspeech Conference dedicated to spoken language computing and will present proposals for activating Siri without a spoken command plus better recognition for people with severe speech impairments Dublin Convention Center Source official site Even as Apple is dropping the requirement to say Hey before verbally invoking Siri its Machine Learning researchers are already looking to go further At the Interspeech Conference in Dublin s official dates from August to August Apple staff will be taking part in panels including Read more 2023-08-14 12:10:35
海外科学 NYT > Science Should Opioid Settlement Money Be Spent on Law Enforcement? https://www.nytimes.com/2023/08/14/health/opiod-settlement-money.html Should Opioid Settlement Money Be Spent on Law Enforcement As states and counties spend the first wave of billions of dollars from the pharmaceutical industry public health groups are challenging how some funds are being used 2023-08-14 12:21:40
ニュース BBC News - Home Clapham stabbing: Two men injured in homophobic attack https://www.bbc.co.uk/news/uk-england-london-66500712?at_medium=RSS&at_campaign=KARANGA london 2023-08-14 12:28:54
ニュース BBC News - Home Kyra King: Parents of baby mauled by dog sentenced https://www.bbc.co.uk/news/uk-england-lincolnshire-66497999?at_medium=RSS&at_campaign=KARANGA lincolnshire 2023-08-14 12:35:48
ニュース BBC News - Home Christian Atsu's wife 'hopes his name will never go away' after losing life in Turkey earthquakes https://www.bbc.co.uk/sport/football/66498476?at_medium=RSS&at_campaign=KARANGA Christian Atsu x s wife x hopes his name will never go away x after losing life in Turkey earthquakesChristian Atsu s wife Marie Claire Rupio says she hopes his name will never go away in an exclusive interview with the BBC 2023-08-14 12:43:21
ニュース BBC News - Home PSNI data breach: Half of police officers push for damages https://www.bbc.co.uk/news/uk-northern-ireland-66479818?at_medium=RSS&at_campaign=KARANGA breach 2023-08-14 12:19:47
ニュース BBC News - Home Ex-Middlesbrough mayor Andy Preston has charges dropped https://www.bbc.co.uk/news/uk-england-tees-66499617?at_medium=RSS&at_campaign=KARANGA errors 2023-08-14 12:18:16
ニュース BBC News - Home Neymar transfer news: Al-Hilal agree deal with Paris St-Germain for Brazil forward https://www.bbc.co.uk/sport/football/66495833?at_medium=RSS&at_campaign=KARANGA Neymar transfer news Al Hilal agree deal with Paris St Germain for Brazil forwardParis St Germain agree a deal to sell Neymar to Saudi Pro League side Al Hilal for a fee of about m euros £m plus add ons 2023-08-14 12:40:31
ニュース BBC News - Home Women's World Cup 2023: England's Keira Walsh says pressure is on Australia in semi-final https://www.bbc.co.uk/sport/football/66495482?at_medium=RSS&at_campaign=KARANGA Women x s World Cup England x s Keira Walsh says pressure is on Australia in semi finalEngland midfielder Keira Walsh says the pressure is on Australia in front of a home crowd in their Women s World Cup semi final 2023-08-14 12:24:11
ニュース BBC News - Home Andy Murray named in Great Britain's Davis Cup team https://www.bbc.co.uk/sport/tennis/66498813?at_medium=RSS&at_campaign=KARANGA manchester 2023-08-14 12:02:40

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)