All posts by ‌A1Gard

اول از همه کوچک ترین عضو مجموعه 4xmen بنده حقیر هستم. در ثانی یک توسعه دهنده هستم زمینه های تخصصی کارم :‌ Delphi, PHP, C++ ,Python, JavaScript, Unity game engine, C#, asm و علاقه مند به لینوکس، RCE ، کریپتوگرافی هستم. تا الان حضرت حق اینا رو به ما داده و هر وقت که بخواد ازمون میگیره دست خودشه. یا حق، با حق، تا حق

آموزش دارت: کار با رشته های متنی

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

مقدمه

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

دارت زبان برنامه نویسی flutter می باشد برای نوشتن برنامه های native یعنی با کد محلی برای android و ios هم زمان با طراحی متریالز.

رشته ها در دارت

کار با رشته ها در دارت

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

انواع تعریف رشته در دارت

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

تعریف به صورت heredoc مثل php در Dart

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

تعریف رشته به صورت runes

با پیشوند r میتوانید این کار را انجام دهید.

جمع دو رشته یا الحاق دو رشته در Dart

اطلاعات بیشتر

آموزش دارت: حلقه های تکرار و پیمایش

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

مقدمه

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

دارت زبان برنامه نویسی flutter می باشد برای نوشتن برنامه های native یعنی با کد محلی برای android و ios هم زمان با طراحی متریالز.

 

حلقه for در زبان برنامه نویسی دارت

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

توضیحات تکمیلی:

این حلقه در هنگام تعریف 3 پارامتر اصلی دارد :

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

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

 

به مثال زیر توجه کنید:

حلقه while در زبان برنامه نویسی دارت

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

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

حلقه  do while در دارت

این حلقه کاملا شبیه while بوده با این تفاوت که حداقل یک بار اجرا میشود به کد زیر توجه کنید:

 

پیمایش در زبان برنامه نویسی دارت

for .. in در زبان دارت

برای پیمایش یا به اصطلاح حرکت کردن در یک لیست یا شی object دقیقا مثلا js میتوانید از for .. in استفاده کنید. به ازای خواندن هر یک از اعضا آرایه یا یکی از خواص شی مورد نظر ، یکبار دستورات درون حلقه اجرا خواهد شد .
تعداد دفعات تکرار دستورات حلقه ، برابر با تعداد اعضای آرایه و یا تعداد خواص شی مورد نظر است . در این حلقه معمولا از یک متغیر به عنوان شمارنده یا اندیس آرایه استفاده می شود .

مثال:

 

forEach در دارت

این نوع حلقه برای پیمایش یک آرایه یا همان لیست به کار می آید و زمانی مناسب است که که شما مقدار های شمارنده را نمیدانید و هیچ شباهتی با foreach در php ندارد در واقع چیزی شبیه array_walk در php می باشد که با آن یک تابعی برای اعمال تغییرات روی تک ت اعضای یک لیست میتوانید انجام دهید به مثال ساده زیر توجه کنید:

در بالا f(e) یک تابع برای پرینت اعضا تعریف شده و مثال پیچیده تر زیر نیز می تواند از ابهام این موضوع جدید کاهش دهد

خروج از حلقه و یا ادامه دادن در دارت

دستورات break و continue در C و javascript و یا java معرف حضورتون هستند کار کلی این دو دستور به صورت زیر است:

beark: برای خروج کامل از حلقه در حال اجرا می باشد

break در دارت

 

continue: برای گذشتن از بدنه حلقه در گام جاری می باشد و ادامه دادن از سر حلقه

continue در دارت

 

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

اما مثال:

 

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

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

آموزش دارت: انواع شرط در زبان دارت , if , switch – case

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

مقدمه

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

دارت زبان برنامه نویسی flutter می باشد برای نوشتن برنامه های native یعنی با کد محلی برای android و ios هم زمان با طراحی متریالز.

 

if و else در زبان دارت 2

فلوچارت زیر نحوه ی عملکرد عبارت if-else را نشان میدهد.

if chart in dart

انواع if نوع if در دارت:

  • عبارت if
  • عبارت if…else
  • عبارت …if…else if

