چگونه امنیت پوشه‌های مهم ویندوز را تامین کنیم؟

تا حالا به این فکر کرده‌اید که چقدر اطلاعات حساس و مهم روی کامپیوتر و لپ تاپتان ذخیره شده؟ اغلب ما در بیشتر مواقع اصلا حواسمان نیست که داریم هارد کامپیوترها را تبدیل می‌کنیم به یک صندوقچه اسرار نه چندان قابل اطمینان.

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

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

روش اول: گذاشتن رمز عبور روی فولدرهای حساس


متاسفانه ویندوز ۱۰ به طور پیش فرض به شما اجازه نمی‌دهد که روی فولدرهای حساس خود رمز عبور بگذارید. اما جالب است بدانید که با نوشتن یک کد متنی ساده می‌توانید به این ویژگی دست پیدا کنید و روی فولدرهای خود رمز عبور بگذارید.

برای شروع به سراغ فولدری بروید که می‌خواهید قفلش کنید. وارد فولدر مورد نظر که شدید یک فضای خالی برای راست کلیک کردن پیدا کنید و از طریق گزینه New به سراغ Text Document بروید.

محافظت از فولدرها

روی فایل تکست ایجاد شده یک نام مناسب بگذارید و وارد آن شوید. حالا تمام داده‌هایی که در پایین مشاهده می‌کنید را بردارید و در فایل تکستی که ایجاد کردید کپی کنید.

cls
@ECHO OFF
title Folder Locker
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Locker goto MDLOCKER
:CONFIRM
echo Are you sure u want to Lock the folder(Y/N)
set/p "cho=>"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo Invalid choice.
goto CONFIRM
:LOCK
ren Locker "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
echo Enter password to Unlock folder
set/p "pass=>"
if NOT %pass%==your_password goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Locker
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDLOCKER
md Locker
echo Locker created successfully
goto End
:End

سپس به جای عبارت your_password که در لاین  if NOT “%pass%==your_password” goto FAIL می‌توانید پیدایش کنید، رمز عبورتان را قرار دهید.

محافظت از فولدرها

با پیمودن این مسیر دیگر کارتان با آن فایل متنی تمام است. فقط آن‌ها را با فرمت bat. ذخیره کنید تا همه چیز برای رمز گذاری فولدر فراهم شود.

عملیات تعیین فرمت که به پایان رسید، روی فایل BAT ایجاد شده دابل کلیک کنید تا فولدر ایمن‌تری که دنبالش بودید ایجاد شود. این فولدر دقیقا هم نام فایل BAT خواهد بود و می‌توانید هر فایلی که دوست دارید امنیتش حفظ شود را در آن ذخیره کنید.

محافظت از فولدرها

پس به همین منظور به سراغ فایل‌های مهم خود بروید و همه آن‌ها را به فولدر ایمنی که ایجاد کردید انتقال دهید. پروسه انتقال که پایان یافت به سراغ فایل BAT بروید و دو بار رویش کلیک کنید.

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

محافظت از فولدرها

به محض انجام این کار، در عرض یک چشم برهم زدن فولدری که تا چند لحظه پیش روی پنجره حاضر و آماده بود ناپدید می‌شود. تنها راه دسترسی دوباره به آن نیز این است که روی فایل BAT دابل کلیک کنید و رمز عبور تعیین شده را ارائه دهید.

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

روش دوم:‌ زیپ کردن پوشه‌ها


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

زمانی که پروسه دانلود و نصب ۷Zip به پایان رسید، وارد نرم‌افزار شوید و یک راست به سراغ گزینه ۷-Zip File Manager بروید. سپس از طریق این گزینه، فایل یا فولدری که می‌خواهید از آن محافظت کنید را پیدا و رویش کلیک کنید. در ادامه به سراغ گزینه Add بروید و در بخش Encryption رمز عبور مناسبی برای فولدر خود تعیین کنید.

محافظت از فولدرها

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

روش سوم: مخفی کردن فایل و فولدرها


در کنار دو روش قبلی، بد نیست به یک روش ساده‌ دیگر هم اشاره کنم که همه ما کم و بیش با آن آشنا هستیم. بله می‌خواهم در مورد مخفی کردن فایل و فولدر برایتان بگویم. خوشبختانه روش ساده‌ایست و مطمئنم اکثر کسانی هم که این متن را می‌خوانند آن را بلدند.

برای مخفی کردن یک فایل یا فولدر فقط کافیست رویش راست کلیک کنید و به سراغ گزینه Properties بروید. به محض باز شدن پنجره Properties به سراغ بخش Attributes بروید و از آنجا گزینه Hidden را فعال کنید. حال اگر به ترتیب روی کلید‌های Apply و OK کلیک کنید، آیکون فولدر یا فایل مورد نظر از روی صفحه حذف و به حالت مخفی برده می‌شود.

محافظت از فولدرها

حال برای اینکه فولدر یا آن فایل مخفی شده را برگردانید، باید به سراغ تب View بروید و سپس مسیر Options > Change folder and search options را طی کنید.

محافظت از فولدرها

با این کار پنجره File Options برایتان باز خواهد شد. روی تب View این پنجره کلیک کنید و در میان گزینه‌های زیر به دنبال گزینه Hidden files and folders بگردید. حالا اگر تنظیمات این گزینه را روی Show hidden files, folders, and drives بگذارید و روی کلید OK کلیک کنید، تمام فایل‌ها و فولدرهای مخفی شده برایتان نمایش داده می‌شوند.

نوشته چگونه امنیت پوشه‌های مهم ویندوز را تامین کنیم؟ اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی

آموزش استفاده از Composer در PHP

مقدمه

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

مدیریت وابستگی

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

بروزرسانی پکیج ها

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

وابستگی های تو در تو

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

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

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

ابزار مدیریت وابستگی

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

برای زبان های مختلف ابزار های مختلفی طراحی شده است، برای مثال Maven و Gradle برای جاوا، pip برای Python، SBT برای اسکالا و Dep برای Go را می توان نام برد. برای زبان PHP در گذشته از ابزار Pear استفاده می شد اما سالهاست که Composer نه به عنوان ابزار رسمی اما به عنوان محبوب ترین ابزار مدیریت وابستگی در پروژه های PHP استفاده می شود.

قرارداد نامگذاری نسخه

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

MAJOR.MINOR.PATCH

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

بخش MAJOR در نسخه

بخش اول در نام نسخه Major نام دارد که نسخه اصلی پکیج به حساب می آید و تغییر آن به معنی تغییرات بنیادی یا مهم در پکیج است و لزوما با نسخه قبلی سازگار نمی باشد. در صورتی که ما توسعه دهنده پکیج هستیم و در نسخه جدید تغییراتی در API پکیج ایجاد کرده ایم که کاربران نسخه قبلی بدون تغییر نمی توانند از این نسخه استفاده کنند ما این بخش از نسخه را یک واحد افزایش می دهیم. برای مثال اگر نسخه قبلی پکیج ما v2.6.1 بوده نسخه جدید را باید v3.0.0 نامگذاری کنیم. در صورتی که ما کاربر یک پکیج هستیم باید به هنگام بروزرسانی پکیج توجه کنیم که با بروزرسانی به نسخه Major جدید ممکن است به تغییراتی در پروژه برای سازگاری با نسخه جدید نیازمند باشیم و حتی ممکن است از بروزرسانی منصرف شویم.

بخش MINOR در نسخه

بخش دوم در نام نسخه Minor نام دارد که نسخه فرعی پکیج به حساب می آید و تغییر آن به معنی معرفی شدن فیچر جدید یا بهبود قابل توجه با حفظ کامل سازگاری با نسخه قبلی است. برای مثال اگر نسخه پکیج v2.6.1 است چنین تغییری می تواند به نسخه v2.7.0 منجر شود. با توجه توضیحات ذکر شده می توان با خاطری نسبتا آسوده پکیج ها را به نسخه های فرعی جدید بروزرسانی کنیم.

بخش PATCH در نسخه

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

ابزار Composer

همانطور که اشاره کردیم Composer محبوب ترین ابزار مدیریت وابستگی برای پروژه های به زبان PHP می باشد که فریم ورک های معروف PHP از جمله Laravel، Symfony و Zend Framework همگی از این ابزار استفاده می کنند. این ابزار یکی از قویترین ابزار های مدیریت وابستگی می باشد که امکانات بسیاری را در اختیار توسعه دهنده ها قرار می دهد و ما سعی کردیم در این مقاله تعدادی از آنها را معرفی کنیم.

