دی ۳۰ ۱۳۹۶

آموزش اوبونتو: قسمت اول، آشنایی با محیط

نوشته شده توسط فرشید نوتاش حقیقت.

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

دسکتاپ اوبونتو

در نگاه اول ممکن است شما شباهت‌های زیادی را مابین اوبونتو و سایر سیستم‌عامل‌ها از قبیل ویندوز و مک مشاهده کنید. این بدین دلیل است که همه آن‌ها مبتنی بر رابط کاربری گرافیکی (gui) ساخته شده‌اند. به عنوان مثال در همه این سیستم‌عامل‌ها از ماوس برای حرکت در دسکتاپ، برنامه‌های کاربردی باز، انتقال فایل‌ها و کارهایی از این نظیر استفاده می‌کنید. به‌طور خلاصه می‌توان گفت که همه چیز بصری است.

Unity

تمامی سیستم‌عامل‌های مبتنی بر gui از یک محیط دسکتاپی که دارای ویژگی‌هایی است بهره می‌برند.

اوبونتو به‌طور پیش‌فرض از دسکتاپ Unity استفاده می‌کند.

پس‌زمینه دسکتاپ

محیط یونیتی شامل یک پس‌زمینه دسکتاپ و دو نوار که یکی از آن‌ها بصورت افقی بوده و دیگری عمودی است. نوار افقی بالای صفحه منوبار (Menu Bar) و نوار عمودی سمت چپ لانچر (Launcher) نام دارد. در زیر منوبار تصویری کل دسکتاپ را تحت سلطه خود درآورده که به این تصویر، تصویر پس‌زمینه (Background) گویند.

منوبار

منوبار شامل توابع متداولی است که در اوبونتو استفاده می‌شود. آیکون‌ها در سمت راست منو در ناحیه‌ای از نوار منو به نام ناحیه نشانگر (Indicator) یا ناحیه اطلاع‌رسانی (notification) واقع شده‌اند.

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

برخی از برنامه‌ها به‌طور خودکار در حین نصب آیکونی را به منوبار اضافه می‌کنند. شایع‌ترین شاخص‌ها عبارتند از:

Network Indicator که ارتباطات شبکه را مدیریت می‌کند و به شما این امکان را می‌دهد که به سرعت و به آسانی به یک شبکه سیمی یا بی‌سیم متصل شوید.

Text Entry Settings که اگر شما بیش از یک زبان صفحه‌کلید را نصب کرده باشید مانند EN و FA نمایان می‌شود که به کمک آن قادر خواهید بود آن را تغییر دهید.

Messaging Indicator برنامه‌های اجتماعی شما را شامل می‌شود که از طریق آن می‌توانید به مخاطبین خود پیام داده و یا به ایمیل دسترسی داشته باشید.

Sound Indicator راهی آسان برای تنظیم صدا و همچنین دسترسی به پخش‌کننده موسیقی و تنظیمات صدا را فراهم می‌کند.

Clock ساعت فعلی را نشان می‌دهد و یک پیوند به تقویم و تنظیمات زمان و تاریخ را برقرار می‌سازد.

Session Indicator دارای تنظیمات سیستم، راهنمای اوبونتو و گزینه‌هایی چون قفل کردن کامپیوتر، logging یا ریستارت کامپیوتر و یا خاموش کردن آن می‌باشد.

هر برنامه‌ای شامل منوهای مختلفی چون File، Edit، View و … هست که با باز کردن آن در سمت منو بار نمایش داده می‌شوند. برای نمایش منوهای برنامه، کافی است ماوس خود را به نوار منوی دسکتاپ در بالای صفحه حرکت دهید تا منوهای برنامه نمایش داده شوند.

شما می‌توانید از طریق Appearance در System Setting این قابلیت را غیرفعال کنید. در زبانه Behavior در زیر Show the menus for a window گزینه In the windows title bar را انتخاب کنید.

The Launcher

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

تمامی برنامه‌های در حال اجرا شما تا زمانی که بسته نشده‌اند به‌صورت یک آیکون بر روی لانچر دیده می‌شوند.

برای تغییر سایز آیکون‌های لانچر از طریق System Setting و گزینه Appearance و زبانه Look می‌توانید اقدام کنید.

اولین آیکون در لانچر Dash نام دارد که درباره آن در آموزشی دیگر صحبت خواهیم کرد.

به‌طور پیشفرض آیکون‌های دیگری شامل File Manager، LibreOffice، Firefox، دستگاه‌های متصل (مانند فلش مموری) و سطل زباله در لانچر وجود دارد.

اجرای برنامه‌ها

برای اجرای یک نرم‌افزار که بر روی لانچر قرار دارد با کلیک کردن بر روی آن به راحتی آن را اجرا خواهید کرد.

آیکون برنامه پیش‌زمینه (یعنی برنامه‌ای که در بالای همه پنجره‌های دیگر برنامه‌هاست) با یک مثلث سفید در سمت راست آن نشان داده می‌شود.

همچنین می‌توانید برنامه‌ها را از طریق Dash اجرا کنید که در آموزشی مجزا بدان خواهیم پرداخت.

افزودن و حذف برنامه‌ها بر روی لانچر

برای اضافه کردن یک برنامه به لانچر دو روش وجود دارد:

روش اول – Dash را گشوده و برنامه‌ای که می‌خواهید پیدا کرده سپس آیکون آن را با ماوس کشیده و بر روی لانچر رها کنید.

روش دوم – برنامه‌ای که می‌خواهید به لانچر اضافه کنید اجرا کرده و سپس روی آن کلیک راست کنید و گزینه Lock to Launcher را برگزینید.

برای حذف یک برنامه از لانچر کافی است بر روی آیکون آن کلیک راست کرده و گزینه Unlock from Launcher را انتخاب کنید.

در آموزش بعدی به آیتم Dash خواهیم پرداخت.

نوشته آموزش اوبونتو: قسمت اول، آشنایی با محیط اولین بار در لینوکس سیزن پدیدار شد.


دی ۲۹ ۱۳۹۶

آموزش رایتر: قسمت اول، آشنایی با محیط کار نرم‌افزار

نوشته شده توسط فرشید نوتاش حقیقت.

زمانی که برنامه رایتر (LibreOffice Writer) را اجرا می‌کنیم، مانند بقیه برنامه‌های کاربردی، این نرم‌افزار در یک پنجره برنامه‌ای ظاهر می‌شود. در نوار عنوان که در بالای پنجره قرار دارد، نام برنامه و نام فایلی که در حال ویرایش آن هستیم با یک خط فاصله نمایش داده می‌شود.

در خط بعد، منوهای برنامه را مشاهده می‌کنیم و در خط بعدی ابزارهای استاندارد واژه‌پرداز نمایان هستند که به‌وسیله منوی View>>Toolbars قابل اضافه یا حذف شدن هستند. در بخش میانی، اصطلاحاً صفحه کاغذ قرار دارد که می‌توانیم نامه، گزارش، کتاب، مجله و غیره را در این قسمت بنویسیم و یا ویرایش کنیم. در کنار و بالای این صفحه نوار باریکی با شماره‌هایی مشخص شده‌اند، که به آن خط‌کش گفته می‌شود. در انتهای پنجره نوار وضعیت قرار دارد. در سمت راست نوار وضعیت می‌توانیم بزرگ‌نمایی سند را تنظیم کرده و حالت خواندن، دو صفحه‌ای و تک صفحه‌ای را فعال کنیم.

نوار عنوان

نوار عنوان (Title Bar) در بالای پنجره رایتر قرار گرفته که نام فایل سند جاری را نشان می‌دهد وقتی که سند به تازگی ایجاد شده، نام سند Untiled X است که X یک عدد خواهد بود.

نوار منو اصلی

نوار منو اصلی (Menu Bar) در زیر نوار عنوان قرار گرفته است. زمانی که شما یکی از منوها را انتخاب می‌کنید یک زیرمنو ظاهر خواهد شد که بیشتر دستورات آن شامل موارد زیر است:

دستورات اجرایی، مانند Close یا Save کردن، که در منوی File موجود است.

Commands: کادرهای محاوره‌ای را باز می‌کنند که در انتهای آن سه نقطه وجود دارد، مانند Find یا Paste Special که در منوی Edit موجود است.

گزینه‌هایی که خود دارای زیرمنو هستند و بیشتر با پیکان مشکی که به سمت راست اشاره دارد مانند Toolbars و Zoom در منوی View، حرکت دادن مکان‌نما بر روی آن باعث باز شدن آن می‌شود.

نوار ابزار استاندارد (Standard Toolbar)

نوار ابزار استاندارد به‌صورت پیش‌فرض در زیر نوار منوی اصلی قرار دارد که ابزارهای پر کاربرد را نمایش می‌دهد، مانند: ذخیره‌سازی، چاپ، ایجاد سند جدید، این نوار ابزار در تمامی برنامه‌های LibreOffice وجود دارد. (Writer، Calc، Impress، Draw)

نوار قالب‌بندی

نوار قالب‌بندی (Formatting Toolbar) دومین نوار ابزاری است که با انتخاب متن یا عکس متفاوت می‌شود، یعنی در هنگام کار با متن، نوار قالب‌بندی گزینه‌های ویژه کاراکترها را نمایش داده و هنگامی که مکان‌نما بر روی تصویر قرار می‌گیرد نوار ابزارهای مخصوص تصاویر را نشان می‌دهد.

نوار ابزار تصاویر به‌صورت قفل شده در انتهای صفحه‌نمایش، نمایش داده می‌شود. یک نوار ابزار فرعی برای گلوله و شماره‌گذاری (Bullet and Numbering) در کنار نوار ابزار قالب‌بندی نمایش داده می‌شود.

نوار وضعیت

نوار وضعیت (Status Bar) در پایین فضای کاری واقع شده است. این نوار ابزار اطلاعاتی درباره سند و راه‌های مناسب برای تغییرات سریع برخی از ویژگی‌های سند را فراهم می‌کند. این نوار ابزار را می‌توان در منوی View پنهان یا آشکار کرد. همانطور که در تصویر نشان داده شده است:

نوار کناری

برای فعال کردن نوار کناری، Sidebar را از منوی View انتخاب می‌کنیم. نوار کناری شامل هفت آیتم تنظیمات، خصوصیات (Properties)، سبک‌ها و قالب‌بندی‌ها (Styles and Formatting)، گالری (Gallery)، دیدبان (Navigator)، مدیریت تغییرات (Manage Changes) و طراحی (Design) است.

خصوصیات: اگر متن انتخاب شده باشد ابزارهای قالب‌بندی کاراکتر، پاراگراف و سبک صفحه سند نمایش داده می‌شوند و اگر یک شکل انتخاب شده باشد، ابزارهای روشنایی، حالت رنگ گرافیک، شفافیت عرض و ارتفاع نشان داده می‌شوند.

سبک و قالب‌بندی: در این بخش سبک‌های مورد استفاده سند را می‌توان مدیریت کرد.

گالری: تصاویر و نمودارهای آماده مانند علایم جهت‌دار، پس‌زمینه و دیاگرام در این قسمت در دسترس است. در این بخش همچنین می‌توان یک دسته جدید ایجاد نمود. برای درج یک تصویر و یا اضافه کردن یک تصویر جدید به گالری، می‌توان تصویر انتخاب شده را با عمل Drag کردن وارد نمود.

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

منبع: «جزوه آموزشی مهارت کار با نرم‌افزار واژه‌پرداز» نوشته شرکت دانش‌بنیان سافا

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


دی ۲۸ ۱۳۹۶

آموزش خط فرمان: قسمت اول، Shell چیست؟

نوشته شده توسط فرشید نوتاش حقیقت.

وقتی از خط فرمان سخن می‌گوییم در واقع به Shell (پوسته) اشاره می‌کنیم. Shell برنامه‌ای است که فرمان‌ها را از صفحه‌کلید می‌گیرد و به سیستم‌عامل منتقل می‌کند. تقریباً تمامی توزیع‌های لینوکسی یک برنامه Shell را از پروژه GNU تحت عنوان bash پشتیبانی می‌کنند. Bash سرنام واژگان Bourne Again Shell بوده که توسط استیو بورن نوشته شده است.

شبیه‌سازهای ترمینال

هنگام استفاده از یک رابط گرافیکی نیازمند برنامه دیگری تحت عنوان شبیه‌ساز ترمینال برای تعامل با پوسته خواهید بود. KDE از console و GNOME از gnome-terminal استفاده می‌کند. تعداد دیگری از شبیه‌سازهای ترمینال برای لینوکس وجود دارد که اساس کار آن‌ها یکسان است و امکان دسترسی به پوسته را به ما می‌دهد.

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

این نشان‌دهنده اعلان پوسته (shell prompt) نامیده می‌شود. ممکن است اعلان پوسته در سیستم شما کمی متفاوت باشد. معمولاً نام کاربری username@machinename بوده و سپس دایرکتوری جاری (در این باره بیشتر توضیح خواهیم داد) و علامت دلار است.

اگر آخرین کاراکتر به جای دلار، # باشد بدین معنا است ترمینال دارای دسترسی‌ها و مجوزهای کاربر superuser می‌باشد. این بدین معناست که ما به‌عنوان کاربر root (ریشه) وارد شده‌ایم و یا یک ترمینال را با امتیازات superuser (چیزی شبیه Administrator در سیستم‌های ویندوزی) وارد شده‌ایم.

حال با تایپ کردن، ترمینال آزمایش می‌کنیم:

با توجه به اینکه این فرمان موجود نیست، پوسته به شما فرصت دیگری می‌دهد.

تاریخچه فرمان

اگر دکمه جهت‌نمای بالا را بفشارید مشاهده خواهید کرد که فرمان قبلی (kaekfjaeifj) پس از اعلان ظاهر می‌شود. به این ویژگی تاریخچه فرمان (Command History) می‌گویند. به‌طور پیشفرص اکثر توزیعات لینوکسی ۵۰۰ فرمان را به‌خاطر می‌سپارند. فشردن کلید جهت‌نمای پایین، فرمان قبلی را از بین می‌برد.

مکان‌نما (Cursor)

فرمان قبلی را با فشردن کلید جهت‌نمای بالا به یاد بیاورید. حال کلیدهای جهت‌نمای چپ و راست را فشار دهید. ملاحظه می‌شود که می‌توان مکان‌نما را در هر نقطه از خط فرمان قرار داد. این ویژگی در هنگام تغییر دادن یا ویرایش فرمان‌ها کاربرد دارد.

چند فرمان ساده

حال که اندکی با خط فرمان آشنا شده‌اید، به سراغ چند فرمان ساده می‌رویم. اولین فرمان، فرمان date است که زمان و تاریخ فعلی را نمایش می‌دهد:

فرمان بعدی، فرمان cal می‌باشد که به‌طور پیشفرض تقویم ماه جاری را نمایش می‌دهد:

برای دیدن مقدار فضای فعلی روی درایورهای دیسک خود از فرمان df استفاده خواهید کرد:

