نوشته‌های من

درباره برنامه‌نویسی، بازی، کتاب و هر چیزی که دوست داشته باشم

نوشته‌های من

درباره برنامه‌نویسی، بازی، کتاب و هر چیزی که دوست داشته باشم

نوشته‌های من
طبقه بندی موضوعی

   

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

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


این سامانه به گونه‌ای طراحی شده است که هم هزینه‌های استفاده برای شهروندان به صفر می‌رسد و هم هزینه‌های راه‌اندازی و نگاهداری آن نسبتاً پایین است.


این شبکه خدمت رسانی در دو شکل «ثابت» و «متحرک» ارائه می‌شود. شکل ثابت آن در محل‌های مشخصی از شهر راه‌اندازی می‌شوند و قابلیت جابجایی ندارند و بیشتر برای ارائه خدمات محلی می‌توانند مورد استفاده قرار بگیرند. شکل متحرک آن در وسائل نقلیه با تعداد مسافران بالا راه‌اندازی می‌شود و بیشتر برای ارائه خدمات شهری می‌توانند مورد استفاده قرار بگیرند.

  • حامد ذقاقی

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

PDE

  • حامد ذقاقی

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

از آنجایی که این برنامه بایستی همیشه در حال اجرا باشد، نمی‌توانستم از امکان فوروارد کردن X روی ارتباط SSH استفاده کنم.


X سرور مجازی

همانطور که از اسمش بر می‌آید یک X سرور مجازی است که اکثر وظایف یک X سرور را انجام می‌دهد بدون اینکه نیازی به صفحه نمایش و یا هر گونه سخت افزار ورودی مانند ماوس و کیبور باشد.  

موارد استفاده کمی برای این نوع سرور وجود دارد،  مانند

  • اجرا کردن برنامه‌های که واقعا نیازی به یک x سرور ندارند و یا اگر نیاز دارند هیچ تعاملی با کاربر ندارند! 
  • تست برنامه‌ها در تنظیمات نمایشی غیر استاندارد و یا تنظیماتی که سخت افزار آن موجود نیست

Xvfb نمونه‌ای از این سرور هاست که از یک بافر برای ترسیم استفاده می‌کند و می‌توانید با استفاده از فرمان زیر آن را در اوبونتو نصب کنید.
$ sudo apt-get install xvfb
و به صورت زیر می‌توانید آن را راه‌اندازی کنید.
$ Xvfb :1
و سپس در کنسولی که می‌خواهیم از آن استفاده کنید ابتدا متغیر محیطی DISPLAY را تنظیم می‌کنیم و سپس برنامه مورد نظر را  اجرا می‌کنید.
$ export DISPLAY=:1

برای اطلاع بیشتر از این فرمان به اینجا مراجعه کنید.



  • حامد ذقاقی

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


سیستم فایلی sshfs

این سیستم فایلی بر پایه یک ارتباط ssh پیاده‌سازی شده است و می‌توانید با استفاده از این سیستم فایلی، یک دایرکتوری از یک کامپیوتر با دسترسی ssh را درون یکی از دایرکتوری‌های کامپیوتر خودتان mount‌ کنید و بدین ترتیب به آن‌ها در کامپیوتر خودتان دسترسی داشته باشید و یا آن‌ها را ویرایش کنید.


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

$ sudo apt-get install sshfs

قالب استفاده از این فرمان به شکل زیر است.

sshfs user@remote-address:remote-dir local-dir

که در آن، user نام کاربری است که از آن برای ارتباط ssh استفاده می‌کنید، remote-address هم آی‌پی و یا نام کامپیوتری است که به آن دسترسی ssh دارید و remote-dir دایرکتوری است که می‌خواهید mount کنید. local-dir هم آدرس دایرکتوری روی کامپیوتر خورتان است که می‌خواهید از آن طریق به فایل‌ها دسترسی داشته باشید. 

به عنوان نمونه چنانچه با کاربر zaghaghi به آدرس 1.2.3.4 دسترسی ssh داشته باشم، می‌توانم با فرمان زیر دایرکتوری /var/www/ کامپیوتر راه‌دور را در دایرکتوری /tmp/remote/www/ کامپیوتر خودم mount کنم.

$ sshfs zaghaghi@1.2.3.4:/var/www/ /tmp/remote/www/

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