عبارت if در زبان دارت

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

آموزش دارت: معرفی عملگرهای: ریاضی – منطقی و مقایسه ای

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

مقدمه

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

دارت زبان برنامه نویسی flutter می باشد برای نوشتن برنامه های native یعنی با کد محلی برای android و ios هم زمان با طراحی متریالز.

 

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

 

توضیحات عملگر
منحصر پسوندی expr++    expr–    ()    []    .    ?.
منحصر پیشوندی -expr    !expr    ~expr    ++expr    –expr
ضرب و تقسیمی *    /    %  ~/
جمع و تفریق +    –
شیفت <<    >>
و بیتی AND &
 یای اختصاصی بیتی XOR ^
 یای بیتی OR |
آزمون بزرگ و کوچکی و … >=    >    <=    <    as    is    is!
برابر و نابرابری ==    !=
و منطقی &&
یای منطقی ||
اگر null نبود ??
شرط تک خطی expr1 ? expr2 : expr3
ابشاری ..
نسبت دادن =    *=    /=    ~/=    %=    +=    -=    <<=    >>=    &=    ^=    |=    ??=

 

نکته: assert به معنی ادعا کردن برای تشخیص درستی در مثال ها زین پس در اطلاعات بیشتر

آموزش دارت: تعریف توابع و انواع پارامتر ها

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

مقدمه

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

دارت زبان برنامه نویسی flutter می باشد برای نوشتن برنامه های native یعنی با کد محلی برای android و ios هم زمان با طراحی متریالز.

 

تعریف توابع در دارت

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

تعریف اولین تابع:

همانطور که میبینید در تابع تعریف شده بالا مقدار خروجی bool  تعریف شده و ورودی یک عدد از نوع int  می باشد دقیقا مثل c از return هم استفاده میشود برای بازگشت.

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

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

در کد بالا معنای expr <=  درواقع به معنای { return expr; }  می‌باشد و <= گاهی اوقات به معنای فلش چاق نیز معرفی می‌شود.

 

پارامتر ها

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

پارامتر های دلخواه میتوانند از نوع named یا positional  باشند، اما هر دوی آنها نمیتوانداطلاعات بیشتر

آموزش زبان دارت بخش دوم – متغییر ها، ثوابت و نکات کلیدی شروع

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

مقدمه

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

دارت زبان برنامه نویسی flutter می باشد برای نوشتن برنامه های native یعنی با کد محلی برای android و ios هم زمان با طراحی متریالز.

 

نکات کلیدی برای شروع دارت

  • تمامی متغییر ها در دارت شی هستند
  • متغییر نسبت دهی null می باشد و null خود نیز شی است
  • در انتهای هر می بایستی از ; استفاده نمایید.
  • اگرچه دارت حساس است روی نوع داده ها ولی شما رو مجبور تعریف دقیق آنها نمیکند به عنوان مثال number تعریف شود حتما نیاز نیست int تعریف شود.
  • در دارت list نوع داده برای ذخیره چندین متغییر با هم می باشد هماننده آرایه
  • بالاترین مرحله در تابع های main می باشد، همانند C
  • دارت از متغییر های سطح بالا مانند کلاس و … پشتیبانی میکند.
  • دارت شبیه جاوا نیست که ضروت داشته باشد کلید واژه های public, protected و private استفاده شود هر چیزی که با _ در توابه شروع شود داخلی و خصوصی محسوب میشود و در غیر این صورت عمومی و قابل استفاده در خارج از کلاس است.
  • متغییر تعریف کردن نام متغییر و توابع و کلاس ها در دارت شیوه اسم گذاری مانند C دارد متغییر ها و توابع  با _ و حروف شروع می‌شود و بعد از حرف اول میتوان از عداد نیز استفاده کرد.
  • ابزار Dart میتواند دو نوع مشکلی را گزارش کند: هشدارها و خطاها. هشدارها فقط نشانگر این نکته است که کد شما ممکن است کار نکند اما آنها از اجرای برنامه شما جلوگیری نمی کنند. خطاها می توانند زمان کامپایل یا زمان اجرا باشند. یک خطای کامپایل زمانی مانع اجرای کد در همه می شود.

 

