برنامه نویسی

آنگاه که پشته‏ها، سر ریز می‏شوند

آنگاه که پشته‏ها، سر ریز می‏شوند، برنامه‏نویس‏ها قاطی می‏کنند و کم می‏آورند و به سراغ سایت Stack Overflow می‏روند.
سر و کله سایت Stack Overflow یک سال پیش پیدا شد و خیلی از برنامه‏نویسان را که برای پرسیدن پرسشهای برنامه‏نویسی به سایت Experts Exchange می‏رفتند به سمت خود کشاند.
مهمترین تفاوت سایت Stack Overflow با سایت Experts Exchange مدل تجاری متفاوت این دو سایت است. برای پرسیدن سوال در سایت Experts Exchange باید Point داشت و برای Point داشتن باید پول پرداخت کرد یا به سوال دیگران پاسخ داد ولی مدل کاری سایت Stack Overflow کاملا متفاوت است. برای پرسیدن سوال به Point نیازی نیست و طبیعتا نیازی به پرداخت پول هم نمی‏باشد.

افزون بر این کل سایت Stack Overflow را به شکل یک Wiki فرض کنید. پاسخهای شما به دیگران و حتی سوال شما هم قابل ویرایش هستند.

30 برنامه‏نویس تاثیرگذار

وبلاگ WebDesignDev نوشته‏ای با نام 30 برنامه‏نویس تاثیرگذار نوشته است و در آن فهرستی از افراد مهم در برنامه‏نویسی را گرد آورده.

افرادی مثل تیم برنرز-لی (طراح وب)، مت مولنوگ (برنامه‏نویس WordPress)، لری پیج و سرجی برین (موسسان گوگل)، لوئیس تروالدز (طراح لینوکس)، دنیس ریچی (آفریننده C)، راسموس لردوف (طراح PHP) و گیدو وَن راسوم (طراح Python) دیده می‏شود.

البته همان طور که افراد زیادی در دیدگاههای این نوشته آورده‏اند، فهرستی که این وبلاگ گردآوری کرده است، اشکالات زیادی دارد. برای نمونه افرادی در آن گنجانده شده‏اند. برای نمونه ظاهرا کسی مثل خانم کثی سیرا تنها برای این منظور در این فهرست آمده است که حداقل یک زن در این فهرست باشد؛ و اگر نه ایشان تنها یک نویسنده کتابهای برنامه‏نویسی است و خیلی سخت می‏شود باور کرد که ایشان یکی از افراد تاثیرگذار در دنیای برنامه‏نویسی باشند؛ یا دست کم نمی‏توان وی را در کنار افرادی مثل لوئیس تروالدز یا فردی مانند راسموس لردوف جای داد.

