<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Gregori Piñeres</title>
    <description>The latest articles on Forem by Gregori Piñeres (@gregorip02).</description>
    <link>https://forem.com/gregorip02</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F315558%2Fd9e6a716-5d3c-47fc-b6b1-ff25b33bf9be.jpg</url>
      <title>Forem: Gregori Piñeres</title>
      <link>https://forem.com/gregorip02</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gregorip02"/>
    <language>en</language>
    <item>
      <title>Automate daily MySQL and PostgreSQL database backups</title>
      <dc:creator>Gregori Piñeres</dc:creator>
      <pubDate>Sat, 30 Mar 2024 16:35:36 +0000</pubDate>
      <link>https://forem.com/gregorip02/automate-daily-mysql-and-postgresql-database-backups-11io</link>
      <guid>https://forem.com/gregorip02/automate-daily-mysql-and-postgresql-database-backups-11io</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today's fast-paced digital landscape, the importance of a robust disaster recovery plan cannot be overstated. Yet, it's a facet of business operations that often gets overlooked until it's too late. Picture this: you're running a development agency, managing numerous web applications hosted on EC2 servers or Digital Ocean droplets. The last thing you want is to be caught off guard by data loss due to unforeseen circumstances. That's where a reliable database backup solution becomes your knight in shining armor.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution 💡
&lt;/h2&gt;

&lt;p&gt;Introducing &lt;a href="https://databasebackup.dev"&gt;DatabaseBackup.dev&lt;/a&gt; – a game-changing, low-cost product designed to streamline database backups for both companies and individuals dealing with MySQL and PostgreSQL databases. Our platform empowers users to effortlessly configure their preferred storage provider – whether it's S3, Google Cloud Storage, Google Drive, or SFTP – and schedule daily, weekly, or monthly backups with just a few clicks.&lt;/p&gt;

&lt;p&gt;But we didn't stop there. We understand the importance of user experience, which is why we've invested considerable effort into crafting a sleek, user-friendly interface. Our goal? To deliver a product that's not only simple and affordable but also just works, every single time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfuycyd40jqq6ky46t82.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfuycyd40jqq6ky46t82.png" alt="DatabaseBackup.dev Interface" width="800" height="783"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Curious about our development journey? Dive into the behind-the-scenes action in this enlightening &lt;a href="https://twitter.com/gregorip02/status/1769554269198311638"&gt;Twitter thread&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security and Storage 🔐
&lt;/h2&gt;

&lt;p&gt;Security is paramount when it comes to handling sensitive data. That's why we've left no stone unturned in ensuring the utmost protection for your information. Our platform leverages advanced encryption techniques, utilizing OpenSSL with AES-256 and AES-128 encryption algorithms, to securely store your database and storage provider credentials. With DatabaseBackup.dev, you can rest easy knowing that your data is in safe hands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In the ever-evolving digital landscape, a proactive approach to data management is non-negotiable. As the old adage goes, it's better to be safe than sorry. Don't wait until disaster strikes – take charge of your data's destiny today with DatabaseBackup.dev.&lt;/p&gt;

&lt;p&gt;Ready to experience peace of mind like never before? Sign up for our free version, allowing you to add a database and storage provider of your choice. Trust us, your future self will thank you. Create an account now at &lt;a href="https://databasebackup.dev"&gt;DatabaseBackup.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>postgres</category>
      <category>saas</category>
    </item>
    <item>
      <title>How to use ChatGPT with Telegram for Seamless Conversational AI Experience</title>
      <dc:creator>Gregori Piñeres</dc:creator>
      <pubDate>Sat, 24 Jun 2023 13:27:03 +0000</pubDate>
      <link>https://forem.com/gregorip02/how-to-use-chatgpt-with-telegram-for-seamless-conversational-ai-experience-13jh</link>
      <guid>https://forem.com/gregorip02/how-to-use-chatgpt-with-telegram-for-seamless-conversational-ai-experience-13jh</guid>
      <description>&lt;p&gt;Are you tired of manually answering the same questions over and over again? Are you looking for a way to improve your customer service, engagement, or simply your personal productivity? Look no further than ChatGPT, the advanced conversational AI powered by OpenAI, now available for seamless integration with Telegram. In this blog post, we’ll show you how to use &lt;strong&gt;ChatGPT&lt;/strong&gt; with Telegram for a truly exceptional conversational AI experience, whether you’re a business owner, a marketer, or simply someone who wants to streamline their communication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT directly from Telegram&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First things first, what is ChatGPT? At its core, ChatGPT is an AI-powered chatbot that can converse with users in natural language, just like a human would. It uses advanced machine learning algorithms to understand the intent behind user messages and respond accordingly, making it a powerful tool for automating conversations and reducing workload. With ChatGPT, you can provide instant support, answer FAQs, schedule appointments, and more, all without ever leaving the chat window.&lt;/p&gt;

&lt;p&gt;Now, let’s talk about how to set up ChatGPT with Telegram. The process is simple and straightforward, and won’t take you more than a few minutes:&lt;/p&gt;

