۶۱ مطلب با کلمه‌ی کلیدی «آموزش» ثبت شده است

کامن لیسپ: یک زبان با تعیین نوع پویا یا ایستا؟

داستان از جایی شروع شد که در مقاله چطور کاری کنیم لیسپ سریع‌تر از سی اجرا شود؟ خواندم که کامن لیسپ بنا به خواست برنامه‌نویس می‌تواند «زبانی با تعیین نوع پویا(dynamic) ویا ایستا(static) باشد» که کنجکاوی بنده برانگیخته شد(بخوانید فضولی‌ام گل کرد!) و در کانال #clschool روی شبکه‌ی آی‌آر‌سی فری‌نود پرسیدم که در ادامه نتیجه بحث خدمتتون عرض خواهد شد.

ادامه مطلب...
مجوز مطالب و محتوا ۱۴ دی ۹۹ ، ۲۳:۳۴ ۰ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

سیستم‌عامل کای‌او‌اس(KaiOS) و توسعه نرم‌افزار و هک آن

لوگوی کای‌او‌اس

اول از همه خدمت دوستانی که تا به الآن از کلمه «هک» در عنوان مطلب اشتباه برداشت کردند عرض کنم که معنی این کلمه در اینجا با معنی رایجش در عصر ما فرق میکنه.اینجا منظور از هک کردن پیدا کردن نقاط پنهان و فضولی و کنجکاوی و بهبود نرم‌افزار هست و نه نفوذ بهش و بعدش هم نابود کردنش!

داستان از کجا شروع شد؟

فاروق کلاس ۱۲ام دبیرستان هست و البته پشت کنکور و گوشیش یک عدد نوکیا ۱۱۲(از اون دکمه‌ای های جاوا) بود و باید یک تلفن همراه جدید تهیه می‌کرد. از اونجا که زیاد اهل شبکه‌های اجتماعی نبودم و نیستم و حتی مخالفشون هم هستم کمابیش و احساس نیاز به گوشی‌های «هوشمند» لمسی اندرویدی نمیکردم زیاد، اینطور نقشه‌ام رو ریختم: یک عدد کتاب‌خوان اندرویدی که باهاش بتونم مطالعه کنم و البته یکسری کار های دیگه و یک عدد گوشی که نیاز های پیامک و تماس و البته تامین اینترنت برای کتاب‌خوان رو برطرف کنه.

کتاب‌خوانی که نهایتا گرفتم Onyx Boox Poke Pro بود با مشخصات زیر:

  • ۱۶ گیگابایت حافظه داخلی
  • ۲ گیگابایت رم داره
  • پردازنده اون ۴ هسته‌ای با فرکانس ۱.۶ گیگاهرتز
  • سیستم‌عاملش اندروید ۶
  • وای‌فای
  • بلوتوث
  • چراغ مطالعه گرم و سرد قابل تنظیم که البته میتونه خاموش هم باشه کلا
  • صفحه لمسی خازنی ۶ اینچ

و علاوه بر این سخت‌افزار بسیار خوب(مخصوصا برای کتاب‌خوان) نرم‌افزار خوبی هم داره:

جدای از اینکه اندرویدش «خام» نیست و برای صفحه نمایش جوهر الکترونیکی،طراحی و بهینه‌سازی شده،نرم‌افزارش هم برای مطالعه بسیار بسیار خوب هست.ساده‌ترین امکانی که داره حذف خودکار حاشیه‌ها هست!

بگذریم چون دارم از موضوع اصلی خارج میشم.اون زمان بعد از یک مقدار جستجو،گوشی موزی(Nokia 8110 4G) رو پیدا کردم که با سیستم‌عامل کای‌او‌اس اون امکاناتی که من نیاز داشتم رو داشت.اگر بخوام دقیق‌تر از امکاناتش صحبت کنم،میتونم اینطور لیست کنم:

  • ۵۱۲ مگابایت رم
  • ۴ گیگابایت حافظه داخلی که البته میتونید با حافظه جانبی(microSD) افزایشش هم بدید
  • پردازنده ۲ هسته‌ای اسنپ‌دراگون
  • سیستم‌عامل کای‌او‌اس(KaiOS)
  • یک عدد صفحه ۲.۴ اینچی خیلی معمولی
  • بدنه‌انحنادار
  • اینترنت 4G
  • اشتراک اینترنت از طریق وای‌فای(هات‌اسپات) و کابل USB
  • دوربین ۲ مگاپیکسلی خیلی معمولی به همراه فلش
  • یک عدد کی‌پد بسیار مزخرف. شنیدم کی‌پد نوکیا فلیپ ۲۷۲۰ این مشکل رو نداره.
  • A-GPS
  • یک کشو که باز و بسته میشه و باهاش میتونید یکسری کار‌ها رو انجام بدید مثلا جواب دادن یا پایان تماس

از اونجا که گوشی موزی بود پس باید رنگش هم زرد می‌بود!در نتیجه گشتم تا رنگ زردش رو پیدا کردم!و البته دو سیم‌کارته هم میخواستم که کار رو برام یک مقدار سختتر می‌کرد اما بلاخره گیرش اوردم!

