یاداشت های کوتاه یک برنامه نویس

طبقه بندی موضوعی
۲۷
فروردين

با استفاده از عملگر باقی مانده ی تقسیم (%):

همون طور که در ریاضیات عددی زوج است که باقی مانده ی تقسیم اش بر دو ، صفر باشد. پس به عنوان یک روش با استفاده از % زوج بودن عددی را تعیین میکنیم:

boolean is_even = (n % 2 == 0);

تعیین زوج و فرد با استفاده از عملیات بیتی و عملگر بیتی &:

برای این کار ما به آخرین رقم از مقدار باینری عدد نیاز داریم که با and کردن آن با یک به دست می آید. به این صورت:

number & 1

اگر حاصل یک باشد، عدد فرد است و اگر صفر باشد، عدد زوج است.

برای مثال :

1-پنج فرد است پس: 

0000 0101 & 0000 0001 = 0000 0001

2- و شش زوج است:

0000 0110 & 0000 0001 = 0000 0000

و نمونه کد جاوا :

if( (number&1) == 0){
      system.out.println("even");
   }else{
        system.out.println("odd");
      }

در زیر کاپوت :

همان طور که میدانید عملگر منطقی and (&) دو مقدار دودویی با طول مساوی دریافت کرده و بر روی هر جفت بیت متناظر، عملیات عطف منطقی را انجام می‌دهد. نتیجه وقتی ۱ می‌شود که اولین بیت و دومین بیت هر دو با هم ۱ باشند، در غیر این صورت صفر خواهد بود.

جدول زیر را در نظر بگیرید:

20 21 22 23 24 25 26 27 28 29
1 2 4 8 16 32 64 128 256 512

دو به توان هر عدد صحیح غیر منفی و صفر ، همیشه زوج خواهد بود. (نمی دونم صفر مثبته یا منفی؟)

کمترین ارزش را سمت راست ترین رقم خواهد داشت. و مقدار آن در صورت صحیح بودن یک خواهد بود.

عدد یک در مبنای دو برابر با یک است و به سمت چپ تمامی ارقام صفر خواهند بود و این هیچ تاثیری بر ارزش عدد ندارد. (00000001) .

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

به عبارتی دیگر عطف منطقی با عدد یک، باعث میشود تمام ارقام عدد مورد آزمایش به غیر از آخرین رقم صفر شود و اگر رقم آخر یک باشد نتیجه یک می شود و فرد بودن عدد مورد آزمایش را نتیجه میدهد.

  • * RayanFar
۲۱
فروردين

تجربه ی زبان پایتون برای من زیاد جالب نبود. تا این که groovy رو کشف کردم. تنها مشکلی که داشت نصاب ناکارامدش بود که متغییر محیطی Groovy_home رو درست ست نمیکنه. سنگین تر بودم اگر فایل زیپ اش رو دانلود میکردم و بعد از آنزیپ متغییر ها رو دستی تنظیم میکردم(نمیدونم کار به این سادگی چه نیازی به installer داره اصلا ؟! ).

چرا groovy  برای من جالبه؟

1-چون نوع متغییر ها رو میتونم مشخص کنم یا با کلمه ی کلیدی def این کار رو به زمان کامپایل بسپارم. در نتیجه کد های کوتاه تری خواهم داشت.

2- چون براکت ها در این زبان وجود دارند و بودن سمی کالن در پایان هر statement اختیاری است. در نتیجه خوانایی رو فدای کوتاهی نکردند ....

3-چون هم به صورت اسکریپت میتونم ازش استفاده کنم و کار های دم دستی و تکراری رو خودکار کنم و هم اینکه قابل کامپایل به بایت کد های جاوا است.

  • * RayanFar
۱۵
فروردين

اندازه طول و عرض عناصری که در رابط گرافیکی کاربر نمایش داده میشوند معمولا توسط درصد یا مستقیما با تعیین مقدار پیکسل تنظیم میشوند.

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

