زندگی یک گیک

خاطرات مختصری از علایق یک گیک

زندگی یک گیک

خاطرات مختصری از علایق یک گیک

پیوندهای روزانه

۹ مطلب در فروردين ۱۳۹۲ ثبت شده است

استارت آپ ها شرکت هایی نوپا هستند که رشد سریعی دارند و معمولا در زمینه تکنولوژی فعالیت می‌کنند. این شرکت ها، ایده هایی نو دارند و بالقوه می توانند بسیار رشد کنند و در نهایت تبدیل به یک شرکت بسیار موفق شوند.


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


911223-www-nardebaan-ir-startup-of-you_26_i.jpg

توصیه هایی برای ساختن یک شغل پردرآمد

- شما باید تصمیم بگیرید که می خواهید ۱۰ سال دیگر به کجا برسید. سپس باید یک برنامه برای رسیدن به آنجا بریزید.


911223-www-nardebaan-ir-startup-of-you_27_i.jpg

شما باید علاقه خود را پیدا کنید و به دنبالش بروید.


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


911223-www-nardebaan-ir-startup-of-you_28_i.jpg

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


911223-www-nardebaan-ir-startup-of-you_29_i.jpg

مغز شما مغرور است و فکر می کند که همه به سرعت دانش عالی تان را تشخیص می دهند. او فکر می کند که لازم نیست به دنبال کسی باشد و سایرین به سراغ او خواهند آمد.
اما در حقیقت شما با کارکردن و تجربه معروف می شوید و به سایرین شناسانده خواهید می شوید.


911223-www-nardebaan-ir-startup-of-you_30_i.jpg

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


هدف نهایی تان را برای خود کاملا روشن کنید.

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


- و برنامه ای برای پر کردن این جاهای خالی بریزید.


اولویت اصلی با آموزش است (علم بهتر است از ثروت!)

911223-www-nardebaan-ir-startup-of-you_31_i.jpg

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


آموزش در کنار کارکردن

911223-www-nardebaan-ir-startup-of-you_32_i.jpg

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


دو قدم جلوترتان را پیش بینی کنید

911223-www-nardebaan-ir-startup-of-you_33_i.jpg

همیشه (هر هفته چند دقیقه یا چند ساعت) دست از کار بکشید و نگاهی به اوضاع بکنید. اگر در حال انجام یک پروژه هستید، به کمی جلوتر نگاهی بیندازید. بعد از این پروژه چه کاری بهتر است؟ انجام کدام کار بهترین است؟ انجام کدام کار شما را با سرعت بیشتری به موفقیت می رساند؟


هنگام نقشه کشیدن به این اصول توجه کنید: ببینید کدام حرکت دارای حداکثر مقدار و کیفیت شانس برای نزدیک شده به اهداف است؟ به این حرکت که ممکن است کاری ریسکی باشد طرح الف می گوییم. علاوه بر این طرح به یک «طرح ب» جایگزین، همراه با یک «طرح ی» مطمئن و غیرقابل شکست، نیز فکر کنید.


طرح الف

911223-www-nardebaan-ir-startup-of-you_34_i.jpg

مسیر اصلی، همان کاری که الان در حال انجامش هستید. کاری که فکر می کنید اگر به درستی پیش برود، شما را سریع تر به موفقیت می رساند.


طرح ب

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


طرح ی (آخر)

911223-www-nardebaan-ir-startup-of-you_35_i.jpg

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


لطفا فکر نکنید که شما هرگز شکست نخواهید خورد. بسیاری از شرکت های بزرگ بارها و بارها شکست خورده اند و طرح های خود را عوض کرده اند تا بالاخره موفق شده اند:


911223-www-nardebaan-ir-startup-of-you_36_i.jpg

آیا می دانستید که فیلکر کار خود را ابتدا به عنوان یک بازی آنلاین چند نفره شروع کرد؟


911223-www-nardebaan-ir-startup-of-you_37_i.jpg

آیا می دانستید پی پال در ابتدا فقط یک شرکت «کیف پول دیجیتال» بود؟


911223-www-nardebaan-ir-startup-of-you_38_i.jpg

آیا می دانستید که «جری اسپرینگر» (مجری مشهور تلویزیونی)، شهردار سینسیناتی بوده است؟


911223-www-nardebaan-ir-startup-of-you_39_i.jpg

آیا می دانستید «شریل سندبرگ» (مدیر اجرایی فیس بوک) کار خود را از هند آغاز کرده است؟ او روی یک پروژه سلامت عمومی برای بانک جهانی کار می کرد.


پس برنامه های خود را به روش الف - ب - ی بریزید (ABZ Planning). یک طرح الف اصلی، یک طرح ب جایگزین و یک طرح ی غیرقابل تغییر و حتمی.

  • geek

