درباره مدیر وبلاگ

حسین خسروی، متولد 1360 خورشیدی، تدریس می کنم در دانشگاه.

زرنگار و زندگی

داشتم دنبال قلمهای قدیمی می‏گشتم که پشتیبانی از آنها را برای OCR فراهم کنم که به مطالب جالبی در مورد زرنگار، نرم‏ افزار قدیمی و زیبای تایپ فارسی، برخورد کردم. جالبترینشون مربوط به خاطرات دکتر محمد صنعتی، بنیانگذار شرکت نرم‏افزاری سینا، بود. بخشی از آن را در زیر می‏خوانید.

زرنگار متولد می‌شود

اولین بار زرنگار را در سمینار نشررایانه‌ای سازمان برنامه و بودجه نمایش دادیم. در این سمینار نه شرکت، از جمله سینا، حضور داشتند و می‌خواستند راه‌حل‌های خود را برای نشر فارسی عرضه کنند. من در این همایش سخنرانی‌ای کردم که مدت‌ها باعث تفریح خاطر همکارانم در شرکت شد، می‌گفتند من وعده برنامه‌ای دادم که هرگز نوشته نشد! من ابتدا یک ربع از وقت سخنران قبل و بعد خودم را گرفتم و زمان سخنرانی‌ام شد یک ساعت، بعد حین سخنرانی تمام اندیشه‌ها و بلندپروازی‌هایم را به زرنگار نسبت دادم. قابلیت‌هایی که من آن روز به زرنگار نسبت دادم پنج سال بعد در آن گنجانده شد. اما این سخنرانی باعث اشاعه بیشتر کار ما شد، و از یاد نمی‌برم که در نتایج نظرخواهی از شنوندگان آمده بود که بیش از هفتاد درصد سخنرانی مرا علمی‌ترین سخنرانی دانسته بودند. درحالی‌که این سخنرانی اصلا علمی نبود! در واقع معرفی زرنگار بود. بعد از این سخنرانی غرفه ما شلوغ شد، اما ما چیزی در دست نداشتیم. به همکارانم گفتم که حداقل باید به یک دهم از حرف‌هایمان عمل کنیم. به سرعت دست به کار شدیم و بعد از نمایشگاه اولین کلاس زرنگار را راه‌اندازی کردیم که هفده حروفچین در آن شرکت داشتند، هدف ما درآن زمان بیشتر حروفچین‌ها بودند .
این طور شد که زرنگار کم‌کم پا گرفت و نسخه‌های ارتقا یافته آن پی در پی به بازار فرستاده شد (اولین نسخه زرنگار در اردیبهشت سال ۱۳۷۰ عرضه شد). یکی از لذت‌بخش‌ترین کارهای من در آن دوره این بود که بعدازظهر به روزنامه فروشی‌ها می‌رفتم و می‌گشتم تا ببینم کدام مجله یا روزنامه به زرنگار ملحق شده. بعد که تعداد مشتریان بیشتر و بیشتر شد یک شوخی میان ما رایج شد به این مضمون که “بگردید، و ببینیند چه کسی با زرنگار کار نمی‌کند”. ما روش‌های بازاریابی خاصی داشتیم، مثلا آگهی کردیم که شش ماه استفاده رایگان از زرنگار برای همه آزاد است، یا زیر فاکتورهای فروش ذکر می‌کردیم تا شش ماه پس گرفته می‌شود. چون در هر کسبی در هر جای دنیا رضایت مشتری خیلی اهمیت دارد، دستور داده بودم از کسانی که نرم‌افزار را مرجوع می‌کنند هیچ پرس‌وجویی نکنند و فورا پولشان را برگردانند. سواستفاده‌های جزئی هم می‌شد، اما کل ماجرا به نفع شرکت بود. فلسفه‌ام این بود: باید تکلیفمان را با خودمان روشن کنیم، اگر محصولی نوشته‌ایم که به کار مردم نمی‌آید، خوب است برویم دنبال یک کار دیگر! این طور بود که ما در فاصله یازده سال (۱۳۶۴تا۱۳۷۵) بازار نشر رومیزی کشور را قبضه کردیم .

زر رفت، ولی تجربه تولید آن خواهد ماند

