یوشا آل ایوب

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

یوشا آل ایوب

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

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

طبقه بندی موضوعی
تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران

۲۹ مطلب با موضوع «نرم افزار :: برنامه نویسی :: Java» ثبت شده است

۰ نظر ۰۰/۰۱/۱۴
یوشا آل ایوب
  • کدهای اصلی باید قطعه قطعه و به واحدهای مستقل تقسیم بشن.
  • کدهای تست باید مستقل از محیط اجرایی باشن.
  • در کدهای تست باید از نقل/انتقال اطلاعات حجیم خودداری کرد تا پروسه تست بسرعت انجام بشه.
  • کدهای تست باید بروز باشن و با هر تغییر جدی روی کدهای اصلی باید تغییر کنند.
  • هر قطعه کد تست باید کوتاه، قابل فهم و خوانا باشه.
  • حجم کل کدهای تست تولید شده معمولاً باید برابر یا بیشتر از حجم کدهای اصلی باشه. (یعنی برای همه موارد تست نوشته شده باشه)
  • کدهای تست باید در همان روزی که کدهای اصلی پروژه نوشته میشن تولید بشن.
  • تست case ها باید کدها، متدها و قابلیت های پروژه رو به سخت ترین شکل به چالش بکشن.
  • بهتره کدهای تست به خارج از محدوده پروژه dependency نداشته باشن.
  • بهتره نام فایل تست به کلمه Test ختم بشه. مثل EmailTest, UtilityTest, DatabaseTest
  • بهتره نام توابع/متدهای داخل فایل تست با کلمه test شروع بشن. مثل test_if_email_is_valid یا testIsEmailValid

 

نکته: وظیفه نوشتن کدهای تست برای Unit Testing بعهده فرد برنامه نویس هستش نه فرد Tester. زیرا:

- بدلیل حفظ مالکیت کدها/پروژه، Tester نباید به سورس پروژه دسترسی داشته باشه.

- بدلیل مسایل امنیتی و کاهش تهدیدها، Tester نباید به داخل کدها و مکانیزم سیستم دسترسی داشته باشه.

- همچنین Tester قادر نیست به همه ابزارها، سبکها و زبانهای مختلفی که در پروژه استفاده شده مسلط بشه و test case طراحی کنه.

- تنها برنامه نویس هستش به کدهایی که پیاده سازی کرده مسلطه و test case رو در کمترین زمان با بالاترین کیفیت تولید میکنه.

۰ نظر ۹۹/۰۷/۱۰
یوشا آل ایوب

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

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

 

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- از استفاده بیش از حد کوکی و ذخیره اطلاعات حساس/نمایشی  در داخلشون خودداری کنید.

۰ نظر ۹۹/۰۴/۲۵
یوشا آل ایوب

 

Functionality test, Performance/Speed test, User experience test, Compatibility test, Security test

 

نکته: هر 5 نوع تست بالا رو میشه با 2 روش manual و automatic و در 5 سطح/لایه مختلف انجام داد:

Unit Test, Integration Test, Component/Module/Functional Test, System/E2E Test(black box), [User] Acceptance Test

۰ نظر ۹۹/۰۲/۱۵
یوشا آل ایوب

 

دقیقتر:

 

 

دقیقتر:

 

mvc چیست، ام وی سی چیست، ساختار mvc

منبع: https://blog.glyphobet.net/essay/153/

۰ نظر ۹۸/۱۲/۰۶
یوشا آل ایوب

 

۰ نظر ۹۸/۱۱/۱۲
یوشا آل ایوب

1. Package Design Checklist