ادامه مطلب...
مجوز مطالب و محتوا ۲۱ آبان ۹۹ ، ۲۱:۳۰ ۱ نظر موافقین ۳ مخالفین ۰
فاروق کریمی زاده

با پایتون یک ربات سخنگو بنویسید!

شاید در مورد ماژول chatterbot چیزی خوانده باشید یا شنیده باشید.این ماژول برای شما یک چت‌بات که میتواند یاد بگیرد را فراهم می‌سازد و از الگوریتم‌های یادگیری ماشینی استفاده میکند.

ادامه مطلب...
مجوز مطالب و محتوا ۱۰ مهر ۹۹ ، ۱۰:۵۲ ۳ نظر موافقین ۲ مخالفین ۰
فاروق کریمی زاده

به اشتراک گذاشتن خط فرمان در لینوکس با استفاده از GNU Screen

تا حالا برایتان پیش آمده که بخواهید کنسول یا خط فرمان خود را با یکی از دوستان خود از طریق اینترنت به اشتراک بگذارید؟میتوانید با گنو اسکرین به راحتی اینکار را انجام دهید.تنها چیزی که نیاز دارید یک حساب/اکانت روی یک سیستم یونیکسی(لینوکس با فری‌بی‌اس‌دی یا هر چیز) است که اولا برنامه screen را نصب شده داشته باشد و دوما هر دو بتوانید به این اکانت دسترسی داشته باشید(مثلا هر دو پسورد یا رمزعبور اکانت را داشته باشید).

ادامه مطلب...
مجوز مطالب و محتوا ۰۶ مهر ۹۹ ، ۰۹:۳۷ ۰ نظر موافقین ۲ مخالفین ۰
فاروق کریمی زاده

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

تکه کد زیر که به زبان سی‌پلاس‌پلاس را در نظر بگیرید:

#include <iostream>
using namespace std;

int main() {
    char *s;
    s = NULL;
    cout << "Hello";
    *s = 'H';
    return 0;
}

انتظار داریم که اول Hello چاپ شود و سپس با توجه به اینکه میخواهیم قسمتی از حافظه که نامربوط به برنامه‌ی ماست دسترسی پیدا کنیم،باید خطای Segmentation fault داده شود و برنامه خاتمه پیدا کند.اما وقتی کد را کامپایل و اجرا می‌کنیم می‌بینیم که اینطور نیست

ادامه مطلب...
مجوز مطالب و محتوا ۱۳ مرداد ۹۹ ، ۱۱:۳۹ ۱ نظر موافقین ۳ مخالفین ۰
فاروق کریمی زاده

چطور کاری کنیم لیسپ سریع‌تر از سی اجرا شود؟

این مقاله از «دیدیر ورنا» می‌باشد که توسط من به فارسی ترجمه شده است.اگر اشتباهی تایپی یا علمی یا املایی مشاهده کردید حتما به مترجم گزارش دهید.

دریافت با حجم ۹۰ کیلوبایت از بیتکوین‌شل

دریافت از وب‌سایت فاروق

دریافت از «سیب‌زمینی تخم‌مرغ» فاروق

مجوز مطالب و محتوا ۰۶ مرداد ۹۹ ، ۱۶:۵۰ ۰ نظر موافقین ۳ مخالفین ۰
فاروق کریمی زاده

کنترل از راه دور بلوتوثی برای لپ‌تاپ با استفاده از ریموت مونوپاد

ریموت بلوتوثی

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

ادامه مطلب...
مجوز مطالب و محتوا ۱۳ خرداد ۹۹ ، ۱۳:۱۲ ۸ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

چند کلید میانبر ساده در بش و zsh و fish

رفتن به اول خط

هرچند که کلید Home همین کار را انجام می‌دهد اما معمولا این کلید در جای مناسبی قرار ندارد و علاوه بر آن در هر تخته کلید در مکان متفاوتی قرار دارد. Ctrl+A همین کار را برای شما انجام می‌دهد و در مکان مناسب و ثابتی قرار دارد.

رفتن به پایان خط

کلید End همین کار را می‌کند اما کلید Ctrl+E در مکان مناسبی می‌باشد.

حذف کل یا قسمتی از خط

کلید Ctrl+K هر چه در موقعیت فعلی تا پایان خط وجود دارد را حذف می‌میکند. میتوانید با Ctrl+A به اول خط بروید سپس با Ctrl+K کل خط را حذف کنید.

پاک کردن کل صفحه

دستور clear همین کار را انجام می‌دهد اما Ctrl+L همین کار را با تایپ کلید‌های کمتری انجام داده و حتی زمانی که دارید دستور دیگری نیز می‌نویسید نیز قابل استفاده است بدون آنکه چیزی که می‌نویسید پاک شود.

مجوز مطالب و محتوا ۲۲ ارديبهشت ۹۹ ، ۱۱:۰۵ ۳ نظر موافقین ۴ مخالفین ۰
فاروق کریمی زاده

