ساخت یه CRUD با Laravel و Vue

Create | Read | Update | Delete
جز اون چیزایی که همه برنامه نویسا مجبورن باهاش سر و کله بزنن. اکثر قسمت های پنل ادمین یه وبسایت همیناس.
من این جا میخام نشونتون بدم خودم چطوری یه
CRUD
SPA
درست میکنم


خب اول از همه چیز لاراول رو نصب میکنم و همچنین

 

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

اگه npm بلد نیستید یا نصب ندارید حتما نصب کنید و یاد بگیرین 🙂
خب برای اینکه آدرس دهی داشته باشیم توی این کراد باید vue-router گرامی رو نصب کنیم.

و خب من چون خیلی آدم خسته ایم و همچنین از طراحی و این داستانا کلا هیچی حالیم نیست و همه از ذائقه غیر هنریم انتقاد میکنن من میرم و یه قالب آماده تهیه میکنم برای پنل که به نظرم این یکی خیلی تمیز و ساده س.
برای شروع اول یه روت آماده میکنم برای نمایش پنل ادمین.
من برای جلوگیری از شلوغ شدن
web.php
یه فایل دیگه میسازم توی routes مثلا به اسم admin.php و روت های مربوط به پنل ادمین رو اونجا قرار میدم. شما میتونین به همون روش عادی توی web.php روت ها رو تعریف کنین اجباری در کار نیست
برای معرفی کردنش به لاراول هم فایل
app/Providers/RouteServiceProvider.php
رو باید ادیت کنم
توی تابع

این خط کد رو اضافه میکنم

این خط میاد به اول اسم همه روت ها admin. اضافه میکنه. تمام آدرس های توی admin.php با admin شروع میشن. همشون میدلویر دارن برای جلوگیری از دسترسی کاربر وارد نشده به سایت(بعدا یه کار کنین فقط ادمین بیاد ) دارن و البته تمام کنترلر های مربوط به ادمین رو توی پوشه Admin میسازم تا با بقیه قاطی پاطی نشه. ( باز هم تکرار میکنم این روش منه اجباری در کار نیست )

خب حالا یه کنترلر میسازم برای نمایش داشبورد

کد های مورد نیاز رو توی public و view حاضر میکنم اسمش رو هم میذارم
master.blade.php
تابع نمایش داشبورد رو توی کنترلر مینویسم

و فایل روت admin.php رو این شکلی مینویسم

و درنهایت سایت رو بازمیکنم و یه اکانت برای خودم میسازم و آدرس پایین رو بازمیکنم
localhost/admin
اگه تا اینجای کار یه کم گیج شدین نگران نباشین انتهای مطلب سورس کد رو گذاشتم کد همه چیز رو میگه 🙂 فقط کافیه بدونین blade چه شکلی کار میکنه.

خب من حالا میخام نوشتن اولین کامپونت Vue رو با این قسمت Card که وسط صفحه میبینین که CRUD Example نوشته و action داره شروع کنم و تبدیلش کنم به یه کامپنونت تا ازش استفاده کنم

اول فایل webpack.mix.js رو یکم ادیت میکنم تا محل خروجی فایل رو عوض کنم

و بعد کامند لاراول میکس رو اجرا میکنم تا خروجی ها رو ببینم که توی public/asset هستش و همچنین آدرس ها رو اضافه میکنم به view

برای پشتیبانی از csrf این کد رو به داخل head اضافه میکنم

و وقتشه همه چیز رو بیارم توی میکس. اول از همه فایل های boostrap و jquery رو حذف میکنم از داخل قالب چون اونا توی app.css , app.js به صورت پیش فرض موجود هستن. همچنین اسکریپت های مربوط به چارت ها رو هم پاک میکنم چون توی این برنامه بهشون احتیاجی ندارم. میمونه یه فایل metismenu که باید بگردید روی npm و پکیجش رو پیدا کنین یا با mix به فایل app.js اضافه ش کنین که خب طی یه پرس و جو از عمو گوگل این پکیج رو روی npm یافتم و نصبش کردم

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

و فایل app.scss رو به این شکل اصلاح میکنم

مطمئن بشین آدرس ها رو درست دادین چون تو لاراول ۵٫۷ ساختار پوشه resource تغییر میکنه و من این برنامه رو با ۵٫۶ نوشتم 🙂
از طرف دیگه ما باید کدهایی که سازنده قالب نوشته رو به کدهای خودمون اضافه کنیم برای این یکی من فایل webpack.mix.js رو دستکاری میکنم

و در نهایت metisMenu رو به فایل app.js اضافه میکنم

در انتها یه div به body اضافه کنین و تمام کدهای body رو توی اون بنویسین تا vue.js بتونیم استفاده کنیم البته میتونیم el رو برابر #wrapper بذاریم ولی من ترجیح میدم المنت جدید بسازم

کدهای قالب

حالا با خروجی گرفتن و تنها دو فایل app.css | app.js باید بتونین همون صفحه رو مشاهده کنین.

خب حالا از جاده خاکی بزنیم توی راه اصلی و اون کامپوننت Card رو بسازیم
من فایل جدید نمیسازم و
ExampleComponent.vue
اسمش رو تغییر میدم به
CardComponent.vue
و این کدها رو توش مینویسم

 

{{ title }}

 

 

 

 

و اون رو توی
app.js
ثبت میکنم

و درنهایت به
view
خودم جهت تست این خط رو مینویسم

خب من میخام ساخت CRUD برای مدل User رو شروع کنم
اول یه کنترلر میسازم

و روت لازم رو براش مینویسم

بعد داخل کنترلر درون توابع

این کد رو مینویسم

یادتون نره میتونین با ساخت یه trait کدتون رو تمیزتر بنویسین ولی من برای این مثال همین طوری مینویسم چون یه کلاس بیشتر نداریم
اول از همه کامپونتت صفحه اصلی داشبورد رو مینویسم اسمش رو میذارم DashboardComponent

و خب وقت نوشتن روت ها هستش . اول یه فایل به اسم routes.js درست میکنم. و این محتویات رو توش مینویسم. این ها برای vue-router هست

و app.js رو برای استفاده از vue-router به این شکل اصلاح میکنم

و توی view خودمون باید تگ مربوطه رو وسط صفحه بنویسیم

خب همه چی حاضره و اگه localhost/admin رو بازکنین میتونین محتویات DashboardComponent رو ببینین. برای ادامه کار کامپوننت صفحه جدول کاربرا رو میسازم ( crud/users/ListComponent) رو و برای اینکه بتونم لیست کاربرا رو داشته باشم تابع index UserController رو این شکلی مینویسم.

این شکلی کار میکنه که چک میکنه axios درخواست ajax داده پس کلا کاربرا رو بر میگردونه وگرنه داشبورد رو نشون میده.
به routes.js این روت رو اضافه میکنم

