یوشا

دست نوشته ها و تجربیات شخصی

یوشا

دست نوشته ها و تجربیات شخصی

شهید دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم آنکس که تخصص ندارد و کاری را می پذیرد بی تقواست!

طبقه بندی موضوعی

۳۵ مطلب با کلمه‌ی کلیدی «نکات و اصول مهم» ثبت شده است

۱۱
دی

1- مفهوم و تفاوت Concurrency(همزمانی) و Parallel(موازی):

- پردازش Parallel نوعی از Concurrent هستش. درواقع Parallel زیرمجموعه Concurrency هستش.

- نوع Concurrent میتونه با یک پردازنده اعمال بشه (single/multi thread). اما نوع Parallel باید در چند پردازنده اعمال بشه. یعنی یک پردازنده به ازای هر پروسس.

نکته: عمل Multithreading زیرمجموعه Concurrency محسوب می‌شه و می‌تونه با پردازنده‌های تکی هم انجام بشه.

 

2- با استفاده از کلمه کلیدی volatile در متغیرها می تونید thread های برنامه رو وادار کنید تا اطلاعات متغیر رو مستقیماً از حافظه بخونن و نه کش CPU. (این عمل درواقع نوعی thread-safety محسوب میشه)

 

3- یادتون باشه که synchronized و Thread-Safe در .Net یک مفهوم دارن: دسترسی همزمان به کد توسط چند Thread بدون بروز مشکلات. یعنی کد/متد synchronized اجازه دسترسی همزمان چند Thread به کد/متد رو نمیده، پس Thread ها باید نوبتی به کد/متد دسترسی پیدا کنن بنابراین آخرین وضعیت کد/متد در همه Thread ها مشترک هستش.

نکته: این مسئله فقط در مورد برنامه های Multi-Thread صدق میکنه و نه Single-Thread.

نکته 2: در .Net باید از تکنیک‌هایی مانند lock برای Thread-Safe کردن کد استفاده کرد.

  • یوشا آل ایوب
۱۵
اسفند
  • یوشا آل ایوب
۱۶
مهر

1. هنگام خرید گیاه: زیاد به توصیه های فروشنده اعتماد نکنید!

  • بسیاری از فروشندگان گل و گیاه صرفاً برای فروش محصولات خود اطلاعات نادرست میدهند، کار را راحت می کنند و دانش علمی کافی درباره گیاهان ندارند.

  • قبل از خرید، نام علمی گیاه را پیدا کنید و در منابع معتبر (مانند سایتهای گیاه شناسی، انجمنهای باغبانی یا مقالات) درباره نیازهای نوری، آبیاری و رطوبت آن تحقیق کنید.

  • قبل از خرید، برگها، ساقه و خاک را بررسی کنید. برگهای زرد، لکه های قهوه ای یا آفات ریز، خاک حشره زده نشانه بیماری گیاه است.

  • اگر در خانه فرزند معلول یا خردسال دارید از خرید گیاهان خاردار و نوک تیز(مانند کاکتوس) خوددارید کنید.

  • اگر گربه یا سگ خانگی دارید(زندانی کردید!)، از خرید گیاهان سمی مانند دیفن باخیا، فیلودندرون و آزالیا خودداری کنید! به جای آن از گیاهان بی خطر مانند بامبو، گل گندمی (کلروفیتوم) و پتوس استفاده کنید.

2. تعویض گلدان: عجله نکنید

  • تعویض گلدان بلافاصله پس از خرید، استرس و تنش مضاعفی به گیاه وارد میکند، زیرا گیاه ابتدا باید به محیط جدید عادت کند و بعد گلدانش عوض شود.

  • حداقل ۲ تا ۴ هفته پس از خرید، وقتی گیاه با محیط سازگار شد گلدان را عوض کنید.

اما نشانه های نیاز فوری به تعویض گلدان:

  • ریشه ها از زیر گلدان بیرون زده اند.

  • رشد گیاه، بدون مشکل ظاهری متوقف شده است.

  • خاک به سرعت خشک میشود (یعنی ریشه ها فضای گلدان را پر کرده اند).

3. انتخاب گیاهان مناسب برای افراد تازه کار

گیاهان مقاوم، کم توقع و دهه شصتی! بهترین انتخاب برای شروع هستند:

  • پوتوس سبز: نیاز به نور کم، تحمل خشکی، رشد سریع، تکثیر راحت با یک برگ + ساقه

  • انواع سانسوریا اما سبز: نیاز به آب کم، مقاوم در نور کم و زیاد.

  • انواع کاکتوس اما بالغ

  • اسپاتی فیلوم: گلدهی در نور غیرمستقیم، نیاز به رطوبت آشپزخانه!