به همین ترتیب برای نمایش مقدار حافظه آزاد، از فرمان free استفاده می‌گردد:

با بستن پنجره ترمینال و یا با استفاده از فرمان exit می‌توانید از ترمینال خارج شوید:

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت اول، Shell چیست؟ اولین بار در لینوکس سیزن پدیدار شد.


دی ۲۸ ۱۳۹۶

قرآن مطلا

به نام خداوند جان و خرد این روز ها با پدیده ای روبرو هستیم که میگه مردم اشکنه بخورند مردم سنگ به شکمشون ببندن. ولی میره قرآن مطلا درست میکنه. اینکه کجای کتاب خدا گفته شده پول مردم رو برای قرآن و در و پیکر طلا خرچ کنید نمیدونم ولی خیلی خوب میدونم که خداوند […]

نوشته قرآن مطلا اولین بار در گشتاسب مظفریان – GMozafarian. پدیدار شد.


دی ۲۷ ۱۳۹۶

تفاوت su و sudo در لینوکس

نوشته شده توسط فرشید نوتاش حقیقت.

اگر شما از جمله کاربران لینوکس می‌باشید، احتمالاً به sudo و su برخورده‌اید. حال سوال اینجاست که sudo با su چه تفاوتی دارد؟

su و sudo دو روش مختلف برای به‌دست آوردن دسترسی‌های root می‌باشد.

کاربر root

su و sudo هر دو برای اجرای فرامین با پرمیژن‌های root مورد استفاده قرار می‌گیرد. کاربر root (ریشه) معادل کاربر Administrator در ویندوز می‌باشد. کاربر ریشه دارای تمامی پرمیژن‌هاست که با آن می‌توانید هر کاری را در سیستم انجام دهید. کاربران معمولی در لینوکس با پرمیژن‌های کمتری کار می‌کند. به عنوان مثال کاربران عادی نمی‌توانند نرم‌افزار نصب کنند. برای انجام کاری که نیازمند این پرمیژن‌هاست می‌بایست از su یا sudo کمک گرفت.

su در مقابل sudo

وقتی فرمان su را بدون هیچ گزینه اضافه‌ای اجرا می‌کنید به super user یا کاربر ریشه سوئیچ می‌شوید که می‌بایست رمز عبور حساب کاربری root را وارد کنید. همچنین فرمان su می‌تواند برای سوئیچ به هر حساب کاربری به‌کار گرفته شود. اگر فرمان su bob را اجرا کنید، از شما رمز عبور Bob خواسته می‌شود و پوسته به حساب کاربری Bob تغییر خواهد کرد.

پس از اتمام اجرای فرامین در پوسته root باید exit را برای خروج تایپ کرده تا از پوسته ریشه خارج شده و به حالت دسترسی محدود وارد شوید.

Sudo یک فرمان واحد را با امتیازات root اجرا می‌کند. وقتی فرمان sudo را اجرا می‌کنید، سیستم قبل از اجرای فرمان به عنوان کاربر ریشه از شما رمز عبور کاربر فعلی را خواستار می‌شود.

Su شما را به کاربر root سوئیچ می‌کند و از شما رمز عبور حساب کاربری root را می‌خواهد. این یکی از کلیدی‌ترین تفاوت‌های su و sudo می‌باشد.

Sudo یک فرمان واحد را با امتیازات root اجرا می‌کند و حساب کاربری را به کاربر root تغییر نمی‌دهد.

اوبونتو در مقابل سایر توزیعات لینوکسی

فرمان su روشی مرسوم برای دستیابی به پرمیژن‌های ریشه در لینوکس می‌باشد. فرمان sudo برای مدت طولانی وجود داشته اما اوبونتو اولین توزیع محبوب لینوکسی است که به‌طور پیش‌فرض با sudo کار می‌کند.

زمانی که اوبونتو را نصب می‌کنید، یک حساب root استاندارد ایجاد می‌شود، اما هیچ رمز عبوری برای آن اختصاص داده نمی‌شود. شما نخواهید توانست به عنوان root وارد سیستم شوید مگر آن که یک رمز عبور برای حساب کاربری root تخصیص دهید.

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

مزیت دیگر این است که اجازه ورود به سیستم به‌عنوان کاربر root و یا استفاده از su را برای دریافت پوسته root نمی‌دهد.

توزیعات مبتنی بر اوبونتو از جمله لینوکس مینت به‌طور پیش‌فرض از sudo به‌جای su استفاده می‌کنند.

چندین ترفند

برای اجرای یک فرمان به‌عنوان کاربر ریشه با su فرمان زیر را اجرا کنید:

su -c ‘command’

این فرمان مشابه اجرای فرمان با sudo است، اما به جای رمز عبور حساب کاربری فعلی به رمز عبور root نیاز دارید.

برای دریافت کامل پوسته ریشه، فرمان sudo –i را اجرا کنید.

شما باید رمز عبور حساب کاربری فعلی را به جای گذرواژه حساب کاربری root وارد کنید.

فعال کردن کاربر ریشه در اوبونتو

برای فعال کردن حساب کاربری root در اوبونتو، از فرمان زیر برای تنظیم رمز عبور برای آن استفاده کنید.

sudo passwd root

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

از طریق ترمینال با رمز عبور جدید وارد حساب کاربری root شده و یا از فرمان su کمک بگیرد. هرگز نباید محیط گرافیکی را به عنوان کاربر root اجرا کنید. این کار از نظر امنیتی کار بسیار خطرناکی است.

افزودن کاربران به فایل sudoers

فقط حساب‌های administrator می‌توانند فرامین را با sudo اجرا کنند. شما می‌توانید نوع حساب کاربری را از پنجره User Accounts configuration تغییر دهید.

اوبونتو به‌طور خودکار حساب کاربری ایجاد شده در هنگام نصب را به‌عنوان حساب administrator تعیین می‌کند.

اگر از توزیع لینوکسی دیگری استفاده می‌کنید، می‌توانید یک پرمیژن کاربری را برای استفاده از sudo با اجرای فرمان visudo با امتیازات root ایجاد کنید. (پیش از آن su یا su –c را اجرا کنید.)

خط زیر را به فایل اضافه کنید و به‌جای user نام حساب کاربری را قرار دهید:

user    ALL=(ALL:ALL) ALL

ابتدا Ctrl+X را زده و سپس Y را برای ذخیره فایل بفشارید. همچنین می‌توان یک کاربر را به یک گروه مشخص شده در فایل اضافه کنید.

نسخه‌های گرافیکی su

لینوکس نسخه‌های گرافیکی su را نیز پشتیبانی می‌کند و خواستار رمز عبور در محیط گرافیکی می‌شود. به‌عنوان مثال، می‌توان فرمان زیر را برای دریافت یک درخواست رمز عبور گرافیکی اجرا نمود و مرورگر ناتیلوس را با پرمیژن‌های root اجرا نمود. Alt+F2 را بفشارید تا فرمان را از یک نمایشگر گرافیکی اجرا کنید بدون آنکه از ترمینال استفاده کرده باشید.

gksu nautilus

gksu در پشت پرده از su یا sudo مبتنی بر توزیع لینوکس استفاده می‌کند.

منبع: howtogeek.com

نوشته تفاوت su و sudo در لینوکس اولین بار در لینوکس سیزن پدیدار شد.


دی ۲۶ ۱۳۹۶

نحوه مشاهده گروه‌هایی که یک حساب کاربری در آن عضو است

نوشته شده توسط فرشید نوتاش حقیقت.

گروه‌ها به تعریف مجوزها (پرمیژن‌ها) برای دسترسی به حساب کاربری لینوکس به منظور دستیابی به فایل‌ها، فولدرها و تنظیمات کمک می‌کند. پیدا کردن گروه‌هایی که متعلق به یک حساب کاربری است به شما کمک می‌کند درک بهتری از دسترسی کاربر، خصوصاً زمانی که همه چیز درست کار نمی‌کند داشته باشید.

با گشودن ترمینال کار خود را آغاز نمایید. در خط فرمان، فرمان زیر را تایپ کرده و سپس دکمه اینتر را بفشارید:

groups

استفاده از فرمان groups نشان می‌دهد که کاربر در چه گروه‌هایی عضو است.

همچنین اگر یک نام کاربری را بعد از فرمان groups اضافه کنید، گروه‌هایی که آن کاربر عضو آن است نشان داده می‌شود. تنها کافی است از فرمت زیر تبعیت کنید:

groups  <username>

منبع: howtogeek.com

 

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


دی ۲۵ ۱۳۹۶

نمایش ستاره در محل تایپ پسورد sudo

همون طور که میدونید اجرای دستور sudo منوط به تایپ پسورد هست. اما در حین تایپ چیزی نشون داده نمیشه. میتونیم با یه کلک ساده کاری کنیم که موقع تایپ پسورد برای دستور sudo ستاره گذاشته بشه.
برای این کار باید فایل etc/sudoers/ رو ویرایش کنیم. راه صحیح و اصولیش اینه که با این دستور این کار رو بکنیم:
 sudo visudo
اما کار با این روش خیلی روی اعصابه! من با gedit به راحتی این کار رو میکنم:
sudo gedit /etc/sudoers
دنبال عبارت Defaults env_reset بگردید. و اون رو به Defaults env_reset,pwfeedback تغییر بدید. اگر نبود، اضافه کنید. فایل رو ذخیره کنید و در ترمینال دستور reset رو اجرا کنید تا تغییرات اعمال بشه.


دی ۲۵ ۱۳۹۶

نمایش ستاره در محل تایپ پسورد sudo

همون طور که میدونید اجرای دستور sudo منوط به تایپ پسورد هست. اما در حین تایپ چیزی نشون داده نمیشه. میتونیم با یه کلک ساده کاری کنیم که موقع تایپ پسورد برای دستور sudo ستاره گذاشته بشه.
برای این کار باید فایل etc/sudoers/ رو ویرایش کنیم. راه صحیح و اصولیش اینه که با این دستور این کار رو بکنیم:
 sudo visudo
اما کار با این روش خیلی روی اعصابه! من با gedit به راحتی این کار رو میکنم:
sudo gedit /etc/sudoers
دنبال عبارت Defaults env_reset بگردید. و اون رو به Defaults env_reset,pwfeedback تغییر بدید. اگر نبود، اضافه کنید. فایل رو ذخیره کنید و در ترمینال دستور reset رو اجرا کنید تا تغییرات اعمال بشه.


دی ۲۵ ۱۳۹۶

آموزش نصب دیتابیس TILE38 در لینوکس

tile38-logo

برای ذخیره ی اطلاعات، دیتابیس های مختلفی وجود دارد که هر کدام کاربرد خاص خود را دارند.TILE38 یک دیتابیس open source می باشد که قابلیت ذخیره ی اطلاعات جغرافیایی،شاخص مکانی و geofence را به صورت realtime دارا می باشد.

برخی از ویژگی های دیتابیس tile38 بنا به گفته ی سایت رسمی آن به شرح زیر می باشند :

 

  • Spatial index with search methods such as NEARBY, WITHIN, and INTERSECTS.
  • Realtime geofencing through persistent sockets or webhooks.
  • Object types of lat/lon, bbox, Geohash, GeoJSON, QuadKey, and XYZ tile.
  • Support for lots of Clients Libraries written in many different languages.
  • Variety of client protocols, including http (curl), websockets, telnet, and the Redis RESP.
  • Server responses are RESP or JSON.
  • Full command line interface.
  • Leader / follower replication.
  • In-memory database that persists on disk.

 

 

نصب tile38 در لینوکس :

 

روند نصب دیتابیس tile38 بسیار ساده می باشد.در این مطلب جهت نصب tile38 از توزیع CentOS 7.4 x86-64  استفاده شده است.برای نصب ابتدا به شاخه ی زیر بروید :

 

 

#cd /opt

 

اکنون از صفحه releases پروژه ی tile38 در github آخرین نسخه ی آن را بر اساس سیستم عامل خود دانلود کنید :

 

https://github.com/tidwall/tile38/releases

#wget -c https://github.com/tidwall/tile38/releases/download/1.10.0/tile38-1.10.0-linux-amd64.tar.gz

 

اکنون فایل دانلود شده را از حالت فشرده خارج نمایید :

 

#tar -xzvf tile38-1.10.0-linux-amd64.tar.gz

سپس وارد پوشه ی استخراج شده بروید :

 

 

#cd tile38-1.10.0-linux-amd64

 

اکنون جهت اجرای سرویس  tile38 کافیست تا دستور زیر را اجرا کنید :

 

#./tile38-server

 

توجه داشته باشید با اجرای دستور بالا tile38 در foreground اجرا خواهد شد.برای اجرا شدن آن در background می توان از systemd استفاده کرد.برای اینکار ابتدا فایل زیر را ایجاد کنید :

 

# vim /usr/lib/systemd/system/tile38.service

سپس خطوط زیر را درون آن وارد کنید و فایل را ذخیره کنید :

[Unit]
Requires=network.target
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/tile38-1.10.0-linux-amd64/tile38-server

ExecStop=/usr/bin/pkill tile38-server

[Install]
WantedBy=multi-user.target

 

اکنون می توانید سرویس tile38 را با استفاده از systemd کنترل کنید :

 

 

# systemctl status tile38.service

# systemctl start tile38.service

# systemctl stop tile38.service

# systemctl enable tile38.service

# systemctl disable tile38.service

 

 

اگر از firewalld استفاده می کنید اکنون باید port 9851 که مربوط به سرویس tile38 است را باز کنید :

 

#firewall-cmd --zone=public --add-port=9851/tcp
#firewall-cmd --zone=public --add-port=9851/tcp --permanent

 

امید است تا از این مطلب استفاده لازم را ببرید.

 


دی ۲۳ ۱۳۹۶

فیلترشکن های دندان‌شکن

به نام خداوند جان و خرد این روزها همه در حال دست و پنجه نرم کردن با فیلترشکن های مختلف برای شکستن فیلتر پیام رسان محبوب تلگرام هستند; اما باید بدانیم که فیلتر شدن پیام رسان تلگرام تنها قسمت کوچکی از پروژه فیلترینگ جمهوری اسلامی‌ست. خوشبختانه بعد از فیلتر تلگرام دید جامعه نسبت به فیلترینگ […]

نوشته فیلترشکن های دندان‌شکن اولین بار در گشتاسب مظفریان – GMozafarian. پدیدار شد.


دی ۲۲ ۱۳۹۶

نحوه تغییر آدرس IP در خط فرمان لینوکس

نوشته شده توسط فرشید نوتاش حقیقت.

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

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

برای تغییر تنظیمات نیز از فرمان ifconfig با چند پارامتر اضافی استفاده خواهد شد. فرمان زیر رابط شبکه eth0 را برای استفاده از آدرس IP به‌صورت ۱۰۲.۱۶۸.۰.۱ تغییر و ماسک زیرشبکه را به ۲۵۵.۲۵۵.۲۵۵.۰ تغییر می‌دهد:

sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0

اگر ifconfig را دوباره اجرا کنید، خواهید دید که رابط کاربری در تنظیمات جدیدی که به آن اختصاص داده‌اید، قرار گرفته است.

فرمان زیر به‌عنوان مثال gateway پیشفرض را برای رابط eth0 به ۱۹۲.۱۶۸.۰.۲۵۳ تنظیم می‌کند:

sudo route add default gw 192.168.0.253 eth0

برای دیدن تنظیمات جدید، نیاز به نمایش جدول مسیریابی خواهید داشت. کافی است تا فرمان زیر را اجرا کنید:

route -n

منبع: howtogeek

نوشته نحوه تغییر آدرس IP در خط فرمان لینوکس اولین بار در لینوکس سیزن پدیدار شد.


دی ۲۲ ۱۳۹۶

چطور مقالات علمی را درست انتخاب کنیم، بخوانیم و متوجه شویم؟

احتمالا شما هم مثل من به خوندن بلاگ پست‌ها، دنبال کردن فیدها و … معتاد شده باشید. من یاد گرفتم چطور یک تکنولوژی جدید رو یاد بگیرم، یاد گرفتم چطور و چقدر از یک کتاب مرجع رو بخونم ولی بلد نبودم چطور درست مقالات علمی رو بخونم (البته هنوزم هم بلد نیستم). این مورد آخر در دوره ارشد خیلی من رو اذیت کرد. از افراد زیادی پرسیدم که شما چطور مقاله می‌خونید و  تحقیق می‌کنید. هر کسی بنا به تجربه قبلی خودش و آزمون و خطاهایی که کرده بود روشی رو پیشنهاد می‌کرد ولی نقطه مشترک همه این بود که “ما هم درست نمی‌دونیم”. برای همین تصمیم گرفتم ببینم بزرگترها چی‌کار می‌کنند:)

چطور یک مقاله خوب انتخاب کنیم؟

(این بخش مفهومی از نوشته‌های دو دانشجوی دکتری MIT است)

خلاصه مقاله را بخون، اگر جذبت کرد به شکل‌ها، تصاویر و نمودارها یک نگاهی بینداز و نتیجه‌گیری رو بخون. مقاله خوبی به نظر میاد؟ برو بخش بعد وگرنه برو مقاله بعدی

اگر در این حوزه تخصص داری بخش Methods رو بخون، در غیر اینصورت Introduction رو 
هنوز هم فکر می‌کنی مقاله خوبیه؟ پس مقاله درستی رو انتخاب کردی. مقاله خوب رو باید خوب خوند!

چطور یک مقاله خوب را خوب بخوانیم؟

(این بخش هم مفهومی است از مقاله چطور مقاله بخوانیم از یکی از استادهای دانشگاه واترلو)

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

ایده کلی: (حدود ۱۰ دقیقه)

عنوان مقاله، خلاصه و Introduction رو بخونید، بعد به سراغ عنوان‌ها و زیر عنوان‌ها برید و در نهایت نتیجه‌گیری رو بخونید. به مراجع مقاله نگاه کنید و ببینید کدوم یکی را تا حالا خوندید. الان باید بتونید بگید این مقاله در چه حوزه‌ای هست، چه زمینه‌ای داره، چه کسایی اون رو نوشتند و اصلا مقاله‌ای هست که برای خوندن نوشته شده باشه (well-written)؟ 

فهمیدن کلی: (حدود یک ساعت)

مقاله رو با دقت بالا ولی بدون جزئیات (مثلا اثبات‌ها) بخوان و کنار اون‌ حتما حاشیه‌نویسی انجام بده.

به اشکال، جدول‌ها، نمودارها و … دقت ویژه‌ای کن
مراجع مرتبط رو برای خوندن علامت‌گذاری کن

بعضی وقت‌ها در این مرحله مقاله رو متوجه نمی‌شیم، چرا؟ 

۱)موضوع جدید
۲)مقاله‌ای که بد نوشته شده
۳)خسته‌ایم

حالا چی‌کار کنیم؟

۱) بیخیال مقاله می‌شیم، به امید خدا که بهش احتیاج نداریم
۲)بعد از خوندن background این زمینه به سراغ مقاله میایم
۳)با قدرت میریم سراغ مرحله بعد

فهمیدن دقیق: (از ۱ ساعت تا ۵-۶ ساعت)

در این مرحله باید مقاله رو روی کاغذ برای خودتون پیاده کنید، با جزئیات کامل و فرضیات نویسنده. مقاله و نویسنده رو به چالش بکشید. چرا این فرض رو در نظر گرفته؟ این کار چه نوآوری داشته؟ اگر من بودم چطور این‌کار رو انجام می‌دادم؟ سعی کنید به خطاهای نویسنده پی‌ ببرید و به ایده‌های جدیدی در این مورد برسید.

چطور یک مقاله خوب را خوب بفهمیم؟

(این بخش هم ترجمه آزادی است از نوشته یکی از اساتید دانشگاه تگزاس)

الف) چه کسی و از کجا مقاله را نوشته است؟

ب)معنی هر کلمه‌ای که نمی‌دانی بنویس، خواندن متن علمی با تست Reading کنکور متفاوت است

۱) Introduction را بخوان (دکتر قنبری از اساتید دانشگاه تهران هم روی این موضوع تاکید دارند که به جای Abstract حتما Introduction رو اول بخونید)

۲) سوال اساسی: این مقاله چه مشکلی را در زمینه خود حل می‌کند؟ (باید مشکل را فهمید نه زمینه را!)

۳)کارهای قبلی: چه‌کارهایی انجام شده؟ چه محدودیت‌هایی داشتند؟ باعث می‌شه درک بهتری از مقاله داشته باشی

۴)سوال تخصصی: دقیقا بفهم که نویسنده می‌خواسته چه مشکلی را حل کند. (چرا کارهای قبلی در حل این موضوع ناتوان بوده‌اند؟)

۵)نویسنده چه رویکردی برای حل مساله داشته؟ از چه روشی برای حل مساله استفاده کرده؟ (مثلا از الگوریتم X برای حل مساله Y)

۶)حالا بخش Methods رو بخون. به طور شماتیک کاری که انجام شده رو رسم کن، تا به صورت کلی این بخش رو نفهمیدی به سراغ بقیه بخش‌ها نرو

۷)Result رو بخون. برای هر شکل، جدول و تصویر چند خط بنویس که نشان‌گر چه چیزی بوده است.

۸)آیا Result مقاله به سوالات پاسخ می‌ده؟  داده ها و نتایج رو بدون توجه به مقاله تفسیر کن. (این مرحله وقت‌گیر ولی ارزشمنده)

۹) حالا بخش نتیجه‌گیری رو بخون. اینکه نویسنده چطور داده‌ها رو تفسیر‌ کرده.

۱۰) فک کنم وقتش باشه که Abstract رو خوند.

۱۱ و ۱۲) این مراحل اختیاریه، ولی خوبه که انجام بشوند. نظر دیگران رو در مورد مقاله بخون‌ و نگاهی به مراجع مقاله بنداز.

پ.ن:

به جز Google Scholar چندین سایت و ابزار مفید دیگه هم هست که میشه در این موارد ازشون استفاده کرد.

اگر کامپیوتری هستید حتما به سایت های scimagojr.com و csrankings.com یک نگاهی بندازید و در هر صورت از mendely استفاده کنید.

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

و در نهایت اگر این نوشته رو مفید می‌دونید اون رو به اشتراک بگذارید و ابزارها و سایت‌های دیگه‌ای که فکر می‌کنید مفید هستند رو در کامنت‌ها به دیگران معرفی کنید.


دی ۲۲ ۱۳۹۶

یک ماه زندگی و کار داوطلبانه در چین – مقدمه

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

آیسک:

طبق تعریف، آیسک یعنی:

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

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

پروژه Guangzhou Sungshine 2.0:

همانظور که بالاتر گفتم پروژه‌ای که من توش شرکت کردم کمک به تقویت زبان کارگران مهاجر چینی است. در این پروژه افراد مختلفی از کشورهای مختلف شرکت کردند و در حال حاضر اکثرمون در یک خونه باهم زندگی می‌کنیم. از روسیه، ایران، چین، مصر، اندونزی، هند، مالزی و مولداوی! در این سری پست‌ها من قصد دارم در مورد تجربیاتم از این پروژه، تفاوت‌های فرهنگیمون و همینطور چین بنویسم.


دی ۲۲ ۱۳۹۶

حفاظت از دموکراسی با رمزنگاری و توابع درهم‌ساز

نکته: این مطلب اصلا سیاسی نیست!

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

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

رمزنگاری متقارن: الگوریتم‌های این نوع رمزنگاری از یک کلید برای رمزگذاری و رمزگشایی استفاده می‌کنند، مثلا من و شما توافق می‌کنیم که پیام‌هامون رو با الگوریتم AES و کلید ۱۲۳۴۵۶۷۸۹ رمز کنیم و برای هم بفرستیم، امنیت این روش به امنیت الگوریتم و دونستن کلید برمیگرده. یعنی هر کس دیگه‌ای که بدونه کلید پیام‌های ما ۱۲۳۴۵۶۷۸۹ است می‌تونه پیام‌ها رو بخونه.

رمزنگاری نامتقارن: این الگوریتم‌ها از دو کلید استفاده می‌کنند، یکی برای رمزکردن و یکی برای رمزگشایی. نمونه معروف این نوع الگوریتم‌ها RSA است.  فرض کنید شما دوتا کلید به اسم A و B دارید، به طور استاندارد در این نوع الگوریتم‌ها قراره اگر پیامی با کلید A رمز شد، فقط با کلید B باز بشه و اگر با کلید B رمز شد، فقط با کلید A باز شه. (البته نمونه‌هایی هم هستند که فقط با یکی رمز و با یکی رمزگشایی می‌شند)

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

ec8956637a99787bd197eacd77acce5eV73PLV_m

کلید سبز رنگ کلید عمومی و کلید قرمز رنگ، کلید خصوصی است.

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

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

هش (Hash): هش یعنی توابع یک‌ طرفه، یعنی وقتی یک ورودی به یک تابع هش داده می‌شه خروجی ای تولید می‌کنه که با دونستن اون نمیشه به ورودی رسید. مثلا خروجی تابع md5 (یکی از توابع معروف هش) به ورودی Moein Hosseini میشه ca6e1e3c12c635146943e1c11c1502ae که یک‌طرفست، یعنی با دونستن ca6e1e3c12c635146943e1c11c1502ae نمیشه به Moein Hosseini رسید. به جز اینکه یک جدول بزرگ از همه ورودی‌ها درست کنید و هش اون‌ها رو حساب کنید (Rainbow table) که البته برای اینکه این‌هم سخت و تقریبا غیر ممکن بشه بهش چیزی به اسم salt اضافه میشه، یعنی من یک مقدار رندوم و به ورودی تابع هش اضافه می‌کنم، یعنی این‌سری Moein Hosseini s*2js1Je رو هش می‌کنم که باعث میشه ساخت Rainbow table خیلی بزرگ و غیر ممکن بشه.

خوب بریم سراغ دموکراسی، برای این روز این اصول رو داریم:

نکته: منظور از دولت برگذار کننده انتخابات است.

۱- رای هیچ کس نباید مشخص بشه (حتی برای دولت)، یعنی حریم خصوصی هر شخص باید حفظ بشه.

۲- دولت موظفه همه رای‌ها رو در یک جدول منتشر کنه، به‌صورتی که فقط شخص رای دهنده متوجه بشه کودوم سطر جدول متعلق به خودشه. (مثلا من بدونم اون سطری که خونه A اون برابر فلان هش است، رای منه)

ec8956637a99787bd197eacd77acce5eTn6uxKFl

یک نمونه از جدول انتشاری در دولت

۳- در صورت دستکاری نتایج، شخص بتونه اثبات کنه

۴- در صورتی که سطر مربوط به شخص منتشر نشد، بتونه اثبات کنه که رای داده

۵- شخص نتونه به صورت دروغین ادعا کنه که به کس دیگه‌ای رای داده و در جدول رای دیگه‌ای براش ثبت شده

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

ec8956637a99787bd197eacd77acce5eBGguaHKT

روش تضمین عدم تقلب در انتخابات

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

برای رای دادن هر شخص یک مقدار که فقط خودش می‌دونه انتخاب می‌کنه (مثل پسورد)، حالا از کد ملی و اون مقدار هش می‌گیره، بعد از اون هش و رای خودش ({hashValue:Vote}) رو برای دولت می‌فرسته.

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

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

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

رای‌دهنده هم نمی‌تونه به دروغ بگه به شخص دیگه‌ای رای داده و تقلب شده، چون باید یک متن رمزشده با کلید خصوصی انتخابات داشته باشه که وقتی با کلید عمومی باز‌ میشه رای شخص در اون موجود باشه.

با مقدار هش موجود در جدول هم که هر شخص منحصرا هش خودش رو می‌دونه، حریم خصوصی اشخاص حفظ می‌شه.

پ.ن۱: البته یک باگ این الگوریتم اینکه باید همه در انتخابات شرکت کنند، وگرنه امکان داده‌سازی وجود داره. البته به‌نظرم با اضافه کردن روش‌های p2p بشه این مشکل رو حل کرد. 

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

ec8956637a99787bd197eacd77acce5ejvNN6_C3

Type caption for image (optional)

و اگر خواستید واقعا شخصی باشه، کلید PGP من رو از اینجا دریافت کنید. Finger Print کلید هم هست : A4D4 128D 1DDF 96BE 1F04 A50B A3E7 C058 3306 76E0


دی ۲۲ ۱۳۹۶

آپاچی کافکا چطور کار می‌کند؟

کافکا ابزاری قدرتمند برای پیاده‌سازی معماری Publish/Subscriber است که برای pipeline کردن داده‌ها و Stream Processing  استفاده می‌شه. که تمام اینها در کنار مقیاس‌پذیر بودن و fault-tolerant بود اون رو به یکی از ابزارهای اصلی در کلان‌داده‌ها تبدیل کرده.

معماری Pub/Sub

38db3aed920cf82ab059bfccbd02be6abv32xmg1536g3FVtWkim4xtWzzlcfTeSbmMCHyAZa3DM9nJ4wfi-qZNi6T.png

Type caption for image (optional)

فرض کنید تعدادی سرویس نیاز دارند که با همدیگه صحبت کنند و همدیگر رو مستقیما call می‌کنند. پیچیدگی فنی زیاد میشه، کوچکترین تغییری رو به سختی باید در همه سرویس‌ها دنبال کرد و پیاده‌سازی back pressure هم که خودش داستانی جدا برای هر سرویس داره. در نهایت این یک بدهی فنیه که باید پرداخت بشه. یکی از معماری‌ها برای حل این مشکل، Pub/Sub است. سرویس‌ها داده‌هایی رو Publish می‌کنند و کسایی که به اون داده‌ها نیاز دارند Subscribe می‌کنند. 

