Web Devs
641 subscribers
218 photos
22 videos
17 files
233 links
Articles, News, Jokes, Quotes, Back-End and UI/UX for web developers.
Github : https://github.com/fullStackDevsGroup
Advertising: @adsfullStackDevs
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#VSCode
#Edge

VS Code - Elements for Microsoft Edge (Chromium)

ابزار Elements مرورگر را در داخل ویرایشگر VSCode نمایش دهید و از آن سریعتر برای رفع نکات ظاهری، طرح بندی (Layout) و CSS با سایت خود استفاده کنید.

یک افزونه VSCode که به شما اجازه می دهد از ابزار مرورگر داخل ویرایشگر استفاده کنید. این ابزار به یک نمونه از Microsoft Edge متصل می شود که به شما امکان می دهد که میتوانید در زمان اجرا ساختار HTML ، طرح را تغییر دهید و یا css را اصلاح کنید و دیگر نیاز نیست تغییرات رو روی مرورگر ببینید و به vscode برگردید برای تغییرات !
برای نصب این افزونه میتونید از لینک زیر استفاده کنید.

Elements for Microsoft Edge


@fullStackDevs
#Security
#Hsts
#قسمت_اول
What Is Hsts?

پروتکل Http یک پروتکل ناامن است و اگر هکر ی بتواند دربین کلاینت و سرور موفق به شنود خط شود به راحتی دیتای تبادل شده بدون کدگذاری شدن برای او قابل مشاهده خواهد بود .
نام این حملات
( SSL-stripping یا man-in-the-middle )
میباشد.
برای حل این مشکل از نسخه امن Http با عنوان Https استفاده میکنیم اما این پروتکل نیز ضعف های امنیتی خود را دارد .
زمانی که برای وب سایت خود ssl تهیه میکنید و https را فعال میکنید از این به بعد وب سایت شما از طریق یک درخواست Https در دسترس خواهد بود اما شما نیز بایستی تنظیمات وب سایت خود را به گونه انجام دهید که فقط به صورت https در دسترس باشد و فقط درخواست های Https را بپزیرد در غیر اینصورت کاربر میتواند درخواستی مبتی بر Http به سایت شما انجام دهد. و مراحل آن به صورت زیر است .

1. کاربر ابتدا ادرس sabteahval.ir را در نوار آدرس مرورگر خود می نویسد.

2. مرورگر به صورت پیشفرض آدرس
http://www.sabteahval.ir/
را بار گذاری میکند.

3.و وب سایت sabteahval.ir در پاسخ درخواست به صورت ریدایرکت دائمی یا موقت به آدرس
https://www.sabteahval.ir/
مرور گر را آگاه میسازد .

4. واین بارمرورگر این ریدایرکت را می‌بیند و به جای سایت قبلی وب‌سایت
https://www.sabteahval.ir/
را بارگذاری می‌کند.
همانطور که میبینید با اینکه برای وب سایت خود ssl تهیه نموده و Https را فعال نموده اید باز هم وب سایت شما پذیرای دارخواست های http بوده و میتوانید در معرض حملات
SSL-stripping
قرار بگیرید و هکر در مرحله 3 (بالا) می تواند کاربر را به آدرس دیگری که تقریبا مشابه سایت شماست ریدایرکت کند.(فیشینگ)
وقتی که Hsts را فعال میکنید . اولین باری که مرورگر کاربر به سایتان درخواست http می فرستد در پاسخ درخواست ، هدر
Strict-Transport-Security
به ResposeHeader افزوده میشود و از این به بعد این هدر بر روی مرورگر کاربر فعال باقی میماند. و از این به بعد که کاربر بخواهد درخواستی http به سایتان بفرستد با فعال بودن این هدر مرورگر به صورت پیشفرض یک درخواست Https میفرستد.

@fullStackDevs
#Security
#Hsts
#قسمت_دوم(قسمت اخر)

Enforce SSL And Use Hsts in Asp Core

در این پست که پست آخر در این مورد نیز میباشد به فعال سازی Https و نحوه افزودن هدر Strict-Transport-Security به ResposeHeader می پردازیم .
برای فعال سازی Hsts مسلم است که ابتدا باید Https را فعال نمایید که به دو صورت انجام میشود.
1.فعال کردن https فقط برای بخش هایی از سایت
2. فعال کردن Https برای کل سایت
در حالت اول میتوانید از اتریبیوت [RequireHttps] بربالای کنترل خود استفاده کنید.(این روش اصلا برای webapi توصیه نمی شود).

