Forwarded from SoniaCircuit (Soroush)
📚معرفی Zod
یه کتابخونه فوقالعاده برای اعتبارسنجی (Validation) دادههاست که باهاش میتونید قوانین دقیق و تایپسیف تعریف کنید.
📦 نصب Zod
💠 نمونه کد
💠 استفاده از Zod با React Hook Form
ابتدا بستههای زیر را نصب کنید:
🔗 https://zod.dev
#Zod #Validation #FrontEnd #React
@SoniaNotes
یه کتابخونه فوقالعاده برای اعتبارسنجی (Validation) دادههاست که باهاش میتونید قوانین دقیق و تایپسیف تعریف کنید.
📦 نصب Zod
npm install zod
# yarn add zod
# pnpm install zod
💠 نمونه کد
import { z } from "zod";
const userSchema = z.object({
username: z.string().min(3, "Username must be minimum 3 characters"),
age: z.number().int().positive("Age must be positive"),
email: z.string().email("Email is invalid."),
password: z.string().min(6).refine(val => /[A-Z]/.test(val), {
message: "Password must be at least 6 characters and contain both uppercase and lowercase letters.",
}),
});
try {
userSchema.parse({
username: "ali",
age: 25,
email: "[email protected]",
password: "Secret1",
});
console.log("Validation successful.");
} catch (e) {
console.log(e.errors);
}💠 استفاده از Zod با React Hook Form
ابتدا بستههای زیر را نصب کنید:
npm install react-hook-form @hookform/resolver
# yarn add react-hook-form @hookform/resolver
# pnpm install react-hook-form @hookform/resolver
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import { z } from "zod";
const schema = z.object({
email: z.string().email(),
password: z.string().min(6),
});
function MyForm() {
const { register, handleSubmit, formState: { errors } } = useForm({
resolver: zodResolver(schema),
});
const onSubmit = data => {
console.log(data);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input {...register("email")} placeholder="Email" />
{errors.email && <p>{errors.email.message}</p>}
<input type="password" {...register("password")} placeholder="Password" />
{errors.password && <p>{errors.password.message}</p>}
<button type="submit">Login</button>
</form>
);
}🔗 https://zod.dev
#Zod #Validation #FrontEnd #React
@SoniaNotes
Forwarded from Gopher Academy
🔵 عنوان مقاله
Valgo 0.7: An Expressive Validator Library
🟢 خلاصه مقاله:
اValgo 0.7 یک کتابخانه اعتبارسنجی است که با تکیه بر generics، API ایمن از نظر نوع و قابلگسترش ارائه میدهد. بهجای استفاده از struct tags، قواعد بهصورت توابع نوشته میشوند؛ رویکردی که خوانایی، تستپذیری و ترکیبپذیری را افزایش میدهد و وابستگی به رشتهها و reflection را کاهش میدهد. نتیجه، اعتبارسنجی شفافتر و قابلنگهداریتری است که از بررسیهای ساده تا منطقهای پیچیده و دامنهمحور را پوشش میدهد و بهسادگی با لایههای مختلف کد ادغام میشود.
#Validation #Generics #TypeSafety #Extensibility #CleanCode #DeveloperExperience #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/174655/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Valgo 0.7: An Expressive Validator Library
🟢 خلاصه مقاله:
اValgo 0.7 یک کتابخانه اعتبارسنجی است که با تکیه بر generics، API ایمن از نظر نوع و قابلگسترش ارائه میدهد. بهجای استفاده از struct tags، قواعد بهصورت توابع نوشته میشوند؛ رویکردی که خوانایی، تستپذیری و ترکیبپذیری را افزایش میدهد و وابستگی به رشتهها و reflection را کاهش میدهد. نتیجه، اعتبارسنجی شفافتر و قابلنگهداریتری است که از بررسیهای ساده تا منطقهای پیچیده و دامنهمحور را پوشش میدهد و بهسادگی با لایههای مختلف کد ادغام میشود.
#Validation #Generics #TypeSafety #Extensibility #CleanCode #DeveloperExperience #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/174655/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - cohesivestack/valgo: Valgo is a type-safe, expressive, and extensible validator library for Golang. Supports localization…
Valgo is a type-safe, expressive, and extensible validator library for Golang. Supports localization and is built with generics. - cohesivestack/valgo
Forwarded from Gopher Academy
🔵 عنوان مقاله
google/jsonschema-go
🟢 خلاصه مقاله:
این مقاله دو کتابخانه Go برای کار با JSON Schema را مقایسه میکند: google/jsonschema-go و مخزن شخصی Ian Lance Taylor با نام ianlancetaylor/jsonschema. تمرکز اصلی بر کاربردهای عملی مانند اعتبارسنجی در زمان اجرا، همترازی قراردادهای داده میان سرویسها، و در صورت نیاز، تولید کد برای انواع Go است. بهجای معرفی یک برنده قطعی، مجموعهای از معیارهای انتخاب پیشنهاد میشود: پوشش استاندارد (کلیدواژهها، فرمتها، و ارجاعات $ref)، کیفیت گزارش خطا، کارایی در بارهای واقعی، قابلیت سفارشیسازی، و نشانههای پایداری و نگهداشت پروژه. همچنین سازگاری با فرآیندهای CI، نحوه حل $ref در فایلها و URLها، و میزان تطبیق با ابزارهای رایج Go بررسی میشود. جمعبندی مقاله عملی است: هر دو گزینه قابل اتکا هستند و انتخاب نهایی باید بر اساس نیازهای خاص تیم—سادگی رابط، گستره امکانات، یا الزامات یکپارچهسازی—انجام شود.
#Go #JSONSchema #GoLang #OpenSource #Validation #CodeGeneration #GitHub
🟣لینک مقاله:
https://golangweekly.com/link/176346/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
google/jsonschema-go
🟢 خلاصه مقاله:
این مقاله دو کتابخانه Go برای کار با JSON Schema را مقایسه میکند: google/jsonschema-go و مخزن شخصی Ian Lance Taylor با نام ianlancetaylor/jsonschema. تمرکز اصلی بر کاربردهای عملی مانند اعتبارسنجی در زمان اجرا، همترازی قراردادهای داده میان سرویسها، و در صورت نیاز، تولید کد برای انواع Go است. بهجای معرفی یک برنده قطعی، مجموعهای از معیارهای انتخاب پیشنهاد میشود: پوشش استاندارد (کلیدواژهها، فرمتها، و ارجاعات $ref)، کیفیت گزارش خطا، کارایی در بارهای واقعی، قابلیت سفارشیسازی، و نشانههای پایداری و نگهداشت پروژه. همچنین سازگاری با فرآیندهای CI، نحوه حل $ref در فایلها و URLها، و میزان تطبیق با ابزارهای رایج Go بررسی میشود. جمعبندی مقاله عملی است: هر دو گزینه قابل اتکا هستند و انتخاب نهایی باید بر اساس نیازهای خاص تیم—سادگی رابط، گستره امکانات، یا الزامات یکپارچهسازی—انجام شود.
#Go #JSONSchema #GoLang #OpenSource #Validation #CodeGeneration #GitHub
🟣لینک مقاله:
https://golangweekly.com/link/176346/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
pkg.go.dev
jsonschema package - github.com/ianlancetaylor/jsonschema - Go Packages
Package jsonschema implements JSON schemas.
Forwarded from Gopher Academy
🔵 عنوان مقاله
on using JSON schemas in Go
🟢 خلاصه مقاله:
** این مقاله به مزایای استفاده از JSON Schema برای تعریف، اعتبارسنجی و مستندسازی دادههای JSON در Go میپردازد و نشان میدهد چطور میتوان این رویکرد را در یک جریان کاری «schema-first» بهصورت عملی پیاده کرد. محور بحث، نگاشت دقیق قابلیتهای JSON Schema به انواع ایستا در Go است؛ از چالشهایی مانند فیلدهای اختیاری، additionalProperties، enumها، nullability و ترکیبگرهایی مثل oneOf/anyOf/allOf تا تصمیمهای طراحی میان رویکردهای مبتنی بر reflection در زمان اجرا و code generation در زمان ساخت. مقاله سپس به کار انجامشده در Google، بهویژه در مخزن google/jsonschema-go، اشاره میکند که هدفش ارائه نگاشت پایدار schema↔type، اعتبارسنجی سریع و گزارش خطای قابل اتکا است. در ادامه، مخزن ianlancetaylor/jsonschema نیز معرفی میشود و نقاط همگرایی و تفاوتهای رویکردی آن بیان میگردد. در پایان، مسیرهای آینده مانند همگرایی بهتر با OpenAPI، تقویت codegen برای ویژگیهای پیشرفته، راهبردهای تکامل schema و یکپارچگی عمیقتر با ابزارها مطرح میشود تا توسعه مبتنی بر Schema در Go هم قابل اتکا و هم خوشتجربه باشد.
#Go #JSONSchema #Google #golang #APIs #Validation #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176345/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
on using JSON schemas in Go
🟢 خلاصه مقاله:
** این مقاله به مزایای استفاده از JSON Schema برای تعریف، اعتبارسنجی و مستندسازی دادههای JSON در Go میپردازد و نشان میدهد چطور میتوان این رویکرد را در یک جریان کاری «schema-first» بهصورت عملی پیاده کرد. محور بحث، نگاشت دقیق قابلیتهای JSON Schema به انواع ایستا در Go است؛ از چالشهایی مانند فیلدهای اختیاری، additionalProperties، enumها، nullability و ترکیبگرهایی مثل oneOf/anyOf/allOf تا تصمیمهای طراحی میان رویکردهای مبتنی بر reflection در زمان اجرا و code generation در زمان ساخت. مقاله سپس به کار انجامشده در Google، بهویژه در مخزن google/jsonschema-go، اشاره میکند که هدفش ارائه نگاشت پایدار schema↔type، اعتبارسنجی سریع و گزارش خطای قابل اتکا است. در ادامه، مخزن ianlancetaylor/jsonschema نیز معرفی میشود و نقاط همگرایی و تفاوتهای رویکردی آن بیان میگردد. در پایان، مسیرهای آینده مانند همگرایی بهتر با OpenAPI، تقویت codegen برای ویژگیهای پیشرفته، راهبردهای تکامل schema و یکپارچگی عمیقتر با ابزارها مطرح میشود تا توسعه مبتنی بر Schema در Go هم قابل اتکا و هم خوشتجربه باشد.
#Go #JSONSchema #Google #golang #APIs #Validation #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176345/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy