امنیت

برای یادگیری طراحی و توسعه وب از کجا شروع کنم؟

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

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

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

تفاوت طراحی وب با توسعه وب

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

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

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

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

بخش اول – طراحی وب

گام اول – فراگیری HTML/CSS با کتاب Build Your Own Website The Right Way

با مطالعه این کتاب شما به خوبی با اصول HTML آشنا خواهید شد و در ادامه مباحث CSS به روند آموزشی با مثال های عملی اضاف خواهد شد. این کتاب کاملا مناسب افراد مبتدی است و مسائل رو با بیانی شیوا و روان برای مخاطب خودش بیان می کنه. در خاتمه کتاب شما تا سطح متوسط بالا خواهید اومد و توانمندی انجام کارهای خوبی رو خواهید داشت.

کتاب Build Your Own Website The Right Way
کتاب Build Your Own Website The Right Way

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

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

تولید کلمه عبور تصادفی در PHP

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

<?php

function make_password($num_chars) {
if ((is_numeric($num_chars)) &&
($num_chars > 0) &&
(! is_null($num_chars))) {

$password = ;
$accepted_chars = ‘abcdefghijklmnopqrstuvwxyz1234567890’;

// تغذیه کردن مولد پسورد که در نسخه های قدیمی پی اچ پی مرسوم هست
srand(((int)((double)microtime()*1000003)) );

for ($i=0; $i<=$num_chars; $i++) {
$random_number = rand(0, (strlen($accepted_chars) –1));
$password .= $accepted_chars[$random_number] ;
}

return $password;
}
}
?>

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

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