2019-05-20

مطلبی درباره‌ی عدد اویلر

عدد e که عدد اویلر نیز نامیده می‌شود، در ریاضیات کاربردهای زیادی دارد، ولی آیا تا کنون از خود پرسیده‌اید که علت اهمیت زیاد این ثابت در ریاضیات چیست؟

اخیراً مطلب جالبی در این زمینه در وب‌سایت Quora خواندم که فکر کردم می‌تواند برای سایر علاقه‌مندان نیز سودمند باشد. ازاین‌رو، ترجمه‌ی آن را در وب‌سایتم قرار دادم و می‌توانید در این‌جا آن را مطالعه کنید.

2016-03-13

Text Direction in Word

شاید برای شما هم اتفاق افتاده باشد که وقتی یک متن فارسی را در ورد (Microsoft Word) باز می‌کنید، بعضی از اعداد یا نشانه‌های آن (مانند پرانتز یا علایم نقطه‌گذاری) اشتباهاً در جهت چپ به راست تنظیم شده باشد، مثلاً به صورت زیر:

متن با فرمت چپ به راست

در حالی که انتظار دارید به صورت زیر باشد:

متن با فرمت راست به چپ

به طوری که می‌دانید، فرمت متن در ورد در دو سطح تنظیم می‌شود: در سطح پاراگراف و در سطح کاراکتر. در مورد جهت متن (چپ به راست/راست به چپ) هم امکان تنظیم در دو سطح پاراگراف و کاراکتر وجود دارد. در سطح پاراگراف، شما می‌توانید پاراگراف چپ به راست یا راست به چپ داشته باشید. در سطح کاراکتر، فرمت یک رشته‌ی متن (که به اصطلاح به آن run گفته می‌شود)، می‌تواند چپ به راست یا راست به چپ باشد. خصوصیات کاراکترها بر اساس استاندارد یونیکد تعریف می‌شود و بعضی از آنها ذاتاً چپ به راست و برخی دیگر ذاتاً راست به چپ هستند، اما بعضی از کاراکترها تابع رشته‌ی نویسه‌های قبل از خود هستند. بنا بر این، وقتی که متن ساده (plain text) را از کلیپ‌بورد در ورد الصاق (paste) می‌کنید، نویسه‌هایی که ذاتاً تعریف مشخص چپ به راست یا راست به چپ ندارند، به تبعیت از نویسه‌ی قبل از خود فرمت می‌شوند. البته در متن ساده می‌توان از کاراکترهای کنترلی برای تنظیم جهت رشته‌ی نویسه‌ها استفاده کرد، که این موضوع بحث حاضر نیست.

در ورد دستوری برای تنظیم جهت متن (در سطح کاراکتر) وجود دارد که شاید به سادگی از طریق اینترفیس کاربری ورد در دسترس نباشد. بنا بر این، در اینجا می‌خواهم راهی را ذکر کنم تا با اختصاص کلید میانبر به دو فرمان RtlRun و LtrRun به راحتی بتوانید جهت کاراکترها را تغییر دهید. برای این کار، لازم است که در برنامه‌ی ورد شما امکانات Developer فعال شده باشد. اگر نشده است، در ریبون بالای برنامه، قسمت Popular، در چک‌باکس Show Developer tab in the Ribbon تیک بزنید.

پس در اینجا می‌خواهیم به فرمان RtlRun کلید Ctrl+Alt+Right و به فرمان LtrRun کلید Ctrl+Alt+Left را اختصاص دهیم. روش کار به صورت زیر است:

1. کلید Alt+F8 را بزنید تا پنجره‌ی Macros ظاهر شود. نام ماکرو را ToolsCustomizeKeyboard وارد کنید و دکمه‌ی Run را بزنید.

Macros Dialog

2. در پنجره‌ی سفارشی‌سازی صفحه‌کلید که ظاهر می‌شود، از دسته‌ی All Commands، در قسمت فرمان‌ها، فرمان RtlRun را انتخاب کنید و با کلیک کردن در قسمت تعریف کلید میانبر جدید، کلید Ctrl+Alt+Right را فشار دهید. سپس دکمه‌ی Assign را بزنید. برای فرمان LtrRun هم به همین روش میانبر Ctrl+Alt+Left را تعریف کنید.

