Supabase جایگزین اُپنسورس Firebase!

آموزش کار با Supabse در فلاتر جایگزین فایربیس

یکی از مزایای اصلی سوپابیس، متن‌باز بودن آن است که اجازه می‌دهد کاربران کنترل کاملی بر داده‌ها و سرورهای خود داشته باشند. این ویژگی برای سازمان‌ها و توسعه‌دهندگانی که به امنیت و سفارشی‌سازی اهمیت می‌دهند، بسیار جذاب است. در مجموع، سوپابیس با ارائه یک مجموعه کامل از خدمات بک‌اند و تمرکز بر انعطاف‌پذیری و متن‌باز بودن، به یک گزینه مناسب برای کسانی تبدیل شده است که به دنبال جایگزینی برای Firebase یا ساختارهای بک‌اند مشابه هستند. Supabase یک سطح رایگان ارائه می دهد که به توسعه دهندگان اجازه می دهد تا پلتفرم را امتحان کنند و برنامه های کاربردی در مقیاس کوچک را بدون هیچ هزینه ای بسازند. سطح رایگان شامل محدودیت استفاده سخاوتمندانه برای ذخیره سازی پایگاه داده، درخواست های API، احراز هویت و ذخیره سازی فایل است.

بعد از ثبت نام و ایجاد پروژه جدید یک رمز عبور نیز برای دیتابیس خود باید ثبت کنید. بنابراین در این آموزش قصد استفاده از پلتفرمی جایگزین به نام Supabase در فریمورک فلاتر داریم. خوشبختانه، این تیم صرفاً کارهایی را که Firebase انجام می‌دهد تکرار نمی‌کنند، بلکه تعدادی ویژگی را نیز اضافه می‌کنند که Firebase ندارد. اگر می خواهید پایگاه داده را از داشبورد خود پیمایش کنید، حتی می توانید از ویرایشگر SQL خارج از جعبه استفاده کنید. این خبر عالی است زیرا بزرگترین نگرانی در مورد پایگاه داده Postgres مقیاس پذیری است.

پس از انجام این کار وارد بخش Authentication میشویم تا پالیسی های مورد نظر را ثبت کنیم. وجود محدودیت اینترنت ملی و همچنین تحریم کاربران ایرانی بخشی از این مشکلات میباشند. استفاده از پلتفرم های ارائه دهنده خدمات بک اند BaaS باعث کاهش هزینه و افزایش سرعت توسعه اپلیکیشن ها میشود. انتخاب نوع آدرس IP برای شبکه‌ها و دستگاه‌ها، تأثیر مستقیمی بر امنیت، پایداری و عملکرد سیستم‌های شما دارد. در این مقاله از ابر زس، قصد داریم به‌صورت جامع، مفهوم آی پی استاتیک را توضیح دهیم. فریمورک Next.js چیست؛ Next.js یک فریمورک متن‌باز بر پایه React است که توسط Vercel توسعه یافته و برای ساخت وب‌سایت‌ها و اپلیکیشن‌های تحت وب استفاده می‌شود.

برای افزایش امنیت برنامه کلید های خصوصی را در فایل هایی با پسوند env ذخیره میکنیم. برای شروع کار در فلاتر ابتدا یک پروژه جدید در اندروید استودیو تعریف میکنیم. ستون userid کلید خارجی میباشد که برای فعال کردن این بخش روی آیکون زنجیر میتوانید کلیک کنید تا کلید های خارجی که نیاز دارید را به جدول اضافه کنید. اگر میخواهید پایگاه داده از قابلیت ارتباط بی درنگ پشتیبانی کند تیک گزینه Enable Realtime را فعال کنید. پس از انجام این بخش نیاز داریم تا یک جدول در دیتابیس پروژه ایجاد کنیم.

