البته حق با شماست و کاملاً حرفاتون متین.
اما اگر شده بلاگ رو اشتراکی کنید و مثلاً اشتراک سالانه رو عدد X اعلام بفرمائید، اما لطفاً کنار نکشید. یک محل واقعاً علمی که از بهترین دانشگاهامون قوی تر هستش رو لطفاً ازمون نگیرید.
من ارشد IT میخونم تهران تربیت.م.د اما کل مطالبی که تو مدت تحصیل در مقطع کارشناسی و ارشد یاد گرفتن به مفت نمی ارزد و اساتیدش هم که ... اما از طریق وبلاگ و خلاصه اشتراکهای شما کلی مطالب به روز، به دردبخور، خلاصه و گل مطلب رو گرفتم. البته خیلی وقتا چند بار باید یک پست شما را مطالعه کرد تا موضوع را فهمید که طبیعی است زیرا شما از بهترین اساتید ما که 2 کارشناسی اشد و یک دکتری داشت هزار پله بالاترید.
در کل لطفاً تجدید نظر فرموده و تنها دانشگاه به روز و بی منت کشور را از ما نگیرید.
ممنون
مدیریت پروژه
کتابخانه ترسیم چارت در MVC
یکی از کاستی هایی که همواره در پروژهها حس میکردم رسم چارت بود. برای ترسیم چارت در وب کتابخانههای قوی همچون chartjs وجود دارد.
با مشاهده این کتابخانه برآن شدم که با استفاده از آن توسط C# پروژه ای پیاده سازی کنم که بتوان در نرم افزارهای تحت وب MVC به سادگی و با استفاده از FluentAPI به ترسیم مدلهای مختلف چارت با همان قابلیتهای کتابخانه اصلی پرداخت.
سورس پروژه در مخزن گیت هاب قرار گرفته است.
امیدوارم مفید واقع شود.
* پ.ن: الگو برداری از سیستم گزارش ساز PdfReport آقای نصیری خیلی در نوشتن FluentAPI بهم کمک کرد.
var pdfReader = new PdfReader(pdfFile); for (var pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++) { var pdf = new PdfReader(pdfFile); var pg = pdf.GetPageN(pageNumber); // process page }
var pdf = new PdfReader(pdfFile); var pg = pdf.GetPageN(pageNumber); var res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES)); var xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT)); if (xobj == null) continue; foreach (var name in xobj.Keys) { var obj = xobj.Get(name); if (obj.IsIndirect()) { // process obj ... } }
var tg = (PdfDictionary)PdfReader.GetPdfObject(obj); var width = tg.Get(PdfName.WIDTH).ToString(); var height = tg.Get(PdfName.HEIGHT).ToString(); ImageRenderInfo imgRi = ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg);
private void RenderImage(ImageRenderInfo renderInfo, string imgPath) { var image = renderInfo.GetImage(); using (var dotnetImg = image.GetDrawingImage()) { if (dotnetImg == null) return; using (var ms = new MemoryStream()) { dotnetImg.Save(ms, ImageFormat.Jpeg); var d = new Bitmap(dotnetImg); d.Save(imgPath); } } }
private void ExtractImage(string pdfFile, string imgPath) { var fileCounter = 0; var pdfReader = new PdfReader(pdfFile); for (var pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++) { var pdf = new PdfReader(pdfFile); var pg = pdf.GetPageN(pageNumber); var res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES)); var xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT)); if (xobj == null) continue; foreach (var name in xobj.Keys) { var obj = xobj.Get(name); if (obj.IsIndirect()) { var tg = (PdfDictionary)PdfReader.GetPdfObject(obj); var width = tg.Get(PdfName.WIDTH).ToString(); var height = tg.Get(PdfName.HEIGHT).ToString(); var imgRi = ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg); fileCounter++; RenderImage(imgRi, imgPath + fileCounter + ".jpeg"); } } } }
var path = @"C:\"; var fileName = "1.pdf"; var outPath = path + fileName + @"_extractedImgs\"; Directory.CreateDirectory(outPath); ExtractImage(path + fileName, outPath);
تبدیلگر ایران سیستم به یونیکد
بام یکی از بهترین و متفاوتترین اینترنتبانکهای ایرانی است که بهصورت چابک تولید شده است. صحبت از ۶۰ میلیون حساب در بانک ملی ایران است، از ۱۷۰۰ نفر نیروی شرکت سداد، حدود ۲۰۰ پروژهٔ تعریفشدهٔ همزمان در این شرکت و همکاری بیش از ۲۲ برنامهنویس و طراح روی یک پروژه، همهٔ این اعداد نشان از بزرگی موجودیتی دارد که میخواهد حرکت کند اما حرکت در آن بهمراتب کندتر از حرکت در شرکتهای کوچک و پویا است.
CoffeeScript #8
اصطلاحات عمومی CoffeeScript
Includes
برای چک کردن وجود یک مقدار در یک آرایه به طور معمول از indexOf استفاده میشود؛ در حالی که تمامی نسخههای IE به طور کامل از آن پشتیبانی نمیکنند.
var included = (array.indexOf("test") != -1)
included = "test" in array
included = "a long test string".indexOf("test") isnt -1
string = "a long test string" included = !~ string.indexOf "test"
تکرار Propertyها
در صورتی که به خصوصیات یک شیء چندین بار نیاز داشته باشید، در جاوااسکریپت باید از کلمهی کلیدی in استفاده کنید:
var object = {one: 1, two: 2} for(var key in object) alert(key + " = " + object[key])
object = {one: 1, two: 2} alert("#{key} = #{value}") for key, value of object
var key, object, value; object = { one: 1, two: 2 }; for (key in object) { value = object[key]; alert(key + " = " + value); }
Min/Max
درست است که این تکنیک مخصوص CoffeeScript نیست، اما اشاره به آن میتواند مفید باشد. تابع Math.max و Max.min میتوانند چندین آرگومان یا یک آرایه را به عنوان ورودی گرفته و بر روی آن محاسبات خود را انجام داده و خروجی را نشان دهند:
Math.max [14, 35, -7, 46, 98]... # 98 Math.min [14, 35, -7, 46, 98]... # -7
Math.max.apply(Math, [14, 35, -7, 46, 98]); Math.min.apply(Math, [14, 35, -7, 46, 98]);
رشته ها و پردازش متن در دات نت به زبان ساده
- Install-Package Microsoft.AspNet.Identity.EntityFramework -Version 2.0.0-alpha1 -Pre
- Install-Package Microsoft.AspNet.Identity.Core -Version 2.0.0-alpha1 -Pre
- Install-Package Microsoft.AspNet.Identity.OWIN -Version 2.0.0-alpha1 -Pre
// Enable the application to use a cookie to store information for the signed in user // and to use a cookie to temporarily store information about a user logging in with a third party login provider // Configure the sign in cookie app.UseCookieAuthentication(newCookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = newPathString("/Account/Login"), Provider = newCookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromSeconds(5), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } });
امکان سفارشی کردن کلیدهای اصلی Users و Roles
de Snippet publicclassApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim> { } publicclassCustomRole : IdentityRole<int, CustomUserRole> { public CustomRole() { } public CustomRole(string name) { Name = name; } } publicclassCustomUserRole : IdentityUserRole<int> { } publicclassCustomUserClaim : IdentityUserClaim<int> { } publicclassCustomUserLogin : IdentityUserLogin<int> { } publicclassApplicationDbContext : IdentityDbContext<ApplicationUser, CustomRole, int, CustomUserLogin, CustomUserRole, CustomUserClaim> { }
پشتیبانی از IQueryable روی Users و Roles
// // GET: /Users/ public async Task<ActionResult> Index() { return View(await UserManager.Users.ToListAsync()); }
پشتیبانی از عملیات Delete از طریق UserManager
var user = await UserManager.FindByIdAsync(id); if (user == null) { return HttpNotFound(); } var result = await UserManager.DeleteAsync(user);
میان افزار UserManagerFactory
// Configure the UserManager app.UseUserManagerFactory(newUserManagerOptions<ApplicationUserManager>() { DataProtectionProvider = app.GetDataProtectionProvider(), Provider = newUserManagerProvider<ApplicationUserManager>() { OnCreate = ApplicationUserManager.Create } });
HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
میان افزار DbContextFactory
app.UseDbContextFactory(ApplicationDbContext.Create);