کمپوزر بطور پیشفرض از مخزن packagist.org برای دانلود پکیج ها استفاده می کند و می توانید پکیج های قابل استفاده را در این سایت ببینید.

نصب Composer

کومپوزر را به عنوان یک ابزار Command Line می توانید از سایت getcomposer.org دانلود و نصب کنید. پس از نصب می توانید صحت نصب را با اجرای دستور زیر در خط فرمان (ترمینال) بررسی کنید.

composer --version

و برای افزودن پکیج های مورد نیاز به پروژه می توانید دستوری مشابه دستور زیر را در دایکتوری پروژه اجرا کنید.

composer require miladrahimi/phpconfig

در صورتی که مشکلی رخ ندهد، پس اجرای دستور بالا Composer پکیج مورد نظر را دانلود در دایرکتوری your-project/vendor قرار می دهد و همچنین فایل composer.json و composer.lock را هم در دایرکتوری پروژه ایجاد می کند. کاربرد این فایل را در ادامه توضیح می دهیم.

فایل composer.json

فایل composer.json پس از اجرای دستور init یا تعریف اولین وابستگی برای پروژه در دایرکتوری ریشه (root) پروژه ایجاد می شود. این فایل را که می توان به طور دستی و با یک Text Editor هم ساخت شامل لیست وابستگی ها (پکیج ها مورد نیاز پروژه)، مخزن ها، Auto-loader ها و همه اطلاعاتی است که Composer نیاز دارد تا درباره پروژه شما بداند می باشد.

در این فایل نسخه پکیج ها را می توان بصورت انعطاف پذیر همانند v3.* یا v3.6.* نوشت تا بروزرسانی پکیج ها و همچنین جلوگیری از نصب نسخه غیر قابل سازگار ممکن باشد.

فایل composer.lock

فایل composer.lock که در کنار فایل composer.json قرار می گیرد شامل اطلاعات دقیق تر (نسخه دقیق پکیج ها) می باشد. این فایل به هنگام اجرای دستور install مورد استفاده قرار می گیرد تا از بروزرسانی ناخواسته وابستگی ها در محیط های حساس جلوگیری شود. پیشنهاد می شود این فایل به همراه پروژه به سرور منتقل شود تا با نصب وابستگی ها در سرور مطمئن باشیم همان نسخه استفاده شده در محیط تست و یا توسعه بر بروی سرور نصب می شود.

دایرکتوری vendor

این دایرکتوری شامل تمام پکیج های دانلود شده توسط Composer می باشد که مورد نیاز پروژه است. علاوه بر پکیج های نصب شده، اطلاعات مربوط به نحوه بارگذاری آنها و همچنین فایل autoload.php در این دایرکتوری نگهداری می شود.

با توجه به اینکه با استفاده از اطلاعات موجود در فایل های composer.json و composer.lock و نرم افزار Composer هر زمان و هر کجا می توان مجددا تمام پکیج های مورد نیاز پروژه را نصب کرد به هنگام به اشتراک گذاری، آپلود به سرور یا مخزن Git و Deploy این دایرکتوری را ignore کرد.

تعریف وابستگی ها

در صورتی که در پروژه خود به یک پکیج نیاز دارید ابتدا باید آنرا در مخزن packagist.org پیدا کنید. در صفحه مربوط به پکیج در سایت Packagist می توانید روند افزودن آن به پروژه مشاهده کنید. برای مثال برای افزودن پکیج PhpRouter به پروژه می توانید دستور زیر را در دایرکتوری پروژه اجرا کنید.

composer require miladrahimi/phprouter

با افزودن اولین وابستگی به پروژه، Composer دو فایل composer.lock و composer.json و همچنین دایرکتوری vendor را به پروژه شما اضافه می کند و در صورت وجود این فایل ها و دایرکتوری بروزرسانی می شود.

پس از افزودن وابستگی به پروژه، Composer آنرا دانلود کرده و در دایرکتوری vendor قرار می دهد و همچنین وابستگی مورد نظر را به بخش require در فایل composer.json اضافه می کند و نهایتا composer.lock را هم بروزرسانی می کند.

