زبان برنامه نویسی Dart

dart

سلام امروز هم سراغ زبان برنامه نویسی جدیدی رفتم دارت یا Dart .

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

در حال حاظر به نسخه ۲ به روز شده. توسط گوگل توسعه داده میشه .

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

Visual Studio Code, Intellij IDE, Android Studio, … .

این زبان شی گرا, برپایه کلاس و سینتکسی مشابه c داره .

در ابتدای ورود قرار بوده پیچیدگی هایی داشته باشه تا بتونه قدرت نمایی کنه و انتقاد های زیادی بهش شده که در نسخه ۲ بهبود دادنش .

رقبا : Typescript – Javascript .

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

www.dartlang.org

www.dartlang.org/guides/language/language-tour

برای من نصب ابزار هاش زجر آور بود .

( راستی من با نصب اندروید استودیو ۳٫۱٫۲ مشکل دارم sdk manager رو ازش جدا کردن sdk tools لینک دانلود گذاشتن و یا مشابه این و از همینجا تشکر میکنم از کسی که آموزشش رو قرار بده حتما لایکش میکنم 🙂 ).

شاد و پیروز باشید که البته خیلی سخته :).

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

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

کاهش مصرف رم سایت با استفاده از yield در PHP

آیا در مورد yield در PHP چیزی شنیدید؟ خب من در وقتتون صرفه جویی میکنم و نیازی نیست برید سرچ کنید با سرفصل زیر در مورد yield صحبت می کنیم

  1. معرفی yield.
  2. تفاوت بین yield & return.
  3. خصوصیات yield.
  4. نتیجه گیری.

معرفی yield

بزارید یه تابع تعریف کنیم مثل بقیه توابع ولی به جای return کردن yield میکنیم مانند:

function getValues() {
    yield 'value';
}

// print the string "value"
echo getValues();

 

خب مسلماَ، این کد کار نمی کنه به شما یه fetal error بر میگردونه:

object of class Generator could not be converted to string

بزارید ارور رو توضیح بدیم:

تفاوت بین yield & return

اروری که بالا نوشتم میگه تابعمون string باید return میکرده ولی یه object فرستاده!!! اگه بخوایم تایپ شون رو بفهمیم:

function getValues() {
    return 'value';
}
var_dump(getValues()); // string(5) "value"

function getValues() {
    yield 'value';
}
var_dump(getValues()); // class Generator#1 (0)

کلاس Generator یه کلاسی هست که implement میشه از اینترفیس Iterator: یعنی باید از تابع getValues در حلقه ها استفاده کنیم:

foreach (getValues() as $value) {
    echo $value;
}
// using variable is also alright
$values = getValues();
foreach ($values as $value) {
    echo $value;
}

البته این تنها تفاوتش نیست

یه Generator بهت اجازه میده از حلقه ها برای یه دسته از داده ها استفاده کنی بدون اینکه آرایه ای تعریف کنی و این یعنی آرایه ای نیست که در رم ذخیره کنه و در نتیجه مصرف رم کمتر!

برای درک بهتر استفاده از yield فکر کنید یه آرایه داریم با ۸۰۰,۰۰۰ ایندکس و بخوایم با تابعی مثل تابع بالا return کنیم و اگر با تابع memory_get_usage() میزان رم را اندازه گیری کنیم، من در هر ۲۰۰,۰۰۰ المنت اندازه گیری کردم و نتیجه اش:

۰٫۳۴MB
۸٫۳۵MB
۱۶٫۳۵MB
۳۲٫۳۰MB

خب بخاطر چند تا خط کد، اسکریپتمون بخواد ۳۰ مگ حافظه مموری رو اشغال کنه یعنی هر بار صدا کردن آرایه این مقدار در مموری افزایش پیدا میکنه اما اگه از yield برای همین مثال استفاده کنیم

نتیجه:

۰٫۳۴MB
۰٫۳۴MB
۰٫۳۴MB
۰٫۳۴MB

متوجه تفاوت فاحش این دو کد میشید اما این به این معنی نیست که از return به yield مهاجرت کنیم اما اگه از یه آرایه سنگین در کدتون استفاده می کنید گزینه مناسب همین yield خواهد بود

