<?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>DEV Community: David Nguyen</title>
    <description>The latest articles on DEV Community by David Nguyen (@hoangit).</description>
    <link>https://dev.to/hoangit</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%2F451461%2F4c5bb99d-813d-4a35-90ac-24be4c68cbf3.jpg</url>
      <title>DEV Community: David Nguyen</title>
      <link>https://dev.to/hoangit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hoangit"/>
    <language>en</language>
    <item>
      <title>Laravel Reverb now Available</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Tue, 12 Mar 2024 10:24:31 +0000</pubDate>
      <link>https://dev.to/hoangit/laravel-reverb-now-available-5gge</link>
      <guid>https://dev.to/hoangit/laravel-reverb-now-available-5gge</guid>
      <description>&lt;h2&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#introduction"&gt;Introduction&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/laravel/reverb"&gt;Laravel Reverb&lt;/a&gt; brings blazing-fast and scalable real-time WebSocket communication directly to your Laravel application and provides seamless integration with Laravels existing suite of event broadcasting tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#installation"&gt;Installation&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Laravel Reverb requires PHP 8.2+.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may install Reverb using the &lt;code&gt;install:broadcasting&lt;/code&gt; Artisan command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan install:broadcasting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#configuration"&gt;Configuration&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Behind the scenes, the &lt;code&gt;install:broadcasting&lt;/code&gt; Artisan command will run the &lt;code&gt;reverb:install&lt;/code&gt; command, which will install Reverb with a sensible set of default configuration options. If you would like to make any configuration changes, you may do so by updating Reverb's environment variables or by updating the &lt;code&gt;config/reverb.php&lt;/code&gt; configuration file.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#application-credentials"&gt;&lt;strong&gt;Application Credentials&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In order to establish a connection to Reverb, a set of Reverb "application" credentials must be exchanged between the client and server. These credentials are configured on the server and are used to verify the request from the client. You may define these credentials using the following environment variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;REVERB_APP_ID=my-app-idREVERB_APP_KEY=my-app-keyREVERB_APP_SECRET=my-app-secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#allowed-origins"&gt;&lt;strong&gt;Allowed Origins&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;You may also define the origins from which client requests may originate by updating the value of the &lt;code&gt;allowed_origins&lt;/code&gt; configuration value within the &lt;code&gt;apps&lt;/code&gt; section of the &lt;code&gt;config/reverb.php&lt;/code&gt; configuration file. Any requests from an origin not listed in your allowed origins will be rejected. You may allow all origins using &lt;code&gt;*&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'apps' =&amp;gt; [[ 'id' =&amp;gt; 'my-app-id', 'allowed_origins' =&amp;gt; ['laravel.com'], // ... ]]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#additional-applications"&gt;&lt;strong&gt;Additional Applications&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Typically, Reverb provides a WebSocket server for the application in which it is installed. However, it is possible to serve more than one application using a single Reverb installation.&lt;/p&gt;

&lt;p&gt;For example, you may wish to maintain a single Laravel application which, via Reverb, provides WebSocket connectivity for multiple applications. This can be achieved by defining multiple &lt;code&gt;apps&lt;/code&gt; in your application's &lt;code&gt;config/reverb.php&lt;/code&gt; configuration file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'apps' =&amp;gt; [[ 'id' =&amp;gt; 'my-app-one', // ...], ['id' =&amp;gt; 'my-app-two', // ...],],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#ssl"&gt;&lt;strong&gt;SSL&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In most cases, secure WebSocket connections are handled by the upstream web server (Nginx, etc.) before the request is proxied to your Reverb server.&lt;/p&gt;

&lt;p&gt;However, it can sometimes be useful, such as during local development, for the Reverb server to handle secure connections directly. If you are using &lt;a href="https://herd.laravel.com/"&gt;Laravel Herd's&lt;/a&gt; secure site feature or you are using &lt;a href="https://laravel.com/docs/11.x/valet"&gt;Laravel Valet&lt;/a&gt; and have run the &lt;a href="https://laravel.com/docs/11.x/valet#securing-sites"&gt;secure command&lt;/a&gt; against your application, you may use the Herd / Valet certificate generated for your site to secure your Reverb connections. To do so, set the &lt;code&gt;REVERB_HOST&lt;/code&gt; environment variable to your site's hostname or explicitly pass the hostname option when starting the Reverb server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan reverb:start --host="0.0.0.0" --port=8080 --hostname="laravel.test"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since Herd and Valet domains resolve to &lt;code&gt;localhost&lt;/code&gt;, running the command above will result in your Reverb server being accessible via the secure WebSocket protocol (&lt;code&gt;wss&lt;/code&gt;) at &lt;code&gt;wss://laravel.test:8080&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You may also manually choose a certificate by defining &lt;code&gt;tls&lt;/code&gt; options in your application's &lt;code&gt;config/reverb.php&lt;/code&gt; configuration file. Within the array of &lt;code&gt;tls&lt;/code&gt; options, you may provide any of the options supported by &lt;a href="https://www.php.net/manual/en/context.ssl.php"&gt;PHP's SSL context options&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'options' =&amp;gt; ['tls' =&amp;gt; [ 'local_cert' =&amp;gt; '/path/to/cert.pem'],],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#running-server"&gt;Running the Server&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The Reverb server can be started using the &lt;code&gt;reverb:start&lt;/code&gt; Artisan command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan reverb:start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, the Reverb server will be started at &lt;code&gt;0.0.0.0:8080&lt;/code&gt;, making it accessible from all network interfaces.&lt;/p&gt;

&lt;p&gt;If you need to specify a custom host or port, you may do so via the &lt;code&gt;--host&lt;/code&gt; and &lt;code&gt;--port&lt;/code&gt; options when starting the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan reverb:start --host=127.0.0.1 --port=9000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, you may define &lt;code&gt;REVERB_SERVER_HOST&lt;/code&gt; and &lt;code&gt;REVERB_SERVER_PORT&lt;/code&gt; environment variables in your application's &lt;code&gt;.env&lt;/code&gt; configuration file.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#debugging"&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;To improve performance, Reverb does not output any debug information by default. If you would like to see the stream of data passing through your Reverb server, you may provide the &lt;code&gt;--debug&lt;/code&gt; option to the &lt;code&gt;reverb:start&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan reverb:start --debug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#restarting"&gt;&lt;strong&gt;Restarting&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Since Reverb is a long-running process, changes to your code will not be reflected without restarting the server via the &lt;code&gt;reverb:restart&lt;/code&gt; Artisan command.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;reverb:restart&lt;/code&gt; command ensures all connections are gracefully terminated before stopping the server. If you are running Reverb with a process manager such as Supervisor, the server will be automatically restarted by the process manager after all connections have been terminated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;php artisan reverb:restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#production"&gt;Running Reverb in Production&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Due to the long-running nature of WebSocket servers, you may need to make some optimizations to your server and hosting environment to ensure your Reverb server can effectively handle the optimal number of connections for the resources available on your server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your site is managed by &lt;a href="https://forge.laravel.com/"&gt;Laravel Forge&lt;/a&gt;, you may automatically optimize your server for Reverb directly from the "Application" panel. By enabling the Reverb integration, Forge will ensure your server is production-ready, including installing any required extensions and increasing the allowed number of connections.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#open-files"&gt;&lt;strong&gt;Open Files&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Each WebSocket connection is held in memory until either the client or server disconnects. In Unix and Unix-like environments, each connection is represented by a file. However, there are often limits on the number of allowed open files at both the operating system and application level.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#operating-system"&gt;&lt;strong&gt;Operating System&lt;/strong&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;On a Unix-based operating system, you may determine the allowed number of open files using the &lt;code&gt;ulimit&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ulimit -n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will display the open file limits allowed for different users. You may update these values by editing the &lt;code&gt;/etc/security/limits.conf&lt;/code&gt; file. For example, updating the maximum number of open files to 10,000 for the &lt;code&gt;forge&lt;/code&gt; user would look like the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# /etc/security/limits.confforge soft nofile 10000forge hard nofile 10000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#event-loop"&gt;&lt;strong&gt;Event Loop&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Under the hood, Reverb uses a ReactPHP event loop to manage WebSocket connections on the server. By default, this event loop is powered by &lt;code&gt;stream_select&lt;/code&gt;, which doesn't require any additional extensions. However, &lt;code&gt;stream_select&lt;/code&gt; is typically limited to 1,024 open files. As such, if you plan to handle more than 1,000 concurrent connections, you will need to use an alternative event loop not bound to the same restrictions.&lt;/p&gt;

&lt;p&gt;Reverb will automatically switch to an &lt;code&gt;ext-event&lt;/code&gt;, &lt;code&gt;ext-ev&lt;/code&gt;, or &lt;code&gt;ext-uv&lt;/code&gt; powered loop when available. All of these PHP extensions are available for install via PECL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pecl install event# orpecl install ev# orpecl install uv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#web-server"&gt;&lt;strong&gt;Web Server&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In most cases, Reverb runs on a non web-facing port on your server. So, in order to route traffic to Reverb, you should configure a reverse proxy. Assuming Reverb is running on host &lt;code&gt;0.0.0.0&lt;/code&gt; and port &lt;code&gt;8080&lt;/code&gt; and your server utilizes the Nginx web server, a reverse proxy can be defined for your Reverb server using the following Nginx site configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server { ... location / { proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header SERVER_PORT $server_port; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass http://0.0.0.0:8080; } ...}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Typically, web servers are configured to limit the number of allowed connections in order to prevent overloading the server. To increase the number of allowed connections on an Nginx web server to 10,000, the &lt;code&gt;worker_rlimit_nofile&lt;/code&gt; and &lt;code&gt;worker_connections&lt;/code&gt; values of the &lt;code&gt;nginx.conf&lt;/code&gt; file should be updated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user forge;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;worker_rlimit_nofile 10000;events { worker_connections 10000; multi_accept on;}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The configuration above will allow up to 10,000 Nginx workers per process to be spawned. In addition, this configuration sets Nginx's open file limit to 10,000.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#ports"&gt;&lt;strong&gt;Ports&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Unix-based operating systems typically limit the number of ports that can be opened on the server. You may see the currently allowed range via the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat /proc/sys/net/ipv4/ip_local_port_range# 32768 60999
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output above shows the server can handle a maximum of 28,231 (60,999 - 32,768) connections since each connection requires a free port. Although we recommend &lt;a href="https://laravel.com/docs/11.x/reverb#scaling"&gt;horizontal scaling&lt;/a&gt; to increase the number of allowed connections, you may increase the number of available open ports by updating the allowed port range in your server's &lt;code&gt;/etc/sysctl.conf&lt;/code&gt; configuration file.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#process-management"&gt;&lt;strong&gt;Process Management&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In most cases, you should use a process manager such as a Supervisor to ensure the Reverb server is continually running. If you are using Supervisor to run Reverb, you should update the &lt;code&gt;minfds&lt;/code&gt; setting of your server's &lt;code&gt;supervisor.conf&lt;/code&gt; file to ensure the Supervisor is able to open the files required to handle connections to your Reverb server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[supervisord]...minfds=10000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://laravel.com/docs/11.x/reverb#scaling"&gt;&lt;strong&gt;Scaling&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;If you need to handle more connections than a single server will allow, you may scale your Reverb server horizontally. Utilizing the publish/subscribe capabilities of Redis, Reverb is able to manage connections across multiple servers. When a message is received by one of your application's Reverb servers, the server will use Redis to publish the incoming message to all other servers.&lt;/p&gt;

&lt;p&gt;To enable horizontal scaling, you should set the &lt;code&gt;REVERB_SCALING_ENABLED&lt;/code&gt; environment variable to &lt;code&gt;true&lt;/code&gt; in your application's &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 plaintext"&gt;&lt;code&gt;REVERB_SCALING_ENABLED=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, you should have a dedicated, central Redis server to which all of the Reverb servers will communicate. Reverb will use the &lt;a href="https://laravel.com/docs/11.x/redis#configuration"&gt;default Redis connection configured for your application&lt;/a&gt; to publish messages to all of your Reverb servers.&lt;/p&gt;

