آزمایش رایانش مشبک + دو تا هدیه کوچولو!

چند وقت پیش در مورد رایانش مشبک یک ایده نوشتم و چند وقت بعد یک implement با استفاده از Node,Python و MongoDB برای ضرب ماتریس ها ازش درست کردم.روی Local تست کردم ، ولی نیاز بود که بصورت جامع تری تست کنم تا شاید بشه ازش استفاده های مفیدی کرد.واسه همین قسمت تست رو در کد این صفحه قرار دادم. مادامی که این صفحه بازه، شما دارید به تست این برنامه کمک کنید.می تونید در کنار بقیه Tab های باز هم ، این صفحه رو باز نگه دارید تا کمک بیشتری کنید:) و همینطور می تونید همین الان این صفحه رو ببندید و کمکتون به پروژه رو قطع کنید.

در حقیقت در حال حاضر یک thread روی سیستم شما ایجاد شده، که یک سری ماتریس رو از سرور میگیره، ضرب می کنه و جواب هاشو به سرور میفرسته!

در حقیقت این یک تست کامل نیست، ولی می خوام بعضی آمارهارو ازش دربیارم.به عنوان مثال چقدر طول می کشه تا این ضرب این ماتریس ها انجام بشه!

mickey-mouse-birthday-present من هم برای تشکر از دوستانی که با بازگذاشتن این صفحه بهم کمک کردند، دو تا هدیه کوچولو بهشون می دم:)البته از اونجایی که باید یک روش ارتباطی باشه واسه دادن هدیه،به دو نفر از کسایی که توی همین صفحه کامنت بگذارند هدیه داده میشه.(مضمونش مهم نیست، البته فحش ندید، مهم اینکه شما در این صفحه بودید و در همین مدت هم کمک کردید).هدیه بصورت رندوم به دو نفر از کسایی که تا ‍۱۵ شهریور کامنت بگذارند داده می شه دو تا هاست هست با مشخصات زیر:

 

 

  • حجم: ۱ گیگ
  • ترافیک ماهانه : ۱۰ گیگ
  • ساپورت php و mysql
  • ۱۰ تا mysql
  • ایمیل، subdomain نامحدود
  • کنترل پنل direct admin
  • و به مدت یک سال 

راستی ، تو کامنت حتما ایمیلتون رو باید وارد کنید و به این سوال هم جواب بدید که اگر همین صفحه بصورت یک application قابل نصب ارائه می شد( یعنی نصب می کردید و  کمک می کردید)، حاضر به نصبش بودید؟

راستی از اینجا هم می تونید اطلاعات ماتریس ها رو ببینید http://grid.moeinhm.ir:3000

ممنون می شم این صفحه رو به اشتراک بگذارید.

پ.ن:دیروز سرور down شد، محاسبات انجام نشد، با عرض پوزش

بازنویسی فیلدها در php

چیزی که می خوام بنویسم خیلی سادست، شاید اونقدر ساده که نوشتنش مایه تمسخرم بشه:) ولی از این روش خوشم میاد و استفاده می کنم ، شاید بقیه هم خوششون اومد:)

فرض کنید به URL زیر دسترسی پیدا می کنید

سرور php مقدار id رو برابر ۳ دریافت می کنه، در مورد post هم همینطور، یعنی اگر داشته باشیم

سمت سرور مقدار Mohammad برای fname ست شده،این چیز خیلی ساده و تقریبا به دردنخوری بود!ولی من ازش یه استفاده می کنم . قبل از checkbox ها یک فیلد hidden با همون نام در نظر می گیریم، اینطوری می تونم برای unchecked بودن checkbox هم یک مقداری دریافت کنم.

کامنت گذاری PHP

خوب، اصل مطلب، بدون هیچ حاشیه ای و فکر کردن روی چه طور شروع کنم نوشتن این یکی رو؟

معمولا ما برنامه نویس ها اونقدر حوصله نداریم که کدمون رو درست کامنت بگذاریم، ولی وقتی application جدی بشه ، کامنت گذاری یک بخش جدایی ناپذیر از application میشه.دلایلش خیلی روشنه و این بخش رو می پرونیم.اما نکته مهم تر(به نظر من) اینکه شور قضیه هم درنیاد.مثلا کد زیر یک جورایی کامنت اضافه و حشو حساب میشه و بهتر این جور چیزها از روی اسم متغیر مشخص باشه که داخل کد زیر هم هست.در حقیقت کامنت ها به ما بفهمونند که چرا داریم این کارو می کنیم ، اینکه چطور رو می شه در خود کد فهمید(البته جاهای سخت که با یک نگاه نمی شه فهمید رو باید کامنت گذاشت تا علاوه بر Why به How هم از داخل کامنت مشخص شه)

