اگر پس از مدتی، مجددا نیاز به کار با مخزن Fork شدهی خود را داشته باشید، احتمالا این مخزن هم اکنون دیگر با مخزن اصلی که از آن Fork شده، هماهنگ نیست و قدیمی شدهاست. به همین جهت نیاز است در مخزن محلی خود (Clone ایی که از این Fork بر روی سیستم خود دارید)، این دستورات را صادر کنید تا هم این مخزن محلی و هم مخزن راه دور GitHub شما، هر دو با مخزن اصلی هماهنگ شوند:
git remote add upstream https://github.com/user/project_name.git git pull upstream master git push -f origin master
مروری سریع بر اصول مقدماتی MVVM
private static string GetScript() { string path = AppDomain.CurrentDomain.BaseDirectory + @"Scripts\script.sql"; var file = new FileInfo(path); string script = file.OpenText().ReadToEnd(); return script; } private static void ExecuteScript() { string script = GetScript(); //split the script on "GO" commands var splitter = new[] {"\r\nGO\r\n"}; string[] commandTexts = script.Split(splitter, StringSplitOptions.RemoveEmptyEntries); foreach (string commandText in commandTexts) { using (var ctx = new DbContext()) { if (!string.IsNullOrEmpty(commandText)) { ctx.Database.ExecuteSqlCommand(commandText); } } } }
CoffeeScript #1
مقدمه
CoffeeScript یک زبان برنامه نویسی برای تولید کدهای جاوااسکریپت است که Syntax آن الهام گرفته از Ruby و Python است و بسیاری از ویژگیهایش، از این دو زبان پیاده سازی شده است.سوالی که ممکن است برای هر کسی پیش بیاید این است که چرا باید از CoffeeScript استفاده کرد و یا چرا نوشتن CoffeeScript بهتر از نوشتن مستقیم جاوااسکریپت است؟
از جمله دلایلی که میشود عنوان کرد:
حجم کد کمتری نوشته میشود (تجربه شخصی من: تقریبا کدنویسی شما به یک سوم تا نصف تبدیل میشود)، بسیار مختصر است و پیاده سازی prototype aliases و classes به سادگی و با حداقل کدنویسی انجام میگیرد.
CoffeeScript زیرمجموعهای از جاوااسکریپت نیست، اگرچه از کتابخانههای خارجی جاوااسکریپت میتوان در کدهای CoffeeScript استفاده کرد، اما برای اینکار باید کدهای مورد نیاز را به CoffeeScript تبدیل کرد تا از خطای زمان کامپایل جلوگیری شود.
پیش نیاز نوشتن کد به زبان CoffeeScript، شناخت جاوااسکریپت است تا بتوان خطاهای زمان اجرا را اصلاح کرد.
CoffeeScript محدودیتی در مرورگر ندارد و میتوان در برنامههای جاوااسکریپتی تحت سرور مانند Node.js با کیفیت بالا نیز از آن استفاده کرد.
زمانی را که برای یادگیری CoffeeScript صرف میکنید در زمان نوشتن پروژه، نتیجهی آنرا متوجه خواهید شد.
راه اندازی اولیه
یکی از سادهترین راههای نوشتن CoffeeScript استفاده از نسخهی مرورگر این زبان است و برای اینکار باید وارد سایت CoffeeScript.Org شده و بر روی تب Try CoffeeScript کلیک کنید. این سایت از نسخهی مرورگر CoffeeScript Compiler استفاده میکند و هر کدی CoffeeScript ایی که در پنل سمت چپ سایت بنویسید، تبدیل به جاوااسکریپت میشود و در پنل راست سایت، نمایش داده میشود.
همچنین میتوانید با استفاده از پروژهی js2coffee کدهای جاوااسکریپت را به کدهای CoffeeScript تبدیل کنید.
در صورتیکه بخواهید از نسخهی درون مرورگری CoffeeScript Compiler استفاده کنید، باید یک تگ اسکریپت لینک به این اسکریپت و با اضافه کردن تگ اسکریپت با type coffeescript این کار را انجام دهید. برای نمونه:
<script src="http://jashkenas.github.com/coffee-script/extras/coffee-script.js" type="text/javascript" charset="utf-8"></script> <script type="text/coffeescript"> # Some CoffeeScript </script>
برای نصب باید آخرین نسخهی Node.js و (npm (Node Package Manager را نصب کرده باشید. برای نصب CoffeeScript با استفاده از npm از دستور زیر استفاده کنید.
npm install -g coffee-script
coffee --compile my-script.coffee
ارسال ایمیل در ASP.NET Core
در این مقاله قصد داریم اطلاعات مفیدی را در مورد طراحی دیتابیسهای چند زبانه، در اختیار شما بگذاریم. مدتی قبل به طراحی دیتابیسی که چند زبانه بودن توضیحات کالا را برای مشتریانی از کشورهای مختلف پشتیبانی میکرد، نیاز داشتم. وقتی شروع به پیاده سازی طرح دیتابیس کردم، جواب سرراست نبود. زمانیکه در وب برای بهترین راه جستجو میکردم، با نظرات و روشهای زیادی مواجه شدم. در ادامه بعضی از روشهای محبوب را بیان میکنم.
ستون اضافی : این سادهترین راه است و به ازای هر ستونی که نیاز به ترجمه داشته باشد، ستون اضافی در نظر میگیریم.CREATE TABLE app_product ( Id Int IDENTITY NOT NULL, Description_en Text, Description_pl Text, PRIMARY KEY (Id) );
مزایا :
- سادگی
- کوئریهای آسان (بدون نیاز به join )
معایب :
- اضافه کردن زبان جدید نیاز به تغییر جداولی
که چند زبانه هستند دارد
- اگر وارد کردن داده برای همه زبانها الزامی
نباشد (بعضی جاها فقط زبان پیش فرض الزامی است) ممکن است دادههای زیاد و یا فیلدهای خالی در دیتابیس ایجاد شود
- نگهداری آن مشکل است
CREATE TABLE ref_language ( Code Char(2)NOT NULL, Name Varchar(20) NOT NULL, PRIMARY KEY (Code) ); CREATE TABLE app_translation ( Id Int IDENTITY NOT NULL, PRIMARY KEY (Id) ); CREATE TABLE app_translation_entry ( TranslationId Int NOT NULL, LanguageCode Char(2) NOT NULL, Text Text NOT NULL, FOREIGN KEY (TranslationId) REFERENCES app_translation(Id), FOREIGN KEY (LanguageCode) REFERENCES ref_language(Code) ); CREATE TABLE app_product ( Id Int IDENTITY NOT NULL, Description Int NOT NULL, PRIMARY KEY (Id), FOREIGN KEY (Description) REFERENCES app_translation(Id) );
مزایا :
- اضافه کردن زبان جدید به تغییر طرح دیتابیس
نیاز ندارد
- به نظر تمیز است و رویکرد رابطهای دارد
- همه ترجمهها در یک مکان است (بعضیها میگویند این جز معایب است چون امکان خوانایی و نگهداری کمتر است)
معایب :
- کوئریهای پیچیده (به join های چندگانه نیاز دارد تا شرح کالا را به درستی نمایش دهد)
- پیچیدگی زیاد
CREATE TABLE ref_language ( Code Char(2)NOT NULL, Name Varchar(20) NOT NULL, PRIMARY KEY (Code) ); CREATE TABLE app_product ( Id Int IDENTITY NOT NULL, PRIMARY KEY (Id) ); CREATE TABLE app_product_translation ( ProductId Int NOT NULL, LanguageCode Char(2) NOT NULL, Description Text NOT NULL, FOREIGN KEY (ProductId) REFERENCES app_product(Id), FOREIGN KEY (LanguageCode) REFERENCES ref_language(Code) );
مزایا :
- اضافه کردن زبان جدید به تغییر طرح دیتابیس
نیاز ندارد
- کوئریهای نسبتا ساده است
معایب :
- ممکن است تعداد جداول دو برابر شود
سه مثال نشان داده شده در بالا به ما ایده میدهند که چگونه روشهای مختلف ممکن است استفاده شوند. البته اینها همه گزینههای ممکن نیستند، فقط محبوبترین روشها هستند و شما میتوانید آنها را ویرایش کنید؛ به عنوان مثال با تعریف View های اضافی که join های پیچیده شما را در کدها، ذخیره میکنند. راه حلی که شما انتخاب میکنید به نیازمندیهای پروژه وابسته است. اگر شما به سادگی نیاز دارید و مطمئن هستید تعداد زبانهای پیشتیبانی کم و ثابت است، میتوانید راه حل اول را انتخاب کنید. اگر به انعطاف پذیری بیشتری نیاز دارید، میتوانید join های ساده در کوئریهای چند زبانه را انتخاب کنید. راه حل سوم انتخاب مناسبی است.
منبع :
http://fczaja.blogspot.com/2010/08/multilanguage-database-design.html
در این عنوان، NH همان NHibernate است و FHN همان Fluent NHibernate
نگارش آزمایشی NH 3.2 هم اکنون در دسترس است و یکی از مهمترین مباحثی را که پوشش داده، جایگزین کردن فایلهای XML تهیه نگاشتها با کدنویسی است. دقیقا چیزی شبیه به Fluent NHibernate البته اینبار از یک کتابخانه دیگر به نام ConfOrm کدها یکی شدهاند.
باید توجه داشت که نگارش 3.2 خاصیت AutoMapping مربوط به FHN را پشتیبانی نمیکند (یا هنوز در این نگارش به این حد نرسیده است)، بنابراین نمیتواند جایگزین صد در صدی برای FHN باشد اما باز هم تا حدود 75 درصد کار FHN را پوشش میدهد و میتواند علاقمندان را از این وابستگی خارجی (!) نجات دهد.
و ... این مساله نویسندهی اصلی FHN را کمی دلگیر کرده است که آیا FHN را ادامه دهد یا خیر. اصل مطلب رو میتونید اینجا بخونید.
نظر بعضیها هم در این بین این بوده!