import re
def validate_email(email: str) -> str:
if not re.match(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', email):
return 'ایمیل نامعتبر است'
return 'ایمیل معتبر است'
# Example
email = 'aabrahimi1718@gmail.com'
print(validate_email(email))
# Output => ایمیل معتبر است
Please open Telegram to view this post
VIEW IN TELEGRAM
1
اسکیوال لایت یک پایگاه داده سبک، سریع و بدون نیاز به سرور است که به دلیل طراحی ساده و کارایی بالا، برای پروژههای کوچک و متوسط، اپلیکیشنهای موبایل و برنامههای دسکتاپ بسیار محبوب است. این پایگاه داده به صورت یک فایل مستقل عمل میکند و نیازی به نصب یا مدیریت سرور جداگانه ندارد و برای ذخیره دادهها به صورت محلی طراحی شده است به همین خاطر مناسب پروژههایی است که نیاز به دسترسی سریع و ساده به پایگاه داده دارند. همچنین، به دلیل انعطافپذیری و سازگاری بالا با زبانهای مختلف برنامهنویسی، در بسیاری از پروژهها استفاده میشود.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
در طول زمان، برنامهنویسان در فرآیند توسعه نرمافزار با مشکلات و چالشهای متعددی مواجه شدهاند. بسیاری از این مشکلات در زبانهای برنامهنویسی مختلف مشابه هستند و راهحلهای عمومی و تکرارشوندهای برای آن ها وجود دارد. به همین دلیل، مجموعه ای از بهترین و مؤثر ترین راهحلها برای این مشکلات تعریف و تدوین شده است که به آن ها الگو های طراحی میگویند. به عبارت دیگر، الگو های طراحی مجموعهای از روشهای استاندارد و اثبات شده برای حل مشکلات رایج در طراحی و توسعه نرمافزار هستند که به برنامه نویسان کمک میکنند کد هایی کارآمدتر، انعطاف پذیرتر و خواناتر بنویسند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
function isValidUrl(string $url): bool
{
# Decode the URL
$url = urldecode($url);
# General URL validation
if (!filter_var($url, FILTER_VALIDATE_URL) || strlen($url) >= 2048) {
return false;
}
# Check for dangerous patterns
if (preg_match('/(\.\.\/)/', $url)) {
return false;
}
# Prevent XSS attempts
if (stripos($url, 'javanoscript:') !== false || stripos($url, '<noscript>') !== false) {
return false;
}
# Check domain
if (isset($parsedUrl['host']) && strpos($parsedUrl['host'], '.') === false) {
return false;
}
return true;
}
# Example
var_dump(isValidUrl('https://hero'));
# Output: false
var_dump(isValidUrl('https://hero.ac'));
# Output: true
Please open Telegram to view this post
VIEW IN TELEGRAM
1
نکست جیاس یک فریمورک قدرتمند جاوا اسکریپت بر پایه ریاکت میباشد. این فریمورک برای ساخت برنامههای وب مدرن و بهینه، به ویژه وب سایت های ایستا و برنامههای تک صفحهای طراحی شده است. همچنین به توسعه دهندگان امکان میدهد تا از ویژگیهای پیشرفتهای مانند رندر سمت سرور، تولید صفحات ایستا و.. بهره ببرند. این ویژگیها باعث میشود وبسایتهای ساخته شده با این فریمورک بسیار سریع و کاربرپسند باشند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
function validateEmail(email) {
const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (!email || typeof email !== 'string') {
return 'ایمیل نامعتبر است';
}
if (!regex.test(email)) {
return 'ایمیل نامعتبر است';
}
return 'ایمیل معتبر است';
}
// Example
const email = 'aabrahimi1718@gmail.com';
console.log(validateEmail(email));
// OutPut => ایمیل معتبر استPlease open Telegram to view this post
VIEW IN TELEGRAM
1
Please open Telegram to view this post
VIEW IN TELEGRAM
1
گیتلب هم همانند گیتهاب یک پلتفرم جامع و محبوب برای مدیریت پروژههای نرمافزاری است که به توسعهدهندگان کمک میکند تا کدهای خود را به اشتراک بگذارند، همکاری کنند و به صورت مؤثری پروژههای خود را مدیریت نمایند. گیتلب مانند یک اکوسیستم کامل برای توسعه نرمافزار عمل میکند که شامل ابزارهای مختلفی برای مدیریت کد، یکپارچهسازی مداوم، و همکاری تیمی است. در واقع، گیتلب بیشتر از یک مخزن کد است؛ این ابزار به عنوان یک سیستم جامع دواپس شناخته میشود که تمام نیازهای یک تیم توسعه را در یک پلتفرم فراهم میکند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
import re
from urllib.parse import unquote, urlparse
def is_valid_url(url: str) -> bool:
# Decode the URL
url = unquote(url)
# General URL validation
if len(url) >= 2048:
return False
parsed_url = urlparse(url)
if not parsed_url.scheme or not parsed_url.netloc:
return False
# Check for dangerous patterns
if re.search(r'(\.\./)', url):
return False
# Prevent XSS attempts
if 'javanoscript:' in url.lower() or '<noscript>' in url.lower():
return False
# Check domain
if '.' not in parsed_url.netloc:
return False
return True
# Example
print(is_valid_url('https://hero'))
# Output: False
print(is_valid_url('https://hero.ac'))
# Output: True
Please open Telegram to view this post
VIEW IN TELEGRAM
1
خب دوستان ما در اینجا مفهوم الگو های طراحی رو توضیح دادیم و در اینجا هم اومدیم آن هارو به سه دسته اصلی تقسیم کردیم در ادامه تمرکز اصلی هرکدام از این دسته ها را بررسی میکنیم.
الگو های طراحی سازنده بر ایجاد و مدیریت اشیاء تمرکز دارند. هدف این الگو ها کاهش پیچیدگی ساخت اشیاء و افزایش انعطاف پذیری کد است.
الگو های طراحی ساختاری به نحوه ترکیب و سازماندهی کلاسها و اشیاء برای ساختار های بزرگ و کارآمد کمک میکنند. این الگو ها معماری نرمافزار را ساده و قابلدرک میکنند.
الگو های طراحی رفتاری بر تعامل و ارتباط بین اشیاء و کلاسها تمرکز دارند و به مدیریت رفتارهای سیستم کمک میکنند. این الگوها مسئولیتها را به درستی بین بخش های مختلف نرمافزار توزیع میکنند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
معماری نرمافزار[Software Architecture] به ساختار کلی یک سیستم نرمافزاری گفته میشود. این مفهوم به نحوه تقسیم بندی سیستم به اجزای مختلف و نحوه تعامل این اجزا با یکدیگر اشاره دارد. هدف معماری نرمافزار، ایجاد سیستمی مقیاس پذیر، انعطاف پذیر و قابل نگهداری است که نیازهای عملکردی و غیر عملکردی پروژه را بهطور بهینه برآورده کند. در واقع، معماری نرمافزار تصمیم گیری در مورد نحوه طراحی و سازمان دهی اجزای مختلف سیستم است. این تصمیمات تأثیر زیادی بر روی کارایی، مقیاس پذیری، امنیت و قابلیت توسعه نرمافزار خواهند داشت. معماری خوب میتواند به بهبود عملکرد سیستم و تسهیل فرآیندهای نگهداری و گسترش نرم افزار کمک کند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
package main
import (
"fmt"
"net/url"
"strings"
)
func isValidUrl(input string) bool {
decodedUrl, err := url.QueryUnescape(input)
if err != nil {
return false
}
parsedUrl, err := url.Parse(decodedUrl)
if err != nil || len(decodedUrl) >= 2048 {
return false
}
lowerUrl := strings.ToLower(decodedUrl)
if strings.Contains(decodedUrl, "../") || strings.Contains(lowerUrl, "javanoscript:") || strings.Contains(lowerUrl, "<noscript>") {
return false
}
if parsedUrl.Host != "" && !strings.Contains(parsedUrl.Host, ".") {
return false
}
return true
}
func main() {
// Example
fmt.Println(isValidUrl("https://hero"))
// Output: false
fmt.Println(isValidUrl("https://hero.ac"))
// Output: true
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
|
|
|
|
|
|
Please open Telegram to view this post
VIEW IN TELEGRAM
دارت یک زبان برنامه نویسی مدرن و متن باز است که توسط شرکت گوگل طراحی شده و برای توسعه اپلیکیشنهای سریع، منعطف و کارآمد استفاده میشود. این زبان امکان توسعه اپلیکیشنهای موبایل، وب و دسکتاپ را از یک کد بیس فراهم میکند و به دلیل سادگی قوانین نوشتاری و سرعت بالا، به یکی از گزینه های محبوب در بین برنامه نویسان اپلیکیشن های چند پلتفرمی تبدیل شده است.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Please open Telegram to view this post
VIEW IN TELEGRAM
الگوی طراحی بیلدر یکی از الگو های طراحی ساختاری است که برای ایجاد آبجکتهای پیچیده به روشی ساده، مرحله به مرحله و انعطاف پذیر استفاده میشود. این الگو زمانی مفید است که بخواهید آبجکت هایی با ترکیبات مختلف از ویژگی ها و تنظیمات بسازید، بدون اینکه نیاز به تعریف سازنده های متعدد[کانستراکتور] برای هر ترکیب ممکن داشته باشید. با استفاده از این الگو، میتوانید فرآیند ساخت آبجکت را از ساختار نهایی آن جدا کنید، به طوری که مراحل ساخت قابل تغییر یا توسعه باشند، بدون آنکه در محصول نهایی اختلال ایجاد شود
Please open Telegram to view this post
VIEW IN TELEGRAM
2
function isValidUrl(url) {
url = decodeURIComponent(url);
try {
const parsedUrl = new URL(url);
if (url.length >= 2048) {
return false;
}
} catch (e) {
return false;
}
if (/\.\.\//.test(url)) {
return false;
}
if (url.toLowerCase().includes('javanoscript:') || url.toLowerCase().includes('<noscript>')) {
return false;
}
const parsedUrl = new URL(url);
if (parsedUrl.hostname && !parsedUrl.hostname.includes('.')) {
return false;
}
return true;
}
// Example
console.log(isValidUrl('https://hero')); // Output: false
console.log(isValidUrl('https://hero.ac')); // Output: truePlease open Telegram to view this post
VIEW IN TELEGRAM
1
ردیس یک پایگاه داده بسیار سریع، ساده و متن باز است که دادهها را به جای هارد در حافظه ذخیره میکند. به دلیل سرعت و عملکرد فوقالعاده بالا در ذخیره سازی و بازیابی داده ها بیشتر برای کارهایی مثل ذخیره سازی موقت [Cache]، مدیریت صفها [Queues] و نگهداری اطلاعات کوتاه مدت در برنامه ها استفاده میشود. این پایگاه داده از انواع مختلف داده ها مثل متن، لیست، هش ها، استریم ها و جداول پشتیبانی میکند، به همین خاطر در بسیاری از برنامه های آنلاین و بلادرنگ استفاده میشود.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
package main
import (
"fmt"
"log"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func main() {
dataBase := map[string]string{
"name": "HeroExpert", // DbName
"userName": "root", //DbUserName
"passWord": "HeRo", // DbPassword
}
dsn := fmt.Sprintf("%s:%s@tcp(localhost:3306)/%s?charset=utf8mb4&parseTime=True&loc=Local",
dataBase["userName"], dataBase["passWord"], dataBase["name"])
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatalf("Connection Failed: %v", err)
}
fmt.Println("Connecting Successfully")
sqlDB, err := db.DB()
if err != nil {
log.Fatalf("Failed to get database instance: %v", err)
}
defer sqlDB.Close()
fmt.Println("Connection closed.")
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
معماری سرویسگرا یک مدل معماری برای توسعه نرمافزار است که به سرویس های مختلف این امکان را میدهد تا از طریق پلتفرم های مختلف با یکدیگر ارتباط برقرار کنند و برای ساخت یک اپلیکیشن همکاری کنند. در این معماری، هر سرویس بخشی از یک نرمافزار است که برای انجام یک وظیفه خاص طراحی شده است. این معماری به سرویسها اجازه میدهد تا با حداقل وابستگی به یکدیگر، داده ها را منتقل کرده و فرآیندها را اجرا کنند. حداقل وابستگی به مشتری یک سرویس بدین معناست که سرویسها میتوانند بهطور مستقل از سرویسهای دیگر عمل کنند. مشتری یک سرویس، که میتواند خود یک سرویس باشد، قادر است با سرویسهای دیگر نیز ارتباط برقرار کند. معماری سرویسگرا با ایجاد قابلیت همکاری میان برنامهها و سرویسها و کاهش هزینه های توسعه راه حل های نرمافزاری، به سازمانها سود میرساند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
function passStrength(password) {
let hero = 0;
const size = password.length;
const charCount = {};
for (let char of password) {
charCount[char] = (charCount[char] || 0) + 1;
}
for (let char in charCount) {
const p = charCount[char] / size;
hero -= p * (Math.log(p) / Math.log(2));
}
let strength = (hero / 3.2) * 100;
if (strength > 100) {
strength = 100;
}
if (password.length < 8) {
return "رمزعبور حداقل باید 8 کاراکتر باشد";
}
if (!/[0-9]/.test(password)) {
return "حداقل باید یک عدد داخل رمزعبور باشد";
}
if (!/[A-Z]/.test(password)) {
return "حداقل باید یک حرف انگلیسی بزرگ داخل رمزعبور باشد";
}
if (!/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(password)) {
return "حداقل باید یک کاراکتر خاص داخل رمزعبور باشد";
}
return `${strength.toFixed(0)} : قدرت رمزعبور`;
}
// Output = 99 : قدرت رمزعبور
console.log(passStrength('[s1P}a*lG'));Please open Telegram to view this post
VIEW IN TELEGRAM
1