مانند هر لهجه نرم افزارنویسی، کادرورک، سرمشق یا این که راه و روش دیگری، طراحی اپلیکیشن نرم افزارنویسی تابعی هم یکسری معایب داراست. در اینجا بعضی از مشکلاتی که ممکن میباشد هنگام به کارگیری از نرمافزارنویسی تابعی با آنها رو به رو گردید را بیان میکنیم. بعضی از این ایرادات مرتبط با شیوه به کار گیری ما از مدل تابعی میباشد. ولی بیشتر این اشتباهات مرتبط با جو فعلی صنعت قابل انعطاففزار میباشد و خیر خطاها ذاتی شیوه تابعی تایپ کردن نرم افزار.
1. منابع یادگیری متعددی برای اپلیکیشننویسی تابعی نیست. ولی این نقص هر سال کمتر میگردد چون محبوبیت نرم افزارهای تابعی بیشتر و بیشتر می شود. به حافظه داشته باشید که نیازی به مطرح شدن اصطلاحات ترسناک ریاضی وجود ندارد.
2. اگرچه تایپ کردن توابع pure سهل میباشد، ولی تولید آن ها برای کسب به یک نرم افزار بی نقص سخت میباشد. به خصوص هنگامی برای نخسین بار آغاز به تایپ کردن نرمافزارهای خویش بدین مدل میکنید.
3. ازآنجاکه قرار وجود ندارد وضعیت تغییرو تحول داشته باشیم و مدام مقادیر را نسخه برداری کرده و یک مقدار/آبجکت نو را برمیگردانیم، می بایست کد مازاد بنویسیم. ولی تقلید از این فعالیت مزایای متعددی خواهد داشت و در زمان بر بازه در وقت ما صرفهجویی مینماید.
4. اپنویسی تابعی خیلی بهتر با کوشش I/O ادغام نمی شود. هر تابعی که نیاز بدین نوع مسائل داشته باشد impure میباشد. البته ما خواهیم توانست در اپهای خویش لایهای داشته باشیم که با این نوع مسائل رمز و شغل داشته باشد.
5. استعمال از مقادیر تغییرناپذیر میتواند باعث به مصرف بیشتر خاطر خواهد شد.
6. تایپ کردن اپ به مدل تابعی یا این که در گویش تابعی مدام عملی وجود ندارد. ولی این ایرادات ذاتی مدل تابعی نرمافزارنویسی وجود ندارد بلکه منابع جان دار و غیره میباشد که ممکن میباشد با سپری شد مجال تغییر و تحول نماید.
تودهبندی
درین نوشتهی علمی توضیح دادیم که اپ نویسی تابعی چیست و چه مزایا و معایبی دارااست. حتی در صورتیکه لهجه گزینه استعمال ما یک لهجه تابعی نباشد، این قابلیت وجود دارااست که از نرمافزارنویسی تابعی به کار گیری کنیم. در نرم افزارنویسی تابعی الگوهایی وجود دارا هستند که مزایای نرم افزارنویسی تابعی را به ما می دهند و قرائت، فهم و برهان کدمان را آسودهخیس میسازند.
برای سرعت بخشیدن به بار گذاری وبسایت خویش طراحی اپلیکیشن میتوانید چگونگی عکس ها را کاهش دهید
کاهش اندازه تصویر برای سرعت تارنما اصلی میباشد چون سرعت بار گذاری وبسایت ارتقا مییابد
امروز روش ارتقاء اندازه وب سایت را به شما فراگیری می دهم
در حالی کهاین وبسایت را تولید میکردم ، در باب به عبارتی قضیه پژوهش میکردم که به پیوندی برخوردم که کد را نوشت.
private void VaryQualityLevel()
{
// Get a bitmap. The using statement ensures objects
// are automatically disposed from memory after use.
using (Bitmap bmp1 = new Bitmap(@\"C:\\TestPhoto.jpg\"))
{
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@\"c:\\TestPhotoQualityFifty.jpg\", jpgEncoder, myEncoderParameters);
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@\"C:\\TestPhotoQualityHundred.jpg\", jpgEncoder, myEncoderParameters);
// Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = new EncoderParameter(myEncoder, 0L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@\"C:\\TestPhotoQualityZero.jpg\", jpgEncoder, myEncoderParameters);
}
}
Using ها را وارد فرمایید
using System.Drawing;
using System.Drawing.Imaging;
این کد بخش های مختلفی داراست ، البته نصیب اصلی را توضیح می دهم
به عنوان مثال:
این کد عکس متبوع را از شما میگیرد
using (Bitmap bmp1 = new Bitmap(@\"C:\\TestPhoto.jpg\"))
و بخش اساسی
این بخش ساخت و ساز چگونگی عکس نو را تهیه و تنظیم میکند
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@\"c:\\TestPhotoQualityFifty.jpg\", jpgEncoder, myEncoderParameters);
این عدد در انتهای خط اولیه چگونگی را تهیه می نماید و قادر است از 0 تا 100 (50L) تهیه و تنظیم خواهد شد
بهتر در صورتی از این کد در Asp.Net MVC به کارگیری میکنید احتمالاً خطایی ساخت و ساز می نماید
و هم اکنون سفارش اینجانب
توصیه اینجانب این میباشد که یه خرده این کد را تغییرو تحول دهید
var GuidRan = Guid.NewGuid();
var Format = Path.GetExtension(imgUp.FileName);
page.ImageName = GuidRan + Path.GetExtension(imgUp.FileName);
imgUp.SaveAs(Server.MapPath(\"/PageImages/\" + page.ImageName));
FileInfo imgInfo = new FileInfo(Server.MapPath(\"/PageImages/\" + page.ImageName));
if (imgInfo.Length > 1000000)
{
using (Bitmap bmp1 = new Bitmap(Server.MapPath(\"/PageImages/\" + page.ImageName)))
{
System.Drawing.Imaging.ImageCodecInfo GetEncoder(System.Drawing.Imaging.ImageFormat format)
{
var codecs = System.Drawing.Imaging.ImageCodecInfo.GetImageDecoders();
foreach (var codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
var jpgEncoder = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg);
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(Server.MapPath(@\"/PageImages/\" + GuidRan), jpgEncoder, myEncoderParameters);
}
System.IO.File.Delete(Server.MapPath(\"/PageImages/\" + page.ImageName));
System.IO.File.Copy(Server.MapPath(\"/PageImages/\") + GuidRan,
Server.MapPath(\"/PageImages/\") + GuidRan + Format, true);
System.IO.File.Delete(Server.MapPath(\"/PageImages/\") + GuidRan);
}
در اینجا نیز از این استعمال نمائید
using System.IO;
در اینجا نیز از این به کارگیری نمائید
این اولین کدی میباشد که مقداری عوض شده میباشد
بهتر ، بیایید به سراغ تغییراتی برویم که برای شما توضیح میدهند
در اینجا اینجانب از Guid استعمال کردم تا عکسها یکسان به لحاظ برسند و از متغیری به اسم GuidRan به کارگیری کردم
بعد بدون چاره شدم فرمت تصویری بگیرم و آن را در یک متغیر با نادرست نگه دارم
var Format = Path.GetExtension(imgUp.FileName);
آن گاه عکس را ذخیره میکنم
و در سطر آینده نشانی پوشه ذخیره گردیده را به کد کاهش وسعت می دهم
در درون نصیب ، تغییر و تحول دیگری را مشاهده خواهید کرد که در محل نشانی دهی میباشد
Server.MapPath
این به محل پروژه می رود
نکته!
هنگام تست پروژه ، متوجه شدم که درصورتی که تصویر ذیل 1 مگابایت باشد ، تصویر مانند تصویر تحت میباشد