استارت آپ ها شرکت ها و تیم هایی نوپا هستند که رشد سریعی دارند و معمولا در زمینه تکنولوژی فعالیت می‌کنند. این شرکت ها، ایده هایی نو دارند و بالقوه می توانند بسیار رشد کنند و در نهایت تبدیل به یک شرکت بسیار موفق شوند.


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


911223-www-nardebaan-ir-startup-of-you_011_i.jpg

این مقاله توسط دو پیشگام در زمینه ایده های نو و استارت آپی تهیه شده است: ریدهافمن (سمت چپ) یکی از موسسان و مدیر لینکدین و بن کاسنوچا (سمت راست) موسس شرکت و نویسنده.


تمام انسان ها مدیر هستند و می توانند موسس یک شرکت بزرگ باشند

911223-www-nardebaan-ir-startup-of-you_01_i.jpg

زمانی که ما غارنشین بودیم، عملا خودمان، مدیر خودمان بودیم. خودمان غذای خودمان را پیدا می کردیم و سایر کارهای خودمان را مدیریت می کردیم و برایشان تصمیم می گرفتیم. هیچ کسی ما را مجبور به کاری نمی کرد. (قانونی ما را محدود نمی کرد. به دنبال کار در شرکتی نبودیم و کسی رئیس مان نبود. ما خودمان برای تمام زندگی مان تصمیم می گرفتیم و رئیس خودمان بودیم. هر یک از ما یک پیشگام و موسس کار خود محسوب می شدیم.) اما از آن زمان مدتها می گذرد. با ورود تمدن ما همگی «کارگر» شدیم (و اجازه دادیم دیگران برای ما تصمیم بگیرند). آنها به پیشانی ما مهر زدند که «شما کارگرید» و ما فراموش کردیم که هر یک از ما مدیر هستیم.
محمد یونس برنده جایزه صلح نوبل و پیشگام microfinance


911223-www-nardebaan-ir-startup-of-you_02_i.jpg

گفتیم که زندگی مدرن امروز همه ما را به کارگر تبدیل کرده. پس اگر می خواهید موسس یک استارت آپ باشید، اول از همه باید «نهال مدیریتی وجودتان» را پیدا کنیم و پرورش دهید.


911223-www-nardebaan-ir-startup-of-you_03_i.jpg

911223-www-nardebaan-ir-startup-of-you_04_i.jpg

هر شغلی که داشته باشید، از قاضی تا پزشک تا معلم تا مهندس تا هر شغل دیگری، شما باید به خود به عنوان یک مدیر نگاه کنید. کسی که می تواند حداقل یک حرفه استارت آپ زنده و رشد کننده را خلق کند: «استارت آپ شما.». پس همین الان پشت سکان بروید.


911223-www-nardebaan-ir-startup-of-you_05_i.jpg

911223-www-nardebaan-ir-startup-of-you_06_i.jpg

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


911223-www-nardebaan-ir-startup-of-you_07_i.jpg

راه حل در دو نکته است:


911223-www-nardebaan-ir-startup-of-you_08_i.jpg

اول اینکه باید ذهنیت خود را به «همیشه بتا» تغییر دهید. (سایت ها، شرکت ها و… در ابتدای کار خود بتا هستند. در این فاز آنها تغییرات سریعی دارند و به سرعت پیشرفت می کنند. اگر یادتان باشد جیمیل تا سالها بتا باقی ماند تا پیشرفت اولیه سریع خود را نگه دارد.) راجع به خودتان این گونه فکر کنید که تمامی کارها در حال پیشرفت هستند. هر روز به خودتان و مسیرتان فکر کنید. هیچ کاری هیچ وقت آنقدر کامل نمی شود که دیگر نیاز به پیشرفت بیشتر نداشته باشد. پس همیشه بتا باقی بمانید.


911223-www-nardebaan-ir-startup-of-you_09_i.jpg

اندی هارگادون می گوید: «۲۰ سال تجربه بسیاری از مردم واقعا به اندازه یک سال تجربه است که ۲۰ سال تکرار شده است.» بسیاری از مردم فقط در سال اول کار خود چیز یاد می گیرند (زمانی که در فاز بتا هستند) و ۱۹ سال بعد از همان دانسته های سال اول استفاده می کنند و هیچ پیشرفتی نمی کنند.


دوم، رعایت تعدادی مهارت که بهترین مدیران دره سیلیکون به آنها مجهز بوده اند.


911223-www-nardebaan-ir-startup-of-you_10_i.jpg

توضیح مفصل این مهارت ها را در ادامه این مطلب و قسمت های آینده می بینیم.


