خانه / fd (صفحه 20)

fd

پردازش تصویر در NodeJs با Jimp — راهنمای کاربردی

تصور کنید یک مشتری از شما خواسته است که همه تصاویر موجود در گالری یک وب‌سایت را واترمارک کنید و همچنین آن‌ها را برش داده و به وضوح (Resolution) یکسانی درآورید. در واقع راه‌حل شما باید با زیرساخت موجود جاوا اسکریپت کاربر ادغام شود. این کار از طریق یک بسته ساده اما قدرتمند NodeJs که اخیراً معرفی شده و Jimp نام دارد میسر خواهد بود. Jimp اختصاری برای «برنامه دستکاری تصویر جاوا اسکریپت» (JavaScript Image Manipulation Program) است. می‌توانید صفحه معرفی پروژه را در این نشانی (+) ملاحظه کنید. استفاده از Jimp در یک مسیر صعودی قرار دارد و در حال حاضر بیش از 180،000 دانلود هفتگی دارد. تیم توسعه‌دهنده آن، issue-های مطرح شده روی گیت‌هاب را به سرعت شناسایی و رفع می‌کنند. در مواردی برخی از مشکلات در کمتر از 24 ساعت رفع شده و در طی 48 ساعت issue-ها بسته شده و برای انتشار در نسخه بعدی کامیت می‌شوند. تعداد issue-های باز Jimp در حال حاضر در حدود 40 مورد است که برای یک پروژه به این بزرگی که زمان زیادی نیز از معرفی آن نمی‌گذرد، عدد بسیار مناسبی محسوب می‌شود. بدیهی است که جامعه بسیار فعالی در پس توسعه Jim..

توضیحات بیشتر »

تولید مجموعه داده های تصادفی با استفاده از SQL — راهنمای مقدماتی

آیا تاکنون نیاز داشته‌اید که یک پایگاه داده را با داده‌های تصادفی؛ اما واقعی پر کنید. این داده‌ها با مقاصدی از قبیل تست، نمایش یا تمرین ممکن است مورد استفاده قرار گیرند. این داده‌هادر وضعیت‌های زیادی مورد نیاز هستند و به عنوان یک توسعه‌دهنده ممکن است در مواقع زیادی با این نیاز مواجه شوید. در این نوشته به توضیح روش تولید مجموعه داده های تصادفی با استفاده از SQL می‌پردازیم. در مسیر توسعه یک اپلیکیشن زمان چندانی طول نمی‌کشد که یکی از افراد تیم نیاز پیدا کند اپلیکیشن را با داده‌های واقعی تست کند. بنابراین باید روشی برای مدیریت و رفع این نیاز بیابیم. یکی از بهترین روش‌ها استفاده از زبان SQL است. SQL یک زبان جالب و شگفت‌انگیز است و کارهایی که با آن می‌توان به سهولت انجام داد بی‌شمار هستند. البته بدیهی است که کتابخانه‌های زیادی وجود دارند که می‌توان این کار را با آن‌ها اجرا کرد. یکی از بهترین این کتابخانه‌ها faker.js (+) است. بسیاری از مثال‌هایی که در این متن مشاهده خواهید کرد با استفاده از faker.js به کد جاوا اسکریپت تبدیل شده‌اند. با این وجود هدف این مقاله آن است که نمایش بدهد چه کارهای..

توضیحات بیشتر »

الگوریتم های مرتب سازی در سوئیفت (Swift) — به زبان ساده