38db3aed920cf82ab059bfccbd02be6alefkiR5qHmXe3WdMsdLB0P9vTXm3rKM2Xg3oWLWjkIJCfdx1hGbCu69un9.png

Type caption for image (optional)

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

Topicها و Partionها

38db3aed920cf82ab059bfccbd02be6aSjNIoh8ufUUJWeMDMvaJ4rXWx35rSWPOUGPxilLIH4Yh_GhMsMIsARhpMk.jpg

Type caption for image (optional)

پیام‌های نوشته شده در کافکا توسط topic دسته‌بندی می‌شند. شاید topic را بشه معادل یک جدول در بانک اطلاعاتی دونست.  هر topic به تعدادی partioion تقسیم می‌شه که از منطق append only پیروی می‌کنند و هر پیام در هر partiotion یک id یکتا بهش اختصاص پیدا می‌کنه. وقتی تولید کننده پیام (producer) قصد نوشتن در یک topic رو داره، می‌تونه partition رو صریحا اعلام کنه (این پیام رو در پارتیشن شماره ۳ بنویس) یا اینکار بر اساس هش از کلید پیام انجام بشه.

در مقابل producer ها، consumer ها قرار میگیرند که شروع به خوندن اطلاعات از kafka می‌کنند و بر اساس اون کاری رو انجام می‌دهند. consumer ها بر اساس کاری که انجام می‌دهند به گروه‌های مختلفی تقسیم بندی می‌شند که بهش consumer group گفته می‌شه و هر partition حداکثر به یک consumer از هر گروه اختصاص پیدا می‌کنه. یعنی اگر شما تعداد پارتیشن‌ها رو ۱۰ تا انتخاب کنید و ۲۰ تا consumer داشته باشید، ۱۰ تا از consumer هاتون عملا بی‌کارند. پس یکی از موراد مهم در طراحی انتخاب تعداد پارتیشن مناسب هست. 

38db3aed920cf82ab059bfccbd02be6a4k_zvW_UkR5SofJnBpd4QZDHNrE_Secp4NA1SkePtkuxowaSRVcwBW1Que.png

به مصرف‌ کننده شماره ۵ هیچ پارتیشنی اختصاص پیدا نکرده. این به معنی حداکثر توان پردازش اندازه ۴تا از مصرف کننده هاست.

‌Broker و Cluster

به هر سرور کافکا Broker گفته میشه. هر سرور می‌تونه حاوی چندین topic و به ازای هرکودوم هم حاوی چندین partition باشه. طراحی Broker ها به‌نحویه که بتونند به‌عنوان یک خوشه (cluster) کار کنند.  در این مواقع یکی از سرورها به عنوان controller انتخاب میشه و وظیفه داره مشخص کنه که کدام partition به کدوم بروکر اختصاص داره، همینطور وظیفه health check و مانیتور کردن بقیه سرورها هم بر عهده controller هست. بر اساس تنظیمات ممکنه یک partition به بیش از یک سرور اختصاص پیدا کنه که به معنی replication است. فرض کنید پارتیشن X از تاپیک Y به ۳تا سرور A,B و C اختصاص داره. یکی از این ۳تا سرور به عنوان leader برای این partition انتخاب می‌شند و دوتای دیگه replicate های اون هستند. این کار کمک می‌کنه تا در صورت از دست دادن leader چندین copy از اطلاعات اون وجود داشته باشه تا consumer ها بعد از rebalance شدن به‌کار خودشون ادامه بدند.

38db3aed920cf82ab059bfccbd02be6aJzDsJbx_6RGFWj6asaU0igpnklf0bPk6OjTVhQHULUlgPEvvjnWYceblLx.jpg

Type caption for image (optional)

کافکا طراحی نشده که همزمان روی چندین دیتاسنتر اجرا بشه، یعنی یکی از بروکر‌های کلاسترمون رو دیتاسنتر A باشه و دیگری روی دیتاسنتر B. ولی ممکنه ما نیاز داشته باشیم که اطلاعاتمون رو چندین دیتا سنتر باشند. چرا؟ امنیت، isolation و disaster recovery

برای اینکار کافکا ابزاری داره به اسم Mirror Maker که مثل یک consumer/producer عمل می‌کنه. یعنی عملا از یکی از کلاسترها می‌خونه و در یکی دیگه می‌نویسه. 

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

۱) بر اساس زمان: من اطمینان دارم که حداکثر ۷ روز طول می‌کشه تا اطلاعات پردازش بشند، پس به کافکا می‌گم که اطلاعاتی که قدیمی‌تر از ۷ روز هستند رو پاک کنه. چطوری این اتفاق می‌افته؟ خوب کافکا اطلاعات هر پارتیشن رو فایل به فایل می‌نوسه. مثلا بهش میگیم حجم هر فایل ۱ گیگ بشه، اطلاعات به پارتیشن X می‌رسند و شروع به نوشتن در فایل T1P1F1 می‌کنه (یک اسم فرضی، یعنی Topic اول، Partition اول و فایل اول) . وقتی به حجم فایل ۱ گیگ شد، این فایل رو می‌بنده و میره سراغ فایل بعدی. حالا این فایل مقدار modified at داره و در صورتی که این تاریخ قبل از ۷ روز پیش باشه، پاک میشه. برای همین ممکنه آخرین پیام نوشته شده مربوط به ۵ روز پیش باشه و اولین مربوط به ۱۰۰ روز پیش. خوب فایل پاک نمیشه و ما هنوز امکان دسترسی به اطلاعات قدیمی‌تر از ۷ روز رو هم داریم (در این پارتیشن)

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

۳) compact: در این حالت از هر partition به عنوان key-value استفاده میشه و هر پارتیشن فقط آخرین پیام رو نگاه می‌داره. از این روش برای نگاه‌داشتن index مکانی که consumer ازش خونده استفاده میشه. یعنی اگر consumer به هر دلیل reset شد و نمی‌دونست تا کجا خونده، این پیام رو می‌خونه و از اونجا به بعد رو شروع به پردازش می‌کنه. (تاپیک‌ها متفاوت هستند)

پ.ن: قصد دارم در چندین پست در رابطه با برخی از ابزارهای Big Data بنویسم. ابزارهایی مثل kafka، Flink، Spark و Cassandra که مدتی باهاشون کار کردم. خوشحال می‌شم در این رابطه نظراتتون رو بدونم. (اگر دوست داشتید کامنت و اگر دوست نداشتید ایمیل من moein7tl روی جیمیل)


دی ۱۹ ۱۳۹۶

چک کردن ۳۲ بیتی یا ۶۴ بیتی بودن سیستم لینوکس

نوشته شده توسط فرشید نوتاش حقیقت.

اکثر کامپیوترهای مدرن قادر به اجرای یک سیستم‌عامل ۶۴ بیتی هستند. در ادامه به چگونگی تشخیص ۳۲ بیتی یا ۶۴ بیتی بودن لینوکس خواهیم پرداخت.
برای اکثر موارد توصیه می‌شود که نسخه ۶۴ بیتی لینوکس اجرا شود. با نسخه ۶۴ بیتی عملکرد و امنیت بهتری خواهید داشت.
تنها زمانی که از یک پردازنده ۳۲ بیتی استفاده می‌کنید نیاز به نسخه ۳۲ بیتی خواهید داشت و یا اگر تنها درایورهای سخت‌افزاری ۳۲ بیتی موجود است، از لینوکس ۳۲ بیتی استفاده خواهید کرد (هر چند که این مسأله اغلب در سیستم‌عامل ویندوز رخ می‌دهد.)
برای تشخیص ۳۲ بیتی یا ۶۴ بیتی بودن لینوکس خود دو راه وجود دارد:
روش اول: استفاده از فرمان lscpu در ترمینال
برای بررسی ۳۲ بیتی یا ۶۴ بیتی بودن نسخه لینوکس خود ترمینال را گشوده و فرمان زیر را تایپ نموده و سپس کلید Enter را بفشارید:

lscpu

بخش Architecture به شما خواهد گفت که دارای چه پردازنده‌ای هستید. X86_32 به معنای ۳۲ بیتی و X86_64 به معنای ۶۴ بیتی است. CPU op-mode(s) به شما می‌گوید که کدام نسخه از لینوکس در حال اجراست.
اگر نسخه ۶۴ بیتی را اجرا می‌کنید، حالت‌های ۳۲ بیتی و ۶۴ بیتی را مشاهده خواهید کرد. (چرا که یک پردازنده ۶۴ بیتی می‌تواند هر دو را اجرا کنید.) اگر فقط نسخه ۳۲ بیتی را اجرا می‌کنید تنها ۳۲ بیتی اجرا خواهد شد.
روش دوم: استفاده از محیط گرافیکی
اگر به دنبال یک ابزار گرافیکی برای تشخیص سیستم ۳۲ بیتی یا ۶۴ بیتی سیستم خود، وارد بخش System (در پانل بالای صفحه با آیکونی به چرخ‌دنده) شده و سپس بخش System Settings را برگزینید.
در پنجره System Setting بر روی گزینه Details دو بار کلیک کنید.
در پنجره Details بر روی زبانه Overview بخش OS type را نگاه کنید. در این بخش ۳۲ بیتی یا ۶۴ بیتی بودن سیستم شما مشخص خواهد شد.

منبع: howtogeek

نوشته چک کردن ۳۲ بیتی یا ۶۴ بیتی بودن سیستم لینوکس اولین بار در لینوکس سیزن پدیدار شد.


دی ۱۹ ۱۳۹۶

بررسی باگ های Spectre و Meltdown بر روی لینوکس

spectre_and_meltdown

 

حتما تا الان خبر آسیب پذیری Meltdown و Spectre که باگ هایی مربوط به CPU می باشند به گوش تان رسیده است.در این مطلب قصد دارم تا به شما اسکریپتی را معرفی کنم که این باگ ها رو تشخیص می دهد.این اسکریپت CPU های Intel/AMD/ARM را برای تشخیص این باگ ها بررسی می کند.

ابتدا اسکریپت را بر روی سیستم مورد نظر دانلود کنید :

 

$cd /tmp

$wget -c  https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

یا از این روش استفاده کنید :

 

$git clone https://github.com/speed47/spectre-meltdown-checker.git

 

اکنون کافیست تا اسکریپت spectre-meltdown-checker.sh را جهت بررسی باگ های Spectre و Meltdown اجرا کنید :

 

 

#sh spectre-meltdown-checker.sh

جهت اطلاعات بیشتر در مورد این اسکریپت می توانید به github آن مراجعه کنید :

 

https://github.com/speed47/spectre-meltdown-checker

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

 


دی ۱۸ ۱۳۹۶

آموزش کامنت کردن چند خط در شل اسکریپت

bash

شاید برای شما هم پیش آمده باشد که بخواهید درون shell script خود چند خط را comment کنید.مثلا در زبان برنامه نویسی c++/c برای کامنت کردن چند خط، در ابتدای خط مورد نظر */ قرار می دهند و در پایان خط مورد نظر از /* استفاده می کنند.یک نمونه از کد را در پایین مشاهده می کنید :

 

 

/*
my c code
comment # 2
blah
foo bar
….
*/

 

اما راه حل برای شل اسکریپت چیست؟

برای کامنت کردن خط در شل اسکریپت در ابتدای خط مورد نظر علامت # قرار داده می شود.به عنوان نمونه :

 

# my comment goes here

برای کامنت کردن چند خط نیز می توانید به صورت زیر عمل کنید :

 

# my comment 1
# my comment 2
# my comment N

 

از آنجایی که ممکن است تعداد خطوط برای کامنت کردن زیاد باشد،روش گفته شده در بالا چندان سودمند نمی باشد.برای اینکار می توانید از روش زیر استفاده کنید :

 

#!/bin/bash
echo “Say Something”
<<COMMENT1
your comment 1
comment 2
blah
COMMENT1
echo “Do something else”

 

 

 

 

همانطور که در مثال بالا مشاهده می کنید، دستورات بین  COMMENT1>> تا COMMENT1 به صورت کامنت می باشند.

 

روش دیگر برای کامنت کردن چند خط در شل اسکریپت به صورت زیر می باشد :

 

#!/bin/bash
foo=bar
: ‘
This is a test comment
Author foo bar
Released under GNU

echo “Init…”
# rest of script

 

 

 

 

 

همانطور که در مثال بالا می بینید دستوراتی که بین ‘  : و  ‘ می باشند به صورت کامنت می باشند.در واقع ساختار کلی آن به این صورت می باشد :

 

 

: ‘
your comments here

 

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

 


دی ۱۸ ۱۳۹۶

نقل قول:اریک ریموند


دی ۱۸ ۱۳۹۶

نقل قول:اریک ریموند


دی ۱۸ ۱۳۹۶

اسکرین کست: چگونگی ساختن اسلایدها

اینم یه تجربه پراکنده دیگه!

خب من این مدت شروع کردم به ضبط چند قسمت ویدئو به فرمت اسکرین کست از کتاب «۹۷ چیز که یک برنامه نویس بهتر است بداند» و این آخر هم یه درس در مورد git درست کردم. سوالی که این مدت از من شده که ترجی دادم جوابش رو علاوه بر رو در رو اینجا هم منتشر کنم اینه که اسلایدها رو چطوری میسازم. البته اگه دقت کرده باشید نسبت به اولین اسلایدها، کیفیت اسلایدها بالاتر رفته چون من بیشتر با ابزاری که استفاده میکردم آشنا شدم.

کلا تکنولوژی ساخت اسلایدها چیزی نیست جز HTML همین. که این HTML خاص به کمک کتابخانه‌های impress.js به حرکت در میان و اسلایدها رو میسازن. ابزار impress.js با ایده گرفتن از محصول تجاری perzi و با استفاده از امکانات HTML5 توسعه پیدا کرده. کاری که باید انجام بشه اینه که شما اسلایدها و انتقالها رو یکی یکی درست میکنی و در نهایت impress.js میدونه که چطوری اونها رو اجرا کنه. سختی این روش اینه که جاگذاری دقیق اسلایدها روی صفحه نمایش و همه انتقالها بایستی بصورت دستی انجام بشه که به همین خاطر کار یکمی مشکل هست

حالا یه نفر پیدا شده ابزاری به نام hovercraft مبتنی بر پایتون توسعه داده که میاد فایلهای ReStructuredText رو تبدیل به HTML با فرمت مناسب میکنه و تمام جاگذاری‌ها و تبدیل‌ها رو هم انجام میده. شما می‌توانید تبدیلها رو بصورت اتوماتیک و متناسب با اسلاید قبلی دید. نمونه این اسلایدها در منبع گیت‌هاب ارائه‌های من موجود هست

همین!

نوشته اسکرین کست: چگونگی ساختن اسلایدها اولین بار در تجربه های پراکنده پدیدار شد.


دی ۱۳ ۱۳۹۶

دانلود فیلتر شکن رایگان برای ویندوز, اندروید و مک