مقایسه کامل‌تر پلن‌های سوپابیس را می‌توانید در وب‌سایت آن مشاهده کنید. "وقتی 14 سالم بود با برنامه نویسی آشنا شدم،آروم آروم سراغش رفتم اوایل با سی پلاس پلاس کار می کردم ، بخاطر علاقه ای که پیدا کردم بیشتر تلاش کردم و..." در برخی مواقع، جداول شما ممکن است به قدری پر باشد که پیمایش آنها غیرممکن شود، این زمانی است که شما می تواند کوئری های SQL را بنویسد و از پایگاه داده بدون وارد شدن دستی به آن فراخوانی کند. شما می توانید آن را به طور کامل یا فقط از خدمات مورد نیاز خود استفاده کنید. در صورتی که این کار با موفقیت انجام شود آدرس لینک تصویر توسط این متد بازگردانده میشود.

سوپابیس، یک پلتفرم قدرتمند و متن‌باز است که بر پایه پایگاه داده محبوب PostgreSQL ساخته شده است. با سوپابیس، توسعه‌دهندگان می‌توانند به سرعت و سهولت، بک‌اند کاربردهای وب و موبایل خود را پیاده‌سازی کنند. این پلتفرم با ارائه رابط کاربرپسند و امکانات پیشرفته‌ای مانند احراز هویت، ذخیره‌سازی فایل و قابلیت‌های سرورلس، فرآیند توسعه را ساده‌تر کرده و به توسعه‌دهندگان اجازه می‌دهد تا تمرکز خود را روی منطق اصلی اپلیکیشن قرار دهند. با سوپابیس، نیازی به صرف زمان زیاد برای تنظیمات پیچیده پایگاه داده نیست و می‌توانید با چند کلیک یک بک‌اند کامل و مقیاس‌پذیر داشته باشید. Supabase یک جایگزین منبع باز قدرتمند و همه کاره برای Firebase است که طیف وسیعی از ویژگی ها را برای ساخت برنامه های مدرن ارائه می دهد. این ابزار جامع، همه آنچه توسعه‌دهندگان برای ساخت برنامه‌های مدرن نیاز دارند را در یک جا فراهم می‌کند.

در چشم انداز همیشه در حال تحول توسعه وب، توسعه دهندگان دائماً به دنبال راه حل های قوی برای بک اند هستند. Supabase به طور یکپارچه با فریمورک ها و کتابخانه های frontend محبوب ادغام می شود و ساخت برنامه های فول استک را آسان می کند. این SDK ها و کتابخانه هایی را برای جاوا اسکریپت، تایپ اسکریپت، پایتون و روبی فراهم می کند و به شما امکان می دهد با API ها و سرویس های Supabase از زبان برنامه نویسی دلخواه خود تعامل داشته باشید. Supabase یک جعبه ابزار هوش مصنوعی ارائه می دهد که به شما امکان می دهد از مدل های یادگیری ماشینی و جاسازی ها در برنامه های خود استفاده کنید. با استفاده از جعبه ابزار ارائه شده، می‌توانید کارهای مختلف مرتبط با هوش مصنوعی مانند تشخیص تصویر، پردازش زبان طبیعی و سیستم‌های توصیه را انجام دهید. علاوه بر این، اگر ترجیح می‌دهید به جای استفاده از نسخه میزبان، Supabase را خود میزبانی کنید، می‌توانید آن را در زیرساخت خود مستقر و مدیریت کنید.

این توابع با زبان TypeScript نوشته می‌شوند و از پلتفرم Deno استفاده می‌کنند. Deno یک پلتفرم متن‌باز است که برای اجرای برنامه‌ها با مزایایی مثل امکان اجرای محلی و پشتیبانی از تکنولوژی‌های جدید مثل WebAssembly (یا WASM) طراحی شده است. WebAssembly به توسعه‌دهندگان این امکان را می‌دهد که کدهای سریع و کارآمد را روی مرورگرها و سرور اجرا کنید. Supabase یک جایگزین منبع باز برای Firebase است که هدف آن ارائه ویژگی های درجه یک سازمانی با استفاده از مجموعه ای از ابزارهای منبع باز است. سوپابیس به عنوان یک پلتفرم متن‌باز، امکان دسترسی آزاد به کد منبع خود را فراهم کرده است. این ویژگی به توسعه‌دهندگان اجازه می‌دهد تا با سفارشی‌سازی کدها، قابلیت‌ها و عملکردهای سوپابیس را دقیقاً مطابق با نیازهای پروژه خود تنظیم کنند.

