عدم ذخیره مقادیری که در factory ها مشخص می شود
با سلام
من در کار با phpunit می خوام از factory ها برای ذخیره اطلاعات fake در دیتابیس استفاده کنم.
یک نمونه کدی که استفاده کردم این جاست
use fakergenerator as faker;

$factory-&gt;define(appprovinces::class, function (faker $faker) {
 return [
 'name' =&gt; $faker-&gt;name
 ];
});
اما وقتی تست را ران می کنم در ترمینال به من خطا می دهد. ظاهرا مقدار name را در دستور insert قرار نمی دهد....
مشکل رو متوجه شدم.
راه حل اون خیلی عجیب و دور از انتظاربود
من در متد \_\_construct مدل provinces
دستور زیر را فراخوانی نکرده بودم:
 parent::\_\_construct($attributes);
در واقع متد constructor مدل من باید به صورت زیر باشد.
 public function \_\_construct(array $attributes = [])
 {
 parent::\_\_construct($attributes);
 }
سلام به دوست خوبم


ببینید دوست عزیز HashTable یک کلاسه (که از کالکشن هاست) که داده ها رو  براساس کلید و داده یا (Key/Value) ذخیره میکند.یعنی مکانیزم آن اینگونه است که هر مقدار یک کلید دارد.


اما باید توجه داشت که در  اصل داده شما در Value ذخیره نمی شود.بلکه یک مقدار هش شده هست! که براساس یک الگوریتم هش انجام می گیرد.که هش شده مقدار شماست…


هر کلید اشاره گری به داده خودش هست.


مثلا اینطوری در نظر بگیرید


کلید name میتونه فقط اشاره گر به مقدار خودش باشه.


مثلا شما نمیتوانید کلید name رو به چند مقدار وصل کنید! اگر هم به چند مقدار وصل کنید مقادیر override شده و آخرین مقدار در نظر گرفته میشود.


مثلا اگر کلید name را اول ali وصل کنید سپس به mehdi ، کامپایلر آخرین مقدار که همان mehdi هست در نظر میگیرد!


نکته ی مهم این هست که HashTable  یک کالکشن جنریک نیست! و از آبجکت تبعیت میکند.


و اما چرا؟


قبلا بررسی کردیم که داده شما در Value ذخیره نمی شود، بلکه مقداری هش شده می باشد که همانطور که گفتیم این عمل بایک الگوریتم هش انجام میگیرد! که این الگوریتم از HashSum هر کلید برای ذخیره و بازیابی مقدار استفاده میکند.


HashSum چیست؟


هرکلید ما یکHashSum دارد(چون پذیرفتیم که کلید ها باید یونیک باشند!)پس در نتیجه hashSum هرکلید هم متفاوت است!


فایده ی این HashSum این است که الگوریتم هش با آن میتواند داده را ذخیره و بازیابی کند.یعنی الگوریتم هش از این مقدار استفاده میکند و داده شما رو fetch میکند.


به مثال های زیر دقت بفرمایید:



استفاده از hashtable در سی شارپ
C#

Hashtable hashTable = new Hashtable();

hashTable.Add("name1", "Mehdi");
hashTable.Add("name2", "Reza");
hashTable.Add("name3", "Ali");



| 12345 | Hashtable hashTable = new Hashtable(); hashTable.Add("name1", "Mehdi");hashTable.Add("name2", "Reza");hashTable.Add("name3", "Ali"); |





 


مثال زیر هم استفاده از هش تیبل با یک کلید و override شدن آخرین مقدار(مقدار amin به عنوان مقدار نهایی است)



استفاده از hashtable در سی شارپ
C#

Hashtable hashTable = new Hashtable();
hashTable.Add("name", "Mojtaba");
hashTable.Add("name", "Amin");



| 123 | Hashtable hashTable = new Hashtable();hashTable.Add("name", "Mojtaba");hashTable.Add("name", "Amin"); |





نمایش تمام کلیدها به همراه مقادیرشان




C#

foreach(DictionaryEntry entry in hashTable)
{
 Console.WriteLine("{0}-{1}", entry.Key, entry.Value);
}



| 1234 | foreach(DictionaryEntry entry in hashTable){    Console.WriteLine("{0}-{1}", entry.Key, entry.Value);} |





 


مثال زیر هم عملیات حذف و بازیابی از هش تیبل را شرح می دهد:


 




C#

string name1 = (string)hashTable["name1"]; //Mehdi

hashTable.Remove("name1");//Mehdi Removed !!!



| 123 | string name1 = (string)hashTable["name1"]; //Mehdi hashTable.Remove("name1");//Mehdi Removed !!! |





 


نتیجه گیری:


هش تیبل جنریک و type safe نیست.


سرعت بسیار بالایی در ذخیره و بازیابی مقادیر دارد.


