وبلاگ شخصی سید سروش هاشمی

به نام خدایم روان شد به کار / که نامش بود هم به فرجام کار

وبلاگ شخصی سید سروش هاشمی

به نام خدایم روان شد به کار / که نامش بود هم به فرجام کار

وبلاگ شخصی سید سروش هاشمی

زندگی خیلی نامشخص تر از اینه که من بتونم بگم این جا چی می نویسم. هر چی زندگی برام بیاره.

قدمی برای آرامش بیشتر اهالی کره زمین

   بعضی وقت ها یه عده یه جایی گیر می کنن که هیچ دسترسی به هیچ وسیله ارتباطی ندارن. مثلا تو یه ساحل یا تو یه جنگل یا ... . اگر این افراد نیاز به کمک داشته باشن می تونن یه جوری در ابعاد بزرگ کلمه HELP رو بنویسن. مثلا روی ساحل با شن و ماسه. ماهواره های زیادی در جو و خارج جو دارن با دوربین هاشون کره زمین رو رصد می کنن. ولی آدم های زیادی نیستن که بشینن دوربین های ماهواره ها رو نگاه کنن و دنبال HELP یا امثال اون باشن. خب میشه این کار رو به کامپیوترها سپرد. یعنی به کامپیوترها فیلم ها رو به صورت online بدی و این کامپیوترها هر موقع کلماتی مثل HELP رو دیدن یه جوری هشدار بدن. الگوریتم هایی برای تشخیص کلمات وجود داره و پیاده سازی شون اصلا سخت نیست. ۲ ترمه دارم همین مباحث رو تو دانشگاه می خونم. باور کنین سخت نیست. اگر این پیاده بشه یه جورایی یه global emergency service درست میشه. قدمی برای آرامش بیشتر اهالی کره زمین. 

collaborating

   چقدر دوست دارم یه گروه ببینم که این ویژگی رو داشته باشه. چقدر دوست دارم تو یه همچین گروهی باشم. چقدر دوست دارم یه همچین گروهی رو بسازم. کاش میشد کار گروهی رو از مدرسه به ما یاد می دادن. لذتش از حل هر مسئله سختی بیشتره. کاش حداقل تو دانشگاه این رو یاد می دادن. کاش ...

دنیای من، دنیای من

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

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

  چند وقت پیش فیلم the Schindler's list رو دیدم. شخصیتی شبیه خودم دیدم که به هیچ چیز جز کار خودش فکر نمی کرد ولی دیدن حوادث زندگی مردم اون رو تغییر داد. 

  من تو این دنیا چی کار می کنم؟ نمی خوام از دنیا فقط برای لذت بردن خودم استفاده کنم. نه این جوابی نیست که من رو راضی کنه. ولی چی کار می تونم بکنم؟ 

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

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

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

php vs C# vs python

   یکی از دوستان سوالاتی با مضمون php vs C# vs python (و ادامه این بحث) پرسید و من هم جوابش رو دادم. دیدم این سوالا زیاد پرسیده میشه گفتم این جا بذارم که از این به بعد من(یا شما) اگر دیدیم مناسبه به این جا ارجاع بدیم.

  پرسش گر: php vs C# vs python

  من: 

  اوایلی که وب تازه راه افتاده بود php یکه تاز میدون بود. زبان قوی و ساده(نسبت به بقیه رقیب هاش در زمان خودش) بود. بنابراین اکثر کسایی که می خواستن back end بزنن می رفتن سراغ php. کلی frame work در زبان php درست شد. مثل word press و joomla و ... . خلاصه خیلی community قوی ای داشت. ولی یه سری مشکلات داشت. سایت های خیلی بزرگ رو بخوای با php بزنی خیلی سخت می شه. چون ساختارش خیلی شی گرا نیست و باید کد رو وسط html بزنی و حالا اگر بخوای یه جایی از کد رو عوض کنی باید چک کنی که آیا جایی مشکلی پیش میاد یا نه(و چون کدها خیلی قالب مشخصی ندارن این کار خیلی راحت نیست) و ... .

  بعد از مدتی، طبق معمول مایکروسافت که دید یه جایی نون هست یه framework برای back end نوشت تحت زبان C# به نام ASP.NET. چون زبان C# خیلی منظم تر و تمیز تر از php بود خیلی ها به سمت ASP.NET کشیده شدن. پروژه های بزرگ در C# خیلی تمیز تر بودن و ساختار C# شی گرا بود. خلاصه که مزیت های C# نسبت به php خیلی خوب بود و باعث شد خیلی ها از php به C# مهاجرت کنن.