در روش اول اگر به صورت درصد عدد 10 را به عنوان طول مثلا یک تصویر تعیین کنیم در رزولوشن پایه (من از 1152*2048 به عنوان روزلوشن پایه استفاده میکنم) این مقدار 204.8 پیکسل خواهد بود. و در پایین ترین رزولوشن (1024*1280) طول تصویر 128 پیکسل خواهد بود. این به تنهایی مشکلی ایجاد نمیکند ولی وقتی مقدار عرض را هم وارد و در چند رزولوشن دیگر هم تست کنیم مشکل نمایان میشود

  • * RayanFar
۱۳
فروردين

فقط برای تفریح ، داستان یک انقلابی اتفاقی

هیچ وقت هیچ کتابی رو یک ضرب نخوندم ، یا حجمش زیاد بوده یا موضوعش جالب نبوده ولی لازم بوده بدانم.

این کتاب واقعا عالی ترجمه شده و کلی لذت بردم. با توجه به این که دویست صفحه است احتمالا 5 ساعت وقت می خواد ، برای من که اینطور بود.

بخشی از صفحه ی درباره کتاب :

این کتاب، نوشته لینوس توروالدز خالق لینوکس و دیوید دیاموند است. یک خبرنگار مدت‌ها با لینوس وقت گذرونده و حرف‌هاش رو شنیده و نتیجه‌اش شده این کتاب که با نام انگلیسی  Just For Fun توسط انتشارات TEXERE منتشر شده.  (منبع)

میتونید از اینجا و به صورت برخط بخونیدش یا از بخش دانلود ، نسخه ی پی دی اف اش را دریافت کنید.

  • * RayanFar
۰۷
فروردين

کد زدن بدون آکولاد و سمی کالن مزخرف است.

پایتون زبان خوبیه و کلی طرفدار داره این درست. اما بلوک هایی بدون آکولاد و عباراتی بدون سمی کالن که فقط با کاراکتر فاصله و خط جدید از هم تفکیک میشوند بسیار آزار دهنده است. مخصوصا اگر هدف خواندن و دنبال کردن یک الگوریتم با حلقه های تو در تو در حالی که شامل عبارات شرطی تو در تو هم باشه.(حتی اگر شاخ ترین های دنیا اونو نوشته باشند از نظر من تفاوتی با اسپاگتی ندارد)

  • * RayanFar
۱۰
اسفند

چون از مهر خاتم خوشم میاد یکی برای خودم طراحی کردم!

نظرتون چیه قشنگ شده؟

احتمالا در کار های به شدت خاص به عنوان امضا ازش استفاده کنم......

  • * RayanFar
۰۲
بهمن

من عاشق جاوا هستم

چون کار ها رو خیلی راحت کرده مثلا این تصویر رو ببینید:

برای یک کاری لازمش داشتم ، حوصله اش را نداشتم که وقت بگذارم و در ابزاری مثل فتوشاپ یا گیمپ یه همچین چیزی رو با دقت یک پیکسل رسم کنم.

فکرش رو کنید باید از خطوط راهنما استفاده میکردم و یک تصویر 1000 در 50 پیکسلی که در صفحه نمایش من با توجه به رزولوشن ، 370 واحد از خط کش فتوشاپ بود ، به بیست قسمت مساوی تقسیم کنم بعد از 100 تا منهای 100 درجه بندی کنم چقدر وقت میبرد.

میانبر زدم

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

package paint;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

/**
 *
 * @author yn
 */
public class paint{

    static BufferedImage buffImage = null;
    static Graphics2D g2;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        init();
        draw_line();

        write();

    }

    public static void init() {
        buffImage = new BufferedImage(1000, 50, BufferedImage.TYPE_INT_ARGB);
        g2 = buffImage.createGraphics();
    }

    public static void draw_line() {
        g2.setStroke(new BasicStroke(2));
        g2.setColor(Color.green);
        g2.drawLine(0, 25, 1000, 25);

        int c = 100;
        for (int i = 0; i <= 1000; i += 50) {
            g2.drawLine(i, 30, i, 20);

            if (i == 0) {
                g2.drawString(c + "", i + 2, 15);
            } else if (i == 1000) {
                g2.drawString(c + "", i - 25, 15);
            } else {
                g2.drawString(c + "", i - 5, 15);
            }

            c -= 10;
        }
    }


    public static void write() {
        try {
            File outputfile = new File("saved.png");
            ImageIO.write(buffImage, "png", outputfile);

        } catch (Exception e) {
            System.out.println(e);
        }
    }

}

  • * RayanFar