مرتب‌سازی یکی از مفاهیم ضروری برای مدیریت داده‌ها محسوب می‌شود. داده‌های مرتب شده امکان اجرای مؤثرتر الگوریتم‌ها را فراهم می‌سازند. هدف ما از مرتب‌سازی این است که از یک وضعیت بی‌نظمی به وضعیت منظم برسیم. این کار از طرق چیدمان داده‌ها با یک توالی منطقی به دست می‌آید، به طوری که می‌توانیم بفهمیم اطلاعات را از کجا بیابیم. این توالی‌ها را به راحتی می‌توان با استفاده از نوع داده صحیح (Integer) به دست آورد؛ اما در این مسیر می‌توان از کاراکترها (یعنی حروف الفبا) و دیگر مجموعه‌ها مانند اعداد باینری، هگزادسیمال و مشابه نیز بهره جست. در این نوشته با الگوریتم های مرتب سازی در سوئیفت آشنا خواهیم شد. در مثال‌های زیر، از تکنیک‌های مختلفی برای مرتب‌سازی یک آرایه استفاده می‌کنیم. //array of unsorted integers let numberList : Array = [8, 2, 10, 9, 7, 5] برای یک لیست کوتاه، بصری‌سازی مسئله، امری ساده است. برای چیدمان مجموعه به صورت یک دنباله منظم می‌توانیم یک «ناوردا» (invariant) پیاده‌سازی کنیم. ناورداها فرضیاتی را نمایش می‌دهند که در تمام طول اجرا بدون تغییر می‌مانند. برای این که ببینید این وضعیت..

توضیحات بیشتر »

مقایسه ابزارهای مختلف محیط مجازی پایتون — راهنمای جامع

هر زمان که می‌خواهید یک پروژه پایتون جدید را آغاز کنید، باید تصمیم بگیرید که می‌خواهید از کدام نسخه پایتون استفاده کنید. همچنین باید از میان برخی کتابخانه‌ها یا بسته‌ها دست به انتخاب بزنید. البته یک روش دیگر هم این است که این بسته‌ها را در سطح سیستمی نصب نکنید. چون این امکان هست که همزمان بر روی پروژه‌های مختلفی کار کنید که به نسخه‌های متفاوتی از پایتون نیاز دارند. همچنین ممکن است به برخی بسته‌های خاص نیاز داشته باشید که صرفاً با یک نسخه از پایتون کار می‌کنند و روی نسخه‌های دیگر از کار می‌افتند. در چنین مواردی باید محیط‌های مختلفی برای پایتون راه‌اندازی کنیم. این محیط‌ها به نام «محیط مجازی پایتون» (Python Virtual Environments) نامیده می‌شوند. هر محیط مجازی، فضای مجازی خاص خود را دارد. هیچ کدام از بسته‌هایی که درون آن فضا نصب می‌شوند، نمی‌توانند با بسته‌هایی که خارج از محیط هستند، تداخل داشته باشند. معکوس این حالت نیز برقرار است. در این نوشته قصد داریم با برخی از این محیط‌های مجازی آشنا شویم. در ادامه ابزارهای محیط مجازی جدید را معرفی کرده و تفاوت‌های آن‌ها را با همدیگر مورد بررسی قرا..

توضیحات بیشتر »

ویرایش تصاویر با اپلیکیشن Preview در مک — راهنمای کاربردی

نکته جالبی در مورد اپلیکیشن Preview در مک (Mac) وجود دارد که شاید هر کسی به آن توجه نکرده باشد. این اپلیکیشن امکان ویرایش تصاویر را در خود جای داده است. این ویژگی به این دلیل در آن وجود دارد تا دیگر برای تغییرات جزئی نیازی به اپلیکیشن‌های پیچیده نظیر «Adobe Photoshop» یا حتی «Apple Photos» نداشته باشید. در این آموزش به نحوه ویرایش تصاویر با استفاده از اپلیکیشن «Preview» خواهیم پرداخت. توجه داشته باشید که هر تغییری که توسط «Preview» بر روی تصویر خود به وجود بیاورید، غیر قابل بازگشت خواهد بود، در نتیجه اگر می‌خواهید نسخه اصلی تصویر خود را نگه دارید، باید پیش از ویرایش توسط این اپلیکیشن، از آن یک کپی تهیه نمایید. بریدن تصویر توسط اپلیکیشن Preview برای برش تصویر، ابتدا باید بخشی که می‌خواهید نگه دارید را انتخاب نمایید. برای این کار باید از ابزار «Rectangular Marquee» استفاده کنید. این ابزار به طور پیشفرض در حالت انتخاب شده قرار دارد، تنها کاری که در این بخش باید انجام دهید کلیک کردن و کشیدن ماوس بر روی یک محیط است تا انتخاب شود. همچنین در گوشه ماوس خود می‌توانید اندازه‌ی بخش‌های انتخا..

توضیحات بیشتر »