روش دوم استفده از گلوبال فیلتر هاست و به این صورت انجام میشود

if (!_env.IsDevelopment())
{
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
});
}

مرحله بعدی فعال کردن Hsts میباشد. از نسخه 2.1 فریم Asp Core به بعد به صورت توکار میدلوری برای پیاده سازی Hsts به فریم وورک اضافه شد و تا قبل ان باید از
Third Party Library
نظیر
NWebsec.AspNetCore.Middleware

Joonasw.AspNetCore.SecurityHeaders
استفاده می کردید .
اما از این نسخه به بعد میدلوری به نام
app.UseHsts();
به صورت توکار وجود دارد که کار افزودن هدر Strict-Transport-Security
انجام میدهد .
if (env.IsDevelopment())
{
//
}
else
{
app.UseHsts(); // Add This
}
برای انجام تنظیمات خاص خود بر روی این هدر میتوانید در ConfigureServices کانفیگ های خود را به این صورت اعمال نمایید.

if (!_env.IsDevelopment())
{
services.AddHsts(options =>
{
options.Preload = true;
options.IncludeSubDomains = true;
options.MaxAge = TimeSpan.FromDays(60);
options.ExcludedHosts.Add("example.com");
options.ExcludedHosts.Add("www.example.com");
});

}
IncludeSubDomains
هدر را برای SubDomain های تان نیز فعال میکند.
MaxAge
مدت زمان فعال بودن هدر
Strict-Transport-Security
بر روی مرورگر کاربر به صورت پیشفرض 30 روز تنظیم شده است.
ExcludedHosts
افزودن لیست سایت های که نیاز به فعال سازی هدر Hsts را برای آنها نیست.

Preload
اما هنوز ما مشکلی با اولین در خواست به سایتمان که به صورت پیشفرض توسط مرورگر http ارسال میشود داریم . این مشکل را میتوانید به کمک سایت https://hstspreload.org/ حل کنید
کافیست دامنه سایت تان را در آن ثبت کنید و در Release های بعدی مرورگر کروم دامنه سایت تان به صورت توکار در Preload List های مروگر خواهد بود و مرورگر میداند برای سایت تان باید از Https استفده کند.
مرورگر های فایر فاکس ، سافاری ،اپرا، IE 11 ،Edge نیز از همین Preload List کروم استفاده میکنند.

@fullStackDevs

https://t.me/fullStackDevs
Forwarded from Web Devs
#NewVersion

Fix bug on installing!

Install-Package ABluePersianDateTime -Version 1.0.5

dotnet add package ABluePersianDateTime --version 1.0.5

paket add ABluePersianDateTime --version 1.0.5


@fullStackDevs
Forwarded from Web Devs
#PersianDateTime
#CSharp
🔹 ساختار تاریخ شمسی با متد های تبدیل به تاریخ میلادی و یا هجری
🔸 متدهای مختلف برای بدست آوردن رشته های مختلف تاریخ شمسی با فرمت های متفاوت و اعداد فارسی
🔹 پشتیبانی از سال کبیسه
🔸 شبیه سازی کامل ساختار DateTime
.NetFramework 4.5

نصب پکیج :

Install-Package ABluePersianDateTime -Version 1.0.3
dotnet add package ABluePersianDateTime --version 1.0.3
paket add ABluePersianDateTime --version 1.0.3

@fullStackDevs
Forwarded from Web Devs
#ABluePersianDateTimePicker
توضیحات تکمیلی


نحوه استفاده از این picker به صورت زیر به صورت میلادی و شمسی می باشد . میتونید اچ تی ام ال این صفحه را مشاهده کنید و المنت های خودتونو به سادگی بسازید و به دلخواه css هارو تغییر دهید.
🔹 با اتریبوت زیر روی المنت مثلا اینپوت picker فعال میشود
data-disablebeforetoday="true"

🔹 با اتریبوت زیر روزهای قبل امروز غیر فعال میشوند
data-disablebeforetoday="true"

🔸 با اتریبوت زیر میتونید تاریخ میلادی را فعال کنید
data-isgregorian="true"

🔹 با اتریبوت زیر میتونید ساعت دقیقه ثانیه رو نمایش ندید
data-enabletimepicker="true"


ورژن جدید ریایز شده :