برای پیروزی در رقابت باید متفاوت باشید

911223-www-nardebaan-ir-startup-of-you_11_i.jpg

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


911223-www-nardebaan-ir-startup-of-you_12_i.jpg

شرکت زاپوز با ارائه سیستم ارسال رایگان و از دو طریق و پشتیبانی مشتریان به صورت ۲۴ ساعته و ۷ روز هفته از طریق استخدام یک تا ۸۰۰ کارمند محلی، توانست خود را نسبت به سایر فروشگاه های اینترنتی «کاملا متفاوت» کند و با این کار خود را به موفقیت رساند.


911223-www-nardebaan-ir-startup-of-you_13_i.jpg

پس در دنیایی که «یک میلیون فرد دیگر هم می تونند کار شما را انجام دهند»…


911223-www-nardebaan-ir-startup-of-you_14_i.jpg

...«مسیر شغلی متفاوت و جدیدی ایجاد کنید» که شما را از سایر متخصصان متمایز کند.


911223-www-nardebaan-ir-startup-of-you_15_i.jpg

لازم نیست که بهتر از «همه» متخصص ها باشید. فقط کافی است که در رشته تخصصی خود بهترین باشید. برای رسیدن به موفقیت باید سه کار مهم انجام دهید. با انجام آنها سه قسمت از یک پازل تکمیل می شود و شما برنده خواهید شد.


سه قطعه این پازل متغیر و دینامیک عبارتند از:
۱- وضعیت خود را مشخص کنید. ببینید که چه توانایی هایی دارید. وضعیت مالی شما چطور است؟
۲- به یک طرح فکر کنید. چیزی که می خواهید در آینده باشید. چیزی که اگر به آن برسید، استارت آپ شما به ثمر خواهد رسید. چیزی که تاکنون به ذهن افراد زیادی نرسیده است.
۳- مسیری را مشخص کنید که باید در آن بهترین شوید. به واقعیت های بازار توجه کنید. ببینید در کجای بازار سریع تر می توانید متفاوت باشید.
به زبان دیگر، این سه قطعه پازل عبارتند از:


۱- سرمایه ها

911223-www-nardebaan-ir-startup-of-you_16_i.jpg

آنچه که بهشان نیاز دارید تا یک استارت آپ را شروع کنید. سرمایه های نرم تان (مانند دانش، مهارت ها و ارتباطات تان) و سرمایه های سخت تان (مانند پول در بانک).


۲- آرزوها و ارزش ها

911223-www-nardebaan-ir-startup-of-you_17_i.jpg

جایگاهی که دوست دارید در آینده داشته باشید.


۳- واقعیت های بازار

911223-www-nardebaan-ir-startup-of-you_18_i.jpg

اینکه محصولتان فروش داشته باشد و چیزی باشد که مردم واقعا برایش به شما پول بپردازند.


911223-www-nardebaan-ir-startup-of-you_19_i.jpg

شما باید راجع به این سه قطعه پازل (سرمایه ها / آرزوها / واقعیت های بازار) فکر کنید. اگر یکی از این ها نباشد، موفق نخواهید شد. در ارزیابی این سه قطعه به نکات زیر توجه کنید.


911223-www-nardebaan-ir-startup-of-you_20_i.jpg

مهارت هایی که نمی توانید از آنها پول در بیاورید «شما را به جایی نمی رسانند».


911223-www-nardebaan-ir-startup-of-you_21_i.jpg

اگر معتقد باشید، اما در اعتقاد خود چندان راسخ نباشید، بعد از مدتی «از اعتقاد خود دست خواهید کشید». پس هدفی را برگزینید که واقعا به آن اعتقاد راسخ دارید.


911223-www-nardebaan-ir-startup-of-you_22_i.jpg

کار در جایی که علاقه ای به آن ندارید برای مدت طولانی «قابل تحمل» نیست.


یک راه برای پیشرفت در رقابت، پیشرفت در سرمایه هایتان است. پس مرتب راجع به سرمایه ها و مهارت هایتان فکر کنید.


911223-www-nardebaan-ir-startup-of-you_23_i.jpg

شما می توانید با تغییر محیط اطرافتان، در رقابت پیشرفت کنید و بهترین نفر در یک محیط تازه باشید.


911223-www-nardebaan-ir-startup-of-you_24_i.jpg

برای مثال، بعضی از بازیکن های آمریکایی که به قدر کافی در NBA موفق نبودند، در اروپا موفق شدند. مهارت های آنها تغییری نکرد، بلکه بازار تغییر کرد.


انتخاب یک «بازار مناسب»، جایی که شما می توانید در آن بهتر رقابت کنید یک استراتژی کلیدی در نوآوری و تاسیس شرکت های جدید است.