تا اون زمان شرکت های زیادی(که دیگه بزرگ شده بودن) از اول کارشون رو با php شروع کرده بودن. وقتی یه شرکت بزرگ کارش رو با یه زبان برنامه نویسی شروع کرده، تغییر تمام کدهایی که زده از یک زبان به یه زبان برنامه نویسی دیگه، خیلی کار سخت، پرهزینه و زمان بری هست. علاوه بر اون باید به تمام نیروهای انسانی متخصصش آموزش بده که بتونه به اون زبان مهاجرت کنه. حتی اگر تصمیم بگیره این فرآیند رو تدریجی انجام بده، مشکلی که باهاش مواجه میشه تنظیم یه برنامه خوب برای مهاجرت تدریجی هست.
بنابراین شرکت ها فقط در صورتی مهاجرت می کردن که مطمئن میشدن سود مهاجرت به هزینه هاش می ارزه.


  بعد از مدتی، امکان تولید زبان های برنامه نویسی high level تر فراهم شد. زبان هایی که float و int و double و ... براشون فرقی نمی کرد و تو فقط کافی بود بگی این متغیر یه عدد هست و بقیه چیزها رو به همون زبان واگذار می کردی. زبان هایی که سادگی و high level بودنشون کدها رو خیلی کوتاه تر می کرد و زمان develop کردن یه نرم افزار رو بسیار کاهش می داد. این زبان ها کم کم راهشون رو به back end وب سایت ها هم باز کردن. مثلا frame work های Ruby on Rails برای زبان Ruby و Django برای Python اومد. چون این زبان ها در ذات high level بودن، کدهای back end وبسایت ها هم خیلی کوتاه می شد و در نتیجه development وبسایت ها خیلی سریع تر میشد. در فضای کنونی خیلی از شرکت ها نیازهاشون در هفته تغییر می کنه بنابراین تو لازم داری وبسایت رو هر هفته تغییر بدی. حالا اگر تغییر دادن وبسایت برای پاسخ گویی به نیازهای جدید بیشتر از 1 هفته طول بکشه، اون شرکت اصلا نمی تونه با اون زبان کار کنه.
  طبق معمول مهاجرت برای شرکت های بزرگ خیلی کار سختی بود و فقط شرکت هایی مهاجرت کردن که مطمئن بودن براشون سود خواهد داشت.

  زبان های high level به خاطر ویژگی های خیلی خوبشون، community خیلی بزرگی پیدا کردن. این community ها از دانشمندان هوش مصنوعی تا پزشکان و ... تشکیل شده. بنابراین package های زیادی که در زبان هایی مثل C# و php و ... نیست در این زبان های پیدا میشه. در بین این زبان های high level، زبان python از بقیه community بزرگتری داره و کلی package برای کارهای academic و همین طور کارهای practical در فضای کاری برای اون وجود داره.

  این بخشی از ماجرای php vs C# vs python بود. برای اطلاعات بیشتر می تونی search کنی.
  البته در search به این خواهی رسید که زبان های C# و (احتمالا) php هم high level هستن. منظور من از high level اصطلاح high level در دنیای کامپیوتر نبود بلکه معنای لغوی high level بود.

  پرسش گر: کدوم رو یاد بگیرم بهتره؟

  من: الان شرکت های خیلی زیادی در ایران هستن که با php و ASP.NET کار می کنن ولی این شرکت ها همون شرکت هایی هستن که گفتم. اگر بخوای تو این شرکت ها استخدام بشی باید همون زبان و frame work ای که اون ها می گن رو بخونی(مگر این که قبول کنن یه گروه برای خودت توی اون شرکت داشته باشی و با زبان برنامه نویسی مورد نظر خودتون کار کنین) ولی اگر بخوای یه کاری برای خودت انجام بدی شدیدا ptyhon و django رو پیشنهاد می کنم. اگر یه کم search کنی میبینی google(و بسیاری از شرکت های بزرگ دیگه) هر جایی که امکانش بوده  از python استفاده کرده(بعضی اوقات امکانش نیست. مثلا python از نظر سرعت اجرا 5 الی 6 برابر کند تر از C هست. حالا تو اگر بخوای یه کار حساس از نظر زمانی رو انجام بدی قطعا python گزینه مناسبی نیست.(هر چند کتابخونه هایی برای زبان python نوشته شدن که در نهایت چیزی که تو می خوای رو با یه سری برنامه به زبان C انجام میدن و خروجی رو بهت میدن) )

  پرسش گر: برای یادگیری python و django چی کار کنم؟

  من: برای یادگیری python می تونی از سایت tutoriaspoint استفاده کنی(آموزش پایتون در سایت tutorialspoint). این سایت آموزش های خیلی مختصر و مفیدی برای کلی موضوع داره. آموزش python اش به اندازه کافی خوبه. برای یادگیری django هم پیشنهاد می کنم به documentation خود django مراجعه کنی. واقعا documentation اش خوبه. یه بخش از سایت Django هست که خیلی مختصر و مفید یه نحوه develop و deploy یه سایت کوچیک رو مرحله به مرحله توضیح داده.(لینک این آموزش مرحله به مرحله). پیشنهاد می کنم از این جا شروع کنی. 

  پرسش گر: چه IDE ای رو پیشنهاد می کنی:

  من:pycharm. می تونی از این لینک دانلودش کنی. این که چرا pycharm خوبه و ... رو دیگه امشب حوصله ندارم توضیح بدم. شاید وقتی دیگر.

  پرسش گر: دستت درد نکنه

  من: خواهش می کنم