&lt;p&gt;Once you have enabled Reverb's scaling option and configured a Redis server, you may simply invoke the &lt;code&gt;reverb:start&lt;/code&gt; command on multiple servers that are able to communicate with your Redis server. These Reverb servers should be placed behind a load balancer that distributes incoming requests evenly among the servers.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://laravel.com/docs/11.x/reverb"&gt;https://laravel.com/docs/11.x/reverb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reverb</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Phần mềm Ôn Tập Mô Phỏng các tình huống giao thông v2.0.0</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Thu, 29 Feb 2024 14:54:57 +0000</pubDate>
      <link>https://dev.to/hoangit/phan-mem-on-tap-mo-phong-cac-tinh-huong-giao-thong-v200-258l</link>
      <guid>https://dev.to/hoangit/phan-mem-on-tap-mo-phong-cac-tinh-huong-giao-thong-v200-258l</guid>
      <description>&lt;h3&gt;
  
  
  Link bộ cài: dung lượng &lt;strong&gt;5.5 GB&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Bộ cài phiên bản 64-bit (x64):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1. &lt;a href="https://www.mophonggiaothong.com/PMMP/OnTapMoPhong/OnTapMoPhongSetup_v200_x64.rar"&gt;Tải về OnTapMoPhongSetup_v200_x64 (Link gốc)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2. &lt;a href="https://drive.google.com/file/d/1aFXHuYWF_bCNk_zrQ22hA0yW8WKVqk3L/view?usp=sharing"&gt;Tải về OnTapMoPhongSetup_v200_x64 (Link Google Drive)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bộ cài phiên bản 32-bit (x86):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.mophonggiaothong.com/PMMP/OnTapMoPhong/OnTapMoPhongSetup_v200_x86.rar"&gt;Tải về OnTapMoPhongSetup_v200_x86.rar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yQ31lNRh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1709218293399/b5b4edc8-fd3f-4b61-bf51-e1f237b300d4.png%2520align%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yQ31lNRh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1709218293399/b5b4edc8-fd3f-4b61-bf51-e1f237b300d4.png%2520align%3D" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hướng dẫn
&lt;/h3&gt;

&lt;p&gt;Mật khẩu giải nén file rar: mophonggiaothong2024&lt;/p&gt;

&lt;p&gt;Chạy file &lt;strong&gt;setup.exe&lt;/strong&gt; và thực hiện tuần tự từng bước để cài đặt&lt;/p&gt;