911223-www-nardebaan-ir-startup-of-you_25_i.jpg

در این مقاله آموختیم که چگونه پازل موفقیت در یک استارت آپ را تکمیل کنیم. در قسمت های بعد به سایر نکات لازم برای شروع یک استارت آپ می پردازیم.


  • geek

پلی مرفیسم (Polymorphism)
یکی دیگر از مفاهیم اولیه ی شیء گرایی پلی مرفیسم ( چند ریختی ) می باشد. پلی مرفیسم به معنای توانایی استفاده کردن از فرم های مختلف یک نوع است بدون توجه به جزئیات آن .
برای مثال هنگامیکه سیگنال تلفنی شما فرستاده می شود ، از نوع تلفنی که در انتهای خط موجود است خبری ندارد. تلفن انتهای خط ، می خواهد یکی از تلفن های عهد عتیق باشد و یا تلفنی با آخرین امکانات روز .
شرکت مخابرات (!) تنها از نوع پایه ای به نام
phone خبر دارد و فرض می کند که هر instance از این نوع می داند که چگونه صدای زنگ تلفن شما را به صدا در آورد. بنابراین شرکت مخابرات از تلفن شما به صورت پلی مرف استفاده می کند.
در عمل پلی مرفیسم هنگامی مفید خواهد بود که بخواهیم گروهی از اشیاء را به یک آرایه نسبت دهیم و سپس متدهای هر یک را فراخوانی کنیم. الزاما این اشیاء از یک نوع نخواهند بود.

نحوه ی ایجاد متدهای پلی مرفیک :
برای ایجاد متدی که نیاز است تا پلی مرفیسم را پشتیبانی نماید ، تنها کافی است آنرا از نوع
virtual در کلاس پایه تعریف کنیم. مثال :
فرض کنید تابع
DrawWindow در کلاس Window تعریف شده است. برای ایجاد قابلیت پلی مرفیسم در آن به صورت زیر عمل می شود :

public virtual void DrawWindow( )

در این حالت هر کلاسی که از Window مشتق شود ، مجاز است نگارش خاص خودش را از DrawWindow ارائه کند. در این صورت در کلاسی که از کلاس پایه ی ما ارث می برد ، تنها کافی است که کلمه ی کلیدی override را قبل از نام تابع مذکور ذکر نماییم.

یک مثال کامل :

using System;

public class DrawingObject
{
public virtual void Draw()
{
Console.WriteLine("I'm just a generic drawing object.");
}
}
public class Line : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Line.");
}
}

public class Circle : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Circle.");
}
}

public class Square : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Square.");
}
}
public class DrawDemo
{
public static int Main(string[ ] args)
{
DrawingObject[ ] dObj = new DrawingObject[4];

dObj[0] = new Line();
dObj[1] = new Circle();
dObj[2] = new Square();
dObj[3] = new DrawingObject();

foreach (DrawingObject drawObj in dObj)
{
drawObj.Draw();
}

return 0;
}
}

کلاس DrawingObject ، کلاسی پایه برای تمام کد ما که از آن به ارث می برد ، می باشد. متد Draw در آن با کلمه ی کلیدی virtual معرفی شده است. یعنی تمام کلاس های فرزند این کلاس والد می توانند این متد را override کنند ( تحریف کردن و یا تحت الشعاع قرار دادن هم ترجمه شده است! ).
در ادامه سه کلاس تعریف شده اند که تمامی آنها از کلاس مبنا ارث می برند و تابع
Draw را تحریف کرده اند (!). با استفاده از کلمه ی کلیدی override می توان تابع مجازی کلاس مبنا را با تعریفی جدید در زمان اجرای برنامه ارائه داد. تحریف شدن تنها زمانی رخ می دهد که کلاس ، توسط ریفرنس کلاس مبنا مورد ارجاع واقع شده باشد.
و در متد
Main برنامه از این کلاس ها در عمل استفاده گردیده است. در متد Main ، آرایه ای از نوع DrawingObject تعریف و مقدار دهی اولیه شده است تا بتواند 4 شیء از نوع این کلاس را در خودش ذخیره کند.
بدلیل رابطه ی ارث بری موجود می توان آرایه ی
dObj را با نوع هایی از کلاس های Line ، Circle و Square مقدار دهی کرد (همانند کدهای بعدی متد Main ) . اگر ارث بری در اینجا وجود نمی داشت می بایست به ازای هر کلاس یک آرایه تعریف می شد.
سپس از حلقه ی زیبای
foreach برای حرکت در بین اعضای این آرایه استفاده گردیده است. در اینجا هر شیء متد خاص خودش را در مورد Draw فراخوانی می کند و نتیجه را روی صفحه نمایش خواهد داد.
خروجی نهایی به صورت زیر خواهد بود :

