دی ۸ ۱۳۹۶

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

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

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

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

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

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

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

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

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

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

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

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

 

موفق باشید 🙂

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


دی ۸ ۱۳۹۶

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

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

  • صدای 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 اولین بار در تجربه های پراکنده پدیدار شد.


آذر ۱۲ ۱۳۹۶

فیلمبرداری از دسکتاپ در فدورا ۲۷ با نرم افزار Simple Screen Recorder

Simple Screen Recorder

 

یکی از نرم افزارها جهت فیلمبرداری از محیط دسکتاپ نرم افزار Simple Screen Recorder می باشد که با استفاده از رابط گرافیکی ساده ی آن کاربر قادر خواهد بود تا از میزکار خود فیلمبرداری کند و خروجی آن را در فرمت های مختلف دریافت کند.

 

 

نصب نرم افزار Simple Screen Recorder در فدورا ۲۷ :

 

برای نصب نرم افزار Simple Screen Recorder که بطور خلاصه به آن ssr نیز گفته می شود ابتدا کافیست تا مخازن rpmfusion را نصب کنید و سپس دستور پایین را اجرا کنید :

 

#dnf install simplescreenrecorder

 

پس از نصب برنامه ی Simple Screen Recorder می توانید آن را اجرا و از آن استفاده کنید.در پایین تصویری از برنامه ی Simple Screen Recorder را مشاهده می کنید :

 

 

Simple-Screen-Recorder

 


آذر ۱۱ ۱۳۹۶

دوره آموزش ۰ تا ۱۰۰ی طراحی سایت با وردپرس بدون کدنویسی

آموزش ساخت سایت و رساندن به درآمد ماهیانه میلیونی به نام خداوند جان و خرد وردپرس یک سیستم متن‌باز مناسب برای طراحی و توسعه انواع وب‌سایت هاست. و ما در این دوره قصد آموزش ۰ تا ۱۰۰ی این سیستم و ایجاد یک کسب و کار آنلاین با استفاده از این سیستم را داریم. حمایت میکنم…

ادامه مطلب . . .

نوشته دوره آموزش ۰ تا ۱۰۰ی طراحی سایت با وردپرس بدون کدنویسی اولین بار در گشتاسب مظفریان – GMozafarian. پدیدار شد.


آذر ۱۰ ۱۳۹۶

۹۷ چیز که یک برنامه نویس بهتر است بداند – فصل ۸ – قانون دسته پیشاهنگی

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

امروز بعد از مدتها رسیدم که یه قسمت دیگه از کتاب «۹۷ چیز که یک برنامه نویس بهتر است بداند» رو ضبط کنم و اینجا به اشتراک بگذارم. این پنجمین ویدئو هست که فصل ۸ رو ارائه میده.

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

این ویدئو بصورت همزمان توی وب سایت هایو هم به انتشار رسیده.

ویدئو

در یوتیوب:

در آپارات:

نوشته ۹۷ چیز که یک برنامه نویس بهتر است بداند – فصل ۸ – قانون دسته پیشاهنگی اولین بار در تجربه های پراکنده پدیدار شد.