و ListComponent رو این شکلی مینویسم

 

# Name Email Created at Last update Actions
 

Loading…

 

{{ user.id }} {{ user.name }} {{ user.email }} {{ user.created_at }} {{ user.updated_at }}
 

No Users Exists

 

 

 

    • {{ page }}

 

 

خب ما سمت چپ قالب یه منو داریم پس دو تا لینک داشبورد و صفحه لیست کاربرا رو بهش اضافه میکنم

  • Dashboard

 

  • Users

 

خب میخوام یه کار خرکی انجام بدم تاریخ last update رو میخام به سبک چند روز پیش و فلان بنویسم به نظرم اینطوری بهتره. برای شروع اول این تابع رو توی مدل User مینویسم

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

و در نهایت در موقع نمایش به جای updated_at این رو مینویسم

 

حالا بریم دومین قدم برای CRUD میخام برای هر آیتم قابلیت حذف شدن رو اضافه کنم. اول تابع destroy توی کنترلمون رو آماده میکنم

و متدی رو به ListComponent اضافه میکنم که کاربر رو میگیره و عملیات حذف رو انجام میده.

و در نهایت توی ستون action دکمه ای رو جهت کلیک برای حذف میذارم

 

برای ساخت قسمت فرم هم اول یه request میسازم.

داخل متد authorize رو به return true تغییر میدم و rules رو به شکل زیر مینویسم

و این کلاس رو جایگزین میکنم توی ورودی های store و update کنترلرم

متد view کنترلرم رو ادیت میکنم برای اینکه بتونم به صورت json به اطلاعات دسترسی داشته باشم

و store و update رو این شکلی با هم مخلوطشون میکنم که دوباره کاری انجام ندم!

خب آخرین کامپوننتی که باید بسازم فرمی هست که اطلاعات کاربر رو میفرسته (crud/users/FormComponent) و محتویات زیر رو در اون قرار میدم.

{{ formError }}

 

{{ formMessage }}

 

 

 

 

Keep empty to prevent changing password

 

 

 

 

و روت هام رو به routes.js اضافه میکنم

حالا برای دکمه افزودن یه دکمه بالای کامپوننت لیست میسازم

و همچنین برای دکمه های مشاهده و اصلاح آیتم ها کنار هر آیتم و کنار دکمه حذف قرارشون میدم

List
Create

Edit
Show

و خب اینم از CRUD ی که با Laravel , Vue ساخته م و برای اینکه چشماتون درد نیاد و هم کدها رو هلو بپر تو گلو دستتون باشه یه نسخه از این رو روی گیت هاب آپلود میکنم.
https://github.com/amir9480/laravel-vue-crud-example

پی نوشت: اگه یکم سورس کد با لاراول حالت عادی فرق داره به خاطر اینه که من برای استفاده شخصی خودم یه پکیج نوشتم که کدها و پکیج هایی که هر بار مجبورم بعد نصب لاراول به برنامم اضافه کنم رو یک جا جمع کردم که دوباره کاری نشه وگرنه این همون لاراوله فرق چندانی نداره .
https://github.com/amir9480/laravel-kit
تو جنگ با باگ هاتون موفق باشین.

نوشته ساخت یه CRUD با Laravel و Vue اولین بار در ویرگول پدیدار شد.

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

جلوگیری از تایپ حروف غیر مجاز در ورودی ها PHP

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

 

با کمک preg_match مشخص میکنیم که ورود ما حتما باید از بین این ( a-zA-Z0-9-آابپتثجچحخدذرزژسشصضطظعغفق کگلمنوهی ) کارکتر ها باشد.
یا حق

نوشته جلوگیری از تایپ حروف غیر مجاز در ورودی ها PHP اولین بار در ویرگول پدیدار شد.

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

آموزش ساخت ربات مترجم تلگرام

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

لیست ربات ها :
ربات مترجم با استفاده از api گوگل
ربات ساخت Short Link
ربات ساخت Qr code
ربات دانلود عکس و ویدیو از اینستاگرام
ربات دانلود ویدیو از یتوب
ربات قرعه کشی
ارسال پیام برای اعضاء ربات
و چندتای دیگه …

در هنگام نوشتن این ربات های تمام سعی ام این بوده که خیلی ساده و روان کد نویسی کنم تا هر کسی سورس ربات رو داشته باشه بتونه باهاش کار کنه و تغییراتش رو اعمال کنه.

سورس ربات تلگرام (index.php) :

 

نکته:
۱- ابتدا یک ربات ایجاد کنید ( با سرچ کوچیک میتونید آموزش های تصویری زیادی پیدا کنید ) و بعد از ساخت توکن رو کپی کنید و در لاین ۲ فایل در قسمت “توکن” کپی کنید .
۲- وب سایتتون حتما باید دارای گواهینامه ssl باشد، آدرس رو در مرورگر با https شروع کنید.
۳-آدرس زیر را به همراه توکن و آدرس فایل آپلود شده در مرورگر اجرا کنید :
https://api.telegram.org/bot(Token)/setWebhook?url=https://(Address)/index.php

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

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

حال نداشتن یادگیری برنامه نویسی!

حال نداشتن

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

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

اما این جا باید به فکرت بگی : پیاده شو تا باهم بریم!

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

برای یادگیری هر زبان برنامه نویسی باید مبانی برنامه نویسی را یاد بگیرید

برای یادگیری برنامه نویسی حتما مبانی برنامه نویسی را یاد بگیرید و مکان یادگیری تون رو تغییر بدید برای اینکه بهتر یادبگیرید بشت به نور بشینید یعنی چی ؟!

  • یعنی اینکه خود شما به همراه مانیتور باید پشت به نور بشینید.برای مثال اگر شما داخل اتاقتون هستید ، پشت خود را به مهتابی کنید و شروع به یادگیری کنید اگر لامپ پشت سر شما روشن هست سریع خاموش کنید چون لامپ درست نمی تواند نور را در اتاق پخش کند ولی مهتابی توانایی این کار رو داره .

  • مهم ترین نکته این است که به هیچ عنوان در تاریکی شروع به یادگیری نکنید چون باعث خواب آلودگی شما می شه و مهتر از همه زمان یادگیری هست ، بهترین زمان یادگیری ساعت ۹ صبح تا ۱۲ صبح و ساعت ۵ عصر تا ۸ شب می باشد و بهترین زمان تمرین ساعت ۸ شب به بعد است.

  • اگر زمان آموزش های شما بیشتر از ۳۰ دقیقه است (منظور من تایم تعداد جلسات آموزشی هست) حتما هر ۳۰ دقیقه ۵ دقیقه استراحت کنید یا کدهایی که شما در این زمان یا دگرفتید رو پیاده کنید.