علیرغم داشتن یک غول فناوری با پذیرش گسترده کاربران، کاربران Firebase به طور معمول شکایت دارند که عیب یابی صرفاً زمان و انرژی زیادی می گیرد. همچنین برای انتخاب شهر و دسته بندی آگهی از ویجت فلاتر DropDownMenu استفاده میکنیم. سپس در ادامه با استفاده supabase.auth.signUp اقدام به ایجاد اکانت جدید میکنیم. برای اینکه در صفحات دیگر بتوانیم از این کلاس یک نمونه ایجاد کنیم این کار حتما باید در این قسمت انجام شود. به همین منظور روی گزینه Storage کلیک کنید و عبارت New bucket را انتخاب کنید.

با استفاده از Storage Buckets اختصاصی، که در واقع پوشه‌های ایمنی برای نگهداری فایل‌ها هستند، می‌توانید فایل‌های خود را به‌صورت عمومی یا اختصاصی ذخیره کنید و دسترسی به آن‌ها را با Access Control Policies مدیریت کنید. این سیستم همچنین یک Simple API ارائه می‌دهد که فرآیند ذخیره و دسترسی به فایل‌ها را سریع و آسان می‌کند. اگرچه امکان ذخیره‌سازی فایل‌ها در دیتابیس وجود دارد، برای فایل‌های بزرگ توصیه می‌شود از Storage Buckets استفاده کنید تا از نظر عملکردی بهینه باشید. از طرفی، سوپابیس با فراهم کردن قابلیت‌های پیشرفته‌ای مانند سفارشی‌سازی قالب‌های ایمیل، احراز هویت چند عاملی (Multi-Factor Authentication یا MFA) و حفاظت کپچا، پاسخگوی نیازهای امنیتی و پیچیده پروژه‌های حرفه‌ای است. برای برنامه های بزرگتر یا نیازهای استفاده بالاتر، Supabase برنامه های پولی را با محدودیت منابع افزایش یافته و ویژگی های اضافی ارائه می دهد. قیمت گذاری شفاف و بر اساس منابعی است که شما مصرف می کنید، مانند تعداد ردیف های پایگاه داده، درخواست های API و استفاده از ذخیره سازی فایل.

پایگاه‌های داده NoSQL مانند Firebase، با ارائه ساختارهای داده انعطاف‌پذیر (schema-less)، امکان ذخیره اطلاعات را بدون محدودیت‌های ساختاری فراهم می‌کنند. این ویژگی در ابتدای کار بسیار مفید است، زیرا به توسعه‌دهندگان اجازه می‌دهد بدون نگرانی در مورد فرمت دقیق داده‌ها، اطلاعات را به سرعت ذخیره کنند. با این حال، این انعطاف‌پذیری بیش از حد، می‌تواند در پروژه‌های بزرگ‌تر به چالشی جدی تبدیل شود. عدم وجود یک ساختار ثابت و از پیش تعریف شده، می‌تواند منجر به پیچیدگی در مدیریت داده‌ها، دشواری در جستجو و بازیابی اطلاعات و در نهایت از دست رفتن یکپارچگی و انسجام داده‌ها شود. Supabase یک داشبورد جامع ارائه می دهد که به شما یک نمای متمرکز از داده های برنامه، تنظیمات احراز هویت، API ها، توابع، ذخیره سازی فایل و موارد دیگر را می دهد.