Output:
I'm a Line.
I'm a Circle.
I'm a Square.
I'm just a generic drawing object

  • geek

کلاس ها ی abstract
کلاس ها را همچنین می توان به صورت
abstract تعریف کرد. از این نوع کلاس ها نمی توان instance ایی را ایجاد نمود. در این کلاس های پایه ، صرفا تعریف متدها و خواص هایی عنوان گردیده و در آینده در کلاس های فرزند توسعه داده خواهند شد. برای مثال :

public abstract class Named
{
public abstract String Name {get; set;} // property
public abstract void PrintName(); // method
}
public class B : Named
{
private String name = "empty";
public override String Name
{
get{return name;}
set{name=value;}
}
public override void PrintName()
{
Console.WriteLine("Name is {0}", name);
}
}

والی که شاید پیش بیاید این است که اگر interface ها صرفا تعریف توابع و خواص را می توانند در خود جای دهند پس چه دلیلی برای بکار بردن آنها و طولانی کردن کار کد نویسی وجود دارد؟
کاربردهای زیادی را می توان برای اینترفیس ها برشمرد. اینترفیس یک رفتار را تعریف می کند. فرض کنید در حال توسعه ی برنامه ایی هستید که بر روی دو کامپیوتر مختلف باید با هم در ارتباط مستقیم بوده و برهم کنش داشته باشند و هر برنامه از ماژولی به نام
CCommObj communication object استفاده می نماید. یکی از متدهای این شیء ، SendData() می باشد که رشته ای را دریافت کرده و به برنامه ی دیگر می فرستد. این فراخوانی از نوع asynchronous است زیرا ما نمی خواهیم اگر خطایی در شبکه رخ داد، برنامه برای همیشه منتظر باقی بماند. اما چگونه برنامه ی A که تابع ذکر شده را فراخوانی کرده است می تواند تشخیص دهد که پیغام به مقصد رسیده است یا خیر و یا آیا خطایی در شبکه مانع رسیدن پیغام گشته است یا خیر؟ جواب بدین صورت است که CCommObj هنگام دریافت پیغام ، رخدادی را سبب خواهد شد و اگر خطایی رخ داده باشد خیر. در این حالت نیاز به یک ماژول logging نیز احساس می گردد تا خطاهای رخ داده را ثبت نماید. یک روش انجام آن این است که CCommObj پیاده سازی این امکان را نیز بعهده گرفته و اگر فردا نیز خواستیم ماژول دیگری را به برنامه اضافه کنیم هر روز باید CCommObj را تغییر دهیم. تمام این کارها را به سادگی می توان در یک اینترفیس مدل کرد. روش آن نیز در ادامه بیان می گردد:
در ابتدا یک اینترفیس ایجاد می کنیم تا لیست تمام امکانات ممکن را "منتشر" کند:

interface ICommObjEvents
{
void OnDataSent();
void OnError();
}

شی ء CCommObj ما از این توابع که بعدا توسعه داده خواهند شد برای با خبر سازی کلاینت ها استفاده می نماید. تمام متدها در یک اینترفیس ذاتا پابلیک هستند بنابراین نیازی به ذکر صریح این مطلب نمی باشد و اگر اینکار را انجام دهید کامپایلر خطای زیر را گوشزد خواهد کرد :

The modifier 'public' is not valid for this item

در ادامه کلاینت CClientApp_A را پیاده سازی خواهیم کرد :

class CClientApp_A:ICommObjEvents
{
public void OnDataSent()
{
Console.WriteLine("OnDataSent");
}
public void OnError()
{
Console.WriteLine("OnError");
}
private CCommObj m_Server;
public void Init(CCommObj theSource)
{
m_Server = theSource;
theSource.Advise (this);
string strAdd = ("N450:1");
m_Server.read (strAdd,10);
}
}

در کد فوق کلاس CClientApp_A از ICommObjEvents ارث برده و تمام متدهای این اینترفیس را پیاده سازی نموده است. هنگامی که CCommObj تابع OnDataSent را فراخوانی می کند این کلاینت پیغام را دریافت خواهد کرد. لازم به ذکر است که کلاس کلاینت ما چون از یک اینترفیس ارث بری می نماید پس باید تمام توابع و خواص کلاس پایه را پیاده سازی کند در غیر اینصورت هر چند برنامه کامپایل خواهد شد اما هنگامی که شیء CCommObj هر کدام از توابع این کلاس را فراخوانی کد ، خطای زمان اجرا رخ خواهد داد.
متد
Init کلاس فوق آرگومانی را از نوع CCommObj دریافت نموده و در یک متغیر private آنرا ذخیره می نماید. همچنین در این متد ، متد Advise از کلاس CCommObj نیز فراخوانی گشته است.

