چرا من عاشق بودن مصاحبه کننده – یادداشت مهندس

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

هر چه!

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

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

قبل از مرگ

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

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

یکی از روش های خود را برای آرام کردن، پیش از آن است که بمیرید.

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

شما باید تصور کنید که زندگی را از طریق بدترین حالت انجام دهید.

شما باید از تمام مراحل که بعد از همه چیز به گناه می پیوندید فکر کنید.

به دقت درباره هر جزئیات ممکن فکر کنید. چه کاری انجام می دهید؟

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

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

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

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

توالی عدد فیبوناچی با جاوا اسکریپت – یادداشت مهندس

Recursion

رکوراسیون در درک من یک پیاده سازی بسیار واضح از تقسیم و هماهنگی است.

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

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

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

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

1. فیبر نوری (4) به فیبرتی (3) + فیبوت (2)

2 حل می شود. فیبر نوری (3) فیبر نوری (2) + فیبوت (1)

3 را حل میکند. فیبوت (2) حلقه به 1

4. فیبوت (1) به 1 برمی گردد

5. (1) + fib (0)) … (فیبوناچی (0) حل می شود به 0

fib (4) = فیب (3) + fib (2) = (فیب (2) + fib (1) 19659013] ما در اینجا 1 و 2 نقطه علاقه مند هستیم. همانطور که می توانید دوبار با همان پارامتر خود بایستید. این می تواند و باید اجتناب شود.

پیچیدگی زمان برای این پیاده سازی O (2 ^ n) بسیار بالا است

چگونه می توانیم آن را بهینه سازی کنیم؟

Memoization

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

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

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

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

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

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

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 شما در حافظه، برای به روز رسانی.