Install-Package ABluePersianDateTimePicker -Version 1.0.4
dotnet add package ABluePersianDateTimePicker --version 1.0.4
<PackageReference Include="ABluePersianDateTimePicker" Version="1.0.4" />
paket add ABluePersianDateTimePicker --version 1.0.4

@fullStackDevs
#TypeSafe_Lang

What is Type-safe?

Type-safe
به این معنی است که کامپایلر در زمان کامپایل نوع داده ها را اعتبارسنحی میکند.
و برای مثال اگر در کدتان تلاش کرده باشید که به یک متغیر String نوع داده صحیح(int) را اختصاص داده باشید کامپایلر یک ارور throw می کند.
این اتفاق حتی در هنگام اختصاص دادن مقدار با نوع اشتباه به آرگومان های یک تابع نیز می افتد.

Arraylist
از ساختمان داده NoTypeSafe در سی شارپ است و در هنگام استفاده از مقادیر موجود در آن ابتدا باید از نوع آنها مطمئن شوید.
در asp.net/AspnetCore نیز از Collection های NoTypeSafeمی توان به ViewData ,ViewBag اشاره کرد.

در مقابل ما loosely typed ها را داریم که دنیایه آزادانه ای را برای شما به وجود آورده اند
و هر مقداری با نوع متفاوت را می توانید به متغیر هایتان اختصاص دهید.
جاوا اسکریپت یک زبان loosely type می باشد.

@fullStackDevs
#EfCore_Best_Practice

Solve the problem 1+N in Ef Core

حل مشکل 1+N در Ef Core

این مشکل در correlated subqueries رخ میدهد.
به عنوان مثال در کوئری زیر
var query = context.Customers.Select(
c =>
c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount)

);
ابتدا کوئری برای دریافت لیستی از Customers به دیتابیس ارسال میشود .
و به ازای هر Customer کوئری زیر

c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount)
ترجمه و به سمت دیتابیس ارسال میشود.

این مشکل با نام مشکل 1+N شناحته میشود.

از Ef Core 2.1 به بعد Optimization ای برای این قبیل کوئری ها انجام شده است که از وقوع این مشکل جلوگیری میکند و سبب میشود که کوئری بالا حداکثر به دو اس کیو ال کوئری ترجمه شود.
کوئری اول سلکتی برای Customer ها و کوئری دوم اعمال فیلتری بر روی Order ها

برای انجام اینکار هم نیاز به انجام یک تغییر کوچک در کوئری خود دارید.

var query = context.Customers.Select(
c => c.Orders.Where(o => o.Amount > 100).Select(o => o.Amount).ToList());

کافیست به SubQuery خود متد ToList() را اضافه کنید .


اطلاعات بیشتر در مورد این مسئله را می توانید در Issue 4007 مربوط به ریپازیتوری Ef Core مشاهده و دنبال کنید.
@fullStackDevs
#SEO
#WebMasters

🔘 خلاصه نکات گوگل سرچ کنسول
سایت مپ #SiteMap یک فایل با فرمت XML است که دربردارنده لیست و ساختار محتوایی وبسایت است.

✔️ اطلاعاتی که سایت‌مپ در اختیار گوگل قرار می‌دهد:
1️⃣ صفحات سایت آخرین بار چه زمانی به‌روزرسانی شده‌اند.
2️⃣ هر چند وقت یکبار ممکن است به‌روزرسانی شوند.
3️⃣ آن صفحات در مقایسه با بقیه صفحات سایت چقدر مهم هستند.

🔸 آدرس صفحات سایت باید در نقشه به صورت absolute باشند، چرا که آدرس relative را شناسایی نمی‌کند.
🔸 فایل robots.txt دقیقا مخالف سایت‌مپ عمل می‌کند و به گوگل می‌گوید کدام بخش‌های سایت من را بررسی نکن.
🔸 گزینه URL Inspection همان fetch در پنل قدیمی است. در تعداد استفاده از آن به ظاهر محدودیتی وجود ندارد و زیاد استفاده کردن از آن نکته منفی در #google محسوب نمی‌شود.
🔸 نرخ تبدیل جایگاه اول سرچ گوگل در حال حاضر 32 درصد است. اگر در جایگاه اول هستیم و CTR پایینی داریم باید دلیل آن را بررسی کنیم و با تغییر title و metaی صفحه‌ای که در آن جایگاه داریم نرخ تبدیل را بالا ببریم.
🔹 ایمپرشن به صورت پیش‌فرض مربوط به نتایج صفحه اول گوگل است، مگر اینکه کاربر وارد صفحه دو شود (آن موقع تمام لینک‌های صفحه دو هم ایمپرشن می‌گیرند.)
- بخش Links بخش دقیق و قابل استنادی نیست، چون داده‌ها با تاخیر آپدیت می‌شوند.