به نام خداوند جان و خرد درود دوستان چند روزیه که حکومت دهن اینترنت رو سرویس کرده اینستا و تلگرام و… هم فیلتر شده واسه همین گفتم چندتا فیلتر شکن بزارم واسه دوستان   روحانی زمانی که کاندید شد گفت کلید داره امروز همه ما واسه شکستن فیلتر یک کلید داریم 🙂   ویندوز | […]

نوشته دانلود فیلتر شکن رایگان برای ویندوز, اندروید و مک اولین بار در گشتاسب مظفریان – GMozafarian. پدیدار شد.


دی ۱۲ ۱۳۹۶

راه اندازی صفحه status سرویس nginx

خیلی از سرویس‌ها یک صفحه status دارند که به شما وضعیت فعلیشون شامل چیزایی مثلا تعداد درخواست همزمان، درخواست های در حال اتمام و از این قبیل را می دهند.

سرویس nginx هم یه صفحه status داره . تنها مشکلش اینه که نسخه غیر تجاریش دارای صفحه status خیلی کوچیکیه و داده زیادی در اختیار نمی ده ؛ برخلاف Nginx Plus که صفحه status مفصلی داره.

برای فعال کردن صفحه status سرویس nginx کانفیگ زیر را به یکی از virtualhost هاتون اضافه کنید (virtualhost پیشفرض بهتره)

location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

پس از اضافه کردن این کانفیگ nginx -s reload را بزنید و از طریق لینک زیر بازش کنید.

http://127.0.0.1/nginx_status

خروجی مشابه زیر خواهید دید. خیلی از ابزارهای مانیتورینگ از همین داده ها برای کشیدن نمودارهای وضعیت Nginx استفاده می‌کنند.

Active connections: 6
server accepts handled requests
۶ ۶ ۱
Reading: 0 Writing: 1 Waiting: 5


دی ۱۲ ۱۳۹۶

تبدیل log_format از Apache به Nginx

تا اومدم LogFormat ای که تو Apache تعریف کرده بودم را به log_format سرویس nginx تبدیل کنم، پوستم کنده شد.  برای همین اینجا گذاشتم شاید به دردتون بخوره. من LogFormat را به صورت Json برای ارسال به graylog آماده کرده بودم.

LogFormat سرویس Apache2.4
من LogFormat را به صورت زیر تعریف کرده بودم و برای پیدا کردن لیست متغیر هام از اینجا استفاده کردم.

LogFormat “{ \”version\”: \”1.1\”, \”host\”: \”%V\”, \”short_message\”: \”%r\”, \”timestamp\”: %{%s}t, \”level\”: 6, \”_user_agent\”: \”%{User-Agent}i\”, \”_source_ip\”: \”%a\”, \”_duration_usec\”: %D, \”_duration_sec\”: %T, \”_request_size_byte\”: %O, \”_http_status\”: %s, \”_http_request_path\”: \”%U\”, \”_http_request\”: \”%U%q\”, \”_http_method\”: \”%m\”, \”_http_referer\”: \”%{Referer}i\” }” graylog2_access

تبدیل به فرمت log_formate در nginx
نتیجه شد کانفیگ زیر، تنها نکته اش اینه که معادل %U در nginx وجود نداشت و اون را با کمک map ساختمش. برای دیدن لیست متغیر های nginx به اینجا مراجعه کنید. ولی لیستش مثل Apache خیلی کامل نیست.

map $request_uri $request_uri_path {
“~^(?P[^?]*)(\?.*)?$” $path;
}

log_format graylog2_access “{ \”version\”: \”1.1\”, \”host\”: \”$realip_remote_addr\”, \”short_message\”: \”$request\”, \”timestamp\”: $time_iso8601, \”level\”: 6, \”_user_agent\”: \”$http_user_agent\”, \”_source_ip\”: \”$remote_addr\”, \”_duration_usec\”: $request_time, \”_request_size_byte\”: $bytes_sent, \”_http_status\”: $status, \”_http_request_path\”: \”$request_uri_path\”, \”_http_request\”: \”$request_uri\”, \”_http_method\”: \”$request_method\”, \”_http_referer\”: \”$http_referer\” }” ;

 


دی ۱۱ ۱۳۹۶

مسیر شغلی کامپیوتر و آی‌تی

اینم یه تجربه پراکنده دیگه!

یکی از دوستان من که کامپیوتر نخونده و معاون آموزشی یکی از دانشگاه‌های شهر مادری من هست از من پرسید که که ما به دانشجو‌های کامپیوتر و آی‌تی مون چی یاد بدیم که واسه کار آماده‌تر باشند؟ وب یادبگیرن؟ اندروید بلد بشن؟ ما چه درس‌های آنلاینی رو براشون بخریم و بصورت مجانی در اختیارشون قرار بدیم؟

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

پس اگه دوست داشتید کمک کنید یادتون باشه که به این سوالات جواب بدید:

  • چه شغلی؟
  • به چه مهارتی نیاز داره؟
  • از کجا میشه این مهارت رو یاد گرفت؟

منتظر کمک‌هاتون هستم

همین!

نوشته مسیر شغلی کامپیوتر و آی‌تی اولین بار در تجربه های پراکنده پدیدار شد.


دی ۸ ۱۳۹۶

نقاط ضعف کمپین‌های اعتراضی اجتماعی اینترنتی

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

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

کمپین‌های اینرنتی، در عرض مدتی کوتاه سریعا رشد می‌کنن و اعضای زیادی رو میگیرن، اما در ادامه میبینیم این روند رشد عملا به ضررشون تمام میشه.
به بهانه‌ی راه‌اندازی کمپین تلگرامی #تغییربودجهبهنفعمردم، قصد دارم این کمپین و کمپین‌های قبلی رو مورد بررسی قرار بدم، تا از اتفاقاتی که برای سایر کمپین‌های اینترنتی افتاد شاید بشه جلوگیری کرد و این کمپین بتونه به هدف خودش یعنی تغییر بودجه به نفع مردم برسه.

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

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

تلگرام هم اکنون در دسترس‌ترین برنامه‌ی پیام‌رسانی هست که بر روی گوشی و سیستم‌های افراد بسیاری در ایران نصب و مورد استفاده‌ی روزمرست.
پس از این جهت که گردانندان این کمپین، تلگرام رو محل اصلی جمع‌آوری امضا معرفی کنند نمیشه نقدی کرد.
اما آیا در ادامه و در مدیریت این گروه موفق هم بودن؟ جواب با تاسف فراوان خیر! در ادامه میگم چرا…

کمپین‌های اعتراضی اینترنتی، برای موفقیت بیشتر نیاز به متخصص دارن.
متخصص شبکه‌های اجتماعی، متخصص امنیت و شبکه، متخصص برنامه‌سازی و برنامه‌نویسی، متخصص داده، حقوق و …
این کمپین هم با توجه به سرعت گسترشش، بهتره از انواع متخصص‌ها برای ادامه‌ی راه خودش استفاده کنه.

در لحظه‌ی اول که وارد این گروه شدم، با صحنه‌ی بدی مواجه شدم. پر از اسپم و فلود و پورن و تبلیغات…
تعجب کرده بودم که چرا باید در این گروه این وضعیت باشه، خب با توجه به ساعت ورودم که اول صبح بود و روز تعطیل بود، برداشتم این بود که خب احتمالا ادمین‌ها خوابن و بیدار شن سر و سامون میدن به این وضعیت. اما این دلیل منطقی نیست، وقتی قراره تمرکز بر گروه تلگرامی باشه، باید تمهیدات دیگری هم دید.
مثلا استفاده از ربات تلگرامی برای مدیریت گروه و جلوگیری از اسپم و غیره…
این که شما تعدادی فرد رو مسئول پاک کردن این همه پیام بکنید کار بسیار اشتباهیه.(در ادامه میگم چرا)

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

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

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

 

موفق باشید 🙂

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


دی ۸ ۱۳۹۶

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

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

  • صدای startup وقتی که وارد دسکتاپ میشیم
  • صدای shutdown وقتی که کامپیوتر رو خاموش یا ری‌استارت میکنیم
  • صدای logout وقتی که از دسکتاپ خارج میشیم
  • صدای lock و unlock شدن دسکتاپ
  • صدای باز و بسته شدن مانیتور لپتاپ! یا اصطلاحا Lid
  • پخش صدا هنگام فشردن دکمه ی پاور

هر کدوم اینها روش خودش رو داره. توجه کنید که ما از Manjaro و دسکتاپ Gnome استفاده میکنیم. بنابراین ممکنه برای توزیع و دسکتاپ شما تفاوت داشته باشه.
و نکته دیگه اینکه ما برای پخش صدا از aplay استفاده میکنیم که بخشی از alsa است. بنابراین در هر لینوکسی که صدا ازش در میاد وجود داره! اما توجه کنید که فایلهای شما باید wav باشند. اگر فایل شما مثلا mp3 هست میتونید به راحتی با کمک ffmpeg اون رو به wav تبدیل کنید:

ffmpeg -i ‘/path-to-sound-file/startup.mp3’  ‘/path-to-sound-file/startup.wav’

من از صداهای پیشفرض ویندوز ۷ استفاده کردم! صداهای دلنشین و قشنگی داره. میتونید با یک جست و جوی ساده مثلا از اینجا دانلود کنید و فایلهای مورد نظرتون رو در مسیری که میخواید قرار بدید. مثلا میشه اونها رو در مسیر usr/share/sounds/win7/ قرار داد.

صدای startup وقتی که وارد دسکتاپ میشیم
خب این خیلی ساده است و ربطی به توزیع و دسکتاپ خاصی نداره. به راحتی دستور زیر رو در استارتاپ دسکتاپ خودتون به روشهایی که بلد هستید قرار بدید:
aplay ‘/usr/share/sounds/win7/startup.wav’

قاعدتا به جای قسمت نارنجی باید مسیر فایل صدای مورد نظرتون رو جایگزین کنید.

صدای shutdown وقتی که کامپیوتر رو خاموش یا ری‌استارت میکنیم
روشی که برای این هدف استفاده میکنیم در توزیع هایی عملی است که از systemd استفاده میکنند. البته اکثر توزیع های امروزی همینجوری هستند. ما یک سرویس درست میکنیم که درست قبل از خروج از سیستم عامل اجرا بشه و دستور مورد نظر ما رو اجرا کنه، که در اینجا پخش یک صدا است.

sudo gedit /etc/systemd/system/shutdown-sound.service
——————————–

[Unit]
Description=Play sound before shutdown

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/local/bin/sound-shutdown

[Install]
WantedBy=multi-user.target

و بعد میبایست این سرویس رو فعال کنیم:

sudo systemctl enable shutdown-sound
sudo systemctl start shutdown-sound
قسمت نارنجی بالا در واقع اسکریپتی است که صدا رو پخش میکنه. چیز خاصی نداره. اسکریپت رو در مسیر مورد نظرتون با این محتوی ایجاد کنید و مجوز اجرایی هم بهش بدید. توجه کنید که مسیر فایل صدا رو هم در اسکریپت زیر درست تعیین کنید.
sudo gedit /usr/local/bin/sound-shutdown
——————————-

#!/bin/bash
aplay  ‘/usr/share/sounds/win7/shutdown.wav’


صدای logout وقتی که از دسکتاپ خارج میشیم

این روشی که بکار میبریم مختص gdm هست. یعنی login manager مخصوص گنوم. اگر از lightdm یا xdm یا چیز دیگه ای استفاده میکند دنبال روش خودشون بگردید. برای gdm کافیه فایل زیر رو باز کنیم و دستور پخش صدا رو قبل از exit قرار بدیم:

sudo gedit
/etc/gdm/PostSession/Default
——————————-

#!/bin/sh
aplay 
‘/
usr/share/sounds/win7/logout.wav’

exit
۰


صدای lock و unlock شدن دسکتاپ گنوم

خیلی جالب میشد اگر مثل موبایلها وقتی صفحه لاک/آنلاک میشد یه صدای کلیک یا هر چی پخش میشد! کافیه اسکریپت زیر رو درست کنید و در استارتاپ قرار بدید.
sudo gedit /usr/local/bin/sound-unlock
——————————-

#!/bin/bash

dbus-monitor –session “type=’signal’,interface=’org.gnome.ScreenSaver'” |
  while read x; do
    case “$x” in
      *”boolean true”*) aplay ‘/usr/share/sounds/win7/lock.wav’ ;;
      *”boolean false”*) aplay ‘/usr/share/sounds/win7/unlock.wav’ ;; 
    esac
  done


صدای باز و بسته شدن مانیتور لپتاپ! یا اصطلاحا Lid

این کار با استفاده از acpid انجام میشه که معمولا در اکثر توزیع ها نصب هست. اگر نصب نیست اون رو نصب کنید و سرویسش رو فعال کنید:
۱٫ sudo pacman -S acpid
2. sudo systemctl enable acpid
3. sudo systemctl start acpid
acpi یکی از کارهاش اینه که اتفاقات خاصی رو رصد میکنه و بر اساس اونها اقدامات مورد نظر رو انجام میده. ما میتونیم این رو به دلخواه خودمون انجام بدیم. مثلا بگیم وقتی Lid لپتاپ بسته شد، یا باز شد فلان دستور (پخش صدا) انجام بشه. این رو قبلا برای قطع صدا هنگام خروج هدفون در وبلاگ نوشته بودم.
برای این کار، در مسیر زیر فایلی با چنین محتوی ایجاد کنید:
sudo gedit /etc/acpi/events/lidopen
—————————–

event=button/lid LID open
action=/usr/local/bin/sound-lidopen

اسکریپت sound-lidopen هم در مسیر مورد نظرتون بسازید و مجوز اجرایی بهش بدید و محتوای زیر رو درون اون قرار بدید:
#!/bin/bash
#This runs so that root can run the following command under the user’s environment
source /home/amin/.Xdbus
#play a open sound
DISPLAY=:0.0 su amin -c “aplay ‘/usr/share/sounds/win7/lidopen.wav’
به جای amin باید نام کاربری خودتون رو قرار بدید.  همین کارها رو برای LID close هم انجام بدید. منتها open رو با close جایگزین کنید.

حالا باید یک کار دیگه هم بکنیم!

اسکریپت زیر رو بسازید و یک بار اون رو اجرا کنید:

#!/bin/sh

touch $HOME/.Xdbus
chmod 600 $HOME/.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
echo ‘export DBUS_SESSION_BUS_ADDRESS’ >> $HOME/.Xdbus

exit 0

با این کار فایلی در پوشه home نام کاربری شما ساخته میشه به نام Xdbus. که نباید اون رو حذف کنید.

پخش صدا در هنگام فشردن دکمه ی پاور
این کار هم درست مثل مرحله بالا که در مورد acpi گفتیم انجام میشه. منتها به جای event=button/lid LID open باید بذاریم event=button/power PBTN

