صحنه هايي از اسكان مردي ماجراجو و بي خانمان در تورنتو

ارسال شده در عمومی. بیان دیدگاه »

برنامه نویسی گروهی با SubVersion

ساب ورژن = SubVersion
هفت تیر ۷tir.com به قلم نبی کرمعلی زاده  :   من (و شاید خود شما) همیشه در برنامه نویسی اینطور عمل میکنم که زمانی که تصمیم دارم تغییرات کلی در فایل ایجاد کنم که مطمئن نیستم نتیجه مطلوب خواهد داشت یا خیر، از فایل مورد نظر یک کپی به عنوان backup در همان مسیر قرار میدم و ابتدای نام فایل یک علامت under line (_) قرار میدم. سپس تغییرات را شروع میکنم. اگر تغییرات به نتیجه نرسید مجدداً آن فایل پشتیبان را جایگزین میکنم. اما همیشه داستان به همین سادگی نیست. گاهی فایلها زنجیروار به یکدیگر مرتبط هستند و تغییر کلی در یک فایل مستلزم تغییرات در فایلهای دیگر نیز هست. در این صورت اگر بعد از چند روز کار متوجه بشم که ایده اولیه و کلی من غلط بوده و کار از اصل اشکال داشته و تصمیم بگیرم که به همان سبک و روش قدیمی کار را ادامه دهم. اینجاست که پیدا کردن و اصلاح تغییرات و بازگرداندن تغییرات فایلها مثلا به چند روز قبل تقریباً غیر ممکن خواهد بود. همچنین همیشه با این قضیه مشکل داشتم که از کجا بدونم کدوم فایل رو مجدد ویرایش کردم و نیاز به آپ لود مجدد بر روی سایت داره و کدوم فایلها تغییری نکرده اند و نیاز به آپ لود مجدد ندارند. از طرف دیگه همیشه به این مسئله اعتقاد داشتم که انجام پروژه های برنامه نویسی به صورت گروهی تقریباً ناممکنه چون اعتقاد داشتم هماهنگی و گردآوری افراد درکنار یکدیگر کار مشکلیست. اما باز هم از اینکه پروژه های زیادی روی وب میدیدم که افراد زیادی در انجام اونها مشارکت دارند و جالب اینکه هر کدوم از این افراد در یک نقطه کره زمین زندگی میکنند، بیشتر متعجب میشدم.

پاسخ به سوالات و مشکلات مطرح شده در بالا مبحثی است که در ادامه به آن خواهیم پرداخت.
از وقتی که با مفهومی به نام “سیستم کنترل نسخه” و نرم افزار Subversion آشنا شدم به تمام سوالاتم پاسخ داده شد. و به قول آقای بیژن هومند در [این مقاله] : “بعد از یکبار نصب subversion و کار کردن با آن و عادت کردن به این محیط، مطمئن باشید که این سوال را بارها از خود خواهید پرسید که من تا بحال چگونه بدون آن کار میکردم؟!”سیستم کنترل نسخه (Version Control System یا همون VCS) سیستمیه که بر روی فایلهای پروژه مدیریت میکنه و هرگونه تغییراتی در فایلهای پروژه اعم از ایجاد، حذف و یا تغییر رو به طور دقیق ثبت میکنه .

برنامه های زیادی در این زمینه وجود دارند که از معروف ترین اونها میشه به Subversion یا اختصاراً SVN محصول شرکت CollabNet اشاره کرد که از سایتش به صورت رایگان قابل دریافت و نصب است. subversion قابلیت نصب بر روی هر سیستمی که Apache بر روی آن نصب میگردد را داراست. در [اینجا] یک لیست کامل از اینگونه نرم افزارها رو میتونید مشاهده کنید.