&lt;h3&gt;
  
  
  Chi tiết cập nhật
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1.    Điều chỉnh đồ họa các tình huống:&lt;/strong&gt; &lt;a href="https://www.mophonggiaothong.com/PMMP/OnTapMoPhong/OnTapMoPhongSetup_v200_x64.rar"&gt;&lt;br&gt;&lt;br&gt;
&lt;/a&gt;- Đồ họa lại một số tình huống để nâng cao chất lượng hình ảnh, giúp người học dễ quan sát, nhận biết (19 tình huống)&lt;br&gt;&lt;br&gt;
- Đồ họa lại 12 video tình huống thực tế (ảnh mờ, độ phân giải thấp) thành clip 3D để đồng nhất, nâng cao chất lượng video, giúp người học nhận diện tình huống dễ hơn&lt;br&gt;&lt;br&gt;
- Kéo dài mốc thời gian chấm điểm (mốc 5đ, mốc 0đ) để giúp người học dễ nhận biết, dễ xử lý tình huống so với phần mềm trước&lt;br&gt;&lt;br&gt;
&lt;strong&gt;2.    Thay đổi tính năng phần mềm:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;a)    Phần mềm ôn tập: thêm 3 tính năng&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
-    Bổ sung và hiển thị tên tình huống khi play video để gợi nhớ&lt;br&gt;&lt;br&gt;
-    Bổ sung các nút cho phép chuyển sang các tình huống Trước/Sau và Hiển thị thanh và cờ chấm điểm cho từng tình huống &lt;br&gt;&lt;br&gt;
-    Phần THI THỬ được thiết kế giao diện như khi sát hạch để học viên làm quen&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;b)    Phần mềm sát hạch: thêm 2 tính năng&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
-    Tăng thời gian đếm ngược (nghỉ) giữa các tình huống từ 3s lên 10s để học viên có thêm thời gian chuẩn bị&lt;br&gt;&lt;br&gt;
-    Điều chỉnh không cho click đúp vào phần video; khi mở phần mềm thì giao diện chiếm toàn màn hình, không hiển thị thanh taskbar của Windows (hạn chế mất focus)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;c)    Phần mềm quản trị: thêm 2 tính năng&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
-    Bổ sung thêm xuất danh sách Vắng, đạt, trượt với định dạng pdf (trước đây là exel) để có thể in luôn&lt;br&gt;&lt;br&gt;
-    Chỉnh sửa biểu mẫu in kết quả (hiển thị thêm version để phân biệt với các phiên bản trước)&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Từ ngày 5/1/2024, Cục Đường bộ Việt Nam đã tổ chức tập huấn và cập nhật phần mềm mô phỏng tình huống giao thông. Phần mềm mới được điều chỉnh đồ họa, tăng thời gian chuẩn bị và kéo dài thời gian chấm điểm, nhằm nâng cao hiệu quả đào tạo và sát hạch lái xe. Các cơ sở đào tạo dự kiến sẽ cập nhật phần mềm mới từ 1/2/2024.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;a href="https://eplus.dev/phan-mem-on-tap-mo-phong-cac-tinh-huong-giao-thong-v200"&gt;https://eplus.dev/phan-mem-on-tap-mo-phong-cac-tinh-huong-giao-thong-v200&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oto</category>
    </item>
    <item>
      <title>Swags Unboxing Compose Camp 2023 (#ChienBinhAndroid)</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Mon, 06 Nov 2023 05:48:10 +0000</pubDate>
      <link>https://dev.to/hoangit/swags-unboxing-compose-camp-2023-chienbinhandroid-4829</link>
      <guid>https://dev.to/hoangit/swags-unboxing-compose-camp-2023-chienbinhandroid-4829</guid>
      <description>&lt;p&gt;&lt;a href="https://eplus.dev/swags-unboxing-compose-camp-2023-chienbinhandroid"&gt;https://eplus.dev/swags-unboxing-compose-camp-2023-chienbinhandroid&lt;/a&gt;&lt;/p&gt;

</description>
      <category>chienbinhandroid</category>
      <category>android</category>
      <category>compose</category>
      <category>camp</category>
    </item>
    <item>
      <title>Discount for student dev</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Mon, 06 Nov 2023 05:42:18 +0000</pubDate>
      <link>https://dev.to/hoangit/discount-for-student-dev-m2n</link>
      <guid>https://dev.to/hoangit/discount-for-student-dev-m2n</guid>
      <description>&lt;h2&gt;
  
  
  Source Code Repos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.atlassian.com/software/views/bitbucket-academic-license.jsp"&gt;Bitbucket&lt;/a&gt; [FREE] - Free unlimited public and private repositories for academic users and teams.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;GitHub&lt;/a&gt; [FREE] - Personal account (normally $7/month) with unlimited private repositories while you're a student.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  IDE and Code Editing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.jetbrains.com/community/education/"&gt;JetBrains IDE pack&lt;/a&gt; [FREE] - Free professional developer IDEs and tools from JetBrains, including:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://software.intel.com/en-us/qualify-for-free-software/student"&gt;Intel Parallel Studio XE 2015&lt;/a&gt; [FREE] - Tool suite which simplifies the design, development, debug, and tuning of code that utilizes parallel processing to boost application performance. Free for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/xamarin/xamarin-for-students/"&gt;Xamarin IDE&lt;/a&gt; [FREE] - IDE for using C# for iOS, Android, Mac &amp;amp; Windows platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://visualstudio.microsoft.com/vs/community/"&gt;Visual Studio Community 2017&lt;/a&gt; [FREE] - IDE for C#,Javascript, C++ and others. Latest release includes Xamarin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bootstrapstudio.io/pages/student-license"&gt;Bootstrap Studio&lt;/a&gt; [FREE] - IDE that creates responsive websites using the Bootstrap framework.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://in.mathworks.com/products/matlab/student.html"&gt;MATLAB&lt;/a&gt; [DISCOUNT] - MATLAB is a high-level technical computing language and interactive environment for algorithm development, data visualization, data analysis, and numerical computation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://shiftedit.net/"&gt;ShiftEdit&lt;/a&gt; [DISCOUNT] - ShiftEdit is a powerful online IDE for developing websites. Discount for educations. $750 a year for 50 licenses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://replit.com/site/github-students"&gt;Repl&lt;/a&gt; [FREE] - An online IDE that lets you instantly code in over fifty languages.Hacker plan, includes unlimited private repls and multiplayer invites. Free for one year available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.github.com/codespaces/"&gt;GitHub Codespaces&lt;/a&gt;[FREE] - An online IDE for GitHub that provides a complete dev environment with a single click. Free personal plan subscription for as long as you are a student via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.atom.io/"&gt;Atom&lt;/a&gt; [FREE] - Atom is a free and open-source text and source code editor developed by GitHub (Atom A Hackable Text and Source Code Editor).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://wisej.com/github-studentpack/"&gt;Wisej&lt;/a&gt; [FREE] - Build powerful web applications in Visual Studio with C# or VB.NET.Free Wisej Developer license plus free updates for a year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;DeepScan&lt;/a&gt; [FREE] - DeepScan is a platform for building better and more reliable JavaScript apps.Free 6-month trial while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;PopSQL&lt;/a&gt; [FREE] - Modern, collaborative SQL editor for your team write queries, visualize data, and share your results.Free Premium subscription for PopSQL while you're a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sqlgate.com/student-pack"&gt;SQLGate&lt;/a&gt; [FREE] - Simple but powerful IDE for multiple SQL databases.Access to most Standard Subscription features for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Kodika&lt;/a&gt; [FREE] - Build iOS applications with drag &amp;amp; drop.Kodika Unlimited Pro subscription free for 6 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Polypane&lt;/a&gt; [FREE] - A powerful browser and developer tool that lets developers and designers make better websites and web apps in less time.Polypane free for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Xojo&lt;/a&gt; [FREE] - A cross-platform development tool for making native apps for the Desktop.Xojo Desktop license free while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Yakindu&lt;/a&gt; [FREE] - An integrated modelling environment for the specification and development of reactive, event-driven systems based on the concept of state machines.Yakindu Professional Edition free for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Version Control
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.git-tower.com/students/github"&gt;Tower&lt;/a&gt; [DISCOUNT] - The Git client that brings all of Git and GitHub's power to the desktop, for Mac and Windows.Free Pro account for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.gitkraken.com/github-student-developer-pack"&gt;GitKraken&lt;/a&gt; [FREE] - Another free as in price desktop Git client. Based on Electron, runs on Windows, GNU/Linux, and Mac. To claim free 1-year PRO license, you must claim your &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt; and sign in to the desktop client w/ GitHub.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://sentry.io/for/education/"&gt;Sentry&lt;/a&gt; [FREE] - Open-source error tracking that helps developers monitor and fix crashes in real time.Also included via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://workingcopy.app/education/"&gt;Working Copy&lt;/a&gt; [FREE] - Powerful Git client for iOS that clones, edits, commits, pushes.All Pro features for free while you are a student via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://desktop.github.com/"&gt;Github Desktop&lt;/a&gt; [FREE] - Focus on what matters instead of fighting with Git. Whether you're new to Git or a seasoned user, GitHub Desktop simplifies your development workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bettercodehub.com/github-student-developer-pack"&gt;Better Code Hub&lt;/a&gt; [FREE] -Better Code Hub provides a definition of done for code quality and actionable refactoring feedback for every push and pull request. A free upgrade to an Individual license to analyse your personal private repos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.blackfire.io/students"&gt;Blackfire.io&lt;/a&gt; [FREE] - Code performance measurement tool. Find &amp;amp; fix bottlenecks.Free Profiler subscription for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://about.codecov.io/for/education/"&gt;Codecov&lt;/a&gt; [FREE] - Codecov makes it easy to implement code coverage to develop healthier code.Free access to Codecov on public and private repositories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;AcessLint&lt;/a&gt; [FREE] - AccessLint brings automated web accessibility testing into your development workflow.Unlimited use for public and private repositories while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Coveralls&lt;/a&gt; [FREE] - We help you deliver code confidently by showing which parts of your code arent covered by your test suite.Free coverage for unlimited private repos on your personal account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://app.datree.io/github-student-pack"&gt;Datree&lt;/a&gt; [FREE] - Datree is a git-based rules engine for enforcing best development practices, coding standards, and security policies on every commit.Free Pro subscription while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;DeepSource&lt;/a&gt; [FREE] - Static code analyzer for Python and Go. Detect bug risks, anti-patterns and security vulnerabilities.Free Pro subscription for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://imgbot.net/github-students/"&gt;Imgbot&lt;/a&gt; [FREE] - Imgbot is a GitHub App that automatically optimizes your images.Free image optimization for all your public and private projects while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://restyled.io/github-students"&gt;Restyled&lt;/a&gt; [FREE] - With Restyled, automatically re-format Pull Requests to have consistent style.Run Restyled for free on private repositories while you're a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Side&lt;/a&gt; [FREE] - Maximize your engineering team's productivity by automatically analyzing every pull request.Sider Standard Plan free while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Web Hosting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com"&gt;Digital Ocean&lt;/a&gt; [CREDIT] - Digital Ocean provides $100 in hosting credit for every student that signs up for the &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.rosehosting.com"&gt;RoseHosting&lt;/a&gt; [DISCOUNT] - RoseHosting offers a recurring 20% discount on all their &lt;a href="https://www.rosehosting.com/linux-vps-hosting/"&gt;managed Linux VPS&lt;/a&gt; and &lt;a href="https://www.rosehosting.com/linux-shared-hosting.html"&gt;Shared hosting plans&lt;/a&gt; when paying monthly. Students can use the discount by applying the coupon code "STUDENT20". Valid for new customers only. Cannot be combined with any other offer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bip.sh/students"&gt;Bip&lt;/a&gt; [DISCOUNT] - Static web hosting. Bip provides a 30% recurring discount for students &lt;a href="https://bip.sh/pricing"&gt;on all plans&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Education Host&lt;/a&gt; [FREE] - Available web-hosting to students in Designer package for free for 1 year &amp;amp; discounted upgrade offers.Available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nodehost.ca/education"&gt;NodeHost&lt;/a&gt; [FREE] - PHP hosting. 500MB Storage, 80GB Bandwidth, 1 Database, and 2 email accounts per site, 28 day backup history.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pageclip.co/github-students"&gt;Pageclip&lt;/a&gt; [FREE] - A server for your static websites and HTML forms.Free basic plan while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://qoddi.com"&gt;Qoddi&lt;/a&gt; [CREDIT] - Qoddi offers $1000 per year for &lt;a href="https://blog.qoddi.com/flashdrive-student-program/"&gt;every student&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.interserver.net/webhosting/student-webhosting.html/"&gt;InterServer&lt;/a&gt; [FREE] - Standard Web Hosting Package for Free for the first year for students.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Design and Photo Editing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.adobe.com/creativecloud/buy/students.html"&gt;Adobe Creative Cloud&lt;/a&gt; [DISCOUNT] - Students save big with 60% off Creative Cloud.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sketch.com/education/"&gt;Sketch&lt;/a&gt; [FREE] - Get Sketch for free as a student or educator.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.canva.com"&gt;Canva&lt;/a&gt; [FREE] - Free 12 month subscription of Canva's Pro tier via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://icons8.com/github-students"&gt;Icons8&lt;/a&gt;[FREE] - Icons8 provides design resources: icons, UI illustrations, photos and software to class up your projects. Full 3-month all access subscription with icons, photos, illustrations, and music via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.figma.com/education/"&gt;Figma&lt;/a&gt; [FREE] - Receive Professional Team features for free when verified as a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://iconscout.com/github-students"&gt;Iconscout&lt;/a&gt; [FREE] - Iconscout is design resources marketplace to get high quality icons, illustrations and stock images.Download 60 premium icons per month for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://themeisle.com/github-students/"&gt;Themeisle&lt;/a&gt;[FREE] - Neves mobile-first approach, compatibility with AMP and popular page-builders makes website building accessible for everyone. Free year of Neve Agency WordPress theme exclusively for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://mdbootstrap.com/general/mdb-edu/"&gt;MDBootstrap&lt;/a&gt; [FREE / DISCOUNT] - Set of slick, responsive page templates, layouts, components, and widgets to rapidly build web pages. Free tools worth $2049/year for all educational projects and 50% discount for a student.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SaaS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://ipgeolocation.io/"&gt;Ip Geolocation&lt;/a&gt; [DISCOUNT] - Free for 50K requests and 50% discount on all paid plans for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.taskade.com/"&gt;Taskade - Team Productivity&lt;/a&gt; [DISCOUNT] - Students get 50% permanent discount on Taskade Pro subscriptions. Use the coupon code "students50" on checkout and start collaborating on Taskade with team task, notes and chat.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.notion.so/product/notion-for-education"&gt;Notion.so&lt;/a&gt; [FREE] Free pro plan on Notion to Write, plan, collaborate, and get organized.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://netlicensing.io/github-students/"&gt;Netlicensing&lt;/a&gt; [FREE] - A cost-effective and integrated Licensing-as-a-Service (LaaS) solution for your software on any platform from Desktop to IoT and SaaS. Basic Plan free while you are a student at &lt;a href="https://education.github.com/pack"&gt;GitHub Student Developer Pack&lt;/a&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.algolia.com/developers/github/"&gt;Algolia&lt;/a&gt; [FREE] - Hosted search API that provides support from front end to back end frameworks and libraries. 100k records and 1 million operations, valid for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Blockchair&lt;/a&gt; [FREE] - Connect to the world of blockchains through Blockchairs professional APIs supports most major cryptocurrencies.100,000 free requests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Customerly&lt;/a&gt; [FREE] - Live chat, behavioural funnels, newsletters, and in-app surveys for SaaS.Customerly Pro free for 6 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://support.loom.com/hc/en-us/articles/360006579637-Loom-Pro-Free-for-Students-and-Teachers/?ref=codegena.com"&gt;Loom Pro&lt;/a&gt;[FREE] - Loom is a video recording tool that helps you get your message across through instantly shareable videos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.twilio.com/blog/twilio-perks-students-and-educators-now-available-github-education"&gt;Twilio&lt;/a&gt;[CREDIT] - Free $50 USD in Twilio API credits &amp;amp; Exclusive in-game items in TwilioQuest for student via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PaaS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.awseducate.com/application"&gt;Amazon Web Services&lt;/a&gt; [FREE] - Access cloud content, training, collaboration tools, and AWS technology at no cost by joining AWS Educate today.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com"&gt;Google Cloud Platform&lt;/a&gt; [TEMPORARILY FREE] - Access Cloud Services and G-Suite either on a trial of 14 days or register for one year through educational license or by card details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.heroku.com/students"&gt;Heroku&lt;/a&gt;[FREE] - A flexible, easy-to-use platform to deploy, run, and manage your apps. One free Hobby Dyno for up to two years via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/free/students/"&gt;Microsoft Azure&lt;/a&gt; - Microsoft Azure is an ever-expanding set of cloud services to help you build, manage, and deploy applications. Level up your ideas by learning cloud computing skills and get a $100 credit with your free Azure for Students accountno credit card required.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://northflank.com"&gt;Northflank&lt;/a&gt; [FREE] - Build and deploy microservices, jobs and managed databases. Perfect for student and university projects and team collaboration. Seamlessly scale containers from version control and external Docker registries. Free tier includes 2 services, 2 cron jobs and 1 database. Or 4 services via &lt;a href="https://northflank.com/student-developer-pack"&gt;Northflank Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Email
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://sendgrid.com/partner/github-education"&gt;Send Grid&lt;/a&gt; [CREDIT] - Student plan 15K free emails/month (normally limited to 200 free emails/day) while you're a student available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Mailgun&lt;/a&gt; [FREE] - Powerful APIs that enable you to send, receive and track email effortlessly.20,000 free emails and 100 free email validations each month for up to 12 months, available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://testmail.app/github-students"&gt;Testmail.app&lt;/a&gt; [FREE] - Get unlimited email addresses and mailboxes for automating email tests with our powerful APIs. Free Essential plan while you're a student.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CI / CD
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://travis-ci.org"&gt;Travis CI&lt;/a&gt; [FREE] - Private builds (normally $69/month) while you're a student available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://blog.styleci.io/introducing-the-student-plan/"&gt;StyleCI&lt;/a&gt; [FREE / CREDIT] - Free Student Plan with access to StyleCI for up to five private repositories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.semaphoreci.com/account-management/discounts/"&gt;Semaphore&lt;/a&gt; [FREE / DISCOUNT]- Free account for students and educators with a 25% discount for qualifying schools and institutions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://configcat.com/student/"&gt;ConfigCat&lt;/a&gt; [FREE] - Learn feature flags with the industry leading feature flag service.1000 feature flags, users for free.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Payments
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://stripe.com/"&gt;Stripe&lt;/a&gt; [CREDIT] - Web and mobile payments, built for developers. Waived transaction fees on first $1,000 in revenue processed available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Management Systems
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bitnami.com"&gt;Bitnami&lt;/a&gt; [FREE] - Install cloud applications in a single click. Business 3 plan (normally $49/month) for one year available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://yellowcircle.net"&gt;Yellow Circle&lt;/a&gt; [FREE] - Offers a free online sandbox for students and teachers at all levels to learn and practice IT, networking, and programming skills by creating and configuring virtual routers, virtual machines, and virtual firewalls, load-balancers, and storage devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.vertabelo.com/"&gt;Vertabelo&lt;/a&gt; [FREE] - Fully-featured online tool for database design. Free for Educational Purposes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://student.sqlsmash.com/"&gt;SQLSmash&lt;/a&gt; [FREE] - Productivity plugin for SQL Server Management Studio for writing maintainable SQL scripts and faster navigation.Free standard license for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pushbots.com/for/education/"&gt;PushBots&lt;/a&gt; [FREE] - The easiest way to engage your mobile &amp;amp; web app users via push notifications. Free Premium account for 6 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.eversql.com/github-students/"&gt;EverSQL&lt;/a&gt; [FREE] - Boost your database performance by automatically optimizing your SQL queries.Free 6-month subscription to the Basic plan&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://weglot.com/github-students/"&gt;Weglot&lt;/a&gt; [FREE] - Make any website multilingual and manage your translations through a single platform.Free 1-year Pro Plan giving you access to unlimited languages + up to 200k translated words.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;LingoHub&lt;/a&gt; [FREE] - Translation management service for web, desktop and mobile apps.Free Professional Plan containing 10,000 text segments for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;MongoDB&lt;/a&gt; [FREE] - A general purpose, document-based, distributed database built for modern application developers and for the cloud era.$200 in MongoDB Atlas Credits, plus access to MongoDB Compass and MongoDB University including free certification.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Maps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.mapbox.com/community/education"&gt;Mapbox&lt;/a&gt; [CREDIT] - A mapping platform for developers. 5 GB of storage for your own custom data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Localization
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.transifex.com"&gt;Transifex&lt;/a&gt; [FREE / CREDIT]- A localization platform for translating digital content. 1 Free Year worth $99/month available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Crowdin&lt;/a&gt;[FREE] - Crowdin is a cloud-based solution that streamlines localization management.Bronze plan for 1 year available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;POEditor&lt;/a&gt; [FREE] - POEditor is a highly scalable localization management platform for teams.Plus Plan for free for one year.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Programming Help
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://evernote.com/students"&gt;Evernote&lt;/a&gt; [DISCOUNT] - Capture, organize, and share notes from anywhere. Get 50% off a full year of Evernote Premium.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Covalence&lt;/a&gt;[FREE] - Join an exclusive developer community and learn Full Stack web-development with no long-term commitments.One free month of Covalence's Atomic Plan and two 1-on-1 mentoring sessions via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://transloadit.com/github-students/"&gt;Transloadit&lt;/a&gt; [FREE] - A versatile uploading &amp;amp; encoding API to automate any file conversion. The Startup plan for free, including 10GB of encoding credit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Jaamly&lt;/a&gt; [FREE] - Helping developers, designers, and startups to launch their apps on the App Store.Jaamly Startup plan free for 6 months.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Domain Name Registers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nc.me"&gt;NameCheap&lt;/a&gt; [FREE/DISCOUNT] - One year domain name registration on the .me TLD, and deeply discounted registrations on .io, .tech, .com, and .website. Inludes optional free year of hosted Ghost blogging platform or Exposure photo website.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://get.tech/students"&gt;.tech&lt;/a&gt; [DISCOUNT] - One year registration on .tech TLD for $0.99, with free renewals for referrals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.name.com/partner/github-students"&gt;name.com&lt;/a&gt;[FREE] - Domain names, web hosting, and websites. One free domain name and free Advanced Security (SSL, privacy protection, and more) via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.namecheap.com/"&gt;NameCheap&lt;/a&gt; [DISCOUNT] - One year SSL certificate (normally $9/year) via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.shodan.io/"&gt;Shodan&lt;/a&gt; [FREE / CREDIT] - Free upgrade (normally 49$) to gain full access to everything shodan has to offer + 100 Export credits. Simply use your academic email address when you signup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://app.cryptolens.io/user/githubstudent"&gt;Cryptolens&lt;/a&gt; [FREE] - License and sell your software securely.10 licenses and any number of end-users for free for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://termius.com/education"&gt;Termius&lt;/a&gt; [FREE] - SSH client that works on desktop and mobile. Termius securely syncs data across all your devices. Free access to the Premium plan while you're a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.getastra.com/github-student-developer-pack"&gt;Astra&lt;/a&gt; [FREE] - Security suite for your website - firewall, malware scanner &amp;amp; managed bug bounty platform.6 month access to website firewall &amp;amp; malware scanner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.browserstack.com/github-students"&gt;BrowserStack&lt;/a&gt; [FREE] - Test your web apps with BrowserStack's Real Device Cloud, which gives you instant access to 2000+ browsers and real iOS and Android devices.Free Automate Mobile Plan for 1 parallel and 1 user for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;LambdaTest&lt;/a&gt; [FREE] - Perform automated and live interactive cross browser testing on 2000+ real browsers and operating systems online.Free LambdaTest Live Plan for one year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;SOFY&lt;/a&gt; [FREE] - SOFY automates your software testing, uses machine learning to create tests, suggests test scenarios based on product changes, customer usage data and runs at scale.6 months of free website and mobile app testing.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Software Modeling Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://astah.net/products/free-student-license/"&gt;Astah&lt;/a&gt; [FREE] - One Year Professional License&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.axure.com/edu"&gt;Axure RP&lt;/a&gt; [FREE] - Free educational license of Axure RP Pro&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://my.vertabelo.com/sign-up/create-academic"&gt;Vertabelo&lt;/a&gt; [FREE] - Visual database design online. 100% free academic accounts for students and lecturers who are learning or teaching database modeling.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.invisionapp.com/education-signup"&gt;Invision&lt;/a&gt; [FREE] - Prototyping and Mockup tool&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.framer.com/pricing/"&gt;Framer&lt;/a&gt; [DISCOUNT] - Prototyping tool. 50% off when you get an educational license.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://vaadin.com/student-program"&gt;Vaadin&lt;/a&gt; [FREE] - Best open source Java framework for building Progressive Web Applications.Free Pro subscription license to access the commercial components and tools via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Visual Analytics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://carto.com/help/getting-started/student-accounts/"&gt;CARTO&lt;/a&gt; [FREE / DISCOUNT] - Free account upgrades with increased database storage, real time data, Location Data Services Credits, and premium features for 2 years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.tableau.com/academic/students"&gt;Tableau Desktop&lt;/a&gt; [FREE] - One Year Professional License for Students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sas.com/en_us/software/on-demand-for-academics.html"&gt;SAS University Edition&lt;/a&gt; and &lt;a href="https://www.sas.com/en_us/software/on-demand-for-academics.html"&gt;SAS OnDemand Academic&lt;/a&gt; [FREE] - The SAS University Edition is distributed as a virtual appliance for VirtualBox/VMWare. It runs in NAT mode on the prepackaged VM and hosts SAS Studio for use with a browser on the host computer. SAS OnDemand hosts SAS Studio for use in the cloud without installation. Both are free for students and teachers at any level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://appfigures.com/landing/github-student"&gt;Appfigures&lt;/a&gt; [FREE] - App Store analytics, optimization, and intelligence. Free access to the Grow plan for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Scrapinghub&lt;/a&gt; [FREE] - Scrapinghub's Scrapy Cloud is a battle-tested cloud platform for running web crawlers. Manage and automate your web spiders at scale.1 Free Forever Scrapy Cloud Unit - unlimited team members, projects or requests. Unlimited crawl time and 120 day data retention.&lt;a href="https://crawlbase.com/"&gt;Crawlbase&lt;/a&gt; [FREE / CREDIT] Crawlbase, a web scraping and web crawling tool, is generously offering 5000 successful requests for free over a three-month period to students, who can take advantage of this opportunity by using the discount code 'SDNT2023'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Typeform&lt;/a&gt; [FREE] - Interactive forms, surveys &amp;amp; quizzes to engage and grow your audience.Free professional plan for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Baremetrics&lt;/a&gt; [FREE] - Metrics, dunning, and engagement tools for SaaS &amp;amp; subscription businesses.Get Baremetrics for free up to $2.5k Monthly Recurring Revenue while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;CodeScene&lt;/a&gt; [FREE] - A powerful visualization tool that uses Predictive Analytics to identify social patterns in your code, detect delivery risks and manage technical debt.A free Student account to analyze private GitHub repositories.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://simpleanalytics.com/students"&gt;Simple Analytics&lt;/a&gt; [FREE] - Privacy-friendly analytics with a simple interface and API.Starter plan free for one year, including 100k page views per month.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;DailyBot&lt;/a&gt; [FREE] - Automate daily stand-ups, follow-ups, retrospectives, surveys and feedback for your team.DailyBot Business plan free for 1 year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Freshpaint&lt;/a&gt; [FREE] - Integrate your marketing and analytics tools with one click.Free Freshpaint Growth Plan while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Raygun&lt;/a&gt; [FREE] - Error, crash and performance monitoring for web and mobile apps. Startup Platform plan, free for one year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.anychart.com/buy/non-commercial-license/"&gt;AnyChart&lt;/a&gt; [FREE] - A flexible JavaScript library for creating interactive charts, maps, and dashboards for visual analytics. Provides students with a free license for use in their education or other non-commercial projects.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Game Development Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;Unity3D&lt;/a&gt; [FREE] -Accomplish your creative goals using the worlds leading real-time development platform, used to create half of the worlds games.Unity Student Plan free while you are a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.unrealengine.com/en-US/learn"&gt;Unreal Game Engine&lt;/a&gt; [FREE] - Unreal Engine 4 is a complete suite of game development tools. From 2D mobile games to console blockbusters and VR, Unreal Engine 4 gives you everything you need to start, ship, grow and stand out from the crowd. Part of the &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3D Animation and Modeling Software
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.autodesk.com/education/free-software/featured"&gt;Autodesk Software&lt;/a&gt; [FREE] - The Free Autodesk Education License includes Autodesk Maya, 3DS MAX, Softimage, Motion Builder, Mudbox, Inventor Professional...&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Password Managers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.studentappcentre.com/App/1Password"&gt;1Password&lt;/a&gt; - [FREE] 6 months of a 1Password account free. ($3/month thereafter using Personal account)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.dashlane.com/students"&gt;Dashlane&lt;/a&gt; [FREE] - 1 year of free Dashlane Premium for Students, offer for new and existing users with eligible student emails ($3.33/month thereafter)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.roboform.com/promotions/college"&gt;RoboForm&lt;/a&gt; [FREE] - Free for students and professors with a valid college or university email address for the first year ($12/year thereafter)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Infrastructure Monitoring
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://studentpack.datadoghq.com/"&gt;Datadog&lt;/a&gt; [FREE] - 2-Year License for a Datadog Pro account, good for monitoring 10 servers. Part of the &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack"&gt;HoneyBadger&lt;/a&gt;[FREE] - Exception, uptime, and cron monitoring.Free Small account for 1 year available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.logdna.com/blog/get-a-free-logdna-account-in-the-github-student-developer-pack"&gt;LogDNA&lt;/a&gt;[FREE] - Log management platform that offers aggregation, monitoring, and analysis of server and application logs at any volume, from any source.Up to 50 GB/month of log storage with 14 day retention for one year via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.netwise.co.uk/students/"&gt;Netwise&lt;/a&gt; [FREE] - Turnkey data centre services for the hosting of critical IT infrastructure systems.Free single unit server colocation package free for 12 months.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Software Packs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azureforeducation.microsoft.com/en-us/Institutions"&gt;Azure for Students&lt;/a&gt; [FREE / DISCOUNT] - Subscriptions provide access to Azure services. Azure for Students gives you $100 credit for 12 months. It includes access to more than 25 free services, including compute, network, storage, and databases. Any charges incurred during this period are deducted from the credit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.microsoft.com/en-au/education/products/office"&gt;Microsoft Office 365 Education&lt;/a&gt; [FREE] - Free access to Microsoft Office 365 software including Word, Excel, PowerPoint, OneNote, and Teams for students and teachers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://software.intel.com/en-us/qualify-for-free-software/student"&gt;Intel Tools for Students&lt;/a&gt; [FREE] - Free access to the select Intel Software Development Products, including: Intel XDK, Intel Video Pro Analyzer, Intel System Studio, Intel Parallel Studio XE Composer Edition and Intel Parallel Studio XE Cluster Edition (includes Fortran and C/C++).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://developer.ibm.com/students/"&gt;IBM Student Developer Community&lt;/a&gt; [FREE] - Get easy access to the tools you need to develop the next great thing. Enjoy powerful technical and strategic resources from IBM.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://exploratory.io/"&gt;Exploratory&lt;/a&gt; [FREE] - Exploratorys Simple UI experience makes it possible for Anyone to use the latest and the most advanced innovation in Data Science to discover deep insights.Student Registration Available for pricing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://education.github.com/pack/"&gt;Github Student Developer Pack&lt;/a&gt; [FREE] - The GitHub Student Developer Pack is a collection of tools and resources that are available to students for free. It includes access to various developer tools, cloud services, and learning resources.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learning Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.acm.org"&gt;Association of Computing Machinery with Digital Library&lt;/a&gt; [DISCOUNT] - Normally access to ACM and their Digital Library cost $198 USD a year, however, current IT and Computer Science students can get access for just $42 USD a year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://frontendmasters.com/welcome/github-student-developers/"&gt;Frontend Masters&lt;/a&gt; [FREE] - Advance your skills with in-depth JavaScript, Node.js &amp;amp; front-end engineering courses. Getting your career started in field of FullStack Development with this amazing course. Free 6-months access to all courses and workshops.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://onemonth.com/github/students"&gt;One Month&lt;/a&gt; [FREE] - Learn HTML, CSS, JavaScript and Python in just 30 days!You will get Free 30-day One Month subscription.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://gorails.com/github-students"&gt;GO RAILS&lt;/a&gt; [FREE] - Tutorials for web developers learning Ruby, Rails, Javascript, Turbolinks, Stimulus.js, Vue.js, and more. Free access to all videos and lessons for 12 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.thinkful.com/getstarted/software-engineering/intro-course/"&gt;Thinkful&lt;/a&gt; [FREE] - Learn Fundamentals of Web Development to launch your career as a developer.1 month of access to a web development course.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://symfonycasts.com/github-student"&gt;SymfonyCasts&lt;/a&gt; [FREE] - Master Symfony and PHP with video tutorials and code challenges. Free 3-month subscription for students. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://next.tech/github-students"&gt;next.tech&lt;/a&gt; [FREE] - Learn tech skills and build software directly from your browser with real, online computing environments. Free access to all interactive courses and cloud computing environments for 12 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.educative.io/github-students"&gt;Educative&lt;/a&gt; [FREE] - Level up on trending coding skills at your own pace with interactive, text-based courses. Get 6 free months of 60+ courses covering in-demand topics like Web Development, Python, Java, and Machine Learning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.interviewcake.com/github-students"&gt;Interview Cake&lt;/a&gt; [FREE] - Interview Cake makes coding interviews a piece of cake with practice questions, data structures and algorithms reference pages, cheat sheets, and more. Access to the full coding interview prep course for 3 weeks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.adafruit.com/github-students"&gt;Adafruit&lt;/a&gt; [FREE] - Adafruit is an open-source hardware and open-source educational electronics company based in NYC, USA.One year of Adafruit IO+ and discounts on selected hardware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.datacamp.com/github-students/"&gt;DataCamp&lt;/a&gt; [FREE] - DataCamp helps companies and individuals make better use of data. Our users build data fluency while learning from the worlds top data scientists.Free 3-month individual subscription for students.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.arduino.cc/education/github-students"&gt;Arduino Education&lt;/a&gt; [FREE] - Empower scientists and artists of the future with creative STEM programs.Free Arduino Create Maker plan for 6 months and discounts on selected hardware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pomodoneapp.com/pomodoro-timer-for-students.html"&gt;PomoDone&lt;/a&gt; [FREE] - With PomoDone, hack and track your time and boost your productivity by applying Pomodoro technique to your workflow -- eliminate distraction, sharpen focus and prevent burnout.PomoDone Lite plan free for 2-years.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://hazeover.com/github-students.html"&gt;HazeOver&lt;/a&gt; [FREE] - Get focused while working on your projects or studying with HazeOver for Mac.Free app license, including minor updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.drovio.com/github-students/"&gt;Drovio&lt;/a&gt; [FREE] - Remote pair programming and team collaboration tool. Free Standard subscription while you're a student, to be renewed every 6 months.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://apply.githubcampus.expert/"&gt;Github Campus Experts&lt;/a&gt; [FREE] - GitHub Campus Experts are students who build technical communities on campus, with training and support from GitHub.Apply to become part of the program while youre a student.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://apply.githubcampus.expert/"&gt;Scrimba&lt;/a&gt; [FREE] - Level up your coding skills with interactive courses, projects, and challenges. Learn JavaScript, CSS, React, Python, and more. Enjoy 1 month of free access to Full access to Scrimbas Pro courses, projects, and coding challenges, which includes 40+ courses available via &lt;a href="https://education.github.com/pack"&gt;Github Student Developer Pack&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data science
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://deepnote.com/education"&gt;Deepnote&lt;/a&gt; [FREE] - The best way to collaborate with others on data science projects. Education plan allows you to create an unlimited amount of Deepnote teams and work with any number of collaborators.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>student</category>
      <category>discount</category>
      <category>github</category>
      <category>free</category>
    </item>
    <item>
      <title>How to Obtain Tinkerwell Educational Licenses free</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Tue, 24 Oct 2023 16:08:19 +0000</pubDate>
      <link>https://dev.to/hoangit/how-to-obtain-tinkerwell-educational-licenses-free-1i0k</link>
      <guid>https://dev.to/hoangit/how-to-obtain-tinkerwell-educational-licenses-free-1i0k</guid>
      <description>&lt;p&gt;&lt;strong&gt;Tinkerwell&lt;/strong&gt; is a tool that facilitates running PHP code without the need for complex web servers or local development setups. It is particularly useful for teaching and learning PHP and its ecosystem. &lt;strong&gt;Tinkerwell&lt;/strong&gt; offers free individual licenses for students and teachers who are part of accredited educational programs or institutions. Here's how you can obtain these licenses:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Students:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;If you are enrolled in an accredited educational program, you can apply for a free individual license.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To access the license, follow these steps:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create or log into your account on the Beyond Code website at &lt;a href="http://beyondcode.com"&gt;beyondcode.com&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;Go to your profile page on &lt;a href="http://beyondcode.com/profile"&gt;beyondcode.com/profile&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;Verify your official educational email address.
&lt;/li&gt;
&lt;li&gt;A license will be automatically added to your account.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep in mind that you'll need to re-verify your status as a student annually to maintain an active license.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;For Teachers:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;If you are a teacher at an accredited educational institution and want to use Tinkerwell in your classroom, you can request a classroom license.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Classroom licenses are managed through a single Beyond Code account, issued to accredited educational institutions, valid for one year (renewable upon request), and must only be used for teaching purposes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Classroom licenses are not provided for individual use or for commercial purposes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To upgrade from a non-commercial educational license to a commercial license, you can do so at any time through the license management portal on the Beyond Code website.&lt;/p&gt;

&lt;p&gt;Please visit &lt;a href="http://beyondcode.com"&gt;beyondcode.com&lt;/a&gt; and follow the specific steps mentioned for students and teachers to acquire your Tinkerwell educational licenses.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3FGQK5iO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1698163603635/d05a56f7-ab77-4095-8f41-3ac6497a9355.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3FGQK5iO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1698163603635/d05a56f7-ab77-4095-8f41-3ac6497a9355.png" width="614" height="767"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AW9NVD_W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1698163573587/bb7c7873-c991-4a27-a779-8453aa73c9df.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AW9NVD_W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1698163573587/bb7c7873-c991-4a27-a779-8453aa73c9df.png" width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Get the latest &lt;strong&gt;Tinkerwell&lt;/strong&gt; version for your operating system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://download.tinkerwell.app/tinkerwell/Tinkerwell-3.33.0.dmg"&gt;&lt;strong&gt;Download Tinkerwell 3.33.0 for macOS (Intel)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://download.tinkerwell.app/tinkerwell/Tinkerwell-3.33.0-arm64.dmg"&gt;&lt;strong&gt;Download Tinkerwell 3.33.0 for macOS (Apple Silicon)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://download.tinkerwell.app/tinkerwell/Tinkerwell%20Setup%203.33.0.exe"&gt;&lt;strong&gt;Download Tinkerwell 3.33.0 for Windows&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://download.tinkerwell.app/tinkerwell/Tinkerwell-3.33.0.AppImage"&gt;&lt;strong&gt;Download Tinkerwell 3.33.0 for Linux&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Source: &lt;a href="https://eplus.dev/how-to-obtain-tinkerwell-educational-licenses-free"&gt;https://eplus.dev/how-to-obtain-tinkerwell-educational-licenses-free&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tinkerwell</category>
      <category>free</category>
    </item>
    <item>
      <title>Quên mật khẩu Linux trên WSL? Đây là cách thiết lập lại nó một cách dễ dàng</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Fri, 18 Aug 2023 02:03:27 +0000</pubDate>
      <link>https://dev.to/hoangit/quen-mat-khau-linux-tren-wsl-day-la-cach-thiet-lap-lai-no-mot-cach-de-dang-4l6a</link>
      <guid>https://dev.to/hoangit/quen-mat-khau-linux-tren-wsl-day-la-cach-thiet-lap-lai-no-mot-cach-de-dang-4l6a</guid>
      <description>&lt;p&gt;WSL (Windows Hệ thống con cho Linux) là một công cụ tiện dụng cho những người muốn tận hưởng sức mạnh của dòng lệnh Linux từ sự thoải mái của Windows.&lt;/p&gt;

&lt;p&gt;Khi bạn cài đặt Linux bằng WSL trên Windows, bạn được yêu cầu tạo tên người dùng và mật khẩu. Người dùng này được tự động đăng nhập khi bạn khởi động Linux trên WSL.&lt;/p&gt;

&lt;p&gt;Bây giờ, vấn đề là nếu bạn không sử dụng nó một thời gian, bạn có thể quên mật khẩu tài khoản của WSL. Và điều này sẽ trở thành vấn đề nếu bạn phải sử dụng lệnh với sudo vì ở đây bạn sẽ cần nhập mật khẩu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.hashnode.com/res/hashnode/image/upload/v1692323800883/0d004f83-1305-44bd-bc60-0eb43139ccd3.webp"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aeRNskza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1692323800883/0d004f83-1305-44bd-bc60-0eb43139ccd3.webp" title="Đừng lo lắng. Bạn có thể dễ dàng thiết lập lại nó" alt="Đừng lo lắng. Bạn có thể dễ dàng thiết lập lại nó" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Đặt lại mật khẩu đã quên cho Ubuntu hoặc bất kỳ bản phân phối Linux nào khác trên WSL&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Để đặt lại mật khẩu Linux trong WSL, bạn phải:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Chuyển người dùng mặc định sang root&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Đặt lại mật khẩu cho người dùng bình thường&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chuyển lại người dùng mặc định thành người dùng bình thường&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hãy để tôi chỉ cho bạn các bước chi tiết và kèm theo ảnh chụp màn hình.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Bước 1: Chuyển sang root làm người dùng mặc định&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Sẽ là khôn ngoan khi ghi lại tên người dùng bình thường / thông thường của tài khoản của bạn. Như bạn có thể thấy, tên người dùng tài khoản thông thường của tôi là abhishek.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.hashnode.com/res/hashnode/image/upload/v1692323835963/5b56bbbf-b93e-4089-aefc-9c3a3f54df57.webp"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--24fKVK3x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1692323835963/5b56bbbf-b93e-4089-aefc-9c3a3f54df57.webp" title="Ghi lại tên người dùng tài khoản" alt="Ghi lại tên người dùng tài khoản" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Người dùng root trong WSL đã được mở khóa và chưa đặt mật khẩu. Điều này có nghĩa là bạn có thể chuyển sang người dùng root và sau đó sử dụng sức mạnh của root để đặt lại mật khẩu.&lt;/p&gt;

&lt;p&gt;Vì bạn không nhớ mật khẩu tài khoản, nên việc chuyển đổi sang người dùng root được thực hiện bằng cách thay đổi cấu hình của ứng dụng WSL Linux của bạn và đặt nó sử dụng người dùng root theo mặc định.&lt;/p&gt;

&lt;p&gt;Điều này được thực hiện thông qua Windows Command Prompt và bạn sẽ cần biết lệnh nào bạn cần chạy cho bản phân phối Linux của mình.&lt;/p&gt;

&lt;p&gt;Thông tin này thường được cung cấp trong phần mô tả của ứng dụng phân phối trong &lt;a href="https://www.microsoft.com/en-us/store/apps/windows"&gt;Windows Cửa hàng sách&lt;/a&gt;. Đây là nơi bạn đã tải xuống bản phân phối của mình ngay từ đầu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.hashnode.com/res/hashnode/image/upload/v1692323864835/7fd7a1fb-bb14-4192-9513-dfa5e6a91eec.webp"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZI1q_rBW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1692323864835/7fd7a1fb-bb14-4192-9513-dfa5e6a91eec.webp" title="Biết lệnh để chạy cho ứng dụng phân phối của bạn" alt="Biết lệnh để chạy cho ứng dụng phân phối của bạn" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Từ Windows trình đơn, bắt đầu dấu nhắc lệnh:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.hashnode.com/res/hashnode/image/upload/v1692323966070/252e5687-802f-4546-8fbf-66a25e93f1b2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LcWBhv9u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1692323966070/252e5687-802f-4546-8fbf-66a25e93f1b2.png" title="Khởi động Command Prompt" alt="Khởi động Command Prompt" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tại đây, hãy sử dụng lệnh phân phối của bạn theo cách này. Nếu bạn đang sử dụng ứng dụng Ubuntu từ Windows lưu trữ, lệnh sẽ là:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;ubuntu config --default-user root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trong ảnh chụp màn hình, tôi đang sử dụng ứng dụng Ubuntu 20.04 từ Windows cửa hàng. Vì vậy, tôi đã sử dụng lệnh ubuntu2004.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.hashnode.com/res/hashnode/image/upload/v1692324010636/b1304dce-7424-4696-b73a-85ef3be42d6b.webp"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sgPx638E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1692324010636/b1304dce-7424-4696-b73a-85ef3be42d6b.webp" title="Đặt root làm người dùng mặc định trong cấu hình của ứng dụng Linux" alt="Đặt root làm người dùng mặc định trong cấu hình của ứng dụng Linux" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Để giúp bạn đỡ rắc rối, tôi liệt kê một số bản phân phối và các lệnh tương ứng của chúng trong bảng này:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Ứng dụng phân phối&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Windows Lệnh&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu&lt;/td&gt;
&lt;td&gt;ubuntu config –default-user root&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu 20.04&lt;/td&gt;
&lt;td&gt;ubuntu2004 config –root người dùng mặc định&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu 18.04&lt;/td&gt;
&lt;td&gt;ubuntu1804 config –root người dùng mặc định&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debian&lt;/td&gt;
&lt;td&gt;cấu hình debian – root người dùng mặc định&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux Kali&lt;/td&gt;
&lt;td&gt;cấu hình kali –default-user root&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Bước 2: Đặt lại mật khẩu cho tài khoản&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bây giờ, nếu bạn khởi động ứng dụng phân phối Linux, bạn phải đăng nhập bằng quyền root. Bạn có thể đặt lại mật khẩu cho tài khoản người dùng bình thường.&lt;/p&gt;

&lt;p&gt;Bạn có nhớ tên người dùng trong WSL không? Nếu không, bạn luôn có thể kiểm tra nội dung của thư mục / home. Khi bạn có tên người dùng, hãy sử dụng lệnh này:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;passwd username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nó sẽ yêu cầu bạn nhập mật khẩu mới. &lt;strong&gt;Khi bạn gõ vào đây, sẽ không có gì được hiển thị trên màn hình. Điều đó là bình thường. Chỉ cần nhập mật khẩu mới và nhấn enter.&lt;/strong&gt; Bạn sẽ phải nhập lại mật khẩu mới để xác nhận và một lần nữa, sẽ không có gì hiển thị trên màn hình khi bạn nhập mật khẩu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cdn.hashnode.com/res/hashnode/image/upload/v1692324051019/6c2bd87b-bc4b-4dca-9761-bdaee1abba93.webp"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eegg8X42--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1692324051019/6c2bd87b-bc4b-4dca-9761-bdaee1abba93.webp" title="Đặt lại mật khẩu cho người dùng thông thường" alt="Đặt lại mật khẩu cho người dùng thông thường" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xin chúc mừng. Mật khẩu cho tài khoản người dùng đã được đặt lại. Nhưng bạn vẫn chưa hoàn thành. Người dùng mặc định vẫn là root. Bạn nên thay đổi nó trở lại người dùng tài khoản thông thường của bạn, nếu không nó sẽ tiếp tục đăng nhập với tư cách người dùng root.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Bước 3: Đặt lại người dùng thông thường làm mặc định&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bạn sẽ cần tên người dùng tài khoản thông thường mà bạn đã sử dụng với &lt;a href="https://linuxhandbook.com/passwd-command/"&gt;lệnh passwd&lt;/a&gt; trong bước trước.&lt;/p&gt;

&lt;p&gt;Bắt đầu Windows dấu nhắc lệnh một lần nữa. &lt;strong&gt;Sử dụng lệnh phân phối của bạn&lt;/strong&gt; theo cách tương tự bạn đã làm trong bước 1. Tuy nhiên, lần này, hãy thay thế root bằng người dùng thông thường.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;ubuntu config --default-user username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://cdn.hashnode.com/res/hashnode/image/upload/v1692324090367/9512e0bd-65c8-44e1-9abb-3c6f74b10823.webp"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N8PSvrxL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1692324090367/9512e0bd-65c8-44e1-9abb-3c6f74b10823.webp" title="Đặt người dùng thông thường làm người dùng mặc định" alt="Đặt người dùng thông thường làm người dùng mặc định" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bây giờ khi bạn khởi động ứng dụng phân phối Linux của mình trong WSL, bạn sẽ đăng nhập với tư cách người dùng thông thường. Bạn đã đặt lại mật khẩu mới và có thể sử dụng nó để chạy các lệnh với sudo.&lt;/p&gt;

&lt;p&gt;Nếu bạn quên mật khẩu một lần nữa trong tương lai, bạn biết các bước để đặt lại mật khẩu.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Nếu việc đặt lại mật khẩu WSL dễ dàng như vậy, thì đây không phải là một rủi ro bảo mật sao?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Không hẳn vậy. Bạn cần có quyền truy cập vật lý vào máy tính cùng với quyền truy cập vào Windows tài khoản. Nếu ai đó đã có nhiều quyền truy cập này, họ có thể làm được nhiều việc hơn là chỉ thay đổi mật khẩu Linux trong WSL.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Bạn có thể đặt lại mật khẩu WSL không?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Tôi đã cung cấp cho bạn các lệnh và giải thích các bước. Tôi hy vọng điều này hữu ích cho bạn và bạn đã có thể đặt lại mật khẩu của bản phân phối Linux của mình trong WSL.&lt;/p&gt;

&lt;p&gt;Nếu bạn vẫn gặp vấn đề hoặc nếu bạn có câu hỏi về chủ đề này, vui lòng hỏi trong phần bình luận.&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>linux</category>
      <category>debian</category>
      <category>passwords</category>
    </item>
    <item>
      <title>Livewire Real-Time Presence</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Thu, 17 Aug 2023 07:41:16 +0000</pubDate>
      <link>https://dev.to/hoangit/livewire-real-time-presence-30l6</link>
      <guid>https://dev.to/hoangit/livewire-real-time-presence-30l6</guid>
      <description>&lt;p&gt;I’ve always been interested in real-time technologies, especially when dealing with high traffic and complex issues. I once encountered a situation with an e-commerce store’s operation team. They faced an issue where multiple operators would handle a single order. Their initial solution was to create an auto-assign system, which aimed to distribute orders equally among operators. However, this system faced challenges when operators went on vacation or when an operator had a few particularly difficult orders to manage. So the first solution I thought of is something similar to how google docs shows you who else is reading/modifying the content in realtime.&lt;/p&gt;

&lt;p&gt;My suggestion was to begin by informing the team if someone else is already viewing an order when they open it. This way, they can assign orders to themselves without overlap.&lt;/p&gt;

&lt;p&gt;I’ve set up a demo to show you how this can be done, and I’ll explain it step by step. But before we dive in, let’s give this feature a name. I’ve decided to call it “On this page.”&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Project&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The e-commerce admin pages are written in Blade and few little javascript. So I could’ve implemented it with a websocket server and few javascript to display the active users on every page. But Instead I used already the existing stack Laravel &amp;amp; Redis + Livewire.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Idea&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The operations team isn’t very big, with about 50 people. We can use Redis to track which page each person is viewing. We’ll label this information with a unique page identifier. On the page, we can then show the pictures of the users viewing it. Additionally, we can set a regular interval to update and show any new users who start viewing the page.&lt;/p&gt;

&lt;p&gt;We can bring this idea to life using a single Livewire component:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“On this page” Livewire Component&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;On Mount: Use the route name combined with its original parameters to create a unique key for the route.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;On Render: Do two things:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. **Save the combination of the route identifier and user ID, setting it to automatically expire after a certain time.**

2. **Retrieve all the route identifier keys, extract user IDs from them, and then gather details like names and profile photos of these users.**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auto-refresh: Utilize Livewire’s&lt;/strong&gt; &lt;a href="https://livewire.laravel.com/docs/polling"&gt;&lt;strong&gt;polling&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;feature to refresh the component every set interval.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We chose Redis for this task. It’s perfect as it can handle a vast number of keys that auto-expire and offers the flexibility to retrieve keys on-the-go.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Install livewire&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As of writing this article, &lt;a href="https://livewire.laravel.com/"&gt;Livewire 3&lt;/a&gt; is still in beta. However, the code I’ll share is compatible with both version 2 and 3 since we aren’t using any exclusive features from v3. For this tutorial, I’m using v3.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;composer &lt;span class="ss"&gt;require&lt;/span&gt; livewire/livewire "^3.0@beta"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;On this page component&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now let’s start creating our new component&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;php artisan make:livewire OnThisPage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will create 2 files&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;app/Livewire/OnThisPage.php&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;resources/views/livewire/on-this-page.blade.php&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;OnThisPage.php&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Now, let’s dive into the main implementation. First, we’ll begin by obtaining the unique name for the route.&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="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;OnThisPage&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Component&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nv"&gt;$routeName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nv"&gt;$durationInSeconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;mount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;routeName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="s1"&gt;'%s:%s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;route&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;getName&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
            &lt;span class="nb"&gt;implode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;':'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;route&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;originalParameters&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In our approach, we’ll get the unique route name in the &lt;code&gt;mount&lt;/code&gt; method. If we try to do this in the &lt;code&gt;render&lt;/code&gt; method, the route name will switch to &lt;code&gt;livewire.update&lt;/code&gt;. This happens because when the component auto-refreshes using Livewire’s &lt;a href="https://livewire.laravel.com/docs/polling"&gt;polling&lt;/a&gt; feature, Livewire sends a request to the &lt;code&gt;livewire.update&lt;/code&gt; route to fetch the component’s details, avoiding a full page reload.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Let’s proceed by introducing the&lt;/strong&gt; &lt;code&gt;logOnThisPage&lt;/code&gt; method:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;logOnThisPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$userId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;user&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;routeName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$userId&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nc"&gt;Redis&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;setex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;durationInSeconds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$userId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This method fetches the user ID and the unique route name. It then combines them to form a key for Redis, which is set to expire after 10 seconds.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next, we’ll introduce the&lt;/strong&gt; &lt;code&gt;getUserIdsOnThisPage&lt;/code&gt; helper method to retrieve the IDs of users currently viewing the page:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cd"&gt;/** @return array&amp;lt;int&amp;gt; */&lt;/span&gt;
&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;getUserIdsOnThisPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;routeName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;collect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Redis&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:*"&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;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str_replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$key&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;toArray&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This method gathers all keys that begin with the route name as a prefix. It then extracts just the user ID from each key.&lt;/p&gt;

&lt;p&gt;We opt for the &lt;code&gt;Redis::keys&lt;/code&gt; method over &lt;code&gt;Redis::scan&lt;/code&gt; because the maximum number of users on a page is 50 (the total number of operation team members). This is a manageable number for our app’s memory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Here’s the&lt;/strong&gt; &lt;code&gt;render&lt;/code&gt; method, which is the final method in our component:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;logOnThisPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nv"&gt;$users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;query&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;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'id'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'name'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'username'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'avatar_url'&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;whereIn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'id'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getUserIdsOnThisPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$request&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;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;view&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'livewire.on-this-page'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'users'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'duration'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;durationInSeconds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, we log the current user with the &lt;code&gt;OnThisPage&lt;/code&gt; function. Then, we retrieve user details from the database for display.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;on-this-page.blade.php&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now, let’s tackle the frontend. In this section, we’ll loop through the list of users to display their photos. We’ll also utilize &lt;a href="https://livewire.laravel.com/docs/polling"&gt;polling&lt;/a&gt; to automatically update the component every 20 seconds, based on the duration variable.&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="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;wire:poll.&lt;/span&gt;&lt;span class="err"&gt;{{&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="na"&gt;duration&lt;/span&gt; &lt;span class="err"&gt;}}&lt;/span&gt;&lt;span class="na"&gt;s&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"flex overflow-hidden items-center"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-gray-400"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            On this page
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ml-2 flex -space-x-2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            @foreach($users as $user)
                &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"inline-block h-8 w-8 rounded-full text-white shadow-solid border border-black"&lt;/span&gt;
                     &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"{{ asset($user-&amp;gt;avatar_url) }}"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"{{ $user-&amp;gt;name }}"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            @endforeach
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This template simply showcases which users are currently on the page by displaying their profile photos.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How to use&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To use this component, just integrate it into the pages where you want the users to see who else is viewing the same page.&lt;/p&gt;

&lt;p&gt;For demonstration, I integrated it into a basic CMS. In both the &lt;code&gt;posts.list&lt;/code&gt; and &lt;a href="http://posts.show"&gt;&lt;code&gt;posts.show&lt;/code&gt;&lt;/a&gt; views, I added this component to the header:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;livewire:on-this-page&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will allow team members to quickly see who else is looking at the same content.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Demo&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3LJn0md--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.imgur.com/ePsSWPj.gif%2520align%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y3LJn0md--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.imgur.com/ePsSWPj.gif%2520align%3D" width="161" height="81"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Considerations and Implications&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Polling Overhead: We set a specific time for caching and for the Livewire component to check regularly. Even though checking every few seconds helps keep things up-to-date, it can also put extra work on the system. So, it’s essential to watch the set time and see how it impacts your system.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Memory Consideration: The system is tailored for an operations team of about 50 members, but as the user base grows, so does memory consumption. This is particularly noticeable if the expiration time for Redis keys is lengthened. This growth in memory usage could impact the performance and cost-efficiency of the application if not adequately monitored and managed.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UI Clutter: Displaying a full list of users can make the interface look congested, especially when there are more than five users. It might be beneficial to set a display limit or introduce a popup that shows the complete list only when necessary.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Database Hits: The way our system is set up, it often asks the database for user info because of its regular checks. When lots of users are active, this can make the database work harder. If we don’t fix this over time, it can slow things down or cause other problems. A solution might be to store user data in Redis so we don’t have to ask the database so often.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What Do You Think?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;How do you feel about this approach? Have you ever needed something similar? If so, how did you implement it? We’d love to hear your thoughts or any alternative methods you’ve tried. Share your experiences and feedback on this article with us!&lt;/p&gt;

</description>
      <category>realtime</category>
      <category>livewire</category>
      <category>livewirerealtime</category>
      <category>laravelrealtime</category>
    </item>
    <item>
      <title>The GraphOS Studio Explorer</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Fri, 04 Aug 2023 08:58:25 +0000</pubDate>
      <link>https://dev.to/hoangit/the-graphos-studio-explorer-6ao</link>
      <guid>https://dev.to/hoangit/the-graphos-studio-explorer-6ao</guid>
      <description>

&lt;ol&gt;
&lt;li&gt;One-click query building in Explorer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://graphql-studio.eplus.dev/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wmbka7mN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://github.com/hoangsvit/graphql-studio/raw/main/assets/img/1.gif" alt="One-click query building in Explorer" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Typing out GraphQL queries by hand is time-consuming at best and a frustrating minefield of confusing paths, missed brackets, and incorrect variables at worst. Explorer offers no-code query-building to eliminate syntax errors and help you be more productive. Of course, if you still need to add hand-written code, you can do just that with Explorers editor with query linting and autocomplete.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;+ K field and path search&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://graphql-studio.eplus.dev/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pKrfX_9R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://github.com/hoangsvit/graphql-studio/raw/main/assets/img/2.gif" alt=" + K field and path search" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your graph may be very deep and have thousands of fields and types. You know what data youre looking for but the more your graph scales, the more difficult it becomes to navigate the graph to get there. Explorers + K intelligent search shows you all of the possible paths to a field or type. Choose the path you want to use, and our one-click query builder will add your query to the sandbox without writing a single line of code.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Flexible response formatting Once youve built your query, Explorer shows you the response in an interactive JSON or table format with collapsible sections and data sorting by clicking on table headers. You can also copy the response to your clipboard, download it as a CSV, or download the JSON.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explore and test your local GraphQL server&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Just because youre working on your schema locally doesnt mean that you shouldnt have the best tools for the job. You can point Sandbox at any local GraphQL server and use it just as easily as other tools like GraphiQL or GraphQL Playground with zero setup. If you want to, you can even use Sandbox with production GraphQL APIs, although introspection needs to be enabled, and APIs that enforce CORS will need to allow our URL. That being said, here are a few public endpoints that you can try with Sandbox:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://graphql-studio.eplus.dev/?endpoint=https://rickandmortyapi.com/graphql"&gt;https://graphql-studio.eplus.dev/?endpoint=https://rickandmortyapi.com/graphql&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://graphql-studio.eplus.dev/?endpoint=https://graphql-demo.mead.io"&gt;https://graphql-studio.eplus.dev/?endpoint=https://graphql-demo.mead.io&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://graphql-studio.eplus.dev/?endpoint=https://demo.saleor.io/graphql/"&gt;https://graphql-studio.eplus.dev/?endpoint=https://demo.saleor.io/graphql/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;No login required You can use the Schema Reference and Explorer in Sandbox with your GraphQL endpoint just by going to &lt;a href="https://graphql-studio.eplus.dev"&gt;graphql-studio.eplus.dev&lt;/a&gt;. Youll never have to create an account or log in, though if you do we can show you your query history and open up some additional customization settings.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>graphos</category>
      <category>graphql</category>
      <category>graphqlstudio</category>
    </item>
    <item>
      <title>Tôi đã bỏ dùng XAMPP khi biết đến Open Server Panel</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Sun, 30 Jul 2023 05:55:26 +0000</pubDate>
      <link>https://dev.to/hoangit/toi-da-bo-dung-xampp-khi-biet-den-open-server-panel-20f4</link>
      <guid>https://dev.to/hoangit/toi-da-bo-dung-xampp-khi-biet-den-open-server-panel-20f4</guid>
      <description>&lt;p&gt;Những bạn lập trình web nói chung, lập trình PHP nói riêng không xa lạ gì với XAMPP.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;XAMPP&lt;/strong&gt; và &lt;strong&gt;Open Server Panel&lt;/strong&gt; đều là những phần mềm mã nguồn mở cho phép bạn phát triển và thử nghiệm các ứng dụng web trên máy tính cục bộ của mình. Cả hai đều là những lựa chọn tuyệt vời cho người dùng mới bắt đầu, nhưng có một số điểm khác biệt quan trọng cần lưu ý khi chọn một trong hai.&lt;/p&gt;

&lt;p&gt;XAMPP là một gói phần mềm tất cả trong một bao gồm Apache, MySQL, PHP và Perl. Nó có sẵn cho Windows, macOS và Linux. Open Server Panel là một trình quản lý máy chủ web dựa trên web cho phép bạn quản lý Apache, MySQL và PHP từ trình duyệt web của mình. Nó có sẵn cho Windows và Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dành cho những bạn không biết XAMPP là gì?
&lt;/h2&gt;

&lt;p&gt;Xampp là chương trình tạo máy chủ Web được tích hợp sẵn Apache, PHP, MySQL, FTP Server, Mail Server và các công cụ như phpMyAdmin. Không như Appserv, Xampp có chương trình quản lý khá tiện lợi, cho phép chủ động bật tắt hoặc khởi động lại các dịch vụ máy chủ bất kỳ lúc nào. (theo Wiki)&lt;/p&gt;

&lt;p&gt;%[&lt;a href="https://www.youtube.com/watch?v=h6DEDm7C37A&amp;amp;t=1s&amp;amp;ab_channel=Bitnami"&gt;https://www.youtube.com/watch?v=h6DEDm7C37A&amp;amp;t=1s&amp;amp;ab_channel=Bitnami&lt;/a&gt;] &lt;/p&gt;

&lt;h2&gt;
  
  
  Open Server Panel (OSPanel)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Open Server Panel&lt;/strong&gt; là một môi trường phần mềm di động được tạo riêng cho các nhà phát triển web, có tính đến các đề xuất và mong muốn của họ.&lt;/p&gt;

&lt;p&gt;Gói phần mềm của chúng tôi bao gồm một bộ phần mềm máy chủ được lựa chọn cẩn thận cũng như tiện ích điều khiển thuận tiện với các tùy chọn cấu hình và quản trị mở rộng cho tất cả các thành phần có sẵn.&lt;/p&gt;

&lt;p&gt;Ngày nay, &lt;strong&gt;OSPanel&lt;/strong&gt; được các nhà phát triển web từ khắp nơi trên thế giới sử dụng rộng rãi để phát triển, gỡ lỗi và thử nghiệm các dự án web cũng như cung cấp dịch vụ web trên các mạng cục bộ. Dự án đã giành được sự yêu thích lớn nhất đối với các quản trị viên web mới làm quen, vì nó cho phép họ nhanh chóng triển khai môi trường làm việc và ngay lập tức bắt đầu học các công nghệ web mà không cần thao tác phức tạp để cài đặt và định cấu hình một lượng lớn phần mềm lạ. (Theo OSPanel)&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Basic modules&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Apache: 2.2.31, 2.4.38, 2.4.41, 2.4.54 + auth_ntlm, fcgid, xsendfile, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PHP: 5.2.17, 5.3.29, 5.4.45, 5.5.38, 5.6.40, 7.0.33, 7.1.33, 7.2.34, 7.3.33, 7.4.30, 8.0.22, 8.1.9&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bind: 9.16.32&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FTP FileZilla: 0.9.60&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ghostscript: 9.56.1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nginx: 1.23.1 + ssl_preread, image_filter, geoip, geoip2, brotli и др.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NNCron Lite: 1.17&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sendmail: 32&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Applications&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Admin: 4.8.1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ConEmu: 22.08.07&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HeidiSQL: 12.1.64&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PHPMemcachedAdmin: 1.3&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PHPMyAdmin: 5.2.0&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PHPpgAdmin: 7.13.0&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PHPRedisAdmin: 1.17.1&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;DBMS/NoSQL modules&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MariaDB: 5.5.68, 10.1.48, 10.2.43, 10.3.36, 10.4.26, 10.5.17, 10.6.9, 10.7.5, 10.8.4&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memcached: 1.2.6, 1.4.5, 1.6.7&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MongoDB: 2.4.14, 2.6.12, 3.0.15, 3.2.22, 3.4.24, 3.6.23, 4.0.28, 4.2.22, 4.4.16, 5.0.11, 6.0.1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MySQL: 5.1.73, 5.5.62, 5.6.51, 5.7.39, 8.0.30&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PostgreSQL: 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.22, 11.17, 12.12, 13.8, 14.5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Redis: 2.8.2402, 3.0.504, 3.2.100, 4.0.14.2, 5.0.14.1, 7.0.4&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Program features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Invisible work in the Windows tray;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Server autostart when the program starts;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multiple domain management modes;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mounting a virtual disk;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for settings profiles;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Convenient viewing of component logs;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Switching HTTP, MySQL and PHP modules;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detailed and understandable documentation;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quick access to configuration templates;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multilingual interface;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Autorun programs according to the list;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Environment features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Does not require installation (portability);&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simultaneous work with Denwer, Xampp, etc.;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Work on local/network/external IP;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSL support without additional settings;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating a domain by creating a regular folder;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for Cyrillic domains;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for aliases (domain pointers);&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Server protection from external access;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Punycode domain name converter;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A set of popular PHP extensions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Task Scheduler (cron);&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;%[&lt;a href="https://www.youtube.com/watch?v=cVXWqyE6HoA&amp;amp;list=PLuY6eeDuleINU_F29Ijq_MgeUwjrKaVqW&amp;amp;ab_channel=ITDoctor"&gt;https://www.youtube.com/watch?v=cVXWqyE6HoA&amp;amp;list=PLuY6eeDuleINU_F29Ijq_MgeUwjrKaVqW&amp;amp;ab_channel=ITDoctor&lt;/a&gt;] &lt;/p&gt;

&lt;h2&gt;
  
  
  Điểm khác biệt
&lt;/h2&gt;

&lt;p&gt;Dưới đây là bảng so sánh XAMPP và OpenServer:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Hệ điều hành&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Windows, Linux, macOS&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Windows, Linux&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Máy chủ web&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Apache&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Apache, Nginx&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Máy chủ cơ sở dữ liệu&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;MySQL&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;MySQL, MariaDB, MongoDB, PostgreSQL, Redis&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Task Scheduler (cron)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Không có&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Có&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Máy chủ PHP&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;PHP (only PHP version)&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;PHP (multiple PHP versions)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Máy chủ Perl&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Perl&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Perl&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Máy chủ FTP&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;FileZilla&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;FileZilla&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Máy chủ SMTP&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Mercury Mail&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Mercury Mail&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Nhiều chế độ quản lý tên miền&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Không có&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Có&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;SSL&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Không có&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Có&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Work on local/network/external IP&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Không có&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Có&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Control Panel&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;XAMPP Control Panel&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;OpenServer Control Panel&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Kích thước&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;149 MB&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;1.3 GB&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Lịch sử phát triển&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Được phát triển từ năm 2002&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Được phát triển từ năm 2001&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Số lượng người dùng&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Hơn 60 triệu người dùng&lt;/p&gt;&lt;/td&gt;
&lt;td colspan="1" rowspan="1"&gt;&lt;p&gt;Hơn 20 triệu người dùng&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Kết luận
&lt;/h2&gt;

&lt;p&gt;Qua kết quả so sánh các bạn cũng thấy, &lt;strong&gt;OpenServer&lt;/strong&gt; tuy ít được nhiều người biết tới, nhưng nó là công cụ mạnh mẽ hơn &lt;strong&gt;XAMPP.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Download&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Trang chủ download &lt;strong&gt;XAMPP:&lt;/strong&gt; &lt;a href="https://www.apachefriends.org/download.html"&gt;https://www.apachefriends.org/download.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trang chủ downloads &lt;strong&gt;OpenServer:&lt;/strong&gt; &lt;a href="https://ospanel.io/download/"&gt;https://ospanel.io/download/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Gmail + email address trick for multiple accounts</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Thu, 27 Jul 2023 02:13:04 +0000</pubDate>
      <link>https://dev.to/hoangit/gmail-email-address-trick-for-multiple-accounts-34pi</link>
      <guid>https://dev.to/hoangit/gmail-email-address-trick-for-multiple-accounts-34pi</guid>
      <description>&lt;p&gt;As of my last update in September 2021, Gmail had a useful trick that allowed users to create multiple accounts using a single email address. This trick exploits Gmail's ability to recognize variations in the email address while still delivering emails to the same primary account. Please note that Google may change or update its policies, so it's best to verify this information with the latest Gmail documentation.&lt;/p&gt;

&lt;p&gt;Here's how the trick works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Using the "+" symbol:&lt;/strong&gt; Gmail ignores any characters after a "+" symbol in the email address. For example, if your primary email address is "&lt;a href="//mailto:myemail@gmail.com"&gt;&lt;strong&gt;myemail@gmail.com&lt;/strong&gt;&lt;/a&gt;," you can create multiple accounts by adding a "+" followed by a unique identifier before the "@" symbol. For instance:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Using dots (periods):&lt;/strong&gt; Gmail also ignores dots in the email address. For example, "&lt;a href="//mailto:myemail@gmail.com"&gt;&lt;strong&gt;myemail@gmail.com&lt;/strong&gt;&lt;/a&gt;," "&lt;a href="//mailto:my.email@gmail.com"&gt;&lt;strong&gt;my.email@gmail.com&lt;/strong&gt;&lt;/a&gt;," and "&lt;a href="//mailto:m.y.e.m.a.i.l@gmail.com"&gt;&lt;strong&gt;m.y.e.m.a.i.l@gmail.com&lt;/strong&gt;&lt;/a&gt;" all deliver emails to the same account.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This trick is useful for organizing emails and signing up for various services while still receiving all correspondence in your primary Gmail inbox. It helps you differentiate the sources of emails and filter them accordingly using Gmail's filters and labels.&lt;/p&gt;

&lt;p&gt;Remember that while this trick works with Gmail, not all email providers support the same feature. So, if you use other email services, it may not work in the same way.&lt;/p&gt;

&lt;p&gt;Always be cautious while using email variations, especially for sensitive accounts, as it may make your email more accessible to spammers or attackers if they figure out your pattern. It's better to use strong passwords and two-factor authentication for securing your accounts.&lt;/p&gt;

</description>
      <category>gmail</category>
    </item>
    <item>
      <title>Netflix Việt Nam chính thức tiến hành xác minh thiết bị thuộc hộ gia đình</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Fri, 21 Jul 2023 11:51:45 +0000</pubDate>
      <link>https://dev.to/hoangit/netflix-viet-nam-chinh-thuc-tien-hanh-xac-minh-thiet-bi-thuoc-ho-gia-dinh-40cg</link>
      <guid>https://dev.to/hoangit/netflix-viet-nam-chinh-thuc-tien-hanh-xac-minh-thiet-bi-thuoc-ho-gia-dinh-40cg</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Cập nhật về chia sẻ giữa các hộ gia đình&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Chào Hoàng,&lt;/p&gt;

&lt;p&gt;Tài khoản &lt;strong&gt;Netflix&lt;/strong&gt; dành cho bạn và những người sống cùng bạn – hộ gia đình của bạn.&lt;/p&gt;

&lt;p&gt;Bạn có thể dễ dàng xem &lt;strong&gt;Netflix&lt;/strong&gt; trong khi di chuyển và khi đi du lịch — trên thiết bị cá nhân hoặc trên TV tại khách sạn hay nhà nghỉ.&lt;/p&gt;

&lt;p&gt;Để quản lý cách tài khoản được sử dụng, bạn có thể:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Xem ai đang dùng Netflix của bạn.&lt;/strong&gt; Kiểm tra xem thiết bị nào đang đăng nhập vào tài khoản của bạn. &lt;a href="https://www.netflix.com/ManageAccountAccess"&gt;Đăng xuất khỏi các thiết bị&lt;/a&gt; không có quyền truy cập và xem xét &lt;a href="https://www.netflix.com/password"&gt;thay đổi mật khẩu&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Nếu có người không thuộc hộ gia đình sử dụng tài khoản của bạn, bạn có thể:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chuyển hồ sơ&lt;/strong&gt;. Bất cứ ai sử dụng tài khoản của bạn đều có thể &lt;a href="https://www.netflix.com/account/profile/transfercontext"&gt;chuyển hồ sơ&lt;/a&gt; sang một gói thành viên mới mà họ tự thanh toán.&lt;/p&gt;

&lt;p&gt;Chúng tôi biết bạn có thể có thắc mắc. Thông tin chi tiết có trên &lt;a href="https://help.netflix.com/support/128339"&gt;Trung tâm trợ giúp&lt;/a&gt; của chúng tôi.&lt;/p&gt;

&lt;p&gt;Cảm ơn bạn đã lựa chọn &lt;strong&gt;Netflix&lt;/strong&gt;. Chúng tôi rất vui khi có bạn làm thành viên và hi vọng có thể mang đến cho bạn nhiều chương trình truyền hình và phim tuyệt vời hơn nữa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Đội ngũ Netflix&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D01_uHph--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690005123667/0ae69652-e3c8-4bd0-b419-2f426830a7d1.png%2520align%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D01_uHph--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690005123667/0ae69652-e3c8-4bd0-b419-2f426830a7d1.png%2520align%3D" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Theo đó, vào sáng 22/07/2023 khi tôi đăng nhập vào Netflix trên &lt;strong&gt;TV&lt;/strong&gt; thì nhận được thông báo cần xác nhận TV thuộc hộ gia đình.&lt;/p&gt;

&lt;p&gt;Nếu không xem Netflix trên TV hoặc không có TV, thì bạn không cần thiết lập Hộ gia đình Netflix cho tài khoản của mình. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GFioPgTa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690004489980/5de12f47-e18e-42e3-bed3-276db0bfc149.jpeg%2520align%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GFioPgTa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690004489980/5de12f47-e18e-42e3-bed3-276db0bfc149.jpeg%2520align%3D" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quy trình xác nhận thiết bị thuộc hộ gia đình khá đơn giản theo 2 hình thức email hoặc SMS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TVQE33ah--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690004654168/3dff59b5-7289-4de0-bfd7-3519dbda4a14.jpeg%2520align%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TVQE33ah--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690004654168/3dff59b5-7289-4de0-bfd7-3519dbda4a14.jpeg%2520align%3D" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Truy cập đường dẫn và bấm vào &lt;strong&gt;nút xác nhận hộ gia đình&lt;/strong&gt;, TV sẽ tự động xác nhận và tiếp tục truy cập xem &lt;strong&gt;Netflix&lt;/strong&gt; như bình thường.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vx0Wvy2R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690005204597/1bfebe59-9aca-4990-992d-f4d26a0178f5.jpeg%2520align%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vx0Wvy2R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690005204597/1bfebe59-9aca-4990-992d-f4d26a0178f5.jpeg%2520align%3D" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Màn hình quản lý thiết bị trên Netflix&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EBZA9iGh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690005307368/f1571375-9fad-45bb-aa75-8e7106adaf76.png%2520align%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EBZA9iGh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1690005307368/f1571375-9fad-45bb-aa75-8e7106adaf76.png%2520align%3D" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Cách thiết lập hoặc cập nhật Hộ gia đình Netflix&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Hộ gia đình Netflix là tập hợp các thiết bị Netflix đang kết nối với internet tại địa điểm chính mà bạn xem Netflix. Có thể thiết lập Hộ gia đình Netflix bằng thiết bị TV. Các thiết bị sử dụng tài khoản Netflix của bạn đang kết nối cùng mạng internet với chiếc TV này sẽ tự động thuộc về Hộ gia đình Netflix của bạn.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Thiết lập hoặc cập nhật Hộ gia đình Netflix của bạn&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bạn có thể thiết lập hoặc cập nhật Hộ gia đình Netflix của mình khi đăng nhập vào Netflix từ một TV đang kết nối với internet tại nhà bạn.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Trên màn hình chính của Netflix trên TV, nhấn phím &lt;strong&gt;trái&lt;/strong&gt; trên điều khiển từ xa để mở menu.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chọn &lt;strong&gt;Nhờ giúp đỡ&lt;/strong&gt; &amp;gt; &lt;strong&gt;Quản lý Hộ gia đình Netflix&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chọn &lt;strong&gt;Xác nhận Hộ gia đình Netflix&lt;/strong&gt; hoặc &lt;strong&gt;Cập nhật Hộ gia đình Netflix của tôi&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chọn &lt;strong&gt;Gửi email&lt;/strong&gt; hoặc &lt;strong&gt;Gửi tin nhắn&lt;/strong&gt;. Một liên kết xác minh sẽ được gửi đến địa chỉ email hoặc số điện thoại của tài khoản. Liên kết xác minh sẽ hết hạn sau 15 phút.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LƯU Ý:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nếu chưa thêm số điện thoại hoặc địa chỉ email vào tài khoản của mình, bạn sẽ chỉ nhìn thấy một tùy chọn.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nếu bạn không nhận được liên kết xác minh qua email hoặc tin nhắn, hãy nhấp vào &lt;strong&gt;Gửi lại email&lt;/strong&gt; hoặc &lt;strong&gt;Gửi lại tin nhắn&lt;/strong&gt;. Hoặc bạn có thể chọn một tùy chọn khác hoặc chọn &lt;strong&gt;Nhắc tôi sau&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chọn &lt;strong&gt;Đúng, đây là tôi&lt;/strong&gt; trong email hoặc nhấn vào liên kết trong tin nhắn văn bản, sau đó &lt;strong&gt;Xác nhận Hộ gia đình Netflix&lt;/strong&gt; hoặc &lt;strong&gt;Cập nhật Hộ gia đình Netflix&lt;/strong&gt; để tiếp tục.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bạn sẽ thấy xác nhận trên màn hình TV và nhận được email xác nhận. Chọn &lt;strong&gt;Tiếp tục đến Netflix&lt;/strong&gt; để bắt đầu xem.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;LƯU Ý:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Kết nối internet" đề cập đến kết nối internet có dây hoặc không dây mà bạn sử dụng. Nếu bạn có nhiều mạng Wi-Fi, thì chúng tôi chỉ có thể liên kết một mạng với Hộ gia đình Netflix của bạn. Nếu bạn muốn xem Netflix trên các thiết bị đang kết nối với mạng Wi-Fi thông qua tài khoản ISP khác hoặc có địa chỉ IP bên ngoài khác, bạn có thể được yêu cầu xác minh rằng thiết bị đó thuộc Hộ gia đình Netflix. Đảm bảo thiết lập hoặc cập nhật Hộ gia đình Netflix của bạn từ một thiết bị đang kết nối với kết nối internet mà bạn ưu tiên hoặc sử dụng nhiều nhất.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>netflix</category>
    </item>
    <item>
      <title>Apple Pay Bắt Đầu Hỗ Trợ Thẻ VISA Của TPBank và VPBank Ở Việt Nam</title>
      <dc:creator>David Nguyen</dc:creator>
      <pubDate>Fri, 21 Jul 2023 11:51:45 +0000</pubDate>
      <link>https://dev.to/hoangit/apple-pay-bat-dau-ho-tro-the-visa-cua-tpbank-va-vpbank-o-viet-nam-2c73</link>
      <guid>https://dev.to/hoangit/apple-pay-bat-dau-ho-tro-the-visa-cua-tpbank-va-vpbank-o-viet-nam-2c73</guid>
      <description>&lt;p&gt;Tính đến thời điểm hiện tại, dịch vụ thanh toán di động Apple Pay vẫn chưa chính thức được ra mắt tại Việt Nam. Tuy nhiên, có thông tin từ một số người dùng cho biết vào ngày 20/6 (giờ Việt Nam), họ đã có thể liên kết và sử dụng Apple Pay với thẻ VISA của ngân hàng TPBank. Sau đó, ngân hàng VPBank cũng thông báo hỗ trợ thêm thẻ vào Apple Pay.&lt;/p&gt;

&lt;p&gt;Để thêm thẻ vào Apple Pay, người dùng cần chuyển vùng iPhone sang Mỹ. Nếu vẫn để vùng Việt Nam, hệ thống sẽ yêu cầu thêm thẻ thông qua các ứng dụng ngân hàng, email hoặc trang web. Tiếp theo, người dùng chỉ cần truy cập vào ứng dụng Wallet (Ví) trên màn hình chính, chọn nút "Thêm", và nhập thông tin thẻ để hoàn tất quá trình.&lt;/p&gt;

&lt;p&gt;Tuy đã có một số người dùng thành công trong việc liên kết thẻ VISA của TPBank và VPBank vào Apple Pay và thực hiện thanh toán, nhưng việc hỗ trợ thẻ này có thể khác nhau đối với các ngân hàng khác nhau. Có những ngân hàng khác như Vietcombank và Techcombank chưa được hỗ trợ, hệ thống báo lỗi "Nhà phát hành thẻ của bạn chưa cung cấp hỗ trợ cho thẻ này".&lt;/p&gt;

&lt;p&gt;Apple Pay là một dịch vụ thanh toán di động và ví điện tử được Apple giới thiệu lần đầu trên bộ đôi iPhone 6/6 Plus vào tháng 9 năm 2014. Hiện tại, Apple Pay đã hỗ trợ nhiều quốc gia thuộc Châu Âu và Bắc Mỹ. Cũng có một số quốc gia Châu Á như Trung Quốc, Hong Kong, Singapore và Nhật Bản cũng đã được hỗ trợ. Việc dịch vụ này dự kiến hỗ trợ tại Việt Nam vào cuối tháng 7, nhưng vẫn chưa có thông báo chính thức từ Apple về việc này. Cần lưu ý rằng thông tin về việc hỗ trợ các quốc gia có thể thay đổi và mở rộng sau khi tôi dừng cập nhật kiến thức vào tháng 9 năm 2021.&lt;/p&gt;




&lt;p&gt;Dưới đây là hướng dẫn &lt;strong&gt;Thiết lập và Sử dụng Apple Pay trên iPhone&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Để sử dụng Apple Pay, bạn cần:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Một thiết bị tương thích&lt;/strong&gt; với phiên bản iOS hoặc iPadOS, watchOS hoặc macOS mới nhất.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Một thẻ được hỗ trợ&lt;/strong&gt; từ tổ chức phát hành thẻ tham gia chương trình.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ID Apple&lt;/strong&gt; đã được sử dụng để đăng nhập vào iCloud.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Với những yêu cầu đơn giản này, bạn có thể bắt đầu sử dụng Apple Pay và trải nghiệm một phương thức thanh toán tiện lợi và an toàn.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;THÊM THẺ CHO APPLE PAY TRÊN IPHONE&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Nếu bạn muốn thêm thẻ tín dụng hoặc thẻ ghi nợ vào Apple Pay trên iPhone, có thể thực hiện theo các bước sau:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Mở ứng dụng &lt;strong&gt;Ví&lt;/strong&gt; trên iPhone của bạn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chạm vào nút "&lt;strong&gt;Thêm&lt;/strong&gt;" (+) ở góc phải màn hình.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chọn "&lt;strong&gt;Thẻ ghi nợ hoặc Thẻ tín dụng&lt;/strong&gt;".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nhập thông tin thẻ của bạn bằng cách quét mã vạch trên thẻ hoặc nhập thông tin thủ công.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Xác minh thông tin thẻ với ngân hàng hoặc tổ chức phát hành thẻ của bạn.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nếu thông tin được xác nhận, thẻ sẽ được thêm vào Apple Pay và bạn có thể sử dụng nó để thanh toán.&lt;/p&gt;

&lt;p&gt;Nếu bạn muốn thêm thẻ đã sử dụng trước đó vào Apple Pay trên iPhone, thực hiện các bước sau:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Mở ứng dụng &lt;strong&gt;Ví&lt;/strong&gt; trên iPhone của bạn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chạm vào nút "&lt;strong&gt;Thêm&lt;/strong&gt;" (+) ở góc phải màn hình.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chọn "&lt;strong&gt;Thẻ trước đó&lt;/strong&gt;" để xem danh sách các thẻ bạn đã thêm trước đó vào ứng dụng Ví.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chọn thẻ bạn muốn thêm và nhập mã bảo mật nếu cần thiết.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Xác minh thông tin thẻ với ngân hàng hoặc tổ chức phát hành thẻ của bạn.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nếu thông tin được xác nhận, thẻ sẽ được thêm vào Apple Pay và bạn có thể sử dụng nó để thanh toán.&lt;/p&gt;

&lt;p&gt;Nếu bạn gặp vấn đề khi thêm thẻ vào Apple Pay, bạn nên liên hệ với ngân hàng hoặc tổ chức phát hành thẻ của mình để được hỗ trợ.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hãy trải nghiệm một phương thức thanh toán tiện lợi và an toàn với Apple Pay!&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