خاطرات 3 سال از بهترین سال های عمرم (قسمت دوم)

   سلام.

  خاطرات 3 سال از بهترین سال های عمرم (قسمت دوم) :

 5) تابستون قبل سال سوم:

  3 تا از دوستام مرحله 2 و مرحله 3 کامپیوتر قبول شدن و رفتن دوره تابستون. تو مدرسه ما هم خیلی اتفاقا افتاد. کلی معلم دعوت کردن و ما هم کلی استفاده کردیم. تو اون تابستون بیش از اون چیزی که فکر می کردم پیشرفت کردم و شاید حتی دوره تهران هم نمی تونست این قدر برام مفید باشه. تو اون تابستون به پیشنهاد آقای «سهیل احسانی» (که یکی از معلم های دعوت شده بود) 1 ماه تمام از ساعت 8 تا 20 کد می زدم.(معمولا فقط  سوالای USACO) این 1 ماه و اون معلما اون قدر برای من مفید بودن که به سختی می تونم بگم چند درصد از پیشرفتم رو مدیون اون ها نبودم.

  البته این رو یادم رفت بگم که توی اون تابستون و یک مقداری از داخل سال تحصیلی روی پروژه ای کار می کردم که می خواستم برای خوارزمی بفرستم. من و «علیرضا نصری» با هم روی اون پروژه کار می کردیم. اون پروژه در مورد رمزنگاری(cryptography, steganography) بود. ما تا مرحله کشوری رسیدیم ولی مقامی کسب نکردیم و بعد ازجلسه دفاع و چند روز اردو تهران برگشتیم مشهد.

  6) سال سوم: و اما سال سوم. سال سوم شروع شد و خیلی اتفاقا تو این سال افتاد:

  1.   سفر به بندر عباس(مسابقه برنامه نویسی جشنواره فناوری و اطلاعات): «علیرضا نصری» و من با هم یه تیم بودیم. بعد از قبولی در مرحله 1 به همراه تعدادی از مسئولین مدرسه و تعدادی از بچه های اول دبیرستان که اونا هم قبول شده بودن رفتیم بندرعباس(مسابقه دو رده سنی داشت. ما و تو یه رده سنی بودیم و اون تیم های دیگه از مدرسه مون تو اون یکی رده سنی. در مرحله نهایی ما مقام 4 رو کسب کردیم.(البته جالبه بدونین که ما در حین کانتست فهمیدیم که برای حل یکیک از سوالا بنا بر محدودیت های داده شده، 1 ترابایت حافظه لازمه و همچنین یکی از مثال های صورت سوال غلطه. ما حتی داوران رو هم قانع کردیم ولی نتونستیم بفهمیم که چطوری 3 تا تیم قبل از این که ما این رو بگیم تموم کردن و رفتن K )

  2. سفر به تهران(ACM دانشگاه امیر کبیر): رفتیم و دوم شدیم J  «علیرضا نصری» و «مهرداد میری» و من با هم یه تیم بودیم. خیلی آدم های خفنی شرکت کرده بودن و سوالا هم انصافا خیلی خوب بودن. کانتست 5 ساعت بود و ما 4 ساعت اول، تقریبا همیشه تیم اول بودیم ولی مثکه ساعت آخر یکی از ما جلو زد. تیم سوم متشکل از 3 طلای کشوری و بود که یکیشون طلای جهانی داشت. واقعا پیروزی دلپذیری بود. J
  3. مسابقه بیان: مرحله اول رو گند زدم(جدا از این که اینترنتم 30 دقیقه اول کانتست کلا قطع بود.) و قبول نشدم ولی یکی از دوستام(«پارسا پردل») قبول شد و رفت مرحله نهایی.(خداییش بیان مرحله نهایی رو عالی برگذار کرد.)
  4. مسابقه بازی ریاضی: رفتیم و گند زدیم و برگشتیم. J من و «علیرضا نصری» و «پارسا پردل» و «مهرداد میری» یه تیم بودیم.
  5. مسابقه برنامه نویسی مردسه: تو مرحله آزمایشی کلا تو 35 دقیقه آزمون رو تموم کردم ولی تو مسابقه اصلا به دلیل همون مشکل قدیمی(استرس و ...) گند زدم.
  6. آزمون های تئوری دپارتمان: یکی پس از دیگری به دلایل مختلف(مثل استرس یا عوامل خارجی) گند می زدم.

  7. آزمون شبه مرحله 2 GPAC: نسبتا خوب می دادم ولی می تونستم بهتر هم بدم. قبول شدم و تابستون قبل از سال چهارم رفتم فینال. تو فینال به جز من و یه نفر دیگه بقیه از بچه های دوره اون تابستون بودن(فکر کنم اون یه نفر هم سال بعدش رفت دوره ولی روایت خیلی معتبر نیست). تو اون آزمون یکی مونده به آخر شدم. بعد از اون همه وقت دور بودن از میادین باز هم نسبتا خوب دادم.
  8. صعود ناگهانی در CodeForces: بعد از مدتی شروع کردم آزمونای CodeForces رو دادن. یکبار توی یک آزمون 40ام شدم و بعد از اون چند بار دیگه هم 36و 39و 98 و 26و ... رو تو div2 گرفتم.
  9. Full شدن تو کانتست برنز USACO: تو اولین کانتست یوساکو که شرکت کردم، Full کردم و رفتم نقره و تا الان هنوز نتونستم برم طلا.
  10. برنده شدن تو مسابقه طرح سوال ABBYY: یکبار به صورت اتفاقی یک سوالی طرح کردم که به نظرم سوال خوبی بود. بعد از مدتی دیدم یه مسابقه طرح سوال برگزار شده و من هم سوالم رو فرستادم. تو اون مسابقه از کشورهای زیادی شرکت کرده بودن و من تنها کسی بودم که از ایران سوال فرستادم. در بین برنده ها همه یا روسی بودن یا بلاروسی و من تنها به اصطلاح خارجی بین برنده ها بودم. سوال من با اندکی تغییر تو مسابقه نهایی برنامه نویسی این شرکت اومد و با کمال تعحب ظاهرا اصلا برای بجه های دوره تابستون اون سال سوال ساده ای نبود و خیلی به مشکل انداختشون.

   تو این سال من 2 ماه مونده به مرحله 1 شروع کردم سوالای مرحله 1 رو حل کردن. سعی می کردم اشکالاتم رو پیدا کنم و رفعشوم کنم. خدا رو شکر مرحله 1 قبول شدم(جالب این که دوباره مرحله 1 ریاضی هم قبول شدم :دی) بعد از اون 2 ماه قبل از مرحله 2 شروع کردم سوالای GPAC و مرحله 2 های قدیم رو حل کردن. معمولا اکثرا بالای 60% می زدم ولی همیشه تو محیط خونه آزمون می دادم. 

   حالا مرحله 2 اصلی رو هم دادم و قبول نشدم. به وضوح ناراحتم ولی یاد گرفتم شکست خیلی هم چیز بدی نیست.

   پایان خاطرات المپیاد

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

  عمری از هر چه بدیدم منطقی پنداشتم  /  در سرا پای وجودم از قوانین کاشتم

  بعد از این عمر و گذر کردن بر احوال نماز  /  بند بندم را گسستم پس ز نو افراشتم

«دوست»

   خوش باشین