/**
* Before running this code, add the following dependency to your pom.xml:
*
* <dependency>
* <groupId>com.sun.mail</groupId>
* <artifactId>jakarta.mail</artifactId>
* <version>2.0.1</version>
* </dependency>
*/
import jakarta.mail.*;
import jakarta.mail.internet.*;
import java.util.Properties;
public class EmailSender {
public static void main(String[] args) {
// Sender's email credentials
final String username = "Hero@info.com";
final String password = "S#h-o6y9e";
// SMTP configuration
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.hero.com");
props.put("mail.smtp.port", "587");
// Create a mail session with authentication
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// Create a MimeMessage object
Message message = new MimeMessage(session);
// Set sender email and name
message.setFrom(new InternetAddress("Hero@info.com", "HeroExpert"));
// Set recipient email
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("user@gmail.com"));
// Set subject
message.setSubject("Welcome to Hero");
// Set email body content
message.setText("Thank you for join");
// Send the email
Transport.send(message);
System.out.println("Email sent successfully.");
} catch (Exception e) {
// Show error if sending fails
System.out.println("Email failed: " + e.getMessage());
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
پایگاه داده اسکیوال نوعی پایگاه داده رابطه ای است که اطلاعات را در قالب جدول هایی شامل سطر ها (رکورد ها) و ستون ها (ویژگی ها) ذخیره میکند. هر جدول نمایانگر داده های مربوط به یک موضوع خاص است و جداول مختلف میتوانند از طریق کلید های مشخص با یکدیگر ارتباط برقرار کنند. مدیریت این پایگاه داده ها با زبان اسکیوال انجام میشود، زبانی ساخت یافته، قدرتمند و استاندارد که برای ایجاد جدول ها، درج و ویرایش داده ها، انجام جستوجو های دقیق، فیلتر اطلاعات و تعریف روابط بین جداول به کار میرود.از جمله پایگاه داده های معروف اسکیوال میتوان به مایاسکیوال، اسکیوال لایت، پستگرس و اوراکل اشاره کرد.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
public class EmailValidator {
// Validate email address format
public static String validateEmail(String email) {
if (email == null || email.isEmpty()) {
return "ایمیل نامعتبر است";
}
// Use Java built-in email validation with regex
String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
if (!email.matches(regex)) {
return "ایمیل نامعتبر است";
}
return "ایمیل معتبر است";
}
// Example usage
public static void main(String[] args) {
String email = "aabrahimi1718@gmail.com";
System.out.println(validateEmail(email));
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
1
بلازر یک فریمورک مدرن و متن باز از مایکرو سافت برای زبان سیشارپ است که به توسعه دهندگان امکان میدهد با استفاده از زبان سیشارپ برنامه های وب تعاملی و تکصفحهای بسازند. بلازر برخلاف فریمورک های جاوااسکریپتی مانند ریاکت و آنگولار، از WebAssembly بهره میبرد تا کد ها را مستقیماً در مرورگر اجرا کند یا به صورت سرور بیس فعالیت کند. این فریمورک با اکوسیستم داتنت کاملاً یکپارچه است و برای توسعه برنامه های وب مدرن، سریع و واکنشگرا بسیار مناسب است.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
import java.security.SecureRandom;
public class PasswordGenerator {
// Generates a secure random password with given length
public static String generatePassword(int length) {
final String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+";
SecureRandom random = new SecureRandom();
StringBuilder password = new StringBuilder(length);
for (int i = 0; i < length; i++) {
password.append(chars.charAt(random.nextInt(chars.length())));
}
return password.toString();
}
public static void main(String[] args) {
System.out.println(generatePassword(10));
// Example output: aZ9!kQ2@Xp
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.util.regex.Pattern;
public final class UrlUtils {
// Basic URL format validation
private static final Pattern VALID_URL = Pattern.compile(
"^(?i)([a-z][a-z0-9+\\-.]*):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-./?%&=]*)?$");
private UrlUtils() {
// Prevent instantiation
}
public static boolean isValidUrl(String url) {
if (url == null) return false;
// Decode URL
url = URLDecoder.decode(url, StandardCharsets.UTF_8);
// Validate format and length
if (!VALID_URL.matcher(url).matches() || url.length() >= 2048) {
return false;
}
// Block "../"
if (url.contains("../")) return false;
// Block XSS
String lower = url.toLowerCase();
if (lower.contains("javanoscript:") || lower.contains("<noscript>")) {
return false;
}
// Check host has dot
try {
URI parsed = new URI(url);
String host = parsed.getHost();
if (host == null || !host.contains(".")) {
return false;
}
} catch (URISyntaxException e) {
return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isValidUrl("https://hero")); // false
System.out.println(isValidUrl("https://hero.ac")); // true
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
لاراول با زبان پیاچپی و جنگو با زبان پایتون توسعه داده شده است. هر دو زبان برای توسعه ی وب استفاده میشوند، اما پایتون کاربرد های گسترده تری مثل هوش مصنوعی، داده کاوی، علم داده و اتوماسیون دارد، در حالی که پیاچپی بیشتر متمرکز بر توسعه ی وب است.
لاراول آزادی عمل بیشتری به توسعه دهنده میدهد و برای پروژه هایی که نیاز به انعطاف و خلاقیت دارند بسیار مناسب است. از طرف دیگر، جنگو ساختاری منظم و قانون مند دارد و با ارائه امکانات پیش فرض متعدد، توسعه سریع و مقیاس پذیری بالایی را در پروژه های بزرگ ممکن میکند.
در بازار جهانی، جنگو به دلیل همه کاره بودن پایتون و کاربرد های متنوعش از محبوبیت بیشتری برخوردار است. اما در ایران، لاراول به خاطر ریشه و گستردگی پیاچپی، فرصت های شغلی بیشتری دارد و بسیاری از شرکت ها و استارتاپ ها از آن استفاده میکنند.
لاراول با ابزار هایی مانند آرتیسان و سیستم قالب بندی بلید به توسعه دهنده کمک میکند سریعتر پروژهها را بسازد. جنگو نیز با داشتن ساختار یکپارچه و کتابخانه های آماده، زمان توسعه را کاهش می دهد، بهویژه در پروژه های سازمانی.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
پروتکل ICMP یکی از بخش های اصلی خانواده پروتکل های اینترنتی است که برای گزارش خطا و مدیریت پیام های کنترلی در شبکه استفاده میشود. این پروتکل خودش دادهای جا به جا نمی کند، بلکه در کنار پروتکل هایی مثل IP و TCP کار میکند تا در صورت بروز مشکل، پیام های مربوط به خطا یا وضعیت مسیر ارسال شوند. معروف ترین استفاده از این پروتکل در دستور پینگ است، که برای بررسی وضعیت ارتباط دو دستگاه در شبکه بهکار می رود.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Media is too big
VIEW IN TELEGRAM
🛠 تکنولوژی های استفاده شده :
شامل [
Please open Telegram to view this post
VIEW IN TELEGRAM
1
import javax.servlet.http.Part;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.*;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.net.URLConnection;
public class UploadUtil {
// Secure file upload
public static String secureUpload(
Part file,
List<String> allowedMimeTypes,
List<String> allowedExtensions,
long maxSize,
String uploadDir
) {
try {
// Check for upload errors
if (file == null || file.getSize() == 0) {
return null;
}
// Check file size
if (file.getSize() > maxSize) {
return null;
}
// Check MIME type using URLConnection
String mimeType;
try (InputStream is = file.getInputStream()) {
byte[] buffer = new byte[1024];
int bytesRead = is.read(buffer);
mimeType = URLConnection.guessContentTypeFromStream(
new java.io.ByteArrayInputStream(buffer, 0, bytesRead)
);
}
if (mimeType == null || !allowedMimeTypes.contains(mimeType)) {
return null;
}
// Check file extension
String originalName = Paths.get(file.getSubmittedFileName()).getFileName().toString();
int dotIndex = originalName.lastIndexOf('.');
if (dotIndex == -1) return null;
String ext = originalName.substring(dotIndex + 1).toLowerCase();
if (!allowedExtensions.contains(ext)) {
return null;
}
// Prevent double extensions like .php or .phtml
if (originalName.matches(".*\\.(php[0-9]?|phtml)$")) {
return null;
}
// Generate unique filename
String safeName = UUID.randomUUID().toString().replace("-", "").substring(0, 16) + "." + ext;
// Ensure upload directory exists
Path uploadPath = Paths.get(uploadDir);
if (!Files.exists(uploadPath)) {
Files.createDirectories(uploadPath);
}
// Move uploaded file
Path destination = uploadPath.resolve(safeName);
try (InputStream input = file.getInputStream()) {
Files.copy(input, destination, StandardCopyOption.REPLACE_EXISTING);
}
// Return saved filename
return safeName;
} catch (IOException e) {
return null;
}
}
// Overloaded method with defaults
public static String secureUpload(Part file) {
return secureUpload(
file,
Arrays.asList("image/jpeg", "image/png"),
Arrays.asList("jpg", "jpeg", "png"),
2 * 1024 * 1024,
System.getProperty("user.dir") + "/uploads"
);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
|
|
|
|
|
|
Please open Telegram to view this post
VIEW IN TELEGRAM
یادگیری نظارت نشده یکی از مهم ترین شاخه های یادگیری ماشین [ML] است که برخلاف یادگیری نظارت شده [SL]، از داده های بدون برچسب برای آموزش استفاده میکند. در این روش، مدل تلاش میکند الگو ها، ساختار ها یا روابط پنهان را از دل داده های خام کشف کند، بدون آنکه بداند خروجی صحیح چیست! به عنوان مثال، اگر به مدل مجموعه ای از تصاویر حیوانات بدهیم، سعی میکند آن ها را بر اساس شباهت ها خوشه بندی کند، بدون اینکه بداند کدام تصویر گربه است و کدام سگ، این نوع یادگیری در تحلیل داده های بزرگ، کشف گروه های پنهان، فشرده سازی داده و شناسایی ناهنجاری ها کاربرد فراوان دارد.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
import java.util.regex.*;
public class MobileValidator {
public static String isValidMobile(String mobile) {
// Remove all non-numeric characters except '+'
mobile = mobile.replaceAll("[^0-9+]", "");
// Match Iranian mobile number format: either starting with 09 or +989
Pattern pattern = Pattern.compile("^(09\\d{9}|\\+989\\d{9})$");
Matcher matcher = pattern.matcher(mobile);
if (matcher.matches()) {
return "شماره موبایل معتبر است"; // Mobile number is valid
} else {
return "شماره موبایل نامعتبر است"; // Mobile number is invalid
}
}
public static void main(String[] args) {
System.out.println(isValidMobile("+989123456789")); // Valid
System.out.println(isValidMobile("09123456789")); // Valid
System.out.println(isValidMobile("01123456789")); // Invalid
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
3
پروتکل IMAP یا Internet Message Access Protocol یک پروتکل استاندارد برای دسترسی به ایمیل ها روی سرور است. برخلاف پروتکل POP3 که ایمیل ها را دانلود و معمولاً از سرور حذف میکند، این پروتکل به شما اجازه میدهد پیام ها را مستقیماً روی سرور مشاهده، مدیریت و همگام سازی کنید. این یعنی اگر با چند دستگاه ایمیلتان را چک کنید، همه جا یکسان دیده میشود.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
# Get real user IP with extra checks
function getUserIP() {
$ipKeys = [
# Cloudflare
'HTTP_CF_CONNECTING_IP',
# Nginx proxy / some CDN
'HTTP_X_REAL_IP',
# Proxy chain
'HTTP_X_FORWARDED_FOR',
'HTTP_CLIENT_IP',
'REMOTE_ADDR'
];
foreach ($ipKeys as $key) {
if (!empty($_SERVER[$key])) {
$ipList = explode(',', $_SERVER[$key]);
foreach ($ipList as $ip) {
$ip = trim($ip);
if (filter_var($ip, FILTER_VALIDATE_IP)) {
return $ip;
}
}
}
}
return 'UNKNOWN';
}
# Get user's browser info
function getUserAgent() {
return $_SERVER['HTTP_USER_AGENT'] ?? 'UNKNOWN';
}
# Example usage
$userIP = getUserIP();
$userAgent = getUserAgent();
echo "User IP: " . $userIP . "<br>";
echo "User Agent: " . $userAgent;
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Please open Telegram to view this post
VIEW IN TELEGRAM
1
import os
import re
# Get real user IP with extra checks
def get_user_ip():
ip_keys = [
# Cloudflare
"HTTP_CF_CONNECTING_IP",
# Nginx proxy / some CDN
"HTTP_X_REAL_IP",
# Proxy chain
"HTTP_X_FORWARDED_FOR",
"HTTP_CLIENT_IP",
"REMOTE_ADDR"
]
for key in ip_keys:
value = os.environ.get(key)
if value:
ip_list = [ip.strip() for ip in value.split(",")]
for ip in ip_list:
if is_valid_ip(ip):
return ip
return "UNKNOWN"
# Validate IP format (both IPv4 and IPv6)
def is_valid_ip(ip):
ip_regex = re.compile(
r"^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?:\.(?!$)|$)){4}$"
r"|"
r"^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::1)$"
)
return bool(ip_regex.match(ip))
# Get user's browser info
def get_user_agent():
return os.environ.get("HTTP_USER_AGENT", "UNKNOWN")
# Example usage
if __name__ == "__main__":
user_ip = get_user_ip()
user_agent = get_user_agent()
print(f"User IP: {user_ip}")
print(f"User Agent: {user_agent}")
Please open Telegram to view this post
VIEW IN TELEGRAM
1
|
|
|
|
|
|
Please open Telegram to view this post
VIEW IN TELEGRAM
30
هروکو یک پلتفرم ابری (PaaS) است که به توسعه دهندگان این امکان را میدهد اپلیکیشن های خود را بدون نیاز به مدیریت زیرساخت سرور، به راحتی دیپلوی، اجرا و مقیاس پذیر کنند. این پلتفرم از زبان های برنامه نویسی مختلف مانند Node.js، PHP، Python، Ruby و Java پشتیبانی میکند و با ساده سازی فرآیند انتشار و مدیریت اپلیکیشن، زمان توسعه و نگهداری را به طور چشمگیری کاهش میدهد. هروکو برای استارتاپ ها و پروژه های کوچک تا متوسط انتخابی محبوب است، زیرا محیطی آماده برای تست، اجرا و مقیاس پذیری سریع فراهم میکند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
package main
import (
"fmt"
"net"
"os"
"strings"
)
// getUserIP
func getUserIP() string {
ipKeys := []string{
"HTTP_CF_CONNECTING_IP",
// Cloudflare
"HTTP_X_REAL_IP",
// Nginx proxy / some CDN
"HTTP_X_FORWARDED_FOR",
// Proxy chain
"HTTP_CLIENT_IP",
"REMOTE_ADDR",
}
for _, key := range ipKeys {
value := os.Getenv(key)
if value == "" {
continue
}
// Split by comma in case of multiple IPs (proxy chain)
for _, ip := range strings.Split(value, ",") {
ip = strings.TrimSpace(ip)
if parsedIP := net.ParseIP(ip); parsedIP != nil {
return ip
}
}
}
return "UNKNOWN"
}
// getUserAgent
func getUserAgent() string {
if ua := os.Getenv("HTTP_USER_AGENT"); ua != "" {
return ua
}
return "UNKNOWN"
}
func main() {
userIP := getUserIP()
userAgent := getUserAgent()
fmt.Printf("User IP: %s\n", userIP)
fmt.Printf("User Agent: %s\n", userAgent)
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
📁 پروژه کتابخانه هیروکیوآر [HeroQR]
➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖
هیروکیوآر یک کتابخانه به زبان پیاچپی است که به شما این امکان را میدهد تا کیوآرکد های سفارشی با انواع دادهها بسازید. همچنین این کتابخانه امکان سفارشی سازی رنگ ها، نشانگر ها، برچسب ها، اندازه ها و لوگو ها را فراهم میکند و خروجی در فرمت های مختلف را پشتیبانی میکند.
🔝 ویژگی های هیروکیوآر [HeroQR]
⏺ سفارشی سازی پیشرفته
⏺ سازگار با فریمورک لاراول
⏺ کاملاً ماژولار و انعطاف پذیر
⏺ تولید کیوآرکد با انواع دادهها
⏺ پشتیبانی از فرمتهای مختلف
⏺ قابلیت اعتبارسنجی خودکار داده
⏺ طراحی ساده و استفاده راحت و آسان
▪️ مشاهده در [GitHub] : HeroQR
🤩 مشاهده در [Packagist] : HeroQR
➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖
✉️ @HeroExpert_ir | کارشناس تکنولوژی
هیروکیوآر یک کتابخانه به زبان پیاچپی است که به شما این امکان را میدهد تا کیوآرکد های سفارشی با انواع دادهها بسازید. همچنین این کتابخانه امکان سفارشی سازی رنگ ها، نشانگر ها، برچسب ها، اندازه ها و لوگو ها را فراهم میکند و خروجی در فرمت های مختلف را پشتیبانی میکند.
Please open Telegram to view this post
VIEW IN TELEGRAM
1