پایان زرنگار سال ۱۳۷۵ بود. در واقع زرنگار مغلوب Word شد، چون همیشه رسم رایج رابطه شرکت‌های بزرگ و کوچک این طور بوده است. زمانی که یک غول اقتصادی مانند مایکروسافت به بازار حمله می‌کند مثل بهمن بر سر بازار فرو می‌ریزد. از شرکت‌های بزرگ شروع می‌کند و پس از این که تک‌تک آنها را شکست می‌دهد به سراغ شرکت‌های کوچک می‌رود. این اتفاق در همه جای دنیا افتاد، از “Word Prefect” توانمند تا زرنگار ما. کسی که در بازار امریکا پیروز می‌شود، پیروزی در بازارهای دیگر برایش چندان دشوار نیست. شرکت‌ها زمانی بزرگ می‌شوند که یا شرکت‌های دیگر را به زانو در آورند یا آنها را بخرند و در خود ادغام می‌کنند. این قضایا صرفا به ایران برنمی‌گردد، کشورهای دیگر هم درگیر آن هستند .
از یک نظر دیگر هم می‌شد به قضیه نگاه کرد. من در آن مقطع همیشه از خودم می‌پرسیدم که آیا دوست دارم پسرم از نرم‌افزاری استفاده کند که دنیا از آن استفاده می‌کند، یا از زرنگار؛ و پاسخ من زرنگار نبود. نمی‌خواستم که کاربران ایران در زرنگار حبس شوند و از دنیا عقب بیفتند .
ولی تصور کنید که ما می‌خواستیم با Word مقابله کنیم، با چه امکانات و چه بودجه‌ای؟ مایکروسافت Word را عرضه می‌کند برای تمام زبآنها و تمام نسخه‌های ویندوز، ما چه کار می‌خواستیم بکنیم؟ نظر من این بود که ما باید دنبال کار دیگری برویم. یک سری از قابلیت‌های زرنگار هیچ وقت در Word نخواهد بود، اما می‌توان این قابلیت‌ها را به آن اضافه کرد .
توجه داشته باشید که نمی‌خواهم با این حرف‌ها در دل جوانان یاس بیندازم، ما اگر آن کار را ادامه ندادیم، تجربه‌ها در محصولات دیگری شکوفا خواهند شد. روش کار ما شاید به اندازه محصول‌مان مهم بود. در سینا قواعد خاصب داشتیم: اکثر کسانی که جذب سینا می‌شدند، الزاما سابقه یا تحصیلات رایآنهای نداشتند، اما بدون استثناء بسیار هوشمند بودند. سعی داشتیم کارمندان را کاملا تامین کنیم که سرشان صرفا به کارشان مشغول باشد. بعید می‌دانم آن مجموعه، با تمام استعدادها و قابلیت‌هایی که داشت؛ اگر در جای دیگری فعالیت می‌کرد چنین نتیجه‌ای حاصل می‌شد. مهم‌ترین کار ما تولید زرنگار نبود، مشکل‌ترین کار، جمع شدن چهل‌پنجاه نفر در یک ساختمان و فعالیت تحت یک مدیریت بود. تا زمانی که سینا محکم سرجایش بود، کسی از آن جدا نشد. بعد از آن، قضیه مهاجرت به کانادا رخ داد و …، این در حالی است که خیلی گروه‌های با استعداد تشکیل شدند و پس از مدتی بدون عرضه محصولی از هم پاشیدند. من یقین دارم هر زمانی چنین جمعی با چنین ویژگی‌هایی تشکیل شود، کارهای مهمی خواهد کرد .

متن کامل را در اینجا ببینید.

Share

انرژی مثبت را دریافت کنید

از غیبت‌، تهمت‌، قضاوت نسنجیده در مورد افراد یا حوادث‌، حسادت‌، کینه‌، دروغ‌، جر و بحث کردن با دیگران و رنجاندن آنها به شدت پرهیز کنید. زیرا با انجام دادن این گونه اعمال به دور خودتان تراکمی از نیروهای منفی جمع آوری می‌کنید و کسی که از این مقدار زیاد نیروهای منفی عذاب می‌کشد، خودتان هستید.
زمانی که به دیگران خوبی و کمک می‌کنید، تجمعی از نیروهای مثبت را به دور خودتان فراهم می‌آورید و این نیروهای مثبت باعث آرامش و شادی شما می‌شوند.

برای افزایش نیروهای مثبت خود می‌توانید در یک وان حمام‌، پر از آب و نمک به مدت ۲۰ دقیقه قرار بگیرید، در بطری‌های رنگی آب خوراکی بریزید و به مدت ۲ ساعت در معرض نور خورشید قرار دهید، سپس آنها را در یخچال بگذارید و از آن بنوشید.
خورشید منبع سرشاری از انرژی مثبت است‌. بدون کفش و جوراب روی چمن راه بروید. زیرا که طبیعت منبع پر انرژی نیروهای مثبت است.