نمایش سیستم های کنترل — مجموعه مقالات جامع مجله فرادرس

در ادامه مجموعه مقالات جامع مجله فرادرس، در این مطلب، مجموعه مقالات مربوط به نمایش سیستم های کنترل را ارائه می‌کنیم. اولین گام در طراحی سیستم‌های کنترل، شناخت کافی نسبت به سیستم، فرایند یا دستگاهی است که می‌خواهیم آن را کنترل کنیم. مدل‌ها، ابزار مناسبی برای رسیدن به این شناخت هستند و می‌توان آن‌ها را از قوانین فیزیکی یا داده‌های تجربی به‌دست آورد. اغلب مدل‌های ریاضی، از معادلات دیفرانسیل حاکم بر سیستم‌ها و براساس قوانین فیزیکی به‌دست می‌آیند. در آموزش نخست از مجموعه مقالات نمایش سیستم‌های کنترل، مفاهیم و روابطِ دو قالبِ متداول برای بیان مدل، یعنی مدل فضای حالت در حوزه زمان و تابع تبدیل در حوزه فرکانس بیان شده که توصیف مناسبی از مدل سیستم‌های دینامیکی را ارائه و تحلیل سیستم و طراحی کنترل‌کننده را تسهیل می‌کنند. در آموزش بعدی، نحوه به‌دست آوردن تابع تبدیل و معادلات فضای حالت را در قالب مثال‌هایی ساده برای سیستم‌های مکانیکی و الکتریکی بررسی می‌کنیم. تعریف این مدل‌ها در نرم‌افزار رایج و کاربردی مهندسی کنترل، یعنی متلب، نیز در این آموزش بیان شده است. سیستم‌های دنیای واقعی، رفتاری غیرخطی ..

توضیحات بیشتر »

طراحی تراکت با پاورقی قابل برش در Word – راهنمای گام به گام

با این که امروزه بیشتر تبلیغات به صورت آنلاین انجام می‌شوند، ولی هنوز هم تراکت‌ها و برگه‌های تبلیغاتی قدرت خود را دارند. اگر محصول یا خدماتی دارید که می‌خواهید برای آن تراکت پخش کنید یا برگه‌های تبلیغاتی آن را بر روی بوردهای تبلیغاتی بچسبانید، پاورقی‌های عمودی قابل برش می‌توانند ارائه راه ارتباطی به مردم را ساده‌تر کنند. در این آموزش می‌خواهیم به نحوه ساخت این نوع صفحات در Word بپردازیم. طراحی پاورقی عمودی قابل برش در هنگام طراحی تراکت باید به ظاهر و محتوای آن توجه داشته باشید تا بتواند نظر رهگذارن را به خود جلب کند. مایکروسافت قالب‌های آماده‌ای برای طراحی برگه‌های تبلیغاتی ارائه می‌دهد که می‌توانند در این امر به شما کمک کنند. در صورت نیاز هم می‌توانید طرح خود را بسازید. در هر صورت توجه داشته باشید تا در پایین صفحه فضای کافی برای طراحی بخش قابل برش عمودی خود داشته باشید. پس از این که کارتان با طراحی و محتوای تراکت تمام شد، زمان آماده‌سازی بخش عمودی قابل برش است. همانطور که قبل‌تر اشاره کردیم، برای این بخش باید فضای کافی در پایین صفحه خود داشته باشید. بهتر است یک حاشیه 3 اینچی در پایی..

توضیحات بیشتر »

آموزش پایتون: ساخت مسدود کننده وب‌ سایت در ۳ مرحله — به زبان ساده

