فرق بین کامپایل استاتیک و داینامیک
قبل از اینکه فرق بین ایستا (استاتیک) - Static و پویا (داینامیک) - Dynamic را بدانیم لازم است در رابطه با چرخهٔ زندگی نوشتن یک برنامه و اجرای آن آشنا شویم. هر برنامه برای اولین بار توسط یک محیط توسعه (Editor) یا IDE توسط برنامهنویسان انتخاب و به صورت فایل متنی قابل ویرایش میباشد. سپس فایل متنی که شامل کدهای نوشته شده توسط برنامهنویس تحت زبان برنامهنویسی مانند C، C++ و غیره... میباشد توسط کامپایلر به کد شیء ای تبدیل میشود که ماشین بتواند آن را درک کرد
سادهترین راه برای افزودن کد سفارشی به سایتهایی که بر پایهٔ وردپرس ساخته شدهاند، بدون شکستن کد آن چیست؟
زبان برنامهنویسیِ ++C یکی از محبوبترین زبانهای برنامهنویسی است. آخرین آمار نشان میدهد که این زبان با سرعت بسیار زیادی در حال توسعه و پوستاندازی است.
این زبان، علیرغم اینکه بیش از 40 سال از عمرش میگذرد، همچنان زبان انتخابی برای بسیاری از برنامهنویسان در سراسر جهان است. برای بسیاری از موارد مانند برنامههای کاربردی دستکاری تصویر، بازیهای سه بعدی، شبیه سازیها، مرورگرها
هنگامیکه شما برای اولین بار از C به CPP مهاجرت می کنید، یا اصلا برنامه نویسی را قصد دارید با CPP شروع کنید، با مفاهیم متعددی روبرو خواهید شد که شاید برای شما جالب باشند که بدانید، این ایده ها چطور شکل گرفتند، چطور به CPP افزوده شدند و اهمیت آن ها در عمل (هنگام برنامه نویسی و توسعه نرم افزار) چیست. در این پست وبلاگی IOStream، به این خواهیم پرداخت که ایده Overloading و Template و Auto Deduction چطور از CPP سر در آوردند.
همانطور که شما ممکن است تجربه کرده باشید، هنگامیکه برنامه نویسی و توسعه
معرفی نسخهبندی معنایی ویرایش ۲.۰
در دنیای مدیریت نرمافزار مکان مخوفی به نام «جهنم وابستگی» (dependency hell) وجود دارد. هر چه سیستم شما بزرگتر باشد و بستههای (package) بیشتری با نرمافزار شما یکپارچه شده باشند، احتمال بیشتری وجود دارد که روزی خود را دراین گودال ناامیدی بیابید.
در سیستمهایی با وابستگیهای زیاد، انتشار بستهٔ جدید به زودی میتواند تبدیل به یک کابوس شود. اگر ویژگیهای وابستگیها بسیار جزئینگرانه باشد، در خطر قفل نسخه (version lock) خواهید بود (ناتوانی برای بروزرسانی ی
توضیحات موردنیاز، قبلاً در اینپیوند داده شده. حال بیاید ببینیم در عمل چگونهاست ؟
Static Library یا کتابخانههای استاتیک :
معمولاً تحت عنوان Archives هم شناخته میشوند، یک Static Library شامل مجموعهای از Object-Fileها هست. Object-Fileها سورسهای کامپایل شدهٔ ما به زبانماشین هستند. این فایلها قابل اجرا نیستند چراکه هنوز کتابخانههای موردنیازشان Link نشده. برای کامپایل بهصورت Object-File از فلگ -c استفاده میکنیم :
$> cc -c func.c
$> cc -c main.c
$> cc *.o -o o
این چشمانداز احتمالاً برای دوستداران کتابخانهٔ قدرتمند Qt و طرفدارانش جذاب باشد! بنابراین من سعی کردهام تا نتایج پست رسمی کیوت را در رابطه با چشمانداز فنی برای آیندهٔ کیوت نسخهٔ ۶ است در اختیار شما قرار دهم. تقریباً ۷ سال پیش کیوت نسخهٔ ۵.۰ منتشر شد! از آن زمان بسیاری از چیزها در دنیای اطراف ما تغییر پیدا کرده است. و اکنون وقت آن رسیده است که چشمانداز جدیدی را از نسخهٔ جدیدتر تعریف کنیم. بنابراین در این پست ما به معرفی مهمترین مواردی که به کیوت ۶ مرتبط است را میپردازیم.
به نق
سلام وقت بخیر,
گیت هاب پیج
گیتهاب پیج یک سرویس میزبانی وب است که توسط Github اراعه شده است که با استفاده از آن می توانید حتی صفحاتی Static را در پلتفرم وب میزبانی کنید و حتی ابزار هایی مانند Jekyll را می توانید روی این بستر (Github Pages) پیاده و اجرا کنید که در قسمت های آینده در مورد آن توضیح خواهم داد.
میزبانی وب سایت هایی که بر پایه Github Pages هستند بصورت رایگان هست و دیگر نیازی به دامین, هاست و سرور وجود ندارد.
حساب های گیت هاب
تمام حساب هایی که در سایت گیت هاب وجو
با سلام وقت بخیر,
در این مطلب میخواهیم در مورد روش کارکرد پیام رسان ها بیشتر بدانیم و با یکدیگر کد یک پیام رسان ساده را پیاده و بررسی کنیم.
طرز کار کرد پیام رسان
در نظر داشته باشید که هر پیام رسانی که بر ساختار ها پیاده شده باشد از دو قسمت تشکیل شده است.
نرم افزار اصلی برای مدیریت درخواست ها (سرور)
نرم افزار برای کاربران (کاربر)
به نرم افزار اولی سمت SERVER خواهیم گفت و به بعدی سمت CLIENT خواهیم گفت.
روم یا تالار گفتگو
ما تنها یک اتاق برای گف
زبان نشانهگذاری Markdown یا به اختصار MD همانند زبان HTML برای طراحی قالب متن استفاده میشود. به گمانم که قبلاً نمونههای زیادی را تحت عنوان README.md شنیدهباشید. مانند نمونهٔ زیر :
استفاده از این قالب بسیار ساده است، حال بخشی از نحوهٔ نگارش فایلهای MD را میگوییم.
برای نوشتن سرنویسها (Header) :
Header1
=======
# Header1
## Header2
### Header3
برای "خطجدید" (NewLine) از دو کاراکتر Space در انتهای هر پاراگراف استفاده میکنیم و یا از دو/n (توسط کلید ReturenKey) استف
بارها بوده که برنامهای را نوشتهایم، روند کامپایل و اجرا به خوبی و خوشی انجام میشود. امّا در مرحلهٔ اجرای برنامه، خروجیهای نامناسبی پدیدار میشود. که متأسفانه چیزی نیستند که ما میخواهیم. خب برای حل این مشکل دو راه پیشرو میباشد :
بازبینی کد و انجام تست برای یافتن محل مشکل.
استفاده از ابزارهای خطایابی (Debugging).
بازبینی کد و انجام تست برای یافتن محل مشکل
برای اینکار فریورکها و کتابخانههای زیادی موجود میباشد، مثلاً کتابخانهٔ تستنویسی (Test Case) به اسم Catc
چندی پیش یکی از دوستان درمورد کتابخانهٔ zlib از من سوأل پرسیده بود که جالب شد برایم تا نگاهی بکنم. zlib یک کتابخانهٔ فشردهسازی بر اساس الگوریتم DEFLATE هست که خود این الگوریتم تلفیقی از LZ77 و الگوریتم Huffman هست و عمل فشردهسازیدرحافظه را انجام میدهد، اطلاعات بیشتر درمورد اینا خواستید از اینجا استفاده کنید. این کتابخانه یک قسمت مهم از پلتفرمهای معروفی همچون GNU/Linux , iOS و.. هست.
تستی که با این کتابخانه انجام دادم واقعاً برایم جالب بود، یک فایل متنی ۶۰۰ مگابایتی را به ۱۲۱ مگابایت
فایلها/تغییرات پروژه را چطوری کنترل کنیم ؟
در وهلهٔ اوّل شاید بگید چه نیازیه ؟ خب برنامه رو مینویسیم و میریم دیگه !. درسته برنامهاتون را مینویسید و میروید؛ امّا به کجا چنین شتابان ؟ آیا همیشه برنامهٔ شما کوچکخواهد بود ؟ آیا قراره برنامهٔ شما در صد خط تمام بشه ؟ یا اینکه کلاً قصد توسعهاش رو دیگه ندارید ؟ خب شاید یکی دیگه داشت :).
فرض کنید برنامهٔتان را نوشتید :
void parsing(int argc, char **argv){
top = 0;
for (unsigned i=1; i < (unsigned)argc; i+=2){
list
خب ! Build System چیست ؟
تمام برنامههایی که مینویسیم، معمولاً یک main.c دارند که نقطهٔشروع (start point) برنامهٔما هست. آیا همیشه همین یک فایله ؟ آیا همیشه نیازه که به یکصورت برنامه را کامپایل کنیم ؟ خب مسلماً جواب "نه" هست. چرا که ممکنه برنامهٔ شما دارای دهها فایل داشتهباشه، و نیاز داشتهباشید که هر فایل رو به صورتخاصی با فلگهای خاصی کامپایلکنید. اینجاس که "بیلد سیستم"ها وارد کار میشوند.
به احتمال زیاد نمونههای زیادی مشاهده کردید که وقتی یک سورسیرا (source) از مخازن آنل
مکانیسم Role Management در ASP.NET Identity کمبودهای بسیاری دارد، از جمله اینکه جهت مشخص کردن سطح دسترسی، نام Role ها میبایست در صفت Authorize نوشته شده و Hard Code شود. این بدان معناست که برای انجام هر گونه تغییر در کنترل دسترسی مجبور خواهید بود سورس برنامه تان را دستکاری کنید. همچنین، عدم وجود امکانی برای ویرایش کاربران و Role ها، کار کردن با این مکانیسم را مشکل می کند.
در راستای حل این مشکلات و کمبودها، ما یک کیت توسعه نرم افزار (SDK) به نام Permission Control System طراحی و ارائه کرده ا
کامپایلر Cling یک مترجم تعاملی برای سیپلاسپلاس است، این مترجم تحت بالاترین کتابخانههای Clang و LLVM ساخته شده است. در واقع از آنجایی که کامپایلر Clang از آخرین ویژگیها و استانداردهای زبان سیپلاسپلاس پشتیبانی میکند، Cling اجازه میدهد تا توسعهدهندگان اسکریپتهای خود را با استفاده از C و C++ بنویسند. اگر شما به طور مستقیم مترجم را اجرا کنید، یک محیط زنده برای آغاز برنامه نویسی با سیپلاسپلاس را خواهید داشت که به عنوان بخشی از استاندارد نحو سی و سیپلاسپلاس به شمار میآید. همچنین میتوا
دربارهٔ کامپایلر Zapcc
کامپایلر Zapcc یک کامپایلر بر پایه Clang است که با هدف کامپایلهای سریعتر طراحی شده است. این کامپایلر با استفاده از حافظه نهان (Cache) و استفاده از معماری سرویسگیرنده-سرویسدهنده پیاده سازی شده است که یک کامپایلر مدرن و جدیدی به شما میآید که برای اهداف زیر ساخته شده است:
ساخت سریع: تسریع در جمع آوریهای قابل توجه برای هدرهایی که دارای قالبهای سنگین در سی پلاس پلاس میباشند مانند LLVM، WebKit، ScyllaDB
بر پایه Clang/LLVM: این کامپایلر بر پایخ Clang و
برای بسیاری از توسعه دهندگان نرم افزار کار کردن بدون کنترل نسخه غیر قابل تصور است. فواید کنترل و پیگیری تاریخچه تغییرات کدها برای درک کردن دنیای توسعه نرم افزار بسیار بالاست. با توجه به این نباید از نتایج به دست آمده از تحقیق انجام شده توسط DevOps که استفاده از تاریخه کدها بسیار بالاست شگفت زده شد.
اما پرسیدن در مورد کنترل نسخه دیتابیس موضوع دیگری است. تنها ۵۸ ٪ از کسانی که در این تحقیق شرکت کرده اند گفته اند که کنترل نسخه دیتابیسشان را رصد میکنند. البته به طریقی این قابل درک است که چرا کن
برنامهنویس تنها در این عنوان خلاصه نمیشود و لازم است بدانید که برنامهنویسان در چند دسته متفاوت وجود دارند که برخی از آن ها به صورت Back-End و برخی Front-End فعالیت میکنند. در کل به کسانی که توانایی برنامهنویس در بخش Back-End را دارند به آنها Back-End Developer میگویند. همچنین برنامهنویسانی که توانایی توسعه در بخش طراحی رابطکاربری و تجربهکاربری را با عنوان Front-End دارند Front-End Developer میگویند.
در نظر داشته باشید که توسعهدهندگان و طراحان بخش تجربهکاربری (UX) و رابطکاربری
شما برنامه نویس هستید یا توسعهدهنده؟ آیا تا به حال فکر کردهاید که چه نوع عنوانی متناسب با مهارتهای شماست؟
من یک (توسعه دهنده فول-استک هستم)
من یک (برنامهنویس هستم)
من یک (توسعهدهندهٔ وب هستم)
من یک (توسعهدهندهٔ فرانت اند هستم)
من یک (توسعه دهندهٔ iOS هستم)
و عناوین بسیار زیاد من در آوردی دیگر که ممکن است منظور دقیق از مهارتهای شما را به درستی مطرح نکنند!
من میخوام در رابطه با اصطلاحاتی صحبت