کد میراث کدام است؟ آیا این برای شما خوب هست؟ – یادداشت های مهندس

کار با کد میراث. آیا برای شما خوب است؟

بله تجربه با کد میراث باید باشد هر کس قادر به کار در محیط تازه ای است که در آن همه چیز جدید و براق است، اما کار با میراث یک کار بسیار دشوار است که ذهن های جدیدی را ایجاد می کند و مغز را دوباره می کند.

100 درصد از توسعه دهندگان من به آن صحبت کرده ام، متنفرم! آنها نمی توانند کدهای میراثی را حفظ کنند و اگر علامت فاز تعمیر و نگهداری باشند، در جهت مخالف مانند آتش سوزی اجرا خواهند شد. انتظار می رود که قابل درک باشد. کار با کد میراث آسان نیست.

همانطور که در بالا ذکر شد، میراث کد از شرکت به شرکت متفاوت است، و در مواردی که کد میراث پایه ای برای برنامه های آینده است، این امر به دانش و تجربه ویژه ای می انجامد تا بتواند از طریق کد فاسد حرکت کند و تغییرات دفاعی را با دقت جراحی انجام دهد. یک فرصت عالی برای شما برای استفاده از مهارت های refactoring خود، یادگیری شیوه های جدید و بهترین روش های نزدیک شدن به قطعات بسیار سخت و اغلب پیچیده از کد.

نرم افزار ویرایش مجدد برنامه های مختلف متفاوت است از refactoring کلاس خود را که شما یک هفته پیش نوشت. این مورد است که در آن توجه شدید به جزئیات لفظی (توسط بسیاری از ستایش …) می تواند بینایی تونل ایجاد کند و در واقع آسیب برساند. این جایی است که شما یاد خواهید گرفت که چگونه بینش بزرگتر یک سیستم به طور کلی (با در نظر گرفتن نزدیکترین نقطه مقصد refactoring، نزدیکترین نقطه عطف) و جزئیات کوچک، تغییرات کوچک، تمرکز کنید. شما فقط می توانید بر روی یک بخش از سیستم تمرکز کنید که نیاز به یادگیری و شناختن تمامی API های داخلی و خارجی و مسیرهای ارتباطی را از داخل دارد. چرا؟ به خاطر شکنندگی. حتی یک تغییر کوچک در کد میراث، به ویژه کد که شما نا آشنا هستید، می تواند موجب واکنش های ناپیوستگی آبشارها شود.

اما این یک مورد شدید با بسیار قدیمی است (آخرین نسخه اصلی 10+ سال پیش) و سیستم های ضعیف حفظ شده . اگر با یک برنامه تازه کار کار می کنید، هنوز برای یادگیری بسیار مهم است و از رضایت از آن لذت می برید. اگر به وضوح یک کد قدیمی را مشاهده کنید که توسط شما نوشته شده است، این یک نشانه واضح از پیشرفت شخصی و تکامل شماست، برای من کاملا رضایت بخش است. و هنگامی که با سیستم های بزرگتر کار می کنید، می توانید تصمیمات مهندسی کاملا پیچیده ای را که در آن زمان ساخته شده اند، تشخیص دهید و الگوهای آنها را ببینید و هماهنگی خود را با روند فعلی ترسیم کنید.

مهمترین نرمافزار قدیمی، جایی است که بیشترین استفاده از دانش دامنه خود را از . نیاز به مهندسی معکوس گسترده (به علت شکنندگی که در بالا توضیح داده شد) به شما اطلاعات زیادی در مورد دامنه ای می دهد که این نرم افزار برای تصمیم گیری ها و تصمیمات بازاریابی، الزامات و حتی مقررات ساخته شده است.

به همین ترتیب، فقط می خواهم این تجربه را با کد میراث برای هر توسعه دهنده ضروری است. هرگز فراموش نکنید که درس ها و فرصت های یادگیری در همه جا وجود دارد، فقط در لحن خود قرار دهید و چشم خود را باز نگه دارید و یاد بگیرید که آنها را تشخیص دهید.

برنامه نویسی جفت – یادداشت های مهندس