۲۵
دی

وقتی که از nfity-gui به دلایلی دل سرد شدم به lemur فکر میکردم.

اما خب فونتی که برای نیفتی و جی ام ئی درست کار میکرد در lemur خوب نشون نمیداد و پایین تر می افتاد پس لازم بود در مورد کارایی برنامه ای که نوشتم تجدید نظر کنم و دوباره برم سراغ مستندات bitmapFonts ... 

اصلاحش کردم

هیچ راهی وجود نداشت که با قبلی ادامه بدم و در lemur هم دسترسی به خصوصیات متن مثل فاصله از بالا وجود نداشت و موقعیت متن بر طبق لایه تعیین میشد. لازم بود فونت ساز رو اصلاح کنم که در هر سه ابزار به خوبی نمایش داده شود (lemur - nifty- jme gui node) و این کار رو کردم.

لینک نسخه ی اصلاح شده برای lemur 

  • * RayanFar
۲۳
دی

nfity gui یک ابزار بدرد نخور است.

خستم کرده لامصب ...

اصلا حرف آدمی زاد حالیش نیست هر گوشه اش یک ایراد داره....

مثلا یک نمونه اش کیفیت بسیار بسیار پایین رندر تصاویر برای image Icon ها در hud است.

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

هیچ راهی برای ادامه وجود ندارد ، به همین دلیل لازم  است در hud از گزینه ی دیگری استفاده کنم.

https://github.com/jMonkeyEngine-Contributions/Lemur

  • * RayanFar
۱۸
دی

من یک تازه بسیجی هستم

البته قبلا هم بودم ولی خب رسمی نبود و فقط  مثل بسیجی ها فکر میکردم ، پانزدهم این ماه پایگاه بسیج ثبت نام کردم.

تجربه ی جالبی بود ولی هنوز دوستی پیدا نکردم....

تغییر کردم ...

تغییر کردم ولی نه زیاد فقط اسمم رو عوض کردم. بر این اساس که پدر بزرگم با چه حقی «نوری» را به عنوان نام خانوادگی استفاده کرده؟ پس من هم میتونم یک خانواده ی جدید را پایه گذاری کنم. فقط مراحل اداری ثبت احوال یکم روی اعصاب بود. «رایان» اسمی بود که دوست داشتم نام خانوادگی ام باشه ولی خب قبول نکردند، شناسنامه ی جدیدم رو دوروزه که تحویل گرفتم با نام یونس رایان فر.

فعلا فقط آقای برادر  از من حمایت میکنه و قراره دومین فرد خاندان رایان فر باشه.

روز هام به سختی میگذرد

افسردگی بهم فشار میاره و دارو هایی که دکتر تجویز کرده فکر میکنم بی اثره ، چون هیچ تغییری رو احساس نمیکنم.

ولی عاشق کارم هستم ، هنوز روی اون بازی کار میکنم و دیگه چیزی ازش نمونده . 

دوستم برگشت منطقه و این حالم رو بیشتر بد میکنه امیدوارم این بار هم سالم برگرده ، تا نصفه های شب باهم وینستون لایت بکشیم ریه هامون رو به فنا بدیم.

در پاسخ اون دوست که پرسید کار به کجا رسیده و چند خط کد زدیم تا حالا

در حال حاضر فکر میکنم همه چیز خوبه ، هیچ باگ جدی وجود نداره که حلش طول بکشد، چیزی تا انتشارش نمونده...

در مجموع 47753 خط کد زدم .

با این کد در خط فرمان لینوکس میتونید مجموع خط هایی که در فایل های یک دایرکتوری وجود داره رو حساب کنید.

find . -name "*.java" -print | xargs wc -l

  • * RayanFar