دنیا به سرعت در حال پیشرفت است و فناوری نیز از این قاعده مستثنی نیست. هر روز با چیزهای جدیدی آشنا می‌شویم که تاکنون هرگز به گوشمان هم نخورده بود. اما این وضعیت یک مشکل محسوب نمی‌شود. مشکل اینجا است که چگونه می‌توان منابع مناسبی برای یادگیری همه چیز با ترتیب درست یافت؟ ما در بلاگ فرادرس با ارائه این سری مقالات آموزش عملی پایتون به شما کمک می‌کنیم تا به صورت مرحله به مرحله پایتون را بیاموزید. بنابراین با ما تا انتهای این مقاله نیز همراه باشید. در این نوشته می‌خواهیم اقدم به ساخت یک اپلیکیشن مسدود کننده وب‌ سایت کنیم که دارای یک ساختار ساده و عملیات فایل است و به درک عمیق مفاهیم اساسی پایتون کمک می‌کند. قسمت قبلی این مطلب را می‌توانید از طریق لینک زیر مطالعه کنید: آموزش پایتون: ساخت اپلیکیشن نقشه وب — به زبان ساده مرحله اول ابتدا با محیط آغاز می‌کنیم، زیرا محیط مهم است. برای راه‌اندازی محیط در پایتون سه گام اساسی وجود دارد. ابتدا باید مسیر فایل hosts را پیدا کنید. در ویندوز این فایل در مسیر زیر قرار دارد: C:WindowsSystem32driversetchosts در لینوکس نیز مسیر فایل hosts به صورت زیر ا..

توضیحات بیشتر »

وب اسمبلی (WebAssembly) — به زبان ساده

در این مقاله به بررسی وب اسمبلی خواهیم پرداخت. مفهوم آن را معرفی می‌کنیم و می‌گوییم که قرار است چه مشکلاتی را حل کند. وب‌اسمبلی که به اختصار WASM نامیده می‌شود، یک قالب دستورهای باینری است که برای ماشین مجازی مبتنی بر پشته استفاده می‌شود. وب‌اسمبلی به عنوان یک هدف پرتابل برای کامپایل زبان‌های سطح بالایی مانند C/C++/Rust طراحی شده است و به این ترتیب امکان توسعه اپلیکیشن‌های کلاینت و سرور را روی وب ممکن می‌کند. ما در این راهنما برای این که درک بهتری از این فناوری داشته باشیم، یک الگوریتم نوشتیم که امکان مقایسه عملکرد WASM را در برابر جاوا اسکریپت محض (Vanilla JS) فراهم می‌سازد. بازی زندگی (Life Game) برای اثبات مفاهیم ارائه شده از بازی زندگی طراحی شده از سوی Conway به عنوان مسئله استفاده کرده‌ایم. این بازی بدون بازیکن است و قواعد ساده‌ای دارد: دنیا از یک ماتریس تشکیل یافته است که در آن هر سلول دو حالت زنده یا مرده دارد. تنها ورودی بیرونی، حالت اولیه است. تعامل سلول جاری با سلول همجوار افقی، عمودی و قطری حالت کنونی سلول را تعیین می‌کند. یک سلول زنده که کمتر از دو همسایه آن زنده باشند، ..

توضیحات بیشتر »

آموزش مقدماتی جاوا (بخش دوم) — از صفر تا صد

در بخش قبلی این سری آموزش مقدماتی جاوا با برخی مفاهیم ابتدایی زبان برنامه‌نویسی جاوا آشنا شدیم. در این نوشته نیز برخی مفاهیم دیگر جاوا توضیح داده شده‌اند. Immutable هر کلاسی که حالت شیء آن پس از ایجاد وهله نتواند تغییر یابد به نام Immutable شناخته می‌شود. رشته و همه کلاس‌های پوششی آن و همچنین کلاس enum نمونه‌هایی از کلاس Immutable محسوب می‌شوند. کلاس‌های Immutable از نظر ارث‌بری، thread-safe هستند. روش thread-safe ساختن یک کلاس به صورت زیر است: ابتدا مطمئن شوید که کلاس نمی‌تواند override شود. به این منظور کلاس را به صورت final دربیاورید. همه فیلدهای آن خصوصی باشند. هیچ متدی وجود نداشته باشد که بتواند حالت شیء را تغییر دهد. از این رو نباید از متدهای setter استفاده کرد. از یک کپی defensive یا کلون استفاده کنید. BigDecimal نیز از نظر فنی Immutable محسوب نمی‌شود، زیرا یک کلاس final نیست. String ،StringBuffer و StringBuilder «رشته» (String) به صورت Immutable است، چون ما نمی‌توانیم یک شیء رشته را تغییر دهیم. هر بار که مقدار جدیدی به یک رشته انتساب می‌دهید، در واقع یک شیء جدید رشته در پشت..

توضیحات بیشتر »