خصوصیات yield

من یه چندتا از خصوصیات yield رو اینجا براتون میگم(مهماش!)

آ. می تونید yield و return رو باهم استفاده کنید:

function getValues() {
    yield 'value';
    return 'return value';
}
$values = getValues();
foreach($values as $value) {}
echo $values->getReturn();// 'retrun value'

ب. برگرداندن به حالت key/value

function getValues() {
    yield 'key' => 'value';
}
$values = getValues();
foreach($values as $key => $value) {}

اطلاعات بیشتر در اینجا

نتیجه گیری

هدف این مقاله بیان تفاوت بین yield و retrun بود و زدن چند تا مثال برای درک بهتر yield

امیدوارم بدردتون خورده باشه

(ترکیبی از ترجمه یه مقاله و خودم)

لطفا در مورد اولین مطلب نظراتتون رو بدید و اگر عنوان یا مبحثی مد نظرتون پیشنهاد دهید

یا حق

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

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

امضای کامیت‌های گیت با استفاده از کلید GPG

این یادداشت یک راهنما برای استفاده از GPG برای امضا کردن کامیت‌های گیت است، اگر دنبال یک راهنمای نسبتا مفصل برای GPG هستید، خواندن این مطلب را توصیه می‌کنم: GPG یک راهنمای نسبتا مفصل

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

GPG یا PGP چی هست اصلا؟

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

ساختن کلید شخصی

۱. اگر gpg روی سیستمتون نصب نیست، باید دریافت و نصبش کنیم. برای تست دستور زیر رو اجرا میکنیم

gpg --version

 

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

۲. با استفاده از دستور زیر یک کلید خصوصی/عمومی می‌سازیم

gpg --full-gen-key

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

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

Please select what kind of key you want:
   (۱) RSA and RSA (default)
   (۲) DSA and Elgamal
   (۳) DSA (sign only)
   (۴) RSA (sign only)
Your selection? 1

۴. سوال بعد در مورد طول رشته‌ی کلید است، هرچه کلید طولانی‌تر، امن‌تر 🙂 مقدار ۴۰۹۶ رو به عنوان طول رشته انتخاب می‌کنیم.

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits

۵. سوال بعدی که پرسیده می‌شود، مدت زمان اعتبار کلید است، که ما گزینه‌ی اعتبار همیشگی یا «بدون تاریخ انقضا» رو انتخاب می‌کنیم. جواب گزینه‌ی ۰ است.

Please specify how long the key should be valid.
         ۰ = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all

۶. جواب‌ها رو تایید می‌کنیم.

Is this correct? (y/N) y

۷. نامی که برای امضای کلیدها قرار است استفاده شود و آدرس ایمیل‌ را وارد می‌کنیم. از آنجا که می‌خواهیم با کمک این کلید کامیت‌های گیت را امضا کنیم، بهتر است با نام و آدرس ایمیلی که به تنظیمات گیت داده‌ شده یکی باشد. سوال آخر را هم با وارد کردن گزینه‌ی O و تایید مشخصات جواب می‌دهیم.

GnuPG needs to construct a user ID to identify your key.

Real name: kiavash
Email address: me@kiavash.one
Comment:
You selected this USER-ID:
    "kiavash <me@kiavash.one>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

۸. یک پسورد خوب و قوی به کلید می‌دهیم.

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

gpg --list-secret-keys

دادن کلید به گیت

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

gpg --list-secret-keys --keyid-format LONG me@kiavash.one

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

۲. کلیدی که با sec شروع شده است را پیدا کنید و GPG key ID آن‌را کپی کنید. در این مثال مقدار آن برابر با ۳۰F2B65B9246B6CA است:

sec   rsa4096/30F2B65B9246B6CA 2017-08-18 [SC]
      D5E4F29F3275DC0CDA8FFC8730F2B65B9246B6CA
uid                   [ultimate] kiavash <me@kiavash.one>
ssb   rsa4096/B7ABC0813E4028C0 2017-08-18 [E]

۳. برای گیت مشخص کنید که کامیت‌ها را با کمک این کلید امضا کند

