فرصتی برای ۴۵۰ درآمد و کلی تجربه و اعتبار: اضافه کردن تقویم شمسی به گنوکش

نرم‌افزار گنوکش یک نرم‌افزار آزاد حسابداری دوستونه است که از ۱۹۹۸ با زبون سی و اسکیما نوشته شده. این برنامه بخشی از پروژه گنو و نرم‌افزاری بسیار معتبر در جهانه که خیلی ها ازش برای حسابداری استفاده می‌کنن.

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

esa

و چهار نفر دیگه هم (دانیال بهزادی، وحید، بیگی و مهدی) نفری ۵۰ تومن اضافه کردن و پارس کدرز هم ۱۰۰ تومن دیگه گذاشته و جایزه نهایی شده ۴۵۰ تومن. صورت مساله اینه:

توی بخش گزارشات( که به نظر من مهمترین بخشی هست که نیاز به تقویم فارسی داره) برای خیلی از گزارشاتی که به صورت تاریخی معنا پیدا می‌کنند، شما می‌تونید ابتدا و انتهای بازه زمانی گزارش رو مشخص کنید( به شکل datepicker) و همین الانش هم من می‌تونم با انتخاب دقیق این تاریخ‌ها و همچنین انتخاب گزینه “ماه” برای “step size” یه گزارش به صورت ماهیانه( به ماه های شمسی) بگیرم. در نتیجه اینجا فقط کافیه datepicker فارسی بشه.
ولی دقیقا در همین صفحه شما می‌تونی به جای اینکه تاریخ شروع و پایان گزارش رو با datePicker انتخاب کنی می‌تونی خیلی ساده بگی گزارش برای ماه فعلی باشه یا سه ماهه اخیر یا هفته اخیر، که خوب اگر بخوایم بگیم تاریخ‌ها فارسی شده وقتی من ماه فعلی رو انتخاب می‌کنم توقع دارم که از اول مهر گزارش حساب بشه. که البته اینجا هم به نظرم با یه سری کلک می‌شه از روی همون نمایش انجام بشه.
توی سرچ و اینها نیازی به تاریخ فارسی نیست. حتی زمانی که شما داری یه تراکنش مالی رو توی سیستم ثبت می‌کنی( تقریبا ۹۹ درصد مواقعی که داری با برنامه کار می‌کنی) نیازی نیست datepicker مربوطه شمسی باشه.( به نظر من خیلی نیاز نیست ولی خب اگر باشه بهتره)
گنو کش یه امکان خیلی خوب داره به اسم بودجه بندی که شما مثلا می‌تونی درش بگی من اول هر ماه ایکس تومن پول میگیرم و در ۱۴ام هر ماه ایگرگ تومن پول فلان چیز رو باید بدم و زد تومن هم ۱۵ آبان بابت بیمه ماشین باید بدم و برای سفر آذر ماه هم فلان تومن پول کنار می‌ذارم و وقتی همه این اطلاعات رو کنار هم می‌چینی می‌تونی یه آینده نگری مالی مستندی داشته باشی، مثلا بفهمی که حدودا اواسط بهمن چقدر پول نقد داری و یا اینکه آیا از رقمی که برای فلان هزینه پیش بینی کردی توی این ماه خرج کنی چقدر کمتر یا بیشتر خرج کردی.
خوشبختانه گنو کش فوق العاده قابل تنظیمه و شما در این نوع بودجه بندی ها می‌تونید بگید دوره‌هاتون ماهیانه یا هفتگی یا روزانه و سالیانست و همچنین اینکه شروع دوره از چه روزی باشه( که مثلا برای اینکه به شکل ماهیانه شمسی داشته باشیم می‌تونیم بگیم شروع دروه از 22 سپتامبر- اول مهر ) باشه. ولی خب اینکه نمایش تاریخ ها توی بودجه بندی به تقویم جلالی باشه خیلی بهتره و حداقل توقع اینه که اون datepicker توی تنظیمات بودجه بندی و همچنین ستون‌هایی که تاریخ‌های میلادی رو نوشتند جلالی بشند.

زبان برنامه نویسی همونطور که گفتم سی است و ۳۵۰ ۴۵۰ تومن اصل ماجرا نیست. توییت اصلی عیسی مال تقریبا ۵۰ روز پیش است و کلی ریتوییت و لایک داره – از طرف کلی آدم حرفه ای و کسانی هم که جایزه رو اضافه کردن از آدم‌های شناخته شده‌ فنی ایران هستن. در واقع اگر شما این پروژه رو بردارین، انجام بدین و کدتون توی پروژه اصلی قبول بشه و ما ازش استفاده کنیم، بدون شک یک برنامه نویس عالی سی هستین که دیگه هیچ شرکتی در ایران از نظر فنی شکی برای گرفتن شما نداره. همچنین برای یک آدم حرفه ای اینکار – اگر هیچ آشنایی با گنوکش نداشته باشه – احتمالا حدود دو سه روز طول می کشه که زمان عجیبی نیست و اگر بیشتر از این طول بکشه یعنی داریم توی دنیای واقعی و کاملا حرفه‌ای، کلی پیشرفت می‌کنیم.