public class CCommObj
{
private int m_nIndex;
public ICommObjEvents [ ] m_arSinkColl;
public CCommObj()
{
m_arSinkColl = new ICommObjEvents[10];
m_nIndex = 0;
}
public int Advise(ICommObjEvents theSink)
{
m_arSinkColl[m_nIndex] = theSink;
int lCookie = m_nIndex;
m_nIndex++;
return lCookie
}
public void SendData(string strData)
{
foreach ( ICommObjEvents theSink in m_arSinkColl)
if(theSink != null )
theSink.OnDataSent ();
}
}

  • geek

مقابله با خطاها در سی شارپ (Exception Handling in C#)
EXCEPTION یک خطای زمان اجر است که بدلیل شرایطی غیرنرمال در برنامه ایجاد می شود. در سی شارپ exeption کلاسی است در فضای نام سیستم. شیء ایی از نوع exception بیانگر شرایطی است که سبب رخ دادن خطا در کد شده است. سی شارپ از exception ها به صورتی بسیار شبیه به جاوا و سی پلاس پلاس استفاده می نماید.

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

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

class A {static void Main() {catch {}}}
TEMP.cs(3,5): error CS1003: Syntax error, 'try' expected

class A {static void Main() {finally {}}}
TEMP.cs(3,5): error CS1003: Syntax error, 'try' expected

class A {static void Main() {try {}}}
TEMP.cs(6,3): error CS1524: Expected catch or finally

بهتر است یک مثال ساده را در این زمینه مرور کنیم:

int a, b = 0 ;
Console.WriteLine( "My program starts " ) ;
try
{
a = 10 / b;
}
catch ( Exception e )
{
Console.WriteLine ( e ) ;
}
Console.WriteLine ( "Remaining program" ) ;
The output of the program is:
My program starts
System.DivideByZeroException: Attempted to divide by zero.
at ConsoleApplication4.Class1.Main(String[ ] args) in
d:\dont delete\consoleapplication4\class1.cs:line 51
Remaining program

برنامه شروع به اجرا می کند. سپس وارد بلوک و یا قطعه ی try می گردد. اگر هیچ خطایی هنگام اجرای دستورات داخل آن رخ ندهد ، برنامه به خط آخر جهش خواهد کرد و کاری به قطعات catch ندارد.
اما در اینجا در اولین
try عددی بر صفر تقسیم شده است بنابراین کنترل برنامه به بلوک catch منتقل می شود و صرفا نوع خطای رخ داده شده نوشته و نمایش داده می شود. سپس برنامه به کار عادی خودش ادامه می دهد.

تعدادی از کلاس های
exception در سی شارپ که از کلاس System.Exception ارث برده اند به شرح زیر هستند :

• Exception Class - - Cause
• SystemException - A failed run-time check;used as a base class for other.
• AccessException - Failure to access a type member, such as a method or field.
• ArgumentException - An argument to a method was invalid.
• ArgumentNullException - A null argument was passed to a method that doesn't accept it.
• ArgumentOutOfRangeException - Argument value is out of range.
• ArithmeticException - Arithmetic over - or underflow has occurred.
• ArrayTypeMismatchException - Attempt to store the wrong type of object in an array.
• BadImageFormatException - Image is in the wrong format.
• CoreException - Base class for exceptions thrown by the runtime.
• DivideByZeroException - An attempt was made to divide by zero.
• FormatException - The format of an argument is wrong.
• IndexOutOfRangeException - An array index is out of bounds.
• InvalidCastExpression - An attempt was made to cast to an invalid class.
• InvalidOperationException - A method was called at an invalid time.
• MissingMemberException - An invalid version of a DLL was accessed.
• NotFiniteNumberException - A number is not valid.
• NotSupportedException - Indicates sthat a method is not implemented by a class.
• NullReferenceException - Attempt to use an unassigned reference.
• OutOfMemoryException - Not enough memory to continue execution.
• StackOverflowException - A stack has overflown.

در کد فوق صرفا عمومی ترین نوع از این کلاس ها که شامل تمامی این موارد می شود مورد استفاده قرار گرفت یعنی :

catch ( Exception e )

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

مثالی دیگر: ( در این مثال خطایابی دقیق تر با استفاده از کلاس های فوق و همچنین مفهوم
finally نیز گنجانده شده است )

int a, b = 0 ;
Console.WriteLine( "My program starts" ) ;
try
{
a = 10 / b;
}
catch ( InvalidOperationException e )
{
Console.WriteLine ( e ) ;
}
catch ( DivideByZeroException e)
{
Console.WriteLine ( e ) ;
}
finally
{
Console.WriteLine ( "finally" ) ;
}
Console.WriteLine ( "Remaining program" ) ;
The output here is:
My program starts
System.DivideByZeroException: Attempted to divide by zero.
at ConsoleApplication4.Class1.Main(String[ ] args) in
d:\dont delete\consoleapplication4\class1.cs:line 51
finally
Remaining program

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

int a, b = 0 ;
Console.WriteLine( "My program starts" )
try
{
a = 10 / b;
}
finally
{
Console.WriteLine ( "finally" ) ;
}
Console.WriteLine ( "Remaining program" ) ;
Here the output is
My program starts
Exception occurred: System.DivideByZeroException:
Attempted to divide by zero.at ConsoleApplication4.Class1.
Main(String[ ] args) in d:\dont delete\consoleapplication4
\class1.cs:line 51
finally

قسمت چاپ Remaining program اجرا نشده است.

عبارت
throw :
این عبارت سبب ایجاد یک خطا در برنامه می شود.

مثال :

int a, b = 0 ;
Console.WriteLine( "My program starts" ) ;
try
{
a = 10 / b;
}
catch ( Exception e)
{
throw
}
finally
{
Console.WriteLine ( "finally" ) ;
}

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

  • geek
بدیل متن به گفتار در ویژوال استودیو ۲۰۱۲. سرویس های زیادی تو ویندوز هستند که مایکروسافت تا الان بصورت کاربردی تر از آنها استفاده نکرده، شاید به دلیل اینکه از دید مایکروسافت خیلی هم مهم نبودن یا خیلی ساده بوده اند. اما یکی از مزایای برنامه نویس بودن اینه که هر چی که تو دسترست نیست یا اصلاً وجود نداره رو بتونی اونطوری که دوست داری درستش کنی. و من هم امروز می خوام دقیقاً اونطوری که دوست دارم از یکی از سرویس های ویندوز مایکروسافت استفاده کنم.

این سرویسی که می خوام در موردش صحبت کنم ، سرویس تبدیل متن یا فایل متنی به صداست. برنامه ای به اسم Text To Speech تو کنترل پنل ویندوز وجود داره که وظیفه تبدیل متن به گفتار رو به عهده داره و می تونه متنی رو تلفظ کنه. خیلی از افراد تازه کار هستند که از وجود چنین امکاناتی تو ویندوز خبر ندارن چه برسه به نحوه استفاده از اون.
اگه بخوایم به یکی از مزایای تبدیل متن به گفتار اشاره کنیم همین تلفظ کلمات برای غیر زبان انگلیسی ها می تونه بهترین گزینه باشه. بی اینکه جایی پول بدیم یا فیلم آموزشی نیگا کنیم میشه با این برنامه ای که امروز درست می کنیم یه استاد تلفظ فول تایم برای خودمون استخدام کنیم.

خب بریم سراغ آموزش.

 مرحله ۱

  1. باز کردن نرم افزار ویژوال استودیو ۲۰۱۲
  2. رفتن به مسیر (“File” -> “New” -> “Project”)
  3. انتخاب ( ”Template” -> “Visual C#” -> “Windows Forms Application”)
  4. نام گذاری پروژه (هر اسمی که دوست دارین)

مرحله ۲

در حال حاضر به فرمی مثل فرم زیر نیاز داریم. پس فرمی به شکل زیر طراحی می کنیم:

from design آموزش تبدیل متن
 به گفتار در ویژوال استودیو 2012 + سورس کد

  1. ۵ کنترل Button
  2. یک کنترل Textbox
  3. یک کنترل OpenFileDialog
  4. یک کنترل Label

مرحله۳

باید کتابخانه این سرویس رو به برناممون اضافه کنیم. برای این کار روی نام پروژه راست کلیک و از منوی باز شده گزینه “System.Speech” رو انتخاب کنیم. (مراحل طبق تصاویر زیر):

add reference آموزش تبدیل 
متن به گفتار در ویژوال استودیو 2012 + سورس کد

sppech libaray آموزش تبدیل 
متن به گفتار در ویژوال استودیو 2012 + سورس کد

مرحله۴

فایل Form1.cs را باز می کنیم و کدهای زیر را در آن قرار می دهیم. (توجه کنین که نام کنترل را با کدها یکی کرده باشین!)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Speech.Synthesis ;
using System.IO;

namespace text_to_speech
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
speech = new SpeechSynthesizer();
Pausespeak.Enabled = false;
Resumespeak.Enabled = false;
Stopspeak.Enabled = false;
}
SpeechSynthesizer speech;
private void button6_Click(object sender, EventArgs e)
{
if (textbox1.Text.Length >0)
{
speech = new SpeechSynthesizer();
speech.SpeakAsync(textbox1.Text);
label1.Text = "Speaking";
Pausespeak.Enabled = true;
Stopspeak.Enabled = true;
speech.SpeakCompleted += speech_SpeakCompleted;
}
else
{
MessageBox.Show("Please Enter some text in the textbox", "Message", MessageBoxButtons.OK);
}
}

void speech_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
{
label1.Text = "Ideal";
}
private void Pausespeak_Click(object sender, EventArgs e)
{
if (speech != null)
{
if (speech.State == SynthesizerState.Speaking)
{
speech.Pause();
label1.Text = "Pause";
Resumespeak.Enabled = true;
}
}
}
private void Resumespeak_Click(object sender, EventArgs e)
{
if (speech != null)
{
if (speech.State == SynthesizerState.Paused)
{
speech.Resume();
label1.Text = "speaking";
}
Resumespeak.Enabled = false;
}
}

private void Stopspeak_Click(object sender, EventArgs e)
{
if (speech != null)
{
speech.Dispose();
label1.Text = "Idle";
Pausespeak.Enabled = false;
Resumespeak.Enabled = false;
Stopspeak.Enabled = false;
}
}
private void Loadtextfromfile_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
textbox1.Text = File.ReadAllText(openFileDialog1.FileName.ToString());
}
}
}

