googlebd2d08236268006b

دهم آذر روز تولد من و روز برنامه نویس در ایران

از ویکی‌پدیا، دانشنامهٔ آزاد

روز ۲۵۶ام هر سال (معادل عدد ۱۰۰ در مبنای شانزده) مطابق با ۱۳ سپتامبر (۱۲ سپتامبر در سال‌های کبیسه) به عنوان روز برنامه‌نویسان نام گرفته‌است. روسیه اولین کشوری بود که این روز را به عنوان روز برنامه‌نویس به رسمیت شناخت و پس از آن کشورهای آلمان، کانادا، چین، کرواسی، فرانسه، گوآتمالا، هند، بلژیک، استرالیا، نیوزلند، لهستان، اسلوونی، بریتانیا و ایالات متحده آمریکا نیز این روز را به عنوان روز برنامه‌نویس به رسمیت شناختند.

از جمله دلایل انتخاب عدد ۲۵۶ به عنوان روز برنامه نویس می‌توان به موارد زیر اشاره کرد:

  • عدد ۲۵۶ بزرگترین توان عدد ۲ کوچکتر از ۳۶۵ که تعداد روزهای یک سال است، می‌باشد.
  • در سیستم دودویی کامپیوتری تعداد اعدادی که می‌توان در یک بایت جا داد ۲۵۶ تا می‌باشد.
  • عدد ۲۵۶ به صورت کلی برای برنامه‌نویس‌ها عددی آشناست.

 

نکته ی جالب اینکه توی ایران روز ۲۵۶ ام سال شمسی میشه ۱۰ آذر که مصادف با تولد من هست 🙂

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

 

سایت programmerday.ir هم کار جالبی کرده و یک نظرسنجی برای حمایت از این روز گزاشته. من که امضا کردم شما هم اگه موافقین امضا کنین.

تنظیمات راه اندازی اس اس ال روی یک نرم افزار- پورت

How to Configure a Port with an SSL Certificate

  1. Add Certificate to Trusted Root and Personal (and install certificate by double-click on it)
  2. Obtain the SHA-1 Hash of a Trusted Root CA Certificate read here or here
  3. In .Net Projects retrive applicaion GUID from Assembly.cs
  4. Add SSL Certificate by folowing command (Windows 2012)
    netsh http add sslcert ipport=0.0.0.0:8020 certhash=aa00b0000bb0c00cc00000dd00e0000e0ff00g00 appid={0c0e0ec0-0000-0000-0000-a0cf0000d0af}
  5. NOTE: DO NOT Copy Paste Certificate Hash because it may contain un-visible characters. Just type it.

Read more about How to: Configure a Port with an SSL Certificate

Bundling AngularJs Html Pages With Aps.Net

Bundling AngularJs Html Pages With Aps.Net

یه مطلب خوب درباره Bundle کردن فایل های html در AngularJs پیدا کردم که براتون گزاشتم. البته این مطلب یه مقدار قدیمیه و یه کم مشکل داره ولی برای ایده گرفتن بسیار عالیه. در آینده اگه خواستین بگین که کدی که خودم نوشتم را هم بزارم براتون.
bundle_image_6Bundling and minification are two well-known techniques used to improve the load time of your website. These are especially important for sites that use extensively JavaScript to offer better user experience. There are plenty of tools to help you do bundling and minification of JavaScript and CSS files. If you are a .NET developer you are probably very used to live inside Visual Studio and expect it to offer you everything you might think of. In ASP.NET 4.5 you can use a bundling API to define how your files will be grouped and sent to the client. The following example demonstrates the usage of this API.
public static void Register(BundleCollection bundles)
{
 bundles.Add(new ScriptBundle("~/bundles/jquery")
  .Include("~/Scripts/jquery-{version}.js"));
 bundles.Add(new StyleBundle("~/bundles/css")
  .Include("~/css/*.css"));
}

Then in your page (either an ASP.NET page or a MVC view) you would invoke the rendering of these bundles by calling Scripts.Render(“~/bundles/jquery”) and Styles.Render(“~/bundles/css”).

When using AngularJS for building a rich client-side applications you would typically end up with a lot of HTML pages too. These HTML pages are actually the views in the MV* pattern that AngularJS implements. If you use a routing mechanism to simulate multiple pages in AngularJS, then for every page a new request to the server will be issues to download the HTML page for the corresponding page. For your production environment, however, you may wish to predownload all HTML pages so that no further requests are made to the server. One options is to rely on tools like Grunt, which provides a rich set of options. However, in this post I want to show you a very easy way to achieve the same using the bundling API of ASP.NET.

First we have to understand how AngularJS processes the HTML pages. When AngularJS needs to render a view (e.g., when loading a route or when visualizing a directive), it checks a local cache, called template cache. This is an abstraction over a simple key-value store that runs locally. If the template is not in this template cache, then AngularJS issues a request to the server in order to download it and then it puts into the cache. Next time the same view is requested, it can be rendered immediately. So what we can do in this scenario is that we can prepopulate this template cache will all the HTML pages we have. Thus, every time AngularJS needs to render a view, it will have a cache hit.

The next question is how to implement this logic using the bundle API. With the help of a .NET reflector one can look into the code of the existing JavaScript and CSS minification mechanisms and see how they work. The interface IBundleTransform provides a method that can manipulate all the files in a bundle and decide how to render them. Thus, we can collect all HTML pages that are included in the bundle and render them as a JavaScript file. We can attach a method to the run block of our AngularJS application module and make use of the $templateCache service to manipulate the template cache. Here is an excerpt of our AngularJsHtmlCombine transform implementation.

