وبلاگ شخصی امیر عماد محمودپور

برنامه نویس تحت وب

وبلاگ شخصی امیر عماد محمودپور

برنامه نویس تحت وب

پایگاه آموزش رایگان برنامه نویسی

۳ مطلب در ارديبهشت ۱۳۹۵ ثبت شده است

۲۸
ارديبهشت

Install/Upgrade to Linux Kernel 4.6-RC4 in Ubuntu/Linux Mint Systems

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


روز گذشته لینوس توروالدز رسما انتشار نسخه‌ی نهایی کرنل ۴.۶ را اعلام کرد. مدت زمان زیادی است که منتظر انتشار نسخه‌ی نهایی ۴.۶ کرنل لینوکس هستیم که هم‌اکنون از طریق سیستم‌عامل‌های گنو/لینوکس قابل دریافت است. 


پس از دو ماه توسعه‌ی مداوم، اکنون نسخه‌ی نهایی کرنل ۴.۶ لینوکس همراه با ویژگی‌های جذاب، درایور‌های بروزرسانی شده و البته بسیاری از بهبود‌ها معرفی شده است.


ویژگی امیدوارکننده کرنل ۴.۶ لینوکس شامل تعبیه‌ی فایل سیستم OrangeFS است که از USB 3.1 با پروتکل SuperSpeed Plus پشتیبانی می‌کند. این ویژگی جدید می‌تواند سرعتی بالاتر از ۱۰ گیگابایت بر ثانیه را ارائه دهد. علاوه بر این، پشتیبانی از کلید‌های حفاظتی برای حافظه‌های اینتل نیز اکنون به این کرنل اضافه شده است.


علاوه بر این امکانات جدید، کرنل ۴.۶ لینوکس با Kernel Connection Multiplexor همراه شده که در اصل کامپوننتی است که بصورت خاص برای شتاب‌دهی به پروتوکل‌های لایه‌ی کاربرد طراحی شده است. این کرنل همچنین از رمزنگاری 802.1AE MAC نیز پشتیبانی می‌کند. از جمله پروتکل‌های دیگری که نسخه‌ی جدید کرنل لینوکس پشتیبانی می‌کند می‌توان به پروتکل BATMAN V و pNFS SCSI اشاره کرد.


در نهایت، کرنل ۴.۶ لینوکس از مدیریت کش بین CPU و GPU نیز پشتیبانی می‌کند. بسیاری از درایور‌ها بروزرسانی شده‌اند و تعداد زیادی از باگ‌ها دیگر در این نسخه وجود ندارند. هم‌اکنون شما می‌توانید کرنل ۴.۶ لینوکس را از kernel.org دریافت کنید.


آموزش نصب : 

سیستم های 32 بیتی :


دانلود پکیج های  .deb

$ wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.6-rc4-wily/linux-headers-4.6.0-040600rc4_4.6.0-040600rc4.201604172330_all.deb $ wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.6-rc4-wily/linux-headers-4.6.0-040600rc4-generic_4.6.0-040600rc4.201604172330_i386.deb $ wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.6-rc4-wily/linux-image-4.6.0-040600rc4-generic_4.6.0-040600rc4.201604172330_i386.deb


نصب پکیج های دانلود شده : 

$ sudo dpkg -i linux-headers-4.6*.deb linux-image-4.6*.deb

ریبوت سیستم :‌

sudo reboot


سیستم های 64 بیتی :


دانلود پکیج های  .deb

$ wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.6-rc4-wily/linux-headers-4.6.0-040600rc4_4.6.0-040600rc4.201604172330_all.deb $ wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.6-rc4-wily/linux-headers-4.6.0-040600rc4-generic_4.6.0-040600rc4.201604172330_amd64.deb $ wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.6-rc4-wily/linux-image-4.6.0-040600rc4-generic_4.6.0-040600rc4.201604172330_amd64.deb


نصب پکیج های دانلود شده : 

$ sudo dpkg -i linux-headers-4.6*.deb linux-image-4.6*.deb

ریبوت سیستم :‌

sudo reboot


برای Unistall : 


sudo apt-get remove 'linux-headers-4.6*' 'linux-image-4.6*'
  • امیر عماد محمودپور
۲۷
ارديبهشت

برای حل این مشکل مراحل زیر را طی کنید :‌


توجه داشته باشید ویرایشگر nano باید برای روی سیستم شما نصب شده باید در غیر این صورت با ویرایشگر vi باید وارد بشید و اینکه دسترسی روت به سرور هاست مورد نظر داشته باشید 


nano /usr/my.cnf


حالا در آخرین خط یک کد وجود داره به به صورت پیش فرض به صورت زیر هست


sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

این خط را حذف کنید و خط زیر را جایگزین کنید

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

حال Mysql را با دستور زیر restart کنید : 

/etc/init.d/mysql restart
  • امیر عماد محمودپور
۲۷
ارديبهشت

زبان برنامه‌نویسی ++C از کلاس‌های حافظه‌ی‌ (Storage Classes) مختلفی برای تعریف متغیرها پشتیبانی می‌کند.

      

کلاس حافظه‌ی اتوماتیک (auto)

این کلاس اصلی‌ترین کلاس حافظه‌ی زبان ++C محسوب می‌شود. متغیرهایی که توسط این کلاس تعریف می‌شوند، با خروج از محدوده‌ی تعریف به طور خودکار از بین می‌روند. بنابراین تمامی متغیرهای عادی از این نوع کلاس هستند. یعنی شما برای مشخص کردن کلاس حافظه اتوماتیک نیاز به انجام کار خاصی ندارید. اما برای تاکید بر اتوماتیک بودن کلاس حافظه، می‌توانید از کلمه‌ی کلیدی auto استفاده کنید. به عنوان نمونه، دو عبارت زیر هم ارز هستند:

      

int n;

auto int n;

      

    توجه: مفهوم کلمه‌ی کلیدی auto در 11++C و بعدتر تغییر یافته و به معنی کلاس حافظه‌ی اتوماتیک نیست.

      

کلاس حافظه‌ی استاتیک (static)

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

      

void func( )

{

  static int y = 1;

  cout << y << "\t";

  y *= 2;

}

  

void main( )

{

  func( );

  func( );

  func( );

}

      

    خروجی برنامه:

      

1 2 4

      

    در اولین فراخوانی تابع func، برای متغیر y حافظه اختصاص داده می‌شود. خط آخر تابع مقدار 2 را در y قرار می‌دهد. اما با خروج از تابع متغیر از بین نمی‌رود. بار بعد که تابع فراخوانی شد، مقداردهی اولیه y (یعنی 1)در نظر گرفته نمی‌شود. در نتیجه عدد 2 چاپ می‌شود و الی آخر. حافظه‌ی اختصاصی برای y فقط زمانی آزاد خواهد شد که اجرای برنامه تمام شود.

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

      

void func( )

{

  static int y;

  y = 1;

  cout << y << "\t";

  y *= 2;

}

void main( )

{

  func( );

  func( );

  func( );

}

      

    خروجی برنامه:

      

1 1 1

      

  

کلاس حافظه‌ی ثبات (register)

زمانی که متغیری از نوع کلاس حافظه‌ی ثبات تعریف شود، حافظه برای متغیر به جای حافظه‌ی اصلی(RAM) از حافظه‌ی پردازنده‌ی مرکزی (CPU) اختصاص داده می‌شود. در نتیجه سرعت خواندن و نوشتن متغیر بالا می‌رود. از این نوع متغیرها عموما برای شمارنده‌ی حلقه‌ها استفاده می‌شود، تا سرعت اجرای حلقه بالاتر رود.

      

void main( )

{

  register int i;

  for( i = 0 ; i < 10 ; i++ )

  {

    cout << i * i << "\t";

  }

}

  

  

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

      

کلاس حافظه‌ی خارجی (extern)

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

      

file1:

int n;

  

file2:

extern int n;

cout << n;

  

  

توجه:

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

    1 - کلاس حافظه‌ی خارجی برای متغیرهای عمومی استفاده می‌شود.

    2 - دو فایلی که با هم تبادل متغیر می‌کنند باید از یک پروژه باشند.

      

کلاس حافظه‌ی mutable

این کلاس حافظه در تعاریف کلاس‌ها و اشیاء کلاس کاربرد دارد. زمانی که یک شی‌ء از کلاسی به صورت constتعریف شده باشد، امکان تغییر اعضای آن وجود ندارد. اما اگر عضوی با کلمه‌ی کلیدی mutable معرفی گردد، این امکان فراهم می‌شود. به عنوان مثال:

      

  

class MyClass

{

    ...

  public:

    ...

    int a;

    mutable int b;

    ...

};

  

int main( )

{

  const MyClass sample;

  sample.a = 1;  //  مجاز نیست

  sample.b = 2;  //  مجاز است

  ...

}


  • امیر عماد محمودپور