سرعت این عمل طبق داکیومنت مایکروسافت O(1 ) هست.


برای ذخیره و بازیابی خود از هش استفاده میکند.


اما یک دیتاتایپ قدیمی است و نسخه ی بهتر آن که پرفرمنس بهتری نیز دارد Dictionary ها هستند که سرعت بهتری نیز دارند و اینکه جنریک هستند!!! و توصیه می شود که بجای hashtable ها از دیکشنری ها استفاده شود چون از زیرساخت هش تیبل نیز بهرمنداست.


 


 


موفق و شاد باشید.  

[آموزش سی شارپ](https://darsman.com/courses/elementary-education-up-to-moderate-csharp/) سلام، دلیل این مشکل این هست که شما داخل کلاس products یک کلاس دیگه با نام products تعریف کردید و این کار قابل انجام نیست، یعنی داخل کلاس یک عضو یا یک data type دیگه تعریف کنید که با نام کلاس یکسان باشد. سلام


قطعا چنین افزونه ی آماده ای وجود نداره


ولی توسط افزونه ی گرویتی فرم میتونید فرم ثبت نام به هر شکلی که میخواید درست کنید(مثلا شماره تلفن و ایمیلش رو تایید کنه) ولی اینکه داخل پنل کاریری وجود داشته باشه نه


موفق باشید پسورد های یوزر اکانت ها در سیستم عامل ویندوز در فایل sam بصورت رمزنگاری شده ذخیره می شه. لینک زیر رو ببینید.

|فایل sam چیست و چگونه از آن حفاظت کنیم ؟ ::https://security.tosinso.com/tutorials/36690/%d9%81%d8%a7%db%8c%d9%84-sam-%da%86%db%8c%d8%b3%d8%aa-%d9%88-%da%86%da%af%d9%88%d9%86%d9%87-%d8%a7%d8%b2-%d8%a2%d9%86-%d8%ad%d9%81%d8%a7%d8%b8%d8%aa-%da%a9%d9%86%db%8c%d9%85-%d8%9f|

در سیستم عامل لینوکس هم پسورد ها در فایل etc/shadow/ بصورت hash شده نگهداری میشن. لینک زیر رو ببینید.

|پسوردها در لینوکس در چه قالب و در چه فایلی نگهداری می شوند ؟::https://linux.tosinso.com/tips/32768/%d9%be%d8%b3%d9%88%d8%b1%d8%af%d9%87%d8%a7-%d8%af%d8%b1-%d9%84%db%8c%d9%86%d9%88%da%a9%d8%b3-%d8%af%d8%b1-%da%86%d9%87-%d9%82%d8%a7%d9%84%d8%a8-%d9%88-%d8%af%d8%b1-%da%86%d9%87-%d9%81%d8%a7%db%8c%d9%84%db%8c-%d9%86%da%af%d9%87%d8%af%d8%a7%d8%b1%db%8c-%d9%85%db%8c-%d8%b4%d9%88%d9%86%d8%af-%d8%9f| اگر ٩٪؜ رو توي فاكتور منظور كند، بايد گواهي ثبت نام در سامانه ارزش افزوده را هم بايد به فاكتور ضميمه كند و تحويل خريدار دهد و در پايان هر فصل اظهارنامه ارزش افزوده بدهد. 

اين ٥٪؜ ماليات كد كلي يه عرف من درآوردي بازار است كه هيچ توجيه قانوني ندارد. سلام 
کاربر محترم ارجاع به مازشناسی جهت تشخیص جعل برای دادگاه طریقیت دارد به عبارتی ممکن است پس از ارجاع به کارشناس دادگاه براساس دلایل دیگر و علم قاضی بر خلاف نظریه رای دهد به هر حال شما حق اعتراض به رای را خواهید داشت منظورم خود certificate هست:
||http://web.itpro.ir/files/get/3fd1d061-c5fa-4e55-83aa-3672e83eda2e||
||http://web.itpro.ir/files/get/cb33e3be-5abd-4bc7-bbcc-acae585a6adc|| سلام. اگر عبارت بازیابی یا همون recovery phrase رو که موضع ثبت نام بهتون میده رو داشته باشید جای نگرانی نیست. میتونید اون عبارت بازیابی رو در کیف پول دیگری وارد یا import کنید و دارایی تون رو برگردونید. برای اینکه محتویات textbox ها string هستند و شما توی متغیر int باید int بریزی
پس قبلش تبدیلش میکنی به int بعدش اونا تخصیص میدی به متعییر sum با استفاده از متاروتر و openwrt به راحتی این سناریو رو میتونید پیاده سازی کنید.تعداد داخلی ها رو بسته به سخت افزارتون داره.
در کل شدنی هست و مشکلی نداره.ضمنا 15 داخلی هم نیاز به سخت افزار خیلی خوب نداره.