این برنامه امکان مدیریت کامل بر روی فایلهای پروژه رو همراه با ثبت نام ویرایش کننده و تاریخ ویرایش رو فراهم می آوره و کلیه تغییرات رو یک بانک اطلاعاتی قوی ذخیره میکنه به طوری که در هر لحظه میشه پروژه رو به حالتی که مثلا چندین روز و یا سال پیش به اون شکل بوده درآورد و این خیلی فوق العادست! سایت wikipedia هم در مورد مقالات درست همین عمل رو انجام میده، یعنی درسته که مقالات به صورت آزاد قرار گرفته اند و هر شخصی میتونه اونها رو ویرایش کنه اما کلیه تغییرات ثبت میشه و لازم نیست نگران از بین رفتن اطلاعات بود. ضمناً اینکه از واژه “پروژه” استفاده میکنم ببه این دلیله که هیچ محدودیتی در نوع پروژه وجود نداره و حتی در مورد پروژه های صوتی، تصویری و… هم میشه از این سیستم استفاده کرد که احتمالاً تنها نرم افزارهای مروبطه فرق دارند.

بد نیست کمی در مورد روش کار اینگونه سیستمها صحبت کنم. در اغلب این سیستم ها که نرم افزار subversion هم از اون استفاده میکنه، بدین ترتیب عمل میشه که یک مخزن جهت نگهداری فایلهای پروژه درنظر گرفته میشه. این مخزن بر روی سرور اصلی قرار گرفته که در پروژه های گروهی هر شخص اطلاعات مخزن رو میخونه اصطلاحاً checkout میکنه. با اینکار یک نسخه از کلیه اطلاعات مخزن به سیستمش منتقل میشن و هر تغییری که دلش بخواد بر روی اون اطلاعات میده و سپس اونها رو به مخزن برمیگردونه اصطلاحاً commit میکنه. در صورتی که در این فاصله فایل توسط شخص دیگری تغییر کرده باشه به کاربر هشدار میده و کلاً درمورد تغییرات فایلها بسیار هوشمند عمل میکنه، مثلا میتونه متوجه بشه کاربران کدوم خطوط رو ویرایش کردند و تا حد امکان خودش فایلها رو ادغام میکنه …

یکی از نرم افزارهایی که جهت کار با subversion محیط گرافیکی GUI بسیار خوب و قوی در اختیار کاربر قرار میده TortoiseSVN است که به صورت رایگان قابل دریافت و نصب است. این نرم افزار تنها تحت ویندوزه و برای لینوکس میشه از RapidSVN استفاده کرد. احتمالاً موقع نصب Visual Studio با گزینه Source Safe برخورد کردید، این نرم افزار هم جزو همین دسته است.

در پایان توجهتون رو به مقاله فارسی ۹ قسمتی آقای “بیژن هومند” تحت عنوان “آشنایی با Subversion” جلب میکنم:
[بخش نخست: pdf html] [بخش دوم: pdf html] [بخش سوم: pdf html] [بخش چهارم: pdf html] [بخش پنجم: pdf html] [بخش ششم: pdf html] [بخش هفتم: pdf html] [بخش هشتم: pdf html] [بخش پایانی: pdf html]

اگر فقط دو بخش اول این مقاله رو بخونید با پی بردن به قابلیت ها و مزایای subversion ، شک ندارم تا انتهای مقاله رو دنبال میکنید و با من هم عقیده میشید که وجود اون برای ما برنامه نویسا و الاخصوص PHP کاران مخصوصاً اگر کار گروهی باشه یک ضرورته.


-
ساب ورژن + SubVersion – برنامه نویسی گروهی

منبع :  freedom

شناخت حروف توسط شبکه های عصبی

تو این مطلب می خوایم بصورت عملی از شبکه های عصبی استفاده کنیم! واقعا خیلی جالبه می خوایم به کامپیوتر سه تا حرف الفبای انگلیسی رو یاد بدیم.
نکته ی جالب تر این هست که حتی به کامپیوتر نمی گیم هر کدوم از حرف ها چی هستن! فقط بهش می گیم که این ها سه حرف مختلف هستند! و کامپیوتر خودش تشخیص می ده هر کدوم متعلق به کدوم گروه هست! به این نوع طبقه بندی اصطلاحا Unsupervised میگن.