همانطور که من علاقه مند به Agile و شیوه های آن بودم، برنامه نویسی جفت یکی از تکنیک هایی بود که طولانی ترین آنها را برای جذب و درک بهتر در نظر گرفتم. اغلب به دلیل ماهیت "دو برابر شدن" آن است. من می گویم تقریبا غیرممکن است که بدون بهره برداری از این تکنیک، مزایایی را ببینم.

برنامه نویسی جفت یک تکنیک توسعه نرم افزار چابک است که در آن دو برنامه نویس در یک ایستگاه کاری کار می کنند. یکی از راننده، کد را در حالی که دیگر، ناظر یا ناوبر را می نویسد، هر خط کد را بررسی می کند همانطور که در آن تایپ شده است. دو برنامه نویس مرتبا نقش را تغییر می دهند. – Wiki

برنامه نویسی زوج بسیار سخت است برای فروش به مدیریت (پروژه / بالا) از ناظم، به شخص از خارج از آن به نظر می رسد مانند زباله، زباله منابع.

جیم: من به عهده گرفتن. اوه، آنچه ما در اینجا انجام می دهیم: مایکل بیشتر از موارد "تصویر بزرگ" را مدیریت می کند، و من بیشتر از مسائل روزمره را مدیریت می کنم، بنابراین با هم …
جو: آره.
جیم: خوب
ج: هر یک از شما نصف کار را انجام می دهد

در طول برنامه های جفت گیری دو نفر در یک داستان یا کار کار می کنند و کاملا منطقی است نتیجه گیری کنید که بیشتر اگر این دو شخص هوشمند هر یک از مشکلات جداگانه را برداشته باشند، کار ممکن است انجام شود. [1965،9006] این دیدگاه منطقی است و بسیار مفید است که آن را آگاه کنیم و همچنین لازم است توجه داشته باشیم که این دیدگاه محدود است و با مديريت آن، مديريت نشان مي دهد كه تمركز بر برنده شدن در دوران كودكي است نه استراتيژي بلند مدت.

يكي از شرايطي كه روش برنامه نويسي جفتي در خارج از آن تأثير نمي گذارد،

چرا من طولانی ترین کار را برای جذب این تکنیک خاص انجام دادم و مزایا را می بینم؟

خوب، اول از همه من یک توسعه دهنده نرم افزاری هستم و تحت تأثیر اخیر "ورود به منطقه" tr پایان دادن به این که نیروها "من را به تنهایی" (به رسمیت شناختن "افسران باز") ایده ها (نگرش ها) را بر همه می گذارند.

من خوشحالم که با اطمینان می توانم ثابت کنم که من از آن حرفه ای رشد کردم.

58٪ از کارکنان با کارایی بالا می گویند که آنها نیاز به فضای کاری آرام تر دارند. "- کاملا مقالهای با استدلال است، من به شدت توصیه می کنم آن را بخوانید.

اکثر این نوع مقاله ها از فضای آرام و راحت حمایت می کنند و کاملا طبیعی است فکر نکنید چیزی در اینجا وجود ندارد. به استثنای یک چیز شخصی برای من: من سعی می کنم برای جلوگیری از راحتی در هر هزینه. برای من ایده راحتی، ایده دادن به بهبود و حل و فصل است. در این نقطه از زندگی من متوجه شدم که راحتی چیزی است که من در آینده در آینده نگاه بی فایده پیدا خواهم کرد.

در حالی که برنامه نویسی جفت شما نه تنها در دفتر باز است، بلکه شما به طور فعال با شخص دیگری ارتباط برقرار می کنید. برقراری ارتباط با مشکل، راه رفتن از طریق کد و سرانجام برقراری ارتباط راه حل نهایی. این آسان نیست. و این مهارت است که شما نیاز دارید که در زمان نیاز به کار، توسعه و استفاده از آن بپردازید. مهارت اجتماعی شما

خمیر لاستیکی

اگر شما با خمیر لاستیک آشنا نیستید، این تکنیک از خروج از "منطقه" و تکان دادن بینایی تونل شما، جایی که شما در حال تلاش برای توضیح دادن مشکل هستید و راه رفتن از طریق کد با یک اردک لاستیکی.