این عبارت button/power PBTN ممکنه در لپتاپ های مختلف فرق داشته باشه. برای اینکه بفهمید برای لپتاپ شما دقیقا چیه، یک بار در خط فرمان دستور acpi_listen رو اجرا کنید و بعد دکمه ی پاور رو بزنید. آنچه که نشان میدهد مقصود است!


دی ۸ ۱۳۹۶

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

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

  • صدای startup وقتی که وارد دسکتاپ میشیم
  • صدای shutdown وقتی که کامپیوتر رو خاموش یا ری‌استارت میکنیم
  • صدای logout وقتی که از دسکتاپ خارج میشیم
  • صدای lock و unlock شدن دسکتاپ
  • صدای باز و بسته شدن مانیتور لپتاپ! یا اصطلاحا Lid
  • پخش صدا هنگام فشردن دکمه ی پاور

هر کدوم اینها روش خودش رو داره. توجه کنید که ما از Manjaro و دسکتاپ Gnome استفاده میکنیم. بنابراین ممکنه برای توزیع و دسکتاپ شما تفاوت داشته باشه.
و نکته دیگه اینکه ما برای پخش صدا از aplay استفاده میکنیم که بخشی از alsa است. بنابراین در هر لینوکسی که صدا ازش در میاد وجود داره! اما توجه کنید که فایلهای شما باید wav باشند. اگر فایل شما مثلا mp3 هست میتونید به راحتی با کمک ffmpeg اون رو به wav تبدیل کنید:

ffmpeg -i ‘/path-to-sound-file/startup.mp3’  ‘/path-to-sound-file/startup.wav’

من از صداهای پیشفرض ویندوز ۷ استفاده کردم! صداهای دلنشین و قشنگی داره. میتونید با یک جست و جوی ساده مثلا از اینجا دانلود کنید و فایلهای مورد نظرتون رو در مسیری که میخواید قرار بدید. مثلا میشه اونها رو در مسیر usr/share/sounds/win7/ قرار داد.

صدای startup وقتی که وارد دسکتاپ میشیم
خب این خیلی ساده است و ربطی به توزیع و دسکتاپ خاصی نداره. به راحتی دستور زیر رو در استارتاپ دسکتاپ خودتون به روشهایی که بلد هستید قرار بدید:
aplay ‘/usr/share/sounds/win7/startup.wav’

قاعدتا به جای قسمت نارنجی باید مسیر فایل صدای مورد نظرتون رو جایگزین کنید.

صدای shutdown وقتی که کامپیوتر رو خاموش یا ری‌استارت میکنیم
روشی که برای این هدف استفاده میکنیم در توزیع هایی عملی است که از systemd استفاده میکنند. البته اکثر توزیع های امروزی همینجوری هستند. ما یک سرویس درست میکنیم که درست قبل از خروج از سیستم عامل اجرا بشه و دستور مورد نظر ما رو اجرا کنه، که در اینجا پخش یک صدا است.

sudo gedit /etc/systemd/system/shutdown-sound.service
——————————–

[Unit]
Description=Play sound before shutdown

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/local/bin/sound-shutdown

[Install]
WantedBy=multi-user.target

و بعد میبایست این سرویس رو فعال کنیم:

sudo systemctl enable shutdown-sound
sudo systemctl start shutdown-sound
قسمت نارنجی بالا در واقع اسکریپتی است که صدا رو پخش میکنه. چیز خاصی نداره. اسکریپت رو در مسیر مورد نظرتون با این محتوی ایجاد کنید و مجوز اجرایی هم بهش بدید. توجه کنید که مسیر فایل صدا رو هم در اسکریپت زیر درست تعیین کنید.
sudo gedit /usr/local/bin/sound-shutdown
——————————-

#!/bin/bash
aplay  ‘/usr/share/sounds/win7/shutdown.wav’


صدای logout وقتی که از دسکتاپ خارج میشیم

این روشی که بکار میبریم مختص gdm هست. یعنی login manager مخصوص گنوم. اگر از lightdm یا xdm یا چیز دیگه ای استفاده میکند دنبال روش خودشون بگردید. برای gdm کافیه فایل زیر رو باز کنیم و دستور پخش صدا رو قبل از exit قرار بدیم:

sudo gedit
/etc/gdm/PostSession/Default
——————————-

#!/bin/sh
aplay 
‘/
usr/share/sounds/win7/logout.wav’

exit
۰


صدای lock و unlock شدن دسکتاپ گنوم

خیلی جالب میشد اگر مثل موبایلها وقتی صفحه لاک/آنلاک میشد یه صدای کلیک یا هر چی پخش میشد! کافیه اسکریپت زیر رو درست کنید و در استارتاپ قرار بدید.
sudo gedit /usr/local/bin/sound-unlock
——————————-

#!/bin/bash

dbus-monitor –session “type=’signal’,interface=’org.gnome.ScreenSaver'” |
  while read x; do
    case “$x” in
      *”boolean true”*) aplay ‘/usr/share/sounds/win7/lock.wav’ ;;
      *”boolean false”*) aplay ‘/usr/share/sounds/win7/unlock.wav’ ;; 
    esac
  done


صدای باز و بسته شدن مانیتور لپتاپ! یا اصطلاحا Lid

این کار با استفاده از acpid انجام میشه که معمولا در اکثر توزیع ها نصب هست. اگر نصب نیست اون رو نصب کنید و سرویسش رو فعال کنید:
۱٫ sudo pacman -S acpid
2. sudo systemctl enable acpid
3. sudo systemctl start acpid
acpi یکی از کارهاش اینه که اتفاقات خاصی رو رصد میکنه و بر اساس اونها اقدامات مورد نظر رو انجام میده. ما میتونیم این رو به دلخواه خودمون انجام بدیم. مثلا بگیم وقتی Lid لپتاپ بسته شد، یا باز شد فلان دستور (پخش صدا) انجام بشه. این رو قبلا برای قطع صدا هنگام خروج هدفون در وبلاگ نوشته بودم.
برای این کار، در مسیر زیر فایلی با چنین محتوی ایجاد کنید:
sudo gedit /etc/acpi/events/lidopen
—————————–

event=button/lid LID open
action=/usr/local/bin/sound-lidopen

اسکریپت sound-lidopen هم در مسیر مورد نظرتون بسازید و مجوز اجرایی بهش بدید و محتوای زیر رو درون اون قرار بدید:
#!/bin/bash
#This runs so that root can run the following command under the user’s environment
source /home/amin/.Xdbus
#play a open sound
DISPLAY=:0.0 su amin -c “aplay ‘/usr/share/sounds/win7/lidopen.wav’
به جای amin باید نام کاربری خودتون رو قرار بدید.  همین کارها رو برای LID close هم انجام بدید. منتها open رو با close جایگزین کنید.

حالا باید یک کار دیگه هم بکنیم!

اسکریپت زیر رو بسازید و یک بار اون رو اجرا کنید:

#!/bin/sh

touch $HOME/.Xdbus
chmod 600 $HOME/.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
echo ‘export DBUS_SESSION_BUS_ADDRESS’ >> $HOME/.Xdbus

exit 0

با این کار فایلی در پوشه home نام کاربری شما ساخته میشه به نام Xdbus. که نباید اون رو حذف کنید.

پخش صدا در هنگام فشردن دکمه ی پاور
این کار هم درست مثل مرحله بالا که در مورد acpi گفتیم انجام میشه. منتها به جای event=button/lid LID open باید بذاریم event=button/power PBTN

این عبارت button/power PBTN ممکنه در لپتاپ های مختلف فرق داشته باشه. برای اینکه بفهمید برای لپتاپ شما دقیقا چیه، یک بار در خط فرمان دستور acpi_listen رو اجرا کنید و بعد دکمه ی پاور رو بزنید. آنچه که نشان میدهد مقصود است!


دی ۷ ۱۳۹۶

آموزش توابع در زبان C و C++

به نام اهورامزدای پاک حمایت میکنم 🙂 دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی دوره آموزشی […]

نوشته آموزش توابع در زبان C و C++ اولین بار در گشتاسب مظفریان – GMozafarian. پدیدار شد.


دی ۵ ۱۳۹۶

مخاطب خاص محصول و کسب و کار شما

به نام خداوند جان و خرد هر کسب و کار نسبت به محصولات تولیدی خود, مخاطبینی دارد. به عنوان مثال: مخاطبان یک سازمان تولید کننده تجهیزات نظامی, جامعه نظامیان و مخاطبان یک شرکت تولید کننده‌ی تجهیزات پزشکی, جامعه پزشکان است. شما برای تولید یک محصول نیاز شدیدی به شناخت جامعه مخاطب خود دارید. تا با […]

نوشته مخاطب خاص محصول و کسب و کار شما اولین بار در گشتاسب مظفریان – GMozafarian. پدیدار شد.


دی ۴ ۱۳۹۶

بیت کوین در فدورا با Electrum

bitcoin-fedora

بیت کوین اولین و یکی از محبوب ترین ارزهای دیجیتال می باشد که برای نگهداری بیت کوین نیاز به کیف پول یا همان wallet می باشد که انواع مختلفی دارد.یکی از این کیف پول ها Electrum می باشد که شما به راحتی می توانید آن را بر روی سیستم خود نصب کنید.

نصب Electrum در فدورا :

 

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

 

#dnf install electrum

 

ساخت اولین کیف پول در الکتروم :

 

پس از نصب برنامه و اجرای آن می توان کیف پول خود را ایجاد کنید که برای این کار می توانید مانند تصاویر پایین عمل کنید :

 

electrum

electrum

electrum

electrum

electrum

electrum

 

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

 


دی ۳ ۱۳۹۶

تغییر خودکار هدست بلوتوث بعد از اتصال

وقتی یک هدست بلوتوث کانکت میکنیم، باید به تنظیمات صدا بریم و خروجی رو روی اون تنظیم کنیم. میتونیم این کار رو خودکار کنیم! یعنی وقتی هدست کانکت شد، خروجی صدا به هدست منتقل بشه و دیگه لازم نباشه وارد تنظیمات بشیم.

باید فایل etc/pulse/default.pa/ رو باز کنیم و عبارت زیر رو بهش اضافه کنیم:

# automatically switch to newly-connected devices
load-module module-switch-on-connect

و بعد یک بار restart (البته میشه خود pulse رو ری استارت کرد: pulseaudio -k)


دی ۳ ۱۳۹۶

تغییر خودکار هدست بلوتوث بعد از اتصال

وقتی یک هدست بلوتوث کانکت میکنیم، باید به تنظیمات صدا بریم و خروجی رو روی اون تنظیم کنیم. میتونیم این کار رو خودکار کنیم! یعنی وقتی هدست کانکت شد، خروجی صدا به هدست منتقل بشه و دیگه لازم نباشه وارد تنظیمات بشیم.

باید فایل etc/pulse/default.pa/ رو باز کنیم و عبارت زیر رو بهش اضافه کنیم:

# automatically switch to newly-connected devices
load-module module-switch-on-connect

و بعد یک بار restart (البته میشه خود pulse رو ری استارت کرد: pulseaudio -k)


دی ۲ ۱۳۹۶

چالشی به نام جذب مشتری

به نام خداوند جان و خرد جذب مشتری, یکی از چالش های همیشگی برای تمامی کسب و کارهای بزرگ و کوچک بوده, هست و خواهد بود. شما به عنوان یک مدیرعامل, مدیربازاریابی, بنیان‌گذار کسب و کار و… همیشه با مشکلی به نام پیدا کردن مشتری های جدید روبرو خواهید بود. قبل از هرچیز به دنبال […]

نوشته چالشی به نام جذب مشتری اولین بار در گشتاسب مظفریان – GMozafarian. پدیدار شد.


آذر ۳۰ ۱۳۹۶

یلدا مبارک

yalda

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


آذر ۲۸ ۱۳۹۶

حل مشکل زیرنویس فارسی با FaSubrip

یکی از مشکلات زیرنویس‌های srt فارسی این است که اکثرشان توسط مترجمانی تهیه می شوند که از سیستم‌عامل ویندوز استفاده می‌کنند. و در این سیستم‌عامل مجموعه کدگذاری‌های ANSI گزینه پیش‌فرض هست.
این مجموعه کدگذاری نه تنها برای کاربران لینوکس و مک-او-اس، بلکه برای برخی کاربران ویندوز که تنظیمات سیستم‌عامل خود را به درستی انجام نداده‌اند نیز مشکل شناخته‌شده‌ی حروف پرت و ناخوانا را ایجاد می‌کند.
با توجه به اینکه در حال حاضر ده‌ها هزار زیرنویس فارسی با این کدگذاری در سطح اینترنت قرار گرفته است نمی‌شود روی اصلاحشان فکر کرد. آموزش‌های مختلفی برای حل مشکل نمایش این زیرنویس‌ها به مرور زمان ارائه شده است و
نرم افزارهایی نیز اختصاصا برای تغییر آسان کدگذاری حروف زیرنویس‌های srt فارسی، که از جمله آنان می شود به فاسابریپ – نرم افزار حل مشکل حروف ناخوانای زیرنویس‌های فارسی اشاره داشت نگارش شده‌اند.
تمرکز FaSubrip در تکمیل امکانات خود نسبت به نرم‌افزارهای مشابه خودش بوده است.

Image of FaSubrip

از مهمترین ویژگی های برنامه

  • تشخیص خودکار کدگذاری زیرنویس فارسی و تغییر آن به کدگذاری انتخابی کاربر صرف نظر از تنظیمات سیستم عامل
  • عملیات گروهی روی زیرنویس‌ها
  • کشیدن و رها کردن روی صفحه اصلی یا فایل اجرایی برنامه
  • پاکسازی زیرنویس از برچسب‌های HTML مخصوص تغییر رنگ و اندازه و حالت متن
  • تغییر موقعیت حروف ی و ک بین نسخه عربی و فارسی
  • پشتیبانی از امکان سانسور عبارات ناشایست فارسی (تغییر به *****) با استفاده از فرهنگ عبارت داخلی کامل خود
  • دادن امکان تعریف فرهنگ عبارات خارجی به کاربر تا بتواند عبارات مدنظر خود را حذف، سانسور یا با عبارات دیگر مدنظر خود جایگزین کند
  • راه اندازی آسان بدون نیاز به پیش نیاز اجرا و تغییرات در سیستم – کافیست بعد از دانلود و استخراج قابلیت execue را به فایل اجرایی بدهید
  • دارای راهنمای فارسی برای تمام تنظیمات

لینوکسی‌های کلاسیک و علاقمند به ترمینال می توانند یک سیم لینک بسازند:

 sudo ln ./fasubrip /usr/bin/fasubrip

و زیرنویس خود را با توجه به تنظیماتی که قبلا انجام داده اند به این شکل اصلاح کنند:

 fasubrip "./my farsi subtitle.srt"

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

advertise


آذر ۲۷ ۱۳۹۶

انجام Hybernate بعد از مدت مشخصی Suspend