dart logo

آموزش زبان برنامه نویسی دارت

 

کلمات کلیدی در دارت

abstract 1 deferred 1 if super
as 1 do implements 1 switch
assert dynamic 1 import 1 sync* 2
async 2 else in this
async* 2 enum is throw
await 2 export 1 library 1 true
break external 1 new try
case extends null typedef 1
catch factory 1 operator 1 var
class false part 1 void
const final rethrow while
continue finally return with
covariant 1 for set 1 yield 2
default get 1 static 1 yield* 2

کلماتی که با 2 نشانه گذاری شده اند جدید هستند و در دارت ۲ اضافه شدن و در همگام سازی کاربرد دارند.

تعریف متغییر در دارت

نحوه تعریف متغییر:

ابتدا نوع داده و سپس نام متغییر و سپس مساوی و و مقدار و در انتها ; قرار می‌گیرد.

دو مثال دیگر:اطلاعات بیشتر

آموزش زبان برنامه نویسی Dart بخش مقدماتی

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

مقدمه بر آموزش زبان دارت

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

 

  • در این آموزش فرض شده شما حداقل یک زبان برنامه نویسی کلاسیک مثل javascript , php , c++ , delphi یا … را بلد هستید.
  • در این آموزش سعی شده به زبان ساده پارسی با توجه به آنچه در نسخه Dart 2 معرفی شده پیش برویم.
  • تمامی موضوعات توضیحی داده شده سعی شده است دارای مثال باشد.
  • برای امتحان کردن آنلاین آموزش های از این صفحه استفاده کنید. ابزار آنلاینی میباشد که توسط سایت رسمی معرفی شده است.
  • هرگز بخش های از آموزش را به صورت سر سری رد نشود لذا آموزش خلاصه وار است و سعی شده نکات بسیار مهم در آن ذکر شود.
  • قبل از شروع آموزش باید توجه داشته باشید که:
    • دارت یک زبان برنامه نویسی مدرن است.
    • از Dart انتظار یک زبان کلاسیک را نداشته باشید.
    • شما باید حداقل به یک زبان برنامه نویسی دیگر مسلط باشید،
    • سعی شده concept هایی که در چهارچوبهای ذهنی شما در زبان های دیگر مورد دارت را روشن کنیم.
    • در هرجای آموزش احساس کردید متوجه نمیشوید، بیشتر ادامه ندهید و یا مباحث قبل را در صورت عدم مطالعه دنبال کنید.
  • اگر اشکال و یا ایرادی ار آموزش ها دیدید از یادآوری شما ممنونم و قطعا اصلاح خواهیم کرد.

 

 در آمدی بر Dart

دارت یک زبان برنامه نویسی با ویژگی های زیر است:

  1. دارت یک زبان برنامه نویسی مدرن است.
  2. دارت یک زبان برنامه نویسی سطح بالا است.
  3. دارت شبیه به زبان C می باشد
  4. dart را گوگل توسعه میدهد
  5. هدف دارت جایگزین کردن جاوااسکریپت که زبان داخلی مرورگرهای وب است می‌باشد.
  6. دارت در انتها به جاوا اسکریپت تبدیل میشود
  7. دارای سه پلت فرم به نام های: flutter , ماشین مجازی و وب میباشد.

dart

برنامه سلام به همگی در Dart

اکنون قصد داریم برنامه hello world! را با دارت بنویسیم تا آموزش فقط تئوری و خسته کننده نباشد، و سایر توضیحات را در بخش های بعدی با هم میخواینم.

همانطور کهاطلاعات بیشتر

چند تکنیک در مورد apt در ubuntu و زیر مجموعه هاش

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

مقدمه

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

افزایش سرعت در apt به اصطلاح Speedup

یکی از چیز هایی که برای من عجیب هست عدم استفاده از apt-fast  ، اگر شخصی apt-fast استفاده نکند، احساس میکنم در حال تهذیب نفس است، این برنامه open source نسخه ای پیشرفته تر از apt-get است و قابلیت دانلود هم زمان چند پکیج برای دانلود را داراست.

