۱۳۹۳/۰۹/۲۳

گزارشی از کارگاه شروع کار با Java و MySQL

مقدمه

چند روز قبل، ۲۰ آذر ۱۳۹۳، همایش نرم‌افزارهای آزاد و جشن انتشار اوبونتو ۱۴.۱۰ در دانشگاه شهید بهشتی برگزار شد. این همایش شامل دو بخش اصلی کارگاه‌ها و ارائه‌ها بود.

گزارشی از کارگاه

کارگاه شروع کار با Java و MySQL
کارگاه شروع کار با Java و MySQL
در بخش کارگاه‌ها، من کارگاهی تحت عنوان شروع کار با جاوا و پایگاه داده MySQL داشتم. برای کارگاه‌ها فقط ۳ ساعت زمان در نظر گرفته شده بود که اصولا این میزان زمان برای کارگاه بسیار کم است. با این وجود تا جای ممکن سعی کردم تمامی اطلاعات در سطح مبتدی و متوسط را به شرکت‌کنندگان که حدود ۶۰ نفر بودند منتقل کنم. در ابتدای شروع کارگاه، برگه‌های تقلب (Cheat Sheat) مربوط به جاوا و مای‌اس‌کیو‌ال توزیع شد. این برگه‌ها شامل اطلاعات عمومی از جمله، نوع داده‌ها، دستور زبان، توابع و... بودند.
در ادامه و بعد از معرفی خودم، توضیحی در مورد روند کارگاه اعلام کردم. این کارگاه در سه بخش شروع کار با MySQL، شروع کار با جاوا و استفاده از پایگاه داده MySQL در جاوا برگزار شد. متاسفانه بدلیل کمبود زمان امکان ارائه کامل بخش سوم میسر نشد. همچنین با توجه به اینکه بیشتر شرکت‌کنندگان آشنایی با MySQL و جاوا نداشتند، امکان ارائه مطالب تخصصی وجود نداشت و بیشتر مطالب در محدوده مبتدی و متوسط ارائه شدند.
در ادامه اسلایدها و برگه‌های تقلب مربوط به کارگاه را مشاهده می‌فرمایید.

شروع کار با MySQL

این ارائه شامل ۲۰ اسلاید بوده و شامل موارد زیر است:
  • معرفی پایگاه داده MySQL
  • نصب
  • نحوه اجرای عبارت‌های SQL
  • مهم‌ترین دستورات SQL
  • انواع داده در MySQL
  • عملگرها
  • دستور زبان (Syntax)
  • معرفی انواع Join ها
  • تعدادی تمرین


آشنایی و شروع کار با جاوا

این ارائه شامل ۳۰ اسلاید بوده و شامل موارد زیر است:
  • معرفی جاوا
  • آشنایی با ماشین مجازی جاوا (JVM) 
  • اصول (Java Principles)
  • تاریخچه
  • موارد استفاده
  • نصب
  • دستور زبان (Syntax)
  • انواع داده
  • انواع داده اولیه (Primitive Types)
  • آبجکت‌ها (Objects)
  • متغیرها
  • عملگرها
  • عبارت‌های شرطی
  • حلقه‌ها
  • کامنت‌گزاری در کد
  • تعریف دسترسی‌ها (Access Modifiers)
  • متدها
  • کلاس‌ها
  • ارث پذری (Inheritance)
  • اینترفیس‌ها (Interfaces)
  • مفاهیم انتزاعی (Abstraction)
  • ساختار فایل کلاس


استفاده از پایگاه داده MySQL در جاوا

این ارائه شامل ۱۷ اسلاید بوده و مواردی از قبیل متدها و کلاس‌های لازم برای استفاده از MySQL در جاوا را در بر می‌گیرد. همچنین پیاده‌سازی یک برنامه ساده دفترچه تلفن نیز در این ارائه آموزش داده شده است.


برگه تقلب جاوا (Java Cheat Sheet)

برگه تقلب مای‌اس‌کیو‌ال (MySQL)



امیدوارم که در فرصت‌های بعدی، بتوانم سطح کارگاه‌ها را از مبتدی و متوسط به تخصصی ارتقا دهم. همچنین مواردی از جمله حل تمرین به صورت تیمی، تعریف پروژه و... را در کارگاه‌ها اجرا نمایم.
سعید زبردست - کارگاه شروع کار با Java و MySQL
سعید زبردست - کارگاه شروع کار با Java و MySQL
کارگاه شروع کار با Java و MySQL
کارگاه شروع کار با Java و MySQL
سعید زبردست - کارگاه شروع کار با Java و MySQL
سعید زبردست - کارگاه شروع کار با Java و MySQL
کارگاه شروع کار با Java و MySQL
کارگاه شروع کار با Java و MySQL
عکس یادگاری همایش نرم‌افزارهای آزاد و جشن انتشار اوبونتو ۱۴.۱۰
عکس یادگاری همایش نرم‌افزارهای آزاد و جشن انتشار اوبونتو ۱۴.۱۰