در صورتی که پکیج مورد نظر تنها کاربرد تستی دارد و در سرور اصلی نیازی به نصب آن نیست می توانید با دستوری مشابه دستور زیر آنرا به پروژه اضافه کنید.

composer require phpunit/phpunit --dev

دستور بالا پکیج PhpUnit را به بخش require-dev در composer.json اضافه خواهد کرد.

چنانچه نسخه خاصی از پکیج مد نظرتان هست می توانید همانند دستور زیر آنرا به پروژه به اضافه کنید:

composer require miladrahimi/phprouter:"3.0"

با اجرای دستور بالا نسخه v3.0.* از پکیج را نصب می شود. به مثال دیگری که در ادامه آورده ایم هم توجه کنید.

composer require miladrahimi/phprouter:"3.*"

با اجرای این دستور نسخه v3.* از پکیج نصب خواهد شد. Composer جدیدترین نسخه از پکیج که بخش Major آن ۳ می باشد را نصب خواهد کرد.

برای مشاهده دیگر فرمت های نوشتن نسخه که توسط Composer معرفی شده است می تواند به مقاله رسمی سایت Composer با نام Versions and constraints مراجعه کنید.

بارگذاری پکیج ها

همانطور که قبلا گفتیم Composer پکیج های مورد نیاز پروژه (و دیگر پکیج ها) را پس از دانلود در دایرکتوری vendor قرار می دهد. Composer همچنین فایلی به نام autoload.php در این دایرکتوری ایجاد میکند. این فایل حاوی Auto-loader برای تمام پکیج های نصب شده توسط Composer است و با include کردن آن در پروژه می توان از پکیج های نصب شده استفاده کرد. مثال زیر نحوه استفاده از پکیج PhpRouter را نشان می دهد:

include "vendor/autoload.php";
use MiladRahimiPhpRouterRouter;
$router = new Router();
$router->get('/', function () {
    return 'This is home page!';
});
$router->dispatch();

بروزرسانی وابستگی ها

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

composer update miladrahimi/phprouter

پس از اجرای دستور بالا جدیدترین نسخه سازگار از پکیج مورد نظر توسط Composer دانلود و جایگزین نسخه قبلی آن در دایرکتوری vendor می شود. همچنین فایل composer.lock هم بروزرسانی می شود اما هیچ تغییر در فایل composer.json نخواهیم داشت.

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

composer update

این دستور تمام وابستگی ها، دایرکتوری vendor و فایل composer.lock را بروزرسانی می کند. این دستور را با دستور زیر که خود نرم افزار Composer را بروزرسانی می کند اشتباه نگیرید.

composer self-update

نصب وابستگی ها

همانطور که قبلا توضیح دادیم بهتر است دایرکتوری vendor را به هنگام آپلود پروژه در سرور یا در مخزن هایی مانند گیتهاب ignore کرد. همچنین در صورتی که بطور کلاسیک برای Deploy پروژه روی سرور آنرا آپلود می کنید در این صورت به هنگام دریافت پروژه از مخزن دایرکتوری vendor را نداریم اما می توان با دستور زیر مجددا وابستگی ها را نصب کنیم.

composer install

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

در محیط هایی همانند سرور اصلی با استفاده از پارامتر —no-dev می توانید از نصب پکیج های مورد نیاز محیط های تستی جلو گیری کنید.

composer install --no-dev

افزودن autoload

یکی از قابلیت های مفیدی که Composer ارائه می دهد که البته ممکن است فراتر از وظایف یک ابزار مدیریت وابستگی باشد، امکان تعریف autoload برای پروژه است. در بخش های قبل متوجه شدیم که برای بارگذاری پکیج های دانلود شده توسط Composer باید فایل vendor/autoload.php در پروژه خود include کنید. از طرفی پروژه شما هم به یک Auto-loader برای بارگذاری کلاس های پروژه نیاز دارد. با قابلیت مورد نظر نیاز نیست که شما به طور جداگانه یک. Auto-loder طراحی کنید تنها کافیت تا اطلاعات بارگذاری پروژه را به composer.json اضافه کنید تا همان autoload موجود در دایرکتوری vendor کلاس های پروژه شما را هم بارگذاری کند.