به عبارتی سرعت دانلود و نصب پکیج شما را گاهی تا 5 برابر افزایش میدهد، و شکل استفاده آن هم کاملا شبیه apt-get می باشد، برایاطلاعات بیشتر

ضرورت نشر محتوا در surface web و اجتناب از deep web

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

خواندن این موضوع به صاحبان کانال های تلگرامی و فعالین دیپ وب اکیداً توصیه می‌شود.

مقدمه

Surface web یا سطح نت اصطلاحاً به بخشی از وب اطلاق می‌شود که قابلیت جستجو و کنکاش عمومی را در سطح world wide web را دارای هستند، هر آنچه اطلاعات در دسترس عموم قرار دارد و قابلیت جستجو و index شدن در موتور های جستجو را دارا هستند در بخش سورفیس وب قرار دارند.

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

dark web: یا وب تاریک بخشی از دیپ وب میباشد، شبکه‌ای شخصی و پوشیده است که ارتباطات آن فقط به صورت ارتباط یک زوج معتمد یعنی کاربر به کاربر (دوست به دوست) یا (F2F) است که از پروتکل‌ها و پورت‌های غیر استاندارد استفاده می‌کند.دارک نت‌ها متمایز از دیگر شبکه‌های رایج کاربر به کاربر هستند به‌طوری‌که اشتراک‌گذاری به صورت anonymous (مخفی بودن آدرس IP) است. که معمولا با استفاده از تور یا شبکه پیازی به آن دسترسی خواهید داشت. که بخش های امنیتی جامعه پلیس های آگاهی مثل FBI شدیدااطلاعات بیشتر

معرفی ابزار آنالیز و بررسی کد ها| code analysis tool

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

مقدمه

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

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

 

  • CLOC

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

 

این نرم افزار به شکل زیر نصب میکند:

 

 

نحوه استفاده:

نمونه خروجی کد:

اطلاعات بیشتر

اجرای دائمی نرم افزار های nodejs به صورت startup , service

مقدمه

برنامه هایی که مبتنی بر nodejs نوشته می‌شوند، به طور معمول نیاز به اجرای دائمی دارند یعنی این شما باید حداقل مطئن شود یک instance یا نمونه از برنامه در حال اجرا است، برای این کار نیاز هست برنامه های شما باید به صورت سرویس اجرا بشوند برای این موضوع مشکل اساسی که پیش می آید این که سرویس شدن در هر سیستم عامل متفاوت است و برنامه هایی که بر اساس نود جی اس هستند برای startup شدن و سرویس شدن خود دارای ماهیت standalone نیستد وابسته به nodejs می باشند برای حل این مشکل پکیج هایی از جمله forever ،pm2 و … بوجود آمده اند.

PM2

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

مختصری از انتشار firefox quantum نسل جدید مرورگر firefox

مقدمه

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

معرفی firefox quantum

فایرفاکس کوانتم یا به قول توسعه دهنده هاش “قاتل کروم” این روزها یعنی در اواسط نوامبر 2017 در قالب نسخه 57 این مرورگر منتشر شده است و نگاه های کاربران و برنامه نویسان رو به خودش معطوف کرده است، گوگل همواره در پا به عرصه نهادن مسائل خوش شانس و متسعد بوده است، و گوی سبقت رو از رقبای خود دزدیده مثل کروم و یا اندروید مثال های واضحی در این مورد هستند، اما این ادعای فایرفاکس مبنی برای قاتل کروم در نگاه اول شاید خنده داراطلاعات بیشتر

تعویض نسخه nodejs به صورت آنی switch nodejs version

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

پیش در آمد