Question level 3 وااای مگه می شه؟؟؟ من فکر می کردم باید لااقل توی مثال هامون به کامپیوتر بگیم مثلا این A هست و این B هست!
Answer ” خوب اون هم نوعی یادگیری هست که بهش اصطلاحا Supervised می گن. اما توی این مثال حالت جالب تر یعنی Unsupervised رو می خوایم بررسی کنیم. به این صورت که فقط به کامپیوتر می گیم ۳ دسته وجود داره و براش چندین مثال می زنیم و خودش مثال ها رو توی ۳ دسته قرار می ده! در نهایت ما مثلا می تونیم بگیم همه ی مثال هایی که در دسته ی دوم قرار گرفتن A هستند.
شاید جالب باشه بدونید گوگل هم برای دسته بندی اطلاعات از همچین روشی استفاده می کنه! البته کمی پیشرفته تر. مثلا ۱۰۰ متن اقتصادی و ۱۰۰ متن ورزشی به کامپیوتر میده و از کامپیوتر می خواد اونها رو به ۲ بخش تقسیم بندی بکنه! ورودی لغت های اون متن ها هستند. “
Question level 3 وای، سیاوش باورم نمیشه!
Question level 2 من هم همینطور. مگه می شه کامپیوتر خودش دسته بندی کنه! لطفا ادامه بدید.
Answer ” اگه اجازه بدید می خوام همین کار رو انجام بدم! “

ابزار مورد نیاز

خوب! برای این که شروع کنیم به چند مورد نیاز داریم:

  1. در مورد هوش مصنوعی و شبکه های عصبی یکم اطلاعات داشته باشید. در صورتی که آشنایی ندارید می تونیدبرنامه ای برای تولید الگو که ورودی شبکه ی عصبی ما خواهد بود. این برنامرو میتونید از اینجا تهیه کنید.
  2. نرم افزار JOONE Editor. عبارت JOONE مخفف Java Object Oriented Neural Engine هست. که یک ابزار قدرت مند برای بوجود آوردن و آموزش انواع شبکه های عصبی در Java هست. توی این آموزش ما از ویرایشگر این ابزار استفاده می کنیم که محیطی گرافیکی برای تولید شبکه های عصبی داره و کار با اون بسیار ساده هست. این ابزار از اینجا قابل دریافت هست. بدیهیه که برای نصب این ابزار ابتدا باید جاوا روی کامپیوتر شما نصب باشه.
  3. کمی پشتکار و حوصله.
Question level 2 ای بابا! من جاوا رو کامپیوترم نصب نیست! یعنی باید برم سیدیشو بخرم؟؟؟
Answer ” فکر کنم شما علاوه بر جاوا مورد ۴ رو هم نداشته باشی… در صورتی که اینترنتت پر سرعته می تونی از اینترنت هم J2SE رو دانلود کنی. “
Question level 2 آره اینترنتم ADSL هست!.

ساخت الگوها

حالا می خوایم یک سری الگو تولید کنیم. الگو همون مثال هایی هست که گفتیم برای کامپیوتر می زنیم تا بتونه یاد بگیره.
برای این کار از برنامه ای که در شماره ی ۲ بخش قبل معرفی کردم استفاده می کنیم. این برنامه خیلی ساده کار می کنه و فقط الگو ها رو از حالت تصویری به ۰ و ۱ تبدیل می کنه.

Question level 4 سیاوش می تونی توضیح بدی چطور این کار انجام میشه؟
Answer ” بله حتما! اول تصویر رو به یک ماتریس ۸ در ۸ تقسیم می کنه. یعنی ۶۴ قسمت. وقتی دکمه ی سمت چپ ماوس پایینه در صورتی که ماوس از هر کدوم از اون ۶۴ بخش رد بشه اون بخش رو داخل ماتریس علامت گذاری می کنه (مقدار اون قسمت رو True می کنه). وقتی دکمه ی Learn زده می شه برنامه مقدار تمام قسمت ها رو از بالا به پایین داخل یک فایل ذخیره می کنه. مقدار هر قسمت می تونه ۰ یا False و ۱ یا True باشه. “

در صورتی که سورس این برنامرو خواستید کافیه توی بخش نظرات بگید تا براتون میل کنم.
کار با این برنامه خیلی آسون هست همونطور که توی شکل مشخصه. ادامه مطلب »