نکته: گیاهان با برگهای سبز تیره معمولاً در نور کم هم رشد میکنند، زیرا کلروفیل بیشتری دارند و نور را بهتر جذب میکنند.

نکته 2: گیاهان ابلک/ابلغ (دارای رگه های سفید، طلایی یا صورتی) معمولاً به نور بیشتری نیاز دارند. اگر نور کافی نباشد، رنگ برگها محو و سبز میشوند.

4. آبیاری صحیح: عامل اصلی مرگ گیاهان خانگی

  • اشتباه رایج: آبیاری بیش از حد که باعث پوسیدگی ریشه میشود.

  • راه تشخیص نیاز به آبیاری:

    • انگشت خود را ۲-۳ سانتیمتر در خاک فرو ببرید. اگر خشک بود، آبیاری کنید.

    • برای گیاهان گوشتی مانند کاکتوس ها و ساکولنت ها، اجازه دهید خاک کاملاً خشک شود.

  • نکته: گلدانهای دارای زهکشی مناسب(سوراخ زیر گلدان + سنگ ریز کف گلدان) انتخاب کنید تا آب اضافه خارج شود و ته نشین نشود.

5. تأثیر رطوبت و دمای محیط

  • بیشتر گیاهان آپارتمانی به رطوبت ۴۰ تا ۶۰ درصد نیاز دارند. در هوای خشک، برگها قهوه ای یا خشک میشوند.

  • میانگین رطوبت برای هوای تهران بطور کلی حدود ۳۰ تا ۴۰ درصد میباشد و فقط در زمستان/پاییز تا حدود ۴۵ تا ۶۰ درصد افزایش میابد.

  • پس راههای افزایش رطوبت:

    • ساخت جزیره (قرار دادن گلدان روی سینی/ظرف پر از آب و سنگریزه).

    • غبارپاشی منظم (به جز برای گیاهان کرکدار و گوشتی).

    • استفاده از دستگاه تولید بخار سرد.

6. تغذیه و کوددهی اصولی

  • کوددهی در فصل رشد (بهار و تابستان): هر ۴-۶ هفته یکبار با کود مایع رقیق شده.

  • کوددهی در فصل خواب (پاییز و زمستان): معمولاً نیاز به کوددهی نیست، چون رشد گیاه کند میشود و کمتر مواد مغذی مصرف می کند.

  • علائم کمبود مواد مغذی:

    • زردی برگها (کمبود نیتروژن).

    • لکه های قهوهای روی برگها (اگر بیماری نباشد).

7. مقابله با آفات رایج

  • شته ها، کنه تارعنکبوتی و شپشکهای سفید از آفات رایج هستند.

  • راه های درمان:

    • شستوشوی برگها با آب ولرم و پودرهای حشره کش.

    • استفاده از محلول آب و الکل (برای شپشکها).

    • قرصهای سیستمیک در خاک (برای آفات مقاوم).

8. هرس و تمیز کردن برگها

  • هرس: برگهای زرد و خشک را جدا کنید تا انرژی گیاه صرف رشد برگهای سالم شود.

  • تمیز کردن برگها: با یک دستمال مرطوب، گردوغبار را پاک کنید تا روزنه های برگها تمیز شوند و فتوسنتز بهتر انجام شود.

تصویر روزنه های روی برگ که گیاه بوسیله آنها تنفس/فتوسنتز انجام میدهد:

 

نکته اینکه هر گیاه شخصیت خاص خود را دارد و با مشاهده و تحقیق می توان نیازهای آن را بهتر درک کرد...

با رعایت این نکات، گیاهان سالمتر و شادابتر خواهند ماند.

  • یوشا آل ایوب
۱۵
اسفند

1- حتی الامکان دایرکتیوهای using رو بداخل namespace منتقل کنید و در خارج از محدوده namespace رها نکنید.

StyleCop: SA1200: UsingDirectivesMustBePlacedWithinNamespace

namespace ConsoleApp1
{
   using System;
   using System.Collections.Generic;
   using System.Text;

   class Program
   {
      private static void Main(string[] args)
      {
      }
   }
}

نکته: درصورتیکه فقط یک namespace در فایل موردنظر موجود باشه.

 

2- همیشه reference های بلااستفاده رو از پروژه حذف کنید.

نکته: البته هنگام کامپایل برنامه، همه reference های استفاده نشده حذف میشن، ولی خب همیشه محیط کدنویسی رو تمیز و خلوت نگه دارید.

 

3- همیشه دایرکتیوهای using بلااستفاده(خاکستری رنگ) رو از کلاسها حذف کنید.

   using System.Drawing;
   using System.Resources; // <-----
   using System.Reflection; // <-----
   using System.Runtime.InteropServices; // <-----
   using System;
   using System.Windows.Forms;

 