نتیجه؟

  • اگر برنامه نویس خوبی هستین از این فرصت استفاده کنین تا بین خیلی ها شناخته شده بشین
  • اگر علاقمند به دیدن دنیای واقعا حرفه ای (بالاتر از سطح متوسط ایران) هستین، این فرصت خوبیه چون می‌تونین یه برنامه بخونین و تغییرش بدین و ماندگار بشین. روش؟ اگر سی بلد هستین باید اول سعی کنین کد رو دریافت کنین و بعد کمپایل کنین و وقتی می تونستین از این مرحله رد بشین، برین سراغ اضافه کردن بخش های خودتون. این راهنمایی خنده داره ولی واقعا قدم اول قبل از خوندن و تلاش برای فهم و تغییر کد، کمپایل کردنش است!
  • اگر کسی اطرافتون هی جو می ده که خدای سی است، بهش اینجا رو به عنوان یک چلنج برای اثبات خودش معرفی کنین. به قول یکی از اعجوبه‌های برنامه نویسی جهان: «حرف که مفته، کد رو نشون بده!»

talkischeap

و البته اگر برنامه ای هست که می خواین چیزی بهش اضافه بشه، راه عیسی رو برین و براش جایزه بذارین (:

  • حسابداری دوستونه، نوعی از حسابداریه که عملیاتش در دو ستون بدهکار و بستانکار انجام می‌شه.

  • Masoud Naservand

    منم یه چیزی اضافه کنم که برنامه سی داریم تا برنامه سی. برنامه‌های سی پروژه گنو خیلی سطحشون فرق داره با یه برنامه مدرن سی. شما کد nsd رو با هر برنامه سی گنو مقایسه کن متوجه منظور من می‌شی.

    خیلی پیچ تو پیچ و پر از define و کدهایی هست که با preprocessor اضافه یا کم می‌شن. دلیلش هم اینه که این برنامه رو می‌خوان از pdp-11 تا مدرن ترین سخت‌افزار و از hpux و bsd گرفته تا لینوکس ورژن ۲.۴ (!) به بعد و… کامپایل بشه.

    تا بعد از این‌ها تازه می‌رسی به چیزی به نام autohell که من خودم به این نتیجه رسیدم که عمرم قد نمی‌ده برم کامل یادش بگیرم. شما فکر کن برای کامپایل یه برنامه سی لازمه انواع و اقسام اسکریپت از m4 گرفته تا زبان makefile یاد بگیری.

    • Masoud Naservand

      تازه coding style برنامه‌های سی گنو هم برای من غیر قابل تحمله. البته این سلیقه‌ایه

  • Erfan Abdi

    بعد از چن ساعت مطالعه کدش و کامپایل کردنشون به این نتیجه رسیدم که برا شمسی کردنش باید کتابخونه boost رو تقویم شمسی بهش اضافه کنیم(فک نکنم از اینجا به بعدش دیگه کار من باشه) چون کلا تمام تاریخ ها و ساعت ها رو (توی تقریبا ۱ فایل) از اون میگیره. نمیدوم شاید حرفم درست نباشه اما توضیحاتی که جادی نوشته یه جورایی “چپوندن” شمسی تو برنامس ینی منظورم اینه وقتی میشه از قسمت های بالا تر تاریخو کنترل کرد چرا بیایم هرجا که یه چیزی از تاریخ دیدیم یه if بزاریم و …

    • jadijadi

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

      2016-10-18 22:52 GMT+03:30 Disqus notifications@disqus.net:

  • Amin

    من هستم.

    • Amin

      خوب کد رو دیباگ کردم ( البته سر کار :دی )
      ۱- ایده ی جادی بسیار منطقی تر هست
      ۲- برای اجرای ایده شما جناب جادی . دوتا راه به ذهنم رسید
      ۱-۲ : یه لایه روی دیت پیکر این اپ می شه کشید
      ۲-۲ : یه اکستنشن به GTK_calender گنوم اضافه کنیم که خیر دنیا و اخرت رو ببریم

    • Amin

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

  • Amin

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

    • مهدی

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

      • Amin

        بله اینجا گذاشتمش
        https://github.com/RaianRaika/gnucash/tree/jalali

        ۱- تاریخ شمسی شده داخل سل ها
        ۲- دیت پیکر رو دارم روش کار می کنم .
        ۳- تست کنید تا ایراد هاش رو پیدا کنیم بی زحمت

        با سپاس