برای اینکه تست بنویسید :
خیلی وقت بود جنگو کد نزده بودم و یک سری موارد رو فراموش کرده بودم (مواردی که مربوط میشه فقط و فقط به خود جنگو)
خیلی هم اعتقادی به
حالا نگیم
بگذریم؛ کد رو زدم و تموم شد و با
همه چیز به خوبی کار میکرد که رفتم سراغ تست نویسی؛ همه تستها به خوبی کار میکرد جز یک مورد
یک
من توی این
خلاصهاش کنم:
نهایتا متوجه شدم روی
قبل از اینکه کاستوم شده شما رو اجرا کنه میره چک میکنه آیا دیتا رو اگر بخواد کنه دیتابیس بهش تایید میده یا نه.
(تابع نرمالایز کردن اون فیلد خاص رو من توی مربوط به صدا میزدم؛ چون توی تمام فریمورکهای استاندارد ولید کردن اول باید توی صورت بگیره و محدودیتهای دیتابیس هستند.)
خلاصه که چون توی تستهام از
اگر این تست نبود:
۱- من باقی بخشهای پروژه رو با دیزاینی که باگ داشت کد زده بودم
۲- باگ خودش رو نشون نمیداد مگر توی
۳- درست کردن این باگ حتی اگر برای هفته بعدی هم میافتاد؛ حداقل ۵-۶ روزکاری زمان میبرد تا مشکلش رو بتونیم حل کنیم.
بخاطر حجم داده و حجم کد و
تست نویسی رو دستکم نگیرید واقعا.
خیلی وقت بود جنگو کد نزده بودم و یک سری موارد رو فراموش کرده بودم (مواردی که مربوط میشه فقط و فقط به خود جنگو)
خیلی هم اعتقادی به
TDD ندارم ولی معتقدم تست نویسی باید باشه؛ حالا که بحثش شد بذار بگم تا همین چندسال قبل بدون TDD کد نمیزدم؛ اما یک عیب بزرگ داشتم TDD فقط و فقط وقتی درست عمل میکنه که شما تمام نیاز بیزینس رو بدونی و دقیقا بدونی چطور قراره از سیستم استفاده بشه.حالا نگیم
۱۰۰٪ حداقل ۸۰٪ پروژه رو باید کامل بدونید؛ باگش در اومد دیگه بیزینسی جز بیزینس خودت وجود نداره که ۸۰٪ اش مشخص باشه. تغییرات بسیار است.بگذریم؛ کد رو زدم و تموم شد و با
Insomnia, bruno تستش کردم (bruno رو هنوز خیلی بلدش نیستم ولی باید یادبگیرم که خب درحال حاضر وقتش نیست برای همین رکوئستهایی که مهم نیست رو export-import میزنم بین این دوتا ابزار)همه چیز به خوبی کار میکرد که رفتم سراغ تست نویسی؛ همه تستها به خوبی کار میکرد جز یک مورد
یک
generic.CreateAPIView یا views.APIView هرکاری میکردم توی یکی از تستهای خاص جواب نمیداد جالبتر این بود که دقیقا همین تست توی Insomnia داشت جواب میداد؛ اونم بطور کامل و درست؛ دیباگر هم حتی هیچی نشون نمیداد.من توی این
Endpoint فقط میخواستم یک دیتایی رو دریافت کنم Deserialize کنم بعد با اون چیزی که توی دیتابیس دارم مقایسه کنم که یا تایید بدم یا ارور بدم.خلاصهاش کنم:
نهایتا متوجه شدم روی
model و یکی از فیلدها محدودیت unique=True گذاشتم و توی Insomnia دارم اون فیلد رو با دیتای متفاوتی از چیزی که توی دیتابیس ایجاد کردم صدا میزنم همینجا یادآوری شد که :serializer.is_valid()
validatevalidate(تابع نرمالایز کردن اون فیلد خاص رو من توی
validateserializerserializerFallbackخلاصه که چون توی تستهام از
faker استفاده میکن (اینم خودش یک best practice هست که باید رعایت بشه) توی هر دو endpoint اون فیلد بصورت دقیقا یکسان ارسال میشد و باگ در اومد و با یک redesign کوچیک همه جیز درست شد.اگر این تست نبود:
۱- من باقی بخشهای پروژه رو با دیزاینی که باگ داشت کد زده بودم
۲- باگ خودش رو نشون نمیداد مگر توی
stage, production توی محیط تست قطعا بازم با همین استاندارد که بذار normalization رو هم همزمان تست کنم همه چیز ادامه پیدا میکرد. ۳- درست کردن این باگ حتی اگر برای هفته بعدی هم میافتاد؛ حداقل ۵-۶ روزکاری زمان میبرد تا مشکلش رو بتونیم حل کنیم.
بخاطر حجم داده و حجم کد و
dependency هایی که بوجود میومد (چیزی که الان کمتر از ۱ ساعت وقت گرفت با یک redesign کامل)تست نویسی رو دستکم نگیرید واقعا.
❤17👍12
میگه دنبال کروسان گشتم نبود.
چایی خالی شد
میگم خب مشتی؛
من که همون شیرینی کشمشی رو بیشتر دوس داشتم.
اصن چی شد که تصمیم به تغییرش گرفتی ؟
(موضوع پول نبود)
شیرینی کشمشی :
۱۰٪ مواد لازم برای تهیهاس
۲۰٪ اش عشق
۷۰٪ اش خاطرهاس
بذار باشه.
حالا ولش کن هایده رو بذار که چایی به تنمون بچسبه ...
چایی خالی شد
میگم خب مشتی؛
من که همون شیرینی کشمشی رو بیشتر دوس داشتم.
اصن چی شد که تصمیم به تغییرش گرفتی ؟
(موضوع پول نبود)
شیرینی کشمشی :
۱۰٪ مواد لازم برای تهیهاس
۲۰٪ اش عشق
۷۰٪ اش خاطرهاس
بذار باشه.
حالا ولش کن هایده رو بذار که چایی به تنمون بچسبه ...
❤13👍2🍾2👌1
Iraj Habibi
یاد قدیم.
منو میبینی به من میگن سیاهبخت
به من نخدید آدمای خوشبخت
منم ی روزی روزگاری داشتم
جوون بودم، عشقی به یاری داشتم.
یاد قدیم.
منو میبینی به من میگن سیاهبخت
به من نخدید آدمای خوشبخت
منم ی روزی روزگاری داشتم
جوون بودم، عشقی به یاری داشتم.
❤4🍾1
گفتم ی ذره از خوانندههای قدیمی خودمون هم بزارم که خیلیها نمیشناسند.
همش که نباید هایده و ویگن و سوسن کوری و ... باشه
همش که نباید هایده و ویگن و سوسن کوری و ... باشه
👍11🍾1
#تجربه_شخصی
همهی آدما منتظرند ...
منتظرن برنده بشی تا بگن دیدی چه خوش شانس بود.
واسه همینم که شده از باختن نترس
به محض اینکه یکبار برنده بشی، همهی باختات یادشون میره.
حتی اگه یادشون نره، به عمد فراموش میکنند!
فراموش میکنند چون تخم و جرأت تلاش کردن ندارن.
فراموش میکنند که بگن، شانس آورد
چون میترسند بگن، اون از ما قویتر بود هربار که خورد زمین بلند شد، واقعاً میخوان بگن شانس آوردی.
من
وقتی جنگ حرفهای میشه، دیگه اونی که مشت اول رو میزنه برنده نیست.
برنده اونی میشه که با وجود بیشتر زمین خوردن، زود رو پاش وا میسه و مشت بعدیش رو محکمتر میزنه.
هیچوقت از شکست خوردن؛ از نه شنیدن خسته نشید.
جا نزنید.
همهی آدما منتظرند ...
منتظرن برنده بشی تا بگن دیدی چه خوش شانس بود.
واسه همینم که شده از باختن نترس
به محض اینکه یکبار برنده بشی، همهی باختات یادشون میره.
حتی اگه یادشون نره، به عمد فراموش میکنند!
فراموش میکنند چون تخم و جرأت تلاش کردن ندارن.
فراموش میکنند که بگن، شانس آورد
چون میترسند بگن، اون از ما قویتر بود هربار که خورد زمین بلند شد، واقعاً میخوان بگن شانس آوردی.
من
MMA کار کردم، وقتی جنگ حرفهای میشه، دیگه اونی که مشت اول رو میزنه برنده نیست.
برنده اونی میشه که با وجود بیشتر زمین خوردن، زود رو پاش وا میسه و مشت بعدیش رو محکمتر میزنه.
هیچوقت از شکست خوردن؛ از نه شنیدن خسته نشید.
جا نزنید.
👍35❤12
RandRng
کلید RSA هم برای اولین بار شکسته شد. نیاز فوری به الگوریتم Encryption جدید و قویتر Blog Post
توضیحات پست توی گروه مربوط به کانال Rust
👍5❤2🤣1
RandRng
قبلتر گفتم که بجای آپدیت از آیپد قبلی به M4 تصمیم گرفتم کلا برم روی آندروید. نمیدونم یادتون هست یا نه ولی قرار بود روی M1 اجازه کد زدن Swift هم داده بشه منم یه همین دلیل خریدم (که بعد کوچیکش کردن به اینکه فقط در حد یک اپلیکیشن آموزش هست) توی این سالها…
اولین فیچر رو با این تنظیمات امشب کد زدم.
ی مقدار دردسر داره البته (مثلا نبود داکر) ولی خب cloud سرویسها برای تست هستند.
یک سری ریز باگ هم یافتم که دارم روش کار میکنم اونا هم رفع بشه لپتاپ دیگه لازم ندارم ببرم شرکت (من ۸۰٪ کارم code review هست)
ی مقدار دردسر داره البته (مثلا نبود داکر) ولی خب cloud سرویسها برای تست هستند.
یک سری ریز باگ هم یافتم که دارم روش کار میکنم اونا هم رفع بشه لپتاپ دیگه لازم ندارم ببرم شرکت (من ۸۰٪ کارم code review هست)
👍8❤🔥2
خسته
فرهاد
پرسید دیوار دور خودت را چگونه ساختی؟ گفتم با سلامهایی که نمیخواهم
و
خداحافظهایی که نمیخواستم...
و
خداحافظهایی که نمیخواستم...
❤7👍2👌1
#رفیق
ی چند وقته مشکلاتی برام پیش اومده و من کلاً آدم نگفتن هستم (رفیق، خانواده و ... نداره) همیشه مشکلاتم رو واسه خودم نگه میدارم که بار روی دوش کسی نشه.
کلا هم با مشکلات داشتن ناراحت نیستم؛ چون خودم همیشه به رفیقام میگفتم :
ولی از دیروز علاوه بر مشکلات اتفاقاتی برام افتاد که حالم هم خوب نبود و چندتایی هم پشت هم.
امشب #رفیقم این ویدئو رو برام فرستاد و باید بگم:
۱- نه من رو دید (توی این شرایط)
۲- نه باهم فرصت کردیم حرف بزنیم
۳- نه جایی راجب این موضوع حرف زدم یا چیزی
۴- مهمتر از همه، توی این ۱۰-۱۲ سال رفاقت هیچوقت غیر از ویدئو فان چیزی برام نفرستاده
ولی ویدئو امشب، بهترین تراپی بود که نیاز داشتم.
ی چند وقته مشکلاتی برام پیش اومده و من کلاً آدم نگفتن هستم (رفیق، خانواده و ... نداره) همیشه مشکلاتم رو واسه خودم نگه میدارم که بار روی دوش کسی نشه.
کلا هم با مشکلات داشتن ناراحت نیستم؛ چون خودم همیشه به رفیقام میگفتم :
آدما دو دسته میشن :
۱- یا مشکل دارند.
۲- یا مشکل باقی هستند.
دسته اول شامل هر آدم زندهای هست.
دسته دوم اما، یا آدمهایی هستند که جنون دارند یا وقت زیر خاک رفتنشون رسیده.
شرط زنده موندن مشکل داشتن هست.
ولی از دیروز علاوه بر مشکلات اتفاقاتی برام افتاد که حالم هم خوب نبود و چندتایی هم پشت هم.
امشب #رفیقم این ویدئو رو برام فرستاد و باید بگم:
۱- نه من رو دید (توی این شرایط)
۲- نه باهم فرصت کردیم حرف بزنیم
۳- نه جایی راجب این موضوع حرف زدم یا چیزی
۴- مهمتر از همه، توی این ۱۰-۱۲ سال رفاقت هیچوقت غیر از ویدئو فان چیزی برام نفرستاده
ولی ویدئو امشب، بهترین تراپی بود که نیاز داشتم.
❤🔥20❤3
RandRng
#رفیق ی چند وقته مشکلاتی برام پیش اومده و من کلاً آدم نگفتن هستم (رفیق، خانواده و ... نداره) همیشه مشکلاتم رو واسه خودم نگه میدارم که بار روی دوش کسی نشه. کلا هم با مشکلات داشتن ناراحت نیستم؛ چون خودم همیشه به رفیقام میگفتم : آدما دو دسته میشن : ۱-…
This media is not supported in your browser
VIEW IN TELEGRAM
#رفیق سرت سلامت.
❤31👍2
My Fault (feat. Noah Cyrus)
Shaboozey/Noah Cyrus
My Fault
Artist: Shaboozey feat Noah Cyrus
Album: Where I’ve Been, Isn’t Where I’m Going
Artist: Shaboozey feat Noah Cyrus
Album: Where I’ve Been, Isn’t Where I’m Going
So I'm beginnin' to forgettin' the last memories of us
👌5