4- جهت بازگشت چندین مقدار از یک متد میتونید از کلمه کلیدی ref یا out یا پرانتز (type1, type2, typeN) یا حتی Tuple استفاده کنید:

public Tuple <int, string, string> GetStudent()
{
   int studentId = 11;
   string firstName = "Alex";
   string lastName = "Koertson";
   return Tuple.Create(studentId, firstName, lastName);
}

نکته: Tuple از نوع reference type هستش و حداکثر ظرفیت 8 عنصر رو داره. همچنین از دات نت نسخه 4 و جدیدتر در دسترسه.

 

5- قابلیت های مخفی در #C!

  • یوشا آل ایوب
۱۳
دی

 

1- برای بدست اوردن میزان حافظه مصرف شده باید از دستور memory_get_usage(FALSE) استفاده کنید و برای میزان حافظه رزرو شده باید از دستور memory_get_usage(TRUE) استفاده کنید.

اما این نکته در مستندات سایت PHP.net برعکس توضیح داده شده:

int memory_get_usage ([ bool $real_usage = FALSE ] )

Returns the amount of memory, in bytes, that's currently being allocated to your PHP script.

 

2- زمانی از دستور strcmp استفاده کنید که قراره مقدار رشته ها شمارش(کمتر/بیشتر) بشن، درغیراینصورت استفاده از اپراتور === برای برابر بودن/نبودن رشته ها بهترین گزینست.


3- آیا میدونید به 4 روش مختلف میتونید تصاویر رو در مرورگر نمایش/output بدید؟