در بین نرم افزار های اوپن سورس با پویای به شدت بالا یکی از مسائل شما رو درگیر خواهد کرد نسخ مختلف و آپدیت های زود هنگام هستند، که گاهی آزار دهنده میشوند، در همین حین موضوع دیگری مطرح هست که موجبات افزایش اصطکاکت رو با تکنولوژی های بسیار پویا بوجود بیاورد آن هم مخازن های لینوکس هستند، درواقع یک نرم افزار برای ورود به مخازن رسمی لینوکس ها باید open source باشد به علاوه گاهی باید stable یا پایدار باشد و در نهایت بررسی ساختاری با مخازن هست که این موضوع باعث میشود که مثلا nodejs همیشه نسخه های ماقبل و قدیمی تر در مخازن توزیع های مختلف باشد و گاهی نیز نیاز به آن حس میشود که شما نسخه خود را upgrade و یا downgrade کنید و اگر بخواهید به این نسخه یا نگارش موجود در repository های توزیع مورد استفاده خود متکی باشد عملا درد سر ساز میشود و اما حتی اگر شما از ویندوز یا mac os استفاده میکنید دوست ندارید مدام نسخه های مختلف را دانلود و نصب مجدد کنید.

نصب چندین نسخه هم زمان و سویچ کردن آنی

برای این که به این موضوع بپردازیم ابتدا حتما اطمینان حاصل کنید یک نسخه از nodejs روی سیستمون نصب هست و حتما به npm توجه داشته باشید برای اطمینان از این قضیه دستور زیر را در ترمینال و یا cmd بزنید:

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

خب حال ما یک package داریم که باید اون رو به صورت سراسری نصب کنید به نام n که کار مورد نظر ما رو انجام میده دستور زیر را مانند بالا اجرا کنید:

برای نسخه های لینوکس،مک و اطلاعات بیشتر

نقدی بر عملکرد سالهای اخیر canonical در آستانه انتشار Ubuntu 17.10

مقدمه

canonical شرکتی چند ملیتی است که شخصی به نام Mark Shuttleworth یک کار آفرینی از افریقای جنوبی بنا نهاد، و اکنون به دست خانم Jane Silber به عنوان مدیر عامل هدایت میشود، مهم ترین محصول این شرکت سیستم عامل Ubuntu است که از سال 2004 ده ماه پیش از اولین انتشار ابونتو تاسیس شد. که فراز و نشیب های بسیار داشته و میشود گفت انقلاب مهاجرت کاربران به لینوکس را این سیستم عامل مدیون شرکت کنونیکال می باشد، اما عملکرد این شرکت در راستای فناوری سیستم عامل سینوسی بوده و اکنون وضعیت نا مشخصی دارد.

 

عرضه Ubuntu

در عصری دجیتالی که Ubuntu عرضه شد(در سال 2004) ، این توزیع لینوکس با رویکرد ساده کردن کار با لینوکس به خصوص در روند نصب سرسام آور آن در بین کاربران کامپیتور های شخصی با مشتق شدن از Debian تولید شد، با توجه تاخیر مایکروسافت در ارائه ویستا ( نوامبر سال 2006) و شکست ویندوز ویستا خیل عظیمی از کاربران سراسر دنیا برای رفع نیاز خود به این سیستم عامل محبوب روی آوردند در زمانی که ویندوز در قعر محبوبت قرار داشت و کاربران که از وضعیت ویندوز رضایت کافی را نداشتند، ابونتو فرصت ارائه خود را پیدا کرد و جهش عظیمی در این دوره خود را میدون عدم مدیریت صحیح تیم مایکروسافت شد. اما با آمدن ویندوز 7 این مهاجرت به Ubuntu کند تر شد ولی همچنان وجود داشت. در این حین نسخه های server و cloud آن نیز منشتر شد و برجسته ترین نسخه ابری لینوکس را با توان خود ارائه کرد و به سوی انتشار سیستم عامل گوشی های هوشمند نیز رفت و تا کنون پر مصرف ترین سیستم عامل Desktop متن باز میباشد ولی جالب این است که لینوس تروالدز توسعه دهنده هسته لینوکس یعنی پدر این سیستم عامل در کنفراسی گفت هرگز از نسخه های Ubuntu و Debian استفاده نکرده و آن را ظاهرا قبول ندارد. ولی همچنان اطلاعات بیشتر

dirty open source | اوپن سورس کثیف (روش گوگل)

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

این نوشته اعتراضی به عملکرد کثیف گوگل در این زمینه می باشد

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

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

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

بهتر است به این متن توجه کنیم که گوگل در این صفحه درج کرده:

Google believes that open source is good for everyone. By being open and freely available, it enables and encourages collaboration and the development of technology, solving real world problems.

این کلمه for everyone خیلی قشنگ است ولی شرکت گوگل لطفا بنویس for every one except Iranian people اینگونه حداقل به جای دروغ حقیقت را نوشته اید، پرچم دار code.google.com پذیرای هزاران پروژه اوپن سورس می باشد حتی اجازه خواندن صفحات را به ما ایرانیان نمیدهد چه برسد به دانلود پروژه ها، بستن مستندات اندروید به روی ایران کمترین لطف شرکت گوگل در حق کاربران ایرانی بود.

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

 

۵. بین افراد و گروه‌ها تبعیضی گذاشته نشود

اجازه‌نامه نباید بین افراد یا گروه‌ها تبعیضی بگذارد.

۶. هیچ تبعیضی در نوع استفاده از نرم‌افزار وجود نداشته باشد

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

۷. توزیع اجازه‌نامه

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

 

ویا تعریف نرم افزار آزاد: ( منبع)

  • نرم‌افزار باید شامل کد منبع باشد و این کد منبع را باید بتوان تغییر داد و مجدداً منتشر کرد.
  • مجوز نباید در برابر افراد یا گروه خاصی تبعیض قائل شود.
  • مجوز نباید کاربر را برای رسیدن به یک هدف خاص محدود کند.
  • مجوز نباید مختص به یک محصول خاص باشد.
  • ….

 

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

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

معرفی ادیتور فوق العاده atom editor | اتم

بسم رب الشهدا

مقدمه

یکی از دغدغه های هر برنامه نویس یک ادیتور خوب است npp یا همون notepad++ یکی از بهترین ادیتور های سالهای پیش بود به مراتب sublime نیز در نوع خودش ادیتور خوب و مورد قبولی بود اما به نظر من نسل جدید ادیتور ها با atom به صورت متن باز opensource در حال انقلاب هستش، گاها پیش میاد که میپرسن یک ادیتور سبک در حد npp در لینوکس چی هستش پس اکنون در مورد atom با هم صحبت کنیم تا با این editor کم نظیر بیشتر آشنا بشیم. از vscode مایکروسافت هم تو همین زمینه ها میشه یاد کرد که مثل اتم قابل قبول هستش.

رویکرد اتم

در ابتدا رویکرد این editor میتونه قابل توجه باشه رویکرد  کلی این ادیتور در شعارش کاملا پیداست:

Atom is a text editor that’s modern, approachable, yet hackable to the core—a tool you can customize to do anything but also use productively without ever touching a config file.

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

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

ویژگی های بارز Atom

اگر در مورد این ویژگی ها بدون اغراق بخواهیم صحبت کنیم میتونیم از موارد زیر نام ببریم:

  • مستقل از سکوی بودنش برای تمامی سیستم عامل های Desktop مثل ویندوز، لینوکس و MacOSX قابل دسترس می باشد
  • دسترسی به package manager یعنی مدیریت پکیج های نصب شده به سادگی در سیستم و قابلیت ساخت پیکیج آسان
  • autocompletion هوشمند که به صورت سریع در دسترس و با قابلیت تشخیص هوشمند
  • فایل منیجر قابلیت جستجو و نمایش درختی فایل ها در ادیتور سریع و در دسترس
  • قابلیت بخش بندی تکه های صفحه و چند قسمت کردن ادیتور
  • قابلیت اعمال تم های مختلف و …