git config --global user.signingkey 30F2B65B9246B6CA

(مقدار ID که از مرحله قبل به دست آوردید را جایگزین مقدار پیش‌فرض در این مثال ۳۰F2B65B9246B6CA باید بکنید)

امضای کامیت‌ها

بعد از ساختن کلید GPG و دادن مقدار آن به گیت می‌توانید شروع به امضا کردن کامیت‌هایتان بکنید. چند راه برای این‌کار داریم

۱. راه ول استفاده از سوییچ -S برای امضا کردن هر کامیت است

git commit -S -m "My commit msg"

۲. اگر نمی‌خواهیم بعد از هر بار کامیت کردن از سوییچ S استفاده کنیم، می‌توان برای گیت مشخص کرد که بعد از هر بار کامیت کردن آن‌ها را اتوماتیک امضا کند

git config --global commit.gpgsign true

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

معرفی کلید به سرویس‌هایی مثل گیت‌هاب یا گیت‌لب

۱. از کلید عمومی با کمک دستور زیر می‌توان خروجی گرفت(ID خودتان را جایگزین مقدار پیش‌فرض این مثال باید بکنید)

gpg --armor --export 30F2B65B9246B6CA

۲. مقدار خروجی را کپی کنید. خروجی شبیه به این خواهد بود:

-----BEGIN PGP PUBLIC KEY BLOCK-----
blahblahblah
blahblahblah
...
...
...
-----END PGP PUBLIC KEY BLOCK-----

۳. به قسمت تنظیمات اکانت در سرویس مورد نظر می‌رویم، در گیت‌هاب به قسمت SSH and GPG keys یا در گیت‌لب GPG keys می‌رویم و مقدار کلید عمومی را در آن کپی می‌کنیم.

کامیت‌های تایید شده

۱. به زبانه‌ی commits هر مخزن در سرویس مورد نظر که برویم، به راحتی می‌توان کامیت‌های امضا شده‌ی معتبر، نامعتبر و کلا امضا نشده‌ها را از هم تشخیص داد.

۲. با کلیک بر روی نشان امضای هر کلید می‌توان مشخصات آن‌را دید


پانویس

آدرس این یادداشت بر روی وبلاگ شخصی کیاوش

https://kiavash.one/2018/05/23/use-gpg-for-sign-commits/

در صورتیکه بخواهید به هر شکلی در نوشتن این یادداشت مشارکت کنید، مثلا آن را اصلاح کنید یا مطلبی به آن اضافه کنید، منبع این یادداشت روی گیت‌هاب در این آدرس در دسترس است:
https://github.com/kiamazi/kiavash.one/blob/master/content/blog/2018-5-23-use-gpg-for-sign-commits.md
میتوانید آن‌را ویرایش کنید. البته باید یادآوری کنم که هر ویرایشی قبل از اتشار نیاز به تایید دارد.

منبع ۳عکس آخر و مقادیر پیش‌فرض مثال‌ها:

https://gitlab.com/help/user/project/repository/gpg_signed_commits/index.md

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

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

مروری بر MySQL Triggers

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

یکی از انگیزه های نوشتن این خُردمقاله متاسفانه و در کمال تعجب دیدن چندین نفر از برنامه نویسای قدیمی تر از خودم که در حد ORM از بانک اطلاعاتی استفاده میکردند و حد استفادشون از دیتابیست CRUD بود یعنی Select,Insert,Delete,Update و دیتابیس SQL رو مسئول نگهداری داده میدونستن که به صورت ماتریسی داده ها رو نگه میدارن با یه سری روابط بین جداول!

Trigger:

تریگرها به مجموعه‌ای از توابع/دستوراتی اطلاق میشه که با انجام کاری اجرا میشوند ، یعنی اگر تریگری داشته باشیم برای اجرا قبل از Insert در جدول X این تریگر هنگامیکه بخواهیم یک داده رو با کوئری Insert وارد جدولمون کنیم اجرا خواهد شد.

کار با تریگرها ساده ولی کاربردی هستند.


یک مثال کاربردی:

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

عملی که رخ میدهد به شرح زیر است:

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