header('Content-Type: image/jpg');
$image = imagecreatefromjpeg('yourfilename.jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
imagejpeg($image);
imagedestroy($image);

و

header('Content-Type: image/jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
readfile('yourfilename.jpg');

و

header('Content-Type: image/jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
echo file_get_contents('yourfilename.jpg');

و

header('Content-Type: image/jpg');
header('Content-Length: ' . filesize('yourfilename.jpg'));
header('X-Sendfile: ' . 'yourfilename.jpg'); 
exit;

 

4- اگر از PHP CLI در محیط text UI سیستم عامل استفاده می کنید و مشکلات output و نمایشی دارید، بهتره از دستور passthru استفاده کنید.

 

5- نکته جزیی: فراموش نکنید که تابع json_decode فقط اعضای public شی موردنظر رو تبدیل میکنه، و نه private / protected.

  • یوشا آل ایوب
۲۱
شهریور

بدون استفاده از عبارت SET NAMES utf8 در دیتابیس:
enlightened اگر انکودینگ فایل موردنظر UTF8 باشه، تگ meta صفحه UTF8 باشه، charset دیتابیس هم utf8_persian_ci باشه خروجیش صحیحه و میشه این:
آ ب پ ت ث ج چ ح خ د ض ر ز ش

اگر انکودینگ فایل موردنظر UTF8 باشه، تگ meta صفحه UTF8 "نباشه"، charset دیتابیس utf8_persian_ci باشه/نباشه خروجیش میشه این:
آ ب پ ت ث ج چ ح خ د ض ر ز ش

اگر انکودینگ فایل موردنظر UTF8 "نباشه"، تگ meta صفحه UTF8 باشه، charset دیتابیس utf8_persian_ci باشه/نباشه خروجیش میشه این:
� � � � � � � � � � � � � � 

اگر انکودینگ فایل موردنظر UTF8 "نباشه"، تگ meta صفحه UTF8 "نباشه"، charset دیتابیس utf8_persian_ci باشه/نباشه خروجیش میشه این:
Â È Ê Ë Ì Í Î Ï Ö Ñ Ò Ô

enlightened اگر انکودینگ فایل موردنظر UTF8 باشه، تگ meta صفحه UTF8 باشه، اما charset دیتابیس utf8_persian_ci "نباشه" خروجیش صحیحه و میشه این:
آ ب پ ت ث ج چ ح خ د ض ر ز ش

می بینید که حتی بدون استفاده از عبارت SET NAMES utf8 باز هم میشه "خروجی" صحیح رو گرفت.

با استفاده از عبارت SET NAMES utf8 در دیتابیس:
enlightened اگر SET NAMES UTF8 باشه، انکودینگ فایل موردنظر UTF8 باشه، تگ meta صفحه UTF8 باشه، charset دیتابیس utf8_persian_ci باشه خروجیش صحیحه و میشه این:
آ ب پ ت ث ج چ ح خ د ض ر ز ش

اگر SET NAMES UTF8 باشه، انکودینگ فایل موردنظر UTF8 باشه، تگ meta صفحه UTF8 "نباشه"، charset دیتابیس utf8_persian_ci باشه خروجیش میشه این:
آ ب پ ت ث ج چ ح خ د ض ر ز ش

اگر SET NAMES UTF8 باشه، charset دیتابیس utf8_persian_ci "نباشه"، و همه چیز دیگر UTF8 باشن خروجیش میشه این:
? ? ? ? ? ? ? ? ? ? ? ? ? ?

اگر SET NAMES UTF8 باشه، انکودینگ فایل موردنظر UTF8 "نباشه"، تگ meta صفحه UTF8 باشه، charset دیتابیس utf8_persian_ci باشه خروجیش میشه این:
" "

enlightened اما برای نمایش درست کلمات در خود دیتابیس لازمه که از set_charset و SET NAMES UTF8 استفاده کنید.

  • یوشا آل ایوب
۲۵
تیر

مقالات مرتبط:

نکاتی برای افزایش امنیت وبسایت

 

1- حتاالمکان از کتابخانه های template engine برای کدنویسی لایه View/UI وب اپلیکیشن استفاده کنید و نه کدنویسی inline/mixed.

 

2- برای کاهش مصرف پهنای باند و افزایش سرعت سایت، همیشه فایلهای CSS, JavaScript, HTML رو minify و lint کنید:

CSS:

https://github.com/purifycss/purifycss

https://cssnano.co/guides/getting-started

https://github.com/ben-eb/cssnano-cli

https://github.com/css/csso-cli

https://github.com/uncss/uncss

JS:

https://github.com/nolanlawson/optimize-js

 

3- بطور منظم و ماهیانه پهنای باند وبسایت/سرور رو چک کنید.

 

4- یک سیستم اسکنر پیاده کنید که نوع دسترسی و زمان تغییر فایلها و دایرکتوری های کل سایت رو اسکن و به شما گزارش کنه.

 

5- از استفاده بیش از حد کوکی و ذخیره اطلاعات حساس/نمایشی  در داخلشون خودداری کنید.

  • یوشا آل ایوب
۲۵
خرداد

مقالات مرتبط:

نکات و اصول مهم در طراحی وبسایت

نکاتی برای افزایش امنیت وبسایت

#2 - نکاتی برای افزایش امنیت وبسایت

 

 

1- از صفت alt در تگهای img و از صفت title در تگهای link استفاده کنید. صفت alt بیانگر خلاصه ای از محتوای تصویر موردنظر هستش.


2- فراموش نکنید که محل جاری آدرسهای Font در فایلهای CSS از همان مسیر Relative فایل CSS شروع می شوند.


3- Link های صفحات را چک کنید و از سالم بودنشان مطمئن بشید.


4- شکل ظاهری صفحات داخلی و جداگانه را با شکل ظاهری صفحات اصلی یکنواخت کنید.


5- به عملا و دیکطه لقاط دغط کینید!

  • یوشا آل ایوب
۱۸
مهر

مقالات مرتبط:

#2 - نکاتی برای افزایش امنیت وبسایت

 

 

1- مکانیزم و شیوه کار پروتوکل HTTP رو کامل فرا بگیرید.

 

2- همیشه کتابخانه ها و فریم ورکهای استفاده شده در وب اپلیکیشن رو بروز نگه دارید.

 

3- جهت جلوگیری از click-jacking مقدار هدر X-Frame-Options رو DENY قرار بدید:

Apache httpd.conf:

Header always append X-Frame-Options DENY


Apache .htaccess:

Header append X-FRAME-OPTIONS "DENY"


Nginx:

add_header X-Frame-Options "DENY";


PHP:

header('X-Frame-Options: DENY');

 

4- بصورت هفتگی یا ماهیانه کل سایت رو توسط نرم افزارها و سایتهای اسکنر امنیتی چک کنید:

https://observatory.mozilla.org

https://securityheaders.com

https://urlvoid.com

https://virustotal.com
https://immuniweb.com/websec
https://detectify.com
http://amn.bayan.ir
https://ssllabs.com/ssltest/index.html

http://isithacked.com
https://app.upguard.com/webscan
https://app.webinspector.com/online_scan
https://suip.biz/?act=sqlmap
https://pentest-tools.com/home
https://sitecheck.sucuri.net
https://quttera.com
https://siteguarding.com

https://transparencyreport.google.com/safe-browsing/search

 

5- داده های ورودی توسط کاربر را بدقت بررسی، برش و فیلترسازی کنید.

 

6- برای اپلیکیشن، قابلیت debug mode درست کنید تا در مواقع لزوم بتونید فعالیت های اپلیکیشن رو مانیتور و خطازدایی کنید.

  • یوشا آل ایوب
۰۱
شهریور

programming mistakes

  • یوشا آل ایوب