<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LORENSTEWART</title>
	<atom:link href="https://lorenstewart.me/feed/" rel="self" type="application/rss+xml" />
	<link>https://lorenstewart.me</link>
	<description>Home</description>
	<lastBuildDate>Fri, 03 Feb 2023 11:07:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.2</generator>

<image>
	<url>https://lorenstewart.me/wp-content/uploads/2023/02/32-100x100.png</url>
	<title>LORENSTEWART</title>
	<link>https://lorenstewart.me</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Using Node.js to Interact with Facebook&#8217;s Graph API</title>
		<link>https://lorenstewart.me/using-node-js-to-interact-with-facebooks-graph-api/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 22 Jun 2020 18:28:09 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://akildy.com/themes/sommet/?p=32</guid>

					<description><![CDATA[Facebook has a JavaScript SDK for interacting with their Graph API, but it&#8217;s for client-side...]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="32" class="elementor elementor-32">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-4f5cb7e5 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4f5cb7e5" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-40946750" data-id="40946750" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-6645d1fb elementor-widget elementor-widget-text-editor" data-id="6645d1fb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.10.2 - 29-01-2023 */
.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style>				<!-- wp:paragraph -->
<p>Facebook has a JavaScript SDK for interacting with their Graph API, but it&#8217;s for client-side JavaScript – there is no Node.js SDK.Although there are several NPM packages for working with Facebook&#8217;s Graph API, no NPM package seems to be as mature as packages for other social media platforms like Twit for the Twitter API. The best of the few seems to be facebook-node-sdk, but I hesitate to rely on it for a business critical app.The Graph API docs have no examples using vanilla JavaScript (although there are a few examples using their client-side SDK)</p>
<!-- /wp:paragraph --><!-- wp:quote -->
<blockquote class="wp-block-quote">
<p>This blog post is filled with useful examples using Node/Express!<br />Contents:<br />-Authorization &amp; Access Tokens<br />-Querying the Search Route<br />-Querying a Single Graph Object<br />-Querying for the Pages a User Manages<br />-Posting Content.</p>
</blockquote>
<!-- /wp:quote --><!-- wp:paragraph -->
<p><span style="color: #000000;"><strong>1. Authorization &amp; Access Tokens</strong></span><br />To get started, you need an access token obtained through Facebook authentication. If you have an access token at your disposal, you can skip the rest of this section. If you need to get one, read on</p>
<p>Generally, an app acquires a user access token through an authentication procedure. Passport.js is a great authentication package for Node.js apps.The Passport.js Facebook authentication strategy comes with a very useful demo app that uses Express.js. If you need to acquaint yourself with Passport, this repo is a great place to start.</p>
<p><strong>Getting a token</strong><br />Unfortunately, it isn&#8217;t as easy as merely firing up the example linked to above and authenticating. You must to have an app registered with Facebook. Instructions for doing so can be found here.</p>
<p>Once you have a registered app, you&#8217;ll need to use the app_id and app_secret in the config file of your authentication app. Adjust the code in the demo app so you console.log() the returned access token, as you&#8217;ll need the token for the requests outlined below.</p>
<p><strong>Getting POST permissions</strong><br />No all access tokens are created equal. If you intend to post to a user&#8217;s feed or to a page managed by a user, you need to specifically ask for &#8216;publish_actions&#8217; and &#8216;manage_pages&#8217; permissions through a scope object in your authentication.</p>
<p>When you ask for these permissions, a user logging in will see a prompt stating your app is requesting these permissions. If the user clicks the okay button, an access token with the specified permissions is generated</p>
<p><strong>Facebook&#8217;s App Review Process</strong><br />Without submitting your app to an official FB review process, the above code will only give you &#8216;public_profile&#8217; access. To request additional permissions you have to prove that you&#8217;re a well-intentioned developer with a well-intentioned app.For the right to obtain access tokens with additional permissions, you&#8217;ll have to fill out the &#8216;App Review&#8217; section of your app&#8217;s settings page in the Facebook Developers website.</p>
<p>The review process is quite an endeavor, and requires you to describe your app and submit a video walk-through of how your app is used.</p>
<p><span style="color: #000000;"><strong>2. Graph API Search</strong></span><br />If have an access token, you&#8217;re ready to get startedAlthough the Node/Express route is a POST route, the request we are sending to the Graph API is a GET.For the app we are building, the value assigned to searchType could be &#8216;page&#8217; or &#8216;user&#8217;, and each type will return different properties. In reality, the search Type could be any of the objects listed above.</p>
<p>Notice the the fields property and the userFieldSet and pageFieldSet constants. When searching pages, the code above requests the &#8216;name, category, link, picture, is_verified&#8217; fields to be returned. These are all part of the page public profile and do not require special permissions.The fields requested when searching users are part of the user public profile. Although these fields are all publicly available, this data will not be returned unless specified in the fields property of the request.</p>
<p>The Graph API&#8217;s search end point only returns publicly available information (I think), and there&#8217;s a good chance that you&#8217;ll want more than this; you&#8217;ll probably want the additional information your user access token permits you.</p>
<p><span style="color: #000000;"><strong>3. Querying a Single Graph Object</strong></span><br />This section covers what you&#8217;ll need to do to get information about a single object. The section starts with querying a single user, and ends with querying a single photo.</p>
<p>When querying the search route (see above), an id is returned regardless of the object type and fields specified. You need this id to make a single object request(e.g. &#8216;page&#8217;, &#8216;user&#8217;, &#8216;event&#8217;, &#8216;photo&#8217;, &#8216;post&#8217;, etc.).</p>
<p>Below is an example of querying a single user by id.</p>
<p>Permissions: If you have a Graph object&#8217;s id, you can request detailed data as long as the access token you&#8217;re using has permissions for the fields you are requesting.</p>
<p>Although a lot of information is returned, much important information is left out. For example, no urls are provided for the photos in my photo library. To get a photo&#8217;s url, you have to ask for the link field of the photo. photos is a field of a User node; link is field of photo. To get the link of each photo in our response, we need to request a field (link) of a field (photo).</p>
<p>The syntax for requesting the field of a field is field{nestedField}. To request more than one nested field, separate them by commas like so: field{nestedField1, nestedField2, nestedField3}. While we&#8217;re on the topic of cool syntax to work with the Graph API, there&#8217;s also a way to limit the number of items returned</p>
<p><span style="color: #000000;"><strong>4. Querying for the Pages a User Manages</strong></span><br />This request is probably not one you need to use very frequently, but if your app needs to manage the pages for which the user has admin permissions, this example will be useful.</p>
<p>In the example below, notice the fields property is not included because the data you&#8217;re requesting is implicit in the url.The user query in section #3 above also returned this information because the user access token that is used has permissions for this information, and &#8216;accounts&#8217; is specified in the fields property of the request.</p>
<p>If you have accounts permissions, and only want a list of accounts the user manages (rather than all user data), then this is the query you want to perform.</p>
<p> </p>
<!-- /wp:paragraph -->						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Twitter API: Uploading Videos using Node.js</title>
		<link>https://lorenstewart.me/twitter-api-uploading-videos-using-node-js/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 22 Jun 2020 18:27:04 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://akildy.com/themes/sommet/?p=31</guid>

					<description><![CDATA[I work for an influencer marketing and data company, Speaker, and we work with social...]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="31" class="elementor elementor-31">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-fad1234 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="fad1234" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2352b2f2" data-id="2352b2f2" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-595eb718 elementor-widget elementor-widget-text-editor" data-id="595eb718" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><!-- wp:paragraph --></p>
<p>I work for an influencer marketing and data company, Speaker, and we work with social media APIs all the time. This can be&#8230; challenging (to put it lightly!).One particularly difficult task has been posting videos to Twitter. If you search the internet, it seems we&#8217;re all trying to figure this out and there isn&#8217;t a clear answer. In my opinion, the best Twitter package for Node.js is Twit, but uploading videos using Twit isn&#8217;t explained well in the docs. Good news for you &#8211; I&#8217;ve gone through the pain, and frustration so you don&#8217;t have to.</p>
<p><!-- /wp:paragraph --><!-- wp:quote --></p>
<blockquote>
<p>Here&#8217;s how I upload videos to Twitter using Node.js (version 6 or greater) and Twit (version 2.2.5).</p>
</blockquote>
<p><!-- /wp:quote --><!-- wp:paragraph --></p>
<p><strong>Below, I provide two solutions (both use Twit)</strong>:</p>
<p>Uploading to Twitter when you have the video saved to disk already.<br>Uploading a video when you need to first retrieve the video from remote storage, like an AWS S3 bucket.<br>Video Format Warning<br>Make sure the video is the correct format. Smartphone videos are often a safe bet, but they don&#8217;t always work. The requirements are outlined in the infamously unhelpful&nbsp;</p>
<p><strong>Formatting a Video for Testing Purposes</strong><br>Here&#8217;s a great trick I learned from my web searches:</p>
<p>Open your video in QuickTime.<br>From the File menu, select Export.<br>Choose the iPad, iPhone, iPod Touch&#8230; export option.<br>Choose any iPhone format.<br>Once it&#8217;s converted, change the file type to .mp4 by renaming the file.</p>
<p><strong>Twitter Video Upload: Three Steps</strong><br>Uploading a video to Twitter involves three steps:</p>
<p>ONE: POST (upload) the video (line 33 below).</p>
<p>Then, using the data returned from #1&#8230;<br>TWO: POST the returned meta-data (line 38 below).</p>
<p>THREE: POST the status, i.e. the actual tweet (line 44 below).</p>
<p>I haven&#8217;t included my error handling, because it is specific to the app I&#8217;m working on. Be sure to include error handling for all three steps (also for retrieving and reading the file, if you&#8217;re fetching it from remote storage)</p><p><span data-offset-key="7qmof-10-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">1</span><span data-offset-key="7qmof-11-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-12-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Install</span><span data-offset-key="7qmof-13-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> the</span><span data-offset-key="7qmof-14-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Necessary</span><span data-offset-key="7qmof-15-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Packages</span><span data-offset-key="7qmof-16-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">:</span> <span data-offset-key="7qmof-19-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">To</span><span data-offset-key="7qmof-20-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> upload</span><span data-offset-key="7qmof-21-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> videos</span><span data-offset-key="7qmof-22-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> using</span><span data-offset-key="7qmof-23-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Node</span><span data-offset-key="7qmof-24-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-25-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">js</span><span data-offset-key="7qmof-26-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">,</span><span data-offset-key="7qmof-27-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> you</span><span data-offset-key="7qmof-28-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> will</span><span data-offset-key="7qmof-29-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> need</span><span data-offset-key="7qmof-30-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> to</span><span data-offset-key="7qmof-31-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> install</span><span data-offset-key="7qmof-32-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> a</span><span data-offset-key="7qmof-33-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> few</span><span data-offset-key="7qmof-34-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> packages</span><span data-offset-key="7qmof-35-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-36-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> First</span><span data-offset-key="7qmof-37-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">,</span><span data-offset-key="7qmof-38-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> install</span><span data-offset-key="7qmof-39-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> the</span><span data-offset-key="7qmof-40-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Node</span><span data-offset-key="7qmof-41-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-42-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">js</span><span data-offset-key="7qmof-43-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> package</span><span data-offset-key="7qmof-44-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> manager</span><span data-offset-key="7qmof-45-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">,</span><span data-offset-key="7qmof-46-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> npm</span><span data-offset-key="7qmof-47-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-48-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Then</span><span data-offset-key="7qmof-49-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">,</span><span data-offset-key="7qmof-50-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> install</span><span data-offset-key="7qmof-51-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> the</span><span data-offset-key="7qmof-52-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Node</span><span data-offset-key="7qmof-53-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-54-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">js</span><span data-offset-key="7qmof-55-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> file</span><span data-offset-key="7qmof-56-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> upload</span><span data-offset-key="7qmof-57-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">er</span><span data-offset-key="7qmof-58-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> package</span><span data-offset-key="7qmof-59-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">,</span><span data-offset-key="7qmof-60-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> mul</span><span data-offset-key="7qmof-61-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">ter</span><span data-offset-key="7qmof-62-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-63-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Finally</span><span data-offset-key="7qmof-64-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">,</span><span data-offset-key="7qmof-65-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> install</span><span data-offset-key="7qmof-66-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> the</span><span data-offset-key="7qmof-67-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> Node</span><span data-offset-key="7qmof-68-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span><span data-offset-key="7qmof-69-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">js</span><span data-offset-key="7qmof-70-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> video</span><span data-offset-key="7qmof-71-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> streaming</span><span data-offset-key="7qmof-72-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> package</span><span data-offset-key="7qmof-73-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">,</span><span data-offset-key="7qmof-74-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;"> m</span><span data-offset-key="7qmof-75-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">3</span><span data-offset-key="7qmof-76-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">u</span><span data-offset-key="7qmof-77-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">8</span><span data-offset-key="7qmof-78-0" style="background-color: var(--green-100); color: rgb(53, 55, 64); font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces;">.</span></p>
<p><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-81-0">2</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-82-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-83-0"> Create</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-84-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-85-0"> Server</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-86-0">:</span> <span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-89-0">Create</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-90-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-91-0"> server</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-92-0"> using</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-93-0"> Node</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-94-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-95-0">js</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-96-0"> and</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-97-0"> Express</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-98-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-99-0"> This</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-100-0"> will</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-101-0"> be</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-102-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-103-0"> starting</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-104-0"> point</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-105-0"> of</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-106-0"> your</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-107-0"> application</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-108-0">.</span></p>
<p><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-111-0">3</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-112-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-113-0"> Create</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-114-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-115-0"> Route</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-116-0"> for</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-117-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-118-0"> file</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-119-0"> Upload</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-120-0">:</span> <span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-123-0">Create</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-124-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-125-0"> route</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-126-0"> in</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-127-0"> your</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-128-0"> server</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-129-0"> to</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-130-0"> handle</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-131-0"> file</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-132-0"> upload</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-133-0">s</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-134-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-135-0"> This</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-136-0"> route</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-137-0"> should</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-138-0"> be</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-139-0"> able</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-140-0"> to</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-141-0"> accept</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-142-0"> an</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-143-0"> uploaded</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-144-0"> file</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-145-0"> and</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-146-0"> save</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-147-0"> it</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-148-0"> to</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-149-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-150-0"> specific</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-151-0"> location</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-152-0">.</span></p>
<p><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-155-0">4</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-156-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-157-0"> Create</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-158-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-159-0"> file</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-160-0"> upload</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-161-0"> form</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-162-0">:</span> <span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-165-0">Create</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-166-0"> an</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-167-0"> HTML</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-168-0"> form</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-169-0"> that</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-170-0"> allows</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-171-0"> users</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-172-0"> to</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-173-0"> select</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-174-0"> and</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-175-0"> upload</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-176-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-177-0"> video</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-178-0"> file</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-179-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-180-0"> This</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-181-0"> form</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-182-0"> should</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-183-0"> use</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-184-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-185-0"> route</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-186-0"> you</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-187-0"> created</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-188-0"> in</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-189-0"> step</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-190-0"> 3</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-191-0">.</span></p>
<p><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-194-0">5</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-195-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-196-0"> Process</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-197-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-198-0"> Uploaded</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-199-0"> Video</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-200-0"> File</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-201-0">:</span> <span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-204-0">Once</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-205-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-206-0"> video</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-207-0"> file</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-208-0"> has</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-209-0"> been</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-210-0"> uploaded</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-211-0"> to</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-212-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-213-0"> server</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-214-0">,</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-215-0"> you</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-216-0"> will</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-217-0"> need</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-218-0"> to</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-219-0"> process</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-220-0"> it</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-221-0"> so</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-222-0"> that</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-223-0"> it</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-224-0"> can</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-225-0"> be</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-226-0"> streamed</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-227-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-228-0"> This</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-229-0"> can</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-230-0"> be</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-231-0"> done</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-232-0"> using</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-233-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-234-0"> m</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-235-0">3</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-236-0">u</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-237-0">8</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-238-0"> package</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-239-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-240-0"> You</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-241-0"> will</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-242-0"> need</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-243-0"> to</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-244-0"> convert</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-245-0"> the</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-246-0"> file</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-247-0"> into</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-248-0"> an</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-249-0"> H</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-250-0">LS</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-251-0"> stream</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-252-0">,</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-253-0"> which</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-254-0"> is</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-255-0"> a</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-256-0"> standard</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-257-0"> streaming</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-258-0"> format</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-259-0">.</span></p>
<p><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-262-0">6</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-263-0">.</span><span style="color: #353740; font-family: ColfaxAI, helvetica, sans-serif; white-space: break-spaces; background-color: var(--green-100);" data-offset-key="7qmof-264-0"> Stream.</span></p>
<p><span data-offset-key="72e6b-10-0">Node</span><span data-offset-key="72e6b-11-0">.</span><span data-offset-key="72e6b-12-0">js</span><span data-offset-key="72e6b-13-0"> is</span><span data-offset-key="72e6b-14-0"> an</span><span data-offset-key="72e6b-15-0"> open</span><span data-offset-key="72e6b-16-0"> source</span><span data-offset-key="72e6b-17-0"> server</span><span data-offset-key="72e6b-18-0">&#8211;</span><span data-offset-key="72e6b-19-0">side</span><span data-offset-key="72e6b-20-0"> platform</span><span data-offset-key="72e6b-21-0"> for</span><span data-offset-key="72e6b-22-0"> building</span><span data-offset-key="72e6b-23-0"> web</span><span data-offset-key="72e6b-24-0"> applications</span><span data-offset-key="72e6b-25-0">.</span><span data-offset-key="72e6b-26-0"> It</span><span data-offset-key="72e6b-27-0"> is</span><span data-offset-key="72e6b-28-0"> a</span><span data-offset-key="72e6b-29-0"> powerful</span><span data-offset-key="72e6b-30-0"> and</span><span data-offset-key="72e6b-31-0"> efficient</span><span data-offset-key="72e6b-32-0"> language</span><span data-offset-key="72e6b-33-0"> that</span><span data-offset-key="72e6b-34-0"> is</span><span data-offset-key="72e6b-35-0"> well</span><span data-offset-key="72e6b-36-0"> suited</span><span data-offset-key="72e6b-37-0"> for</span><span data-offset-key="72e6b-38-0"> developing</span><span data-offset-key="72e6b-39-0"> video</span><span data-offset-key="72e6b-40-0"> uploading</span><span data-offset-key="72e6b-41-0"> applications</span><span data-offset-key="72e6b-42-0">.</span> <span data-offset-key="72e6b-45-0">To</span><span data-offset-key="72e6b-46-0"> upload</span><span data-offset-key="72e6b-47-0"> videos</span><span data-offset-key="72e6b-48-0"> using</span><span data-offset-key="72e6b-49-0"> Node</span><span data-offset-key="72e6b-50-0">.</span><span data-offset-key="72e6b-51-0">js</span><span data-offset-key="72e6b-52-0">,</span><span data-offset-key="72e6b-53-0"> you</span><span data-offset-key="72e6b-54-0"> will</span><span data-offset-key="72e6b-55-0"> need</span><span data-offset-key="72e6b-56-0"> to</span><span data-offset-key="72e6b-57-0"> use</span><span data-offset-key="72e6b-58-0"> a</span><span data-offset-key="72e6b-59-0"> library</span><span data-offset-key="72e6b-60-0"> such</span><span data-offset-key="72e6b-61-0"> as</span><span data-offset-key="72e6b-62-0"> Mul</span><span data-offset-key="72e6b-63-0">ter</span><span data-offset-key="72e6b-64-0"> or</span><span data-offset-key="72e6b-65-0"> Form</span><span data-offset-key="72e6b-66-0">idable</span><span data-offset-key="72e6b-67-0">.</span><span data-offset-key="72e6b-68-0"> These</span><span data-offset-key="72e6b-69-0"> libraries</span><span data-offset-key="72e6b-70-0"> provide</span><span data-offset-key="72e6b-71-0"> useful</span><span data-offset-key="72e6b-72-0"> methods</span><span data-offset-key="72e6b-73-0"> that</span><span data-offset-key="72e6b-74-0"> allow</span><span data-offset-key="72e6b-75-0"> you</span><span data-offset-key="72e6b-76-0"> to</span><span data-offset-key="72e6b-77-0"> upload</span><span data-offset-key="72e6b-78-0"> files</span><span data-offset-key="72e6b-79-0"> from</span><span data-offset-key="72e6b-80-0"> a</span><span data-offset-key="72e6b-81-0"> form</span><span data-offset-key="72e6b-82-0"> or</span><span data-offset-key="72e6b-83-0"> directly</span><span data-offset-key="72e6b-84-0"> from</span><span data-offset-key="72e6b-85-0"> a</span><span data-offset-key="72e6b-86-0"> browser</span><span data-offset-key="72e6b-87-0">.</span><span data-offset-key="72e6b-88-0"> Additionally</span><span data-offset-key="72e6b-89-0">,</span><span data-offset-key="72e6b-90-0"> you</span><span data-offset-key="72e6b-91-0"> can</span><span data-offset-key="72e6b-92-0"> use</span><span data-offset-key="72e6b-93-0"> streaming</span><span data-offset-key="72e6b-94-0"> APIs</span><span data-offset-key="72e6b-95-0"> such</span><span data-offset-key="72e6b-96-0"> as</span><span data-offset-key="72e6b-97-0"> Stream</span><span data-offset-key="72e6b-98-0">s</span><span data-offset-key="72e6b-99-0"> to</span><span data-offset-key="72e6b-100-0"> upload</span><span data-offset-key="72e6b-101-0"> videos</span><span data-offset-key="72e6b-102-0"> directly</span><span data-offset-key="72e6b-103-0"> to</span><span data-offset-key="72e6b-104-0"> a</span><span data-offset-key="72e6b-105-0"> remote</span><span data-offset-key="72e6b-106-0"> server</span><span data-offset-key="72e6b-107-0">.</span> <span data-offset-key="72e6b-110-0">Once</span><span data-offset-key="72e6b-111-0"> you</span><span data-offset-key="72e6b-112-0"> have</span><span data-offset-key="72e6b-113-0"> the</span><span data-offset-key="72e6b-114-0"> library</span><span data-offset-key="72e6b-115-0"> set</span><span data-offset-key="72e6b-116-0"> up</span><span data-offset-key="72e6b-117-0">,</span><span data-offset-key="72e6b-118-0"> you</span><span data-offset-key="72e6b-119-0"> can</span><span data-offset-key="72e6b-120-0"> start</span><span data-offset-key="72e6b-121-0"> programming</span><span data-offset-key="72e6b-122-0"> the</span><span data-offset-key="72e6b-123-0"> upload</span><span data-offset-key="72e6b-124-0"> process</span><span data-offset-key="72e6b-125-0">.</span><span data-offset-key="72e6b-126-0"> You</span><span data-offset-key="72e6b-127-0"> will</span><span data-offset-key="72e6b-128-0"> need</span><span data-offset-key="72e6b-129-0"> to</span><span data-offset-key="72e6b-130-0"> create</span><span data-offset-key="72e6b-131-0"> an</span><span data-offset-key="72e6b-132-0"> endpoint</span><span data-offset-key="72e6b-133-0"> in</span><span data-offset-key="72e6b-134-0"> your</span><span data-offset-key="72e6b-135-0"> server</span><span data-offset-key="72e6b-136-0"> that</span><span data-offset-key="72e6b-137-0"> will</span><span data-offset-key="72e6b-138-0"> accept</span><span data-offset-key="72e6b-139-0"> the</span><span data-offset-key="72e6b-140-0"> video</span><span data-offset-key="72e6b-141-0"> file</span><span data-offset-key="72e6b-142-0"> and</span><span data-offset-key="72e6b-143-0"> save</span><span data-offset-key="72e6b-144-0"> it</span><span data-offset-key="72e6b-145-0"> to</span><span data-offset-key="72e6b-146-0"> a</span><span data-offset-key="72e6b-147-0"> local</span><span data-offset-key="72e6b-148-0"> directory</span><span data-offset-key="72e6b-149-0"> or</span><span data-offset-key="72e6b-150-0"> to</span><span data-offset-key="72e6b-151-0"> a</span><span data-offset-key="72e6b-152-0"> cloud</span><span data-offset-key="72e6b-153-0"> service</span><span data-offset-key="72e6b-154-0"> such</span><span data-offset-key="72e6b-155-0"> as</span><span data-offset-key="72e6b-156-0"> Amazon</span><span data-offset-key="72e6b-157-0"> S</span><span data-offset-key="72e6b-158-0">3</span><span data-offset-key="72e6b-159-0">.</span><span data-offset-key="72e6b-160-0"> After</span><span data-offset-key="72e6b-161-0"> the</span><span data-offset-key="72e6b-162-0"> video</span><span data-offset-key="72e6b-163-0"> is</span><span data-offset-key="72e6b-164-0"> uploaded</span><span data-offset-key="72e6b-165-0">,</span><span data-offset-key="72e6b-166-0"> you</span><span data-offset-key="72e6b-167-0"> can</span><span data-offset-key="72e6b-168-0"> use</span><span data-offset-key="72e6b-169-0"> an</span><span data-offset-key="72e6b-170-0"> API</span><span data-offset-key="72e6b-171-0"> to</span><span data-offset-key="72e6b-172-0"> store</span><span data-offset-key="72e6b-173-0"> its</span><span data-offset-key="72e6b-174-0"> metadata</span><span data-offset-key="72e6b-175-0"> such</span><span data-offset-key="72e6b-176-0"> as</span><span data-offset-key="72e6b-177-0"> title</span><span data-offset-key="72e6b-178-0">,</span><span data-offset-key="72e6b-179-0"> description</span><span data-offset-key="72e6b-180-0">,</span><span data-offset-key="72e6b-181-0"> and</span><span data-offset-key="72e6b-182-0"> tags</span><span data-offset-key="72e6b-183-0">.</span> <span data-offset-key="72e6b-186-0">Finally</span><span data-offset-key="72e6b-187-0">,</span><span data-offset-key="72e6b-188-0"> you</span><span data-offset-key="72e6b-189-0"> can</span><span data-offset-key="72e6b-190-0"> use</span><span data-offset-key="72e6b-191-0"> a</span><span data-offset-key="72e6b-192-0"> library</span><span data-offset-key="72e6b-193-0"> such</span><span data-offset-key="72e6b-194-0"> as</span><span data-offset-key="72e6b-195-0"> FF</span><span data-offset-key="72e6b-196-0">mpeg</span><span data-offset-key="72e6b-197-0"> or</span><span data-offset-key="72e6b-198-0"> Video</span><span data-offset-key="72e6b-199-0">JS</span><span data-offset-key="72e6b-200-0"> to</span><span data-offset-key="72e6b-201-0"> encode</span><span data-offset-key="72e6b-202-0"> the</span><span data-offset-key="72e6b-203-0"> video</span><span data-offset-key="72e6b-204-0"> in</span><span data-offset-key="72e6b-205-0"> a</span><span data-offset-key="72e6b-206-0"> web</span><span data-offset-key="72e6b-207-0">&#8211;</span><span data-offset-key="72e6b-208-0">ready</span><span data-offset-key="72e6b-209-0"> format</span><span data-offset-key="72e6b-210-0"> (</span><span data-offset-key="72e6b-211-0">such</span><span data-offset-key="72e6b-212-0"> as</span><span data-offset-key="72e6b-213-0"> MP</span><span data-offset-key="72e6b-214-0">4</span><span data-offset-key="72e6b-215-0">)</span><span data-offset-key="72e6b-216-0"> and</span><span data-offset-key="72e6b-217-0"> store</span><span data-offset-key="72e6b-218-0"> it</span><span data-offset-key="72e6b-219-0"> in</span><span data-offset-key="72e6b-220-0"> a</span><span data-offset-key="72e6b-221-0"> remote</span><span data-offset-key="72e6b-222-0"> server</span><span data-offset-key="72e6b-223-0">.</span> <span data-offset-key="72e6b-226-0">By</span><span data-offset-key="72e6b-227-0"> following</span><span data-offset-key="72e6b-228-0"> these</span><span data-offset-key="72e6b-229-0"> steps</span><span data-offset-key="72e6b-230-0">,</span><span data-offset-key="72e6b-231-0"> you</span><span data-offset-key="72e6b-232-0"> can</span><span data-offset-key="72e6b-233-0"> easily</span><span data-offset-key="72e6b-234-0"> create</span><span data-offset-key="72e6b-235-0"> a</span><span data-offset-key="72e6b-236-0"> video</span><span data-offset-key="72e6b-237-0"> uploading</span><span data-offset-key="72e6b-238-0"> application</span><span data-offset-key="72e6b-239-0"> with</span><span data-offset-key="72e6b-240-0"> Node</span><span data-offset-key="72e6b-241-0">.</span><span data-offset-key="72e6b-242-0">js</span><span data-offset-key="72e6b-243-0">.</span></p>
<p><!-- /wp:paragraph --></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A Practical Guide to Redux</title>
		<link>https://lorenstewart.me/a-practical-guide-to-redux/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 22 Jun 2020 18:07:44 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://akildy.com/themes/sommet/?p=29</guid>

					<description><![CDATA[What is Redux?Redux is a state management library that lets you connect directly to application...]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="29" class="elementor elementor-29">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-7c70ca90 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7c70ca90" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2e724c03" data-id="2e724c03" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-201de81a elementor-widget elementor-widget-text-editor" data-id="201de81a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<!-- wp:paragraph -->
<p><strong>What is Redux?</strong><br />Redux is a state management library that lets you connect directly to application state from anywhere in your app. It also allows you manipulate application state from anywhere in your app. But, to work its magic, Redux requires that your app have a single data store.</p>
<p>This post focuses on using Redux in a React app.</p>
<!-- /wp:paragraph --><!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p>This post has three parts:</p>
<p>Boilerplate<br />Elements of Redux (the bulk of this post)<br />Sample app (an adorable, err, I mean super-tough Most Wanted list app)<br />Clone the repo.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote --><!-- wp:paragraph -->
<p><strong>Check out the Demo</strong>.</p>
<p>If you want type out the code yourself, you can get started by initializing a new project with:create-react-app &lt;project-name&gt;</p>
<p>When create-react-app is done setting up, cd into the folder and:npm install &#8211;save redux react-redux axios.Axios has nothing to do with Redux, but it&#8217;s the library used for AJAX calls in the demo app.</p>
<p>(If you don&#8217;t have create-react-app installed, first run npm install -g create-react-app.)</p>
<p><strong>What problem does Redux solve?</strong><br />In a React app, data is fetched in an parent component and then passed down to child components through props.</p>
<p>Things get complicated when there are many layers of components and data/state (and the functions that modify this state) are passed through numerous components to get from origin to destination. This path can be difficult to remember and it leaves many places for errors to be introduced.</p>
<p>With Redux, any component can be connected directly to state.<br />This isn&#8217;t to say that data is no longer passed down from parent components to child components via props. Rather, this path can now be direct, no passing props down from parent to great-great-great-great-great-great-grandchild.</p>
<p>It&#8217;s not good practice to have all components connect to application state. It is best to have parent/container components connect to state and pass state directly to children.</p>
<p>Terminology: Components connected to state are usually called &#8216;container&#8217; or &#8216;smart&#8217; components, and they usually execute logic too. Components that do not have state of their own, and receive state from container components care called &#8216;dumb&#8217; components. Sometimes these dumb components are functional components. Both container components and functional components are implemented in the demo app. (NewUserFace.js and Toast.js are functional components.)</p>
<p>Technically an action creator only needs to fire off Redux&#8217;s dispatch function along with an object. That&#8217;s not quite what&#8217;s going on here. In the code above, the main function (addPerson) dispatches another function (addPersonAync). This second function is called a thunk, and it returns the object/action.</p>
<p>Terminology: In the context of redux-thunk, a thunk is a second function that performs delayed logic by being asynchronously returned by a first function.</p>
<p>What&#8217;s up with that? That&#8217;s the Thunk middleware at work. This double function strategy allows us to wait for an asynchronous operation (like fetching data) to complete, and then the action is returned by the thunk.</p>
<p>The adjusted order, including reducers, is: dispatch  action creator  thunk  action  reducer.</p>
<p>In this case the double function strategy isn&#8217;t necessary, but it&#8217;s a general pattern to follow so if an operation is asynchronous, you&#8217;re already set up to deal with it.</p>
<p>Here&#8217;s a case in which an async operation is actually taking place. Below is the code for fetching the data for the demo app&#8217;s Most Wanted List.</p>
<!-- /wp:paragraph -->						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