Customers

  • id: شناسه مشتری
  • name:نام مشتری
  • credit:اعتبار مشتری
CREATE TABLE `customers` ( 
	 `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
	`name` VARCHAR(20) NOT NULL , 
	`credit` INT NOT NULL , 
	 PRIMARY KEY (`id`)
);

 

Baskets

  • id:شناسه خرید
  • customer_id:شناسه خریدار/مشتری
  • amount: قیمت سبد خرید
CREATE TABLE `baskets` ( 
	`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
	`customer_id` INT UNSIGNED NOT NULL ,
	`amount` INT UNSIGNED NOT NULL ,
	PRIMARY KEY (`id`)
);

(برای خلاصه سازی از مابقی جزئیات همچون ریلیشن ها فاکتور میگیریم)

حالا یک تریگر مینویسیم که بعد از ثبت هر خرید مبلغ خرید amount را از اعتبار حساب مشتری credit کم کند.

برای تست یک مشتری به صورت زیر تعریف میکنیم:

INSERT INTO `customers` (`id`, `name`, `credit`) VALUES (NULL, 'Mahmoud', '1000000');

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

UPDATE `customers` 
    SET `customers`.`credit`=`customers`.`credit` -  $BasketAmount
    WHERE `customers`.`id` = $CustomerId;

حال این کوئری رو در تریگر After Insert جدول خریدها قرار میدهیم که بعد از اعمال هر خرید خودکار این کار را انجام دهد:

CREATE TRIGGER `MyExampleName` AFTER INSERT ON `baskets`
FOR EACH ROW BEGIN
    UPDATE `customers` 
        SET `customers`.`credit`=`customers`.`credit` - NEW.`amount` 
        WHERE `customers`.`id` = NEW.`customer_id`;
END

دستور بالا تریگری رو تعریف میکنه که بعد از ورود داده در جدول baskets کوئری Update میگیره روی جدول مشتریها و با

`customers`.`credit`=`customers`.`credit` - NEW.`amount`

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

 WHERE `customers`.`id` = NEW.`customer_id`;

استفاده میکنیم که مشتری مربوط به خریدمون رو پیدا کنه و کوئری رو روش اجرا کنه.

اگر بخواهیم از دستورات چند خطی و یا چند دستور در تریگر استفاده کنیم نیاز هست که از BEGIN و END برای مشخص کردن ابتدا و انتهای دستورات استفاده کنیم در غیر اینصورت استفاده از اونها برای کوئریهای تک دستوری الزامی نیست.

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

البته در تریگرهای آپدیت هم به NEW و هم به OLD دسترسی داریم که مقادیر قدیم و جدید هر ستون رو بر میگردونن و در تریگر حذف هم فقط به OLD.نام_ستون دسترسی داریم.

به طور کلی

CREATE TRIGGER `نام دلخواه` AFTER INSERT ON `نام جدول`

برای ساخت یک تریگر از اسلوب فوق استفاده میکنیم که برای تعیین زمان/نوع تریگر میتونیم از:

  • AFTER INSERT
  • BEFORE INSERT
  • AFTER UPDATE
  • BEFORE UPDATE
  • AFTER DELETE
  • BEFORE DELETE

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

دستورات شرطی مثل تعریف متغیرهای DECLARE و دستورات شرطی IF THEN/ELSE و حلقه ها و سایر دستورات برنامه نویسی یا کوئری نویسی رو میشه داخل تریگر اجرا کرد.

اگر موقع ثبت کوئری ساخت تریگر دچار مشکل شدید به خاطر این هستش که جدا کننده‌ی زبانSQL پیشفرض سمی‌کالن هستش که با سمیکالن داخل دستورات دچار تداخل میشه که برای جلوگیری از این اتفاق باید Delimiter کوئری رو از حالت پیشفرض به یک چیز دیگه مثلاً $$ تغییر بدید.

مثل:

DELIMITER $$;
Trigger Query 
$$

که سیمکالن با این روش دور میخوره و خطا نمیده.

منتظر فیدبکهاتون هستم.

نوشته مروری بر MySQL Triggers اولین بار در ویرگول پدیدار شد.

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

