<?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: Ahmed R. J. Alsaedi</title>
    <description>The latest articles on DEV Community by Ahmed R. J. Alsaedi (@aalsaedi265).</description>
    <link>https://dev.to/aalsaedi265</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%2F806414%2F38d21a8b-d9de-44fa-b252-bec9cadcd185.png</url>
      <title>DEV Community: Ahmed R. J. Alsaedi</title>
      <link>https://dev.to/aalsaedi265</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aalsaedi265"/>
    <language>en</language>
    <item>
      <title>Ruby Authenticate, Bcrypt, and Salt</title>
      <dc:creator>Ahmed R. J. Alsaedi</dc:creator>
      <pubDate>Mon, 11 Apr 2022 15:59:42 +0000</pubDate>
      <link>https://dev.to/aalsaedi265/ruby-authenticate-bcrypt-and-salt-a77</link>
      <guid>https://dev.to/aalsaedi265/ruby-authenticate-bcrypt-and-salt-a77</guid>
      <description>&lt;p&gt;This blog I will tell how to encryption you're form login using Bcrypt. This blog will user the language ruby with the frame work rails, and the appropriate gems.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The first step is make user your routes for signing are working. Here is an example of code found in my config folder in the routes.rb file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2MQj_q9J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0fw0nk7wuiyb2f9ummv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2MQj_q9J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0fw0nk7wuiyb2f9ummv1.png" alt="Image description" width="445" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Then make sure the gem file the gem bcryp is present, followed by making sure you middle ware, the piece interacting with the cookies and session is present. My middle ware is located in config folder in the application folder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--giNxYhsr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/24qidpk3nx68ym7nylxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--giNxYhsr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/24qidpk3nx68ym7nylxw.png" alt="Image description" width="880" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zJyNPc3_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hhz0ctjt5zacvujh3bzi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zJyNPc3_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hhz0ctjt5zacvujh3bzi.png" alt="Image description" width="391" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BONUS: in the dev tools go to application section and select the server, and when interaction with cookies it will render in the format of key and values.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    The preparation are complete 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Next we will use Bcrypt's built in features """""has_secure_password """ which utilities other built in features such as password_digest and BCrypt::Engine (salt). For you to to obtain the benefit of all the features the gem provides with regards to security, you will need to go model were the client will create and have there account displayed and place the following information. For this example I used the user model located inside the app folder in the model folder.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SdJ_tiOL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pqb2a6tasc5ql7s2q0op.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SdJ_tiOL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pqb2a6tasc5ql7s2q0op.png" alt="Image description" width="369" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Below  I will expand about password_digest and salt you will
  not need this information for the code work the above is
  more then enough
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Create a function which uses take a parameter. In it a salt will be used, it will be best to put to a variable. Then in the function password_digest is used to the command hash_secret, which will take the parameter and the salt variable. This will create a 60 character encryption, greater then the salt being used only and generate a 29 character encryption&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CdsWc1om--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ff7xwunga7ydp3n7mne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CdsWc1om--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ff7xwunga7ydp3n7mne.png" alt="Image description" width="880" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;finally another function created to check the password inputted unless it is a match. in this function all the steps will be repeated with the exception of the use of returning two possibility one for granting access and other for rejection.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e4TFqNyO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ui3zh98ytv6puetoq0q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e4TFqNyO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ui3zh98ytv6puetoq0q.png" alt="Image description" width="880" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Active Record manipulation (column, table. Belongs)</title>
      <dc:creator>Ahmed R. J. Alsaedi</dc:creator>
      <pubDate>Mon, 28 Mar 2022 15:24:23 +0000</pubDate>
      <link>https://dev.to/aalsaedi265/active-record-manipulation-column-table-belongs-40d2</link>
      <guid>https://dev.to/aalsaedi265/active-record-manipulation-column-table-belongs-40d2</guid>
      <description>&lt;p&gt;This blog will guide you on how to create a table change column name, change the datatype, link tables, and rake utilization. First, make sure the rake gem is linked through the Gemfile, once ready use bundle install to get the library to your code. Gemfile is produced with the terminal command bundle init. In javascript, they packages instead of gems, and instead of bundle, you will use npm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XV0hyhLI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8k35sdyo3vnztda3w7na.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XV0hyhLI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8k35sdyo3vnztda3w7na.png" alt="Image description" width="721" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use rake -T this will produce all the tools available thanks to the tool library. Next to each command, there will be a little description of what they preform, below I highlighted the most frequently used,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NusCB6Uv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1rnso9lbwaawwvblfzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NusCB6Uv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1rnso9lbwaawwvblfzm.png" alt="Image description" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here you can create tables, seed information, and drop tables. Below is an example of how to create a table and name it. If you look closely EVA is named WRONG, the right wat would have been """""create_eva"""""".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PVG0Fv1Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b71a8ub2f1wk9tnnuxla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PVG0Fv1Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b71a8ub2f1wk9tnnuxla.png" alt="Image description" width="786" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The below example is what occurred if create migration is run without a name. Also when creating a table be sure to make the table plural and the links singler. The user of reference to link the table to eva and keanu table. Below picture show example of WRONG USE, observe the double """s""", be careful it is a common mistake especially with code editor suggestions. the CORRECT WAY TO WRITE IT """ references :class_name""""".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CKKmblcT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ib5y7hpwnltgisiqk6s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CKKmblcT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7ib5y7hpwnltgisiqk6s.png" alt="Image description" width="880" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a list of helpful migration tools&lt;/p&gt;

&lt;p&gt;create_table :table creation&lt;br&gt;
rename_column :table, :orginal_name, :new_name &lt;br&gt;
change_column :table_name, :column_name, :new_datatype( string, boolean, number)&lt;/p&gt;

&lt;p&gt;Next, the data table needs to be filled with information. When a table is filled with information the linking can be helpful and beneficial. For this, we need the seeds.rb file to seed our data.&lt;/p&gt;

&lt;p&gt;Producing it is very simple to use the format below as a framework.&lt;/p&gt;

&lt;p&gt;ClassName.create(name_key: desrice_valuie)&lt;/p&gt;

&lt;p&gt;If a key is not filled with a value it will have nil with searched in the database. Once the table is populated with data the next step will be to link them if there is the desired association. The adam table has a reference to both Keanu and Eva, so the adam table will be linked to those two through the class association and vice versa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tWW9rqW1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/63y1nuwmvgtn84wt3xf2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tWW9rqW1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/63y1nuwmvgtn84wt3xf2.png" alt="Image description" width="729" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>React.JS Form Submission Array of Objects</title>
      <dc:creator>Ahmed R. J. Alsaedi</dc:creator>
      <pubDate>Tue, 08 Mar 2022 02:49:06 +0000</pubDate>
      <link>https://dev.to/aalsaedi265/reactjs-form-submission-array-of-objects-1iao</link>
      <guid>https://dev.to/aalsaedi265/reactjs-form-submission-array-of-objects-1iao</guid>
      <description>&lt;p&gt;Into&lt;br&gt;
The process whether the value is text or checkbox or radio is the same, the hard part is organizing them and having it get done right in a way were the changes are done dynamically. &lt;/p&gt;

&lt;p&gt;Step1&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---LRP3jeq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfxd1uxkz9o8wzztfd9p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---LRP3jeq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfxd1uxkz9o8wzztfd9p.png" alt="Image description" width="832" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are the three functions you will need to make this work. The use state will allow us to affect the rendering. The submit and change will be used to manipulate the data with association to the input, and form html elements.&lt;/p&gt;

&lt;p&gt;Step 2&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mcHizMsS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l0e8jes8emm5wvslvm5d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mcHizMsS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l0e8jes8emm5wvslvm5d.png" alt="Image description" width="880" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This was the function we are going to use in these HTML elements you see no value, that will change we will need, will show you later. This style of submitting a form can work on all types, not just text , and will focus on text because it is easier to understand.&lt;/p&gt;

&lt;p&gt;Step 3&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pozw-T5k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sfujqjju6pchrf0rfyhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pozw-T5k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sfujqjju6pchrf0rfyhr.png" alt="Image description" width="841" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill the STATE variable with an appropriate data structure. This example, I will be using an array of objects. Inside the object there will be keys. These keys will be specifically named to match the keys that will be rendered on the page. For my page has a username and password keys and slot so I will put in my new STATE  object to have keys like so.&lt;/p&gt;

&lt;p&gt;In addition here in the submit function you will need a preventdefault to prevent the object from wiping out the data that was put. When the event is invoked the function preventDefault().&lt;/p&gt;

&lt;p&gt;Step 4&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v1XuG8EH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dm453u2pcdrgm7k2sot1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v1XuG8EH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dm453u2pcdrgm7k2sot1.png" alt="Image description" width="880" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally we are going to create a function which manipulates state in consistently updating our HOOK thanks to our SET value. In here also we are going to use the SPREAD operator because when we don't want to destroy data but instead add data. The spread will allow us to make a clone of our DATA variable’s content while we add a new object to our array of objects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---rsDK4he--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iusyw4f9coltg45ljmio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---rsDK4he--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iusyw4f9coltg45ljmio.png" alt="Image description" width="880" height="824"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Know the values will be added, as you see in the SET there is a key which takes the value for the ID and the value part takes the value of the input. Yet remember we did not put a value when we first created the input. In this step, you will tell the machine to grab the id part for the key and value for the value of the newly created object .&lt;/p&gt;

&lt;p&gt;BOUNS &lt;br&gt;
This system does not need to be with input associated with only type text and text values that can be with all data types. I am going to show an example below for an image and give an option for a checkbox instead of text only.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XHB84uJS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2o7j8wxxhp74scan02ga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XHB84uJS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2o7j8wxxhp74scan02ga.png" alt="Image description" width="880" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;e.target.type === "radio&lt;br&gt;
this to do if you wanted a radio&lt;br&gt;
but will need multiple inputs for the radio uses a selection&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Software of 3D printing &amp; More
</title>
      <dc:creator>Ahmed R. J. Alsaedi</dc:creator>
      <pubDate>Sun, 06 Feb 2022 03:53:57 +0000</pubDate>
      <link>https://dev.to/aalsaedi265/software-of-3d-printing-more-4e2g</link>
      <guid>https://dev.to/aalsaedi265/software-of-3d-printing-more-4e2g</guid>
      <description>&lt;p&gt;``&lt;br&gt;
3D printing technology has gained mainstream attention. Now it is found in many industries from fashion to construction. The reason for this is the newfound popularity of the technology is similar to how shopping online made getting the best deal easier, In the case of 3D printing it is allowing manufacturers to produce products with a higher degree of detail and reliability than before. This blog will give an introduction to how the technology’s application, the brain behind the commands given, works. We will discuss how the instrument communicates with each other, how it communicates with the human element, and how they communicate with malicious technology and hackers. In short, this blog will discuss the software behind 3D printing. &lt;/p&gt;

&lt;p&gt;Before we get very technical, the most important question must be answered, who do humans tell the robots to 3D print. The language that humans communicate with these machines is a coding language called G-code, there is also M-code however G-code is becoming the industry standard, so we will focus there. G uses numerical computer control, it is used to tell the instruments how fast to move, what to do, what order to complete tasks (such as a section in a big project, and what axis to work in. Currently, the 3D printers are able to work up to the nine-axis ( highest of the time this blog was published). Some examples of commands the machine mechanics might order are photo spotting, cutting, milling, and brushing.&lt;/p&gt;

&lt;p&gt;Another question is how does this code  work or is there an editor  like VS Code or ATOM. The short answer to these question is no, The numerical coding software is fundamentally different but with slight similarities. This is not just with regards to mainstream code editors like VS Code, but G-code editors can vary from each other. For example, the first image show a screen grab from the editor called  G-code Q’n’Dirty which focus on milling and line by line visual plotting; works on Window and MacOS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d6_tpeuZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6rei4tjuwq5vp99btq8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d6_tpeuZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6rei4tjuwq5vp99btq8.jpg" alt="Image description" width="880" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While editors such as Cimco Edit, shown below, is a type where it can only be accessed with specialized printer and servers( can do nine axis). This one can only work on window and specialized in development of Mico and Macro parts of various shapes, rotations, and sizes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q7FrV3bA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9642p1qgs9h44gqb78an.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q7FrV3bA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9642p1qgs9h44gqb78an.jpg" alt="Image description" width="880" height="495"&gt;&lt;/a&gt;&lt;a href="https://dev.tourl"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, the different 3D printer also have items in common. All editors have a manager section which is used like a folder to organize code and see project progression.&lt;/p&gt;

&lt;p&gt;Like with any machine the 3D printing equipment needs maintenance. Not only with updates, extensions, and overall keeping up the latest every changing software( for better cyber security), but also the physical aspects as well. Unlike just a computer server, 3D printers have many parts that need regular quality assurance. Some of the items include the lasers ( measure axis), the milling needles, the wires of the arms, the tubes which feed the instrument materials to use, and of course ensuring you have plenty of material to start and complete the project all in one execution; prevents the arms and lasers being stuck in an awkward position and to minimize unexpected errors.&lt;/p&gt;

&lt;p&gt;Similar to software engineering, problems with the code arise. However, the turn around time of discovering the error is much slower. The error is typically discovered after the robot arm has run; either during production or after production is completed. The most common errors which arise are la too light-outer filament, a messy filament, cracks at the base of taller pieces, and over extrusion. These errors occur due to a combination of both imperfect commands and physical mistakes. However, most physical mistakes such as a jammed probe can be eliminated with diligent quality assurance. In addition, the code, the command being told to the robot arm, can be properly monitored throughout production; this allows for spot errors in live time and stops production to fix and resume. This is similar to the console.log to ensure what is being asked of the robots is what the client is asking for and should occur based on the code put into the editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jG5DRMIT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9fp0xlmjhjo22ofikg2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jG5DRMIT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9fp0xlmjhjo22ofikg2.jpg" alt="Image description" width="495" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you know how the system works and how to keep it working, The final question to ask is can a 3D printer be hacked? The simple answer is yes. It is true, having the ability to construct anything with a few finger presses is frightening if it falls into malicious hands, but there are new technologies and techniques such as round-the-clock monitoring of the machines to ensure everything is being made properly.&lt;/p&gt;

&lt;p&gt;These instruments use software and anything which uses software can be hacked, this also goes for bank accounts, self-driving cars, and commercial drones. It is important it keeps in mind how 3 D printing (3DP) is revolutionizing construction, fashion, and every industry it is being used in.  3DP is a tool and a very powerful one, which can be used to truly help people, Some example is creating better medical devices such as bionic limbs, beautiful and affordable homes, and more efficient and inexpensive new cars.&lt;/p&gt;

&lt;p&gt;Smid, Peter (2010), CNC Control Setup for Milling and Turning, New York: Industrial Press, ISBN 978-0831133504, LCCN 2010007023.&lt;/p&gt;

&lt;p&gt;All3DP(2021) 10 BEST G-Code Editors of 2021(Online &amp;amp; Offline)&lt;/p&gt;

&lt;p&gt;Alkaios Bournias(2020) Understand and fix common STL files eros&lt;/p&gt;

&lt;p&gt;Dobot (2021) 10 Common 3D Printing troubleshooting Problems you may have.&lt;/p&gt;

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