۱۳۹۳/۰۹/۱۲

همایش نرم‌افزارهای متن‌باز و جشن انتشار اوبونتو ۱۴.۱۰


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

برنامه های همایش

همایش شامل دو بخش کارگاه‌ها و ارائه‌ها است. تاکنون برگزاری ۴ کارگاه، ۳ ارائه و یک سخنرانی  قطعی شده است. کارگاه‌ها به صورت همزمان برگزار خواهند شد. در نتیجه امکان ثبت‌نام و حضور در دو کارگاه وجود ندارد.

فهرست کارگاه‌ها

  1. کارگاه صفر تا 100 اوبونتو (توسط دانیال بهزادی)
  2. کارگاه شروع کار با MySQL و Java (توسط خودم، سعید زبردست)
  3. کارگاه امنیت اوبونتو
  4. کارگاه نصب سرور

فهرست ارائه‌ها و  سخنرانی‌ها

  1. سخنرانی دکتر خوانساری (ریاست مرکز تحقیقات و مخابرات ایران)
  2. ارائه Big Data (توسط امیر صدیقی)
  3. ارائه Open Stack (توسط روزبه شفیعی)
  4. ارائه اخبار لینوکس و نرم‌افزارهای آزاد (توسط جادی)

چطور در همایش حضور پیدا کنیم؟

شرکت در این همایش برای عموم علاقه‌مندان آزاد و رایگان است! تنها کاری که باید انجام بدهید ثبت‌نام جهت حضور در جشن است. برای ثبت‌نام به سایت همایش نرم افزار های آزاد مراجعه کنید.
مکان: تهران، ولنجک، دانشگاه شهید بهشتی، سالن مولوی
زمان: پنج‌شنبه، ۲۰ آذر ۱۳۹۳ از ساعت ۸:۳۰ صبح

لطفا

  • حتما در همایش حضور داشته باشید. حضور شما و هم‌صحبتی با شما مایه افتخار و انگیزه ماست.
  • اگر در فیس‌بوک هستید، حضور خود را در رویداد همایش نرم‌افزارهای متن باز و جشن انتشار اوبونتو ۱۴.۱۰ اعلام کنید.
  • اگر مایلید در این همایش ارائه‌ای داشته باشید زودتر ما را در جریان قرار بدهید.
  • تا حد امکان در مورد این مراسم اطلاع‌رسانی کنید و از دوستانتان هم دعوت کنید تا حضور داشته باشند.

چند نکته

  1. ثبت نام اینترنتی جهت ورود به دانشگاه الزامی می‌باشد. همراه داشتن کارت شناسایی توصیه می‌شود.
  2. کمیته برگزاری ارائه خدمات کامل را تنها به دارنگان کارت ثبت نام تعهد می نماید.
  3. همراه داشتن رایانه شخصی برای شرکت در کارگاه ها توصیه می‌شود.

اطلاعات بیشتر

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

۱۳۹۳/۰۸/۱۶

معرفی کتاب جهان و تاملات فیلسوف از شوپنهاور

جهان و تاملات فیلسوف - آرتور شوپنهاور
سلام،
بعضی کتاب‌ها را نباید خواند، بعضی را باید در نیمه رها کرد، بعضی را باید یک‌بار خواند، بعضی را باید چندبار و بعضی را چندین بار خواند. کتاب جهان و تاملات فیلسوف از آرتور شوپنهاور برای من از جمله کتاب‌هایی است که چندین بار خوانده‌ام.
من شوپنهاور را از طریق نیچه شناختم. مدت‌ها بود که منتظر بودم آثاری از شوپنهاور به فارسی ترجمه شود تا با دیدگاه‌های وی آشنا شوم. سرانجام رضا ولی یاری شروع به ترجمه آثار وی کرد.
قبل از خواندن اثار شوپنهاور، از گوشه و کنار شنیده بودم که او انسانی بدبین، تنها و بسیار منتقد است. با این حال و بواسطه اشارات نیچه منتظر آثار وی به فارسی ماندم.
حدود یک سال قبل کتاب جهان و تأملات فیلسوف را خریداری کردم. این کتاب شامل ۱۵ مقاله از آرتور شوپنهاور در مورد مسائل مختلف است. بعد از دیدن فهرست کتاب و مطالعه بخشی از آن، دریافتم که بسیاری از دغدغه‌هایی که من روزانه با آن‌ها روبرو می‌شوم در این کتاب بررسی شده‌ و مورد توجه قرار گرفته‌اند. بخش‌ها و فصول این کتاب عبارتند از:
  • دفتر اول
    1. در باب اثبات اراده‌ی حیات
    2. متافیزیک عشق
    3. در باب زنان
    4. در باب عبث بودن وجود
    5. در باب آلام جهان
    6. در باب خودکشی
    7. گفتگویی در باب جاودانگی
    8. راه رستگاری
  • دفتر دوم
    1. در باب نویسندگی و سبک
    2. در باب مطالعه و کتب
    3. در باب خودشناسی
    4. در باب اهل فضل
    5. چهره شناسی
    6. در باب نبوغ
    7. ملاحظات روانشناختی