var sb = new StringBuilder();
sb.Append("(function(){");
sb.AppendFormat("angular.module('{0}'), appName);
sb.Append("a.run(['$templateCache',function(t){");
 
foreach (BundleFile file in response.Files)
{
 string fileId =
  VirtualPathUtility.ToAbsolute(file.IncludedVirtualPath);
 string filePath =
  HttpContext.Current.Server.MapPath(file.IncludedVirtualPath);
 string fileContent = File.ReadAllText(filePath);
 
 sb.AppendFormat("t.put({0},{1});",
  JsonConvert.SerializeObject(fileId),
  JsonConvert.SerializeObject(fileContent));
}
 
sb.Append("}]);");
sb.Append("})();");

Note that I rely on JSON.NET to convert a .NET string to a JSON string. We can then create a special bundle to apply our transformation.

public class AngularJsHtmlBundle : Bundle
{
 public AngularJsHtmlBundle(string virtualPath)
  : base(virtualPath, null, 
   new[] { (IBundleTransform)new AngularJsHtmlCombine() }) {}
}

How do we use this bundle now? Well, the same way as we use the scripts and the styles bundle.

public static void Register(BundleCollection bundles)
{
 bundles.Add(new ScriptBundle("~/bundles/js")
  .Include("~/Content/app.js"));
 bundles.Add(new AngularJsHtmlBundle("~/bundles/myapp/html")
  .Include("~/Content/*.html"));
}

When we request the bundle via Scripts.Render(“~/bundles/myapp/html”) a JavaScript file will be returned with all HTML pages rendered as strings. If we do not want to enable the bundling process, e.g., the debug attribute is present in the web.config, then nothing will be rendered and AngularJS will still make the usual requests to the server. Voila!

A have to mention a few notes in my implementation.

  • We need a way to pass the name of the application module to our bundle. I have chosen to do this via a predefined URL template, i.e. ~/bundles/{appName}/html.
  • Although I use JSON.NET, even the traditional DataContractJsonSerializer should be capable of the string serialization.
  • Be careful with the HTML file IDs. This implementation will make the file IDs with a leading slash in the URL. However, AngularJS is sensitive about this slash. So if you write the template URL of your directive to be “Content/hello.html”, AngularJS will not find it in the template cache and hence a new request will be made.

You can find the source code along with a demo on GitHub.

Source

بیشتر

چالش های انتشار خودکار نرم افزارهای جامع سازمانی

چالش های انتشار خودکار نرم افزارهای جامع سازمانی

Deployment Challenges in Enterprise Scenarios

سلام

یه مدتی هست که درگیر Deployment شدم. گفتم بد نیست توی این زمینه یه ذره بنویسم.

همه ی کسانی که برنامه نویسی میکنند خواه نا خواه درگیر مقوله ی Deployment یا Publish نرم افزار میشن.

وقتی تعداد یا حجم کد پروژه ها از یه حدی بیشتر میشه و یا تعداد جاهایی که باید روی اونا نرم افزار رو نصب کرد زیاد میشن، دیگه با روش های سنتی نمیشه کار Deployment را انجام داد و باید این کار را به کامپیوتر سپرد تا به طور اتوماتیک انجام بشه.

کاری که قرار شد من برای اون Automatic-Deployment را راه اندازی کنم شامل بیش از ۲۰ تا پروژه در زمینه ی راهکارهای جامع مالی کارگزاری بورس بود که شامل یک سری Web-Application و Windows-Service میشد. هدف ما این بود که بتوانیم به صورت زمان بندی شده (مثلا هر روز یکبار) یا با یک کلیک، کل این پروژه ها را در جاهای مختلفی که قبلا تعریف شده منتشر (Publish) کنیم.

شاید بعدا در این رابطه بیشتر بنویسم.اما توی این پست فقط سعی دارم به چالش هایی که در مبحث Enterprise-WebApplication-Deployment باهاش مواجه هستیم، اشاره ای داشته باشم:

  1. پروژه ها باید در محیط های مختلفی که از نظر زیر ساخت سخت افزاری و نرم افزاری و امنیتی با هم متفاوت هستند و هر کدام کانفیگ (پیکربندی) خاص خود را دارند منتشر و نصب شوند. برای مثال: developer or test environments, staging-platforms, and production-servers
  2. باید بتوانیم پروژه های مرتبط به هم را در یک مرحله (مثلا با یک کلیک) یا به صورت اتوماتیک و زمان بندی شده (مثلا هر روز) منتشر کنیم.
  3. باید بتوانیم هر بار که کدی به Source-Control اضافه میشه، کل نرم افزارهای وب و ویندوز-سرویس ها را publish کنیم.
  4. باید بتوانیم در هر لحظه، هر نسخه دلخواه از نرم افزار را روی یکی از سرورها publish کنیم.
  5. باید بتوانیم بدون نیاز به ابزارهای توسعه، مثل Visual Studio، توسط شخصی بدون داشتن دانش مربوط به توسعه نرم افزار و با ساده ترین روش ممکن کار انتشار را انجام دهیم. بهترین روش هم از طریق وب است.
  6. باید بتوانیم بر روند انتشار و تنظیم متغیرهای انتشار، کنترل داشته باشیم.
  7. پایگاه داده ها باید بدون از دست دادن داده های قبلی به طور اتوماتیک Update به روز رسانی شوند.
  8. باید بتوانیم قبل از پابلیش و بعد از آن یک سری Command روی سرورها اجرا کنیم (مثلا Start and Stop Windows-Service) و همچنین بتوانیم برخی از فایل ها را اضافه یا حذف کنیم ( مثلا اضافه کردن فایل app_offline.htm قبل از Publish و حذف آن بعد از Publish).

به دنبال تیم پروری باشیم نه قهرمان پروری

کد کثیف بدهی فنی نیست !

کد کثیف بدهی فنی نیست !

بدهی چیست ?
بدهی بیانگر تعهد یک شخص حقیقی یا حقوقی (بدهکار) به شخص حقیقی یا حقوقی دیگر (بستانکار) است. بدهی معمولاً به دارایی واگذارشده‌ی بستانکار به بدهکار اشاره دارد، اما می‌تواند به عنوان استعاره برای بیان تعهدات اخلاقی یا سایر تعاملات اقتصادی نیز استفاده شود. بازپرداخت بدهی معمولاً شامل دو بخش `اصل بدهی` و`بهره`ی آن است. [Wikipedia]

بدهی فنی چیست ?
اولین بار Ward Cunningham از واژه بدهی فنی استفاده کرد و آن را بدین صورت تعریف کرد:

بدهی فنی یک سبک-سنگین (trade-off) مهندسی است که توسعه دهندگان نرم افزار و سهامداران کسب و کار برای رسیدن به زمان بندی و انتظارات مشتریان انجام می دهند. به طور خلاصه شما ممکن است به یک طراحی کمتر از حد معمول در یک دوره کوتاه نیازمند باشید، به دلیل اینکه محدودیت زمانی به شما اجازه طراحی مطلوب را نمی دهد.

بیشتر

روز مهندس

دست هایی که میسازند مقدسترند از لب هایی که دعا میخوانند

(کوروش کبیر)

روز مهندس بر همه ی مهندسان عزیز مبارک

۷ هفت ویژگی کارکردی مدیران موفق

۷ هفت ویژگی کارکردی مدیران موفق

یادگیری تا ۳۶۰ درجه باشد و بکوشید از هر که می توانید یاد بگیرید.در دوره های کوتاه مدت ثبت نام کنید، کتاب های روز را ولو به اجمال بخوانید. سایت هایی که مطالب مفیدی درباره مدیریت و حرفه تان دارند را شناسایی کنید و مدام به آنها سر بزنید.

مدیریت ، تنها یک هنر مبتنی بر توانمندی های فردی نیست ؛ هر چند که ویژگی های شخصی در مدیریت بسیار حائز اهمیت اند اما در دنیای امروز ، مدیریت یک علم رو به رشد به شمار می رود که آموختنی است.

در زیر ، ۷ ویژگی کارکردی مدیران موفق را که قابل یادگیری و اجرا هستند را توضیح داده ایم ؛ توجه داشته باشید که مباحث ذکر شده ، نسبت به یکدیگر تقدم و تأخر ندارند:

مشارکت فکری کارکنان

 ۳۶۰ درجه یاد بگیرید و هرگز فارغ التحصیل نشوید

عدم شتاب در تصمیم گیری ها

 تحمل و انتقادپذيري بخشی از ویژگی های ذاتی مدیران است

 واگذاری اختیارات

نظام پاداش و تنبیه

ارزیابی دوره ای

بیشتر

قدرت خرید پزشک ایرانی ۵/۱ برابر پزشک آمریکایی

قدرت خرید پزشک ایرانی ۵/۱ برابر پزشک آمریکایی

سایت «الف» با اشاره به برخی از سر خط های خبری روزهای اخیر در خصوص میزان تعرفه های پزشکی میزان درآمد پزشکان چند کشور منتخب جهان را با پزشکان مقایسه درآمد پزشکان ایرانی و اروپاییایرانی مقایسه کرده و نتیجه گرفته است ، ایران بهشت پزشکان متخصص دنیاست.

در ادامه این گزارش آمده است:

بیشتر

ﻣﺠﻤﻮﻋﻪ ﭘﺮﺳﺶ و ﭘﺎﺳﺦ های ﻣﺮﺑﻮط ﺑﻪ ﻗﺎﻧﻮن کار جمهوری اسلامی اﻳﺮان

ﻣﺠﻤﻮﻋﻪ ﭘﺮﺳﺶ و ﭘﺎﺳﺦ های ﻣﺮﺑﻮط ﺑﻪ ﻗﺎﻧﻮن کار جمهوری اسلامی اﻳﺮان

بیش از ۳۰ سوال رایج در زمینه قانون کار جمهوری اسلامی ایران

پاسخ سوالات را در ادامه مطلب ببینید

بیشتر