نکته : اگر دوست دارید دوزبان را همزمان یادبگیرید زمان یادگیری خودتون رو تقسیم کنید یعنی اگر ۴ ساعت می خواهید آموزش نگاه کنید ۲ ساعت به آموزش اول و ۲ ساعت به آموزش دوم.

باتشکر.

نوشته حال نداشتن یادگیری برنامه نویسی! اولین بار در ویرگول پدیدار شد.

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

رفتن به دوردست‌ها و برگشتن!


رفتن به دوردست‌ها

من دانشگاه رفتم و کاردانی و کارشناسی کامپیوتر خوندم، دوره کارشناسی رو یک ترم مونده انصراف دادم؛ توی اون زمان به این فکر می‌کردم که دارم با دانشگاه وقتم رو تلف می‌کنم(که نظرم البته درست بود!) و تصمیم‌های دیگه‌ای برای زندگیم داشتم و خلاصه رهاش کردم.

مشکلات خانوادگی و بیماری و کلی چیزایی دیگه مجبورم کرد که با وجود علاقه‌ای که همیشه به کامپیوتر و برنامه‌نویسی داشتم چهار گوشه‌ی گود رو ببوسم و بزارم کنار و کلن مسیر زندگی رو تغییر بدم. بهم توصیه شده بود که کار فیزیکی انجام بدم. دست روزگار و علاقم به ساز و هنر باعث شد که رفتم سمت رشته نجاری بعدش دکوراسیون داخلی و کابینت‌سازی رو دنبال کردم ۵ سال مشغول بودم. ازدواج کردم و چند سال گذشته و الان اینجا هستم.

خوشبختانه توی این سال‌ها مشکلات رفع شد، اتفاق‌های خیلی مهمی توی زندگیم افتاد که مهترینش ازدواجم و همسرم بود که بی‌نهایت کمکم کرد و حظور اون مشکلاتم رو حل کرد، شرایط زندگیم رو تغییر داد. شرایط کاری و اقتصادی، افرادی که مجبور بودم باهاشون برخورد داشته باشم، باعث شد که تجدید نظری در مورد زندگی و آیندم داشته باشم؛ دوباره به زندگیم، آیندم، اینکه چی میخاد بشه و دارم با خواسته‌هام چیکار میکنم! فکر کنم. کلنجارهای زیادی باعث شد که دوباره برگردم سمت علاقه‌ی همیشگیم که از بچگی باهام بود «کامپیوتر»

یه جایی خوندم که شما تا ۲۵ سالگی می‌تونید مشکلات زندگیتون رو به گردن دیگران بی‌اندازید! که حرف درستی هم هست، هرچی هست تا اونجاست و من ۳۰ ساله الان می‌تونم به جرعت بگم که از ۲۵ سالگی به بعد نمیشه بهانه‌ای آورد؛ هرکاری کردی خوب یا بد رو خودت کردی تمام.

با توجه به نتایجی که بعد‌ها پیش اومد به نظرم توی همون حدود ۲۵ سالگی تصمیمات درستی واسه زندگیم گرفتم و دانشگاه و کامپویتر و برنامه‌نویسی رو رها کردم تا بتونم وضعیت روحی و جسمی خودم رو درست کنم و یه زندگی سالم داشته باشم، این مهمترین کاریه که یه انسان می‌تونه برای زندگی خودش انجام بده «در سلامت روحی و جسمی زندگی کردن»


برگشتن از دوردست‌ها

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

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

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


حالا چه شغلی مناسب منه؟

اونقدر توی زندگیم تجربه کسب کرده بودم که دیگه بیگُدار به آب نزنم و با اینکه کامپیوتر خونده بودم و بهش علاقه داشتم مستقیم نرم سمتش و همه‌ی گزینه‌های مناسب خودم رو برسی کنم؛ من کلن به فنآوری علاقه دارم و کار کردن توی فیلدهایی(حوضه خودش عربیه! فارسی دلچسبی که معنی در نظر رو برسونه بلد نیستم!) که زندگی آدم‌ها رو سالم‌تر و بهتر می‌کنه رویای شخصی منه. توی این چند سال چیزهایی مثل BlokChain، انرژی‌های پاک، اینترنت چیزها، گردشگری با فن‌آوری، حمل و نقل هوشمند، کلن بازیافت منابع زمین مثل آب و زباله، غذا ،جنگل و… و خلاصه چیزهایی مربوط به سلامت کره‌ی زمین که با فنآوری قابل بهتر شدن بودن رو در حد خوندن مقاله و دیدن ویدیو دنبال می‌کردم. زیاد تعصبی نداشتم که دوباره برنامه‌نویسی رو شروع کنم؛ هرچیزی که بهم این فرصت رو میداد که با افرادی که دغدغه‌(تشویش)هایی مثل خودم رو دارن کار کنم برام عالی بود. و صد البته فراموش نکنیم کاری که درآمد مالی مناسب رو هم برام داشته باشه تا بتونم به چیزهایی که توی زندگیم بهشون علاقه دارم برسم.

برای خودم یه لیست نوشتم از شرایطی که شغل آینده من باید داشته باشه؛ چیزایی که برام خیلی مهم هستند و با توجه به خاسته‌ها و تجربیاتم نتونم ازشون بگذرم و به این رسیدم:

  • وابسته به مکان نباشد
  • به درآمد پَسیو منجر شود
  • نیاز به سرمایه‌ی اولیه کمی داشته باشد
  • در سایر کشورها هم قابل درآمدزایی باشد

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

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

«منجر شدن به درآمد پَسیو» این گزینه رو طی سال‌ها کار کردن توی بازار و کار آزاد کردن ناخودآگاه یه چورایی پشت ذهنم داشتم اما تا زمانی که کتاب «پدر پولدار، پدر بی‌پول»‌ رو مطالعه نکرده بودم درست در موردش نمی‌دونستم. به شما توصیه می‌کنم که شما هم این کتاب رو بخونید که برای زندگی اقتصادی شما خیلی مفیده، درسته که به کتاب‌های زرد می‌خوره ولی در ظاهر اینجوریه و به شما خیلی کمک می‌کنه. خلاصه درآمد پَسیو، درآمدیه که شما بدون فعالیت کردن خودتون و فروختن زمان و عمر خودتون به دست بیارید، درآمدی که از سرمایه‌گذاری‌های مالی و علمی و… شما به دست میاد، به شکلی که اصل سرما‌یه‌ی شما وجود داره و ارزشش کم نمیشه و حتا زیاد میشه و از سود اون سرمایه‌گذاری هم می‌تونید استفاده کنید و درآمد مناسبی داشته باشید. مثال اینجور درآمدی که توی کتاب هم گفته چیزهایی مثل: خریدن ملک مناسب(کرایه بگیرید و درش شغلی رو راه بندازید)، نوشتن کتاب(حق چاپ مجدد گرفتن و …) ثبت اختراع(که حق اختراع بگیرید به ازای هر تولیدی که داره) و مثال‌هایی که من خودم اضافه می‌کنم مثل: درست کردن آموزش ویدیویی، درست کردن یک وبلاگ با کیفیت(می‌تونید ازش درآمد مناسب کسب کنید) و… اینجوریه که شما مثلن یکبار یک آموزش ویدیویی رو درست می‌کنید و Nبار اون رو می‌تونید بفروشید 🙂

«نیاز نداشتن به سرمایه‌ی اولیه زیاد» این گزینه توضیح زیادی نمیخاد ولی خب این نکته رو بگم اگه کار شما اینجوری باشه شما امکان خطا کردن و شکست خوردن بیشتری رو دارید و بیشتر می‌تونید تلاش کنید تا موفق بشید؛ دست شما بازتره

«توی سایر کشورها هم درآمدزا باشه» ممکنه بپرسید که این گزینه با گزینه اول «وابسته به مکان نبودن» یکیه و اضافیه؛ فرقش اینجاست که اونجا من در مورد مکان فیزیکی صحبت میکنم؛ جایی مثل دفتر، مغازه و اداره ولی اینجا بحث سر کشورهای دیگست، جاهای دیگه با قوانین و فرهنگ و زبان و نیازهای اقتصادی دیگه و از همه مهمتر فنآوری پیشرفته و به روز دنیا که شرایطشون رو با ایران بسیار متفاوت می‌کنه. مهمه که شغلی رو انتخاب کنم که بتونم اگه رفتم خارج هم بتونم از تجربم درآمد کسب کنم؛ مثلن اگه شما یه بوتیک موفق رو طی ده سال توی تهران راه‌اندازی کنید و اعتبار و مشتری و درآمد مناسب رو کسب کنید، اگه مجبور به مهاجرت بشید نمی‌تونید اون بوتیک و اعتبار و مزایا رو با خودتون ببرید 🙂


چرا برنامه نویسی؟

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


پی‌نوشت:

من این مطلب رو کلن یه جوری دیگه‌ی شروع کردم و بعد اینجوری شد؛ امیدوارم به درد دوستان بخوره؛ اینم اولین پست وبلاگیم بعد از شاید ۷ یا ۸ سال میشه، براش کلی ذوق‌زده شدم، بیشتر یه شرح حال و خاطره نویسی بود؛ سعی کردم که موقع نوشتن یکم مرور کنم و اگه غلت املایی و نگارشی داشت رو درست کنم، همه در مورد غلت‌هایی املایی توی این سال‌ها به من تذکر دادن، اینکه مثلن رو اینجوری می‌نویسم یا تذکر رو تزکر می‌نویسم؛ کلن به حروف عربی که همصدا هستند معتقد نیستم. «ز» فقت یکی «ت» فقت یکی «ع» فقت یکی! :))

به نزرم اسلن اشکالی نداره که ایرانی‌ها اینجوری بنوسین

نوشته رفتن به دوردست‌ها و برگشتن! اولین بار در ویرگول پدیدار شد.

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

شما هم به برنامه نویسی علاقه دارین؟ این پست برای شماست

تعداد علاقه مندان به برنامه نویسی کم نیست و خوب تعجبی هم نداره!

دلایل زیادی ممکنه وجود داشته باشه که یه نفر بخواد برنامه نویس بشه:

  • درآمد بالای برنامه نویس ها
  • وجود فرصت های شغلی بسیار زیاد
  • آزادی عمل بیشتر نسبت به بقیه شغل ها
  • رفع نیاز های فردی(بعدا بیشتر توضیح میدم)
  • و …

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

بزرگ ترین مشکل تازه کار ها و جنگ ابدی برنامه نویس ها <<انتخاب زبان>>

به احتما خیلی زیاد اولین سوال برای همه اینه که چه زبانی رو انتخاب کنیم؟

جواب های متعددی برای این سوال وجود داره خیلیا میگن python خیلیای دیگه میگن باید نگاه کنی ببینی میخوای چیکار کنی و جواب های دیگه!

اما پاسخ من به این سوال اینه که برای شروع خیلی هم فرقی نمیکنه با چی شروع میکنید!

برای این که یه برنامه نویس بشین باید اصول و قواعد کلی رو یاد بگیرین قواعد ابتدایی میشه:

  • آشنایی به انواع داده
  • دستور شرطی if و else
  • دستور switch
  • حلقه for و while
  • آرایه ها

بعد از این که موارد بالا رو یاد گرفتین باید تابع و مفهموم برنامه نویسی functional رو درک کنید و در نهایت شئ گرایی یا همون OOP (Object Oriented Programming)

قواعد ابتدایی که گفتم تقریبا توی همه زبان ها به شیوه ای بسیار شبیه به هم یا حتی در بعضی زبان ها کاملا شبیه هم نوشته میشه مثلا حلقه for در جاوا c و c# دقیقا مثل هم نوشته میشه و اصطلاحا برنامه نویسا میگن syntax اش یکیه

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

یه مزیتی که c++ داره برای تازه کار ها اینه که شما رو مجبور میکنه همه کار هارو خودتون انجام بدین و نه با توابع آماده و این باعث میشه در ابتدای برنامه نویسی پیشرفت بیشتری داشته باشین

هر زبان برای چه کاریه و بعد از درک مفاهیم باید سراغ چه زبانی برم؟

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

جاوا اسکریپت (JavaScript)

یادتونه گفتم زبان خوب و بد نداریم؟ جاوا اسکریپت یه استثنا به حساب میاد! (شوخی 🙂 )

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

اگر قرار باشه یه وبسایت راه اندازی کنید به ۳ چیز نیاز دارین:

  1. برای طراحی HTML و CSS
  2. یه زبان برنامه نویسی سمت سرور(back end) مثل php, python و …
  3. زبان برنامه نویسی front end

یه توضیح کوتاه درمورد اینکه front end و back end چیه

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

و اما front end هر کدی میشه که روی سیستم شما و در مرورگرتون اجرا میشه که متاسفانه فقط باید با زبان js نوشته بشه

به خاطر اینکه برنامه نویسان وب هیچ چاره دیگه ای بجر js ندارن و مجبورن یاد بگیرنش شرکت های بزرگ کلی برنامه نویس js دارن و همین باعث شده برای صرف هزینه کم تر به ساخت برنامه های دیگه با js روی بیارن مثلا atom که یه ادیتور مناسب برای کد زنیه با js نوشته شده حتی خیلی از برنامه های موبایل مثل اینستاگرام یا فیسبوک با React-native نوشته شدن که ابزاریه برای پیاده سازی اپ های موبایل با js

تا اینجای کار فهمیدیم هرچند از js خوشمون نیاد ولی انقدر کاربرد داره که مجبوریم یاد بگیریمش اما یه راه گریز هست و اون هم استفاده از زبان هاییه که به js کامپایل میشن!

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