۸ قدم برای حرفه‌ایی شدن در React (قسمت دوم)

در قسمت قبلی درباره ESLint, WebPack و Babel صحبت کردیم و دیدیم که با یه تغییر کوچیک داخل کانفیگ ESLint چقدر میشه تمیز و بهینه تر کد نویسی کرد.
تو این قسمت ویژگی‌های پلاگین transform-class-properties و تکنیک Code Splitting را مورد بررسی قرار می‌دهیم.


گفتیم که Babel ماشین تبدیل کد به حساب میاد

از همین ویژگی میشه برای کمتر کد زدن و صرفه جویی در وقت و هزینه استفاده کرد. چه طوری ؟
اول از همه پلاگین transform-class-properties را نصب می‌کنیم:

npm install babel-plugin-transform-class-properties –save

بعدش در ریشه پروژه یک فایل به نام .babelrc ساخته و پلاگین را در آن فراخوانی می‌کنیم:

از این به بعد برای defaultProps, propTypes, initialize state, و bind کدن لازم نیست سختی بکشیم 🙂

قبل از transform
بعد از transform

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


تفکیک کد یا Code Splitting چیست ؟

تفکیک کد، تکنیکی برای کمتر کردن حجم برنامه شما و درنتیجه بازگذاری سریع‌تر و افزاریش رضایت مشتری و داشتن SEO بهتری است.

در حالت عادی وقتی برنامه React شما build میشه خروجی شما یک فایل bundle.js هست که داخل اون از تمامی پکیچ‌هایی که استفاده کردید تا کدهای برنامه که خودتون نوشتید قرار داره.

اما مشکل کجاست ؟

  • شما کافیه یکی از پکیج‌هایی که استفاده کردید رو بروز کنید، کاربر مجبوره تمام bundle.js رو دوباره دانلود کنه (فقط برای یک آپدیت ساده یکی ‌از هزاران پکیجی که داخل node_modules قرار داره)
  • کاربر برای دیدن صفحه مقالات علاوه بر کد صفحات خانه، سبد خرید، درباره ما، تماس با ما، فروشگاه، باید پکیج‌های استفاده شده داخل این صفحات رو دریافت کنه در صورتی که اصلا لزومی نداره 🙂

جالبه نه ؟! جالب ترم میشه :))
یادتونه گفتیم WebPack کل برنامه شما رو یک فایل میکنه، اینجاست که ازش می‌خوایم اینکارو نکنه (البته تا حدودی)

اول از همه پکیج‌هایی که لازم داخل کل برنامه وجود داشته باشن (مثل: react و react-dom و react-redux و react router-dom و redux و …) رو از مابقی فایل‌ها جدا می‌کنیم (اصطلاحا Vendor Splitting می‌کنیم)

دوم با استفاده از پکیج‌های مختلفی که وجود داره تفکیک کد رو در سطح کامپوننت یا در سطح مسیر (Route Level) انجام میدیم. (بدون استفاده از پکیج اینکار امکان پذیر هستش ولی خیلی کثیف کاری داره)

پیش نیاز اصلی Webpack 2 و یا نسخه جدیدتر هستش
برای تفکیک کد در سطح Component و Route از پکیج react loadable استفاده کنید.

اما برای Vendor Splitting باید خودمون دست به کار بشیم و webpack رو کانفیگ کنیم. (توجه داشته باشید بسته به نوع setup که استفاده کردید این کانفیگ ممکنه کمی نیاز به تغییر داشته باشه)

اگر از create-react-app استفاده می کنید باید یکبار برنامه را eject کنید و config.webpack را به صورت زیر تغییر دهید

کانفیگ برای webpack 2، در نسخه های مختلف syntax کمی متفاوت است

در آخر حداقل خروجی شما ۳ فایل manifest.js و vendor.js و chunk.[x]:hash.js خواهد بود که

  • فایل vendor:که در آن پکیج‌های اصلی برنامه شما که وجود آنها در تمامی کامپوننت‌ها الزامی است، قرار دارد.
  • فایل manifest.js که وجود این فایل برای Dynamic Load شدن chunk ها الزامی است، در اصل این فایل مشخص می‌کند component X در کدام فایل وجود دارد که مرورگر در زمان مورد نیاز آنرا بارگذاری می‌کند.
  • و chunk ها که کد هر صفحه (خانه، فروشگاه، سبد خرید، و …) را در خود دارد و برنامه شمارا به قسمت های کوچکتر تقسیم می‌کند.


ادامه مطالب رو سعی می کنم تا چند روز آینده در قالب مقاله دیگه‌ایی تکمیل کنم و لینکش رو همینجا قرار بدم
تا اون موقع این چندتا لینک رو مطالعه کنید:

https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3

https://medium.com/@adamrackis/vendor-and-code-splitting-in-webpack-2-6376358f1923

http://egorsmirnov.me/2015/06/14/react-and-es6-part2.html

خوشحال میشم بدونم این مقاله مفید واقع شده یا نه! و آیا شما شروع به تغییر دادن کد خودتون می‌کنید؟ و اول از کدوم قسمت شروع می‌کنید 🙂

نوشته ۸ قدم برای حرفه‌ایی شدن در React (قسمت دوم) اولین بار در ویرگول پدیدار شد.

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

چطوری توی اینترنت یه کمپین خوب و پرمخاطب اجرا کنیم؟

اگر نمی‌دونید کمپین چی هست، لطفا ابتدا محتوای مربوط به کمپین چیست رو بخونید. 

چرا باید کمپین بسازیم؟ 

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

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

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

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

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

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

چطوری یه کمپین خوب ایجاد کنیم؟  

یک – برای انتخاب موضوع کمپین، خوب فکر کنید:

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

دو – هدف از ایجاد کمپین رو دقیقا مشخص کنید:

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

سه – نیاز کمپین رو به صورت کامل برای مخاطبان‌تون شرح بدید:

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

چند تا توصیه در رابطه با این موضوع: 

– سعی کنید توضیحات رو به صورت داستانی بنویسید و توی اون به این اشاره کنید که کمپین از کجا اومده و برای چی شروع به کار کرده و قراره به کجا برسه.

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

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

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

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

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

منبع: سایت مهمه

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

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

نوشتن تست برای توابع javascript با استفاده از mocha.js و node.js

من علیرضا شهابی هستم و در این نوشته سعی دارم با استفاده از `node.js` و پکیج `mocha.js` بیام و توابعی که به زبان `javascript` نوشته میشه رو تست کنم!!!


خوب سوال اول اینه که باید از کجا شرو کنیم ؟؟؟ ( جواب خوبی هم براش دارم! ) چند سری مراحل داره که باید باهم انجام بدیم بعدش میزینم تو کٌد ! ( فقط قبلش من یه سر فصل براش بنویسم یکم مرتب باشه)

  • اول

باید اگر `node.js` رو روی سیستم خودتون نصب ندارید از اینجا دانلودش کنید و خوب بعدش با استفاده از `npm` مراحل زیر رو دنبال کنیم !!!

  • دوم

میریم برای نصب خود پکیج که با یه دستور خیلی ساده روی کل سیستمتون (‌ چقد ت داره )‌ نصب میکنید !

  • سوم

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

  • چهارم

میریم و شرو میکنم به نوشتن چند تا تابع javascript که بتونیم براشون تست بنویسیم !

و بعد ازین ها میایم و شرو میکنیم به نوشتن فایل `index.js` به این شکل

خوب برای `run` کردن تستمون کافیه فقط دستور ‍‍`mocha` رو توی terminal یا command prompt اجرا کنید همین ! و نتیجه ای هم که میگیرین به این شکل خواهد بود !

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

نوشته نوشتن تست برای توابع javascript با استفاده از mocha.js و node.js اولین بار در ویرگول پدیدار شد.

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

۷ شغلی با درآمد بالا که با استارتاپ ها کار می کنند

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

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

برنامه نویس و طراح وب:

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

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