این تکنیک یک پیشگام در برنامه نویسی جفت است. در حالی که "ucking لاستیک" غیر ممکن است برای شما بازخورد جامد و نقاط گلوله است که شما از دست رفته (اردک لاستیک صحبت نمی کنند، duh)، در طول برنامه های جفتی همه نظرات و ایده های خود را در واقع تندرست به شما با همراهی بازخورد ، سوالات و راه حل ها

قیچی لاستیکی یک برنامه نویسی برای یک مرد ضعیف است

Newbies

وقتی یک توسعه دهنده جوان استخدام می شود، برنامه نویسی جفت یکی از بهترین راه هاست تا او را سریع و ارتباط برقرار کند ، همه قراردادها را که توسط تیم تعیین شده اند، انتقال دهید.

جنبه های اجتماعی با استخدام های جدید وجود دارد. برنامه نویسی جفتی بهترین راه برای شناختن همه در طول چرخش جفت است.

افرادی که هرگز این تکنیک را انجام نمی دهند، ابتدا ناراحت کننده می شوند، اما بسیار سریع تنظیم می شوند و جایزه نهایی برای پروژه یا یک شرکت ارتباط بهتر، راحتی و روحیه تیم.

اگر قبلا نتوانسته اید، با توسعه دهندگان با تجربه و شناخته شده، جفت کنید. این تجربه بی ارزش است! و اگر تازه وارد هستید و این نخستین جفت شدن شماست، به خودتان خوش شانس باشید، در بلند مدت به میزان قابل توجهی بهره مند خواهید شد.

افزایش سرعت

هنگامی که با خودتان کار می کنید، طبیعی است که همه چیز را برای یک در حالی که. مشکل خسته کننده و خسته کننده است و شما قبلا راه حل را می دانید. راه حل نیز خسته کننده است. و شما وقت خود را به اتمام کار می دهید.

یک مشکل که می تواند نیم ساعت طول کشید، چند روز طول می کشد تا تکمیل و حرکت کند، اما اگر شما یک جفت آن را تقریبا هرگز مورد است. شخص دیگر شما را تحریک می کند و شما را به جلو می برد. هیچ وقت برای تعویق وجود ندارد.

انتقال دانش. به عنوان یک افزایش سرعت آینده! برنامه ریزی جفتی به طور طبیعی ایمنی دانش شما را تضمین خواهد کرد. اگر کسی در تعطیلات یا ترک تیم بماند، این از دست دادن تاثیری نخواهد داشت، زیرا هر کس یک دانش مشترک از سیستم ها و زیرساخت هایی دارد که از طریق جفت گیری به دست آمده است.

توسعه ویلای JavaScript در سال 2018 – یادداشت های مهندس

TL؛ DR: عناصر HTML مانند متغیرهای شیء را در صورت استفاده از document.getElementById () ، document.getElementsByName () یا هر یک از دیگر document.getElement .. () روش ها یا انتخابگرها، کد شما به شدت کنترل فاقد کنترل است و شما آن را اشتباه انجام می دهید.

مقدمه

هنگام استفاده از وانیلا جاوا اسکریپت در سال 2018، باید کنترل کامل داشته باشید هر عنصر DOM در هر زمان، با توانایی به صورت پویا و برنامه نویسی وضعیت هر عنصر را با توجه به منطق کسب و کار شما و الگوریتم های داخلی تغییر می دهد.

جاوا اسکریپت تا حد زیادی تکامل یافته است تا جایی که پرس و جو عناصر HTML به طور مستقیم برای تغییر آنها وضعیت و خواص پیچیدگی غیر ضروری را اضافه می کند و باید اجتناب شود.

به عنوان مثال، id ویژگی به سادگی یک ویژگی میراث است، میراث بی فایده است که باید تمیز شود و قطعا در مدرن نرم افزار

یک ظاهر طراحی تنها باید با استفاده از کلاسها انجام شود، یک روش را انتخاب کنید (به عنوان مثال BEM) و به صورت داینامیک با element.classList object property به عنوان متغیر برنامه شما

مثال