در ابتدای کتاب جمله‌ای از شوپنهاور آمده است با این مضمون:
«زندگی پرسش دشواری است، من ترجیح می‌دهم آن را صرف تأمل بر خودش کنم»
محتوای کتاب پیرامون همین جمله ارائه شده است. شوپنهاور جهانی مملو از رنج را به تصویر می‌کشد و این تصویر را با چنان نثری ارائه می‌کند که او را تا مقام یکی از بزرگترین نثرنویسان آلمان ارتقا می‌دهد. نثرش خوش‌آهنگ و ساده و مفهوم است و بسیاری از عباراتش به قدری نغز و دل‌انگیز و عمیق است که می‌توان آن‌ها را بارها خواند و لذت برد و حتی به خاطر سپرد. بی‌پرده و به صراحت سخن می‌گوید و از متلک‌پرانی و تمسخر و بعضا حتی فحاشی نیز ابایی ندارد. نیچه در مورد او می‌گوید:«مطلقاً تنها بود و کمترین دوستی نداشت و فاصله‌ی میان یک و هیچ لایتناهی است. هیچ چیز متفکرین آلمان را به اندازه عدم شباهتی که میان شوپنهاور و آنان بود رنج نداد.»
نمیتوان براحتی و در یک جمله بخشی از کتاب را نقل کرد. مطالب هر فصل بسیار منسجم هستند و گزینش صرفا یک جمله یا پارگراف از هر فصل، ممکن است دیدگاه شوپنهاور را دقیقا منتقل نکند. با این وجود در طول مدتی که کتاب را مطالعه می‌کردم، هر از گاهی تصویری از بخش مورد علاقه خودم در اینستاگرام، توییتر، فیس‌بوک و گوگل‌پلاس منتشر می‌کردم. آلبوم تصویری زیر مجموعه‌ای از آن تصاویر است:
نقل‌قول‌ها و گزیده متن‌هایی از کتاب جهان و تاملات فیلسوف - شوپنهاور

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

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

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

پی‌نوشت

۱۳۹۳/۰۴/۲۴

موقعیت شغلی - کارشناس امنیت

سلام،
شرکت ما به دنبال جذب کارشناس امنیت است. در صورتیکه علاقمند به همکاری هستید رزومه خود را به آدرس ایمیل saeid.zebardast@gmail.com بفرستید.

پیش نیازهای این شغل
  • مسلط به تست نفوذ آسیب‌پذیری‌های وب، سیستم‌عامل، شبکه و…
  • آشنا با مفاهیم و تجهیزات شبکه
  • آشنا به سیستم‌عامل های لینوکس و ویندوز
  • آشنا به پایگاه‌های داده

در مورد شرکت
  • محل کار: محدوده میدان ونک (خ گاندی)
  • ساعت کاری: شنبه تا چهارشنبه از ۹ تا ۱۷. پنجشنبه ها از ۹ تا ۱۲:۳۰. البته روزهایی که نیاز باشد، مدت زمان بیشتری در شرکت هستیم.
  • در نهایت اینکه ما به دنبال نیروی تمام وقت هستیم.

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

۱۳۹۳/۰۴/۰۶

هفده اصل کار تیمی

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


۱۳۹۳/۰۳/۱۳

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

لوگو سیستم‌عامل اندروید

مقدمه

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

پیش‌نیازها

نرم‌افزار Android Studio

محیط‌های برنامه‌نویسی مختلفی به منظور برنامه‌نویسی برای اندروید وجود دارند. از جمله Eclipse، Intellij Idea و Android Studio. با توجه به اینکه Android Studio (اندروید استودیو) توسط خود گوگل پشتیبانی می‌شود، گزینه مناسب‌تری برای استفاده است. این برنامه نسخه‌ی قابل اجرا در سیستم‌عامل‌های گنو/لینوکس، مک او‌اس‌ایکس و ویندوز را داراست. برای دانلود آخرین نسخه برنامه Android Studio به آدرس زیر رفته و نسخه مربوط به سیستم‌عامل خود را دریافت و نصب نمایید:

کیت توسعه نرم‌افزار Android SDK

کیت توسعهٔ نرم‌افزار یا SDK مجموعه توابع و کتابخانه‌های کامپایل شده‌ای که تولیدکنندگان نرم‌افزار برای آسان کردن برنامه‌نویسی برای محیط یا سکوی خاصی فراهم می‌کنند و در اختیار برنامه‌نویسان کاربردی قرار می‌دهند. اگر از نرم‌افزار Android Studio استفاده نمایید، Android SDK در داخل آن وجود دارد. در غیر این صورت برای دانلود Android SDK به آدرس زیر مراجعه نمونه و بعد از دریافت، آن را نصب نمایید:

نسخه‌ای از SDK Platform

اگر از نرم‌افزار Android Studio استفاده نمایید، آخرین نسخه SDK Platform همراه با Android SDK نصب شده است. در غیر این صورت بعد از نصب Android SDK در مرحله قبل، از داخل پوشه tools فایل اجرایی android را اجرا نمایید. در پنجره‌ای که گشوده می‌شود، نسخه‌ای از SDK Platform را انتخاب نموده (ترجیحا آخرین نسخه) و با زدن دکمه Install packages آن را نصب نمایید:
نصب SDK Platform توسط Android SDK Manager
نصب SDK Platform توسط Android SDK Manager

ایجاد پروژه در Android Studio

به منظور ایجاد پروژه، ابتدا برنامه Android Studio را اجرا نموده و سپس بر روی گزینه New Project کلیک نمایید:
ایجاد پروژه در Android Studio
ایجاد پروژه در Android Studio

در مرحله بعد باید مشخصات اصلی برنامه را مشخص نمایید. گزینه‌های این صفحه عبارتند از:
  • Application name - عنوان برنامه
  • Module name - عنوان ماژولی که قست پیاده سازی آن را دارید.
  • Package name - عنوان بسته نرم‌افزاری. این عنوان که در علوم رایانه به آن فضای نام (Namespace) می‌گویند، برای گروه‌بندی بسته‌های نرم‌افزاری استفاده می‌شود. بهترین روش تعریف آن، نوشتن برعکس دامنه پروژه و زیر مجموعه‌های آن از کل به جز است. مانند: com.zebardast.myandroidapp.helloword. دقت داشته باشید که فضای نام از قوانین تعریف بسته‌های نرم‌افزاری در جاوا تابعیت نموده و در تمامی پروژه‌ها باید به صورت یکسان تعریف شود.
  • Project location - محل ذخیره پروژه و فایل‌های برنامه در کامپیوتر.
  • Minimum required SDK - حداقل SDK ای که قصد پشتیبانی از آن را دارید. برای پشتیبانی از دستگاه‌های بیشتر، بهتر است تا جای ممکنه برنامه خود را با SDK های قدیمی نیز سازگار نمایید. در نظر داشته باشید که اگر ویژگی خاصی در نسخه‌های قدیمی SDK پشتیبانی نمی‌شود، می‌توانید در داخل برنامه آن را تشخیص داده و عملکرد متناسب با آن را برای دستگاه‌های قدیمی پیاده‌سازی نمایید. برای اطلاعات بیشتر بخش Supporting Different Platform Versions از مستندات اندروید را مشاهده نمایید.
  • Target SDK - جدید‌ترین نسخه‌ای از SDK که شما برنامه خود را بر روی آن تست نموده‌اید. در نظر داشته باشید که بعد از انتشار هر نسخه جدیدی از SDK، برنامه خود را با آن تست نموده و این مقدار را بروزرسانی نمایید.
  • Compile with - نسخه‌ای از SDK که برنامه شما توسط آن کامپایل خواهد شد. به صورت پیش‌فرض این مقدار جدیدترین نسخه SDK است.
  • Theme - قالب ظاهری برنامه.
برای شروع گزینه‌های بالا را مشابه زیر تکمیل نمایید:
ایجاد پروژه در Android Studio
ایجاد پروژه در Android Studio


در مرحله بعد باید قالب Activity برنامه را مشخص نمایید. این مقدار را بر روی Blank Activity قرار داده و دکمه Next را بزنید:
انتخاب Activity در Android Studio
انتخاب Activity در Android Studio


در آخرین مرحله باید مشخصات Activity را وارد نمایید. مقادیر پیش‌فرض را تغییر نداده و بر روی دکمه Finish کلیک نمایید تا پروژه شما ایجاد شود:
تنظیمات Activity در Android Studio
تنظیمات Activity در Android Studio


بعد از چند لحظه صفحه پروژه خود را که مشابه عکس زیر است را مشاهده خواهید نمود:
صفحه پروژه در Android Studio
صفحه پروژه در Android Studio


ساختار پروژه

قبل از اجرای پروژه و مشاهده خروجی آن، بهتر است تا با ساختار پروژه آشنا شویم. مهم‌ترین موارد در زمینه ساختار پروژه در Android Studio عبارتند از:

فایل AndroidManifest.xml

مانیفست برنامه و مشخصات کلی آن در فایل AndroidManifest.xml ذخیره می‌شوند. اطلاعاتی از قبیل Activity، اطلاعات Android SDK و... از جمله محتویات این فایل می‌باشند. محتوای این فایل برای برنامه HelloWorld ما به صورت زیر است:


    
        
            
                

                
            
        
    



دایرکتوری src

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

دایرکتوری res

