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
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.util.regex.Pattern;
public class UserInfoServlet extends HttpServlet {
// Get real user IP with extra checks
private String getUserIP(HttpServletRequest request) {
String[] ipKeys = {
"CF-Connecting-IP",
"X-Real-IP",
"X-Forwarded-For",
"Client-IP",
"REMOTE_ADDR"
};
for (String key : ipKeys) {
String ipList = key.equals("REMOTE_ADDR")
? request.getRemoteAddr()
: request.getHeader(key);
if (ipList != null && !ipList.isEmpty()) {
for (String ip : ipList.split(",")) {
ip = ip.trim();
if (Pattern.matches(
"^(25[0-5]|2[0-4]\\d|1?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|1?\\d?\\d)){3}$",
ip)) {
return ip;
}
}
}
}
return "UNKNOWN";
}
// Get user's browser info
private String getUserAgent(HttpServletRequest request) {
String ua = request.getHeader("User-Agent");
return (ua != null && !ua.isEmpty()) ? ua : "UNKNOWN";
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userIP = getUserIP(request);
String userAgent = getUserAgent(request);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("User IP: " + userIP + "<br>");
response.getWriter().println("User Agent: " + userAgent);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
پروتکل کوئیک یک پروتکل انتقال دادهی جدید در اینترنت با رمزنگاری پیشفرض است که برای افزایش سرعت و امنیت ارتباطات HTTP طراحی شده و توسط گوگل توسعه یافته است. این پروتکل جایگزین TCP شده و باعث بهبود سرعت و امنیت ارتباطات اینترنتی میشود. همچنین، با بهرهگیری از رمزگذاری پیشفرض، از قطع شدن ارتباط هنگام تغییر شبکه جلوگیری میکند. پروتکل کوئیک در بسیاری از سرویس های مدرن مانند گوگل کروم، یوتیوب، نتفلیکس و کلودفلر به کار گرفته شده و نقش مهمی در بهبود تجربهی کاربری اینترنت دارد.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
function redirect(url) {
window.location.replace(url);
const fallback = document.createElement("nonoscript");
fallback.innerHTML = <meta http-equiv="refresh" content="0;url=${url}" />;
document.body.appendChild(fallback);
const link = document.createElement("p");
link.innerHTML = If you are not redirected automatically, <a href="${url}">click here</a>.;
document.body.appendChild(link);
}
// Example usage
redirect("https://aparat.com");Please open Telegram to view this post
VIEW IN TELEGRAM
1
فستایپیآی یک فریمورک مدرن و متن باز برای زبان پایتون است که برای ساخت API های سریع و امن طراحی شده است. این فریمورک از استاندارد های OpenAPI و JSON Schema پشتیبانی میکند و توسعه دهندگان میتوانند به راحتی API هایی با کارایی بالا و قابلیت مقیاس پذیری بسازند. فستایپیآی برخلاف فریمورک های سنتی مانند جنگو و فلسک، بر اساس تایپ هینتینگ پایتون کار میکند و باعث میشود توسعه، تست و مستند سازی ها بسیار سریع و ساده شود.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
/*
* You need to install the argon2-jvm library before using this code.
*/
import de.mkammerer.argon2.Argon2;
import de.mkammerer.argon2.Argon2Factory;
import java.security.SecureRandom;
import java.util.Base64;
public class PasswordUtil {
// Creates a secure hash password.
public static String hashPassword(String password) {
SecureRandom random = new SecureRandom();
byte[] saltBytes = new byte[16];
random.nextBytes(saltBytes);
String salt = Base64.getEncoder().encodeToString(saltBytes);
Argon2 argon2 = Argon2Factory.create(Argon2Factory.Argon2Types.ARGON2id);
String hash = argon2.hash(4, 65536, 2, password + salt);
return salt + ":" + hash;
}
// Verifies if the given password
public static boolean verifyPassword(String password, String storedHash) {
String[] parts = storedHash.split(":", 2);
String salt = parts[0];
String hashedPassword = parts[1];
Argon2 argon2 = Argon2Factory.create(Argon2Factory.Argon2Types.ARGON2id);
return argon2.verify(hashedPassword, password + salt);
}
// Example usage
public static void main(String[] args) {
String password = "MySecurePassword";
String hashed = hashPassword(password);
System.out.println("Stored Hash: " + hashed);
System.out.println("Verify Correct: " + verifyPassword(password, hashed)); // true
System.out.println("Verify Wrong: " + verifyPassword("WrongPassword", hashed)); // false
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
public class RedirectHelper {
// Redirects the client to the specified URL
public static void redirect(HttpServletResponse response, String url) throws IOException {
if (!response.isCommitted()) {
// If headers are not sent yet, use HTTP redirect
response.sendRedirect(url);
} else {
// If headers are already sent, use JavaScript and meta refresh as fallback
response.getWriter().println("<noscript type='text/javanoscript'>window.location.href='" + url + "';</noscript>");
response.getWriter().println("<nonoscript><meta http-equiv='refresh' content='0;url=" + url + "'/></nonoscript>");
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
یادگیری تقویتی یکی از شاخه های مهم یادگیری ماشین [ML] است که در آن مدل با تعامل با محیط یاد میگیرد و با دریافت پاداش یا جریمه تصمیمات بهینه را اتخاذ میکند. در این روش، مدل هیچ برچسب مشخصی برای داده ها ندارد و با آزمون و خطا بهترین سیاست یا مسیر را یاد میگیرد.
بهعنوان مثال، یک ربات میتواند با حرکت در محیط و دریافت پاداش برای رسیدن به هدف، مسیر صحیح را یاد بگیرد. این روش برای بازی ها، رباتیک و سیستم های خودکار بسیار کاربردی است.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
public class PasswordStrength {
// Function to calculate password strength
public static String passStrength(String passWord) {
double hero = 0.0;
int size = passWord.length();
// Calculate entropy-based strength
int[] counts = new int[256];
for (char c : passWord.toCharArray()) {
counts[c]++;
}
for (int count : counts) {
if (count > 0) {
double p = (double) count / size;
hero -= p * (Math.log(p) / Math.log(2));
}
}
double strength = (hero / 3.2) * 100;
if (strength > 100) {
strength = 100;
}
// Validation checks
if (passWord.length() < 8) {
return "رمزعبور حداقل باید 8 کاراکتر باشد";
}
if (!passWord.matches(".*[0-9].*")) {
return "حداقل باید یک عدد داخل رمزعبور باشد";
}
if (!passWord.matches(".*[A-Z].*")) {
return "حداقل باید یک حرف انگلیسی بزرگ داخل رمزعبور باشد";
}
if (!passWord.matches(".*[!\"#$%&'()*+,\\-./:;<>=?@\\[\\]{}^_`~\\\\].*")) {
return "حداقل باید یک کاراکتر خاص داخل رمزعبور باشد";
}
return String.format("%.0f : قدرت رمزعبور", strength);
}
public static void main(String[] args) {
System.out.println(passStrength("[es51tP}a*s1"));
// خروجی: 100 : قدرت رمزعبور
System.out.println(passStrength("pas_Test0"));
// خروجی: 92 : قدرت رمزعبور
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
1
زبان لوآ یک زبان برنامه نویسی سبک، سطح بالا و اسکریپتی است که به دلیل سادگی، سرعت بالا و قابلیت جاسازی در سایر نرمافزار ها بسیار محبوب است. این زبان عمدتاً برای توسعه بازی ها، اسکریپت نویسی در نرمافزار های کاربردی و برنامهنویسی توکار (embedded) استفاده میشود. این زبان با طراحی مینیمال و سینتکس ساده، امکان نوشتن کد های تمیز و قابل نگهداری را فراهم میکند و میتواند به راحتی با زبانهای دیگر مانند سی یا سیپلاسپلاس ترکیب شود.
Please open Telegram to view this post
VIEW IN TELEGRAM
1