اگه بخوام معروف ترین زبان هایی که به js تبدیل میشن رو نام ببرم میشه به موارد زیر اشاره کرد:

  • TypeScript (توسعه دهنده: مایکروسافت)
  • ClojureScript
  • Elm
  • CoffeScript

پایتون (Python)

یک زبان خوانا بدون پیچیدگی و با کاربرد بسیار زیاد!

یکی از مزیت های بزرگ پایتون برای تازه کارها اینه که شما رو مجبور میکنه تمیز کد بزنید! توی پایتون تمام space ها و tab ها مهمه و اگه جایی اشتباه tab بزنید ممکنه برنامتون اجرا نشه یا اشتباه اجرا بشه

من به شخصه برای نیاز های فردی ای که اول این متن گفتم از پایتون استفاده میکنم مثلا یه بار نیاز داشتم تعداد زیادی عکس رو از یه سایت دانلود کنم کاری که یه کاربر عادی انجام میده میره به سایت مورد نظر یکی یکی رو عکس ها کلیک راست میکنه و save میکنه ولی من یه crawler نوشتم و اجراش کردم تا ۳۰ صفحه از اون سایت رو برای من crawl کنه و یکی یکی عکس هارو دانلود کنه! این کار بدون برنامه نویسی میتونست چند ساعت طول بکشه.

همچنین پایتون یه فریم ورک بسیار قوی داره که من در حال حاظر دارم باهاش کار میکنم django و با تمام چیزایی که گفتم یاد گیری پایتون میتونه خیلی مفید باشه

توی کتاب Two Scoops of django یه نقل قول نوشته بود از یکی که قبلا توی ناسا قرار بوده با جاوا برای ناسا Back end یه سایت رو بزنه. ایشون میگن که با یه تیم هفته ها در حال کار با جاوا بودن و شرکت اصرار به انجام پروژه با این زبان داشته تا این که یه روز خودش به تنهایی تو ۹۰ دقیقه با جنگو سایت رو مینویسه!

جاوا (Java)

یه نکته خیلی خیلی مهم! یه وقت جاوا رو با جاوا اسکریپت قاطی نکنیداااا!!!

این دوتا زبان هیچ ربطی بهم ندارن چیزی که من شنیدم درمورد شباهت اسمی اینه که جاوا زمانی که میاد با توجه به CrossPlatform بودنش (توانایی اجرا بر روی پلتفرم های مختلف) و چند تا ویژگی دیگه خیلی محبوب میشه و جاوا اسکریپت برای این که بتونه به شهرتی برسه این اسم رو انتخاب میکنه و میگن قبلا جاوا اسکریپت یه اسم دیگه داشته!

و اما بریم سراغ خود جاوا یکی دیگه از زبان های مورد علاقه من 🙂

شعار جاوا WORA هست مخفف Write Once Run Anywhere به معنی این که یک بار بنویس و همه جا اجرا کن! قبلا خیلی چیز خفنی بوده ولی الآن تو اکثر زبان های تفسیری مثل پایتون چنین چیزی رو میبینیم.

جاوا معمولا برای کارهای Enterprise استفاده میشه و البته برنامه نویسی اندروید. خودم به شخصه قبل از این که شروع کنم به کار با جنگو با اندروید استودیو کار میکردم و طبیعتا زبانش که جاوا هست اما از وقتی با React-native آشنا شدم و فهمیدم میشه با جاوا اسکریپت یه برنامه موبایل نوشت که هم رو اندروید کار کنه هم روی iOS به این نتیجه رسیدم که شاید دیگه کار با جاوا رو ادامه ندم(هرچند از js خوشم نمیاد) ضمنا برای یادگیری شئ گرایی جاوا میتونه زبان خوبی باشه.

سی شارپ (C#)

یک زبان برنامه نویسی که با الگو برداری از Java در سال ۲۰۰۰ توسط مایکروسافت به وجود اومده

تمام زبان های قبلی ای که گفتم OpenSource بودن ولی C# خیر البته بعضی از کتابخونه هاش OpenSource هست اما کل زبان اینطور نیست.

من خیلی میونه خوبی با این زبان ندارم به خاطر OpenSource نبودن و انحصار گرایی مایکروسافت اما چیزی که هست میگن برنامه های کوچیک اداری رو با صرف هزینه و زمان کمتر میشه با C# نوشت (به جای استفاده از Java)

بهترین روش برای یادگیری چیه؟

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

داکیومنت های فریمورک جنگو ۱۹۰۰ صفحه هستش! حالا به نظرتون چند ساعت فیلم آموزشی میتونه همشو به شما آموزش بده؟ تازه این رو هم در نظر بگیرید که شما باید اول خود زبان پایتون رو هم یاد بگیرین.

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

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

چه پیش نیاز هایی لازمه؟

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

زبان انگلیسی:

در حال حاظر سرعت پیشرفت تکنولوژی و به خصوص زبان های برنامه نویسی کتابخونه ها و فریمورک ها بسیار بسیار بالاست برای همین اگر قرار باشه صبر کنید تا منابع فارسی (که اکثرا هم ناقص ترجمه میشه) به وجود بیاد و با اونا یاد بگیرید خیلی عقب میمونید! برای جاوا یه کتاب از کتابخونه دانشگاه گرفتم داشت نحوه اجرای کدهای جاوا روی ویندوز ۹۷ رو توضیح میداد!!! به علاوه این که کلی ویدیو آموزشی مفید و مختصر روی یوتیوب هست که خوب طبیعتا به زبان انگلیسی هست.

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

گیت (git):

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

گیت در واقع یک سیستم برای کنترل ورژن های مختلف برای برنامه هستش فرض کنید شما یه برنامه نوشتین که کار اصلی رو انجام میده اسم پوشه برنامه رو میزارین Final و بعد متوجه یه باگ میشین و میخواین درستش کنین؛ عقل سلیم میگه یه نسخه دیگه درست کنم و روی اون کار کنم که اگه مشکلی پیش اومد نسخه قبلی رو داشته باشم حالا سوال اینجاست اسم نسخه جدیدی که کپی کردین از رو Final رو چی میخواین بزارین؟ Final 2 ؟؟ خوب اینجوری خیلی خنده داره ممکنه ۲۰ تا Final داشته باشین =))

راه حل گیت هستش! گیت میتونه تغییراتی که شما روی فایل هاتون میدین رو ذخیره کنه و هر موقع که خواستین برگردین مثلا به دیروز و روی اون نسخه کار کنید

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

لینوکس:

این مورد ضروری نیست ولی یاد داشتنش برای یه برنامه نویس یه مزیت بسیار بزرگ محسوب میشه

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

در واقع اگه یه سایتی با زبانی به جز Asp که مال مایکروسافت هست نوشته شده احتمالا سرورش لینوکس هست مثل همین سایت ویرگول

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

سخن آخر

هیچ زبان برنامه نویسی ای خوب یا بد نیست اگر دیدین در مورد js نوشتم یه استثنا به حساب میاد صرفا یه شوخی بود و اگه میگم این زبان این بدی هارو داره به این معنی نیست که به درد نمیخوره یا نباید ازش استفاده کرد. برای مثال js با تمام مشکلاتی که گفتم در حال حاظر بسیار کاربرد داره هم برای Front end هم برای Back end یعنی node js و هم برای نوشتن انواع و اقسام اپ های موبایل و دسکتاپ و با توجه به این موضوعات من اصلا نمیتونم به یکی که میخواد js یادبگیره بگم اینکار اشتباهه (هرچند شاید زبانی مثل python سینتکس بهتر و مزایایی داشته باشه)

سعی کنید زیاد سرچ کنید و مشکلات رو یکی یکی حل کنید

توصیه آخر من به شما ویدیو های جادی (اسم کامل: جادی میرمیرانی) رو حتما ببینید و کارهاش رو دنبال کنید. از وقتی من این آدم رو شناختم زندگی کاریم متحول شد!

نوشته شما هم به برنامه نویسی علاقه دارین؟ این پست برای شماست اولین بار در ویرگول پدیدار شد.

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

چرا مدیر پروژه بیشتر از یک برنامه نویس حقوق می‌گیرد؟

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

حقوق برنامه نویس در ایران

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

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

بررسی حرفه مدیر پروژه و تحلیل‌گر نرم افزاری

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

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

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

نظر شما در این باره چیست؟ آیا واقعاً درآمد فعلی متخصصین در این امر به صورت درستی محاسبه و پرداخت می‌شود

نقل از : ایمان مدائنی

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

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

چرا از Visual Studio Code استفاده می‌کنیم؟!

ما برنامه نویس‌ها بیشتر وقتمون رو در طول روز توی نرم افزاری میگذرونیم که باهاش کدمون رو توسعه میدیم و در واقع میشه گفت یجورایی توی اون نرم افزار زندگی میکنیم، حالا ماجرا اینه که نرم افزارهای مختلفی برای این کار وجود دارن، ایده این پست از اونجایی به ذهنم رسید که دو تا از دوستای خوبم توی توییتر داشتن سر وب استورم و وی اس کد بحث میکردن (دوستانه طور😬❤️)

Photo by Blake Connally on Unsplash
Photo by Blake Connally on Unsplash

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

راحتی نصب و استفاده

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

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

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

code .

سوم اینکه میتونید توی توسعه اش کمک کنید اگه مشکلی باگی چیزی پیدا کردین توی گیتهابشون ایشو کنید و حتما رسیدگی میکنن، مثل باگی که اینجا من ریپورت کردم https://github.com/Microsoft/vscode/issues/25871 که مربوط به یه مشکلی با کیبورد فارسی بود و حل شد 😌😝

از خوبی‌های نرم افزار آزاد که نگم براتون دیگه خودتون استادین 😬

پشتیبانی از گیت

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

توی وی اس کد تقریبا اکثر کارهای مربوط به گیت رو میتونید از منوی گیت انجام بدید کارهای از قبیل استیج کردن، کامیت کردن، استش کردن، دیدن تغیراتی که روی کد به وجود آوردین (دیف) و کلی چیزای دیگه

git in vscode

اکستنش‌ (افزونه‌) ها

خیلی از برنامه نویس‌ها اعتقاد دارن که برای اینکه کدشون رو ویرایش کنن نباید خیلی درگیر این بشن که بعد از اینکه خود نرم افزار رو نصب کردن وقت بزارن ببینن افزونه چی باید نصب کنن و خوب این قضیه رو یه نکته منفی برای وی اس کد میدونن آمّا از دید من این ویژگی خیلیم خوبه، چرا؟

چونکه میتونم مثل یه سامورایی واقعی هر افزونه ای که میخوام رو روش نصب کنم و کاملا برای خودم شخصی سازیش کنم و در نهایت افزونه settings sync رو نصب کنم که میاد از کل تنظیمات و افزونه هایی که نصب کردم یه فایل جیسون درست میکنه و روی github gist میزاره و حدس بزنید چی؟ روی هر سیستم جدیدی بخوام وی اس کد رو نصب کنم کافیه افزونه ای که گفتم رو نصب کنم و آیدی گیستی که قبلا برام ساخته رو بهش بدم و تاداااا! 🎉 ادیتوری که تازه نصب کردم دقیقا مثل اونی میشه که روی لپ تاپم دارم (شرایطی که مثلا یه کمپانی جدید رفتین و باید با سیستم‌های خودشون کار کنید)

یا مثلا یه تجربه ای که اخیرا داشتم اینکه شروع کردم گولنگ کار کردن و فقط با یه سرچ ساده توی منوی اکستنش ها، go رو نصب کردم و پشتیبانی کامل از گو به وی اس کدم اضافه شد😍 و خوب این مسئله برای خیلی از زبون‌ها و تکنولوژی های دیگه ام وجود داره، مثل docker, php, python, java, ruby, c و…

Golang Extension for VsCode

کراس پلتفرم

وی اس کد با کمک الکترون نوشته شده، الکترون یه فریم ورکه که با کمک کرومیوم و نود جی اس ساخته شده که میشه با استفاده ازش با html css و javascript برای دسکتاپ اپلیکیشن ساخت پس در نتیجه وی اس کد در هر سه سیستم عامل مک، لینوکس و ویندوز قابل استفادست، با این ویژگی دیگه دغدغه این رو ندارم که کامپیوتر بعدی ای که قراره باهاش کار کنم از چه سیستم عاملی استفاده میکنه و خیالم راحته نرم افزاری که باهاش راحتم رو همه جا دارم 😌


به طور خلاصه وی اس کد کلی ویژگی های فوق العاده دیگه مثل از قبیل Internal debugger, Markdown Preview, Command Palette, Internal Terminal و خیلی چیزای دیگه داره که اگه بخوام راجب تک تکشون بنویسم این پست خیلی طولانی تر از این حرفا میشه، و یه مسئله دیگه ام بگم که توی نظر سنجی سالانه سایت استک آور فلو عنوان محبوب ترین محیط توسعه رو به دست آورده

https://insights.stackoverflow.com/survey/2018/#technology-most-popular-development-environments


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

https://code.visualstudio.com

و دفعه بعدی که کسی گفت وی اس کد بده، اَخه، داغونه و این حرفا این پست رو نشون بدین و بگین:

نخیر !

نوشته چرا از Visual Studio Code استفاده می‌کنیم؟! اولین بار در ویرگول پدیدار شد.

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

۱- همه چیز درباره گردل: معرفی ساختار