اگر ابزار مناسبی وجود نداشته باشد، تیم پشتیبان Supabase خودشان آن را توسعه داده و منبع باز می کنند. یکی از ویژگی‌های عالی Supabase این است که به طور خودکار از پایگاه داده شما پشتیبان تهیه می‌کند، بنابراین نگرانی از دست رفتن داده‌ها وجود ندارد. همچنین می‌توانید به سادگی داده‌های خود را از فایل‌های CSV یا Excel به جداول پایگاه داده وارد کنید. Supabase همچنین طوری طراحی شده است که با سایر ابزارها و خدمات موجود در اکوسیستم کار کند. درست مانند Firebase برای پشتیبانی از بک اند یک برنامه تلفن همراه طراحی شده است، به جز اینکه Supabase قول می دهد کارها را ساده کند. در واقع، نمی‌توانید مقدمه‌ای برای Supabase بخوانید بدون اینکه یاد بگیرید که می‌تواند به شما در ایجاد یک Backend در کمتر از 3 دقیقه کمک کند.

با این حال، Supabase یک راه حل منبع باز است و در مراحل ابتدایی خود است. در مجموع، اینکه Postgres یک مزیت یا مضرات نسبت به Firebase است، واقعاً به اولویت توسعه‌دهندگان بستگی دارد. هم پایگاه داده Realtime Firebase و هم پایگاه داده Postgres Supabase دارای قابلیت‌های عملکردی عالی هستند. بنابراین، اجازه دهید به مقدمه Supabase و مقایسه یک عنصر مهم دیگر ادامه دهیم. محل ذخیره سازی که Supabase ارائه می دهد بسیار شبیه به ویژگی های راه حل ذخیره سازی Firebase است.

داشبورد یک رابط کاربر پسند برای مدیریت و نظارت بر پروژه Supabase شما ارائه می دهد. سوپابیس با پشتیبانی گسترده از زبان‌ها و فریمورک‌های محبوب، انعطاف‌پذیری بی‌نظیری را برای توسعه‌دهندگان فراهم می‌کند. از جاوا اسکریپت و پایتون گرفته تا سی‌شارپ، کاتلین، فلاتر و سویفت، شما می‌توانید با زبان مورد علاقه‌تان برنامه‌نویسی کنید و از قابلیت‌های قدرتمند سوپابیس بهره‌مند شوید. این تنوع زبانی، توسعه‌دهندگان را از یادگیری زبان جدید بی‌نیاز کرده و به آن‌ها اجازه می‌دهد با سرعت و سهولت بیشتری پروژه‌های خود را پیاده‌سازی کنند. سیستم ذخیره‌سازی سوپابیس به شما این امکان را می‌دهد که فایل‌های بزرگ را به‌راحتی، مستقیماً در پلتفرم خود ذخیره و مدیریت کنید.

در حالی که Firebase سال‌ها پشتیبانی و به‌روزرسانی‌ها را از Google دریافت کرده است، که مسلماً بزرگترین غول فناوری در سطح جهان است، Supabase یک نرم‌افزار متن‌باز است که کمتر از دو سال است که فعال شده است. به عبارت دیگر، این پلتفرم قول می دهد هر آنچه را که برای ساخت یک اپلیکیشن موبایل نیاز دارید را ارائه دهد. اگر با API های آنی آشنایی ندارید، آن را توضیح می دهیم و در اینجا Supabase را با سایر ارائه دهندگان مقایسه می کنیم. در متد insertData ردیف جدیدی از اطلاعات را داخل دیتابیس ذخیره میکنیم. در متد _getAuth() بررسی میکنیم که آیا کاربر وارد حساب خود شده یا خیر.

با این حال، Supabase از امنیت سطح ردیفی استفاده می کند که در Postgres تعبیه شده است تا راه حلی قابل اعتماد و بومی برای مجوزها ارائه دهد. با این اوصاف، جایگزین‌های پلتفرم‌های بزرگی مانند Firebase نمی‌توانند با شرایط برابر ظاهر شوند.

Supabase از توابع بدون سرور پشتیبانی می کند و به شما امکان می دهد منطق سفارشی که روی سرور اجرا می شود بنویسید. شما می توانید توابع پایگاه داده ای ایجاد کنید که کوئری های SQL را اجرا می کند یا عملیات پیچیده داده را انجام می دهد. علاوه بر این، Supabase توابع لبه ای را ارائه می دهد که به شما امکان می دهد تابع های بدون سرور را نزدیک به کاربران خود اجرا کنید، تاخیر را کاهش داده و عملکرد را بهبود می بخشد. Supabase با تولید خودکار API های REST و GraphQL بر اساس طرح پایگاه داده شما، فرآیند ساخت API را برای برنامه شما ساده می کند. این API ها یک رابط کاربری مناسب برای تعامل با داده های شما فراهم می کنند و یکپارچه سازی یکپارچه با چارچوب ها و کتابخانه های frontend را امکان پذیر می کنند. بعد از طراحی جدول برای تکمیل شدن این بخش نیاز داریم تا قابلیت ذخیره سازی فایل را هم فعال کنیم.

ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی می‌نویسم. در مقاله‌ای دیگر به طور کامل به این موضوع پرداخته‌ایم که PostgreSQL چیست و چه کاربردهایی دارد. هنگامی که به آنجا رسیدید، ممکن است متوجه شوید که درک یک رفتار یا مشکل زمان زیادی می برد و در نهایت ممکن است پاسخ اصلاً در مستندات نباشد. Firebase و Supabase در بسیاری از زمینه ها به طور قابل توجهی مشابه هستند، اما پایگاه داده های مربوطه آنها جایی است که تفاوت ها نشان می دهد. در حالی که Firebase از پایگاه داده Realtime خود استفاده می کند، پس از معرفی Supabase خواهید آموخت که از یک پایگاه داده رابطه ای استفاده می کند.

در پروژه Supabase، از supabase_key و supabase_URL ارائه شده استفاده می‌کنید و آن‌ها را به برنامه سمت کلاینت خود وصل می‌کنید. سوپابیس، علی‌رغم ارائه امکانات قدرتمند، در برخی بخش‌ها مانند ایمیل‌ها، انعطاف‌پذیری کافی برای شخصی‌سازی را فراهم نمی‌کند. این محدودیت در سفارشی‌سازی، هماهنگی ظاهری برنامه با برند و سلیقه‌ی کاربر را به چالش می‌کشد و ممکن است تجربه کاربری یکپارچه‌ای را که انتظار می‌رود، ارائه ندهد. پایگاه‌های داده بلادرنگ به دلیل امکان به‌روزرسانی مداوم و همگام‌سازی لحظه‌ای داده‌ها، در ساخت اپلیکیشن‌های تعاملی و جذاب بسیار مهم هستند. ابزار Supabase Realtime این قابلیت را فراهم می‌کند که هر تغییری که در پایگاه داده PostgreSQL رخ می‌دهد (مثل اضافه کردن، ویرایش، یا حذف داده‌ها) به صورت لحظه‌ای در اپلیکیشن شما نمایش داده شود. Supabase از اشتراک های بلادرنگ پشتیبانی می کند و به شما امکان می دهد هر زمان که داده های پایگاه داده شما تغییر می کند، به روز رسانی های فوری را دریافت کنید.

در این صفحه کاربر با انتخاب یک تصویر و وارد کردن اطلاعات مختلف یک آگهی جدیدی را در سیستم ثبت میکند. در صفحه AuthPage فرم ثبت نامی طراحی کنیم تا به وسیله آن کاربر بتواند یک حساب جدید ایجاد کند و یا اگر از قبل دارای اکانت میباشد بتواند وارد شود. می‌توانید از این مستندات استفاده کنید تا با نحوه استفاده از کتابخانه آشنا شوید و عملکرد Supabase را در برنامه‌های فلاتر خود پیاده‌سازی کنید. سرور لبه به قابلیت سرورلس اشاره دارد که نزدیک به کاربران شما، در نقاط لبه‌ای شبکه اینترنت اجرا می‌شوند. این یعنی توابع به جای این که روی سرورهای مرکزی یا دوردست اجرا شوند، در نقاط نزدیک‌تر به کاربران پردازش می‌شوند. به علاوه، دیدن این که تیم بسیار فعال است و از کاربران می خواهد که مانند زبان های جدید رای دهند، بسیار خوب است.