مرحله۵

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

output of speech app آموزش 
تبدیل متن به گفتار در ویژوال استودیو 2012 + سورس کد

گاهی اوقات کارهای کوچیک می تونن زندگی آدم رو از این رو به اون رو کنن. پس بزرگ فکر کنین!
تا یه آموزش دیگه همتون رو به خدای بزرگ می سپارم. مواظب خودتون باشین.

  • geek

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


پیش گفتار نویسنده

+ بخش اول : معرفی …

فصل اول : معرفی وردپرس

+ بخش دوم : کار با وردپرس …

فصل دوم : نصب وردپرس

فصل سوم : مدیریت حساب های کاربری

فصل چهارم : پیشخوان ( داشبورد )

فصل پنجم : تنظیمات وبلاگ شما

فصل ششم : نوشته ها

فصل هفتم : برگه ها

فصل هشتم : پیوندها

فصل نهم : دیدگاه ها

فصل دهم : به روز رسانی

فصل یازدهم : پشتیبان گیری

فصل دوازدهم : کوچ به وردپرس

فصل سیزدهم : شبکه وردپرس

+ بخش سوم : قالب ها …

فصل چهاردهم : پیدا کردن و نصب قالب ها

فصل پانزدهم : ابزارک ها

فصل شانزدهم : فهرست ها

