ناگفته های وب
ژوئن 22, 2008 at 2:19 ق.ظ | In Uncategorized | 15 Commentsآیا هیچگاه از خودتون پرسیدید که منبع درآمد و انگیزه ادامه کار برای سایتهایی مانند گوگل ، یاهو ، ووردپرس و …. چیست؟
خب اولین پاسخی که هر کسی ممکنه به این سوال بده اینه که : تبلیغات!
قصد دارم در این پست پاسخهای این سوال رو مورد بحث قرار بدم:
1- تبلیغات: بخش مهمی از درآمد سایتهایی مثل گوگل و یاهو و سایتهایی از این دست که بازدید کننده زیادی دارند ، تبلیغات و همچنین کسب در آمد از طریق کلیک بر روی لینکهای تبلیغاتی موجود در صفحات این وبسایتهاست.
2- امید به خرید: یکی دیگه از دلایل برای راه اندازی سایتهایی مانند ووردپرس و توییتر و… که به نظر میرسه منبع درآمدی ندارند ، امید به خرید این سرویس ها درآینده ، توسط شرکتهای بزرگی مثل میکروسافت ، گوگل ، یاهو و…. هست که نهایتا منجر به درج آگهی های تبلیغاتی و روشهای دیگر کسب درآمد توسط این سایتها برای خریدارانشون هست.بنابر این مالکان این سایتها باید منتظر بمونند تا میزان بازدید از این سایتها و مقبولیت اونها تا حد مشخصی بالا بره تا خرید اونها برای شرکتهای بزرگ توجیه اقتصادی داشته باشه.
3- اهداف سیاسی: برخی از این سایتها با منابع مالی برخی سیاستمداران بزرگ دنیا راه اندازی میشن.هدف این سیاستمداران از اینکار استفاده از این سایتها در وقت مقرر و عندالزوم هست.گاهی حتی درج یک تیتر خبری یکی دو خطی مثلا در بخش “پر بیننده ترین های سایت” میتونه تاثیر به سزایی در پیشبرد اهداف سیاسی داشته باشه.
4- پولشویی : در ایران ، اینکه شما پول لازم برای یک سرمایه گذاری کلان یا خرید یک کارخونه یا املاک و … رو از کجا آوردید و یا وجود مقدار متنابه پول در حساب بانکی شما ، اغلب مشکلی رو برای شما بوجود نمی آره.اما در کشورهایی مثل امریکا ، ژاپن ، انگلیس ، فرانسه ، آلمان و … مکانیزمهای کنترلی بسیار شدیدی وجود داره که این امکان یعنی پول بادآورده و یا پول ناشی از فعالیتهای غیر قانونی رو بسرعت مورد تعقیب قرار میده.خب در شرایطی اینچنین ، انتقال پول ، و همچنین توجیه استفاده از منابع مالی از این دست ، برای مراجع قانونی در کشورهای مذکور ، با اتکا به روشهای مدرن امروزی انجام میشه.بعنوان مثال ، خرید و فروش انواع عطر و ادکلن ، یکی از ابزارهای پولشویی محسوب میشه.در واقع شما عطری رو خریداری می کنید که ارزش واقعی اون مثلا هزار تومان هست ولی شما دارید برای اون ده هزار تومان پول میدید! این یعنی انتقال پول.همین کار در سطحی وسیعتر توسط پولشویان انجام میشه.مکانیزم مشابهی در مورد وبسایتها انجام میشه.حدس چگونگی انجامش کار مشکلی نیست.
5- آمار و اطلاعات:یکی دیگه از منابع درآمدی ، فروش اطلاعات و آمار بازدید کنندگان به خریداران هست.این موضوع بسیار مهمیه.بعنوان مثال ، گوگل هر ساله مبلغ هنگفتی پول از شرکتهای بزرگ دریافت می کنه که آمار خاصی رو از بازدیدها ، از مقالات خاص برای کسب میزان علاقمندی کاربران به موضوعات خاص ، مشخصات رایانه های اونها (گاها) ، و … در اختیار اونها قرار بده.مثلا یک شرکت با داشتن نوع خاصی از این آمار و اطلاعات ، شروع به سیاستگذاری خط تولید نرم افزاری و یا سخت افزاری خودش می کنه و در واقع با اینکار پیش بینی آینده بازار ممکن میشه.اینکار یعنی خرید اطلاعات ، نقش بسزایی در فروش اون محصول خاص خواهد داشت.شناخت وضعیت فعلی تقاضا و علاقمندی کاربران برای سیاستگذاری برنامه های آتی بسیار مهمه.
و نکته آخر: امکان و اجازه رشد به سایتهایی که درآمدهای نجومی پیدا میکنن ، و بویژه با جریان اطلاعات سر و کار دارند ، بدون هماهنگی و یا تبعیت از سیاستهای بخش بزرگی از طبقه سیاستمدار و یا تراستها تقریبا غیر ممکنه.البته استثنا همیشه میتونه وجود داشته باشه!
Objective-J جهشی بلند بسوی خدمات برخط
ژوئن 14, 2008 at 6:21 ب.ظ | In توسعه نرم افزار | Leave a CommentTags: Framework, Java, online, آنلاین, جاوا
مدت زیادی از ارائه اولین نرم افزارهای رومیزی مشهور ، بصورت تحت وب و آنلاین نمی گذرد.فتوشاپ آنلاین توسط شرکت آدوبی ، و همچنین Office Live شرکت میکروسافت ، دو نمونه مطرح در این عرصه هستند که خود حرکتی نو در زمینه تولید و توسعه نرم افزار را رقم می زند.
به نظر می رسد با فراگیر شدن اینترنت پر سرعت و سهولت دسترسی به آن در همه جا (البته بجز ایران) ، توسعه دهندگان نرم افزار که همیشه با مشکلاتی چون کنترل کپی نرم افزار ، کپی رایت ، و به روز رسانی نرم افزارها ، پشتیبانی و …. مواجه بوده اند ، را به سمت تولید و توسعه فن آوریهای نرم افزاری خود در محیط اینترنت سوق داده است.
طبیعی است در صورتیکه شما یک اتصال اینترنتی پر سرعت داشته باشید ، طراحی یک تصویر ، روتوش آن ، و یا نگارش متن توسط Word و یا تهیه اسلاید توسط Powerpoint و…. بصورت برخط ، چندان تفاوتی با استفاده از نرم افزار رومیزی (Desktop Edition) آن نخواهد داشت و اساسا یکی از دلایل تداوم توسعه سیستمهای رومیزی تاکنون ، عدم وجود اینترنت پر سرعت ، در همه جا ، و برای همگان بوده است و در صورتیکه این امر محقق گردد ، مسلما شاهد کاهش چشمگیر نرم افزارهای رومیزی خواهیم بود.
استفاده از نرم افزارهای برخط ، موضوع کپی رایت و تامین مالی هزینه های تولید را تا حد زیادی برای تولید کننده ، برطرف می کند.
یکی از جدید ترین این سیستمهای بر خط ، مبتنی بر کتابخانه جاوای Framework-J محصول شرکت 280North هست که 280Slides نامگرفته است.این نرم افزار برخط تحت وب ، امکان تهیه انواع اسلایدها را ، همانند Powepoint اما بصورت کاملا برخط و تحت وب فراهم می کند و پرونده های تولید شده آن در قالب استاندارد با MS-Powerpoint 2007 هستند.
این سیستم را می توانید در http://280slides.com/Editor ببینید.
امیدوارم سورس آن نیز بزودی منتشر گردد.
نحوه استفاده از jQuery در ASP.Net-قسمت 2
ژوئن 12, 2008 at 2:53 ب.ظ | In برنامه نویسی/کد نویسی یا توسعه | 1 CommentTags: Java, Java Framework, jQuery, ویژوال استودیو, Visual Studio, جی کوئری
در قسمت قبلی ، مختصری در مورد $ و همچنین نحوه انتخاب تگهای a گفته شد.jQuery روشهای متنوعی رو برای انتخاب یک ، چند یا همگی اشیای داخل پرونده HTML که حایز شرط خاصی هستند ، ارائه می ده.بعنوان نمونه یکی از اشکال استفاده از $ بصورت زیر هست:
$(selector)
که در اون بجای selector شما باید از عبارات انتخاب استفاده بکنید.همانطور که قبلا گفته شده ، $ به معنای کلاس پایه jQuery یا سازنده کلاس پایه jQuery هست.در واقع عبارت فوق با عبارت زیر یکسان هست:
jQuery(selector)
بعنوان نمونه ، شما می تونید از عبارت زیر برای انتخاب تمامی پیوندها (تگهای a) که در داخل بلاک پاراگراف (تگp) هستند ، در صفحه HTML می تونید از کد زیر استفاده کنید:
$(“p a”)
و البته اینکار تنها انتخاب اون لینکها رو انجام میده و ما هنوز کاری رو با آنچه انتخاب شده انجام ندادیم و اگر به قسمت 1 برگردیم ، بعد از انجام این انتخاب ، شما میتونید تابع های خودتونرو بنویسید که در ادامه در موردش خواهیم گفت.بعنوان نمونه دیگر جهت انتخاب به کد زیر توجه کنید:
$(“div”)
که معنی اون اینست که تمامی تگهای div رو انتخاب بکنه که عملی رو که بعدا کد اونرو می نویسیم در موردش به اجرا بگذاره.حالا این کد رو توسعه میدیم:
$(“div”).html(“this text will displayed!”);
نتیجه عبارت فوق این هست که هرآنچه در بدنه تمامی تگهای div در پرونده HTML وجود داره ، با عبارت this text will displayed جایگزین بشه.ما می تونیم محدوده انتخاب رو با شرایطی محدود کنیم.مثلا برای اینکه فقط محتوای تگ div که کلاس css اون برابر با myclass هست رو با عبارت مورد نظر جایگزین بکنه:
$(“div.myclass”).html(""this text will displayed!");
توجه داشته باشید که باید قبلا یک پرونده از نوع css ساخته باشید و کلاسی با نام myclass در اون تعریف کرده باشید و سرانجام ، این پرونده css رو بصورت link در ابتدای پرونده html تعریف کرده باشید.بعنوان مثال ، فایل aspx باید بصورت زیر باشه:
یک نکته جالب این هست که مقدار برگشتی یا result هر کدوم از متدهاییکه استفاده می کنید ممکنه خود یکسری از element های html باشه.بعنوان مثال به کد زیر توجه کنید:
$(“div.myclass”).fadeout();
کد فوق باعث میشه تا جلوه fadeout در مورد تگهای div که کلاس اونها myclass هست اجرا بشه ، اما مقدار برگشتی تابع fadeout ، همین div هایی هست که کلاسشون myclass هست و در نتیجه شما میتونید بلافاصله پس از اجرای جلوه fadeout کارهای دیگری هم انجام بدین.به کد زیر توجه کنید:
$(“div.myclass”).fadeout().addClass(“mysecondclass”);
کد بالا باعث میشه که بلافاصله پس از اجرای جلوه fadeout ، کلاس این div ها هم تغییر بکنه و مثلا اگر در کلاس mysecondclass رنگ قلم و زمینه ، با کلاس myclass متفاوت باشه ، در اینصورت ، پس از اجرای این جلوه ، رنگ قلم و زمینه هم تغییر خواهد یافت.
روشهای دیگر انتخاب ، هم وجود داره که مثالهایی از اون رو می بینیم:
کد زیر ، اولین element یا تگ که در بلاک یک div با کلاس myclass وجود داره رو انتخاب می کنه:
$(“div.myclass”)[0]
یعنی تمامی تگهای بدنه یک تگ دیگر ، بصورت آرایه ای از element هی هستند که میتونید با ایندکسشون هم به اونها دسترسی پیدا بکنید.در مورد کد بالا ، مثلا میتونید بنویسید:
$(“div.myclass”)[0].innerHTML=”this text will be displayed!”;
نمونه روشهای دیگر انتخاب رو مروری می کنیم.کد زیر اولین سطر تمامی جدولهای موجود در صفحه رو انتخاب می کنه:
$(“tr:nth-child(1)”);
کد زیر اولین تگ div موجود در صفحه رو که در ذیل تگ body تعریف شده انتخاب می کنه:
$(“body > div”);
کد زیر تمامی تگهای پیوند a رو که به یک پرونده از نوع zip اشاره می کنن انتخاب می کنه:
$(“a[href$=zip]”);
کد زیر تمامی تگهای div فرزندی body رو که دارای تگ a باشند رو انتخاب می کنه:
$("body > div:has(a)”);
در قسمت بعدی در مورد استفاده از توابع jQuery و امکاناتش خواهیم گفت.
نحوه استفاده از jQuery در ASP.Net و Visual Studio
ژوئن 11, 2008 at 7:42 ب.ظ | In برنامه نویسی/کد نویسی یا توسعه | 6 CommentsTags: jQuery, ویژوال استودیو, Visual Studio, جی کوئری, جاوا
برخی از دوستان در ایمیلهاشون به کرات این سوال رو مطرح کردند که آیا می شه از jQuery در ویژوال استودیو دات نت و برنامه نویسی تحت Net Framework. با ASP.Net استفاده کرد؟
همانطور که در پست تحت عنوان “JQuery چیست” توضیح دادم ، این کتابخانه و کتابخانه های مشابه مانند Prototype و YUI و GWT از جمله پراستفاده ترین و محبوبترین کتابخانه های جاوااسکریپتی برای توسعه سیستمهای وبی هستند و مسلمه که استفاده از کتابخانه های جاوا اسکریپیتی براحتی در ویژوال استودیو ممکنه.
خاطر نشان می کنم که پس از انتشار Ajax Framework توسط میکروسافت ، به نظر بسیاری ، این بسته بسیاری از نیازهای توسعه دهندگان رو برطرف می کنه.اما در این باره ، سه موضوع جای بحث داره.
اول اینکه این بسته یک بسته نرم افزار باز هست اما منبع باز نیست.یعنی شما بدون محدودیت می تونید از اون در نرم افزارهاتون استفاده کنید اما سورسش در دستس نیست.لذا توسعه اون محدود به خود میکروسافت هست و طبیعیه که سفارشی سازی و امکانی مانند ساخت انواع متنوع Plugins برای اون فعلا وجود نداره یا بسادگی jQuery نیست.
دوم اینکه کار با jQuery برای ساخت نرم افزارهای مبتنی بر Ajax و یا استفاده از اون برای ایجاد رابطهای کاربری کاربرپسندتر ، بسیار ساده تر از Ajax Framework متعلق به میکروسافت هست.
و سومین موضوع اینکه ، ساخت خود مجموعه Ajax Framework بر اساس جاوا اسکریپت و بصورت یک پروژه Class در دات نت انجام شده و ما در همین مجموعه مقالات روش ساخت یک کنترل جدید برای ویژوال استودیو ، مبتنی بر جاوا اسکریپت رو توضیح خواهیم داد و البته جالبه بدونید که اغلب پکیج های تجاری مانند Telerik و WebUI هم مبتنی بر جاوااسکریپت و پروژه کلاس ، و بروشی مشابه آنچه توضیح خواهیم داد ، تولید شدند و شما با دونستن اون ، نیازی به خرید این بسته های گران قیمت و یا زحمات استفاده از نگارشهای کرک شده اونها در ایران نخواهید داشت.
از اونجاییکه در این مورد منابع زیادی دیده نمی شه و بویژه در ایران حداقل من زیاد با مواردی از استفاده از jQuery در VS توسط توسعه دهندگان ، برخورد نکردم ، تصمیم گرفتم تا در یک سلسه مقالات چند قسمتی ، به نحوه استفاده از همه این کتابخانه ها ، بصورت مختصر اما شفاف ، بپردازم.
در قسمت اول از این مجموعه مقالات ، به نحوه استفاده از jQuery خواهم پرداخت.
jQuery رو میشه در قالب سه نوع پکیج زیر دسته بندی کرد:
1- پکیج پایه که می تونید اونرو از سایت http://www.jquery.com دریافت کنید.این پکیج به دو صورت فشرده و ساده در دسترس هستند.همانطور که در یکی از پستهای قبلی درباره افزایش کارایی وب توضیح دادم ، سازندگان jQuery این کتابخونه رو بصورت فشرده هم برای دانلود در دسترس گذاشتن و با اینکار زحمت فشرده سازی اونرو از شما برداشتن.اما اگر مایلید تا اونرو شخصا توسعه بدین و کد اونرو مطالعه کنید ، می تونید که دانلود Uncompressed اونرو انجام بدین.برای تمامی کارهاییکه می خواهیم در آینده با jQuery انجام بدیم به یکی از ایندو نیاز داریم اما همانطور که گفته شد ، در صورتیکه کاربرد وب رو با jQuery توسعه دادید ، برای استفاده کاربر نهایی و یا upload سایت به میزبان اون ، حتما نسخه فشرده jQuery رو قرار بدید تا با اینکار کارایی وب هم افزایش پیدا بکنه.
2- jQuery User Interface یا jUI: این پکیج که مبتنی بر پکیج اول تولید شده ، شامل کنترلهایی برای ساخت رابط کاربری زیبا ، جذاب و کارآمد و دارای قابلیت Ajax هست.شما میتونید مجموعه jUI رو از سایت http://code.google.com/p/jquery-ui دریافت کنید.اگر بخاطر موضوع تحریم ایران ، در دانلود اون مشکل دارید میتونید از آنتی فیلترهایی مانند Freegate استفاده کنید و یا اگر باز هم مشکلی بود ، کامنت بگذارید تا اونرو در جایی براتون بگذارم.
3- الحاقیه ها یا Plugins: همانند Firefox که یک نرم افزار آزاد با منبع باز هست ، مجموعه jQuery هم بصورت نرم افزار آزاد با منبع باز منتشر میشه و لذا کاربران زیادی اقدام به توسعه اون در قالب تولید Plugins های متعددی کردند.این الحاقیه ها رو میتونید بسته به نیازتون از سایت http://plugins.jquery.com دریافت کنید.
توصیه می کنم در پوشه پروژه وب خودتون ، و البته دنبال کردن این مباحث یک پروژه بنام Website1 در ویژوال استودیو ایجاد کرده و در همین پوشه ، یک پوشه بنام scripts ایجاد کنید و در اون هم یک پوشه دیگه بنام jq و در داخل این آخری ، سه پوشه دیگه بنامهای base برای پکیچ پایه ، یک پوشه pi جهت Plugins و نهایتا یک پوشه ui15 جهت قراردادن آخرین توزیع jUI یعنی نگارش 1.5 اون ایجاد کنید.بنابر این باید ساختاری مشابه زیر در پوشه Website1 داشته باشید:
Website1——->> jq
————> base
————> ui15
————> pi
هر کدوم از پرونده های دانلود شده در بندهای 1 و 2 و 3 رو در پوشه خودش کپی کنید.
اولین کد خودمون رو برای دیدن نحوه کار با jQuery با نوشتن کد ساده ای در default.aspx مربوط به پروژه Website1 شروع می کنیم ، ابتدا کل کد پروژه رو یکجا می گذارم ، بعد مرحله به مرحله اونرو توضیح میدم:
خب بگذارید همین کد رو بررسی کنیم. در خط ششم ، ارتباط بین کتابخونه jQuery با این صفحه رو برقرار کردیم تا بتونیم در جاهای مختلف این صفحه از امکانات این کتابخونه استفاده کنیم ، توابعش رو فراخوانی کنیم و ….
همچنین یک تگ a هم در بدنه کد قرار دادیم که بتونیم یکی از قابلیتهای jQuery رو در مورد اون به آزمون بگذاریم.
در واقع ، کد اصلی jQuery ما ، خط 11 این صفحه هست که با تعریف یک جاوااسکریپت شروع می شه.علامت $ یک نام مستعار برای کلاس پایه شی ء jQuery هست که در این کتابخونه قبلا تعریف شده و شما به کرات از اون استفاده می کنید.بنابر این ، ترکیب ()$ کارش ، ساخت یک نمونه از کلاس jQuery هست.بزبان دیگه این ترکیب ، یک Constructor برای کلاس پایه jQuery می باشد.
کار اصلی کتابخونه jQuery مبتنی بر شناسایی اشیای پرونده HTML بر اساس DOM هست.در واقع jQuery عملیات خودش رو با ارزیابی تگهای مربوط به این مدل بانجام میرسونه.بهمین دلیل ، لازم هست که ابتدا بررسی بشه که ساختار DOM در پرونده HTML وجود داره و اصطلاحا حضور داره یا نه؟
بنابر این ، کار با هر عملی در jQuery با فراخوانی یکی از توابع این کتابخونه بنام ready شروع میشه که یک متد برای شی ء Document متعلق به کلاس پایه jQuery هست که شما با ()$ اونرو ساختید.
لذا عبارت :
$(document).ready()
ابتدا یک کلاس پایه jQuery ایجاد میکنه و سپس متد ready از شی ء Document اونرو برای بررسی وجود مدل DOM در فایل HTML شما اجرا میکنه و اگر موفقیت آمیز بود ، ادامه کد اجرا خواهد شد.
همانطور که می بینید ، ادامه کد ، تعریف یک تابع جاوا اسکریپت برای عملی است که بعنوان نمونه ، می خواهیم انجام بدیم.این تابع که در بدنه متد ready و بنوعی بعنوان پارامتر متد ready نوشته میشه (در این مثال ، در ادامه ، تابعی خواهد بود که باعث میشه ، با کلیک بر روی هر لینک در این صفحه یک پنجره نمایش داده بشه که در اون متن Hello World رو خواهید دید):
function()
{
$(“a”).click()
}
معنای عبارت فوق این هست که شما میخاید در مرحله بعدی بگید در صورت کلیک بر روی هر پیوند در این صفحه چه کاری باید انجام بشه.
عبارت (“a”)$ به معنای انتخاب هست.یعنی تمامی تگهای a در صفحه باید انتخاب بشن تا عملیاتی که بعدا قراره براشون برنامه نویسی کنید ، برای اونها اعمال بشه.در این مثال ما می خواهیم رخداد click رو برای اونها کد نویسی کنیم.توجه داشته باشید (“a”)$ تمامی تگهای a رو انتخاب می کنه ، یعنی حتی اگر بر خلاف مثال ما ، بیش از یک تگ a یا لینک در صفحه وجود داشته باشه ، تابعی که نوشته خواهد شد ، بر روی همه اونها عمل خواهد کرد.
همانند متد ready ، شما عملی که در پاسخ به کلیک click بر روی تگهای a رو می خواید انجام بدید رو باید بصورت پارمتری از متد click پیاده سازی کنید.بنابر این ، تابع خودمونرو به شکل زیر توسعه می دیم:
function()
{
$(“a”).click
(
………… here we will write our java-script code………
)
}
اکنون ، همانطور که گفته شد ، میخایم کاری کنیم که با کلیک بر روی هر پیوندی در این صفحه ، یک پنجره نمایش داده بشه که در اون متن Hello World دیده بشه.بنابر این ، کد فوق رو بصورت زیر توسعه میدیم:
function()
{
$(“a”).click
(
function()
{ alert(“Hello World!”); }
)
}
خب ، حالا اگر کل کد اولیه رو که مرحله به مرحله ، توسعه اونرو توضیح دادیم ، اجرا کنید ، صفحه زیر رو خواهد دید :
و اگر بر روی لینک بالا کلیک کنید صفحه زیر رو خواهد دید:
در واقع تمامی کارهایی که تا بحال با استفاده از jQuery کردیم ، همانند اون هست که تنها یک خط زیر رو در فایلتون نوشته باشید:
<a href="" onclick="alert(’Hello world’)">Link to Display Hello</a>
شاید در این مرحله این ذهنیت خطور بکنه که وقتی تمامی تلاش فوق برای کار نمایش یک پنجره Hello World فقط با یک خط قابل انجام هست ، پس چرا از jQuery استفاده کنیم؟
خب باید بگم این تنها یک مثال برای روشن شدن روش کلی استفاده از jQuery هست و اینکه شما با عباراتی مثل $ و همچنین کلاسه پایه jQuery آشنا بشین.در قسمت بعدی ، در مورد امکانات فوق العاده اون با ذکر مثالهای بیشتر بحث خواهیم داشت.
توهم یک تجربه !
ژوئن 3, 2008 at 5:38 ب.ظ | In پرسش و پاسخ | 10 CommentsTags: Linux, لینوکس, مقایسه, ویندوز, windows, اوبونتو, سیستم عامل
این پست در پاسخ به کامنت یکی از همکاران ذیل پست “لینوکس و قصه های OpenSource” نوشته شده و امیدوارم کمی بحث رو روشن کنه.
پیش از اینکه به بحث اصلی بپردازم ، پس از مطالعه وبلاگ شخص کامنت دهنده ، لازم دیدم تا عنوان “اصلاح یک اشتباه” رو در مورد چند واژه ، ادامه بدم.
در بسیاری از سایتها و وبلاگها دیدم که وقتی درباره منبع باز (OpenSource) صحبت می کنند از اون تعریفی ارائه کرده و نهایتا نتیجه می گیرند که منبع باز یعنی نرم افزار آزاد !
منبع باز به این معناست که شما میتونید سورس نرم افزار رو بر اساس License ای که تولید کننده ملزم به ارائه تعریفی دقیق از اون هست ، دریافت کرده و اقدام به تغییر و نهایتا توسعه اون بکنید.
اما نرم افزار آزاد به هیچ عنوان معنای منبع باز نیست.نرم افزار آزاد به نرم افزاری گفته میشه که شما می تونید باز هم بر اساس License مشخصی که توسط تولید کننده ارائه میشه ، اونرو کپی کنید ، بصورت مستقیم از اون جهت کارهاتون استفاده کنید و یا مثلا به شکل OLE یا Activex از اون در کاربردهاتون بهره ببرید و یا حتی اونرو بهمراه نرم افزارهای کاربردیتون منتشر یا Redistribute کنید.
ممکنه که تولید کننده ، نرم افزار آزاد خودشو بصورت OpenSource هم ارائه بکنه ، گاهی نگارش ایندو (Version or Release) با هم متفاوتن و گاهی یکسان.مثلا ممکنه نرم افزار آزاد ، نگارش 3 باشه اما منبعش که در دسترس شماست نگارش 2.
در مورد OpenSource هم همین مورد مصداق داره.یعنی ممکنه منبع نرم افزار بصورت Open در اختیار شما باشه اما مجوز و یا License اون برای استفاده از اصل کاربرد ، کاملا مطابق با مجوزهای معمول نرم افزار آزاد نباشه.
برای آشنایی با انواع License در توزیع نرم افزار میتونید به سایت زیر مراجعه کنید:
http://en.wikipedia.org/wiki/List_of_OSI_approved_software_licenses
اما بعد:
من در محل کار و همچنین منزل ، 6 دستگاه رایانه شامل 2 لپتاپ و 4 سرور دارم که بر روی اونها برخی بصورت Virtual Server و برخی هم Full Standlone سیستمهای عامل متفاوت ویندوز ، OS2 و لینوکس رو داشته و بر اساس سیستمها و پروژه های کاری ازشون استفاده می کنم.
بر روی یکی از لپتاپهام بطور کامل لینوکس فدورا دارم و بر روی لپتام دوم ، لینوکس اوبونتو رومیزی رو بصورت VMWare Virtual Machine در داخل ویندوز ، مورد استفاده قرار میدم.
لینوکس رو بسیار دوست دارم و افتخار مدیریت تیم توسعه اونرو بصورت اختصاصی برای شرکتهای مختلفی داشتم.اخبار اونرو هر روز دنبال می کنم و سورس کدهای اونرو هم بصورت مداوم مطالعه می کنم.
اما اونچه در آن پست نوشته ام ، وضعیتی بوده که در ایران شاهدش بودم ، و بهیچ عنوان منظورم توهین به شخص یا اشخاص محترم توسعه دهنده و یا علاقمندان اون نبود.اگر فرض کنیم من چنان توهینی رو مرتکب شده باشم ، خودم اولین شخص مخاطب اون پست و لغت “جو گیر” و “توهم” خواهم بود.
بنظرم میرسه دوستان پیش از قضاوت راجع به موضوع و متن آن پست ، نگاهی به سلسله پستهای 4 قسمتی “3 اشتباه کلیدی در 3 دهه توسعه نرم افزار ایران” بیندازن.و هدف اصلی من از نگاشتن اون پست این هست که بجای اینکه از هول حلیم بیافتیم توی دیگ ، ابتدا بررسی دقیق علمی ، تاریخی و بویژه کارکردی بکنیم و البته لازمه اینکار رو برای سیستمهای عامل مختلف انجام بدیم و بعد به اظهار نظر در موردش بپردازیم.
و یک موضوع رو هم خیلی رک بگم: کسی میتونه راجع به مباحثی از این دست اظهار نظر بکنه که اولا بطور کامل مبانی و هسته و توسعه کاربرد و خلاصه معماری سیستمهای عامل ویندوز و لینوکس رو بطور کامل بدونه ، ثانیا از هر دو بصورت حرفه ای تجاری (و نه تنها خانگی) استفاده کرده باشه ، و ثالثا ، برای هر دو ، برنامه نوشته باشه و نهایتا ، حتما تاریخ ارائه و روند رشد تاریخی هر یک رو بدونه.بنظر من ، این شرایط نه تنها برای مقایسه هایی از این دست برای فرد کارشناس لازمه ، بلکه برای مقایسه های دیگر علوم نرم افزاری مثل انتخاب زبان برنامه نویسی برای یک کاربرد ، موتور بانک اطلاعاتی برای یک پروژه و …. هم مصداق داره.
متاسفانه ، همانگونه که در سلسله پستهای “3 اشتباه کلیدی در سه دهه توسعه نرم افزار ایران” نوشتم ، در ایران ، عمده رفتارها و گفتارها توام با نوعی افراط و تفریط هست و البته ریشه شناسی اون امکانپذیره و امیدوارم زمانی بتونم در این باره در حوزه نرم افزار ایران مقاله ای بنویسم.
اما در مورد کامنت همکار گرامی ، بنظرم میرسه که توصیه کنم مطالعه جامعی درباره علت ایجاد سیستم عامل یونیکس ، و سپس علل و انگیزه ها و چگونگی ارائه سیستم عامل لینوکس انجام بدید و سپس ، به چند کشور توسعه یافته سفر کنید و از نزدیک شیوه ها و رهیافتها و رویکردها رو ببینید و سپس با بازگشت به ایران ، وضعیت ایران رو هم بررسی کنید و نهایتا اقدام به ارائه یک نتیجه نهایی بکنید.
در مورد توسعه لینوکس به انتشار رومیزی ، لازمه بگم که :
1- لینوکس 3 دسته توسعه دهنده دارد.شامل توسعه دهندگان کرنل یا هسته سیستم عامل ، توسعه دهنده کاربرد و توسعه دهنده پوسته.مطلبی که در پست من آمده بوده ، مربوط به نظر و هدف اصلی ایجاد کنندگان سیستم عامل لینوکس که عمدتا توسعه دهنده کرنل هستند ، بوده و لکن با توجه به سرعت رشد ارتباطات ، این موضوع به توسعه پوسته هم کشیده شد.بنابر این تصور می کنم بهتر باشه کلمات استفاده شده در پست ها دقیق تر خونده بشن و همچنین نگاه دقیقتری به تصاویر ابتدای پستها داشته باشند!
2- لینوکس رومیزی عمدتا با هدف یک ایستگاه کاری با نزدیکترین و بیشترین سازگاری ، برای کار با سرور لینوکس توسعه داده میشه و متخصصینی که در تیمهای توسعه این لینوکس مشارکت دارند به دو گروه قابل تفکیک هستند.برخی از این کارشناسان ، بدنبال نزدیک کردن پوسته و امکانات لینوکس به سیستمهای عامل مدرنی مانند ویندوز هستن و برخی هم تنها سعی می کنن که اهداف اصلی توسعه هسته رو رعایت کرده و تنها امکانات پوسته لینوکس رو برای تسریع در کار با اون بعنوان یک سیستم عامل ایستگاه کاری در شبکه با سرور لینوکس ، ارتقا بدن.حالا اینکه کدوم دسته غالب و کدوم دسته مغلوب میشن و اینکه آمار کدوم بیشتره ، جای بحث و مطالعه داره.(البته این موضوع در کشورهای توسعه یافته و پیشتاز این امر مصداق داره و در ایران وضع بگونه دیگری است!)
در پایان ، از همکار گرامی تشکر می کنم ، و از همه خوانندگان وبلاگ که علاقمند به لینوکس هستند دعوت می کنم تا مقالات زیر رو مطالعه کنند:
http://www.desktoplinux.com/news/NS6087894103.html
و
http://searchenterpriselinux.techtarget.com/news/article/0,289142,sid39_gci1110765,00.html
و
http://www.intranetjournal.com/articles/200803/pij_03_10_08a.html
و
http://linuxplanet.com/linuxplanet/reports/5465/1/
ویندوز 7 ، هسته کم حجم را هدف گرفته است!
ژوئن 1, 2008 at 12:42 ب.ظ | In Uncategorized | 4 CommentsTags: kernel, micro kernel, معماری ویندوز, هسته ویندوز, ویندوز, کرنل, windows, windows 7, Windows Architecture, آینده ویندوز
بالغ بر 200 برنامه نویس در حال ساخت هسته (Kernel) جدید برای سیستم عامل آتی میکروسافت یعنی ویندوز 7 هستند که MinWin نام گذاری شده!
این کرنل دارای حدود 100 فایل به حجم تقریبی 25 مگابایت هست که واقعا قابل مقایسه با حدود 5000 فایل در کرنل 4 گیگابایتی ویندوز ویستا نیست.
توجه داشته باشید که کرنل ، یک رابط گرافیکی کاربر نیست ، بلکه این بخش از ویندوز ، پایه و اساس سیستم عامل بوده و کاربردها و سایر بخشهای سستم عامل ، بر اساس اون نوشته و توسعه داده میشن.
هسته جدید قراره در انتشارهای بعدی ویندوز ، ویندوز سرور و همچنین سیستمهایی مانند Embedded Devices مثل سامانه های اسکن و … بکارگرفته بشه.
مطالب بیشتر در این زمینه رو میتونید در لینکهای زیر بخونید:
- Windows get a ‘Mini-Me’
- Microsoft to trim Windows bloat for 2010
- http://www.osnews.com/story.php/18804/Thoughts-on-MinWin-Windows-7-and-Virtualisation/
- Microsoft builds minin Windows core
چرا امروزه نمی توان یک برنامه نویس خبره شد؟
ژوئن 1, 2008 at 12:19 ب.ظ | In برنامه نویسی/کد نویسی یا توسعه | 2 CommentsTags: .Net, Java, Programming, برنامه نویسی, دات نت
تغییرات و نوآوری های لحظه به لحظه در فن آوری های مختلف ، عملا امکان اینکه بتونید در کاری بطور کامل مسلط و خبره بشید رو از بین می بره !
این موضوع زمانی برام تجربه شد که سالها پیش در پی یک پروژه نرم افزاری ، نیاز داشتم تا با لیسپ برنامه نویسی کنم.یادگیری موثر لیسپ احتیاج به مطالعه منابع و مستندات بسیار زیادی داشت.تمرین ، تکرار ، آزمون و خطا و….
مقایسه میزان دانش مورد نیاز برای تسلط به C ، پاسکال و شاید کوبول ، در مقابل پلاتفرمهای مدرن امروزی مانند دات نت و جاوا ، واقعا تفاوتهای فاحشی رو نشون میده.تعداد دستورات بسیار کمتر ، انواع داده محدود تر ، عملگر های کمتر و ساده تر ، و….
بگذارید یه نگاهی به کتابخانه های نرم افزاری تولید شده در سال 1991 بیندازیم.سالیکه عملا بلوغ ویندوز از اینسال آغاز میشه.به یکباره تعداد زبانهای برنامه سازی فراوانی در محیطهای Mainframe ارائه میشن.رابطهای کاربری عمدتا متنی بوده و از قابلیتهای موشواره بهره ای نمی برند.اعتبارسنجی داده های ورودی به سهولت انجام میشن.شما بسادگی در برابر پیامی مانند: “لطفا کلیدی را جهت ادامه بفشارید ” عکس العمل ساده و مناسبی رو انجام خواهید داد. رخداد (Event) ، برنامه نویسی شی ء گرا (OOP ، زبانهای ایجاد رابط کاربری از نوع Markup مانند XAML و HTML ؟ معماری N-Tiered ؟ دسترسی اشتراکی به منابع ، تحت شبکه ؟ بومی سازی یا Globalization ؟ هنوز خبری از اینها نیست.زندگی خیلی آسون بنظر میرسه.
من براحتی و با صرف زمان کمی برنامه سازی با Perl/CGI رو آغاز کردم.برنامه نویسی در محیط Perl شباهت زیادی به برنامه نویسی در کوبول داشت.داشتن مستندات 50 صفحه ای از Perl کافی بنظر میرسید تا بتونید یک برنامه نویس خوب با Perl باشید.نیازی به دانستن مباحثی از قبیل SQL Injection نداشتیم و اصولا یک چنین نگرانیهایی وجود نداشت.من تخصص خوبی در Regular Expressions کسب کرده بودم.
در سال 1995 همزمان با معرفی رسمی جاوا توسط شرکت Sun ، یادگیری اونرو شروع کردم و بسیار برام حیرت آور بود: حدود 200 مگابایت راهنما و نمونه کدهای جاوا در قالب پرونده های HTML و بیش از یکهزار صفحه راهنمای چاپی! البته جاوا از آن زمان تا به کنون ، تغییرات زیادی رو شاهد بوده است.
زبانهای #C و VB.Net هم دست کمی از جاوا نداشتند.دست کم 500 صفحه راهنما برای داشتن دید کلی از برنامه نویسی با یکی از اونها ، ضرورت یک برنامه نویس بود.و البته در این میان ، PHP هنوز برتری منحصر بفردی داره ! بسیار ساده هست و بسرعت میتونید اونرو فرابگیرید ، حجم راهنماها بسیار کم هستند.و البته رایگان.
در مقابل ، محیطهای #C و جاوا ، بسیار گران و البته پیچیده.اگر کسی پیدا بشه که به من بگه : من توی یکی از ایندو یا هردوشون خبره هستم ، من بهش حتما خواهم گفت: یک دروغگوی بزرگ! و البته من به این موضوع باور دارم.
من کار حرفه ای با دات نت رو از ابتدای معرفی این پلاتفرم در سال 2002 شروع کردم ، اما نمیتونم بگم که در این محیط یک متخصص هستم! بلکه تنها میتونم بگم که تخصص خوب و بالایی در کار با System.Drawing ، System.Threading ، System.Net.Web و System.Text.RegularExpressions دارم.حجم اطلاعات اونقدر بالاست که در بسیاری موارد بیاد آوردن متدها ، ویژگیها و …. کار ساده ای نیست و براستی باید از پدیده IntelliSense توسط میکروسافت تقدیر کرد.
بنظر میرسه که باید بازتعریفی در مفهوم برنامه نویس خبره بشه.یک برنامه نویس خبره ، دیگه کسی نیست که دانش و همچنین تجربه زیادی در اینکار داره! بلکه برنامه نویس خبره ، شخصیه که ابزارها ، منابع و روشهای بدست آوردن اطلاعات مورد نظرشون در باره حل مسایل برنامه نویسیش برای رسیدن به هدفش بخوبی میدونه.
و حقیقت اینه که امروز ، عصر کتاب باز یا Open Book هست.یعنی شما به منابع اطلاعاتی بدون محدودیت دسترسی دارید ، فقط باید بدونید چطور از اونها استفاده کنید ، و برتری شما ، در سرعت رسیدن به اطلاعات مورد نظرتون ، تواناییتون برای بکارگیری ابزارهای اطلاعاتی ، و دادن ایده های خلاقانه است ! توجه داشته باشید تمام اینها به این معنی نیست که فقط ابزار شناس باشیم و روش شناس.دونستن مبانی و بویژه تاریخچه اونها از لوازم اصلی هر کاریه.
cobol : زنده یا مرده ؟
ژوئن 1, 2008 at 4:45 ق.ظ | In برنامه نویسی/کد نویسی یا توسعه | Leave a CommentTags: Cobol, Programming, کوبول, برنامه نویسی
اگر برنامه نویس با سابقه ای باشید ، حتما لحظاتی از زندگیتون رو بیاد دارید که از برنامه نویسی با کوبول لذت می بردید.
بسیاری از پیشکسوتان امنیت و هک در نرم افزار ، برنامه نویسی رو با کوبول شروع کرده اند.شاید بسیاری از شما تصور می کنید که این زبان دیگر کاربردی نداشته و برنامه نویسان آن شغل خودشون رو از دست داده اند!
آیا واقعا اینطور هست؟ نگاهی به مقاله چاپ شده در مجله ComputerWorld حتما نظرتون رو تغییر خواهد داد.
بر اساس مطالعات آماری انجام شده ، کوبول ، متداولترین زبان برای تولید نرم افزارهای تجاری بوده و هست.بر اساس مطالعه ای که در سال 1997 انجام شد ، 85% نرم افزارهای تجاری/مالی جهان بزبان کوبول نوشته شده بودند که شامل بیش از 200 میلیارد خط برنامه بوده است.آخرین آمار مربوط به سال 2007 بوده که نشون میده هنوز 60% نرم افزارهای تجاری/مالی بزبان کوبول هستند و توسعه اونها ادامه داره!
بدلیل ماهیت نرم افزارهایی که با کوبول نوشته شدن ، حجم زیاد برنامه ، حساسیتهای مالی و امنیتی و …. شرکتهای استفاده کننده از این نرم افزارها بدنبال راهی هستند تا برنامه های کوبولی خودشون رو با کاربردهای امروزی سازگار کنند.جالبه که بدونید بر اساس مطالعات آماری ، بسیاری از برنامه نویسان این کاربردها ، یا بازنشسته شدند و یا در حال بازنشستگی هستند.
بر اساس مطالعه ای که در سال 2004 انجام شده ، حدود دو میلیون برنامه نویس حرفه ای کوبول در دنیا وجود داشت که همین مطالعه نشون میده که بطور متوسط سالانه 5% از این برنامه نویسان یا فوت میکنن یا بازنشسته میشن.
بنابر این به نظر میرسه با توجه به مطالب فوق ، زبان کوبول هنوز یک زبان برنامه نویسی پردرآمد برای کسانیست که بدنبال درآمد هستند و جالبه بدونیم که متوسط دریافتی این برنامه نویسان حدود 2/5 برابر برنامه نویسان دات نت و جاوا است.
نگاهی گذرا به سایت salary.com و شرکتهایی که متقاضی برنامه نویس هستند و ویژگیهای مورد انتظار اونها در بخش مهارتهای برنامه نویسی ، خود گویای این مطلب هست.
موفق باشید.
برنامه نویسی را چگونه آغاز کنم ؟ قسمت سوم و آخرین قسمت
ژوئن 1, 2008 at 4:21 ق.ظ | In پرسش و پاسخ | 3 CommentsTags: برنامه نویسی
در پاسخ به کامنتهای دوستان مبنی بر رئوس مطالبیکه باید از شروع تا برنامه نویس تجاری شدن یاد بگیرید اینجا می نویسم.مطالب باید به ترتیبی که گفته میشه فراگرفته بشن و هر مقاطع لازم هم پروژه ای انجام و کدهای زیادی در همون مطلب مرتبط از برنامه ها و کدهای خوب ، خونده بشن:
1- ترم 1:
- مقدمه ای بر برنامه نویسی:شامل ساختار اصلی یک برنامه ، عبارات کنترل برنامه ، حلقه ها ، دستورات شرطی و… در این مرحله نیازی به آشنایی با مفاهیم OOP نیست و تاکید بر عادات خوب برنامه نویسی هست.موضوعاتی از قبیل نکاتیکه باید برای خوانایی کد رعایت بشه و مسایلی از این دست که در برخی پستهای قبلی اشاره کردم.بنظرم میرسه ، زبان VB زبان مناسبی باشه هرچند شخصا Rubby و پاسکال رو توصیه میکنم.
- منطق برنامه ، مفهوم کلمات کلیدی در زبانهای برنامه سازی ، نحوه و مراحل کد نویسی ، ترجه ، تفسیر تا تولید برنامه اجرایی
- مبانی شبکه و مدیریت سیستم: عمده تمرکز بر روی مفاهیم کلیدی شبکه و همچنین آشنایی کامل با TCP/IP
2- ترم 2: شامل:
- درک مفاهیم Usability یعنی نحوه شناسایی نیازهای اساسی کاربران نهایی نرم افزار و Accessibilty یعنی نیازهای اختصاصی کاربران.
- تئوری بانکهای اطلاعاتی
- مهارتهای اصلی برنامه نویسی: در این مرحله ، دانشجو/نوآموز باید با مفاهیم کتابخانه توابع آشنا باشه و بتونه برای برنامه هاش کتابخانه ایجاد بکنه.روش تهیه این کتابخانه ها و روش تشخیص توابع کتابخانه ای و …. که بتونه توسعه نرم افزار رو تسهیل بکنه از مهارتهای اصلی این دوره هست که باید فراگرفته بشه.
-طراحی بروش OOP
3- ترم 3: شامل:
- ساختمان داده : که حتما باید با C آموخته بشه و تمامی عناوینش با جزییات آموخته بشه ، صف ها ، گرافها ، درختهای دودویی ، پشته ، لیستهای پیوندی و ….
- مستند سازی مشخصه های فنی: در این بخش باید یاد بگیرید که چگونه مشخصه نیازمندیهای کاربر رو دریافت کنید و اونرو به فرمی از مستندات فنی تبدیل کنید.همچنین در این دوره مقدماتی از روش UML گفته میشه.
- برنامه نویسی کاربردهای مبتنی بر بانک اطلاعاتی و Client/Server
- مبانی طراحی صفحات وب: در این زمان باید HTML و CSS و همچنین جاوااسکریپت بطور کامل فراگرفته بشه.
4- ترم 4: شامل:
- اعتبار سنجی داده ها: باید روشهای اعتبارسنجی داده ها و بخصوص مفاهیم Regular Expressions بطور کامل آموخته بشه.
- برنامه نویسی ++C : در حد مقدماتی
- آشنایی با زبانهای برنامه سازی مبتنی بر مفسر: باید قابلیتها و امکانات ، تفاوتها و محل کاربرد هر یک از زبانهای Perl , Ruby , Python و جاوااسکریپت فراگرفته بشه.
- طراحی گزارش: در این مرحله باید اصول طراحی گزارش و مفاهیم اون و مدلسازی داده ها برای ساخت گزارش آموخته بشه.
5- ترم 5: شامل:
- زبان ++C پیشرفته کار با OOP و کلاسها و جریانها و ….
- معماری بانک اطلاعاتی : نحوه طراحی بانک اطلاعاتی متناسب با نوع نرم افزار و پیاده ساطی این طراحی بزبان SQL
- روشهای توسعه و تولید نرم افزار: باید مفاهیم RUP و فازهای اون و روشهای توسعه نرم افزار اعم از آبشاری ، RAD و … کاملا فراگرفته بشه.
6- ترم 6: شامل:
- برنامه نویسی بزبان جاوا : ترجیحا در محیط Eclipse
- برنامه نویسی بزبان VB.Net
- برنامه نویسی بزبان #C
- مفاهیم امنیت نرم افزار ، قفل گذاری ، محافظت از برنامه و بانک اطلاعاتی و مفاهیمی از قبیل Hack & Crack و همچنین SQL Injection و….
7- ترم 7: شامل:
- برنامه نویسی یونیکس: بهمراه آشنایی با مفاهیم و معماری یونیکس
- برنامه نویسی ویندوز بهمراه آشنایی کامل با معماری و مفاهیم ویندوز
- آنالیز کیفی(QA)
- مستندسازی: شامل روش و استانداردهای نوشتن توضیحات در داخل کد ، تهیه مستندات راهنمای کاربران و…
8- ترم 8: شامل:
- برنامه نویسی گروهی(تیمی): مهارتهای کار در گروه و کار گروهی ، روشهای مدیریت گروههای نرم افزاری ، بهمراه شرکت اقلا در دو پروژه که بصورت گروهی کار شده باشه.
- توسعه نرم افزارهای چند رگه ای (multithread)
- برنامه نویسی گرافیکی و DirectX و OpenGL بویژه با ++C
- نحوه نوشتن ابزارگردان یا Device Driver
- نحوه نوشتن برنامه های شبکه (Sockets) مانند فایروالها ، و….
موفق باشید.
لینوکس و قصه های OpenSource
ژوئن 1, 2008 at 3:42 ق.ظ | In برنامه نویسی/کد نویسی یا توسعه | 7 CommentsTags: Linux, OpenSource, لینوکس, منبع باز
بسیار شده که این جمله معروف Ease of Use رو در مورد لینوکس شنیدید.اما من اینجا میپرسم : برای چه کسانی؟ �
چند هفته پیش ، داشتم مقاله ای رو برای یک مجله می نوشتم که در مورد مقایسه دو واژه نگار Abiword و KWord بود.هنگام مطالعه و بررسی این موضوع ، به مطلب جالبی رسیدم که نه تنها برای توسعه دهندگان ایندو برنامه مفید بود بلکه میتونست راهنمایی برای عموم توسعه دهندگان لینوکسی باشه که باهاشون کار می کنم.
من تصور می کنم توسعه دهندگان لینوکس ، جامعه هدف یا کاربر نهایی رو اشتباه در نظر می گیرن و بعبارت دیگه ذهنیت نادرستی از کاربر نهاییشون دارن.در واقع ، من تصور می کنم که توسعه دهندگان لینوکس ، دارن برنامه رو برای خودشون و یا افرادی در سطح مهارتی خودشون توسعه میدن!
اگر نگاهی به کاربران OpenOffice بیاندازیم متوجه می شیم که عمده این کاربران ، قبلا و یا در حال حاضر دارن با MS-Office کار میکردن/می کنن.این نشون میده که توسعه دهندگان OpenOffice توجه زیادی به نیازهای کاربرانشون داشتن و در واقع ابتدا اونها رو شناسایی کردن بعد دست به توسعه نرم افزارهایی از این دست زدن.
اما توسعه دهندگان لینوکس ، سرعت بسیار کمتری از توسعه دهندگان سیستمهای عامل رقیب مثل ویندوز در توسعه ویژگیهای سیستم عامل ، متناسب با علاقمندیهای کاربران دارند.
شاید یک علت این موضوع این باشه که اساسا لینوکس طراحی نشده تا بعنوان یک سیستم عامل رومیزی مانند ویندوز مورد استفاده قرار بگیره و توسعه دهندگانش هنوز توسعه اونرو بر اساس ویژگی و هدف اساسی تولید لینوکس یعنی سیستم عامل مناسب بعنوان سرویس دهنده ، دارن توسعه میدن.
البته من با این یکی کاملا موافقم و این موضوع رو که خیلی ها دچار توهم شدند که لینوکس یک سیستم عامل رومیزی مناسبه و میشه بعنوان جایگزین ویندوز از اون استفاده کرد ، بهیچ عنوان قبول ندارم چراکه با اصول ، مبانی و علل شروع این پروژه و نحوه توسعه اون ، سازگار نیست و اصولا توسعه دهندگانش ، برخلاف تصور بسیاری از ایرانیان و همکارانم ، که بقول عامیانه “جو گیر” شدن ، هیچگاه بدنبال تبدیل لینوکس به یک سیستم عامل رومیزی ، چیزی شبیه ویندوز ، نیستند.
امیدوارم در وقتی مناسب ، خیلی مفصل تر در این مورد ، بنویسم و چند پست هم در مورد اشتباهات کلیدی از این دست در ایران بگذارم.
وبلاگ روی وردپرس.کام. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.















گوگل ریدر اشتراکی 