برچسب: برنامه نویسی

چیدمان خودکار کدها در Notepad++

تصور میکنم بتوان ادعا کرد که غیر ممکن است یک برنامه نویس نسبتا با تجربه، با برنامه Npp یا Notepad++ آشنا نباشد. این برنامه که تقریبا از سال 2010 به عنوان یک پروژه منبع باز ارائه شده، در واقع یک text editor و syntax highlighter سریع و ساده است.

npp

اگر بخواهیم مهمترین ویژگی های این ابزار را از زمان پیدایش آن تا کنون نام ببریم، میتوان به موارد زیر اشاره کرد:

  • فرمت و رنگ آمیزی زیبا و مناسب کدها برای خوانش بهتر و همینطور امکانات مناسب جهت چاپ آنها.
  • محیط multitab و امکان کار همزمان با فایلهای مختلف.
  • پشتیبانی عالی از عبارات باقاعده (RegEx) در Search and Replace.
  • امکان توسعه برنامه با استفاده از plugin های کاربردی.

یکی از قابلیتهایی که تا مدتها فقدان آن در این ادیتور محبوب احساس میشد، این بود که علاوه بر رنگ آمیزی و syntax highlight امکان format و کردن auto indentation هم موجود باشد.

در حال حاضر این فابلیت با استفاده از پلاگین NppAstyle برای زبانهای خانواده Java فراهم شده است. جهت استفاده از این پلاگین به آدرس پروژه آن https://code.google.com/p/nppastyle مراجعه نمایید.


چگونه از توابع مخرب یا destructor در Java استفاده کنیم

توابع مخرب یا destructor کاربرد زیادی در مدیریت حافظه برنامه های نوشته شده در C++ دارند. عموما در مورد کلاسهای طراحی شده، با استفاده از این متد به آزاد سازی حافظه پرداخته میشود.

javalogo

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

برای انجام این کار در کلاس مربوطه یک تابع به نام finalize پیاده سازی گشته و سیستم Garbage Collector در زمان اتمام استفاده از کلاس و آزاد سازی تمام ارجاعات آن، تابه finalize را فراخوانی مینماید.

از آنجا که زمان عملکرد Grabage Collector نا مشخص است، با استفاده از دستورات gc و runFinalization میتوان ماشین مجازی را ملزم به آزاد سازی حافظه (جمع آوری زباله ها از حافظه) نمود.

مثال زیر نحوه انجام این کار را نشان میدهد:

import java.util.ArrayList;

public class Samples  {
    public static void main(String[] args){
        long mem = Runtime.getRuntime().freeMemory();

        SampleClass c1 = new SampleClass();
        SampleClass c2 = new SampleClass();
        SampleClass c3 = new SampleClass();

        System.out.println(String.format("Used memory: %d KB", (mem - Runtime.getRuntime().freeMemory())/1024));
        mem = Runtime.getRuntime().freeMemory();

        c1 = c2 = c3 = null;

        System.gc();
        System.runFinalization();

        System.out.println(String.format("Released memory: %d KB", (Runtime.getRuntime().freeMemory() - mem)/1024));
    }
}

class SampleClass {
    private ArrayList<Double> _obj;

    public SampleClass() {
        _obj = new ArrayList<Double>();
        for (int i=0; i<1000000; i++)
            _obj.add(Math.random());

        System.out.println("Created");
    }

    public void finalize() {
        _obj.clear();
        _obj = null;
        System.out.println("Finalized");
    }

}

خروجی احتمالی برنامه به این صورت است. بدیهیست که سیستم Garbage Collector هیچ تضمینی جهت مصرف یا آزاد سازی دقیق میزان حافظه ندارد.

Created
Created
Created
Used memory: 62354 KB
Finalized
Finalized
Finalized
Released memory: 11123 KB

ساخت ابعاد مختلف آیکون‌ها با Appiconizer

یکی از خسته‌ کننده‌ترین کارهایی که طراحان App ملزم به انجام آن هستند، طراحی ابعاد مختلف icon قبل از کامپایل برنامه است. با توجه به نوع برنامه مثلا Mobile، Desktop، Web، Extended و غیره، ابعاد مختلفی از icon های یک‌سان، مورد نیاز است که عموما با تبدیل ابعاد یکی از آنها به انجام می‌رسد.

برای حل این مشکل و راحت شدن از انجام این عمل تکراری، ابزار آنلاین Appiconizer را جهت انجام آن طراحی نموده‌ام که با دریافت یک فایل icon با ابعاد ترجیحی 512 یا 1024 و کیفیت مناسب، تمام ابعاد قابل پشتیبانی توسط حالات مختلف نرم‌افزار را برای شما تولید می‌نماید.

  appiconizer online


خواندن و نوشتن اشیاء اختصاصی در AS3 و عمل Serialization

یکی از مفاهیم بسیار مهم در جا‌به جایی اطلاعات، مبحث Serialization است که در مورد چگونگی قرارگیری داده‌ها در امتداد یکدیگر به منظور خواندن و نوشتن می‌پردازد.

flash as3

به عنوان مثال:
– ذخیره کردن یک کلاس در Shared Object
– خواندن و نوشتن اشیاء در ByteArray
– خواندن و نوشتن داده‌ها در فایل‌ها
– ارسال اطلاعات از طریق تکنولوژی‌هایی مانند AMF

موارد فوق همگی از حالاتی هستند که از مفهوم Serialization استفاده می‌گردد.

در زمان کار با داده‌های استانداردی مانند int، uint، String، Date، Array و …، AS3 می‌داند که اطلاعات ذخیره شده در این اشیاء را چگونه ذخیره و بازیابی نماید. اما اگر شئ مورد نظر از یک کلاس اختصاصی و غیر استاندارد ایجاد شده باشد، تعیین ترتیب خوانده و نوشته شدن محتوای آن شئ به عهده برنامه نویس خواهد بود.
(ادامه مطلب…)


طراحی روبات تشخیص موانع با سنسور مافوق صوت

این روبات با استفاده از Arduino Pro mini طراحی شده است. تصاویر مدار و مراحل کار، کاملا روشن و گویا هستند. از یک آردوینو پرو مینی 5 ولت و IC L293D جهت درایو موتورها استفاده شده و به منظور زیبا سازی کار led و اسپیکر هم مورد استفاده قرار گرفته‌اند.

پس از شروع حرکت، با توجه به توابع random که در کد برنامه استفاده شده است، عملکردهای جالب و اتفاقی مانند توقف یا پخش موزیک انجام می‌گردد. همچنین در صورت نزدیک شدن روبات به موانع، حرکت متوقف شده و پس از بازگشت روبات، جهت دیگری به صورت تصادفی انتخاب شده و روبات مجددا در جهت جدید شروع به حرکت می‌نماید.

Arduino Sonar Robot

(ادامه مطلب…)



  • آرشیو:

  • .
    Copyright (c) 2010 www.mshams.ir