یک انجمن ساده Pomodoro CLI – DEV
من مدتهاست که از طرفداران تکنیک پومودورو هستم و اخیراً به دنبال شروع مجدد استفاده از آن برای تمرکز روی کارم بودم. با این حال، برای یافتن ابزار مناسب برای خودم با مشکلاتی مواجه شدم. در زیر خواهید دید که من چگونه این مشکل را حل کردم و شاید این قدم زدن به کسی کمک کند.
اگرچه نام تکنیک از تایمر آشپزخانه ظاهراً فراگیر که شبیه گوجه فرنگی است (به ایتالیایی pomodoro) گرفته شده است، اما من چنین دستگاهی ندارم. من همچنین به دنبال راهحلی بودم که کاملاً دیجیتالی باشد و به راحتی با من در هر کجا که سفر میکنم و در رایانهها حرکت کند تا بتوانم عادت استفاده از این تکنیک مدیریت زمان را بهتر ایجاد کنم.
راه حل های موجود
تایمر گوجه فرنگی
اعتراف می کنم که نگاهی فوق العاده جامع به فضا انجام ندادم. من هم سال هاست از سایت Tomato-Timer استفاده می کنم. خوشم می آید. آن را بررسی کنید.
با این حال، متوجه شدم که میخواهم با دورههای مختلف کاری بازی کنم. تایمر گوجه فرنگی به شدت از تکنیک پومودورو پیروی می کند، بنابراین یک دوره کاری 25 دقیقه ای و یک دوره استراحت 5 یا 10 دقیقه ای دریافت خواهید کرد.
پومو
Pomo یکی دیگر از راه حل های CLI (واسط خط فرمان) است. بسیار بالغ و کامل به نظر می رسد. من شخصاً از آن استفاده نکردهام، اما اگر به دنبال گرافیکهای مرتبط با وضعیت پومهای خود هستید و به نظر میرسد که برای ردیابی زمان در پروژههای شما ادغام میشود، خوب به نظر میرسد. این به شما امکان می دهد مدت زمان پوم ها را تنظیم کنید، بنابراین آن کادر را برای من علامت بزنید. [If you’ve used it let me know if my understanding is inaccurate and I’ll update.]
با این حال، من به دنبال چیز ساده ای هستم. من نیازی به گرافیک، رابط کاربری، گردش کار یکپارچه، سرور در حال اجرا یا ذخیرهسازی دادههای زیرین ندارم. در نهایت شاید من به چنین چیزهایی نیاز داشته باشم، اما در حال حاضر اجازه دهید با چیز ساده تر شروع کنیم.
چیزی ساده تر
پس به کجا باید تبدیل شد؟ چرا فقط یک اسکریپت (بسیار) پوسته کوچک درست نکنم که دقیقاً همان چیزی را که من نیاز دارم را انجام دهد.
دقیقا به چه چیزی نیاز دارم؟
من میخواهم یک پوم را برای تعداد متغیری از دقیقه شروع کنم (پیشفرض 25)، آن را در پسزمینه اجرا کنم، و وقتی کامل شد صدایی را پخش کنم (نمیخواهم آن را تماشا کنم – قرار است کار کنم) .
$ pom 5
Waiting 5 minutes
Timer is done // Note: sound plays
چیز مهمی نیست درست است؟ من این را می توان در چند دقیقه انجام داد.
اسکریپت پوسته
الزام فوق به راحتی با تنها چند خط اسکریپت پوسته انجام می شود. من این کار را در MacOS انجام دادم، اما مطمئن هستم که در لینوکس و اکنون ویندوز، ساختن یک نسخه مشابه در صورتی که مستقیماً در آنجا کار نمی کند، بی اهمیت است.
این با یکی از راهنماهای معماری مورد علاقه من – The Unix Philosophy – مطابقت دارد که بر سادگی و مدولار بودن تأکید دارد. که همچنین پایه و اساس همه چیزهای شیرین خط فرمان است که قبلاً استفاده می کنید.
پخش صدا
فکر میکردم ممکن است دشوار باشد، اما به نظر میرسد که صداگذاری با مک بسیار آسان است و من در هر سیستمعاملی همین را فرض میکنم. من با حل متن به گفتار “بگو” رفتم
$ say Done
امتیازات جایزه: بچه ها را سرگرم کنید…
$ say its time for bed
در انتظار
Sleep یک دستور کاملاً استاندارد است و با آن میتوانیم یک نسخه بسیار کوچک از هدف نهایی بسازیم: اسکریپتی که فقط کمی زمان میبرد و سپس از «say» استفاده میکند تا به شما بگوید که انتظار به پایان رسیده است.
sleep 60
say "Done"
انجام ریاضی
توجه داشته باشید که “خواب” در چند ثانیه کار می کند و من می خواستم ورودی را در چند دقیقه ارائه دهم، پس بیایید کمی ریاضی انجام دهیم. این در واقع پیچیدهترین بخش از کل اسکریپت بود، حدس میزنم چون قبلاً در اسکریپتهای پوسته ریاضی زیادی انجام نداده بودم.
من فقط باید از “let” استفاده می کردم و اسکریپت در مورد فضاها مشکل داشت، اما این طلسم به این صورت است:
let seconds=1*60
sleep $seconds
say "Done"
گرفتن ورودی
یک نیاز اولیه راه حل این است که به کاربر این امکان را بدهد که مدت زمان پوم را خودش انتخاب کند. من چند دقیقه طول می کشم و آن را به طور پیش فرض روی 25 استاندارد از تکنیک رسمی می گذارم.
من باید از متغیر داخلی $1 که پارامتر موقعیت اول استاندارد در اسکریپت است استفاده کنم، این مقدار آنچه را که وارد شده است به من می گوید. باید ورودی را بررسی کنیم.
if [ -z "$1" ]; then
let min=25
else
let min=$1
fi
echo "Waiting ${min} minutes"
قرار دادن این در یک فایل اجرایی به نام “iftest” فعلا:
$ ./iftest
Waiting 25 minutes
$ ./iftest 5
Waiting 5 minutes
همه اش را بگذار کنار هم
اکنون فقط چند اکو به کاربر می گوید که همه چیز همانطور که انتظار می رود اتفاق می افتد و voila!
if [ -z "$1" ]; then
let min=25
else
let min=$1
fi
let seconds=$min*60
echo "Waiting ${min} minutes"
sleep $seconds
msg="Timer is done"
say $msg
echo $msg
نتیجه نهایی
دستور کار pom را در اینجا پایین بکشید.