سه حرف res مخفف resources بوده و همانطور که از نام آن مشخص است، محتوای آن شامل تمامی منابع استفاده شده در برنامه است. از جمله اطلاعات نحوه نمایش ظاهر برنامه، تصاویر و... .

اجرای برنامه

برای اجرای برنامه دو راهکار وجود دارد. راهکار اول نصب و اجرای برنامه بر روی دستگاهی (موبایل، تبلت) که دارای سیستم‌عامل اندروید و راهکار دوم استفاده از شبیه ساز توسط برنامه Android Virtual Device Manager است.

اجرای برنامه در دستگاه واقعی

برای اجرای برنامه در دستگاه واقعی،‌ ابتدا باید گزینه USB debugging را فعال نمایید. برای فعال کردن این گزینه:
  • در دستگاه‌هایی با نسخه Android 3.2 یا قدیمی‌تر به Settings > Applications > Development بروید.
  • در دستگاه‌هایی با نسخه Android 4.0 و جدیدتر به Settings > Developer options بروید.
    • نکته: در Android 4.2 و جدیدتر، گزینه Developer options به صورت پیش‌فرض مخفی می‌باشد. برای به نمایش درآمدن آن به Settings > About phone رفته و هفت بار Build number را بزنید (لمس کنید).
بعد از فعال کردن USB debugging، دستگاه خود را با کابل USB به کامپیوتر وصل کنید. سپس در Android Studio از منو Run گزینه Run helloworld را کلیک نماید. در مرحله بعد پنجره‌ی Choose device را مشاهده می‌کنید. در این پنجره  گزینه Choose a running device را انتخاب نموده، سپس دستگاه اندرویدی خود را به عنوان مقصد نصب و اجرا برنامه برگزینید.
پنجره Choose Device در اندروید استودیو
پنجره Choose Device در اندروید استودیو

در نهایت با زدن دکمه OK برنامه HelloWorld بروی گوشی شما نصب و اجرا خواهد شد.

آیکون برنامه HelloWorld در گوشی
آیکون برنامه HelloWorld در گوشی

برنامه HelloWorld در گوشی
برنامه HelloWorld در گوشی


اجرای برنامه در شبیه‌ساز Android Virtual Device Manager

برای اجرای برنامه در محیط AVD Manager به منو Tools > Android > AVD Manager در داخل Android Studio بروید. سپس در پنجره‌ای که باز می‌شود باید یک دستگاه تعریف نمایید. برای تعریف آن می‌توانید از فهرست دستگاه‌های موجود در تب Device Definitions استفاده نمایید. فهرست موجود در این تب شامل مهم‌ترین دستگاه‌های موجود در بازار می‌باشد. بعد از انتخاب دستگاه مورد نظر، بر روی دکمه Create AVD کلیک نمایید:
برنامه Android Virtual Device Manager
بعد از تعریف دستگاه شبیه‌ساز، ابتدا باید آن را اجرا (روشن) نمایید. برای اینکه، در Android Studio از منو Run گزینه Run helloworld را کلیک نماید. در مرحله بعد پنجره‌ی Choose device را مشاهده می‌کنید. در این پنجره گزینه Launch emulator و دستگاه شبیه‌ساز را انتخاب نموده و بر روی OK کلیک نمایید.
راه‌اندازی دستگاه شبیه ساز
راه‌اندازی دستگاه شبیه ساز
 بعد از چند لحظه دستگاه شبیه‌ساز راه‌اندازی می‌شود.
دستگاه شبیه‌ساز شده با AVD Manager

بعد از راه‌اندازی دستگاه شبیه‌ساز، ابتدا قفل آن را باز کنید. در مرحله بعد بار دیگر گزینه Run helloworld را انتخاب کرده و سپس در پنجره جدید گزینه Choose a running device و دستگاه شبیه‌ساز فعال را انتخاب نمایید.
انتخاب دستگاه شبیه‌ساز برای اجرای برنامه در آن
انتخاب دستگاه شبیه‌ساز برای اجرای برنامه در آن

بعد از چند لحظه برنامه HelloWorld بر روی شبیه‌ساز اجرا خواهد شد.
اجرای برنامه HelloWorld بر روی شبیه‌ساز
اجرای برنامه HelloWorld بر روی شبیه‌ساز

امیدوارم که این مطلب راهنمای مناسبی برای شروع به برنامه‌نویسی جهت سیستم‌عامل اندروید گوگل باشد. برای مطالعه بیشتر میتوانید به مستندات آموزشی اندروید گوگل مراجعه نمایید.

۱۳۹۳/۰۲/۱۷

از دستور history بهتر استفاده کنیم

مقدمه


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

فهرست دستورات اجرا شده


در زیر خروجی پیش‌فرض دستور history را مشاهده می‌نمایید:
$ history
1008  ll
1009  ifconfig
1010  sudo iptables -nL
1011  sudo psad -S
1012  aptitude update
1013  aptitude full-upgrade
1014  history

فهرست دستورات اجرا شده همراه با تاریخ و ساعت