🔲 سی تی آر CTR که مخفف click through rate می باشد به معنای درصد تعداد کلیک های وب سایت در تعداد نمایش وب سایت شما در نتیجه های جستجو می باشد. هر چه این درصد بالاتر باشد به معنای آن است که وب سایت موفقیت بیشتری در جذب بازدید کننده از موتورهای جستجو دارد که CTR معمولا به دو صورت کلی بر اساس کل کلمات و به صورت جزئی بر اساس کلمه کلیدی مورد نظر شما ارائه می گردد. برای آنکه CTR بالاتری داشته باشید می بایست عنوان مناسبی را برای صفحات سایت خود انتخاب نمایید تا باعث کلیک بیشتر بر روی لینک شما گردد. همچنین در کنار انتخاب عنوان جذاب و حرفه ای می بایست توضیحات meta مناسبی را در صفحات سایت خود استفاده نمایید تا کاربر با خواندن آن ترغیب به کلیک بر روی وب سایت شود.

🔳 ایمپرشن (Impression) چیست؟
ایمپرشن به تعداد نمایش وب سایت شما در موتورهای جستجو گفته می شود که این آمار نیز معمولا به صورت کلی یعنی برای کل سایت و به صورت جزئی که بر اساس هر کلمه کلیدی ارائه می گردد. در گوگل وبمستر تولز می توانید آمار نمایش وب سایت خود را برای تک تک کلمات کلیدی مشاهده نمایید. Impression بالای وب سایت وابسته به تعداد جستجوی کاربران و جایگاه وب سایت در موتورهای جستجو می باشد. به عنوان مثال در صورتی که سایت برای کلمه کلیدی صفحه اول باشد Impression سایت تعداد کامل جستجوی های انجام گرفته کلمه کلیدی می باشد و در صورتی که سایت صفحات دوم وب سایت Impression سایت تعداد کاربرانی از موتور جستجو را نمایش می دهد که وارد صفحه دوم وب سایت شده اند.

@fullStackDevs
#FluentScheduler

زمانبندی خودکار با FluentScheduler برای پلت فرم NET.

Introducing Automated job scheduler with fluent interface.

A library to run scheduled jobs

Nuget Command for install that
Install-Package FluentScheduler

Documentation : FluentScheduler on Github

@fullStackDevs
#Chart

APEXCHARTS.JS

نمودار های منبع باز مدرن و تعاملی

Modern & Interactive Open-source Charts

https://apexcharts.com/

@fullStackDevs
#GenericRepository


One of the Loose Coupling Champion in our Apps Architecture
#RepositoryPattern_along_with_Ef

این ویدیو به بررسی استفاده از Unit Of Work And Repository pattern در کنار Entity Framework پرداخته است .
موارد مطرح شده در ویدیو :

1- آیا باید Repository Pattern در کنار Entity Framework استفاده بکنیم یا نکنیم ؟
2- مزایای استفاده از این الگو چیست ؟
3-پاسخ به سوال کسانی که همیشه این سوال رو میپرسن ایا اصلا ممکن است (persistence framework) (منظور Entity framework)برنامه مان تغییر کند؟

4- چطور Repository Pattern معماری پروژه مارا Loose Coupling نگه میدارد.

5- چرا Repository های ما نباید متد Update و Save داشته باشد.
6-پیاده سازی صحیح این الگو در کنار Entity Framework

مشاهده در یوتیوب :
https://youtu.be/rtXpYpZdOzM


Keep YourSelves Professional

@fullStackDevs
Forwarded from MentorDev
طراحی UI/UX فرایند و مراحل خاصی دارد که هر فرد خلاق از اون‌ها استفاده میکند.

1- مرحله کشف:
شروع به تحقیق کردن، الهام گرفتن و جمع کردن ایده‌ها.
2- مرحله تعریف: تعریف چیزی که کشف شده است.
3- توسعه: طراحی کانسپت و پروتوتایپ، فرایند آزمون و خطا برای بهبود و اصلاح ایده‌ها.
4- تحویل: مرحله آخر، محصول نهایی شده و با موفقیت اجرا شده.