در اصل این شغل هیچ مدرکی نمی خواهد و وابسته به مهارت شماست. برای طراحی وب سایت حرفه ای باید مهارت متعددی را یاد بگیرید. از طرفی باید با کدنویسی های مربوط به طراحی استاتیک شامل HTMLو CSS و Java Script آشنایی کاملی داشته باشید و از طرف دیگر باید با زبان های برنامه نویسی تحت وب مانند ASP,PHP یا پایتون هم به صورت تخصصی آشنایی باشد.

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

میزان حقوق»حداقل ۱٫۵ میلیون تا ۴٫۵ میلیون تومان.

برنامه نویسی موبایل (گوشی هاس هوشمند اندورید و آی او اس):

برنامه نویسی اندروید:با ظهور گوشی های هوشمند به ویژه گوشی های اندرویدی در ایران بازار جدیدی برنامه نویسان و توسعه دهندگان شکل گرفته است. آمارهای کافه بازار نشان می دهد که نزدیک به ۳۹ میلیون دستگاه اندرویدی در ایران وجود دارد که هریک از آنها می توانند به عنوان یک مشتری بالقوه برای برنامه نویسان اندرویدی محسوب شوند.

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

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

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

میزان حقوق» حداقل ۱٫۵ میلیون تا ۴٫۵ میلیون تومان.

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

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

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

میزان حقوق» حداقل ۱٫۵ میلیون تا ۴٫۵ میلیون تومان.

طراح Ux , Ui:

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

اصطلاح UIمخفف User Interface است که در صنعت طراحی نرم افزار و وبسایت به هر چیزی که در صفحه نمایش داده می شود گفته شده و شامل تصاویر، متن ها،‌ دیاگرام،‌ ماژول ها، جداول،‌ ویدئوها و همچنین رنگ و مکان آن ها است.

در حالی که UX مخفف User Experience است و مفهومی بسیار وسیع تر از UI دارد. این اصطلاح به تجربه و احساس کاربر زمانی که از محصول شما استفاده می کند،‌گفته می شود. مثل درک کاربر از جنبه های مختلف سیستم از جمله کاربرد و سادگی در استفاده.

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

میزان حقوق»حداقل ۱٫۲ میلیون تا ۳ میلیون تومان.

کارشناس بازاریابی دیجیتال:

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

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

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

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

در این شغل خلاقیت از همه موارد دیگر مهم تر بوده و به نوعی فرمولی برای انجام آن در اختیار شما قرار نمی گیرد.

میزان حقوق»حداقل ۱٫۷ میلیون تا ۵ میلیون تومان.

کارشناس تحلیل اطلاعات بازار:

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

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

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

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

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

میزان حقوق»حداقل ۱٫۵ میلیون تا ۴ میلیون تومان.

—————————————————————-

امیدوارم مفید بوده باشه

نوشته ۷ شغلی با درآمد بالا که با استارتاپ ها کار می کنند اولین بار در ویرگول پدیدار شد.

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

چگونه برنامه نویسی را شروع کنیم؟

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

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

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

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

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

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

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

برای اندروید برنامه نویسی کنیم یا IOS؟

برنامه نویسانی که میخواهد در حوزه موبایل کار کند نیز بین اندروید و IOS میتوانند تردید پیدا کنند. این سوال جوابش واقعا مشخص است: خب مسلم است اندروید! بیش از ۸۰ درصد گوشی های هوشمند سیستم عامل اندروید دارند و در ایران این رقم تا ۹۰ درصد افزایش پیدا کرده. آینده اندروید نیز با حمایت گوگل درخشان است.

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

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

اگر از هرکسی که کمی با برنامه نویسی  آشنایی دارد بپرسید که بهترین زبان برای شروع برنامه نویس چیست؟ بدون شک جوابش C یا C++ خواهد بود.C را میتوان یک زبان مادر دانست بطوری که خیلی از زبان های کنونی از این زبان متولد شده اند. برای شروع پیشنهاد ماهم سی یا سی پلاس پلاس یا جاوا است.

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

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

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

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

روشی را برای یادگیری برنامه نویسی انتخاب کنید که ساده باشد و باعث شود از یادگیری لذت ببرید. اگر از من بپرسید چه روشی را برای یادگیری برنامه نویسی پیشنهاد میدهم بدون شک اولین گزینه من دیدن فیلم های آموزشی است.

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

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

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

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

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