پس از اجرای فرمان از شما رمز عبور خواسته می‌شود و بایستی رمز عبوری را که از آن برای ارتباط ssh استفاده می‌کنید، به کار ببرید.


برای umount کردن می‌توانید از یکی از فرامین زیر استفاده کنید.

$ sudo umount local-dir
$ sudo fusermount -u local-dir

مرجع

  • http://fuse.sourceforge.net/sshfs.html [^]

شاد و پیروز باشید.

  • حامد ذقاقی

دریافت یک مخزن گیت

همانطور که می‌دانید برای دریافت یک مخزن گیت بایستی از فرمان git clone  استفاده کرد. به عنوان مثال برای دریافت سورس لینوکس می‌توان فرمان زیر را اجرا کرد.

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

مخزن گیت سورس لینوکس حجم نسبتا زیادی دارد (حدود ۹۰۰ مگابایت) و چنانچه سرعت اینترنت خوبی نداشته باشید و یا ارتباط اینترنت قابل اطمینانی نداشته باشید ممکن است نتوانید به راحتی این مخزن گیت را دریافت کنید. چرا که گیت در صورت قطع شدن اینترنت تمامی مراحل دریافت را از ابتدا انجام می‌دهد.


دریافت یک مخزن گیت حجیم

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

از آنجایی که تقریبا تمامی مخازن گیت علاوه بر پروتکل git از پروتکل‌های دیگر مثل http پشتیبانی می‌کنند، می‌توانید فایل‌های مخزن را با استفاده از یک نرم‌افزار دانلود، دریافت کنید و سپس آن را به یک مخزن معمولی تبدیل کنید.

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

$ rsync -arvzP rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/ linux.git/

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

پس از اتمام اجرای فرمان بالا و دریافت تمامی فایل‌های مخزن سورس لینوکس، بایستی این مخزن را که در وضعیت bare قرار دارد به یک مخزن معمولی تبدیل کنید تا بتوانید از آن استفاده کنید. انجام این کار با اجرای فرامین زیر امکان پذیر است.

$ mkdir linux
$ mv linux.git linux/.git
$ cd linux
$ git remote add remote git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ git config --bool core.bare false
$ git checkout master

به این دلیل که دایرکتوری مخزن در حالت معمولی با نام .git مشخص می‌شود، دو فرمان اول و دوم، دایرکتوری دریافت شده را به این نام تغییر  ‌می‌دهند.  فرمان چهارم ارتباط بین مخزن دریافت شده و مخزن اصلی را مشخص می‌کند تا برای به‌روزرسانی‌های بعدی بتوان از همان فرامین گیت استفاده کرد. فرمان بعدی مخزن دریافت شده را از حالت bare خارج کرده و به یک مخزن معمولی تبدیل می‌کند و در نهایت آخرین فرمان فایل‌های مربوط به شاخه master را از مخزن بیرون می‌کشد تا بتوان از آن‌ها استفاده کرد.


شاد و پیروز باشید.

  • حامد ذقاقی

مقدمه

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

یکی از برنامه‌های که این اواخر نوشتم یک جمع‌کننده لاگ مرکزی بود که از تعداد زیادی دستگاه‌های امنیت شبکه لاگ دریافت می‌کرد و بعد از پردازش اولیه هر لاگ برای بررسی و جستجو و آمارگیری در یک مخزن داده ذخیره می‌کرد. نرخی ارسال این لاگ‌ها تقریبا بالای ۲۰٬۰۰۰ لاگ در ثانیه است و به دلیل اهمیتی که لاگ‌ها دارند کرش کردن برنامه یعنی از دست دادن ۲۰٬۰۰۰ لاگ در ثانیه!


بعد از تکمیل برنامه و انجام تست‌ها، برنامه زیر بار قرار گرفت ولی در محیط واقعی اوضاع به گونه‌ی دیگری پیش می‌رفت و برنامه بعد از گذشت زمانی کرش می‌کرد. برای رفع ایرادات برنامه و پایدار کردن برنامه از core dump های برنامه بعد از کرش استفاده کردم و در ادامه قصد دارم نکاتی را در این‌باره فهرست کنم شاید زمانی به کمکتان بیاید.

  • حامد ذقاقی

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

کاور فیاسکو