@frontdevir
#EfCore_Best_Practice
#Explicit_compiled_queries

در این پست به معرفی یک ویژگی باحال که از EF 5 به بعد و در LINQ to SQL نیز وجود داشت و در EF Core از نسخه 2.0 به آن افزوده شد می پردازیم.

در ابتدا Ef Core در ورژن 1.0 ویژگی query caching را معرفی کرد . این ویژگی علاوه بر پرفورمنسی که دارد اما دارای سربارهایی نیز است.
هر کوئری برای کش شدن و نگه داری آن در حافظه و سپس استفاده مجدد از آن به یک کلید هش شده نیاز دارد که تولید این کلید هش شده از روی Query Expression سرباری دارد.

اما از نسخه Ef Core2.0 ویژه گی query compilation به آن اضافه شده.
در این حالت کوئری یک بار کامپایل شده و در حافظه نگه داری میشود و می توانید به هر دفعات که خواستید از ان استفاده کنید.

Example:

private static Func<AdventureWorksContextDI, int, Orders> _getOrderById =
EF.CompileQuery((AdventureWorksContextDI context, int id) =>
context.WorkOrders.Select(
x => new Orders
{
Id = x.WorkOrderId,
ProductName = x.Product.Name,
Quantity = x.OrderQty,
Date = x.DueDate
}).FirstOrDefault(x => x.Id == id));

usage :

public Orders GetOrderByIdCompiled(int id)
{
return _getOrderById(_context, id);
}

چه زمانی از این ویژگی استفاده کنیم ؟
1-کوئری تان قرار است خیلی بیشتر از یک بار متوالی اجرا شود.
2-کوئری شما به قدر کافی پیچیده است و هزینه هربار کامپایل ان زیاد است.


* نکته اول اگر دلیگیت کامپایل کوئری مورد نظر خود را به صورت استاتیک تعریف کنید می توانید در تمام نمونه های ApplicationDbContext خود از آن استفاده کنید.
*نکته دوم نسخه جاری Ef Core هنوز نوع خروجی
List<T>
را برای یک کامپل کوئری پشتیبانی نمیکند.

@fullStackDevs
#EntityFrameworkCore_Cacheable

A high-performance second-level query cache for EF Core.

این کتابخانه از معدود کتابخانه های کش سطح دوم برای Ef Core میباشد و قابلیتی را برای کش کردن انواع query result ها در Ef Core فراهم می اورد.

Nuget Command for install that

Install-Package EntityFrameworkCore.Cacheable

Documentation : EntityFrameworkCore.Cacheable on Github


@fullStackDevs
#قسمت_اول
#MessagePack

در این پست به معرفی یک فرمت سریالایز و دیسریالاز که بسیار سریع و ساده و جمع و جور می باشد میپردازیم.

🔸 مشکل کجاست ؟

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

🔹 چگونه مشکل رو حل کنیم

راه حل استفاده از فرمت های انتقال اطلاعات سریع تر و سبک تر و کم حجم تر مانند MessagePack می باشد.

#MessagePack

مسیج پک یک فرمت باینری سریالاز و دیسریالایز سازی است که سریع ، کم حجم و بسیار جمع و جور تر از JSON و یا BSON میباشد.علاوه بر این تقریبا میتواند هر چیزی که توسط JSON قابل نمایش است را نمایش دهد. و در تمامی زبان های کاربردی و پدر و مادر دار پشتیبانی میشود.با این وجود شما میتوانید از این فرمت در API های خود نیز استفاده کنید.

🔻 سرعت و کارایی و مزایایی که این فرمت انتقال داده دارد را می توان ناشی از انواع داده ای که برای نمایش اطلاعات استفاده میکند دانست. برای مثال :

▪️ جیسون(JSON) از چهار بایت برای نمایش NULL استفاده میکند اما MessagePack تنها 1 بایت.

▪️ جیسون(JSON) از 2 بایت برای نمایش Int معمولی استفاده میکند. اما MessagePack نهایتا 1 بایت.

▪️ و از انجایی که این فرمت باینری میباشد. برای خواندن و نوشتن از JSON سریعتر است.

همچنین میتوانید اطلاعات بیشتری در مورد این فرمت و زبان هایی که از آن پشتیبانی میکنند را در این وب سایت msgpack.org مشاهده کنید.
مشخصات کاملتری از ان نیز در این ریپازیتوری در دسترس است.
در قسمت بعد به استفاده از آن در Asp.NetCore می پردازیم.