&lt;p&gt;Head over to &lt;a href="https://t.me/ai_telegram_assistant_bot"&gt;AI Assistant&lt;/a&gt; and click ‘Start’ to open the ChatGPT bot.&lt;/p&gt;

&lt;p&gt;Follow the prompts to customize your preferences and start a conversation.&lt;/p&gt;

&lt;p&gt;Connect to Telegram by following the instructions provided in the chat.&lt;/p&gt;

&lt;p&gt;Start chatting with ChatGPT and see the magic happen!&lt;/p&gt;

&lt;p&gt;Once you’ve integrated ChatGPT with Telegram, you’ll have access to a wide range of features and capabilities that will help you streamline your communication and improve your engagement. For example, you can set up automated welcome messages, trigger responses based on specific keywords, collect feedback from customers, and even integrate with third-party apps like Google Sheets and Zapier.&lt;/p&gt;

&lt;p&gt;But perhaps the best thing about using ChatGPT with Telegram is the seamless experience it provides. With ChatGPT, you don’t have to worry about switching between different platforms or apps – everything happens within the same chat window. This makes for a truly natural and intuitive conversational AI experience that users will love.&lt;/p&gt;

&lt;p&gt;In conclusion, integrating ChatGPT with Telegram is a smart move for anyone looking to streamline their communication and improve their engagement. With its advanced machine learning capabilities and seamless integration with Telegram, ChatGPT is the perfect tool for providing instant support, answering FAQs, scheduling appointments, and more. So why wait? Head over to &lt;a href="https://t.me/chatgpt4plusblot"&gt;t.me/chatgpt4plusblot&lt;/a&gt; today and start experiencing the power of ChatGPT for yourself!&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>telegram</category>
    </item>
    <item>
      <title>Define regex constraints to your Laravel routes easy.</title>
      <dc:creator>Gregori Piñeres</dc:creator>
      <pubDate>Thu, 29 Oct 2020 13:22:35 +0000</pubDate>
      <link>https://forem.com/gregorip02/define-restrictions-to-your-laravel-routes-easy-24do</link>
      <guid>https://forem.com/gregorip02/define-restrictions-to-your-laravel-routes-easy-24do</guid>
      <description>&lt;p&gt;In the next version 8.12.x of laravel a method will be added that will save you several lines of code if you are defining restrictions on your routes.&lt;/p&gt;

&lt;p&gt;Previously, in most projects that implemented this feature, you would see code like the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Illuminate\Support\Facades\Route&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'articles/{article}'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ArticleController@show'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'article'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'[0-9]+'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this syntax we would match with a route similar to the following.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;th&gt;HTTP Status Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;https://example.com/articles/123456&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;https://example.com/articles/abcdfg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;404&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is fine, but some users may not understand this syntax at first glance. Therefore, now we will have a series of explicit methods that will allow the developer to save code and obtain the same result without writing "complex" expressions.&lt;/p&gt;

&lt;h2&gt;
  
  
  New route regex registration methods
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Regex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;whereNumber&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[0-9]+&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;whereAlpha&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[a-zA-Z]+&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;whereUuid&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Finally you can use these methods in the definition of the routes as follows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Illuminate\Support\Facades\Route&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'articles/{article}'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'ArticleController@show'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;whereNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'article'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'user/{user}'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'UserController@show'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;whereUuid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'user'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'book/{author}/{title}'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'BookController@show'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;whereString&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'author'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'title'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you know this feature will be available from version 8.12.0 of the framework, I hope it will be useful for you.&lt;/p&gt;

&lt;p&gt;We read soon.&lt;/p&gt;

</description>
      <category>laravel</category>
    </item>
    <item>
      <title>How generate a Laravel APP_KEY with OpenSSL</title>
      <dc:creator>Gregori Piñeres</dc:creator>
      <pubDate>Mon, 09 Mar 2020 15:23:31 +0000</pubDate>
      <link>https://forem.com/gregorip02/how-generate-a-laravel-appkey-with-openssl-4cpe</link>
      <guid>https://forem.com/gregorip02/how-generate-a-laravel-appkey-with-openssl-4cpe</guid>
      <description>&lt;p&gt;Hello everyone, today I will show you a little trick that I use frequently in my scripts to create a Laravel application key commonly generated with artisan.&lt;/p&gt;

&lt;p&gt;It's simple, with the help of the openssl package we can generate a random string of 32 characters and at the same time, it can be encoded in base64.&lt;/p&gt;

&lt;p&gt;This will generate a fully valid laravel application key that you can use in your &lt;code&gt;.env&lt;/code&gt; configuration file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"base64:&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;openssl rand &lt;span class="nt"&gt;-base64&lt;/span&gt; 32&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thanks for reading this little tip, don't forget to share it on your social networks or with your development team.&lt;/p&gt;

&lt;p&gt;We read soon.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>openssl</category>
    </item>
  </channel>
</rss>