مزایای Atom

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

  • open source بودن و اطمنیان از این که توسعه آن هرگز متوقف نخواهد شد و ۱۰۰٪ رایگان استفاده میکنید
  • package manager این ویژگی منحصر به فرد اتم است که دارای پیکج منیجر مانند استور ها میباشد و قابلیت این را میدهد درون خود نرم افزار به جستجو و نصب پکیج های خود اقدام کنید و از آن لذت ببرید.
  • مستقل از سکو بودن برعکس npp که فقط مخصوص ویندوز است
  • دارای code template است سرعت برنامه نویسی را افزایش میدهد
  • شبکه بندی و قسمت قسمت کردن بخش های IDE
  • قابلیت چرخیدن در پروژه و فایل ها و فولدر ها حتی فایل های زیپ و آرشیو
  • سبک بودن و بالا آمدن سریع
  • ساپورت ورژن کنترلر به صورت خیلی روان و GUI در خود editor
  • قابلیت اعمال تم های متخلف dark و light و … دارای هزاران تم اوپن سورس برای هر سلیقه ای
  • قابلیت اتصال به terminal سیستم عامل
  • قابلیت استفاده بهینه برای تمامی زبان های رایج opensource و افزودن ابزار کمک حال assistant برای آنها با یک کلیک
  • قابلیت سفارشی سازی 100% نرم افزار
  • قالبت اتصال به گیت هاب و انجام کارهای git hub از درون نرم افزار
  • استفاده از بستر گیت هاب برای پکیج ها که باعث میشود نه تحریم باشیم نه فیلتــر باشد که به راحتی به اهداف برسیم

اما ویژگی دیگر این ادیتور پیش بینی اشکالاتی که در طول کار با این ادیتور ممکن پیش بیاد به تصویر زیر توجه کنید:

مثلا اگر خطای رخ بده پیش بینی error و ارجاع دادن شما به سمت یک موضوع در github میتونه شما رو کمک کنه.

 

یکی از ویژگی های بارز این زمینه مثلا استفاده از UI ها برای گیت هستش مثلا به package git-time-machine توجهاطلاعات بیشتر

نصب webmin سرور Ubuntu برای هاستینگ

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

مقدمه

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

آماده سازی سیستم عامل

برای آماده کردن Ubuntu خود دستورات زیر رو تاییپ کنید تا مخازن مربوط به این پکیج به شما اضافه بشه:

دستور و در ترمینال یا ssh باید وارد کنید

 

و بعد در خط انتهایی این نوشته رو اضافه میکنید:

توجه داشته باشید آسیبی به سایر خطوط نزنید

برای ذخیره کردن Ctrl+x بزنین و بعد دکمه y به معنی اطلاعات بیشتر

اجرای هم زمان nodejs در کنار apache2 در سرور php

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

مقدمه

یکی از سوالاتی که ذهن کسانی که با node.js کار میکنند رو در گیر میکنه استفاده هم زمان در کنار سرور هایی که روی اونها apache نصب هستش و مشکل دقیقا زمانی شروع میشود که شما دوست دارید هر دو بر روی پورت 80 اجرا بشوند و چرا که express.js  نیز همواره قصد داره یه پورت جدید رو شنود کنه و در کنار آدرس وبسایت مثلا :8080 نمایش داده میشه، برای رفع این مشکل باید چه کاری کنیم؟

 

راه حل ها

در اینجا ۲ راه حل اساسی برای نمایش هر دو سرور در پورت 80 و یا 443 وجود دارد که هر دو رو راه حل مبتنی بر proxy میباشد تا این مشکل برطرف شود:

فعال کردن پروکسی بر روی آپاچی که توضیح آن را در ادامه میدهیم

فعال کردن پروکسی در node.js که شما رو اطلاعات بیشتر

معرفی فونت (قلم) VazirCodeX

بسم رب الشهدا

یکی از دغدغه برنامه نویسان استفاده از فونت مناسب در IDE می باشد من خودم پیش از این با راهنمایی های استاد عزیز SadeghPM از فونت VazirCode استفاده میکردم ولی اشکالی که این فونت داشت عدم ساپورت emoji در IDE بود بنا بر این تصمیم گرفتم در این فونت تغییراتی رو اعمال کنم تا هم حالت mono بودن اون حفظ بشه همه کارکتر های زبان شیرین پارسی رو به دقت ساپورت کنه و هم Emoji ها رو در IDE نمایش بده تا توسعه دهنده گان عزیز پارسی زبان از این فونت در IDE شون استفاده کنند و لذت ببرند.

 

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

با تشکر از SadeghPM و تیم Fontforge

 

کمی درباره آپاچی و چند دستور کلیدی در آپاچی برای صاحبان سایت و سرور

مقدمه

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

در کارکرد آپاچی

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

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

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