این بازی یک «بازی‌ نقش‌آفرینی» است، که در آن هر شخص در نقشی بازی می‌کند و این نقش را تا انتهای بازی کامل و کامل‌تر می‌کند. بازی فیاسکو برای 3 تا 5 نفر طراحی شده است و با استفاده از چندین تاس 6وجهی (4تاس برای هر شخص) در چند ساعت به اتمام میرسد.

ابتدا بازی‌بازها یکی از Playset های بازی را انتخاب می‌کنند. هر Playset شامل عناصر پایه‌ای و اصلی یک داستان می‌باشد و در اصل پایه و اساس داستان و بازی را تشکیل می‌دهد. Playset را انتخاب کنید که بیشتر مناسب جمعتان باشد.

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

راهنمای کامل این بازی به همراه Playset های آن را می‌توانید از طریق سایت بازی خریداری نمایید. همچنین می‌توانید نحوه بازیکردن این بازی را در این 3 قسمت مشاهده کنید.

1. راه‌اندازی 

2. قسمت اول

3. قسمت دوم 


  • حامد ذقاقی

    این مطلب نتیجه مطالعه کتاب "Prince of Persia - To right a wrong" نوشته «کارلا چابلونسکی» - نویسنده کتاب‌های نوجوانان - می‌باشد. این کتاب با ترجمه آقای «حسین شهرابی» و نشر از «نشر افق» به نام «معبد نگهبانان - شاهزاده‌ی ایرانی ٢» در سال ١٣٩٠ به همراه قسمت اول این کتاب با نام «شن‌های زمان - شاهزاده‌ی ایرانی ١»  از همان مترجم و همان انتشاراتی به چاپ رسیده است.

  

  • حامد ذقاقی

ویرایش: تلفظ صحیح Arch، آرچ است و نه آرک. در متن اصلاح شد.

در این مطلب سعی می‌کنم که نحوه نصب لینوکس آرچ را به روی کوبی‌بورد آموزش بدم. البته به تفصیل و به صورتی که با کمی دقت و تغییر بشود برای بورد‌های آرم دیگر و برای نصب توزیع‌های دیگر لینوکس هم مفید واقع شود. لازم به ذکر است که این نصب تنها بل خروجی تصویر HDMI آزمایش شده است و برای دریافت خروجی روی مانیتور و یا LCD بایستی بعد از نصب برخی تنظیمات تغییر یابند.

نحوه بوت شدن

قبل از بررسی و انجام مراحل مختلف نصب و راه‌اندازی لینوکس روی کوبی‌بورد، بهتر است مراحل بوت شدن این بورد را متوجه شویم.  پردازنده‌های Allwinner A10 دارای یک BROM هستند. این قسمت از پردازنده از دو بخش تشکیل شده است. بخش اول وظیفه راه‌اندازی بورد از روی حافظه‌های جانبی همچون NAND و یا MMC را دارد و بخش دوم از یک برنامه به نام FEL تشکیل شده است که در اینجا به آن نمی‌پردازیم. چنانچه دکمه مربوط به FEL پایین نباشد BROM بخش اول را اجرا می‌کند که وظیفه راه‌اندازی بورد از روی حافظه‌های جانبی را دارد و به ترتیب زیر عمل خواهد کرد:
  1. اطلاعات مورد نیاز راه‌اندازی بورد را از اولین کارت حافظه می‌خواند (حداقل این اطلاعات ۴کیلو بایت هستند و از ابتدای کارت حافظه ۸کیلوبایت فاصله دارند) چنانچه این اطلاعات وجود داشته باشند و معتبر باشند ادامه راه‌اندازی به این قسمت سپرده می‌شود.
  2. چنانچه اطلاعات در اولین کارت حافظه وجود نداشته باشند و یا معتبر نباشند اطلاعات مورد نظر از حافظه NAND خوانده می‌شود و در صورت موجود بودن و معتبر بودن ادامه راه‌اندازی به این قسمت سپرده می‌شود.
  3. و در ادامه چنانچه اطلاعات مورد نظر روی حافظه NAND وجود نداشته و یا معتبر نباشد این اطلاعات از روی کارت حافظه دوم خوانده می‌شود.
  4. و در نهایت چنانچه اطلاعات مورد نیاز در کارت حافظه دوم نیز موجود نباشد و یا نامعتبر باشد، ادامه راه‌اندازی بورد به برنامه FEL واگذار خواهد شد.
