ProgrammingPercy
ProgrammingPercy
  • Видео 24
  • Просмотров 155 171
Webhook Testing Without the Headache: A Developer's Sanity-Saving Tutorial
Effortless Local Testing - Learn how to test Webhooks on your local environment
In this tutorial, we'll dive into the art of testing webhooks effectively. Discover how to receive third-party webhooks directly on your local machine using Ngrok, all without needing a public domain. Get ready to streamline your webhook testing process like never before!
You can also read my article on programmingpercy.tech/blog/webhook-testing-without-the-headache/ if you prefer reading.
00:00 Intro
00:01 What Are WebHooks?
00:03 Using Ngrok
00:08 Setup Github Webhook
00:11 An Api To Respond on Webhooks
00:16 Mocking WebHooks with WireMock
00:26 Conclusion
Ngrok - ngrok.com/
WireMock - wiremock.org/docs/webhooks-and-ca...
Просмотров: 1 054

Видео

Exciting Go Update - v1.22 Change Log With Examples
Просмотров 9 тыс.4 месяца назад
In this video, we will cover the changes that come with Go version 1.22. The new version of Go has many exciting new features, we will look through these features and learn more about them. If you want to support me, feel free to buy me a coffee www.buymeacoffee.com/percybolmer 00:11 - Introduction 01:36 - Gotip 02:43 - The For Bug - Finally Gone 08:50 - Better HTTP Routing in Stdlib 10:11 - Me...
Learn How To Use NeoVim As An IDE - With Better Sound & Speed
Просмотров 2,9 тыс.5 месяцев назад
This is a Repost of my Old NeoVim video, in this Edit, I have improved the Sound and increased the speed a little to improve the experience for my viewers. Sorry for the repost, but RUclips does not allow proper sound editing for uploaded videos. A Step By Step Tutorial On How to Set up And Use NeoVim, For Complete Beginners. This tutorial won't hand you a perfect IDE configuration for NeoVim, ...
Using RabbitMQ Steams In Go
Просмотров 1,9 тыс.5 месяцев назад
In this video, we will have a look at how to use RabbitMQ Streams in Go. We will learn how to use both the Stream Core and the Stream Plugin approach. The tutorial does not only cover basic usage but also the underlying functionality for a better understanding of what is going on. After the video, you should be familiar with how to create streams, and how to consume and produce messages on them...
Structured Logging In Go Using Standard Library- Slogslog
Просмотров 3,6 тыс.10 месяцев назад
In this video, we take a look at how we can use Slog, which is a module from the standard library to provide us with Structured Logging. We will learn how to 1. Use Slog 2. Configure log levels 3. Add Default Attributes 4. Use JSON Logging 5. Replace attribute values and names 6. Set the Slog default logger Hopefully, after this video, you can start using slog without any trouble. If you liked ...
Learn RabbitMQ for Event-Driven Architecture (EDA)
Просмотров 10 тыс.Год назад
A beginner-friendly tutorial on how RabbitMQ works and how to use RabbitMQ in Go In this video, we will cover how to use RabbitMQ. These are the following items that we will learn about. * Setup RabbitMQ using Docker * Virtual Hosts, users, and permissions * Managing RabbitmQ using CLI with [rabbitmqctl](www.rabbitmq.com/rabbitmqctl.8.html) and [rabbitmqadmin](www.rabbitmq.com/management-cli.ht...
Adding A SSO Login To Cloudflare Application
Просмотров 1,8 тыс.Год назад
Exposing Secure Services with Cloudflare tunnels is easy, but sometimes we want to protect them with a Login You can also find this video as a written Article at programmingpercy.tech/blog/adding-sso-login-to-cloudflare-application/ Links Cloudflare Zero Trust - www.cloudflare.com/products/zero-trust/ Cloudflare Applications - developers.cloudflare.com/cloudflare-one/applications/ Cloudflare Ap...
Free Secure Self-Hosting Using Cloudflare Tunnels
Просмотров 3,1 тыс.Год назад
A tutorial that covers how to use Cloudflare Tunnel to provide a secure connection to your local resources without publicly exposing an IP. You can also find this tutorial as a written article on my blog at programmingpercy.tech/blog/free-secure-self-hosting-using-cloudflare-tunnels/ Links Cloudflare Apps - developers.cloudflare.com/cloudflare-one/connections/connect-apps/ Cloudflare Tunnels - ...
Learn How To Use NeoVim As An IDE - OLD Version, view my updated video
Просмотров 11 тыс.Год назад
WATCH MY UPDATED TUTORIAL INSTEAD This tutorial has sound issues, I do recommend my updated video with Fixed sound and better Speed. Found here: ruclips.net/video/Ymr6bU5Uf8I/видео.html A Step By Step Tutorial On How to Set up And Use NeoVim, For Complete Beginners. This tutorial won't hand you a perfect IDE configuration for NeoVim, for that you can google after people's dotfiles. This tutoria...
The Open Graph Protocol - Why And How You Should Use it On Your Website
Просмотров 7 тыс.Год назад
Ever considered how Twitter, Facebook and other Social Media knows what Image and Title to display when you copy in a link? I recently rebuilt my whole website using SvelteKit, and when I was done I was going to share my site on Twitter. Image my disappointment when I copied the link in, and the Tweet Preview looked a really boring, which got me reading about The Open Graph Protocol. OpenGraph ...
How To Structure Domain Driven Design (DDD) In Go
Просмотров 9 тыс.Год назад
This video is the second part of my Domain Driven Design Series, the first part How To Implement Domain-Driven Design In Go can be found at ruclips.net/video/6zuJXIbOyhs/видео.html or on my website programmingpercy.tech/blog/how-to-domain-driven-design-ddd-golang/ In this video we look at refactoring the DDD implementation from the first video into a much more scaleble and maintainable project ...
How To Implement Domain-Driven Design (DDD) in Go
Просмотров 37 тыс.Год назад
The easy way of learning how to use DDD in a Go application In this video we will learn about the different components in DDD are. We will cover the following topics * What Domain Driven Design is * Domain, Model, Obiquitous Language and Sub Domains * Aggregates * Repositories and the Repository Pattern * Factories to Encapsulate Complex Logic * Services & SubServices We will build an online ta...
ChatGPT Might Make Developers Unemployed In A Few Years
Просмотров 335Год назад
I was stunned when testing ChatGPT, and you should also test it. In this video we test ChatGPT and see how it can help us with Coding, Docker, Terraform and Unit testing. The most amazing thing is the memory aspects, where it remembers previous things that we talked about and goes back in time to modify it. 00:00:00 - Introduction 00:1:30 - Testing, Information gathering and small talk 00:5:30 ...
I Rebuilt My Jekyll Blog With SvelteKit - Incredible Difference!
Просмотров 1,7 тыс.Год назад
A comparison of mine Jekyll built blog and my rebuild with SvelteKit Svelte is a JavaScript framework used to build highly optimized websites. In this video I will talk a little about Svelte & SvelteKit, and then we will compare the output of my blog built in Jekyll with my rebuild with SvelteKit We will use Lighthouse to compare the two of them. If you rather would read about this, you can fin...
Mastering WebSockets With Go - An in-depth tutorial
Просмотров 39 тыс.Год назад
Mastering WebSockets With Go - An in-depth tutorial
Previewing The IDE Of The Future
Просмотров 2,6 тыс.Год назад
Previewing The IDE Of The Future
The Merge - Ethereum No Longer Drains Electricity Of A Medium-Sized Country To Run
Просмотров 120Год назад
The Merge - Ethereum No Longer Drains Electricity Of A Medium-Sized Country To Run
Learning Docker - The Easy Way
Просмотров 1,4 тыс.Год назад
Learning Docker - The Easy Way
Learning Kubernetes - The Easy Way
Просмотров 2,8 тыс.Год назад
Learning Kubernetes - The Easy Way
Fuzzing In Go
Просмотров 2,6 тыс.2 года назад
Fuzzing In Go
Learning Generics In Go
Просмотров 2,4 тыс.2 года назад
Learning Generics In Go
Go 1.18 Comes With Amazing Changes
Просмотров 3532 года назад
Go 1.18 Comes With Amazing Changes
Modify Variables In Go Binaries During Build
Просмотров 4522 года назад
Modify Variables In Go Binaries During Build
Develop Lambdas And Debug Them Locally Using SAM
Просмотров 3,3 тыс.2 года назад
Develop Lambdas And Debug Them Locally Using SAM

Комментарии

  • @metcaelfe
    @metcaelfe 2 дня назад

    Great video, love the paradigems

  • @_us.m.an_
    @_us.m.an_ 2 дня назад

    Thank you!

  • @stavroskois9656
    @stavroskois9656 6 дней назад

    Amazing work explaining it! In the service factories that accept variadic configurations, I think it would be better to accept a connected client instead of a connection string. Reasoning is that you only have a single connection shared by many services (assuming that the database is the same for all the services). I guess you can have another service config func like "WithConnectedMongoClient(conn)" to cover that scenario

  • @majormartintibor
    @majormartintibor 7 дней назад

    Hi! Great video! Any chance you could share the excalidraw?

  • @lmaoded7505
    @lmaoded7505 25 дней назад

    Great video. What if you want to use this logger in multiple files without creating it again and again? Like create once and use everywhere?

  • @rishavpapaji5349
    @rishavpapaji5349 27 дней назад

    I don't have much time for my interview why was afraid weather I am able to complete kafka or not but this video help me to gain confidence to stick with rabbit MQ for streaming as well

  • @rishavpapaji5349
    @rishavpapaji5349 27 дней назад

    I read it books on event driven architecture and official rabbit MQ website but the level of clarity depth and knowledge the provided by a videos or incompatible thank you so much

  • @rishavpapaji5349
    @rishavpapaji5349 27 дней назад

    I watched your video a few months ago and I didnt understand a thing now after Ive completed my basic books and now when I am leaning towards dev ops your videos are soo helpful to me I cant put in words. But still if i have to say something that is it took a level of skill and knowledge to understand the depth of your videos, I wish i got a change for a 10 min zoom call there is a lot i want to learn from you. Apart from your video your website also as a revision notes for me and both are valuable for interview preparation and overall understanding of the concepts

  • @stasjurgensons7008
    @stasjurgensons7008 Месяц назад

    @programmingpercy Aren't your customer and product domains creating separate connections to the same db ? (can be seen around 1:50:00)

  • @turn-me-later
    @turn-me-later Месяц назад

    For some reason LinkedIn can’t recognize my og:image if I use relevant link from VSC like “assets/og-image.jpg". It seems like I have to manually turn it into "./assets/og-image.jpg"

  • @prashlovessamosa
    @prashlovessamosa Месяц назад

    hey percy can you please make some stuff on Concurrency Goroutines CPU-Bound vs I/O-Bound Concurrency How to not spawn goroutines in a loop Channels Channel Axioms The Select Statement Go Concurrency Patterns Managing Goroutines Error Handling 1: error channels Error handling 2: result with error Error handling 3: the errgroup package Fan-Out, Fan-In Managing Resources With sync.Pool Initialization with sync.Once Data races Deadlocks Deadlock Detection Deadlock Prevention with Ordered Locks Deadlock Prevention with TryLock Goroutine Leaks please make something on these topics been reading docs but not able to understand.

  • @RohitKumar-fg1qv
    @RohitKumar-fg1qv Месяц назад

    shouldn't the products field in the aggregate.Customer struct just be []uuid instead of []*entity.Item?

  • @uguremirmustafaoglu40
    @uguremirmustafaoglu40 Месяц назад

    Grest explanation, very beginner friendly 🎉

  • @danielguldbergaaes6432
    @danielguldbergaaes6432 2 месяца назад

    Such a great video, one thing I noticed is that you some times do "package <packagename>_test" and "package <packagename>" for the test files, is there a reason to add or omit the suffix _test ?

  • @toanta4838
    @toanta4838 2 месяца назад

    Dang!!! Thank you I hope one day I can get a Golang Job to buy you a coffe <3

  • @dileeshaabilash5562
    @dileeshaabilash5562 2 месяца назад

    Quality content 😍😍

  • @brownlearner2164
    @brownlearner2164 2 месяца назад

    Amazing explanation! Thank you!

  • @SayfSentinel
    @SayfSentinel 2 месяца назад

    I’d buy AnY course you do on Golang Take my money 💵 No seriously make a course on Golang man

  • @adhiana848
    @adhiana848 3 месяца назад

    thanks bro for sharing this

  • @user-oq2vq9co7e
    @user-oq2vq9co7e 3 месяца назад

    Sir make a complete series on E-Commerce.

  • @krishnendukarmakar5883
    @krishnendukarmakar5883 3 месяца назад

    Thanks bro, I learned a lot today

  • @yeboahnanaosei
    @yeboahnanaosei 3 месяца назад

    Hey, what font are you using here?

  • @weston6351
    @weston6351 3 месяца назад

    ✅ P r o m o S M

  • @user-un6us7zd4s
    @user-un6us7zd4s 3 месяца назад

    You are awesome Percy!!

  • @viktorkrepak
    @viktorkrepak 3 месяца назад

    thanks a lot for such a wonderful video! a lot of useful information, right now we're going to improve our backend architecture (along with migration from Python to Go) and I'm looking for different approaches and experience and feel like you video might help us a lot to build a new architecture.

  • @RapLyricalVideos
    @RapLyricalVideos 3 месяца назад

    Nice video man, keep it up ❤

  • @skl9942
    @skl9942 4 месяца назад

    Awesome tutorial! I have one question, your pong/pong handling, from what I can tell its not doing anything if the client stops sending pongs back.

  • @arkantos14821
    @arkantos14821 4 месяца назад

    Very Practical Thanks man !!

  • @adarshkumar9336
    @adarshkumar9336 4 месяца назад

    One of the best videos !!

  • @samuelmuthembwa4189
    @samuelmuthembwa4189 4 месяца назад

    Fantastic video.🔥🔥

  • @arkantos14821
    @arkantos14821 4 месяца назад

    you should make more videos !!!

  • @NathanielAmadi
    @NathanielAmadi 4 месяца назад

    I have a question about using SSO with self hosted applications. Can I use SSO for Private subnet routing with Cloudflare WARP to Tunnel the same way we do Public hostname routing with cloudflared access?

  • @phredlane9081
    @phredlane9081 4 месяца назад

    When i saw testing, i assumed unit testing instead of manually testing. Unit tests would have saved you a lot of time here.

    • @programmingpercy
      @programmingpercy 4 месяца назад

      Well, Unit tests are great for testing function logic. However, I often use this when I start out against a third party provider using Hooks. To see that the data I receive actually works and looks like the docs says it should. Then proceed with building a wiremock so that I can run a full integration of my software.

    • @phredlane9081
      @phredlane9081 4 месяца назад

      @@programmingpercy I don't find value in testing that GitHub's/GitLab's documentation is accurate. They already pay people to do just that. That is not your responsibility. You/the developer/we should be testing that our code functions as expected once it receives the webhook. That's where the unit tests come in. Everything outside of your network/service is not worth testing. You should test the things that you can control/fix. At best I'll store a few webhook payloads as test fixtures on disk and run against those. Network requests are expensive (read: slow) and I want my unit tests runs to be measured in milliseconds and not seconds optimally.

  • @user-ip1wg4sg3w
    @user-ip1wg4sg3w 4 месяца назад

    This is a great tutorial, thanks you!

  • @andreagiummarra8385
    @andreagiummarra8385 4 месяца назад

    Good work! Thanks… Which tool did you use in this video for graphical schema?

    • @programmingpercy
      @programmingpercy 4 месяца назад

      That's a tool called Exalidraw and it's amazing. You can easily selfhost it using Docker. excalidraw.com

  • @Augustine_354
    @Augustine_354 4 месяца назад

    What about generated code (like oapi-codegen)? Then my whole openapi spec is generated into one file. How one should deal with it?

  • @cariyaputta
    @cariyaputta 4 месяца назад

    Thanks for the examples.

  • @Moggybaer
    @Moggybaer 4 месяца назад

    Question: when wanting to use slog in a ddd project inside the domain objects like entities and agregates, how to streamline the log level for the application ? Domain objects do not depend on outside things so i cannot inject a central slog instance

  • @melisvandenbrink2779
    @melisvandenbrink2779 4 месяца назад

    Thanks for explaining the loop variable "problem" so clearly - have read a lot about it, but your explaination illustrated the underlining Go runtime workings which caused the behaviour.

    • @giulioguarnone5948
      @giulioguarnone5948 4 месяца назад

      I've never go this "problem" cause I've always tought that every goroutine has its proper scope : [...] go func(vcopy string) { fmt.Println(vcopy) }(v) [...]

  • @kanhaiyakumarguptaiiitu7235
    @kanhaiyakumarguptaiiitu7235 4 месяца назад

    at 14:50 what you have written permission to Percy.full command? . I am get error.username and password is not allowed

  • @strahinjamalabosna
    @strahinjamalabosna 4 месяца назад

    I'm sorry but I'm trying to understand how is for loop + goroutine behavior a bug. What you are doing here is neither bad practice nor a freak behavior. It is behavior that is entirely expected from this code that is by all measures incorrectly written. THIS is the correct code that does exactly what you would expect: ``` names := []string{"Strale", "Caka", "Strahinja"} for _, v := range names { go func(name string) { fmt.Println(name) }(v) } ``` Example shown here (in the video) disregards basic concepts of multi threading that are surely covered on every computer science course on the planet. Now, I'm not trying to be rude and I very much apologize if that is the way I'm coming across. However, considering that there's no actual bug being presented here, how is this update a solution instead of an ability to allow programmers to write code that is, by every possible measure, bad?

    • @programmingpercy
      @programmingpercy 4 месяца назад

      I do understand your point and I do agree to some degree. It is doing what's expected. The problem is that there are too many developers that make the mistake, proven over and over. So many times that it's an apparent issue. You're not rude, you're just stating your opinion. I do try in the video to explain that it is expected behavior by showing what's actually happening. The issue is that it's to easy for many developers to not understand that. One might argue that's it's a unnecessary change because any decent Linter will prevent you from doing this mistake. But then we have reality, people don't use linters, people misunderstand things. The change won't harm anyone, but it will make it harder for people to screw up, so it's a win according to me. With the logic that people should just learn to understand, we wouldn't need a GC. If people just learn to free up mem and handle everything as they are suppose to, the GC is just pointless. Logic is sound, but reality is another beast.

    • @strahinjamalabosna
      @strahinjamalabosna 4 месяца назад

      @@programmingpercy You do make a good point. If majority makes a mistake than it makes more sense to create means to correct a mistake than to expect all those people to get better. Thanks for the explanation

  • @DarioNecco
    @DarioNecco 4 месяца назад

    Love the way you summarize the new features! Thanks for the hard work

  • @salvaje1
    @salvaje1 4 месяца назад

    The main reason I was using third party libraries for http was the dynamic paths. Now I don't need to.

  • @alexandreprince914
    @alexandreprince914 4 месяца назад

    Thank you for the video dude !! keep goin

  • @Nerd2k7
    @Nerd2k7 4 месяца назад

    Imho these adjustments in go weren't needed. E.g. the for loop adjustment is simply required or at least it seems due to the fact that the people don't actually know what there doing or how the language works. I'm fine with them but i would the core team to focus on something else

    • @programmingpercy
      @programmingpercy 4 месяца назад

      I'd argue the for improvement is much needed. Too many silly bugs. I know its simple to fix the for issue, but it is too simple for new goers to miss understand the old implementation and make mistakes. The Servemux changes aren't needed either, but they are a nice UX upgrade to the http lib. I welcome them! Also the changes on the slices package are pretty sweet. But sure, most of the changes were UX improvements to make it easier. I like easier.

    • @brentsaner
      @brentsaner 4 месяца назад

      100% agreed. They spent time on *this* and NOT ENUMS?!

  • @eser-sahin
    @eser-sahin 4 месяца назад

    Great video. You explained it very well, I watch every video on this channel with pleasure and care without getting bored. thanks a lot..

    • @programmingpercy
      @programmingpercy 4 месяца назад

      Whao!! Thank you very much for reaching out. This warmed my heart to read! Big thank you

  • @diegoclairr
    @diegoclairr 4 месяца назад

    Very good video, thanks 🎉

    • @programmingpercy
      @programmingpercy 4 месяца назад

      Thank you for watching! Makes it more fun to make these things when people watches it

  • @peace-wink
    @peace-wink 4 месяца назад

    Great video, keep up the good work 😊👍

  • @omarelkareh5544
    @omarelkareh5544 4 месяца назад

    Even thou you have a point, passing the current name as a parameter to the go routine function pretty much solves the issue

    • @programmingpercy
      @programmingpercy 4 месяца назад

      Agreed, although this is a very common mistake I've seen way too many times in code reviews. And out in the wild of running code.

    • @brentsaner
      @brentsaner 4 месяца назад

      I mean, it's in every piece of documentation surrounding goroutines. This definitely isn't obscure. It's just like off-by-1 errors- devs just simply not paying attention.

    • @programmingpercy
      @programmingpercy 4 месяца назад

      Sure it's well known, still often occuring. And if it's happening a lot, then it's an UX issue. Simple change that will help a ton developers.

    • @brentsaner
      @brentsaner 4 месяца назад

      @@programmingpercy "UX" for a language is silly. Consistency and capability of a language come MILES before attempting to babysit PEBKAC.

    • @programmingpercy
      @programmingpercy 4 месяца назад

      I don't know if I'd call it Silly, I think it's an important aspect for Adoptability. We may call it DevExp if you like that more. Well, wouldn't you say Go already has great compability and consistency? So what's wrong with tending to the more junior developers? I don't see any harm in this improvement

  • @luisweck5285
    @luisweck5285 4 месяца назад

    for range on ints is pretty cool too! for example, you can now write benchmarks as: for range b.N { ... }

    • @programmingpercy
      @programmingpercy 4 месяца назад

      Amazing! Didn't even think about that! That is a nice improvement indeed!!

    • @brentsaner
      @brentsaner 4 месяца назад

      Ints or uints? How does it handle a negative integer as the range start?

    • @luisweck5285
      @luisweck5285 4 месяца назад

      @@brentsaner just tried it. The loop is not executed