اندروید استدیو برای بیلد پروژه‌ها از ابزاری به نام gradle استفاده می‌کند. زبان این ابزار groovy نام داره و یکی از قدرتمند ترین ابزارهای بیلد پروژه‌هاست. فرایند بیلد پروژه در gradle به این صورت ذیل می باشد.

همان گونه که در تصویر فوق مشخص است داده‌های برنامه به همراه کتابخانه‌هایی که در آن استفاده شده کامپایل شده و فایل dex تولید می‌شود، سپس با کلید مورد نظر sign می‌شود و فایل قابل نصب بدست می‌آید.

بیلد یک پروژه جنبه‌های مختلفی دارد:

یک: Build Types

مراحل فرایند ساخت پروژه را مشخص می‌کند. برای مثال در حالت دیباگ کلیدی که مورد استفاده قرار می‌گیرد، شرایط درهم ریزی کد و کوچک شدن و… را مشخص می کند. بیلد تایپ‌های پیشفرض debug و release هستند ولی شما می‌تواند به آنها اضافه کنید.

دو: Product Flavors

با اضافه کردن به flavor های پروژه شما می‌توانید نسخه‌های تفکیک شده‌ای از محصول خود داشته باشید. برای مثال از یک سورس کد نسخه دمو و اصلی برنامه را خروجی بگیرید. توجه داشته باشید از نام‌هایی رجیستر شده برای flavor مانند test، debug، main و… استفاده نکنید.

سه: Build Variants

این قابلیت بیلد به شما این اختیار را می‌دهد که ریسورس‌های دو flavor را از هم جدا کنید. برای مثال این امکان را برای شما فراهم می کند که از دو آیکن متفاوت برای نسخه اصلی برنامه و نسخه دمو برنامه استفاده کنید. برای این کار شما باید هم نام flavor خود یک پوشه در کنار پوشه main ایجاد کنید و در پوشه ساخته شده پوشه هایی هم نام ریسورس‌های پوشه main بسازید، تنها نکته‌ای که باید به آن توجه داشته باشید این است که از هم‌نامی برای جایگزین شدن فایل‌ها در زمان بیلد استفاده کنید.

چهار: Manifest Entries

این مفهوم به شما کمک می‌کند تا از چندین فایل منیفست بهرمند شوید. با استفاده از این قابلیت می‌توانید یک فایل منیفست را برای هر کدام از flavor ها به صورت مجزا پیکربندی کنید.

پنج: Dependencies

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

شش: Signing

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

هفت: ProGuard

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

هشت: Multiple APK Support

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

ساختار فایل های پیکربندی:

شما میتوانید فایل‌های پیکربندی شخصی خودتان را داشته باشید، پیکربندی را تقسیم کنید به چند فایل یا همه دستورات را در یک فایل بنویسید. برای تغییر در ساختار استاندارد پیکربندی پروژه لازم است که به میزان تغییرات فایل‌ها، پیکربندی پیشفرض رو دستکاری کنید و مطابق نیاز آنها را ویرایش کنید. ساختار پیکربندی پیشفرض یک پروژه اندروید را می‌توانید در تصویر زیر مشاهده کنید.

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

معرفی فایل های پیکربندی پروژه:

یک: settings.gradle

این فایل در ریشه اصلی پروژه قرار دارد و ماژول‌های برنامه در آن تعریف می شود. یک نمونه ساده از آن را می توانید مشاهده کنید.

include ‘:app’

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

دو: build.gradle سطح پروژه

این یک فایل سطح بالا است، همانگونه که در تصویر می‌بینید این فایل در ریشه پروژه قرار دارد. این فایل پیکربندی بر روی تمام ماژول‌ها اعمال می شود و همه ماژول‌ها به آن دسترسی دارند. در بلاک buildscript شما می توانید تمام مخازن و وابستگی‌های کل ماژول‌های خودتان را تعریف کنید. در بلاک allprojects شما می توانید تمام مخازنی که کل ماژول‌های پروژه به آنها نیاز دارند را تعریف کنید، برای مثال third-party ها، کتابخانه‌ها و…. یکی دیگر از قابلیت های جذاب این فایل پیکربندی بلاک ext‌ هست، که به شما اجازه می‌دهد پیکربندی خود را توسعه دهید. برای این کار شما در این بلاک متغییر هایی که نیاز دارید را تعریف می‌کنید و در دیگر قسمت‌های فایل‌های پیکربندی از این متغییرها استفاده می کنید.

  compileSdkVersion rootProject.ext.compileSdkVersion

سه: build.gradle سطح ماژول

این فایل پیکربندی در سطح ماژول است و در آدرس project/{module}/build.gradle قرار دارد. تنظیمات این فایل بر روی ماژول جاری اعمال می‌شود. این تنظیمات به شما اجازه می‌دهد تا ماژول سفارشی تولید کنید. برای مثال تنظیمات مربوط به flavor ها در این فایل نوشته می شود. در خط اول این فایل با دستور زیر به gradle معرفی می‌کنیم که این پیکربندی برای پلاگینی اندرویدی است. بلاک android که فقط خاص پروژه های اندروید است قابل شناسایی می‌شود. در این بلاک، پیکربندی ساخت ماژول را مشخص می کنیم.

apply plugin: ‘com.android.application’

شما همچنین می‌توانید مخازن و وابستگی‌های مورد نیاز این ماژول را در این فایل پیکربندی بنویسید.

معرفی فایل‌های پیکربندی gradle:

یک: gradle.properties

این فایل برای پیکربندی gradle استفاده می‌شود. برای مثال داده‌های پراکسی، سایز رم مورد نیاز برای بیلد پروژه و… را در این فایل می توانید تنظیم کنید.

دو: local.properties

این فایل برای پیکربندی محیط بیلد پروژه است. برای مثال آدرس SDK و NDK در این فایل نوشته شده است.

همگام سازی پروژه:

در زمانی که شما تغییری در هر کدام از فایل های پیکربندی ایجاد کنید باید gradle را همگام سازی کنید. در بیشتر مواقع در بالای فایل های پیکربندی در نواری زرد رنگ عبارت Sync Now نمایش داده می شود که فقط لازم است بر روی آن کلیک کنید.

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

منابع بیلد:

همانطور که قبلا گفتیم شما می توانید build type ها و product flavor ها متفاوتی داشته باشید. در صورتی که بخواهید منابع این دو نوع را از پروژه اصلی جدا کنید، باید به صورت زیر در ساختار پوشه‌های برنامه تغییر ایجاد کنید.

ساختار پیشفرض پروژه

src/main/

تغییر در منابع برای یک build type خاص

src/buildType/

تغییر در منابع برای یک flavor‌ خاص

src/productFlavor/

ترکیب یک build type و flavor

src/productFlavorBuildType/

ترکیب دو flavor

src/productFlavor1ProductFlavor2/

مثال:

src/main/
src/full/
src/debug/
src/fullDebug/

برای تغییر در build type و product flavor فعال اندروید استدیو میتونید از پنجره build variant‌ استفاده کنید.