@fullStackDevs

〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
شما یک Geek هستید یا nerd ؟

یک Geek کیست؟
یک گیک (Geek) کسی است که بسیار باهوش و آگاه حتی در مرحله ای از وسواس فکری در مورد یک موضوع خاص است. گیک (Geek) کسی است که وقتیدر یک مسیر اصلی قرار میگیرد یک کشش یا علاقه ی وافری را کسب میکند و در اصطلاح کسی است که با رفتار عجیب غریب اش تعریف میشود ولی معانی دیگری مانند متخصص یا علاقمند رایانه نیز دارد همچنین در بعضی مفاهیم “رایانه باز” هم میگویند.
گیک‌ها اصولا درس و دانشگاه را بیخیال شده‌اند و پی علاقه خود می‌روند. مدیران اغلب شرکت های بزرگ فناوری دنیا، از دسته گیک‌ها به شمار میایند.


یک nerd کیست؟
شخصی است که از نظر فکری روی یک موضوع خاص تمرکز شدید دارد و از نظر اجتماعی با مشکل مواجه است در حقیقت. فرد نرد (nerd ) زمان زیادی را صرف کارهایی میکند که برای عموم مردم جذاب نیست.
به کسانی گفته می‌شود که دانشی قدرتمند در زمینه‌ خاصی دارند ولی این دانش را نه برای پول و نه برای مقبولیت اجتماعی، بلکه به خاطر دل خودشان بدست میاورند. نردها معمولا از طرف اجتماعات مختلف طرد می‌شوند، در ارتباط با جنس مخالف دچار مشکل هستند، ظاهر ژولیده‌ای دارند و اگر کسی پیدا نشود که از نبوغشان استفاده کند از لحاظ مالی دچار مشکل می‌شوند. با این‌حال هیچ کدام از اینها برایشان اهمیتی ندارد و می توانند با ساعاتی کد زدن! همه آن را فراموش کنند.

مقایسه یک Geek و nerd

مشخص کردن مرز دقیق یک گیک با یک نرد کار سختی است و همین، نوعی کری خوانی بین آنها بوجود آورده است.

نرد ها دوست دارند از لهجه خاصی یا لغات و اصطلاحات عجیب و ناشناخته ای در گفتگو هایشان استفاده کنند در حالیکه گیک ها به ندرت از منبع های گنگ و نامفهوم استفاده خواهند کرد .
گیک ها اغلب به جزییات جهان کوچک زندگی علاقمند هستند مانند توجه به موقعیت درحال حاضر شما که بیشتر به یک مقاله خبری یا یک رمان است.نرد ها ظاهرا علاقمند به جزییات زندگی روزانه نیستند بیشتر روی مسائل قابل رویت و بزرگ تمرکز میکنند مثل احتمالات علمی و آینده بشریت.
یک گیک (Geek) توانایی های اجتماعی معمولی دارد اگر چه آن ها میتوانند پر مدعا و پرگو باشند مخصوصا وقتی مسئله ای در زمینه علاقه ها و تعصباتشان اتفاق میوفت در این صورت به شما اجازه رفتن نمیدهند تا وقتی که مثلا طرز کار فلان چیز ویا سرگذشت فلان کس ویا وجود آمدن فلان قسمترا دقیقا توصیح دهند.
یک نرد (Nerd) معمولا دورنگرا است آن ها ممکن است یک حجم بزرگی را درمورد دقیقا همان چیزی که یک گیک (Geek) در ان تخصص یافته است بدانند اما آن ها همان چیز را با حرف زدن و بحث کردن انجام بعضی کارها بدست می آورند.
یک حقیقت کلی است که گیک ها میتوانند فکر و ذکر هر کسی را مشغول کنند و یا به عبارت دیگر هر کسی را دوست داشته باشند.(اگر چه خلاف آن ممکن است درست نباشد)
با این حال بیشتر نرد ها فقط هم گروه های خود را دوست دارند یعنی همان نردها .
گیک ها روابط اجتماعی خوبی دارند، بازی های دسته جمعی بیشتری انجام می‌دهند، به کافه می روند و اگر کسی را پیدا کنند که به گجت مورد علاقه آنها، گوشه علاقه‌ای نشان دهد تا وقتی که تمام ابعاد گجت و سن مادربزرگ سازنده اسپیکرهای گجت را نگفته‌اند، بیخیال نخواهند شد. از سوی مقابل، نردها هرچند ممکن است اطلاعات دقیق‌تری راجع به همان گجت داشته باشند ولی به محرک بسیاری قوی‌تری برای صحبت راجع به آن نیاز دارند، آنها بیشتر با کسانی که بعنوان نرد قبولشان کرده اند در ارتباط اند و در اکثر مواقع برای ازدواج خود یک نرد را انتخاب می کنند. در حالی که یک گیک، ممکن است یک مدل لباس را هم برای ازدواج انتخاب کند.
تعداد افرادی که خود را گیک می‌نامند و یا بقیه آنها را بعنوان نرد می‌شناسند هر روز در حال افزایش است. عضویت در جامعه‌ای متمایز که زبان و ادبیات مخصوص به خود را دارد و در اکثر مواقع به دنبال تبدیل کردن دنیا به جای بهتری برای زندگی کردن است، می‌تواند دلایل منطقی و روانی بسیاری داشته باشد. سرمایه گذاری تبلیغاتی کشورهای توسعه یافته روی این موضوع و تولید سریال های پرطرفداری مانند big bang theory و IT CROWDS نشان از اهمیت فعالیت های نسل نردها و گیک‌ها دارد.