برای مشاهده زمانی که هر دستور در خط فرمان وارد شده است می‌توانید متغیر HISTTIMEFORMAT را مقداردهی نمایید:
$ export HISTTIMEFORMAT='%F %T  '
$ history
1008  2014-05-07 09:09:11  ll
1009  2014-05-07 09:09:14  iconfig
1010  2014-05-07 09:09:25  sudo iptables -nL
1011  2014-05-07 09:09:37  sudo psad -S
1012  2014-05-07 09:09:47  aptitude update
1013  2014-05-07 09:09:55  aptitude full-upgrade
1014  2014-05-07 09:10:01  history
1015  2014-05-07 09:11:05  export HISTTIMEFORMAT='%F %T  '
1016  2014-05-07 09:11:16  history
* در مقداردهی متغیر HISTTIMEFORMAT مقادیر زیر معادل یکدیگر هستند:
%F Equivalent to %Y - %m - %d
%T Replaced by the time ( %H : %M : %S )


فیلتر کردن برخی دستورات در تاریخچه دستور history


شما می‌توانید با مقداردهی متغیر HISTIGNORE دستوراتی را که مکرر استفاده می‌کنید را فیلتر نمایید:
$ export HISTIGNORE='pwd:history:ll:'
$ pwd
/home/saeid
$ history 3
1040  2014-05-07 09:22:58  history
1041  2014-05-07 09:32:48  export HISTIGNORE='pwd:history:ll:'
1042  2014-05-07 09:32:57  history 3

نادیده گرفتن تکرار دستورات


دستوراتی که قصد دارید تکرار دستورات را در history نادیده بگیرید، از متغیر HISTCONTROL به شکل زیر استفاده نمایید:
$ export HISTCONTROL=ignoredups
در نظر داشته باشید که در صورت نیاز می‌توانید تنظیمات HISTCONTROL را توسط دستور unset به حالت پیش‌فرض تغییر دهید:
$ unset HISTCONTROL

تنظیم حداکثر تعداد ذخیره‌سازی دستورات اجرا شده


متغیر HISTSIZE حداکثر تعداد ذخیره‌سازی دستورات اجرا شده را مشخص می‌نماید. مقدار پیش‌فرض این متغیر 1000 است.
$ export HISTSIZE=1000
* برای غیرفعال کردن ذخیره‌سازی دستورات اجرا شده، کافیست مقدار متغیر HISTSIZE را صفر قرار دهید:
$ export HISTSIZE=0

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


به صورت پیش‌فرض، فهرست دستورات اجرا شده توسط هر کاربر در فایلی با نام .bash_history داخل پوشه خانگی وی ذخیره می‌شود. به عنوان مثال دستورات اجرا شده توسط کاربر saeid در فایل زیر قابل مشاهده و دستیابی است:
root@Saeid-Dev:/home/saeid# ll ~saeid/.bash_history
-rw------- 1 saeid saeid 40324 May  7 08:05 /home/saeid/.bash_history
* برای تغییر نام و آدرس فایل تاریخچه دستورات از متغیر HISTFILE استفاده نمایید.
* در نظر داشته باشید که برای مشاهده محتوای فایل تاریخچه سایر کاربران، باید دسترسی کاربر ریشه (root) را داشته باشید.

جستجو در تاریخچه دستورات اجرا شده


شما می‌توانید به منظور جستجو در تاریخچه دستورات اجرا شده، از ترکیب دستورات history و grep به صورت زیر استفاده نمایید:
$ history | grep export
872  export HISTTIMEFORMAT='%F %T  '
874  export HISTTIMEFORMAT='%T  '
878  export HISTTIMEFORMAT='%Y - %m - %d %T  '
1017  export HISTTIMEFORMAT=''
1019  export HISTTIMEFORMAT='%F %T  '
1021  export HISTIGNORE='ll:history'
1024  export HISTIGNORE='ls -l:history:ll'
1026  export HISTIGNORE='ll'
1028  export HISTIGNORE='ls -l'
1041  export HISTIGNORE='pwd:history:ll:'
1043  export HISTCONTROL=ignoredups
1051  unset HISTCONTROL
1053  echo "export HISTCONTROL=ignoredups" >> ~/.bash_profile
1062  export HISTSIZE=1000
1074  history | grep export