پایتون ۳.۸ و عملگر :=

در پایتون ۳.۸ یک عملگر جدید برای انتصاب معرفی شده است.این عملگر جهت انتصاب در عبارات بزرگتر استفاده می‌شود. مثلا:

a = 10
if (b := a) == 10:
...

در تکه کد بالا هم‌زمان مقدار b برابر مقدار a می‌شود و هم مقایسه انجام می‌شود.

مجوز مطالب و محتوا ۱۳ آبان ۹۸ ، ۱۹:۱۵ ۰ نظر موافقین ۱ مخالفین ۰
فاروق کریمی زاده

تابع qsort برای مرتب کردن یک آرایه با الگوریتم مرتب‌سازی سریع در سی/سی‌پلاس‌پلاس

تابع qsort از کتاب‌خانه‌ی استاندارد(stdlib.h) از توابع مفید و البته استاندارد هست.این تابع با دادن آدرس آرایه، تعداد اعضا، اندازه‌ی هر عضو و یک تابع برای مقایسه‌ی دو عضو،آرایه  را بصورت صعودی مرتب میکند.

با اینکه این تابع استاندارد هست اما اجباری در پیاده‌سازی آن نیست، به این معنی که qsort ضرورتا همه‌جا(منظور از همه جا دقیقا همه‌جاست! این یعنی ابر‌رایانه‌ها،فبلت‌ها،رایانه‌های شخصی و همچنین میکروکنترلر‌ها مانند AVR و PIC را نیز حساب میکنیم) وجود ندارد.

void qsort(void *base, size_t nmemb, size_t size,
            int (*compar(const void *, const void *)))

ادامه مطلب...
مجوز مطالب و محتوا ۰۳ آبان ۹۷ ، ۱۶:۳۴ ۰ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

کلاس توکار complex برای کار با اعداد مختلط در پایتون

complex(real_part=0, imag_part=0)
complex(str)

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

ادامه مطلب...
مجوز مطالب و محتوا ۱۲ مهر ۹۷ ، ۱۹:۱۸ ۱ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

چطور از طریق خط‌فرمان مکان جغرافیایی یک IP را پیدا کنیم؟

اگر بخواهید مکان فیزیکی یک IP را پیدا کنید، ابزار های آنلاینی برای اینکار وجود دارند اما شاید مثل من پیرو راه بزرگ یونیکس باشید و  خط‌فرمان سریغ‌تر و کم‌هزینه‌تر هم هست.
اینجا دو روش را معرفی میکنم که از طریق خط‌فرمان بتوانید مکان جغرافیایی یک IP را پیدا کنید. روش اول از یک برنامه استفاده میکند که بر اساس یک پایگاه داده و بصورت آفلاین کار میکند و برای شبه یونیکس‌ها شامل گنو/لینوکس،بی‌اس‌دی ها و ... در دسترس هست. روش دوم که از curl و یک API استفاده میکند، نیازمند دسترسی به اینترنت هست و روی اکثر سیستم‌عامل ها قابل استفاده در دسترس هست.
ادامه مطلب...
مجوز مطالب و محتوا ۲۹ شهریور ۹۷ ، ۱۲:۱۲ ۱ نظر موافقین ۲ مخالفین ۰
فاروق کریمی زاده

تابع os.urandom در پایتون

os.urandom(n)

تابع os.urandom تعداد n بایت تصادفی برمیگرداند که برای مصارف رمزنگاری و دیگر کاربرد‌ها که اعداد تصادفی با کیفیت‌تر نیاز دارند مناسب است

ادامه مطلب...
مجوز مطالب و محتوا ۱۸ مرداد ۹۷ ، ۱۹:۰۹ ۰ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

مروری بر پست «برنامه‌نویسی را از کجا آغاز کنیم؟»

مطمئن نبودم که باید این پست را بنویسم یا نه. بعد از اندکی فکر کردن، دیدم بهتر است این حرف‌ها را به گوش بقیه رسانده و عقیده‌ی خود را ابراز کنم! شاید دلیل نوشتن حداقل بخشی از این پست یک تعصب پنهان به بعضی زبان‌ها و سیستم‌عامل‌ها باشد.بخشی دیگر هم مطالبی بودند که فکر کردم پست بهنام سیمجو به اندازه کافی به آنها نپرداخته یا مبهم نوشته و ... .پیشنیاز مطالعه‌ی این مطلب، مطلب بهنام سیمجو است.
ادامه مطلب...
مجوز مطالب و محتوا ۱۴ تیر ۹۷ ، ۱۴:۴۶ ۱ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده

برنامه‌ی look در یونیکس

look [-bdf] [-t termchar] string [file]
look [-f] string [file]

این برنامه که ریشه‌اش BSD هست، تمام خطوط پرونده‌ی file را که با رشته‌ی string شروع میشوند،به خروجی میفرستد.

ادامه مطلب...
مجوز مطالب و محتوا ۱۷ خرداد ۹۷ ، ۰۷:۳۲ ۱ نظر موافقین ۰ مخالفین ۰
فاروق کریمی زاده