PageSourceSearch

https://www.wiregate.io/assets/DevInstrumentsArticle-BFTlC__L.js

js wiregate.io collected 2026-10-06 06:59:32 UTC 11,288 bytes, 21 lines download raw bytes

1import{c as t,r as d,j as e,L as s,s as m,q as x,G as p,t as h,A as g}from"./app-CxPFvKCq.js";import{S as f}from"./SocialSidebar-C8rG3iPQ.js";import{S as u,O as o,c as y}from"./site-exYQJMH5.js";import{H as j}from"./vite-react-ssg.CoMLbIiW-DqJ1MLaV.js";import{m as a}from"./proxy-CFgvynRD.js";import{A as l}from"./arrow-left-BzyUQ6aC.js";import{U as b}from"./user-Bm8USxGR.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const N=t("Anchor",[["path",{d:"M12 22V8",key:"qkxhtm"}],["path",{d:"M5 12H2a10 10 0 0 0 20 0h-3",key:"1hv3nh"}],["circle",{cx:"12",cy:"5",r:"3",key:"rqqgnr"}]]);/**
7 * @license lucide-react v0.462.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const v=t("Bug",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]]);/**
12 * @license lucide-react v0.462.0 - ISC
13 *
14 * This source code is licensed under the ISC license.
15 * See the LICENSE file in the root directory of this source tree.
16 */const w=t("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
17 * @license lucide-react v0.462.0 - ISC
18 *
19 * This source code is licensed under the ISC license.
20 * See the LICENSE file in the root directory of this source tree.
21 */const k=t("Monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),r="Development Instruments Explained: VCS, IDEs, Debuggers | Wiregate",n="A primer on the everyday tools of software development — version control, IDEs, debuggers, monitoring, and more — and how they fit into a real engineering workflow.",c=y("/blog/dev-instruments-explained"),L=()=>(d.useEffect(()=>{window.scrollTo(0,0)},[]),e.jsxs(e.Fragment,{children:[e.jsxs(j,{children:[e.jsx("title",{children:r}),e.jsx("meta",{name:"description",content:n}),e.jsx("link",{rel:"canonical",href:c}),e.jsx("meta",{property:"og:type",content:"article"}),e.jsx("meta",{property:"og:site_name",content:u}),e.jsx("meta",{property:"og:title",content:r}),e.jsx("meta",{property:"og:description",content:n}),e.jsx("meta",{property:"og:url",content:c}),e.jsx("meta",{property:"og:image",content:o}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:title",content:r}),e.jsx("meta",{name:"twitter:description",content:n}),e.jsx("meta",{name:"twitter:image",content:o})]}),e.jsx(f,{}),e.jsx("article",{className:"pt-28 pb-24",children:e.jsxs("div",{className:"site-shell-narrow",children:[e.jsx(a.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},children:e.jsxs(s,{to:"/blog",className:"group inline-flex items-center gap-2 font-mono text-xs tracking-wider text-primary hover:text-primary/80 transition-colors mb-8",children:[e.jsx(l,{className:"w-3.5 h-3.5 transition-transform group-hover:-translate-x-1"})," BACK TO BLOG"]})}),e.jsxs(a.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{delay:.1},children:[e.jsx("span",{className:"font-mono text-[11px] tracking-widest text-primary uppercase mb-4 block",children:"Education"}),e.jsx("h1",{className:"text-3xl md:text-4xl lg:text-5xl font-bold tracking-tight text-foreground mb-6 leading-tight",children:"Development Instruments Explained"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-4 text-muted-foreground font-mono text-xs tracking-wider mb-12 pb-8 border-b border-border",children:[e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(b,{className:"w-3.5 h-3.5"}
21)," Mikhail Shevtsov"]}),e.jsx("span",{className:"text-muted-foreground/30",children:"//"}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(m,{className:"w-3.5 h-3.5"})," October 22, 2024"]}),e.jsx("span",{className:"text-muted-foreground/30",children:"//"}),e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(x,{className:"w-3.5 h-3.5"})," 7 min read"]})]})]}),e.jsxs(a.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.2},className:"space-y-8",children:[e.jsx("p",{className:"text-muted-foreground leading-relaxed text-base",children:"While it's possible to write applications using pencil and paper, in practice, it's highly inefficient. A developer must constantly check syntax and control changes made during the process. To simplify this work, professional instruments are used."}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mt-12 mb-4",children:[e.jsx(p,{className:"w-5 h-5 text-primary"}),e.jsx("h2",{className:"text-xl md:text-2xl font-bold text-foreground",children:"Version Control System (VCS)"})]}),e.jsx("p",{className:"text-muted-foreground leading-relaxed text-base",children:"Complex applications contain millions of lines of code. To keep track of every change, we use a Version Control System. It allows us to see the difference between releases and revert to previous versions if a bug is introduced."}),e.jsxs("p",{className:"text-muted-foreground leading-relaxed text-base mt-4",children:["The most popular VCS today is ",e.jsx("span",{className:"font-mono text-primary",children:"GIT"}),". It is distributed, meaning it doesn't require a central server for core operations, allowing developers to work seamlessly across different environments."]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mt-12 mb-4",children:[e.jsx(k,{className:"w-5 h-5 text-primary"}),e.jsx("h2",{className:"text-xl md:text-2xl font-bold text-foreground",children:"Integrated Development Environment (IDE)"})]}),e.jsx("p",{className:"text-muted-foreground leading-relaxed text-base",children:"An IDE is more than just a text editor; it's a developer's cockpit. It understands and highlights syntax, provides smart auto-completion, and allows for rapid navigation through thousands of files."})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mt-12 mb-4",children:[e.jsx(v,{className:"w-5 h-5 text-primary"}),e.jsx("h2",{className:"text-xl md:text-2xl font-bold text-foreground",children:"Debugger"})]}),e.jsx("p",{className:"text-muted-foreground leading-relaxed text-base",children:`A Debugger allows us to "freeze" time and inspect the application's execution step-by-step. By monitoring every variable and command in real-time, we can find flaws in business logic that are invisible to the naked eye. Most modern debuggers are integrated directly into the IDE.`})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mt-12 mb-4",children:[e.jsx(w,{className:"w-5 h-5 text-primary"}),e.jsx("h2",{className:"text-xl md:text-2xl font-bold text-foreground",children:"Linter"})]}),e.jsx("p",{className:"text-muted-foreground leading-relaxed text-base mb-4",children:"Code should not only work; it should be readable. A Linter enforces project standards automatically. It ensures the team's code looks like it was written by a single person, which is vital for long-term maintenance. Common rules include:"}),e.jsxs("ul",{className:"space-y-2 pl-4",children:[e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary mt-1.5 text-xs",children:"▸"}),e.jsx("span",{className:"font-mono text-sm text-muted-foreground",children:"Line length limits (e.g., 80 characters)"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary mt-1.5 text-xs",children:"▸"}),e.jsx("span",{className:"font-mono text-sm text-muted-foreground",children:"Standardized indentation (4 spaces)"})]}),e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary mt-1.5 text-xs",children:"▸"}),e.jsx("span",{className:"font-mono text-sm text-muted-foreground",children:"Placement of curly brackets"})]})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mt-12 mb-4",children:[e.jsx(h,{className:"w-5 h-5 text-primary"}),e.jsx("h2",{className:"text-xl md:text-2xl font-bold text-foreground",children:"Frameworks"})]}),e.jsxs("p",{className:"text-muted-foreground leading-relaxed text-base mb-4",children:['A Framework is the foundation of an application. Instead of reinventing "boring" features like user authentication or file storage, frameworks like ',e.jsx("span",{className:"font-mono text-primary",children:"Laravel"})," allow us to focus 100% on your unique business logic. Laravel provides out-of-the-box:"]}),e.jsx("ul",{className:"space-y-2 pl-4",children:["Database migrations & Job queues","File Storage & Notifications","Events & WebSockets"].map(i=>e.jsxs("li",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-primary mt-1.5 text-xs",children:"▸"}),e.jsx("span",{className:"font-mono text-sm text-muted-foreground",children:i})]},i))})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-3 mt-12 mb-4",children:[e.jsx(N,{className:"w-5 h-5 text-primary"}),e.jsx("h2",{className:"text-xl md:text-2xl font-bold text-foreground",children:"Kubernetes"})]}),e.jsx("p",{className:"text-muted-foreground leading-relaxed text-base",children:"Writing the app is only 50% of the job. The other 50% is hosting and distribution. Kubernetes (invented by Google) 
21is the gold standard for this. It monitors your app 24/7. If the app stops responding, Kubernetes restarts it. It also handles scaling — automatically adding more resources when your traffic spikes."})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl md:text-2xl font-bold text-foreground mb-4 mt-12",children:"Conclusions"}),e.jsx("p",{className:"text-muted-foreground leading-relaxed text-base",children:"Understanding the instruments you work with is the first step towards success. At Wiregate, we ensure that every project is built using the correct, most efficient tools for the job."})]}),e.jsxs("div",{className:"mt-12 pt-8 border-t border-border flex justify-between items-center",children:[e.jsxs(s,{to:"/blog",className:"group inline-flex items-center gap-2 font-mono text-xs tracking-wider text-muted-foreground hover:text-primary transition-colors",children:[e.jsx(l,{className:"w-3.5 h-3.5 transition-transform group-hover:-translate-x-1"})," All Articles"]}),e.jsxs(s,{to:"/blog/openai-o1-reasoning-models",className:"group inline-flex items-center gap-2 font-mono text-xs tracking-wider text-primary hover:text-primary/80 transition-colors",children:["Next: OpenAI o1 ",e.jsx(g,{className:"w-3.5 h-3.5 transition-transform group-hover:translate-x-1"})]})]})]})]})})]}));export{L as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.