"autoload": {
    "psr-4": {"App": "app/"}
}

مخزن ها

سرور Packagist مخزن رسمی و عمومی Composer است و Composer برای نصب پکیج ها به این مخزن رجوع می کند. با وجود مخزن Packagist برای پکیج های خصوصی و یا پکیج هایی که در این مخزن رجیستر نشده اند ما به مخزن های ثانویه نیازمندیم که خوشبختانه Composer به راحتی به ما اجازه می دهد تا این مخزن ها را برای پروژه تعریف کنیم.

در صورتی که مخزن مورد یک مخزن خصوصی در یک سرور Git همانند GitHub یا GitLab است می توانید با آنرا همانند کد زیر به فایل composer.json اضافه کنید.

"repositories": [
    {
        "type": "git",
        "url": "https://github.com/private-company/foo"
    }
],
"require": {
    "private-company/foo": "1.*"
}

در صورتی که پکیج مورد نظر شما فقط در قالب تعدادی فایل در دسترس است می توانید به شکل زیر آنرا در composer.json اضافه کنید.

"repositories": [
    {
        "type": "path",
        "url": "../../packages/my-package"
    }
],
"require": {
    "my/package": "*"
}

برای اطلاعات بیشتر در زمینه مخزن ها می توانید بخش Repositories از مستندات رسمی Composer را مطالعه کنید.

گفتار پایانی

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

نسخه PDF مقاله آموزش استفاده از Composer در PHP

نوشته آموزش استفاده از Composer در PHP اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

Full Stack چیست و به چه کسی برنامه نویس فول استک میگویند؟

در مقالات قبلی درباره برنامه نویسی، طراحی وب، برنامه نویسی وب و مفاهیم مختلف صحبت کردیم و به سوالات بسیاری پاسخ دادیم. در این مقاله و فایل ویدئویی میخواهیم درباره‌ی فول استک یا Full Stack صحبت کنیم و یاد بگیریم که Full Stack چیست . در این مقاله با من همراه باشید.

Full Stack چیست

اگر به دنبال یک پاسخ خیلی ساده ولی کاربردی برای سوال Full Stack چیست هستید، فیلم زیر را مشاهده کنید

https://www.aparat.com/v/yqi3X

مقدمه

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

Front End چیست و به چه کسی برنامه نویس فرانت اند میگویند؟

Back End چیست و به چه کسی برنامه نویس بک اند میگویند؟

بعد از مطالعه و مشاهده‌ی مطالب بالا، حالا میتوانید ادامه‌ی این مطلب را مطالعه بفرمایید.

همه چیز درباره برنامه نویس فول استک یا Full Stack Developer

همانطور که گفتیم، در دنیای طراحی سایت،‌ گروهی از افراد هستند که چیزهایی که کاربر میبیند را طراحی و کدنویسی میکنند و گروهی دیگر هستند که روی پشت صحنه (Back End) متمرکز میشوند و کدهای سمت سرور را مینویسند.

اما یک گروه دیگر نیز از برنامه نویسان سمت وب وجود دارد که مارا به پاسخ سوال Full Stack چیست می‌رساند:

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

عبارت بالا شاید بتواند یک تعریف خیلی ساده برای برنامه نویس Full Stack باشد. برنامه نویس فول استک، همانطور که از واژه‌ی Full پیداست، همه مهارت‌های لازم برای انجام یک پروژه را دارد. به این معنا که:

یک برنامه نویس فول استک، هم میتواند ظاهرهای بسیار خوبی را برای سرویس های آنلاین طراحی کند و هم میتواند برنامه نویس سمت سرور خوبی باشد.

یک مثال برای جواب دادن به سوال Full Stack چیست

همانطور که در مقالات دیگر مثال‌های متعددی زدیم، وقتی میخوایم یک سرویس آنلاین را طراحی و برنامه نویسی کنیم، حداقل به ۲ فرد نیاز داریم:

  • یک شخص که بتواند ظاهر سایت را با تکنولوژی هایی مثل HTML, CSS, Javascript و… طراحی کند.
  • و شخص دومی که بتواند کدهای بک اند و سمت سرور را با زبانی مثل PHP بنویسد و به پایگاه داده (دیتابیس) متصل شود و اطلاعات را از دیتابیس بخواند و اطلاعات جدید را وارد آن کند.

