All posts by ‌A1Gard

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

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

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

مقدمه

در این سری آموزش ها قصد داریم 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  همیشه در بالاترین جایگاه قرار داره از نظر استفاده دارد.

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

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

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

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

callback و بازگشت تابع در nodejs javascript

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

 

مقدمه

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

 

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

واما:

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

 

callback چیست؟

به یاد دارم اولین باری که با این مفهوم برخورد کردم در RCE بود که با مفهوم TLS callback  آشنا شدم واسم خیلی عجیب و جالب بود، حالا کار این TLS callback چی بود؟ این یه تابع بود که اطلاعات بیشتر

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

به نام یگانه دانای هستی

مقدمه :

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

 

برنامه   Pidgin

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

  • AIM
  • Bonjour
  • Gadu-Gadu
  • Google Talk
  • Groupwise
  • ICQ
  • IRC
  • MSN
  • MXit
  • SILC
  • SIMPLE
  • Sametime
  • XMPP
  • Yahoo!
  • Zephyr

طرز استفاده از این برنامه خیلی ساده است و آدرس https://www.pidgin.im/ و کم حجم کاربردی هستش

 

برنامه kerita

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

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

سایت این برنامه : https://krita.org/en/

 

برنامه yEd

برنامه ای بسیار قوی و کاربردی برای کشیدن فلوچارت و UML و … که نیاز شما نسبتاطلاعات بیشتر

نوشتن یک ربات تلگرام کامل در 50 دقیقه-‌فیلم آموزشیnodejs

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

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

 

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

 

  • دریافت پیام
  • پاسخ پیام
  • نمایش دکمه های پاسخ
  • مخفی کردن دکمه ها
  • ارسال عکس
  • ارسال فایل های سندی یا document
  • تعریف session و detect کردن مراحلی که کاربر در آن ها حضور دارد.
  • و برخی نکات کلیدی

ما در اینجا از لینوکس نسخه Ubuntu استفاده کردیم، شما میتونید معادل اون رو تو ویندوز یا mac osx انجام بدین، نحوه نصب پکیج هم مطرح میشه و این که چگونه یک ربات در botfather بسازیم!

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

دانلود تنها یک پوشه خاص از github

به نام خدا

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

 

برای این کار آدرس پوشه یا فولدر مورد نظر را را تایپ در سایت زیر وارد کنید و لذت ببرید:

 

با استفاده از این سایت هم میتونید دانلود و هم لینک دانلود تولید کنید.

 

موفق باشید و سربلند

مدل درختی ( والد فرزندی) در دیتابیس های no-sql مثل mongodb

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

مقدمه

فک کنم در حدود سه سال پیش بود در مورد مدل کاردینالیتی در دیتبایس های sql base صحبت کردیم در این مبحث که بازخورد خوبی داشت ، اما به قول صادق دیتابیس های اسکیوالی توسط ریاضی دانان طراحی شده و دیتابیس های nosql توسط برنامه نویسان، به شخصه از موقعی که با no-sql آشنا شدم حالم از دیتابیس های کلاسیک بهم میخوره و ولی به موقع دقیق تر و قشنگ تر در مورد no-sql ها من یا سایر x های 4xmen صحبت میکنیم و اما یکی از بحث هایی که در پایگاه داده ها مطرح هستش ارتباط هستش این ارتباط گاهی به صورت پدر و فرزندی یا مادر فرزندی میباشد به عکس زیر نگاه کنین تا بریم در مورد بحث صحبت کنیم:

 

در این مبحث فرض شده است شما با دیتابیس های کلاسیک و nosql آشنایی لازم و کافی را دارید

مقایسه و توضیحات

این مدل مدلی درختی میباشد در اصطلاح یا tree model در برنامه نویسی شما در تصویر بالا یک head به نام book  میبینید و زیر مجموعه programming را داراست در زیر مجموعه آن Databases , Languages می باشد و …

حال اگر این رو میخواستیم در دیتابیس های sql base طراحی کنیم بایستی جدولی به شکلاطلاعات بیشتر