ما معمولا در لینوکس سیستم رو suspend میکنیم. خب این کار هزینه داره و از باتری یا برق برای فعال بودن استفاده میکنه. میتونیم در آرچی ها با سرویسی که در ادامه ایجاد میکنیم به سیستم میگیم که اگر بعد از ۲ ساعت suspend کسی resume نکرد، سیستم رو hybernate کن. این طوری مصرف باتری‌مون بهینه تر میشه و منطقی تر هم هست. البته به شرطی که swap داشته باشید.

ابتدا باید سرویس مورد نظرمون رو در systemd بسازیم:

——————————————————–
sudo gedit /etc/systemd/system/suspend-to-hibernate.service
——————————————————–

[Unit]
Description=Delayed hibernation trigger
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279
Documentation=https://wiki.archlinux.org/index.php/Power_management
Conflicts=hibernate.target hybrid-sleep.target
Before=sleep.target
StopWhenUnneeded=true

[Service]
Type=oneshot
RemainAfterExit=yes
Environment=”WAKEALARM=/sys/class/rtc/rtc0/wakealarm”
Environment=”SLEEPLENGTH=+2hour”
ExecStart=-/usr/bin/sh -c ‘echo -n “alarm set for “; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM’
ExecStop=-/usr/bin/sh -c ‘\
  alarm=$(cat $WAKEALARM); \
  now=$(date +%%s); \
  if [ -z “$alarm” ] || [ “$now” -ge “$alarm” ]; then \
     echo “hibernate triggered”; \
     systemctl hibernate; \
  else \
     echo “normal wakeup”; \
  fi; \
  echo 0 > $WAKEALARM; \

[Install]
WantedBy=sleep.target

و بعد سرویس رو فعال می کنیم:

۱٫ sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service


آذر ۲۷ ۱۳۹۶

غیر فعال کردن wakeup برای USBها

متوجه شدم که ماوس وایرلس باعث میشه بعد از suspend با حرکت دادن یا کلیک کردن، لپتاپ resume بشه. گشتی زدیم و راه حل یافتیم. باید یک سرویس برای systemd درست کنیم و این موضوع رو غیر فعال کنیم!

——————————————————–
sudo nano /etc/systemd/system/disable-usb-wakeup.service
——————————————————–
[Unit]
Description=Disable USB wakeup triggers in /proc/acpi/wakeup

[Service]
Type=oneshot
ExecStart=/bin/sh -c “echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup”
ExecStop=/bin/sh -c “echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup”
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

حالا سرویس رو فعال میکنیم:

۱٫ sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service


آذر ۲۷ ۱۳۹۶

انجام Hybernate بعد از مدت مشخصی Suspend

ما معمولا در لینوکس سیستم رو suspend میکنیم. خب این کار هزینه داره و از باتری یا برق برای فعال بودن استفاده میکنه. میتونیم در آرچی ها با سرویسی که در ادامه ایجاد میکنیم به سیستم میگیم که اگر بعد از ۲ ساعت suspend کسی resume نکرد، سیستم رو hybernate کن. این طوری مصرف باتری‌مون بهینه تر میشه و منطقی تر هم هست. البته به شرطی که swap داشته باشید.

ابتدا باید سرویس مورد نظرمون رو در systemd بسازیم:

——————————————————–
sudo gedit /etc/systemd/system/suspend-to-hibernate.service
——————————————————–

[Unit]
Description=Delayed hibernation trigger
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279
Documentation=https://wiki.archlinux.org/index.php/Power_management
Conflicts=hibernate.target hybrid-sleep.target
Before=sleep.target
StopWhenUnneeded=true

[Service]
Type=oneshot
RemainAfterExit=yes
Environment=”WAKEALARM=/sys/class/rtc/rtc0/wakealarm”
Environment=”SLEEPLENGTH=+2hour”
ExecStart=-/usr/bin/sh -c ‘echo -n “alarm set for “; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM’
ExecStop=-/usr/bin/sh -c ‘\
  alarm=$(cat $WAKEALARM); \
  now=$(date +%%s); \
  if [ -z “$alarm” ] || [ “$now” -ge “$alarm” ]; then \
     echo “hibernate triggered”; \
     systemctl hibernate; \
  else \
     echo “normal wakeup”; \
  fi; \
  echo 0 > $WAKEALARM; \

[Install]
WantedBy=sleep.target

و بعد سرویس رو فعال می کنیم:

۱٫ sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service


آذر ۲۷ ۱۳۹۶

غیر فعال کردن wakeup برای USBها

متوجه شدم که ماوس وایرلس باعث میشه بعد از suspend با حرکت دادن یا کلیک کردن، لپتاپ resume بشه. گشتی زدیم و راه حل یافتیم. باید یک سرویس برای systemd درست کنیم و این موضوع رو غیر فعال کنیم!

——————————————————–
sudo nano /etc/systemd/system/disable-usb-wakeup.service
——————————————————–
[Unit]
Description=Disable USB wakeup triggers in /proc/acpi/wakeup

[Service]
Type=oneshot
ExecStart=/bin/sh -c “echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup”
ExecStop=/bin/sh -c “echo XHC > /proc/acpi/wakeup; echo WLAN > /proc/acpi/wakeup”
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

حالا سرویس رو فعال میکنیم:

۱٫ sudo systemctl enable disable-usb-wakeup.service
2. sudo systemctl start disable-usb-wakeup.service


آذر ۲۶ ۱۳۹۶

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

دیروز تولد «دانرو» بود. دانرو یک ساله شد،  و من یک سال و سه ماه توی این پروزه هستم. بعد از ۱۰ سال یک بار دیگه توی یک پروژه قرار گرفتم که دوسش دارم. یک پروژه خوب با مدیران و تیم خوب با یک هدف خوب در زمانی خوب و مالکانی خوب. جایی که بعد مدتها دوباره حس کار کردن با یه تیم را دارم. جایی که دائم تغییر می کنه تا خودش را اصلاح کنه. هیچ مشکلی تکراری نیست، هیچ مشکلی سر جاش نمی مونه. تغییر را می بینی همیشه.

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

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

تولد دانرو مبارک


آذر ۲۱ ۱۳۹۶

نقل قول:ریچارد استالمن


آذر ۲۱ ۱۳۹۶

نقل قول:ریچارد استالمن


آذر ۲۰ ۱۳۹۶

فهرست مطالعه برای System Administrator ها – نسخه ۳

 

مقدمه دوم: بخش مربوط به آشنایی با تجهیزات Cisco و فراگیری Routing و Switching را اضافه کردم.

مقدمه اول: مدتها بود که دلم می خواست که یه فهرست مطالعه (Reading List) برای System adminstrator ها و Network Administrator ها در حد تجربه خود بنویسم. هی عقب می افتاد. امروز اولین پستش را میخوام بزنم.

چند نکته و ویژگی در مورد این لیست هست:
۱- در برخی تجربه‌ها در این سالها متوجه شدم که باید خیلی قبل تر مطلبی را می خوندم و یا باید می دونستم، ولی چیزی در موردش نمی دونم. برای همین به این لیست اضافه کردم
۲- این لیست یک تلاش کوچیک برای آکادمیک کردن مسیر رشد و یادگیری یک مدیر سیستم یا System Administrator است. چون یه دوستی تذکر داده بودند که کتاب‌های آقای ملکیان بسیار تئوری است و باید سراغ کتابهای عملی تر رفت، من تاکید می کنم من بسیار به تئوری اهمیت می دم و تجربم اینه که هرچه تسلط تئوری و علمی بالاتری به یک موضوع داشته باشی، پیاده سازی تمیز تر و مطمئن تری خواهی داشت.
۳- تصمیم دارم این لیست را تاجایی پیش ببرم که شبیه یک دوره لیسانس سه سال یک نفر را پر کنه و یک نفر بتونه سه سال آموزش خودشو برای ورود و یا پیشرفت در بازار کار برنامه ریزی کنه.
۴- شروع لیست با کتاب‌های فارسی است. شاید انتقاد خیلی‌ها را به همراه داشته باشه، ولی من معتقدم یادگیری پایه‌ها، مبانی و اصطلاحات یک تخصص با زبان مادری کار و پیشرفت را خیلی تسهیل می‌کنه. البته مطمئنا در یک جایی به بعد مطالعه ترجمه ها دیگر کارایی لازم را نداره و مطمئنا در ادامه تغیریبا همه کتابها انگلیسی خواهد بود.
۵- این لیست برای هنرستانی‌های رشته کامپیوتر و کاردانی و کارشناسی کامپیوتر مناسب است.
۶- سعی می‌کنم تاجایی که امکان داره دلیل پیشنهاد مطالعه هر کتاب و توانایی هایی که بعد از اون باید بدست بیارید را مطرح کنم
۷- از این نسخه از مقاله به بعد سعی می کنم، لینک خرید کتاب به همراه عکس جلد آن را هم بزارم.

فهرست اول
هدف: آشنایی با مفاهیم، اصطلاحات و ابزارهای پایه در شبکه

۱- راهنمای مطلق +Network  – مترجم بهرام پاشایی
در بین کتابهای +Network جزو بهترین ‌ها بود. البته کمی قدیمی است. این کتاب را به خاطر پیشنهاد «saravan» در کامنت‌های پست قبلی اضافه کردم. شما پس از مطالعه این کتاب (یا شاید همزمان) باید به چند تا مهارت عملی هم برسید
الف- عیب یابی ابتدای شبکه و کار کردن با ابزارهای ping, traceroute, netstat, nslookup
ب- کار با ابزارهای ساده کابل کشی (cabling)، مانند Crimper، Striper و … . پیشنهاد می کنم جعبه ابزاری برای خودتون تهیه کنید که شامل ابزارهای اولیه کابل کشی باشه

۲- اصول طراحی شبکه های کامپیوتری – احسان ملکیان
یکی از بهترین کتاب‌ها است که دید خوبی در مورد انواع شبکه بهتون می‌ده. برای شروع کتاب خیلی خوبیه

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

۴- نفوذگری در شبکه و روشهای مقابله – احسان ملکیان
یکی از کتابهای خوب فارسی هست که یک تازه کار را با زبان فنی امنیت آشنا می‌کنه.

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




فهرست دوم
بخش اول – شبکه یا Networking
هدف: معرفی کتاب‌های مناسب برای آشنایی با محصولات Cisco و  فراگیری مفاهیم Routing و Switching (ممنون از دوست و همکار خوبم آقای مهندس عشاقی بابت در دسترس قرار دادن کتاب‌های نسخه جدید)
چه قرار باشه System Administrator باشید و چه Network Administrator ، مطالعه و یادگیری Routing و Switching توصیه می شه. درک لایه های ۲ و ۳ شبکه کمک بسیار زیادی در درک فایروال ، ساختار  شبکه و اتصالات و عیب یابی ارتباطی شبکه می کنه. علاوه برآن در سازمان‌های و شرکت‌هایی که فعالیت اصلی آنها IT نیست. انتظارشون از Network Admin و Sysadmin یکی هست.

۵- CCENT/CCNA ICND1 100-105 Official Cert Guide
این کتاب اولین کتاب زبان اصلی در این فهرست است و شروع خوبی برای شروع آشنایی با کلمات اصلی. در این کتاب بخشی زیادی از آنچه در کتاب‌های قبلی معرفی شده آمده و ذهن شما با خواندن آن برای مطالعه کتاب‌های بعدی آماده می شود. علاوه بر آن آشنایی ابتدایی با پیکربندی تجهیزات Cisco پیدا می کنید، در مورد  IPv6 مطالبی می خونید و شروع با یادگیری Routing و Swiching می کنید.

۶- CCNA Routing and Switching ICND2 200-105 Official Cert Guide
در این کتاب بیشتر وارد جزییات پروتکل های Routing و Switching می شیم و با مفاهیم جدیدی مانند SDN و Cloud (البته اگه دیگه جدید حسابشون بکنیم. 🙂 )

۷- CCDA 200-310 Official Cert Guide
طراحی (Design) یکی از اون سرفصل‌هایی است که دانستنش یک پله دید شما را نسبت به ساختار شبکه وسرویس‌ها بالا می بره. داشتن دید طراحی سطح کار شما را افزایش می ده و باعث می شه پیاده سازی پایدارتری داشته باشید. البته شاید بهتر باشه خوندن این کتاب را به آخر لیست منتقل کنیم؛ چرا که هر چه دانش پایه و تجربه بیشتری داشته باشید، برداشت کاملتر و دقیق تری نسبت به این کتاب (طراحی – Design) خواهید داشت.



بخش دوم -مدیریت سیستم‌های ویندوزی یا Windows Sysem Administration
هدف: به زودی آماده می شه

بخش سوم – مدیریت سیستم‌های لینوکس یا Linux System Administration
هدف: به زودی آماده می شه

 


آذر ۱۷ ۱۳۹۶

غیرفعال کردن IE Enhanced Security در ویندوز سرور ۲۰۱۲

یه مشکل آزار دهنده بعد از نصب ویندوز سرور ۲۰۱۲ فعال بودن IE Enhanced Security یا IE ESC هستش درسته این ویژگی در مرورگر سرور میتونه خیلی مفید باشه و از اتک‌های زیادی جلوگیری کنه ولی خیلی مواقع هم فقط سردرد اضافه است چون همش باید آدرس سایتهای خود رو به zone trust اضافه کنید

اگه این ویژگی فعال باشه شما پیغامهای زیر رو مکرراً می‌بینید:

ادامه مطلب


آذر ۱۷ ۱۳۹۶

آپاچی کافکا چطور کار می‌کند؟

کافکا ابزاری قدرتمند برای پیاده‌سازی معماری Publish/Subscriber است که برای pipeline کردن داده‌ها و Stream Processing  استفاده می‌شه. که تمام اینها در کنار مقیاس‌پذیر بودن و fault-tolerant بود اون رو به یکی از ابزارهای اصلی در کلان‌داده‌ها تبدیل کرده.

معماری Pub/Sub

38db3aed920cf82ab059bfccbd02be6abv32xmg1536g3FVtWkim4xtWzzlcfTeSbmMCHyAZa3DM9nJ4wfi-qZNi6T.png

Type caption for image (optional)

فرض کنید تعدادی سرویس نیاز دارند که با همدیگه صحبت کنند و همدیگر رو مستقیما call می‌کنند. پیچیدگی فنی زیاد میشه، کوچکترین تغییری رو به سختی باید در همه سرویس‌ها دنبال کرد و پیاده‌سازی back pressure هم که خودش داستانی جدا برای هر سرویس داره. در نهایت این یک بدهی فنیه که باید پرداخت بشه. یکی از معماری‌ها برای حل این مشکل، Pub/Sub است. سرویس‌ها داده‌هایی رو Publish می‌کنند و کسایی که به اون داده‌ها نیاز دارند Subscribe می‌کنند. 

38db3aed920cf82ab059bfccbd02be6alefkiR5qHmXe3WdMsdLB0P9vTXm3rKM2Xg3oWLWjkIJCfdx1hGbCu69un9.png

Type caption for image (optional)

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

Topicها و Partionها