همانطور که گفتیم، هرکدام از این افراد، یک تخصص دارند و برای ساخت یک سایت، به ۲ فرد نیاز داریم.

اما در دنیای طراحی و برنامه نویسی وب اشخاصی هستند که به دلیل تجربه بالا در هرکدام از قسمت‌های Front End و Back End، میتوانند هر دو بخش ظاهر و سرور یک وبسایت را طراحی و برنامه نویسی کنند. برنامه نویسان Full Stack کسانی هستند که به تنهایی برای ساخت یک سرویس آنلاین خوب، کافی هستند و میتوانند یک نفره یک پروژه‌ی تقریبا بزرگ را مدیریت کنند.

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

اما در پاسخ به سوال Full Stack چیست باید حواسمان به این نکته باشد که اگر مثلا ما میتوانیم هم با HTML-CSS کد بزنیم و هم PHP میدانیم، به این معنا نیست که از الان میتوانیم به خودمان یک Full Stack بگوییم.

یک برنامه نویس Full Stack شخصی است که مدت زیادی درگیر طراحی وب بوده است و بعد از آن نیز مدت زیادی خود را درگیر برنامه نویسی وب با یک زبان برنامه نویسی سمت سرور کرده است و به تمام پیچ و خم ها و نکات هر ۲ دنیای طراحی سایت واقف است.

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

علاوه بر این، در پاسخ به سوال Full Stack چیست ، باید حواسمان به این نکته هم باشد:

یک برنامه نویس Full Stack علاوه از تسلط بر طراحی و برنامه نویسی وب، باید بتواند یک پیدا کننده‌ی مشکل حرفه‌ای (Debuger) باشد. همچنین باید توانایی بسیار خوبی در مدیریت سرور داشته باشد و همچنین از مدیریت پروژه نیز اندکی بداند. صرفا دانستن HTML,CSS,PHP, MySQL نمیتواند شما را یک برنامه نویس Full Stack کند!

در انتهای این مقاله‌ درباره مهارت های یک Full Stack Developer بیشتر صحبت خواهیم کرد.

آیا Full Stack Developer ها همه کارِ و هیچ کارِ هستند؟

تا الان به یک پاسخ خوبی درباره‌ی سوال Full Stack چیست رسیدیم. اما الان ممکن است این سوال برایتان پیش بیاید:

آیا میتوان هم طراحی وب را انجام داد و هم به برنامه نویسی آن مسلط شد و در کنار آن کلی مهارت دیگر مثل کار و مدیریت سرور، مدیریت پروژه و… را نیز دارا بود؟

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

در خصوص پاسخ به این سوال، باید چند نکته را بررسی کنیم:

Full Stack کارها با تجربه هستند

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

بسیار از طراحان و برنامه نویسان وب که حرفه‌ای هستند و عمق داستان را میدانند، از اینکه خودشان را یک برنامه نویس Full Stack بخوانند میترسند و از عنوان کردن اینکه «من یک برنامه نویس Full Stack هستم» ترس دارند. زیرا تبدیل شدن به یک برنامه نویس Full Stack، کاری زمان بر است و حاصل تجربیات چندین ساله‌ی شما خواهد بود.

پس به راحتی و صرفا به دلیل دانستن HTML, CSS, Javascript, PHP, MySQL و… نمیتوانید به خودتان یک برنامه نویس فول استک بگویید. ماجرا خیلی پیچیده تر از این حرف‌هاست

اما نهایتا …

در پاسخ به سوال Full Stack چیست ، باید این را بپذیریم که نهایتا هر فرد، بالاخره در یکی از زمینه‌های طراحی وب یا برنامه نویسی وب، قوی تر از آن یکی است.

من دوستان برنامه نویس Full Stack زیادی دارم و با برنامه نویسان Full Stack بسیار زیادی نیز همکاری داشته ام. اما آن‌ها نهایتا در یکی از زمینه‌ها قوی تر بوده‌اند. به این معنا که:

  • یا طراحان وب بهتری بودند، یعنی قسمت هنری مغزشان فعال‌تر بود و میتوانستند رابط های کاربری (UI) بسیار حرفه‌ای و چشم نوازی طراحی کنند.
  • یا برنامه نویسان سمت سرور فوق العاده‌ای بودند و بخش منطقی مغزشان فعال تر بوده است و میتوانستند منطق‌ها و الگوریتم های بسیار پیچیده و کدهایی بسیار تمیز بنویسند.