اطلاعات راه‌اندازی که BROM از روی کارت حافظه می‌خواند به «راه‌انداز برنامه ثانویه» و یا (SPL) شناخته می‌شود. همانطور که متوجه شده‌اید BROM قابل تغییر نیست و وظیفه SPL مربوط به راه‌اندازی سخت‌افزار بورد است و پس از انجام وظایف خود راه‌انداز دیگری را فرا‌می‌خواند که به آن U-Boot گفته می‌شود. U-Boot راه‌اندازی است که سیستم عامل را راه‌می‌اندازد. U-Boot می‌بایست از ۳۲کیلوبایتی اول حافظه شروع شود.

در نتیجه مراحل راه‌اندازی بورد به این ترتیب است:

ترتیب راه‌اندازهای کوبی‌بورد
در بیشتر موارد فایل‌های مربوط به SPL Loader و U-Boot برای هر سخت‌افزاری، توسط سازندگان آن در دسترس است و نیازی به تولید آن‌ها نیست هر چند این امکان وجود دارد. برخی سازندگان سخت‌افزار همچون کوبی بورد یک بسته سخت‌افزاری در اختیار کاربران قرار می‌دهند که علاوه بر راه‌انداز‌ها حاوی کرنل کامپایل شده مناسب برای بورد و ماژول‌های کرنل و درایورهای سخت‌افزاری آن بورد می‌باشند.
بسته سخت‌افزاری کوبی‌بورد با ۱گیگا بایت حافظه را از اینجا و بسته سخت‌افزاری کوبی بورد با ۵۱۲مگا بایت حافظه را از اینجا دریافت کنید.
  • حامد ذقاقی

کوبی بورد

کوبی‌بورد یک بورد توسعه است که اولین بار در سایت indiegogo.com معرفی شد و  پس از جمع آوری مبلغ مورد هدف پروژه، بورد طراحی، ساخته و ارائه شد. این بورد دارای مشخصات زیر است:

  • 1G ARM cortex-A8 processor, NEON, VFPv3, 256KB L2 cache
  • Mali400, OpenGL ES GPU
  • 512M/1GB DDR3 @480MHz
  • HDMI 1080p Output
  • 10/100M Ethernet
  • 4Gb Nand Flash
  • 2 USB Host, 1 micro SD slot, 1 SATA, 1 ir
  • 96 extend pin including I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP..
  • Running Android, Ubuntu and other Linux distributions
اطلاعات بیشتر در این باره را می‌توانید در سایت تولید کننده کوبی‌بورد، فروم رسمی کوبی‌بورد و همچنین فروم وارد کننده ایرانی این محصول بخوانید و بدانید.

همانطور که  تا الان حتما متوجه شده‌اید این بورد کاربردهای بسیار زیادی دارد که از جمله می‌توان به  موارد زیر اشاره کرد:
  • یک کامپیوتر سبک لینوکس برای کاربرد خانگی
  • اتصال به تلویزیون و داشتن یک تلویزیون اندرویدی
  • راه‌اندازی یک وب سرور
  • اتصال یک هارد ساتا و راه‌اندازی یک مدیا سرور و یا فایل سرور
  • اگر اطلاعات الکترونیکی کافی داشته باشید راه‌اندازی اتوماسیون منزل
  • اتصال یک LCD و یک صفحه‌ی تاچ و ساخت تبلت
  • و یا هر ایده‌ی دیگه‌ای که الان به ذهنتان خطور کرد.


سیستم عامل

به صورت پیش‌فرض روی این بورد سیستم‌عامل اندروید نصب شده است و می‌توانید به راحتی با اتصال آن به یک تلویزیون با ورودی HDMI این سیستم عامل را روی تلویزیون تجربه کنید.
در صورت نیاز هم می‌توانید با نصب لینوکس روی یک کارت حافظه uSD، بورد را با سیستم عامل لینوکس راه‌اندازی کنید و استفاده کنید.

نحوه خرید

اگر تا حالا این بورد را نخریدید و این توضیحات باعث شده که به فکر خریدش بیوفتید. میتوانید از فرشگاه اینترنتی کویر الکترونیک، وارد کننده ایرانی این محصول خریداری کنید. اکنون که من در حال نوشتن این مطلب هستم قیمت این محصول ۲۵۹ هزار تومان است.


  • حامد ذقاقی