تو پروژه های بزرگ نقش دیتابیس خیلی به چشم میاد, تو این جور پروژه ها چشم باز میکنی میبینی حداقل 50 تا جدول داری در حالی که پروژه اونقدر ها هم بزرگ نیست فقط دو تا سایته با یه سرویسی که داره به یه برنامه اندروید سرویس میده.
اکثر جداول هم با هم ارتباط دارن, این موقع اگه دیتابیس طراحی اصولی نداشته باشه و ایندکس گذاری درستی صورت نگرفته باشه دیتابیس کند میشه, حالا اگه کدنویسی درستی هم صورت نگرفته باشه دیگه بدتر میشه.
برای طراحی دیتابیس پیشنهاد میکنم با Visual Paradigm ابتدا دیتابیس رو طراحی کنید کامل جداول, ایندکس ها و روابط , بعد طراحی این نرم افزار بهتون خروجی نوع Engin دیتابیستون رو بهتون میده مثل Mysql , Sql Server و.... , خروجی به صورت کد Sql هست که با اجرا کردن آن همه جداول کامل ایجاد میشن.
سعی کنید نوع فیلد هاتون رو درست انتخاب کنید اگه فیلدی دارید که مطمئن هستید تا 120 یا 255 بیشتر نمیرسه از نوع int نگیرید, از نوع tinyint بگیرید و از این موارد.
داخل جداول ستون هایی که بیشترین سرچ رو میزنید ایندکس گذاری کنید, سرعت واکشی داده های به طور وحشتناکی بالا میره, برای مثال کوئری که 1 دقیقه طول میکشید انجام بشه با ایندکس گذاری درست زیر 1 ثانیه میاد. در مورد ایندکس باید حواستون باشه که زیاده روی در ایندکس گذاری باعث کند شدن هم میشه.
پیشنهاد میکنم مقاله ایی که در آخر بیان میکنم رو در مورد ایندکس گذاری بخونید.
http://www.dotnettips.info/post/2336
مقوله بهینه سازی دیتابیس مقوله بزرگی هست, افرادی که تو این زمینه تخصوص دارن با یک مشاوره مبالغ زیادی رو دریافت میکنن.
@one_programmer
https://telegram.me/one_programmer
اکثر جداول هم با هم ارتباط دارن, این موقع اگه دیتابیس طراحی اصولی نداشته باشه و ایندکس گذاری درستی صورت نگرفته باشه دیتابیس کند میشه, حالا اگه کدنویسی درستی هم صورت نگرفته باشه دیگه بدتر میشه.
برای طراحی دیتابیس پیشنهاد میکنم با Visual Paradigm ابتدا دیتابیس رو طراحی کنید کامل جداول, ایندکس ها و روابط , بعد طراحی این نرم افزار بهتون خروجی نوع Engin دیتابیستون رو بهتون میده مثل Mysql , Sql Server و.... , خروجی به صورت کد Sql هست که با اجرا کردن آن همه جداول کامل ایجاد میشن.
سعی کنید نوع فیلد هاتون رو درست انتخاب کنید اگه فیلدی دارید که مطمئن هستید تا 120 یا 255 بیشتر نمیرسه از نوع int نگیرید, از نوع tinyint بگیرید و از این موارد.
داخل جداول ستون هایی که بیشترین سرچ رو میزنید ایندکس گذاری کنید, سرعت واکشی داده های به طور وحشتناکی بالا میره, برای مثال کوئری که 1 دقیقه طول میکشید انجام بشه با ایندکس گذاری درست زیر 1 ثانیه میاد. در مورد ایندکس باید حواستون باشه که زیاده روی در ایندکس گذاری باعث کند شدن هم میشه.
پیشنهاد میکنم مقاله ایی که در آخر بیان میکنم رو در مورد ایندکس گذاری بخونید.
http://www.dotnettips.info/post/2336
مقوله بهینه سازی دیتابیس مقوله بزرگی هست, افرادی که تو این زمینه تخصوص دارن با یک مشاوره مبالغ زیادی رو دریافت میکنن.
@one_programmer
https://telegram.me/one_programmer
.NET Tips
بررسی الگوهای ایندکسهای Non-Clustered در SQL Server
قصد داریم الگوهای مختلف ایندکس گذاری و استراتژی Non-Clustered Indexes را در Sql Server، بررسی کنیم. مزایای ایجاد ایندکسهای صحیح بر اساس نیازهای واقعی کاری: سریعتر شدن اجرای کوئریهای جستجو در تعداد رکوردهای بالا مرتب سازی سریعتر نتایج (sorting)…
معماری میکروسرویس
برنامه های بزرگ سمت سرور که با تعداد خیلی زیاد از کاربر سرو کار دارند, داده های زیادی هم ردو بدل میکنن,
غیر از اینکه باید درگیر پاسخگویی به کاربر و فراهم کردن وب سرویس ها برای پلتفرم های مختلف باشند. این برنامه ها را باید بتوان به سادگی تغییر یا رشد داد.
یک معماری پیشنهادی برای این منظور معماری میکرو سرویس است. برای شناختن این معماری ابتدا نیاز است معماری Monolithic را بشناسید. این معماری, همه بخش ها از جمله پرداخت انلاین, سیستم مدیریت کاربران, Search , اعلان ها و... همگی در یک واحد منفرد جمع شده اند. برای مثال همه این بخش ها داخل یک پروژه و روی یک سرور در حال پاسخگویی هست.
مشکلاتی که این نوع معماری داره اینه که
- هنگامی که ترافیک سایت بالا بره نیازه که قسمت های مختلف روی سرور های دیگر توزیع شوند.
- همه قسمت های بر اساس یک تکنولوژی نوشته شده اند.
- تغییر یک قسمت باعث تغییر در قسمت های مختلف میشه.
- وابستگی قسمت های مختلف به هم برای مثال یک قسمت از کار افتاده باشد ممکن از قسمت های دیگر از کار بیافتد.
و اما معماری میکرو سرویس برای نجات ما از این مشکلات است, تجربه شخصی بنده نشون داده که این معماری اگر پروژه کمی بزرگ بشه بسیار کارآمد هست.
جایی که کار میکردم پروژه اینفدر بزرگ شده بود همه این مشکلات هم همراش بود, فردی که به عنوان مشاور اون زمان به ما ملحق شد این معماری رو معرفی کرد.
این معماری میگه که قسمت های مختلف باید از هم جدا بشه, برای مثال سرویس های مختلف مثل سیستم پرداخت, سرویس اعتبارسنجی کاربران , سرویس جستجو و... .
هر قسمت به صورت یک سرویس نوشته میشه, حال قسمت های مختلف برای استفاده از این سرویس ها با درخواست HTTP از آن استفاده میکنن.
برای مثال اگر هر سرویسی برای مثال سایت یا برنامه اندروید و... اگر نیاز به جستجو داشت سرویس جستجو رو صدا میزنه این سرویس نتیجه را برمیگرداند.
یا سیستم پرداخت رو مینویسیم که با انواع بانک کار کند حالا هر سیستمی که نیاز به پرداخت دارد این سرویس را صدا میزند.
یا سرویس جستجو رو الآن یا لوسین نوشتم فردا به راحتی میتوانیم عوض کنیم با elastic بنویس چون یک سرویس جداست و به بقیه سرویس ها کاری ندارد.
خوبی این معماری این هست که هر سرویس میتواند به صورت جداگانه توسعه داده شود و ربطی به قسمت های دیگر ندارد.
- سرویس ها میتوانند از تکنولوژی های مختلف استفاده کنند PHP, ASP , Ruby,...
- هر سرویس میتواند به صورت جداگانه توسعه داده شود
- مانیتور کردن و تغییر هر سرویس خیلی ساده هست.
- همه سرویس ها میتوانند از بقیه سرویس ها استفاده کنند.
- به راحتی میتوان سرویس اضافه کرد یا تغییر در سرویس داد.
و در آخر معماری میکرو سرویس یکسری سختی ها هم دارد
- از آنجا که ارتباط سرویس ها با HTTP هست کمی سربار دارد ولی با توجه به مزیت هایی که دارد ارزش این سربار را دارد (بنده از میکرو سرویس تو پروژه بزرگ استفاده کردم اونقدر ها سرباز نداشت تو سرور های داخلی)
- روند توسعه یک مقداری کند تر پیش میره
- باید رمز نگاری و امنیت داده ها بین سرویس ها حفظ بشه
- پایگاه داده
اگر قرار باشد که هر سرویس پایگاه داده خود را داشته باشد کار کمی سخت میشود برای مدیریت transaction و.. برای همین معمولا از یک دیتابیس مرکزی استفاده میشود.
@one_programmer
https://telegram.me/one_programmer
برنامه های بزرگ سمت سرور که با تعداد خیلی زیاد از کاربر سرو کار دارند, داده های زیادی هم ردو بدل میکنن,
غیر از اینکه باید درگیر پاسخگویی به کاربر و فراهم کردن وب سرویس ها برای پلتفرم های مختلف باشند. این برنامه ها را باید بتوان به سادگی تغییر یا رشد داد.
یک معماری پیشنهادی برای این منظور معماری میکرو سرویس است. برای شناختن این معماری ابتدا نیاز است معماری Monolithic را بشناسید. این معماری, همه بخش ها از جمله پرداخت انلاین, سیستم مدیریت کاربران, Search , اعلان ها و... همگی در یک واحد منفرد جمع شده اند. برای مثال همه این بخش ها داخل یک پروژه و روی یک سرور در حال پاسخگویی هست.
مشکلاتی که این نوع معماری داره اینه که
- هنگامی که ترافیک سایت بالا بره نیازه که قسمت های مختلف روی سرور های دیگر توزیع شوند.
- همه قسمت های بر اساس یک تکنولوژی نوشته شده اند.
- تغییر یک قسمت باعث تغییر در قسمت های مختلف میشه.
- وابستگی قسمت های مختلف به هم برای مثال یک قسمت از کار افتاده باشد ممکن از قسمت های دیگر از کار بیافتد.
و اما معماری میکرو سرویس برای نجات ما از این مشکلات است, تجربه شخصی بنده نشون داده که این معماری اگر پروژه کمی بزرگ بشه بسیار کارآمد هست.
جایی که کار میکردم پروژه اینفدر بزرگ شده بود همه این مشکلات هم همراش بود, فردی که به عنوان مشاور اون زمان به ما ملحق شد این معماری رو معرفی کرد.
این معماری میگه که قسمت های مختلف باید از هم جدا بشه, برای مثال سرویس های مختلف مثل سیستم پرداخت, سرویس اعتبارسنجی کاربران , سرویس جستجو و... .
هر قسمت به صورت یک سرویس نوشته میشه, حال قسمت های مختلف برای استفاده از این سرویس ها با درخواست HTTP از آن استفاده میکنن.
برای مثال اگر هر سرویسی برای مثال سایت یا برنامه اندروید و... اگر نیاز به جستجو داشت سرویس جستجو رو صدا میزنه این سرویس نتیجه را برمیگرداند.
یا سیستم پرداخت رو مینویسیم که با انواع بانک کار کند حالا هر سیستمی که نیاز به پرداخت دارد این سرویس را صدا میزند.
یا سرویس جستجو رو الآن یا لوسین نوشتم فردا به راحتی میتوانیم عوض کنیم با elastic بنویس چون یک سرویس جداست و به بقیه سرویس ها کاری ندارد.
خوبی این معماری این هست که هر سرویس میتواند به صورت جداگانه توسعه داده شود و ربطی به قسمت های دیگر ندارد.
- سرویس ها میتوانند از تکنولوژی های مختلف استفاده کنند PHP, ASP , Ruby,...
- هر سرویس میتواند به صورت جداگانه توسعه داده شود
- مانیتور کردن و تغییر هر سرویس خیلی ساده هست.
- همه سرویس ها میتوانند از بقیه سرویس ها استفاده کنند.
- به راحتی میتوان سرویس اضافه کرد یا تغییر در سرویس داد.
و در آخر معماری میکرو سرویس یکسری سختی ها هم دارد
- از آنجا که ارتباط سرویس ها با HTTP هست کمی سربار دارد ولی با توجه به مزیت هایی که دارد ارزش این سربار را دارد (بنده از میکرو سرویس تو پروژه بزرگ استفاده کردم اونقدر ها سرباز نداشت تو سرور های داخلی)
- روند توسعه یک مقداری کند تر پیش میره
- باید رمز نگاری و امنیت داده ها بین سرویس ها حفظ بشه
- پایگاه داده
اگر قرار باشد که هر سرویس پایگاه داده خود را داشته باشد کار کمی سخت میشود برای مدیریت transaction و.. برای همین معمولا از یک دیتابیس مرکزی استفاده میشود.
@one_programmer
https://telegram.me/one_programmer
Telegram
یادداشت های یه برنامه نویس
این کانال برای در میان گذاشتن یادداشت ها و تجربیات جالب در مورد برنامه نویسی هست امیدوارم دوست داشته باشین.
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
معماری میکرو سرویس
سرویس ها میتوانند با هم ارتباط داشته باشند.
@one_programmer
https://telegram.me/one_programmer
سرویس ها میتوانند با هم ارتباط داشته باشند.
@one_programmer
https://telegram.me/one_programmer
امروز میخام یه سری نکات و سایت جالب معرفی کنم. ما همیشه یه بحثی که تو شرکت داشتیم این بود که هنگامی که داریم یه وب سرویس مینویسیم, استاندارد ما برای نام گذاری, نحوه نشان دادن مقدار و نوع نوشته (uppercase, camelcase,pascalcase,..) کدوم این موارد درسته.
برای مثال با اندروید کار شرکت همیشه بحث داشتیم که خروجی فیلدی که از نوع ثابت و Enum هست چطوری نوشته بشه یا مقدارش چی باشه Int باشه یا string. اسم فیلد های چطوری باشه camelcase باشه یا pascalcase باشه.
میخام سایتی رو بهتون معرفی کنم که همه این مشکلات رو برطرف میکنه
گوگل یک راهنمای در این زمینه دارد.
https://google.github.io/styleguide/jsoncstyleguide.xml
کامل توضیح داده که برای مثال اسم فیلد ها camelcase باشد, یا مقادیر Enum به صورت رشته و uppercase باشه و خیلی موارد دیگه
توصیه میکنم کامل بخونید تا با استاندارد های نام گذاری و نحوه خروجی دادن به صورت json کامل آشنا بشید.
@one_programmer
http://telegram.me/one_programmer
برای مثال با اندروید کار شرکت همیشه بحث داشتیم که خروجی فیلدی که از نوع ثابت و Enum هست چطوری نوشته بشه یا مقدارش چی باشه Int باشه یا string. اسم فیلد های چطوری باشه camelcase باشه یا pascalcase باشه.
میخام سایتی رو بهتون معرفی کنم که همه این مشکلات رو برطرف میکنه
گوگل یک راهنمای در این زمینه دارد.
https://google.github.io/styleguide/jsoncstyleguide.xml
کامل توضیح داده که برای مثال اسم فیلد ها camelcase باشد, یا مقادیر Enum به صورت رشته و uppercase باشه و خیلی موارد دیگه
توصیه میکنم کامل بخونید تا با استاندارد های نام گذاری و نحوه خروجی دادن به صورت json کامل آشنا بشید.
@one_programmer
http://telegram.me/one_programmer
Telegram
یادداشت های یه برنامه نویس
این کانال برای در میان گذاشتن یادداشت ها و تجربیات جالب در مورد برنامه نویسی هست امیدوارم دوست داشته باشین.
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
امروز ۲۲ شهریور (۱۲ سپتامبر) مطابق با ۲۵۶ امین روز سال روز جهانی برنامه نویس نام دارد.
روز برنامه نویس رو به همه برنامه نویس های شریفی که با کیبورد جهان بهتری برای دیگران میسازند تبریک میگیم.
"Mohsen"
@one_programmer
http://telegram.me/one_programmer
روز برنامه نویس رو به همه برنامه نویس های شریفی که با کیبورد جهان بهتری برای دیگران میسازند تبریک میگیم.
"Mohsen"
@one_programmer
http://telegram.me/one_programmer
Telegram
یادداشت های یه برنامه نویس
این کانال برای در میان گذاشتن یادداشت ها و تجربیات جالب در مورد برنامه نویسی هست امیدوارم دوست داشته باشین.
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
اخبار روز آزادی نرمافزار تهران:
امسال جشنوارهٔ روز آزادی نرمافزار تهران، پنجشنبه ۸ مهر ۱۳۹۵ در دانشگاه شریف برگزار خواهد شد.
#tehsfd
وبسایت جشنواره:
http://sfd.fsug.ir/1395/
توصیه میکنم حتما شرکت کنید
@one_programmer
http://telegram.me/one_programmer
امسال جشنوارهٔ روز آزادی نرمافزار تهران، پنجشنبه ۸ مهر ۱۳۹۵ در دانشگاه شریف برگزار خواهد شد.
#tehsfd
وبسایت جشنواره:
http://sfd.fsug.ir/1395/
توصیه میکنم حتما شرکت کنید
@one_programmer
http://telegram.me/one_programmer
Telegram
یادداشت های یه برنامه نویس
این کانال برای در میان گذاشتن یادداشت ها و تجربیات جالب در مورد برنامه نویسی هست امیدوارم دوست داشته باشین.
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
@one_programmer
https://t.me/one_programmer
ادمین @EngMohsen
Linkedin:https://www.linkedin.com/in/mohsen-rajabi72
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی 1 هفته اس داری روی یه باگ کار میکنی و انگار نه انگار 😂
@one_programmer
http://telegram.me/one_programmer
@one_programmer
http://telegram.me/one_programmer
This media is not supported in your browser
VIEW IN TELEGRAM
اگه گوگل یه آدم بود...
این ویدیو طنز بیش از 50 میلیون بار دانلود شده!
حتما ببینید
@one_programmer
http://telegram.me/one_programmer
این ویدیو طنز بیش از 50 میلیون بار دانلود شده!
حتما ببینید
@one_programmer
http://telegram.me/one_programmer
یک لینک خوب برای آموزشی اینکه چگونه کد بنویسیم و کدنویسی تمیزی داشته باشیم.
این مورد خیلی مهمه مخصوصا وقتی که دارید تیمی کار میکنید و چند تفر روی یه پروژه هستید.
http://www.dotnettips.info/post/132/زیباتر-کد-بنویسیم
@one_programmer
http://telegram.me/one_programmer
این مورد خیلی مهمه مخصوصا وقتی که دارید تیمی کار میکنید و چند تفر روی یه پروژه هستید.
http://www.dotnettips.info/post/132/زیباتر-کد-بنویسیم
@one_programmer
http://telegram.me/one_programmer
.NET Tips
زیباتر کد بنویسیم
داشتن آگاهی در مورد ساختارهای دادهها، الگوریتمها و یا عملگرهای بیتی بسیار عالی است و یا تسلط بر نحوهی کارکرد ابزارهایی مانند SharePoint و امثال آن این روزها ضروری است. اما باید در نظر داشت، کدی که امروز تهیه میشود شاید فردا یا ماه دیگر یا چند سال بعد…
شما هم وقتی توی یه کد به مشکل میخورین وقتی حلش می کنید و کلی خوشحال میشین از پشت سیستم بلند میشید راه میرید و فکر میکنید خیلی خفنید؟؟
anonymous poll
آره – 119
👍👍👍👍👍👍👍 85%
نه – 21
👍 15%
👥 140 people voted so far.
anonymous poll
آره – 119
👍👍👍👍👍👍👍 85%
نه – 21
👍 15%
👥 140 people voted so far.
پوشش زنده مراسم معرفی گوشی های پیکسل گوگل، سه شنبه 13 مهر ماه ساعت 19:30
http://www.zoomit.ir/2016/10/3/136805/google-pixel-event-live-blogging/
@one_programmer
http://www.zoomit.ir/2016/10/3/136805/google-pixel-event-live-blogging/
@one_programmer
زومیت
پوشش زنده مراسم معرفی گوشی های پیکسل گوگل، سه شنبه 13 مهر ماه ساعت 19:30
مراسم سه شنبه گوگل با معرفی گوشی های Pixel و Pixel XL همراه خواهد بود، اما این کمپانی علاوه بر گوشی با دست پر خواهد آمد.
بلاخره ورژن 2 فریمورک خوب Vue اومده.
لازمه بگم این فریمورک خیلی معروف نیست اما چند تا نکته داره، رقیب هاش angular و react js هستن.
لازمه بگم انگولار 1 که خیلی خیلی کند هست نسبت به رقیب هاش، اما انگولار 2 اومده تا حددی جبران کرده.
اما react js داری سرعت خوبی هست.
اما حالا با اومدن Vue ورژن 2 از همه سریع تر شده، تو جهان هم ازش زیاد استفاده میکنن برای مثال فریمورک معروف لاراول به صورت پیشفرض از Vue استفاده میکنه.
http://vuejs.org
@one_programmer
http://telegram.me/one_programmer
لازمه بگم این فریمورک خیلی معروف نیست اما چند تا نکته داره، رقیب هاش angular و react js هستن.
لازمه بگم انگولار 1 که خیلی خیلی کند هست نسبت به رقیب هاش، اما انگولار 2 اومده تا حددی جبران کرده.
اما react js داری سرعت خوبی هست.
اما حالا با اومدن Vue ورژن 2 از همه سریع تر شده، تو جهان هم ازش زیاد استفاده میکنن برای مثال فریمورک معروف لاراول به صورت پیشفرض از Vue استفاده میکنه.
http://vuejs.org
@one_programmer
http://telegram.me/one_programmer
vuejs.org
Vue.js
Vue.js - The Progressive JavaScript Framework