Customize Keyboard Dialog

اکنون به راحتی می‌توانید با انتخاب کردن متن مورد نظر و زدن ترکیب کلید Ctrl+Alt+Right یا Ctrl+Alt+Left، جهت متن را در سطح کاراکتر راست به چپ یا چپ به راست کنید.

2015-12-31

Time Management

Last year, I translated the book The Future of the Mind by Michio Kaku. However, I got tangled up with some other translation jobs (no less than 4 big books for clients) and I couldn’t get to contact a publisher for publishing it. Long story short, several translators published their translations of this book. Finally, when I did get to preparing my work, it was too late already.

Now I am translating a part of the 20th edition of Nelson and I fear the same will happen again. Because, guess what, I am once again tangled up with a lot of work. I have to do something about this. My time management is terrible.

2014-02-18

کسب اجازه از انتشارات اورایلی برای انتشار کتاب «مرجع برنامه‌نویسی جاوا اسکریپت» در ایران


من در ایمیلی از انتشارات اورایلی خواسته بودم که اجازه‌ی انتشار ترجمه‌ی فارسی ویراست سوم کتاب مرجع جیبی جاوا اسکریپت را که با عنوان «مرجع برنامه‌نویسی جاوا اسکریپت» منتشر خواهد شد، به من بدهند. خوشبختانه، امروز ایمیلی از اورایلی دریافت کردم که در آن اجازه‌ی ترجمه و انتشار این کتاب در ایران داده شده است. بخش‌هایی از این ایمیل به قرار زیر است:
Dear Ghasem,
Thanks very much for contacting us regarding your interest in a Persian translation of JavaScript Pocket Reference, 3rd Edition by David Flanagan.
We are happy to grant you permission to translate and publish a Persian edition of that book, and to distribute the Persian edition […] within Iran […]
We are grateful for the support and enthusiasm of readers like you, and we look forward to hearing from you again […]
شایان ذکر است که کتاب مذکور ان‌شاءالله تا یکی دو هفته‌ی دیگر منتشر خواهد شد.

2014-02-10

A curious observation about the calendar

The current time in Java internal representation (denoting the number of milliseconds since midnight of 1970-01-01) is 1392051911984 and the current solar Hijri (Iranian) date (using the format "yyyymmdd") is 13921121. This is the last day where the first eight digits of the former constitute a number that is smaller than the latter. This situation will not happen again in the next couple of centuries.

2013-12-31

مرجع برنامه‌نویسی جاوا اسکریپت

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

2012-03-27

Property Assignment and hasOwnProperty

An important task in JavaScript development is to check if a property has already been assigned a value. There are two ways to check for the presence of a property in an object. The first method, prop in obj, checks the existence of the property in the object or in its prototype chain. The second method, obj.hasOwnProperty(prop), checks if the property exists on the object itself.

If a property exists on the object’s prototype, it is masked by an assignment of that property on the object itself. Consider the following code snippet:

(function () {
 var p = {
  name : "human",
 };
 var a = Object.create(p);
 console.log(a.name); // human
 console.log(a.hasOwnProperty("name")); // false
 a.name = "Ali";
 console.log(a.name); // Ali
 console.log(a.hasOwnProperty("name")); // true
})();

Noting these results, it would seem appropriate to use hasOwnProperty as a test for checking whether the property has been assigned a value on the object proper. But this leads to an unexpected result in the particular case of “accessor” properties:

(function () {
 var p = Object.defineProperties({
   _age : 0,
  }, {
   _age : {
    enumerable : false,
   },
   age : {
    get : function () {
     return this._age;
    },
    set : function (age) {
     if (isNaN(age) || (age < 0)) {
      throw new Error("Invalid value for age: " + age);
     }
     this._age = age;
    },
    enumerable : true,
    configurable : true,
   },
  });
 var a = Object.create(p);
 console.log(a.age); // 0
 console.log(a.hasOwnProperty("age")); // false
 a.age = 14;
 console.log(a.age); // 14
 console.log(a.hasOwnProperty("age")); // false
})();

This example shows that “accessor” properties of the prototype are not masked by value assignment on the descendent object. Consequently, hasOwnProperty cannot detect value assignment in these cases.