هنگامی که وضو می‌گیرید، الکتریسته‌های ساکن را به سطح بدن می‌آورید. آب رسانا است و شما امواج آرام بخش را تولید می‌کنید. با کشیدن مسح سر، این امواج را به کورتکس مغز انتقال می‌دهید و باعث می‌شوید که ناحیه شلوغ ذهن آرام گیرد. با مسح پا، انتقال امواج آرام بخش را در اندام‌های پایینی سرعت می‌بخشید. منطقه‌ای که در روی کره زمین‌، بیشترین مقدار این امواج را داراست‌، کعبه است‌. زمانی که شما نماز می‌خوانید و در جهت خانه خدا قرار می‌گیرید و ۷ قسمت بدن با زمین تماس پیدا می‌کند، امواجی را دریافت می‌کنید که باعث آرامش شما می‌شوند.

منبع۱، منبع ۲

Share

دو خبر تامل برانگیز

۱. انصراف حسین رضازاده از شرکت در المپیک پکن به اصرار پزشکان
خبرگزاری فارس: حسین رضازاده ، قهرمان سنگین وزن وزنه‌برداری جهان، اعلام کرد: با وجود خواست قلبی و میل باطنی خود به توصیه و درخواست موکد پزشکان و متخصصان و مسئولان فدراسیون وزنه برداری از شرکت در مسابقات المپیک پکن انصراف داد.

۲. شهریه‌‏ی ۱۷ میلیون تومانی!
شاید بدانید که شهریه‏ی دوره‏ی دکتری دانشگاه‏های آزاد و دولتی (اگر به شرط بورس قبول شده باشید) حدود ۱۸ میلیون تومان است. برای افرادی که دکتری خیلی براشون مهمه و قادر به قبول شدن در دانشگاه دولتی نیستند و البته پول کافی هم دارند این هزینه قابل قبوله. امروز از رادیو شنیدم (و اینجا هم مستند شده) که شهریه‏ی مدارس غیر انتفاعی در برخی مناطق تهران ۱۷ میلیون تومان است! در حالی که در همین تهران مدارس غیر انتفاعی با شهریه‏‏های ۲۰۰ هزارتومانی هم هست. همین خبر می‏افزود که امسال شهریه‏ی برخی از همان مناطق ۵۰۰% رشد داشته است و این فوق‏العاده است! وقتی مقایسه کنیم با دانش‏آموزان کپرنشینی که نمی‏دانند غیرانتفاعی یعنی چی؟!

Share

پردازنده‌های چند هسته‌ای بخش ۲ – Multi Core Processors Part 2

در این مقاله یک روش آسان برای استفاده‏ی بهینه از پردازنده‏های چندهسته‏ای در برنامه‏های پردازشی ارائه می‏کنیم. کد زیر را در نظر بگیرید:
یک حلقه‌ی ساده

این کد یک حلقه‏ی ساده است که در اکثر برنامه‏های پردازشی یافت می‏شود. با اجرای این کد ملاحظه می‏کنیم که تنها از توان یک هسته‏ی پردازنده استفاده شده و سه پردازنده‏ی دیگر بیکار می‏مانند. در این حالت اجرای برنامه ۱۰.۶۰ ثانیه زمان می‏برد. برای استفاده از چند هسته باید برنامه را به صورت زیر تغییر دهیم:
دو رویه‌ی مستقل برای سریعتر کردن اجرای حلقه

وضعیت پردازنده در حین اجرای برنامه با استفاده از دو رویه‌ی مستقل
با این تغییر نصف حلقه‏ی four در یک رویه و نیمه‏ی دیگر آن در رویه‏ی دیگر اجرا می‏شود. با توجه به اینکه عملیات این دو رویه کاملا از هم مستقل است، سیستم عامل، هر کدام از حلقه‏ها را به صورت خودکار به یکی از هسته‏های پردازنده می‏سپارد. به این ترتیب از توان دو هسته به خوبی استفاده می‏کنیم! و زمان اجرای برنامه به حدود نصف، ۵.۴۸ ثانیه، کاهش می‏یابد. به همین ترتیب اگر به جای دو رویه از چهار رویه استفاده کنیم، زمان اجرای برنامه به ۲.۸۳ ثانیه می‏رسد که ۴ بار کمتر از زمان اجرای اولیه است!

کد این برنامه را از اینجا دریافت کنید.
نکته‏ای که باید توجه داشته باشیم این است که انجام این کار همیشه ساده نیست ، چرا که خیلی اوقات عملیات داخل حلقه به نتایج قبلی پردازش شده در حلقه وابسته است. البته از این هم که بگذریم مدیریت منابع بین رویه‏ها هم ،همیشه کار آسانی نیست. در همین مثال هم برای سادگی متغیرها را سراسری تعریف کرده‏ام. در قسمت بعدی راه ساده‏تری برای استفاده از چند هسته را بیان خواهیم کرد.
—————————————————————————————————————————————————————————–

In this paper, a simple approach to efficient use of several cores of the processor is escribed. Consider the following code:


This is a simple “for” loop which is frequently used in processing applications.
After running this code, we will see that only one core of the CPU is involved and other three cores were not affected. In this case the execution time is 10.60 seconds. To use the power of two cores we should change the program as follows:



Here we used two threads where each of them is responsible for the half part of the loop. Since these two threads are completely independent, OS sends each of them to specific core of the processor. In this way we used the power of two processors and the execution time is reduced from 10.6 to 5.48 sec. This procedure can be repeated with 4 threads and as expected the execution time will be reduced to 2.83 sec.

Download VC Code
It is important to know that this process is not always so simple. we should share resources carefully within all threads, on the other hand some times the body of “for” loop is not independent from one index to another. In the next part I will introduce a simpler way to use several cores of the processor.

Share

پردازنده‌های چند هسته‌ای بخش ۱ – Multi Core Processors Part 1

همان طور که در پست “وقتی تکنولو‍ژی کم می‌آورد” گفتم در این سالهای اخیر پردازنده‌های چند هسته‌ای رشد چشم گیری داشته‌اند. امروز قصد داریم ببینیم این افزایش تعداد هسته‌ها چه فایده‌ای دارد؟ شاید خیلی از شما بعد از خرید یک پردازنده‌ی ۲ هسته‌ای مثل E8400 یا پردازنده‌ی ۴ هسته‌ای مثل Q6600 چندان احساس افزایش کارایی در سیستم خود نکرده باشید! برای مثال قبلا نرم‌افزاری مثل مدیا استودیو در عرض بیست دقیقه فیلم شما را تولید می‌کرد و الان هم همین اتفاق می‌افتد. تفاوت در چیست؟ از این پس فرض می‌کنیم شما یک پردازنده‌ی چهارهسته‌ای دارید.

اگر نگاهی به Task Manager بیندازید ملاحظه می‌کنید که به جای تک گراف سبز رنگی که قبلا می‌دیدید، الان ۴ گراف کوچک وجود دارد که هر کدام نماینده‌ی یک cpu است. حال اگر درحین اجرای یک برنامه‌ی سنگین این گرافها را ببینید ملاحظه می‌کنید که تنها یکی از این گرافها در حالت بیشینه‌(۱۰۰%) است و سه گراف دیگر روی ۰% قرار دارند. گراف کلی مصرف پردازنده هم تنها ۲۵% مصرف را نشان می‌دهد. این وضعیت بیانگر این است که آن برنامه‌ی سنگین، تنها می‌تواند از توان یک پردازنده استفاده کند. متاسفانه این وضعیت برای اکثر نرم‌افزارهای موجود وجود دارد و از این رو شما هیچ سودی از تعویض پردازنده‌تان نکرده‌اید! از ویندوز هم که انتظار نمی‌رود قدرت توزیع پردازشهای یک برنامه روی چند پردازنده را داشته باشد.
نگران نباشید برای اینکه به پردازنده‌ی خود افتخار کنید!، اینبار چند برنامه‌ی سنگین را اجرا کنید؛ ملاحظه می‌کنید که هر کدام از این برنامه‌ها از یک پردازنده استفاده کرده و کارایی کاملی از خود به نمایش می‌گذارند، مثلا اگر چهار برنامه، در حال کار سنگین باشند؛ هر چهار پردازنده‌ مشغول شده و مصرف کلی به ۱۰۰% می‌رسد. در چنین زمانی پردازنده‌ی شما مثل چهار پردازنده‌ی تک هسته‌ای عمل می‌کند. خوش به حالتون!
خوب شاید شما به عنوان یک برنامه نویس بخواهید برنامه‌ای بنویسید که از هر چهار هسته استفاده کند؛ چنین کاری البته شود و لیک به خون جگر شود!
در پست بعدی یک روش تقریبا آسان برای استفاده از حداکثر کارایی پردازنده‌های چندهسته‌ای بیان خواهیم کرد.

——————————————————————————————————————–

Nowadays multi core processors are well developed and distributed through the world. Here we are going to find whether these CPUs are beneficial or not. You may don’t experience a better performance when installing new Quad Core CPU like Q6600 or Dual Core one like E8400. Here I will describe the reasons. From now on I assume that you have a Quad Core CPU.

Take a look on the performance graph of the Task Manager; you will see 4 small graphs instead of traditional single graph. Each graph represents one core of your CPU. Now run a heavy program and trace the graphs, you will see that only one graph is in maximum load and the others are not affected at all; the global CPU usage is about 25%. This is because your program can not use the power of 4 processing cores and also windows can not distribute the work load on all CPUs. So in this case no improvements happened and this multi core CPU is not different from single core CPUs!
Now run 4 heavy applications and again trace the graphs, oh all graphs were reached to the maximum value and the overall CPU usage was reached to 100%. This is a really improvement, you are using the power of four CPUs!
Is it possible that an application uses the power of all processors? Of course, and I will describe it in next posts.

Share