روش دیگر برای جستجو در تاریخچه دستورات استفاده از ترکیب دکمه های Ctrl و r است. با فشردن هر دو دکمه با هم، فرم جستجوی خطی تاریخچه فعال می‌شود:
(reverse-i-search)`source ': source .bash_profile

ذخیره دائمی تنظیمات دستور history


برای ذخیره نمودن دائمی تنظیمات دستور history (و سایر دستورات) می‌توانید مقادیر مورد نظر را در فایل .bash_profile ذخیره نمایید.
$ vi ~/.bash_profile
یا به صورت خودکار، مانند:
$ echo "export HISTCONTROL=ignoredups" >> ~/.bash_profile

پاک کردن تاریخچه دستورات اجرا شده


به منظور پاک کردن تاریخچه تمامی دستورات اجرا شده میتوانید، از دستورات زیر را استفاده نمایید:
$ history -c

یا
$ > $HISTFILE

در نهایت اینکه اگر قصد دارید دستوری را بدون ذخیره شدن آن در تاریخچه دستورات اجرا نمایید، کافیست در ابتدای دستور یک فاصله (space) قرار دهید ;)

۱۳۹۲/۱۲/۲۸

نحوه بازیابی رمز عبور MySQL

مقدمه

MySQL
پایگاه داده MySQL
به دلایل زیادی ممکن است که شما نتوانید با کاربر root وارد محیط پایگاه داده MySQL شوید. مواردی از قبیل فراموشی کلمه عبور، تغییر کلمه عبور توسط شخص دیگر (همکار یا نفوذگر)، نفوذ به پایگاه داده بدون داشتن رمز عبور و غیره. راهنمای زیر در نسخه 5.5 پایگاه داده MySQL بر روی سیستم عامل اوبونتو 12.04 آزموده شده است. همچنین این راهنما بر روی سایر سیستم‌عامل‌ها با کمی تغییر محیطی قابل اجرا می‌باشد.

تغییر رمز MySQL بدون داشتن رمز فعلی


مراحل زیر را به ترتیب برای تغییر رمز MySQL انجام دهید.

۱- متوقف کردن سرویس MySQL


دستور زیر را برای متوقف کردن سرویس MySQL در خط فرمان گنو/لینوکس اجرا نمایید:
sudo /etc/init.d/mysql stop

۲- راه‌اندازی سرویس MySQL در حالت غیر فعال کردن رمز عبور


دستور زیر را برای راه‌اندازی سرویس MySQL در حالت غیر فعال کردن رمز عبور در خط فرمان گنو/لینوکس اجرا نمایید:
sudo mysqld_safe --skip-grant-tables &


۳- ورود به محیط MySQL


دستور زیر را برای ورود به محیط MySQL بدون نیاز به رمز عبور در خط فرمان گنو/لینوکس اجرا نمایید:
mysql -u root

۴- تغییر رمز کاربر root


دستورات زیر را در خط فرمان MySQL برای تغییر رمز عبور کاربر root وارد نمایید. به جای عبارت NEW-ROOT-PASSWORD رمز مورد نظر خود را جایگزین نمایید. همچنین شما میتوانید رمز سایر کاربران را نیز با دستورات مشابه تغییر دهید.
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

۵- متوقف کردن سرویس جاری MySQL


دستور زیر را برای متوقف کردن سرویس جاری MySQL در خط فرمان گنو/لینوکس اجرا نمایید:
sudo /etc/init.d/mysql stop

۶- راه‌اندازی سرویس MySQL و ورود با رمز جدید


دستور زیر را برای راه‌اندازی سرویس MySQL در خط فرمان گنو/لینوکس اجرا نمایید:
sudo /etc/init.d/mysql start


در نهایت با استفاده از رمز عبور جدید و دستور زیر وارد محیط MySQL شوید:
mysql -u root -p

۱۳۹۲/۱۲/۱۶

برنامه Homebrew برای مدیریت بسته‌های نرم‌افزاری در OS X

مقدمه


من از سیستم‌عامل اوبونتو برای انجام کارهای شرکت و پروژه‌های گنو/لینوکسی استفاده می‌کنم و در کنار آن، از مک‌بوک پرو (OS X) برای انجام سایر کارها و پروژهای شخصی بهره می‌برم. به صورت پیش‌فرض در اوبونتو و سایر گنو/لینوکس‌ها ابزارهایی مانند APT و RPM برای مدیریت بسته‌های نرم‌افزاری وجود دارند که OS X از آن‌ها بی‌بهره است. ابزار‌های زیادی برای رفع این کمبود وجود دارند. از جمله Fink، Gentoo/Alt، MacPorts، Pkgsrc، RudixH و Homebrew. من شخصا Homebrew را بدلیل راحتی در استفاده و زیاد بودن بسته‌ها در مخازن نرم‌افزاری آن به سایر ابزارها ترجیح می‌دهم.

نصب Homebrew


برای نصب Homebrew کافیست دستور زیر را در خط فرمان ترمینال وارد و اجرا نمایید:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
سپس دستور زیر را برای اطمینان از نصب صحیح Homebrew اجرا نمایید:
brew doctor                # check everything is ok

Homebrew بسته‌های نرم‌افزاری را در پوشه /usr/local/Cellar نصب کرده و symlink آن‌ها را برای اجرا در /usr/local/bin ایجاد می‌نماید. دستورات زیر نحوه نصب بسته wget و محل نصب آن را مشخص می‌کنند:
$ brew install wget
$ cd /usr/local
$ find Cellar
Cellar/wget/1.15
Cellar/wget/1.15/bin/wget
Cellar/wget/1.15/share/man/man1/wget.1

$ ls -l bin
bin/wget -> ../Cellar/wget/1.15/bin/wget

دستور زیر را برای بررسی وجود /usr/local/bin در $PATH اجرا نمایید:
if [ -n "`echo $PATH | grep '/usr/local/bin'`" ]; then echo "true"; else echo "false"; fi;

در صورتیکه خروجی دستور بالا false بود، دستورات زیر را برای اضافه کردن /usr/local/bin به $PATH اجرا نمایید:
echo -e "\n# Homebrew bin dir path." >> ${HOME}/.bash_profile
echo "PATH=/usr/local/bin:\$PATH" >> ${HOME}/.bash_profile
source ~/.bash_profile

دستورات Homebrew


دستورات Homebrew بسیار شبیه به سایر نرم‌افزارهای مشابه‌اش است. برای اجرای دستورات Homebrew نیازی به دسترسی ریشه و sudo ندارید. در زیر مهم‌ترین دستورات Homebrew را مشاهده می‌نمایید:
دستور توضیح
brew list
نمایش فهرست نرم‌افزار‌های نصب شده
brew search
نمایش فهرست نرم‌افزار‌های قابل نصب
brew search pkg-name
جستجو برای نرم‌افزار pkg-name
brew info pkg-name
نمایش اطلاعات بسته نرم‌افزاری pkg-name
brew install pkg-name
نصب بسته نرم‌افزاری pkg-name
brew uninstall pkg-name
حذف بسته نرم‌افزاری pkg-name
brew update

بروزرسانی فهرست نرم‌افزار‌های قابل نصب
brew upgrade
بروزرسانی تمامی نرم‌افزارها
brew upgrade pkg-name
بروزرسانی نرم‌افزار pkg-name

پیوندها

۱۳۹۲/۱۰/۲۰

آزاد کردن فضای RAM با پاک‌کردن Cache در لینوکس

مقدمه

مدتی قبل در حال بررسی عملکرد پایگاه داده MySQL و پارامترهای مختلف کش (Cache) کردن اطلاعات آن بودم. قطعه کدی به زبان سی پلاس پلاس (++C) وظیفه خواندن محتوای فایل‌ها و انتقال مقادیر محاسبه شده و دریافتی از آن‌ها را به MySQL داشت. مشکلی که بوجود آمد، پر شدن حافظه رم (RAM) بعد از چند دقیقه و کندی سیستم برای انجام سایر کارها بود.

بررسی وضعیت رم

در لینوکس دستوری به نام free وجود دارد که اطلاعات وضعیت رم و فضای swap را نشان می‌دهد.
$ free -h
total       used       free     shared    buffers     cached
Mem:          7.5G       7.4G       163M         0B        76M       4.1G
-/+ buffers/cache:       3.2G       4.3G
Swap:         7.7G       4.9M       7.7G
با توجه به خروجی دستور free مشخص می‌شود که از مجموع 7.5G فضای رم، فقط 163M خالی است. همچنین 4.1G به Cache اختصاص داده شده است. من نیاز داشتم که فضای کش شده را به صورت دستی خالی کنم.

منظور از Cache و Buffer در اینجا چیست؟

Cache شامل اطلاعات محتوای فایل‌ها و اطلاعاتی است که از دیسک خوانده شده اند.
‌Buffer شامل اطلاعات وضعیت رم و Cache و همچنین اطلاعاتی که هنوز ذخیره نشده‌اند.

پاک کردن Cache

در لینوکس فایلی به نام drop_caches وجود دارد که نوشتن در آن به کرنل (Kernel) دستور لازم برای آزاد کردن فضای cache از حافظه را می‌دهد. مقدار عددی 3 باعث پاک کردن تمامی اطلاعات کش شده می‌شود. در نظر داشته باشید که قبل از پاک کردن کش باید دستور sync را اجرا نمایید. دستور sync، اطلاعاتی که نیازمند نوشتن شدن بر روی دیسک هستند ولی هنوز در cache و buffer می‌باشند را بر روی دیسک می‌نویسد. ترکیب دستورات sync و پاک کردن cache در زیر آماده است.
$ sync; sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
بد نیست دوباره دستور free را اجرا کرده و وضعیت رم را بررسی کنیم:
$ free -h
total       used       free     shared    buffers     cached
Mem:          7.5G       3.5G       4.0G         0B       7.6M       433M
-/+ buffers/cache:       3.0G       4.5G
Swap:         7.7G       4.9M       7.7G
خوب،‌ براحتی حدود 3.4G از فضای RAM را خالی کردیم. شما می‌توانید این دستورات را توسط crontab به صورت دوره‌ای و خودکار بر روی سرور ویا کامپیوتر شخصی خود اجرا نمایید. البته بهتر است مدیریت رم را به سیستم عامل واگذار کنید.

برای مطالعه بیشتر