خیلی چیزا از قبل ساخته شدن و نیازی نیست دست به کد بشین، مثلا این یه پروژه آماده اوپن سورس CRM یا مدیریت ارتباط با مشتری هستش که خیلی کاراو انجام میده و فقط کافیه برای پروژه خودتون تغییرش بدید. برای پرژه های کم هزینه که حال دست به کد شدن نیست خیلی نجات دهنس، ساخت CRM واقعا هزینه و انرژی بالایی میخواد
github.com/monicahq/monica
@Linuxor
github.com/monicahq/monica
@Linuxor
تجربه ساخت اپلیکیشنهایی که بدون اینترنت هم کار کنن، همیشه دردسرساز بوده. RxDB یه دیتابیس جاوااسکریپتیه که همزمان آفلاین و آنلاین کار میکنه و خودش دیتا رو با سرور سینک میکنه.
توی اینجای داکیومنشنش ساده توضیح داده :
rxdb.info/quickstart.html
@Linuxor
توی اینجای داکیومنشنش ساده توضیح داده :
rxdb.info/quickstart.html
@Linuxor
برای بهینه سازی و کم حجم کردن مدیا ها تیم گوگل کروم یه ابزار ساخته به اسم squoosh بهش عکس یا هرچیزی رو بدید آنلاین تغییرات رو روش اعمال کنید بعد توی پروژه های وبیتون قرارش بدید
squoosh.app
@Linuxor
squoosh.app
@Linuxor
مرورگر ها خیلی هوای سرورهارو دارن، با ریکوست ها دوتا هدر ارسال میکنن if-none-match و if-modified-since و به سرور میگن آخرین باری که من اومدم توی سایت چه زمانی بوده و چیزی که بهم دادی چه ETAGی داشته، سرور هم به این دوتا هدر نگاه میکنه و چک میکنه اگه چیزی تغییر نکرده چیزی برای مرورگر نمیفرسته فقط یه 304 به مرورگر میفرسته و مرورگر میفهمه که باید از نسخه کش خودش استفاده کنه، اینطوری توی مصرف پهنای باند سرور صرفه جویی میشه و درخواست های تکراری چند بار پردازش نمیشن.
@Linuxor
@Linuxor
اگه بیشتر از کد زدن دوست دارین ادای کد زدن رو در بیارین و چشم اطرافیانتون رو در بیارین اینجا بهشت شماست، ریپازیتوری های با README های رنگی رنگی با سبک های مختلف رو جمع کردن اینجا:
zzetao.github.io/awesome-github-profile
@Linuxor
zzetao.github.io/awesome-github-profile
@Linuxor
فکر میکنی نوشتن کد FizzBuzz (یه چیزی شبیه بازی هپ هپ خودمونه) فقط یه تمرین ساده مصاحبهست؟ این ریپو بهت نشون میده همون تمرین میتونه تبدیل بشه به یک سیستم Enterprise واقعی. با تست ها و الگوهای طراحی مثل Strategy Pattern یا Dependency Injection و ... ساخته شده. و میبینید که یه کد خیلی خیلی ساده چطوری تبدیل به یه کد سازمانی و قابل توسعه میشه.
github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
@Linuxor
github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
@Linuxor
کتابخونه Nightmare یه کتابخونه خودکارسازی مرورگر (browser automation) سطحبالاست که با متدهایی مثل .goto, .type, .click محیطی رو شبیه تجربهٔ کاربر واقعی بازسازی میکنه. با Electron ساخته شده و هدفش سادهکردن تست UI، اسکرپینگ و انجام Task های اتوماتیک وبیه.
github.com/segment-boneyard/nightmare
@Linuxor
github.com/segment-boneyard/nightmare
@Linuxor
با لایبری Popmotion میتونید انیمیشن physics-based (حرکت بر اساس فیزیک مثل فنر یا اصطکاک) درست کنید.
یعنی به جای اینکه دستی تایمینگ ست کنی، یه دونه فنر تعریف میکنی و خودش طبیعی رفتار میکنه. به درد طراحیهای واقعی میخوره که میخوای حس لمس و فیزیک بدن بده.
popmotion.io
@Linuxor
یعنی به جای اینکه دستی تایمینگ ست کنی، یه دونه فنر تعریف میکنی و خودش طبیعی رفتار میکنه. به درد طراحیهای واقعی میخوره که میخوای حس لمس و فیزیک بدن بده.
popmotion.io
@Linuxor
پایتون یه لایبری داره به اسم dash که باهاش میشه چیزای داشبوردی مثل گراف و نمودار های تعاملی وب ساخت و دیگه درگیری های جاوااسکریپتی هم نداره به گفته خودشون یادگیریش 20 دقیقه بیشتر طول نمیکشه (البته فقط 20 دقیقه طول کشید من این پستو بنویسم)
برای تست و آموزشش از اینجا شروع کنید :
dash.plotly.com
@Linuxor
برای تست و آموزشش از اینجا شروع کنید :
dash.plotly.com
@Linuxor
به هوش مصنوعی ها و چت جی پی تی اعتماد نکنید، بهش گفتم یه میدلور برام بنویس که فقط اجازه بدم یه سری رنج آیپی خاص از یکی از سرویس های محرمانه استفاده کنن یه نگاه ریز بهش کردم چشمم به یه خط آسیب پذیر خورد که بررسی میکنه اگه پشت پراکسی مثلا nginx هستش آیپی رو از x-forwarded-for دریافت کنه !
تا اینجای کار همچی اوکیه ولی این تیکه کد آسیب پذیره، فقط کافیه اتکر بیاد و خودش دستی x-forwarded-for رو اضافه کنه مقدارش رو مثلا 127.0.0.1 قرار بده این کد فکر میکنه از داخل درخواست اومده و از میدلور ردش میکنه در صورتی که nginx فکر میکنه کلاینت اتکر خودش یه پراکسی دیگس و درخواست از خارج اومده و جواب رو به آیپی کلاینت بر می گردونه و هکر راحت لایه امنیتی سرویستون رو بایپس میکنه.
حالا راهکار چیه؟ بهش میگن XFF Spoofing برید بخونید دربارش، عمدا توضیحش نمیدم که کلی چیز قراره ازش یاد بگیرید.
@Linuxor
تا اینجای کار همچی اوکیه ولی این تیکه کد آسیب پذیره، فقط کافیه اتکر بیاد و خودش دستی x-forwarded-for رو اضافه کنه مقدارش رو مثلا 127.0.0.1 قرار بده این کد فکر میکنه از داخل درخواست اومده و از میدلور ردش میکنه در صورتی که nginx فکر میکنه کلاینت اتکر خودش یه پراکسی دیگس و درخواست از خارج اومده و جواب رو به آیپی کلاینت بر می گردونه و هکر راحت لایه امنیتی سرویستون رو بایپس میکنه.
حالا راهکار چیه؟ بهش میگن XFF Spoofing برید بخونید دربارش، عمدا توضیحش نمیدم که کلی چیز قراره ازش یاد بگیرید.
@Linuxor
به گفته رییس سازمان فناوری اطلاعات قراره کلی بودجه کنار بزارن و سیستم عامل و جویشگر بومی بسازن؛ ظاهرا کار خوبیه ولی این دوتا اونقدری رقابت توش هست که ساختش کار کشور ها نیست و پول الکی حروم میشه بلکه باید شرکت ها و آدم ها بیان بسازن زندگیشون رو بزارن پاش تا توی رقابت باشن ولی آیا توی ایران ما کسی رو داریم که زندگیش رو پای سیستم عامل یا جویشگر وقف کرده باشه؟ خیر ! چرا؟ چون امنیت و آرامش و آیندهی شغلی توی ایران برای یه متخصص یا کارآفرین تضمینشده نیست.
مشکل های GPS و محدودیت های اینترنت رو حل کنید. بزارید چهار تا آدم درست حسابی هم که تو ایران هست نزارن برن، اینا خودشون رایگان براتون جویشگر و سیستم عامل میسازن.
@Linuxor
مشکل های GPS و محدودیت های اینترنت رو حل کنید. بزارید چهار تا آدم درست حسابی هم که تو ایران هست نزارن برن، اینا خودشون رایگان براتون جویشگر و سیستم عامل میسازن.
@Linuxor
اگه تازه وارد یه تیم جدید شدی و همه دارن دربارهی best practices کُد ریویو حرف میزنن ولی هیچکس معلوم نمیکنه دقیقاً چی درسته و چی نه، گوگل سالها تجربهی خودش توی مدیریت ریویوها رو خلاصه کرده و گذاشته اینجا. از نکات ریز مثل نامگذاری متغیر تا نحوهی فیدبک دادن مودبانه.
google.github.io/eng-practices
@Linuxor
google.github.io/eng-practices
@Linuxor
این پستی که امروز میخوام توی لینوکسور بزارم یکم غم انگیزه چون سازندش چند سال پیش فوت کرد و دیگه پروژه هرچند خیلی خفن بود ادامه پیدا نکرد؛
در واقع یه ترمینال تحت وب باحال بود که خیلی هم معروف بود به اسم UpTerm که باهاش میتونستی از هرجا با مرورگر بهش وصل شی. دیگه لازم نبود SSH خشک رو تحمل کنی. البته الان جایگزین هاش خیلی هستن و خودشون هم Hyper رو معرفی کردن ولی UpTerm خیلی خوب بود توی زمان خودش :
github.com/railsware/upterm
@Linuxor
در واقع یه ترمینال تحت وب باحال بود که خیلی هم معروف بود به اسم UpTerm که باهاش میتونستی از هرجا با مرورگر بهش وصل شی. دیگه لازم نبود SSH خشک رو تحمل کنی. البته الان جایگزین هاش خیلی هستن و خودشون هم Hyper رو معرفی کردن ولی UpTerm خیلی خوب بود توی زمان خودش :
github.com/railsware/upterm
@Linuxor
پیدا کردن آموزش خوب برای rust سخته این یکی از قشنگ ترین آموزش های راسته که تیم گوگل نوشتتش بسیار ساده و کوتاه :
google.github.io/comprehensive-rust
@Linuxor
google.github.io/comprehensive-rust
@Linuxor
توی نرم افزار ما معمولا دو نوع پروتوتایپ Prototype یا نسخه اولیه داریم، یکیش نسخه اولیه دور انداختنی یا Throwaway Prototype هست که فقط برای تست ساخته میشه و دور انداخته میشه و بعدا نسخه بهترش ساخته میشه یکی هم نسخه اولیه تکاملی یا Evolutionary Prototype که کم کم توسعه پیدا میکنه و به محصول نهایی تبدیل میشه!
حالا سوال، کی باید بفهمیم از کدومش استفاده کنیم؟ در واقع وقتی ایده خیلی خامه و هنوز معلوم نیست جواب بده یا نه از پروتوتایپ دور انداختنی بهتره استفاده کنیم و زمانی که ایده نسبتا روشن و اثبات شدس بهتره از پروتوتایپ تکاملی استفاده کنیم.
@Linuxor
حالا سوال، کی باید بفهمیم از کدومش استفاده کنیم؟ در واقع وقتی ایده خیلی خامه و هنوز معلوم نیست جواب بده یا نه از پروتوتایپ دور انداختنی بهتره استفاده کنیم و زمانی که ایده نسبتا روشن و اثبات شدس بهتره از پروتوتایپ تکاملی استفاده کنیم.
@Linuxor
وقتی چند تا دامین مختلف دارید بعضی مواقع اصلا نیاز نیست بیاید برای هرکدوم یه کانتینر بسازید و توش مثلا express یا laravel یا django بالا بیارین؛ میتونید از sub-application استفاده کنید؛ لاراول که بای دیفالت داره اما express کافیه چند تا اینستنس از ()express بسازید django هم با میدلور اوکی میشه.
@Linuxor
@Linuxor
توی اینترنت پر آیکونه ولی همشون یا لایسنس دارن یا برای استفاده تجاری غیر رایگانن، این سایته یه لیستی از آیکون هارو درست کرده هرچند تعدادشون خیلی زیاد نیست ولی تحت لاینسس MIT هستن و تقریبا دستتون بازه بدون مشکل هرکاری باهاشون کنید
heroicons.com
@Linuxor
heroicons.com
@Linuxor
خیلی وقتا مولتیترد کردن بهترین گزینه نیست. مثلا توی وب Node.js روی یه ترد اصلی جاوااسکریپت اجرا میشه و با event-loop هزاران کانکشن رو هندل میکنه، هرچند زیرش یه thread pool کوچیک برای بعضی I/Oها داره.
اگه برنامت CPU-bound باشه مولتیترد/پروسس لازمه، ولی اگه I/O-bound باشه معماری async/event-driven معمولاً بهینهتره و هزینهی context switch سنگین هم نمیدی.
@Linuxor
اگه برنامت CPU-bound باشه مولتیترد/پروسس لازمه، ولی اگه I/O-bound باشه معماری async/event-driven معمولاً بهینهتره و هزینهی context switch سنگین هم نمیدی.
@Linuxor