۱۱۰ مطلب توسط «فاروق کریمی زاده» ثبت شده است

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

داستان از جایی شروع شد که در مقاله چطور کاری کنیم لیسپ سریع‌تر از سی اجرا شود؟ خواندم که کامن لیسپ بنا به خواست برنامه‌نویس می‌تواند «زبانی با تعیین نوع پویا(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 همین کار را با تایپ کلید‌های کمتری انجام داده و حتی زمانی که دارید دستور دیگری نیز می‌نویسید نیز قابل استفاده است بدون آنکه چیزی که می‌نویسید پاک شود.

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

نکاتی اندر کامن لیسپ مصطلح(Idiomatic Common Lisp)

این مطلب به تدریج کامل‌تر می‌شود پس در آینده دوباره به آن سر بزنید :)

مبتدی‌های یک زبان برنامه نویسی مخصوصا اگر قبل از فراگیری زبان جدید یک زبان دیگر را یاد گرفته باشند، کد هایی به زبان جدید اما با روشی نادرست(و با روش زبان قبلی اگر داشته باشند) می‌نویسند. این کد‌ها معمولا به درستی کار می‌کنند اما به روش زبان جدید نوشته نشده‌اند. یک مثال معروف در زبان پایتون استفاده از range(len(somelist)) برای دسترسی به اعضای یک لیست است.کامن لیسپ نیز بین زبان‌ها برنامه نویسی استثنا نیست.در ادامه برای حل کردن هر مسئله در کامن لیسپ حداقل دو تکه کد یکی روش اشتباه حل کردن مسئله در کامن لیسپ و دیگری روش درست آن‌را ارائه میکنم.

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

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

(defun bubble-sort (vector)
  (loop for swapped = nil
     do (loop for i from 0 below (1- (length vector))
	   when (> (aref vector i) (aref vector (1+ i)))
	   do (rotatef (aref vector i) (aref vector (1+ i)))
	     (setf swapped t))
     unless swapped return vector))

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

از ما چه می خواهید؟

چه تغییراتی باید روی وبلاگ اعمال کنیم تا عملکرد و مطالب آن بهبود یابد؟

این تغییرات میتواند در مورد قالب وبلاگ، شیوه‌ی نوشتن نویسندگان، رفتار نویسندگان، مطالب و ... باشد. البته قول نمیدهیم تمام این تغییرات را اعمال کنیم. اگر ایده‌ای دارید از طریق بخش نظرات با ما در میان بگزارید.

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

نظرات (۱۰)

علیرضا آهنی
علیرضا آهنی
علیرضا آهنی
علیرضا آهنی
علیرضا آهنی
علیرضا آهنی
علیرضا آهنی
علیرضا آهنی
فرهاد حسن پور

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

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

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

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

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