کدفرند،برگذاری دوره های آموزش برنامه نویسی و کسب و کار

۱٫ به‌جای این‌که کد بزنید، فقط مشغول مطالعه در مورد کدنویسی هستید

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

خوب است بدانید تا‌به‌حال کسی صرفاً با مطالعه در مورد کدنویسی، توسعه دهنده نشده است و شما هم از این قاعده مستثنی نیستید. تنها راهی که می‌توانید کدنویسی را یاد بگیرید، خودِ کدنویسی است؛ یعنی باید کد بزنید، به همین سادگی! درعین‌حال، خیلی هم نگران اشتباهات احتمالی نباشید؛ کدنویسی در هر زبانی که انتخاب کرده باشید، می‌تواند در درک مفاهیم کلی برنامه‌نویسی، توانایی حل مسئله و … به شما کمک کند. بنابراین خیلی مهم نیست که از کجا شروع می‌کنید، مهم خودِ شروع کردن است.

۲٫ جوری کدنویسی را یاد می‌گیرید که گویا قرار است امتحان بدهید

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

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

۳٫ سعی دارید در تنهایی کدنویسی را یاد بگیرید

برنامه‌نویسان برتر همواره با جامعهٔ زبان مورد نظر خود در ارتباط بوده و در نشست‌ها و گفتگوهایی که در دنیای واقعی و مجازی رخ می‌دهند، شرکت می‌کنند؛ برنامه‌نویسان تازه‌کار اغلب از مراوده و گفتگو با جامعهٔ برنامه‌نویسی هراس دارند اما واقعیت این است که جامعهٔ برنامه‌نویسان فقط خواهان رشد و پیشرفت شما به‌عنوان یک توسعه دهنده هستند و برقراری ارتباط با برنامه‌نویسان باتجربه، راهی است که می‌تواند به افزایش دانش و مهارت شما کمک کند.

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

۴٫ خیلی زود عصبی و خسته نشوید

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

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

۵٫ تفاوت میان حروف بزرگ و کوچک را نادیده می‌گیرید

در برنامه‌نویسی، جزئیات خیلی مهم‌اند؛ تفاوت میان حروف کوچک و بزرگ نیز یکی از همین جزئیات است. جزئیات متعدد دیگری نیز وجود دارند که باید مورد توجه قرار بگیرند؛ مثلاً این‌که مقدار صفر با Null یکسان نیست، عدد صفر با حرف O یکی نیست، کاراکتر – با ـ فرق دارد و غیره.در طول دوره های آموزشی برنامه نویسی کدفرند تمامی این جزئیات توضیح داده می شود.

۶٫ فکر می‌کنید برای موفقیت در برنامه‌نویسی حتماً باید ریاضیات بلد باشید

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

۷٫ فقط به تایپ کردن کدها فکر می‌کنید

تایپ کدها بخشی از برنامه‌نویسی است اما همهٔ آن نیست؛ گاهی ممکن است برای یافتن پاسخ سؤالی نیاز به جستجو و مطالعه داشته باشید و یا لازم باشد با مفاهیم جدیدی آشنا شوید. یک توسعه دهنده واقعی، تمام روز را مشغول کد زدن نیست بلکه وقت نسبتاً زیادی را برای درک مسائل فنی، تست موضوعات مختلف، امتحان کردن اپلیکیشن‌های مرتبط، مطالعه و … صرف می‌کند.

۸٫ زود ناامید می‌شوید و به راه خود ادامه نمی‌دهید

یادگیری کدنویسی -مخصوصاً اگر بخواهید از آن کسب درآمد کنید- راه طولانی و طاقت‌فرسایی است؛ رسیدن به مقصد این راه نیازمند نظم،‌ تلاش و گذر زمان است. بنابراین اگر هنوز به هدف نهایی خود نرسیده‌اید، دست از تلاش نکشید و تا رسیدن به جایگاهی که برای خود درنظر گرفته‌اید به تلاش سرسختانهٔ خود ادامه دهید.

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

www.codefriend.ir

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

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