1.1. General

  • 1.1.1. Favor placing API and implementation into separate packages [explain]
  • 1.1.2. Favor placing APIs into high-level packages and implementation into lower-level packages [explain]
  • 1.1.3. Consider breaking up large APIs into several packages [explain]
  • 1.1.4. Consider putting API and implementation packages into separate Java archives [explain]
  • 1.1.5. Avoid (minimize) internal dependencies on implementation classes in APIs [explain]
  • 1.1.6. Avoid unnecessary API fragmentation [explain]
  • 1.1.7. Do not place public implementation classes in the API package [explain]
  • 1.1.8. Do not create dependencies between callers and implementation classes [explain]
  • 1.1.9. Do not place unrelated APIs into the same package [explain]
  • 1.1.10. Do not place API and SPI into the same package [explain]
  • 1.1.11. Do not move or rename the package of an already released public API [explain]

1.2. Naming

  • 1.2.1. Start package names with the company’s official root namespace [explain]
  • 1.2.2. Use a stable product or product family name at the second level of the package name [explain]
  • 1.2.3. Use the name of the API as the final part of the package name [explain]
  • 1.2.4. Consider marking implementation-only packages by including “internal” in the package name [explain]
  • 1.2.5. Avoid composite names [explain]
  • 1.2.6. Avoid using the same name for both package and class inside the package [explain]
  • 1.2.7. Avoid using “api” in package names [explain]
  • 1.2.8. Do not use marketing, project, organizational unit or geographic location names [explain]
  • 1.2.9. Do not use uppercase characters in package names [explain]
۰ نظر ۹۸/۱۰/۰۹
یوشا آل ایوب

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

#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 درست کنید تا در مواقع لزوم بتونید فعالیت های اپلیکیشن رو مانیتور و خطازدایی کنید.

۱ نظر ۹۸/۰۷/۱۸
یوشا آل ایوب

MSSQL / Azure SQL Database

 

MySQL

 

Oracle Database

 

jdbc, driver, versions, jdk, odbc, ojdbc

۰ نظر ۹۸/۰۲/۲۳
یوشا آل ایوب

1- تفاوت HashMap و HashTable:

 

کلاس HashMap از نوع synchronize نیست پس thread-safe نیست. اما کلاس HashTable از نوع synchronize هستش.
کلاس HashMap بخاطر synchronize نبودن کمی سریعتر از HashTable عمل میکنه.
کلاس HashMap اجازه داشتن یک کلید null و چندین مقدار null رو داره، اما کلاس HashTable همچین اجازه ای رو نداره.
کلاس HashMap زیرکلاس AbstractMap هستش، اما کلاس HashTable زیرکلاس Dictionary هستش.
کلاس HashTable تقریباً منسوخ شده و باید از جایگزینش ConcurrentHashMap استفاده بشه.
و...

در بیشتر موارد کلاس HashMap استفاده میشه، درصورتی که synchronization در اولویت نباشه.

 

2- برای حل مشکل ValueError: unsupported pickle protocol در لینوکس کافیه فایل .repopickle_.gitconfig در Android SDK رو پیدا و حذف کنید.

 

3- اصول طراحی کلاس:

- همیشه داده ها و فیلدها رو private نگهدارید و از اصول encapsulation پیروی کنید.

- همیشه فیلدها رو initialize کنید.

- هرکلاس رو به یک نوع/دسته از داده اختصاص بدید.

- کلاسهای چند منظوره با چند مسئولیت طراحی نکنید، بلکه آنها را تجزیه و جداسازی کنید.

- بی دلیل برای همه فیلدها و داده ها accessor و mutator طراحی نکنید. (set/get)

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

- حتاالمکان کلاسها رو immutable (غیرقابل تغییر) طراحی کنید.

- بجای استفاده مکرر تودرتو if/else switch foreach از interface یا کلاس abstract استفاده کنید.

- حتاالمکان کلاس رو static طراحی نکنید. (بخاطر global state و مشکلات unit testing)

- از نوشتن متدهای طولانی و سنگین خودداری کنید. معمولاً متدهای طویل نشاندهنده رفتار و وظایف متعدد هستش که نیاز به تجزیه و refactoring داره.

- از قانون DRY (مخفف Don’t Repeat Yourself) پیروی کنید... متدهای تکراری رو با ساخت superclass abstract یکی کنید.

۲ نظر ۹۷/۱۱/۰۶
یوشا آل ایوب