یا فردی مانند کرگ نیومارک تنها یک پایگاه معمولی که کاری شبیه به کار حراجی‏ها را انجام می‏دهد راه انداخته است. ظاهرا نویسنده نوشته با حضرتشان آبگوشت خورده‏اند که اسم ایشان را در این فهرست آورده‏اند. (-:

اشکال دیگری که در فهرست‏بندی این سایت دیده می‏شود این است که برخی از افرادی که در فهرست هستند اصولا برنامه‏نویسان خوب یا مهم نیستند؛ اگر چه شاید از دیدگاه نویسنده به نظر تاثیرگذار بیایند.

از سوی دیگر اسم افرادی همچون بیل گیتز در این فهرست خالی است. بیل گیتز خالق زبان برنامه‏نویسی Basic (البته منظور Basic مایکروسافت است و اگر نه شرکتهای دیگر هم Basic درست کرده‏اند) است و همه می‏دانند که Basic مایکروسافت یک پدیده و رخداد مهم و تاثیرگذار در دنیای برنامه‏نویسی است.

ولی در هر حال فهرستی که این وبلاگ گردآوری کرده است، برای آشنایی با نام برخی از برنامه‏نویسان و خواندن زندگی مختصری از آنها سودمند است.

گفتنی است که نویسنده وبلاگ، نوشته دیگری با نام 30 فرد تاثیرگذار در طراحی وب نیز نوشته است.

Thread-Safe نبودن عملگر ++ در دات نت

من نمی‏دانستم که عمگر ++ در دات نت Thread-Safe نیست. اینجا توضیحات کاملی آمده است.

چگونه می‏توان تصاویر رنگی را به طیف خاکستری تبدیل کرد؟

چند روز پیش در نوشته پیدایش فوتوشاپ نوشتم که توماس پس از خرید کامپیوتر مکنتاش خودش از این که نمی‏تواند تصاویر رنگی را به تصاویر طیف خاکستری تبدیل کند، ناراحت بود و خودش برنامه کوچکی را برای تبدیل تصاویر رنگی به تصاویر طیف خاکستری نوشت.

خوب راستش تابع تبدیل تصاویر رنگی به طیف خاکستری خیلی ساده‏تر از آن چیزی است که به نظر می‏آید. من در این نوشته این تابع را آورده‏ام و درباره آن توضیحاتی هم می‏دهم. اما پیش از این باید توضیحی درباره تصاویر Black and White و تصاویر Grayscale بدهم. تصاویر Black and White یعنی تصاویری که تنها و تنها در ساخت آنها از دو رنگ سیاه و سفید استفاده شده است. اما تصاویر Grayscale تصاویری هستند که رنگهای آن از طیف خاکستری تشکیل شده است. بدبختانه ما در فارسی برای هر دو نوع تصاویر واژه «سیاه و سفید» را به کار می‏گیریم.
به هر روی من در این نوشته تابع تبدیل تصاویر رنگی به تصاویر طیف خاکستری یا Grayscale در C را آورده‏ام:

for(i=0;iw-1;i++){
for(j=0;jh-1;j++){

color=getpixel(temp,i,j);
r=getr32(color);
g=getg32(color);
b=getb32(color);

h=(r+b+g)/3;
putpixel(temp1,i,j,makecol(h,h,h));
}
}

در این تابع با کمک دو حلقه تو در تور تمامی پیکسلها ستون به ستون و سپس پیکسل به پیکسل پیمایش شده است. تابع getpixel رنگ پیکسل فعلی را می‏خواند و سپس رنگ استخراج شده به کمک تابع getr32 و getg32 و getb32 به سه رنگ قرمز، سبز و آبی تجزیه می‏شود. این توابع روی تصاویر 32 بیتی (تصاویری که هر رنگ در 32 بیت نوشته شده است و بنابراین در این تصاویر می‏توان 4,294,967,296 رنگ را به کار گرفت) کار می‏کنند. تابعهای مشابهی برای کار کردن با تصاویر 24، 16، 15، 8، 7، 4 و 2 بیتی هم وجود دارد. بنابراین در این تابع فرض بر این گذاشته شده است که تصویر ورودی 32 بیت است. پس از این Hue رنگ با کمک فرمول ساده r+b+g/3 استخراج شده است. درباره Hue که یکی از ویژگی‏های فضای رنگی HSV یا HSL است اینجا بخوانید.
سپس با به کار گیری تابع MakeCol یک رنگ جدید ساخته شده است و با کمک تابع PutPixel رنگ جدید در تصویر اولیه گنجانده شده است.

مهمترین نکته‏ای که در این کد وجود دارد، روش تبدیل پیکسل رنگی به برابر طیف خاکستری آن است. نخست باید بدانیم که تمامی رنگهای Grayscale دارای مقادیر یکسان RGB هستند. یا به عبارت دیگر هر رنگی که دارای مقادیر یکسان R و G و B باشد یک رنگ Grayscale است. روش به کار رفته در این کد هم بر پایه همین اصل است.

مقادیر RGB تمام رنگهای Grayscale یکسان هستندمقادیر RGB تمام رنگهای Grayscale یکسان هستند

ابتدا مقدار Hue که مهمترین مولفه تشکیل دهنده یک رنگ در فضای رنگی HSV یا HSL است استخراج شده است و رنگی تشکیل شده است که مقدار R و G و B در آن برابر با مقدار Hue استخراج شده است.

Syndicate content