38db3aed920cf82ab059bfccbd02be6aSjNIoh8ufUUJWeMDMvaJ4rXWx35rSWPOUGPxilLIH4Yh_GhMsMIsARhpMk.jpg

Type caption for image (optional)

پیام‌های نوشته شده در کافکا توسط topic دسته‌بندی می‌شند. شاید topic را بشه معادل یک جدول در بانک اطلاعاتی دونست.  هر topic به تعدادی partioion تقسیم می‌شه که از منطق append only پیروی می‌کنند و هر پیام در هر partiotion یک id یکتا بهش اختصاص پیدا می‌کنه. وقتی تولید کننده پیام (producer) قصد نوشتن در یک topic رو داره، می‌تونه partition رو صریحا اعلام کنه (این پیام رو در پارتیشن شماره ۳ بنویس) یا اینکار بر اساس هش از کلید پیام انجام بشه.

در مقابل producer ها، consumer ها قرار میگیرند که شروع به خوندن اطلاعات از kafka می‌کنند و بر اساس اون کاری رو انجام می‌دهند. consumer ها بر اساس کاری که انجام می‌دهند به گروه‌های مختلفی تقسیم بندی می‌شند که بهش consumer group گفته می‌شه و هر partition حداکثر به یک consumer از هر گروه اختصاص پیدا می‌کنه. یعنی اگر شما تعداد پارتیشن‌ها رو ۱۰ تا انتخاب کنید و ۲۰ تا consumer داشته باشید، ۱۰ تا از consumer هاتون عملا بی‌کارند. پس یکی از موراد مهم در طراحی انتخاب تعداد پارتیشن مناسب هست. 

38db3aed920cf82ab059bfccbd02be6a4k_zvW_UkR5SofJnBpd4QZDHNrE_Secp4NA1SkePtkuxowaSRVcwBW1Que.png

به مصرف‌ کننده شماره ۵ هیچ پارتیشنی اختصاص پیدا نکرده. این به معنی حداکثر توان پردازش اندازه ۴تا از مصرف کننده هاست.

‌Broker و Cluster

به هر سرور کافکا Broker گفته میشه. هر سرور می‌تونه حاوی چندین topic و به ازای هرکودوم هم حاوی چندین partition باشه. طراحی Broker ها به‌نحویه که بتونند به‌عنوان یک خوشه (cluster) کار کنند.  در این مواقع یکی از سرورها به عنوان controller انتخاب میشه و وظیفه داره مشخص کنه که کدام partition به کدوم بروکر اختصاص داره، همینطور وظیفه health check و مانیتور کردن بقیه سرورها هم بر عهده controller هست. بر اساس تنظیمات ممکنه یک partition به بیش از یک سرور اختصاص پیدا کنه که به معنی replication است. فرض کنید پارتیشن X از تاپیک Y به ۳تا سرور A,B و C اختصاص داره. یکی از این ۳تا سرور به عنوان leader برای این partition انتخاب می‌شند و دوتای دیگه replicate های اون هستند. این کار کمک می‌کنه تا در صورت از دست دادن leader چندین copy از اطلاعات اون وجود داشته باشه تا consumer ها بعد از rebalance شدن به‌کار خودشون ادامه بدند.

38db3aed920cf82ab059bfccbd02be6aJzDsJbx_6RGFWj6asaU0igpnklf0bPk6OjTVhQHULUlgPEvvjnWYceblLx.jpg

Type caption for image (optional)

کافکا طراحی نشده که همزمان روی چندین دیتاسنتر اجرا بشه، یعنی یکی از بروکر‌های کلاسترمون رو دیتاسنتر A باشه و دیگری روی دیتاسنتر B. ولی ممکنه ما نیاز داشته باشیم که اطلاعاتمون رو چندین دیتا سنتر باشند. چرا؟ امنیت، isolation و disaster recovery

برای اینکار کافکا ابزاری داره به اسم Mirror Maker که مثل یک consumer/producer عمل می‌کنه. یعنی عملا از یکی از کلاسترها می‌خونه و در یکی دیگه می‌نویسه. 

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

۱) بر اساس زمان: من اطمینان دارم که حداکثر ۷ روز طول می‌کشه تا اطلاعات پردازش بشند، پس به کافکا می‌گم که اطلاعاتی که قدیمی‌تر از ۷ روز هستند رو پاک کنه. چطوری این اتفاق می‌افته؟ خوب کافکا اطلاعات هر پارتیشن رو فایل به فایل می‌نوسه. مثلا بهش میگیم حجم هر فایل ۱ گیگ بشه، اطلاعات به پارتیشن X می‌رسند و شروع به نوشتن در فایل T1P1F1 می‌کنه (یک اسم فرضی، یعنی Topic اول، Partition اول و فایل اول) . وقتی به حجم فایل ۱ گیگ شد، این فایل رو می‌بنده و میره سراغ فایل بعدی. حالا این فایل مقدار modified at داره و در صورتی که این تاریخ قبل از ۷ روز پیش باشه، پاک میشه. برای همین ممکنه آخرین پیام نوشته شده مربوط به ۵ روز پیش باشه و اولین مربوط به ۱۰۰ روز پیش. خوب فایل پاک نمیشه و ما هنوز امکان دسترسی به اطلاعات قدیمی‌تر از ۷ روز رو هم داریم (در این پارتیشن)

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

۳) compact: در این حالت از هر partition به عنوان key-value استفاده میشه و هر پارتیشن فقط آخرین پیام رو نگاه می‌داره. از این روش برای نگاه‌داشتن index مکانی که consumer ازش خونده استفاده میشه. یعنی اگر consumer به هر دلیل reset شد و نمی‌دونست تا کجا خونده، این پیام رو می‌خونه و از اونجا به بعد رو شروع به پردازش می‌کنه. (تاپیک‌ها متفاوت هستند)

پ.ن: قصد دارم در چندین پست در رابطه با برخی از ابزارهای Big Data بنویسم. ابزارهایی مثل kafka، Flink، Spark و Cassandra که مدتی باهاشون کار کردم. خوشحال می‌شم در این رابطه نظراتتون رو بدونم. (اگر دوست داشتید کامنت و اگر دوست نداشتید ایمیل من moein7tl روی جیمیل)


آذر ۱۷ ۱۳۹۶

دوپینگ گیط‌ی ;) – دوره کوتاه و فشرده git

اینم یه تجربه پراکنده دیگه!

حدودا ۲ روز پیش با خودم عهد کردم که یه ویدئو کوتاه آموزش درباره git درست کنم به اسم «دوپینگ گیط‌ی ;)». بعد از ۱۰ ساعت کار مفید این ویدئوی ۲۵ دقیقه‌ای در مورد گیت آماده شده که میگذارمش اینجا که ببینید.

مطالبی که توش مطرح میشه اینا هستن:

  • نصب و راه‌اندازی
  • مفاهیم گیت
  • ساختن یک منبع کد محلی
  • اضافه کردن و کامیت!
  • تغییر و کامیت!
  • تاریخچه تغییرات
  • سرور git
  • گرفتن از سرور
  • فرستادن تغییرات
  • شاخه‌ها
  • بروزرسانی و ادغام
  • برچسب‌ها
  • برگردادن تغییرات

سورس فایل ارائه هم مثل سورس این مطلب توی github من در دسترس هست.

ویدئو

در یوتیوب:

در آپارات:

نوشته دوپینگ گیط‌ی 😉 – دوره کوتاه و فشرده git اولین بار در تجربه های پراکنده پدیدار شد.


آذر ۱۵ ۱۳۹۶

chroot چیست؟


شاید تا به حال با CHROOT برخورد کرده باشید.مخصوصا هنگام نصب آرچ لینوکس
CHROOT چیست؟
CHROOT مخفف کلمه ی  change root به معنای تغییر ریشه هست.
سی اچ روت یک فراخوان سیستمی در سیستم عامل های شبه یونیکس هست که کارش تغییر دادن مسیر دایرکتوری ریشه(/) هست.با کمک این دستور میتونیم مسیر جاری پارتیشن روت رو تغییر بدیم.برای مثال:

 $chmod /mnt

طی این دستور مسیر دایرکتوری روت به  /mnt تغییر میکنه.
کاربرد این دستور موقعی هست که بخوایم در محیط یک توزیع,به پارتیشن روت یک توزیع دیگه وصل بشیم و از اون به عنوان پارتیشن روت اصلی استفاده کنیم.
وقتی مسیر دایرکتوری روت تغییر کنه,شما دیگه نمیتونید به فایل های خارج از اون دایرکتوری دسترسی داشته باشید.
چون شما حالا یک دایرکتوری روت جدید دارید.یک دایرکتوری روت شامل دایرکتوری های دیگه ای مثل home mnt etc var و … هست که با اونها سرو کار داریم.برای مثال,اگر بعد از تغییر دادن مسیر دایرکتوری روت ,دستور زیر رو وارد کنید:

 $cd home

مسیر شما به دایکتوری home تغییر میکنه که درون دایرکتوری روت جدید هست.پس شما نمیتونید به دایرکتوری home که در خارج از دایرکتوری روت جدید هست دسترسی داشته باشید که اصطلاحا به اون زندانی شدن پروسه میگن.
برای درک بیشتر,عکس زیر رو با دقت ببینید.

chroot برای اولین بار در حین توسعه ورژن ۷ یونیکس به وجود اومد.

منبع:ویکی پدیا


آذر ۱۵ ۱۳۹۶

chroot چیست؟


شاید تا به حال با CHROOT برخورد کرده باشید.مخصوصا هنگام نصب آرچ لینوکس
CHROOT چیست؟
CHROOT مخفف کلمه ی  change root به معنای تغییر ریشه هست.
سی اچ روت یک فراخوان سیستمی در سیستم عامل های شبه یونیکس هست که کارش تغییر دادن مسیر دایرکتوری ریشه(/) هست.با کمک این دستور میتونیم مسیر جاری پارتیشن روت رو تغییر بدیم.برای مثال:

 $chmod /mnt

طی این دستور مسیر دایرکتوری روت به  /mnt تغییر میکنه.
کاربرد این دستور موقعی هست که بخوایم در محیط یک توزیع,به پارتیشن روت یک توزیع دیگه وصل بشیم و از اون به عنوان پارتیشن روت اصلی استفاده کنیم.
وقتی مسیر دایرکتوری روت تغییر کنه,شما دیگه نمیتونید به فایل های خارج از اون دایرکتوری دسترسی داشته باشید.
چون شما حالا یک دایرکتوری روت جدید دارید.یک دایرکتوری روت شامل دایرکتوری های دیگه ای مثل home mnt etc var و … هست که با اونها سرو کار داریم.برای مثال,اگر بعد از تغییر دادن مسیر دایرکتوری روت ,دستور زیر رو وارد کنید:

 $cd home

مسیر شما به دایکتوری home تغییر میکنه که درون دایرکتوری روت جدید هست.پس شما نمیتونید به دایرکتوری home که در خارج از دایرکتوری روت جدید هست دسترسی داشته باشید که اصطلاحا به اون زندانی شدن پروسه میگن.
برای درک بیشتر,عکس زیر رو با دقت ببینید.

chroot برای اولین بار در حین توسعه ورژن ۷ یونیکس به وجود اومد.

منبع:ویکی پدیا


آذر ۱۵ ۱۳۹۶

لذت برنامه نویسی: معرفی gerrit

اینم یه تجربه پراکنده دیگه!

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

  • کارهای موجود بصورت فردی از لیست کارها انتخاب میشه و انجام میشه
  • پس از نهایی شدن کار کدها برای merge در اختیار بقیه قرار می‌گیرن
  • پس از تایید توسط jenkins و حداقل یکی از افراد تیم بسته به تشخیص بررسی کننده کارها merge میشن
  • پس از این مراحل هم که تسترها شروع به بررسی کد می‌کنند.

معرفی gerrit

حالا پست امروز یه معرفی کوتاه و از ابزاری هست به اسم gerrit که ما از اون برای merge استفاده می‌کنیم.

روند هم اینه که با امکاناتی که gerrit در اختیار ما قرار میده، بعد از ارسال کد یک مرج محلی اتفاق میفته و کد توسط ci که همون jenkins باشه کنترل و کامپایل میشه. اگه این مرحله درست بود jenkins به gerrit میگه که اگه کسی review کرده میتونه تغییرات رو merge کنه و گرنه تا عدم موفقیت jenkins کسی نمی‌تونه کد رو اشتباهی merge کنه. این تضمین میکنه که دیگه کسی چیز اساسی رو خراب نمی‌کنه. پس از تایید jenkins هم افراد میتونن کد رو بررسی و تغییرات رو merge کنن. همچنین gerrit پلاگین‌هایی داره که کمک میکنه تا ما اون رو به جاهای مختلف مثل jira وصل کنیم و از اینکه یه کار آماده‌است و یا یه کار merge شده با خبر بشیم و حتی وضعیت موارد رو تغییر بدیم.

بعد از بررسی روند کا نوبت به پیش فرضهای هست که توی gerrit وجود داره.

  1. اینکه مدیریت منبع git در کنترل gerrit هست و ازش به عنوان یک git server استفاده می‌شه. یعنی اگه سرور دیگه‌ای مثل github هم وجود داره کپی gerrit هست نه بالعکس
  2. اینکه تغییرات هرچقدر هم که زیاد و مداوم باشن در نهایت در قالب یک commit ارسال میشن. ممکنه بگید که خب اگه من خواستم وسط کارم push کنم چی؟ جواب اینه که هر کامیت یک تغییر هست و تغییر میتونه draft باشه که یعنی هنوز کامل نشده
  3. اینکه gerrit تلاش میکنه که تاریخچه کد خطی بمونه و این در مجموع خوبه. برای خطی نگه داشتن تاریخچه به شدت از rebase استفاده می‌کنه

حالا اگه بخوام بصورت خلاصه مزایا و معایب رو بگم هم اینا به ذهنم میرسه

مزایا و معایب gerrit

مزایا:

  1. تاریخچه خطی
  2. ثبات در عملکرد
  3. وجود ابزار git review برای ارسال به gerrit و راحت کردن استفاده از gerrit
  4. شفافیت روند کاری بررسی کرد
  5. راحتی integrate شدن با ابزارهای دیگه مثل jira و jenkins و gitlab

معایب:

  1. مستندات گنگ. خیلی پیدا کردن چیزهای ساده توی gerrit آسون نیست
  2. زمان زیادی برای یادگیری استفاده از gerrit مورد نیاز هست

در آخر بگم که بگم که روند کاری که هریک از این ابزارها پیشنهاد میدن یک روند دیکته شده است و ممکن به مذاق شما خوش نیاد پس از هر روشی که به مذاقتون خوش میاد استفاده کنید. ما هم یه مدت از gerrit استفاده کردیم بعدش از gitlab و دوباره برگشتیم gerrit چون به نظرمون gerrit بهتر بود

همین!

نوشته لذت برنامه نویسی: معرفی gerrit اولین بار در تجربه های پراکنده پدیدار شد.