سرور منیجر

برای تمامی پوشه ها میشه docker image در نظر گرفت

و مثلا nginx رو از روی داکر بخونم و ...

فعلا به همین روال پیش میرم

تنظیمات در حال اضافه شدن هست

تنظیمات bind رو هم باید انجام بدم

برای هر برنامه باید سرویس بنویسم

اگر امکانش باشه از برنامه های سرویس موجود اماده استفاده میکنم در غیر این صورت یک سرویس منیجر مینویسم که سرویس ها رو چک کنه و در صورت داون شدن اونها رو اپ کنه

وب اینترفیس رو هم با nodejs مینویسم

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

قسمت مربوط به ایمیل رو هم باید بنویسم و نرم افزارهای مرتبط با اونو نصب کنم

پروژه server manager

کاری که تا الان انجام دادم نصب تمامی نرم افزار های لازم از روی source هست

با ایجاد کاربر linux و اختصاص یک پوشه از home به اون و تنظیمات لازم برای nginx و apache و php-fpm و mysql یا mariadb سرور منیجر آماده برای استفاده از php به عنوان web app هست

nodejs و golang و java و python و c# از روی mono و ... هم به عنوان extra feature برای کارهای دیگه نصب میشن

ساختار برنامه به این شکل هست که تمامی برنامه ها داخل پوشه مخصوص به خود همون برنامه نصب میشن

تمامی کارهای لازم با bash انجام میشن و بعدا برای ویرایش و ارتقا یک interface برای اون مینویسم

زمانبرترین قسمت کار نوشتن web interface هست

پروژه رو میتونم در قالب countainer با docker انجام بدم که به صورت یک image جامع بشه از اون استفاده کرد

نصب برنامه ها با ورژن های دیگه رو به زودی انجام میدم که تماما از روی سورس قابل نصب هست

فضای کاری جدید coworking

خب

در فضای جدید کاری coworking مشغول به کار شدم

شرایطش خیلی بهتر از خونه هست

اینجا تا الان درد دست رو ندارم

میخام خیلی قوی پروژه هام رو پیش ببرم

باز هم به ادامه dolang بر میگردم

سیستم چت رو تکمیلش میکنم

اپ برای دستگاه کوچیکم مینویسم

یک وبسرور خیلی کوچیک با c مینویسم

سایت کفش رو تکمیل میکنم

فروشگاه اینترنتی رو هم باید ادامشو توسعه بدم

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

پروژه زیرنویس رو باید ادامه بدم

و ...

وی پی ان

۴ تا از پروژه هام به دلیل نداشتن وی پی ان نتونستم ادامه بدم.

Promise در js

کاربرد اصلی Promise در js برای sync کردن توابع async هست.

بزارید یک مثال بزنم :

function test() {
    setTimeout(function() {
        console.log(\'test\');
    }, 2000); 
}

async function main() {
    await test();
    console.log(\'here\');
}

main();

در مثال بالا همونطور که میبینید async و await برای تابع test کار نمیکنه و اول here چاپ میشه و بعدش مقدار تست

برای حل این مشکل باید از Promise استفاده کنید

function test() {
    return new Promise( function( resolve, reject ) {
        setTimeout(function() {
            console.log(\'test\');
            resolve(\'test\');
        }, 2000); 
    })
}

async function main() {
    let a = await test();
    console.log(\'here\');
}

main();

اما then چی هست. اگر به صورت async از تابع استفاده کردید. یعنی await رو استفاده نکردید. Promise مثل یک کلاس ساده عمل میکنه که خودتون هم میتونید تعریفش کنید و در پایان Timeout اجرا میشه ...

پیاده سازی try , catch و تغییر کلی در اعداد

تمامی اعداد باید به عنوان double ذخیره بشن، شبیه به js

این ساختار باید در برنامه به طور کامل تغییر کنه و عملیات روی اعداد هم همه باید با دستورات x87 انجام بشه

در حال انجام try, catch بودم که چون در حال ساخت یک دستگاه تجاری هستم فعلا اون رو توسعه نمیدم

بعد از بازگشت به پروژه باید switch رو هم انجام بدم و یک تغییر اساسی در توابع برای stack هم انجام بدم، به صورتی که تنها در پایان برنامه همه چیز به اصطلاح leave بشه

برنامه نویسی

تمام شدن پیاده سازی String و برطرف کردن خیلی از باگ ها

خب

string به طور کامل در دل کار پیاده سازی شد

البته برای Regex من از C str استفاده کردم که در آینده باید اصلاح بشه

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

Perfomance عالی در Concat

خب با اجرا کردن

time ./dolang test/concat.do

و اجرا کردن نمونه مشابه اون در c با strcat و یا c++ string و یا quickjs متوجه تفاوت زیاد پرفورمنس میشه شد

برنامه درdolang با میانگین ۲۰۰ میلی ثانیه اجرا میشه. در حالی که با حالت های بالا از ۶ تا ۹ ثانیه اجرا میشه.