// توجه:قسمت بالا تجربیات خودم بود و نحوه ای که دوست دارم، هیچ لزومی وجود نداره همه مثل هم فکر کنیم، شما می تونید واسه هر خط کدتون ۱۰ خط کامنت بگذارید.

بهترین روش برای کامنت گذاشتن در PHP استفاده از استاندارد PHPDoc ه، در حقیقت خود PHPDoc یک اقتباس از JavaCode هست.استفاده از استاندارد PHPDoc دو مزیت داره،

  1. می تونید از روی کامنت هاتون document بسازید.
    برای اینکار اول phpdoc رو نصب می کنید.

 

و بعد از اون برای کدهای موجود در شاخه جاری، در پوشه docs یک document بسازید.

۲)IDE ها مفهوم کامنت هارو می فهمند و به شما و دیگران در autocomplete ، آوردن document موقع استفاده و … کمک می کنند.

برای کامنت گذاری با استاندارد PHPDoc در NetBeans

  1. کامنت ها با /** شروع می شه  ولی با */ بسته میشه.
  2. در netbeans بالای هر تابع اگر /** رو بنویسید و enter بزنید ، خود netbeans براتون بخشی از کامنت رو درست می کنه، پارامترهای ورودی و چیزی که تابع بر می گردونه.
  3. در حقیقت هر block از PHPDoc از سه بخش تشکیل میشه، شرح کوتاه(تک خطی)،شرح بلند(هر چقدر بخواهید) و کلمات کلیدی. می تونید از شرح کوتاه یا بلند کدتون از بعضی از دستورات html استفاده کنید تا PHPDoc موقع ساخت document دقیقا از اونها استفاده کنه.شما می تونید از


    استفاده کنید.
  4. کلمات کلیدی در PHPDoc همه تک کلمه هستند و با @ شروع می شند.
    میشه کلمات کلیدی PHPDoc رو به چندبخش تقسیم کرد،
  • Data Type Tags
    param@ که برای پارامترهای ورودی متد و function ها استفاده میشه
    return@ که نوع چیزی که برگردونده میشه رو مشخص می کنه
    var@ که برای مشخص کردن نوع متغیرهای کلاس ویا ثابت ها به کار میره
     
  • Legal Tags
    author@ و copyright@ و license@ که کاملا مشخصه
  • Versioning Tags
    مثل version@ و since@ و deprecated@
  • و بقیشون مثل
    example@ و link@ و see@ و uses@ و package@ و subpackage@

نکته قشنگ اینکه اگه از یه IDE خوشگل مثل Netbeans استفاده کنید(مثل الان خودم) می تونید از تگ todo@ هم استفاده کنید که استاندارد نیست، ولی با Ctrl+6 لیست تمام جاهارو براتون بیاره که قراره انجام بدید.برای استفاده از todo در یک خط هم از //TODO استفاده می شه کرد.

تجربیات دارکوب – بخش دوم

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

۱-حرف های دیگران

چند روز پیش وقتی داشتم با یکی از دوستام که با چند نفر دیگه یک استارت آپ رو شروع کردند صحبت می کردم ، یاد معین ۹۱ افتادم.من جلوی صحبت های نصیحت گونه موضع می گرفتم و به شدت واکنش نشون می دادم.البته نه به تمام نصیحت ها، به برخی که فکر می کردم عدم موفقیت رو می خواند.شاید خیلی وقت ها اینطوری هم بود.بعد از موضع گیری به حرف هاشون فکر می کردم و خیلی وقت ها به نظرم درست می یومد ولی اکثرا درست بودن اون حرف ها یعنی پیش بینی عدم موفقیت دارکوب و اصلا دوست نداشتم بهش فکر کنم.

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

۲- تعصب ، معامله win/win

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

tasoobمشکل اساسی ما تعصب بی جای ما بود، تعصب بی جایی که باعث عدم تعامل می شد. ، یعنی دارکوب جو تمامیت خواه در هرچیزی رو داشت و این باعث می شد هیچکسی دوست نداشته باشه باهامون کار کنه و ماهم همینطور، هرچیزی رو برای خودمون می خواستیم ، بقیه نادیده گرفته می شدند.

مسلما اولین چیزی که افراد بهش نگاه می کنند منفعت شخصی خودشونه،این کاملا طبیعیه، شاید در شرایطی مثل رودربایستی و دوستی یکسری مسئولیت ها قبول کنند، ولی این کارها مسلما دائمی نیست و  ممکنه به عدم دوستی ختم بشه.اشتباه ما نگاه برد/باخت به انجام هر کاری بود، ولی هیچ لزومی نداشت که تنها برنده هر معامله ما باشیم. می تونستیم پروژه هارو بصورت برد/برد انجام بدیم.

اشتباه اساسی خود من این بود که می خواستم تمام چیزهایی که در ذهنمه رو در دارکوب محقق کنم، این یعنی محدودتر شدن بدون اینکه به همون اندازه سودی برای من داشته باشه.

تجربه ای که تا به حال پیدا کردم و امیدوارم درست باشه و یادم بمونه که ازش استفاده کنم اینکه

  1. هیچ لزومی نداره که روی چیزهای ساده مثل شرکت ، زبان برنامه نویسی و … تعصب کورکورانه داشته باشم، هیچ لزومی نداره که من همه کارهام رو با شخص خاصی انجام بدم.من می تونم در چندتا پروژه ، با چندین گروه مختلف کار کنم. فرض کنید A فلج باشه، یا باید اونرو بغل کنید و باهم برید کوه که سرعت شما به شدت گرفته میشه، یا باید شما هم به خاطر اون کوه نرید و یا می تونید به تنهایی و یا با آدمهای دیگه ای به کوه نوردی برید.در بعضی از شرایط انتخاب سوم و چهارم بهترین انتخاب ها هستند.نباید تعصبی داشته باشید که تمام کارهاتون را با A انجام بدید.
  2. از دید هرکسی مهمترین فرد خودشه، در نهایت یک موقعی همه به منافع شخصیشون فکر می کنند، اگر این فکر اول کار باشه شاید دید بقیه کمی نسبت به شما عوض بشه، ولی حداقل احتمال تنها موندن در راه خیلی کمه.پس سعی کنید در پروژه ها منافع شخص مقابل رو هم در نظر بگیرید تا اونها با انگیزه و حس رضایت کامل کار کنند.کار تیمی یعنی برآورده شدن منافع همه اشخاص تیم.
  3. وقتی دیدید کاری اشتباهه، به جای خوبی ختم نمی شه و …، بدون خجالت جلوش رو بگیرید، مطمئن باشید ادامه یه حرکت اشتباه، اشتباه بزرگتری رو درست می کنه.اگر روز دوم فهمیدید که دوست ندارید در یک تیم کار کنید، جداشدنتون از تیم رو به روز سوم نندازید. چون اینطوری هم خودتون و هم تیم رو بیشتر به دردسر می ندازید.

و در نهایت کفشی که اندازه‌ی پای یک فرد است، پای دیگری را می‌فشارد؛ هیچ دستورالعملی وجود ندارد که برای همه‌ی موارد مناسب باشد. 

تجربیات دارکوب – بخش اول

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

fail

حدود یکسال و نیم پیش  با چندتا از دوستام تصمیم به ثبت یک شرکت کامپیوتری گرفتیم، ولی هنوز مشخص نبود که قراره چه اتفاقی بیفته، یعنی می گفتیم ماهم شرکت می زنیم جمله ای که از ابتدا اشتباه بود، هنوز نمی دونستیم که قراره توی اون شرکت چه کارهایی انجام بشه و این اولین اشتباهمون بود! همون روزها یکی گفت اول چاله رو بکن بعد فکر چاه کردنش باش، باید اول یک کاری رو شروع می کردیم و بعد شرکتی حول اون کار تشکیل می شد، اینکه اول شرکت ثبت شه و بعدش بگیم خوب، حالا قراره چی کار کنیم؟ ما دوست داشتیم که مستقل باشیم، یک کسب و کار مستقل که خودمون بالای سر خودمون باشیم، بهای آزادی به قیمت مسئولیت، چیزی که ارزشش رو داره ولی از راه درست!

وقتی شرکت رو شکل دادیم علاوه بر برنامه نویسی چندتا کار اجرایی کوچیک هم انجام داده بودیم، برگزاری همایش توی انجمن علمی دانشگاه! و خوب max کارمون هماهنگ کردن چند نفر بود، ولی همین چندتا کار کوچیک توهم مدیریت خوب داشتن رو به من یکی از دوستام داده بود.اولین بازی که با php یک سایت نوشتم فکر می کردم انتهای برنامه نویسی اینجاست، به نظر خودم خیلی خوب نوشته بودم، بعدتر ها با sql injection آشنا شدم و فهمیدم چقدر راحت اون سایت می یومده پایین، بعدش با MVC و …، اون موقع ها فهمیدم که هیچی بارم نبوده و تصمیم گرفتم توهم فهم عمیق  چیزی بهم دست نده، اشتباهیی که دوباره ولی در حوزه دیگه ای تکرارش کردم( البته چند بار دیگه هم توی خود کامپیوتر این اتفاق افتاد و باعث شد به شدت درگیر توهم شم و خیلی عقب بیفتم، حداقل از خودم).

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