کلید پیشرفت

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

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

تکامل شیوه ذخیره سازی

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

تکامل شیوه ذخیره سازی داده ها

کد بودار” smelly code”

واژه ای که به تازگی باهاش آشنا شدن و از اون خوشم اومدچیزیه به اسم کد بودار” smelly code“.یعنی کدی که مستعد باگهای عمقی و سخته.این کدها از نظر فنی درست کار می کنند و مانعی برای ادامه عملیات سیستم نیستند.این واژه برای اولین بار توسط کنت بک مطرح شد.

Kent Beck


 از شواهد کد بودار میشه عوامل زیرو نام برد

Duplicated code:کد تکراری
Long method:متدهایی باکدهای بسیار زیاد
Large class:کلاس هایی با کدهای بسیار زیاد
Too many parameters:متدی با پارامترهای بسیار زیاد
Feature envy: کلاسی که به طور افراطی از کلاس دیگری استفاده می کند
Inappropriate intimacy:کلاسی که وابسته به پیاده سازی کلاس دیگر است.
Refused bequest: کلاس فرزندی که به طور کل پیاده سازی کلاس پدر را نقض میکند.
Lazy class / Freeloader.
Contrived complexity: اجبار از استفاده از الگوهای برنامه نویسی زمانی که طراحی ساده جوابگو کار ما است
Excessively long identifiers:نامگذاری بسیار طولانی برای جلوگیری از اشتباهات
Excessively short identifiers: نام هایی که نشان دهنده کارکرد یک موجودیت نباشند
Ubercallback: کال بکی که همه کار می کند
Complex conditionals: عبارت های شرطی سخت
به یقین در کدهای همه ما نیز از این دست موارد زیاد دیده می شود مهمترین موضوع مدیریت درست روند ریفکتورینگ کد است.برنامه نویسی که کد بودار ننویسه برنامه نویس نیست.این به این معنی نیست که کد بد بنویسیم ولی فشار کار و عوامل زیاد بر کد بودار نوشتن تاثیر گذار هستند.

جمله هایی تامل برانگیز

تقلید بر مجتهد جامع الشرایط حرامه

Connect the dots

live each day, as if it’s your last day
Trust your intuition
Simplicity = the art of maximizing the amount of work not done
آدم خوبه، لزوماً آدم موفقه نیست
DIKW Data => Information => Knowledge => Wisdom
To become vs. to be “everything becomes, nothing is

بودن دیگر است و شدن دیگر، آنکه شد باری از شدن تر بازنخواهد ماند”
Why vs. (what or how); Science vs. experience
Love what you do and do what you love
رضایت، مرز مرض است
Jack of all trades, master of noneهمه کاره، هیچ کاره
Genius is one percent inspiration, ninety-nine percent perspiration
give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime Metadata over data
doing it right vs. doing it quick
cheap, fast, good pick any two, but you can’t pick all
Thinking outside the box Lateral thinking
اگر راست میگویید، سوره ای مانند آن بیاورید The philosophy of creating the same to show the importance
هر سخن جایی و هر نکته مکانی دارد Relativism
رهرو آن نیست که گه تند و گهی خسته رود، رهرو آن است که آهسته و پیوسته رود
برای هم کار نکنیم. با هم برای یک شرکت، برای یک هدف کار کنیم don’t work for someone. Work with someone for a company, for a purpose
از سر ترسه، یا از سر تدبیر؟ اگه از سر تدبیره، انجامش بده
Quality vs. Quantity
Expertise + Connections + Domain Knowledge
Fake it till you make it
Ethics of reciprocity Golden rule => Do to others what you would have them do to you
Revolutionary vs incremental (evolutionalry)
The grass is always greener on the other side مرغ همسایه غازه

Source

دورو بر خودمون شلوغ نکنیم

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

  • بازار کار ایران همه کاره هیچ کاره میخواد که هم‌ پول کم بده هم به خوبی کار بکشه
  • برنامه نویسا با هم کل کل دارن مثلا میگن اگه بریم فلان موضوع رو هم یاد بگیریم روی فلانی کم میشه
  • به‌تخصص هم دیگه اطمینان نداریم
  • می ترسیم اگه بلد نباشیم سرمون کلاه بره
  • علم و دانش عطش میارن هر چ بدونی دوس داری بازم بدونی

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

خلوت

به نظرم واجبه که در یک ساختار مشخص جلو بریم.کاشکی کامپیوتر هم مثل رشته پزشکی بود.

bash script جهت انتقال یک فایل تصادفی در یک دایرکتوری به دایرکتوری دیگر

کد زیر نشان دهنده bash script جهت انتقال یک فایل تصادفی در یک دایرکتوری به دایرکتوری دیگر در یک زمانبندی مشخص است :


while [ true ]
do
temp_call_file_path=/var/spool/asterisk/tempcallfilepath
call_file_path=/var/spool/asterisk/outgoing

if [ ! -d "$temp_call_file_path" ];then
 mkdir $temp_call_file_path
 echo Directory created
fi
file_to_move=$(find $temp_call_file_path -type f | sort -R | tail -1)

if [[ -z "$file_to_move" ]];then
 echo "No call file found"
else
 [ "$(ls -A $call_file_path)" ] && echo "Wait until call is completed" || mv $file_to_move $call_file_path
 echo "$file_to_move moved"
fi

sleep 30
done

بر طرف کردن مشکل self referencing loop detected

در صورتی که از entity frameworkاستفاده می کنید به احتمال زیاد به navigation property آشنایی دارید.
مدل زیر را را در نظر بگیرید:

public class Blog
{
    [Key]
    public int ID { get;set; }
    public string BlogName{ get;set; }
    public virtual ICollection Posts { get; set; }
}

public class Post
{
    [Key]
    public int ID { get;set; }
    public int BlogId { get;set; }
    public string PostTitle{ get;set; }
    public virtual Blog Blog { get; set; }
}

به وسیله کانفیگ زبر می توان می توان self-referencing را پیکربندی کرد.


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity().HasRequired(p => p.Blog)
       .WithMany(b => b.Posts)
       .HasForeignKey(p => p.BlogId);
}

تا به اینجا همه چیز به درستی کار میکنه مشکل از جایی شروع میشه که قصد serialize کردن آن را داشته باشیم.برای حل این مشکل دوراه وجود دارد:
به صورت دستی json که نیاز داریم را بیسازیم و navigation property ها را نادیده بگیریم
از attribute به نام [JsonIgnore] که در کتابخانه json.net وجود دارد.

[JsonIgnore]
public virtual Blog Blog{ get; set; } 

Source