Supabase مجموعه‌ای از تصاویر Docker و اسکریپت‌های نصب را ارائه می‌کند که راه‌اندازی و اجرای Supabase را در ارائه‌دهنده ابری دلخواه یا محیط داخلی شما آسان‌تر می‌کند. با استفاده از کلید API، بک اند را به قسمت فرانت اند متصل می کنید، که احراز هویت کاربر را ممکن می کند. در مقاله ما در مورد API ها و امنیت می توانید درباره لایه ها و سرویس های احراز هویت اطلاعات بیشتری کسب کنید. Supabase یک جایگزین Firebase منبع باز است که هدف آن ارائه یک تجربه مشابه Firebase به توسعه دهندگان با استفاده از یک پلتفرم درجه یک سازمانی است. مجموعه ای از ابزارهای منبع باز را ترکیب می کند که بر استفاده از ابزارها و جوامع موجود با MIT، Apache 2 یا مجوزهای باز مشابه تأکید دارد.

روی عبارت Enable read access to everyone کلیک کنید و پالیسی مورد نظر را اضافه کنید. از منوی سمت چپ عبارت policiesرا انتخاب کنید و سپس روی گزینه new policy کلیک کنید. همچنین، شما می‌توانید از وب سوکت‌های Supabase استفاده کنید تا به رویدادها و آپدیت‌های زنده در پایگاه داده گوش کنید. برای استفاده از Supabase در فلاتر، شما می‌توانید از کتابخانه رسمی Supabase Dart استفاده کنید. اما استفاده از این سرویس در این سالها برای برنامه نویسان ایرانی با مشکلاتی همراه بود.

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

وقتی شما از سوپابیس استفاده می‌کنید، نیازی نیست خودتان برای دیتابیس‌تان API بنویسید. API رابطی است که برنامه شما را به دیتابیس وصل می‌کند تا بتواند داده‌ها را بخواند یا تغییر دهد. به طور معمول، باید خودتان کدنویسی کنید تا این ارتباط را برقرار کنید، اما سوپابیس به طور خودکار و بر اساس داده‌هایی که در دیتابیس دارید، این APIها را ایجاد می‌کند. به این ترتیب، وقت کمتری صرف نوشتن کدهای پیچیده برای اتصال به دیتابیس می‌کنید. همچنین، Supabase Realtime به شما امکان می‌دهد که از ویژگی «Broadcast» استفاده کنید؛ یعنی می‌توانید پیام‌ها را به طور همزمان به چندین کاربر یا کلاینت ارسال کنید. این ویژگی در ساخت اپلیکیشن‌هایی مانند چت آنلاین، ردیابی وضعیت آنلاین کاربران (مثل اینکه آیا کاربر آنلاین است یا نه)، و مدیریت زمان‌بندی پیام‌ها (تاخیر یا سرعت ارسال و دریافت پیام) بسیار مفید است.

این کتابخانه امکاناتی را فراهم می‌کند که به شما اجازه می‌دهد با استفاده از API Supabase ارتباط برقرار کنید و عملیات مانند اضافه کردن، به‌روزرسانی، حذف و دریافت داده‌ها را انجام دهید. Row Level Security یا RLS در سوپابیس، قابلیتی قدرتمند برای کنترل دسترسی کاربران به داده‌ها است. با فعال کردن این قابلیت، کاربران می‌‌توانند سیاست‌های PostgreSQL را مستقیما از طریق سوپابیس تعیین کنند. با این حال، مستندات پیچیده و فنی این ویژگی، درک و استفاده از آن را برای کاربران مبتدی دشوار کرده است. این پیچیدگی باعث شده تا بسیاری از کاربران نتوانند به طور کامل از مزایای این قابلیت بهره‌مند شوند و در نتیجه، امنیت داده‌های خود را به خطر بیندازند. رابط کاربری گرافیکی Supabase به گونه‌ای طراحی شده که حتی افراد مبتدی نیز می‌توانند به راحتی جداول خود را مشاهده و مدیریت کنند.


برنامه نویسی چیست نی نی سایت