یعنی هرچقدر فرد هم یک Full Stack Developer باشد،‌ باز هم در یکی از زمینه‌های طراحی وب یا برنامه نویسی وب قوی تر است و یکی از نیم کره‌های مغز او بهتر کار میکند. برای مثال ممکن است یک فرد یک برنامه نویس Full Stack باشد و هم طراحی وب فوق العاده ای انجام دهد و هم برنامه نویس سمت سرور بسیار خوبی باشد، اما نهایتا خود آن فرد هم میداند که در یکی از این زمینه‌ها حرفه‌ای تر و بهتر است.

مهارت‌های یک برنامه نویس فول استک (Full Stack)

در پاسخ به سوال Full Stack چیست‌ ، خیلی خوب است که بدانیم یک برنامه نویس فول استک، چه مهارت‌هایی باید داشته باشد. در ادامه‌ یک لیست بسیار ساده را میبینیم که یک برنامه نویس Full Stack باید به آن‌ها تسلط کامل داشته باشد و نیز تجربه‌ی بسیار خوبی در کار با هرکدام از آن‌ها داشته باشد تا بتواند یک Full Stack Developer واقعی باشد.

  • طراحی وب
  • طراحی رابط کاربری
  • برنامه نویسی وب
  • کار با پایگاه داده
  • هاست و سرور
  • توانایی کار با API ها
  • آشنایی با Version Controll System ها
  • توانایی مدیریت پروژه‌های نرم افزاری

در این مقاله و فایل ویدئویی سعی کردیم به سوال Full Stack چیست پاسخ دهیم. نظر شما چیست؟ طراح وب بودن بهتر است؟ یا برنامه نویس بودن؟ یا تبدیل شدن به یک Full Stack Developer؟ کدام یک آسان تر است؟

منبع: یادیفای

نوشته Full Stack چیست و به چه کسی برنامه نویس فول استک میگویند؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

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

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

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

بدین ترتیب از این پس معلولین مبتلا به بیماری‌های عضلانی نظیر ALS می‌توانند کنترل ربات‌هایی به نام OriHime-D  را در دست بگیرند و به کار مشغول شوند. حال اگر طرح آزمایش ربات‌های یاد شده با موفقیت عملی گردد، به احتمال قوی در المپیک سال ۲۰۲۰ ژاپن شاهد فعالیت این ربات‌ها و کنترل کنندگانشان در سرتاسر شهر توکیو خواهیم بود.

Masatane Muto سرپرست این پروژه که خود به بیماری وحشتناک ALS مبتلاست، باور دارد که تمامی انسان‌ها باید آزادی عمل برای فعالیت شغلی‌شان را داشته باشند. وی در این مورد می‌گوید:

«من می‌خواهم در سال ۲۰۲۰ به مردم سراسر جهان پیغام دهم؛ اگر معلول هم باشیم باز هم می‌توانیم رسوم مهمان‌نوازی را بجای آوریم.»

OriHime-D در واقع یک ربات ۱.۲ متری و ۲۰ کیلویی است که یک دوربین به همراه میکروفونی قدرتمند در قسمت بالایی سرش تعبیه شده است. این ربات با کمک این دو وسیله می‌تواند صدا و تصویر را به صورت زنده مخابره کند. از سوی دیگر معلولین می‌توانند با دریافت این محتوا، به صورت همزمان تصمیم گرفته و کارشان را به صورت صحیح انجام دهند. کافه یاد شده قرار است از پنجم تا شانزدهم آذرماه در محله‌ی آکاساکای توکیو شروع بکار کند.

 

تماشا کنید: با ربات خدماتی جدید علی بابا آشنا شوید

نوشته کافه‌ای در توکیو با کمک ربات‌ها معلولین را استخدام می‌کند اولین بار در دیجیاتو پدیدار شد.

گردآوری توسط ایده طلایی