منابع:

https://developer.android.com/studio/build/
https://developer.android.com/studio/build/shrink-code.html
http://www.gradle.org/
http://groovy-lang.org/

نوشته ۱- همه چیز درباره گردل: معرفی ساختار اولین بار در ویرگول پدیدار شد.

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

دور زدن تحریم‌ها و دسترسی به GitLab از داخل ایران

متاسفانه اخیرا سرویس محبوب GitLab به سرورهای گوگل منتقل شده است و امکان دسترسی مستقیم به مخازن قرار گرفته بر روی آن برای برنامه‌نویسان ایرانی ممکن نیست.

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

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

راه‌حل ۱: تنظیم سرور http واسط بر روی Git

نرم‌افزار Git بدون نیاز به هیچ ابزار جانبی، امکان استفاده از یک سرور http واسط را جهت عبور دادن اطلاعات و ارتباط با سرورهای اصلی دارد.

با وارد کردن کامند زیر در ترمینال می‌توان با تعیین آدرس آی‌پی و پورت سرور http واسط، از این قابلیت استفاده کرد.

git config --global http.proxy http://username:[email protected]:port

پیدا کردن سرور واسط جهت رد کردن ترافیک و دسترسی GitLab کار مشکلی نیست و سرویس‌های نظیر FOD به صورت رایگان این خدمات را ارائه می‌کنند.

البته در صورت تمایل می‌توان با استفاده از پروژه‌هایی مانند proxy-chain سرویس واسط اختصاصی جهت عبور دادن ترافیک Git راه‌اندازی کرد.

نقاط قوت

  • با بکارگیری این روش تنها ترافیک Git از سرور واسط عبور می‌کند.
  • با تعیین تنظیمات محلی بر روی هر پروژه Git می‌توان ترافیک پروژه‌های دلخواه را از این طریق به GitLab ارسال کرد.

نقاط ضعف

  • مخزن محلی باید با آدرس‌هایی از نوع http به مخزن اصلی متصل باشد؛ این روش راه‌حلی جهت تبادل اطلاعات با مخزن اصلی از طریق آدرس‌های ssh ارائه نمی‌کند.

راه‌حل ۲: استفاده از SSH Tunnel و تنظیم سرور http واسط بر روی Git

در صورتی که به یک سرور لینوکسی در خارج از ایران دسترسی SSH داشته باشید با استفاده از کامند زیر یک ارتباط امن بین سیستم شما و سرور برقرار خواهد شد:

ssh [email protected] -p server-port-number -D local-port-number
# ssh [email protected] -p 15222 -D 5555

در صورت تمایل می‌توان سویچ‌های C- برای فشرده‌سازی، q- برای عدم نمایش هشدارها و پیام‌ها، N- برای اعلام عدم نیاز به اجرای دستورات و کامند بر روی سرور و f- برای انتقال پروسه به بکگراند را به دستور بالا اضافه کنیم. در اینصورت دستور بالا به شکل زیر خواهد شد:

ssh [email protected] -p server-port-number -D local-port-number -C -q -N -f -g
# ssh [email protected] -p 15222 -D 5555 -C -q -N -f -g

این دستور، پورت ۵۵۵۵ را بر روی سیستم شما باز می‌کند و کافی‌ست که Git را با دستور زیر برای عبور دادن ترافیک از پورت مورد نظر مطلع سازید:

git config --global http.proxy 'socks5://127.0.0.1:5555'

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

نقاط قوت

  • با بکارگیری این روش تنها ترافیک Git از سرور واسط عبور می‌کند.
  • با تعیین تنظیمات محلی بر روی هر پروژه Git می‌توان ترافیک پروژه‌های دلخواه را از این طریق به GitLab ارسال کرد.

نقاط ضعف

  • دسترسی به سرور لینوکسی در خارج از کشور مورد نیاز است.
  • مخزن محلی باید با آدرس‌هایی از نوع http به مخزن اصلی متصل باشد؛ این روش راه‌حلی جهت تبادل اطلاعات با مخزن اصلی از طریق آدرس‌های ssh ارائه نمی‌کند.

راه‌حل ۳ (پیشنهاد من): استفاده از SSH Tunnel و دستور proxychains

برنامه proxychains امکان عبور دادن ترافیک سایر برنامه‌ها را از سرورهای واسط تعیین شده در فایل تنظیمات فراهم می‌کند.

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

برای شروع با اجرای دستور زیر در اوبونتو یا دستورات مشابه در سایر لینوکس‌ها، بسته مربوط به برنامه را نصب می‌کنیم:

sudo apt-get install proxychains

سپس به روش ذکر شده در «راه‌حل ۲» یک SSH Tunnel ایجاد کرده و با دستور زیر فایل تنظیمات proxychains را باز می‌کنیم:

vi /etc/proxychains.conf

در بخش [ProxyList] معمولا تعدادی تنظیم پیش‌فرض وجود دارد که بهتر است آن‌ها را حذف کنید. حال کافی‌ست با قرار دادن عبارت زیر، واسط مورد نظر را به proxychains معرفی کنید:

socks5 192.168.1.207 5555

فایل تنظیمات ذخیره کنید و از آن خارج شوید.

از این پس برای ایجاد ارتباط بین مخزن محلی و مخزن GitLab کافی‌ست که دستور proxychains را در ابتدای دستورات Git ذکر کنیم. به عنوان مثال:

proxychains git push origin master
proxychains git pull origin master

با قرار گرفتن دستور proxychains در ابتدای دستورات Git، مخازن محلی پروژه به راحتی به مخازن موجود بر روی GitLab متصل خواهند شد.

نقاط قوت

  • این روش برای همه نوع مخزن کار می‌کند و فرقی نمی‌کند که آدرس مخزن از نوع ssh یا http باشد.
  • تنها ترافیک دستوراتی از Git که قبل از آن عبارت proxychains قرار گرفته است، از سرور واسط عبور می‌کند.
  • نیازی به اعمال تنظیمات اضافی در Git وجود ندارد.

نقاط ضعف

  • دسترسی به سرور لینوکسی خارج از کشور مورد نیاز است.

جمع‌بندی

با توجه به نقاط قوت و نقاط ضعف مطرح شده و در صورت دسترسی به سرور مناسب، برای دسترسی به سرویس GitLab «راه‌حل ۳» را پیشنهاد می‌کنم.

آیا شما برای دسترسی به اینگونه سرویس‌ها، راه‌حل مناسب دیگری را سراغ دارید؟! لطفا آن را به اشتراک بگذارید تا جهت سهولت دسترسی سایرین، در ادامه مقاله ذکر شود.

از توجه شما ممنونم 🙂

نوشته دور زدن تحریم‌ها و دسترسی به GitLab از داخل ایران اولین بار در ویرگول پدیدار شد.

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