برای یک پروژه یا انتصاب کوچک فکر نمی کنم کسی فکر کند که همه کتابخانه ها (React، Vue et cetera) و حتی اشاره به چارچوب ها (Angular، Ember، …) از نظر در نظر گرفته نشده است، وانیلا جاوا اسکریپت را به عنوان انتخاب واضح ارائه می دهد.

با وجود اینکه برنامه نویسی توسط وانیلی جاوا اسکریپت انجام می شود، هنوز باید از آن استفاده کنید ابزار ساخت مدرن. یکی برای برنامه های کوچک و کتابخانه های سفارشی توصیه می شود Rollupjs، سازنده مدرن، ماژول هوشمند است که به شما اجازه می دهد یک کدک کوچک کوچک را به بخش های گرانول تر و راحت تر تعمیر (ماژول ها و یا حتی قطعات) تقسیم کنید.

19659011] برای اهداف تظاهرات اجازه می دهد یک برنامه بسیار ساده با یک شمارنده ایجاد کنید و مقدار آن را 1 بار در هر ثانیه افزایش دهید. این چیزی است که باید آن را تقریبا شبیه:

 کلاس App {
     سازنده () {
این.app = document.createElement ('div')؛
this.startCounter ()؛
این [
)
     شروع کن () {
const counterContainer = document.createElement ('p')؛
const counter = document.createTextNode ('')؛
let initialCounterValue = 0؛
         counterContainer.appendChild (ضد)؛ 

     render () {{19459023}} {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ 
document.body.appendChild (this.app)؛
}
} 
 برنامه جدید ()؛ 

counter به عنوان یک عنصر HTML با آنچه که در واقع دارد رفتار میکند یک متغیر شی: ما از لحاظ برنامه نویسی آن را ایجاد می کنیم، در مورد آن می دانیم و با خواندن خواص آن با موفقیت تغییر می کنیم:

نتیجه اجرای برنامه

همه چیز با این برنامه کوچک جاوا اسکریپت عالی است، به جز مقیاس پذیری. اجازه می دهد شمارنده انتزاعی خود را به عنوان یک ماژول مستقل و گسترش قابلیت های آن با قرار دادن چند روش API سفارشی:

 کلاس Counter {
     سازنده () {
این.counterValue = 0؛
این. شمارنده = document.createTextNode ('')؛
}
     getElement () {
if (this.counterContainer)
return this.counterContainer؛
         this.counterContainer = document.createElement ('p '(19459023) {19659028} شروع (initialValue) {
if (initialValue)
this.counterValue (19459023) این [
این.counterContainer.appendChild (this.counter)؛
         return this.counterContainer؛ 
(19459023)}

     stop () {[
) این [تعریف شده است]
اگر (this.interval)
clearInterval (this.interval)؛
}
} 
 export default Counter؛ 

این کلاس ماژول Counter را با 3 روش API در معرض نمایش می دهد: getElement ( ) – عنصر HTML را بازمیگرداند، در این مورد پاراگراف که حاوی یک گره متنی است، ویژگی ارزش که ما از نظر برنامه نویسی کنترل می کنیم.

start (initialValue) – یک روش عمل که شروع می شود و دوباره شروع می شود

stop () – شمارنده ما متوقف می شود، حفظ نقطه توقف، مقدار شمارنده

این بازنویسی برنامه اصلی ما، با استفاده از ما کلاس جدید Counter:

 import counter از './counter'؛ 
 برنامه کلاس {
     constructor () {
this.app = document.createElement (' div ')؛
این. counter ()؛
    } 
     startCounter () {
این).
this.startCounter ()؛
this.stopAndStartCounterAfter3seconds ()؛
     counter.start (1)؛ 
}
     stopAndStartCounterAfter3seconds () {
setTimeout (() => {
this.counter.stop ()؛
this.counter.start (200) ؛
}، 3000)
}
     render () {
this.app.appendChild (this.counter.getElement ())؛
document.body.appendChild (this.app)؛
}
} 
 برنامه جدید ()؛ 
برنامه بازنویسی شده با ماژول Counter جدید

به عنوان مثال این برنامه ساده نشان می دهد که لازم نیست که شما ابتدا ساختار سند HTML برای شروع کار بر روی برنامه جاوا اسکریپت خود. تمام عناصر بوجود می آیند و به صورت پویا با توجه به قوانین خود و منطق برنامه کاربردی مورد استفاده قرار می گیرند.

همانطور که می بینید، امکانات این روش بی پایان است و هیچ محدودیتی برای انتزاع ها وجود ندارد. شما حتی می توانید اجزای React مانند خود را گسترش دهید، قابلیت های عنصر HTML را گسترش دهید و به راحتی بتوانید جریان داده های برنامه را هماهنگ کنید.

و در نهایت، این امکان وجود دارد که مفهوم "DOM مجازی" خود را مطرح کنید که در آن حالت و منطق شما نرم افزار به صورت انتخابی و تعیین می کند که مرجع، به گره های DOM شما در حافظه، برای به روز رسانی.

VPN خصوصی و اختصاصی سرور اختصاصی خود را نصب کنید – یادداشت های مهندس

Raspberry Pi به عنوان VPN سرور شخصی

رفتار، عادت ها و الگوهای آنلاین من همیشه منحصر به فرد برای من بوده است. یک ایده تنها در مورد هویت من تبدیل شدن به یک محصول می تواند بازار و سود بر روی کاملا تند و زننده است، اما بسیار بیشتر از آن است، آن هم در مورد امنیت شخصی و حریم خصوصی است.

HTTPS، در حالی که عالی برای حفاظت از خود گذرواژهها در یک وبسایت خاص محافظت میشوند تا از ترافیک بیشتر و تمام فعالیتهایتان در دستگاهتان محافظت نمیکنند (پشت صحنهها خیلی بیشتر است).

به عنوان مثال با تلفنهایتان، هنگامی که شما انتخاب بین استفاده از شبکه WiFi عمومی (اجازه می دهد در کار و یا فقط در یک دفتر بزرگ مانند WeWork می گویند) و با استفاده از داده های تلفن همراه خود را (که در مورد من نامحدود است، به لطف ورایزون!)، اساسا انتخاب بین اینکه آیا یا نه داده های ترافیک تلفن همراه خود را بین شما و حامل سلولی خود حفظ کنید یا این اطلاعات حساس را بین شما، حامل خود و یک دسته از بازیگران ناشناخته و ترافیک نگه دارید.

با توجه به مسائل مربوط به اعتماد، برای من انتخاب واضح است، هیچ راهی در جهنم هر کسی که شبکه عمومی را داشته باشد اورک باید از فعالیت من، به نظر می رسد، در Grindr، و به همین ترتیب آنها، گیگابایت های گران قیمت من از برنامه داده ماهانه ماهانه من است.

اگر من به شما گفتم که یک راه استفاده از فای عمومی بدون به خطر انداختن حریم خصوصی شما وجود دارد و امنیت. درست است که شما احتمالا از عنوان عنوان حدس زدید، پاسخ شبکه خصوصی مجازی است.

یک کاربر معمولی (ha، mortals!) به راحتی می توانید یک برنامه ماهانه از یک ارائه دهنده VPN را با یکی از جذاب ترین و جذاب ترین بخش بازاریابی خریداری کنید. متاسفانه این رویکرد هنوز یک بازیگر شخص ثالث را اضافه می کند که شما واقعا نمی توانید اعتماد داشته باشید، که هنوز از تمام فعالیت های آنلاین خود آگاه است. من به شدت ترجیح می دهم یک شرارت کمتر، فعالیت خود را تنها بین من و ISP من را حفظ کنید.

خوشبختانه ما یک مهندس نرم افزار هستیم و می توانیم سرور مجازی VPN خود را از ابتدا ساخت، که بسیار ساده تر از آنچه شما فکر می کنید

نصب و راه اندازی من:

  1. Raspberry Pi 3 مدل B مادربرد
  2. سامسونگ 32GB 95MB / s (U1) MicroSD EVO
  3. جعبه اسرعا برای Raspberry Pi 3 با فن خنک کننده و هیت سینک، 5V / منبع تغذیه 2.5A، میکرو USB با سوئیچ روشن / خاموش

مجموع به حدود 75 دلار می رسد (قیمت ها برای هر آنلاین، قیمت هدف از اهداف من نیست). همچنین اگر شما نیاز به تجهیزات جانبی دارید، آن را نیز دریافت کنید: ماوس سیمی، صفحه کلید، کابل HDMI برای مانیتور با ورودی HDMI.

سختافزار ما در حال حاضر گامهایی برای تبدیل Raspberry Pi به سرور اختصاصی VPN است (امید این مقاله موجب صرفه جویی در مقدار زیادی از جستجوی گوگل می شود):

ابتدا ما باید سیستم عامل Raspberry Pi (بر اساس دبیان، بنابراین شما می دانید apt-get است) بر روی آن MicroSD، برای بوت کردن ناز، کمی، سبز Raspberry Pi

  1. دانلود آن را از اینجا: https://www.raspberrypi.org/downloads/raspbian/ (اگر این اولین پروژه Raspberry Pi شما است، دانلود آن را با دسکتاپ،
    دسکتاپ RASPBIAN STRETCH فقط شگفت انگیز!)
  2. دریافت کننده اتچر از اینجا: https://etcher.io/
  3. رایت کنید که MicroSD

هنگامی که Raspberry Pi بالا می رود، آن را تنظیم کنید.

SSH غیر فعال شده است به طور پیش فرض ، شما باید آن را فعال کنید (کاملا ساده است، بر روی دسکتاپ به تنظیمات بروید و روی علامت SSH کلیک کنید، در خط فرمان انجام دهید sudo raspi-config).

  1. تغییر د رمز عبور خطا برای pi کاربر (نقطه امنیت!) که تمشک است.
  2. کاربران را به صورت لازم اضافه کنید.
  3. اطمینان حاصل کنید که Raspberry Pi یک IP ثابت از روتر شما دریافت می کند. 19659025] در تنظیمات روتر شما پورت انتقال تمام تراکنش UDP را به دستگاه Raspberry Pi پیکربندی کرده و از بعضی از پورت های دیگر از 1194 (نقطه امنیت!) استفاده کنید

حالا زمان تبدیل Raspberry Pi به سرور VPN

برای تلفن های موبایل فانتزی و ترسناک پیچیده است اما آن را ندارد (با تشکر از پروژه PiVPN!).

نگاهی به مستندات اینجا: https://github.com/pivpn/pivpn

Glance over the scripting here: https: // install .pivpn.io

هنگامی که شما تمام نگرانی های خود را رفع کردید و اطمینان دارید که خنک است، این دستور را روی Raspberry Pi اجرا کنید:

 curl -L https://install.pivpn.io | bash 

از این لحظه، آن را به همان اندازه ساده ویندوز قدیمی نصب شده در اواخر دهه 90 است: فقط نشستن، استراحت و پاسخ به تمام سوالات که بالا میآید.

یادداشت:

  1. اطمینان حاصل کنید که از پورت استفاده می کنید از روتر پیش فرض UDP forwarding
  2. یک سوال در مورد ارائه دهنده DNS وجود دارد، مراقب باشید در اینجا (نقطه امنیت!) همانطور که قبلا گفتم، من ترجیح می دهم شیطان کمتر، نگه داشتن ترافیک من بین من و ISP من، بنابراین سرور DNS های ISP خود را انتخاب کنید، سفارشی را انتخاب کنید، IP ها DNS خود را وارد کنید.
  3. من فکر می کنم که تمام گزینه های دیگر را به طور پیش فرض با استفاده از مقادیر پیشنهادی بگذارید (لطفا به من در این مورد مراجعه کنید! من دوست دارم بدانم اگر چیزی از دست رفته است!)

بم. تقریبا انجام شده است.

اکنون شما نیاز به اضافه کردن پروفایل های PiVPN (توصیه می شود که پروفایل جداگانه ای برای هر دستگاه برای کنترل بیشتر دانه اضافه کنید) از این دستور استفاده کنید:

 pivpn add 

و دستورالعمل ها را دنبال کنید

این فایل فایل * .ovpn (یعنی PiVPN بر اساس OpenVPN) در ~ / ovpns / برای کاربر انتخاب شده شما ایجاد می کند، سپس:

  1. بر روی iPhone شما (من یک طرفدار اپل البته) دانلود برنامه OpenVPN از فروشگاه
  2. دریافت این *. ovpn فایل آنلاین به صورت خصوصی (نقطه امنیت! اطمینان حاصل کنید هیچ علامتی از این فایل در هر نقطه بعد وجود دارد، محلی را امتحان کنید وب سرور)، با سافاری تلفن همراه خود به آن دسترسی پیدا کنید و گزینه باز کردن با OpenVPN را انتخاب کنید.

انجام شد. همه چیز از این لحظه بسیار ساده است. VPN شخصی شخصی شما هم اکنون کار می کند

همان مکانی برای MacBooks: وارد کردن *. ovpn به مشتریان VPN بر روی کتابهای خود.

VPN در Rinat آیفون

یک چیز عالی علاوه بر حفظ حریم خصوصی

به عنوان یک مهندس نرم افزار، ما برخی از پروژه های جانبی و چیزهای زیادی را در خانه با برنامه ها و POC ها اجرا می کنیم که در سرورهای شبکه داخلی محلی ما اجرا می شود (من مطمئن هستم که یک دسته) ، و حدس بزنید چه چیزهایی برای شما در ارتباط با این اتصال VPN قابل دسترسی هستند.

iOS OpenVPN به VPN خصوصی شما وصل شده است

از هر کجا به آن وصل شوید و مانند شما هرگز خانه خود را ترک نکنید. آیا آن عالی نیست؟

شما خوش آمدید.

GDAX Pocket UI – یادداشت های مهندس

من برخی از زمان ها درباره الگوریتمیک تجارت نوشته ام، و اینکه چگونه برای مهندسان نرم افزار برای انجام تمرینات مغزی خود بسیار مفید است. من برخی از نکات کد را ارائه کرده ام و یک دستورالعمل منطقی کلی در مورد مسیرها، اهداف و فرصت های بالقوه تجارت الگوریتمی می تواند منجر شود. اکنون زمان آن است که قدم برداریم و آماده استفاده، برنامه بازرگانی مبادله شده و شخصی باشیم.

در اینجا من در حال حاضر GDAX Pocket UI:

GDAX Pocket UI

UDA Pocket GDAX یک پروژه منبع باز شما است می تواند در GitHub پیدا کند: https://github.com/rinchik/gdax-pocket-ui

اولین تکرار این پروژه محدود به حساب ها و معاملات Ethereum است، اما می تواند به راحتی برای استفاده در بیت کوین و سایر حساب های موجود در Cryptocurrency گسترش یابد در Coinbase و GDAX.

UI

در گوشه بالا سمت چپ یک قیمت قیمت گذاری شده است که نشان دهنده زمان واقعی تغییر قیمت Ethereum است:

آخرین قیمت اتریم

مجموع مانده حساب در گوشه بالا سمت راست :

مجموع حساب متعادل

سرصفحه حاوی نمودار ترسیم بصری برای نظارت بر نوسان قیمت در زمان واقعی (هنوز WIP):

قیمت تیکر گراف

پس از هدر شما می توانید کاشی با اطلاعات حساب و توازن :

اطلاعات حساب

با دکمه های عمل می توانید پ توری فروش / خرید سفارشات محدود. حد پیش فرض 1 روز است:

دکمه های عمل

بخش های فعال بخش به شما نشان می دهد تمام سفارش های فعال قرار داده شده برای حساب Ethereum خود را با توانایی لغو آن. سفارشات فروش در قرمز نمایش داده می شود و سبز خریداری می شود:

بخش سفارشات فعال

این پروژه ها به عنوان یک رابط کاربری کوچک برای API GDAX آغاز شد که به من اجازه می داد معاملات من را انجام دهد و نظم های من را نظارت کند و از آن زمان به یک نرم افزار مناسب با UI دلخواه

GDAX یک پلت فرم عالی است که یک API تجاری گسترده را فراهم می کند، اما یک نقص وجود دارد: خود GDAX تنها به استفاده از دسکتاپ محدود می شود. [فقط کاربران ثبت نام شده می توانند لینک ها را ببینند.]

Algorithmic Trading

وقتی که شما علاقه مند به تجارت الگوریتم هستید، باید تمرکز کنید و " سرمایه گذاری "در همه زمان ها. هدف این است که شناسایی و استخراج تمام الگوهایی را که می توانید پیدا کنید، این هدف مهم ترین بخش تعریف استراتژی های تجاری خود را شما می توانید در آینده خودکار کنید.

همیشه قادر باشید برای نظارت و بلافاصله واکنش نشان می دهند زمانی که شما یک فرصت تجاری را مشاهده می کنید دشوار است زمانی که دسترسی به لپ تاپ شخصی خود را در طول روز محدود کنید (به عنوان مثال کار تمام وقت) که منجر به گرفتن حساب آنلاین GDAX توسط نوشتن یک برنامه ساده تلفن همراه که من می توانم به طور ایمن در تلفن من (بیش از VPN شخصی من) دسترسی دارم وقتی که من دور از خانه برای نظارت، کنترل معاملات و سفارشات هر زمان که من می خواهم و یا نیاز است.

GDAX Pocket UI

هنگام ایجاد این برنامه، هدف اصلی من امنیت و به عنوان محدود بودن مواجهه با جهان خارج بود. اگر نگاهی به بسته package.json بیاندازید، خواهید دید که میزان وابستگی های شخص ثالث بسیار محدود است، وقتی که طرف سرور بسیار کوچک است و فقط به عنوان یک پروکسی بین رابط کاربر و API GDAX عمل می کند، UI دارای وزن مخصوص توسعه است و از ابتدا با VanillaJS ساخته شده است (شما می توانید در مورد یکی از مقالات قبلی خود در مورد وانیلی مدرن در جهان جاوا اسکریپت بیشتر بخوانید) بدون وابستگی شخص ثالث صریح:

وابستگی UI Pocket UDA

همه HTML عناصر در این برنامه دوباره تعریف شده و با API های جدید مورد نیاز گسترش می یابند و با آنچه شما می توانید با آن تماس بگیرید قابلیت سفارشی مجازی DOM .

تنها وابستگی UI که برای ارتقاء در SVG سفارشی استفاده می شود نمودار تیکر و ارزش ذکر شده است https://socket.io/

هنگام کار بر روی UDP جیبی Pocket، حتی اگر این برنامه کوچک با VanillaJS نوشته شده است (حتی تماسهای AJAX)، این واقعا آن را دوست ندارد ، آن را مانند کار با زبان بالغ در یک ساختمان احساس می کند طرح ریخته شده:

GDAX Pocket UI Development

یادداشتهای امنیتی

بسیار مهم است که توجه کنیم که نباید هیچگونه نگرانی امنیتی بالقوه را از دست داد. من به شدت توصیه می کنم قبل از اجرای این برنامه برای بازنگری کد منبع پایه با دقت و اگر شما هر گونه اشکالات و یا حفره امنیتی بالقوه را پیدا کنید، مسائل، نگرانی آنها را بلافاصله گزارش. من از سهم شما در این پروژه کوچک تشکر می کنم.

قبل از اجرای این برنامه در حالت تولید، آن را با Gboxbox sandbox تست کنید: https://docs.gdax.com/#sandbox . [19659038] من نمی توانم به اندازه کافی استرس داشته باشم نباید این برنامه را در سرورها یا سرویس های قابل دسترسی عمومی میزبانی کند، آن را به صورت محلی میزبانی کند و از آن طریق تونل VPN امن دسترسی پیدا کند (شما می توانید دستورالعمل های دقیق در مورد نحوه راه اندازی VPN شخصی خود را پیدا کنید سرور در مقاله قبلی من) به عنوان آن را به طور مستقیم با امور مالی شخصی شما مرتبط است.

امیدوارم این برنامه وب موبایل در سفر شما به کمال از مهارت های بازرگانی شخصی شما مفید باشد.