فصل هفدهم : طراحی قالب وردپرس

+ بخش چهارم : افزونه ها …

فصل هجدهم : ۱۰ افزونه پر کاربرد وردپرس

دریافت
حجم: 4.3 مگابایت

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


دریافت
حجم: 2.12 مگابایت
  • geek
یکی از مهم‌ترین نوآوری‌های کامپیوتر اینترنت است. داشتن یک سایت در اینترنت از حضور در آن مهم‌تر است چون طبق آمارهای گرفته شده در ایران حدود ۳۰ میلیون ایرانی در فضای اینترنت حضور دارند و این میزان بستر مناسبی را برای ارائه‌ی خدمات، تبلیغات و غیره فراهم آورده است. طراحی سایت ممکن است برای بسیاری‌ها دشوار به نظر برسد ولی این‌طور نیست. البته می‌توان گفت که این حرف تا چند سال پیش صحت داشت. چرا که مدیر سایت می‌بایست با کدنویسی آشنا بوده و با محیط خسته‌کننده‌ای سروکار داشته باشد. ولی امروزه با نصب نرم‌افزارهایی که به سیستم مدیریت محتوا شهرت دارند می‌توان به آسانی و بدون روبه‌رو شدن با محیط پیچیده‌ای یک سایت راه‌اندازی کرد. شاید بتوان گفت که کار با سیستم مدیریت محتوا از کار با سیستم‌عامل ویندوز هم آسان‌تر است. این نرم‌افزارها در تمام سیستم‌عامل‌ها قابل اجرا هستند و از طریق مرورگر می‌توان به آن‌ها دسترسی داشت. اگر در حال حاضر هاست ندارید بعد از خواندن بخش سوم به بخش پنجم بروید (بخش چهارم را نخوانید!). امیدوارم که از خواندن این کتاب لذت ببرید.
  • geek