@fullStackDevs

مترجم خانم افسانه عابدینی
منبع :
http://alihossein.ir/tutorials/%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-geek-nerd-%DA%86%DB%8C%D8%B3%D8%AA
Web Devs
#قسمت_اول #MessagePack در این پست به معرفی یک فرمت سریالایز و دیسریالاز که بسیار سریع و ساده و جمع و جور می باشد میپردازیم. 🔸 مشکل کجاست ؟ مشکل آنجایی مطرح میشود که حجم تبادل دیتا بسیار زیاد و روال سریالاز و دیسریالاز کردن آن برای انتقال، بسیار سنگین…
#قسمت_دوم
#قسمت_آخر
#MessagePack

در این قسمت به معرفی نیوگت پکیج هایی برای راه اندازی و استفاده از MessagePack در Asp.NetCore می پردازیم.
به صورت توکار این قابلیت برای فریم وورک AspNetCore پیاده سازی نشده و بایستی با نصب Third party library هایی از آن استفاده کنید .همچنین می توانید از MessagePack به همراه SignalR و WebApi و برنامه های کنسول اپلیکیشنی و ویندوز اپلیکیشنی و .. با نصب نیوگت پکیج مربوطه استفاده کنید.
کتابخانه های بسیاری برای اینکار وجود دارد که در اینجا به معرفی تعدادی از آنها میپردازیم.

مشهورترین آنها
🔹 Install-Package MessagePack
میباشد که Documentation کامل و مفصل آن را در این ریپازیتوری میتوانید مشاهده و مطالعه کنید.
این کتابخانه Extension های زیادی دارد که یکی از آنها
🔹Install-Package MessagePack.AspNetCoreMvcFormatter
است که به شما امکان استفاده از MessagePack در AspNetCoreMvc را میدهد. برای استفاده و فعالسازی سرویس های آن در AspCoreMvc و طریقه کانفیگ کردن و استفاده از آنرا را در این لینک می توانید ببینیید.
از دیگر پکیج ها برای استفاده از MessagePack پکیج
🔹Install-Package WebApiContrib.Core.Formatter.MessagePack
میباشد.که بعد از نصب آن میتونید با افزودن سرویسش در ConfigureServices از آن استفاده کنید.توضیحات مختصری از این پکیج و نحوه کانفیگ در این لینک قابل دسترس است.
همانطور که گفتیم از MessagePack به همراه سیگنال آر نیز میتوانید استفاده کنید . برای اینکار بایستی پکیج
🔹Install-Package Microsoft.AspNetCore.SignalR.Protocols.MessagePack
را نصب کرده و از آن استفاده کنید .Documentation در این لینک .
همچنین اگر دارید از سیگنال آر با یک Client جاوااسکریپتی استفاده میکنید باید npm پکیج زیر
🔹npm install @aspnet/signalr-protocol-msgpack
که شامل اسکریپت های مورد نیاز برای استفاده از MessagePack در سمت Client به همراه سیگنال آر هست را نصب کنید.Documentation در این لینک .

📢 @fullStackDevs